<?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>AceEditor</name>
	<version>0.2.4.2</version>
  <mincmsversion>1.9</mincmsversion>
	<help><![CDATA[PGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQ7Ij48Zm9ybSBhY3Rpb249Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vY2dpLWJpbi93ZWJzY3IiIG1ldGhvZD0icG9zdCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kIiB2YWx1ZT0iX3MteGNsaWNrIiAvPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imhvc3RlZF9idXR0b25faWQiIHZhbHVlPSJGTEgyQU44OVVQUEFHIiAvPjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJodHRwczovL3d3dy5wYXlwYWxvYmplY3RzLmNvbS9lbl9HQi9pL2J0bi9idG5fZG9uYXRlX0xHLmdpZiIgYm9yZGVyPSIwIiBuYW1lPSJzdWJtaXQiIGFsdD0iUGF5UGFsIOKAlCBUaGUgc2FmZXIsIGVhc2llciB3YXkgdG8gcGF5IG9ubGluZS4iIHN0eWxlPSJiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7IiAvPjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgc3JjPSJodHRwczovL3d3dy5wYXlwYWxvYmplY3RzLmNvbS9kZV9ERS9pL3Njci9waXhlbC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIC8+PC9mb3JtPjwvZGl2PjxkaXYgaWQ9InBhZ2VfdGFicyI+PGRpdiBpZD0iZ2VuZXJhbCI+R2VuZXJhbDwvZGl2PjxkaXYgaWQ9InNob3J0Y3V0cyI+S2V5Ym9hcmQgU2hvcnRjdXRzPC9kaXY+PGRpdiBpZD0iZnJvbnRlbmQiPkZyb250ZW5kPC9kaXY+PGRpdiBpZD0iYWJvdXQiPkFib3V0PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj48ZGl2IGlkPSJwYWdlX2NvbnRlbnQiPjxkaXYgaWQ9ImdlbmVyYWxfYyI+PGltZyBzdHlsZT0iZmxvYXQ6cmlnaHQ7bWFyZ2luOjAgMTBweCAxMHB4IDEwcHg7IGJvcmRlcjogNXB4IHNvbGlkICNmMGYwZjA7IiBzcmM9Imh0dHA6Ly91bmlxdTMuZHluZG5zLXNlcnZlci5jb20vZGVtb3MvMS4xMS9tb2R1bGVzL0FjZUVkaXRvci9pbWFnZXMvZWRpdG9yLmpwZyIgYWx0PSJFZGl0b3IiIHdpZHRoPSIzMTYiIGhlaWdodD0iMjU5IiAvPg0KPGgzPldoYXQgZG9lcyB0aGlzIG1vZHVsZSBkbz88L2gzPg0KPHA+QWNlRWRpdG9yIGlzIGEgU3ludGF4aGlnaGxpZ2h0ZXIgbW9kdWxlIHVzaW5nIDxzdHJvbmc+QWNlPC9zdHJvbmc+IGEgc3RhbmRhbG9uZSBjb2RlIGVkaXRvciB3cml0dGVuIGluIEphdmFTY3JpcHQuPGJyIC8+IA0KR29hbCBvZiBBY2UgY29kZSBlZGl0b3IgZ3JvdXAgaXMgdG8gY3JlYXRlIGEgd2ViIGJhc2VkIGNvZGUgZWRpdG9yIHRoYXQgbWF0Y2hlcyBhbmQgZXh0ZW5kcyB0aGUgZmVhdHVyZXMsIHVzYWJpbGl0eSBhbmQgcGVyZm9ybWFuY2Ugb2YgZXhpc3RpbmcgbmF0aXZlIGVkaXRvcnMgc3VjaCBhcyBUZXh0TWF0ZSwgVmltIG9yIEVjbGlwc2UuPGJyIC8+DQpJdCBjYW4gYmUgZWFzaWx5IGVtYmVkZGVkIGluIGFueSB3ZWIgcGFnZSBhbmQgSmF2YVNjcmlwdCBhcHBsaWNhdGlvbi48YnIgLz4gDQpBY2UgaXMgZGV2ZWxvcGVkIGFzIHRoZSBwcmltYXJ5IGVkaXRvciBmb3IgPGEgaHJlZj0iaHR0cDovL3d3dy5jbG91ZDlpZGUuY29tIj5DbG91ZDkgSURFPC9hPiBhbmQgdGhlIHN1Y2Nlc3NvciBvZiB0aGUgTW96aWxsYSBTa3l3cml0ZXIgKEJlc3BpbikgUHJvamVjdC48L3A+DQo8aDM+QWNlIGlzIGhvc3RlZCBvbiBHaXRIdWI8L2gzPg0KPHA+VGhlIEFjZSBzb3VyY2UgY29kZSBpcyBob3N0ZWQgb24gR2l0SHViLiBJdCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTW96aWxsYSB0cmktbGljZW5zZSAoTVBML0dQTC9MR1BMKS48YnIgLz4NClRoaXMgaXMgdGhlIHNhbWUgbGljZW5zZSB1c2VkIGJ5IEZpcmVmb3guIFRoaXMgbGljZW5zZSBpcyBmcmllbmRseSB0byBhbGwga2luZHMgb2YgcHJvamVjdHMsIHdoZXRoZXIgb3BlbiBzb3VyY2Ugb3Igbm90LjxiciAvPg0KIFRha2UgY2hhcmdlIG9mIHlvdXIgZWRpdG9yIGFuZCBhZGQgeW91ciBmYXZvcml0ZSBsYW5ndWFnZSBoaWdobGlnaHRpbmcgYW5kIGtleWJpbmRpbmdzITwvcD4NCjxoMz5Vc2luZyBBY2VFZGl0b3IgTW9kdWxlPC9oMz4NCjxwPlVzaW5nIEFjZUVkaXRvciBNb2R1bGUgaXMgc2ltcGxlLjxiciAvPg0KQWZ0ZXIgQWNlRWRpdG9yIHdhcyBpbnN0YWxsZWQgZ28gdG8gIk15IFByZWZlcmVuY2VzICZyYXF1bzsgVXNlciBQcmVmZXJlbmNlcyIgYW5kIGNob29zZSBBY2VFZGl0b3IgYXMgeW91ciBTeW50YXhoaWdobGlnaHRlciBvZiBjaG9pY2UgZnJvbSAiU2VsZWN0IHN5bnRheCBoaWdobGlnaHRlciB0byB1c2U6IiBEcm9wZG93bi48YnIgLz4NCk1ha2Ugc3VyZSB5b3UgaGF2ZSAnTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnIFBlcm1zaXNzaW9uLjwvcD4NCjxoMz5TZXR0aW5nczwvaDM+DQo8cD5Zb3UgY2FuIGNoYW5nZSBkZWZhdWx0IFNldHRpbmdzIGFuZCBUaGVtZXMgaW4gIk15IFByZWZlcmVuY2VzICZyYXF1bzsgQWNlRWRpdG9yIjwvcD48YnIgc3R5bGUgPSJjbGVhcjpib3RoOyIgLz48L2Rpdj48ZGl2IGlkPSJzaG9ydGN1dHNfYyI+PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgIDxoMz5EZWZhdWx0IEtleWJvYXJkIFNob3J0Y3V0czwvaDM+DQoNCjx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iRGVmYXVsdCBLZXlib2FyZCBTaG9ydGN1dHMiPg0KPHRoZWFkPjx0cj4NCjx0aD5QQyAoV2luZG93cy9MaW51eCk8L3RkPg0KPHRoPk1hYzwvdGQ+DQo8dGg+YWN0aW9uPC90ZD4NCjwvdHI+PC90aGVhZD4NCjx0Ym9keT4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtUmV0dXJuPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1SZXR1cm48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5mdWxsc2NyZWVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVM8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVM8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5wZXJmb3JtIHNhdmU8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtTDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPmNlbnRlciBzZWxlY3Rpb248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtQWx0LURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLU9wdGlvbi1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Y29weSBsaW5lcyBkb3duPC90ZD4NCjwvdHI+DQo8dHIgbGNhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUFsdC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Y29weSBsaW5lcyB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+ZmluZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1LPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1HPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+ZmluZCBuZXh0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUs8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LUc8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5maW5kIHByZXZpb3VzPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+RG93bixDdHJsLU48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyBsaW5lIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+VXAsQ3RybC1QPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gbGluZSB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1FbmQsQ3RybC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1FbmQsQ29tbWFuZC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+TGVmdCxDdHJsLUI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUw8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUw8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsaW5lPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtUmlnaHQsRW5kPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1SaWdodCxFbmQsQ3RybC1FPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gbGluZSBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1MZWZ0LEhvbWU8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUxlZnQsSG9tZSxDdHJsLUE8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsaW5lIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5QYWdlRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1QYWdlRG93bixDdHJsLVY8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBwYWdlIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1QYWdlVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBwYWdlIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlJpZ2h0LEN0cmwtRjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUhvbWUsQ3RybC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtSG9tZSxDb21tYW5kLVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtTGVmdDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gd29yZCBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+T3B0aW9uLVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gd29yZCByaWdodDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+VGFiPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+VGFiPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+aW5kZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+bW92ZSBsaW5lcyBkb3duPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5tb3ZlIGxpbmVzIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1UYWI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1UYWI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5vdXRkZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5JbnNlcnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5JbnNlcnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5vdmVyd3JpdGU8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VEb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cGFnZWRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnBhZ2V1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1TaGlmdC1aLEN0cmwtWTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtWixDb21tYW5kLVk8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZWRvPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgbGluZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1LPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHRvIGxpbmUgZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tQmFja3NwYWNlPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHRvIGxpbmVzdGFydDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+QWx0LUJhY2tzcGFjZSxDdHJsLUFsdC1CYWNrc3BhY2U8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgd29yZCBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtRGVsZXRlPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHdvcmQgcmlnaHQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtUjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLUY8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZXBsYWNlPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LVI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LU9wdGlvbi1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVwbGFjZSBhbGw8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtQTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtQTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBhbGw8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUVuZDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUVuZDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBsaW5lIGVuZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtSG9tZTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUhvbWU8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgbGluZSBzdGFydDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtUGFnZURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1QYWdlRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBwYWdlIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBwYWdlIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUVuZCxBbHQtU2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB0byBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgdG8gbGluZSBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHRvIGxpbmUgc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtSG9tZSxBbHQtU2hpZnQtVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHRvIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tU2hpZnQtTGVmdDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB3b3JkIGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3Qgd29yZCByaWdodDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1PPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c3BsaXQgbGluZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC03PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC03PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+dG9nZ2xlIGNvbW1lbnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtVDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtVDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnRyYW5zcG9zZSBsZXR0ZXJzPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVo8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVo8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij51bmRvPC90ZD4NCjwvdHI+DQo8L3Rib2R5Pg0KPC90YWJsZT48L2Rpdj48L2Rpdj48ZGl2IGlkPSJmcm9udGVuZF9jIj48ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPjxwPlRoaXMgTW9kdWxlIGFuZCBBY2UgU2NyaXB0IGNhbiBhbHNvIGJlIHVzZWQgYXMgYSBGcm9udGVuZCBTeW50YXhoaWdobGlnaHRlci48YnIgLz4NClRvIG1ha2UgaXQgd29yayB5b3UgaGF2ZSB0byBpbmNsdWRlIGpRdWVyeSBGcmFtZXdvcmssIGZvciBleGFtcGxlIHVzaW5nIENNU01TIHtjbXNfanF1ZXJ5fSB0YWcgYW5kIGFzIHdlbGwgaW5jbHVkZSB7QWNlRWRpdG9yfSBpbiB5b3VyIHBhZ2UgdHdpY2UuIEZpcnN0IGFkZCB0aGUgbW9kdWxlIHRhZyBpbiB5b3VyICZsdDtoZWFkJmd0OyBzZWN0aW9uIG9mIFRlbXBsYXRlIG9yIGluICZxdW90O1BhZ2UgU3BlY2lmaWMgTWV0ZGF0YSZxdW90OyBmaWVsZCBvZiB5b3VyIENvbnRlbnQgcGFnZSwgbGlrZSB7QWNlRWRpdG9yIGFjdGlvbj0naGVhZCd9IGFuZCBhbm90aGVyIGNhbGwgdG8gc3BlY2lmeSB3aGljaCBhcmVhIHNob3VsZCBiZSBoaWdobGlnaHRlZCwgZm9yIGV4YW1wbGUge0FjZUVkaXRvciBkaXZpZD0nZm9vJ30sIHdoaWNoIHdvdWxkIHRhcmdldCBhIHBhZ2UgZWxlbWVudCB3aXRoIGlkIDxlbT5mb288L2VtPi48L3A+DQo8aDM+U28gaG93IGRvIHlvdSB1c2UgaXQ/PC9oMz4NCjxwPkZpcnN0IGluY2x1ZGUgalF1ZXJ5IGFuZCBNb2R1bGUgdGFnIGluIHlvdXIgUGFnZSAmbHQ7aGVhZCZndDsgYXJlYSwgZm9yIGV4YW1wbGUgaW4gJnF1b3Q7UGFnZSBTcGVjaWZpYyBNZXRkYXRhJnF1b3Q7OjwvcD4NCjxwcmU+DQp7Y21zX2pxdWVyeX0NCntBY2VFZGl0b3IgYWN0aW9uPSdoZWFkJ30NCjwvcHJlPg0KPHA+VGhpcyBpbmNsdWRlcyBuZWVkZWQgc2NyaXB0cyBmb3IgQWNlIFN5bnRheGhpZ2hsaWdodGVyIHRvIHdvcmsuPGJyIC8+DQpJbiBNb2R1bGVzIEFkbWluIGludGVyZmFjZSB5b3UgY2FuIHNlbGVjdCBkZWZhdWx0IHNldHRpbmdzIGZvciB5b3VyICdoZWFkJyBhY3Rpb24gb3IgdXNlIHBhcmFtZXRlciBtb2Rlcz0naHRtbCxqYXZhc2NyaXB0JyBhbmQgdGhlbWVzPSd0ZXh0bWF0ZScgd2hpY2ggd291bGQgb3ZlcnJpZGUgc2VsZWN0ZWQgUHJlZmVyZW5jZXMuPC9wPg0KPHA+Tm93IHdoZW4geW91IGhhdmUgbmVlZGVkIHNjcmlwdHMgaW5jbHVkZWQsIG9uZSBtb3JlIE1vZHVsZSB0YWcgY2FsbCBpcyBuZWVkZWQgKGZvciBleGFtcGxlIGluIHlvdXIgQ29udGVudCBFZGl0b3IgYXJlYSkgdG8gc3BlY2lmeSB3aGljaCBhcmVhIG9mIHlvdXIgUGFnZSBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQuPC9wPg0KPHByZT4NCntBY2VFZGl0b3IgZGl2aWQ9J3NvbWUtaWQnfQ0KPC9wcmU+DQo8cD5UaGlzIHRhZyBpbmNsdWRlcyBuZWVkZWQgU2NyaXB0IGFuZCBTdHlsZSB0aGF0IGlzIHVzZWQgdG8gSGlnaGxpZ2h0IHNlbGVjdGVkIGVsZW1lbnQgd2l0aCBzcGVjaWZpZWQgaWQuPGJyIC8+DQpBbGwgeW91IG5lZWQgdGhlbiBpcyB3cml0ZSB5b3VyIENvZGUgdGhhdCB5b3Ugd2FudCB0byBIaWdobGlnaHQgYW5kIHdyYXAgaXQgaW5zaWRlIGFuIGVsZW1lbiBsaWtlICZsdDtkaXYmZ3Q7IHdpdGggc3BlY2lmaWVkIGlkLjwvcD48cHJlPjxjb2RlPg0KJmx0O3ByZSBpZD0ic29tZS1pZCImZ3QNCiZsdDtodG1sJmd0Ow0KJmx0O2hlYWQmZ3Q7DQoJJmx0O3N0eWxlIHR5cGU9InRleHQvY3NzIiZndDsNCgkudGV4dC1sYXllciB7DQoJCWZvbnQtZmFtaWx5OiBNb25hY28sICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZTsNCgkJZm9udC1zaXplOiAxMnB4Ow0KCQljdXJzb3I6IHRleHQ7DQoJfQ0KCSZsdDsvc3R5bGUmZ3Q7DQombHQ7L2hlYWQmZ3Q7DQombHQ7Ym9keSZndDsNCgkmbHQ7aDEgc3R5bGU9ImNvbG9yOnJlZCImZ3Q7WUVTISZsdDsvaDEmZ3Q7DQombHQ7L2JvZHkmZ3Q7DQombHQ7L2h0bWwmZ3Q7DQombHQ7L3ByZSZndDsNCgkJPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImFib3V0X2MiPjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+PGgzPlN1cHBvcnQ8L2gzPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEyLCBHb3JhbiBJbGljIDxhIGhyZWY9Im1haWx0bzp1bmlxdTNlQGdtYWlsLmNvbSI+Jmx0O3VuaXF1M2VAZ21haWwuY29tJmd0OzwvYT4gPGEgaHJlZj0iaHR0cDovL3d3dy5pY2gtbWFjaC1kYXMuYXQiIHJlbD0iZXh0ZXJuYWwiPnd3dy5pY2gtbWFjaC1kYXMuYXQ8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KCTxoMz5UZWFtPC9oMz4NCgk8dWw+DQoJCTxsaT5Hb3JhbiBJbGljICh1bmlxdTMpIGcuaWxpY0BpLWFydHMuZXUgPGJyIC8+d3d3LmljaC1tYWNoLWRhcy5hdDwvbGk+CQ0KCQk8bGk+Um9iZXJ0IENhbXBiZWxsIChjYWxndXkxMDAwKSBjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnICA8YnIgLz53d3cuY2FsZ3V5MTAwMC5jb208L2xpPgkJDQoJCTxsaT5Kb25hdGhhbiBTY2htaWQgKEZvYWx5KikgaGlAam9uYXRoYW5zY2htaWQuZGUgPGJyIC8+d3d3LmpvbmF0aGFuc2NobWlkLmRlPC9saT4NCgk8L3VsPg0KPC9kaXY+PC9kaXY+PC9kaXY+DQo8aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgd2hhdCBsYW5ndWFnZSB0byB1c2UgZm9yIGRpc3BsYXkgb24gdGhlIGZyb250ZW5kLiBOb3QgYWxsIG1vZHVsZXMgc3VwcG9ydCBvciBuZWVkIHRoaXMuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb249ImRlZmF1bHQiIC0gaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGFjdGlvbiBvZiBNb2R1bGUgdGFnLiBQb3NzaWJsZSB2YWx1ZXMgYXJlICdkZWZhdWx0JyBhbmQgJ2hlYWQnLiBCb3RoIGFyZSBuZWVkZWQgZm9yIGNvcnJlY3QgRnJvbnRlbmQgU3ludGF4aGlnaGxpZ2h0aW5nIGZ1bmN0aW9uLiA8YnIgLz5Qb3NzaWJsZSB2YWx1ZXMgYXJlOg0KPHVsPg0KCTxsaT5oZWFkPC9saT4NCgk8bGk+ZGVmYXVsdDwvbGk+DQo8L3VsPjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbW9kZXM9Imh0bWwiIC0gaXMgdXNlZCB3aXRoIDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSdoZWFkJ308L2NvZGU+LiBZb3UgY2FuIGluY2x1ZGUgbXVsdGlwbGUgY29tbWEgc2VwYXJhdGVkICdtb2RlcycgdGhhdCB5b3Ugd2lsbCBiZSB1c2luZyBvbiB5b3VyIHdlYnNpdGUuIFRoaXMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHlvdXIgJmx0O2hlYWQmZ3Q7IG9mIFRlbXBsYXRlIG9yIFBhZ2Ugc3BlY2lmaWMgTWV0YWRhdGEuIFRoaXMgd2lsbCBvdmVycmlkZSB5b3UgUHJlZmVyZW5jZXMgc2VsZWN0ZWQgaW4gTW9kdWxlIEFkbWluIGFyZWEuIDxiciAvPlBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQogICAgPGxpPmphdmFzY3JpcHQ8L2xpPg0KICAgIDxsaT5wbGFpbjwvbGk+DQogICAgPGxpPnN2ZzwvbGk+DQogICAgPGxpPmh0bWw8L2xpPg0KICAgIDxsaT5jc3M8L2xpPg0KICAgIDxsaT5zY3NzPC9saT4NCiAgICA8bGk+Y29mZmVlPC9saT4NCiAgICA8bGk+anNvbjwvbGk+DQogICAgPGxpPnB5dGhvbjwvbGk+DQogICAgPGxpPnJ1Ynk8L2xpPg0KICAgIDxsaT5wZXJsPC9saT4NCiAgICA8bGk+cGhwPC9saT4NCiAgICA8bGk+amF2YTwvbGk+DQogICAgPGxpPmNzaGFycDwvbGk+DQogICAgPGxpPmNfY3BwPC9saT4NCiAgICA8bGk+Y2xvanVyZTwvbGk+DQogICAgPGxpPmNvbGRmdXNpb248L2xpPg0KICAgIDxsaT5kaWZmPC9saT4NCiAgICA8bGk+aGF4ZTwvbGk+DQogICAgPGxpPmxhdGV4PC9saT4NCiAgICA8bGk+bHVhPC9saT4NCiAgICA8bGk+bWFya2Rvd248L2xpPg0KICAgIDxsaT5wb3dlcnNoZWxsPC9saT4NCiAgICA8bGk+c3FsPC9saT4NCiAgICA8bGk+cGdzcWw8L2xpPg0KICAgIDxsaT5vY2FtbDwvbGk+DQogICAgPGxpPnRleHRpbGU8L2xpPg0KICAgIDxsaT5ncm9vdnk8L2xpPg0KICAgIDxsaT5nb2xhbmc8L2xpPg0KICAgIDxsaT5qc3g8L2xpPg0KICAgIDxsaT5sZXNzPC9saT4NCiAgICA8bGk+bGlxdWlkPC9saT4NCiAgICA8bGk+c2NhZDwvbGk+DQogICAgPGxpPnNoPC9saT4NCiAgICA8bGk+eHF1ZXJ5PC9saT4NCiAgICA8bGk+eWFtbDwvbGk+DQogICAgPGxpPnNjYWxhPC9saT4NCjwvdWw+PC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiB0aGVtZXM9InRleHRtYXRlIiAtIGlzIHVzZWQgd2l0aCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0naGVhZCd9PC9jb2RlPi4gWW91IGNhbiBpbmNsdWRlIG11bHRpcGxlIGNvbW1hIHNlcGFyYXRlZCAndGhlbWVzJyB0aGF0IHlvdSB3aWxsIGJlIHVzaW5nIG9uIHlvdXIgd2Vic2l0ZS4gVGhpcyBzaG91bGQgYmUgaW5jbHVkZWQgaW4geW91ciAmbHQ7aGVhZCZndDsgb2YgVGVtcGxhdGUgb3IgUGFnZSBzcGVjaWZpYyBNZXRhZGF0YS4gVGhpcyB3aWxsIG92ZXJyaWRlIHlvdSBQcmVmZXJlbmNlcyBzZWxlY3RlZCBpbiBNb2R1bGUgQWRtaW4gYXJlYS4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCiAgICA8bGk+Y2hyb21lPC9saT4NCiAgICA8bGk+Y2xvdWRzPC9saT4NCiAgICA8bGk+Y2xvdWRzX21pZG5pZ2h0PC9saT4NCiAgICA8bGk+Y29iYWx0PC9saT4NCiAgICA8bGk+Y3JpbXNvbl9lZGl0b3I8L2xpPg0KICAgIDxsaT5kYXduPC9saT4NCiAgICA8bGk+ZHJlYW13ZWF2ZXI8L2xpPg0KICAgIDxsaT5lY2xpcHNlPC9saT4NCiAgICA8bGk+aWRsZV9maW5nZXJzDQogICAgPGxpPmtyX3RoZW1lPC9saT4NCiAgICA8bGk+bWVyYml2b3JlPC9saT4NCiAgICA8bGk+bWVyYml2b3JlX3NvZnQ8L2xpPg0KICAgIDxsaT5tb25vX2luZHVzdHJpYWw8L2xpPg0KICAgIDxsaT5tb25va2FpPC9saT4NCiAgICA8bGk+cGFzdGVsX29uX2Rhcms8L2xpPg0KICAgIDxsaT5zb2xhcml6ZWRfZGFyazwvbGk+DQogICAgPGxpPnNvbGFyaXplZF9saWdodDwvbGk+DQogICAgPGxpPnRleHRtYXRlPC9saT4NCiAgICA8bGk+dG9tb3Jyb3c8L2xpPg0KICAgIDxsaT50b21vcnJvd19uaWdodDwvbGk+DQogICAgPGxpPnRvbW9ycm93X25pZ2h0X2JsdWU8L2xpPg0KICAgIDxsaT50b21vcnJvd19uaWdodF9icmlnaHQ8L2xpPg0KICAgIDxsaT50b21vcnJvd19uaWdodF9laWdodGllczwvbGk+DQogICAgPGxpPnR3aWxpZ2h0PC9saT4NCiAgICA8bGk+dmlicmFudF9pbms8L2xpPg0KPC91bD48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IG1vZGU9Imh0bWwiIC0gaXMgdXNlZCB3aXRoaW4gYSBwYWdlIHdpdGggPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249J2RlZmF1bHQnfTwvY29kZT4gbW9kdWxlIHRhZy4gVGhpcyBzcGVjaWZpZXMgU3ludGF4aGlnaGxpZ2h0ZXIgbW9kZSBmb3Igc3BlY2lmaWMgY29kZSBhcmVhLiA8YnIgLz5Qb3NzaWJsZSB2YWx1ZXMgYXJlOg0KPHVsPg0KICAgIDxsaT5qYXZhc2NyaXB0PC9saT4NCiAgICA8bGk+cGxhaW48L2xpPg0KICAgIDxsaT5zdmc8L2xpPg0KICAgIDxsaT5odG1sPC9saT4NCiAgICA8bGk+Y3NzPC9saT4NCiAgICA8bGk+c2NzczwvbGk+DQogICAgPGxpPmNvZmZlZTwvbGk+DQogICAgPGxpPmpzb248L2xpPg0KICAgIDxsaT5weXRob248L2xpPg0KICAgIDxsaT5ydWJ5PC9saT4NCiAgICA8bGk+cGVybDwvbGk+DQogICAgPGxpPnBocDwvbGk+DQogICAgPGxpPmphdmE8L2xpPg0KICAgIDxsaT5jc2hhcnA8L2xpPg0KICAgIDxsaT5jX2NwcDwvbGk+DQogICAgPGxpPmNsb2p1cmU8L2xpPg0KICAgIDxsaT5jb2xkZnVzaW9uPC9saT4NCiAgICA8bGk+ZGlmZjwvbGk+DQogICAgPGxpPmhheGU8L2xpPg0KICAgIDxsaT5sYXRleDwvbGk+DQogICAgPGxpPmx1YTwvbGk+DQogICAgPGxpPm1hcmtkb3duPC9saT4NCiAgICA8bGk+cG93ZXJzaGVsbDwvbGk+DQogICAgPGxpPnNxbDwvbGk+DQogICAgPGxpPnBnc3FsPC9saT4NCiAgICA8bGk+b2NhbWw8L2xpPg0KICAgIDxsaT50ZXh0aWxlPC9saT4NCiAgICA8bGk+Z3Jvb3Z5PC9saT4NCiAgICA8bGk+Z29sYW5nPC9saT4NCiAgICA8bGk+anN4PC9saT4NCiAgICA8bGk+bGVzczwvbGk+DQogICAgPGxpPmxpcXVpZDwvbGk+DQogICAgPGxpPnNjYWQ8L2xpPg0KICAgIDxsaT5zaDwvbGk+DQogICAgPGxpPnhxdWVyeTwvbGk+DQogICAgPGxpPnlhbWw8L2xpPg0KICAgIDxsaT5zY2FsYTwvbGk+DQo8L3VsPjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gdGhlbWU9InRleHRtYXRlIiAtIGlzIHVzZWQgd2l0aGluIGEgcGFnZSB3aXRoIDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSdkZWZhdWx0J308L2NvZGU+IG1vZHVsZSB0YWcuIFRoaXMgc3BlY2lmaWVzIFN5bnRheGhpZ2hsaWdodGVyIHRoZW1lIGZvciBzcGVjaWZpYyBjb2RlIGFyZWEuIDxiciAvPlBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQoJPGxpPmNsb3VkczwvbGk+IA0KCTxsaT5jbG91ZHNfbWlkbmlnaHQ8L2xpPiANCgk8bGk+Y29iYWx0PC9saT4gDQoJPGxpPmNyaW1zb25fZWRpdG9yPC9saT4NCgk8bGk+ZGF3bjwvbGk+DQoJPGxpPmVjbGlwc2U8L2xpPg0KCTxsaT5pZGxlX2ZpbmdlcnM8L2xpPg0KCTxsaT5rcl90aGVtZTwvbGk+DQoJPGxpPm1lcmJpdm9yZTwvbGk+DQoJPGxpPm1lcmJpdm9yZV9zb2Z0PC9saT4NCgk8bGk+bW9ub19pbmR1c3RyaWFsPC9saT4NCgk8bGk+bW9ub2thaTwvbGk+DQoJPGxpPnBhc3RlbF9vbl9kYXJrPC9saT4NCgk8bGk+c29sYXJpemVkX2Rhcms8L2xpPg0KCTxsaT5zb2xhcml6ZWRfbGlnaHQ8L2xpPg0KCTxsaT50ZXh0bWF0ZTwvbGk+DQoJPGxpPnR3aWxpZ2h0PC9saT4NCgk8bGk+dmlicmFudF9pbms8L2xpPg0KPC91bD48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHdpZHRoPSI0MDAiIC0gc3BlY2lmaWVzIHdpZHRoIG9mIFN5bnRheGhpZ2hsaWdodGVyIGFyZWEgaW4gcGl4ZWwuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBoZWlnaHQ9IjQwMCIgLSBzcGVjaWZpZXMgaGVpZ2h0IG9mIFN5bnRheGhpZ2hsaWdodGVyIGFyZWEgaW4gcGl4ZWwuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBkaXZpZD0iZWRpdG9yIiAtIGlkIG9mIHRoZSBlbGVtZW50IGNvbnRhaW5pbmcgeW91ciBjb2RlLiBVc2UgdW5pcXVlIGlkIGZvciBlYWNoIGNvZGUgY2h1bmNrLjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBHb3JhbiBJbGljICZsdDt1bmlxdTNlQGdtYWlsLmNvbSZndDs8YnIgLz48YnIgLz5WZXJzaW9uOiAwLjIuNC4yPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+DQo8aDM+VmVyc2lvbiAwLjE8L2gzPg0KPHVsPg0KCTxsaT5JdCdzIGZyZXNoISBOb3RoaW5nIGNoYW5nZWQgeWV0ITwvbGk+DQoJPGxpPlVzaW5nIEFjZSBWZXJzaW9uIDAuMi4wPC9saT4NCjwvdWw+DQo8aDM+VmVyc2lvbiAwLjI8L2gzPg0KPHVsPg0KCTxsaT5BZGRlZCBDVFJMLVMgS2V5YmluZGluZzwvbGk+DQoJPGxpPkFkZGVkIEZ1bGxzY3JlZW5tb2RlPC9saT4NCgk8bGk+QWRkZWQgRnJvbnRlbmQgSGlnaGxpZ2h0aW5nPC9saT4NCgk8bGk+VXBkYXRlZCBBY2U8L2xpPg0KPC91bD4NCjxoMz5WZXJzaW9uIDAuMi4xPC9oMz4NCjx1bD4NCgk8bGk+QWRkZWQgSW50ZXJuZXQgRXhwbG9yZXIgcHJlZmVyZW5jZTwvbGk+DQoJPGxpPlVwZGF0ZWQgQUNFIHdpdGggdGhlbWVzPC9saT4NCjwvdWw+DQo8aDM+VmVyc2lvbiAwLjIuMjwvaDM+DQo8dWw+DQoJPGxpPkZpeCBmb3IgU2FmYXJpL01hYzwvbGk+DQo8L3VsPg0KPGgzPlZlcnNpb24gMC4yLjM8L2gzPg0KPHVsPg0KICAgIDxsaT5VcGRhdGVkIHRvIGxhdGVzdCBhY2UgZnJvbSBnaXRodWI8L2xpPg0KICAgIDxsaT5BZGRlZCBhZGRpdGlvbmFsIHByZWZlcmVuY2VzIChNb2RpZnkgVGVtcGxhdGVzLCBBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlKTwvbGk+DQogICAgPGxpPkFkZGVkIGFiaWxpdHkgdG8gY2hhbmdlIEFjZUVkaXRvciBwcmVmZXJlbmNlcyBwZXIgdXNlcjwvbGk+DQogICAgPGxpPk1vdmVkIG1vZHVsZSBmcm9tIGV4dGVuaW9ucyB0byBteXByZWZzPC9saT4NCjwvdWw+DQo8aDM+VmVyc2lvbiAwLjIuMy4xPC9oMz4NCjx1bD4NCiAgICA8bGk+TW9kZSBwcmVmZXJlbmNlIGJ1Z2ZpeDwvbGk+DQo8L3VsPg0KPGgzPlZlcnNpb24gMC4yLjQuMTwvaDM+DQo8dWw+DQogICAgPGxpPlVwZGF0ZWQgdG8gbGF0ZXN0IEFjZSBidWlsZDwvbGk+DQogICAgPGxpPkFkZGVkIFRvb2xiYXI8L2xpPg0KPC91bD4NCjxoMz5WZXJzaW9uIDAuMi40LjI8L2gzPg0KPHVsPg0KICAgIDxsaT5NaW5vciBidWdmaXgsICRtb2QgY291bGQgY29saWRlIHdpdGggb3RoZXIgbW9kdWxlczwvbGk+DQogICAgPGxpPk1pbm9yIGJ1Z2ZpeCB0byB0b29sYmFyIGJ1dHRvbnMgd2hlbiBtdWx0aXBsZSBBY2UgaW5zdGFuY2VzIGFyZSBsb2FkZWQ8L2xpPg0KPC91bD4NCjxoMz5Sb2FkbWFwPC9oMz4NCjx1bD4NCiAgICA8bGk+PGRlbD5BZGQgRnJvbnRlbmQgU3ludGF4aGlnaGxpZ2h0aW5nPC9kZWw+PC9saT4NCiAgICA8bGk+PGRlbD5BZGQgRnVsbHNjcmVlbm1vZGU8L2RlbD48L2xpPg0KICAgIDxsaT48ZGVsPkFkZCBLZXliaW5kaW5nIChDVFJMK1MpPC9kZWw+PC9saT4NCiAgICA8bGk+PGRlbD5BZGQgRWRpdG9yIGJlaGF2aW9yIChWaW0sIEVNYWNzKTwvZGVsPjwvbGk+DQogICAgPGxpPjxkZWw+TWF5YmUgYWRkIFRvb2xiYXI8L2RlbD48L2xpPg0KPC91bD48YnIgLz4=]]></about>
	<description><![CDATA[AceEditor is a Syntaxhighlighter module using <strong>Ace</strong> a standalone code editor written in JavaScript.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ace/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ace/ChangeLog.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[MjAxMS4wOC4wMiwgVmVyc2lvbiAwLjIuMA0KDQoqIFNwbGl0IHZpZXcgKEp1bGlhbiBWaWVyZWNrKQ0KICAtIHNwbGl0IGVkaXRvciBhcmVhIGhvcml6b250YWxseSBvciB2ZXJ0aXZhbGx5IHRvIHNob3cgdHdvIGZpbGVzIGF0IHRoZSBzYW1lDQogICAgdGltZQ0KDQoqIENvZGUgRm9sZGluZyAoSnVsaWFuIFZpZXJlY2spDQogIC0gVW5zdHJ1Y3R1cmVkIGNvZGUgZm9sZGluZw0KICAtIFdpbGwgYmUgdGhlIGJhc2lzIGZvciBsYW5ndWFnZSBhd2FyZSBmb2xkaW5nDQoNCiogTW9kZSBiZWhhdmlvdXJzIChDaHJpcyBTcGVuY2VyKQ0KICAtIEFkZHMgbW9kZSBzcGVjaWZpYyBob29rcyB3aGljaCBhbGxvdyB0cmFuc2Zvcm1hdGlvbnMgb2YgZW50ZXJlZCB0ZXh0DQogIC0gQXV0b2Nsb3Npbmcgb2YgYnJhY2VzLCBwYXJhbnRoZXNpcyBhbmQgcXVvdGF0aW9uIG1hcmtzIGluIEMgc3R5bGUgbW9kZXMNCiAgLSBBdXRvY2xvc2luZyBvZiBhbmd1bGFyIGJyYWNrZXRzIGluIFhNTCBzdHlsZSBtb2Rlcw0KDQoqIE5ldyBsYW5ndWFnZSBtb2Rlcw0KICAtIENsb2p1cmUgKENhcmluIE1laWVyKQ0KICAtIEMjIChSb2IgQ29uZXJ5KQ0KICAtIEdyb292eSAoQmVuIFRpbGZvcmQpDQogIC0gU2NhbGEgKEJlbiBUaWxmb3JkKQ0KICAtIEpTT04NCiAgLSBPQ2FtbCAoU2VyZ2kgTWFuc2lsbGEpDQogIC0gUGVybCAoUGFuYWdpb3RpcyBBc3RpdGhhcykNCiAgLSBTQ1NTL1NBU1MgKEFuZHJlYXMgTWFkc2VuKQ0KICAtIFNWRw0KICAtIFRleHRpbGUgKEtlbGxleSB2YW4gRXZlcnQpDQogIC0gU0NBRCAoSmFjb2IgSGFuc3NvbikNCiAgDQoqIExpdmUgc3ludGF4IGNoZWNrcw0KICAtIExpbnQgZm9yIENzcyB1c2luZyBDU1MgTGludCA8aHR0cDovL2Nzc2xpbnQubmV0Lz4NCiAgLSBDb2ZmZWVTY3JpcHQNCg0KKiBOZXcgVGhlbWVzDQogIC0gQ3JpbXNvbiBFZGl0b3IgKGllYnVnZ3kpDQogIC0gTWVyYml2b3JlIChNaWNoYWVsIFNjaHdhcnR6KQ0KICAtIE1lcmJpdm9yZSBzb2Z0IChNaWNoYWVsIFNjaHdhcnR6KQ0KICAtIFNvbGFyaXplZCBkYXJrL2xpZ2h0IDxodHRwOi8vZXRoYW5zY2hvb25vdmVyLmNvbS9zb2xhcml6ZWQ+IChEYXZpZCBBbGFuDQogICAgSGplbGxlKQ0KICAtIFZpYnJhbnQgSW5rIChNaWNoYWVsIFNjaHdhcnR6KQ0KDQoqIFNtYWxsIEZlYXR1cmVzL0VuaGFuY2VtZW50cw0KICAtIExvdHMgb2YgcmVuZGVyIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgKEhhcnV0eXVuIEFtaXJqYW55YW4pDQogIC0gSW1wcm92ZWQgUnVieSBoaWdobGlnaHRpbmcgKENocmlzIFdhbnN0cmF0aCwgVHJlbnQgT2dyZW4pDQogIC0gSW1wcm92ZWQgUEhQIGhpZ2hsaWdodGluZyAoVGhvbWFzIEhydXNrYSkNCiAgLSBJbXByb3ZlZCBDU1MgaGlnaGxpZ2h0aW5nIChTZWFuIEtlbGxvZ2cpDQogIC0gQ2xpY2tzIHdoaWNoIGNhdXNlIHRoZSBlZGl0b3IgdG8gYmUgZm9jdXNlZCBkb24ndCByZXNldCB0aGUgc2VsZWN0aW9uDQogIC0gTWFrZSBwYWRkaW5nIHRleHQgbGF5ZXIgc3BlY2lmaWMgc28gdGhhdCBwcmludCBtYXJnaW4gYW5kIGFjdGl2ZSBsaW5lDQogICAgaGlnaGxpZ2h0IGFyZSBub3QgYWZmZWN0ZWQgKElyYWtsaSBHb3phbGlzaHZpbGkpDQogIC0gQWRkZWQgc2V0Rm9udFNpemUgbWV0aG9kDQogIC0gSW1wcm92ZWQgdmkga2V5YmluZGluZ3MgKFRyZW50IE9ncmVuKQ0KICAtIFdoZW4gdW5mb2N1c2VkIG1ha2UgY3Vyc29yIHRyYW5zcGFyZW50IGluc3RlYWQgb2YgcmVtb3ZpbmcgaXQgKEhhcnV0eXVuDQogICAgQW1pcmphbnlhbikNCiAgLSBTdXBwb3J0IGZvciBtYXRjaGluZyBncm91cHMgaW4gdG9rZW5pemVyIHdpdGggYXJyYXlzIG9mIHRva2VucyAoQ2hyaXMNCiAgICBTcGVuY2VyKQ0KDQoqIEJ1ZyBmaXhlcw0KICAtIEFkZCBzdXBwb3J0IGZvciB0aGUgbmV3IE9TWCBzY3JvbGwgYmFycw0KICAtIFByb3Blcmx5IGhpZ2hsaWdodCBKYXZhU2NyaXB0IHJlZ2V4cCBsaXRlcmFscw0KICAtIFByb3BlciBoYW5kbGluZyBvZiB1bmljb2RlIGNoYXJhY3RlcnMgaW4gSmF2YVNjcmlwdCBpZGVudGlmaWVycw0KICAtIEZpeCByZW1vdmUgbGluZXMgY29tbWFuZCBvbiBsYXN0IGxpbmUgKEhhcnV0eXVuIEFtaXJqYW55YW4pDQogIC0gRml4IHNjcm9sbCB3aGVlbCBzbHVnZ2lzaG5lc3MgaW4gU2FmYXJpDQogIC0gTWFrZSBrZXlib2FyZCBpbmZyYXN0cnVjdHVyZSByb3V0ZSBrZXlzIGxpa2UgW11eJCB0aGUgcmlnaHQgd2F5IChKdWxpYW4NCiAgICBWaWVyZWNrKQ0KDQoyMDExLjAyLjE0LCBWZXJzaW9uIDAuMS42DQoNCiogRmxvYXRpbmcgQW5jaG9ycw0KICAtIEFuIEFuY2hvciBpcyBhIGZsb2F0aW5nIHBvaW50ZXIgaW4gdGhlIGRvY3VtZW50LiANCiAgLSBXaGVuZXZlciB0ZXh0IGlzIGluc2VydGVkIG9yIGRlbGV0ZWQgYmVmb3JlIHRoZSBjdXJzb3IsIHRoZSBwb3NpdGlvbiBvZg0KICAgIHRoZSBjdXJzb3IgaXMgdXBkYXRlZA0KICAtIFVzZXNkIGZvciB0aGUgY3Vyc29yIGFuZCBzZWxlY3Rpb24NCiAgLSBCYXNpcyBmb3IgYm9va21hcmtzLCBtdWx0aXBsZSBjdXJzb3JzIGFuZCBzbmlwcGV0cyBpbiB0aGUgZnV0dXJlDQoqIEV4dGVuc2l2ZSBzdXBwb3J0IGZvciBDb2NvYSBzdHlsZSBrZXliaW5kaW5ncyBvbiB0aGUgTWFjIDxodHRwczovL2dpdGh1Yi5jb20vYWpheG9yZy9hY2UvaXNzdWVzL2Nsb3NlZCNpc3N1ZS8xMTYvY29tbWVudC83Njc4MDM+DQoqIE5ldyBjb21tYW5kczoNCiAgLSBjZW50ZXIgc2VsZWN0aW9uIGluIHZpZXdwb3J0DQogIC0gcmVtb3ZlIHRvIGVuZC9zdGFydCBvZiBsaW5lDQogIC0gc3BsaXQgbGluZQ0KICAtIHRyYW5zcG9zZSBsZXR0ZXJzDQoqIFJlZmF0b3IgbWFya2VycyAgDQogIC0gQ3VzdG9tIGNvZGUgY2FuIGJlIHVzZWQgdG8gcmVuZGVyIG1hcmtlcnMNCiAgLSBNYXJrZXJzIGNhbiBiZSBpbiBmcm9udCBvciBiZWhpbmQgdGhlIHRleHQNCiAgLSBNYXJrZXJzIGFyZSBub3cgc3RvcmVkIGluIHRoZSBzZXNzaW9uICh3YXMgaW4gdGhlIHJlbmRlcmVyKQ0KKiBMb3RzIG9mIElFOCBmaXhlcyBpbmNsdWRpbmcgY29weSwgY3V0IGFuZCBzZWxlY3Rpb25zDQoqIFVuaXQgdGVzdHMgY2FuIGFsc28gYmUgcnVuIGluIHRoZSBicm93c2VyDQogIDxodHRwczovL2dpdGh1Yi5jb20vYWpheG9yZy9hY2UvYmxvYi9tYXN0ZXIvbGliL2FjZS90ZXN0L3Rlc3RzLmh0bWw+DQoqIFNvZnQgd3JhcCBjYW4gYWRhcHQgdG8gdGhlIHdpZHRoIG9mIHRoZSBlZGl0b3IgKE1pa2UgUmF0Y2xpZmZlLCBKb2UgQ2hlbmcpDQoqIEFkZCBtaW5pbWFsIG5vZGUgc2VydmVyIHNlcnZlci5qcyB0byBydW4gdGhlIEFjZSBkZW1vIGluIENocm9tZQ0KKiBUaGUgdG9wIGxldmVsIGVkaXRvci5odG1sIGRlbW8gaGFzIGJlZW4gcmVuYW1lZCB0byBpbmRleC5odG1sDQoqIEJ1ZyBmaXhlcw0KICAtIEZpeGVkIGdvdG9MaW5lIHRvIGNvbnNpZGVyIHdyYXBwZWQgbGluZXMgd2hlbiBjYWxjdWxhdGluZyB3aGVyZSB0byBzY3JvbGwgdG8gKEphbWVzIEFsbGVuKQ0KICAtIEZpeGVkIGlzdWVzIHdoZW4gdGhlIGVkaXRvciB3YXMgc2Nyb2xsZWQgaW4gdGhlIHdlYiBwYWdlIChFcmljIEFsbGFtKQ0KICAtIEhpZ2hsaWdodGluZyBvZiBQeXRob24gc3RyaW5nIGxpdGVyYWxzDQogIC0gU3ludGF4IHJ1bGUgZm9yIFBIUCBjb21tZW50cw0KDQoyMDExLjAyLjA4LCBWZXJzaW9uIDAuMS41DQoNCiogQWRkIENvZmZlZXNjcmlwdCBNb2RlIChTYXRvc2hpIE11cmFrYW1pKQ0KKiBGaXggd29yZCB3cmFwIGJ1ZyAoSnVsaWFuIFZpZXJlY2spDQoqIEZpeCBwYWNrYWdlZCB2ZXJzaW9uIG9mIHRoZSBFY2xpcHNlIG1vZGUNCiogTG9hZGluZyBvZiB3b3JrZXJzIGlzIG1vcmUgcm9idXN0DQoqIEZpeCAiY2xpY2sgc2VsZWN0aW9uIg0KKiBBbGxvdyB0b2tpemluZyBlbXB0eSBsaW5lcyAoRGFuaWVsIEtyZWNoKQ0KKiBNYWtlIFBhZ2VVcC9Eb3duIGJlaGF2aW9yIG1vcmUgY29uc2lzdGVudCB3aXRoIG5hdGl2ZSBPUyAoSm9lIENoZW5nKQ0KDQoyMDExLjAyLjA0LCBWZXJzaW9uIDAuMS40DQoNCiogQWRkIEMvQysrIG1vZGUgY29udHJpYnV0ZWQgYnkgR2FzdMOzbiBLbGVpbWFuDQoqIEZpeCBleGNlcHRpb24gaW4ga2V5IGlucHV0DQoNCjIwMTEuMDIuMDQsIFZlcnNpb24gMC4xLjMNCg0KKiBMZXQgdGhlIHBhY2thZ2VkIHZlcnNpb24gcGxheSBuaWNlIHdpdGggcmVxdWlyZUpTDQoqIEFkZCBSdWJ5IG1vZGUgY29udHJpYnV0ZWQgYnkgU2hsb21vIFphbG1hbiBIZWlnaA0KKiBBZGQgSmF2YSBtb2RlIGNvbnRyaWJ1dGVkIGJ5IFRvbSBUYXNjaGUNCiogRml4IGFubm90YXRpb24gYnVnDQoqIENoYW5naW5nIGEgZG9jdW1lbnQgYWRkZWQgYSBuZXcgZW1wdHkgbGluZSBhdCB0aGUgZW5k]]></data>
	</file>
	<file>
	  <filename>/ace/Readme.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QWNlIChBamF4Lm9yZyBDbG91ZDkgRWRpdG9yKQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQpBY2UgaXMgYSBzdGFuZGFsb25lIGNvZGUgZWRpdG9yIHdyaXR0ZW4gaW4gSmF2YVNjcmlwdC4gT3VyIGdvYWwgaXMgdG8gY3JlYXRlIGEgYnJvd3NlciBiYXNlZCBlZGl0b3IgdGhhdCBtYXRjaGVzIGFuZCBleHRlbmRzIHRoZSBmZWF0dXJlcywgdXNhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZSBvZiBleGlzdGluZyBuYXRpdmUgZWRpdG9ycyBzdWNoIGFzIFRleHRNYXRlLCBWaW0gb3IgRWNsaXBzZS4gSXQgY2FuIGJlIGVhc2lseSBlbWJlZGRlZCBpbiBhbnkgd2ViIHBhZ2Ugb3IgSmF2YVNjcmlwdCBhcHBsaWNhdGlvbi4gQWNlIGlzIGRldmVsb3BlZCBhcyB0aGUgcHJpbWFyeSBlZGl0b3IgZm9yIFtDbG91ZDkgSURFXShodHRwOi8vd3d3LmNsb3VkOWlkZS5jb20vKSBhbmQgdGhlIHN1Y2Nlc3NvciBvZiB0aGUgTW96aWxsYSBTa3l3cml0ZXIgKEJlc3BpbikgUHJvamVjdC4NCg0KRmVhdHVyZXMNCi0tLS0tLS0tDQoNCiogU3ludGF4IGhpZ2hsaWdodGluZw0KKiBBdXRvbWF0aWMgaW5kZW50IGFuZCBvdXRkZW50DQoqIEFuIG9wdGlvbmFsIGNvbW1hbmQgbGluZQ0KKiBIYW5kbGVzIGh1Z2UgZG9jdW1lbnRzICgxMDAsMDAwIGxpbmVzIGFuZCBtb3JlIGFyZSBubyBwcm9ibGVtKQ0KKiBGdWxseSBjdXN0b21pemFibGUga2V5IGJpbmRpbmdzIGluY2x1ZGluZyBWSSBhbmQgRW1hY3MgbW9kZXMNCiogVGhlbWVzIChUZXh0TWF0ZSB0aGVtZXMgY2FuIGJlIGltcG9ydGVkKQ0KKiBTZWFyY2ggYW5kIHJlcGxhY2Ugd2l0aCByZWd1bGFyIGV4cHJlc3Npb25zDQoqIEhpZ2hsaWdodCBtYXRjaGluZyBwYXJlbnRoZXNlcw0KKiBUb2dnbGUgYmV0d2VlbiBzb2Z0IHRhYnMgYW5kIHJlYWwgdGFicw0KKiBEaXNwbGF5cyBoaWRkZW4gY2hhcmFjdGVycw0KKiBEcmFnIGFuZCBkcm9wIHRleHQgdXNpbmcgdGhlIG1vdXNlDQoqIExpbmUgd3JhcHBpbmcNCiogVW5zdHJ1Y3R1cmVkIC8gdXNlciBjb2RlIGZvbGRpbmcNCiogTGl2ZSBzeW50YXggY2hlY2tlciAoY3VycmVudGx5IEphdmFTY3JpcHQvQ29mZmVlU2NyaXB0KQ0KDQpUYWtlIEFjZSBmb3IgYSBzcGluIQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KQ2hlY2sgb3V0IHRoZSBBY2UgbGl2ZSBbZGVtb10oaHR0cDovL2FqYXhvcmcuZ2l0aHViLmNvbS9hY2UvKSBvciBnZXQgYSBbQ2xvdWQ5IElERSBhY2NvdW50XShodHRwOi8vcnVuLmNsb3VkOWlkZS5jb20pIHRvIGV4cGVyaWVuY2UgQWNlIHdoaWxlIGVkaXRpbmcgb25lIG9mIHlvdXIgb3duIEdpdEh1YiBwcm9qZWN0cy4NCg0KSWYgeW91IHdhbnQsIHlvdSBjYW4gdXNlIEFjZSBhcyBhIHRleHRhcmVhIHJlcGxhY2VtZW50IHRoYW5rcyB0byB0aGUgW0FjZSBCb29rbWFya2xldF0oaHR0cDovL2FqYXhvcmcuZ2l0aHViLmNvbS9hY2UvYnVpbGQvdGV4dGFyZWEvZWRpdG9yLmh0bWwpLg0KDQpIaXN0b3J5DQotLS0tLS0tDQoNClByZXZpb3VzbHkga25vd24gYXMg4oCcQmVzcGlu4oCdIGFuZCDigJxTa3l3cml0ZXLigJ0gaXTigJlzIG5vdyBrbm93biBhcyBBY2UgKEFqYXgub3JnIENsb3VkOSBFZGl0b3IpISBCZXNwaW4gYW5kIEFjZSBzdGFydGVkIGFzIHR3byBpbmRlcGVuZGVudCBwcm9qZWN0cywgYm90aCBhaW1pbmcgdG8gYnVpbGQgYSBuby1jb21wcm9taXNlIGNvZGUgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhlIHdlYi4gQmVzcGluIHN0YXJ0ZWQgYXMgcGFydCBvZiBNb3ppbGxhIExhYnMgYW5kIHdhcyBiYXNlZCBvbiB0aGUgY2FudmFzIHRhZywgd2hpbGUgQWNlIGlzIHRoZSBFZGl0b3IgY29tcG9uZW50IG9mIHRoZSBDbG91ZDkgSURFIGFuZCBpcyB1c2luZyB0aGUgRE9NIGZvciByZW5kZXJpbmcuIEFmdGVyIHRoZSByZWxlYXNlIG9mIEFjZSBhdCBKU0NvbmYuZXUgMjAxMCBpbiBCZXJsaW4gdGhlIFNreXdyaXRlciB0ZWFtIGRlY2lkZWQgdG8gbWVyZ2UgQWNlIHdpdGggYSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgU2t5d3JpdGVyJ3MgcGx1Z2luIHN5c3RlbSBhbmQgc29tZSBvZiBTa3l3cml0ZXIncyBleHRlbnNpYmlsaXR5IHBvaW50cy4gQWxsIHRoZXNlIGNoYW5nZXMgaGF2ZSBiZWVuIG1lcmdlZCBiYWNrIHRvIEFjZS4gQm90aCBBamF4Lm9yZyBhbmQgTW96aWxsYSBhcmUgYWN0aXZlbHkgZGV2ZWxvcGluZyBhbmQgbWFpbnRhaW5pbmcgQWNlLg0KDQpHZXR0aW5nIHRoZSBjb2RlDQotLS0tLS0tLS0tLS0tLS0tDQoNCkFjZSBpcyBhIGNvbW11bml0eSBwcm9qZWN0LiBXZSBhY3RpdmVseSBlbmNvdXJhZ2UgYW5kIHN1cHBvcnQgY29udHJpYnV0aW9ucy4gVGhlIEFjZSBzb3VyY2UgY29kZSBpcyBob3N0ZWQgb24gR2l0SHViLiBJdCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTW96aWxsYSB0cmktbGljZW5zZSAoTVBML0dQTC9MR1BMKSwgdGhlIHNhbWUgbGljZW5zZSB1c2VkIGJ5IEZpcmVmb3guIFRoaXMgbGljZW5zZSBpcyBmcmllbmRseSB0byBhbGwga2luZHMgb2YgcHJvamVjdHMsIHdoZXRoZXIgb3BlbiBzb3VyY2Ugb3Igbm90LiBUYWtlIGNoYXJnZSBvZiB5b3VyIGVkaXRvciBhbmQgYWRkIHlvdXIgZmF2b3JpdGUgbGFuZ3VhZ2UgaGlnaGxpZ2h0aW5nIGFuZCBrZXliaW5kaW5ncyENCg0KYGBgYmFzaA0KICAgIGdpdCBjbG9uZSBnaXQ6Ly9naXRodWIuY29tL2FqYXhvcmcvYWNlLmdpdA0KICAgIGNkIGFjZQ0KICAgIGdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAtLXJlY3Vyc2l2ZQ0KYGBgDQoNCkVtYmVkZGluZyBBY2UNCi0tLS0tLS0tLS0tLS0NCg0KQWNlIGNhbiBiZSBlYXNpbHkgZW1iZWRkZWQgaW50byBhbnkgZXhpc3Rpbmcgd2ViIHBhZ2UuIFRoZSBBY2UgZ2l0IHJlcG9zaXRvcnkgc2hpcHMgd2l0aCBhIHByZS1wYWNrYWdlZCB2ZXJzaW9uIG9mIEFjZSBpbnNpZGUgb2YgdGhlIGBidWlsZGAgZGlyZWN0b3J5LiBUaGUgc2FtZSBwYWNrYWdlZCBmaWxlcyBhcmUgYWxzbyBhdmFpbGFibGUgYXMgYSBzZXBhcmF0ZSBbZG93bmxvYWRdKGh0dHBzOi8vZ2l0aHViLmNvbS9hamF4b3JnL2FjZS9kb3dubG9hZHMpLiBTaW1wbHkgY29weSB0aGUgY29udGVudHMgb2YgdGhlIGBzcmNgIHN1YmRpcmVjdG9yeSBzb21ld2hlcmUgaW50byB5b3VyIHByb2plY3QgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBpbmNsdWRlZCBkZW1vcyBvZiBob3cgdG8gdXNlIEFjZS4NCg0KVGhlIGVhc2llc3QgdmVyc2lvbiBpcyBzaW1wbHk6DQoNCmBgYGh0bWwNCiAgICA8ZGl2IGlkPSJlZGl0b3IiPnNvbWUgdGV4dDwvZGl2Pg0KICAgIDxzY3JpcHQgc3JjPSJzcmMvYWNlLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4NCiAgICA8c2NyaXB0Pg0KICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsNCiAgICAgICAgdmFyIGVkaXRvciA9IGFjZS5lZGl0KCJlZGl0b3IiKTsNCiAgICB9Ow0KICAgIDwvc2NyaXB0Pg0KYGBgDQoNCldpdGggImVkaXRvciIgYmVpbmcgdGhlIGlkIG9mIHRoZSBET00gZWxlbWVudCwgd2hpY2ggc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhbiBlZGl0b3IuIE5vdGUgdGhhdCB0aGlzIGVsZW1lbnQgbXVzdCBiZSBleHBsaWNpdGx5IHNpemVkIGFuZCBwb3NpdGlvbmVkIGBhYnNvbHV0ZWAgb3IgYHJlbGF0aXZlYCBmb3IgQWNlIHRvIHdvcmsuIGUuZy4NCg0KYGBgY3NzDQogICAgI2VkaXRvciB7DQogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgICAgd2lkdGg6IDUwMHB4Ow0KICAgICAgICBoZWlnaHQ6IDQwMHB4Ow0KICAgIH0NCmBgYA0KDQpUbyBjaGFuZ2UgdGhlIHRoZW1lIHNpbXBseSBpbmNsdWRlIHRoZSBUaGVtZSdzIEphdmFTY3JpcHQgZmlsZQ0KDQpgYGBodG1sDQogICAgPHNjcmlwdCBzcmM9InNyYy90aGVtZS10d2lsaWdodC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+DQpgYGANCg0KYW5kIGNvbmZpZ3VyZSB0aGUgZWRpdG9yIHRvIHVzZSB0aGUgdGhlbWU6DQoNCmBgYGphdmFzY3JpcHQNCiAgICBlZGl0b3Iuc2V0VGhlbWUoImFjZS90aGVtZS90d2lsaWdodCIpOw0KYGBgDQoNCkJ5IGRlZmF1bHQgdGhlIGVkaXRvciBvbmx5IHN1cHBvcnRzIHBsYWluIHRleHQgbW9kZTsgbWFueSBvdGhlciBsYW5ndWFnZXMgYXJlIGF2YWlsYWJsZSBhcyBzZXBhcmF0ZSBtb2R1bGVzLiBBZnRlciBpbmNsdWRpbmcgdGhlIG1vZGUncyBKYXZhU2NyaXB0IGZpbGU6DQoNCmBgYGh0bWwNCiAgICA8c2NyaXB0IHNyYz0ic3JjL21vZGUtamF2YXNjcmlwdC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+DQpgYGANCg0KVGhlbiB0aGUgbW9kZSBjYW4gYmUgdXNlZCBsaWtlIHRoaXM6DQoNCmBgYGphdmFzY3JpcHQNCiAgICB2YXIgSmF2YVNjcmlwdE1vZGUgPSByZXF1aXJlKCJhY2UvbW9kZS9qYXZhc2NyaXB0IikuTW9kZTsNCiAgICBlZGl0b3IuZ2V0U2Vzc2lvbigpLnNldE1vZGUobmV3IEphdmFTY3JpcHRNb2RlKCkpOw0KYGBgDQoNCkRvY3VtZW50YXRpb24NCi0tLS0tLS0tLS0tLS0NCg0KWW91IGZpbmQgYSBsb3QgbW9yZSBzYW1wbGUgY29kZSBpbiB0aGUgW2RlbW8gYXBwXShodHRwczovL2dpdGh1Yi5jb20vYWpheG9yZy9hY2UvYmxvYi9tYXN0ZXIvZGVtby9kZW1vLmpzKS4NCg0KVGhlcmUgaXMgYWxzbyBzb21lIGRvY3VtZW50YXRpb24gb24gdGhlIFt3aWtpIHBhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9hamF4b3JnL2FjZS93aWtpKS4NCg0KSWYgeW91IHN0aWxsIG5lZWQgaGVscCwgZmVlbCBmcmVlIHRvIGRyb3AgYSBtYWlsIG9uIHRoZSBbYWNlIG1haWxpbmcgbGlzdF0oaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2FjZS1kaXNjdXNzKS4NCg0KUnVubmluZyBBY2UNCi0tLS0tLS0tLS0tDQoNCkFmdGVyIHRoZSBjaGVja291dCBBY2Ugd29ya3Mgb3V0IG9mIHRoZSBib3guIE5vIGJ1aWxkIHN0ZXAgaXMgcmVxdWlyZWQuIE9wZW4gJ2VkaXRvci5odG1sJyBpbiBhbnkgYnJvd3NlciBleGNlcHQgR29vZ2xlIENocm9tZS4gR29vZ2xlIENocm9tZSBkb2Vzbid0IGFsbG93IFhNTEhUVFBSZXF1ZXN0cyBmcm9tIGZpbGVzIGxvYWRlZCBmcm9tIGRpc2MgKGkuZS4gd2l0aCBhIGZpbGU6Ly8vIFVSTCkuIFRvIG9wZW4gQWNlIGluIENocm9tZSBzaW1wbHkgc3RhcnQgdGhlIGJ1bmRsZWQgbWluaSBIVFRQIHNlcnZlcjoNCg0KYGBgYmFzaA0KICAgIC4vc3RhdGljLnB5DQpgYGANCg0KT3IgdXNpbmcgTm9kZS5KUw0KDQpgYGBiYXNoDQogICAgbnBtIGluc3RhbGwgbWltZQ0KICAgIC4vc3RhdGljLmpzDQpgYGANCg0KVGhlIGVkaXRvciBjYW4gdGhlbiBiZSBvcGVuZWQgYXQgaHR0cDovL2xvY2FsaG9zdDo4ODg4L2luZGV4Lmh0bWwuDQoNClBhY2thZ2UgQWNlDQotLS0tLS0tLS0tLQ0KDQpUbyBwYWNrYWdlIEFjZSB3ZSB1c2UgdGhlIGRyeWljZSBidWlsZCB0b29sIGRldmVsb3BlZCBieSB0aGUgTW96aWxsYSBTa3l3cml0ZXIgdGVhbS4gQmVmb3JlIHlvdSBjYW4gYnVpbGQgeW91IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHN1Ym1vZHVsZXMgYXJlIHVwIHRvIGRhdGUuDQoNCmBgYGJhc2gNCiAgICBnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgLS1yZWN1cnNpdmUNCmBgYA0KDQpNYWtlIHN1cmUgeW91IGF0IGxlYXN0IHZlcnNpb24gMC4zLjAgb2YgZHJ5aWNlDQoNCmBgYGJhc2gNCiAgICBucG0gaW5zdGFsbCBkcnlpY2UNCmBgYA0KDQpBZnRlcndhcmRzIEFjZSBjYW4gYmUgYnVpbHQgYnkgY2FsbGluZw0KDQpgYGBiYXNoDQogICAgLi9NYWtlZmlsZS5kcnlpY2UuanMgbm9ybWFsDQpgYGANCg0KVGhlIHBhY2thZ2VkIEFjZSB3aWxsIGJlIHB1dCBpbiB0aGUgJ2J1aWxkJyBmb2xkZXIuDQoNClRvIGJ1aWxkIHRoZSBib29rbWFya2xldCB2ZXJzaW9uIGV4ZWN1dGUNCg0KYGBgYmFzaA0KICAgIC4vTWFrZWZpbGUuZHJ5aWNlLmpzIGJtDQpgYGANCg0KUnVubmluZyB0aGUgVW5pdCBUZXN0cw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpUaGUgQWNlIHVuaXQgdGVzdHMgcnVuIG9uIG5vZGUuanMuIEJlZm9yZSB0aGUgZmlyc3QgcnVuIGEgY291cGxlIG9mIG5vZGUgbW9kdWxlcyBoYXZlIHRvIGJlIGluc3RhbGxlZC4gVGhlIGVhc2llc3Qgd2F5IHRvIGRvIHRoaXMgaXMgYnkgdXNpbmcgdGhlIG5vZGUgcGFja2FnZSBtYW5hZ2VyIChucG0pLiBJbiB0aGUgQWNlIGJhc2UgZGlyZWN0b3J5IHNpbXBseSBjYWxsDQoNCmBgYGJhc2gNCiAgICBucG0gbGluayAuDQpgYGANCg0KVG8gcnVuIHRoZSB0ZXN0cyBjYWxsOg0KDQpgYGBiYXNoDQogICAgbm9kZSBsaWIvYWNlL3Rlc3QvYWxsLmpzDQpgYGANCg0KWW91IGNhbiBhbHNvIHJ1biB0aGUgdGVzdHMgaW4geW91ciBicm93c2VyIGJ5IHNlcnZpbmc6DQoNCiAgICBodHRwOi8vbG9jYWxob3N0Ojg4ODgvbGliL2FjZS90ZXN0L3Rlc3RzLmh0bWwNCg0KVGhpcyBtYWtlcyBkZWJ1Z2dpbmcgZmFpbGluZyB0ZXN0cyB3YXkgbW9yZSBlYXNpZXIuDQoNCkNvbnRpbnVvdXMgSW50ZWdyYXRpb24gc3RhdHVzDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpUaGlzIHByb2plY3QgaXMgdGVzdGVkIHdpdGggW1RyYXZpcyBDSV0oaHR0cDovL3RyYXZpcy1jaS5vcmcpDQpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vc2VjdXJlLnRyYXZpcy1jaS5vcmcvYWpheG9yZy9hY2UucG5nKV0oaHR0cDovL3RyYXZpcy1jaS5vcmcvYWpheG9yZy9hY2UpDQoNCkNvbnRyaWJ1dGluZw0KLS0tLS0tLS0tLS0tDQoNCkFjZSB3b3VsZG4ndCBiZSB3aGF0IGl0IGlzIHdpdGhvdXQgY29udHJpYnV0aW9ucyEgRmVlbCBmcmVlIHRvIGZvcmsgYW5kIGltcHJvdmUvZW5oYW5jZSBBY2UgYW55IHdheSB5b3Ugd2FudC4gSWYgeW91IGZlZWwgdGhhdCB0aGUgZWRpdG9yIG9yIHRoZSBBY2UgY29tbXVuaXR5IHdpbGwgYmVuZWZpdCBmcm9tIHlvdXIgY2hhbmdlcywgcGxlYXNlIG9wZW4gYSBwdWxsIHJlcXVlc3QuIFRvIHByb3RlY3QgdGhlIGludGVyZXN0cyBvZiB0aGUgQWNlIGNvbnRyaWJ1dG9ycyBhbmQgdXNlcnMgd2UgcmVxdWlyZSBjb250cmlidXRvcnMgdG8gc2lnbiBhIENvbnRyaWJ1dG9ycyBMaWNlbnNlIEFncmVlbWVudCAoQ0xBKSBiZWZvcmUgd2UgcHVsbCB0aGUgY2hhbmdlcyBpbnRvIHRoZSBtYWluIHJlcG9zaXRvcnkuIE91ciBDTEEgaXMgdGhlIHNpbXBsZXN0IG9mIGFncmVlbWVudHMsIHJlcXVpcmluZyB0aGF0IHRoZSBjb250cmlidXRpb25zIHlvdSBtYWtlIHRvIGFuIGFqYXgub3JnIHByb2plY3QgYXJlIG9ubHkgdGhvc2UgeW91J3JlIGFsbG93ZWQgdG8gbWFrZS4gVGhpcyBoZWxwcyB1cyBzaWduaWZpY2FudGx5IHJlZHVjZSBmdXR1cmUgbGVnYWwgcmlzayBmb3IgZXZlcnlvbmUgaW52b2x2ZWQuIEl0IGlzIGVhc3ksIGhlbHBzIGV2ZXJ5b25lLCB0YWtlcyB0ZW4gbWludXRlcywgYW5kIG9ubHkgbmVlZHMgdG8gYmUgY29tcGxldGVkIG9uY2UuICBUaGVyZSBhcmUgdHdvIHZlcnNpb25zIG9mIHRoZSBhZ3JlZW1lbnQ6DQoNCjEuIFtUaGUgSW5kaXZpZHVhbCBDTEFdKGh0dHBzOi8vZ2l0aHViLmNvbS9hamF4b3JnL2FjZS9yYXcvbWFzdGVyL2RvYy9Db250cmlidXRvcl9MaWNlbnNlX0FncmVlbWVudC12Mi5wZGYpOiB1c2UgdGhpcyB2ZXJzaW9uIGlmIHlvdSdyZSB3b3JraW5nIG9uIGFuIGFqYXgub3JnIGluIHlvdXIgc3BhcmUgdGltZSwgb3IgY2FuIGNsZWFybHkgY2xhaW0gb3duZXJzaGlwIG9mIGNvcHlyaWdodCBpbiB3aGF0IHlvdSdsbCBiZSBzdWJtaXR0aW5nLg0KMi4gW1RoZSBDb3Jwb3JhdGUgQ0xBXShodHRwczovL2dpdGh1Yi5jb20vYWpheG9yZy9hY2UvcmF3L21hc3Rlci9kb2MvQ29ycG9yYXRlX0NvbnRyaWJ1dG9yX0xpY2Vuc2VfQWdyZWVtZW50LXYyLnBkZik6IGhhdmUgeW91ciBjb3Jwb3JhdGUgbGF3eWVyIHJldmlldyBhbmQgc3VibWl0IHRoaXMgaWYgeW91ciBjb21wYW55IGlzIGdvaW5nIHRvIGJlIGNvbnRyaWJ1dGluZyB0byBhamF4Lm9yZyAgcHJvamVjdHMNCg0KSWYgeW91IHdhbnQgdG8gY29udHJpYnV0ZSB0byBhbiBhamF4Lm9yZyBwcm9qZWN0IHBsZWFzZSBwcmludCB0aGUgQ0xBIGFuZCBmaWxsIGl0IG91dCBhbmQgc2lnbiBpdC4gVGhlbiBlaXRoZXIgc2VuZCBpdCBieSBzbmFpbCBtYWlsIG9yIGZheCB0byB1cyBvciBzZW5kIGl0IGJhY2sgc2Nhbm5lZCAob3IgYXMgYSBwaG90bykgYnkgZW1haWwuDQoNCkVtYWlsOiBmYWJpYW4uamFrb2JzQHdlYi5kZQ0KDQpGYXg6ICszMSAoMCkgMjA2Mzg4OTUzDQoNCkFkZHJlc3M6IEFqYXgub3JnIEIuVi4NCiAgS2VpemVyc2dyYWNodCAyNDENCiAgMTAxNiBFQSwgQW1zdGVyZGFtDQogIHRoZSBOZXRoZXJsYW5kcw==]]></data>
	</file>
	<file>
	  <filename>/ace/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ace/src/ace.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbyhlKXtpZih0eXBlb2YgcmVxdWlyZWpzIT0idW5kZWZpbmVkIil7dmFyIGk9dC5kZWZpbmU7dC5kZWZpbmU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0eXBlb2YgbiE9ImZ1bmN0aW9uIj9pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTppKGUsdCxmdW5jdGlvbihlLHIsaSl7cmV0dXJuIHRbMl09PSJtb2R1bGUiJiYoaS5wYWNrYWdlZD0hMCksbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0sdC5kZWZpbmUucGFja2FnZWQ9ITA7cmV0dXJufXZhciBzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIoIiIsZSx0KX07cy5wYWNrYWdlZD0hMDt2YXIgbz10O2UmJih0W2VdfHwodFtlXT17fSksbz10W2VdKSxvLmRlZmluZSYmKG4ub3JpZ2luYWw9by5kZWZpbmUpLG8uZGVmaW5lPW4sby5yZXF1aXJlJiYoci5vcmlnaW5hbD1vLnJlcXVpcmUpLG8ucmVxdWlyZT1zfXZhciBlPSIiLHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKSxuPWZ1bmN0aW9uKGUsdCxyKXtpZih0eXBlb2YgZSE9InN0cmluZyIpe24ub3JpZ2luYWw/bi5vcmlnaW5hbC5hcHBseSh3aW5kb3csYXJndW1lbnRzKTooY29uc29sZS5lcnJvcigiZHJvcHBpbmcgbW9kdWxlIGJlY2F1c2UgZGVmaW5lIHdhc24ndCBhIHN0cmluZy4iKSxjb25zb2xlLnRyYWNlKCkpO3JldHVybn1hcmd1bWVudHMubGVuZ3RoPT0yJiYocj10KSxuLm1vZHVsZXN8fChuLm1vZHVsZXM9e30pLG4ubW9kdWxlc1tlXT1yfSxyPWZ1bmN0aW9uKGUsdCxuKXtpZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk9PT0iW29iamVjdCBBcnJheV0iKXt2YXIgaT1bXTtmb3IodmFyIG89MCx1PXQubGVuZ3RoO288dTsrK28pe3ZhciBhPXMoZSx0W29dKTtpZighYSYmci5vcmlnaW5hbClyZXR1cm4gci5vcmlnaW5hbC5hcHBseSh3aW5kb3csYXJndW1lbnRzKTtpLnB1c2goYSl9biYmbi5hcHBseShudWxsLGkpfWVsc2V7aWYodHlwZW9mIHQ9PSJzdHJpbmciKXt2YXIgZj1zKGUsdCk7cmV0dXJuIWYmJnIub3JpZ2luYWw/ci5vcmlnaW5hbC5hcHBseSh3aW5kb3csYXJndW1lbnRzKToobiYmbigpLGYpfWlmKHIub3JpZ2luYWwpcmV0dXJuIHIub3JpZ2luYWwuYXBwbHkod2luZG93LGFyZ3VtZW50cyl9fSxpPWZ1bmN0aW9uKGUsdCl7aWYodC5pbmRleE9mKCIhIikhPT0tMSl7dmFyIG49dC5zcGxpdCgiISIpO3JldHVybiBpKGUsblswXSkrIiEiK2koZSxuWzFdKX1pZih0LmNoYXJBdCgwKT09Ii4iKXt2YXIgcj1lLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpO3Q9cisiLyIrdDt3aGlsZSh0LmluZGV4T2YoIi4iKSE9PS0xJiZzIT10KXt2YXIgcz10O3Q9dC5yZXBsYWNlKC9cL1wuXC8vLCIvIikucmVwbGFjZSgvW15cL10rXC9cLlwuXC8vLCIiKX19cmV0dXJuIHR9LHM9ZnVuY3Rpb24oZSx0KXt0PWkoZSx0KTt2YXIgcz1uLm1vZHVsZXNbdF07aWYoIXMpcmV0dXJuIG51bGw7aWYodHlwZW9mIHM9PSJmdW5jdGlvbiIpe3ZhciBvPXt9LHU9e2lkOnQsdXJpOiIiLGV4cG9ydHM6byxwYWNrYWdlZDohMH0sYT1mdW5jdGlvbihlLG4pe3JldHVybiByKHQsZSxuKX0sZj1zKGEsbyx1KTtyZXR1cm4gbz1mfHx1LmV4cG9ydHMsbi5tb2R1bGVzW3RdPW8sb31yZXR1cm4gc307byhlKX0pKCksZGVmaW5lKCJhY2UvYWNlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9maXhvbGRicm93c2VycyIsImFjZS9saWIvZG9tIiwiYWNlL2xpYi9ldmVudCIsImFjZS9lZGl0b3IiLCJhY2UvZWRpdF9zZXNzaW9uIiwiYWNlL3VuZG9tYW5hZ2VyIiwiYWNlL3ZpcnR1YWxfcmVuZGVyZXIiLCJhY2UvbXVsdGlfc2VsZWN0IiwiYWNlL3dvcmtlci93b3JrZXJfY2xpZW50IiwiYWNlL2tleWJvYXJkL2hhc2hfaGFuZGxlciIsImFjZS9rZXlib2FyZC9zdGF0ZV9oYW5kbGVyIiwiYWNlL3BsYWNlaG9sZGVyIiwiYWNlL2NvbmZpZyIsImFjZS90aGVtZS90ZXh0bWF0ZSJdLGZ1bmN0aW9uKGUsdCxuKXtlKCIuL2xpYi9maXhvbGRicm93c2VycyIpO3ZhciByPWUoIi4vbGliL2RvbSIpLGk9ZSgiLi9saWIvZXZlbnQiKSxzPWUoIi4vZWRpdG9yIikuRWRpdG9yLG89ZSgiLi9lZGl0X3Nlc3Npb24iKS5FZGl0U2Vzc2lvbix1PWUoIi4vdW5kb21hbmFnZXIiKS5VbmRvTWFuYWdlcixhPWUoIi4vdmlydHVhbF9yZW5kZXJlciIpLlZpcnR1YWxSZW5kZXJlcixmPWUoIi4vbXVsdGlfc2VsZWN0IikuTXVsdGlTZWxlY3Q7ZSgiLi93b3JrZXIvd29ya2VyX2NsaWVudCIpLGUoIi4va2V5Ym9hcmQvaGFzaF9oYW5kbGVyIiksZSgiLi9rZXlib2FyZC9zdGF0ZV9oYW5kbGVyIiksZSgiLi9wbGFjZWhvbGRlciIpLHQuY29uZmlnPWUoIi4vY29uZmlnIiksdC5lZGl0PWZ1bmN0aW9uKHQpe3R5cGVvZiB0PT0ic3RyaW5nIiYmKHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCkpO2lmKHQuZW52JiZ0LmVudi5lZGl0b3IgaW5zdGFuY2VvZiBzKXJldHVybiB0LmVudi5lZGl0b3I7dmFyIG49bmV3IG8oci5nZXRJbm5lclRleHQodCkpO24uc2V0VW5kb01hbmFnZXIobmV3IHUpLHQuaW5uZXJIVE1MPSIiO3ZhciBsPW5ldyBzKG5ldyBhKHQsZSgiLi90aGVtZS90ZXh0bWF0ZSIpKSk7bmV3IGYobCksbC5zZXRTZXNzaW9uKG4pO3ZhciBjPXt9O3JldHVybiBjLmRvY3VtZW50PW4sYy5lZGl0b3I9bCxsLnJlc2l6ZSgpLGkuYWRkTGlzdGVuZXIod2luZG93LCJyZXNpemUiLGZ1bmN0aW9uKCl7bC5yZXNpemUoKX0pLHQuZW52PWMsbC5lbnY9YyxsfX0pLGRlZmluZSgiYWNlL2xpYi9maXhvbGRicm93c2VycyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvcmVnZXhwIiwiYWNlL2xpYi9lczUtc2hpbSJdLGZ1bmN0aW9uKGUsdCxuKXtlKCIuL3JlZ2V4cCIpLGUoIi4vZXM1LXNoaW0iKX0pLGRlZmluZSgiYWNlL2xpYi9yZWdleHAiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gbyhlKXtyZXR1cm4oZS5nbG9iYWw/ImciOiIiKSsoZS5pZ25vcmVDYXNlPyJpIjoiIikrKGUubXVsdGlsaW5lPyJtIjoiIikrKGUuZXh0ZW5kZWQ/IngiOiIiKSsoZS5zdGlja3k/InkiOiIiKX1mdW5jdGlvbiB1KGUsdCxuKXtpZihBcnJheS5wcm90b3R5cGUuaW5kZXhPZilyZXR1cm4gZS5pbmRleE9mKHQsbik7Zm9yKHZhciByPW58fDA7cjxlLmxlbmd0aDtyKyspaWYoZVtyXT09PXQpcmV0dXJuIHI7cmV0dXJuLTF9dmFyIHI9e2V4ZWM6UmVnRXhwLnByb3RvdHlwZS5leGVjLHRlc3Q6UmVnRXhwLnByb3RvdHlwZS50ZXN0LG1hdGNoOlN0cmluZy5wcm90b3R5cGUubWF0Y2gscmVwbGFjZTpTdHJpbmcucHJvdG90eXBlLnJlcGxhY2Usc3BsaXQ6U3RyaW5nLnByb3RvdHlwZS5zcGxpdH0saT1yLmV4ZWMuY2FsbCgvKCk/Py8sIiIpWzFdPT09dW5kZWZpbmVkLHM9ZnVuY3Rpb24oKXt2YXIgZT0vXi9nO3JldHVybiByLnRlc3QuY2FsbChlLCIiKSwhZS5sYXN0SW5kZXh9KCk7aWYocyYmaSlyZXR1cm47UmVnRXhwLnByb3RvdHlwZS5leGVjPWZ1bmN0aW9uKGUpe3ZhciB0PXIuZXhlYy5hcHBseSh0aGlzLGFyZ3VtZW50cyksbixhO2lmKHR5cGVvZiBlPT0ic3RyaW5nIiYmdCl7IWkmJnQubGVuZ3RoPjEmJnUodCwiIik+LTEmJihhPVJlZ0V4cCh0aGlzLnNvdXJjZSxyLnJlcGxhY2UuY2FsbChvKHRoaXMpLCJnIiwiIikpLHIucmVwbGFjZS5jYWxsKGUuc2xpY2UodC5pbmRleCksYSxmdW5jdGlvbigpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aC0yO2UrKylhcmd1bWVudHNbZV09PT11bmRlZmluZWQmJih0W2VdPXVuZGVmaW5lZCl9KSk7aWYodGhpcy5feHJlZ2V4cCYmdGhpcy5feHJlZ2V4cC5jYXB0dXJlTmFtZXMpZm9yKHZhciBmPTE7Zjx0Lmxlbmd0aDtmKyspbj10aGlzLl94cmVnZXhwLmNhcHR1cmVOYW1lc1tmLTFdLG4mJih0W25dPXRbZl0pOyFzJiZ0aGlzLmdsb2JhbCYmIXRbMF0ubGVuZ3RoJiZ0aGlzLmxhc3RJbmRleD50LmluZGV4JiZ0aGlzLmxhc3RJbmRleC0tfXJldHVybiB0fSxzfHwoUmVnRXhwLnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKGUpe3ZhciB0PXIuZXhlYy5jYWxsKHRoaXMsZSk7cmV0dXJuIHQmJnRoaXMuZ2xvYmFsJiYhdFswXS5sZW5ndGgmJnRoaXMubGFzdEluZGV4PnQuaW5kZXgmJnRoaXMubGFzdEluZGV4LS0sISF0fSl9KSxkZWZpbmUoImFjZS9saWIvZXM1LXNoaW0iLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gdihlKXt0cnl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJzZW50aW5lbCIse30pLCJzZW50aW5lbCJpbiBlfWNhdGNoKHQpe319RnVuY3Rpb24ucHJvdG90eXBlLmJpbmR8fChGdW5jdGlvbi5wcm90b3R5cGUuYmluZD1mdW5jdGlvbih0KXt2YXIgbj10aGlzO2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIHI9by5jYWxsKGFyZ3VtZW50cywxKSxpPWZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIGkpe3ZhciBlPWZ1bmN0aW9uKCl7fTtlLnByb3RvdHlwZT1uLnByb3RvdHlwZTt2YXIgcz1uZXcgZSx1PW4uYXBwbHkocyxyLmNvbmNhdChvLmNhbGwoYXJndW1lbnRzKSkpO3JldHVybiB1IT09bnVsbCYmT2JqZWN0KHUpPT09dT91OnN9cmV0dXJuIG4uYXBwbHkodCxyLmNvbmNhdChvLmNhbGwoYXJndW1lbnRzKSkpfTtyZXR1cm4gaX0pO3ZhciByPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLGk9QXJyYXkucHJvdG90eXBlLHM9T2JqZWN0LnByb3RvdHlwZSxvPWkuc2xpY2UsdT1yLmJpbmQocy50b1N0cmluZyksYT1yLmJpbmQocy5oYXNPd25Qcm9wZXJ0eSksZixsLGMsaCxwO2lmKHA9YShzLCJfX2RlZmluZUdldHRlcl9fIikpZj1yLmJpbmQocy5fX2RlZmluZUdldHRlcl9fKSxsPXIuYmluZChzLl9fZGVmaW5lU2V0dGVyX18pLGM9ci5iaW5kKHMuX19sb29rdXBHZXR0ZXJfXyksaD1yLmJpbmQocy5fX2xvb2t1cFNldHRlcl9fKTtBcnJheS5pc0FycmF5fHwoQXJyYXkuaXNBcnJheT1mdW5jdGlvbih0KXtyZXR1cm4gdSh0KT09IltvYmplY3QgQXJyYXldIn0pLEFycmF5LnByb3RvdHlwZS5mb3JFYWNofHwoQXJyYXkucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPWFyZ3VtZW50c1sxXSxpPTAscz1uLmxlbmd0aD4+PjA7aWYodSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO3doaWxlKGk8cylpIGluIG4mJnQuY2FsbChyLG5baV0saSxuKSxpKyt9KSxBcnJheS5wcm90b3R5cGUubWFwfHwoQXJyYXkucHJvdG90eXBlLm1hcD1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wLGk9QXJyYXkocikscz1hcmd1bWVudHNbMV07aWYodSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgbz0wO288cjtvKyspbyBpbiBuJiYoaVtvXT10LmNhbGwocyxuW29dLG8sbikpO3JldHVybiBpfSksQXJyYXkucHJvdG90eXBlLmZpbHRlcnx8KEFycmF5LnByb3RvdHlwZS5maWx0ZXI9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MCxpPVtdLHM9YXJndW1lbnRzWzFdO2lmKHUodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtmb3IodmFyIG89MDtvPHI7bysrKW8gaW4gbiYmdC5jYWxsKHMsbltvXSxvLG4pJiZpLnB1c2gobltvXSk7cmV0dXJuIGl9KSxBcnJheS5wcm90b3R5cGUuZXZlcnl8fChBcnJheS5wcm90b3R5cGUuZXZlcnk9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MCxpPWFyZ3VtZW50c1sxXTtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBzPTA7czxyO3MrKylpZihzIGluIG4mJiF0LmNhbGwoaSxuW3NdLHMsbikpcmV0dXJuITE7cmV0dXJuITB9KSxBcnJheS5wcm90b3R5cGUuc29tZXx8KEFycmF5LnByb3RvdHlwZS5zb21lPWZ1bmN0aW9uKHQpe3ZhciBuPV8odGhpcykscj1uLmxlbmd0aD4+PjAsaT1hcmd1bWVudHNbMV07aWYodSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgcz0wO3M8cjtzKyspaWYocyBpbiBuJiZ0LmNhbGwoaSxuW3NdLHMsbikpcmV0dXJuITA7cmV0dXJuITF9KSxBcnJheS5wcm90b3R5cGUucmVkdWNlfHwoQXJyYXkucHJvdG90eXBlLnJlZHVjZT1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wO2lmKHUodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtpZighciYmYXJndW1lbnRzLmxlbmd0aD09MSl0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBpPTAscztpZihhcmd1bWVudHMubGVuZ3RoPj0yKXM9YXJndW1lbnRzWzFdO2Vsc2UgZG97aWYoaSBpbiBuKXtzPW5baSsrXTticmVha31pZigrK2k+PXIpdGhyb3cgbmV3IFR5cGVFcnJvcn13aGlsZSghMCk7Zm9yKDtpPHI7aSsrKWkgaW4gbiYmKHM9dC5jYWxsKHZvaWQgMCxzLG5baV0saSxuKSk7cmV0dXJuIHN9KSxBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHR8fChBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQ9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MDtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7aWYoIXImJmFyZ3VtZW50cy5sZW5ndGg9PTEpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgaSxzPXItMTtpZihhcmd1bWVudHMubGVuZ3RoPj0yKWk9YXJndW1lbnRzWzFdO2Vsc2UgZG97aWYocyBpbiBuKXtpPW5bcy0tXTticmVha31pZigtLXM8MCl0aHJvdyBuZXcgVHlwZUVycm9yfXdoaWxlKCEwKTtkbyBzIGluIHRoaXMmJihpPXQuY2FsbCh2b2lkIDAsaSxuW3NdLHMsbikpO3doaWxlKHMtLSk7cmV0dXJuIGl9KSxBcnJheS5wcm90b3R5cGUuaW5kZXhPZnx8KEFycmF5LnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKHQpe3ZhciBuPV8odGhpcykscj1uLmxlbmd0aD4+PjA7aWYoIXIpcmV0dXJuLTE7dmFyIGk9MDthcmd1bWVudHMubGVuZ3RoPjEmJihpPU8oYXJndW1lbnRzWzFdKSksaT1pPj0wP2k6TWF0aC5tYXgoMCxyK2kpO2Zvcig7aTxyO2krKylpZihpIGluIG4mJm5baV09PT10KXJldHVybiBpO3JldHVybi0xfSksQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKHQpe3ZhciBuPV8odGhpcykscj1uLmxlbmd0aD4+PjA7aWYoIXIpcmV0dXJuLTE7dmFyIGk9ci0xO2FyZ3VtZW50cy5sZW5ndGg+MSYmKGk9TWF0aC5taW4oaSxPKGFyZ3VtZW50c1sxXSkpKSxpPWk+PTA/aTpyLU1hdGguYWJzKGkpO2Zvcig7aT49MDtpLS0paWYoaSBpbiBuJiZ0PT09bltpXSlyZXR1cm4gaTtyZXR1cm4tMX0pLE9iamVjdC5nZXRQcm90b3R5cGVPZnx8KE9iamVjdC5nZXRQcm90b3R5cGVPZj1mdW5jdGlvbih0KXtyZXR1cm4gdC5fX3Byb3RvX198fCh0LmNvbnN0cnVjdG9yP3QuY29uc3RydWN0b3IucHJvdG90eXBlOnMpfSk7aWYoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ipe3ZhciBkPSJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIGNhbGxlZCBvbiBhIG5vbi1vYmplY3Q6ICI7T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcj1mdW5jdGlvbih0LG4pe2lmKHR5cGVvZiB0IT0ib2JqZWN0IiYmdHlwZW9mIHQhPSJmdW5jdGlvbiJ8fHQ9PT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoZCt0KTtpZighYSh0LG4pKXJldHVybjt2YXIgcixpLG87cj17ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9O2lmKHApe3ZhciB1PXQuX19wcm90b19fO3QuX19wcm90b19fPXM7dmFyIGk9Yyh0LG4pLG89aCh0LG4pO3QuX19wcm90b19fPXU7aWYoaXx8bylyZXR1cm4gaSYmKHIuZ2V0PWkpLG8mJihyLnNldD1vKSxyfXJldHVybiByLnZhbHVlPXRbbl0scn19T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmtleXModCl9KSxPYmplY3QuY3JlYXRlfHwoT2JqZWN0LmNyZWF0ZT1mdW5jdGlvbih0LG4pe3ZhciByO2lmKHQ9PT1udWxsKXI9e19fcHJvdG9fXzpudWxsfTtlbHNle2lmKHR5cGVvZiB0IT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJ0eXBlb2YgcHJvdG90eXBlWyIrdHlwZW9mIHQrIl0gIT0gJ29iamVjdCciKTt2YXIgaT1mdW5jdGlvbigpe307aS5wcm90b3R5cGU9dCxyPW5ldyBpLHIuX19wcm90b19fPXR9cmV0dXJuIG4hPT12b2lkIDAmJk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHIsbikscn0pO2lmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSl7dmFyIG09dih7fSksZz10eXBlb2YgZG9jdW1lbnQ9PSJ1bmRlZmluZWQifHx2KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtpZighbXx8IWcpdmFyIHk9T2JqZWN0LmRlZmluZVByb3BlcnR5fWlmKCFPYmplY3QuZGVmaW5lUHJvcGVydHl8fHkpe3ZhciBiPSJQcm9wZXJ0eSBkZXNjcmlwdGlvbiBtdXN0IGJlIGFuIG9iamVjdDogIix3PSJPYmplY3QuZGVmaW5lUHJvcGVydHkgY2FsbGVkIG9uIG5vbi1vYmplY3Q6ICIsRT0iZ2V0dGVycyAmIHNldHRlcnMgY2FuIG5vdCBiZSBkZWZpbmVkIG9uIHRoaXMgamF2YXNjcmlwdCBlbmdpbmUiO09iamVjdC5kZWZpbmVQcm9wZXJ0eT1mdW5jdGlvbih0LG4scil7aWYodHlwZW9mIHQhPSJvYmplY3QiJiZ0eXBlb2YgdCE9ImZ1bmN0aW9uInx8dD09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcih3K3QpO2lmKHR5cGVvZiByIT0ib2JqZWN0IiYmdHlwZW9mIHIhPSJmdW5jdGlvbiJ8fHI9PT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoYityKTtpZih5KXRyeXtyZXR1cm4geS5jYWxsKE9iamVjdCx0LG4scil9Y2F0Y2goaSl7fWlmKGEociwidmFsdWUiKSlpZihwJiYoYyh0LG4pfHxoKHQsbikpKXt2YXIgbz10Ll9fcHJvdG9fXzt0Ll9fcHJvdG9fXz1zLGRlbGV0ZSB0W25dLHRbbl09ci52YWx1ZSx0Ll9fcHJvdG9fXz1vfWVsc2UgdFtuXT1yLnZhbHVlO2Vsc2V7aWYoIXApdGhyb3cgbmV3IFR5cGVFcnJvcihFKTthKHIsImdldCIpJiZmKHQsbixyLmdldCksYShyLCJzZXQiKSYmbCh0LG4sci5zZXQpfXJldHVybiB0fX1PYmplY3QuZGVmaW5lUHJvcGVydGllc3x8KE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciByIGluIG4pYShuLHIpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLG5bcl0pO3JldHVybiB0fSksT2JqZWN0LnNlYWx8fChPYmplY3Quc2VhbD1mdW5jdGlvbih0KXtyZXR1cm4gdH0pLE9iamVjdC5mcmVlemV8fChPYmplY3QuZnJlZXplPWZ1bmN0aW9uKHQpe3JldHVybiB0fSk7dHJ5e09iamVjdC5mcmVlemUoZnVuY3Rpb24oKXt9KX1jYXRjaChTKXtPYmplY3QuZnJlZXplPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG49PSJmdW5jdGlvbiI/bjp0KG4pfX0oT2JqZWN0LmZyZWV6ZSl9T2JqZWN0LnByZXZlbnRFeHRlbnNpb25zfHwoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zPWZ1bmN0aW9uKHQpe3JldHVybiB0fSksT2JqZWN0LmlzU2VhbGVkfHwoT2JqZWN0LmlzU2VhbGVkPWZ1bmN0aW9uKHQpe3JldHVybiExfSksT2JqZWN0LmlzRnJvemVufHwoT2JqZWN0LmlzRnJvemVuPWZ1bmN0aW9uKHQpe3JldHVybiExfSksT2JqZWN0LmlzRXh0ZW5zaWJsZXx8KE9iamVjdC5pc0V4dGVuc2libGU9ZnVuY3Rpb24odCl7aWYoT2JqZWN0KHQpPT09dCl0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBuPSIiO3doaWxlKGEodCxuKSluKz0iPyI7dFtuXT0hMDt2YXIgcj1hKHQsbik7cmV0dXJuIGRlbGV0ZSB0W25dLHJ9KTtpZighT2JqZWN0LmtleXMpe3ZhciB4PSEwLFQ9WyJ0b1N0cmluZyIsInRvTG9jYWxlU3RyaW5nIiwidmFsdWVPZiIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY29uc3RydWN0b3IiXSxOPVQubGVuZ3RoO2Zvcih2YXIgQyBpbnt0b1N0cmluZzpudWxsfSl4PSExO09iamVjdC5rZXlzPWZ1bmN0aW9uIEQoZSl7aWYodHlwZW9mIGUhPSJvYmplY3QiJiZ0eXBlb2YgZSE9ImZ1bmN0aW9uInx8ZT09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0LmtleXMgY2FsbGVkIG9uIGEgbm9uLW9iamVjdCIpO3ZhciBEPVtdO2Zvcih2YXIgdCBpbiBlKWEoZSx0KSYmRC5wdXNoKHQpO2lmKHgpZm9yKHZhciBuPTAscj1OO248cjtuKyspe3ZhciBpPVRbbl07YShlLGkpJiZELnB1c2goaSl9cmV0dXJuIER9fWlmKCFEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZ3x8KG5ldyBEYXRlKC02MjE5ODc1NTJlNSkpLnRvSVNPU3RyaW5nKCkuaW5kZXhPZigiLTAwMDAwMSIpPT09LTEpRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgdCxuLHIsaTtpZighaXNGaW5pdGUodGhpcykpdGhyb3cgbmV3IFJhbmdlRXJyb3I7dD1bdGhpcy5nZXRVVENNb250aCgpKzEsdGhpcy5nZXRVVENEYXRlKCksdGhpcy5nZXRVVENIb3VycygpLHRoaXMuZ2V0VVRDTWludXRlcygpLHRoaXMuZ2V0VVRDU2Vjb25kcygpXSxpPXRoaXMuZ2V0VVRDRnVsbFllYXIoKSxpPShpPDA/Ii0iOmk+OTk5OT8iKyI6IiIpKygiMDAwMDAiK01hdGguYWJzKGkpKS5zbGljZSgwPD1pJiZpPD05OTk5Py00Oi02KSxuPXQubGVuZ3RoO3doaWxlKG4tLSlyPXRbbl0scjwxMCYmKHRbbl09IjAiK3IpO3JldHVybiBpKyItIit0LnNsaWNlKDAsMikuam9pbigiLSIpKyJUIit0LnNsaWNlKDIpLmpvaW4oIjoiKSsiLiIrKCIwMDAiK3RoaXMuZ2V0VVRDTWlsbGlzZWNvbmRzKCkpLnNsaWNlKC0zKSsiWiJ9O0RhdGUubm93fHwoRGF0ZS5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0pLERhdGUucHJvdG90eXBlLnRvSlNPTnx8KERhdGUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbih0KXtpZih0eXBlb2YgdGhpcy50b0lTT1N0cmluZyE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yO3JldHVybiB0aGlzLnRvSVNPU3RyaW5nKCl9KSxEYXRlLnBhcnNlKCIrMjc1NzYwLTA5LTEzVDAwOjAwOjAwLjAwMFoiKSE9PTg2NGUxMyYmKERhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24gaSh0LG4scixzLG8sdSxhKXt2YXIgZj1hcmd1bWVudHMubGVuZ3RoO2lmKHRoaXMgaW5zdGFuY2VvZiBlKXt2YXIgbD1mPT0xJiZTdHJpbmcodCk9PT10P25ldyBlKGkucGFyc2UodCkpOmY+PTc/bmV3IGUodCxuLHIscyxvLHUsYSk6Zj49Nj9uZXcgZSh0LG4scixzLG8sdSk6Zj49NT9uZXcgZSh0LG4scixzLG8pOmY+PTQ/bmV3IGUodCxuLHIscyk6Zj49Mz9uZXcgZSh0LG4scik6Zj49Mj9uZXcgZSh0LG4pOmY+PTE/bmV3IGUodCk6bmV3IGU7cmV0dXJuIGwuY29uc3RydWN0b3I9aSxsfXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sbj1uZXcgUmVnRXhwKCJeKFxcZHs0fXxbKy1dXFxkezZ9KSg/Oi0oXFxkezJ9KSg/Oi0oXFxkezJ9KSg/OlQoXFxkezJ9KTooXFxkezJ9KSg/OjooXFxkezJ9KSg/OlxcLihcXGR7M30pKT8pPyg/Olp8KD86KFstK10pKFxcZHsyfSk6KFxcZHsyfSkpKT8pPyk/KT8kIik7Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdO3JldHVybiB0Lm5vdz1lLm5vdyx0LlVUQz1lLlVUQyx0LnByb3RvdHlwZT1lLnByb3RvdHlwZSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQucGFyc2U9ZnVuY3Rpb24ocil7dmFyIGk9bi5leGVjKHIpO2lmKGkpe2kuc2hpZnQoKTtmb3IodmFyIHM9MTtzPDc7cysrKWlbc109KyhpW3NdfHwoczwzPzE6MCkpLHM9PTEmJmlbc10tLTt2YXIgbz0raS5wb3AoKSx1PStpLnBvcCgpLGE9aS5wb3AoKSxmPTA7aWYoYSl7aWYodT4yM3x8bz41OSlyZXR1cm4gTmFOO2Y9KHUqNjArbykqNmU0KihhPT0iKyI/LTE6MSl9dmFyIGw9K2lbMF07cmV0dXJuIDA8PWwmJmw8PTk5PyhpWzBdPWwrNDAwLGUuVVRDLmFwcGx5KHRoaXMsaSkrZi0xMjYyMjc4MDhlNSk6ZS5VVEMuYXBwbHkodGhpcyxpKStmfXJldHVybiBlLnBhcnNlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdH0oRGF0ZSkpO3ZhciBrPSIJXG4LXGZcciDCoOGagOGgjuKAgOKAgeKAguKAg+KAhOKAheKAhuKAh+KAiOKAieKAiuKAr+KBn+OAgFx1MjAyOFx1MjAyOe+7vyI7aWYoIVN0cmluZy5wcm90b3R5cGUudHJpbXx8ay50cmltKCkpe2s9IlsiK2srIl0iO3ZhciBMPW5ldyBSZWdFeHAoIl4iK2sraysiKiIpLEE9bmV3IFJlZ0V4cChrK2srIiokIik7U3RyaW5nLnByb3RvdHlwZS50cmltPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyh0aGlzKS5yZXBsYWNlKEwsIiIpLnJlcGxhY2UoQSwiIil9fXZhciBPPWZ1bmN0aW9uKGUpe3JldHVybiBlPStlLGUhPT1lP2U9MDplIT09MCYmZSE9PTEvMCYmZSE9PS0xLzAmJihlPShlPjB8fC0xKSpNYXRoLmZsb29yKE1hdGguYWJzKGUpKSksZX0sTT0iYSJbMF0hPSJhIixfPWZ1bmN0aW9uKGUpe2lmKGU9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcjtyZXR1cm4gTSYmdHlwZW9mIGU9PSJzdHJpbmciJiZlP2Uuc3BsaXQoIiIpOk9iamVjdChlKX19KSxkZWZpbmUoImFjZS9saWIvZG9tIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjt0LmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0fHxyLGUpOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSl9LHQuc2V0VGV4dD1mdW5jdGlvbihlLHQpe2UuaW5uZXJUZXh0IT09dW5kZWZpbmVkJiYoZS5pbm5lclRleHQ9dCksZS50ZXh0Q29udGVudCE9PXVuZGVmaW5lZCYmKGUudGV4dENvbnRlbnQ9dCl9LHQuaGFzQ3NzQ2xhc3M9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNsYXNzTmFtZS5zcGxpdCgvXHMrL2cpO3JldHVybiBuLmluZGV4T2YodCkhPT0tMX0sdC5hZGRDc3NDbGFzcz1mdW5jdGlvbihlLG4pe3QuaGFzQ3NzQ2xhc3MoZSxuKXx8KGUuY2xhc3NOYW1lKz0iICIrbil9LHQucmVtb3ZlQ3NzQ2xhc3M9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNsYXNzTmFtZS5zcGxpdCgvXHMrL2cpO2Zvcig7Oyl7dmFyIHI9bi5pbmRleE9mKHQpO2lmKHI9PS0xKWJyZWFrO24uc3BsaWNlKHIsMSl9ZS5jbGFzc05hbWU9bi5qb2luKCIgIil9LHQudG9nZ2xlQ3NzQ2xhc3M9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNsYXNzTmFtZS5zcGxpdCgvXHMrL2cpLHI9ITA7Zm9yKDs7KXt2YXIgaT1uLmluZGV4T2YodCk7aWYoaT09LTEpYnJlYWs7cj0hMSxuLnNwbGljZShpLDEpfXJldHVybiByJiZuLnB1c2godCksZS5jbGFzc05hbWU9bi5qb2luKCIgIikscn0sdC5zZXRDc3NDbGFzcz1mdW5jdGlvbihlLG4scil7cj90LmFkZENzc0NsYXNzKGUsbik6dC5yZW1vdmVDc3NDbGFzcyhlLG4pfSx0Lmhhc0Nzc1N0cmluZz1mdW5jdGlvbihlLHQpe3ZhciBuPTAscjt0PXR8fGRvY3VtZW50O2lmKHQuY3JlYXRlU3R5bGVTaGVldCYmKHI9dC5zdHlsZVNoZWV0cykpe3doaWxlKG48ci5sZW5ndGgpaWYocltuKytdLm93bmluZ0VsZW1lbnQuaWQ9PT1lKXJldHVybiEwfWVsc2UgaWYocj10LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzdHlsZSIpKXdoaWxlKG48ci5sZW5ndGgpaWYocltuKytdLmlkPT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0sdC5pbXBvcnRDc3NTdHJpbmc9ZnVuY3Rpb24obixpLHMpe3M9c3x8ZG9jdW1lbnQ7aWYoaSYmdC5oYXNDc3NTdHJpbmcoaSxzKSlyZXR1cm4gbnVsbDt2YXIgbztpZihzLmNyZWF0ZVN0eWxlU2hlZXQpbz1zLmNyZWF0ZVN0eWxlU2hlZXQoKSxvLmNzc1RleHQ9bixpJiYoby5vd25pbmdFbGVtZW50LmlkPWkpO2Vsc2V7bz1zLmNyZWF0ZUVsZW1lbnROUz9zLmNyZWF0ZUVsZW1lbnROUyhyLCJzdHlsZSIpOnMuY3JlYXRlRWxlbWVudCgic3R5bGUiKSxvLmFwcGVuZENoaWxkKHMuY3JlYXRlVGV4dE5vZGUobikpLGkmJihvLmlkPWkpO3ZhciB1PXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8cy5kb2N1bWVudEVsZW1lbnQ7dS5hcHBlbmRDaGlsZChvKX19LHQuaW1wb3J0Q3NzU3R5bHNoZWV0PWZ1bmN0aW9uKGUsbil7aWYobi5jcmVhdGVTdHlsZVNoZWV0KW4uY3JlYXRlU3R5bGVTaGVldChlKTtlbHNle3ZhciByPXQuY3JlYXRlRWxlbWVudCgibGluayIpO3IucmVsPSJzdHlsZXNoZWV0IixyLmhyZWY9ZTt2YXIgaT1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fG4uZG9jdW1lbnRFbGVtZW50O2kuYXBwZW5kQ2hpbGQocil9fSx0LmdldElubmVyV2lkdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KHQuY29tcHV0ZWRTdHlsZShlLCJwYWRkaW5nTGVmdCIpLDEwKStwYXJzZUludCh0LmNvbXB1dGVkU3R5bGUoZSwicGFkZGluZ1JpZ2h0IiksMTApK2UuY2xpZW50V2lkdGh9LHQuZ2V0SW5uZXJIZWlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KHQuY29tcHV0ZWRTdHlsZShlLCJwYWRkaW5nVG9wIiksMTApK3BhcnNlSW50KHQuY29tcHV0ZWRTdHlsZShlLCJwYWRkaW5nQm90dG9tIiksMTApK2UuY2xpZW50SGVpZ2h0fSx3aW5kb3cucGFnZVlPZmZzZXQhPT11bmRlZmluZWQ/KHQuZ2V0UGFnZVNjcm9sbFRvcD1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cucGFnZVlPZmZzZXR9LHQuZ2V0UGFnZVNjcm9sbExlZnQ9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LnBhZ2VYT2Zmc2V0fSk6KHQuZ2V0UGFnZVNjcm9sbFRvcD1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcH0sdC5nZXRQYWdlU2Nyb2xsTGVmdD1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnR9KSx3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZT90LmNvbXB1dGVkU3R5bGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8od2luZG93LmdldENvbXB1dGVkU3R5bGUoZSwiIil8fHt9KVt0XXx8IiI6d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSwiIil8fHt9fTp0LmNvbXB1dGVkU3R5bGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9lLmN1cnJlbnRTdHlsZVt0XTplLmN1cnJlbnRTdHlsZX0sdC5zY3JvbGxiYXJXaWR0aD1mdW5jdGlvbihlKXt2YXIgbj10LmNyZWF0ZUVsZW1lbnQoInAiKTtuLnN0eWxlLndpZHRoPSIxMDAlIixuLnN0eWxlLm1pbldpZHRoPSIwcHgiLG4uc3R5bGUuaGVpZ2h0PSIyMDBweCI7dmFyIHI9dC5jcmVhdGVFbGVtZW50KCJkaXYiKSxpPXIuc3R5bGU7aS5wb3NpdGlvbj0iYWJzb2x1dGUiLGkubGVmdD0iLTEwMDAwcHgiLGkub3ZlcmZsb3c9ImhpZGRlbiIsaS53aWR0aD0iMjAwcHgiLGkubWluV2lkdGg9IjBweCIsaS5oZWlnaHQ9IjE1MHB4IixyLmFwcGVuZENoaWxkKG4pO3ZhciBzPWUuYm9keXx8ZS5kb2N1bWVudEVsZW1lbnQ7cy5hcHBlbmRDaGlsZChyKTt2YXIgbz1uLm9mZnNldFdpZHRoO2kub3ZlcmZsb3c9InNjcm9sbCI7dmFyIHU9bi5vZmZzZXRXaWR0aDtyZXR1cm4gbz09dSYmKHU9ci5jbGllbnRXaWR0aCkscy5yZW1vdmVDaGlsZChyKSxvLXV9LHQuc2V0SW5uZXJIdG1sPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5jbG9uZU5vZGUoITEpO3JldHVybiBuLmlubmVySFRNTD10LGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobixlKSxufSx0LnNldElubmVyVGV4dD1mdW5jdGlvbihlLHQpe3ZhciBuPWUub3duZXJEb2N1bWVudDtuLmJvZHkmJiJ0ZXh0Q29udGVudCJpbiBuLmJvZHk/ZS50ZXh0Q29udGVudD10OmUuaW5uZXJUZXh0PXR9LHQuZ2V0SW5uZXJUZXh0PWZ1bmN0aW9uKGUpe3ZhciB0PWUub3duZXJEb2N1bWVudDtyZXR1cm4gdC5ib2R5JiYidGV4dENvbnRlbnQiaW4gdC5ib2R5P2UudGV4dENvbnRlbnQ6ZS5pbm5lclRleHR8fGUudGV4dENvbnRlbnR8fCIifSx0LmdldFBhcmVudFdpbmRvdz1mdW5jdGlvbihlKXtyZXR1cm4gZS5kZWZhdWx0Vmlld3x8ZS5wYXJlbnRXaW5kb3d9fSksZGVmaW5lKCJhY2UvbGliL2V2ZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9rZXlzIiwiYWNlL2xpYi91c2VyYWdlbnQiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBvKGUsdCxuKXt2YXIgcz0wOyFpLmlzT3BlcmF8fCJLZXlib2FyZEV2ZW50ImluIHdpbmRvd3x8IWkuaXNNYWM/cz0wfCh0LmN0cmxLZXk/MTowKXwodC5hbHRLZXk/MjowKXwodC5zaGlmdEtleT80OjApfCh0Lm1ldGFLZXk/ODowKTpzPTB8KHQubWV0YUtleT8xOjApfCh0LmFsdEtleT8yOjApfCh0LnNoaWZ0S2V5PzQ6MCl8KHQuY3RybEtleT84OjApO2lmKG4gaW4gci5NT0RJRklFUl9LRVlTKXtzd2l0Y2goci5NT0RJRklFUl9LRVlTW25dKXtjYXNlIkFsdCI6cz0yO2JyZWFrO2Nhc2UiU2hpZnQiOnM9NDticmVhaztjYXNlIkN0cmwiOnM9MTticmVhaztkZWZhdWx0OnM9OH1uPTB9cmV0dXJuIHMmOCYmKG49PTkxfHxuPT05MykmJihuPTApLCEhc3x8biBpbiByLkZVTkNUSU9OX0tFWVN8fG4gaW4gci5QUklOVEFCTEVfS0VZUz9lKHQscyxuKTohMX12YXIgcj1lKCIuL2tleXMiKSxpPWUoIi4vdXNlcmFnZW50Iikscz1lKCIuL2RvbSIpO3QuYWRkTGlzdGVuZXI9ZnVuY3Rpb24oZSx0LG4pe2lmKGUuYWRkRXZlbnRMaXN0ZW5lcilyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMSk7aWYoZS5hdHRhY2hFdmVudCl7dmFyIHI9ZnVuY3Rpb24oKXtuKHdpbmRvdy5ldmVudCl9O24uX3dyYXBwZXI9cixlLmF0dGFjaEV2ZW50KCJvbiIrdCxyKX19LHQucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZSx0LG4pe2lmKGUucmVtb3ZlRXZlbnRMaXN0ZW5lcilyZXR1cm4gZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMSk7ZS5kZXRhY2hFdmVudCYmZS5kZXRhY2hFdmVudCgib24iK3Qsbi5fd3JhcHBlcnx8bil9LHQuc3RvcEV2ZW50PWZ1bmN0aW9uKGUpe3JldHVybiB0LnN0b3BQcm9wYWdhdGlvbihlKSx0LnByZXZlbnREZWZhdWx0KGUpLCExfSx0LnN0b3BQcm9wYWdhdGlvbj1mdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOmUuY2FuY2VsQnViYmxlPSEwfSx0LnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOmUucmV0dXJuVmFsdWU9ITF9LHQuZ2V0QnV0dG9uPWZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PSJkYmxjbGljayI/MDplLnR5cGU9PSJjb250ZXh0bWVudSJ8fGUuY3RybEtleSYmaS5pc01hYz8yOmUucHJldmVudERlZmF1bHQ/ZS5idXR0b246ezE6MCwyOjIsNDoxfVtlLmJ1dHRvbl19LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRDYXB0dXJlP3QuY2FwdHVyZT1mdW5jdGlvbihlLG4scil7ZnVuY3Rpb24gaShlKXtyZXR1cm4gbihlKSx0LnN0b3BQcm9wYWdhdGlvbihlKX1mdW5jdGlvbiBvKGkpe24oaSksc3x8KHM9ITAscihpKSksdC5yZW1vdmVMaXN0ZW5lcihlLCJtb3VzZW1vdmUiLG4pLHQucmVtb3ZlTGlzdGVuZXIoZSwibW91c2V1cCIsbyksdC5yZW1vdmVMaXN0ZW5lcihlLCJsb3NlY2FwdHVyZSIsbyksZS5yZWxlYXNlQ2FwdHVyZSgpfXZhciBzPSExO3QuYWRkTGlzdGVuZXIoZSwibW91c2Vtb3ZlIixuKSx0LmFkZExpc3RlbmVyKGUsIm1vdXNldXAiLG8pLHQuYWRkTGlzdGVuZXIoZSwibG9zZWNhcHR1cmUiLG8pLGUuc2V0Q2FwdHVyZSgpfTp0LmNhcHR1cmU9ZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7dChlKSxlLnN0b3BQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIGkoZSl7dCYmdChlKSxuJiZuKGUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsciwhMCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsaSwhMCksZS5zdG9wUHJvcGFnYXRpb24oKX1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHIsITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGksITApfSx0LmFkZE1vdXNlV2hlZWxMaXN0ZW5lcj1mdW5jdGlvbihlLG4pe3ZhciByPTgsaT1mdW5jdGlvbihlKXtlLndoZWVsRGVsdGEhPT11bmRlZmluZWQ/ZS53aGVlbERlbHRhWCE9PXVuZGVmaW5lZD8oZS53aGVlbFg9LWUud2hlZWxEZWx0YVgvcixlLndoZWVsWT0tZS53aGVlbERlbHRhWS9yKTooZS53aGVlbFg9MCxlLndoZWVsWT0tZS53aGVlbERlbHRhL3IpOmUuYXhpcyYmZS5heGlzPT1lLkhPUklaT05UQUxfQVhJUz8oZS53aGVlbFg9KGUuZGV0YWlsfHwwKSo1LGUud2hlZWxZPTApOihlLndoZWVsWD0wLGUud2hlZWxZPShlLmRldGFpbHx8MCkqNSksbihlKX07dC5hZGRMaXN0ZW5lcihlLCJET01Nb3VzZVNjcm9sbCIsaSksdC5hZGRMaXN0ZW5lcihlLCJtb3VzZXdoZWVsIixpKX0sdC5hZGRNdWx0aU1vdXNlRG93bkxpc3RlbmVyPWZ1bmN0aW9uKGUsbixyLHMpe3ZhciBvPTAsdSxhLGYsbD17MjoiZGJsY2xpY2siLDM6InRyaXBsZWNsaWNrIiw0OiJxdWFkY2xpY2sifSxjPWZ1bmN0aW9uKGUpe2lmKHQuZ2V0QnV0dG9uKGUpIT0wKW89MDtlbHNle3ZhciBpPU1hdGguYWJzKGUuY2xpZW50WC11KT41fHxNYXRoLmFicyhlLmNsaWVudFktYSk+NTtpZighZnx8aSlvPTA7bys9MSxmJiZjbGVhclRpbWVvdXQoZiksZj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zj1udWxsfSxuW28tMV18fDYwMCl9bz09MSYmKHU9ZS5jbGllbnRYLGE9ZS5jbGllbnRZKSxyW3NdKCJtb3VzZWRvd24iLGUpO2lmKG8+NClvPTA7ZWxzZSBpZihvPjEpcmV0dXJuIHJbc10obFtvXSxlKX07dC5hZGRMaXN0ZW5lcihlLCJtb3VzZWRvd24iLGMpLGkuaXNPbGRJRSYmdC5hZGRMaXN0ZW5lcihlLCJkYmxjbGljayIsYyl9LHQuYWRkQ29tbWFuZEtleUxpc3RlbmVyPWZ1bmN0aW9uKGUsbil7dmFyIHI9dC5hZGRMaXN0ZW5lcjtpZihpLmlzT2xkR2Vja298fGkuaXNPcGVyYSYmISgiS2V5Ym9hcmRFdmVudCJpbiB3aW5kb3cpKXt2YXIgcz1udWxsO3IoZSwia2V5ZG93biIsZnVuY3Rpb24oZSl7cz1lLmtleUNvZGV9KSxyKGUsImtleXByZXNzIixmdW5jdGlvbihlKXtyZXR1cm4gbyhuLGUscyl9KX1lbHNle3ZhciB1PW51bGw7cihlLCJrZXlkb3duIixmdW5jdGlvbihlKXtyZXR1cm4gdT1lLmtleUlkZW50aWZpZXJ8fGUua2V5Q29kZSxvKG4sZSxlLmtleUNvZGUpfSl9fTtpZih3aW5kb3cucG9zdE1lc3NhZ2Upe3ZhciB1PTE7dC5uZXh0VGljaz1mdW5jdGlvbihlLG4pe249bnx8d2luZG93O3ZhciByPSJ6ZXJvLXRpbWVvdXQtbWVzc2FnZS0iK3U7dC5hZGRMaXN0ZW5lcihuLCJtZXNzYWdlIixmdW5jdGlvbiBpKHMpe3MuZGF0YT09ciYmKHQuc3RvcFByb3BhZ2F0aW9uKHMpLHQucmVtb3ZlTGlzdGVuZXIobiwibWVzc2FnZSIsaSksZSgpKX0pLG4ucG9zdE1lc3NhZ2UociwiKiIpfX1lbHNlIHQubmV4dFRpY2s9ZnVuY3Rpb24oZSx0KXt0PXR8fHdpbmRvdyx3aW5kb3cuc2V0VGltZW91dChlLDApfX0pLGRlZmluZSgiYWNlL2xpYi9rZXlzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9vb3AiKSxpPWZ1bmN0aW9uKCl7dmFyIGU9e01PRElGSUVSX0tFWVM6ezE2OiJTaGlmdCIsMTc6IkN0cmwiLDE4OiJBbHQiLDIyNDoiTWV0YSJ9LEtFWV9NT0RTOntjdHJsOjEsYWx0OjIsb3B0aW9uOjIsc2hpZnQ6NCxtZXRhOjgsY29tbWFuZDo4fSxGVU5DVElPTl9LRVlTOns4OiJCYWNrc3BhY2UiLDk6IlRhYiIsMTM6IlJldHVybiIsMTk6IlBhdXNlIiwyNzoiRXNjIiwzMjoiU3BhY2UiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6IkhvbWUiLDM3OiJMZWZ0IiwzODoiVXAiLDM5OiJSaWdodCIsNDA6IkRvd24iLDQ0OiJQcmludCIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsOTY6Ik51bXBhZDAiLDk3OiJOdW1wYWQxIiw5ODoiTnVtcGFkMiIsOTk6Ik51bXBhZDMiLDEwMDoiTnVtcGFkNCIsMTAxOiJOdW1wYWQ1IiwxMDI6Ik51bXBhZDYiLDEwMzoiTnVtcGFkNyIsMTA0OiJOdW1wYWQ4IiwxMDU6Ik51bXBhZDkiLDExMjoiRjEiLDExMzoiRjIiLDExNDoiRjMiLDExNToiRjQiLDExNjoiRjUiLDExNzoiRjYiLDExODoiRjciLDExOToiRjgiLDEyMDoiRjkiLDEyMToiRjEwIiwxMjI6IkYxMSIsMTIzOiJGMTIiLDE0NDoiTnVtbG9jayIsMTQ1OiJTY3JvbGxsb2NrIn0sUFJJTlRBQkxFX0tFWVM6ezMyOiIgIiw0ODoiMCIsNDk6IjEiLDUwOiIyIiw1MToiMyIsNTI6IjQiLDUzOiI1Iiw1NDoiNiIsNTU6IjciLDU2OiI4Iiw1NzoiOSIsNTk6IjsiLDYxOiI9Iiw2NToiYSIsNjY6ImIiLDY3OiJjIiw2ODoiZCIsNjk6ImUiLDcwOiJmIiw3MToiZyIsNzI6ImgiLDczOiJpIiw3NDoiaiIsNzU6ImsiLDc2OiJsIiw3NzoibSIsNzg6Im4iLDc5OiJvIiw4MDoicCIsODE6InEiLDgyOiJyIiw4MzoicyIsODQ6InQiLDg1OiJ1Iiw4NjoidiIsODc6InciLDg4OiJ4Iiw4OToieSIsOTA6InoiLDEwNzoiKyIsMTA5OiItIiwxMTA6Ii4iLDE4ODoiLCIsMTkwOiIuIiwxOTE6Ii8iLDE5MjoiYCIsMjE5OiJbIiwyMjA6IlxcIiwyMjE6Il0iLDIyMjoiJyJ9fTtmb3IodmFyIHQgaW4gZS5GVU5DVElPTl9LRVlTKXt2YXIgbj1lLkZVTkNUSU9OX0tFWVNbdF0udG9VcHBlckNhc2UoKTtlW25dPXBhcnNlSW50KHQsMTApfXJldHVybiByLm1peGluKGUsZS5NT0RJRklFUl9LRVlTKSxyLm1peGluKGUsZS5QUklOVEFCTEVfS0VZUyksci5taXhpbihlLGUuRlVOQ1RJT05fS0VZUyksZX0oKTtyLm1peGluKHQsaSksdC5rZXlDb2RlVG9TdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuKGlbZV18fFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpLnRvTG93ZXJDYXNlKCl9fSksZGVmaW5lKCJhY2UvbGliL29vcCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmluaGVyaXRzPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt9O3JldHVybiBmdW5jdGlvbih0LG4pe2UucHJvdG90eXBlPW4ucHJvdG90eXBlLHQuc3VwZXJfPW4ucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyBlLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9fSgpLHQubWl4aW49ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl19LHQuaW1wbGVtZW50PWZ1bmN0aW9uKGUsbil7dC5taXhpbihlLG4pfX0pLGRlZmluZSgiYWNlL2xpYi91c2VyYWdlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9KG5hdmlnYXRvci5wbGF0Zm9ybS5tYXRjaCgvbWFjfHdpbnxsaW51eC9pKXx8WyJvdGhlciJdKVswXS50b0xvd2VyQ2FzZSgpLGk9bmF2aWdhdG9yLnVzZXJBZ2VudDt0LmlzV2luPXI9PSJ3aW4iLHQuaXNNYWM9cj09Im1hYyIsdC5pc0xpbnV4PXI9PSJsaW51eCIsdC5pc0lFPW5hdmlnYXRvci5hcHBOYW1lPT0iTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIiYmcGFyc2VGbG9hdChuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9NU0lFIChbMC05XStbXC4wLTldKykvKVsxXSksdC5pc09sZElFPXQuaXNJRSYmdC5pc0lFPDksdC5pc0dlY2tvPXQuaXNNb3ppbGxhPXdpbmRvdy5jb250cm9sbGVycyYmd2luZG93Lm5hdmlnYXRvci5wcm9kdWN0PT09IkdlY2tvIix0LmlzT2xkR2Vja289dC5pc0dlY2tvJiZwYXJzZUludCgobmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvcnZcOihcZCspLyl8fFtdKVsxXSwxMCk8NCx0LmlzT3BlcmE9d2luZG93Lm9wZXJhJiZPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwod2luZG93Lm9wZXJhKT09IltvYmplY3QgT3BlcmFdIix0LmlzV2ViS2l0PXBhcnNlRmxvYXQoaS5zcGxpdCgiV2ViS2l0LyIpWzFdKXx8dW5kZWZpbmVkLHQuaXNDaHJvbWU9cGFyc2VGbG9hdChpLnNwbGl0KCIgQ2hyb21lLyIpWzFdKXx8dW5kZWZpbmVkLHQuaXNBSVI9aS5pbmRleE9mKCJBZG9iZUFJUiIpPj0wLHQuaXNJUGFkPWkuaW5kZXhPZigiaVBhZCIpPj0wLHQuaXNUb3VjaFBhZD1pLmluZGV4T2YoIlRvdWNoUGFkIik+PTAsdC5PUz17TElOVVg6IkxJTlVYIixNQUM6Ik1BQyIsV0lORE9XUzoiV0lORE9XUyJ9LHQuZ2V0T1M9ZnVuY3Rpb24oKXtyZXR1cm4gdC5pc01hYz90Lk9TLk1BQzp0LmlzTGludXg/dC5PUy5MSU5VWDp0Lk9TLldJTkRPV1N9fSksZGVmaW5lKCJhY2UvZWRpdG9yIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9maXhvbGRicm93c2VycyIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL2xpYi91c2VyYWdlbnQiLCJhY2Uva2V5Ym9hcmQvdGV4dGlucHV0IiwiYWNlL21vdXNlL21vdXNlX2hhbmRsZXIiLCJhY2UvbW91c2UvZm9sZF9oYW5kbGVyIiwiYWNlL2tleWJvYXJkL2tleWJpbmRpbmciLCJhY2UvZWRpdF9zZXNzaW9uIiwiYWNlL3NlYXJjaCIsImFjZS9yYW5nZSIsImFjZS9saWIvZXZlbnRfZW1pdHRlciIsImFjZS9jb21tYW5kcy9jb21tYW5kX21hbmFnZXIiLCJhY2UvY29tbWFuZHMvZGVmYXVsdF9jb21tYW5kcyJdLGZ1bmN0aW9uKGUsdCxuKXtlKCIuL2xpYi9maXhvbGRicm93c2VycyIpO3ZhciByPWUoIi4vbGliL29vcCIpLGk9ZSgiLi9saWIvbGFuZyIpLHM9ZSgiLi9saWIvdXNlcmFnZW50Iiksbz1lKCIuL2tleWJvYXJkL3RleHRpbnB1dCIpLlRleHRJbnB1dCx1PWUoIi4vbW91c2UvbW91c2VfaGFuZGxlciIpLk1vdXNlSGFuZGxlcixhPWUoIi4vbW91c2UvZm9sZF9oYW5kbGVyIikuRm9sZEhhbmRsZXIsZj1lKCIuL2tleWJvYXJkL2tleWJpbmRpbmciKS5LZXlCaW5kaW5nLGw9ZSgiLi9lZGl0X3Nlc3Npb24iKS5FZGl0U2Vzc2lvbixjPWUoIi4vc2VhcmNoIikuU2VhcmNoLGg9ZSgiLi9yYW5nZSIpLlJhbmdlLHA9ZSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixkPWUoIi4vY29tbWFuZHMvY29tbWFuZF9tYW5hZ2VyIikuQ29tbWFuZE1hbmFnZXIsdj1lKCIuL2NvbW1hbmRzL2RlZmF1bHRfY29tbWFuZHMiKS5jb21tYW5kcyxtPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRDb250YWluZXJFbGVtZW50KCk7dGhpcy5jb250YWluZXI9bix0aGlzLnJlbmRlcmVyPWUsdGhpcy5jb21tYW5kcz1uZXcgZChzLmlzTWFjPyJtYWMiOiJ3aW4iLHYpLHRoaXMudGV4dElucHV0PW5ldyBvKGUuZ2V0VGV4dEFyZWFDb250YWluZXIoKSx0aGlzKSx0aGlzLnJlbmRlcmVyLnRleHRhcmVhPXRoaXMudGV4dElucHV0LmdldEVsZW1lbnQoKSx0aGlzLmtleUJpbmRpbmc9bmV3IGYodGhpcykscy5pc0lQYWR8fCh0aGlzLiRtb3VzZUhhbmRsZXI9bmV3IHUodGhpcyksbmV3IGEodGhpcykpLHRoaXMuJGJsb2NrU2Nyb2xsaW5nPTAsdGhpcy4kc2VhcmNoPShuZXcgYykuc2V0KHt3cmFwOiEwfSksdGhpcy5zZXRTZXNzaW9uKHR8fG5ldyBsKCIiKSl9OyhmdW5jdGlvbigpe3IuaW1wbGVtZW50KHRoaXMscCksdGhpcy5zZXRLZXlib2FyZEhhbmRsZXI9ZnVuY3Rpb24oZSl7dGhpcy5rZXlCaW5kaW5nLnNldEtleWJvYXJkSGFuZGxlcihlKX0sdGhpcy5nZXRLZXlib2FyZEhhbmRsZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rZXlCaW5kaW5nLmdldEtleWJvYXJkSGFuZGxlcigpfSx0aGlzLnNldFNlc3Npb249ZnVuY3Rpb24oZSl7aWYodGhpcy5zZXNzaW9uPT1lKXJldHVybjtpZih0aGlzLnNlc3Npb24pe3ZhciB0PXRoaXMuc2Vzc2lvbjt0aGlzLnNlc3Npb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlIix0aGlzLiRvbkRvY3VtZW50Q2hhbmdlKSx0aGlzLnNlc3Npb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlTW9kZSIsdGhpcy4kb25DaGFuZ2VNb2RlKSx0aGlzLnNlc3Npb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG9rZW5pemVyVXBkYXRlIix0aGlzLiRvblRva2VuaXplclVwZGF0ZSksdGhpcy5zZXNzaW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZVRhYlNpemUiLHRoaXMuJG9uQ2hhbmdlVGFiU2l6ZSksdGhpcy5zZXNzaW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZVdyYXBMaW1pdCIsdGhpcy4kb25DaGFuZ2VXcmFwTGltaXQpLHRoaXMuc2Vzc2lvbi5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2VXcmFwTW9kZSIsdGhpcy4kb25DaGFuZ2VXcmFwTW9kZSksdGhpcy5zZXNzaW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm9uQ2hhbmdlRm9sZCIsdGhpcy4kb25DaGFuZ2VGb2xkKSx0aGlzLnNlc3Npb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlRnJvbnRNYXJrZXIiLHRoaXMuJG9uQ2hhbmdlRnJvbnRNYXJrZXIpLHRoaXMuc2Vzc2lvbi5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2VCYWNrTWFya2VyIix0aGlzLiRvbkNoYW5nZUJhY2tNYXJrZXIpLHRoaXMuc2Vzc2lvbi5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2VCcmVha3BvaW50Iix0aGlzLiRvbkNoYW5nZUJyZWFrcG9pbnQpLHRoaXMuc2Vzc2lvbi5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2VBbm5vdGF0aW9uIix0aGlzLiRvbkNoYW5nZUFubm90YXRpb24pLHRoaXMuc2Vzc2lvbi5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2VPdmVyd3JpdGUiLHRoaXMuJG9uQ3Vyc29yQ2hhbmdlKSx0aGlzLnNlc3Npb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlU2Nyb2xsVG9wIix0aGlzLiRvblNjcm9sbFRvcENoYW5nZSksdGhpcy5zZXNzaW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZUxlZnRUb3AiLHRoaXMuJG9uU2Nyb2xsTGVmdENoYW5nZSk7dmFyIG49dGhpcy5zZXNzaW9uLmdldFNlbGVjdGlvbigpO24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlQ3Vyc29yIix0aGlzLiRvbkN1cnNvckNoYW5nZSksbi5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2VTZWxlY3Rpb24iLHRoaXMuJG9uU2VsZWN0aW9uQ2hhbmdlKX10aGlzLnNlc3Npb249ZSx0aGlzLiRvbkRvY3VtZW50Q2hhbmdlPXRoaXMub25Eb2N1bWVudENoYW5nZS5iaW5kKHRoaXMpLGUuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIix0aGlzLiRvbkRvY3VtZW50Q2hhbmdlKSx0aGlzLnJlbmRlcmVyLnNldFNlc3Npb24oZSksdGhpcy4kb25DaGFuZ2VNb2RlPXRoaXMub25DaGFuZ2VNb2RlLmJpbmQodGhpcyksZS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2VNb2RlIix0aGlzLiRvbkNoYW5nZU1vZGUpLHRoaXMuJG9uVG9rZW5pemVyVXBkYXRlPXRoaXMub25Ub2tlbml6ZXJVcGRhdGUuYmluZCh0aGlzKSxlLmFkZEV2ZW50TGlzdGVuZXIoInRva2VuaXplclVwZGF0ZSIsdGhpcy4kb25Ub2tlbml6ZXJVcGRhdGUpLHRoaXMuJG9uQ2hhbmdlVGFiU2l6ZT10aGlzLnJlbmRlcmVyLnVwZGF0ZVRleHQuYmluZCh0aGlzLnJlbmRlcmVyKSxlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZVRhYlNpemUiLHRoaXMuJG9uQ2hhbmdlVGFiU2l6ZSksdGhpcy4kb25DaGFuZ2VXcmFwTGltaXQ9dGhpcy5vbkNoYW5nZVdyYXBMaW1pdC5iaW5kKHRoaXMpLGUuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlV3JhcExpbWl0Iix0aGlzLiRvbkNoYW5nZVdyYXBMaW1pdCksdGhpcy4kb25DaGFuZ2VXcmFwTW9kZT10aGlzLm9uQ2hhbmdlV3JhcE1vZGUuYmluZCh0aGlzKSxlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZVdyYXBNb2RlIix0aGlzLiRvbkNoYW5nZVdyYXBNb2RlKSx0aGlzLiRvbkNoYW5nZUZvbGQ9dGhpcy5vbkNoYW5nZUZvbGQuYmluZCh0aGlzKSxlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZUZvbGQiLHRoaXMuJG9uQ2hhbmdlRm9sZCksdGhpcy4kb25DaGFuZ2VGcm9udE1hcmtlcj10aGlzLm9uQ2hhbmdlRnJvbnRNYXJrZXIuYmluZCh0aGlzKSx0aGlzLnNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlRnJvbnRNYXJrZXIiLHRoaXMuJG9uQ2hhbmdlRnJvbnRNYXJrZXIpLHRoaXMuJG9uQ2hhbmdlQmFja01hcmtlcj10aGlzLm9uQ2hhbmdlQmFja01hcmtlci5iaW5kKHRoaXMpLHRoaXMuc2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2VCYWNrTWFya2VyIix0aGlzLiRvbkNoYW5nZUJhY2tNYXJrZXIpLHRoaXMuJG9uQ2hhbmdlQnJlYWtwb2ludD10aGlzLm9uQ2hhbmdlQnJlYWtwb2ludC5iaW5kKHRoaXMpLHRoaXMuc2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2VCcmVha3BvaW50Iix0aGlzLiRvbkNoYW5nZUJyZWFrcG9pbnQpLHRoaXMuJG9uQ2hhbmdlQW5ub3RhdGlvbj10aGlzLm9uQ2hhbmdlQW5ub3RhdGlvbi5iaW5kKHRoaXMpLHRoaXMuc2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2VBbm5vdGF0aW9uIix0aGlzLiRvbkNoYW5nZUFubm90YXRpb24pLHRoaXMuJG9uQ3Vyc29yQ2hhbmdlPXRoaXMub25DdXJzb3JDaGFuZ2UuYmluZCh0aGlzKSx0aGlzLnNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlT3ZlcndyaXRlIix0aGlzLiRvbkN1cnNvckNoYW5nZSksdGhpcy4kb25TY3JvbGxUb3BDaGFuZ2U9dGhpcy5vblNjcm9sbFRvcENoYW5nZS5iaW5kKHRoaXMpLHRoaXMuc2Vzc2lvbi5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2VTY3JvbGxUb3AiLHRoaXMuJG9uU2Nyb2xsVG9wQ2hhbmdlKSx0aGlzLiRvblNjcm9sbExlZnRDaGFuZ2U9dGhpcy5vblNjcm9sbExlZnRDaGFuZ2UuYmluZCh0aGlzKSx0aGlzLnNlc3Npb24uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlU2Nyb2xsTGVmdCIsdGhpcy4kb25TY3JvbGxMZWZ0Q2hhbmdlKSx0aGlzLnNlbGVjdGlvbj1lLmdldFNlbGVjdGlvbigpLHRoaXMuc2VsZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZUN1cnNvciIsdGhpcy4kb25DdXJzb3JDaGFuZ2UpLHRoaXMuJG9uU2VsZWN0aW9uQ2hhbmdlPXRoaXMub25TZWxlY3Rpb25DaGFuZ2UuYmluZCh0aGlzKSx0aGlzLnNlbGVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2VTZWxlY3Rpb24iLHRoaXMuJG9uU2VsZWN0aW9uQ2hhbmdlKSx0aGlzLm9uQ2hhbmdlTW9kZSgpLHRoaXMuJGJsb2NrU2Nyb2xsaW5nKz0xLHRoaXMub25DdXJzb3JDaGFuZ2UoKSx0aGlzLiRibG9ja1Njcm9sbGluZy09MSx0aGlzLm9uU2Nyb2xsVG9wQ2hhbmdlKCksdGhpcy5vblNjcm9sbExlZnRDaGFuZ2UoKSx0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5vbkNoYW5nZUZyb250TWFya2VyKCksdGhpcy5vbkNoYW5nZUJhY2tNYXJrZXIoKSx0aGlzLm9uQ2hhbmdlQnJlYWtwb2ludCgpLHRoaXMub25DaGFuZ2VBbm5vdGF0aW9uKCksdGhpcy5zZXNzaW9uLmdldFVzZVdyYXBNb2RlKCkmJnRoaXMucmVuZGVyZXIuYWRqdXN0V3JhcExpbWl0KCksdGhpcy5yZW5kZXJlci51cGRhdGVGdWxsKCksdGhpcy5fZW1pdCgiY2hhbmdlU2Vzc2lvbiIse3Nlc3Npb246ZSxvbGRTZXNzaW9uOnR9KX0sdGhpcy5nZXRTZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vzc2lvbn0sdGhpcy5zZXRWYWx1ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnNlc3Npb24uZG9jLnNldFZhbHVlKGUpLHQ/dD09MT90aGlzLm5hdmlnYXRlRmlsZUVuZCgpOnQ9PS0xJiZ0aGlzLm5hdmlnYXRlRmlsZVN0YXJ0KCk6dGhpcy5zZWxlY3RBbGwoKSxlfSx0aGlzLmdldFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRWYWx1ZSgpfSx0aGlzLmdldFNlbGVjdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvbn0sdGhpcy5yZXNpemU9ZnVuY3Rpb24oZSl7dGhpcy5yZW5kZXJlci5vblJlc2l6ZShlKX0sdGhpcy5zZXRUaGVtZT1mdW5jdGlvbihlKXt0aGlzLnJlbmRlcmVyLnNldFRoZW1lKGUpfSx0aGlzLmdldFRoZW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyZXIuZ2V0VGhlbWUoKX0sdGhpcy5zZXRTdHlsZT1mdW5jdGlvbihlKXt0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGUpfSx0aGlzLnVuc2V0U3R5bGU9ZnVuY3Rpb24oZSl7dGhpcy5yZW5kZXJlci51bnNldFN0eWxlKGUpfSx0aGlzLnNldEZvbnRTaXplPWZ1bmN0aW9uKGUpe3RoaXMuY29udGFpbmVyLnN0eWxlLmZvbnRTaXplPWUsdGhpcy5yZW5kZXJlci51cGRhdGVGb250U2l6ZSgpfSx0aGlzLiRoaWdobGlnaHRCcmFja2V0cz1mdW5jdGlvbigpe3RoaXMuc2Vzc2lvbi4kYnJhY2tldEhpZ2hsaWdodCYmKHRoaXMuc2Vzc2lvbi5yZW1vdmVNYXJrZXIodGhpcy5zZXNzaW9uLiRicmFja2V0SGlnaGxpZ2h0KSx0aGlzLnNlc3Npb24uJGJyYWNrZXRIaWdobGlnaHQ9bnVsbCk7aWYodGhpcy4kaGlnaGxpZ2h0UGVuZGluZylyZXR1cm47dmFyIGU9dGhpczt0aGlzLiRoaWdobGlnaHRQZW5kaW5nPSEwLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLiRoaWdobGlnaHRQZW5kaW5nPSExO3ZhciB0PWUuc2Vzc2lvbi5maW5kTWF0Y2hpbmdCcmFja2V0KGUuZ2V0Q3Vyc29yUG9zaXRpb24oKSk7aWYodCl7dmFyIG49bmV3IGgodC5yb3csdC5jb2x1bW4sdC5yb3csdC5jb2x1bW4rMSk7ZS5zZXNzaW9uLiRicmFja2V0SGlnaGxpZ2h0PWUuc2Vzc2lvbi5hZGRNYXJrZXIobiwiYWNlX2JyYWNrZXQiLCJ0ZXh0Iil9fSwxMCl9LHRoaXMuZm9jdXM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtlLnRleHRJbnB1dC5mb2N1cygpfSksdGhpcy50ZXh0SW5wdXQuZm9jdXMoKX0sdGhpcy5pc0ZvY3VzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0SW5wdXQuaXNGb2N1c2VkKCl9LHRoaXMuYmx1cj1mdW5jdGlvbigpe3RoaXMudGV4dElucHV0LmJsdXIoKX0sdGhpcy5vbkZvY3VzPWZ1bmN0aW9uKCl7aWYodGhpcy4kaXNGb2N1c2VkKXJldHVybjt0aGlzLiRpc0ZvY3VzZWQ9ITAsdGhpcy5yZW5kZXJlci5zaG93Q3Vyc29yKCksdGhpcy5yZW5kZXJlci52aXN1YWxpemVGb2N1cygpLHRoaXMuX2VtaXQoImZvY3VzIil9LHRoaXMub25CbHVyPWZ1bmN0aW9uKCl7aWYoIXRoaXMuJGlzRm9jdXNlZClyZXR1cm47dGhpcy4kaXNGb2N1c2VkPSExLHRoaXMucmVuZGVyZXIuaGlkZUN1cnNvcigpLHRoaXMucmVuZGVyZXIudmlzdWFsaXplQmx1cigpLHRoaXMuX2VtaXQoImJsdXIiKX0sdGhpcy4kY3Vyc29yQ2hhbmdlPWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci51cGRhdGVDdXJzb3IoKX0sdGhpcy5vbkRvY3VtZW50Q2hhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YSxuPXQucmFuZ2UscjtuLnN0YXJ0LnJvdz09bi5lbmQucm93JiZ0LmFjdGlvbiE9Imluc2VydExpbmVzIiYmdC5hY3Rpb24hPSJyZW1vdmVMaW5lcyI/cj1uLmVuZC5yb3c6cj1JbmZpbml0eSx0aGlzLnJlbmRlcmVyLnVwZGF0ZUxpbmVzKG4uc3RhcnQucm93LHIpLHRoaXMuX2VtaXQoImNoYW5nZSIsZSksdGhpcy4kY3Vyc29yQ2hhbmdlKCl9LHRoaXMub25Ub2tlbml6ZXJVcGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhO3RoaXMucmVuZGVyZXIudXBkYXRlTGluZXModC5maXJzdCx0Lmxhc3QpfSx0aGlzLm9uU2Nyb2xsVG9wQ2hhbmdlPWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci5zY3JvbGxUb1kodGhpcy5zZXNzaW9uLmdldFNjcm9sbFRvcCgpKX0sdGhpcy5vblNjcm9sbExlZnRDaGFuZ2U9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnNjcm9sbFRvWCh0aGlzLnNlc3Npb24uZ2V0U2Nyb2xsTGVmdCgpKX0sdGhpcy5vbkN1cnNvckNoYW5nZT1mdW5jdGlvbigpe3RoaXMuJGN1cnNvckNoYW5nZSgpLHRoaXMuJGJsb2NrU2Nyb2xsaW5nfHx0aGlzLnJlbmRlcmVyLnNjcm9sbEN1cnNvckludG9WaWV3KCksdGhpcy4kaGlnaGxpZ2h0QnJhY2tldHMoKSx0aGlzLiR1cGRhdGVIaWdobGlnaHRBY3RpdmVMaW5lKCl9LHRoaXMuJHVwZGF0ZUhpZ2hsaWdodEFjdGl2ZUxpbmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldFNlc3Npb24oKTtlLiRoaWdobGlnaHRMaW5lTWFya2VyJiZlLnJlbW92ZU1hcmtlcihlLiRoaWdobGlnaHRMaW5lTWFya2VyKSxlLiRoaWdobGlnaHRMaW5lTWFya2VyPW51bGw7aWYodGhpcy4kaGlnaGxpZ2h0QWN0aXZlTGluZSl7dmFyIHQ9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbigpLG49dGhpcy5zZXNzaW9uLmdldEZvbGRMaW5lKHQucm93KTtpZih0aGlzLmdldFNlbGVjdGlvblN0eWxlKCkhPSJsaW5lInx8IXRoaXMuc2VsZWN0aW9uLmlzTXVsdGlMaW5lKCkpe3ZhciByO24/cj1uZXcgaChuLnN0YXJ0LnJvdywwLG4uZW5kLnJvdysxLDApOnI9bmV3IGgodC5yb3csMCx0LnJvdysxLDApLGUuJGhpZ2hsaWdodExpbmVNYXJrZXI9ZS5hZGRNYXJrZXIociwiYWNlX2FjdGl2ZV9saW5lIiwiYmFja2dyb3VuZCIpfX19LHRoaXMub25TZWxlY3Rpb25DaGFuZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zZXNzaW9uO3QuJHNlbGVjdGlvbk1hcmtlciYmdC5yZW1vdmVNYXJrZXIodC4kc2VsZWN0aW9uTWFya2VyKSx0LiRzZWxlY3Rpb25NYXJrZXI9bnVsbDtpZighdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpKXt2YXIgbj10aGlzLnNlbGVjdGlvbi5nZXRSYW5nZSgpLHI9dGhpcy5nZXRTZWxlY3Rpb25TdHlsZSgpO3QuJHNlbGVjdGlvbk1hcmtlcj10LmFkZE1hcmtlcihuLCJhY2Vfc2VsZWN0aW9uIixyKX1lbHNlIHRoaXMuJHVwZGF0ZUhpZ2hsaWdodEFjdGl2ZUxpbmUoKTt2YXIgaT10aGlzLiRoaWdobGlnaHRTZWxlY3RlZFdvcmQmJnRoaXMuJGdldFNlbGVjdGlvbkhpZ2hMaWdodFJlZ2V4cCgpO3RoaXMuc2Vzc2lvbi5oaWdobGlnaHQoaSl9LHRoaXMuJGdldFNlbGVjdGlvbkhpZ2hMaWdodFJlZ2V4cD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2Vzc2lvbix0PXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtpZih0LmlzRW1wdHkoKXx8dC5pc011bHRpTGluZSgpKXJldHVybjt2YXIgbj10LnN0YXJ0LmNvbHVtbi0xLHI9dC5lbmQuY29sdW1uKzEsaT1lLmdldExpbmUodC5zdGFydC5yb3cpLHM9aS5sZW5ndGgsbz1pLnN1YnN0cmluZyhNYXRoLm1heChuLDApLE1hdGgubWluKHIscykpO2lmKG4+PTAmJi9eW1x3XGRdLy50ZXN0KG8pfHxyPD1zJiYvW1x3XGRdJC8udGVzdChvKSlyZXR1cm47bz1pLnN1YnN0cmluZyh0LnN0YXJ0LmNvbHVtbix0LmVuZC5jb2x1bW4pO2lmKCEvXltcd1xkXSskLy50ZXN0KG8pKXJldHVybjt2YXIgdT10aGlzLiRzZWFyY2guJGFzc2VtYmxlUmVnRXhwKHt3aG9sZVdvcmQ6ITAsY2FzZVNlbnNpdGl2ZTohMCxuZWVkbGU6b30pO3JldHVybiB1fSx0aGlzLm9uQ2hhbmdlRnJvbnRNYXJrZXI9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnVwZGF0ZUZyb250TWFya2VycygpfSx0aGlzLm9uQ2hhbmdlQmFja01hcmtlcj1mdW5jdGlvbigpe3RoaXMucmVuZGVyZXIudXBkYXRlQmFja01hcmtlcnMoKX0sdGhpcy5vbkNoYW5nZUJyZWFrcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnVwZGF0ZUJyZWFrcG9pbnRzKCl9LHRoaXMub25DaGFuZ2VBbm5vdGF0aW9uPWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci5zZXRBbm5vdGF0aW9ucyh0aGlzLnNlc3Npb24uZ2V0QW5ub3RhdGlvbnMoKSl9LHRoaXMub25DaGFuZ2VNb2RlPWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci51cGRhdGVUZXh0KCl9LHRoaXMub25DaGFuZ2VXcmFwTGltaXQ9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnVwZGF0ZUZ1bGwoKX0sdGhpcy5vbkNoYW5nZVdyYXBNb2RlPWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci5vblJlc2l6ZSghMCl9LHRoaXMub25DaGFuZ2VGb2xkPWZ1bmN0aW9uKCl7dGhpcy4kdXBkYXRlSGlnaGxpZ2h0QWN0aXZlTGluZSgpLHRoaXMucmVuZGVyZXIudXBkYXRlRnVsbCgpfSx0aGlzLmdldENvcHlUZXh0PWZ1bmN0aW9uKCl7dmFyIGU9IiI7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKXx8KGU9dGhpcy5zZXNzaW9uLmdldFRleHRSYW5nZSh0aGlzLmdldFNlbGVjdGlvblJhbmdlKCkpKSx0aGlzLl9lbWl0KCJjb3B5IixlKSxlfSx0aGlzLm9uQ29weT1mdW5jdGlvbigpe3RoaXMuY29tbWFuZHMuZXhlYygiY29weSIsdGhpcyl9LHRoaXMub25DdXQ9ZnVuY3Rpb24oKXt0aGlzLmNvbW1hbmRzLmV4ZWMoImN1dCIsdGhpcyl9LHRoaXMub25QYXN0ZT1mdW5jdGlvbihlKXt0aGlzLl9lbWl0KCJwYXN0ZSIsZSksdGhpcy5pbnNlcnQoZSl9LHRoaXMuaW5zZXJ0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc2Vzc2lvbixuPXQuZ2V0TW9kZSgpLHI9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbigpO2lmKHRoaXMuZ2V0QmVoYXZpb3Vyc0VuYWJsZWQoKSl7dmFyIGk9bi50cmFuc2Zvcm1BY3Rpb24odC5nZXRTdGF0ZShyLnJvdyksImluc2VydGlvbiIsdGhpcyx0LGUpO2kmJihlPWkudGV4dCl9ZT1lLnJlcGxhY2UoIgkiLHRoaXMuc2Vzc2lvbi5nZXRUYWJTdHJpbmcoKSk7aWYoIXRoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKSlyPXRoaXMuc2Vzc2lvbi5yZW1vdmUodGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpKSx0aGlzLmNsZWFyU2VsZWN0aW9uKCk7ZWxzZSBpZih0aGlzLnNlc3Npb24uZ2V0T3ZlcndyaXRlKCkpe3ZhciBzPW5ldyBoLmZyb21Qb2ludHMocixyKTtzLmVuZC5jb2x1bW4rPWUubGVuZ3RoLHRoaXMuc2Vzc2lvbi5yZW1vdmUocyl9dGhpcy5jbGVhclNlbGVjdGlvbigpO3ZhciBvPXIuY29sdW1uLHU9dC5nZXRTdGF0ZShyLnJvdyksYT1uLmNoZWNrT3V0ZGVudCh1LHQuZ2V0TGluZShyLnJvdyksZSksZj10LmdldExpbmUoci5yb3cpLGw9bi5nZXROZXh0TGluZUluZGVudCh1LGYuc2xpY2UoMCxyLmNvbHVtbiksdC5nZXRUYWJTdHJpbmcoKSksYz10Lmluc2VydChyLGUpO2kmJmkuc2VsZWN0aW9uJiYoaS5zZWxlY3Rpb24ubGVuZ3RoPT0yP3RoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKG5ldyBoKHIucm93LG8raS5zZWxlY3Rpb25bMF0sci5yb3csbytpLnNlbGVjdGlvblsxXSkpOnRoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKG5ldyBoKHIucm93K2kuc2VsZWN0aW9uWzBdLGkuc2VsZWN0aW9uWzFdLHIucm93K2kuc2VsZWN0aW9uWzJdLGkuc2VsZWN0aW9uWzNdKSkpO3ZhciB1PXQuZ2V0U3RhdGUoci5yb3cpO2lmKHQuZ2V0RG9jdW1lbnQoKS5pc05ld0xpbmUoZSkpe3RoaXMubW92ZUN1cnNvclRvKHIucm93KzEsMCk7dmFyIHA9dC5nZXRUYWJTaXplKCksZD1OdW1iZXIuTUFYX1ZBTFVFO2Zvcih2YXIgdj1yLnJvdysxO3Y8PWMucm93Oysrdil7dmFyIG09MDtmPXQuZ2V0TGluZSh2KTtmb3IodmFyIGc9MDtnPGYubGVuZ3RoOysrZylpZihmLmNoYXJBdChnKT09IgkiKW0rPXA7ZWxzZXtpZihmLmNoYXJBdChnKSE9IiAiKWJyZWFrO20rPTF9L1teXHNdLy50ZXN0KGYpJiYoZD1NYXRoLm1pbihtLGQpKX1mb3IodmFyIHY9ci5yb3crMTt2PD1jLnJvdzsrK3Ype3ZhciB5PWQ7Zj10LmdldExpbmUodik7Zm9yKHZhciBnPTA7ZzxmLmxlbmd0aCYmeT4wOysrZylmLmNoYXJBdChnKT09IgkiP3ktPXA6Zi5jaGFyQXQoZyk9PSIgIiYmKHktPTEpO3QucmVtb3ZlKG5ldyBoKHYsMCx2LGcpKX10LmluZGVudFJvd3Moci5yb3crMSxjLnJvdyxsKX1hJiZuLmF1dG9PdXRkZW50KHUsdCxyLnJvdyl9LHRoaXMub25UZXh0SW5wdXQ9ZnVuY3Rpb24oZSl7dGhpcy5rZXlCaW5kaW5nLm9uVGV4dElucHV0KGUpfSx0aGlzLm9uQ29tbWFuZEtleT1mdW5jdGlvbihlLHQsbil7dGhpcy5rZXlCaW5kaW5nLm9uQ29tbWFuZEtleShlLHQsbil9LHRoaXMuc2V0T3ZlcndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMuc2Vzc2lvbi5zZXRPdmVyd3JpdGUoZSl9LHRoaXMuZ2V0T3ZlcndyaXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRPdmVyd3JpdGUoKX0sdGhpcy50b2dnbGVPdmVyd3JpdGU9ZnVuY3Rpb24oKXt0aGlzLnNlc3Npb24udG9nZ2xlT3ZlcndyaXRlKCl9LHRoaXMuc2V0U2Nyb2xsU3BlZWQ9ZnVuY3Rpb24oZSl7dGhpcy4kbW91c2VIYW5kbGVyLnNldFNjcm9sbFNwZWVkKGUpfSx0aGlzLmdldFNjcm9sbFNwZWVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJG1vdXNlSGFuZGxlci5nZXRTY3JvbGxTcGVlZCgpfSx0aGlzLnNldERyYWdEZWxheT1mdW5jdGlvbihlKXt0aGlzLiRtb3VzZUhhbmRsZXIuc2V0RHJhZ0RlbGF5KGUpfSx0aGlzLmdldERyYWdEZWxheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRtb3VzZUhhbmRsZXIuZ2V0RHJhZ0RlbGF5KCl9LHRoaXMuJHNlbGVjdGlvblN0eWxlPSJsaW5lIix0aGlzLnNldFNlbGVjdGlvblN0eWxlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuJHNlbGVjdGlvblN0eWxlPT1lKXJldHVybjt0aGlzLiRzZWxlY3Rpb25TdHlsZT1lLHRoaXMub25TZWxlY3Rpb25DaGFuZ2UoKSx0aGlzLl9lbWl0KCJjaGFuZ2VTZWxlY3Rpb25TdHlsZSIse2RhdGE6ZX0pfSx0aGlzLmdldFNlbGVjdGlvblN0eWxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHNlbGVjdGlvblN0eWxlfSx0aGlzLiRoaWdobGlnaHRBY3RpdmVMaW5lPSEwLHRoaXMuc2V0SGlnaGxpZ2h0QWN0aXZlTGluZT1mdW5jdGlvbihlKXtpZih0aGlzLiRoaWdobGlnaHRBY3RpdmVMaW5lPT1lKXJldHVybjt0aGlzLiRoaWdobGlnaHRBY3RpdmVMaW5lPWUsdGhpcy4kdXBkYXRlSGlnaGxpZ2h0QWN0aXZlTGluZSgpfSx0aGlzLmdldEhpZ2hsaWdodEFjdGl2ZUxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kaGlnaGxpZ2h0QWN0aXZlTGluZX0sdGhpcy4kaGlnaGxpZ2h0R3V0dGVyTGluZT0hMCx0aGlzLnNldEhpZ2hsaWdodEd1dHRlckxpbmU9ZnVuY3Rpb24oZSl7aWYodGhpcy4kaGlnaGxpZ2h0R3V0dGVyTGluZT09ZSlyZXR1cm47dGhpcy5yZW5kZXJlci5zZXRIaWdobGlnaHRHdXR0ZXJMaW5lKGUpLHRoaXMuJGhpZ2hsaWdodEd1dHRlckxpbmU9ZX0sdGhpcy5nZXRIaWdobGlnaHRHdXR0ZXJMaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGhpZ2hsaWdodEd1dHRlckxpbmV9LHRoaXMuJGhpZ2hsaWdodFNlbGVjdGVkV29yZD0hMCx0aGlzLnNldEhpZ2hsaWdodFNlbGVjdGVkV29yZD1mdW5jdGlvbihlKXtpZih0aGlzLiRoaWdobGlnaHRTZWxlY3RlZFdvcmQ9PWUpcmV0dXJuO3RoaXMuJGhpZ2hsaWdodFNlbGVjdGVkV29yZD1lLHRoaXMuJG9uU2VsZWN0aW9uQ2hhbmdlKCl9LHRoaXMuZ2V0SGlnaGxpZ2h0U2VsZWN0ZWRXb3JkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGhpZ2hsaWdodFNlbGVjdGVkV29yZH0sdGhpcy5zZXRBbmltYXRlZFNjcm9sbD1mdW5jdGlvbihlKXt0aGlzLnJlbmRlcmVyLnNldEFuaW1hdGVkU2Nyb2xsKGUpfSx0aGlzLmdldEFuaW1hdGVkU2Nyb2xsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyZXIuZ2V0QW5pbWF0ZWRTY3JvbGwoKX0sdGhpcy5zZXRTaG93SW52aXNpYmxlcz1mdW5jdGlvbihlKXtpZih0aGlzLmdldFNob3dJbnZpc2libGVzKCk9PWUpcmV0dXJuO3RoaXMucmVuZGVyZXIuc2V0U2hvd0ludmlzaWJsZXMoZSl9LHRoaXMuZ2V0U2hvd0ludmlzaWJsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5nZXRTaG93SW52aXNpYmxlcygpfSx0aGlzLnNldFNob3dQcmludE1hcmdpbj1mdW5jdGlvbihlKXt0aGlzLnJlbmRlcmVyLnNldFNob3dQcmludE1hcmdpbihlKX0sdGhpcy5nZXRTaG93UHJpbnRNYXJnaW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5nZXRTaG93UHJpbnRNYXJnaW4oKX0sdGhpcy5zZXRQcmludE1hcmdpbkNvbHVtbj1mdW5jdGlvbihlKXt0aGlzLnJlbmRlcmVyLnNldFByaW50TWFyZ2luQ29sdW1uKGUpfSx0aGlzLmdldFByaW50TWFyZ2luQ29sdW1uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyZXIuZ2V0UHJpbnRNYXJnaW5Db2x1bW4oKX0sdGhpcy4kcmVhZE9ubHk9ITEsdGhpcy5zZXRSZWFkT25seT1mdW5jdGlvbihlKXt0aGlzLiRyZWFkT25seT1lfSx0aGlzLmdldFJlYWRPbmx5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHJlYWRPbmx5fSx0aGlzLiRtb2RlQmVoYXZpb3Vycz0hMCx0aGlzLnNldEJlaGF2aW91cnNFbmFibGVkPWZ1bmN0aW9uKGUpe3RoaXMuJG1vZGVCZWhhdmlvdXJzPWV9LHRoaXMuZ2V0QmVoYXZpb3Vyc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kbW9kZUJlaGF2aW91cnN9LHRoaXMuc2V0U2hvd0ZvbGRXaWRnZXRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucmVuZGVyZXIuJGd1dHRlckxheWVyO2lmKHQuZ2V0U2hvd0ZvbGRXaWRnZXRzKCk9PWUpcmV0dXJuO3RoaXMucmVuZGVyZXIuJGd1dHRlckxheWVyLnNldFNob3dGb2xkV2lkZ2V0cyhlKSx0aGlzLiRzaG93Rm9sZFdpZGdldHM9ZSx0aGlzLnJlbmRlcmVyLnVwZGF0ZUZ1bGwoKX0sdGhpcy5nZXRTaG93Rm9sZFdpZGdldHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXJlci4kZ3V0dGVyTGF5ZXIuZ2V0U2hvd0ZvbGRXaWRnZXRzKCl9LHRoaXMuc2V0RmFkZUZvbGRXaWRnZXRzPWZ1bmN0aW9uKGUpe3RoaXMucmVuZGVyZXIuc2V0RmFkZUZvbGRXaWRnZXRzKGUpfSx0aGlzLmdldEZhZGVGb2xkV2lkZ2V0cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlcmVyLmdldEZhZGVGb2xkV2lkZ2V0cygpfSx0aGlzLnJlbW92ZT1mdW5jdGlvbihlKXt0aGlzLnNlbGVjdGlvbi5pc0VtcHR5KCkmJihlPT0ibGVmdCI/dGhpcy5zZWxlY3Rpb24uc2VsZWN0TGVmdCgpOnRoaXMuc2VsZWN0aW9uLnNlbGVjdFJpZ2h0KCkpO3ZhciB0PXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTtpZih0aGlzLmdldEJlaGF2aW91cnNFbmFibGVkKCkpe3ZhciBuPXRoaXMuc2Vzc2lvbixyPW4uZ2V0U3RhdGUodC5zdGFydC5yb3cpLGk9bi5nZXRNb2RlKCkudHJhbnNmb3JtQWN0aW9uKHIsImRlbGV0aW9uIix0aGlzLG4sdCk7aSYmKHQ9aSl9dGhpcy5zZXNzaW9uLnJlbW92ZSh0KSx0aGlzLmNsZWFyU2VsZWN0aW9uKCl9LHRoaXMucmVtb3ZlV29yZFJpZ2h0PWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpJiZ0aGlzLnNlbGVjdGlvbi5zZWxlY3RXb3JkUmlnaHQoKSx0aGlzLnNlc3Npb24ucmVtb3ZlKHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSksdGhpcy5jbGVhclNlbGVjdGlvbigpfSx0aGlzLnJlbW92ZVdvcmRMZWZ0PWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpJiZ0aGlzLnNlbGVjdGlvbi5zZWxlY3RXb3JkTGVmdCgpLHRoaXMuc2Vzc2lvbi5yZW1vdmUodGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpKSx0aGlzLmNsZWFyU2VsZWN0aW9uKCl9LHRoaXMucmVtb3ZlVG9MaW5lU3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGlvbi5pc0VtcHR5KCkmJnRoaXMuc2VsZWN0aW9uLnNlbGVjdExpbmVTdGFydCgpLHRoaXMuc2Vzc2lvbi5yZW1vdmUodGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpKSx0aGlzLmNsZWFyU2VsZWN0aW9uKCl9LHRoaXMucmVtb3ZlVG9MaW5lRW5kPWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpJiZ0aGlzLnNlbGVjdGlvbi5zZWxlY3RMaW5lRW5kKCk7dmFyIGU9dGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpO2Uuc3RhcnQuY29sdW1uPT1lLmVuZC5jb2x1bW4mJmUuc3RhcnQucm93PT1lLmVuZC5yb3cmJihlLmVuZC5jb2x1bW49MCxlLmVuZC5yb3crKyksdGhpcy5zZXNzaW9uLnJlbW92ZShlKSx0aGlzLmNsZWFyU2VsZWN0aW9uKCl9LHRoaXMuc3BsaXRMaW5lPWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpfHwodGhpcy5zZXNzaW9uLnJlbW92ZSh0aGlzLmdldFNlbGVjdGlvblJhbmdlKCkpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKSk7dmFyIGU9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbigpO3RoaXMuaW5zZXJ0KCJcbiIpLHRoaXMubW92ZUN1cnNvclRvUG9zaXRpb24oZSl9LHRoaXMudHJhbnNwb3NlTGV0dGVycz1mdW5jdGlvbigpe2lmKCF0aGlzLnNlbGVjdGlvbi5pc0VtcHR5KCkpcmV0dXJuO3ZhciBlPXRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oKSx0PWUuY29sdW1uO2lmKHQ9PT0wKXJldHVybjt2YXIgbj10aGlzLnNlc3Npb24uZ2V0TGluZShlLnJvdykscixpO3Q8bi5sZW5ndGg/KHI9bi5jaGFyQXQodCkrbi5jaGFyQXQodC0xKSxpPW5ldyBoKGUucm93LHQtMSxlLnJvdyx0KzEpKToocj1uLmNoYXJBdCh0LTEpK24uY2hhckF0KHQtMiksaT1uZXcgaChlLnJvdyx0LTIsZS5yb3csdCkpLHRoaXMuc2Vzc2lvbi5yZXBsYWNlKGkscil9LHRoaXMudG9Mb3dlckNhc2U9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldFNlbGVjdGlvblJhbmdlKCk7dGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpJiZ0aGlzLnNlbGVjdGlvbi5zZWxlY3RXb3JkKCk7dmFyIHQ9dGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpLG49dGhpcy5zZXNzaW9uLmdldFRleHRSYW5nZSh0KTt0aGlzLnNlc3Npb24ucmVwbGFjZSh0LG4udG9Mb3dlckNhc2UoKSksdGhpcy5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UoZSl9LHRoaXMudG9VcHBlckNhc2U9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldFNlbGVjdGlvblJhbmdlKCk7dGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpJiZ0aGlzLnNlbGVjdGlvbi5zZWxlY3RXb3JkKCk7dmFyIHQ9dGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpLG49dGhpcy5zZXNzaW9uLmdldFRleHRSYW5nZSh0KTt0aGlzLnNlc3Npb24ucmVwbGFjZSh0LG4udG9VcHBlckNhc2UoKSksdGhpcy5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UoZSl9LHRoaXMuaW5kZW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zZXNzaW9uLHQ9dGhpcy5nZXRTZWxlY3Rpb25SYW5nZSgpO2lmKCEodC5zdGFydC5yb3c8dC5lbmQucm93fHx0LnN0YXJ0LmNvbHVtbjx0LmVuZC5jb2x1bW4pKXt2YXIgcjtpZih0aGlzLnNlc3Npb24uZ2V0VXNlU29mdFRhYnMoKSl7dmFyIHM9ZS5nZXRUYWJTaXplKCksbz10aGlzLmdldEN1cnNvclBvc2l0aW9uKCksdT1lLmRvY3VtZW50VG9TY3JlZW5Db2x1bW4oby5yb3csby5jb2x1bW4pLGE9cy11JXM7cj1pLnN0cmluZ1JlcGVhdCgiICIsYSl9ZWxzZSByPSIJIjtyZXR1cm4gdGhpcy5pbnNlcnQocil9dmFyIG49dGhpcy4kZ2V0U2VsZWN0ZWRSb3dzKCk7ZS5pbmRlbnRSb3dzKG4uZmlyc3Qsbi5sYXN0LCIJIil9LHRoaXMuYmxvY2tPdXRkZW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zZXNzaW9uLmdldFNlbGVjdGlvbigpO3RoaXMuc2Vzc2lvbi5vdXRkZW50Um93cyhlLmdldFJhbmdlKCkpfSx0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2Vzc2lvbi5nZXRTdGF0ZSh0aGlzLmdldEN1cnNvclBvc2l0aW9uKCkucm93KSx0PXRoaXMuJGdldFNlbGVjdGVkUm93cygpO3RoaXMuc2Vzc2lvbi5nZXRNb2RlKCkudG9nZ2xlQ29tbWVudExpbmVzKGUsdGhpcy5zZXNzaW9uLHQuZmlyc3QsdC5sYXN0KX0sdGhpcy5yZW1vdmVMaW5lcz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuJGdldFNlbGVjdGVkUm93cygpLHQ7ZS5maXJzdD09PTB8fGUubGFzdCsxPHRoaXMuc2Vzc2lvbi5nZXRMZW5ndGgoKT90PW5ldyBoKGUuZmlyc3QsMCxlLmxhc3QrMSwwKTp0PW5ldyBoKGUuZmlyc3QtMSx0aGlzLnNlc3Npb24uZ2V0TGluZShlLmZpcnN0LTEpLmxlbmd0aCxlLmxhc3QsdGhpcy5zZXNzaW9uLmdldExpbmUoZS5sYXN0KS5sZW5ndGgpLHRoaXMuc2Vzc2lvbi5yZW1vdmUodCksdGhpcy5jbGVhclNlbGVjdGlvbigpfSx0aGlzLmR1cGxpY2F0ZVNlbGVjdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2VsZWN0aW9uLHQ9dGhpcy5zZXNzaW9uLG49ZS5nZXRSYW5nZSgpO2lmKG4uaXNFbXB0eSgpKXt2YXIgcj1uLnN0YXJ0LnJvdzt0LmR1cGxpY2F0ZUxpbmVzKHIscil9ZWxzZXt2YXIgaT1lLmlzQmFja3dhcmRzKCkscz1lLmlzQmFja3dhcmRzKCk/bi5zdGFydDpuLmVuZCxvPXQuaW5zZXJ0KHMsdC5nZXRUZXh0UmFuZ2UobiksITEpO24uc3RhcnQ9cyxuLmVuZD1vLGUuc2V0U2VsZWN0aW9uUmFuZ2UobixpKX19LHRoaXMubW92ZUxpbmVzRG93bj1mdW5jdGlvbigpe3RoaXMuJG1vdmVMaW5lcyhmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnNlc3Npb24ubW92ZUxpbmVzRG93bihlLHQpfSl9LHRoaXMubW92ZUxpbmVzVXA9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlTGluZXMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zZXNzaW9uLm1vdmVMaW5lc1VwKGUsdCl9KX0sdGhpcy5tb3ZlVGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLiRyZWFkT25seT9udWxsOnRoaXMuc2Vzc2lvbi5tb3ZlVGV4dChlLHQpfSx0aGlzLmNvcHlMaW5lc1VwPWZ1bmN0aW9uKCl7dGhpcy4kbW92ZUxpbmVzKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuc2Vzc2lvbi5kdXBsaWNhdGVMaW5lcyhlLHQpLDB9KX0sdGhpcy5jb3B5TGluZXNEb3duPWZ1bmN0aW9uKCl7dGhpcy4kbW92ZUxpbmVzKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuc2Vzc2lvbi5kdXBsaWNhdGVMaW5lcyhlLHQpfSl9LHRoaXMuJG1vdmVMaW5lcz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLiRnZXRTZWxlY3RlZFJvd3MoKSxuPXRoaXMuc2VsZWN0aW9uO2lmKCFuLmlzTXVsdGlMaW5lKCkpdmFyIHI9bi5nZXRSYW5nZSgpLGk9bi5pc0JhY2t3YXJkcygpO3ZhciBzPWUuY2FsbCh0aGlzLHQuZmlyc3QsdC5sYXN0KTtyPyhyLnN0YXJ0LnJvdys9cyxyLmVuZC5yb3crPXMsbi5zZXRTZWxlY3Rpb25SYW5nZShyLGkpKToobi5zZXRTZWxlY3Rpb25BbmNob3IodC5sYXN0K3MrMSwwKSxuLiRtb3ZlU2VsZWN0aW9uKGZ1bmN0aW9uKCl7bi5tb3ZlQ3Vyc29yVG8odC5maXJzdCtzLDApfSkpfSx0aGlzLiRnZXRTZWxlY3RlZFJvd3M9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldFNlbGVjdGlvblJhbmdlKCkuY29sbGFwc2VSb3dzKCk7cmV0dXJue2ZpcnN0OmUuc3RhcnQucm93LGxhc3Q6ZS5lbmQucm93fX0sdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQ9ZnVuY3Rpb24oZSl7dGhpcy5yZW5kZXJlci5zaG93Q29tcG9zaXRpb24odGhpcy5nZXRDdXJzb3JQb3NpdGlvbigpKX0sdGhpcy5vbkNvbXBvc2l0aW9uVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMucmVuZGVyZXIuc2V0Q29tcG9zaXRpb25UZXh0KGUpfSx0aGlzLm9uQ29tcG9zaXRpb25FbmQ9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLmhpZGVDb21wb3NpdGlvbigpfSx0aGlzLmdldEZpcnN0VmlzaWJsZVJvdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlcmVyLmdldEZpcnN0VmlzaWJsZVJvdygpfSx0aGlzLmdldExhc3RWaXNpYmxlUm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyZXIuZ2V0TGFzdFZpc2libGVSb3coKX0sdGhpcy5pc1Jvd1Zpc2libGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PXRoaXMuZ2V0Rmlyc3RWaXNpYmxlUm93KCkmJmU8PXRoaXMuZ2V0TGFzdFZpc2libGVSb3coKX0sdGhpcy5pc1Jvd0Z1bGx5VmlzaWJsZT1mdW5jdGlvbihlKXtyZXR1cm4gZT49dGhpcy5yZW5kZXJlci5nZXRGaXJzdEZ1bGx5VmlzaWJsZVJvdygpJiZlPD10aGlzLnJlbmRlcmVyLmdldExhc3RGdWxseVZpc2libGVSb3coKX0sdGhpcy4kZ2V0VmlzaWJsZVJvd0NvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyZXIuZ2V0U2Nyb2xsQm90dG9tUm93KCktdGhpcy5yZW5kZXJlci5nZXRTY3JvbGxUb3BSb3coKSsxfSx0aGlzLiRtb3ZlQnlQYWdlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yZW5kZXJlcixyPXRoaXMucmVuZGVyZXIubGF5ZXJDb25maWcsaT1lKk1hdGguZmxvb3Ioci5oZWlnaHQvci5saW5lSGVpZ2h0KTt0aGlzLiRibG9ja1Njcm9sbGluZysrLHQ9PTE/dGhpcy5zZWxlY3Rpb24uJG1vdmVTZWxlY3Rpb24oZnVuY3Rpb24oKXt0aGlzLm1vdmVDdXJzb3JCeShpLDApfSk6dD09MCYmKHRoaXMuc2VsZWN0aW9uLm1vdmVDdXJzb3JCeShpLDApLHRoaXMuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCkpLHRoaXMuJGJsb2NrU2Nyb2xsaW5nLS07dmFyIHM9bi5zY3JvbGxUb3A7bi5zY3JvbGxCeSgwLGkqci5saW5lSGVpZ2h0KSx0IT1udWxsJiZuLnNjcm9sbEN1cnNvckludG9WaWV3KG51bGwsLjUpLG4uYW5pbWF0ZVNjcm9sbGluZyhzKX0sdGhpcy5zZWxlY3RQYWdlRG93bj1mdW5jdGlvbigpe3RoaXMuJG1vdmVCeVBhZ2UoMSwhMCl9LHRoaXMuc2VsZWN0UGFnZVVwPWZ1bmN0aW9uKCl7dGhpcy4kbW92ZUJ5UGFnZSgtMSwhMCl9LHRoaXMuZ290b1BhZ2VEb3duPWZ1bmN0aW9uKCl7dGhpcy4kbW92ZUJ5UGFnZSgxLCExKX0sdGhpcy5nb3RvUGFnZVVwPWZ1bmN0aW9uKCl7dGhpcy4kbW92ZUJ5UGFnZSgtMSwhMSl9LHRoaXMuc2Nyb2xsUGFnZURvd249ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlQnlQYWdlKDEpfSx0aGlzLnNjcm9sbFBhZ2VVcD1mdW5jdGlvbigpe3RoaXMuJG1vdmVCeVBhZ2UoLTEpfSx0aGlzLnNjcm9sbFRvUm93PWZ1bmN0aW9uKGUpe3RoaXMucmVuZGVyZXIuc2Nyb2xsVG9Sb3coZSl9LHRoaXMuc2Nyb2xsVG9MaW5lPWZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMucmVuZGVyZXIuc2Nyb2xsVG9MaW5lKGUsdCxuLHIpfSx0aGlzLmNlbnRlclNlbGVjdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSx0PXtyb3c6TWF0aC5mbG9vcihlLnN0YXJ0LnJvdysoZS5lbmQucm93LWUuc3RhcnQucm93KS8yKSxjb2x1bW46TWF0aC5mbG9vcihlLnN0YXJ0LmNvbHVtbisoZS5lbmQuY29sdW1uLWUuc3RhcnQuY29sdW1uKS8yKX07dGhpcy5yZW5kZXJlci5hbGlnbkN1cnNvcih0LC41KX0sdGhpcy5nZXRDdXJzb3JQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5nZXRDdXJzb3IoKX0sdGhpcy5nZXRDdXJzb3JQb3NpdGlvblNjcmVlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlc3Npb24uZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKHRoaXMuZ2V0Q3Vyc29yUG9zaXRpb24oKSl9LHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb24uZ2V0UmFuZ2UoKX0sdGhpcy5zZWxlY3RBbGw9ZnVuY3Rpb24oKXt0aGlzLiRibG9ja1Njcm9sbGluZys9MSx0aGlzLnNlbGVjdGlvbi5zZWxlY3RBbGwoKSx0aGlzLiRibG9ja1Njcm9sbGluZy09MX0sdGhpcy5jbGVhclNlbGVjdGlvbj1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCl9LHRoaXMubW92ZUN1cnNvclRvPWZ1bmN0aW9uKGUsdCl7dGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvclRvKGUsdCl9LHRoaXMubW92ZUN1cnNvclRvUG9zaXRpb249ZnVuY3Rpb24oZSl7dGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvclRvUG9zaXRpb24oZSl9LHRoaXMuanVtcFRvTWF0Y2hpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRDdXJzb3JQb3NpdGlvbigpLG49dGhpcy5zZXNzaW9uLmdldEJyYWNrZXRSYW5nZSh0KTtpZighbil7bj10aGlzLmZpbmQoe25lZWRsZTovW3t9KClcW1xdXS9nLHByZXZlbnRTY3JvbGw6ITAsc3RhcnQ6e3Jvdzp0LnJvdyxjb2x1bW46dC5jb2x1bW4tMX19KTtpZighbilyZXR1cm47dmFyIHI9bi5zdGFydDtyLnJvdz09dC5yb3cmJk1hdGguYWJzKHIuY29sdW1uLXQuY29sdW1uKTwyJiYobj10aGlzLnNlc3Npb24uZ2V0QnJhY2tldFJhbmdlKHIpKX1yPW4mJm4uY3Vyc29yfHxyLHImJihlP24mJm4uaXNFcXVhbCh0aGlzLmdldFNlbGVjdGlvblJhbmdlKCkpP3RoaXMuY2xlYXJTZWxlY3Rpb24oKTp0aGlzLnNlbGVjdGlvbi5zZWxlY3RUbyhyLnJvdyxyLmNvbHVtbik6KHRoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLm1vdmVDdXJzb3JUbyhyLnJvdyxyLmNvbHVtbikpKX0sdGhpcy5nb3RvTGluZT1mdW5jdGlvbihlLHQsbil7dGhpcy5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSx0aGlzLnNlc3Npb24udW5mb2xkKHtyb3c6ZS0xLGNvbHVtbjp0fHwwfSksdGhpcy4kYmxvY2tTY3JvbGxpbmcrPTEsdGhpcy5tb3ZlQ3Vyc29yVG8oZS0xLHR8fDApLHRoaXMuJGJsb2NrU2Nyb2xsaW5nLT0xLHRoaXMuaXNSb3dGdWxseVZpc2libGUoZS0xKXx8dGhpcy5zY3JvbGxUb0xpbmUoZS0xLCEwLG4pfSx0aGlzLm5hdmlnYXRlVG89ZnVuY3Rpb24oZSx0KXt0aGlzLmNsZWFyU2VsZWN0aW9uKCksdGhpcy5tb3ZlQ3Vyc29yVG8oZSx0KX0sdGhpcy5uYXZpZ2F0ZVVwPWZ1bmN0aW9uKGUpe3RoaXMuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCksZT1lfHwxLHRoaXMuc2VsZWN0aW9uLm1vdmVDdXJzb3JCeSgtZSwwKX0sdGhpcy5uYXZpZ2F0ZURvd249ZnVuY3Rpb24oZSl7dGhpcy5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxlPWV8fDEsdGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvckJ5KGUsMCl9LHRoaXMubmF2aWdhdGVMZWZ0PWZ1bmN0aW9uKGUpe2lmKCF0aGlzLnNlbGVjdGlvbi5pc0VtcHR5KCkpe3ZhciB0PXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKS5zdGFydDt0aGlzLm1vdmVDdXJzb3JUb1Bvc2l0aW9uKHQpfWVsc2V7ZT1lfHwxO3doaWxlKGUtLSl0aGlzLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yTGVmdCgpfXRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdGhpcy5uYXZpZ2F0ZVJpZ2h0PWZ1bmN0aW9uKGUpe2lmKCF0aGlzLnNlbGVjdGlvbi5pc0VtcHR5KCkpe3ZhciB0PXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKS5lbmQ7dGhpcy5tb3ZlQ3Vyc29yVG9Qb3NpdGlvbih0KX1lbHNle2U9ZXx8MTt3aGlsZShlLS0pdGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvclJpZ2h0KCl9dGhpcy5jbGVhclNlbGVjdGlvbigpfSx0aGlzLm5hdmlnYXRlTGluZVN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvckxpbmVTdGFydCgpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdGhpcy5uYXZpZ2F0ZUxpbmVFbmQ9ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yTGluZUVuZCgpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdGhpcy5uYXZpZ2F0ZUZpbGVFbmQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlbmRlcmVyLnNjcm9sbFRvcDt0aGlzLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yRmlsZUVuZCgpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLnJlbmRlcmVyLmFuaW1hdGVTY3JvbGxpbmcoZSl9LHRoaXMubmF2aWdhdGVGaWxlU3RhcnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlbmRlcmVyLnNjcm9sbFRvcDt0aGlzLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yRmlsZVN0YXJ0KCksdGhpcy5jbGVhclNlbGVjdGlvbigpLHRoaXMucmVuZGVyZXIuYW5pbWF0ZVNjcm9sbGluZyhlKX0sdGhpcy5uYXZpZ2F0ZVdvcmRSaWdodD1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLm1vdmVDdXJzb3JXb3JkUmlnaHQoKSx0aGlzLmNsZWFyU2VsZWN0aW9uKCl9LHRoaXMubmF2aWdhdGVXb3JkTGVmdD1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLm1vdmVDdXJzb3JXb3JkTGVmdCgpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdGhpcy5yZXBsYWNlPWZ1bmN0aW9uKGUsdCl7dCYmdGhpcy4kc2VhcmNoLnNldCh0KTt2YXIgbj10aGlzLiRzZWFyY2guZmluZCh0aGlzLnNlc3Npb24pLHI9MDtyZXR1cm4gbj8odGhpcy4kdHJ5UmVwbGFjZShuLGUpJiYocj0xKSxuIT09bnVsbCYmKHRoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKG4pLHRoaXMucmVuZGVyZXIuc2Nyb2xsU2VsZWN0aW9uSW50b1ZpZXcobi5zdGFydCxuLmVuZCkpLHIpOnJ9LHRoaXMucmVwbGFjZUFsbD1mdW5jdGlvbihlLHQpe3QmJnRoaXMuJHNlYXJjaC5zZXQodCk7dmFyIG49dGhpcy4kc2VhcmNoLmZpbmRBbGwodGhpcy5zZXNzaW9uKSxyPTA7aWYoIW4ubGVuZ3RoKXJldHVybiByO3RoaXMuJGJsb2NrU2Nyb2xsaW5nKz0xO3ZhciBpPXRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2UoKTt0aGlzLmNsZWFyU2VsZWN0aW9uKCksdGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvclRvKDAsMCk7Zm9yKHZhciBzPW4ubGVuZ3RoLTE7cz49MDstLXMpdGhpcy4kdHJ5UmVwbGFjZShuW3NdLGUpJiZyKys7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGkpLHRoaXMuJGJsb2NrU2Nyb2xsaW5nLT0xLHJ9LHRoaXMuJHRyeVJlcGxhY2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnNlc3Npb24uZ2V0VGV4dFJhbmdlKGUpO3JldHVybiB0PXRoaXMuJHNlYXJjaC5yZXBsYWNlKG4sdCksdCE9PW51bGw/KGUuZW5kPXRoaXMuc2Vzc2lvbi5yZXBsYWNlKGUsdCksZSk6bnVsbH0sdGhpcy5nZXRMYXN0U2VhcmNoT3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRzZWFyY2guZ2V0T3B0aW9ucygpfSx0aGlzLmZpbmQ9ZnVuY3Rpb24oZSx0LG4pe3R8fCh0PXt9KSx0eXBlb2YgZT09InN0cmluZyJ8fGUgaW5zdGFuY2VvZiBSZWdFeHA/dC5uZWVkbGU9ZTp0eXBlb2YgZT09Im9iamVjdCImJnIubWl4aW4odCxlKTt2YXIgaT10aGlzLnNlbGVjdGlvbi5nZXRSYW5nZSgpO3QubmVlZGxlPT1udWxsJiYoZT10aGlzLnNlc3Npb24uZ2V0VGV4dFJhbmdlKGkpfHx0aGlzLiRzZWFyY2guJG9wdGlvbnMubmVlZGxlLGV8fChpPXRoaXMuc2Vzc2lvbi5nZXRXb3JkUmFuZ2UoaS5zdGFydC5yb3csaS5zdGFydC5jb2x1bW4pLGU9dGhpcy5zZXNzaW9uLmdldFRleHRSYW5nZShpKSksdGhpcy4kc2VhcmNoLnNldCh7bmVlZGxlOmV9KSksdGhpcy4kc2VhcmNoLnNldCh0KSx0LnN0YXJ0fHx0aGlzLiRzZWFyY2guc2V0KHtzdGFydDppfSk7dmFyIHM9dGhpcy4kc2VhcmNoLmZpbmQodGhpcy5zZXNzaW9uKTtpZih0LnByZXZlbnRTY3JvbGwpcmV0dXJuIHM7aWYocylyZXR1cm4gdGhpcy5yZXZlYWxSYW5nZShzLG4pLHM7dC5iYWNrd2FyZHM/aS5zdGFydD1pLmVuZDppLmVuZD1pLnN0YXJ0LHRoaXMuc2VsZWN0aW9uLnNldFJhbmdlKGkpfSx0aGlzLmZpbmROZXh0PWZ1bmN0aW9uKGUsdCl7dGhpcy5maW5kKHtza2lwQ3VycmVudDohMCxiYWNrd2FyZHM6ITF9LGUsdCl9LHRoaXMuZmluZFByZXZpb3VzPWZ1bmN0aW9uKGUsdCl7dGhpcy5maW5kKGUse3NraXBDdXJyZW50OiEwLGJhY2t3YXJkczohMH0sdCl9LHRoaXMucmV2ZWFsUmFuZ2U9ZnVuY3Rpb24oZSx0KXt0aGlzLiRibG9ja1Njcm9sbGluZys9MSx0aGlzLnNlc3Npb24udW5mb2xkKGUpLHRoaXMuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGUpLHRoaXMuJGJsb2NrU2Nyb2xsaW5nLT0xO3ZhciBuPXRoaXMucmVuZGVyZXIuc2Nyb2xsVG9wO3RoaXMucmVuZGVyZXIuc2Nyb2xsU2VsZWN0aW9uSW50b1ZpZXcoZS5zdGFydCxlLmVuZCwuNSksdCE9MCYmdGhpcy5yZW5kZXJlci5hbmltYXRlU2Nyb2xsaW5nKG4pfSx0aGlzLnVuZG89ZnVuY3Rpb24oKXt0aGlzLiRibG9ja1Njcm9sbGluZysrLHRoaXMuc2Vzc2lvbi5nZXRVbmRvTWFuYWdlcigpLnVuZG8oKSx0aGlzLiRibG9ja1Njcm9sbGluZy0tLHRoaXMucmVuZGVyZXIuc2Nyb2xsQ3Vyc29ySW50b1ZpZXcobnVsbCwuNSl9LHRoaXMucmVkbz1mdW5jdGlvbigpe3RoaXMuJGJsb2NrU2Nyb2xsaW5nKyssdGhpcy5zZXNzaW9uLmdldFVuZG9NYW5hZ2VyKCkucmVkbygpLHRoaXMuJGJsb2NrU2Nyb2xsaW5nLS0sdGhpcy5yZW5kZXJlci5zY3JvbGxDdXJzb3JJbnRvVmlldyhudWxsLC41KX0sdGhpcy5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci5kZXN0cm95KCl9fSkuY2FsbChtLnByb3RvdHlwZSksdC5FZGl0b3I9bX0pLGRlZmluZSgiYWNlL2xpYi9sYW5nIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3Quc3RyaW5nUmV2ZXJzZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpfSx0LnN0cmluZ1JlcGVhdD1mdW5jdGlvbihlLHQpe3JldHVybihuZXcgQXJyYXkodCsxKSkuam9pbihlKX07dmFyIHI9L15cc1xzKi8saT0vXHNccyokLzt0LnN0cmluZ1RyaW1MZWZ0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UociwiIil9LHQuc3RyaW5nVHJpbVJpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoaSwiIil9LHQuY29weU9iamVjdD1mdW5jdGlvbihlKXt2YXIgdD17fTtmb3IodmFyIG4gaW4gZSl0W25dPWVbbl07cmV0dXJuIHR9LHQuY29weUFycmF5PWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyllW25dJiZ0eXBlb2YgZVtuXT09Im9iamVjdCI/dFtuXT10aGlzLmNvcHlPYmplY3QoZVtuXSk6dFtuXT1lW25dO3JldHVybiB0fSx0LmRlZXBDb3B5PWZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBlIT0ib2JqZWN0IilyZXR1cm4gZTt2YXIgdD1lLmNvbnN0cnVjdG9yKCk7Zm9yKHZhciBuIGluIGUpdHlwZW9mIGVbbl09PSJvYmplY3QiP3Rbbl09dGhpcy5kZWVwQ29weShlW25dKTp0W25dPWVbbl07cmV0dXJuIHR9LHQuYXJyYXlUb01hcD1mdW5jdGlvbihlKXt2YXIgdD17fTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0W2Vbbl1dPTE7cmV0dXJuIHR9LHQuYXJyYXlSZW1vdmU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPD1lLmxlbmd0aDtuKyspdD09PWVbbl0mJmUuc3BsaWNlKG4sMSl9LHQuZXNjYXBlUmVnRXhwPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbLiorP14ke30oKXxbXF1cL1xcXSkvZywiXFwkMSIpfSx0LmdldE1hdGNoT2Zmc2V0cz1mdW5jdGlvbihlLHQpe3ZhciBuPVtdO3JldHVybiBlLnJlcGxhY2UodCxmdW5jdGlvbihlKXtuLnB1c2goe29mZnNldDphcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0yXSxsZW5ndGg6ZS5sZW5ndGh9KX0pLG59LHQuZGVmZXJyZWRDYWxsPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGwsbj1mdW5jdGlvbigpe3Q9bnVsbCxlKCl9LHI9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY2FuY2VsKCksdD1zZXRUaW1lb3V0KG4sZXx8MCkscn07cmV0dXJuIHIuc2NoZWR1bGU9cixyLmNhbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW5jZWwoKSxlKCkscn0sci5jYW5jZWw9ZnVuY3Rpb24oKXtyZXR1cm4gY2xlYXJUaW1lb3V0KHQpLHQ9bnVsbCxyfSxyfX0pLGRlZmluZSgiYWNlL2tleWJvYXJkL3RleHRpbnB1dCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZXZlbnQiLCJhY2UvbGliL3VzZXJhZ2VudCIsImFjZS9saWIvZG9tIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9ldmVudCIpLGk9ZSgiLi4vbGliL3VzZXJhZ2VudCIpLHM9ZSgiLi4vbGliL2RvbSIpLG89ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBjKGUpe3RyeXtlPyhuLnZhbHVlPW8sbi5zZWxlY3Rpb25TdGFydD0wLG4uc2VsZWN0aW9uRW5kPTEpOm4uc2VsZWN0KCl9Y2F0Y2godCl7fX1mdW5jdGlvbiBoKGUpe2lmKCFhKXt2YXIgcj1lfHxuLnZhbHVlO3ImJihyLmxlbmd0aD4xJiYoci5jaGFyQXQoMCk9PW8/cj1yLnN1YnN0cigxKTpyLmNoYXJBdChyLmxlbmd0aC0xKT09byYmKHI9ci5zbGljZSgwLC0xKSkpLHImJnIhPW8mJihmP3Qub25QYXN0ZShyKTp0Lm9uVGV4dElucHV0KHIpKSl9YT0hMSxmPSExLGMoITApfWZ1bmN0aW9uIHcoKXtyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PW59ZnVuY3Rpb24gRSgpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtsJiYobi5zdHlsZS5jc3NUZXh0PWwsbD0iIiksaCgpLHQucmVuZGVyZXIuJGtlZXBUZXh0QXJlYUF0Q3Vyc29yPT1udWxsJiYodC5yZW5kZXJlci4ka2VlcFRleHRBcmVhQXRDdXJzb3I9ITAsdC5yZW5kZXJlci4kbW92ZVRleHRBcmVhVG9DdXJzb3IoKSl9LDApfXZhciBuPXMuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtpLmlzVG91Y2hQYWQmJm4uc2V0QXR0cmlidXRlKCJ4LXBhbG0tZGlzYWJsZS1hdXRvLWNhcCIsITApLG4uc2V0QXR0cmlidXRlKCJ3cmFwIiwib2ZmIiksbi5zdHlsZS50b3A9Ii0yZW0iLGUuaW5zZXJ0QmVmb3JlKG4sZS5maXJzdENoaWxkKTt2YXIgbz1pLmlzSUU/IgEiOiIBIjtoKCk7dmFyIHU9ITEsYT0hMSxmPSExLGw9IiIscD1mdW5jdGlvbihlKXt1fHxoKGUuZGF0YSksc2V0VGltZW91dChmdW5jdGlvbigpe3V8fGMoITApfSwwKX0sZD1mdW5jdGlvbihlKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dXx8aCgpfSwwKX0sdj1mdW5jdGlvbihlKXt1PSEwLHQub25Db21wb3NpdGlvblN0YXJ0KCksc2V0VGltZW91dChtLDApfSxtPWZ1bmN0aW9uKCl7aWYoIXUpcmV0dXJuO3Qub25Db21wb3NpdGlvblVwZGF0ZShuLnZhbHVlKX0sZz1mdW5jdGlvbihlKXt1PSExLHQub25Db21wb3NpdGlvbkVuZCgpfSx5PWZ1bmN0aW9uKGUpe2E9ITA7dmFyIHI9dC5nZXRDb3B5VGV4dCgpO3I/bi52YWx1ZT1yOmUucHJldmVudERlZmF1bHQoKSxjKCksc2V0VGltZW91dChmdW5jdGlvbigpe2goKX0sMCl9LGI9ZnVuY3Rpb24oZSl7YT0hMDt2YXIgcj10LmdldENvcHlUZXh0KCk7cj8obi52YWx1ZT1yLHQub25DdXQoKSk6ZS5wcmV2ZW50RGVmYXVsdCgpLGMoKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aCgpfSwwKX07ci5hZGRDb21tYW5kS2V5TGlzdGVuZXIobix0Lm9uQ29tbWFuZEtleS5iaW5kKHQpKSxyLmFkZExpc3RlbmVyKG4sImlucHV0IixpLmlzSUU/ZDpwKSxyLmFkZExpc3RlbmVyKG4sInBhc3RlIixmdW5jdGlvbihlKXtmPSEwLGUuY2xpcGJvYXJkRGF0YSYmZS5jbGlwYm9hcmREYXRhLmdldERhdGE/KGgoZS5jbGlwYm9hcmREYXRhLmdldERhdGEoInRleHQvcGxhaW4iKSksZS5wcmV2ZW50RGVmYXVsdCgpKTpkKCl9KSwib25iZWZvcmVjb3B5ImluIG4mJnR5cGVvZiBjbGlwYm9hcmREYXRhIT0idW5kZWZpbmVkIj8oci5hZGRMaXN0ZW5lcihuLCJiZWZvcmVjb3B5IixmdW5jdGlvbihlKXtpZihsKXJldHVybjt2YXIgbj10LmdldENvcHlUZXh0KCk7bj9jbGlwYm9hcmREYXRhLnNldERhdGEoIlRleHQiLG4pOmUucHJldmVudERlZmF1bHQoKX0pLHIuYWRkTGlzdGVuZXIoZSwia2V5ZG93biIsZnVuY3Rpb24oZSl7aWYoZS5jdHJsS2V5JiZlLmtleUNvZGU9PTg4KXt2YXIgbj10LmdldENvcHlUZXh0KCk7biYmKGNsaXBib2FyZERhdGEuc2V0RGF0YSgiVGV4dCIsbiksdC5vbkN1dCgpKSxyLnByZXZlbnREZWZhdWx0KGUpfX0pLHIuYWRkTGlzdGVuZXIobiwiY3V0IixiKSk6aS5pc09wZXJhP3IuYWRkTGlzdGVuZXIoZSwia2V5ZG93biIsZnVuY3Rpb24oZSl7aWYoaS5pc01hYyYmIWUubWV0YUtleXx8IWUuY3RybEtleSlyZXR1cm47aWYoZS5rZXlDb2RlPT04OHx8ZS5rZXlDb2RlPT02Nyl7dmFyIHI9dC5nZXRDb3B5VGV4dCgpO3ImJihuLnZhbHVlPXIsbi5zZWxlY3QoKSxlLmtleUNvZGU9PTg4JiZ0Lm9uQ3V0KCkpfX0pOihyLmFkZExpc3RlbmVyKG4sImNvcHkiLHkpLHIuYWRkTGlzdGVuZXIobiwiY3V0IixiKSksci5hZGRMaXN0ZW5lcihuLCJjb21wb3NpdGlvbnN0YXJ0Iix2KSxpLmlzR2Vja28mJnIuYWRkTGlzdGVuZXIobiwidGV4dCIsbSksaS5pc1dlYktpdCYmci5hZGRMaXN0ZW5lcihuLCJrZXl1cCIsbSksci5hZGRMaXN0ZW5lcihuLCJjb21wb3NpdGlvbmVuZCIsZyksci5hZGRMaXN0ZW5lcihuLCJibHVyIixmdW5jdGlvbigpe3Qub25CbHVyKCl9KSxyLmFkZExpc3RlbmVyKG4sImZvY3VzIixmdW5jdGlvbigpe3Qub25Gb2N1cygpLGMoKX0pLHRoaXMuZm9jdXM9ZnVuY3Rpb24oKXtjKCksbi5mb2N1cygpfSx0aGlzLmJsdXI9ZnVuY3Rpb24oKXtuLmJsdXIoKX0sdGhpcy5pc0ZvY3VzZWQ9dyx0aGlzLmdldEVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sdGhpcy5vbkNvbnRleHRNZW51PWZ1bmN0aW9uKGUpe2x8fChsPW4uc3R5bGUuY3NzVGV4dCksbi5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjpmaXhlZDsgei1pbmRleDoxMDAwMDA7bGVmdDoiKyhlLmNsaWVudFgtMikrInB4OyB0b3A6IisoZS5jbGllbnRZLTIpKyJweDsiLHQuc2VsZWN0aW9uLmlzRW1wdHkoKSYmKG4udmFsdWU9IiIpO2lmKGUudHlwZSE9Im1vdXNlZG93biIpcmV0dXJuO3QucmVuZGVyZXIuJGtlZXBUZXh0QXJlYUF0Q3Vyc29yJiYodC5yZW5kZXJlci4ka2VlcFRleHRBcmVhQXRDdXJzb3I9bnVsbCksaS5pc0dlY2tvJiZpLmlzV2luJiZyLmNhcHR1cmUodC5jb250YWluZXIsZnVuY3Rpb24oZSl7bi5zdHlsZS5sZWZ0PWUuY2xpZW50WC0yKyJweCIsbi5zdHlsZS50b3A9ZS5jbGllbnRZLTIrInB4In0sRSl9LHRoaXMub25Db250ZXh0TWVudUNsb3NlPUUsaS5pc0dlY2tvfHxyLmFkZExpc3RlbmVyKG4sImNvbnRleHRtZW51IixmdW5jdGlvbihlKXt0LnRleHRJbnB1dC5vbkNvbnRleHRNZW51KGUpLEUoKX0pfTt0LlRleHRJbnB1dD1vfSksZGVmaW5lKCJhY2UvbW91c2UvbW91c2VfaGFuZGxlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZXZlbnQiLCJhY2UvbW91c2UvZGVmYXVsdF9oYW5kbGVycyIsImFjZS9tb3VzZS9kZWZhdWx0X2d1dHRlcl9oYW5kbGVyIiwiYWNlL21vdXNlL21vdXNlX2V2ZW50IiwiYWNlL21vdXNlL2RyYWdkcm9wIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9ldmVudCIpLGk9ZSgiLi9kZWZhdWx0X2hhbmRsZXJzIikuRGVmYXVsdEhhbmRsZXJzLHM9ZSgiLi9kZWZhdWx0X2d1dHRlcl9oYW5kbGVyIikuR3V0dGVySGFuZGxlcixvPWUoIi4vbW91c2VfZXZlbnQiKS5Nb3VzZUV2ZW50LHU9ZSgiLi9kcmFnZHJvcCIpLkRyYWdkcm9wSGFuZGxlcixhPWZ1bmN0aW9uKGUpe3RoaXMuZWRpdG9yPWUsbmV3IGkodGhpcyksbmV3IHModGhpcyksbmV3IHUodGhpcyksci5hZGRMaXN0ZW5lcihlLmNvbnRhaW5lciwibW91c2Vkb3duIixmdW5jdGlvbih0KXtyZXR1cm4gZS5mb2N1cygpLHIucHJldmVudERlZmF1bHQodCl9KTt2YXIgdD1lLnJlbmRlcmVyLmdldE1vdXNlRXZlbnRUYXJnZXQoKTtyLmFkZExpc3RlbmVyKHQsImNsaWNrIix0aGlzLm9uTW91c2VFdmVudC5iaW5kKHRoaXMsImNsaWNrIikpLHIuYWRkTGlzdGVuZXIodCwibW91c2Vtb3ZlIix0aGlzLm9uTW91c2VNb3ZlLmJpbmQodGhpcywibW91c2Vtb3ZlIikpLHIuYWRkTXVsdGlNb3VzZURvd25MaXN0ZW5lcih0LFszMDAsMzAwLDI1MF0sdGhpcywib25Nb3VzZUV2ZW50Iiksci5hZGRNb3VzZVdoZWVsTGlzdGVuZXIoZS5jb250YWluZXIsdGhpcy5vbk1vdXNlV2hlZWwuYmluZCh0aGlzLCJtb3VzZXdoZWVsIikpO3ZhciBuPWUucmVuZGVyZXIuJGd1dHRlcjtyLmFkZExpc3RlbmVyKG4sIm1vdXNlZG93biIsdGhpcy5vbk1vdXNlRXZlbnQuYmluZCh0aGlzLCJndXR0ZXJtb3VzZWRvd24iKSksci5hZGRMaXN0ZW5lcihuLCJjbGljayIsdGhpcy5vbk1vdXNlRXZlbnQuYmluZCh0aGlzLCJndXR0ZXJjbGljayIpKSxyLmFkZExpc3RlbmVyKG4sImRibGNsaWNrIix0aGlzLm9uTW91c2VFdmVudC5iaW5kKHRoaXMsImd1dHRlcmRibGNsaWNrIikpLHIuYWRkTGlzdGVuZXIobiwibW91c2Vtb3ZlIix0aGlzLm9uTW91c2VNb3ZlLmJpbmQodGhpcywiZ3V0dGVyIikpfTsoZnVuY3Rpb24oKXt0aGlzLiRzY3JvbGxTcGVlZD0xLHRoaXMuc2V0U2Nyb2xsU3BlZWQ9ZnVuY3Rpb24oZSl7dGhpcy4kc2Nyb2xsU3BlZWQ9ZX0sdGhpcy5nZXRTY3JvbGxTcGVlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRzY3JvbGxTcGVlZH0sdGhpcy5vbk1vdXNlRXZlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmVkaXRvci5fZW1pdChlLG5ldyBvKHQsdGhpcy5lZGl0b3IpKX0sdGhpcy4kZHJhZ0RlbGF5PTI1MCx0aGlzLnNldERyYWdEZWxheT1mdW5jdGlvbihlKXt0aGlzLiRkcmFnRGVsYXk9ZX0sdGhpcy5nZXREcmFnRGVsYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZHJhZ0RlbGF5fSx0aGlzLm9uTW91c2VNb3ZlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5lZGl0b3IuX2V2ZW50UmVnaXN0cnkmJnRoaXMuZWRpdG9yLl9ldmVudFJlZ2lzdHJ5Lm1vdXNlbW92ZTtpZighbnx8IW4ubGVuZ3RoKXJldHVybjt0aGlzLmVkaXRvci5fZW1pdChlLG5ldyBvKHQsdGhpcy5lZGl0b3IpKX0sdGhpcy5vbk1vdXNlV2hlZWw9ZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgbyh0LHRoaXMuZWRpdG9yKTtuLnNwZWVkPXRoaXMuJHNjcm9sbFNwZWVkKjIsbi53aGVlbFg9dC53aGVlbFgsbi53aGVlbFk9dC53aGVlbFksdGhpcy5lZGl0b3IuX2VtaXQoZSxuKX0sdGhpcy5zZXRTdGF0ZT1mdW5jdGlvbihlKXt0aGlzLnN0YXRlPWV9LHRoaXMuY2FwdHVyZU1vdXNlPWZ1bmN0aW9uKGUsdCl7dCYmdGhpcy5zZXRTdGF0ZSh0KSx0aGlzLng9ZS54LHRoaXMueT1lLnk7dmFyIG49dGhpcy5lZGl0b3IucmVuZGVyZXI7bi4ka2VlcFRleHRBcmVhQXRDdXJzb3ImJihuLiRrZWVwVGV4dEFyZWFBdEN1cnNvcj1udWxsKTt2YXIgaT10aGlzLHM9ZnVuY3Rpb24oZSl7aS54PWUuY2xpZW50WCxpLnk9ZS5jbGllbnRZfSxvPWZ1bmN0aW9uKGUpe2NsZWFySW50ZXJ2YWwoYSksaVtpLnN0YXRlKyJFbmQiXSYmaVtpLnN0YXRlKyJFbmQiXShlKSxpLiRjbGlja1NlbGVjdGlvbj1udWxsLG4uJGtlZXBUZXh0QXJlYUF0Q3Vyc29yPT1udWxsJiYobi4ka2VlcFRleHRBcmVhQXRDdXJzb3I9ITAsbi4kbW92ZVRleHRBcmVhVG9DdXJzb3IoKSl9LHU9ZnVuY3Rpb24oKXtpW2kuc3RhdGVdJiZpW2kuc3RhdGVdKCl9O3IuY2FwdHVyZSh0aGlzLmVkaXRvci5jb250YWluZXIscyxvKTt2YXIgYT1zZXRJbnRlcnZhbCh1LDIwKX19KS5jYWxsKGEucHJvdG90eXBlKSx0Lk1vdXNlSGFuZGxlcj1hfSksZGVmaW5lKCJhY2UvbW91c2UvZGVmYXVsdF9oYW5kbGVycyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZG9tIiwiYWNlL2xpYi91c2VyYWdlbnQiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gbyhlKXtlLiRjbGlja1NlbGVjdGlvbj1udWxsO3ZhciB0PWUuZWRpdG9yO3Quc2V0RGVmYXVsdEhhbmRsZXIoIm1vdXNlZG93biIsdGhpcy5vbk1vdXNlRG93bi5iaW5kKGUpKSx0LnNldERlZmF1bHRIYW5kbGVyKCJkYmxjbGljayIsdGhpcy5vbkRvdWJsZUNsaWNrLmJpbmQoZSkpLHQuc2V0RGVmYXVsdEhhbmRsZXIoInRyaXBsZWNsaWNrIix0aGlzLm9uVHJpcGxlQ2xpY2suYmluZChlKSksdC5zZXREZWZhdWx0SGFuZGxlcigicXVhZGNsaWNrIix0aGlzLm9uUXVhZENsaWNrLmJpbmQoZSkpLHQuc2V0RGVmYXVsdEhhbmRsZXIoIm1vdXNld2hlZWwiLHRoaXMub25TY3JvbGwuYmluZChlKSk7dmFyIG49WyJzZWxlY3QiLCJzdGFydFNlbGVjdCIsImRyYWciLCJkcmFnRW5kIiwiZHJhZ1dhaXQiLCJkcmFnV2FpdEVuZCIsInN0YXJ0RHJhZyIsImZvY3VzV2FpdCJdO24uZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPXRoaXNbdF19LHRoaXMpLGUuc2VsZWN0QnlMaW5lcz10aGlzLmV4dGVuZFNlbGVjdGlvbkJ5LmJpbmQoZSwiZ2V0TGluZVJhbmdlIiksZS5zZWxlY3RCeVdvcmRzPXRoaXMuZXh0ZW5kU2VsZWN0aW9uQnkuYmluZChlLCJnZXRXb3JkUmFuZ2UiKSxlLiRmb2N1c1dhaXRUaW1vdXQ9MjUwfWZ1bmN0aW9uIHUoZSx0LG4scil7cmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyhuLWUsMikrTWF0aC5wb3coci10LDIpKX1mdW5jdGlvbiBhKGUsdCl7aWYoZS5zdGFydC5yb3c9PWUuZW5kLnJvdyl2YXIgbj0yKnQuY29sdW1uLWUuc3RhcnQuY29sdW1uLWUuZW5kLmNvbHVtbjtlbHNlIHZhciBuPTIqdC5yb3ctZS5zdGFydC5yb3ctZS5lbmQucm93O3JldHVybiBuPDA/e2N1cnNvcjplLnN0YXJ0LGFuY2hvcjplLmVuZH06e2N1cnNvcjplLmVuZCxhbmNob3I6ZS5zdGFydH19dmFyIHI9ZSgiLi4vbGliL2RvbSIpLGk9ZSgiLi4vbGliL3VzZXJhZ2VudCIpLHM9NTsoZnVuY3Rpb24oKXt0aGlzLm9uTW91c2VEb3duPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaW5TZWxlY3Rpb24oKSxuPWUuZ2V0RG9jdW1lbnRQb3NpdGlvbigpO3RoaXMubW91c2Vkb3duRXZlbnQ9ZTt2YXIgcj10aGlzLmVkaXRvcixpPXRoaXMscz1lLmdldEJ1dHRvbigpO2lmKHMhPT0wKXt2YXIgbz1yLmdldFNlbGVjdGlvblJhbmdlKCksdT1vLmlzRW1wdHkoKTt1JiYoci5tb3ZlQ3Vyc29yVG9Qb3NpdGlvbihuKSxyLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpKSxyLnRleHRJbnB1dC5vbkNvbnRleHRNZW51KGUuZG9tRXZlbnQpO3JldHVybn1pZih0JiYhci5pc0ZvY3VzZWQoKSl7ci5mb2N1cygpO2lmKHRoaXMuJGZvY3VzV2FpdFRpbW91dCYmIXRoaXMuJGNsaWNrU2VsZWN0aW9uKXJldHVybiB0aGlzLnNldFN0YXRlKCJmb2N1c1dhaXQiKSx0aGlzLmNhcHR1cmVNb3VzZShlKSxlLnByZXZlbnREZWZhdWx0KCl9cmV0dXJuIXR8fHRoaXMuJGNsaWNrU2VsZWN0aW9ufHxlLmdldFNoaWZ0S2V5KCk/dGhpcy5zdGFydFNlbGVjdChuKTp0JiYodGhpcy5tb3VzZWRvd25FdmVudC50aW1lPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHRoaXMuc2V0U3RhdGUoImRyYWdXYWl0IikpLHRoaXMuY2FwdHVyZU1vdXNlKGUpLGUucHJldmVudERlZmF1bHQoKX0sdGhpcy5zdGFydFNlbGVjdD1mdW5jdGlvbihlKXtlPWV8fHRoaXMuZWRpdG9yLnJlbmRlcmVyLnNjcmVlblRvVGV4dENvb3JkaW5hdGVzKHRoaXMueCx0aGlzLnkpLHRoaXMubW91c2Vkb3duRXZlbnQuZ2V0U2hpZnRLZXkoKT90aGlzLmVkaXRvci5zZWxlY3Rpb24uc2VsZWN0VG9Qb3NpdGlvbihlKTp0aGlzLiRjbGlja1NlbGVjdGlvbnx8KHRoaXMuZWRpdG9yLm1vdmVDdXJzb3JUb1Bvc2l0aW9uKGUpLHRoaXMuZWRpdG9yLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpKSx0aGlzLnNldFN0YXRlKCJzZWxlY3QiKX0sdGhpcy5zZWxlY3Q9ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuZWRpdG9yLG49dC5yZW5kZXJlci5zY3JlZW5Ub1RleHRDb29yZGluYXRlcyh0aGlzLngsdGhpcy55KTtpZih0aGlzLiRjbGlja1NlbGVjdGlvbil7dmFyIHI9dGhpcy4kY2xpY2tTZWxlY3Rpb24uY29tcGFyZVBvaW50KG4pO2lmKHI9PS0xKWU9dGhpcy4kY2xpY2tTZWxlY3Rpb24uZW5kO2Vsc2UgaWYocj09MSllPXRoaXMuJGNsaWNrU2VsZWN0aW9uLnN0YXJ0O2Vsc2V7dmFyIGk9YSh0aGlzLiRjbGlja1NlbGVjdGlvbixuKTtuPWkuY3Vyc29yLGU9aS5hbmNob3J9dC5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uQW5jaG9yKGUucm93LGUuY29sdW1uKX10LnNlbGVjdGlvbi5zZWxlY3RUb1Bvc2l0aW9uKG4pLHQucmVuZGVyZXIuc2Nyb2xsQ3Vyc29ySW50b1ZpZXcoKX0sdGhpcy5leHRlbmRTZWxlY3Rpb25CeT1mdW5jdGlvbihlKXt2YXIgdCxuPXRoaXMuZWRpdG9yLHI9bi5yZW5kZXJlci5zY3JlZW5Ub1RleHRDb29yZGluYXRlcyh0aGlzLngsdGhpcy55KSxpPW4uc2VsZWN0aW9uW2VdKHIucm93LHIuY29sdW1uKTtpZih0aGlzLiRjbGlja1NlbGVjdGlvbil7dmFyIHM9dGhpcy4kY2xpY2tTZWxlY3Rpb24uY29tcGFyZVBvaW50KGkuc3RhcnQpLG89dGhpcy4kY2xpY2tTZWxlY3Rpb24uY29tcGFyZVBvaW50KGkuZW5kKTtpZihzPT0tMSYmbzw9MCl7dD10aGlzLiRjbGlja1NlbGVjdGlvbi5lbmQ7aWYoaS5lbmQucm93IT1yLnJvd3x8aS5lbmQuY29sdW1uIT1yLmNvbHVtbilyPWkuc3RhcnR9ZWxzZSBpZihvPT0xJiZzPj0wKXt0PXRoaXMuJGNsaWNrU2VsZWN0aW9uLnN0YXJ0O2lmKGkuc3RhcnQucm93IT1yLnJvd3x8aS5zdGFydC5jb2x1bW4hPXIuY29sdW1uKXI9aS5lbmR9ZWxzZSBpZihzPT0tMSYmbz09MSlyPWkuZW5kLHQ9aS5zdGFydDtlbHNle3ZhciB1PWEodGhpcy4kY2xpY2tTZWxlY3Rpb24scik7cj11LmN1cnNvcix0PXUuYW5jaG9yfW4uc2VsZWN0aW9uLnNldFNlbGVjdGlvbkFuY2hvcih0LnJvdyx0LmNvbHVtbil9bi5zZWxlY3Rpb24uc2VsZWN0VG9Qb3NpdGlvbihyKSxuLnJlbmRlcmVyLnNjcm9sbEN1cnNvckludG9WaWV3KCl9LHRoaXMuc3RhcnREcmFnPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5lZGl0b3I7dGhpcy5zZXRTdGF0ZSgiZHJhZyIpLHRoaXMuZHJhZ1JhbmdlPWUuZ2V0U2VsZWN0aW9uUmFuZ2UoKTt2YXIgdD1lLmdldFNlbGVjdGlvblN0eWxlKCk7dGhpcy5kcmFnU2VsZWN0aW9uTWFya2VyPWUuc2Vzc2lvbi5hZGRNYXJrZXIodGhpcy5kcmFnUmFuZ2UsImFjZV9zZWxlY3Rpb24iLHQpLGUuY2xlYXJTZWxlY3Rpb24oKSxyLmFkZENzc0NsYXNzKGUuY29udGFpbmVyLCJhY2VfZHJhZ2dpbmciKSx0aGlzLiRkcmFnS2V5YmluZGluZ3x8KHRoaXMuJGRyYWdLZXliaW5kaW5nPXtoYW5kbGVLZXlib2FyZDpmdW5jdGlvbihlLHQsbixyKXtpZihuPT0iZXNjIilyZXR1cm57Y29tbWFuZDp0aGlzLmNvbW1hbmR9fSxjb21tYW5kOntleGVjOmZ1bmN0aW9uKGUpe3ZhciB0PWUuJG1vdXNlSGFuZGxlcjt0LmRyYWdDdXJzb3I9bnVsbCx0LmRyYWdFbmQoKSx0LnN0YXJ0U2VsZWN0KCl9fX0pLGUua2V5QmluZGluZy5hZGRLZXlib2FyZEhhbmRsZXIodGhpcy4kZHJhZ0tleWJpbmRpbmcpfSx0aGlzLmZvY3VzV2FpdD1mdW5jdGlvbigpe3ZhciBlPXUodGhpcy5tb3VzZWRvd25FdmVudC54LHRoaXMubW91c2Vkb3duRXZlbnQueSx0aGlzLngsdGhpcy55KSx0PShuZXcgRGF0ZSkuZ2V0VGltZSgpOyhlPnN8fHQtdGhpcy5tb3VzZWRvd25FdmVudC50aW1lPnRoaXMuJGZvY3VzV2FpdFRpbW91dCkmJnRoaXMuc3RhcnRTZWxlY3QoKX0sdGhpcy5kcmFnV2FpdD1mdW5jdGlvbihlKXt2YXIgdD11KHRoaXMubW91c2Vkb3duRXZlbnQueCx0aGlzLm1vdXNlZG93bkV2ZW50LnksdGhpcy54LHRoaXMueSksbj0obmV3IERhdGUpLmdldFRpbWUoKSxyPXRoaXMuZWRpdG9yO3Q+cz90aGlzLnN0YXJ0U2VsZWN0KCk6bi10aGlzLm1vdXNlZG93bkV2ZW50LnRpbWU+ci5nZXREcmFnRGVsYXkoKSYmdGhpcy5zdGFydERyYWcoKX0sdGhpcy5kcmFnV2FpdEVuZD1mdW5jdGlvbihlKXt0aGlzLm1vdXNlZG93bkV2ZW50LmRvbUV2ZW50PWUsdGhpcy5zdGFydFNlbGVjdCgpfSx0aGlzLmRyYWc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmVkaXRvcjt0aGlzLmRyYWdDdXJzb3I9ZS5yZW5kZXJlci5zY3JlZW5Ub1RleHRDb29yZGluYXRlcyh0aGlzLngsdGhpcy55KSxlLm1vdmVDdXJzb3JUb1Bvc2l0aW9uKHRoaXMuZHJhZ0N1cnNvciksZS5yZW5kZXJlci5zY3JvbGxDdXJzb3JJbnRvVmlldygpfSx0aGlzLmRyYWdFbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5lZGl0b3Isbj10aGlzLmRyYWdDdXJzb3IsaT10aGlzLmRyYWdSYW5nZTtyLnJlbW92ZUNzc0NsYXNzKHQuY29udGFpbmVyLCJhY2VfZHJhZ2dpbmciKSx0LnNlc3Npb24ucmVtb3ZlTWFya2VyKHRoaXMuZHJhZ1NlbGVjdGlvbk1hcmtlciksdC5rZXlCaW5kaW5nLnJlbW92ZUtleWJvYXJkSGFuZGxlcih0aGlzLiRkcmFnS2V5YmluZGluZyk7aWYoIW4pcmV0dXJuO3QuY2xlYXJTZWxlY3Rpb24oKTtpZihlJiYoZS5jdHJsS2V5fHxlLmFsdEtleSkpe3ZhciBzPXQuc2Vzc2lvbixvPWk7by5lbmQ9cy5pbnNlcnQobixzLmdldFRleHRSYW5nZShpKSksby5zdGFydD1ufWVsc2V7aWYoaS5jb250YWlucyhuLnJvdyxuLmNvbHVtbikpcmV0dXJuO3ZhciBvPXQubW92ZVRleHQoaSxuKX1pZighbylyZXR1cm47dC5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2Uobyl9LHRoaXMub25Eb3VibGVDbGljaz1mdW5jdGlvbihlKXt2YXIgdD1lLmdldERvY3VtZW50UG9zaXRpb24oKSxuPXRoaXMuZWRpdG9yLHI9bi5zZXNzaW9uLGk9ci5nZXRCcmFja2V0UmFuZ2UodCk7aWYoaSl7aS5pc0VtcHR5KCkmJihpLnN0YXJ0LmNvbHVtbi0tLGkuZW5kLmNvbHVtbisrKSx0aGlzLiRjbGlja1NlbGVjdGlvbj1pLHRoaXMuc2V0U3RhdGUoInNlbGVjdCIpO3JldHVybn10aGlzLiRjbGlja1NlbGVjdGlvbj1uLnNlbGVjdGlvbi5nZXRXb3JkUmFuZ2UodC5yb3csdC5jb2x1bW4pLHRoaXMuc2V0U3RhdGUoInNlbGVjdEJ5V29yZHMiKX0sdGhpcy5vblRyaXBsZUNsaWNrPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0RG9jdW1lbnRQb3NpdGlvbigpLG49dGhpcy5lZGl0b3I7dGhpcy5zZXRTdGF0ZSgic2VsZWN0QnlMaW5lcyIpLHRoaXMuJGNsaWNrU2VsZWN0aW9uPW4uc2VsZWN0aW9uLmdldExpbmVSYW5nZSh0LnJvdyl9LHRoaXMub25RdWFkQ2xpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5lZGl0b3I7dC5zZWxlY3RBbGwoKSx0aGlzLiRjbGlja1NlbGVjdGlvbj10LmdldFNlbGVjdGlvblJhbmdlKCksdGhpcy5zZXRTdGF0ZSgibnVsbCIpfSx0aGlzLm9uU2Nyb2xsPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZWRpdG9yLG49dC5yZW5kZXJlci5pc1Njcm9sbGFibGVCeShlLndoZWVsWCplLnNwZWVkLGUud2hlZWxZKmUuc3BlZWQpO2lmKG4pdGhpcy4kcGFzc1Njcm9sbEV2ZW50PSExO2Vsc2V7aWYodGhpcy4kcGFzc1Njcm9sbEV2ZW50KXJldHVybjtpZighdGhpcy4kc2Nyb2xsU3RvcFRpbWVvdXQpe3ZhciByPXRoaXM7dGhpcy4kc2Nyb2xsU3RvcFRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3IuJHBhc3NTY3JvbGxFdmVudD0hMCxyLiRzY3JvbGxTdG9wVGltZW91dD1udWxsfSwyMDApfX1yZXR1cm4gdC5yZW5kZXJlci5zY3JvbGxCeShlLndoZWVsWCplLnNwZWVkLGUud2hlZWxZKmUuc3BlZWQpLGUucHJldmVudERlZmF1bHQoKX19KS5jYWxsKG8ucHJvdG90eXBlKSx0LkRlZmF1bHRIYW5kbGVycz1vfSksZGVmaW5lKCJhY2UvbW91c2UvZGVmYXVsdF9ndXR0ZXJfaGFuZGxlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZG9tIl0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIGkoZSl7dmFyIHQ9ZS5lZGl0b3I7ZS5lZGl0b3Iuc2V0RGVmYXVsdEhhbmRsZXIoImd1dHRlcm1vdXNlZG93biIsZnVuY3Rpb24obil7dmFyIGk9bi5kb21FdmVudC50YXJnZXQ7aWYoaS5jbGFzc05hbWUuaW5kZXhPZigiYWNlX2d1dHRlci1jZWxsIik9PS0xKXJldHVybjtpZighdC5pc0ZvY3VzZWQoKSlyZXR1cm47dmFyIHM9cGFyc2VJbnQoci5jb21wdXRlZFN0eWxlKGkpLnBhZGRpbmdMZWZ0KTtpZihuLng8cytpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQrMSlyZXR1cm47dmFyIG89bi5nZXREb2N1bWVudFBvc2l0aW9uKCkucm93LHU9dC5zZXNzaW9uLnNlbGVjdGlvbjtyZXR1cm4gbi5nZXRTaGlmdEtleSgpP3Uuc2VsZWN0VG8obywwKTplLiRjbGlja1NlbGVjdGlvbj10LnNlbGVjdGlvbi5nZXRMaW5lUmFuZ2UobyksZS5jYXB0dXJlTW91c2Uobiwic2VsZWN0QnlMaW5lcyIpLG4ucHJldmVudERlZmF1bHQoKX0pfXZhciByPWUoIi4uL2xpYi9kb20iKTt0Lkd1dHRlckhhbmRsZXI9aX0pLGRlZmluZSgiYWNlL21vdXNlL21vdXNlX2V2ZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9ldmVudCIsImFjZS9saWIvdXNlcmFnZW50Il0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9ldmVudCIpLGk9ZSgiLi4vbGliL3VzZXJhZ2VudCIpLHM9dC5Nb3VzZUV2ZW50PWZ1bmN0aW9uKGUsdCl7dGhpcy5kb21FdmVudD1lLHRoaXMuZWRpdG9yPXQsdGhpcy54PXRoaXMuY2xpZW50WD1lLmNsaWVudFgsdGhpcy55PXRoaXMuY2xpZW50WT1lLmNsaWVudFksdGhpcy4kcG9zPW51bGwsdGhpcy4kaW5TZWxlY3Rpb249bnVsbCx0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZD0hMSx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITF9OyhmdW5jdGlvbigpe3RoaXMuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7ci5zdG9wUHJvcGFnYXRpb24odGhpcy5kb21FdmVudCksdGhpcy5wcm9wYWdhdGlvblN0b3BwZWQ9ITB9LHRoaXMucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXtyLnByZXZlbnREZWZhdWx0KHRoaXMuZG9tRXZlbnQpLHRoaXMuZGVmYXVsdFByZXZlbnRlZD0hMH0sdGhpcy5zdG9wPWZ1bmN0aW9uKCl7dGhpcy5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnByZXZlbnREZWZhdWx0KCl9LHRoaXMuZ2V0RG9jdW1lbnRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRwb3M/dGhpcy4kcG9zOih0aGlzLiRwb3M9dGhpcy5lZGl0b3IucmVuZGVyZXIuc2NyZWVuVG9UZXh0Q29vcmRpbmF0ZXModGhpcy5jbGllbnRYLHRoaXMuY2xpZW50WSksdGhpcy4kcG9zKX0sdGhpcy5pblNlbGVjdGlvbj1mdW5jdGlvbigpe2lmKHRoaXMuJGluU2VsZWN0aW9uIT09bnVsbClyZXR1cm4gdGhpcy4kaW5TZWxlY3Rpb247dmFyIGU9dGhpcy5lZGl0b3I7aWYoZS5nZXRSZWFkT25seSgpKXRoaXMuJGluU2VsZWN0aW9uPSExO2Vsc2V7dmFyIHQ9ZS5nZXRTZWxlY3Rpb25SYW5nZSgpO2lmKHQuaXNFbXB0eSgpKXRoaXMuJGluU2VsZWN0aW9uPSExO2Vsc2V7dmFyIG49dGhpcy5nZXREb2N1bWVudFBvc2l0aW9uKCk7dGhpcy4kaW5TZWxlY3Rpb249dC5jb250YWlucyhuLnJvdyxuLmNvbHVtbil9fXJldHVybiB0aGlzLiRpblNlbGVjdGlvbn0sdGhpcy5nZXRCdXR0b249ZnVuY3Rpb24oKXtyZXR1cm4gci5nZXRCdXR0b24odGhpcy5kb21FdmVudCl9LHRoaXMuZ2V0U2hpZnRLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21FdmVudC5zaGlmdEtleX0sdGhpcy5nZXRBY2NlbEtleT1pLmlzTWFjP2Z1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tRXZlbnQubWV0YUtleX06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21FdmVudC5jdHJsS2V5fX0pLmNhbGwocy5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW91c2UvZHJhZ2Ryb3AiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2V2ZW50Il0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9ldmVudCIpLGk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5lZGl0b3IsbixpLHMsbyx1LGEsZixsPTAsYz10LmNvbnRhaW5lcjtyLmFkZExpc3RlbmVyKGMsImRyYWdlbnRlciIsZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZS50eXBlLGwsZS50YXJnZXQpLGwrKztpZighbil7dT10LmdldFNlbGVjdGlvblJhbmdlKCksYT10LnNlbGVjdGlvbi5pc0JhY2t3YXJkcygpO3ZhciBpPXQuZ2V0U2VsZWN0aW9uU3R5bGUoKTtuPXQuc2Vzc2lvbi5hZGRNYXJrZXIodSwiYWNlX3NlbGVjdGlvbiIsaSksdC5jbGVhclNlbGVjdGlvbigpLGNsZWFySW50ZXJ2YWwobyksbz1zZXRJbnRlcnZhbChoLDIwKX1yZXR1cm4gci5wcmV2ZW50RGVmYXVsdChlKX0pLHIuYWRkTGlzdGVuZXIoYywiZHJhZ292ZXIiLGZ1bmN0aW9uKGUpe3JldHVybiBpPWUuY2xpZW50WCxzPWUuY2xpZW50WSxyLnByZXZlbnREZWZhdWx0KGUpfSk7dmFyIGg9ZnVuY3Rpb24oKXtmPXQucmVuZGVyZXIuc2NyZWVuVG9UZXh0Q29vcmRpbmF0ZXMoaSxzKSx0Lm1vdmVDdXJzb3JUb1Bvc2l0aW9uKGYpLHQucmVuZGVyZXIuc2Nyb2xsQ3Vyc29ySW50b1ZpZXcoKX07ci5hZGRMaXN0ZW5lcihjLCJkcmFnbGVhdmUiLGZ1bmN0aW9uKGUpe2NvbnNvbGUubG9nKGUudHlwZSxsLGUudGFyZ2V0KSxsLS07aWYobD4wKXJldHVybjtyZXR1cm4gY29uc29sZS5sb2coZS50eXBlLGwsZS50YXJnZXQpLGNsZWFySW50ZXJ2YWwobyksdC5zZXNzaW9uLnJlbW92ZU1hcmtlcihuKSxuPW51bGwsdC5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UodSxhKSxyLnByZXZlbnREZWZhdWx0KGUpfSksci5hZGRMaXN0ZW5lcihjLCJkcm9wIixmdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS5sb2coZS50eXBlLGwsZS50YXJnZXQpLGw9MCxjbGVhckludGVydmFsKG8pLHQuc2Vzc2lvbi5yZW1vdmVNYXJrZXIobiksbj1udWxsLHUuZW5kPXQuc2Vzc2lvbi5pbnNlcnQoZixlLmRhdGFUcmFuc2Zlci5nZXREYXRhKCJUZXh0IikpLHUuc3RhcnQ9Zix0LmZvY3VzKCksdC5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UodSksci5wcmV2ZW50RGVmYXVsdChlKX0pfTt0LkRyYWdkcm9wSGFuZGxlcj1pfSksZGVmaW5lKCJhY2UvbW91c2UvZm9sZF9oYW5kbGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7ZS5vbigiY2xpY2siLGZ1bmN0aW9uKHQpe3ZhciBuPXQuZ2V0RG9jdW1lbnRQb3NpdGlvbigpLHI9ZS5zZXNzaW9uLGk9ci5nZXRGb2xkQXQobi5yb3csbi5jb2x1bW4sMSk7aSYmKHQuZ2V0QWNjZWxLZXkoKT9yLnJlbW92ZUZvbGQoaSk6ci5leHBhbmRGb2xkKGkpLHQuc3RvcCgpKX0pLGUub24oImd1dHRlcmNsaWNrIixmdW5jdGlvbih0KXtpZih0LmRvbUV2ZW50LnRhcmdldC5jbGFzc05hbWUuaW5kZXhPZigiYWNlX2ZvbGQtd2lkZ2V0IikhPS0xKXt2YXIgbj10LmdldERvY3VtZW50UG9zaXRpb24oKS5yb3c7ZS5zZXNzaW9uLm9uRm9sZFdpZGdldENsaWNrKG4sdC5kb21FdmVudCksdC5zdG9wKCl9fSl9dC5Gb2xkSGFuZGxlcj1yfSksZGVmaW5lKCJhY2Uva2V5Ym9hcmQva2V5YmluZGluZyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIva2V5cyIsImFjZS9saWIvZXZlbnQiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL2tleXMiKSxpPWUoIi4uL2xpYi9ldmVudCIpLHM9ZnVuY3Rpb24oZSl7dGhpcy4kZWRpdG9yPWUsdGhpcy4kZGF0YT17fSx0aGlzLiRoYW5kbGVycz1bXSx0aGlzLnNldERlZmF1bHRIYW5kbGVyKGUuY29tbWFuZHMpfTsoZnVuY3Rpb24oKXt0aGlzLnNldERlZmF1bHRIYW5kbGVyPWZ1bmN0aW9uKGUpe3RoaXMucmVtb3ZlS2V5Ym9hcmRIYW5kbGVyKHRoaXMuJGRlZmF1bHRIYW5kbGVyKSx0aGlzLiRkZWZhdWx0SGFuZGxlcj1lLHRoaXMuYWRkS2V5Ym9hcmRIYW5kbGVyKGUsMCksdGhpcy4kZGF0YT17ZWRpdG9yOnRoaXMuJGVkaXRvcn19LHRoaXMuc2V0S2V5Ym9hcmRIYW5kbGVyPWZ1bmN0aW9uKGUpe2lmKHRoaXMuJGhhbmRsZXJzW3RoaXMuJGhhbmRsZXJzLmxlbmd0aC0xXT09ZSlyZXR1cm47d2hpbGUodGhpcy4kaGFuZGxlcnNbMV0pdGhpcy5yZW1vdmVLZXlib2FyZEhhbmRsZXIodGhpcy4kaGFuZGxlcnNbMV0pO3RoaXMuYWRkS2V5Ym9hcmRIYW5kbGVyKGUsMSl9LHRoaXMuYWRkS2V5Ym9hcmRIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO3ZhciBuPXRoaXMuJGhhbmRsZXJzLmluZGV4T2YoZSk7biE9LTEmJnRoaXMuJGhhbmRsZXJzLnNwbGljZShuLDEpLHQ9PXVuZGVmaW5lZD90aGlzLiRoYW5kbGVycy5wdXNoKGUpOnRoaXMuJGhhbmRsZXJzLnNwbGljZSh0LDAsZSksbj09LTEmJmUuYXR0YWNoJiZlLmF0dGFjaCh0aGlzLiRlZGl0b3IpfSx0aGlzLnJlbW92ZUtleWJvYXJkSGFuZGxlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLiRoYW5kbGVycy5pbmRleE9mKGUpO3JldHVybiB0PT0tMT8hMToodGhpcy4kaGFuZGxlcnMuc3BsaWNlKHQsMSksZS5kZXRhY2gmJmUuZGV0YWNoKHRoaXMuJGVkaXRvciksITApfSx0aGlzLmdldEtleWJvYXJkSGFuZGxlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRoYW5kbGVyc1t0aGlzLiRoYW5kbGVycy5sZW5ndGgtMV19LHRoaXMuJGNhbGxLZXlib2FyZEhhbmRsZXJzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBzO2Zvcih2YXIgbz10aGlzLiRoYW5kbGVycy5sZW5ndGg7by0tOyl7cz10aGlzLiRoYW5kbGVyc1tvXS5oYW5kbGVLZXlib2FyZCh0aGlzLiRkYXRhLGUsdCxuLHIpO2lmKHMmJnMuY29tbWFuZClicmVha31pZighc3x8IXMuY29tbWFuZClyZXR1cm4hMTt2YXIgdT0hMSxhPXRoaXMuJGVkaXRvci5jb21tYW5kcztyZXR1cm4gcy5jb21tYW5kIT0ibnVsbCI/dT1hLmV4ZWMocy5jb21tYW5kLHRoaXMuJGVkaXRvcixzLmFyZ3Mscik6dT1zLnBhc3NFdmVudCE9MSx1JiZyJiZlIT0tMSYmaS5zdG9wRXZlbnQociksdX0sdGhpcy5vbkNvbW1hbmRLZXk9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXIua2V5Q29kZVRvU3RyaW5nKG4pO3RoaXMuJGNhbGxLZXlib2FyZEhhbmRsZXJzKHQsaSxuLGUpfSx0aGlzLm9uVGV4dElucHV0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuJGNhbGxLZXlib2FyZEhhbmRsZXJzKC0xLGUpO3R8fHRoaXMuJGVkaXRvci5jb21tYW5kcy5leGVjKCJpbnNlcnRzdHJpbmciLHRoaXMuJGVkaXRvcixlKX19KS5jYWxsKHMucHJvdG90eXBlKSx0LktleUJpbmRpbmc9c30pLGRlZmluZSgiYWNlL2VkaXRfc2Vzc2lvbiIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9jb25maWciLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9saWIvbmV0IiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIiwiYWNlL3NlbGVjdGlvbiIsImFjZS9tb2RlL3RleHQiLCJhY2UvcmFuZ2UiLCJhY2UvZG9jdW1lbnQiLCJhY2UvYmFja2dyb3VuZF90b2tlbml6ZXIiLCJhY2Uvc2VhcmNoX2hpZ2hsaWdodCIsImFjZS9lZGl0X3Nlc3Npb24vZm9sZGluZyIsImFjZS9lZGl0X3Nlc3Npb24vYnJhY2tldF9tYXRjaCJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL2NvbmZpZyIpLGk9ZSgiLi9saWIvb29wIikscz1lKCIuL2xpYi9sYW5nIiksbz1lKCIuL2xpYi9uZXQiKSx1PWUoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsYT1lKCIuL3NlbGVjdGlvbiIpLlNlbGVjdGlvbixmPWUoIi4vbW9kZS90ZXh0IikuTW9kZSxsPWUoIi4vcmFuZ2UiKS5SYW5nZSxjPWUoIi4vZG9jdW1lbnQiKS5Eb2N1bWVudCxoPWUoIi4vYmFja2dyb3VuZF90b2tlbml6ZXIiKS5CYWNrZ3JvdW5kVG9rZW5pemVyLHA9ZSgiLi9zZWFyY2hfaGlnaGxpZ2h0IikuU2VhcmNoSGlnaGxpZ2h0LGQ9ZnVuY3Rpb24oZSx0KXt0aGlzLiRtb2RpZmllZD0hMCx0aGlzLiRicmVha3BvaW50cz1bXSx0aGlzLiRmcm9udE1hcmtlcnM9e30sdGhpcy4kYmFja01hcmtlcnM9e30sdGhpcy4kbWFya2VySWQ9MSx0aGlzLiRyZXNldFJvd0NhY2hlKDApLHRoaXMuJHdyYXBEYXRhPVtdLHRoaXMuJGZvbGREYXRhPVtdLHRoaXMuJHJvd0xlbmd0aENhY2hlPVtdLHRoaXMuJHVuZG9TZWxlY3Q9ITAsdGhpcy4kZm9sZERhdGEudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0iIjtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2UrPSJcbiIrdC50b1N0cmluZygpfSksZX0sdHlwZW9mIGU9PSJvYmplY3QiJiZlLmdldExpbmU/dGhpcy5zZXREb2N1bWVudChlKTp0aGlzLnNldERvY3VtZW50KG5ldyBjKGUpKSx0aGlzLnNlbGVjdGlvbj1uZXcgYSh0aGlzKSx0aGlzLnNldE1vZGUodCl9OyhmdW5jdGlvbigpe2Z1bmN0aW9uIHkoZSl7cmV0dXJuIGU8NDM1Mj8hMTplPj00MzUyJiZlPD00NDQ3fHxlPj00NTE1JiZlPD00NTE5fHxlPj00NjAyJiZlPD00NjA3fHxlPj05MDAxJiZlPD05MDAyfHxlPj0xMTkwNCYmZTw9MTE5Mjl8fGU+PTExOTMxJiZlPD0xMjAxOXx8ZT49MTIwMzImJmU8PTEyMjQ1fHxlPj0xMjI3MiYmZTw9MTIyODN8fGU+PTEyMjg4JiZlPD0xMjM1MHx8ZT49MTIzNTMmJmU8PTEyNDM4fHxlPj0xMjQ0MSYmZTw9MTI1NDN8fGU+PTEyNTQ5JiZlPD0xMjU4OXx8ZT49MTI1OTMmJmU8PTEyNjg2fHxlPj0xMjY4OCYmZTw9MTI3MzB8fGU+PTEyNzM2JiZlPD0xMjc3MXx8ZT49MTI3ODQmJmU8PTEyODMwfHxlPj0xMjgzMiYmZTw9MTI4NzF8fGU+PTEyODgwJiZlPD0xMzA1NHx8ZT49MTMwNTYmJmU8PTE5OTAzfHxlPj0xOTk2OCYmZTw9NDIxMjR8fGU+PTQyMTI4JiZlPD00MjE4Mnx8ZT49NDMzNjAmJmU8PTQzMzg4fHxlPj00NDAzMiYmZTw9NTUyMDN8fGU+PTU1MjE2JiZlPD01NTIzOHx8ZT49NTUyNDMmJmU8PTU1MjkxfHxlPj02Mzc0NCYmZTw9NjQyNTV8fGU+PTY1MDQwJiZlPD02NTA0OXx8ZT49NjUwNzImJmU8PTY1MTA2fHxlPj02NTEwOCYmZTw9NjUxMjZ8fGU+PTY1MTI4JiZlPD02NTEzMXx8ZT49NjUyODEmJmU8PTY1Mzc2fHxlPj02NTUwNCYmZTw9NjU1MTB9aS5pbXBsZW1lbnQodGhpcyx1KSx0aGlzLnNldERvY3VtZW50PWZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9jKXRocm93IG5ldyBFcnJvcigiRG9jdW1lbnQgaXMgYWxyZWFkeSBzZXQiKTt0aGlzLmRvYz1lLGUub24oImNoYW5nZSIsdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpKSx0aGlzLm9uKCJjaGFuZ2VGb2xkIix0aGlzLm9uQ2hhbmdlRm9sZC5iaW5kKHRoaXMpKSx0aGlzLmJnVG9rZW5pemVyJiYodGhpcy5iZ1Rva2VuaXplci5zZXREb2N1bWVudCh0aGlzLmdldERvY3VtZW50KCkpLHRoaXMuYmdUb2tlbml6ZXIuc3RhcnQoMCkpfSx0aGlzLmdldERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jfSx0aGlzLiRyZXNldFJvd0NhY2hlPWZ1bmN0aW9uKGUpe2lmKCFlKXt0aGlzLiRkb2NSb3dDYWNoZT1bXSx0aGlzLiRzY3JlZW5Sb3dDYWNoZT1bXTtyZXR1cm59dmFyIHQ9dGhpcy4kZ2V0Um93Q2FjaGVJbmRleCh0aGlzLiRkb2NSb3dDYWNoZSxlKSsxLG49dGhpcy4kZG9jUm93Q2FjaGUubGVuZ3RoO3RoaXMuJGRvY1Jvd0NhY2hlLnNwbGljZSh0LG4pLHRoaXMuJHNjcmVlblJvd0NhY2hlLnNwbGljZSh0LG4pfSx0aGlzLiRnZXRSb3dDYWNoZUluZGV4PWZ1bmN0aW9uKGUsdCl7dmFyIG49MCxyPWUubGVuZ3RoLTE7d2hpbGUobjw9cil7dmFyIGk9bityPj4xLHM9ZVtpXTtpZih0PnMpbj1pKzE7ZWxzZXtpZighKHQ8cykpcmV0dXJuIGk7cj1pLTF9fXJldHVybiBuJiZuLTF9LHRoaXMub25DaGFuZ2VGb2xkPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YTt0aGlzLiRyZXNldFJvd0NhY2hlKHQuc3RhcnQucm93KX0sdGhpcy5vbkNoYW5nZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGE7dGhpcy4kbW9kaWZpZWQ9ITAsdGhpcy4kcmVzZXRSb3dDYWNoZSh0LnJhbmdlLnN0YXJ0LnJvdyk7dmFyIG49dGhpcy4kdXBkYXRlSW50ZXJuYWxEYXRhT25DaGFuZ2UoZSk7IXRoaXMuJGZyb21VbmRvJiZ0aGlzLiR1bmRvTWFuYWdlciYmIXQuaWdub3JlJiYodGhpcy4kZGVsdGFzRG9jLnB1c2godCksbiYmbi5sZW5ndGghPTAmJnRoaXMuJGRlbHRhc0ZvbGQucHVzaCh7YWN0aW9uOiJyZW1vdmVGb2xkcyIsZm9sZHM6bn0pLHRoaXMuJGluZm9ybVVuZG9NYW5hZ2VyLnNjaGVkdWxlKCkpLHRoaXMuYmdUb2tlbml6ZXIuJHVwZGF0ZU9uQ2hhbmdlKHQpLHRoaXMuX2VtaXQoImNoYW5nZSIsZSl9LHRoaXMuc2V0VmFsdWU9ZnVuY3Rpb24oZSl7dGhpcy5kb2Muc2V0VmFsdWUoZSksdGhpcy5zZWxlY3Rpb24ubW92ZUN1cnNvclRvKDAsMCksdGhpcy5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSx0aGlzLiRyZXNldFJvd0NhY2hlKDApLHRoaXMuJGRlbHRhcz1bXSx0aGlzLiRkZWx0YXNEb2M9W10sdGhpcy4kZGVsdGFzRm9sZD1bXSx0aGlzLmdldFVuZG9NYW5hZ2VyKCkucmVzZXQoKX0sdGhpcy5nZXRWYWx1ZT10aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jLmdldFZhbHVlKCl9LHRoaXMuZ2V0U2VsZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9ufSx0aGlzLmdldFN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmJnVG9rZW5pemVyLmdldFN0YXRlKGUpfSx0aGlzLmdldFRva2Vucz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5iZ1Rva2VuaXplci5nZXRUb2tlbnMoZSl9LHRoaXMuZ2V0VG9rZW5BdD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuYmdUb2tlbml6ZXIuZ2V0VG9rZW5zKGUpLHIsaT0wO2lmKHQ9PW51bGwpcz1uLmxlbmd0aC0xLGk9dGhpcy5nZXRMaW5lKGUpLmxlbmd0aDtlbHNlIGZvcih2YXIgcz0wO3M8bi5sZW5ndGg7cysrKXtpKz1uW3NdLnZhbHVlLmxlbmd0aDtpZihpPj10KWJyZWFrfXJldHVybiByPW5bc10scj8oci5pbmRleD1zLHIuc3RhcnQ9aS1yLnZhbHVlLmxlbmd0aCxyKTpudWxsfSx0aGlzLmhpZ2hsaWdodD1mdW5jdGlvbihlKXtpZighdGhpcy4kc2VhcmNoSGlnaGxpZ2h0KXt2YXIgdD1uZXcgcChudWxsLCJhY2Vfc2VsZWN0ZWRfd29yZCIsInRleHQiKTt0aGlzLiRzZWFyY2hIaWdobGlnaHQ9dGhpcy5hZGREeW5hbWljTWFya2VyKHQpfXRoaXMuJHNlYXJjaEhpZ2hsaWdodC5zZXRSZWdleHAoZSl9LHRoaXMuc2V0VW5kb01hbmFnZXI9ZnVuY3Rpb24oZSl7dGhpcy4kdW5kb01hbmFnZXI9ZSx0aGlzLiRkZWx0YXM9W10sdGhpcy4kZGVsdGFzRG9jPVtdLHRoaXMuJGRlbHRhc0ZvbGQ9W10sdGhpcy4kaW5mb3JtVW5kb01hbmFnZXImJnRoaXMuJGluZm9ybVVuZG9NYW5hZ2VyLmNhbmNlbCgpO2lmKGUpe3ZhciB0PXRoaXM7dGhpcy4kc3luY0luZm9ybVVuZG9NYW5hZ2VyPWZ1bmN0aW9uKCl7dC4kaW5mb3JtVW5kb01hbmFnZXIuY2FuY2VsKCksdC4kZGVsdGFzRm9sZC5sZW5ndGgmJih0LiRkZWx0YXMucHVzaCh7Z3JvdXA6ImZvbGQiLGRlbHRhczp0LiRkZWx0YXNGb2xkfSksdC4kZGVsdGFzRm9sZD1bXSksdC4kZGVsdGFzRG9jLmxlbmd0aCYmKHQuJGRlbHRhcy5wdXNoKHtncm91cDoiZG9jIixkZWx0YXM6dC4kZGVsdGFzRG9jfSksdC4kZGVsdGFzRG9jPVtdKSx0LiRkZWx0YXMubGVuZ3RoPjAmJmUuZXhlY3V0ZSh7YWN0aW9uOiJhY2V1cGRhdGUiLGFyZ3M6W3QuJGRlbHRhcyx0XX0pLHQuJGRlbHRhcz1bXX0sdGhpcy4kaW5mb3JtVW5kb01hbmFnZXI9cy5kZWZlcnJlZENhbGwodGhpcy4kc3luY0luZm9ybVVuZG9NYW5hZ2VyKX19LHRoaXMuJGRlZmF1bHRVbmRvTWFuYWdlcj17dW5kbzpmdW5jdGlvbigpe30scmVkbzpmdW5jdGlvbigpe30scmVzZXQ6ZnVuY3Rpb24oKXt9fSx0aGlzLmdldFVuZG9NYW5hZ2VyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHVuZG9NYW5hZ2VyfHx0aGlzLiRkZWZhdWx0VW5kb01hbmFnZXJ9LHRoaXMuZ2V0VGFiU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VXNlU29mdFRhYnMoKT9zLnN0cmluZ1JlcGVhdCgiICIsdGhpcy5nZXRUYWJTaXplKCkpOiIJIn0sdGhpcy4kdXNlU29mdFRhYnM9ITAsdGhpcy5zZXRVc2VTb2Z0VGFicz1mdW5jdGlvbihlKXtpZih0aGlzLiR1c2VTb2Z0VGFicz09PWUpcmV0dXJuO3RoaXMuJHVzZVNvZnRUYWJzPWV9LHRoaXMuZ2V0VXNlU29mdFRhYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdXNlU29mdFRhYnN9LHRoaXMuJHRhYlNpemU9NCx0aGlzLnNldFRhYlNpemU9ZnVuY3Rpb24oZSl7aWYoaXNOYU4oZSl8fHRoaXMuJHRhYlNpemU9PT1lKXJldHVybjt0aGlzLiRtb2RpZmllZD0hMCx0aGlzLiRyb3dMZW5ndGhDYWNoZT1bXSx0aGlzLiR0YWJTaXplPWUsdGhpcy5fZW1pdCgiY2hhbmdlVGFiU2l6ZSIpfSx0aGlzLmdldFRhYlNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdGFiU2l6ZX0sdGhpcy5pc1RhYlN0b3A9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuJHVzZVNvZnRUYWJzJiZlLmNvbHVtbiV0aGlzLiR0YWJTaXplPT0wfSx0aGlzLiRvdmVyd3JpdGU9ITEsdGhpcy5zZXRPdmVyd3JpdGU9ZnVuY3Rpb24oZSl7aWYodGhpcy4kb3ZlcndyaXRlPT1lKXJldHVybjt0aGlzLiRvdmVyd3JpdGU9ZSx0aGlzLl9lbWl0KCJjaGFuZ2VPdmVyd3JpdGUiKX0sdGhpcy5nZXRPdmVyd3JpdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kb3ZlcndyaXRlfSx0aGlzLnRvZ2dsZU92ZXJ3cml0ZT1mdW5jdGlvbigpe3RoaXMuc2V0T3ZlcndyaXRlKCF0aGlzLiRvdmVyd3JpdGUpfSx0aGlzLmdldEJyZWFrcG9pbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGJyZWFrcG9pbnRzfSx0aGlzLnNldEJyZWFrcG9pbnRzPWZ1bmN0aW9uKGUpe3RoaXMuJGJyZWFrcG9pbnRzPVtdO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXRoaXMuJGJyZWFrcG9pbnRzW2VbdF1dPSEwO3RoaXMuX2VtaXQoImNoYW5nZUJyZWFrcG9pbnQiLHt9KX0sdGhpcy5jbGVhckJyZWFrcG9pbnRzPWZ1bmN0aW9uKCl7dGhpcy4kYnJlYWtwb2ludHM9W10sdGhpcy5fZW1pdCgiY2hhbmdlQnJlYWtwb2ludCIse30pfSx0aGlzLnNldEJyZWFrcG9pbnQ9ZnVuY3Rpb24oZSl7dGhpcy4kYnJlYWtwb2ludHNbZV09ITAsdGhpcy5fZW1pdCgiY2hhbmdlQnJlYWtwb2ludCIse30pfSx0aGlzLmNsZWFyQnJlYWtwb2ludD1mdW5jdGlvbihlKXtkZWxldGUgdGhpcy4kYnJlYWtwb2ludHNbZV0sdGhpcy5fZW1pdCgiY2hhbmdlQnJlYWtwb2ludCIse30pfSx0aGlzLmFkZE1hcmtlcj1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLiRtYXJrZXJJZCsrLHM9e3JhbmdlOmUsdHlwZTpufHwibGluZSIscmVuZGVyZXI6dHlwZW9mIG49PSJmdW5jdGlvbiI/bjpudWxsLGNsYXp6OnQsaW5Gcm9udDohIXIsaWQ6aX07cmV0dXJuIHI/KHRoaXMuJGZyb250TWFya2Vyc1tpXT1zLHRoaXMuX2VtaXQoImNoYW5nZUZyb250TWFya2VyIikpOih0aGlzLiRiYWNrTWFya2Vyc1tpXT1zLHRoaXMuX2VtaXQoImNoYW5nZUJhY2tNYXJrZXIiKSksaX0sdGhpcy5hZGREeW5hbWljTWFya2VyPWZ1bmN0aW9uKGUsdCl7aWYoIWUudXBkYXRlKXJldHVybjt2YXIgbj10aGlzLiRtYXJrZXJJZCsrO3JldHVybiBlLmlkPW4sZS5pbkZyb250PSEhdCx0Pyh0aGlzLiRmcm9udE1hcmtlcnNbbl09ZSx0aGlzLl9lbWl0KCJjaGFuZ2VGcm9udE1hcmtlciIpKToodGhpcy4kYmFja01hcmtlcnNbbl09ZSx0aGlzLl9lbWl0KCJjaGFuZ2VCYWNrTWFya2VyIikpLGV9LHRoaXMucmVtb3ZlTWFya2VyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuJGZyb250TWFya2Vyc1tlXXx8dGhpcy4kYmFja01hcmtlcnNbZV07aWYoIXQpcmV0dXJuO3ZhciBuPXQuaW5Gcm9udD90aGlzLiRmcm9udE1hcmtlcnM6dGhpcy4kYmFja01hcmtlcnM7dCYmKGRlbGV0ZSBuW2VdLHRoaXMuX2VtaXQodC5pbkZyb250PyJjaGFuZ2VGcm9udE1hcmtlciI6ImNoYW5nZUJhY2tNYXJrZXIiKSl9LHRoaXMuZ2V0TWFya2Vycz1mdW5jdGlvbihlKXtyZXR1cm4gZT90aGlzLiRmcm9udE1hcmtlcnM6dGhpcy4kYmFja01hcmtlcnN9LHRoaXMuc2V0QW5ub3RhdGlvbnM9ZnVuY3Rpb24oZSl7dGhpcy4kYW5ub3RhdGlvbnM9e307Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspe3ZhciBuPWVbdF0scj1uLnJvdzt0aGlzLiRhbm5vdGF0aW9uc1tyXT90aGlzLiRhbm5vdGF0aW9uc1tyXS5wdXNoKG4pOnRoaXMuJGFubm90YXRpb25zW3JdPVtuXX10aGlzLl9lbWl0KCJjaGFuZ2VBbm5vdGF0aW9uIix7fSl9LHRoaXMuZ2V0QW5ub3RhdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kYW5ub3RhdGlvbnN8fHt9fSx0aGlzLmNsZWFyQW5ub3RhdGlvbnM9ZnVuY3Rpb24oKXt0aGlzLiRhbm5vdGF0aW9ucz17fSx0aGlzLl9lbWl0KCJjaGFuZ2VBbm5vdGF0aW9uIix7fSl9LHRoaXMuJGRldGVjdE5ld0xpbmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCgvXi4qPyhccj9cbikvbSk7dD90aGlzLiRhdXRvTmV3TGluZT10WzFdOnRoaXMuJGF1dG9OZXdMaW5lPSJcbiJ9LHRoaXMuZ2V0V29yZFJhbmdlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRMaW5lKGUpLHI9ITE7dD4wJiYocj0hIW4uY2hhckF0KHQtMSkubWF0Y2godGhpcy50b2tlblJlKSkscnx8KHI9ISFuLmNoYXJBdCh0KS5tYXRjaCh0aGlzLnRva2VuUmUpKTtpZihyKXZhciBpPXRoaXMudG9rZW5SZTtlbHNlIGlmKC9eXHMrJC8udGVzdChuLnNsaWNlKHQtMSx0KzEpKSl2YXIgaT0vXHMvO2Vsc2UgdmFyIGk9dGhpcy5ub25Ub2tlblJlO3ZhciBzPXQ7aWYocz4wKXtkbyBzLS07d2hpbGUocz49MCYmbi5jaGFyQXQocykubWF0Y2goaSkpO3MrK312YXIgbz10O3doaWxlKG88bi5sZW5ndGgmJm4uY2hhckF0KG8pLm1hdGNoKGkpKW8rKztyZXR1cm4gbmV3IGwoZSxzLGUsbyl9LHRoaXMuZ2V0QVdvcmRSYW5nZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0V29yZFJhbmdlKGUsdCkscj10aGlzLmdldExpbmUobi5lbmQucm93KTt3aGlsZShyLmNoYXJBdChuLmVuZC5jb2x1bW4pLm1hdGNoKC9bIFx0XS8pKW4uZW5kLmNvbHVtbis9MTtyZXR1cm4gbn0sdGhpcy5zZXROZXdMaW5lTW9kZT1mdW5jdGlvbihlKXt0aGlzLmRvYy5zZXROZXdMaW5lTW9kZShlKX0sdGhpcy5nZXROZXdMaW5lTW9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvYy5nZXROZXdMaW5lTW9kZSgpfSx0aGlzLiR1c2VXb3JrZXI9ITAsdGhpcy5zZXRVc2VXb3JrZXI9ZnVuY3Rpb24oZSl7aWYodGhpcy4kdXNlV29ya2VyPT1lKXJldHVybjt0aGlzLiR1c2VXb3JrZXI9ZSx0aGlzLiRzdG9wV29ya2VyKCksZSYmdGhpcy4kc3RhcnRXb3JrZXIoKX0sdGhpcy5nZXRVc2VXb3JrZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdXNlV29ya2VyfSx0aGlzLm9uUmVsb2FkVG9rZW5pemVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YTt0aGlzLmJnVG9rZW5pemVyLnN0YXJ0KHQuZmlyc3QpLHRoaXMuX2VtaXQoInRva2VuaXplclVwZGF0ZSIsZSl9LHRoaXMuJG1vZGVzPXt9LHRoaXMuX2xvYWRNb2RlPWZ1bmN0aW9uKHQsbil7ZnVuY3Rpb24gYShlKXtpZihpLiRtb2Rlc1t0XSlyZXR1cm4gbihpLiRtb2Rlc1t0XSk7aS4kbW9kZXNbdF09bmV3IGUuTW9kZSxpLiRtb2Rlc1t0XS4kaWQ9dCxpLl9lbWl0KCJsb2FkbW9kZSIse25hbWU6dCxtb2RlOmkuJG1vZGVzW3RdfSksbihpLiRtb2Rlc1t0XSl9ZnVuY3Rpb24gbChlLHQpe2lmKCFyLmdldCgicGFja2FnZWQiKSlyZXR1cm4gdCgpO28ubG9hZFNjcmlwdChyLm1vZHVsZVVybChlLCJtb2RlIiksdCl9dGhpcy4kbW9kZXNbIm51bGwiXXx8KHRoaXMuJG1vZGVzWyJudWxsIl09dGhpcy4kbW9kZXNbImFjZS9tb2RlL3RleHQiXT1uZXcgZik7aWYodGhpcy4kbW9kZXNbdF0pcmV0dXJuIG4odGhpcy4kbW9kZXNbdF0pO3ZhciBpPXRoaXMsczt0cnl7cz1lKHQpfWNhdGNoKHUpe31pZihzJiZzLk1vZGUpcmV0dXJuIGEocyk7dGhpcy4kbW9kZXx8dGhpcy4kc2V0TW9kZVBsYWNlaG9sZGVyKCksbCh0LGZ1bmN0aW9uKCl7ZShbdF0sYSl9KX0sdGhpcy4kc2V0TW9kZVBsYWNlaG9sZGVyPWZ1bmN0aW9uKCl7dGhpcy4kbW9kZT10aGlzLiRtb2Rlc1sibnVsbCJdO3ZhciBlPXRoaXMuJG1vZGUuZ2V0VG9rZW5pemVyKCk7aWYoIXRoaXMuYmdUb2tlbml6ZXIpe3RoaXMuYmdUb2tlbml6ZXI9bmV3IGgoZSk7dmFyIHQ9dGhpczt0aGlzLmJnVG9rZW5pemVyLmFkZEV2ZW50TGlzdGVuZXIoInVwZGF0ZSIsZnVuY3Rpb24oZSl7dC5fZW1pdCgidG9rZW5pemVyVXBkYXRlIixlKX0pfWVsc2UgdGhpcy5iZ1Rva2VuaXplci5zZXRUb2tlbml6ZXIoZSk7dGhpcy5iZ1Rva2VuaXplci5zZXREb2N1bWVudCh0aGlzLmdldERvY3VtZW50KCkpLHRoaXMudG9rZW5SZT10aGlzLiRtb2RlLnRva2VuUmUsdGhpcy5ub25Ub2tlblJlPXRoaXMuJG1vZGUubm9uVG9rZW5SZX0sdGhpcy4kbW9kZT1udWxsLHRoaXMuJG1vZGVJZD1udWxsLHRoaXMuc2V0TW9kZT1mdW5jdGlvbihlKXtlPWV8fCJudWxsIjtpZih0eXBlb2YgZT09InN0cmluZyIpe2lmKHRoaXMuJG1vZGVJZD09ZSlyZXR1cm47dGhpcy4kbW9kZUlkPWU7dmFyIHQ9dGhpczt0aGlzLl9sb2FkTW9kZShlLGZ1bmN0aW9uKG4pe2lmKHQuJG1vZGVJZCE9PWUpcmV0dXJuO3Quc2V0TW9kZShuKX0pO3JldHVybn1pZih0aGlzLiRtb2RlPT09ZSlyZXR1cm47dGhpcy4kbW9kZT1lLHRoaXMuJG1vZGVJZD1lLiRpZCx0aGlzLiRzdG9wV29ya2VyKCksdGhpcy4kdXNlV29ya2VyJiZ0aGlzLiRzdGFydFdvcmtlcigpO3ZhciBuPWUuZ2V0VG9rZW5pemVyKCk7aWYobi5hZGRFdmVudExpc3RlbmVyIT09dW5kZWZpbmVkKXt2YXIgcj10aGlzLm9uUmVsb2FkVG9rZW5pemVyLmJpbmQodGhpcyk7bi5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGUiLHIpfWlmKCF0aGlzLmJnVG9rZW5pemVyKXt0aGlzLmJnVG9rZW5pemVyPW5ldyBoKG4pO3ZhciB0PXRoaXM7dGhpcy5iZ1Rva2VuaXplci5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGUiLGZ1bmN0aW9uKGUpe3QuX2VtaXQoInRva2VuaXplclVwZGF0ZSIsZSl9KX1lbHNlIHRoaXMuYmdUb2tlbml6ZXIuc2V0VG9rZW5pemVyKG4pO3RoaXMuYmdUb2tlbml6ZXIuc2V0RG9jdW1lbnQodGhpcy5nZXREb2N1bWVudCgpKSx0aGlzLmJnVG9rZW5pemVyLnN0YXJ0KDApLHRoaXMudG9rZW5SZT1lLnRva2VuUmUsdGhpcy5ub25Ub2tlblJlPWUubm9uVG9rZW5SZSx0aGlzLiRzZXRGb2xkaW5nKGUuZm9sZGluZ1J1bGVzKSx0aGlzLl9lbWl0KCJjaGFuZ2VNb2RlIil9LHRoaXMuJHN0b3BXb3JrZXI9ZnVuY3Rpb24oKXt0aGlzLiR3b3JrZXImJnRoaXMuJHdvcmtlci50ZXJtaW5hdGUoKSx0aGlzLiR3b3JrZXI9bnVsbH0sdGhpcy4kc3RhcnRXb3JrZXI9ZnVuY3Rpb24oKXtpZih0eXBlb2YgV29ya2VyIT0idW5kZWZpbmVkIiYmIWUubm9Xb3JrZXIpdHJ5e3RoaXMuJHdvcmtlcj10aGlzLiRtb2RlLmNyZWF0ZVdvcmtlcih0aGlzKX1jYXRjaCh0KXtjb25zb2xlLmxvZygiQ291bGQgbm90IGxvYWQgd29ya2VyIiksY29uc29sZS5sb2codCksdGhpcy4kd29ya2VyPW51bGx9ZWxzZSB0aGlzLiR3b3JrZXI9bnVsbH0sdGhpcy5nZXRNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJG1vZGV9LHRoaXMuJHNjcm9sbFRvcD0wLHRoaXMuc2V0U2Nyb2xsVG9wPWZ1bmN0aW9uKGUpe2U9TWF0aC5yb3VuZChNYXRoLm1heCgwLGUpKTtpZih0aGlzLiRzY3JvbGxUb3A9PT1lKXJldHVybjt0aGlzLiRzY3JvbGxUb3A9ZSx0aGlzLl9lbWl0KCJjaGFuZ2VTY3JvbGxUb3AiLGUpfSx0aGlzLmdldFNjcm9sbFRvcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRzY3JvbGxUb3B9LHRoaXMuJHNjcm9sbExlZnQ9MCx0aGlzLnNldFNjcm9sbExlZnQ9ZnVuY3Rpb24oZSl7ZT1NYXRoLnJvdW5kKE1hdGgubWF4KDAsZSkpO2lmKHRoaXMuJHNjcm9sbExlZnQ9PT1lKXJldHVybjt0aGlzLiRzY3JvbGxMZWZ0PWUsdGhpcy5fZW1pdCgiY2hhbmdlU2Nyb2xsTGVmdCIsZSl9LHRoaXMuZ2V0U2Nyb2xsTGVmdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRzY3JvbGxMZWZ0fSx0aGlzLmdldFNjcmVlbldpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNvbXB1dGVXaWR0aCgpLHRoaXMuc2NyZWVuV2lkdGh9LHRoaXMuJGNvbXB1dGVXaWR0aD1mdW5jdGlvbihlKXtpZih0aGlzLiRtb2RpZmllZHx8ZSl7dGhpcy4kbW9kaWZpZWQ9ITE7aWYodGhpcy4kdXNlV3JhcE1vZGUpcmV0dXJuIHRoaXMuc2NyZWVuV2lkdGg9dGhpcy4kd3JhcExpbWl0O3ZhciB0PXRoaXMuZG9jLmdldEFsbExpbmVzKCksbj10aGlzLiRyb3dMZW5ndGhDYWNoZSxyPTAsaT0wLHM9dGhpcy4kZm9sZERhdGFbaV0sbz1zP3Muc3RhcnQucm93OkluZmluaXR5LHU9dC5sZW5ndGg7Zm9yKHZhciBhPTA7YTx1O2ErKyl7aWYoYT5vKXthPXMuZW5kLnJvdysxO2lmKGE+PXUpYnJlYWs7cz10aGlzLiRmb2xkRGF0YVtpKytdLG89cz9zLnN0YXJ0LnJvdzpJbmZpbml0eX1uW2FdPT1udWxsJiYoblthXT10aGlzLiRnZXRTdHJpbmdTY3JlZW5XaWR0aCh0W2FdKVswXSksblthXT5yJiYocj1uW2FdKX10aGlzLnNjcmVlbldpZHRoPXJ9fSx0aGlzLmdldExpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZG9jLmdldExpbmUoZSl9LHRoaXMuZ2V0TGluZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5kb2MuZ2V0TGluZXMoZSx0KX0sdGhpcy5nZXRMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb2MuZ2V0TGVuZ3RoKCl9LHRoaXMuZ2V0VGV4dFJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRvYy5nZXRUZXh0UmFuZ2UoZXx8dGhpcy5zZWxlY3Rpb24uZ2V0UmFuZ2UoKSl9LHRoaXMuaW5zZXJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZG9jLmluc2VydChlLHQpfSx0aGlzLnJlbW92ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kb2MucmVtb3ZlKGUpfSx0aGlzLnVuZG9DaGFuZ2VzPWZ1bmN0aW9uKGUsdCl7aWYoIWUubGVuZ3RoKXJldHVybjt0aGlzLiRmcm9tVW5kbz0hMDt2YXIgbj1udWxsO2Zvcih2YXIgcj1lLmxlbmd0aC0xO3IhPS0xO3ItLSl7dmFyIGk9ZVtyXTtpLmdyb3VwPT0iZG9jIj8odGhpcy5kb2MucmV2ZXJ0RGVsdGFzKGkuZGVsdGFzKSxuPXRoaXMuJGdldFVuZG9TZWxlY3Rpb24oaS5kZWx0YXMsITAsbikpOmkuZGVsdGFzLmZvckVhY2goZnVuY3Rpb24oZSl7dGhpcy5hZGRGb2xkcyhlLmZvbGRzKX0sdGhpcyl9cmV0dXJuIHRoaXMuJGZyb21VbmRvPSExLG4mJnRoaXMuJHVuZG9TZWxlY3QmJiF0JiZ0aGlzLnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShuKSxufSx0aGlzLnJlZG9DaGFuZ2VzPWZ1bmN0aW9uKGUsdCl7aWYoIWUubGVuZ3RoKXJldHVybjt0aGlzLiRmcm9tVW5kbz0hMDt2YXIgbj1udWxsO2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgaT1lW3JdO2kuZ3JvdXA9PSJkb2MiJiYodGhpcy5kb2MuYXBwbHlEZWx0YXMoaS5kZWx0YXMpLG49dGhpcy4kZ2V0VW5kb1NlbGVjdGlvbihpLmRlbHRhcywhMSxuKSl9cmV0dXJuIHRoaXMuJGZyb21VbmRvPSExLG4mJnRoaXMuJHVuZG9TZWxlY3QmJiF0JiZ0aGlzLnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShuKSxufSx0aGlzLnNldFVuZG9TZWxlY3Q9ZnVuY3Rpb24oZSl7dGhpcy4kdW5kb1NlbGVjdD1lfSx0aGlzLiRnZXRVbmRvU2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3ZhciBuPWUuYWN0aW9uPT0iaW5zZXJ0VGV4dCJ8fGUuYWN0aW9uPT0iaW5zZXJ0TGluZXMiO3JldHVybiB0PyFuOm59dmFyIGk9ZVswXSxzLG8sdT0hMTtyKGkpPyhzPWkucmFuZ2UuY2xvbmUoKSx1PSEwKToocz1sLmZyb21Qb2ludHMoaS5yYW5nZS5zdGFydCxpLnJhbmdlLnN0YXJ0KSx1PSExKTtmb3IodmFyIGE9MTthPGUubGVuZ3RoO2ErKylpPWVbYV0scihpKT8obz1pLnJhbmdlLnN0YXJ0LHMuY29tcGFyZShvLnJvdyxvLmNvbHVtbik9PS0xJiZzLnNldFN0YXJ0KGkucmFuZ2Uuc3RhcnQpLG89aS5yYW5nZS5lbmQscy5jb21wYXJlKG8ucm93LG8uY29sdW1uKT09MSYmcy5zZXRFbmQoaS5yYW5nZS5lbmQpLHU9ITApOihvPWkucmFuZ2Uuc3RhcnQscy5jb21wYXJlKG8ucm93LG8uY29sdW1uKT09LTEmJihzPWwuZnJvbVBvaW50cyhpLnJhbmdlLnN0YXJ0LGkucmFuZ2Uuc3RhcnQpKSx1PSExKTtpZihuIT1udWxsKXt2YXIgZj1uLmNvbXBhcmVSYW5nZShzKTtmPT0xP3Muc2V0U3RhcnQobi5zdGFydCk6Zj09LTEmJnMuc2V0RW5kKG4uZW5kKX1yZXR1cm4gc30sdGhpcy5yZXBsYWNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZG9jLnJlcGxhY2UoZSx0KX0sdGhpcy5tb3ZlVGV4dD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0VGV4dFJhbmdlKGUpO3RoaXMucmVtb3ZlKGUpO3ZhciByPXQucm93LGk9dC5jb2x1bW47IWUuaXNNdWx0aUxpbmUoKSYmZS5zdGFydC5yb3c9PXImJmUuZW5kLmNvbHVtbjxpJiYoaS09bi5sZW5ndGgpO2lmKGUuaXNNdWx0aUxpbmUoKSYmZS5lbmQucm93PHIpe3ZhciBzPXRoaXMuZG9jLiRzcGxpdChuKTtyLT1zLmxlbmd0aC0xfXZhciBvPXIrZS5lbmQucm93LWUuc3RhcnQucm93LHU9ZS5pc011bHRpTGluZSgpP2UuZW5kLmNvbHVtbjppK2UuZW5kLmNvbHVtbi1lLnN0YXJ0LmNvbHVtbixhPW5ldyBsKHIsaSxvLHUpO3JldHVybiB0aGlzLmluc2VydChhLnN0YXJ0LG4pLGF9LHRoaXMuaW5kZW50Um93cz1mdW5jdGlvbihlLHQsbil7bj1uLnJlcGxhY2UoL1x0L2csdGhpcy5nZXRUYWJTdHJpbmcoKSk7Zm9yKHZhciByPWU7cjw9dDtyKyspdGhpcy5pbnNlcnQoe3JvdzpyLGNvbHVtbjowfSxuKX0sdGhpcy5vdXRkZW50Um93cz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbGxhcHNlUm93cygpLG49bmV3IGwoMCwwLDAsMCkscj10aGlzLmdldFRhYlNpemUoKTtmb3IodmFyIGk9dC5zdGFydC5yb3c7aTw9dC5lbmQucm93OysraSl7dmFyIHM9dGhpcy5nZXRMaW5lKGkpO24uc3RhcnQucm93PWksbi5lbmQucm93PWk7Zm9yKHZhciBvPTA7bzxyOysrbylpZihzLmNoYXJBdChvKSE9IiAiKWJyZWFrO288ciYmcy5jaGFyQXQobyk9PSIJIj8obi5zdGFydC5jb2x1bW49byxuLmVuZC5jb2x1bW49bysxKToobi5zdGFydC5jb2x1bW49MCxuLmVuZC5jb2x1bW49byksdGhpcy5yZW1vdmUobil9fSx0aGlzLm1vdmVMaW5lc1VwPWZ1bmN0aW9uKGUsdCl7aWYoZTw9MClyZXR1cm4gMDt2YXIgbj10aGlzLmRvYy5yZW1vdmVMaW5lcyhlLHQpO3JldHVybiB0aGlzLmRvYy5pbnNlcnRMaW5lcyhlLTEsbiksLTF9LHRoaXMubW92ZUxpbmVzRG93bj1mdW5jdGlvbihlLHQpe2lmKHQ+PXRoaXMuZG9jLmdldExlbmd0aCgpLTEpcmV0dXJuIDA7dmFyIG49dGhpcy5kb2MucmVtb3ZlTGluZXMoZSx0KTtyZXR1cm4gdGhpcy5kb2MuaW5zZXJ0TGluZXMoZSsxLG4pLDF9LHRoaXMuZHVwbGljYXRlTGluZXM9ZnVuY3Rpb24oZSx0KXt2YXIgZT10aGlzLiRjbGlwUm93VG9Eb2N1bWVudChlKSx0PXRoaXMuJGNsaXBSb3dUb0RvY3VtZW50KHQpLG49dGhpcy5nZXRMaW5lcyhlLHQpO3RoaXMuZG9jLmluc2VydExpbmVzKGUsbik7dmFyIHI9dC1lKzE7cmV0dXJuIHJ9LHRoaXMuJGNsaXBSb3dUb0RvY3VtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKGUsdGhpcy5kb2MuZ2V0TGVuZ3RoKCktMSkpfSx0aGlzLiRjbGlwQ29sdW1uVG9Sb3c9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdDwwPzA6TWF0aC5taW4odGhpcy5kb2MuZ2V0TGluZShlKS5sZW5ndGgsdCl9LHRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQ9ZnVuY3Rpb24oZSx0KXt0PU1hdGgubWF4KDAsdCk7aWYoZTwwKWU9MCx0PTA7ZWxzZXt2YXIgbj10aGlzLmRvYy5nZXRMZW5ndGgoKTtlPj1uPyhlPW4tMSx0PXRoaXMuZG9jLmdldExpbmUobi0xKS5sZW5ndGgpOnQ9TWF0aC5taW4odGhpcy5kb2MuZ2V0TGluZShlKS5sZW5ndGgsdCl9cmV0dXJue3JvdzplLGNvbHVtbjp0fX0sdGhpcy4kY2xpcFJhbmdlVG9Eb2N1bWVudD1mdW5jdGlvbihlKXtlLnN0YXJ0LnJvdzwwPyhlLnN0YXJ0LnJvdz0wLGUuc3RhcnQuY29sdW1uPTApOmUuc3RhcnQuY29sdW1uPXRoaXMuJGNsaXBDb2x1bW5Ub1JvdyhlLnN0YXJ0LnJvdyxlLnN0YXJ0LmNvbHVtbik7dmFyIHQ9dGhpcy5kb2MuZ2V0TGVuZ3RoKCktMTtyZXR1cm4gZS5lbmQucm93PnQ/KGUuZW5kLnJvdz10LGUuZW5kLmNvbHVtbj10aGlzLmRvYy5nZXRMaW5lKHQpLmxlbmd0aCk6ZS5lbmQuY29sdW1uPXRoaXMuJGNsaXBDb2x1bW5Ub1JvdyhlLmVuZC5yb3csZS5lbmQuY29sdW1uKSxlfSx0aGlzLiR3cmFwTGltaXQ9ODAsdGhpcy4kdXNlV3JhcE1vZGU9ITEsdGhpcy4kd3JhcExpbWl0UmFuZ2U9e21pbjpudWxsLG1heDpudWxsfSx0aGlzLnNldFVzZVdyYXBNb2RlPWZ1bmN0aW9uKGUpe2lmKGUhPXRoaXMuJHVzZVdyYXBNb2RlKXt0aGlzLiR1c2VXcmFwTW9kZT1lLHRoaXMuJG1vZGlmaWVkPSEwLHRoaXMuJHJlc2V0Um93Q2FjaGUoMCk7aWYoZSl7dmFyIHQ9dGhpcy5nZXRMZW5ndGgoKTt0aGlzLiR3cmFwRGF0YT1bXTtmb3IodmFyIG49MDtuPHQ7bisrKXRoaXMuJHdyYXBEYXRhLnB1c2goW10pO3RoaXMuJHVwZGF0ZVdyYXBEYXRhKDAsdC0xKX10aGlzLl9lbWl0KCJjaGFuZ2VXcmFwTW9kZSIpfX0sdGhpcy5nZXRVc2VXcmFwTW9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiR1c2VXcmFwTW9kZX0sdGhpcy5zZXRXcmFwTGltaXRSYW5nZT1mdW5jdGlvbihlLHQpe2lmKHRoaXMuJHdyYXBMaW1pdFJhbmdlLm1pbiE9PWV8fHRoaXMuJHdyYXBMaW1pdFJhbmdlLm1heCE9PXQpdGhpcy4kd3JhcExpbWl0UmFuZ2UubWluPWUsdGhpcy4kd3JhcExpbWl0UmFuZ2UubWF4PXQsdGhpcy4kbW9kaWZpZWQ9ITAsdGhpcy5fZW1pdCgiY2hhbmdlV3JhcE1vZGUiKX0sdGhpcy5hZGp1c3RXcmFwTGltaXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy4kY29uc3RyYWluV3JhcExpbWl0KGUpO3JldHVybiB0IT10aGlzLiR3cmFwTGltaXQmJnQ+MD8odGhpcy4kd3JhcExpbWl0PXQsdGhpcy4kbW9kaWZpZWQ9ITAsdGhpcy4kdXNlV3JhcE1vZGUmJih0aGlzLiR1cGRhdGVXcmFwRGF0YSgwLHRoaXMuZ2V0TGVuZ3RoKCktMSksdGhpcy4kcmVzZXRSb3dDYWNoZSgwKSx0aGlzLl9lbWl0KCJjaGFuZ2VXcmFwTGltaXQiKSksITApOiExfSx0aGlzLiRjb25zdHJhaW5XcmFwTGltaXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy4kd3JhcExpbWl0UmFuZ2UubWluO3QmJihlPU1hdGgubWF4KHQsZSkpO3ZhciBuPXRoaXMuJHdyYXBMaW1pdFJhbmdlLm1heDtyZXR1cm4gbiYmKGU9TWF0aC5taW4obixlKSksTWF0aC5tYXgoMSxlKX0sdGhpcy5nZXRXcmFwTGltaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kd3JhcExpbWl0fSx0aGlzLmdldFdyYXBMaW1pdFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJue21pbjp0aGlzLiR3cmFwTGltaXRSYW5nZS5taW4sbWF4OnRoaXMuJHdyYXBMaW1pdFJhbmdlLm1heH19LHRoaXMuJHVwZGF0ZUludGVybmFsRGF0YU9uQ2hhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuJHVzZVdyYXBNb2RlLG4scj1lLmRhdGEuYWN0aW9uLGk9ZS5kYXRhLnJhbmdlLnN0YXJ0LnJvdyxzPWUuZGF0YS5yYW5nZS5lbmQucm93LG89ZS5kYXRhLnJhbmdlLnN0YXJ0LHU9ZS5kYXRhLnJhbmdlLmVuZCxhPW51bGw7ci5pbmRleE9mKCJMaW5lcyIpIT0tMT8ocj09Imluc2VydExpbmVzIj9zPWkrZS5kYXRhLmxpbmVzLmxlbmd0aDpzPWksbj1lLmRhdGEubGluZXM/ZS5kYXRhLmxpbmVzLmxlbmd0aDpzLWkpOm49cy1pO2lmKG4hPTApaWYoci5pbmRleE9mKCJyZW1vdmUiKSE9LTEpe3RoaXNbdD8iJHdyYXBEYXRhIjoiJHJvd0xlbmd0aENhY2hlIl0uc3BsaWNlKGksbik7dmFyIGY9dGhpcy4kZm9sZERhdGE7YT10aGlzLmdldEZvbGRzSW5SYW5nZShlLmRhdGEucmFuZ2UpLHRoaXMucmVtb3ZlRm9sZHMoYSk7dmFyIGw9dGhpcy5nZXRGb2xkTGluZSh1LnJvdyksYz0wO2lmKGwpe2wuYWRkUmVtb3ZlQ2hhcnModS5yb3csdS5jb2x1bW4sby5jb2x1bW4tdS5jb2x1bW4pLGwuc2hpZnRSb3coLW4pO3ZhciBoPXRoaXMuZ2V0Rm9sZExpbmUoaSk7aCYmaCE9PWwmJihoLm1lcmdlKGwpLGw9aCksYz1mLmluZGV4T2YobCkrMX1mb3IoYztjPGYubGVuZ3RoO2MrKyl7dmFyIGw9ZltjXTtsLnN0YXJ0LnJvdz49dS5yb3cmJmwuc2hpZnRSb3coLW4pfXM9aX1lbHNle3ZhciBwO2lmKHQpe3A9W2ksMF07Zm9yKHZhciBkPTA7ZDxuO2QrKylwLnB1c2goW10pO3RoaXMuJHdyYXBEYXRhLnNwbGljZS5hcHBseSh0aGlzLiR3cmFwRGF0YSxwKX1lbHNlIHA9QXJyYXkobikscC51bnNoaWZ0KGksMCksdGhpcy4kcm93TGVuZ3RoQ2FjaGUuc3BsaWNlLmFwcGx5KHRoaXMuJHJvd0xlbmd0aENhY2hlLHApO3ZhciBmPXRoaXMuJGZvbGREYXRhLGw9dGhpcy5nZXRGb2xkTGluZShpKSxjPTA7aWYobCl7dmFyIHY9bC5yYW5nZS5jb21wYXJlSW5zaWRlKG8ucm93LG8uY29sdW1uKTt2PT0wPyhsPWwuc3BsaXQoby5yb3csby5jb2x1bW4pLGwuc2hpZnRSb3cobiksbC5hZGRSZW1vdmVDaGFycyhzLDAsdS5jb2x1bW4tby5jb2x1bW4pKTp2PT0tMSYmKGwuYWRkUmVtb3ZlQ2hhcnMoaSwwLHUuY29sdW1uLW8uY29sdW1uKSxsLnNoaWZ0Um93KG4pKSxjPWYuaW5kZXhPZihsKSsxfWZvcihjO2M8Zi5sZW5ndGg7YysrKXt2YXIgbD1mW2NdO2wuc3RhcnQucm93Pj1pJiZsLnNoaWZ0Um93KG4pfX1lbHNle249TWF0aC5hYnMoZS5kYXRhLnJhbmdlLnN0YXJ0LmNvbHVtbi1lLmRhdGEucmFuZ2UuZW5kLmNvbHVtbiksci5pbmRleE9mKCJyZW1vdmUiKSE9LTEmJihhPXRoaXMuZ2V0Rm9sZHNJblJhbmdlKGUuZGF0YS5yYW5nZSksdGhpcy5yZW1vdmVGb2xkcyhhKSxuPS1uKTt2YXIgbD10aGlzLmdldEZvbGRMaW5lKGkpO2wmJmwuYWRkUmVtb3ZlQ2hhcnMoaSxvLmNvbHVtbixuKX1yZXR1cm4gdCYmdGhpcy4kd3JhcERhdGEubGVuZ3RoIT10aGlzLmRvYy5nZXRMZW5ndGgoKSYmY29uc29sZS5lcnJvcigiZG9jLmdldExlbmd0aCgpIGFuZCAkd3JhcERhdGEubGVuZ3RoIGhhdmUgdG8gYmUgdGhlIHNhbWUhIiksdD90aGlzLiR1cGRhdGVXcmFwRGF0YShpLHMpOnRoaXMuJHVwZGF0ZVJvd0xlbmd0aENhY2hlKGkscyksYX0sdGhpcy4kdXBkYXRlUm93TGVuZ3RoQ2FjaGU9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJHJvd0xlbmd0aENhY2hlW2VdPW51bGwsdGhpcy4kcm93TGVuZ3RoQ2FjaGVbdF09bnVsbH0sdGhpcy4kdXBkYXRlV3JhcERhdGE9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmRvYy5nZXRBbGxMaW5lcygpLHI9dGhpcy5nZXRUYWJTaXplKCksaT10aGlzLiR3cmFwRGF0YSxvPXRoaXMuJHdyYXBMaW1pdCx1LGYsbD1lO3Q9TWF0aC5taW4odCxuLmxlbmd0aC0xKTt3aGlsZShsPD10KXtmPXRoaXMuZ2V0Rm9sZExpbmUobCxmKTtpZighZil1PXRoaXMuJGdldERpc3BsYXlUb2tlbnMocy5zdHJpbmdUcmltUmlnaHQobltsXSkpLGlbbF09dGhpcy4kY29tcHV0ZVdyYXBTcGxpdHModSxvLHIpLGwrKztlbHNle3U9W10sZi53YWxrKGZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBzO2lmKGUpe3M9dGhpcy4kZ2V0RGlzcGxheVRva2VucyhlLHUubGVuZ3RoKSxzWzBdPWE7Zm9yKHZhciBvPTE7bzxzLmxlbmd0aDtvKyspc1tvXT1jfWVsc2Ugcz10aGlzLiRnZXREaXNwbGF5VG9rZW5zKG5bdF0uc3Vic3RyaW5nKGksciksdS5sZW5ndGgpO3U9dS5jb25jYXQocyl9LmJpbmQodGhpcyksZi5lbmQucm93LG5bZi5lbmQucm93XS5sZW5ndGgrMSk7d2hpbGUodS5sZW5ndGghPTAmJnVbdS5sZW5ndGgtMV0+PXYpdS5wb3AoKTtpW2Yuc3RhcnQucm93XT10aGlzLiRjb21wdXRlV3JhcFNwbGl0cyh1LG8sciksbD1mLmVuZC5yb3crMX19fTt2YXIgdD0xLG49MixhPTMsYz00LGQ9OSx2PTEwLG09MTEsZz0xMjt0aGlzLiRjb21wdXRlV3JhcFNwbGl0cz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8odCl7dmFyIHI9ZS5zbGljZShpLHQpLG89ci5sZW5ndGg7ci5qb2luKCIiKS5yZXBsYWNlKC8xMi9nLGZ1bmN0aW9uKCl7by09MX0pLnJlcGxhY2UoLzIvZyxmdW5jdGlvbigpe28tPTF9KSxzKz1vLG4ucHVzaChzKSxpPXR9aWYoZS5sZW5ndGg9PTApcmV0dXJuW107dmFyIG49W10scj1lLmxlbmd0aCxpPTAscz0wO3doaWxlKHItaT50KXt2YXIgdT1pK3Q7aWYoZVt1XT49dil7d2hpbGUoZVt1XT49dil1Kys7byh1KTtjb250aW51ZX1pZihlW3VdPT1hfHxlW3VdPT1jKXtmb3IodTt1IT1pLTE7dS0tKWlmKGVbdV09PWEpYnJlYWs7aWYodT5pKXtvKHUpO2NvbnRpbnVlfXU9aSt0O2Zvcih1O3U8ZS5sZW5ndGg7dSsrKWlmKGVbdV0hPWMpYnJlYWs7aWYodT09ZS5sZW5ndGgpYnJlYWs7byh1KTtjb250aW51ZX12YXIgZj1NYXRoLm1heCh1LTEwLGktMSk7d2hpbGUodT5mJiZlW3VdPGEpdS0tO3doaWxlKHU+ZiYmZVt1XT09ZCl1LS07aWYodT5mKXtvKCsrdSk7Y29udGludWV9dT1pK3Qsbyh1KX1yZXR1cm4gbn0sdGhpcy4kZ2V0RGlzcGxheVRva2Vucz1mdW5jdGlvbihlLHIpe3ZhciBpPVtdLHM7cj1yfHwwO2Zvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKXt2YXIgdT1lLmNoYXJDb2RlQXQobyk7aWYodT09OSl7cz10aGlzLmdldFNjcmVlblRhYlNpemUoaS5sZW5ndGgrciksaS5wdXNoKG0pO2Zvcih2YXIgYT0xO2E8czthKyspaS5wdXNoKGcpfWVsc2UgdT09MzI/aS5wdXNoKHYpOnU+MzkmJnU8NDh8fHU+NTcmJnU8NjQ/aS5wdXNoKGQpOnU+PTQzNTImJnkodSk/aS5wdXNoKHQsbik6aS5wdXNoKHQpfXJldHVybiBpfSx0aGlzLiRnZXRTdHJpbmdTY3JlZW5XaWR0aD1mdW5jdGlvbihlLHQsbil7aWYodD09MClyZXR1cm5bMCwwXTt0PT1udWxsJiYodD1JbmZpbml0eSksbj1ufHwwO3ZhciByLGk7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKyl7cj1lLmNoYXJDb2RlQXQoaSkscj09OT9uKz10aGlzLmdldFNjcmVlblRhYlNpemUobik6cj49NDM1MiYmeShyKT9uKz0yOm4rPTE7aWYobj50KWJyZWFrfXJldHVybltuLGldfSx0aGlzLmdldFJvd0xlbmd0aD1mdW5jdGlvbihlKXtyZXR1cm4hdGhpcy4kdXNlV3JhcE1vZGV8fCF0aGlzLiR3cmFwRGF0YVtlXT8xOnRoaXMuJHdyYXBEYXRhW2VdLmxlbmd0aCsxfSx0aGlzLmdldFJvd0hlaWdodD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmdldFJvd0xlbmd0aCh0KSplLmxpbmVIZWlnaHR9LHRoaXMuZ2V0U2NyZWVuTGFzdFJvd0NvbHVtbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnNjcmVlblRvRG9jdW1lbnRQb3NpdGlvbihlLE51bWJlci5NQVhfVkFMVUUpO3JldHVybiB0aGlzLmRvY3VtZW50VG9TY3JlZW5Db2x1bW4odC5yb3csdC5jb2x1bW4pfSx0aGlzLmdldERvY3VtZW50TGFzdFJvd0NvbHVtbj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZG9jdW1lbnRUb1NjcmVlblJvdyhlLHQpO3JldHVybiB0aGlzLmdldFNjcmVlbkxhc3RSb3dDb2x1bW4obil9LHRoaXMuZ2V0RG9jdW1lbnRMYXN0Um93Q29sdW1uUG9zaXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmRvY3VtZW50VG9TY3JlZW5Sb3coZSx0KTtyZXR1cm4gdGhpcy5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24obixOdW1iZXIuTUFYX1ZBTFVFLzEwKX0sdGhpcy5nZXRSb3dTcGxpdERhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuJHVzZVdyYXBNb2RlP3RoaXMuJHdyYXBEYXRhW2VdOnVuZGVmaW5lZH0sdGhpcy5nZXRTY3JlZW5UYWJTaXplPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiR0YWJTaXplLWUldGhpcy4kdGFiU2l6ZX0sdGhpcy5zY3JlZW5Ub0RvY3VtZW50Um93PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuc2NyZWVuVG9Eb2N1bWVudFBvc2l0aW9uKGUsdCkucm93fSx0aGlzLnNjcmVlblRvRG9jdW1lbnRDb2x1bW49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24oZSx0KS5jb2x1bW59LHRoaXMuc2NyZWVuVG9Eb2N1bWVudFBvc2l0aW9uPWZ1bmN0aW9uKGUsdCl7aWYoZTwwKXJldHVybntyb3c6MCxjb2x1bW46MH07dmFyIG4scj0wLGk9MCxzLG89MCx1PTAsYT10aGlzLiRzY3JlZW5Sb3dDYWNoZSxmPXRoaXMuJGdldFJvd0NhY2hlSW5kZXgoYSxlKSxsPWFbZl0sYz10aGlzLiRkb2NSb3dDYWNoZVtmXTtpZigwPGYmJmY8YS5sZW5ndGgpdmFyIG89YVtmXSxyPXRoaXMuJGRvY1Jvd0NhY2hlW2ZdLGg9ZT5vfHxlPT1vJiZmPT1hLmxlbmd0aC0xO2Vsc2UgdmFyIGg9ITA7dmFyIHA9dGhpcy5nZXRMZW5ndGgoKS0xLGQ9dGhpcy5nZXROZXh0Rm9sZExpbmUociksdj1kP2Quc3RhcnQucm93OkluZmluaXR5O3doaWxlKG88PWUpe3U9dGhpcy5nZXRSb3dMZW5ndGgocik7aWYobyt1LTE+PWV8fHI+PXApYnJlYWs7bys9dSxyKysscj52JiYocj1kLmVuZC5yb3crMSxkPXRoaXMuZ2V0TmV4dEZvbGRMaW5lKHIsZCksdj1kP2Quc3RhcnQucm93OkluZmluaXR5KSxoJiYodGhpcy4kZG9jUm93Q2FjaGUucHVzaChyKSx0aGlzLiRzY3JlZW5Sb3dDYWNoZS5wdXNoKG8pKX1pZihkJiZkLnN0YXJ0LnJvdzw9ciluPXRoaXMuZ2V0Rm9sZERpc3BsYXlMaW5lKGQpLHI9ZC5zdGFydC5yb3c7ZWxzZXtpZihvK3U8PWV8fHI+cClyZXR1cm57cm93OnAsY29sdW1uOnRoaXMuZ2V0TGluZShwKS5sZW5ndGh9O249dGhpcy5nZXRMaW5lKHIpLGQ9bnVsbH1pZih0aGlzLiR1c2VXcmFwTW9kZSl7dmFyIG09dGhpcy4kd3JhcERhdGFbcl07bSYmKHM9bVtlLW9dLGU+byYmbS5sZW5ndGgmJihpPW1bZS1vLTFdfHxtW20ubGVuZ3RoLTFdLG49bi5zdWJzdHJpbmcoaSkpKX1yZXR1cm4gaSs9dGhpcy4kZ2V0U3RyaW5nU2NyZWVuV2lkdGgobix0KVsxXSx0aGlzLiR1c2VXcmFwTW9kZSYmaT49cyYmKGk9cy0xKSxkP2QuaWR4VG9Qb3NpdGlvbihpKTp7cm93OnIsY29sdW1uOml9fSx0aGlzLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbj1mdW5jdGlvbihlLHQpe2lmKHR5cGVvZiB0PT0idW5kZWZpbmVkIil2YXIgbj10aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50KGUucm93LGUuY29sdW1uKTtlbHNlIG49dGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudChlLHQpO2U9bi5yb3csdD1uLmNvbHVtbjt2YXIgcj0wLGk9bnVsbCxzPW51bGw7cz10aGlzLmdldEZvbGRBdChlLHQsMSkscyYmKGU9cy5zdGFydC5yb3csdD1zLnN0YXJ0LmNvbHVtbik7dmFyIG8sdT0wLGE9dGhpcy4kZG9jUm93Q2FjaGUsZj10aGlzLiRnZXRSb3dDYWNoZUluZGV4KGEsZSk7aWYoMDxmJiZmPGEubGVuZ3RoKXZhciB1PWFbZl0scj10aGlzLiRzY3JlZW5Sb3dDYWNoZVtmXSxsPWU+dXx8ZT09dSYmZj09YS5sZW5ndGgtMTtlbHNlIHZhciBsPSEwO3ZhciBjPXRoaXMuZ2V0TmV4dEZvbGRMaW5lKHUpLGg9Yz9jLnN0YXJ0LnJvdzpJbmZpbml0eTt3aGlsZSh1PGUpe2lmKHU+PWgpe289Yy5lbmQucm93KzE7aWYobz5lKWJyZWFrO2M9dGhpcy5nZXROZXh0Rm9sZExpbmUobyxjKSxoPWM/Yy5zdGFydC5yb3c6SW5maW5pdHl9ZWxzZSBvPXUrMTtyKz10aGlzLmdldFJvd0xlbmd0aCh1KSx1PW8sbCYmKHRoaXMuJGRvY1Jvd0NhY2hlLnB1c2godSksdGhpcy4kc2NyZWVuUm93Q2FjaGUucHVzaChyKSl9dmFyIHA9IiI7YyYmdT49aD8ocD10aGlzLmdldEZvbGREaXNwbGF5TGluZShjLGUsdCksaT1jLnN0YXJ0LnJvdyk6KHA9dGhpcy5nZXRMaW5lKGUpLnN1YnN0cmluZygwLHQpLGk9ZSk7aWYodGhpcy4kdXNlV3JhcE1vZGUpe3ZhciBkPXRoaXMuJHdyYXBEYXRhW2ldLHY9MDt3aGlsZShwLmxlbmd0aD49ZFt2XSlyKyssdisrO3A9cC5zdWJzdHJpbmcoZFt2LTFdfHwwLHAubGVuZ3RoKX1yZXR1cm57cm93OnIsY29sdW1uOnRoaXMuJGdldFN0cmluZ1NjcmVlbldpZHRoKHApWzBdfX0sdGhpcy5kb2N1bWVudFRvU2NyZWVuQ29sdW1uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKGUsdCkuY29sdW1ufSx0aGlzLmRvY3VtZW50VG9TY3JlZW5Sb3c9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24oZSx0KS5yb3d9LHRoaXMuZ2V0U2NyZWVuTGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIGU9MCx0PW51bGw7aWYoIXRoaXMuJHVzZVdyYXBNb2RlKXtlPXRoaXMuZ2V0TGVuZ3RoKCk7dmFyIG49dGhpcy4kZm9sZERhdGE7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspdD1uW3JdLGUtPXQuZW5kLnJvdy10LnN0YXJ0LnJvd31lbHNle3ZhciBpPXRoaXMuJHdyYXBEYXRhLmxlbmd0aCxzPTAscj0wLHQ9dGhpcy4kZm9sZERhdGFbcisrXSxvPXQ/dC5zdGFydC5yb3c6SW5maW5pdHk7d2hpbGUoczxpKWUrPXRoaXMuJHdyYXBEYXRhW3NdLmxlbmd0aCsxLHMrKyxzPm8mJihzPXQuZW5kLnJvdysxLHQ9dGhpcy4kZm9sZERhdGFbcisrXSxvPXQ/dC5zdGFydC5yb3c6SW5maW5pdHkpfXJldHVybiBlfX0pLmNhbGwoZC5wcm90b3R5cGUpLGUoIi4vZWRpdF9zZXNzaW9uL2ZvbGRpbmciKS5Gb2xkaW5nLmNhbGwoZC5wcm90b3R5cGUpLGUoIi4vZWRpdF9zZXNzaW9uL2JyYWNrZXRfbWF0Y2giKS5CcmFja2V0TWF0Y2guY2FsbChkLnByb3RvdHlwZSksdC5FZGl0U2Vzc2lvbj1kfSksZGVmaW5lKCJhY2UvY29uZmlnIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9sYW5nIl0sZnVuY3Rpb24oZSx0LG4peyJubyB1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUpe3JldHVybiBlLnJlcGxhY2UoLy0oLikvZyxmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KX12YXIgcj1lKCIuL2xpYi9sYW5nIiksaT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpLHM9e3BhY2thZ2VkOiExLHdvcmtlclBhdGg6IiIsbW9kZVBhdGg6IiIsdGhlbWVQYXRoOiIiLHN1ZmZpeDoiLmpzIiwkbW9kdWxlVXJsczp7fX07dC5nZXQ9ZnVuY3Rpb24oZSl7aWYoIXMuaGFzT3duUHJvcGVydHkoZSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNvbmZpZyBrZXk6ICIrZSk7cmV0dXJuIHNbZV19LHQuc2V0PWZ1bmN0aW9uKGUsdCl7aWYoIXMuaGFzT3duUHJvcGVydHkoZSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNvbmZpZyBrZXk6ICIrZSk7c1tlXT10fSx0LmFsbD1mdW5jdGlvbigpe3JldHVybiByLmNvcHlPYmplY3Qocyl9LHQubW9kdWxlVXJsPWZ1bmN0aW9uKGUsdCl7aWYocy4kbW9kdWxlVXJsc1tlXSlyZXR1cm4gcy4kbW9kdWxlVXJsc1tlXTt2YXIgbj1lLnNwbGl0KCIvIik7dD10fHxuW24ubGVuZ3RoLTJdfHwiIjt2YXIgcj1uW24ubGVuZ3RoLTFdLnJlcGxhY2UodCwiIikucmVwbGFjZSgvKF5bXC1fXSl8KFtcLV9dJCkvLCIiKTtyZXR1cm4hciYmbi5sZW5ndGg+MSYmKHI9bltuLmxlbmd0aC0yXSksdGhpcy5nZXQodCsiUGF0aCIpKyIvIit0KyItIityK3RoaXMuZ2V0KCJzdWZmaXgiKX0sdC5zZXRNb2R1bGVVcmw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcy4kbW9kdWxlVXJsc1tlXT10fSx0LmluaXQ9ZnVuY3Rpb24oKXtzLnBhY2thZ2VkPWUucGFja2FnZWR8fG4ucGFja2FnZWR8fGkuZGVmaW5lJiZkZWZpbmUucGFja2FnZWQ7aWYoIWkuZG9jdW1lbnQpcmV0dXJuIiI7dmFyIHI9e30sdT0iIixhPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKTtmb3IodmFyIGY9MDtmPGEubGVuZ3RoO2YrKyl7dmFyIGw9YVtmXSxjPWwuc3JjfHxsLmdldEF0dHJpYnV0ZSgic3JjIik7aWYoIWMpY29udGludWU7dmFyIGg9bC5hdHRyaWJ1dGVzO2Zvcih2YXIgcD0wLGQ9aC5sZW5ndGg7cDxkO3ArKyl7dmFyIHY9aFtwXTt2Lm5hbWUuaW5kZXhPZigiZGF0YS1hY2UtIik9PT0wJiYocltvKHYubmFtZS5yZXBsYWNlKC9eZGF0YS1hY2UtLywiIikpXT12LnZhbHVlKX12YXIgbT1jLm1hdGNoKC9eKC4qKVwvYWNlKFwtXHcrKT9cLmpzKFw/fCQpLyk7bSYmKHU9bVsxXSl9dSYmKHIuYmFzZT1yLmJhc2V8fHUsci5wYWNrYWdlZD0hMCksci53b3JrZXJQYXRoPXIud29ya2VyUGF0aHx8ci5iYXNlLHIubW9kZVBhdGg9ci5tb2RlUGF0aHx8ci5iYXNlLHIudGhlbWVQYXRoPXIudGhlbWVQYXRofHxyLmJhc2UsZGVsZXRlIHIuYmFzZTtmb3IodmFyIGcgaW4gcil0eXBlb2YgcltnXSE9InVuZGVmaW5lZCImJnQuc2V0KGcscltnXSl9fSksZGVmaW5lKCJhY2UvbGliL25ldCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmdldD1mdW5jdGlvbihlLG4pe3ZhciByPXQuY3JlYXRlWGhyKCk7ci5vcGVuKCJHRVQiLGUsITApLHIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGUpe3IucmVhZHlTdGF0ZT09PTQmJm4oci5yZXNwb25zZVRleHQpfSxyLnNlbmQobnVsbCl9O3ZhciByPVsiTXN4bWwyLlhNTEhUVFAiLCJNaWNyb3NvZnQuWE1MSFRUUCIsIk1zeG1sMi5YTUxIVFRQLjQuMCJdO3QuY3JlYXRlWGhyPWZ1bmN0aW9uKCl7dmFyIGUsdCxuO2lmKHR5cGVvZiBYTUxIdHRwUmVxdWVzdCE9InVuZGVmaW5lZCIpcmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdDtmb3IodD0wO3Q8Mzt0Kyspe249clt0XTt0cnl7ZT1uZXcgQWN0aXZlWE9iamVjdChuKX1jYXRjaChpKXt9aWYoZSl7cj1bbl07YnJlYWt9fWlmKCFlKXRocm93IG5ldyBFcnJvcigiY3JlYXRlWGhyKCk6IFhNTEh0dHBSZXF1ZXN0IG5vdCBhdmFpbGFibGUiKTtyZXR1cm4gZX0sdC5sb2FkU2NyaXB0PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3Iuc3JjPWUsbi5hcHBlbmRDaGlsZChyKSxyLm9ubG9hZD10fX0pLGRlZmluZSgiYWNlL2xpYi9ldmVudF9lbWl0dGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt9O3IuX2VtaXQ9ci5fZGlzcGF0Y2hFdmVudD1mdW5jdGlvbihlLHQpe3RoaXMuX2V2ZW50UmVnaXN0cnk9dGhpcy5fZXZlbnRSZWdpc3RyeXx8e30sdGhpcy5fZGVmYXVsdEhhbmRsZXJzPXRoaXMuX2RlZmF1bHRIYW5kbGVyc3x8e307dmFyIG49dGhpcy5fZXZlbnRSZWdpc3RyeVtlXXx8W10scj10aGlzLl9kZWZhdWx0SGFuZGxlcnNbZV07aWYoIW4ubGVuZ3RoJiYhcilyZXR1cm47dD10fHx7fSx0LnR5cGU9ZSx0LnN0b3BQcm9wYWdhdGlvbnx8KHQuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7dGhpcy5wcm9wYWdhdGlvblN0b3BwZWQ9ITB9KSx0LnByZXZlbnREZWZhdWx0fHwodC5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMH0pO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXtuW2ldKHQpO2lmKHQucHJvcGFnYXRpb25TdG9wcGVkKWJyZWFrfWlmKHImJiF0LmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuIHIodCl9LHIuc2V0RGVmYXVsdEhhbmRsZXI9ZnVuY3Rpb24oZSx0KXt0aGlzLl9kZWZhdWx0SGFuZGxlcnM9dGhpcy5fZGVmYXVsdEhhbmRsZXJzfHx7fTtpZih0aGlzLl9kZWZhdWx0SGFuZGxlcnNbZV0pdGhyb3cgbmV3IEVycm9yKCJUaGUgZGVmYXVsdCBoYW5kbGVyIGZvciAnIitlKyInIGlzIGFscmVhZHkgc2V0Iik7dGhpcy5fZGVmYXVsdEhhbmRsZXJzW2VdPXR9LHIub249ci5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fTt2YXIgbj10aGlzLl9ldmVudFJlZ2lzdHJ5W2VdO2lmKCFuKXZhciBuPXRoaXMuX2V2ZW50UmVnaXN0cnlbZV09W107bi5pbmRleE9mKHQpPT0tMSYmbi5wdXNoKHQpfSxyLnJlbW92ZUxpc3RlbmVyPXIucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3RoaXMuX2V2ZW50UmVnaXN0cnk9dGhpcy5fZXZlbnRSZWdpc3RyeXx8e307dmFyIG49dGhpcy5fZXZlbnRSZWdpc3RyeVtlXTtpZighbilyZXR1cm47dmFyIHI9bi5pbmRleE9mKHQpO3IhPT0tMSYmbi5zcGxpY2UociwxKX0sci5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7dGhpcy5fZXZlbnRSZWdpc3RyeSYmKHRoaXMuX2V2ZW50UmVnaXN0cnlbZV09W10pfSx0LkV2ZW50RW1pdHRlcj1yfSksZGVmaW5lKCJhY2Uvc2VsZWN0aW9uIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9saWIvb29wIiksaT1lKCIuL2xpYi9sYW5nIikscz1lKCIuL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLG89ZSgiLi9yYW5nZSIpLlJhbmdlLHU9ZnVuY3Rpb24oZSl7dGhpcy5zZXNzaW9uPWUsdGhpcy5kb2M9ZS5nZXREb2N1bWVudCgpLHRoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLmxlYWQ9dGhpcy5zZWxlY3Rpb25MZWFkPXRoaXMuZG9jLmNyZWF0ZUFuY2hvcigwLDApLHRoaXMuYW5jaG9yPXRoaXMuc2VsZWN0aW9uQW5jaG9yPXRoaXMuZG9jLmNyZWF0ZUFuY2hvcigwLDApO3ZhciB0PXRoaXM7dGhpcy5sZWFkLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKGUpe3QuX2VtaXQoImNoYW5nZUN1cnNvciIpLHQuJGlzRW1wdHl8fHQuX2VtaXQoImNoYW5nZVNlbGVjdGlvbiIpLCF0LiRrZWVwRGVzaXJlZENvbHVtbk9uQ2hhbmdlJiZlLm9sZC5jb2x1bW4hPWUudmFsdWUuY29sdW1uJiYodC4kZGVzaXJlZENvbHVtbj1udWxsKX0pLHRoaXMuc2VsZWN0aW9uQW5jaG9yLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7dC4kaXNFbXB0eXx8dC5fZW1pdCgiY2hhbmdlU2VsZWN0aW9uIil9KX07KGZ1bmN0aW9uKCl7ci5pbXBsZW1lbnQodGhpcyxzKSx0aGlzLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kaXNFbXB0eXx8dGhpcy5hbmNob3Iucm93PT10aGlzLmxlYWQucm93JiZ0aGlzLmFuY2hvci5jb2x1bW49PXRoaXMubGVhZC5jb2x1bW59LHRoaXMuaXNNdWx0aUxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/ITE6dGhpcy5nZXRSYW5nZSgpLmlzTXVsdGlMaW5lKCl9LHRoaXMuZ2V0Q3Vyc29yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVhZC5nZXRQb3NpdGlvbigpfSx0aGlzLnNldFNlbGVjdGlvbkFuY2hvcj1mdW5jdGlvbihlLHQpe3RoaXMuYW5jaG9yLnNldFBvc2l0aW9uKGUsdCksdGhpcy4kaXNFbXB0eSYmKHRoaXMuJGlzRW1wdHk9ITEsdGhpcy5fZW1pdCgiY2hhbmdlU2VsZWN0aW9uIikpfSx0aGlzLmdldFNlbGVjdGlvbkFuY2hvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRpc0VtcHR5P3RoaXMuZ2V0U2VsZWN0aW9uTGVhZCgpOnRoaXMuYW5jaG9yLmdldFBvc2l0aW9uKCl9LHRoaXMuZ2V0U2VsZWN0aW9uTGVhZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlYWQuZ2V0UG9zaXRpb24oKX0sdGhpcy5zaGlmdFNlbGVjdGlvbj1mdW5jdGlvbihlKXtpZih0aGlzLiRpc0VtcHR5KXt0aGlzLm1vdmVDdXJzb3JUbyh0aGlzLmxlYWQucm93LHRoaXMubGVhZC5jb2x1bW4rZSk7cmV0dXJufXZhciB0PXRoaXMuZ2V0U2VsZWN0aW9uQW5jaG9yKCksbj10aGlzLmdldFNlbGVjdGlvbkxlYWQoKSxyPXRoaXMuaXNCYWNrd2FyZHMoKTsoIXJ8fHQuY29sdW1uIT09MCkmJnRoaXMuc2V0U2VsZWN0aW9uQW5jaG9yKHQucm93LHQuY29sdW1uK2UpLChyfHxuLmNvbHVtbiE9PTApJiZ0aGlzLiRtb3ZlU2VsZWN0aW9uKGZ1bmN0aW9uKCl7dGhpcy5tb3ZlQ3Vyc29yVG8obi5yb3csbi5jb2x1bW4rZSl9KX0sdGhpcy5pc0JhY2t3YXJkcz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuYW5jaG9yLHQ9dGhpcy5sZWFkO3JldHVybiBlLnJvdz50LnJvd3x8ZS5yb3c9PXQucm93JiZlLmNvbHVtbj50LmNvbHVtbn0sdGhpcy5nZXRSYW5nZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuYW5jaG9yLHQ9dGhpcy5sZWFkO3JldHVybiB0aGlzLmlzRW1wdHkoKT9vLmZyb21Qb2ludHModCx0KTp0aGlzLmlzQmFja3dhcmRzKCk/by5mcm9tUG9pbnRzKHQsZSk6by5mcm9tUG9pbnRzKGUsdCl9LHRoaXMuY2xlYXJTZWxlY3Rpb249ZnVuY3Rpb24oKXt0aGlzLiRpc0VtcHR5fHwodGhpcy4kaXNFbXB0eT0hMCx0aGlzLl9lbWl0KCJjaGFuZ2VTZWxlY3Rpb24iKSl9LHRoaXMuc2VsZWN0QWxsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5kb2MuZ2V0TGVuZ3RoKCktMTt0aGlzLnNldFNlbGVjdGlvbkFuY2hvcigwLDApLHRoaXMubW92ZUN1cnNvclRvKGUsdGhpcy5kb2MuZ2V0TGluZShlKS5sZW5ndGgpfSx0aGlzLnNldFJhbmdlPXRoaXMuc2V0U2VsZWN0aW9uUmFuZ2U9ZnVuY3Rpb24oZSx0KXt0Pyh0aGlzLnNldFNlbGVjdGlvbkFuY2hvcihlLmVuZC5yb3csZS5lbmQuY29sdW1uKSx0aGlzLnNlbGVjdFRvKGUuc3RhcnQucm93LGUuc3RhcnQuY29sdW1uKSk6KHRoaXMuc2V0U2VsZWN0aW9uQW5jaG9yKGUuc3RhcnQucm93LGUuc3RhcnQuY29sdW1uKSx0aGlzLnNlbGVjdFRvKGUuZW5kLnJvdyxlLmVuZC5jb2x1bW4pKSx0aGlzLiRkZXNpcmVkQ29sdW1uPW51bGx9LHRoaXMuJG1vdmVTZWxlY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZWFkO3RoaXMuJGlzRW1wdHkmJnRoaXMuc2V0U2VsZWN0aW9uQW5jaG9yKHQucm93LHQuY29sdW1uKSxlLmNhbGwodGhpcyl9LHRoaXMuc2VsZWN0VG89ZnVuY3Rpb24oZSx0KXt0aGlzLiRtb3ZlU2VsZWN0aW9uKGZ1bmN0aW9uKCl7dGhpcy5tb3ZlQ3Vyc29yVG8oZSx0KX0pfSx0aGlzLnNlbGVjdFRvUG9zaXRpb249ZnVuY3Rpb24oZSl7dGhpcy4kbW92ZVNlbGVjdGlvbihmdW5jdGlvbigpe3RoaXMubW92ZUN1cnNvclRvUG9zaXRpb24oZSl9KX0sdGhpcy5zZWxlY3RVcD1mdW5jdGlvbigpe3RoaXMuJG1vdmVTZWxlY3Rpb24odGhpcy5tb3ZlQ3Vyc29yVXApfSx0aGlzLnNlbGVjdERvd249ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlU2VsZWN0aW9uKHRoaXMubW92ZUN1cnNvckRvd24pfSx0aGlzLnNlbGVjdFJpZ2h0PWZ1bmN0aW9uKCl7dGhpcy4kbW92ZVNlbGVjdGlvbih0aGlzLm1vdmVDdXJzb3JSaWdodCl9LHRoaXMuc2VsZWN0TGVmdD1mdW5jdGlvbigpe3RoaXMuJG1vdmVTZWxlY3Rpb24odGhpcy5tb3ZlQ3Vyc29yTGVmdCl9LHRoaXMuc2VsZWN0TGluZVN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy4kbW92ZVNlbGVjdGlvbih0aGlzLm1vdmVDdXJzb3JMaW5lU3RhcnQpfSx0aGlzLnNlbGVjdExpbmVFbmQ9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlU2VsZWN0aW9uKHRoaXMubW92ZUN1cnNvckxpbmVFbmQpfSx0aGlzLnNlbGVjdEZpbGVFbmQ9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlU2VsZWN0aW9uKHRoaXMubW92ZUN1cnNvckZpbGVFbmQpfSx0aGlzLnNlbGVjdEZpbGVTdGFydD1mdW5jdGlvbigpe3RoaXMuJG1vdmVTZWxlY3Rpb24odGhpcy5tb3ZlQ3Vyc29yRmlsZVN0YXJ0KX0sdGhpcy5zZWxlY3RXb3JkUmlnaHQ9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlU2VsZWN0aW9uKHRoaXMubW92ZUN1cnNvcldvcmRSaWdodCl9LHRoaXMuc2VsZWN0V29yZExlZnQ9ZnVuY3Rpb24oKXt0aGlzLiRtb3ZlU2VsZWN0aW9uKHRoaXMubW92ZUN1cnNvcldvcmRMZWZ0KX0sdGhpcy5nZXRXb3JkUmFuZ2U9ZnVuY3Rpb24oZSx0KXtpZih0eXBlb2YgdD09InVuZGVmaW5lZCIpe3ZhciBuPWV8fHRoaXMubGVhZDtlPW4ucm93LHQ9bi5jb2x1bW59cmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRXb3JkUmFuZ2UoZSx0KX0sdGhpcy5zZWxlY3RXb3JkPWZ1bmN0aW9uKCl7dGhpcy5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLmdldFdvcmRSYW5nZSgpKX0sdGhpcy5zZWxlY3RBV29yZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0Q3Vyc29yKCksdD10aGlzLnNlc3Npb24uZ2V0QVdvcmRSYW5nZShlLnJvdyxlLmNvbHVtbik7dGhpcy5zZXRTZWxlY3Rpb25SYW5nZSh0KX0sdGhpcy5nZXRMaW5lUmFuZ2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj10eXBlb2YgZT09Im51bWJlciI/ZTp0aGlzLmxlYWQucm93LHIsaT10aGlzLnNlc3Npb24uZ2V0Rm9sZExpbmUobik7cmV0dXJuIGk/KG49aS5zdGFydC5yb3cscj1pLmVuZC5yb3cpOnI9bix0P25ldyBvKG4sMCxyLHRoaXMuc2Vzc2lvbi5nZXRMaW5lKHIpLmxlbmd0aCk6bmV3IG8obiwwLHIrMSwwKX0sdGhpcy5zZWxlY3RMaW5lPWZ1bmN0aW9uKCl7dGhpcy5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLmdldExpbmVSYW5nZSgpKX0sdGhpcy5tb3ZlQ3Vyc29yVXA9ZnVuY3Rpb24oKXt0aGlzLm1vdmVDdXJzb3JCeSgtMSwwKX0sdGhpcy5tb3ZlQ3Vyc29yRG93bj1mdW5jdGlvbigpe3RoaXMubW92ZUN1cnNvckJ5KDEsMCl9LHRoaXMubW92ZUN1cnNvckxlZnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlYWQuZ2V0UG9zaXRpb24oKSx0O2lmKHQ9dGhpcy5zZXNzaW9uLmdldEZvbGRBdChlLnJvdyxlLmNvbHVtbiwtMSkpdGhpcy5tb3ZlQ3Vyc29yVG8odC5zdGFydC5yb3csdC5zdGFydC5jb2x1bW4pO2Vsc2UgaWYoZS5jb2x1bW49PTApZS5yb3c+MCYmdGhpcy5tb3ZlQ3Vyc29yVG8oZS5yb3ctMSx0aGlzLmRvYy5nZXRMaW5lKGUucm93LTEpLmxlbmd0aCk7ZWxzZXt2YXIgbj10aGlzLnNlc3Npb24uZ2V0VGFiU2l6ZSgpO3RoaXMuc2Vzc2lvbi5pc1RhYlN0b3AoZSkmJnRoaXMuZG9jLmdldExpbmUoZS5yb3cpLnNsaWNlKGUuY29sdW1uLW4sZS5jb2x1bW4pLnNwbGl0KCIgIikubGVuZ3RoLTE9PW4/dGhpcy5tb3ZlQ3Vyc29yQnkoMCwtbik6dGhpcy5tb3ZlQ3Vyc29yQnkoMCwtMSl9fSx0aGlzLm1vdmVDdXJzb3JSaWdodD1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVhZC5nZXRQb3NpdGlvbigpLHQ7aWYodD10aGlzLnNlc3Npb24uZ2V0Rm9sZEF0KGUucm93LGUuY29sdW1uLDEpKXRoaXMubW92ZUN1cnNvclRvKHQuZW5kLnJvdyx0LmVuZC5jb2x1bW4pO2Vsc2UgaWYodGhpcy5sZWFkLmNvbHVtbj09dGhpcy5kb2MuZ2V0TGluZSh0aGlzLmxlYWQucm93KS5sZW5ndGgpdGhpcy5sZWFkLnJvdzx0aGlzLmRvYy5nZXRMZW5ndGgoKS0xJiZ0aGlzLm1vdmVDdXJzb3JUbyh0aGlzLmxlYWQucm93KzEsMCk7ZWxzZXt2YXIgbj10aGlzLnNlc3Npb24uZ2V0VGFiU2l6ZSgpLGU9dGhpcy5sZWFkO3RoaXMuc2Vzc2lvbi5pc1RhYlN0b3AoZSkmJnRoaXMuZG9jLmdldExpbmUoZS5yb3cpLnNsaWNlKGUuY29sdW1uLGUuY29sdW1uK24pLnNwbGl0KCIgIikubGVuZ3RoLTE9PW4/dGhpcy5tb3ZlQ3Vyc29yQnkoMCxuKTp0aGlzLm1vdmVDdXJzb3JCeSgwLDEpfX0sdGhpcy5tb3ZlQ3Vyc29yTGluZVN0YXJ0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZWFkLnJvdyx0PXRoaXMubGVhZC5jb2x1bW4sbj10aGlzLnNlc3Npb24uZG9jdW1lbnRUb1NjcmVlblJvdyhlLHQpLHI9dGhpcy5zZXNzaW9uLnNjcmVlblRvRG9jdW1lbnRQb3NpdGlvbihuLDApLGk9dGhpcy5zZXNzaW9uLmdldERpc3BsYXlMaW5lKGUsbnVsbCxyLnJvdyxyLmNvbHVtbikscz1pLm1hdGNoKC9eXHMqLyk7c1swXS5sZW5ndGg9PXQ/dGhpcy5tb3ZlQ3Vyc29yVG8oci5yb3csci5jb2x1bW4pOnRoaXMubW92ZUN1cnNvclRvKHIucm93LHIuY29sdW1uK3NbMF0ubGVuZ3RoKX0sdGhpcy5tb3ZlQ3Vyc29yTGluZUVuZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVhZCx0PXRoaXMuc2Vzc2lvbi5nZXREb2N1bWVudExhc3RSb3dDb2x1bW5Qb3NpdGlvbihlLnJvdyxlLmNvbHVtbik7dGhpcy5tb3ZlQ3Vyc29yVG8odC5yb3csdC5jb2x1bW4pfSx0aGlzLm1vdmVDdXJzb3JGaWxlRW5kPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5kb2MuZ2V0TGVuZ3RoKCktMSx0PXRoaXMuZG9jLmdldExpbmUoZSkubGVuZ3RoO3RoaXMubW92ZUN1cnNvclRvKGUsdCl9LHRoaXMubW92ZUN1cnNvckZpbGVTdGFydD1mdW5jdGlvbigpe3RoaXMubW92ZUN1cnNvclRvKDAsMCl9LHRoaXMubW92ZUN1cnNvckxvbmdXb3JkUmlnaHQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlYWQucm93LHQ9dGhpcy5sZWFkLmNvbHVtbixuPXRoaXMuZG9jLmdldExpbmUoZSkscj1uLnN1YnN0cmluZyh0KSxpO3RoaXMuc2Vzc2lvbi5ub25Ub2tlblJlLmxhc3RJbmRleD0wLHRoaXMuc2Vzc2lvbi50b2tlblJlLmxhc3RJbmRleD0wO3ZhciBzPXRoaXMuc2Vzc2lvbi5nZXRGb2xkQXQoZSx0LDEpO2lmKHMpe3RoaXMubW92ZUN1cnNvclRvKHMuZW5kLnJvdyxzLmVuZC5jb2x1bW4pO3JldHVybn1pZihpPXRoaXMuc2Vzc2lvbi5ub25Ub2tlblJlLmV4ZWMocikpdCs9dGhpcy5zZXNzaW9uLm5vblRva2VuUmUubGFzdEluZGV4LHRoaXMuc2Vzc2lvbi5ub25Ub2tlblJlLmxhc3RJbmRleD0wLHI9bi5zdWJzdHJpbmcodCk7aWYodD49bi5sZW5ndGgpe3RoaXMubW92ZUN1cnNvclRvKGUsbi5sZW5ndGgpLHRoaXMubW92ZUN1cnNvclJpZ2h0KCksZTx0aGlzLmRvYy5nZXRMZW5ndGgoKS0xJiZ0aGlzLm1vdmVDdXJzb3JXb3JkUmlnaHQoKTtyZXR1cm59aWYoaT10aGlzLnNlc3Npb24udG9rZW5SZS5leGVjKHIpKXQrPXRoaXMuc2Vzc2lvbi50b2tlblJlLmxhc3RJbmRleCx0aGlzLnNlc3Npb24udG9rZW5SZS5sYXN0SW5kZXg9MDt0aGlzLm1vdmVDdXJzb3JUbyhlLHQpfSx0aGlzLm1vdmVDdXJzb3JMb25nV29yZExlZnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlYWQucm93LHQ9dGhpcy5sZWFkLmNvbHVtbixuO2lmKG49dGhpcy5zZXNzaW9uLmdldEZvbGRBdChlLHQsLTEpKXt0aGlzLm1vdmVDdXJzb3JUbyhuLnN0YXJ0LnJvdyxuLnN0YXJ0LmNvbHVtbik7cmV0dXJufXZhciByPXRoaXMuc2Vzc2lvbi5nZXRGb2xkU3RyaW5nQXQoZSx0LC0xKTtyPT1udWxsJiYocj10aGlzLmRvYy5nZXRMaW5lKGUpLnN1YnN0cmluZygwLHQpKTt2YXIgcz1pLnN0cmluZ1JldmVyc2Uociksbzt0aGlzLnNlc3Npb24ubm9uVG9rZW5SZS5sYXN0SW5kZXg9MCx0aGlzLnNlc3Npb24udG9rZW5SZS5sYXN0SW5kZXg9MDtpZihvPXRoaXMuc2Vzc2lvbi5ub25Ub2tlblJlLmV4ZWMocykpdC09dGhpcy5zZXNzaW9uLm5vblRva2VuUmUubGFzdEluZGV4LHM9cy5zbGljZSh0aGlzLnNlc3Npb24ubm9uVG9rZW5SZS5sYXN0SW5kZXgpLHRoaXMuc2Vzc2lvbi5ub25Ub2tlblJlLmxhc3RJbmRleD0wO2lmKHQ8PTApe3RoaXMubW92ZUN1cnNvclRvKGUsMCksdGhpcy5tb3ZlQ3Vyc29yTGVmdCgpLGU+MCYmdGhpcy5tb3ZlQ3Vyc29yV29yZExlZnQoKTtyZXR1cm59aWYobz10aGlzLnNlc3Npb24udG9rZW5SZS5leGVjKHMpKXQtPXRoaXMuc2Vzc2lvbi50b2tlblJlLmxhc3RJbmRleCx0aGlzLnNlc3Npb24udG9rZW5SZS5sYXN0SW5kZXg9MDt0aGlzLm1vdmVDdXJzb3JUbyhlLHQpfSx0aGlzLiRzaG9ydFdvcmRFbmRJbmRleD1mdW5jdGlvbihlKXt2YXIgdCxuPTAscixpPS9ccy8scz10aGlzLnNlc3Npb24udG9rZW5SZTtzLmxhc3RJbmRleD0wO2lmKHQ9dGhpcy5zZXNzaW9uLnRva2VuUmUuZXhlYyhlKSluPXRoaXMuc2Vzc2lvbi50b2tlblJlLmxhc3RJbmRleDtlbHNle3doaWxlKChyPWVbbl0pJiZpLnRlc3QocikpbisrO2lmKG48PTEpe3MubGFzdEluZGV4PTA7d2hpbGUoKHI9ZVtuXSkmJiFzLnRlc3Qocikpe3MubGFzdEluZGV4PTAsbisrO2lmKGkudGVzdChyKSl7aWYobj4yKXtuLS07YnJlYWt9d2hpbGUoKHI9ZVtuXSkmJmkudGVzdChyKSluKys7aWYobj4yKWJyZWFrfX19fXJldHVybiBzLmxhc3RJbmRleD0wLG59LHRoaXMubW92ZUN1cnNvclNob3J0V29yZFJpZ2h0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZWFkLnJvdyx0PXRoaXMubGVhZC5jb2x1bW4sbj10aGlzLmRvYy5nZXRMaW5lKGUpLHI9bi5zdWJzdHJpbmcodCksaT10aGlzLnNlc3Npb24uZ2V0Rm9sZEF0KGUsdCwxKTtpZihpKXJldHVybiB0aGlzLm1vdmVDdXJzb3JUbyhpLmVuZC5yb3csaS5lbmQuY29sdW1uKTtpZih0PT1uLmxlbmd0aCl7dmFyIHM9dGhpcy5kb2MuZ2V0TGVuZ3RoKCk7ZG8gZSsrLHI9dGhpcy5kb2MuZ2V0TGluZShlKTt3aGlsZShlPHMmJi9eXHMqJC8udGVzdChyKSk7L15ccysvLnRlc3Qocil8fChyPSIiKSx0PTB9dmFyIG89dGhpcy4kc2hvcnRXb3JkRW5kSW5kZXgocik7dGhpcy5tb3ZlQ3Vyc29yVG8oZSx0K28pfSx0aGlzLm1vdmVDdXJzb3JTaG9ydFdvcmRMZWZ0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZWFkLnJvdyx0PXRoaXMubGVhZC5jb2x1bW4sbjtpZihuPXRoaXMuc2Vzc2lvbi5nZXRGb2xkQXQoZSx0LC0xKSlyZXR1cm4gdGhpcy5tb3ZlQ3Vyc29yVG8obi5zdGFydC5yb3csbi5zdGFydC5jb2x1bW4pO3ZhciByPXRoaXMuc2Vzc2lvbi5nZXRMaW5lKGUpLnN1YnN0cmluZygwLHQpO2lmKHQ9PTApe2RvIGUtLSxyPXRoaXMuZG9jLmdldExpbmUoZSk7d2hpbGUoZT4wJiYvXlxzKiQvLnRlc3QocikpO3Q9ci5sZW5ndGgsL1xzKyQvLnRlc3Qocil8fChyPSIiKX12YXIgcz1pLnN0cmluZ1JldmVyc2Uociksbz10aGlzLiRzaG9ydFdvcmRFbmRJbmRleChzKTtyZXR1cm4gdGhpcy5tb3ZlQ3Vyc29yVG8oZSx0LW8pfSx0aGlzLm1vdmVDdXJzb3JXb3JkUmlnaHQ9ZnVuY3Rpb24oKXt0aGlzLnNlc3Npb24uJHNlbGVjdExvbmdXb3Jkcz90aGlzLm1vdmVDdXJzb3JMb25nV29yZFJpZ2h0KCk6dGhpcy5tb3ZlQ3Vyc29yU2hvcnRXb3JkUmlnaHQoKX0sdGhpcy5tb3ZlQ3Vyc29yV29yZExlZnQ9ZnVuY3Rpb24oKXt0aGlzLnNlc3Npb24uJHNlbGVjdExvbmdXb3Jkcz90aGlzLm1vdmVDdXJzb3JMb25nV29yZExlZnQoKTp0aGlzLm1vdmVDdXJzb3JTaG9ydFdvcmRMZWZ0KCl9LHRoaXMubW92ZUN1cnNvckJ5PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zZXNzaW9uLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLmxlYWQucm93LHRoaXMubGVhZC5jb2x1bW4pO3Q9PT0wJiYodGhpcy4kZGVzaXJlZENvbHVtbj9uLmNvbHVtbj10aGlzLiRkZXNpcmVkQ29sdW1uOnRoaXMuJGRlc2lyZWRDb2x1bW49bi5jb2x1bW4pO3ZhciByPXRoaXMuc2Vzc2lvbi5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24obi5yb3crZSxuLmNvbHVtbik7dGhpcy5tb3ZlQ3Vyc29yVG8oci5yb3csci5jb2x1bW4rdCx0PT09MCl9LHRoaXMubW92ZUN1cnNvclRvUG9zaXRpb249ZnVuY3Rpb24oZSl7dGhpcy5tb3ZlQ3Vyc29yVG8oZS5yb3csZS5jb2x1bW4pfSx0aGlzLm1vdmVDdXJzb3JUbz1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5zZXNzaW9uLmdldEZvbGRBdChlLHQsMSk7ciYmKGU9ci5zdGFydC5yb3csdD1yLnN0YXJ0LmNvbHVtbiksdGhpcy4ka2VlcERlc2lyZWRDb2x1bW5PbkNoYW5nZT0hMCx0aGlzLmxlYWQuc2V0UG9zaXRpb24oZSx0KSx0aGlzLiRrZWVwRGVzaXJlZENvbHVtbk9uQ2hhbmdlPSExLG58fCh0aGlzLiRkZXNpcmVkQ29sdW1uPW51bGwpfSx0aGlzLm1vdmVDdXJzb3JUb1NjcmVlbj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5zZXNzaW9uLnNjcmVlblRvRG9jdW1lbnRQb3NpdGlvbihlLHQpO3RoaXMubW92ZUN1cnNvclRvKHIucm93LHIuY29sdW1uLG4pfSx0aGlzLmRldGFjaD1mdW5jdGlvbigpe3RoaXMubGVhZC5kZXRhY2goKSx0aGlzLmFuY2hvci5kZXRhY2goKSx0aGlzLnNlc3Npb249dGhpcy5kb2M9bnVsbH0sdGhpcy5mcm9tT3JpZW50ZWRSYW5nZT1mdW5jdGlvbihlKXt0aGlzLnNldFNlbGVjdGlvblJhbmdlKGUsZS5jdXJzb3I9PWUuc3RhcnQpLHRoaXMuJGRlc2lyZWRDb2x1bW49ZS5kZXNpcmVkQ29sdW1ufHx0aGlzLiRkZXNpcmVkQ29sdW1ufSx0aGlzLnRvT3JpZW50ZWRSYW5nZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldFJhbmdlKCk7cmV0dXJuIGU/KGUuc3RhcnQuY29sdW1uPXQuc3RhcnQuY29sdW1uLGUuc3RhcnQucm93PXQuc3RhcnQucm93LGUuZW5kLmNvbHVtbj10LmVuZC5jb2x1bW4sZS5lbmQucm93PXQuZW5kLnJvdyk6ZT10LGUuY3Vyc29yPXRoaXMuaXNCYWNrd2FyZHMoKT9lLnN0YXJ0OmUuZW5kLGUuZGVzaXJlZENvbHVtbj10aGlzLiRkZXNpcmVkQ29sdW1uLGV9fSkuY2FsbCh1LnByb3RvdHlwZSksdC5TZWxlY3Rpb249dX0pLGRlZmluZSgiYWNlL3JhbmdlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMuc3RhcnQ9e3JvdzplLGNvbHVtbjp0fSx0aGlzLmVuZD17cm93Om4sY29sdW1uOnJ9fTsoZnVuY3Rpb24oKXt0aGlzLmlzRXF1YWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc3RhcnQucm93PT1lLnN0YXJ0LnJvdyYmdGhpcy5lbmQucm93PT1lLmVuZC5yb3cmJnRoaXMuc3RhcnQuY29sdW1uPT1lLnN0YXJ0LmNvbHVtbiYmdGhpcy5lbmQuY29sdW1uPT1lLmVuZC5jb2x1bW59LHRoaXMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iUmFuZ2U6IFsiK3RoaXMuc3RhcnQucm93KyIvIit0aGlzLnN0YXJ0LmNvbHVtbisiXSAtPiBbIit0aGlzLmVuZC5yb3crIi8iK3RoaXMuZW5kLmNvbHVtbisiXSJ9LHRoaXMuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jb21wYXJlKGUsdCk9PTB9LHRoaXMuY29tcGFyZVJhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5lbmQscj1lLnN0YXJ0O3JldHVybiB0PXRoaXMuY29tcGFyZShuLnJvdyxuLmNvbHVtbiksdD09MT8odD10aGlzLmNvbXBhcmUoci5yb3csci5jb2x1bW4pLHQ9PTE/Mjp0PT0wPzE6MCk6dD09LTE/LTI6KHQ9dGhpcy5jb21wYXJlKHIucm93LHIuY29sdW1uKSx0PT0tMT8tMTp0PT0xPzQyOjApfSx0aGlzLmNvbXBhcmVQb2ludD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb21wYXJlKGUucm93LGUuY29sdW1uKX0sdGhpcy5jb250YWluc1JhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNvbXBhcmVQb2ludChlLnN0YXJ0KT09MCYmdGhpcy5jb21wYXJlUG9pbnQoZS5lbmQpPT0wfSx0aGlzLmludGVyc2VjdHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jb21wYXJlUmFuZ2UoZSk7cmV0dXJuIHQ9PS0xfHx0PT0wfHx0PT0xfSx0aGlzLmlzRW5kPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZW5kLnJvdz09ZSYmdGhpcy5lbmQuY29sdW1uPT10fSx0aGlzLmlzU3RhcnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PWUmJnRoaXMuc3RhcnQuY29sdW1uPT10fSx0aGlzLnNldFN0YXJ0PWZ1bmN0aW9uKGUsdCl7dHlwZW9mIGU9PSJvYmplY3QiPyh0aGlzLnN0YXJ0LmNvbHVtbj1lLmNvbHVtbix0aGlzLnN0YXJ0LnJvdz1lLnJvdyk6KHRoaXMuc3RhcnQucm93PWUsdGhpcy5zdGFydC5jb2x1bW49dCl9LHRoaXMuc2V0RW5kPWZ1bmN0aW9uKGUsdCl7dHlwZW9mIGU9PSJvYmplY3QiPyh0aGlzLmVuZC5jb2x1bW49ZS5jb2x1bW4sdGhpcy5lbmQucm93PWUucm93KToodGhpcy5lbmQucm93PWUsdGhpcy5lbmQuY29sdW1uPXQpfSx0aGlzLmluc2lkZT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNvbXBhcmUoZSx0KT09MD90aGlzLmlzRW5kKGUsdCl8fHRoaXMuaXNTdGFydChlLHQpPyExOiEwOiExfSx0aGlzLmluc2lkZVN0YXJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuY29tcGFyZShlLHQpPT0wP3RoaXMuaXNFbmQoZSx0KT8hMTohMDohMX0sdGhpcy5pbnNpZGVFbmQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jb21wYXJlKGUsdCk9PTA/dGhpcy5pc1N0YXJ0KGUsdCk/ITE6ITA6ITF9LHRoaXMuY29tcGFyZT1mdW5jdGlvbihlLHQpe3JldHVybiF0aGlzLmlzTXVsdGlMaW5lKCkmJmU9PT10aGlzLnN0YXJ0LnJvdz90PHRoaXMuc3RhcnQuY29sdW1uPy0xOnQ+dGhpcy5lbmQuY29sdW1uPzE6MDplPHRoaXMuc3RhcnQucm93Py0xOmU+dGhpcy5lbmQucm93PzE6dGhpcy5zdGFydC5yb3c9PT1lP3Q+PXRoaXMuc3RhcnQuY29sdW1uPzA6LTE6dGhpcy5lbmQucm93PT09ZT90PD10aGlzLmVuZC5jb2x1bW4/MDoxOjB9LHRoaXMuY29tcGFyZVN0YXJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuc3RhcnQucm93PT1lJiZ0aGlzLnN0YXJ0LmNvbHVtbj09dD8tMTp0aGlzLmNvbXBhcmUoZSx0KX0sdGhpcy5jb21wYXJlRW5kPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZW5kLnJvdz09ZSYmdGhpcy5lbmQuY29sdW1uPT10PzE6dGhpcy5jb21wYXJlKGUsdCl9LHRoaXMuY29tcGFyZUluc2lkZT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmVuZC5yb3c9PWUmJnRoaXMuZW5kLmNvbHVtbj09dD8xOnRoaXMuc3RhcnQucm93PT1lJiZ0aGlzLnN0YXJ0LmNvbHVtbj09dD8tMTp0aGlzLmNvbXBhcmUoZSx0KX0sdGhpcy5jbGlwUm93cz1mdW5jdGlvbihlLHQpe2lmKHRoaXMuZW5kLnJvdz50KXZhciBuPXtyb3c6dCsxLGNvbHVtbjowfTtpZih0aGlzLnN0YXJ0LnJvdz50KXZhciBpPXtyb3c6dCsxLGNvbHVtbjowfTtpZih0aGlzLnN0YXJ0LnJvdzxlKXZhciBpPXtyb3c6ZSxjb2x1bW46MH07aWYodGhpcy5lbmQucm93PGUpdmFyIG49e3JvdzplLGNvbHVtbjowfTtyZXR1cm4gci5mcm9tUG9pbnRzKGl8fHRoaXMuc3RhcnQsbnx8dGhpcy5lbmQpfSx0aGlzLmV4dGVuZD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuY29tcGFyZShlLHQpO2lmKG49PTApcmV0dXJuIHRoaXM7aWYobj09LTEpdmFyIGk9e3JvdzplLGNvbHVtbjp0fTtlbHNlIHZhciBzPXtyb3c6ZSxjb2x1bW46dH07cmV0dXJuIHIuZnJvbVBvaW50cyhpfHx0aGlzLnN0YXJ0LHN8fHRoaXMuZW5kKX0sdGhpcy5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnQucm93PT10aGlzLmVuZC5yb3cmJnRoaXMuc3RhcnQuY29sdW1uPT10aGlzLmVuZC5jb2x1bW59LHRoaXMuaXNNdWx0aUxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydC5yb3chPT10aGlzLmVuZC5yb3d9LHRoaXMuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gci5mcm9tUG9pbnRzKHRoaXMuc3RhcnQsdGhpcy5lbmQpfSx0aGlzLmNvbGxhcHNlUm93cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZC5jb2x1bW49PTA/bmV3IHIodGhpcy5zdGFydC5yb3csMCxNYXRoLm1heCh0aGlzLnN0YXJ0LnJvdyx0aGlzLmVuZC5yb3ctMSksMCk6bmV3IHIodGhpcy5zdGFydC5yb3csMCx0aGlzLmVuZC5yb3csMCl9LHRoaXMudG9TY3JlZW5SYW5nZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLnN0YXJ0KSxuPWUuZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKHRoaXMuZW5kKTtyZXR1cm4gbmV3IHIodC5yb3csdC5jb2x1bW4sbi5yb3csbi5jb2x1bW4pfX0pLmNhbGwoci5wcm90b3R5cGUpLHIuZnJvbVBvaW50cz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgcihlLnJvdyxlLmNvbHVtbix0LnJvdyx0LmNvbHVtbil9LHQuUmFuZ2U9cn0pLGRlZmluZSgiYWNlL21vZGUvdGV4dCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2JlaGF2aW91ciIsImFjZS91bmljb2RlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixpPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMscz1lKCIuL2JlaGF2aW91ciIpLkJlaGF2aW91cixvPWUoIi4uL3VuaWNvZGUiKSx1PWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyByKChuZXcgaSkuZ2V0UnVsZXMoKSksdGhpcy4kYmVoYXZpb3VyPW5ldyBzfTsoZnVuY3Rpb24oKXt0aGlzLnRva2VuUmU9bmV3IFJlZ0V4cCgiXlsiK28ucGFja2FnZXMuTCtvLnBhY2thZ2VzLk1uK28ucGFja2FnZXMuTWMrby5wYWNrYWdlcy5OZCtvLnBhY2thZ2VzLlBjKyJcXCRfXSsiLCJnIiksdGhpcy5ub25Ub2tlblJlPW5ldyBSZWdFeHAoIl4oPzpbXiIrby5wYWNrYWdlcy5MK28ucGFja2FnZXMuTW4rby5wYWNrYWdlcy5NYytvLnBhY2thZ2VzLk5kK28ucGFja2FnZXMuUGMrIlxcJF9dfHNdKSsiLCJnIiksdGhpcy5nZXRUb2tlbml6ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdG9rZW5pemVyfSx0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihlLHQsbixyKXt9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiIifSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe30sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14oXHMrKS8pO3JldHVybiB0P3RbMV06IiJ9LHRoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsfSx0aGlzLmNyZWF0ZU1vZGVEZWxlZ2F0ZXM9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuJGVtYmVkcylyZXR1cm47dGhpcy4kbW9kZXM9e307Zm9yKHZhciB0PTA7dDx0aGlzLiRlbWJlZHMubGVuZ3RoO3QrKyllW3RoaXMuJGVtYmVkc1t0XV0mJih0aGlzLiRtb2Rlc1t0aGlzLiRlbWJlZHNbdF1dPW5ldyBlW3RoaXMuJGVtYmVkc1t0XV0pO3ZhciBuPVsidG9nZ2xlQ29tbWVudExpbmVzIiwiZ2V0TmV4dExpbmVJbmRlbnQiLCJjaGVja091dGRlbnQiLCJhdXRvT3V0ZGVudCIsInRyYW5zZm9ybUFjdGlvbiJdO2Zvcih2YXIgdD0wO3Q8bi5sZW5ndGg7dCsrKShmdW5jdGlvbihlKXt2YXIgcj1uW3RdLGk9ZVtyXTtlW25bdF1dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGRlbGVnYXRvcihyLGFyZ3VtZW50cyxpKX19KSh0aGlzKX0sdGhpcy4kZGVsZWdhdG9yPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10WzBdO2Zvcih2YXIgaT0wO2k8dGhpcy4kZW1iZWRzLmxlbmd0aDtpKyspe2lmKCF0aGlzLiRtb2Rlc1t0aGlzLiRlbWJlZHNbaV1dKWNvbnRpbnVlO3ZhciBzPXIuc3BsaXQodGhpcy4kZW1iZWRzW2ldKTtpZighc1swXSYmc1sxXSl7dFswXT1zWzFdO3ZhciBvPXRoaXMuJG1vZGVzW3RoaXMuJGVtYmVkc1tpXV07cmV0dXJuIG9bZV0uYXBwbHkobyx0KX19dmFyIHU9bi5hcHBseSh0aGlzLHQpO3JldHVybiBuP3U6dW5kZWZpbmVkfSx0aGlzLnRyYW5zZm9ybUFjdGlvbj1mdW5jdGlvbihlLHQsbixyLGkpe2lmKHRoaXMuJGJlaGF2aW91cil7dmFyIHM9dGhpcy4kYmVoYXZpb3VyLmdldEJlaGF2aW91cnMoKTtmb3IodmFyIG8gaW4gcylpZihzW29dW3RdKXt2YXIgdT1zW29dW3RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZih1KXJldHVybiB1fX19fSkuY2FsbCh1LnByb3RvdHlwZSksdC5Nb2RlPXV9KSxkZWZpbmUoImFjZS90b2tlbml6ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZnVuY3Rpb24oZSx0KXt0PXQ/ImciK3Q6ImciLHRoaXMucnVsZXM9ZSx0aGlzLnJlZ0V4cHM9e30sdGhpcy5tYXRjaE1hcHBpbmdzPXt9O2Zvcih2YXIgbiBpbiB0aGlzLnJ1bGVzKXt2YXIgcj10aGlzLnJ1bGVzW25dLGk9cixzPVtdLG89MCx1PXRoaXMubWF0Y2hNYXBwaW5nc1tuXT17fTtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKyl7aVthXS5yZWdleCBpbnN0YW5jZW9mIFJlZ0V4cCYmKGlbYV0ucmVnZXg9aVthXS5yZWdleC50b1N0cmluZygpLnNsaWNlKDEsLTEpKTt2YXIgZj0obmV3IFJlZ0V4cCgiKD86KCIraVthXS5yZWdleCsiKXwoLikpIikpLmV4ZWMoImEiKS5sZW5ndGgtMixsPWlbYV0ucmVnZXgucmVwbGFjZSgvXFwoWzAtOV0rKS9nLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIlxcIisocGFyc2VJbnQodCwxMCkrbysxKX0pO2lmKGY+MSYmaVthXS50b2tlbi5sZW5ndGghPT1mLTEpdGhyb3cgbmV3IEVycm9yKCJNYXRjaGluZyBncm91cHMgYW5kIGxlbmd0aCBvZiB0aGUgdG9rZW4gYXJyYXkgZG9uJ3QgbWF0Y2ggaW4gcnVsZSAjIithKyIgb2Ygc3RhdGUgIituKTt1W29dPXtydWxlOmEsbGVuOmZ9LG8rPWYscy5wdXNoKGwpfXRoaXMucmVnRXhwc1tuXT1uZXcgUmVnRXhwKCIoPzooIitzLmpvaW4oIil8KCIpKyIpfCguKSkiLHQpfX07KGZ1bmN0aW9uKCl7dGhpcy5nZXRMaW5lVG9rZW5zPWZ1bmN0aW9uKGUsdCl7dmFyIG49dHx8InN0YXJ0IixyPXRoaXMucnVsZXNbbl0saT10aGlzLm1hdGNoTWFwcGluZ3Nbbl0scz10aGlzLnJlZ0V4cHNbbl07cy5sYXN0SW5kZXg9MDt2YXIgbyx1PVtdLGE9MCxmPXt0eXBlOm51bGwsdmFsdWU6IiJ9O3doaWxlKG89cy5leGVjKGUpKXt2YXIgbD0idGV4dCIsYz1udWxsLGg9W29bMF1dO2Zvcih2YXIgcD0wO3A8by5sZW5ndGgtMjtwKyspe2lmKG9bcCsxXT09PXVuZGVmaW5lZCljb250aW51ZTtjPXJbaVtwXS5ydWxlXSxpW3BdLmxlbj4xJiYoaD1vLnNsaWNlKHArMixwKzEraVtwXS5sZW4pKSx0eXBlb2YgYy50b2tlbj09ImZ1bmN0aW9uIj9sPWMudG9rZW4uYXBwbHkodGhpcyxoKTpsPWMudG9rZW4sYy5uZXh0JiYobj1jLm5leHQscj10aGlzLnJ1bGVzW25dLGk9dGhpcy5tYXRjaE1hcHBpbmdzW25dLGE9cy5sYXN0SW5kZXgscz10aGlzLnJlZ0V4cHNbbl0scy5sYXN0SW5kZXg9YSk7YnJlYWt9aWYoaFswXSl7dHlwZW9mIGw9PSJzdHJpbmciJiYoaD1baC5qb2luKCIiKV0sbD1bbF0pO2Zvcih2YXIgcD0wO3A8aC5sZW5ndGg7cCsrKXtpZighaFtwXSljb250aW51ZTsoIWN8fGMubWVyZ2V8fGxbcF09PT0idGV4dCIpJiZmLnR5cGU9PT1sW3BdP2YudmFsdWUrPWhbcF06KGYudHlwZSYmdS5wdXNoKGYpLGY9e3R5cGU6bFtwXSx2YWx1ZTpoW3BdfSl9fWlmKGE9PWUubGVuZ3RoKWJyZWFrO2E9cy5sYXN0SW5kZXh9cmV0dXJuIGYudHlwZSYmdS5wdXNoKGYpLHt0b2tlbnM6dSxzdGF0ZTpufX19KS5jYWxsKHIucHJvdG90eXBlKSx0LlRva2VuaXplcj1yfSksZGVmaW5lKCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvbGFuZyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvbGFuZyIpLGk9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiZW1wdHlfbGluZSIscmVnZXg6Il4kIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiLisifV19fTsoZnVuY3Rpb24oKXt0aGlzLmFkZFJ1bGVzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpe3ZhciByPWVbbl07Zm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBzPXJbaV07cy5uZXh0JiYocy5uZXh0PXQrcy5uZXh0KX10aGlzLiRydWxlc1t0K25dPXJ9fSx0aGlzLmdldFJ1bGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHJ1bGVzfSx0aGlzLmVtYmVkUnVsZXM9ZnVuY3Rpb24oZSx0LG4saSl7dmFyIHM9KG5ldyBlKS5nZXRSdWxlcygpO2lmKGkpZm9yKHZhciBvPTA7bzxpLmxlbmd0aDtvKyspaVtvXT10K2lbb107ZWxzZXtpPVtdO2Zvcih2YXIgdSBpbiBzKWkucHVzaCh0K3UpfXRoaXMuYWRkUnVsZXMocyx0KTtmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKylBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseSh0aGlzLiRydWxlc1tpW29dXSxyLmRlZXBDb3B5KG4pKTt0aGlzLiRlbWJlZHN8fCh0aGlzLiRlbWJlZHM9W10pLHRoaXMuJGVtYmVkcy5wdXNoKHQpfSx0aGlzLmdldEVtYmVkcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbWJlZHN9fSkuY2FsbChpLnByb3RvdHlwZSksdC5UZXh0SGlnaGxpZ2h0UnVsZXM9aX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWZ1bmN0aW9uKCl7dGhpcy4kYmVoYXZpb3Vycz17fX07KGZ1bmN0aW9uKCl7dGhpcy5hZGQ9ZnVuY3Rpb24oZSx0LG4pe3N3aXRjaCh1bmRlZmluZWQpe2Nhc2UgdGhpcy4kYmVoYXZpb3Vyczp0aGlzLiRiZWhhdmlvdXJzPXt9O2Nhc2UgdGhpcy4kYmVoYXZpb3Vyc1tlXTp0aGlzLiRiZWhhdmlvdXJzW2VdPXt9fXRoaXMuJGJlaGF2aW91cnNbZV1bdF09bn0sdGhpcy5hZGRCZWhhdmlvdXJzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWZvcih2YXIgbiBpbiBlW3RdKXRoaXMuYWRkKHQsbixlW3RdW25dKX0sdGhpcy5yZW1vdmU9ZnVuY3Rpb24oZSl7dGhpcy4kYmVoYXZpb3VycyYmdGhpcy4kYmVoYXZpb3Vyc1tlXSYmZGVsZXRlIHRoaXMuJGJlaGF2aW91cnNbZV19LHRoaXMuaW5oZXJpdD1mdW5jdGlvbihlLHQpe2lmKHR5cGVvZiBlPT0iZnVuY3Rpb24iKXZhciBuPShuZXcgZSkuZ2V0QmVoYXZpb3Vycyh0KTtlbHNlIHZhciBuPWUuZ2V0QmVoYXZpb3Vycyh0KTt0aGlzLmFkZEJlaGF2aW91cnMobil9LHRoaXMuZ2V0QmVoYXZpb3Vycz1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gdGhpcy4kYmVoYXZpb3Vyczt2YXIgdD17fTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0aGlzLiRiZWhhdmlvdXJzW2Vbbl1dJiYodFtlW25dXT10aGlzLiRiZWhhdmlvdXJzW2Vbbl1dKTtyZXR1cm4gdH19KS5jYWxsKHIucHJvdG90eXBlKSx0LkJlaGF2aW91cj1yfSksZGVmaW5lKCJhY2UvdW5pY29kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3ZhciBuPS9cd3s0fS9nO2Zvcih2YXIgciBpbiBlKXQucGFja2FnZXNbcl09ZVtyXS5yZXBsYWNlKG4sIlxcdSQmIil9dC5wYWNrYWdlcz17fSxyKHtMOiIwMDQxLTAwNUEwMDYxLTAwN0EwMEFBMDBCNTAwQkEwMEMwLTAwRDYwMEQ4LTAwRjYwMEY4LTAyQzEwMkM2LTAyRDEwMkUwLTAyRTQwMkVDMDJFRTAzNzAtMDM3NDAzNzYwMzc3MDM3QS0wMzdEMDM4NjAzODgtMDM4QTAzOEMwMzhFLTAzQTEwM0EzLTAzRjUwM0Y3LTA0ODEwNDhBLTA1MjUwNTMxLTA1NTYwNTU5MDU2MS0wNTg3MDVEMC0wNUVBMDVGMC0wNUYyMDYyMS0wNjRBMDY2RTA2NkYwNjcxLTA2RDMwNkQ1MDZFNTA2RTYwNkVFMDZFRjA2RkEtMDZGQzA2RkYwNzEwMDcxMi0wNzJGMDc0RC0wN0E1MDdCMTA3Q0EtMDdFQTA3RjQwN0Y1MDdGQTA4MDAtMDgxNTA4MUEwODI0MDgyODA5MDQtMDkzOTA5M0QwOTUwMDk1OC0wOTYxMDk3MTA5NzIwOTc5LTA5N0YwOTg1LTA5OEMwOThGMDk5MDA5OTMtMDlBODA5QUEtMDlCMDA5QjIwOUI2LTA5QjkwOUJEMDlDRTA5REMwOUREMDlERi0wOUUxMDlGMDA5RjEwQTA1LTBBMEEwQTBGMEExMDBBMTMtMEEyODBBMkEtMEEzMDBBMzIwQTMzMEEzNTBBMzYwQTM4MEEzOTBBNTktMEE1QzBBNUUwQTcyLTBBNzQwQTg1LTBBOEQwQThGLTBBOTEwQTkzLTBBQTgwQUFBLTBBQjAwQUIyMEFCMzBBQjUtMEFCOTBBQkQwQUQwMEFFMDBBRTEwQjA1LTBCMEMwQjBGMEIxMDBCMTMtMEIyODBCMkEtMEIzMDBCMzIwQjMzMEIzNS0wQjM5MEIzRDBCNUMwQjVEMEI1Ri0wQjYxMEI3MTBCODMwQjg1LTBCOEEwQjhFLTBCOTAwQjkyLTBCOTUwQjk5MEI5QTBCOUMwQjlFMEI5RjBCQTMwQkE0MEJBOC0wQkFBMEJBRS0wQkI5MEJEMDBDMDUtMEMwQzBDMEUtMEMxMDBDMTItMEMyODBDMkEtMEMzMzBDMzUtMEMzOTBDM0QwQzU4MEM1OTBDNjAwQzYxMEM4NS0wQzhDMEM4RS0wQzkwMEM5Mi0wQ0E4MENBQS0wQ0IzMENCNS0wQ0I5MENCRDBDREUwQ0UwMENFMTBEMDUtMEQwQzBEMEUtMEQxMDBEMTItMEQyODBEMkEtMEQzOTBEM0QwRDYwMEQ2MTBEN0EtMEQ3RjBEODUtMEQ5NjBEOUEtMERCMTBEQjMtMERCQjBEQkQwREMwLTBEQzYwRTAxLTBFMzAwRTMyMEUzMzBFNDAtMEU0NjBFODEwRTgyMEU4NDBFODcwRTg4MEU4QTBFOEQwRTk0LTBFOTcwRTk5LTBFOUYwRUExLTBFQTMwRUE1MEVBNzBFQUEwRUFCMEVBRC0wRUIwMEVCMjBFQjMwRUJEMEVDMC0wRUM0MEVDNjBFREMwRUREMEYwMDBGNDAtMEY0NzBGNDktMEY2QzBGODgtMEY4QjEwMDAtMTAyQTEwM0YxMDUwLTEwNTUxMDVBLTEwNUQxMDYxMTA2NTEwNjYxMDZFLTEwNzAxMDc1LTEwODExMDhFMTBBMC0xMEM1MTBEMC0xMEZBMTBGQzExMDAtMTI0ODEyNEEtMTI0RDEyNTAtMTI1NjEyNTgxMjVBLTEyNUQxMjYwLTEyODgxMjhBLTEyOEQxMjkwLTEyQjAxMkIyLTEyQjUxMkI4LTEyQkUxMkMwMTJDMi0xMkM1MTJDOC0xMkQ2MTJEOC0xMzEwMTMxMi0xMzE1MTMxOC0xMzVBMTM4MC0xMzhGMTNBMC0xM0Y0MTQwMS0xNjZDMTY2Ri0xNjdGMTY4MS0xNjlBMTZBMC0xNkVBMTcwMC0xNzBDMTcwRS0xNzExMTcyMC0xNzMxMTc0MC0xNzUxMTc2MC0xNzZDMTc2RS0xNzcwMTc4MC0xN0IzMTdENzE3REMxODIwLTE4NzcxODgwLTE4QTgxOEFBMThCMC0xOEY1MTkwMC0xOTFDMTk1MC0xOTZEMTk3MC0xOTc0MTk4MC0xOUFCMTlDMS0xOUM3MUEwMC0xQTE2MUEyMC0xQTU0MUFBNzFCMDUtMUIzMzFCNDUtMUI0QjFCODMtMUJBMDFCQUUxQkFGMUMwMC0xQzIzMUM0RC0xQzRGMUM1QS0xQzdEMUNFOS0xQ0VDMUNFRS0xQ0YxMUQwMC0xREJGMUUwMC0xRjE1MUYxOC0xRjFEMUYyMC0xRjQ1MUY0OC0xRjREMUY1MC0xRjU3MUY1OTFGNUIxRjVEMUY1Ri0xRjdEMUY4MC0xRkI0MUZCNi0xRkJDMUZCRTFGQzItMUZDNDFGQzYtMUZDQzFGRDAtMUZEMzFGRDYtMUZEQjFGRTAtMUZFQzFGRjItMUZGNDFGRjYtMUZGQzIwNzEyMDdGMjA5MC0yMDk0MjEwMjIxMDcyMTBBLTIxMTMyMTE1MjExOS0yMTFEMjEyNDIxMjYyMTI4MjEyQS0yMTJEMjEyRi0yMTM5MjEzQy0yMTNGMjE0NS0yMTQ5MjE0RTIxODMyMTg0MkMwMC0yQzJFMkMzMC0yQzVFMkM2MC0yQ0U0MkNFQi0yQ0VFMkQwMC0yRDI1MkQzMC0yRDY1MkQ2RjJEODAtMkQ5NjJEQTAtMkRBNjJEQTgtMkRBRTJEQjAtMkRCNjJEQjgtMkRCRTJEQzAtMkRDNjJEQzgtMkRDRTJERDAtMkRENjJERDgtMkRERTJFMkYzMDA1MzAwNjMwMzEtMzAzNTMwM0IzMDNDMzA0MS0zMDk2MzA5RC0zMDlGMzBBMS0zMEZBMzBGQy0zMEZGMzEwNS0zMTJEMzEzMS0zMThFMzFBMC0zMUI3MzFGMC0zMUZGMzQwMC00REI1NEUwMC05RkNCQTAwMC1BNDhDQTREMC1BNEZEQTUwMC1BNjBDQTYxMC1BNjFGQTYyQUE2MkJBNjQwLUE2NUZBNjYyLUE2NkVBNjdGLUE2OTdBNkEwLUE2RTVBNzE3LUE3MUZBNzIyLUE3ODhBNzhCQTc4Q0E3RkItQTgwMUE4MDMtQTgwNUE4MDctQTgwQUE4MEMtQTgyMkE4NDAtQTg3M0E4ODItQThCM0E4RjItQThGN0E4RkJBOTBBLUE5MjVBOTMwLUE5NDZBOTYwLUE5N0NBOTg0LUE5QjJBOUNGQUEwMC1BQTI4QUE0MC1BQTQyQUE0NC1BQTRCQUE2MC1BQTc2QUE3QUFBODAtQUFBRkFBQjFBQUI1QUFCNkFBQjktQUFCREFBQzBBQUMyQUFEQi1BQUREQUJDMC1BQkUyQUMwMC1EN0EzRDdCMC1EN0M2RDdDQi1EN0ZCRjkwMC1GQTJERkEzMC1GQTZERkE3MC1GQUQ5RkIwMC1GQjA2RkIxMy1GQjE3RkIxREZCMUYtRkIyOEZCMkEtRkIzNkZCMzgtRkIzQ0ZCM0VGQjQwRkI0MUZCNDNGQjQ0RkI0Ni1GQkIxRkJEMy1GRDNERkQ1MC1GRDhGRkQ5Mi1GREM3RkRGMC1GREZCRkU3MC1GRTc0RkU3Ni1GRUZDRkYyMS1GRjNBRkY0MS1GRjVBRkY2Ni1GRkJFRkZDMi1GRkM3RkZDQS1GRkNGRkZEMi1GRkQ3RkZEQS1GRkRDIixMbDoiMDA2MS0wMDdBMDBBQTAwQjUwMEJBMDBERi0wMEY2MDBGOC0wMEZGMDEwMTAxMDMwMTA1MDEwNzAxMDkwMTBCMDEwRDAxMEYwMTExMDExMzAxMTUwMTE3MDExOTAxMUIwMTFEMDExRjAxMjEwMTIzMDEyNTAxMjcwMTI5MDEyQjAxMkQwMTJGMDEzMTAxMzMwMTM1MDEzNzAxMzgwMTNBMDEzQzAxM0UwMTQwMDE0MjAxNDQwMTQ2MDE0ODAxNDkwMTRCMDE0RDAxNEYwMTUxMDE1MzAxNTUwMTU3MDE1OTAxNUIwMTVEMDE1RjAxNjEwMTYzMDE2NTAxNjcwMTY5MDE2QjAxNkQwMTZGMDE3MTAxNzMwMTc1MDE3NzAxN0EwMTdDMDE3RS0wMTgwMDE4MzAxODUwMTg4MDE4QzAxOEQwMTkyMDE5NTAxOTktMDE5QjAxOUUwMUExMDFBMzAxQTUwMUE4MDFBQTAxQUIwMUFEMDFCMDAxQjQwMUI2MDFCOTAxQkEwMUJELTAxQkYwMUM2MDFDOTAxQ0MwMUNFMDFEMDAxRDIwMUQ0MDFENjAxRDgwMURBMDFEQzAxREQwMURGMDFFMTAxRTMwMUU1MDFFNzAxRTkwMUVCMDFFRDAxRUYwMUYwMDFGMzAxRjUwMUY5MDFGQjAxRkQwMUZGMDIwMTAyMDMwMjA1MDIwNzAyMDkwMjBCMDIwRDAyMEYwMjExMDIxMzAyMTUwMjE3MDIxOTAyMUIwMjFEMDIxRjAyMjEwMjIzMDIyNTAyMjcwMjI5MDIyQjAyMkQwMjJGMDIzMTAyMzMtMDIzOTAyM0MwMjNGMDI0MDAyNDIwMjQ3MDI0OTAyNEIwMjREMDI0Ri0wMjkzMDI5NS0wMkFGMDM3MTAzNzMwMzc3MDM3Qi0wMzdEMDM5MDAzQUMtMDNDRTAzRDAwM0QxMDNENS0wM0Q3MDNEOTAzREIwM0REMDNERjAzRTEwM0UzMDNFNTAzRTcwM0U5MDNFQjAzRUQwM0VGLTAzRjMwM0Y1MDNGODAzRkIwM0ZDMDQzMC0wNDVGMDQ2MTA0NjMwNDY1MDQ2NzA0NjkwNDZCMDQ2RDA0NkYwNDcxMDQ3MzA0NzUwNDc3MDQ3OTA0N0IwNDdEMDQ3RjA0ODEwNDhCMDQ4RDA0OEYwNDkxMDQ5MzA0OTUwNDk3MDQ5OTA0OUIwNDlEMDQ5RjA0QTEwNEEzMDRBNTA0QTcwNEE5MDRBQjA0QUQwNEFGMDRCMTA0QjMwNEI1MDRCNzA0QjkwNEJCMDRCRDA0QkYwNEMyMDRDNDA0QzYwNEM4MDRDQTA0Q0MwNENFMDRDRjA0RDEwNEQzMDRENTA0RDcwNEQ5MDREQjA0REQwNERGMDRFMTA0RTMwNEU1MDRFNzA0RTkwNEVCMDRFRDA0RUYwNEYxMDRGMzA0RjUwNEY3MDRGOTA0RkIwNEZEMDRGRjA1MDEwNTAzMDUwNTA1MDcwNTA5MDUwQjA1MEQwNTBGMDUxMTA1MTMwNTE1MDUxNzA1MTkwNTFCMDUxRDA1MUYwNTIxMDUyMzA1MjUwNTYxLTA1ODcxRDAwLTFEMkIxRDYyLTFENzcxRDc5LTFEOUExRTAxMUUwMzFFMDUxRTA3MUUwOTFFMEIxRTBEMUUwRjFFMTExRTEzMUUxNTFFMTcxRTE5MUUxQjFFMUQxRTFGMUUyMTFFMjMxRTI1MUUyNzFFMjkxRTJCMUUyRDFFMkYxRTMxMUUzMzFFMzUxRTM3MUUzOTFFM0IxRTNEMUUzRjFFNDExRTQzMUU0NTFFNDcxRTQ5MUU0QjFFNEQxRTRGMUU1MTFFNTMxRTU1MUU1NzFFNTkxRTVCMUU1RDFFNUYxRTYxMUU2MzFFNjUxRTY3MUU2OTFFNkIxRTZEMUU2RjFFNzExRTczMUU3NTFFNzcxRTc5MUU3QjFFN0QxRTdGMUU4MTFFODMxRTg1MUU4NzFFODkxRThCMUU4RDFFOEYxRTkxMUU5MzFFOTUtMUU5RDFFOUYxRUExMUVBMzFFQTUxRUE3MUVBOTFFQUIxRUFEMUVBRjFFQjExRUIzMUVCNTFFQjcxRUI5MUVCQjFFQkQxRUJGMUVDMTFFQzMxRUM1MUVDNzFFQzkxRUNCMUVDRDFFQ0YxRUQxMUVEMzFFRDUxRUQ3MUVEOTFFREIxRUREMUVERjFFRTExRUUzMUVFNTFFRTcxRUU5MUVFQjFFRUQxRUVGMUVGMTFFRjMxRUY1MUVGNzFFRjkxRUZCMUVGRDFFRkYtMUYwNzFGMTAtMUYxNTFGMjAtMUYyNzFGMzAtMUYzNzFGNDAtMUY0NTFGNTAtMUY1NzFGNjAtMUY2NzFGNzAtMUY3RDFGODAtMUY4NzFGOTAtMUY5NzFGQTAtMUZBNzFGQjAtMUZCNDFGQjYxRkI3MUZCRTFGQzItMUZDNDFGQzYxRkM3MUZEMC0xRkQzMUZENjFGRDcxRkUwLTFGRTcxRkYyLTFGRjQxRkY2MUZGNzIxMEEyMTBFMjEwRjIxMTMyMTJGMjEzNDIxMzkyMTNDMjEzRDIxNDYtMjE0OTIxNEUyMTg0MkMzMC0yQzVFMkM2MTJDNjUyQzY2MkM2ODJDNkEyQzZDMkM3MTJDNzMyQzc0MkM3Ni0yQzdDMkM4MTJDODMyQzg1MkM4NzJDODkyQzhCMkM4RDJDOEYyQzkxMkM5MzJDOTUyQzk3MkM5OTJDOUIyQzlEMkM5RjJDQTEyQ0EzMkNBNTJDQTcyQ0E5MkNBQjJDQUQyQ0FGMkNCMTJDQjMyQ0I1MkNCNzJDQjkyQ0JCMkNCRDJDQkYyQ0MxMkNDMzJDQzUyQ0M3MkNDOTJDQ0IyQ0NEMkNDRjJDRDEyQ0QzMkNENTJDRDcyQ0Q5MkNEQjJDREQyQ0RGMkNFMTJDRTMyQ0U0MkNFQzJDRUUyRDAwLTJEMjVBNjQxQTY0M0E2NDVBNjQ3QTY0OUE2NEJBNjREQTY0RkE2NTFBNjUzQTY1NUE2NTdBNjU5QTY1QkE2NURBNjVGQTY2M0E2NjVBNjY3QTY2OUE2NkJBNjZEQTY4MUE2ODNBNjg1QTY4N0E2ODlBNjhCQTY4REE2OEZBNjkxQTY5M0E2OTVBNjk3QTcyM0E3MjVBNzI3QTcyOUE3MkJBNzJEQTcyRi1BNzMxQTczM0E3MzVBNzM3QTczOUE3M0JBNzNEQTczRkE3NDFBNzQzQTc0NUE3NDdBNzQ5QTc0QkE3NERBNzRGQTc1MUE3NTNBNzU1QTc1N0E3NTlBNzVCQTc1REE3NUZBNzYxQTc2M0E3NjVBNzY3QTc2OUE3NkJBNzZEQTc2RkE3NzEtQTc3OEE3N0FBNzdDQTc3RkE3ODFBNzgzQTc4NUE3ODdBNzhDRkIwMC1GQjA2RkIxMy1GQjE3RkY0MS1GRjVBIixMdToiMDA0MS0wMDVBMDBDMC0wMEQ2MDBEOC0wMERFMDEwMDAxMDIwMTA0MDEwNjAxMDgwMTBBMDEwQzAxMEUwMTEwMDExMjAxMTQwMTE2MDExODAxMUEwMTFDMDExRTAxMjAwMTIyMDEyNDAxMjYwMTI4MDEyQTAxMkMwMTJFMDEzMDAxMzIwMTM0MDEzNjAxMzkwMTNCMDEzRDAxM0YwMTQxMDE0MzAxNDUwMTQ3MDE0QTAxNEMwMTRFMDE1MDAxNTIwMTU0MDE1NjAxNTgwMTVBMDE1QzAxNUUwMTYwMDE2MjAxNjQwMTY2MDE2ODAxNkEwMTZDMDE2RTAxNzAwMTcyMDE3NDAxNzYwMTc4MDE3OTAxN0IwMTdEMDE4MTAxODIwMTg0MDE4NjAxODcwMTg5LTAxOEIwMThFLTAxOTEwMTkzMDE5NDAxOTYtMDE5ODAxOUMwMTlEMDE5RjAxQTAwMUEyMDFBNDAxQTYwMUE3MDFBOTAxQUMwMUFFMDFBRjAxQjEtMDFCMzAxQjUwMUI3MDFCODAxQkMwMUM0MDFDNzAxQ0EwMUNEMDFDRjAxRDEwMUQzMDFENTAxRDcwMUQ5MDFEQjAxREUwMUUwMDFFMjAxRTQwMUU2MDFFODAxRUEwMUVDMDFFRTAxRjEwMUY0MDFGNi0wMUY4MDFGQTAxRkMwMUZFMDIwMDAyMDIwMjA0MDIwNjAyMDgwMjBBMDIwQzAyMEUwMjEwMDIxMjAyMTQwMjE2MDIxODAyMUEwMjFDMDIxRTAyMjAwMjIyMDIyNDAyMjYwMjI4MDIyQTAyMkMwMjJFMDIzMDAyMzIwMjNBMDIzQjAyM0QwMjNFMDI0MTAyNDMtMDI0NjAyNDgwMjRBMDI0QzAyNEUwMzcwMDM3MjAzNzYwMzg2MDM4OC0wMzhBMDM4QzAzOEUwMzhGMDM5MS0wM0ExMDNBMy0wM0FCMDNDRjAzRDItMDNENDAzRDgwM0RBMDNEQzAzREUwM0UwMDNFMjAzRTQwM0U2MDNFODAzRUEwM0VDMDNFRTAzRjQwM0Y3MDNGOTAzRkEwM0ZELTA0MkYwNDYwMDQ2MjA0NjQwNDY2MDQ2ODA0NkEwNDZDMDQ2RTA0NzAwNDcyMDQ3NDA0NzYwNDc4MDQ3QTA0N0MwNDdFMDQ4MDA0OEEwNDhDMDQ4RTA0OTAwNDkyMDQ5NDA0OTYwNDk4MDQ5QTA0OUMwNDlFMDRBMDA0QTIwNEE0MDRBNjA0QTgwNEFBMDRBQzA0QUUwNEIwMDRCMjA0QjQwNEI2MDRCODA0QkEwNEJDMDRCRTA0QzAwNEMxMDRDMzA0QzUwNEM3MDRDOTA0Q0IwNENEMDREMDA0RDIwNEQ0MDRENjA0RDgwNERBMDREQzA0REUwNEUwMDRFMjA0RTQwNEU2MDRFODA0RUEwNEVDMDRFRTA0RjAwNEYyMDRGNDA0RjYwNEY4MDRGQTA0RkMwNEZFMDUwMDA1MDIwNTA0MDUwNjA1MDgwNTBBMDUwQzA1MEUwNTEwMDUxMjA1MTQwNTE2MDUxODA1MUEwNTFDMDUxRTA1MjAwNTIyMDUyNDA1MzEtMDU1NjEwQTAtMTBDNTFFMDAxRTAyMUUwNDFFMDYxRTA4MUUwQTFFMEMxRTBFMUUxMDFFMTIxRTE0MUUxNjFFMTgxRTFBMUUxQzFFMUUxRTIwMUUyMjFFMjQxRTI2MUUyODFFMkExRTJDMUUyRTFFMzAxRTMyMUUzNDFFMzYxRTM4MUUzQTFFM0MxRTNFMUU0MDFFNDIxRTQ0MUU0NjFFNDgxRTRBMUU0QzFFNEUxRTUwMUU1MjFFNTQxRTU2MUU1ODFFNUExRTVDMUU1RTFFNjAxRTYyMUU2NDFFNjYxRTY4MUU2QTFFNkMxRTZFMUU3MDFFNzIxRTc0MUU3NjFFNzgxRTdBMUU3QzFFN0UxRTgwMUU4MjFFODQxRTg2MUU4ODFFOEExRThDMUU4RTFFOTAxRTkyMUU5NDFFOUUxRUEwMUVBMjFFQTQxRUE2MUVBODFFQUExRUFDMUVBRTFFQjAxRUIyMUVCNDFFQjYxRUI4MUVCQTFFQkMxRUJFMUVDMDFFQzIxRUM0MUVDNjFFQzgxRUNBMUVDQzFFQ0UxRUQwMUVEMjFFRDQxRUQ2MUVEODFFREExRURDMUVERTFFRTAxRUUyMUVFNDFFRTYxRUU4MUVFQTFFRUMxRUVFMUVGMDFFRjIxRUY0MUVGNjFFRjgxRUZBMUVGQzFFRkUxRjA4LTFGMEYxRjE4LTFGMUQxRjI4LTFGMkYxRjM4LTFGM0YxRjQ4LTFGNEQxRjU5MUY1QjFGNUQxRjVGMUY2OC0xRjZGMUZCOC0xRkJCMUZDOC0xRkNCMUZEOC0xRkRCMUZFOC0xRkVDMUZGOC0xRkZCMjEwMjIxMDcyMTBCLTIxMEQyMTEwLTIxMTIyMTE1MjExOS0yMTFEMjEyNDIxMjYyMTI4MjEyQS0yMTJEMjEzMC0yMTMzMjEzRTIxM0YyMTQ1MjE4MzJDMDAtMkMyRTJDNjAyQzYyLTJDNjQyQzY3MkM2OTJDNkIyQzZELTJDNzAyQzcyMkM3NTJDN0UtMkM4MDJDODIyQzg0MkM4NjJDODgyQzhBMkM4QzJDOEUyQzkwMkM5MjJDOTQyQzk2MkM5ODJDOUEyQzlDMkM5RTJDQTAyQ0EyMkNBNDJDQTYyQ0E4MkNBQTJDQUMyQ0FFMkNCMDJDQjIyQ0I0MkNCNjJDQjgyQ0JBMkNCQzJDQkUyQ0MwMkNDMjJDQzQyQ0M2MkNDODJDQ0EyQ0NDMkNDRTJDRDAyQ0QyMkNENDJDRDYyQ0Q4MkNEQTJDREMyQ0RFMkNFMDJDRTIyQ0VCMkNFREE2NDBBNjQyQTY0NEE2NDZBNjQ4QTY0QUE2NENBNjRFQTY1MEE2NTJBNjU0QTY1NkE2NThBNjVBQTY1Q0E2NUVBNjYyQTY2NEE2NjZBNjY4QTY2QUE2NkNBNjgwQTY4MkE2ODRBNjg2QTY4OEE2OEFBNjhDQTY4RUE2OTBBNjkyQTY5NEE2OTZBNzIyQTcyNEE3MjZBNzI4QTcyQUE3MkNBNzJFQTczMkE3MzRBNzM2QTczOEE3M0FBNzNDQTczRUE3NDBBNzQyQTc0NEE3NDZBNzQ4QTc0QUE3NENBNzRFQTc1MEE3NTJBNzU0QTc1NkE3NThBNzVBQTc1Q0E3NUVBNzYwQTc2MkE3NjRBNzY2QTc2OEE3NkFBNzZDQTc2RUE3NzlBNzdCQTc3REE3N0VBNzgwQTc4MkE3ODRBNzg2QTc4QkZGMjEtRkYzQSIsTHQ6IjAxQzUwMUM4MDFDQjAxRjIxRjg4LTFGOEYxRjk4LTFGOUYxRkE4LTFGQUYxRkJDMUZDQzFGRkMiLExtOiIwMkIwLTAyQzEwMkM2LTAyRDEwMkUwLTAyRTQwMkVDMDJFRTAzNzQwMzdBMDU1OTA2NDAwNkU1MDZFNjA3RjQwN0Y1MDdGQTA4MUEwODI0MDgyODA5NzEwRTQ2MEVDNjEwRkMxN0Q3MTg0MzFBQTcxQzc4LTFDN0QxRDJDLTFENjExRDc4MUQ5Qi0xREJGMjA3MTIwN0YyMDkwLTIwOTQyQzdEMkQ2RjJFMkYzMDA1MzAzMS0zMDM1MzAzQjMwOUQzMDlFMzBGQy0zMEZFQTAxNUE0RjgtQTRGREE2MENBNjdGQTcxNy1BNzFGQTc3MEE3ODhBOUNGQUE3MEFBRERGRjcwRkY5RUZGOUYiLExvOiIwMUJCMDFDMC0wMUMzMDI5NDA1RDAtMDVFQTA1RjAtMDVGMjA2MjEtMDYzRjA2NDEtMDY0QTA2NkUwNjZGMDY3MS0wNkQzMDZENTA2RUUwNkVGMDZGQS0wNkZDMDZGRjA3MTAwNzEyLTA3MkYwNzRELTA3QTUwN0IxMDdDQS0wN0VBMDgwMC0wODE1MDkwNC0wOTM5MDkzRDA5NTAwOTU4LTA5NjEwOTcyMDk3OS0wOTdGMDk4NS0wOThDMDk4RjA5OTAwOTkzLTA5QTgwOUFBLTA5QjAwOUIyMDlCNi0wOUI5MDlCRDA5Q0UwOURDMDlERDA5REYtMDlFMTA5RjAwOUYxMEEwNS0wQTBBMEEwRjBBMTAwQTEzLTBBMjgwQTJBLTBBMzAwQTMyMEEzMzBBMzUwQTM2MEEzODBBMzkwQTU5LTBBNUMwQTVFMEE3Mi0wQTc0MEE4NS0wQThEMEE4Ri0wQTkxMEE5My0wQUE4MEFBQS0wQUIwMEFCMjBBQjMwQUI1LTBBQjkwQUJEMEFEMDBBRTAwQUUxMEIwNS0wQjBDMEIwRjBCMTAwQjEzLTBCMjgwQjJBLTBCMzAwQjMyMEIzMzBCMzUtMEIzOTBCM0QwQjVDMEI1RDBCNUYtMEI2MTBCNzEwQjgzMEI4NS0wQjhBMEI4RS0wQjkwMEI5Mi0wQjk1MEI5OTBCOUEwQjlDMEI5RTBCOUYwQkEzMEJBNDBCQTgtMEJBQTBCQUUtMEJCOTBCRDAwQzA1LTBDMEMwQzBFLTBDMTAwQzEyLTBDMjgwQzJBLTBDMzMwQzM1LTBDMzkwQzNEMEM1ODBDNTkwQzYwMEM2MTBDODUtMEM4QzBDOEUtMEM5MDBDOTItMENBODBDQUEtMENCMzBDQjUtMENCOTBDQkQwQ0RFMENFMDBDRTEwRDA1LTBEMEMwRDBFLTBEMTAwRDEyLTBEMjgwRDJBLTBEMzkwRDNEMEQ2MDBENjEwRDdBLTBEN0YwRDg1LTBEOTYwRDlBLTBEQjEwREIzLTBEQkIwREJEMERDMC0wREM2MEUwMS0wRTMwMEUzMjBFMzMwRTQwLTBFNDUwRTgxMEU4MjBFODQwRTg3MEU4ODBFOEEwRThEMEU5NC0wRTk3MEU5OS0wRTlGMEVBMS0wRUEzMEVBNTBFQTcwRUFBMEVBQjBFQUQtMEVCMDBFQjIwRUIzMEVCRDBFQzAtMEVDNDBFREMwRUREMEYwMDBGNDAtMEY0NzBGNDktMEY2QzBGODgtMEY4QjEwMDAtMTAyQTEwM0YxMDUwLTEwNTUxMDVBLTEwNUQxMDYxMTA2NTEwNjYxMDZFLTEwNzAxMDc1LTEwODExMDhFMTBEMC0xMEZBMTEwMC0xMjQ4MTI0QS0xMjREMTI1MC0xMjU2MTI1ODEyNUEtMTI1RDEyNjAtMTI4ODEyOEEtMTI4RDEyOTAtMTJCMDEyQjItMTJCNTEyQjgtMTJCRTEyQzAxMkMyLTEyQzUxMkM4LTEyRDYxMkQ4LTEzMTAxMzEyLTEzMTUxMzE4LTEzNUExMzgwLTEzOEYxM0EwLTEzRjQxNDAxLTE2NkMxNjZGLTE2N0YxNjgxLTE2OUExNkEwLTE2RUExNzAwLTE3MEMxNzBFLTE3MTExNzIwLTE3MzExNzQwLTE3NTExNzYwLTE3NkMxNzZFLTE3NzAxNzgwLTE3QjMxN0RDMTgyMC0xODQyMTg0NC0xODc3MTg4MC0xOEE4MThBQTE4QjAtMThGNTE5MDAtMTkxQzE5NTAtMTk2RDE5NzAtMTk3NDE5ODAtMTlBQjE5QzEtMTlDNzFBMDAtMUExNjFBMjAtMUE1NDFCMDUtMUIzMzFCNDUtMUI0QjFCODMtMUJBMDFCQUUxQkFGMUMwMC0xQzIzMUM0RC0xQzRGMUM1QS0xQzc3MUNFOS0xQ0VDMUNFRS0xQ0YxMjEzNS0yMTM4MkQzMC0yRDY1MkQ4MC0yRDk2MkRBMC0yREE2MkRBOC0yREFFMkRCMC0yREI2MkRCOC0yREJFMkRDMC0yREM2MkRDOC0yRENFMkREMC0yREQ2MkREOC0yRERFMzAwNjMwM0MzMDQxLTMwOTYzMDlGMzBBMS0zMEZBMzBGRjMxMDUtMzEyRDMxMzEtMzE4RTMxQTAtMzFCNzMxRjAtMzFGRjM0MDAtNERCNTRFMDAtOUZDQkEwMDAtQTAxNEEwMTYtQTQ4Q0E0RDAtQTRGN0E1MDAtQTYwQkE2MTAtQTYxRkE2MkFBNjJCQTY2RUE2QTAtQTZFNUE3RkItQTgwMUE4MDMtQTgwNUE4MDctQTgwQUE4MEMtQTgyMkE4NDAtQTg3M0E4ODItQThCM0E4RjItQThGN0E4RkJBOTBBLUE5MjVBOTMwLUE5NDZBOTYwLUE5N0NBOTg0LUE5QjJBQTAwLUFBMjhBQTQwLUFBNDJBQTQ0LUFBNEJBQTYwLUFBNkZBQTcxLUFBNzZBQTdBQUE4MC1BQUFGQUFCMUFBQjVBQUI2QUFCOS1BQUJEQUFDMEFBQzJBQURCQUFEQ0FCQzAtQUJFMkFDMDAtRDdBM0Q3QjAtRDdDNkQ3Q0ItRDdGQkY5MDAtRkEyREZBMzAtRkE2REZBNzAtRkFEOUZCMURGQjFGLUZCMjhGQjJBLUZCMzZGQjM4LUZCM0NGQjNFRkI0MEZCNDFGQjQzRkI0NEZCNDYtRkJCMUZCRDMtRkQzREZENTAtRkQ4RkZEOTItRkRDN0ZERjAtRkRGQkZFNzAtRkU3NEZFNzYtRkVGQ0ZGNjYtRkY2RkZGNzEtRkY5REZGQTAtRkZCRUZGQzItRkZDN0ZGQ0EtRkZDRkZGRDItRkZEN0ZGREEtRkZEQyIsTToiMDMwMC0wMzZGMDQ4My0wNDg5MDU5MS0wNUJEMDVCRjA1QzEwNUMyMDVDNDA1QzUwNUM3MDYxMC0wNjFBMDY0Qi0wNjVFMDY3MDA2RDYtMDZEQzA2REUtMDZFNDA2RTcwNkU4MDZFQS0wNkVEMDcxMTA3MzAtMDc0QTA3QTYtMDdCMDA3RUItMDdGMzA4MTYtMDgxOTA4MUItMDgyMzA4MjUtMDgyNzA4MjktMDgyRDA5MDAtMDkwMzA5M0MwOTNFLTA5NEUwOTUxLTA5NTUwOTYyMDk2MzA5ODEtMDk4MzA5QkMwOUJFLTA5QzQwOUM3MDlDODA5Q0ItMDlDRDA5RDcwOUUyMDlFMzBBMDEtMEEwMzBBM0MwQTNFLTBBNDIwQTQ3MEE0ODBBNEItMEE0RDBBNTEwQTcwMEE3MTBBNzUwQTgxLTBBODMwQUJDMEFCRS0wQUM1MEFDNy0wQUM5MEFDQi0wQUNEMEFFMjBBRTMwQjAxLTBCMDMwQjNDMEIzRS0wQjQ0MEI0NzBCNDgwQjRCLTBCNEQwQjU2MEI1NzBCNjIwQjYzMEI4MjBCQkUtMEJDMjBCQzYtMEJDODBCQ0EtMEJDRDBCRDcwQzAxLTBDMDMwQzNFLTBDNDQwQzQ2LTBDNDgwQzRBLTBDNEQwQzU1MEM1NjBDNjIwQzYzMEM4MjBDODMwQ0JDMENCRS0wQ0M0MENDNi0wQ0M4MENDQS0wQ0NEMENENTBDRDYwQ0UyMENFMzBEMDIwRDAzMEQzRS0wRDQ0MEQ0Ni0wRDQ4MEQ0QS0wRDREMEQ1NzBENjIwRDYzMEQ4MjBEODMwRENBMERDRi0wREQ0MERENjBERDgtMERERjBERjIwREYzMEUzMTBFMzQtMEUzQTBFNDctMEU0RTBFQjEwRUI0LTBFQjkwRUJCMEVCQzBFQzgtMEVDRDBGMTgwRjE5MEYzNTBGMzcwRjM5MEYzRTBGM0YwRjcxLTBGODQwRjg2MEY4NzBGOTAtMEY5NzBGOTktMEZCQzBGQzYxMDJCLTEwM0UxMDU2LTEwNTkxMDVFLTEwNjAxMDYyLTEwNjQxMDY3LTEwNkQxMDcxLTEwNzQxMDgyLTEwOEQxMDhGMTA5QS0xMDlEMTM1RjE3MTItMTcxNDE3MzItMTczNDE3NTIxNzUzMTc3MjE3NzMxN0I2LTE3RDMxN0REMTgwQi0xODBEMThBOTE5MjAtMTkyQjE5MzAtMTkzQjE5QjAtMTlDMDE5QzgxOUM5MUExNy0xQTFCMUE1NS0xQTVFMUE2MC0xQTdDMUE3RjFCMDAtMUIwNDFCMzQtMUI0NDFCNkItMUI3MzFCODAtMUI4MjFCQTEtMUJBQTFDMjQtMUMzNzFDRDAtMUNEMjFDRDQtMUNFODFDRUQxQ0YyMURDMC0xREU2MURGRC0xREZGMjBEMC0yMEYwMkNFRi0yQ0YxMkRFMC0yREZGMzAyQS0zMDJGMzA5OTMwOUFBNjZGLUE2NzJBNjdDQTY3REE2RjBBNkYxQTgwMkE4MDZBODBCQTgyMy1BODI3QTg4MEE4ODFBOEI0LUE4QzRBOEUwLUE4RjFBOTI2LUE5MkRBOTQ3LUE5NTNBOTgwLUE5ODNBOUIzLUE5QzBBQTI5LUFBMzZBQTQzQUE0Q0FBNERBQTdCQUFCMEFBQjItQUFCNEFBQjdBQUI4QUFCRUFBQkZBQUMxQUJFMy1BQkVBQUJFQ0FCRURGQjFFRkUwMC1GRTBGRkUyMC1GRTI2IixNbjoiMDMwMC0wMzZGMDQ4My0wNDg3MDU5MS0wNUJEMDVCRjA1QzEwNUMyMDVDNDA1QzUwNUM3MDYxMC0wNjFBMDY0Qi0wNjVFMDY3MDA2RDYtMDZEQzA2REYtMDZFNDA2RTcwNkU4MDZFQS0wNkVEMDcxMTA3MzAtMDc0QTA3QTYtMDdCMDA3RUItMDdGMzA4MTYtMDgxOTA4MUItMDgyMzA4MjUtMDgyNzA4MjktMDgyRDA5MDAtMDkwMjA5M0MwOTQxLTA5NDgwOTREMDk1MS0wOTU1MDk2MjA5NjMwOTgxMDlCQzA5QzEtMDlDNDA5Q0QwOUUyMDlFMzBBMDEwQTAyMEEzQzBBNDEwQTQyMEE0NzBBNDgwQTRCLTBBNEQwQTUxMEE3MDBBNzEwQTc1MEE4MTBBODIwQUJDMEFDMS0wQUM1MEFDNzBBQzgwQUNEMEFFMjBBRTMwQjAxMEIzQzBCM0YwQjQxLTBCNDQwQjREMEI1NjBCNjIwQjYzMEI4MjBCQzAwQkNEMEMzRS0wQzQwMEM0Ni0wQzQ4MEM0QS0wQzREMEM1NTBDNTYwQzYyMEM2MzBDQkMwQ0JGMENDNjBDQ0MwQ0NEMENFMjBDRTMwRDQxLTBENDQwRDREMEQ2MjBENjMwRENBMEREMi0wREQ0MERENjBFMzEwRTM0LTBFM0EwRTQ3LTBFNEUwRUIxMEVCNC0wRUI5MEVCQjBFQkMwRUM4LTBFQ0QwRjE4MEYxOTBGMzUwRjM3MEYzOTBGNzEtMEY3RTBGODAtMEY4NDBGODYwRjg3MEY5MC0wRjk3MEY5OS0wRkJDMEZDNjEwMkQtMTAzMDEwMzItMTAzNzEwMzkxMDNBMTAzRDEwM0UxMDU4MTA1OTEwNUUtMTA2MDEwNzEtMTA3NDEwODIxMDg1MTA4NjEwOEQxMDlEMTM1RjE3MTItMTcxNDE3MzItMTczNDE3NTIxNzUzMTc3MjE3NzMxN0I3LTE3QkQxN0M2MTdDOS0xN0QzMTdERDE4MEItMTgwRDE4QTkxOTIwLTE5MjIxOTI3MTkyODE5MzIxOTM5LTE5M0IxQTE3MUExODFBNTYxQTU4LTFBNUUxQTYwMUE2MjFBNjUtMUE2QzFBNzMtMUE3QzFBN0YxQjAwLTFCMDMxQjM0MUIzNi0xQjNBMUIzQzFCNDIxQjZCLTFCNzMxQjgwMUI4MTFCQTItMUJBNTFCQTgxQkE5MUMyQy0xQzMzMUMzNjFDMzcxQ0QwLTFDRDIxQ0Q0LTFDRTAxQ0UyLTFDRTgxQ0VEMURDMC0xREU2MURGRC0xREZGMjBEMC0yMERDMjBFMTIwRTUtMjBGMDJDRUYtMkNGMTJERTAtMkRGRjMwMkEtMzAyRjMwOTkzMDlBQTY2RkE2N0NBNjdEQTZGMEE2RjFBODAyQTgwNkE4MEJBODI1QTgyNkE4QzRBOEUwLUE4RjFBOTI2LUE5MkRBOTQ3LUE5NTFBOTgwLUE5ODJBOUIzQTlCNi1BOUI5QTlCQ0FBMjktQUEyRUFBMzFBQTMyQUEzNUFBMzZBQTQzQUE0Q0FBQjBBQUIyLUFBQjRBQUI3QUFCOEFBQkVBQUJGQUFDMUFCRTVBQkU4QUJFREZCMUVGRTAwLUZFMEZGRTIwLUZFMjYiLE1jOiIwOTAzMDkzRS0wOTQwMDk0OS0wOTRDMDk0RTA5ODIwOTgzMDlCRS0wOUMwMDlDNzA5QzgwOUNCMDlDQzA5RDcwQTAzMEEzRS0wQTQwMEE4MzBBQkUtMEFDMDBBQzkwQUNCMEFDQzBCMDIwQjAzMEIzRTBCNDAwQjQ3MEI0ODBCNEIwQjRDMEI1NzBCQkUwQkJGMEJDMTBCQzIwQkM2LTBCQzgwQkNBLTBCQ0MwQkQ3MEMwMS0wQzAzMEM0MS0wQzQ0MEM4MjBDODMwQ0JFMENDMC0wQ0M0MENDNzBDQzgwQ0NBMENDQjBDRDUwQ0Q2MEQwMjBEMDMwRDNFLTBENDAwRDQ2LTBENDgwRDRBLTBENEMwRDU3MEQ4MjBEODMwRENGLTBERDEwREQ4LTBEREYwREYyMERGMzBGM0UwRjNGMEY3RjEwMkIxMDJDMTAzMTEwMzgxMDNCMTAzQzEwNTYxMDU3MTA2Mi0xMDY0MTA2Ny0xMDZEMTA4MzEwODQxMDg3LTEwOEMxMDhGMTA5QS0xMDlDMTdCNjE3QkUtMTdDNTE3QzcxN0M4MTkyMy0xOTI2MTkyOS0xOTJCMTkzMDE5MzExOTMzLTE5MzgxOUIwLTE5QzAxOUM4MTlDOTFBMTktMUExQjFBNTUxQTU3MUE2MTFBNjMxQTY0MUE2RC0xQTcyMUIwNDFCMzUxQjNCMUIzRC0xQjQxMUI0MzFCNDQxQjgyMUJBMTFCQTYxQkE3MUJBQTFDMjQtMUMyQjFDMzQxQzM1MUNFMTFDRjJBODIzQTgyNEE4MjdBODgwQTg4MUE4QjQtQThDM0E5NTJBOTUzQTk4M0E5QjRBOUI1QTlCQUE5QkJBOUJELUE5QzBBQTJGQUEzMEFBMzNBQTM0QUE0REFBN0JBQkUzQUJFNEFCRTZBQkU3QUJFOUFCRUFBQkVDIixNZToiMDQ4ODA0ODkwNkRFMjBERC0yMEUwMjBFMi0yMEU0QTY3MC1BNjcyIixOOiIwMDMwLTAwMzkwMEIyMDBCMzAwQjkwMEJDLTAwQkUwNjYwLTA2NjkwNkYwLTA2RjkwN0MwLTA3QzkwOTY2LTA5NkYwOUU2LTA5RUYwOUY0LTA5RjkwQTY2LTBBNkYwQUU2LTBBRUYwQjY2LTBCNkYwQkU2LTBCRjIwQzY2LTBDNkYwQzc4LTBDN0UwQ0U2LTBDRUYwRDY2LTBENzUwRTUwLTBFNTkwRUQwLTBFRDkwRjIwLTBGMzMxMDQwLTEwNDkxMDkwLTEwOTkxMzY5LTEzN0MxNkVFLTE2RjAxN0UwLTE3RTkxN0YwLTE3RjkxODEwLTE4MTkxOTQ2LTE5NEYxOUQwLTE5REExQTgwLTFBODkxQTkwLTFBOTkxQjUwLTFCNTkxQkIwLTFCQjkxQzQwLTFDNDkxQzUwLTFDNTkyMDcwMjA3NC0yMDc5MjA4MC0yMDg5MjE1MC0yMTgyMjE4NS0yMTg5MjQ2MC0yNDlCMjRFQS0yNEZGMjc3Ni0yNzkzMkNGRDMwMDczMDIxLTMwMjkzMDM4LTMwM0EzMTkyLTMxOTUzMjIwLTMyMjkzMjUxLTMyNUYzMjgwLTMyODkzMkIxLTMyQkZBNjIwLUE2MjlBNkU2LUE2RUZBODMwLUE4MzVBOEQwLUE4RDlBOTAwLUE5MDlBOUQwLUE5RDlBQTUwLUFBNTlBQkYwLUFCRjlGRjEwLUZGMTkiLE5kOiIwMDMwLTAwMzkwNjYwLTA2NjkwNkYwLTA2RjkwN0MwLTA3QzkwOTY2LTA5NkYwOUU2LTA5RUYwQTY2LTBBNkYwQUU2LTBBRUYwQjY2LTBCNkYwQkU2LTBCRUYwQzY2LTBDNkYwQ0U2LTBDRUYwRDY2LTBENkYwRTUwLTBFNTkwRUQwLTBFRDkwRjIwLTBGMjkxMDQwLTEwNDkxMDkwLTEwOTkxN0UwLTE3RTkxODEwLTE4MTkxOTQ2LTE5NEYxOUQwLTE5REExQTgwLTFBODkxQTkwLTFBOTkxQjUwLTFCNTkxQkIwLTFCQjkxQzQwLTFDNDkxQzUwLTFDNTlBNjIwLUE2MjlBOEQwLUE4RDlBOTAwLUE5MDlBOUQwLUE5RDlBQTUwLUFBNTlBQkYwLUFCRjlGRjEwLUZGMTkiLE5sOiIxNkVFLTE2RjAyMTYwLTIxODIyMTg1LTIxODgzMDA3MzAyMS0zMDI5MzAzOC0zMDNBQTZFNi1BNkVGIixObzoiMDBCMjAwQjMwMEI5MDBCQy0wMEJFMDlGNC0wOUY5MEJGMC0wQkYyMEM3OC0wQzdFMEQ3MC0wRDc1MEYyQS0wRjMzMTM2OS0xMzdDMTdGMC0xN0Y5MjA3MDIwNzQtMjA3OTIwODAtMjA4OTIxNTAtMjE1RjIxODkyNDYwLTI0OUIyNEVBLTI0RkYyNzc2LTI3OTMyQ0ZEMzE5Mi0zMTk1MzIyMC0zMjI5MzI1MS0zMjVGMzI4MC0zMjg5MzJCMS0zMkJGQTgzMC1BODM1IixQOiIwMDIxLTAwMjMwMDI1LTAwMkEwMDJDLTAwMkYwMDNBMDAzQjAwM0YwMDQwMDA1Qi0wMDVEMDA1RjAwN0IwMDdEMDBBMTAwQUIwMEI3MDBCQjAwQkYwMzdFMDM4NzA1NUEtMDU1RjA1ODkwNThBMDVCRTA1QzAwNUMzMDVDNjA1RjMwNUY0MDYwOTA2MEEwNjBDMDYwRDA2MUIwNjFFMDYxRjA2NkEtMDY2RDA2RDQwNzAwLTA3MEQwN0Y3LTA3RjkwODMwLTA4M0UwOTY0MDk2NTA5NzAwREY0MEU0RjBFNUEwRTVCMEYwNC0wRjEyMEYzQS0wRjNEMEY4NTBGRDAtMEZENDEwNEEtMTA0RjEwRkIxMzYxLTEzNjgxNDAwMTY2RDE2NkUxNjlCMTY5QzE2RUItMTZFRDE3MzUxNzM2MTdENC0xN0Q2MTdEOC0xN0RBMTgwMC0xODBBMTk0NDE5NDUxOURFMTlERjFBMUUxQTFGMUFBMC0xQUE2MUFBOC0xQUFEMUI1QS0xQjYwMUMzQi0xQzNGMUM3RTFDN0YxQ0QzMjAxMC0yMDI3MjAzMC0yMDQzMjA0NS0yMDUxMjA1My0yMDVFMjA3RDIwN0UyMDhEMjA4RTIzMjkyMzJBMjc2OC0yNzc1MjdDNTI3QzYyN0U2LTI3RUYyOTgzLTI5OTgyOUQ4LTI5REIyOUZDMjlGRDJDRjktMkNGQzJDRkUyQ0ZGMkUwMC0yRTJFMkUzMDJFMzEzMDAxLTMwMDMzMDA4LTMwMTEzMDE0LTMwMUYzMDMwMzAzRDMwQTAzMEZCQTRGRUE0RkZBNjBELUE2MEZBNjczQTY3RUE2RjItQTZGN0E4NzQtQTg3N0E4Q0VBOENGQThGOC1BOEZBQTkyRUE5MkZBOTVGQTlDMS1BOUNEQTlERUE5REZBQTVDLUFBNUZBQURFQUFERkFCRUJGRDNFRkQzRkZFMTAtRkUxOUZFMzAtRkU1MkZFNTQtRkU2MUZFNjNGRTY4RkU2QUZFNkJGRjAxLUZGMDNGRjA1LUZGMEFGRjBDLUZGMEZGRjFBRkYxQkZGMUZGRjIwRkYzQi1GRjNERkYzRkZGNUJGRjVERkY1Ri1GRjY1IixQZDoiMDAyRDA1OEEwNUJFMTQwMDE4MDYyMDEwLTIwMTUyRTE3MkUxQTMwMUMzMDMwMzBBMEZFMzFGRTMyRkU1OEZFNjNGRjBEIixQczoiMDAyODAwNUIwMDdCMEYzQTBGM0MxNjlCMjAxQTIwMUUyMDQ1MjA3RDIwOEQyMzI5Mjc2ODI3NkEyNzZDMjc2RTI3NzAyNzcyMjc3NDI3QzUyN0U2MjdFODI3RUEyN0VDMjdFRTI5ODMyOTg1Mjk4NzI5ODkyOThCMjk4RDI5OEYyOTkxMjk5MzI5OTUyOTk3MjlEODI5REEyOUZDMkUyMjJFMjQyRTI2MkUyODMwMDgzMDBBMzAwQzMwMEUzMDEwMzAxNDMwMTYzMDE4MzAxQTMwMURGRDNFRkUxN0ZFMzVGRTM3RkUzOUZFM0JGRTNERkUzRkZFNDFGRTQzRkU0N0ZFNTlGRTVCRkU1REZGMDhGRjNCRkY1QkZGNUZGRjYyIixQZToiMDAyOTAwNUQwMDdEMEYzQjBGM0QxNjlDMjA0NjIwN0UyMDhFMjMyQTI3NjkyNzZCMjc2RDI3NkYyNzcxMjc3MzI3NzUyN0M2MjdFNzI3RTkyN0VCMjdFRDI3RUYyOTg0Mjk4NjI5ODgyOThBMjk4QzI5OEUyOTkwMjk5MjI5OTQyOTk2Mjk5ODI5RDkyOURCMjlGRDJFMjMyRTI1MkUyNzJFMjkzMDA5MzAwQjMwMEQzMDBGMzAxMTMwMTUzMDE3MzAxOTMwMUIzMDFFMzAxRkZEM0ZGRTE4RkUzNkZFMzhGRTNBRkUzQ0ZFM0VGRTQwRkU0MkZFNDRGRTQ4RkU1QUZFNUNGRTVFRkYwOUZGM0RGRjVERkY2MEZGNjMiLFBpOiIwMEFCMjAxODIwMUIyMDFDMjAxRjIwMzkyRTAyMkUwNDJFMDkyRTBDMkUxQzJFMjAiLFBmOiIwMEJCMjAxOTIwMUQyMDNBMkUwMzJFMDUyRTBBMkUwRDJFMUQyRTIxIixQYzoiMDA1RjIwM0YyMDQwMjA1NEZFMzNGRTM0RkU0RC1GRTRGRkYzRiIsUG86IjAwMjEtMDAyMzAwMjUtMDAyNzAwMkEwMDJDMDAyRTAwMkYwMDNBMDAzQjAwM0YwMDQwMDA1QzAwQTEwMEI3MDBCRjAzN0UwMzg3MDU1QS0wNTVGMDU4OTA1QzAwNUMzMDVDNjA1RjMwNUY0MDYwOTA2MEEwNjBDMDYwRDA2MUIwNjFFMDYxRjA2NkEtMDY2RDA2RDQwNzAwLTA3MEQwN0Y3LTA3RjkwODMwLTA4M0UwOTY0MDk2NTA5NzAwREY0MEU0RjBFNUEwRTVCMEYwNC0wRjEyMEY4NTBGRDAtMEZENDEwNEEtMTA0RjEwRkIxMzYxLTEzNjgxNjZEMTY2RTE2RUItMTZFRDE3MzUxNzM2MTdENC0xN0Q2MTdEOC0xN0RBMTgwMC0xODA1MTgwNy0xODBBMTk0NDE5NDUxOURFMTlERjFBMUUxQTFGMUFBMC0xQUE2MUFBOC0xQUFEMUI1QS0xQjYwMUMzQi0xQzNGMUM3RTFDN0YxQ0QzMjAxNjIwMTcyMDIwLTIwMjcyMDMwLTIwMzgyMDNCLTIwM0UyMDQxLTIwNDMyMDQ3LTIwNTEyMDUzMjA1NS0yMDVFMkNGOS0yQ0ZDMkNGRTJDRkYyRTAwMkUwMTJFMDYtMkUwODJFMEIyRTBFLTJFMTYyRTE4MkUxOTJFMUIyRTFFMkUxRjJFMkEtMkUyRTJFMzAyRTMxMzAwMS0zMDAzMzAzRDMwRkJBNEZFQTRGRkE2MEQtQTYwRkE2NzNBNjdFQTZGMi1BNkY3QTg3NC1BODc3QThDRUE4Q0ZBOEY4LUE4RkFBOTJFQTkyRkE5NUZBOUMxLUE5Q0RBOURFQTlERkFBNUMtQUE1RkFBREVBQURGQUJFQkZFMTAtRkUxNkZFMTlGRTMwRkU0NUZFNDZGRTQ5LUZFNENGRTUwLUZFNTJGRTU0LUZFNTdGRTVGLUZFNjFGRTY4RkU2QUZFNkJGRjAxLUZGMDNGRjA1LUZGMDdGRjBBRkYwQ0ZGMEVGRjBGRkYxQUZGMUJGRjFGRkYyMEZGM0NGRjYxRkY2NEZGNjUiLFM6IjAwMjQwMDJCMDAzQy0wMDNFMDA1RTAwNjAwMDdDMDA3RTAwQTItMDBBOTAwQUMwMEFFLTAwQjEwMEI0MDBCNjAwQjgwMEQ3MDBGNzAyQzItMDJDNTAyRDItMDJERjAyRTUtMDJFQjAyRUQwMkVGLTAyRkYwMzc1MDM4NDAzODUwM0Y2MDQ4MjA2MDYtMDYwODA2MEIwNjBFMDYwRjA2RTkwNkZEMDZGRTA3RjYwOUYyMDlGMzA5RkEwOUZCMEFGMTBCNzAwQkYzLTBCRkEwQzdGMENGMTBDRjIwRDc5MEUzRjBGMDEtMEYwMzBGMTMtMEYxNzBGMUEtMEYxRjBGMzQwRjM2MEYzODBGQkUtMEZDNTBGQzctMEZDQzBGQ0UwRkNGMEZENS0wRkQ4MTA5RTEwOUYxMzYwMTM5MC0xMzk5MTdEQjE5NDAxOUUwLTE5RkYxQjYxLTFCNkExQjc0LTFCN0MxRkJEMUZCRi0xRkMxMUZDRC0xRkNGMUZERC0xRkRGMUZFRC0xRkVGMUZGRDFGRkUyMDQ0MjA1MjIwN0EtMjA3QzIwOEEtMjA4QzIwQTAtMjBCODIxMDAyMTAxMjEwMy0yMTA2MjEwODIxMDkyMTE0MjExNi0yMTE4MjExRS0yMTIzMjEyNTIxMjcyMTI5MjEyRTIxM0EyMTNCMjE0MC0yMTQ0MjE0QS0yMTREMjE0RjIxOTAtMjMyODIzMkItMjNFODI0MDAtMjQyNjI0NDAtMjQ0QTI0OUMtMjRFOTI1MDAtMjZDRDI2Q0YtMjZFMTI2RTMyNkU4LTI2RkYyNzAxLTI3MDQyNzA2LTI3MDkyNzBDLTI3MjcyNzI5LTI3NEIyNzREMjc0Ri0yNzUyMjc1Ni0yNzVFMjc2MS0yNzY3Mjc5NDI3OTgtMjdBRjI3QjEtMjdCRTI3QzAtMjdDNDI3QzctMjdDQTI3Q0MyN0QwLTI3RTUyN0YwLTI5ODIyOTk5LTI5RDcyOURDLTI5RkIyOUZFLTJCNEMyQjUwLTJCNTkyQ0U1LTJDRUEyRTgwLTJFOTkyRTlCLTJFRjMyRjAwLTJGRDUyRkYwLTJGRkIzMDA0MzAxMjMwMTMzMDIwMzAzNjMwMzczMDNFMzAzRjMwOUIzMDlDMzE5MDMxOTEzMTk2LTMxOUYzMUMwLTMxRTMzMjAwLTMyMUUzMjJBLTMyNTAzMjYwLTMyN0YzMjhBLTMyQjAzMkMwLTMyRkUzMzAwLTMzRkY0REMwLTRERkZBNDkwLUE0QzZBNzAwLUE3MTZBNzIwQTcyMUE3ODlBNzhBQTgyOC1BODJCQTgzNi1BODM5QUE3Ny1BQTc5RkIyOUZERkNGREZERkU2MkZFNjQtRkU2NkZFNjlGRjA0RkYwQkZGMUMtRkYxRUZGM0VGRjQwRkY1Q0ZGNUVGRkUwLUZGRTZGRkU4LUZGRUVGRkZDRkZGRCIsU206IjAwMkIwMDNDLTAwM0UwMDdDMDA3RTAwQUMwMEIxMDBENzAwRjcwM0Y2MDYwNi0wNjA4MjA0NDIwNTIyMDdBLTIwN0MyMDhBLTIwOEMyMTQwLTIxNDQyMTRCMjE5MC0yMTk0MjE5QTIxOUIyMUEwMjFBMzIxQTYyMUFFMjFDRTIxQ0YyMUQyMjFENDIxRjQtMjJGRjIzMDgtMjMwQjIzMjAyMzIxMjM3QzIzOUItMjNCMzIzREMtMjNFMTI1QjcyNUMxMjVGOC0yNUZGMjY2RjI3QzAtMjdDNDI3QzctMjdDQTI3Q0MyN0QwLTI3RTUyN0YwLTI3RkYyOTAwLTI5ODIyOTk5LTI5RDcyOURDLTI5RkIyOUZFLTJBRkYyQjMwLTJCNDQyQjQ3LTJCNENGQjI5RkU2MkZFNjQtRkU2NkZGMEJGRjFDLUZGMUVGRjVDRkY1RUZGRTJGRkU5LUZGRUMiLFNjOiIwMDI0MDBBMi0wMEE1MDYwQjA5RjIwOUYzMDlGQjBBRjEwQkY5MEUzRjE3REIyMEEwLTIwQjhBODM4RkRGQ0ZFNjlGRjA0RkZFMEZGRTFGRkU1RkZFNiIsU2s6IjAwNUUwMDYwMDBBODAwQUYwMEI0MDBCODAyQzItMDJDNTAyRDItMDJERjAyRTUtMDJFQjAyRUQwMkVGLTAyRkYwMzc1MDM4NDAzODUxRkJEMUZCRi0xRkMxMUZDRC0xRkNGMUZERC0xRkRGMUZFRC0xRkVGMUZGRDFGRkUzMDlCMzA5Q0E3MDAtQTcxNkE3MjBBNzIxQTc4OUE3OEFGRjNFRkY0MEZGRTMiLFNvOiIwMEE2MDBBNzAwQTkwMEFFMDBCMDAwQjYwNDgyMDYwRTA2MEYwNkU5MDZGRDA2RkUwN0Y2MDlGQTBCNzAwQkYzLTBCRjgwQkZBMEM3RjBDRjEwQ0YyMEQ3OTBGMDEtMEYwMzBGMTMtMEYxNzBGMUEtMEYxRjBGMzQwRjM2MEYzODBGQkUtMEZDNTBGQzctMEZDQzBGQ0UwRkNGMEZENS0wRkQ4MTA5RTEwOUYxMzYwMTM5MC0xMzk5MTk0MDE5RTAtMTlGRjFCNjEtMUI2QTFCNzQtMUI3QzIxMDAyMTAxMjEwMy0yMTA2MjEwODIxMDkyMTE0MjExNi0yMTE4MjExRS0yMTIzMjEyNTIxMjcyMTI5MjEyRTIxM0EyMTNCMjE0QTIxNEMyMTREMjE0RjIxOTUtMjE5OTIxOUMtMjE5RjIxQTEyMUEyMjFBNDIxQTUyMUE3LTIxQUQyMUFGLTIxQ0QyMUQwMjFEMTIxRDMyMUQ1LTIxRjMyMzAwLTIzMDcyMzBDLTIzMUYyMzIyLTIzMjgyMzJCLTIzN0IyMzdELTIzOUEyM0I0LTIzREIyM0UyLTIzRTgyNDAwLTI0MjYyNDQwLTI0NEEyNDlDLTI0RTkyNTAwLTI1QjYyNUI4LTI1QzAyNUMyLTI1RjcyNjAwLTI2NkUyNjcwLTI2Q0QyNkNGLTI2RTEyNkUzMjZFOC0yNkZGMjcwMS0yNzA0MjcwNi0yNzA5MjcwQy0yNzI3MjcyOS0yNzRCMjc0RDI3NEYtMjc1MjI3NTYtMjc1RTI3NjEtMjc2NzI3OTQyNzk4LTI3QUYyN0IxLTI3QkUyODAwLTI4RkYyQjAwLTJCMkYyQjQ1MkI0NjJCNTAtMkI1OTJDRTUtMkNFQTJFODAtMkU5OTJFOUItMkVGMzJGMDAtMkZENTJGRjAtMkZGQjMwMDQzMDEyMzAxMzMwMjAzMDM2MzAzNzMwM0UzMDNGMzE5MDMxOTEzMTk2LTMxOUYzMUMwLTMxRTMzMjAwLTMyMUUzMjJBLTMyNTAzMjYwLTMyN0YzMjhBLTMyQjAzMkMwLTMyRkUzMzAwLTMzRkY0REMwLTRERkZBNDkwLUE0QzZBODI4LUE4MkJBODM2QTgzN0E4MzlBQTc3LUFBNzlGREZERkZFNEZGRThGRkVERkZFRUZGRkNGRkZEIixaOiIwMDIwMDBBMDE2ODAxODBFMjAwMC0yMDBBMjAyODIwMjkyMDJGMjA1RjMwMDAiLFpzOiIwMDIwMDBBMDE2ODAxODBFMjAwMC0yMDBBMjAyRjIwNUYzMDAwIixabDoiMjAyOCIsWnA6IjIwMjkiLEM6IjAwMDAtMDAxRjAwN0YtMDA5RjAwQUQwMzc4MDM3OTAzN0YtMDM4MzAzOEIwMzhEMDNBMjA1MjYtMDUzMDA1NTcwNTU4MDU2MDA1ODgwNThCLTA1OTAwNUM4LTA1Q0YwNUVCLTA1RUYwNUY1LTA2MDUwNjFDMDYxRDA2MjAwNjVGMDZERDA3MEUwNzBGMDc0QjA3NEMwN0IyLTA3QkYwN0ZCLTA3RkYwODJFMDgyRjA4M0YtMDhGRjA5M0EwOTNCMDk0RjA5NTYwOTU3MDk3My0wOTc4MDk4MDA5ODQwOThEMDk4RTA5OTEwOTkyMDlBOTA5QjEwOUIzLTA5QjUwOUJBMDlCQjA5QzUwOUM2MDlDOTA5Q0EwOUNGLTA5RDYwOUQ4LTA5REIwOURFMDlFNDA5RTUwOUZDLTBBMDAwQTA0MEEwQi0wQTBFMEExMTBBMTIwQTI5MEEzMTBBMzQwQTM3MEEzQTBBM0IwQTNEMEE0My0wQTQ2MEE0OTBBNEEwQTRFLTBBNTAwQTUyLTBBNTgwQTVEMEE1Ri0wQTY1MEE3Ni0wQTgwMEE4NDBBOEUwQTkyMEFBOTBBQjEwQUI0MEFCQTBBQkIwQUM2MEFDQTBBQ0UwQUNGMEFEMS0wQURGMEFFNDBBRTUwQUYwMEFGMi0wQjAwMEIwNDBCMEQwQjBFMEIxMTBCMTIwQjI5MEIzMTBCMzQwQjNBMEIzQjBCNDUwQjQ2MEI0OTBCNEEwQjRFLTBCNTUwQjU4LTBCNUIwQjVFMEI2NDBCNjUwQjcyLTBCODEwQjg0MEI4Qi0wQjhEMEI5MTBCOTYtMEI5ODBCOUIwQjlEMEJBMC0wQkEyMEJBNS0wQkE3MEJBQi0wQkFEMEJCQS0wQkJEMEJDMy0wQkM1MEJDOTBCQ0UwQkNGMEJEMS0wQkQ2MEJEOC0wQkU1MEJGQi0wQzAwMEMwNDBDMEQwQzExMEMyOTBDMzQwQzNBLTBDM0MwQzQ1MEM0OTBDNEUtMEM1NDBDNTcwQzVBLTBDNUYwQzY0MEM2NTBDNzAtMEM3NzBDODAwQzgxMEM4NDBDOEQwQzkxMENBOTBDQjQwQ0JBMENCQjBDQzUwQ0M5MENDRS0wQ0Q0MENENy0wQ0REMENERjBDRTQwQ0U1MENGMDBDRjMtMEQwMTBEMDQwRDBEMEQxMTBEMjkwRDNBLTBEM0MwRDQ1MEQ0OTBENEUtMEQ1NjBENTgtMEQ1RjBENjQwRDY1MEQ3Ni0wRDc4MEQ4MDBEODEwRDg0MEQ5Ny0wRDk5MERCMjBEQkMwREJFMERCRjBEQzctMERDOTBEQ0ItMERDRTBERDUwREQ3MERFMC0wREYxMERGNS0wRTAwMEUzQi0wRTNFMEU1Qy0wRTgwMEU4MzBFODUwRTg2MEU4OTBFOEIwRThDMEU4RS0wRTkzMEU5ODBFQTAwRUE0MEVBNjBFQTgwRUE5MEVBQzBFQkEwRUJFMEVCRjBFQzUwRUM3MEVDRTBFQ0YwRURBMEVEQjBFREUtMEVGRjBGNDgwRjZELTBGNzAwRjhDLTBGOEYwRjk4MEZCRDBGQ0QwRkQ5LTBGRkYxMEM2LTEwQ0YxMEZELTEwRkYxMjQ5MTI0RTEyNEYxMjU3MTI1OTEyNUUxMjVGMTI4OTEyOEUxMjhGMTJCMTEyQjYxMkI3MTJCRjEyQzExMkM2MTJDNzEyRDcxMzExMTMxNjEzMTcxMzVCLTEzNUUxMzdELTEzN0YxMzlBLTEzOUYxM0Y1LTEzRkYxNjlELTE2OUYxNkYxLTE2RkYxNzBEMTcxNS0xNzFGMTczNy0xNzNGMTc1NC0xNzVGMTc2RDE3NzExNzc0LTE3N0YxN0I0MTdCNTE3REUxN0RGMTdFQS0xN0VGMTdGQS0xN0ZGMTgwRjE4MUEtMTgxRjE4NzgtMTg3RjE4QUItMThBRjE4RjYtMThGRjE5MUQtMTkxRjE5MkMtMTkyRjE5M0MtMTkzRjE5NDEtMTk0MzE5NkUxOTZGMTk3NS0xOTdGMTlBQy0xOUFGMTlDQS0xOUNGMTlEQi0xOUREMUExQzFBMUQxQTVGMUE3RDFBN0UxQThBLTFBOEYxQTlBLTFBOUYxQUFFLTFBRkYxQjRDLTFCNEYxQjdELTFCN0YxQkFCLTFCQUQxQkJBLTFCRkYxQzM4LTFDM0ExQzRBLTFDNEMxQzgwLTFDQ0YxQ0YzLTFDRkYxREU3LTFERkMxRjE2MUYxNzFGMUUxRjFGMUY0NjFGNDcxRjRFMUY0RjFGNTgxRjVBMUY1QzFGNUUxRjdFMUY3RjFGQjUxRkM1MUZENDFGRDUxRkRDMUZGMDFGRjExRkY1MUZGRjIwMEItMjAwRjIwMkEtMjAyRTIwNjAtMjA2RjIwNzIyMDczMjA4RjIwOTUtMjA5RjIwQjktMjBDRjIwRjEtMjBGRjIxOEEtMjE4RjIzRTktMjNGRjI0MjctMjQzRjI0NEItMjQ1RjI2Q0UyNkUyMjZFNC0yNkU3MjcwMDI3MDUyNzBBMjcwQjI3MjgyNzRDMjc0RTI3NTMtMjc1NTI3NUYyNzYwMjc5NS0yNzk3MjdCMDI3QkYyN0NCMjdDRC0yN0NGMkI0RC0yQjRGMkI1QS0yQkZGMkMyRjJDNUYyQ0YyLTJDRjgyRDI2LTJEMkYyRDY2LTJENkUyRDcwLTJEN0YyRDk3LTJEOUYyREE3MkRBRjJEQjcyREJGMkRDNzJEQ0YyREQ3MkRERjJFMzItMkU3RjJFOUEyRUY0LTJFRkYyRkQ2LTJGRUYyRkZDLTJGRkYzMDQwMzA5NzMwOTgzMTAwLTMxMDQzMTJFLTMxMzAzMThGMzFCOC0zMUJGMzFFNC0zMUVGMzIxRjMyRkY0REI2LTREQkY5RkNDLTlGRkZBNDhELUE0OEZBNEM3LUE0Q0ZBNjJDLUE2M0ZBNjYwQTY2MUE2NzQtQTY3QkE2OTgtQTY5RkE2RjgtQTZGRkE3OEQtQTdGQUE4MkMtQTgyRkE4M0EtQTgzRkE4NzgtQTg3RkE4QzUtQThDREE4REEtQThERkE4RkMtQThGRkE5NTQtQTk1RUE5N0QtQTk3RkE5Q0VBOURBLUE5RERBOUUwLUE5RkZBQTM3LUFBM0ZBQTRFQUE0RkFBNUFBQTVCQUE3Qy1BQTdGQUFDMy1BQURBQUFFMC1BQkJGQUJFRUFCRUZBQkZBLUFCRkZEN0E0LUQ3QUZEN0M3LUQ3Q0FEN0ZDLUY4RkZGQTJFRkEyRkZBNkVGQTZGRkFEQS1GQUZGRkIwNy1GQjEyRkIxOC1GQjFDRkIzN0ZCM0RGQjNGRkI0MkZCNDVGQkIyLUZCRDJGRDQwLUZENEZGRDkwRkQ5MUZEQzgtRkRFRkZERkVGREZGRkUxQS1GRTFGRkUyNy1GRTJGRkU1M0ZFNjdGRTZDLUZFNkZGRTc1RkVGRC1GRjAwRkZCRi1GRkMxRkZDOEZGQzlGRkQwRkZEMUZGRDhGRkQ5RkZERC1GRkRGRkZFN0ZGRUYtRkZGQkZGRkVGRkZGIixDYzoiMDAwMC0wMDFGMDA3Ri0wMDlGIixDZjoiMDBBRDA2MDAtMDYwMzA2REQwNzBGMTdCNDE3QjUyMDBCLTIwMEYyMDJBLTIwMkUyMDYwLTIwNjQyMDZBLTIwNkZGRUZGRkZGOS1GRkZCIixDbzoiRTAwMC1GOEZGIixDczoiRDgwMC1ERkZGIixDbjoiMDM3ODAzNzkwMzdGLTAzODMwMzhCMDM4RDAzQTIwNTI2LTA1MzAwNTU3MDU1ODA1NjAwNTg4MDU4Qi0wNTkwMDVDOC0wNUNGMDVFQi0wNUVGMDVGNS0wNUZGMDYwNDA2MDUwNjFDMDYxRDA2MjAwNjVGMDcwRTA3NEIwNzRDMDdCMi0wN0JGMDdGQi0wN0ZGMDgyRTA4MkYwODNGLTA4RkYwOTNBMDkzQjA5NEYwOTU2MDk1NzA5NzMtMDk3ODA5ODAwOTg0MDk4RDA5OEUwOTkxMDk5MjA5QTkwOUIxMDlCMy0wOUI1MDlCQTA5QkIwOUM1MDlDNjA5QzkwOUNBMDlDRi0wOUQ2MDlEOC0wOURCMDlERTA5RTQwOUU1MDlGQy0wQTAwMEEwNDBBMEItMEEwRTBBMTEwQTEyMEEyOTBBMzEwQTM0MEEzNzBBM0EwQTNCMEEzRDBBNDMtMEE0NjBBNDkwQTRBMEE0RS0wQTUwMEE1Mi0wQTU4MEE1RDBBNUYtMEE2NTBBNzYtMEE4MDBBODQwQThFMEE5MjBBQTkwQUIxMEFCNDBBQkEwQUJCMEFDNjBBQ0EwQUNFMEFDRjBBRDEtMEFERjBBRTQwQUU1MEFGMDBBRjItMEIwMDBCMDQwQjBEMEIwRTBCMTEwQjEyMEIyOTBCMzEwQjM0MEIzQTBCM0IwQjQ1MEI0NjBCNDkwQjRBMEI0RS0wQjU1MEI1OC0wQjVCMEI1RTBCNjQwQjY1MEI3Mi0wQjgxMEI4NDBCOEItMEI4RDBCOTEwQjk2LTBCOTgwQjlCMEI5RDBCQTAtMEJBMjBCQTUtMEJBNzBCQUItMEJBRDBCQkEtMEJCRDBCQzMtMEJDNTBCQzkwQkNFMEJDRjBCRDEtMEJENjBCRDgtMEJFNTBCRkItMEMwMDBDMDQwQzBEMEMxMTBDMjkwQzM0MEMzQS0wQzNDMEM0NTBDNDkwQzRFLTBDNTQwQzU3MEM1QS0wQzVGMEM2NDBDNjUwQzcwLTBDNzcwQzgwMEM4MTBDODQwQzhEMEM5MTBDQTkwQ0I0MENCQTBDQkIwQ0M1MENDOTBDQ0UtMENENDBDRDctMENERDBDREYwQ0U0MENFNTBDRjAwQ0YzLTBEMDEwRDA0MEQwRDBEMTEwRDI5MEQzQS0wRDNDMEQ0NTBENDkwRDRFLTBENTYwRDU4LTBENUYwRDY0MEQ2NTBENzYtMEQ3ODBEODAwRDgxMEQ4NDBEOTctMEQ5OTBEQjIwREJDMERCRTBEQkYwREM3LTBEQzkwRENCLTBEQ0UwREQ1MERENzBERTAtMERGMTBERjUtMEUwMDBFM0ItMEUzRTBFNUMtMEU4MDBFODMwRTg1MEU4NjBFODkwRThCMEU4QzBFOEUtMEU5MzBFOTgwRUEwMEVBNDBFQTYwRUE4MEVBOTBFQUMwRUJBMEVCRTBFQkYwRUM1MEVDNzBFQ0UwRUNGMEVEQTBFREIwRURFLTBFRkYwRjQ4MEY2RC0wRjcwMEY4Qy0wRjhGMEY5ODBGQkQwRkNEMEZEOS0wRkZGMTBDNi0xMENGMTBGRC0xMEZGMTI0OTEyNEUxMjRGMTI1NzEyNTkxMjVFMTI1RjEyODkxMjhFMTI4RjEyQjExMkI2MTJCNzEyQkYxMkMxMTJDNjEyQzcxMkQ3MTMxMTEzMTYxMzE3MTM1Qi0xMzVFMTM3RC0xMzdGMTM5QS0xMzlGMTNGNS0xM0ZGMTY5RC0xNjlGMTZGMS0xNkZGMTcwRDE3MTUtMTcxRjE3MzctMTczRjE3NTQtMTc1RjE3NkQxNzcxMTc3NC0xNzdGMTdERTE3REYxN0VBLTE3RUYxN0ZBLTE3RkYxODBGMTgxQS0xODFGMTg3OC0xODdGMThBQi0xOEFGMThGNi0xOEZGMTkxRC0xOTFGMTkyQy0xOTJGMTkzQy0xOTNGMTk0MS0xOTQzMTk2RTE5NkYxOTc1LTE5N0YxOUFDLTE5QUYxOUNBLTE5Q0YxOURCLTE5REQxQTFDMUExRDFBNUYxQTdEMUE3RTFBOEEtMUE4RjFBOUEtMUE5RjFBQUUtMUFGRjFCNEMtMUI0RjFCN0QtMUI3RjFCQUItMUJBRDFCQkEtMUJGRjFDMzgtMUMzQTFDNEEtMUM0QzFDODAtMUNDRjFDRjMtMUNGRjFERTctMURGQzFGMTYxRjE3MUYxRTFGMUYxRjQ2MUY0NzFGNEUxRjRGMUY1ODFGNUExRjVDMUY1RTFGN0UxRjdGMUZCNTFGQzUxRkQ0MUZENTFGREMxRkYwMUZGMTFGRjUxRkZGMjA2NS0yMDY5MjA3MjIwNzMyMDhGMjA5NS0yMDlGMjBCOS0yMENGMjBGMS0yMEZGMjE4QS0yMThGMjNFOS0yM0ZGMjQyNy0yNDNGMjQ0Qi0yNDVGMjZDRTI2RTIyNkU0LTI2RTcyNzAwMjcwNTI3MEEyNzBCMjcyODI3NEMyNzRFMjc1My0yNzU1Mjc1RjI3NjAyNzk1LTI3OTcyN0IwMjdCRjI3Q0IyN0NELTI3Q0YyQjRELTJCNEYyQjVBLTJCRkYyQzJGMkM1RjJDRjItMkNGODJEMjYtMkQyRjJENjYtMkQ2RTJENzAtMkQ3RjJEOTctMkQ5RjJEQTcyREFGMkRCNzJEQkYyREM3MkRDRjJERDcyRERGMkUzMi0yRTdGMkU5QTJFRjQtMkVGRjJGRDYtMkZFRjJGRkMtMkZGRjMwNDAzMDk3MzA5ODMxMDAtMzEwNDMxMkUtMzEzMDMxOEYzMUI4LTMxQkYzMUU0LTMxRUYzMjFGMzJGRjREQjYtNERCRjlGQ0MtOUZGRkE0OEQtQTQ4RkE0QzctQTRDRkE2MkMtQTYzRkE2NjBBNjYxQTY3NC1BNjdCQTY5OC1BNjlGQTZGOC1BNkZGQTc4RC1BN0ZBQTgyQy1BODJGQTgzQS1BODNGQTg3OC1BODdGQThDNS1BOENEQThEQS1BOERGQThGQy1BOEZGQTk1NC1BOTVFQTk3RC1BOTdGQTlDRUE5REEtQTlEREE5RTAtQTlGRkFBMzctQUEzRkFBNEVBQTRGQUE1QUFBNUJBQTdDLUFBN0ZBQUMzLUFBREFBQUUwLUFCQkZBQkVFQUJFRkFCRkEtQUJGRkQ3QTQtRDdBRkQ3QzctRDdDQUQ3RkMtRDdGRkZBMkVGQTJGRkE2RUZBNkZGQURBLUZBRkZGQjA3LUZCMTJGQjE4LUZCMUNGQjM3RkIzREZCM0ZGQjQyRkI0NUZCQjItRkJEMkZENDAtRkQ0RkZEOTBGRDkxRkRDOC1GREVGRkRGRUZERkZGRTFBLUZFMUZGRTI3LUZFMkZGRTUzRkU2N0ZFNkMtRkU2RkZFNzVGRUZERkVGRUZGMDBGRkJGLUZGQzFGRkM4RkZDOUZGRDBGRkQxRkZEOEZGRDlGRkRELUZGREZGRkU3RkZFRi1GRkY4RkZGRUZGRkYifSl9KSxkZWZpbmUoImFjZS9kb2N1bWVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIiwiYWNlL3JhbmdlIiwiYWNlL2FuY2hvciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL2xpYi9vb3AiKSxpPWUoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIscz1lKCIuL3JhbmdlIikuUmFuZ2Usbz1lKCIuL2FuY2hvciIpLkFuY2hvcix1PWZ1bmN0aW9uKGUpe3RoaXMuJGxpbmVzPVtdLGUubGVuZ3RoPT0wP3RoaXMuJGxpbmVzPVsiIl06QXJyYXkuaXNBcnJheShlKT90aGlzLmluc2VydExpbmVzKDAsZSk6dGhpcy5pbnNlcnQoe3JvdzowLGNvbHVtbjowfSxlKX07KGZ1bmN0aW9uKCl7ci5pbXBsZW1lbnQodGhpcyxpKSx0aGlzLnNldFZhbHVlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0TGVuZ3RoKCk7dGhpcy5yZW1vdmUobmV3IHMoMCwwLHQsdGhpcy5nZXRMaW5lKHQtMSkubGVuZ3RoKSksdGhpcy5pbnNlcnQoe3JvdzowLGNvbHVtbjowfSxlKX0sdGhpcy5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEFsbExpbmVzKCkuam9pbih0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSl9LHRoaXMuY3JlYXRlQW5jaG9yPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBvKHRoaXMsZSx0KX0sImFhYSIuc3BsaXQoL2EvKS5sZW5ndGg9PTA/dGhpcy4kc3BsaXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpLnNwbGl0KCJcbiIpfTp0aGlzLiRzcGxpdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgvXHJcbnxccnxcbi8pfSx0aGlzLiRkZXRlY3ROZXdMaW5lPWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14uKj8oXHJcbnxccnxcbikvbSk7dD90aGlzLiRhdXRvTmV3TGluZT10WzFdOnRoaXMuJGF1dG9OZXdMaW5lPSJcbiJ9LHRoaXMuZ2V0TmV3TGluZUNoYXJhY3Rlcj1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLiRuZXdMaW5lTW9kZSl7Y2FzZSJ3aW5kb3dzIjpyZXR1cm4iXHJcbiI7Y2FzZSJ1bml4IjpyZXR1cm4iXG4iO2Nhc2UiYXV0byI6cmV0dXJuIHRoaXMuJGF1dG9OZXdMaW5lfX0sdGhpcy4kYXV0b05ld0xpbmU9IlxuIix0aGlzLiRuZXdMaW5lTW9kZT0iYXV0byIsdGhpcy5zZXROZXdMaW5lTW9kZT1mdW5jdGlvbihlKXtpZih0aGlzLiRuZXdMaW5lTW9kZT09PWUpcmV0dXJuO3RoaXMuJG5ld0xpbmVNb2RlPWV9LHRoaXMuZ2V0TmV3TGluZU1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kbmV3TGluZU1vZGV9LHRoaXMuaXNOZXdMaW5lPWZ1bmN0aW9uKGUpe3JldHVybiBlPT0iXHJcbiJ8fGU9PSJcciJ8fGU9PSJcbiJ9LHRoaXMuZ2V0TGluZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy4kbGluZXNbZV18fCIifSx0aGlzLmdldExpbmVzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuJGxpbmVzLnNsaWNlKGUsdCsxKX0sdGhpcy5nZXRBbGxMaW5lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExpbmVzKDAsdGhpcy5nZXRMZW5ndGgoKSl9LHRoaXMuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGxpbmVzLmxlbmd0aH0sdGhpcy5nZXRUZXh0UmFuZ2U9ZnVuY3Rpb24oZSl7aWYoZS5zdGFydC5yb3c9PWUuZW5kLnJvdylyZXR1cm4gdGhpcy4kbGluZXNbZS5zdGFydC5yb3ddLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbixlLmVuZC5jb2x1bW4pO3ZhciB0PXRoaXMuZ2V0TGluZXMoZS5zdGFydC5yb3crMSxlLmVuZC5yb3ctMSk7cmV0dXJuIHQudW5zaGlmdCgodGhpcy4kbGluZXNbZS5zdGFydC5yb3ddfHwiIikuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKSksdC5wdXNoKCh0aGlzLiRsaW5lc1tlLmVuZC5yb3ddfHwiIikuc3Vic3RyaW5nKDAsZS5lbmQuY29sdW1uKSksdC5qb2luKHRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpKX0sdGhpcy4kY2xpcFBvc2l0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0TGVuZ3RoKCk7cmV0dXJuIGUucm93Pj10JiYoZS5yb3c9TWF0aC5tYXgoMCx0LTEpLGUuY29sdW1uPXRoaXMuZ2V0TGluZSh0LTEpLmxlbmd0aCksZX0sdGhpcy5pbnNlcnQ9ZnVuY3Rpb24oZSx0KXtpZighdHx8dC5sZW5ndGg9PT0wKXJldHVybiBlO2U9dGhpcy4kY2xpcFBvc2l0aW9uKGUpLHRoaXMuZ2V0TGVuZ3RoKCk8PTEmJnRoaXMuJGRldGVjdE5ld0xpbmUodCk7dmFyIG49dGhpcy4kc3BsaXQodCkscj1uLnNwbGljZSgwLDEpWzBdLGk9bi5sZW5ndGg9PTA/bnVsbDpuLnNwbGljZShuLmxlbmd0aC0xLDEpWzBdO3JldHVybiBlPXRoaXMuaW5zZXJ0SW5MaW5lKGUsciksaSE9PW51bGwmJihlPXRoaXMuaW5zZXJ0TmV3TGluZShlKSxlPXRoaXMuaW5zZXJ0TGluZXMoZS5yb3csbiksZT10aGlzLmluc2VydEluTGluZShlLGl8fCIiKSksZX0sdGhpcy5pbnNlcnRMaW5lcz1mdW5jdGlvbihlLHQpe2lmKHQubGVuZ3RoPT0wKXJldHVybntyb3c6ZSxjb2x1bW46MH07aWYodC5sZW5ndGg+NjU1MzUpe3ZhciBuPXRoaXMuaW5zZXJ0TGluZXMoZSx0LnNsaWNlKDY1NTM1KSk7dD10LnNsaWNlKDAsNjU1MzUpfXZhciByPVtlLDBdO3IucHVzaC5hcHBseShyLHQpLHRoaXMuJGxpbmVzLnNwbGljZS5hcHBseSh0aGlzLiRsaW5lcyxyKTt2YXIgaT1uZXcgcyhlLDAsZSt0Lmxlbmd0aCwwKSxvPXthY3Rpb246Imluc2VydExpbmVzIixyYW5nZTppLGxpbmVzOnR9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOm99KSxufHxpLmVuZH0sdGhpcy5pbnNlcnROZXdMaW5lPWZ1bmN0aW9uKGUpe2U9dGhpcy4kY2xpcFBvc2l0aW9uKGUpO3ZhciB0PXRoaXMuJGxpbmVzW2Uucm93XXx8IiI7dGhpcy4kbGluZXNbZS5yb3ddPXQuc3Vic3RyaW5nKDAsZS5jb2x1bW4pLHRoaXMuJGxpbmVzLnNwbGljZShlLnJvdysxLDAsdC5zdWJzdHJpbmcoZS5jb2x1bW4sdC5sZW5ndGgpKTt2YXIgbj17cm93OmUucm93KzEsY29sdW1uOjB9LHI9e2FjdGlvbjoiaW5zZXJ0VGV4dCIscmFuZ2U6cy5mcm9tUG9pbnRzKGUsbiksdGV4dDp0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKX07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6cn0pLG59LHRoaXMuaW5zZXJ0SW5MaW5lPWZ1bmN0aW9uKGUsdCl7aWYodC5sZW5ndGg9PTApcmV0dXJuIGU7dmFyIG49dGhpcy4kbGluZXNbZS5yb3ddfHwiIjt0aGlzLiRsaW5lc1tlLnJvd109bi5zdWJzdHJpbmcoMCxlLmNvbHVtbikrdCtuLnN1YnN0cmluZyhlLmNvbHVtbik7dmFyIHI9e3JvdzplLnJvdyxjb2x1bW46ZS5jb2x1bW4rdC5sZW5ndGh9LGk9e2FjdGlvbjoiaW5zZXJ0VGV4dCIscmFuZ2U6cy5mcm9tUG9pbnRzKGUsciksdGV4dDp0fTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTppfSkscn0sdGhpcy5yZW1vdmU9ZnVuY3Rpb24oZSl7ZS5zdGFydD10aGlzLiRjbGlwUG9zaXRpb24oZS5zdGFydCksZS5lbmQ9dGhpcy4kY2xpcFBvc2l0aW9uKGUuZW5kKTtpZihlLmlzRW1wdHkoKSlyZXR1cm4gZS5zdGFydDt2YXIgdD1lLnN0YXJ0LnJvdyxuPWUuZW5kLnJvdztpZihlLmlzTXVsdGlMaW5lKCkpe3ZhciByPWUuc3RhcnQuY29sdW1uPT0wP3Q6dCsxLGk9bi0xO2UuZW5kLmNvbHVtbj4wJiZ0aGlzLnJlbW92ZUluTGluZShuLDAsZS5lbmQuY29sdW1uKSxpPj1yJiZ0aGlzLnJlbW92ZUxpbmVzKHIsaSksciE9dCYmKHRoaXMucmVtb3ZlSW5MaW5lKHQsZS5zdGFydC5jb2x1bW4sdGhpcy5nZXRMaW5lKHQpLmxlbmd0aCksdGhpcy5yZW1vdmVOZXdMaW5lKGUuc3RhcnQucm93KSl9ZWxzZSB0aGlzLnJlbW92ZUluTGluZSh0LGUuc3RhcnQuY29sdW1uLGUuZW5kLmNvbHVtbik7cmV0dXJuIGUuc3RhcnR9LHRoaXMucmVtb3ZlSW5MaW5lPWZ1bmN0aW9uKGUsdCxuKXtpZih0PT1uKXJldHVybjt2YXIgcj1uZXcgcyhlLHQsZSxuKSxpPXRoaXMuZ2V0TGluZShlKSxvPWkuc3Vic3RyaW5nKHQsbiksdT1pLnN1YnN0cmluZygwLHQpK2kuc3Vic3RyaW5nKG4saS5sZW5ndGgpO3RoaXMuJGxpbmVzLnNwbGljZShlLDEsdSk7dmFyIGE9e2FjdGlvbjoicmVtb3ZlVGV4dCIscmFuZ2U6cix0ZXh0Om99O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOmF9KSxyLnN0YXJ0fSx0aGlzLnJlbW92ZUxpbmVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IHMoZSwwLHQrMSwwKSxyPXRoaXMuJGxpbmVzLnNwbGljZShlLHQtZSsxKSxpPXthY3Rpb246InJlbW92ZUxpbmVzIixyYW5nZTpuLG5sOnRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpLGxpbmVzOnJ9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOml9KSxyfSx0aGlzLnJlbW92ZU5ld0xpbmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRMaW5lKGUpLG49dGhpcy5nZXRMaW5lKGUrMSkscj1uZXcgcyhlLHQubGVuZ3RoLGUrMSwwKSxpPXQrbjt0aGlzLiRsaW5lcy5zcGxpY2UoZSwyLGkpO3ZhciBvPXthY3Rpb246InJlbW92ZVRleHQiLHJhbmdlOnIsdGV4dDp0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKX07dGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTpvfSl9LHRoaXMucmVwbGFjZT1mdW5jdGlvbihlLHQpe2lmKHQubGVuZ3RoPT0wJiZlLmlzRW1wdHkoKSlyZXR1cm4gZS5zdGFydDtpZih0PT10aGlzLmdldFRleHRSYW5nZShlKSlyZXR1cm4gZS5lbmQ7dGhpcy5yZW1vdmUoZSk7aWYodCl2YXIgbj10aGlzLmluc2VydChlLnN0YXJ0LHQpO2Vsc2Ugbj1lLnN0YXJ0O3JldHVybiBufSx0aGlzLmFwcGx5RGVsdGFzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgbj1lW3RdLHI9cy5mcm9tUG9pbnRzKG4ucmFuZ2Uuc3RhcnQsbi5yYW5nZS5lbmQpO24uYWN0aW9uPT0iaW5zZXJ0TGluZXMiP3RoaXMuaW5zZXJ0TGluZXMoci5zdGFydC5yb3csbi5saW5lcyk6bi5hY3Rpb249PSJpbnNlcnRUZXh0Ij90aGlzLmluc2VydChyLnN0YXJ0LG4udGV4dCk6bi5hY3Rpb249PSJyZW1vdmVMaW5lcyI/dGhpcy5yZW1vdmVMaW5lcyhyLnN0YXJ0LnJvdyxyLmVuZC5yb3ctMSk6bi5hY3Rpb249PSJyZW1vdmVUZXh0IiYmdGhpcy5yZW1vdmUocil9fSx0aGlzLnJldmVydERlbHRhcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGgtMTt0Pj0wO3QtLSl7dmFyIG49ZVt0XSxyPXMuZnJvbVBvaW50cyhuLnJhbmdlLnN0YXJ0LG4ucmFuZ2UuZW5kKTtuLmFjdGlvbj09Imluc2VydExpbmVzIj90aGlzLnJlbW92ZUxpbmVzKHIuc3RhcnQucm93LHIuZW5kLnJvdy0xKTpuLmFjdGlvbj09Imluc2VydFRleHQiP3RoaXMucmVtb3ZlKHIpOm4uYWN0aW9uPT0icmVtb3ZlTGluZXMiP3RoaXMuaW5zZXJ0TGluZXMoci5zdGFydC5yb3csbi5saW5lcyk6bi5hY3Rpb249PSJyZW1vdmVUZXh0IiYmdGhpcy5pbnNlcnQoci5zdGFydCxuLnRleHQpfX19KS5jYWxsKHUucHJvdG90eXBlKSx0LkRvY3VtZW50PXV9KSxkZWZpbmUoImFjZS9hbmNob3IiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvZXZlbnRfZW1pdHRlciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL2xpYi9vb3AiKSxpPWUoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIscz10LkFuY2hvcj1mdW5jdGlvbihlLHQsbil7dGhpcy5kb2N1bWVudD1lLHR5cGVvZiBuPT0idW5kZWZpbmVkIj90aGlzLnNldFBvc2l0aW9uKHQucm93LHQuY29sdW1uKTp0aGlzLnNldFBvc2l0aW9uKHQsbiksdGhpcy4kb25DaGFuZ2U9dGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpLGUub24oImNoYW5nZSIsdGhpcy4kb25DaGFuZ2UpfTsoZnVuY3Rpb24oKXtyLmltcGxlbWVudCh0aGlzLGkpLHRoaXMuZ2V0UG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudCh0aGlzLnJvdyx0aGlzLmNvbHVtbil9LHRoaXMuZ2V0RG9jdW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb2N1bWVudH0sdGhpcy5vbkNoYW5nZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGEsbj10LnJhbmdlO2lmKG4uc3RhcnQucm93PT1uLmVuZC5yb3cmJm4uc3RhcnQucm93IT10aGlzLnJvdylyZXR1cm47aWYobi5zdGFydC5yb3c+dGhpcy5yb3cpcmV0dXJuO2lmKG4uc3RhcnQucm93PT10aGlzLnJvdyYmbi5zdGFydC5jb2x1bW4+dGhpcy5jb2x1bW4pcmV0dXJuO3ZhciByPXRoaXMucm93LGk9dGhpcy5jb2x1bW47dC5hY3Rpb249PT0iaW5zZXJ0VGV4dCI/bi5zdGFydC5yb3c9PT1yJiZuLnN0YXJ0LmNvbHVtbjw9aT9uLnN0YXJ0LnJvdz09PW4uZW5kLnJvdz9pKz1uLmVuZC5jb2x1bW4tbi5zdGFydC5jb2x1bW46KGktPW4uc3RhcnQuY29sdW1uLHIrPW4uZW5kLnJvdy1uLnN0YXJ0LnJvdyk6bi5zdGFydC5yb3chPT1uLmVuZC5yb3cmJm4uc3RhcnQucm93PHImJihyKz1uLmVuZC5yb3ctbi5zdGFydC5yb3cpOnQuYWN0aW9uPT09Imluc2VydExpbmVzIj9uLnN0YXJ0LnJvdzw9ciYmKHIrPW4uZW5kLnJvdy1uLnN0YXJ0LnJvdyk6dC5hY3Rpb249PSJyZW1vdmVUZXh0Ij9uLnN0YXJ0LnJvdz09ciYmbi5zdGFydC5jb2x1bW48aT9uLmVuZC5jb2x1bW4+PWk/aT1uLnN0YXJ0LmNvbHVtbjppPU1hdGgubWF4KDAsaS0obi5lbmQuY29sdW1uLW4uc3RhcnQuY29sdW1uKSk6bi5zdGFydC5yb3chPT1uLmVuZC5yb3cmJm4uc3RhcnQucm93PHI/KG4uZW5kLnJvdz09ciYmKGk9TWF0aC5tYXgoMCxpLW4uZW5kLmNvbHVtbikrbi5zdGFydC5jb2x1bW4pLHItPW4uZW5kLnJvdy1uLnN0YXJ0LnJvdyk6bi5lbmQucm93PT1yJiYoci09bi5lbmQucm93LW4uc3RhcnQucm93LGk9TWF0aC5tYXgoMCxpLW4uZW5kLmNvbHVtbikrbi5zdGFydC5jb2x1bW4pOnQuYWN0aW9uPT0icmVtb3ZlTGluZXMiJiZuLnN0YXJ0LnJvdzw9ciYmKG4uZW5kLnJvdzw9cj9yLT1uLmVuZC5yb3ctbi5zdGFydC5yb3c6KHI9bi5zdGFydC5yb3csaT0wKSksdGhpcy5zZXRQb3NpdGlvbihyLGksITApfSx0aGlzLnNldFBvc2l0aW9uPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtuP3I9e3JvdzplLGNvbHVtbjp0fTpyPXRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQoZSx0KTtpZih0aGlzLnJvdz09ci5yb3cmJnRoaXMuY29sdW1uPT1yLmNvbHVtbilyZXR1cm47dmFyIGk9e3Jvdzp0aGlzLnJvdyxjb2x1bW46dGhpcy5jb2x1bW59O3RoaXMucm93PXIucm93LHRoaXMuY29sdW1uPXIuY29sdW1uLHRoaXMuX2VtaXQoImNoYW5nZSIse29sZDppLHZhbHVlOnJ9KX0sdGhpcy5kZXRhY2g9ZnVuY3Rpb24oKXt0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy4kb25DaGFuZ2UpfSx0aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49e307cmV0dXJuIGU+PXRoaXMuZG9jdW1lbnQuZ2V0TGVuZ3RoKCk/KG4ucm93PU1hdGgubWF4KDAsdGhpcy5kb2N1bWVudC5nZXRMZW5ndGgoKS0xKSxuLmNvbHVtbj10aGlzLmRvY3VtZW50LmdldExpbmUobi5yb3cpLmxlbmd0aCk6ZTwwPyhuLnJvdz0wLG4uY29sdW1uPTApOihuLnJvdz1lLG4uY29sdW1uPU1hdGgubWluKHRoaXMuZG9jdW1lbnQuZ2V0TGluZShuLnJvdykubGVuZ3RoLE1hdGgubWF4KDAsdCkpKSx0PDAmJihuLmNvbHVtbj0wKSxufX0pLmNhbGwocy5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvYmFja2dyb3VuZF90b2tlbml6ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvZXZlbnRfZW1pdHRlciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL2xpYi9vb3AiKSxpPWUoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIscz01ZTMsbz1mdW5jdGlvbihlLHQpe3RoaXMucnVubmluZz0hMSx0aGlzLmxpbmVzPVtdLHRoaXMuc3RhdGVzPVtdLHRoaXMuY3VycmVudExpbmU9MCx0aGlzLnRva2VuaXplcj1lO3ZhciBuPXRoaXM7dGhpcy4kd29ya2VyPWZ1bmN0aW9uKCl7aWYoIW4ucnVubmluZylyZXR1cm47dmFyIGU9bmV3IERhdGUsdD1uLmN1cnJlbnRMaW5lLHI9bi5kb2MsaT0wLHM9ci5nZXRMZW5ndGgoKTt3aGlsZShuLmN1cnJlbnRMaW5lPHMpe24uJHRva2VuaXplUm93KG4uY3VycmVudExpbmUpO3doaWxlKG4ubGluZXNbbi5jdXJyZW50TGluZV0pbi5jdXJyZW50TGluZSsrO2krKztpZihpJTU9PTAmJm5ldyBEYXRlLWU+MjApe24uZmlyZVVwZGF0ZUV2ZW50KHQsbi5jdXJyZW50TGluZS0xKSxuLnJ1bm5pbmc9c2V0VGltZW91dChuLiR3b3JrZXIsMjApO3JldHVybn19bi5ydW5uaW5nPSExLG4uZmlyZVVwZGF0ZUV2ZW50KHQscy0xKX19OyhmdW5jdGlvbigpe3IuaW1wbGVtZW50KHRoaXMsaSksdGhpcy5zZXRUb2tlbml6ZXI9ZnVuY3Rpb24oZSl7dGhpcy50b2tlbml6ZXI9ZSx0aGlzLmxpbmVzPVtdLHRoaXMuc3RhdGVzPVtdLHRoaXMuc3RhcnQoMCl9LHRoaXMuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oZSl7dGhpcy5kb2M9ZSx0aGlzLmxpbmVzPVtdLHRoaXMuc3RhdGVzPVtdLHRoaXMuc3RvcCgpfSx0aGlzLmZpcmVVcGRhdGVFdmVudD1mdW5jdGlvbihlLHQpe3ZhciBuPXtmaXJzdDplLGxhc3Q6dH07dGhpcy5fZW1pdCgidXBkYXRlIix7ZGF0YTpufSl9LHRoaXMuc3RhcnQ9ZnVuY3Rpb24oZSl7dGhpcy5jdXJyZW50TGluZT1NYXRoLm1pbihlfHwwLHRoaXMuY3VycmVudExpbmUsdGhpcy5kb2MuZ2V0TGVuZ3RoKCkpLHRoaXMubGluZXMuc3BsaWNlKHRoaXMuY3VycmVudExpbmUsdGhpcy5saW5lcy5sZW5ndGgpLHRoaXMuc3RhdGVzLnNwbGljZSh0aGlzLmN1cnJlbnRMaW5lLHRoaXMuc3RhdGVzLmxlbmd0aCksdGhpcy5zdG9wKCksdGhpcy5ydW5uaW5nPXNldFRpbWVvdXQodGhpcy4kd29ya2VyLDcwMCl9LHRoaXMuJHVwZGF0ZU9uQ2hhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmFuZ2Usbj10LnN0YXJ0LnJvdyxyPXQuZW5kLnJvdy1uO2lmKHI9PT0wKXRoaXMubGluZXNbbl09bnVsbDtlbHNlIGlmKGUuYWN0aW9uPT0icmVtb3ZlVGV4dCJ8fGUuYWN0aW9uPT0icmVtb3ZlTGluZXMiKXRoaXMubGluZXMuc3BsaWNlKG4scisxLG51bGwpLHRoaXMuc3RhdGVzLnNwbGljZShuLHIrMSxudWxsKTtlbHNle3ZhciBpPUFycmF5KHIrMSk7aS51bnNoaWZ0KG4sMSksdGhpcy5saW5lcy5zcGxpY2UuYXBwbHkodGhpcy5saW5lcyxpKSx0aGlzLnN0YXRlcy5zcGxpY2UuYXBwbHkodGhpcy5zdGF0ZXMsaSl9dGhpcy5jdXJyZW50TGluZT1NYXRoLm1pbihuLHRoaXMuY3VycmVudExpbmUsdGhpcy5kb2MuZ2V0TGVuZ3RoKCkpLHRoaXMuc3RvcCgpLHRoaXMucnVubmluZz1zZXRUaW1lb3V0KHRoaXMuJHdvcmtlciw3MDApfSx0aGlzLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLnJ1bm5pbmcmJmNsZWFyVGltZW91dCh0aGlzLnJ1bm5pbmcpLHRoaXMucnVubmluZz0hMX0sdGhpcy5nZXRUb2tlbnM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubGluZXNbZV18fHRoaXMuJHRva2VuaXplUm93KGUpfSx0aGlzLmdldFN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmN1cnJlbnRMaW5lPT1lJiZ0aGlzLiR0b2tlbml6ZVJvdyhlKSx0aGlzLnN0YXRlc1tlXXx8InN0YXJ0In0sdGhpcy4kdG9rZW5pemVSb3c9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5kb2MuZ2V0TGluZShlKSxuPXRoaXMuc3RhdGVzW2UtMV07aWYodC5sZW5ndGg+cyl7dmFyIHI9e3ZhbHVlOnQuc3Vic3RyKHMpLHR5cGU6InRleHQifTt0PXQuc2xpY2UoMCxzKX12YXIgaT10aGlzLnRva2VuaXplci5nZXRMaW5lVG9rZW5zKHQsbik7cmV0dXJuIHImJihpLnRva2Vucy5wdXNoKHIpLGkuc3RhdGU9InN0YXJ0IiksdGhpcy5zdGF0ZXNbZV0hPT1pLnN0YXRlPyh0aGlzLnN0YXRlc1tlXT1pLnN0YXRlLHRoaXMubGluZXNbZSsxXT1udWxsLHRoaXMuY3VycmVudExpbmU+ZSsxJiYodGhpcy5jdXJyZW50TGluZT1lKzEpKTp0aGlzLmN1cnJlbnRMaW5lPT1lJiYodGhpcy5jdXJyZW50TGluZT1lKzEpLHRoaXMubGluZXNbZV09aS50b2tlbnN9fSkuY2FsbChvLnByb3RvdHlwZSksdC5CYWNrZ3JvdW5kVG9rZW5pemVyPW99KSxkZWZpbmUoImFjZS9zZWFyY2hfaGlnaGxpZ2h0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9sYW5nIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9saWIvbGFuZyIpLGk9ZSgiLi9saWIvb29wIikscz1lKCIuL3JhbmdlIikuUmFuZ2Usbz1mdW5jdGlvbihlLHQsbil7dGhpcy5zZXRSZWdleHAoZSksdGhpcy5jbGF6ej10LHRoaXMudHlwZT1ufHwidGV4dCJ9OyhmdW5jdGlvbigpe3RoaXMuc2V0UmVnZXhwPWZ1bmN0aW9uKGUpe2lmKHRoaXMucmVnRXhwKyIiPT1lKyIiKXJldHVybjt0aGlzLnJlZ0V4cD1lLHRoaXMuY2FjaGU9W119LHRoaXMudXBkYXRlPWZ1bmN0aW9uKGUsdCxuLGkpe2lmKCF0aGlzLnJlZ0V4cClyZXR1cm47dmFyIG89aS5maXJzdFJvdyx1PWkubGFzdFJvdztmb3IodmFyIGE9bzthPD11O2ErKyl7dmFyIGY9dGhpcy5jYWNoZVthXTtmPT1udWxsJiYoZj1yLmdldE1hdGNoT2Zmc2V0cyhuLmdldExpbmUoYSksdGhpcy5yZWdFeHApLGY9Zi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBzKGEsZS5vZmZzZXQsYSxlLm9mZnNldCtlLmxlbmd0aCl9KSx0aGlzLmNhY2hlW2FdPWYubGVuZ3RoP2Y6IiIpO2Zvcih2YXIgbD1mLmxlbmd0aDtsLS07KXQuZHJhd1NpbmdsZUxpbmVNYXJrZXIoZSxmW2xdLnRvU2NyZWVuUmFuZ2UobiksdGhpcy5jbGF6eixpLG51bGwsdGhpcy50eXBlKX19fSkuY2FsbChvLnByb3RvdHlwZSksdC5TZWFyY2hIaWdobGlnaHQ9b30pLGRlZmluZSgiYWNlL2VkaXRfc2Vzc2lvbi9mb2xkaW5nIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIiwiYWNlL2VkaXRfc2Vzc2lvbi9mb2xkX2xpbmUiLCJhY2UvZWRpdF9zZXNzaW9uL2ZvbGQiLCJhY2UvdG9rZW5faXRlcmF0b3IiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gdSgpe3RoaXMuZ2V0Rm9sZEF0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLmdldEZvbGRMaW5lKGUpO2lmKCFyKXJldHVybiBudWxsO3ZhciBpPXIuZm9sZHM7Zm9yKHZhciBzPTA7czxpLmxlbmd0aDtzKyspe3ZhciBvPWlbc107aWYoby5yYW5nZS5jb250YWlucyhlLHQpKXtpZihuPT0xJiZvLnJhbmdlLmlzRW5kKGUsdCkpY29udGludWU7aWYobj09LTEmJm8ucmFuZ2UuaXNTdGFydChlLHQpKWNvbnRpbnVlO3JldHVybiBvfX19LHRoaXMuZ2V0Rm9sZHNJblJhbmdlPWZ1bmN0aW9uKGUpe2U9ZS5jbG9uZSgpO3ZhciB0PWUuc3RhcnQsbj1lLmVuZCxyPXRoaXMuJGZvbGREYXRhLGk9W107dC5jb2x1bW4rPTEsbi5jb2x1bW4tPTE7Zm9yKHZhciBzPTA7czxyLmxlbmd0aDtzKyspe3ZhciBvPXJbc10ucmFuZ2UuY29tcGFyZVJhbmdlKGUpO2lmKG89PTIpY29udGludWU7aWYobz09LTIpYnJlYWs7dmFyIHU9cltzXS5mb2xkcztmb3IodmFyIGE9MDthPHUubGVuZ3RoO2ErKyl7dmFyIGY9dVthXTtvPWYucmFuZ2UuY29tcGFyZVJhbmdlKGUpO2lmKG89PS0yKWJyZWFrO2lmKG89PTIpY29udGludWU7aWYobz09NDIpYnJlYWs7aS5wdXNoKGYpfX1yZXR1cm4gaX0sdGhpcy5nZXRBbGxGb2xkcz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4odCl7ZS5wdXNoKHQpO2lmKCF0LnN1YkZvbGRzKXJldHVybjtmb3IodmFyIHI9MDtyPHQuc3ViRm9sZHMubGVuZ3RoO3IrKyluKHQuc3ViRm9sZHNbcl0pfXZhciBlPVtdLHQ9dGhpcy4kZm9sZERhdGE7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspZm9yKHZhciBpPTA7aTx0W3JdLmZvbGRzLmxlbmd0aDtpKyspbih0W3JdLmZvbGRzW2ldKTtyZXR1cm4gZX0sdGhpcy5nZXRGb2xkU3RyaW5nQXQ9ZnVuY3Rpb24oZSx0LG4scil7cj1yfHx0aGlzLmdldEZvbGRMaW5lKGUpO2lmKCFyKXJldHVybiBudWxsO3ZhciBpPXtlbmQ6e2NvbHVtbjowfX0scyxvO2Zvcih2YXIgdT0wO3U8ci5mb2xkcy5sZW5ndGg7dSsrKXtvPXIuZm9sZHNbdV07dmFyIGE9by5yYW5nZS5jb21wYXJlRW5kKGUsdCk7aWYoYT09LTEpe3M9dGhpcy5nZXRMaW5lKG8uc3RhcnQucm93KS5zdWJzdHJpbmcoaS5lbmQuY29sdW1uLG8uc3RhcnQuY29sdW1uKTticmVha31pZihhPT09MClyZXR1cm4gbnVsbDtpPW99cmV0dXJuIHN8fChzPXRoaXMuZ2V0TGluZShvLnN0YXJ0LnJvdykuc3Vic3RyaW5nKGkuZW5kLmNvbHVtbikpLG49PS0xP3Muc3Vic3RyaW5nKDAsdC1pLmVuZC5jb2x1bW4pOm49PTE/cy5zdWJzdHJpbmcodC1pLmVuZC5jb2x1bW4pOnN9LHRoaXMuZ2V0Rm9sZExpbmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLiRmb2xkRGF0YSxyPTA7dCYmKHI9bi5pbmRleE9mKHQpKSxyPT0tMSYmKHI9MCk7Zm9yKHI7cjxuLmxlbmd0aDtyKyspe3ZhciBpPW5bcl07aWYoaS5zdGFydC5yb3c8PWUmJmkuZW5kLnJvdz49ZSlyZXR1cm4gaTtpZihpLmVuZC5yb3c+ZSlyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH0sdGhpcy5nZXROZXh0Rm9sZExpbmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLiRmb2xkRGF0YSxyPTA7dCYmKHI9bi5pbmRleE9mKHQpKSxyPT0tMSYmKHI9MCk7Zm9yKHI7cjxuLmxlbmd0aDtyKyspe3ZhciBpPW5bcl07aWYoaS5lbmQucm93Pj1lKXJldHVybiBpfXJldHVybiBudWxsfSx0aGlzLmdldEZvbGRlZFJvd0NvdW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy4kZm9sZERhdGEscj10LWUrMTtmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIHM9bltpXSxvPXMuZW5kLnJvdyx1PXMuc3RhcnQucm93O2lmKG8+PXQpe3U8dCYmKHU+PWU/ci09dC11OnI9MCk7YnJlYWt9bz49ZSYmKHU+PWU/ci09by11OnItPW8tZSsxKX1yZXR1cm4gcn0sdGhpcy4kYWRkRm9sZExpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuJGZvbGREYXRhLnB1c2goZSksdGhpcy4kZm9sZERhdGEuc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLnN0YXJ0LnJvdy10LnN0YXJ0LnJvd30pLGV9LHRoaXMuYWRkRm9sZD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuJGZvbGREYXRhLHI9ITEsbztlIGluc3RhbmNlb2Ygcz9vPWU6bz1uZXcgcyh0LGUpLHRoaXMuJGNsaXBSYW5nZVRvRG9jdW1lbnQoby5yYW5nZSk7dmFyIHU9by5zdGFydC5yb3csYT1vLnN0YXJ0LmNvbHVtbixmPW8uZW5kLnJvdyxsPW8uZW5kLmNvbHVtbjtpZihvLnBsYWNlaG9sZGVyLmxlbmd0aDwyKXRocm93IlBsYWNlaG9sZGVyIGhhcyB0byBiZSBhdCBsZWFzdCAyIGNoYXJhY3RlcnMiO2lmKHU9PWYmJmwtYTwyKXRocm93IlRoZSByYW5nZSBoYXMgdG8gYmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJzIHdpZHRoIjt2YXIgYz10aGlzLmdldEZvbGRBdCh1LGEsMSksaD10aGlzLmdldEZvbGRBdChmLGwsLTEpO2lmKGMmJmg9PWMpcmV0dXJuIGMuYWRkU3ViRm9sZChvKTtpZihjJiYhYy5yYW5nZS5pc1N0YXJ0KHUsYSl8fGgmJiFoLnJhbmdlLmlzRW5kKGYsbCkpdGhyb3ciQSBmb2xkIGNhbid0IGludGVyc2VjdCBhbHJlYWR5IGV4aXN0aW5nIGZvbGQiK28ucmFuZ2UrYy5yYW5nZTt2YXIgcD10aGlzLmdldEZvbGRzSW5SYW5nZShvLnJhbmdlKTtwLmxlbmd0aD4wJiYodGhpcy5yZW1vdmVGb2xkcyhwKSxvLnN1YkZvbGRzPXApO2Zvcih2YXIgZD0wO2Q8bi5sZW5ndGg7ZCsrKXt2YXIgdj1uW2RdO2lmKGY9PXYuc3RhcnQucm93KXt2LmFkZEZvbGQobykscj0hMDticmVha31pZih1PT12LmVuZC5yb3cpe3YuYWRkRm9sZChvKSxyPSEwO2lmKCFvLnNhbWVSb3cpe3ZhciBtPW5bZCsxXTtpZihtJiZtLnN0YXJ0LnJvdz09Zil7di5tZXJnZShtKTticmVha319YnJlYWt9aWYoZjw9di5zdGFydC5yb3cpYnJlYWt9cmV0dXJuIHJ8fCh2PXRoaXMuJGFkZEZvbGRMaW5lKG5ldyBpKHRoaXMuJGZvbGREYXRhLG8pKSksdGhpcy4kdXNlV3JhcE1vZGU/dGhpcy4kdXBkYXRlV3JhcERhdGEodi5zdGFydC5yb3csdi5zdGFydC5yb3cpOnRoaXMuJHVwZGF0ZVJvd0xlbmd0aENhY2hlKHYuc3RhcnQucm93LHYuc3RhcnQucm93KSx0aGlzLiRtb2RpZmllZD0hMCx0aGlzLl9lbWl0KCJjaGFuZ2VGb2xkIix7ZGF0YTpvfSksb30sdGhpcy5hZGRGb2xkcz1mdW5jdGlvbihlKXtlLmZvckVhY2goZnVuY3Rpb24oZSl7dGhpcy5hZGRGb2xkKGUpfSx0aGlzKX0sdGhpcy5yZW1vdmVGb2xkPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZm9sZExpbmUsbj10LnN0YXJ0LnJvdyxyPXQuZW5kLnJvdyxpPXRoaXMuJGZvbGREYXRhLHM9dC5mb2xkcztpZihzLmxlbmd0aD09MSlpLnNwbGljZShpLmluZGV4T2YodCksMSk7ZWxzZSBpZih0LnJhbmdlLmlzRW5kKGUuZW5kLnJvdyxlLmVuZC5jb2x1bW4pKXMucG9wKCksdC5lbmQucm93PXNbcy5sZW5ndGgtMV0uZW5kLnJvdyx0LmVuZC5jb2x1bW49c1tzLmxlbmd0aC0xXS5lbmQuY29sdW1uO2Vsc2UgaWYodC5yYW5nZS5pc1N0YXJ0KGUuc3RhcnQucm93LGUuc3RhcnQuY29sdW1uKSlzLnNoaWZ0KCksdC5zdGFydC5yb3c9c1swXS5zdGFydC5yb3csdC5zdGFydC5jb2x1bW49c1swXS5zdGFydC5jb2x1bW47ZWxzZSBpZihlLnNhbWVSb3cpcy5zcGxpY2Uocy5pbmRleE9mKGUpLDEpO2Vsc2V7dmFyIG89dC5zcGxpdChlLnN0YXJ0LnJvdyxlLnN0YXJ0LmNvbHVtbik7cz1vLmZvbGRzLHMuc2hpZnQoKSxvLnN0YXJ0LnJvdz1zWzBdLnN0YXJ0LnJvdyxvLnN0YXJ0LmNvbHVtbj1zWzBdLnN0YXJ0LmNvbHVtbn10aGlzLiR1c2VXcmFwTW9kZT90aGlzLiR1cGRhdGVXcmFwRGF0YShuLHIpOnRoaXMuJHVwZGF0ZVJvd0xlbmd0aENhY2hlKG4sciksdGhpcy4kbW9kaWZpZWQ9ITAsdGhpcy5fZW1pdCgiY2hhbmdlRm9sZCIse2RhdGE6ZX0pfSx0aGlzLnJlbW92ZUZvbGRzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXQucHVzaChlW25dKTt0LmZvckVhY2goZnVuY3Rpb24oZSl7dGhpcy5yZW1vdmVGb2xkKGUpfSx0aGlzKSx0aGlzLiRtb2RpZmllZD0hMH0sdGhpcy5leHBhbmRGb2xkPWZ1bmN0aW9uKGUpe3RoaXMucmVtb3ZlRm9sZChlKSxlLnN1YkZvbGRzLmZvckVhY2goZnVuY3Rpb24oZSl7dGhpcy5hZGRGb2xkKGUpfSx0aGlzKSxlLnN1YkZvbGRzPVtdfSx0aGlzLmV4cGFuZEZvbGRzPWZ1bmN0aW9uKGUpe2UuZm9yRWFjaChmdW5jdGlvbihlKXt0aGlzLmV4cGFuZEZvbGQoZSl9LHRoaXMpfSx0aGlzLnVuZm9sZD1mdW5jdGlvbihlLHQpe3ZhciBuLGk7ZT09bnVsbD9uPW5ldyByKDAsMCx0aGlzLmdldExlbmd0aCgpLDApOnR5cGVvZiBlPT0ibnVtYmVyIj9uPW5ldyByKGUsMCxlLHRoaXMuZ2V0TGluZShlKS5sZW5ndGgpOiJyb3ciaW4gZT9uPXIuZnJvbVBvaW50cyhlLGUpOm49ZSxpPXRoaXMuZ2V0Rm9sZHNJblJhbmdlKG4pO2lmKHQpdGhpcy5yZW1vdmVGb2xkcyhpKTtlbHNlIHdoaWxlKGkubGVuZ3RoKXRoaXMuZXhwYW5kRm9sZHMoaSksaT10aGlzLmdldEZvbGRzSW5SYW5nZShuKX0sdGhpcy5pc1Jvd0ZvbGRlZD1mdW5jdGlvbihlLHQpe3JldHVybiEhdGhpcy5nZXRGb2xkTGluZShlLHQpfSx0aGlzLmdldFJvd0ZvbGRFbmQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmdldEZvbGRMaW5lKGUsdCk7cmV0dXJuIG4/bi5lbmQucm93OmV9LHRoaXMuZ2V0Rm9sZERpc3BsYXlMaW5lPWZ1bmN0aW9uKGUsdCxuLHIsaSl7cj09bnVsbCYmKHI9ZS5zdGFydC5yb3csaT0wKSx0PT1udWxsJiYodD1lLmVuZC5yb3csbj10aGlzLmdldExpbmUodCkubGVuZ3RoKTt2YXIgcz10aGlzLmRvYyxvPSIiO3JldHVybiBlLndhbGsoZnVuY3Rpb24oZSx0LG4sdSl7aWYodDxyKXJldHVybjtpZih0PT1yKXtpZihuPGkpcmV0dXJuO3U9TWF0aC5tYXgoaSx1KX1lP28rPWU6bys9cy5nZXRMaW5lKHQpLnN1YnN0cmluZyh1LG4pfS5iaW5kKHRoaXMpLHQsbiksb30sdGhpcy5nZXREaXNwbGF5TGluZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLmdldEZvbGRMaW5lKGUpO2lmKCFpKXt2YXIgcztyZXR1cm4gcz10aGlzLmRvYy5nZXRMaW5lKGUpLHMuc3Vic3RyaW5nKHJ8fDAsdHx8cy5sZW5ndGgpfXJldHVybiB0aGlzLmdldEZvbGREaXNwbGF5TGluZShpLGUsdCxuLHIpfSx0aGlzLiRjbG9uZUZvbGREYXRhPWZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuIGU9dGhpcy4kZm9sZERhdGEubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZm9sZHMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsb25lKCl9KTtyZXR1cm4gbmV3IGkoZSxuKX0pLGV9LHRoaXMudG9nZ2xlRm9sZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnNlbGVjdGlvbixuPXQuZ2V0UmFuZ2UoKSxyLGk7aWYobi5pc0VtcHR5KCkpe3ZhciBzPW4uc3RhcnQ7cj10aGlzLmdldEZvbGRBdChzLnJvdyxzLmNvbHVtbik7aWYocil7dGhpcy5leHBhbmRGb2xkKHIpO3JldHVybn0oaT10aGlzLmZpbmRNYXRjaGluZ0JyYWNrZXQocykpP24uY29tcGFyZVBvaW50KGkpPT0xP24uZW5kPWk6KG4uc3RhcnQ9aSxuLnN0YXJ0LmNvbHVtbisrLG4uZW5kLmNvbHVtbi0tKTooaT10aGlzLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpzLnJvdyxjb2x1bW46cy5jb2x1bW4rMX0pKT8obi5jb21wYXJlUG9pbnQoaSk9PTE/bi5lbmQ9aTpuLnN0YXJ0PWksbi5zdGFydC5jb2x1bW4rKyk6bj10aGlzLmdldENvbW1lbnRGb2xkUmFuZ2Uocy5yb3cscy5jb2x1bW4pfHxufWVsc2V7dmFyIG89dGhpcy5nZXRGb2xkc0luUmFuZ2Uobik7aWYoZSYmby5sZW5ndGgpe3RoaXMuZXhwYW5kRm9sZHMobyk7cmV0dXJufW8ubGVuZ3RoPT0xJiYocj1vWzBdKX1yfHwocj10aGlzLmdldEZvbGRBdChuLnN0YXJ0LnJvdyxuLnN0YXJ0LmNvbHVtbikpO2lmKHImJnIucmFuZ2UudG9TdHJpbmcoKT09bi50b1N0cmluZygpKXt0aGlzLmV4cGFuZEZvbGQocik7cmV0dXJufXZhciB1PSIuLi4iO2lmKCFuLmlzTXVsdGlMaW5lKCkpe3U9dGhpcy5nZXRUZXh0UmFuZ2Uobik7aWYodS5sZW5ndGg8NClyZXR1cm47dT11LnRyaW0oKS5zdWJzdHJpbmcoMCwyKSsiLi4ifXRoaXMuYWRkRm9sZCh1LG4pfSx0aGlzLmdldENvbW1lbnRGb2xkUmFuZ2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgbyh0aGlzLGUsdCksaT1uLmdldEN1cnJlbnRUb2tlbigpO2lmKGkmJi9eY29tbWVudHxzdHJpbmcvLnRlc3QoaS50eXBlKSl7dmFyIHM9bmV3IHIsdT1uZXcgUmVnRXhwKGkudHlwZS5yZXBsYWNlKC9cLi4qLywiXFwuIikpO2RvIGk9bi5zdGVwQmFja3dhcmQoKTt3aGlsZShpJiZ1LnRlc3QoaS50eXBlKSk7bi5zdGVwRm9yd2FyZCgpLHMuc3RhcnQucm93PW4uZ2V0Q3VycmVudFRva2VuUm93KCkscy5zdGFydC5jb2x1bW49bi5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKSsyLG49bmV3IG8odGhpcyxlLHQpO2RvIGk9bi5zdGVwRm9yd2FyZCgpO3doaWxlKGkmJnUudGVzdChpLnR5cGUpKTtyZXR1cm4gaT1uLnN0ZXBCYWNrd2FyZCgpLHMuZW5kLnJvdz1uLmdldEN1cnJlbnRUb2tlblJvdygpLHMuZW5kLmNvbHVtbj1uLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK2kudmFsdWUubGVuZ3RoLHN9fSx0aGlzLmZvbGRBbGw9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmZvbGRXaWRnZXRzO3Q9dHx8dGhpcy5nZXRMZW5ndGgoKTtmb3IodmFyIHI9ZXx8MDtyPHQ7cisrKXtuW3JdPT1udWxsJiYobltyXT10aGlzLmdldEZvbGRXaWRnZXQocikpO2lmKG5bcl0hPSJzdGFydCIpY29udGludWU7dmFyIGk9dGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2Uocik7aWYoaSYmaS5lbmQucm93PHQpdHJ5e3RoaXMuYWRkRm9sZCgiLi4uIixpKX1jYXRjaChzKXt9fX0sdGhpcy4kZm9sZFN0eWxlcz17bWFudWFsOjEsbWFya2JlZ2luOjEsbWFya2JlZ2luZW5kOjF9LHRoaXMuJGZvbGRTdHlsZT0ibWFya2JlZ2luIix0aGlzLnNldEZvbGRTdHlsZT1mdW5jdGlvbihlKXtpZighdGhpcy4kZm9sZFN0eWxlc1tlXSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9sZCBzdHlsZTogIitlKyJbIitPYmplY3Qua2V5cyh0aGlzLiRmb2xkU3R5bGVzKS5qb2luKCIsICIpKyJdIik7aWYodGhpcy4kZm9sZFN0eWxlPT1lKXJldHVybjt0aGlzLiRmb2xkU3R5bGU9ZSxlPT0ibWFudWFsIiYmdGhpcy51bmZvbGQoKTt2YXIgdD10aGlzLiRmb2xkTW9kZTt0aGlzLiRzZXRGb2xkaW5nKG51bGwpLHRoaXMuJHNldEZvbGRpbmcodCl9LHRoaXMuJHNldEZvbGRpbmc9ZnVuY3Rpb24oZSl7aWYodGhpcy4kZm9sZE1vZGU9PWUpcmV0dXJuO3RoaXMuJGZvbGRNb2RlPWUsdGhpcy5yZW1vdmVMaXN0ZW5lcigiY2hhbmdlIix0aGlzLiR1cGRhdGVGb2xkV2lkZ2V0cyksdGhpcy5fZW1pdCgiY2hhbmdlQW5ub3RhdGlvbiIpO2lmKCFlfHx0aGlzLiRmb2xkU3R5bGU9PSJtYW51YWwiKXt0aGlzLmZvbGRXaWRnZXRzPW51bGw7cmV0dXJufXRoaXMuZm9sZFdpZGdldHM9W10sdGhpcy5nZXRGb2xkV2lkZ2V0PWUuZ2V0Rm9sZFdpZGdldC5iaW5kKGUsdGhpcyx0aGlzLiRmb2xkU3R5bGUpLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWUuZ2V0Rm9sZFdpZGdldFJhbmdlLmJpbmQoZSx0aGlzLHRoaXMuJGZvbGRTdHlsZSksdGhpcy4kdXBkYXRlRm9sZFdpZGdldHM9dGhpcy51cGRhdGVGb2xkV2lkZ2V0cy5iaW5kKHRoaXMpLHRoaXMub24oImNoYW5nZSIsdGhpcy4kdXBkYXRlRm9sZFdpZGdldHMpfSx0aGlzLm9uRm9sZFdpZGdldENsaWNrPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRGb2xkV2lkZ2V0KGUpLHI9dGhpcy5nZXRMaW5lKGUpLGk9dC5zaGlmdEtleSxzPWl8fHQuY3RybEtleXx8dC5hbHRLZXl8fHQubWV0YUtleSxvO249PSJlbmQiP289dGhpcy5nZXRGb2xkQXQoZSwwLC0xKTpvPXRoaXMuZ2V0Rm9sZEF0KGUsci5sZW5ndGgsMSk7aWYobyl7cz90aGlzLnJlbW92ZUZvbGQobyk6dGhpcy5leHBhbmRGb2xkKG8pO3JldHVybn12YXIgdT10aGlzLmdldEZvbGRXaWRnZXRSYW5nZShlKTtpZih1KXtpZighdS5pc011bHRpTGluZSgpKXtvPXRoaXMuZ2V0Rm9sZEF0KHUuc3RhcnQucm93LHUuc3RhcnQuY29sdW1uLDEpO2lmKG8mJnUuaXNFcXVhbChvLnJhbmdlKSl7dGhpcy5yZW1vdmVGb2xkKG8pO3JldHVybn19aXx8dGhpcy5hZGRGb2xkKCIuLi4iLHUpLHMmJnRoaXMuZm9sZEFsbCh1LnN0YXJ0LnJvdysxLHUuZW5kLnJvdyl9ZWxzZSBzJiZ0aGlzLmZvbGRBbGwoZSsxLHRoaXMuZ2V0TGVuZ3RoKCkpLHQudGFyZ2V0LmNsYXNzTmFtZSs9IiBpbnZhbGlkIn0sdGhpcy51cGRhdGVGb2xkV2lkZ2V0cz1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGEsbj10LnJhbmdlLHI9bi5zdGFydC5yb3csaT1uLmVuZC5yb3ctcjtpZihpPT09MCl0aGlzLmZvbGRXaWRnZXRzW3JdPW51bGw7ZWxzZSBpZih0LmFjdGlvbj09InJlbW92ZVRleHQifHx0LmFjdGlvbj09InJlbW92ZUxpbmVzIil0aGlzLmZvbGRXaWRnZXRzLnNwbGljZShyLGkrMSxudWxsKTtlbHNle3ZhciBzPUFycmF5KGkrMSk7cy51bnNoaWZ0KHIsMSksdGhpcy5mb2xkV2lkZ2V0cy5zcGxpY2UuYXBwbHkodGhpcy5mb2xkV2lkZ2V0cyxzKX19fXZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1lKCIuL2ZvbGRfbGluZSIpLkZvbGRMaW5lLHM9ZSgiLi9mb2xkIikuRm9sZCxvPWUoIi4uL3Rva2VuX2l0ZXJhdG9yIikuVG9rZW5JdGVyYXRvcjt0LkZvbGRpbmc9dX0pLGRlZmluZSgiYWNlL2VkaXRfc2Vzc2lvbi9mb2xkX2xpbmUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gaShlLHQpe3RoaXMuZm9sZERhdGE9ZSxBcnJheS5pc0FycmF5KHQpP3RoaXMuZm9sZHM9dDp0PXRoaXMuZm9sZHM9W3RdO3ZhciBuPXRbdC5sZW5ndGgtMV07dGhpcy5yYW5nZT1uZXcgcih0WzBdLnN0YXJ0LnJvdyx0WzBdLnN0YXJ0LmNvbHVtbixuLmVuZC5yb3csbi5lbmQuY29sdW1uKSx0aGlzLnN0YXJ0PXRoaXMucmFuZ2Uuc3RhcnQsdGhpcy5lbmQ9dGhpcy5yYW5nZS5lbmQsdGhpcy5mb2xkcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Uuc2V0Rm9sZExpbmUodGhpcyl9LHRoaXMpfXZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2U7KGZ1bmN0aW9uKCl7dGhpcy5zaGlmdFJvdz1mdW5jdGlvbihlKXt0aGlzLnN0YXJ0LnJvdys9ZSx0aGlzLmVuZC5yb3crPWUsdGhpcy5mb2xkcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Quc3RhcnQucm93Kz1lLHQuZW5kLnJvdys9ZX0pfSx0aGlzLmFkZEZvbGQ9ZnVuY3Rpb24oZSl7aWYoZS5zYW1lUm93KXtpZihlLnN0YXJ0LnJvdzx0aGlzLnN0YXJ0Um93fHxlLmVuZFJvdz50aGlzLmVuZFJvdyl0aHJvdyJDYW4ndCBhZGQgYSBmb2xkIHRvIHRoaXMgRm9sZExpbmUgYXMgaXQgaGFzIG5vIGNvbm5lY3Rpb24iO3RoaXMuZm9sZHMucHVzaChlKSx0aGlzLmZvbGRzLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4tZS5yYW5nZS5jb21wYXJlRW5kKHQuc3RhcnQucm93LHQuc3RhcnQuY29sdW1uKX0pLHRoaXMucmFuZ2UuY29tcGFyZUVuZChlLnN0YXJ0LnJvdyxlLnN0YXJ0LmNvbHVtbik+MD8odGhpcy5lbmQucm93PWUuZW5kLnJvdyx0aGlzLmVuZC5jb2x1bW49ZS5lbmQuY29sdW1uKTp0aGlzLnJhbmdlLmNvbXBhcmVTdGFydChlLmVuZC5yb3csZS5lbmQuY29sdW1uKTwwJiYodGhpcy5zdGFydC5yb3c9ZS5zdGFydC5yb3csdGhpcy5zdGFydC5jb2x1bW49ZS5zdGFydC5jb2x1bW4pfWVsc2UgaWYoZS5zdGFydC5yb3c9PXRoaXMuZW5kLnJvdyl0aGlzLmZvbGRzLnB1c2goZSksdGhpcy5lbmQucm93PWUuZW5kLnJvdyx0aGlzLmVuZC5jb2x1bW49ZS5lbmQuY29sdW1uO2Vsc2V7aWYoZS5lbmQucm93IT10aGlzLnN0YXJ0LnJvdyl0aHJvdyJUcnlpbmcgdG8gYWRkIGZvbGQgdG8gRm9sZFJvdyB0aGF0IGRvZXNuJ3QgaGF2ZSBhIG1hdGNoaW5nIHJvdyI7dGhpcy5mb2xkcy51bnNoaWZ0KGUpLHRoaXMuc3RhcnQucm93PWUuc3RhcnQucm93LHRoaXMuc3RhcnQuY29sdW1uPWUuc3RhcnQuY29sdW1ufWUuZm9sZExpbmU9dGhpc30sdGhpcy5jb250YWluc1Jvdz1mdW5jdGlvbihlKXtyZXR1cm4gZT49dGhpcy5zdGFydC5yb3cmJmU8PXRoaXMuZW5kLnJvd30sdGhpcy53YWxrPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0wLGk9dGhpcy5mb2xkcyxzLG8sdSxhPSEwO3Q9PW51bGwmJih0PXRoaXMuZW5kLnJvdyxuPXRoaXMuZW5kLmNvbHVtbik7Zm9yKHZhciBmPTA7ZjxpLmxlbmd0aDtmKyspe3M9aVtmXSxvPXMucmFuZ2UuY29tcGFyZVN0YXJ0KHQsbik7aWYobz09LTEpe2UobnVsbCx0LG4scixhKTtyZXR1cm59dT1lKG51bGwscy5zdGFydC5yb3cscy5zdGFydC5jb2x1bW4scixhKSx1PSF1JiZlKHMucGxhY2Vob2xkZXIscy5zdGFydC5yb3cscy5zdGFydC5jb2x1bW4scik7aWYodXx8bz09MClyZXR1cm47YT0hcy5zYW1lUm93LHI9cy5lbmQuY29sdW1ufWUobnVsbCx0LG4scixhKX0sdGhpcy5nZXROZXh0Rm9sZFRvPWZ1bmN0aW9uKGUsdCl7dmFyIG4scjtmb3IodmFyIGk9MDtpPHRoaXMuZm9sZHMubGVuZ3RoO2krKyl7bj10aGlzLmZvbGRzW2ldLHI9bi5yYW5nZS5jb21wYXJlRW5kKGUsdCk7aWYocj09LTEpcmV0dXJue2ZvbGQ6bixraW5kOiJhZnRlciJ9O2lmKHI9PTApcmV0dXJue2ZvbGQ6bixraW5kOiJpbnNpZGUifX1yZXR1cm4gbnVsbH0sdGhpcy5hZGRSZW1vdmVDaGFycz1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5nZXROZXh0Rm9sZFRvKGUsdCksaSxzO2lmKHIpe2k9ci5mb2xkO2lmKHIua2luZD09Imluc2lkZSImJmkuc3RhcnQuY29sdW1uIT10JiZpLnN0YXJ0LnJvdyE9ZSl3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUubG9nKGUsdCxpKTtlbHNlIGlmKGkuc3RhcnQucm93PT1lKXtzPXRoaXMuZm9sZHM7dmFyIG89cy5pbmRleE9mKGkpO289PTAmJih0aGlzLnN0YXJ0LmNvbHVtbis9bik7Zm9yKG87bzxzLmxlbmd0aDtvKyspe2k9c1tvXSxpLnN0YXJ0LmNvbHVtbis9bjtpZighaS5zYW1lUm93KXJldHVybjtpLmVuZC5jb2x1bW4rPW59dGhpcy5lbmQuY29sdW1uKz1ufX19LHRoaXMuc3BsaXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmdldE5leHRGb2xkVG8oZSx0KS5mb2xkLHI9dGhpcy5mb2xkcyxzPXRoaXMuZm9sZERhdGE7aWYoIW4pcmV0dXJuIG51bGw7dmFyIG89ci5pbmRleE9mKG4pLHU9cltvLTFdO3RoaXMuZW5kLnJvdz11LmVuZC5yb3csdGhpcy5lbmQuY29sdW1uPXUuZW5kLmNvbHVtbixyPXIuc3BsaWNlKG8sci5sZW5ndGgtbyk7dmFyIGE9bmV3IGkocyxyKTtyZXR1cm4gcy5zcGxpY2Uocy5pbmRleE9mKHRoaXMpKzEsMCxhKSxhfSx0aGlzLm1lcmdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZm9sZHM7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdGhpcy5hZGRGb2xkKHRbbl0pO3ZhciByPXRoaXMuZm9sZERhdGE7ci5zcGxpY2Uoci5pbmRleE9mKGUpLDEpfSx0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9W3RoaXMucmFuZ2UudG9TdHJpbmcoKSsiOiBbIl07cmV0dXJuIHRoaXMuZm9sZHMuZm9yRWFjaChmdW5jdGlvbih0KXtlLnB1c2goIiAgIit0LnRvU3RyaW5nKCkpfSksZS5wdXNoKCJdIiksZS5qb2luKCJcbiIpfSx0aGlzLmlkeFRvUG9zaXRpb249ZnVuY3Rpb24oZSl7dmFyIHQ9MCxuO2Zvcih2YXIgcj0wO3I8dGhpcy5mb2xkcy5sZW5ndGg7cisrKXt2YXIgbj10aGlzLmZvbGRzW3JdO2UtPW4uc3RhcnQuY29sdW1uLXQ7aWYoZTwwKXJldHVybntyb3c6bi5zdGFydC5yb3csY29sdW1uOm4uc3RhcnQuY29sdW1uK2V9O2UtPW4ucGxhY2Vob2xkZXIubGVuZ3RoO2lmKGU8MClyZXR1cm4gbi5zdGFydDt0PW4uZW5kLmNvbHVtbn1yZXR1cm57cm93OnRoaXMuZW5kLnJvdyxjb2x1bW46dGhpcy5lbmQuY29sdW1uK2V9fX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuRm9sZExpbmU9aX0pLGRlZmluZSgiYWNlL2VkaXRfc2Vzc2lvbi9mb2xkIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQuRm9sZD1mdW5jdGlvbihlLHQpe3RoaXMuZm9sZExpbmU9bnVsbCx0aGlzLnBsYWNlaG9sZGVyPXQsdGhpcy5yYW5nZT1lLHRoaXMuc3RhcnQ9ZS5zdGFydCx0aGlzLmVuZD1lLmVuZCx0aGlzLnNhbWVSb3c9ZS5zdGFydC5yb3c9PWUuZW5kLnJvdyx0aGlzLnN1YkZvbGRzPVtdfTsoZnVuY3Rpb24oKXt0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuJyInK3RoaXMucGxhY2Vob2xkZXIrJyIgJyt0aGlzLnJhbmdlLnRvU3RyaW5nKCl9LHRoaXMuc2V0Rm9sZExpbmU9ZnVuY3Rpb24oZSl7dGhpcy5mb2xkTGluZT1lLHRoaXMuc3ViRm9sZHMuZm9yRWFjaChmdW5jdGlvbih0KXt0LnNldEZvbGRMaW5lKGUpfSl9LHRoaXMuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJhbmdlLmNsb25lKCksdD1uZXcgcihlLHRoaXMucGxhY2Vob2xkZXIpO3JldHVybiB0aGlzLnN1YkZvbGRzLmZvckVhY2goZnVuY3Rpb24oZSl7dC5zdWJGb2xkcy5wdXNoKGUuY2xvbmUoKSl9KSx0fSx0aGlzLmFkZFN1YkZvbGQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5yYW5nZS5pc0VxdWFsKGUpKXJldHVybiB0aGlzO2lmKCF0aGlzLnJhbmdlLmNvbnRhaW5zUmFuZ2UoZSkpdGhyb3ciQSBmb2xkIGNhbid0IGludGVyc2VjdCBhbHJlYWR5IGV4aXN0aW5nIGZvbGQiK2UucmFuZ2UrdGhpcy5yYW5nZTt2YXIgdD1lLnJhbmdlLnN0YXJ0LnJvdyxuPWUucmFuZ2Uuc3RhcnQuY29sdW1uO2Zvcih2YXIgcj0wLGk9LTE7cjx0aGlzLnN1YkZvbGRzLmxlbmd0aDtyKyspe2k9dGhpcy5zdWJGb2xkc1tyXS5yYW5nZS5jb21wYXJlKHQsbik7aWYoaSE9MSlicmVha312YXIgcz10aGlzLnN1YkZvbGRzW3JdO2lmKGk9PTApcmV0dXJuIHMuYWRkU3ViRm9sZChlKTt2YXIgdD1lLnJhbmdlLmVuZC5yb3csbj1lLnJhbmdlLmVuZC5jb2x1bW47Zm9yKHZhciBvPXIsaT0tMTtvPHRoaXMuc3ViRm9sZHMubGVuZ3RoO28rKyl7aT10aGlzLnN1YkZvbGRzW29dLnJhbmdlLmNvbXBhcmUodCxuKTtpZihpIT0xKWJyZWFrfXZhciB1PXRoaXMuc3ViRm9sZHNbb107aWYoaT09MCl0aHJvdyJBIGZvbGQgY2FuJ3QgaW50ZXJzZWN0IGFscmVhZHkgZXhpc3RpbmcgZm9sZCIrZS5yYW5nZSt0aGlzLnJhbmdlO3ZhciBhPXRoaXMuc3ViRm9sZHMuc3BsaWNlKHIsby1yLGUpO3JldHVybiBlLnNldEZvbGRMaW5lKHRoaXMuZm9sZExpbmUpLGV9fSkuY2FsbChyLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS90b2tlbl9pdGVyYXRvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1mdW5jdGlvbihlLHQsbil7dGhpcy4kc2Vzc2lvbj1lLHRoaXMuJHJvdz10LHRoaXMuJHJvd1Rva2Vucz1lLmdldFRva2Vucyh0KTt2YXIgcj1lLmdldFRva2VuQXQodCxuKTt0aGlzLiR0b2tlbkluZGV4PXI/ci5pbmRleDotMX07KGZ1bmN0aW9uKCl7dGhpcy5zdGVwQmFja3dhcmQ9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbkluZGV4LT0xO3doaWxlKHRoaXMuJHRva2VuSW5kZXg8MCl7dGhpcy4kcm93LT0xO2lmKHRoaXMuJHJvdzwwKXJldHVybiB0aGlzLiRyb3c9MCxudWxsO3RoaXMuJHJvd1Rva2Vucz10aGlzLiRzZXNzaW9uLmdldFRva2Vucyh0aGlzLiRyb3cpLHRoaXMuJHRva2VuSW5kZXg9dGhpcy4kcm93VG9rZW5zLmxlbmd0aC0xfXJldHVybiB0aGlzLiRyb3dUb2tlbnNbdGhpcy4kdG9rZW5JbmRleF19LHRoaXMuc3RlcEZvcndhcmQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRzZXNzaW9uLmdldExlbmd0aCgpO3RoaXMuJHRva2VuSW5kZXgrPTE7d2hpbGUodGhpcy4kdG9rZW5JbmRleD49dGhpcy4kcm93VG9rZW5zLmxlbmd0aCl7dGhpcy4kcm93Kz0xO2lmKHRoaXMuJHJvdz49ZSlyZXR1cm4gdGhpcy4kcm93PWUtMSxudWxsO3RoaXMuJHJvd1Rva2Vucz10aGlzLiRzZXNzaW9uLmdldFRva2Vucyh0aGlzLiRyb3cpLHRoaXMuJHRva2VuSW5kZXg9MH1yZXR1cm4gdGhpcy4kcm93VG9rZW5zW3RoaXMuJHRva2VuSW5kZXhdfSx0aGlzLmdldEN1cnJlbnRUb2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRyb3dUb2tlbnNbdGhpcy4kdG9rZW5JbmRleF19LHRoaXMuZ2V0Q3VycmVudFRva2VuUm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHJvd30sdGhpcy5nZXRDdXJyZW50VG9rZW5Db2x1bW49ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRyb3dUb2tlbnMsdD10aGlzLiR0b2tlbkluZGV4LG49ZVt0XS5zdGFydDtpZihuIT09dW5kZWZpbmVkKXJldHVybiBuO249MDt3aGlsZSh0PjApdC09MSxuKz1lW3RdLnZhbHVlLmxlbmd0aDtyZXR1cm4gbn19KS5jYWxsKHIucHJvdG90eXBlKSx0LlRva2VuSXRlcmF0b3I9cn0pLGRlZmluZSgiYWNlL2VkaXRfc2Vzc2lvbi9icmFja2V0X21hdGNoIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3Rva2VuX2l0ZXJhdG9yIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHMoKXt0aGlzLmZpbmRNYXRjaGluZ0JyYWNrZXQ9ZnVuY3Rpb24oZSl7aWYoZS5jb2x1bW49PTApcmV0dXJuIG51bGw7dmFyIHQ9dGhpcy5nZXRMaW5lKGUucm93KS5jaGFyQXQoZS5jb2x1bW4tMSk7aWYodD09IiIpcmV0dXJuIG51bGw7dmFyIG49dC5tYXRjaCgvKFtcKFxbXHtdKXwoW1wpXF1cfV0pLyk7cmV0dXJuIG4/blsxXT90aGlzLiRmaW5kQ2xvc2luZ0JyYWNrZXQoblsxXSxlKTp0aGlzLiRmaW5kT3BlbmluZ0JyYWNrZXQoblsyXSxlKTpudWxsfSx0aGlzLmdldEJyYWNrZXRSYW5nZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldExpbmUoZS5yb3cpLG49ITAscixzPXQuY2hhckF0KGUuY29sdW1uLTEpLG89cyYmcy5tYXRjaCgvKFtcKFxbXHtdKXwoW1wpXF1cfV0pLyk7b3x8KHM9dC5jaGFyQXQoZS5jb2x1bW4pLGU9e3JvdzplLnJvdyxjb2x1bW46ZS5jb2x1bW4rMX0sbz1zJiZzLm1hdGNoKC8oW1woXFtce10pfChbXClcXVx9XSkvKSxuPSExKTtpZighbylyZXR1cm4gbnVsbDtpZihvWzFdKXt2YXIgdT10aGlzLiRmaW5kQ2xvc2luZ0JyYWNrZXQob1sxXSxlKTtpZighdSlyZXR1cm4gbnVsbDtyPWkuZnJvbVBvaW50cyhlLHUpLG58fChyLmVuZC5jb2x1bW4rKyxyLnN0YXJ0LmNvbHVtbi0tKSxyLmN1cnNvcj1yLmVuZH1lbHNle3ZhciB1PXRoaXMuJGZpbmRPcGVuaW5nQnJhY2tldChvWzJdLGUpO2lmKCF1KXJldHVybiBudWxsO3I9aS5mcm9tUG9pbnRzKHUsZSksbnx8KHIuc3RhcnQuY29sdW1uKyssci5lbmQuY29sdW1uLS0pLHIuY3Vyc29yPXIuc3RhcnR9cmV0dXJuIHJ9LHRoaXMuJGJyYWNrZXRzPXsiKSI6IigiLCIoIjoiKSIsIl0iOiJbIiwiWyI6Il0iLCJ7IjoifSIsIn0iOiJ7In0sdGhpcy4kZmluZE9wZW5pbmdCcmFja2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT10aGlzLiRicmFja2V0c1tlXSxzPTEsbz1uZXcgcih0aGlzLHQucm93LHQuY29sdW1uKSx1PW8uZ2V0Q3VycmVudFRva2VuKCk7dXx8KHU9by5zdGVwRm9yd2FyZCgpKTtpZighdSlyZXR1cm47bnx8KG49bmV3IFJlZ0V4cCgiKFxcLj8iK3UudHlwZS5yZXBsYWNlKCIuIiwiXFwuIikucmVwbGFjZSgicnBhcmVuIiwiLnBhcmVuIikrIikrIikpO3ZhciBhPXQuY29sdW1uLW8uZ2V0Q3VycmVudFRva2VuQ29sdW1uKCktMixmPXUudmFsdWU7Zm9yKDs7KXt3aGlsZShhPj0wKXt2YXIgbD1mLmNoYXJBdChhKTtpZihsPT1pKXtzLT0xO2lmKHM9PTApcmV0dXJue3JvdzpvLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjphK28uZ2V0Q3VycmVudFRva2VuQ29sdW1uKCl9fWVsc2UgbD09ZSYmKHMrPTEpO2EtPTF9ZG8gdT1vLnN0ZXBCYWNrd2FyZCgpO3doaWxlKHUmJiFuLnRlc3QodS50eXBlKSk7aWYodT09bnVsbClicmVhaztmPXUudmFsdWUsYT1mLmxlbmd0aC0xfXJldHVybiBudWxsfSx0aGlzLiRmaW5kQ2xvc2luZ0JyYWNrZXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXRoaXMuJGJyYWNrZXRzW2VdLHM9MSxvPW5ldyByKHRoaXMsdC5yb3csdC5jb2x1bW4pLHU9by5nZXRDdXJyZW50VG9rZW4oKTt1fHwodT1vLnN0ZXBGb3J3YXJkKCkpO2lmKCF1KXJldHVybjtufHwobj1uZXcgUmVnRXhwKCIoXFwuPyIrdS50eXBlLnJlcGxhY2UoIi4iLCJcXC4iKS5yZXBsYWNlKCJscGFyZW4iLCIucGFyZW4iKSsiKSsiKSk7dmFyIGE9dC5jb2x1bW4tby5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKTtmb3IoOzspe3ZhciBmPXUudmFsdWUsbD1mLmxlbmd0aDt3aGlsZShhPGwpe3ZhciBjPWYuY2hhckF0KGEpO2lmKGM9PWkpe3MtPTE7aWYocz09MClyZXR1cm57cm93Om8uZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmErby5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKX19ZWxzZSBjPT1lJiYocys9MSk7YSs9MX1kbyB1PW8uc3RlcEZvcndhcmQoKTt3aGlsZSh1JiYhbi50ZXN0KHUudHlwZSkpO2lmKHU9PW51bGwpYnJlYWs7YT0wfXJldHVybiBudWxsfX12YXIgcj1lKCIuLi90b2tlbl9pdGVyYXRvciIpLlRva2VuSXRlcmF0b3IsaT1lKCIuLi9yYW5nZSIpLlJhbmdlO3QuQnJhY2tldE1hdGNoPXN9KSxkZWZpbmUoImFjZS9zZWFyY2giLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2xhbmciLCJhY2UvbGliL29vcCIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL2xpYi9sYW5nIiksaT1lKCIuL2xpYi9vb3AiKSxzPWUoIi4vcmFuZ2UiKS5SYW5nZSxvPWZ1bmN0aW9uKCl7dGhpcy4kb3B0aW9ucz17fX07KGZ1bmN0aW9uKCl7dGhpcy5zZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGkubWl4aW4odGhpcy4kb3B0aW9ucyxlKSx0aGlzfSx0aGlzLmdldE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gci5jb3B5T2JqZWN0KHRoaXMuJG9wdGlvbnMpfSx0aGlzLnNldE9wdGlvbnM9ZnVuY3Rpb24oZSl7dGhpcy4kb3B0aW9ucz1lfSx0aGlzLmZpbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy4kbWF0Y2hJdGVyYXRvcihlLHRoaXMuJG9wdGlvbnMpO2lmKCF0KXJldHVybiExO3ZhciBuPW51bGw7cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihlLHQscil7aWYoIWUuc3RhcnQpe3ZhciBpPWUub2Zmc2V0KyhyfHwwKTtuPW5ldyBzKHQsaSx0LGkrZS5sZW5ndGgpfWVsc2Ugbj1lO3JldHVybiEwfSksbn0sdGhpcy5maW5kQWxsPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuJG9wdGlvbnM7aWYoIXQubmVlZGxlKXJldHVybltdO3RoaXMuJGFzc2VtYmxlUmVnRXhwKHQpO2lmKHQucmFuZ2UpdmFyIG49dC5yYW5nZSxpPWUuZ2V0TGluZXMobi5zdGFydC5yb3csbi5lbmQucm93KTtlbHNlIHZhciBpPWUuZG9jLmdldEFsbExpbmVzKCk7dmFyIG89W10sdT10LnJlO2lmKHQuJGlzTXVsdGlMaW5lKXt2YXIgYT11Lmxlbmd0aCxmPWkubGVuZ3RoLWE7Zm9yKHZhciBsPXUub2Zmc2V0fHwwO2w8ZjtsKyspe2Zvcih2YXIgYz0wO2M8dS5sZW5ndGg7YysrKWlmKGlbbCtjXS5zZWFyY2godVtjXSk9PS0xKWJyZWFrO3ZhciBoPWlbbCtjXS5tYXRjaCh1WzBdKVswXS5sZW5ndGgscD1saW5lLm1hdGNoKHVbYS0xXSlbMF0ubGVuZ3RoO28ucHVzaChuZXcgcyhsLHN0YXJ0TGluZS5sZW5ndGgtaCxsK2EtMSxwKSl9fWVsc2UgZm9yKHZhciBkPTA7ZDxpLmxlbmd0aDtkKyspe3ZhciB2PXIuZ2V0TWF0Y2hPZmZzZXRzKGlbZF0sdSk7Zm9yKHZhciBjPTA7Yzx2Lmxlbmd0aDtjKyspe3ZhciBtPXZbY107by5wdXNoKG5ldyBzKGQsbS5vZmZzZXQsZCxtLm9mZnNldCttLmxlbmd0aCkpfX1pZih0LnJhbmdlKXt2YXIgZz1uLnN0YXJ0LmNvbHVtbix5PW4uc3RhcnQuY29sdW1uLGQ9MCxjPW8ubGVuZ3RoLTE7d2hpbGUoZDxjJiZvW2RdLnN0YXJ0LmNvbHVtbjxnJiZvW2RdLnN0YXJ0LnJvdz09bi5zdGFydC5yb3cpZCsrO3doaWxlKGQ8YyYmb1tjXS5lbmQuY29sdW1uPnkmJm9bY10uZW5kLnJvdz09bi5lbmQucm93KWMtLTtyZXR1cm4gby5zbGljZShkLGMrMSl9cmV0dXJuIG99LHRoaXMucmVwbGFjZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuJG9wdGlvbnMscj10aGlzLiRhc3NlbWJsZVJlZ0V4cChuKTtpZihuLiRpc011bHRpTGluZSlyZXR1cm4gdDtpZighcilyZXR1cm47dmFyIGk9ci5leGVjKGUpO2lmKCFpfHxpWzBdLmxlbmd0aCE9ZS5sZW5ndGgpcmV0dXJuIG51bGw7dD1lLnJlcGxhY2Uocix0KTtpZihuLnByZXNlcnZlQ2FzZSl7dD10LnNwbGl0KCIiKTtmb3IodmFyIHM9TWF0aC5taW4oZS5sZW5ndGgsZS5sZW5ndGgpO3MtLTspe3ZhciBvPWVbc107byYmby50b0xvd2VyQ2FzZSgpIT1vP3Rbc109dFtzXS50b1VwcGVyQ2FzZSgpOnRbc109dFtzXS50b0xvd2VyQ2FzZSgpfXQ9dC5qb2luKCIiKX1yZXR1cm4gdH0sdGhpcy4kbWF0Y2hJdGVyYXRvcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuJGFzc2VtYmxlUmVnRXhwKHQpO2lmKCFuKXJldHVybiExO3ZhciBpPXRoaXMsbyx1PXQuYmFja3dhcmRzO2lmKHQuJGlzTXVsdGlMaW5lKXZhciBhPW4ubGVuZ3RoLGY9ZnVuY3Rpb24odCxyLGkpe3ZhciB1PXQuc2VhcmNoKG5bMF0pO2lmKHU9PS0xKXJldHVybjtmb3IodmFyIGY9MTtmPGE7ZisrKXt0PWUuZ2V0TGluZShyK2YpO2lmKHQuc2VhcmNoKG5bZl0pPT0tMSlyZXR1cm59dmFyIGw9dC5tYXRjaChuW2EtMV0pWzBdLmxlbmd0aCxjPW5ldyBzKHIsdSxyK2EtMSxsKTtuLm9mZnNldD09MT8oYy5zdGFydC5yb3ctLSxjLnN0YXJ0LmNvbHVtbj1OdW1iZXIuTUFYX1ZBTFVFKTppJiYoYy5zdGFydC5jb2x1bW4rPWkpO2lmKG8oYykpcmV0dXJuITB9O2Vsc2UgaWYodSl2YXIgZj1mdW5jdGlvbihlLHQsaSl7dmFyIHM9ci5nZXRNYXRjaE9mZnNldHMoZSxuKTtmb3IodmFyIHU9cy5sZW5ndGgtMTt1Pj0wO3UtLSlpZihvKHNbdV0sdCxpKSlyZXR1cm4hMH07ZWxzZSB2YXIgZj1mdW5jdGlvbihlLHQsaSl7dmFyIHM9ci5nZXRNYXRjaE9mZnNldHMoZSxuKTtmb3IodmFyIHU9MDt1PHMubGVuZ3RoO3UrKylpZihvKHNbdV0sdCxpKSlyZXR1cm4hMH07cmV0dXJue2ZvckVhY2g6ZnVuY3Rpb24obil7bz1uLGkuJGxpbmVJdGVyYXRvcihlLHQpLmZvckVhY2goZil9fX0sdGhpcy4kYXNzZW1ibGVSZWdFeHA9ZnVuY3Rpb24oZSl7aWYoZS5uZWVkbGUgaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuIGUucmU9ZS5uZWVkbGU7dmFyIHQ9ZS5uZWVkbGU7aWYoIWUubmVlZGxlKXJldHVybiBlLnJlPSExO2UucmVnRXhwfHwodD1yLmVzY2FwZVJlZ0V4cCh0KSksZS53aG9sZVdvcmQmJih0PSJcXGIiK3QrIlxcYiIpO3ZhciBuPWUuY2FzZVNlbnNpdGl2ZT8iZyI6ImdpIjtlLiRpc011bHRpTGluZT0vW1xuXHJdLy50ZXN0KHQpO2lmKGUuJGlzTXVsdGlMaW5lKXJldHVybiBlLnJlPXRoaXMuJGFzc2VtYmxlTXVsdGlsaW5lUmVnRXhwKHQsbik7dHJ5e3ZhciBpPW5ldyBSZWdFeHAodCxuKX1jYXRjaChzKXt2YXIgaT0hMX1yZXR1cm4gZS5yZT1pfSx0aGlzLiRhc3NlbWJsZU11bHRpbGluZVJlZ0V4cD1mdW5jdGlvbihlLHQpe3ZhciBuPWUucmVwbGFjZSgvXHJcbnxccnxcbi9nLCIkXG5eIikuc3BsaXQoIlxuIikscj1bXTtmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKyl0cnl7ci5wdXNoKG5ldyBSZWdFeHAobltpXSx0KSl9Y2F0Y2gocyl7cmV0dXJuITF9cmV0dXJuIG5bMF09PSIiPyhyLnNoaWZ0KCksci5vZmZzZXQ9MSk6ci5vZmZzZXQ9MCxyfSx0aGlzLiRsaW5lSXRlcmF0b3I9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnJhbmdlLHI9dC5iYWNrd2FyZHM9PTEsaT10LnNraXBDdXJyZW50IT0wLG49dC5yYW5nZSxzPXQuc3RhcnQ7c3x8KHM9bj9uW3I/ImVuZCI6InN0YXJ0Il06ZS5zZWxlY3Rpb24uZ2V0UmFuZ2UoKSkscy5zdGFydCYmKHM9c1tpIT1yPyJlbmQiOiJzdGFydCJdKTt2YXIgbz1uP24uc3RhcnQucm93OjAsdT1uP24uc3RhcnQuY29sdW1uOjAsYT1uP24uZW5kLnJvdzplLmdldExlbmd0aCgpLTE7aWYoIXIpdmFyIGY9ZnVuY3Rpb24obil7dmFyIHI9cy5yb3csaT1lLmdldExpbmUocikuc3Vic3RyKHMuY29sdW1uKTtpZihuKGkscixzLmNvbHVtbikpcmV0dXJuO2ZvcihyKz0xO3I8PWE7cisrKWlmKG4oZS5nZXRMaW5lKHIpLHIpKXJldHVybjtpZih0LndyYXA9PTApcmV0dXJuO2ZvcihyPW8sYT1zLnJvdztyPD1hO3IrKylpZihuKGUuZ2V0TGluZShyKSxyKSlyZXR1cm59O2Vsc2UgdmFyIGY9ZnVuY3Rpb24obil7dmFyIHI9cy5yb3csaT1lLmdldExpbmUocikuc3Vic3RyaW5nKDAscy5jb2x1bW4pO2lmKG4oaSxyKSlyZXR1cm47Zm9yKHItLTtyPj1vO3ItLSlpZihuKGUuZ2V0TGluZShyKSxyKSlyZXR1cm47aWYodC53cmFwPT0wKXJldHVybjtmb3Iocj1hLG89cy5yb3c7cj49bztyLS0paWYobihlLmdldExpbmUocikscikpcmV0dXJufTtyZXR1cm57Zm9yRWFjaDpmfX19KS5jYWxsKG8ucHJvdG90eXBlKSx0LlNlYXJjaD1vfSksZGVmaW5lKCJhY2UvY29tbWFuZHMvY29tbWFuZF9tYW5hZ2VyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2Uva2V5Ym9hcmQvaGFzaF9oYW5kbGVyIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2tleWJvYXJkL2hhc2hfaGFuZGxlciIpLkhhc2hIYW5kbGVyLHM9ZSgiLi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsbz1mdW5jdGlvbihlLHQpe3RoaXMucGxhdGZvcm09ZSx0aGlzLmNvbW1hbmRzPXt9LHRoaXMuY29tbW1hbmRLZXlCaW5kaW5nPXt9LHRoaXMuYWRkQ29tbWFuZHModCksdGhpcy5zZXREZWZhdWx0SGFuZGxlcigiZXhlYyIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29tbWFuZC5leGVjKGUuZWRpdG9yLGUuYXJnc3x8e30pfSl9O3IuaW5oZXJpdHMobyxpKSxmdW5jdGlvbigpe3IuaW1wbGVtZW50KHRoaXMscyksdGhpcy5leGVjPWZ1bmN0aW9uKGUsdCxuKXt0eXBlb2YgZT09InN0cmluZyImJihlPXRoaXMuY29tbWFuZHNbZV0pO2lmKCFlKXJldHVybiExO2lmKHQmJnQuJHJlYWRPbmx5JiYhZS5yZWFkT25seSlyZXR1cm4hMTt2YXIgcj10aGlzLl9lbWl0KCJleGVjIix7ZWRpdG9yOnQsY29tbWFuZDplLGFyZ3M6bn0pO3JldHVybiByPT09ITE/ITE6ITB9LHRoaXMudG9nZ2xlUmVjb3JkaW5nPWZ1bmN0aW9uKCl7aWYodGhpcy4kaW5SZXBsYXkpcmV0dXJuO3JldHVybiB0aGlzLnJlY29yZGluZz8odGhpcy5tYWNyby5wb3AoKSx0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImV4ZWMiLHRoaXMuJGFkZENvbW1hbmRUb01hY3JvKSx0aGlzLm1hY3JvLmxlbmd0aHx8KHRoaXMubWFjcm89dGhpcy5vbGRNYWNybyksdGhpcy5yZWNvcmRpbmc9ITEpOih0aGlzLiRhZGRDb21tYW5kVG9NYWNyb3x8KHRoaXMuJGFkZENvbW1hbmRUb01hY3JvPWZ1bmN0aW9uKGUpe3RoaXMubWFjcm8ucHVzaChbZS5jb21tYW5kLGUuYXJnc10pfS5iaW5kKHRoaXMpKSx0aGlzLm9sZE1hY3JvPXRoaXMubWFjcm8sdGhpcy5tYWNybz1bXSx0aGlzLm9uKCJleGVjIix0aGlzLiRhZGRDb21tYW5kVG9NYWNybyksdGhpcy5yZWNvcmRpbmc9ITApfSx0aGlzLnJlcGxheT1mdW5jdGlvbihlKXtpZih0aGlzLiRpblJlcGxheXx8IXRoaXMubWFjcm8pcmV0dXJuO2lmKHRoaXMucmVjb3JkaW5nKXJldHVybiB0aGlzLnRvZ2dsZVJlY29yZGluZygpO3RyeXt0aGlzLiRpblJlcGxheT0hMCx0aGlzLm1hY3JvLmZvckVhY2goZnVuY3Rpb24odCl7dHlwZW9mIHQ9PSJzdHJpbmciP3RoaXMuZXhlYyh0LGUpOnRoaXMuZXhlYyh0WzBdLGUsdFsxXSl9LHRoaXMpfWZpbmFsbHl7dGhpcy4kaW5SZXBsYXk9ITF9fSx0aGlzLnRyaW1NYWNybz1mdW5jdGlvbihlKXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlWzBdIT0ic3RyaW5nIiYmKGVbMF09ZVswXS5uYW1lKSxlWzFdfHwoZT1lWzBdKSxlfSl9fS5jYWxsKG8ucHJvdG90eXBlKSx0LkNvbW1hbmRNYW5hZ2VyPW99KSxkZWZpbmUoImFjZS9rZXlib2FyZC9oYXNoX2hhbmRsZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2tleXMiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gaShlLHQpe3RoaXMucGxhdGZvcm09dCx0aGlzLmNvbW1hbmRzPXt9LHRoaXMuY29tbW1hbmRLZXlCaW5kaW5nPXt9LHRoaXMuYWRkQ29tbWFuZHMoZSl9dmFyIHI9ZSgiLi4vbGliL2tleXMiKTsoZnVuY3Rpb24oKXt0aGlzLmFkZENvbW1hbmQ9ZnVuY3Rpb24oZSl7dGhpcy5jb21tYW5kc1tlLm5hbWVdJiZ0aGlzLnJlbW92ZUNvbW1hbmQoZSksdGhpcy5jb21tYW5kc1tlLm5hbWVdPWUsZS5iaW5kS2V5JiZ0aGlzLl9idWlsZEtleUhhc2goZSl9LHRoaXMucmVtb3ZlQ29tbWFuZD1mdW5jdGlvbihlKXt2YXIgdD10eXBlb2YgZT09InN0cmluZyI/ZTplLm5hbWU7ZT10aGlzLmNvbW1hbmRzW3RdLGRlbGV0ZSB0aGlzLmNvbW1hbmRzW3RdO3ZhciBuPXRoaXMuY29tbW1hbmRLZXlCaW5kaW5nO2Zvcih2YXIgciBpbiBuKWZvcih2YXIgaSBpbiBuW3JdKW5bcl1baV09PWUmJmRlbGV0ZSBuW3JdW2ldfSx0aGlzLmJpbmRLZXk9ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpe3RoaXMuYWRkQ29tbWFuZCh7ZXhlYzp0LGJpbmRLZXk6ZSxuYW1lOmV9KTtyZXR1cm59dmFyIG49dGhpcy5jb21tbWFuZEtleUJpbmRpbmc7ZS5zcGxpdCgifCIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5wYXJzZUtleXMoZSx0KSxpPXIuaGFzaElkOyhuW2ldfHwobltpXT17fSkpW3Iua2V5XT10fSx0aGlzKX0sdGhpcy5hZGRDb21tYW5kcz1mdW5jdGlvbihlKXtlJiZPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPWVbdF07aWYodHlwZW9mIG49PSJzdHJpbmciKXJldHVybiB0aGlzLmJpbmRLZXkobix0KTt0eXBlb2Ygbj09ImZ1bmN0aW9uIiYmKG49e2V4ZWM6bn0pLG4ubmFtZXx8KG4ubmFtZT10KSx0aGlzLmFkZENvbW1hbmQobil9LHRoaXMpfSx0aGlzLnJlbW92ZUNvbW1hbmRzPWZ1bmN0aW9uKGUpe09iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24odCl7dGhpcy5yZW1vdmVDb21tYW5kKGVbdF0pfSx0aGlzKX0sdGhpcy5iaW5kS2V5cz1mdW5jdGlvbihlKXtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXMuYmluZEtleSh0LGVbdF0pfSx0aGlzKX0sdGhpcy5fYnVpbGRLZXlIYXNoPWZ1bmN0aW9uKGUpe3ZhciB0PWUuYmluZEtleTtpZighdClyZXR1cm47dmFyIG49dHlwZW9mIHQ9PSJzdHJpbmciP3Q6dFt0aGlzLnBsYXRmb3JtXTt0aGlzLmJpbmRLZXkobixlKX0sdGhpcy5wYXJzZUtleXM9ZnVuY3Rpb24oZSl7dmFyIHQsbj0wLGk9ZS50b0xvd2VyQ2FzZSgpLnRyaW0oKS5zcGxpdCgvXHMqXC1ccyovKTtmb3IodmFyIHM9MCxvPWkubGVuZ3RoO3M8bztzKyspci5LRVlfTU9EU1tpW3NdXT9ufD1yLktFWV9NT0RTW2lbc11dOnQ9aVtzXXx8Ii0iO3JldHVybiBpWzBdPT0idGV4dCImJmkubGVuZ3RoPT0yJiYobj0tMSx0PWlbMV0pLHtrZXk6dCxoYXNoSWQ6bn19LHRoaXMuZmluZEtleUNvbW1hbmQ9ZnVuY3Rpb24odCxuKXt2YXIgcj10aGlzLmNvbW1tYW5kS2V5QmluZGluZztyZXR1cm4gclt0XSYmclt0XVtuLnRvTG93ZXJDYXNlKCldfSx0aGlzLmhhbmRsZUtleWJvYXJkPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybntjb21tYW5kOnRoaXMuZmluZEtleUNvbW1hbmQodCxuKX19fSkuY2FsbChpLnByb3RvdHlwZSksdC5IYXNoSGFuZGxlcj1pfSksZGVmaW5lKCJhY2UvY29tbWFuZHMvZGVmYXVsdF9jb21tYW5kcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvbGFuZyJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBpKGUsdCl7cmV0dXJue3dpbjplLG1hYzp0fX12YXIgcj1lKCIuLi9saWIvbGFuZyIpO3QuY29tbWFuZHM9W3tuYW1lOiJzZWxlY3RhbGwiLGJpbmRLZXk6aSgiQ3RybC1BIiwiQ29tbWFuZC1BIiksZXhlYzpmdW5jdGlvbihlKXtlLnNlbGVjdEFsbCgpfSxyZWFkT25seTohMH0se25hbWU6ImNlbnRlcnNlbGVjdGlvbiIsYmluZEtleTppKG51bGwsIkN0cmwtTCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5jZW50ZXJTZWxlY3Rpb24oKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJnb3RvbGluZSIsYmluZEtleTppKCJDdHJsLUwiLCJDb21tYW5kLUwiKSxleGVjOmZ1bmN0aW9uKGUpe3ZhciB0PXBhcnNlSW50KHByb21wdCgiRW50ZXIgbGluZSBudW1iZXI6IiksMTApO2lzTmFOKHQpfHxlLmdvdG9MaW5lKHQpfSxyZWFkT25seTohMH0se25hbWU6ImZvbGQiLGJpbmRLZXk6aSgiQWx0LUx8Q3RybC1GMSIsIkNvbW1hbmQtQWx0LUx8Q29tbWFuZC1GMSIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZXNzaW9uLnRvZ2dsZUZvbGQoITEpfSxyZWFkT25seTohMH0se25hbWU6InVuZm9sZCIsYmluZEtleTppKCJBbHQtU2hpZnQtTHxDdHJsLVNoaWZ0LUYxIiwiQ29tbWFuZC1BbHQtU2hpZnQtTHxDb21tYW5kLVNoaWZ0LUYxIiksZXhlYzpmdW5jdGlvbihlKXtlLnNlc3Npb24udG9nZ2xlRm9sZCghMCl9LHJlYWRPbmx5OiEwfSx7bmFtZToiZm9sZGFsbCIsYmluZEtleTppKCJBbHQtMCIsIkNvbW1hbmQtT3B0aW9uLTAiKSxleGVjOmZ1bmN0aW9uKGUpe2Uuc2Vzc2lvbi5mb2xkQWxsKCl9LHJlYWRPbmx5OiEwfSx7bmFtZToidW5mb2xkYWxsIixiaW5kS2V5OmkoIkFsdC1TaGlmdC0wIiwiQ29tbWFuZC1PcHRpb24tU2hpZnQtMCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZXNzaW9uLnVuZm9sZCgpfSxyZWFkT25seTohMH0se25hbWU6ImZpbmRuZXh0IixiaW5kS2V5OmkoIkN0cmwtSyIsIkNvbW1hbmQtRyIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5maW5kTmV4dCgpfSxyZWFkT25seTohMH0se25hbWU6ImZpbmRwcmV2aW91cyIsYmluZEtleTppKCJDdHJsLVNoaWZ0LUsiLCJDb21tYW5kLVNoaWZ0LUciKSxleGVjOmZ1bmN0aW9uKGUpe2UuZmluZFByZXZpb3VzKCl9LHJlYWRPbmx5OiEwfSx7bmFtZToiZmluZCIsYmluZEtleTppKCJDdHJsLUYiLCJDb21tYW5kLUYiKSxleGVjOmZ1bmN0aW9uKGUpe3ZhciB0PXByb21wdCgiRmluZDoiLGUuZ2V0Q29weVRleHQoKSk7ZS5maW5kKHQpfSxyZWFkT25seTohMH0se25hbWU6Im92ZXJ3cml0ZSIsYmluZEtleToiSW5zZXJ0IixleGVjOmZ1bmN0aW9uKGUpe2UudG9nZ2xlT3ZlcndyaXRlKCl9LHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0dG9zdGFydCIsYmluZEtleTppKCJDdHJsLVNoaWZ0LUhvbWUiLCJDb21tYW5kLVNoaWZ0LVVwIiksZXhlYzpmdW5jdGlvbihlKXtlLmdldFNlbGVjdGlvbigpLnNlbGVjdEZpbGVTdGFydCgpfSxyZWFkT25seTohMH0se25hbWU6ImdvdG9zdGFydCIsYmluZEtleTppKCJDdHJsLUhvbWUiLCJDb21tYW5kLUhvbWV8Q29tbWFuZC1VcCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5uYXZpZ2F0ZUZpbGVTdGFydCgpfSxyZWFkT25seTohMH0se25hbWU6InNlbGVjdHVwIixiaW5kS2V5OmkoIlNoaWZ0LVVwIiwiU2hpZnQtVXAiKSxleGVjOmZ1bmN0aW9uKGUpe2UuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0VXAoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToiZ29saW5ldXAiLGJpbmRLZXk6aSgiVXAiLCJVcHxDdHJsLVAiKSxleGVjOmZ1bmN0aW9uKGUsdCl7ZS5uYXZpZ2F0ZVVwKHQudGltZXMpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJzZWxlY3R0b2VuZCIsYmluZEtleTppKCJDdHJsLVNoaWZ0LUVuZCIsIkNvbW1hbmQtU2hpZnQtRG93biIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5nZXRTZWxlY3Rpb24oKS5zZWxlY3RGaWxlRW5kKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixyZWFkT25seTohMH0se25hbWU6ImdvdG9lbmQiLGJpbmRLZXk6aSgiQ3RybC1FbmQiLCJDb21tYW5kLUVuZHxDb21tYW5kLURvd24iKSxleGVjOmZ1bmN0aW9uKGUpe2UubmF2aWdhdGVGaWxlRW5kKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixyZWFkT25seTohMH0se25hbWU6InNlbGVjdGRvd24iLGJpbmRLZXk6aSgiU2hpZnQtRG93biIsIlNoaWZ0LURvd24iKSxleGVjOmZ1bmN0aW9uKGUpe2UuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0RG93bigpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJnb2xpbmVkb3duIixiaW5kS2V5OmkoIkRvd24iLCJEb3dufEN0cmwtTiIpLGV4ZWM6ZnVuY3Rpb24oZSx0KXtlLm5hdmlnYXRlRG93bih0LnRpbWVzKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0d29yZGxlZnQiLGJpbmRLZXk6aSgiQ3RybC1TaGlmdC1MZWZ0IiwiT3B0aW9uLVNoaWZ0LUxlZnQiKSxleGVjOmZ1bmN0aW9uKGUpe2UuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0V29yZExlZnQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToiZ290b3dvcmRsZWZ0IixiaW5kS2V5OmkoIkN0cmwtTGVmdCIsIk9wdGlvbi1MZWZ0IiksZXhlYzpmdW5jdGlvbihlKXtlLm5hdmlnYXRlV29yZExlZnQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0dG9saW5lc3RhcnQiLGJpbmRLZXk6aSgiQWx0LVNoaWZ0LUxlZnQiLCJDb21tYW5kLVNoaWZ0LUxlZnQiKSxleGVjOmZ1bmN0aW9uKGUpe2UuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0TGluZVN0YXJ0KCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixyZWFkT25seTohMH0se25hbWU6ImdvdG9saW5lc3RhcnQiLGJpbmRLZXk6aSgiQWx0LUxlZnR8SG9tZSIsIkNvbW1hbmQtTGVmdHxIb21lfEN0cmwtQSIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5uYXZpZ2F0ZUxpbmVTdGFydCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJzZWxlY3RsZWZ0IixiaW5kS2V5OmkoIlNoaWZ0LUxlZnQiLCJTaGlmdC1MZWZ0IiksZXhlYzpmdW5jdGlvbihlKXtlLmdldFNlbGVjdGlvbigpLnNlbGVjdExlZnQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToiZ290b2xlZnQiLGJpbmRLZXk6aSgiTGVmdCIsIkxlZnR8Q3RybC1CIiksZXhlYzpmdW5jdGlvbihlLHQpe2UubmF2aWdhdGVMZWZ0KHQudGltZXMpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJzZWxlY3R3b3JkcmlnaHQiLGJpbmRLZXk6aSgiQ3RybC1TaGlmdC1SaWdodCIsIk9wdGlvbi1TaGlmdC1SaWdodCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5nZXRTZWxlY3Rpb24oKS5zZWxlY3RXb3JkUmlnaHQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToiZ290b3dvcmRyaWdodCIsYmluZEtleTppKCJDdHJsLVJpZ2h0IiwiT3B0aW9uLVJpZ2h0IiksZXhlYzpmdW5jdGlvbihlKXtlLm5hdmlnYXRlV29yZFJpZ2h0KCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixyZWFkT25seTohMH0se25hbWU6InNlbGVjdHRvbGluZWVuZCIsYmluZEtleTppKCJBbHQtU2hpZnQtUmlnaHQiLCJDb21tYW5kLVNoaWZ0LVJpZ2h0IiksZXhlYzpmdW5jdGlvbihlKXtlLmdldFNlbGVjdGlvbigpLnNlbGVjdExpbmVFbmQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToiZ290b2xpbmVlbmQiLGJpbmRLZXk6aSgiQWx0LVJpZ2h0fEVuZCIsIkNvbW1hbmQtUmlnaHR8RW5kfEN0cmwtRSIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5uYXZpZ2F0ZUxpbmVFbmQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2giLHJlYWRPbmx5OiEwfSx7bmFtZToic2VsZWN0cmlnaHQiLGJpbmRLZXk6aSgiU2hpZnQtUmlnaHQiLCJTaGlmdC1SaWdodCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5nZXRTZWxlY3Rpb24oKS5zZWxlY3RSaWdodCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJnb3RvcmlnaHQiLGJpbmRLZXk6aSgiUmlnaHQiLCJSaWdodHxDdHJsLUYiKSxleGVjOmZ1bmN0aW9uKGUsdCl7ZS5uYXZpZ2F0ZVJpZ2h0KHQudGltZXMpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJzZWxlY3RwYWdlZG93biIsYmluZEtleToiU2hpZnQtUGFnZURvd24iLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZWxlY3RQYWdlRG93bigpfSxyZWFkT25seTohMH0se25hbWU6InBhZ2Vkb3duIixiaW5kS2V5OmkobnVsbCwiT3B0aW9uLVBhZ2VEb3duIiksZXhlYzpmdW5jdGlvbihlKXtlLnNjcm9sbFBhZ2VEb3duKCl9LHJlYWRPbmx5OiEwfSx7bmFtZToiZ290b3BhZ2Vkb3duIixiaW5kS2V5OmkoIlBhZ2VEb3duIiwiUGFnZURvd258Q3RybC1WIiksZXhlYzpmdW5jdGlvbihlKXtlLmdvdG9QYWdlRG93bigpfSxyZWFkT25seTohMH0se25hbWU6InNlbGVjdHBhZ2V1cCIsYmluZEtleToiU2hpZnQtUGFnZVVwIixleGVjOmZ1bmN0aW9uKGUpe2Uuc2VsZWN0UGFnZVVwKCl9LHJlYWRPbmx5OiEwfSx7bmFtZToicGFnZXVwIixiaW5kS2V5OmkobnVsbCwiT3B0aW9uLVBhZ2VVcCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zY3JvbGxQYWdlVXAoKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJnb3RvcGFnZXVwIixiaW5kS2V5OiJQYWdlVXAiLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5nb3RvUGFnZVVwKCl9LHJlYWRPbmx5OiEwfSx7bmFtZToic2Nyb2xsdXAiLGJpbmRLZXk6aSgiQ3RybC1VcCIsbnVsbCksZXhlYzpmdW5jdGlvbihlKXtlLnJlbmRlcmVyLnNjcm9sbEJ5KDAsLTIqZS5yZW5kZXJlci5sYXllckNvbmZpZy5saW5lSGVpZ2h0KX0scmVhZE9ubHk6ITB9LHtuYW1lOiJzY3JvbGxkb3duIixiaW5kS2V5OmkoIkN0cmwtRG93biIsbnVsbCksZXhlYzpmdW5jdGlvbihlKXtlLnJlbmRlcmVyLnNjcm9sbEJ5KDAsMiplLnJlbmRlcmVyLmxheWVyQ29uZmlnLmxpbmVIZWlnaHQpfSxyZWFkT25seTohMH0se25hbWU6InNlbGVjdGxpbmVzdGFydCIsYmluZEtleToiU2hpZnQtSG9tZSIsZXhlYzpmdW5jdGlvbihlKXtlLmdldFNlbGVjdGlvbigpLnNlbGVjdExpbmVTdGFydCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJzZWxlY3RsaW5lZW5kIixiaW5kS2V5OiJTaGlmdC1FbmQiLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5nZXRTZWxlY3Rpb24oKS5zZWxlY3RMaW5lRW5kKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIixyZWFkT25seTohMH0se25hbWU6InRvZ2dsZXJlY29yZGluZyIsYmluZEtleTppKCJDdHJsLUFsdC1FIiwiQ29tbWFuZC1PcHRpb24tRSIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5jb21tYW5kcy50b2dnbGVSZWNvcmRpbmcoKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJyZXBsYXltYWNybyIsYmluZEtleTppKCJDdHJsLVNoaWZ0LUUiLCJDb21tYW5kLVNoaWZ0LUUiKSxleGVjOmZ1bmN0aW9uKGUpe2UuY29tbWFuZHMucmVwbGF5KGUpfSxyZWFkT25seTohMH0se25hbWU6Imp1bXB0b21hdGNoaW5nIixiaW5kS2V5OmkoIkN0cmwtUCIsIkN0cmwtU2hpZnQtUCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5qdW1wVG9NYXRjaGluZygpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCIscmVhZE9ubHk6ITB9LHtuYW1lOiJzZWxlY3R0b21hdGNoaW5nIixiaW5kS2V5OmkoIkN0cmwtU2hpZnQtUCIsbnVsbCksZXhlYzpmdW5jdGlvbihlKXtlLmp1bXBUb01hdGNoaW5nKCEwKX0scmVhZE9ubHk6ITB9LHtuYW1lOiJjdXQiLGV4ZWM6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRTZWxlY3Rpb25SYW5nZSgpO2UuX2VtaXQoImN1dCIsdCksZS5zZWxlY3Rpb24uaXNFbXB0eSgpfHwoZS5zZXNzaW9uLnJlbW92ZSh0KSxlLmNsZWFyU2VsZWN0aW9uKCkpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LHtuYW1lOiJyZW1vdmVsaW5lIixiaW5kS2V5OmkoIkN0cmwtRCIsIkNvbW1hbmQtRCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5yZW1vdmVMaW5lcygpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LHtuYW1lOiJkdXBsaWNhdGVTZWxlY3Rpb24iLGJpbmRLZXk6aSgiQ3RybC1TaGlmdC1EIiwiQ29tbWFuZC1TaGlmdC1EIiksZXhlYzpmdW5jdGlvbihlKXtlLmR1cGxpY2F0ZVNlbGVjdGlvbigpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LHtuYW1lOiJ0b2dnbGVjb21tZW50IixiaW5kS2V5OmkoIkN0cmwtLyIsIkNvbW1hbmQtLyIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS50b2dnbGVDb21tZW50TGluZXMoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2gifSx7bmFtZToicmVwbGFjZSIsYmluZEtleTppKCJDdHJsLVIiLCJDb21tYW5kLU9wdGlvbi1GIiksZXhlYzpmdW5jdGlvbihlKXt2YXIgdD1wcm9tcHQoIkZpbmQ6IixlLmdldENvcHlUZXh0KCkpO2lmKCF0KXJldHVybjt2YXIgbj1wcm9tcHQoIlJlcGxhY2VtZW50OiIpO2lmKCFuKXJldHVybjtlLnJlcGxhY2Uobix7bmVlZGxlOnR9KX19LHtuYW1lOiJyZXBsYWNlYWxsIixiaW5kS2V5OmkoIkN0cmwtU2hpZnQtUiIsIkNvbW1hbmQtU2hpZnQtT3B0aW9uLUYiKSxleGVjOmZ1bmN0aW9uKGUpe3ZhciB0PXByb21wdCgiRmluZDoiKTtpZighdClyZXR1cm47dmFyIG49cHJvbXB0KCJSZXBsYWNlbWVudDoiKTtpZighbilyZXR1cm47ZS5yZXBsYWNlQWxsKG4se25lZWRsZTp0fSl9fSx7bmFtZToidW5kbyIsYmluZEtleTppKCJDdHJsLVoiLCJDb21tYW5kLVoiKSxleGVjOmZ1bmN0aW9uKGUpe2UudW5kbygpfX0se25hbWU6InJlZG8iLGJpbmRLZXk6aSgiQ3RybC1TaGlmdC1afEN0cmwtWSIsIkNvbW1hbmQtU2hpZnQtWnxDb21tYW5kLVkiKSxleGVjOmZ1bmN0aW9uKGUpe2UucmVkbygpfX0se25hbWU6ImNvcHlsaW5lc3VwIixiaW5kS2V5OmkoIkFsdC1TaGlmdC1VcCIsIkNvbW1hbmQtT3B0aW9uLVVwIiksZXhlYzpmdW5jdGlvbihlKXtlLmNvcHlMaW5lc1VwKCl9fSx7bmFtZToibW92ZWxpbmVzdXAiLGJpbmRLZXk6aSgiQWx0LVVwIiwiT3B0aW9uLVVwIiksZXhlYzpmdW5jdGlvbihlKXtlLm1vdmVMaW5lc1VwKCl9fSx7bmFtZToiY29weWxpbmVzZG93biIsYmluZEtleTppKCJBbHQtU2hpZnQtRG93biIsIkNvbW1hbmQtT3B0aW9uLURvd24iKSxleGVjOmZ1bmN0aW9uKGUpe2UuY29weUxpbmVzRG93bigpfX0se25hbWU6Im1vdmVsaW5lc2Rvd24iLGJpbmRLZXk6aSgiQWx0LURvd24iLCJPcHRpb24tRG93biIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5tb3ZlTGluZXNEb3duKCl9fSx7bmFtZToiZGVsIixiaW5kS2V5OmkoIkRlbGV0ZSIsIkRlbGV0ZXxDdHJsLUQiKSxleGVjOmZ1bmN0aW9uKGUpe2UucmVtb3ZlKCJyaWdodCIpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LHtuYW1lOiJiYWNrc3BhY2UiLGJpbmRLZXk6aSgiQ29tbWFuZC1CYWNrc3BhY2V8T3B0aW9uLUJhY2tzcGFjZXxTaGlmdC1CYWNrc3BhY2V8QmFja3NwYWNlIiwiQ3RybC1CYWNrc3BhY2V8Q29tbWFuZC1CYWNrc3BhY2V8U2hpZnQtQmFja3NwYWNlfEJhY2tzcGFjZXxDdHJsLUgiKSxleGVjOmZ1bmN0aW9uKGUpe2UucmVtb3ZlKCJsZWZ0Iil9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIn0se25hbWU6InJlbW92ZXRvbGluZXN0YXJ0IixiaW5kS2V5OmkoIkFsdC1CYWNrc3BhY2UiLCJDb21tYW5kLUJhY2tzcGFjZSIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5yZW1vdmVUb0xpbmVTdGFydCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LHtuYW1lOiJyZW1vdmV0b2xpbmVlbmQiLGJpbmRLZXk6aSgiQWx0LURlbGV0ZSIsIkN0cmwtSyIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5yZW1vdmVUb0xpbmVFbmQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2gifSx7bmFtZToicmVtb3Zld29yZGxlZnQiLGJpbmRLZXk6aSgiQ3RybC1CYWNrc3BhY2UiLCJBbHQtQmFja3NwYWNlfEN0cmwtQWx0LUJhY2tzcGFjZSIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5yZW1vdmVXb3JkTGVmdCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LHtuYW1lOiJyZW1vdmV3b3JkcmlnaHQiLGJpbmRLZXk6aSgiQ3RybC1EZWxldGUiLCJBbHQtRGVsZXRlIiksZXhlYzpmdW5jdGlvbihlKXtlLnJlbW92ZVdvcmRSaWdodCgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LHtuYW1lOiJvdXRkZW50IixiaW5kS2V5OmkoIlNoaWZ0LVRhYiIsIlNoaWZ0LVRhYiIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5ibG9ja091dGRlbnQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2gifSx7bmFtZToiaW5kZW50IixiaW5kS2V5OmkoIlRhYiIsIlRhYiIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5pbmRlbnQoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2gifSx7bmFtZToiaW5zZXJ0c3RyaW5nIixleGVjOmZ1bmN0aW9uKGUsdCl7ZS5pbnNlcnQodCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIn0se25hbWU6Imluc2VydHRleHQiLGV4ZWM6ZnVuY3Rpb24oZSx0KXtlLmluc2VydChyLnN0cmluZ1JlcGVhdCh0LnRleHR8fCIiLHQudGltZXN8fDEpKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2gifSx7bmFtZToic3BsaXRsaW5lIixiaW5kS2V5OmkobnVsbCwiQ3RybC1PIiksZXhlYzpmdW5jdGlvbihlKXtlLnNwbGl0TGluZSgpfSxtdWx0aVNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LHtuYW1lOiJ0cmFuc3Bvc2VsZXR0ZXJzIixiaW5kS2V5OmkoIkN0cmwtVCIsIkN0cmwtVCIpLGV4ZWM6ZnVuY3Rpb24oZSl7ZS50cmFuc3Bvc2VMZXR0ZXJzKCl9LG11bHRpU2VsZWN0QWN0aW9uOmZ1bmN0aW9uKGUpe2UudHJhbnNwb3NlU2VsZWN0aW9ucygxKX19LHtuYW1lOiJ0b3VwcGVyY2FzZSIsYmluZEtleTppKCJDdHJsLVUiLCJDdHJsLVUiKSxleGVjOmZ1bmN0aW9uKGUpe2UudG9VcHBlckNhc2UoKX0sbXVsdGlTZWxlY3RBY3Rpb246ImZvckVhY2gifSx7bmFtZToidG9sb3dlcmNhc2UiLGJpbmRLZXk6aSgiQ3RybC1TaGlmdC1VIiwiQ3RybC1TaGlmdC1VIiksZXhlYzpmdW5jdGlvbihlKXtlLnRvTG93ZXJDYXNlKCl9LG11bHRpU2VsZWN0QWN0aW9uOiJmb3JFYWNoIn1dfSksZGVmaW5lKCJhY2UvdW5kb21hbmFnZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KCl9OyhmdW5jdGlvbigpe3RoaXMuZXhlY3V0ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmFyZ3NbMF07dGhpcy4kZG9jPWUuYXJnc1sxXSx0aGlzLiR1bmRvU3RhY2sucHVzaCh0KSx0aGlzLiRyZWRvU3RhY2s9W119LHRoaXMudW5kbz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLiR1bmRvU3RhY2sucG9wKCksbj1udWxsO3JldHVybiB0JiYobj10aGlzLiRkb2MudW5kb0NoYW5nZXModCxlKSx0aGlzLiRyZWRvU3RhY2sucHVzaCh0KSksbn0sdGhpcy5yZWRvPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuJHJlZG9TdGFjay5wb3AoKSxuPW51bGw7cmV0dXJuIHQmJihuPXRoaXMuJGRvYy5yZWRvQ2hhbmdlcyh0LGUpLHRoaXMuJHVuZG9TdGFjay5wdXNoKHQpKSxufSx0aGlzLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy4kdW5kb1N0YWNrPVtdLHRoaXMuJHJlZG9TdGFjaz1bXX0sdGhpcy5oYXNVbmRvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHVuZG9TdGFjay5sZW5ndGg+MH0sdGhpcy5oYXNSZWRvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHJlZG9TdGFjay5sZW5ndGg+MH19KS5jYWxsKHIucHJvdG90eXBlKSx0LlVuZG9NYW5hZ2VyPXJ9KSxkZWZpbmUoImFjZS92aXJ0dWFsX3JlbmRlcmVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2RvbSIsImFjZS9saWIvZXZlbnQiLCJhY2UvbGliL3VzZXJhZ2VudCIsImFjZS9jb25maWciLCJhY2UvbGliL25ldCIsImFjZS9sYXllci9ndXR0ZXIiLCJhY2UvbGF5ZXIvbWFya2VyIiwiYWNlL2xheWVyL3RleHQiLCJhY2UvbGF5ZXIvY3Vyc29yIiwiYWNlL3Njcm9sbGJhciIsImFjZS9yZW5kZXJsb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIiwidGV4dCFhY2UvY3NzL2VkaXRvci5jc3MiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9saWIvb29wIiksaT1lKCIuL2xpYi9kb20iKSxzPWUoIi4vbGliL2V2ZW50Iiksbz1lKCIuL2xpYi91c2VyYWdlbnQiKSx1PWUoIi4vY29uZmlnIiksYT1lKCIuL2xpYi9uZXQiKSxmPWUoIi4vbGF5ZXIvZ3V0dGVyIikuR3V0dGVyLGw9ZSgiLi9sYXllci9tYXJrZXIiKS5NYXJrZXIsYz1lKCIuL2xheWVyL3RleHQiKS5UZXh0LGg9ZSgiLi9sYXllci9jdXJzb3IiKS5DdXJzb3IscD1lKCIuL3Njcm9sbGJhciIpLlNjcm9sbEJhcixkPWUoIi4vcmVuZGVybG9vcCIpLlJlbmRlckxvb3Asdj1lKCIuL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLG09ZSgidGV4dCEuL2Nzcy9lZGl0b3IuY3NzIik7aS5pbXBvcnRDc3NTdHJpbmcobSwiYWNlX2VkaXRvciIpO3ZhciBnPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpczt0aGlzLmNvbnRhaW5lcj1lLHRoaXMuJGtlZXBUZXh0QXJlYUF0Q3Vyc29yPSFvLmlzSUUsaS5hZGRDc3NDbGFzcyhlLCJhY2VfZWRpdG9yIiksdGhpcy5zZXRUaGVtZSh0KSx0aGlzLiRndXR0ZXI9aS5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLiRndXR0ZXIuY2xhc3NOYW1lPSJhY2VfZ3V0dGVyIix0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLiRndXR0ZXIpLHRoaXMuc2Nyb2xsZXI9aS5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnNjcm9sbGVyLmNsYXNzTmFtZT0iYWNlX3Njcm9sbGVyIix0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnNjcm9sbGVyKSx0aGlzLmNvbnRlbnQ9aS5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmNvbnRlbnQuY2xhc3NOYW1lPSJhY2VfY29udGVudCIsdGhpcy5zY3JvbGxlci5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnQpLHRoaXMuJGd1dHRlckxheWVyPW5ldyBmKHRoaXMuJGd1dHRlciksdGhpcy4kZ3V0dGVyTGF5ZXIub24oImNoYW5nZUd1dHRlcldpZHRoIix0aGlzLm9uUmVzaXplLmJpbmQodGhpcywhMCkpLHRoaXMuc2V0RmFkZUZvbGRXaWRnZXRzKCEwKSx0aGlzLiRtYXJrZXJCYWNrPW5ldyBsKHRoaXMuY29udGVudCk7dmFyIHI9dGhpcy4kdGV4dExheWVyPW5ldyBjKHRoaXMuY29udGVudCk7dGhpcy5jYW52YXM9ci5lbGVtZW50LHRoaXMuJG1hcmtlckZyb250PW5ldyBsKHRoaXMuY29udGVudCksdGhpcy5jaGFyYWN0ZXJXaWR0aD1yLmdldENoYXJhY3RlcldpZHRoKCksdGhpcy5saW5lSGVpZ2h0PXIuZ2V0TGluZUhlaWdodCgpLHRoaXMuJGN1cnNvckxheWVyPW5ldyBoKHRoaXMuY29udGVudCksdGhpcy4kY3Vyc29yUGFkZGluZz04LHRoaXMuJGhvcml6U2Nyb2xsPSExLHRoaXMuJGhvcml6U2Nyb2xsQWx3YXlzVmlzaWJsZT0hMSx0aGlzLiRhbmltYXRlZFNjcm9sbD0hMSx0aGlzLnNjcm9sbEJhcj1uZXcgcChlKSx0aGlzLnNjcm9sbEJhci5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLGZ1bmN0aW9uKGUpe24uJGluU2Nyb2xsQW5pbWF0aW9ufHxuLnNlc3Npb24uc2V0U2Nyb2xsVG9wKGUuZGF0YSl9KSx0aGlzLnNjcm9sbFRvcD0wLHRoaXMuc2Nyb2xsTGVmdD0wLHMuYWRkTGlzdGVuZXIodGhpcy5zY3JvbGxlciwic2Nyb2xsIixmdW5jdGlvbigpe3ZhciBlPW4uc2Nyb2xsZXIuc2Nyb2xsTGVmdDtuLnNjcm9sbExlZnQ9ZSxuLnNlc3Npb24uc2V0U2Nyb2xsTGVmdChlKX0pLHRoaXMuY3Vyc29yUG9zPXtyb3c6MCxjb2x1bW46MH0sdGhpcy4kdGV4dExheWVyLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZUNoYXJhY3RlclNpemUiLGZ1bmN0aW9uKCl7bi5jaGFyYWN0ZXJXaWR0aD1yLmdldENoYXJhY3RlcldpZHRoKCksbi5saW5lSGVpZ2h0PXIuZ2V0TGluZUhlaWdodCgpLG4uJHVwZGF0ZVByaW50TWFyZ2luKCksbi5vblJlc2l6ZSghMCksbi4kbG9vcC5zY2hlZHVsZShuLkNIQU5HRV9GVUxMKX0pLHRoaXMuJHNpemU9e3dpZHRoOjAsaGVpZ2h0OjAsc2Nyb2xsZXJIZWlnaHQ6MCxzY3JvbGxlcldpZHRoOjB9LHRoaXMubGF5ZXJDb25maWc9e3dpZHRoOjEscGFkZGluZzowLGZpcnN0Um93OjAsZmlyc3RSb3dTY3JlZW46MCxsYXN0Um93OjAsbGluZUhlaWdodDoxLGNoYXJhY3RlcldpZHRoOjEsbWluSGVpZ2h0OjEsbWF4SGVpZ2h0OjEsb2Zmc2V0OjAsaGVpZ2h0OjF9LHRoaXMuJGxvb3A9bmV3IGQodGhpcy4kcmVuZGVyQ2hhbmdlcy5iaW5kKHRoaXMpLHRoaXMuY29udGFpbmVyLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpLHRoaXMuJGxvb3Auc2NoZWR1bGUodGhpcy5DSEFOR0VfRlVMTCksdGhpcy5zZXRQYWRkaW5nKDQpLHRoaXMuJHVwZGF0ZVByaW50TWFyZ2luKCl9OyhmdW5jdGlvbigpe3RoaXMuc2hvd0d1dHRlcj0hMCx0aGlzLkNIQU5HRV9DVVJTT1I9MSx0aGlzLkNIQU5HRV9NQVJLRVI9Mix0aGlzLkNIQU5HRV9HVVRURVI9NCx0aGlzLkNIQU5HRV9TQ1JPTEw9OCx0aGlzLkNIQU5HRV9MSU5FUz0xNix0aGlzLkNIQU5HRV9URVhUPTMyLHRoaXMuQ0hBTkdFX1NJWkU9NjQsdGhpcy5DSEFOR0VfTUFSS0VSX0JBQ0s9MTI4LHRoaXMuQ0hBTkdFX01BUktFUl9GUk9OVD0yNTYsdGhpcy5DSEFOR0VfRlVMTD01MTIsdGhpcy5DSEFOR0VfSF9TQ1JPTEw9MTAyNCxyLmltcGxlbWVudCh0aGlzLHYpLHRoaXMuc2V0U2Vzc2lvbj1mdW5jdGlvbihlKXt0aGlzLnNlc3Npb249ZSx0aGlzLnNjcm9sbGVyLmNsYXNzTmFtZT0iYWNlX3Njcm9sbGVyIix0aGlzLiRjdXJzb3JMYXllci5zZXRTZXNzaW9uKGUpLHRoaXMuJG1hcmtlckJhY2suc2V0U2Vzc2lvbihlKSx0aGlzLiRtYXJrZXJGcm9udC5zZXRTZXNzaW9uKGUpLHRoaXMuJGd1dHRlckxheWVyLnNldFNlc3Npb24oZSksdGhpcy4kdGV4dExheWVyLnNldFNlc3Npb24oZSksdGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9GVUxMKX0sdGhpcy51cGRhdGVMaW5lcz1mdW5jdGlvbihlLHQpe3Q9PT11bmRlZmluZWQmJih0PUluZmluaXR5KSx0aGlzLiRjaGFuZ2VkTGluZXM/KHRoaXMuJGNoYW5nZWRMaW5lcy5maXJzdFJvdz5lJiYodGhpcy4kY2hhbmdlZExpbmVzLmZpcnN0Um93PWUpLHRoaXMuJGNoYW5nZWRMaW5lcy5sYXN0Um93PHQmJih0aGlzLiRjaGFuZ2VkTGluZXMubGFzdFJvdz10KSk6dGhpcy4kY2hhbmdlZExpbmVzPXtmaXJzdFJvdzplLGxhc3RSb3c6dH0sdGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9MSU5FUyl9LHRoaXMudXBkYXRlVGV4dD1mdW5jdGlvbigpe3RoaXMuJGxvb3Auc2NoZWR1bGUodGhpcy5DSEFOR0VfVEVYVCl9LHRoaXMudXBkYXRlRnVsbD1mdW5jdGlvbihlKXtlP3RoaXMuJHJlbmRlckNoYW5nZXModGhpcy5DSEFOR0VfRlVMTCwhMCk6dGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9GVUxMKX0sdGhpcy51cGRhdGVGb250U2l6ZT1mdW5jdGlvbigpe3RoaXMuJHRleHRMYXllci5jaGVja0ZvclNpemVDaGFuZ2VzKCl9LHRoaXMub25SZXNpemU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIHM9dGhpcy5DSEFOR0VfU0laRSxvPXRoaXMuJHNpemU7aWYodGhpcy5yZXNpemluZz4yKXJldHVybjt0aGlzLnJlc2l6aW5nPjE/dGhpcy5yZXNpemluZysrOnRoaXMucmVzaXppbmc9ZT8xOjAscnx8KHI9aS5nZXRJbm5lckhlaWdodCh0aGlzLmNvbnRhaW5lcikpO2lmKGV8fG8uaGVpZ2h0IT1yKW8uaGVpZ2h0PXIsdGhpcy5zY3JvbGxlci5zdHlsZS5oZWlnaHQ9cisicHgiLG8uc2Nyb2xsZXJIZWlnaHQ9dGhpcy5zY3JvbGxlci5jbGllbnRIZWlnaHQsdGhpcy5zY3JvbGxCYXIuc2V0SGVpZ2h0KG8uc2Nyb2xsZXJIZWlnaHQpLHRoaXMuc2Vzc2lvbiYmKHRoaXMuc2Vzc2lvbi5zZXRTY3JvbGxUb3AodGhpcy5nZXRTY3JvbGxUb3AoKSksc3w9dGhpcy5DSEFOR0VfRlVMTCk7bnx8KG49aS5nZXRJbm5lcldpZHRoKHRoaXMuY29udGFpbmVyKSk7aWYoZXx8dGhpcy5yZXNpemluZz4xfHxvLndpZHRoIT1uKXtvLndpZHRoPW47dmFyIHQ9dGhpcy5zaG93R3V0dGVyP3RoaXMuJGd1dHRlci5vZmZzZXRXaWR0aDowO3RoaXMuc2Nyb2xsZXIuc3R5bGUubGVmdD10KyJweCIsby5zY3JvbGxlcldpZHRoPU1hdGgubWF4KDAsbi10LXRoaXMuc2Nyb2xsQmFyLmdldFdpZHRoKCkpLHRoaXMuc2Nyb2xsZXIuc3R5bGUucmlnaHQ9dGhpcy5zY3JvbGxCYXIuZ2V0V2lkdGgoKSsicHgiO2lmKHRoaXMuc2Vzc2lvbi5nZXRVc2VXcmFwTW9kZSgpJiZ0aGlzLmFkanVzdFdyYXBMaW1pdCgpfHxlKXN8PXRoaXMuQ0hBTkdFX0ZVTEx9ZT90aGlzLiRyZW5kZXJDaGFuZ2VzKHMsITApOnRoaXMuJGxvb3Auc2NoZWR1bGUocyksZSYmZGVsZXRlIHRoaXMucmVzaXppbmd9LHRoaXMuYWRqdXN0V3JhcExpbWl0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy4kc2l6ZS5zY3JvbGxlcldpZHRoLXRoaXMuJHBhZGRpbmcqMix0PU1hdGguZmxvb3IoZS90aGlzLmNoYXJhY3RlcldpZHRoKTtyZXR1cm4gdGhpcy5zZXNzaW9uLmFkanVzdFdyYXBMaW1pdCh0KX0sdGhpcy5zZXRBbmltYXRlZFNjcm9sbD1mdW5jdGlvbihlKXt0aGlzLiRhbmltYXRlZFNjcm9sbD1lfSx0aGlzLmdldEFuaW1hdGVkU2Nyb2xsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGFuaW1hdGVkU2Nyb2xsfSx0aGlzLnNldFNob3dJbnZpc2libGVzPWZ1bmN0aW9uKGUpe3RoaXMuJHRleHRMYXllci5zZXRTaG93SW52aXNpYmxlcyhlKSYmdGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9URVhUKX0sdGhpcy5nZXRTaG93SW52aXNpYmxlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiR0ZXh0TGF5ZXIuc2hvd0ludmlzaWJsZXN9LHRoaXMuJHNob3dQcmludE1hcmdpbj0hMCx0aGlzLnNldFNob3dQcmludE1hcmdpbj1mdW5jdGlvbihlKXt0aGlzLiRzaG93UHJpbnRNYXJnaW49ZSx0aGlzLiR1cGRhdGVQcmludE1hcmdpbigpfSx0aGlzLmdldFNob3dQcmludE1hcmdpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRzaG93UHJpbnRNYXJnaW59LHRoaXMuJHByaW50TWFyZ2luQ29sdW1uPTgwLHRoaXMuc2V0UHJpbnRNYXJnaW5Db2x1bW49ZnVuY3Rpb24oZSl7dGhpcy4kcHJpbnRNYXJnaW5Db2x1bW49ZSx0aGlzLiR1cGRhdGVQcmludE1hcmdpbigpfSx0aGlzLmdldFByaW50TWFyZ2luQ29sdW1uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHByaW50TWFyZ2luQ29sdW1ufSx0aGlzLmdldFNob3dHdXR0ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaG93R3V0dGVyfSx0aGlzLnNldFNob3dHdXR0ZXI9ZnVuY3Rpb24oZSl7aWYodGhpcy5zaG93R3V0dGVyPT09ZSlyZXR1cm47dGhpcy4kZ3V0dGVyLnN0eWxlLmRpc3BsYXk9ZT8iYmxvY2siOiJub25lIix0aGlzLnNob3dHdXR0ZXI9ZSx0aGlzLm9uUmVzaXplKCEwKX0sdGhpcy5nZXRGYWRlRm9sZFdpZGdldHM9ZnVuY3Rpb24oKXtyZXR1cm4gaS5oYXNDc3NDbGFzcyh0aGlzLiRndXR0ZXIsImFjZV9mYWRlLWZvbGQtd2lkZ2V0cyIpfSx0aGlzLnNldEZhZGVGb2xkV2lkZ2V0cz1mdW5jdGlvbihlKXtlP2kuYWRkQ3NzQ2xhc3ModGhpcy4kZ3V0dGVyLCJhY2VfZmFkZS1mb2xkLXdpZGdldHMiKTppLnJlbW92ZUNzc0NsYXNzKHRoaXMuJGd1dHRlciwiYWNlX2ZhZGUtZm9sZC13aWRnZXRzIil9LHRoaXMuJGhpZ2hsaWdodEd1dHRlckxpbmU9ITAsdGhpcy5zZXRIaWdobGlnaHRHdXR0ZXJMaW5lPWZ1bmN0aW9uKGUpe2lmKHRoaXMuJGhpZ2hsaWdodEd1dHRlckxpbmU9PWUpcmV0dXJuO3RoaXMuJGhpZ2hsaWdodEd1dHRlckxpbmU9ZSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0dVVFRFUil9LHRoaXMuZ2V0SGlnaGxpZ2h0R3V0dGVyTGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRoaWdobGlnaHRHdXR0ZXJMaW5lfSx0aGlzLiR1cGRhdGVHdXR0ZXJMaW5lSGlnaGxpZ2h0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc2Vzc2lvbi5zZWxlY3Rpb24ubGVhZC5yb3c7aWYodD09dGhpcy4kZ3V0dGVyTGluZUhpZ2hsaWdodClyZXR1cm47aWYoIWUpe3ZhciBuLHI9dGhpcy4kZ3V0dGVyTGF5ZXIuZWxlbWVudC5jaGlsZHJlbixzPXRoaXMuJGd1dHRlckxpbmVIaWdobGlnaHQtdGhpcy5sYXllckNvbmZpZy5maXJzdFJvdztzPj0wJiYobj1yW3NdKSYmaS5yZW1vdmVDc3NDbGFzcyhuLCJhY2VfZ3V0dGVyX2FjdGl2ZV9saW5lIikscz10LXRoaXMubGF5ZXJDb25maWcuZmlyc3RSb3cscz49MCYmKG49cltzXSkmJmkuYWRkQ3NzQ2xhc3MobiwiYWNlX2d1dHRlcl9hY3RpdmVfbGluZSIpfXRoaXMuJGd1dHRlckxheWVyLnJlbW92ZUd1dHRlckRlY29yYXRpb24odGhpcy4kZ3V0dGVyTGluZUhpZ2hsaWdodCwiYWNlX2d1dHRlcl9hY3RpdmVfbGluZSIpLHRoaXMuJGd1dHRlckxheWVyLmFkZEd1dHRlckRlY29yYXRpb24odCwiYWNlX2d1dHRlcl9hY3RpdmVfbGluZSIpLHRoaXMuJGd1dHRlckxpbmVIaWdobGlnaHQ9dH0sdGhpcy4kdXBkYXRlUHJpbnRNYXJnaW49ZnVuY3Rpb24oKXt2YXIgZTtpZighdGhpcy4kc2hvd1ByaW50TWFyZ2luJiYhdGhpcy4kcHJpbnRNYXJnaW5FbClyZXR1cm47dGhpcy4kcHJpbnRNYXJnaW5FbHx8KGU9aS5jcmVhdGVFbGVtZW50KCJkaXYiKSxlLmNsYXNzTmFtZT0iYWNlX3ByaW50X21hcmdpbl9sYXllciIsdGhpcy4kcHJpbnRNYXJnaW5FbD1pLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuJHByaW50TWFyZ2luRWwuY2xhc3NOYW1lPSJhY2VfcHJpbnRfbWFyZ2luIixlLmFwcGVuZENoaWxkKHRoaXMuJHByaW50TWFyZ2luRWwpLHRoaXMuY29udGVudC5pbnNlcnRCZWZvcmUoZSx0aGlzLiR0ZXh0TGF5ZXIuZWxlbWVudCkpO3ZhciB0PXRoaXMuJHByaW50TWFyZ2luRWwuc3R5bGU7dC5sZWZ0PXRoaXMuY2hhcmFjdGVyV2lkdGgqdGhpcy4kcHJpbnRNYXJnaW5Db2x1bW4rdGhpcy4kcGFkZGluZysicHgiLHQudmlzaWJpbGl0eT10aGlzLiRzaG93UHJpbnRNYXJnaW4/InZpc2libGUiOiJoaWRkZW4ifSx0aGlzLmdldENvbnRhaW5lckVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250YWluZXJ9LHRoaXMuZ2V0TW91c2VFdmVudFRhcmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRlbnR9LHRoaXMuZ2V0VGV4dEFyZWFDb250YWluZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250YWluZXJ9LHRoaXMuJG1vdmVUZXh0QXJlYVRvQ3Vyc29yPWZ1bmN0aW9uKCl7aWYoIXRoaXMuJGtlZXBUZXh0QXJlYUF0Q3Vyc29yKXJldHVybjt2YXIgZT10aGlzLiRjdXJzb3JMYXllci4kcGl4ZWxQb3MudG9wLHQ9dGhpcy4kY3Vyc29yTGF5ZXIuJHBpeGVsUG9zLmxlZnQ7ZS09dGhpcy5sYXllckNvbmZpZy5vZmZzZXQ7aWYoZTwwfHxlPnRoaXMubGF5ZXJDb25maWcuaGVpZ2h0LXRoaXMubGluZUhlaWdodClyZXR1cm47dmFyIG49dGhpcy5jaGFyYWN0ZXJXaWR0aDt0aGlzLiRjb21wb3NpdGlvbiYmKG4rPXRoaXMudGV4dGFyZWEuc2Nyb2xsV2lkdGgpLHQtPXRoaXMuc2Nyb2xsTGVmdCx0PnRoaXMuJHNpemUuc2Nyb2xsZXJXaWR0aC1uJiYodD10aGlzLiRzaXplLnNjcm9sbGVyV2lkdGgtbiksdGhpcy5zaG93R3V0dGVyJiYodCs9dGhpcy4kZ3V0dGVyTGF5ZXIuZ3V0dGVyV2lkdGgpLHRoaXMudGV4dGFyZWEuc3R5bGUuaGVpZ2h0PXRoaXMubGluZUhlaWdodCsicHgiLHRoaXMudGV4dGFyZWEuc3R5bGUud2lkdGg9bisicHgiLHRoaXMudGV4dGFyZWEuc3R5bGUubGVmdD10KyJweCIsdGhpcy50ZXh0YXJlYS5zdHlsZS50b3A9ZS0xKyJweCJ9LHRoaXMuZ2V0Rmlyc3RWaXNpYmxlUm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGF5ZXJDb25maWcuZmlyc3RSb3d9LHRoaXMuZ2V0Rmlyc3RGdWxseVZpc2libGVSb3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYXllckNvbmZpZy5maXJzdFJvdysodGhpcy5sYXllckNvbmZpZy5vZmZzZXQ9PT0wPzA6MSl9LHRoaXMuZ2V0TGFzdEZ1bGx5VmlzaWJsZVJvdz1mdW5jdGlvbigpe3ZhciBlPU1hdGguZmxvb3IoKHRoaXMubGF5ZXJDb25maWcuaGVpZ2h0K3RoaXMubGF5ZXJDb25maWcub2Zmc2V0KS90aGlzLmxheWVyQ29uZmlnLmxpbmVIZWlnaHQpO3JldHVybiB0aGlzLmxheWVyQ29uZmlnLmZpcnN0Um93LTErZX0sdGhpcy5nZXRMYXN0VmlzaWJsZVJvdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxheWVyQ29uZmlnLmxhc3RSb3d9LHRoaXMuJHBhZGRpbmc9bnVsbCx0aGlzLnNldFBhZGRpbmc9ZnVuY3Rpb24oZSl7dGhpcy4kcGFkZGluZz1lLHRoaXMuJHRleHRMYXllci5zZXRQYWRkaW5nKGUpLHRoaXMuJGN1cnNvckxheWVyLnNldFBhZGRpbmcoZSksdGhpcy4kbWFya2VyRnJvbnQuc2V0UGFkZGluZyhlKSx0aGlzLiRtYXJrZXJCYWNrLnNldFBhZGRpbmcoZSksdGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9GVUxMKSx0aGlzLiR1cGRhdGVQcmludE1hcmdpbigpfSx0aGlzLmdldEhTY3JvbGxCYXJBbHdheXNWaXNpYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGhvcml6U2Nyb2xsQWx3YXlzVmlzaWJsZX0sdGhpcy5zZXRIU2Nyb2xsQmFyQWx3YXlzVmlzaWJsZT1mdW5jdGlvbihlKXt0aGlzLiRob3JpelNjcm9sbEFsd2F5c1Zpc2libGUhPWUmJih0aGlzLiRob3JpelNjcm9sbEFsd2F5c1Zpc2libGU9ZSwoIXRoaXMuJGhvcml6U2Nyb2xsQWx3YXlzVmlzaWJsZXx8IXRoaXMuJGhvcml6U2Nyb2xsKSYmdGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9TQ1JPTEwpKX0sdGhpcy4kdXBkYXRlU2Nyb2xsQmFyPWZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxCYXIuc2V0SW5uZXJIZWlnaHQodGhpcy5sYXllckNvbmZpZy5tYXhIZWlnaHQpLHRoaXMuc2Nyb2xsQmFyLnNldFNjcm9sbFRvcCh0aGlzLnNjcm9sbFRvcCl9LHRoaXMuJHJlbmRlckNoYW5nZXM9ZnVuY3Rpb24oZSx0KXtpZighdCYmKCFlfHwhdGhpcy5zZXNzaW9ufHwhdGhpcy5jb250YWluZXIub2Zmc2V0V2lkdGgpKXJldHVybjsoZSZ0aGlzLkNIQU5HRV9GVUxMfHxlJnRoaXMuQ0hBTkdFX1NJWkV8fGUmdGhpcy5DSEFOR0VfVEVYVHx8ZSZ0aGlzLkNIQU5HRV9MSU5FU3x8ZSZ0aGlzLkNIQU5HRV9TQ1JPTEwpJiZ0aGlzLiRjb21wdXRlTGF5ZXJDb25maWcoKTtpZihlJnRoaXMuQ0hBTkdFX0hfU0NST0xMKXt0aGlzLnNjcm9sbGVyLnNjcm9sbExlZnQ9dGhpcy5zY3JvbGxMZWZ0O3ZhciBuPXRoaXMuc2Nyb2xsZXIuc2Nyb2xsTGVmdDt0aGlzLnNjcm9sbExlZnQ9bix0aGlzLnNlc3Npb24uc2V0U2Nyb2xsTGVmdChuKSx0aGlzLnNjcm9sbGVyLmNsYXNzTmFtZT10aGlzLnNjcm9sbExlZnQ9PTA/ImFjZV9zY3JvbGxlciI6ImFjZV9zY3JvbGxlciBob3JzY3JvbGwifWlmKGUmdGhpcy5DSEFOR0VfRlVMTCl7dGhpcy4kdGV4dExheWVyLmNoZWNrRm9yU2l6ZUNoYW5nZXMoKSx0aGlzLiR1cGRhdGVTY3JvbGxCYXIoKSx0aGlzLiR0ZXh0TGF5ZXIudXBkYXRlKHRoaXMubGF5ZXJDb25maWcpLHRoaXMuc2hvd0d1dHRlciYmKHRoaXMuJGhpZ2hsaWdodEd1dHRlckxpbmUmJnRoaXMuJHVwZGF0ZUd1dHRlckxpbmVIaWdobGlnaHQoITApLHRoaXMuJGd1dHRlckxheWVyLnVwZGF0ZSh0aGlzLmxheWVyQ29uZmlnKSksdGhpcy4kbWFya2VyQmFjay51cGRhdGUodGhpcy5sYXllckNvbmZpZyksdGhpcy4kbWFya2VyRnJvbnQudXBkYXRlKHRoaXMubGF5ZXJDb25maWcpLHRoaXMuJGN1cnNvckxheWVyLnVwZGF0ZSh0aGlzLmxheWVyQ29uZmlnKSx0aGlzLiRtb3ZlVGV4dEFyZWFUb0N1cnNvcigpO3JldHVybn1pZihlJnRoaXMuQ0hBTkdFX1NDUk9MTCl7dGhpcy4kdXBkYXRlU2Nyb2xsQmFyKCksZSZ0aGlzLkNIQU5HRV9URVhUfHxlJnRoaXMuQ0hBTkdFX0xJTkVTP3RoaXMuJHRleHRMYXllci51cGRhdGUodGhpcy5sYXllckNvbmZpZyk6dGhpcy4kdGV4dExheWVyLnNjcm9sbExpbmVzKHRoaXMubGF5ZXJDb25maWcpLHRoaXMuc2hvd0d1dHRlciYmKHRoaXMuJGhpZ2hsaWdodEd1dHRlckxpbmUmJnRoaXMuJHVwZGF0ZUd1dHRlckxpbmVIaWdobGlnaHQoITApLHRoaXMuJGd1dHRlckxheWVyLnVwZGF0ZSh0aGlzLmxheWVyQ29uZmlnKSksdGhpcy4kbWFya2VyQmFjay51cGRhdGUodGhpcy5sYXllckNvbmZpZyksdGhpcy4kbWFya2VyRnJvbnQudXBkYXRlKHRoaXMubGF5ZXJDb25maWcpLHRoaXMuJGN1cnNvckxheWVyLnVwZGF0ZSh0aGlzLmxheWVyQ29uZmlnKSx0aGlzLiRtb3ZlVGV4dEFyZWFUb0N1cnNvcigpO3JldHVybn1lJnRoaXMuQ0hBTkdFX1RFWFQ/KHRoaXMuJHRleHRMYXllci51cGRhdGUodGhpcy5sYXllckNvbmZpZyksdGhpcy5zaG93R3V0dGVyJiZ0aGlzLiRndXR0ZXJMYXllci51cGRhdGUodGhpcy5sYXllckNvbmZpZykpOmUmdGhpcy5DSEFOR0VfTElORVM/dGhpcy4kdXBkYXRlTGluZXMoKSYmKHRoaXMuJHVwZGF0ZVNjcm9sbEJhcigpLHRoaXMuc2hvd0d1dHRlciYmdGhpcy4kZ3V0dGVyTGF5ZXIudXBkYXRlKHRoaXMubGF5ZXJDb25maWcpKTplJnRoaXMuQ0hBTkdFX0dVVFRFUiYmdGhpcy5zaG93R3V0dGVyJiZ0aGlzLiRndXR0ZXJMYXllci51cGRhdGUodGhpcy5sYXllckNvbmZpZyksZSZ0aGlzLkNIQU5HRV9DVVJTT1ImJih0aGlzLiRjdXJzb3JMYXllci51cGRhdGUodGhpcy5sYXllckNvbmZpZyksdGhpcy4kbW92ZVRleHRBcmVhVG9DdXJzb3IoKSx0aGlzLiRoaWdobGlnaHRHdXR0ZXJMaW5lJiZ0aGlzLiR1cGRhdGVHdXR0ZXJMaW5lSGlnaGxpZ2h0KCExKSksZSYodGhpcy5DSEFOR0VfTUFSS0VSfHRoaXMuQ0hBTkdFX01BUktFUl9GUk9OVCkmJnRoaXMuJG1hcmtlckZyb250LnVwZGF0ZSh0aGlzLmxheWVyQ29uZmlnKSxlJih0aGlzLkNIQU5HRV9NQVJLRVJ8dGhpcy5DSEFOR0VfTUFSS0VSX0JBQ0spJiZ0aGlzLiRtYXJrZXJCYWNrLnVwZGF0ZSh0aGlzLmxheWVyQ29uZmlnKSxlJnRoaXMuQ0hBTkdFX1NJWkUmJnRoaXMuJHVwZGF0ZVNjcm9sbEJhcigpfSx0aGlzLiRjb21wdXRlTGF5ZXJDb25maWc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnNlc3Npb24sdD10aGlzLnNjcm9sbFRvcCV0aGlzLmxpbmVIZWlnaHQsbj10aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0K3RoaXMubGluZUhlaWdodCxyPXRoaXMuJGdldExvbmdlc3RMaW5lKCksaT10aGlzLiRob3JpelNjcm9sbEFsd2F5c1Zpc2libGV8fHRoaXMuJHNpemUuc2Nyb2xsZXJXaWR0aC1yPDAscz10aGlzLiRob3JpelNjcm9sbCE9PWk7dGhpcy4kaG9yaXpTY3JvbGw9aSxzJiYodGhpcy5zY3JvbGxlci5zdHlsZS5vdmVyZmxvd1g9aT8ic2Nyb2xsIjoiaGlkZGVuIixpfHx0aGlzLnNlc3Npb24uc2V0U2Nyb2xsTGVmdCgwKSk7dmFyIG89dGhpcy5zZXNzaW9uLmdldFNjcmVlbkxlbmd0aCgpKnRoaXMubGluZUhlaWdodDt0aGlzLnNlc3Npb24uc2V0U2Nyb2xsVG9wKE1hdGgubWF4KDAsTWF0aC5taW4odGhpcy5zY3JvbGxUb3Asby10aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0KSkpO3ZhciB1PU1hdGguY2VpbChuL3RoaXMubGluZUhlaWdodCktMSxhPU1hdGgubWF4KDAsTWF0aC5yb3VuZCgodGhpcy5zY3JvbGxUb3AtdCkvdGhpcy5saW5lSGVpZ2h0KSksZj1hK3UsbCxjLGg9e2xpbmVIZWlnaHQ6dGhpcy5saW5lSGVpZ2h0fTthPWUuc2NyZWVuVG9Eb2N1bWVudFJvdyhhLDApO3ZhciBwPWUuZ2V0Rm9sZExpbmUoYSk7cCYmKGE9cC5zdGFydC5yb3cpLGw9ZS5kb2N1bWVudFRvU2NyZWVuUm93KGEsMCksYz1lLmdldFJvd0hlaWdodChoLGEpLGY9TWF0aC5taW4oZS5zY3JlZW5Ub0RvY3VtZW50Um93KGYsMCksZS5nZXRMZW5ndGgoKS0xKSxuPXRoaXMuJHNpemUuc2Nyb2xsZXJIZWlnaHQrZS5nZXRSb3dIZWlnaHQoaCxmKStjLHQ9dGhpcy5zY3JvbGxUb3AtbCp0aGlzLmxpbmVIZWlnaHQsdGhpcy5sYXllckNvbmZpZz17d2lkdGg6cixwYWRkaW5nOnRoaXMuJHBhZGRpbmcsZmlyc3RSb3c6YSxmaXJzdFJvd1NjcmVlbjpsLGxhc3RSb3c6ZixsaW5lSGVpZ2h0OnRoaXMubGluZUhlaWdodCxjaGFyYWN0ZXJXaWR0aDp0aGlzLmNoYXJhY3RlcldpZHRoLG1pbkhlaWdodDpuLG1heEhlaWdodDpvLG9mZnNldDp0LGhlaWdodDp0aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0fSx0aGlzLiRndXR0ZXJMYXllci5lbGVtZW50LnN0eWxlLm1hcmdpblRvcD0tdCsicHgiLHRoaXMuY29udGVudC5zdHlsZS5tYXJnaW5Ub3A9LXQrInB4Iix0aGlzLmNvbnRlbnQuc3R5bGUud2lkdGg9cisyKnRoaXMuJHBhZGRpbmcrInB4Iix0aGlzLmNvbnRlbnQuc3R5bGUuaGVpZ2h0PW4rInB4IixzJiZ0aGlzLm9uUmVzaXplKCEwKX0sdGhpcy4kdXBkYXRlTGluZXM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRjaGFuZ2VkTGluZXMuZmlyc3RSb3csdD10aGlzLiRjaGFuZ2VkTGluZXMubGFzdFJvdzt0aGlzLiRjaGFuZ2VkTGluZXM9bnVsbDt2YXIgbj10aGlzLmxheWVyQ29uZmlnO2lmKGU+bi5sYXN0Um93KzEpcmV0dXJuO2lmKHQ8bi5maXJzdFJvdylyZXR1cm47aWYodD09PUluZmluaXR5KXt0aGlzLnNob3dHdXR0ZXImJnRoaXMuJGd1dHRlckxheWVyLnVwZGF0ZShuKSx0aGlzLiR0ZXh0TGF5ZXIudXBkYXRlKG4pO3JldHVybn1yZXR1cm4gdGhpcy4kdGV4dExheWVyLnVwZGF0ZUxpbmVzKG4sZSx0KSwhMH0sdGhpcy4kZ2V0TG9uZ2VzdExpbmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnNlc3Npb24uZ2V0U2NyZWVuV2lkdGgoKTtyZXR1cm4gdGhpcy4kdGV4dExheWVyLnNob3dJbnZpc2libGVzJiYoZSs9MSksTWF0aC5tYXgodGhpcy4kc2l6ZS5zY3JvbGxlcldpZHRoLTIqdGhpcy4kcGFkZGluZyxNYXRoLnJvdW5kKGUqdGhpcy5jaGFyYWN0ZXJXaWR0aCkpfSx0aGlzLnVwZGF0ZUZyb250TWFya2Vycz1mdW5jdGlvbigpe3RoaXMuJG1hcmtlckZyb250LnNldE1hcmtlcnModGhpcy5zZXNzaW9uLmdldE1hcmtlcnMoITApKSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX01BUktFUl9GUk9OVCl9LHRoaXMudXBkYXRlQmFja01hcmtlcnM9ZnVuY3Rpb24oKXt0aGlzLiRtYXJrZXJCYWNrLnNldE1hcmtlcnModGhpcy5zZXNzaW9uLmdldE1hcmtlcnMoKSksdGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9NQVJLRVJfQkFDSyl9LHRoaXMuYWRkR3V0dGVyRGVjb3JhdGlvbj1mdW5jdGlvbihlLHQpe3RoaXMuJGd1dHRlckxheWVyLmFkZEd1dHRlckRlY29yYXRpb24oZSx0KSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0dVVFRFUil9LHRoaXMucmVtb3ZlR3V0dGVyRGVjb3JhdGlvbj1mdW5jdGlvbihlLHQpe3RoaXMuJGd1dHRlckxheWVyLnJlbW92ZUd1dHRlckRlY29yYXRpb24oZSx0KSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0dVVFRFUil9LHRoaXMudXBkYXRlQnJlYWtwb2ludHM9ZnVuY3Rpb24oZSl7dGhpcy4kbG9vcC5zY2hlZHVsZSh0aGlzLkNIQU5HRV9HVVRURVIpfSx0aGlzLnNldEFubm90YXRpb25zPWZ1bmN0aW9uKGUpe3RoaXMuJGd1dHRlckxheWVyLnNldEFubm90YXRpb25zKGUpLHRoaXMuJGxvb3Auc2NoZWR1bGUodGhpcy5DSEFOR0VfR1VUVEVSKX0sdGhpcy51cGRhdGVDdXJzb3I9ZnVuY3Rpb24oKXt0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0NVUlNPUil9LHRoaXMuaGlkZUN1cnNvcj1mdW5jdGlvbigpe3RoaXMuJGN1cnNvckxheWVyLmhpZGVDdXJzb3IoKX0sdGhpcy5zaG93Q3Vyc29yPWZ1bmN0aW9uKCl7dGhpcy4kY3Vyc29yTGF5ZXIuc2hvd0N1cnNvcigpfSx0aGlzLnNjcm9sbFNlbGVjdGlvbkludG9WaWV3PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnNjcm9sbEN1cnNvckludG9WaWV3KGUsbiksdGhpcy5zY3JvbGxDdXJzb3JJbnRvVmlldyh0LG4pfSx0aGlzLnNjcm9sbEN1cnNvckludG9WaWV3PWZ1bmN0aW9uKGUsdCl7aWYodGhpcy4kc2l6ZS5zY3JvbGxlckhlaWdodD09PTApcmV0dXJuO3ZhciBuPXRoaXMuJGN1cnNvckxheWVyLmdldFBpeGVsUG9zaXRpb24oZSkscj1uLmxlZnQsaT1uLnRvcDt0aGlzLnNjcm9sbFRvcD5pPyh0JiYoaS09dCp0aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0KSx0aGlzLnNlc3Npb24uc2V0U2Nyb2xsVG9wKGkpKTp0aGlzLnNjcm9sbFRvcCt0aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0PGkrdGhpcy5saW5lSGVpZ2h0JiYodCYmKGkrPXQqdGhpcy4kc2l6ZS5zY3JvbGxlckhlaWdodCksdGhpcy5zZXNzaW9uLnNldFNjcm9sbFRvcChpK3RoaXMubGluZUhlaWdodC10aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0KSk7dmFyIHM9dGhpcy5zY3JvbGxMZWZ0O3M+cj8ocjx0aGlzLiRwYWRkaW5nKzIqdGhpcy5sYXllckNvbmZpZy5jaGFyYWN0ZXJXaWR0aCYmKHI9MCksdGhpcy5zZXNzaW9uLnNldFNjcm9sbExlZnQocikpOnMrdGhpcy4kc2l6ZS5zY3JvbGxlcldpZHRoPHIrdGhpcy5jaGFyYWN0ZXJXaWR0aCYmdGhpcy5zZXNzaW9uLnNldFNjcm9sbExlZnQoTWF0aC5yb3VuZChyK3RoaXMuY2hhcmFjdGVyV2lkdGgtdGhpcy4kc2l6ZS5zY3JvbGxlcldpZHRoKSl9LHRoaXMuZ2V0U2Nyb2xsVG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRTY3JvbGxUb3AoKX0sdGhpcy5nZXRTY3JvbGxMZWZ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRTY3JvbGxMZWZ0KCl9LHRoaXMuZ2V0U2Nyb2xsVG9wUm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Nyb2xsVG9wL3RoaXMubGluZUhlaWdodH0sdGhpcy5nZXRTY3JvbGxCb3R0b21Sb3c9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLmZsb29yKCh0aGlzLnNjcm9sbFRvcCt0aGlzLiRzaXplLnNjcm9sbGVySGVpZ2h0KS90aGlzLmxpbmVIZWlnaHQpLTEpfSx0aGlzLnNjcm9sbFRvUm93PWZ1bmN0aW9uKGUpe3RoaXMuc2Vzc2lvbi5zZXRTY3JvbGxUb3AoZSp0aGlzLmxpbmVIZWlnaHQpfSx0aGlzLmFsaWduQ3Vyc29yPWZ1bmN0aW9uKGUsdCl7dHlwZW9mIGU9PSJudW1iZXIiJiYoZT17cm93OmUsY29sdW1uOjB9KTt2YXIgbj10aGlzLiRjdXJzb3JMYXllci5nZXRQaXhlbFBvc2l0aW9uKGUpLHI9bi50b3AtdGhpcy4kc2l6ZS5zY3JvbGxlckhlaWdodCoodHx8MCk7dGhpcy5zZXNzaW9uLnNldFNjcm9sbFRvcChyKX0sdGhpcy5TVEVQUz04LHRoaXMuJGNhbGNTdGVwcz1mdW5jdGlvbihlLHQpe3ZhciBuPTAscj10aGlzLlNURVBTLGk9W10scz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4qKE1hdGgucG93KGUtMSwzKSsxKSt0fTtmb3Iobj0wO248cjsrK24paS5wdXNoKHMobi90aGlzLlNURVBTLGUsdC1lKSk7cmV0dXJuIGl9LHRoaXMuc2Nyb2xsVG9MaW5lPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRoaXMuJGN1cnNvckxheWVyLmdldFBpeGVsUG9zaXRpb24oe3JvdzplLGNvbHVtbjowfSkscz1pLnRvcDt0JiYocy09dGhpcy4kc2l6ZS5zY3JvbGxlckhlaWdodC8yKTt2YXIgbz10aGlzLnNjcm9sbFRvcDt0aGlzLnNlc3Npb24uc2V0U2Nyb2xsVG9wKHMpLG4hPT0hMSYmdGhpcy5hbmltYXRlU2Nyb2xsaW5nKG8scil9LHRoaXMuYW5pbWF0ZVNjcm9sbGluZz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuc2Nyb2xsVG9wO2lmKHRoaXMuJGFuaW1hdGVkU2Nyb2xsJiZNYXRoLmFicyhlLW4pPDFlNSl7dmFyIHI9dGhpcyxpPXIuJGNhbGNTdGVwcyhlLG4pO3RoaXMuJGluU2Nyb2xsQW5pbWF0aW9uPSEwLGNsZWFySW50ZXJ2YWwodGhpcy4kdGltZXIpLHIuc2Vzc2lvbi5zZXRTY3JvbGxUb3AoaS5zaGlmdCgpKSx0aGlzLiR0aW1lcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2kubGVuZ3RoPyhyLnNlc3Npb24uc2V0U2Nyb2xsVG9wKGkuc2hpZnQoKSksci5zZXNzaW9uLiRzY3JvbGxUb3A9bik6biE9bnVsbD8oci5zZXNzaW9uLiRzY3JvbGxUb3A9LTEsci5zZXNzaW9uLnNldFNjcm9sbFRvcChuKSxuPW51bGwpOihyLiR0aW1lcj1jbGVhckludGVydmFsKHIuJHRpbWVyKSxyLiRpblNjcm9sbEFuaW1hdGlvbj0hMSx0JiZ0KCkpfSwxMCl9fSx0aGlzLnNjcm9sbFRvWT1mdW5jdGlvbihlKXt0aGlzLnNjcm9sbFRvcCE9PWUmJih0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX1NDUk9MTCksdGhpcy5zY3JvbGxUb3A9ZSl9LHRoaXMuc2Nyb2xsVG9YPWZ1bmN0aW9uKGUpe2U8MCYmKGU9MCksdGhpcy5zY3JvbGxMZWZ0IT09ZSYmKHRoaXMuc2Nyb2xsTGVmdD1lKSx0aGlzLiRsb29wLnNjaGVkdWxlKHRoaXMuQ0hBTkdFX0hfU0NST0xMKX0sdGhpcy5zY3JvbGxCeT1mdW5jdGlvbihlLHQpe3QmJnRoaXMuc2Vzc2lvbi5zZXRTY3JvbGxUb3AodGhpcy5zZXNzaW9uLmdldFNjcm9sbFRvcCgpK3QpLGUmJnRoaXMuc2Vzc2lvbi5zZXRTY3JvbGxMZWZ0KHRoaXMuc2Vzc2lvbi5nZXRTY3JvbGxMZWZ0KCkrZSl9LHRoaXMuaXNTY3JvbGxhYmxlQnk9ZnVuY3Rpb24oZSx0KXtpZih0PDAmJnRoaXMuc2Vzc2lvbi5nZXRTY3JvbGxUb3AoKT4wKXJldHVybiEwO2lmKHQ+MCYmdGhpcy5zZXNzaW9uLmdldFNjcm9sbFRvcCgpK3RoaXMuJHNpemUuc2Nyb2xsZXJIZWlnaHQ8dGhpcy5sYXllckNvbmZpZy5tYXhIZWlnaHQpcmV0dXJuITB9LHRoaXMucGl4ZWxUb1NjcmVlbkNvb3JkaW5hdGVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zY3JvbGxlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPShlK3RoaXMuc2Nyb2xsTGVmdC1uLmxlZnQtdGhpcy4kcGFkZGluZykvdGhpcy5jaGFyYWN0ZXJXaWR0aCxpPU1hdGguZmxvb3IoKHQrdGhpcy5zY3JvbGxUb3Atbi50b3ApL3RoaXMubGluZUhlaWdodCkscz1NYXRoLnJvdW5kKHIpO3JldHVybntyb3c6aSxjb2x1bW46cyxzaWRlOnItcz4wPzE6LTF9fSx0aGlzLnNjcmVlblRvVGV4dENvb3JkaW5hdGVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zY3JvbGxlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPU1hdGgucm91bmQoKGUrdGhpcy5zY3JvbGxMZWZ0LW4ubGVmdC10aGlzLiRwYWRkaW5nKS90aGlzLmNoYXJhY3RlcldpZHRoKSxpPU1hdGguZmxvb3IoKHQrdGhpcy5zY3JvbGxUb3Atbi50b3ApL3RoaXMubGluZUhlaWdodCk7cmV0dXJuIHRoaXMuc2Vzc2lvbi5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24oaSxNYXRoLm1heChyLDApKX0sdGhpcy50ZXh0VG9TY3JlZW5Db29yZGluYXRlcz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuc2Nyb2xsZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj10aGlzLnNlc3Npb24uZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKGUsdCksaT10aGlzLiRwYWRkaW5nK01hdGgucm91bmQoci5jb2x1bW4qdGhpcy5jaGFyYWN0ZXJXaWR0aCkscz1yLnJvdyp0aGlzLmxpbmVIZWlnaHQ7cmV0dXJue3BhZ2VYOm4ubGVmdCtpLXRoaXMuc2Nyb2xsTGVmdCxwYWdlWTpuLnRvcCtzLXRoaXMuc2Nyb2xsVG9wfX0sdGhpcy52aXN1YWxpemVGb2N1cz1mdW5jdGlvbigpe2kuYWRkQ3NzQ2xhc3ModGhpcy5jb250YWluZXIsImFjZV9mb2N1cyIpfSx0aGlzLnZpc3VhbGl6ZUJsdXI9ZnVuY3Rpb24oKXtpLnJlbW92ZUNzc0NsYXNzKHRoaXMuY29udGFpbmVyLCJhY2VfZm9jdXMiKX0sdGhpcy5zaG93Q29tcG9zaXRpb249ZnVuY3Rpb24oZSl7dGhpcy4kY29tcG9zaXRpb258fCh0aGlzLiRjb21wb3NpdGlvbj17a2VlcFRleHRBcmVhQXRDdXJzb3I6dGhpcy4ka2VlcFRleHRBcmVhQXRDdXJzb3IsY3NzVGV4dDp0aGlzLnRleHRhcmVhLnN0eWxlLmNzc1RleHR9KSx0aGlzLiRrZWVwVGV4dEFyZWFBdEN1cnNvcj0hMCxpLmFkZENzc0NsYXNzKHRoaXMudGV4dGFyZWEsImFjZV9jb21wb3NpdGlvbiIpLHRoaXMudGV4dGFyZWEuc3R5bGUuY3NzVGV4dD0iIix0aGlzLiRtb3ZlVGV4dEFyZWFUb0N1cnNvcigpfSx0aGlzLnNldENvbXBvc2l0aW9uVGV4dD1mdW5jdGlvbihlKXt0aGlzLiRtb3ZlVGV4dEFyZWFUb0N1cnNvcigpfSx0aGlzLmhpZGVDb21wb3NpdGlvbj1mdW5jdGlvbigpe2lmKCF0aGlzLiRjb21wb3NpdGlvbilyZXR1cm47aS5yZW1vdmVDc3NDbGFzcyh0aGlzLnRleHRhcmVhLCJhY2VfY29tcG9zaXRpb24iKSx0aGlzLiRrZWVwVGV4dEFyZWFBdEN1cnNvcj10aGlzLiRjb21wb3NpdGlvbi5rZWVwVGV4dEFyZWFBdEN1cnNvcix0aGlzLnRleHRhcmVhLnN0eWxlLmNzc1RleHQ9dGhpcy4kY29tcG9zaXRpb24uY3NzVGV4dCx0aGlzLiRjb21wb3NpdGlvbj1udWxsfSx0aGlzLl9sb2FkVGhlbWU9ZnVuY3Rpb24oZSx0KXtpZighdS5nZXQoInBhY2thZ2VkIikpcmV0dXJuIHQoKTthLmxvYWRTY3JpcHQodS5tb2R1bGVVcmwoZSwidGhlbWUiKSx0KX0sdGhpcy5zZXRUaGVtZT1mdW5jdGlvbih0KXtmdW5jdGlvbiB1KGUpe2kuaW1wb3J0Q3NzU3RyaW5nKGUuY3NzVGV4dCxlLmNzc0NsYXNzLG4uY29udGFpbmVyLm93bmVyRG9jdW1lbnQpLG4uJHRoZW1lJiZpLnJlbW92ZUNzc0NsYXNzKG4uY29udGFpbmVyLG4uJHRoZW1lKSxuLiR0aGVtZT1lP2UuY3NzQ2xhc3M6bnVsbCxuLiR0aGVtZSYmaS5hZGRDc3NDbGFzcyhuLmNvbnRhaW5lcixuLiR0aGVtZSksZSYmZS5pc0Rhcms/aS5hZGRDc3NDbGFzcyhuLmNvbnRhaW5lciwiYWNlX2RhcmsiKTppLnJlbW92ZUNzc0NsYXNzKG4uY29udGFpbmVyLCJhY2VfZGFyayIpLG4uJHNpemUmJihuLiRzaXplLndpZHRoPTAsbi5vblJlc2l6ZSgpKX12YXIgbj10aGlzO3RoaXMuJHRoZW1lVmFsdWU9dDtpZighdHx8dHlwZW9mIHQ9PSJzdHJpbmciKXt2YXIgcj10fHwiYWNlL3RoZW1lL3RleHRtYXRlIixzO3RyeXtzPWUocil9Y2F0Y2gobyl7fWlmKHMpcmV0dXJuIHUocyk7bi5fbG9hZFRoZW1lKHIsZnVuY3Rpb24oKXtlKFtyXSxmdW5jdGlvbihlKXtpZihuLiR0aGVtZVZhbHVlIT09dClyZXR1cm47dShlKX0pfSl9ZWxzZSB1KHQpfSx0aGlzLmdldFRoZW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHRoZW1lVmFsdWV9LHRoaXMuc2V0U3R5bGU9ZnVuY3Rpb24odCl7aS5hZGRDc3NDbGFzcyh0aGlzLmNvbnRhaW5lcix0KX0sdGhpcy51bnNldFN0eWxlPWZ1bmN0aW9uKHQpe2kucmVtb3ZlQ3NzQ2xhc3ModGhpcy5jb250YWluZXIsdCl9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuJHRleHRMYXllci5kZXN0cm95KCksdGhpcy4kY3Vyc29yTGF5ZXIuZGVzdHJveSgpfX0pLmNhbGwoZy5wcm90b3R5cGUpLHQuVmlydHVhbFJlbmRlcmVyPWd9KSxkZWZpbmUoImFjZS9sYXllci9ndXR0ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9kb20iKSxpPWUoIi4uL2xpYi9vb3AiKSxzPWUoIi4uL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLG89ZnVuY3Rpb24oZSl7dGhpcy5lbGVtZW50PXIuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5lbGVtZW50LmNsYXNzTmFtZT0iYWNlX2xheWVyIGFjZV9ndXR0ZXItbGF5ZXIiLGUuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KSx0aGlzLnNldFNob3dGb2xkV2lkZ2V0cyh0aGlzLiRzaG93Rm9sZFdpZGdldHMpLHRoaXMuZ3V0dGVyV2lkdGg9MCx0aGlzLiRicmVha3BvaW50cz1bXSx0aGlzLiRhbm5vdGF0aW9ucz1bXSx0aGlzLiRkZWNvcmF0aW9ucz1bXX07KGZ1bmN0aW9uKCl7aS5pbXBsZW1lbnQodGhpcyxzKSx0aGlzLnNldFNlc3Npb249ZnVuY3Rpb24oZSl7dGhpcy5zZXNzaW9uPWV9LHRoaXMuYWRkR3V0dGVyRGVjb3JhdGlvbj1mdW5jdGlvbihlLHQpe3RoaXMuJGRlY29yYXRpb25zW2VdfHwodGhpcy4kZGVjb3JhdGlvbnNbZV09IiIpLHRoaXMuJGRlY29yYXRpb25zW2VdKz0iICIrdH0sdGhpcy5yZW1vdmVHdXR0ZXJEZWNvcmF0aW9uPWZ1bmN0aW9uKGUsdCl7dGhpcy4kZGVjb3JhdGlvbnNbZV09KHRoaXMuJGRlY29yYXRpb25zW2VdfHwiIikucmVwbGFjZSgiICIrdCwiIil9LHRoaXMuc2V0QW5ub3RhdGlvbnM9ZnVuY3Rpb24oZSl7dGhpcy4kYW5ub3RhdGlvbnM9W107Zm9yKHZhciB0IGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIG49ZVt0XTtpZighbiljb250aW51ZTt2YXIgcj10aGlzLiRhbm5vdGF0aW9uc1t0XT17dGV4dDpbXX07Zm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciBzPW5baV0sbz1zLnRleHQucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC8nL2csIiYjODIxNzsiKS5yZXBsYWNlKC88LywiJmx0OyIpO3IudGV4dC5pbmRleE9mKG8pPT09LTEmJnIudGV4dC5wdXNoKG8pO3ZhciB1PXMudHlwZTt1PT0iZXJyb3IiP3IuY2xhc3NOYW1lPSJhY2VfZXJyb3IiOnU9PSJ3YXJuaW5nIiYmci5jbGFzc05hbWUhPSJhY2VfZXJyb3IiP3IuY2xhc3NOYW1lPSJhY2Vfd2FybmluZyI6dT09ImluZm8iJiYhci5jbGFzc05hbWUmJihyLmNsYXNzTmFtZT0iYWNlX2luZm8iKX19fSx0aGlzLnVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLiRjb25maWc9ZTt2YXIgdD17Y2xhc3NOYW1lOiIiLHRleHQ6W119LG49W10saT1lLmZpcnN0Um93LHM9ZS5sYXN0Um93LG89dGhpcy5zZXNzaW9uLmdldE5leHRGb2xkTGluZShpKSx1PW8/by5zdGFydC5yb3c6SW5maW5pdHksYT10aGlzLiRzaG93Rm9sZFdpZGdldHMmJnRoaXMuc2Vzc2lvbi5mb2xkV2lkZ2V0cyxmPXRoaXMuc2Vzc2lvbi4kYnJlYWtwb2ludHM7Zm9yKDs7KXtpPnUmJihpPW8uZW5kLnJvdysxLG89dGhpcy5zZXNzaW9uLmdldE5leHRGb2xkTGluZShpLG8pLHU9bz9vLnN0YXJ0LnJvdzpJbmZpbml0eSk7aWYoaT5zKWJyZWFrO3ZhciBsPXRoaXMuJGFubm90YXRpb25zW2ldfHx0O24ucHVzaCgiPGRpdiBjbGFzcz0nYWNlX2d1dHRlci1jZWxsIix0aGlzLiRkZWNvcmF0aW9uc1tpXXx8IiIsZltpXT8iIGFjZV9icmVha3BvaW50ICI6IiAiLGwuY2xhc3NOYW1lLCInIHRpdGxlPSciLGwudGV4dC5qb2luKCJcbiIpLCInIHN0eWxlPSdoZWlnaHQ6Iix0aGlzLnNlc3Npb24uZ2V0Um93TGVuZ3RoKGkpKmUubGluZUhlaWdodCwicHg7Jz4iLGkrMSk7aWYoYSl7dmFyIGM9YVtpXTtjPT1udWxsJiYoYz1hW2ldPXRoaXMuc2Vzc2lvbi5nZXRGb2xkV2lkZ2V0KGkpKSxjJiZuLnB1c2goIjxzcGFuIGNsYXNzPSdhY2VfZm9sZC13aWRnZXQgIixjLGM9PSJzdGFydCImJmk9PXUmJmk8by5lbmQucm93PyIgY2xvc2VkIjoiIG9wZW4iLCInPjwvc3Bhbj4iKX1uLnB1c2goIjwvZGl2PiIpLGkrK310aGlzLnNlc3Npb24uJHVzZVdyYXBNb2RlJiZuLnB1c2goIjxkaXYgY2xhc3M9J2FjZV9ndXR0ZXItY2VsbCcgc3R5bGU9J3BvaW50ZXItZXZlbnRzOm5vbmU7b3BhY2l0eTowJz4iLHRoaXMuc2Vzc2lvbi5nZXRMZW5ndGgoKS0xLCI8L2Rpdj4iKSx0aGlzLmVsZW1lbnQ9ci5zZXRJbm5lckh0bWwodGhpcy5lbGVtZW50LG4uam9pbigiIikpLHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQ9ZS5taW5IZWlnaHQrInB4Ijt2YXIgaD10aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGg7aCE9PXRoaXMuZ3V0dGVyV2lkdGgmJih0aGlzLmd1dHRlcldpZHRoPWgsdGhpcy5fZW1pdCgiY2hhbmdlR3V0dGVyV2lkdGgiLGgpKX0sdGhpcy4kc2hvd0ZvbGRXaWRnZXRzPSEwLHRoaXMuc2V0U2hvd0ZvbGRXaWRnZXRzPWZ1bmN0aW9uKGUpe2U/ci5hZGRDc3NDbGFzcyh0aGlzLmVsZW1lbnQsImFjZV9mb2xkaW5nLWVuYWJsZWQiKTpyLnJlbW92ZUNzc0NsYXNzKHRoaXMuZWxlbWVudCwiYWNlX2ZvbGRpbmctZW5hYmxlZCIpLHRoaXMuJHNob3dGb2xkV2lkZ2V0cz1lfSx0aGlzLmdldFNob3dGb2xkV2lkZ2V0cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRzaG93Rm9sZFdpZGdldHN9fSkuY2FsbChvLnByb3RvdHlwZSksdC5HdXR0ZXI9b30pLGRlZmluZSgiYWNlL2xheWVyL21hcmtlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSIsImFjZS9saWIvZG9tIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1lKCIuLi9saWIvZG9tIikscz1mdW5jdGlvbihlKXt0aGlzLmVsZW1lbnQ9aS5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmVsZW1lbnQuY2xhc3NOYW1lPSJhY2VfbGF5ZXIgYWNlX21hcmtlci1sYXllciIsZS5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpfTsoZnVuY3Rpb24oKXt0aGlzLiRwYWRkaW5nPTAsdGhpcy5zZXRQYWRkaW5nPWZ1bmN0aW9uKGUpe3RoaXMuJHBhZGRpbmc9ZX0sdGhpcy5zZXRTZXNzaW9uPWZ1bmN0aW9uKGUpe3RoaXMuc2Vzc2lvbj1lfSx0aGlzLnNldE1hcmtlcnM9ZnVuY3Rpb24oZSl7dGhpcy5tYXJrZXJzPWV9LHRoaXMudXBkYXRlPWZ1bmN0aW9uKGUpe3ZhciBlPWV8fHRoaXMuY29uZmlnO2lmKCFlKXJldHVybjt0aGlzLmNvbmZpZz1lO3ZhciB0PVtdO2Zvcih2YXIgbiBpbiB0aGlzLm1hcmtlcnMpe3ZhciByPXRoaXMubWFya2Vyc1tuXTtpZighci5yYW5nZSl7ci51cGRhdGUodCx0aGlzLHRoaXMuc2Vzc2lvbixlKTtjb250aW51ZX12YXIgcz1yLnJhbmdlLmNsaXBSb3dzKGUuZmlyc3RSb3csZS5sYXN0Um93KTtpZihzLmlzRW1wdHkoKSljb250aW51ZTtzPXMudG9TY3JlZW5SYW5nZSh0aGlzLnNlc3Npb24pO2lmKHIucmVuZGVyZXIpe3ZhciBvPXRoaXMuJGdldFRvcChzLnN0YXJ0LnJvdyxlKSx1PU1hdGgucm91bmQodGhpcy4kcGFkZGluZytzLnN0YXJ0LmNvbHVtbiplLmNoYXJhY3RlcldpZHRoKTtyLnJlbmRlcmVyKHQscyx1LG8sZSl9ZWxzZSBzLmlzTXVsdGlMaW5lKCk/ci50eXBlPT0idGV4dCI/dGhpcy5kcmF3VGV4dE1hcmtlcih0LHMsci5jbGF6eixlKTp0aGlzLmRyYXdNdWx0aUxpbmVNYXJrZXIodCxzLHIuY2xhenosZSxyLnR5cGUpOnRoaXMuZHJhd1NpbmdsZUxpbmVNYXJrZXIodCxzLHIuY2xhenorIiBzdGFydCIsZSxudWxsLHIudHlwZSl9dGhpcy5lbGVtZW50PWkuc2V0SW5uZXJIdG1sKHRoaXMuZWxlbWVudCx0LmpvaW4oIiIpKX0sdGhpcy4kZ2V0VG9wPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGUtdC5maXJzdFJvd1NjcmVlbikqdC5saW5lSGVpZ2h0fSx0aGlzLmRyYXdUZXh0TWFya2VyPWZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBzPXQuc3RhcnQucm93LG89bmV3IHIocyx0LnN0YXJ0LmNvbHVtbixzLHRoaXMuc2Vzc2lvbi5nZXRTY3JlZW5MYXN0Um93Q29sdW1uKHMpKTt0aGlzLmRyYXdTaW5nbGVMaW5lTWFya2VyKGUsbyxuKyIgc3RhcnQiLGksMSwidGV4dCIpLHM9dC5lbmQucm93LG89bmV3IHIocywwLHMsdC5lbmQuY29sdW1uKSx0aGlzLmRyYXdTaW5nbGVMaW5lTWFya2VyKGUsbyxuLGksMCwidGV4dCIpO2ZvcihzPXQuc3RhcnQucm93KzE7czx0LmVuZC5yb3c7cysrKW8uc3RhcnQucm93PXMsby5lbmQucm93PXMsby5lbmQuY29sdW1uPXRoaXMuc2Vzc2lvbi5nZXRTY3JlZW5MYXN0Um93Q29sdW1uKHMpLHRoaXMuZHJhd1NpbmdsZUxpbmVNYXJrZXIoZSxvLG4saSwxLCJ0ZXh0Iil9LHRoaXMuZHJhd011bHRpTGluZU1hcmtlcj1mdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPWk9PT0iYmFja2dyb3VuZCI/MDp0aGlzLiRwYWRkaW5nLG89ci5saW5lSGVpZ2h0LHU9dGhpcy4kZ2V0VG9wKHQuc3RhcnQucm93LHIpLGE9TWF0aC5yb3VuZChzK3Quc3RhcnQuY29sdW1uKnIuY2hhcmFjdGVyV2lkdGgpO2UucHVzaCgiPGRpdiBjbGFzcz0nIixuLCIgc3RhcnQnIHN0eWxlPSciLCJoZWlnaHQ6IixvLCJweDsiLCJyaWdodDowOyIsInRvcDoiLHUsInB4OyIsImxlZnQ6IixhLCJweDsnPjwvZGl2PiIpLHU9dGhpcy4kZ2V0VG9wKHQuZW5kLnJvdyxyKTt2YXIgZj1NYXRoLnJvdW5kKHQuZW5kLmNvbHVtbipyLmNoYXJhY3RlcldpZHRoKTtlLnB1c2goIjxkaXYgY2xhc3M9JyIsbiwiJyBzdHlsZT0nIiwiaGVpZ2h0OiIsbywicHg7Iiwid2lkdGg6IixmLCJweDsiLCJ0b3A6Iix1LCJweDsiLCJsZWZ0OiIscywicHg7Jz48L2Rpdj4iKSxvPSh0LmVuZC5yb3ctdC5zdGFydC5yb3ctMSkqci5saW5lSGVpZ2h0O2lmKG88MClyZXR1cm47dT10aGlzLiRnZXRUb3AodC5zdGFydC5yb3crMSxyKSxlLnB1c2goIjxkaXYgY2xhc3M9JyIsbiwiJyBzdHlsZT0nIiwiaGVpZ2h0OiIsbywicHg7IiwicmlnaHQ6MDsiLCJ0b3A6Iix1LCJweDsiLCJsZWZ0OiIscywicHg7Jz48L2Rpdj4iKX0sdGhpcy5kcmF3U2luZ2xlTGluZU1hcmtlcj1mdW5jdGlvbihlLHQsbixyLGkscyl7dmFyIG89cz09PSJiYWNrZ3JvdW5kIj8wOnRoaXMuJHBhZGRpbmcsdT1yLmxpbmVIZWlnaHQ7aWYocz09PSJiYWNrZ3JvdW5kIil2YXIgYT1yLndpZHRoO2Vsc2UgYT1NYXRoLnJvdW5kKCh0LmVuZC5jb2x1bW4rKGl8fDApLXQuc3RhcnQuY29sdW1uKSpyLmNoYXJhY3RlcldpZHRoKTt2YXIgZj10aGlzLiRnZXRUb3AodC5zdGFydC5yb3csciksbD1NYXRoLnJvdW5kKG8rdC5zdGFydC5jb2x1bW4qci5jaGFyYWN0ZXJXaWR0aCk7ZS5wdXNoKCI8ZGl2IGNsYXNzPSciLG4sIicgc3R5bGU9JyIsImhlaWdodDoiLHUsInB4OyIsIndpZHRoOiIsYSwicHg7IiwidG9wOiIsZiwicHg7IiwibGVmdDoiLGwsInB4Oyc+PC9kaXY+Iil9fSkuY2FsbChzLnByb3RvdHlwZSksdC5NYXJrZXI9c30pLGRlZmluZSgiYWNlL2xheWVyL3RleHQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvZG9tIiwiYWNlL2xpYi9sYW5nIiwiYWNlL2xpYi91c2VyYWdlbnQiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2RvbSIpLHM9ZSgiLi4vbGliL2xhbmciKSxvPWUoIi4uL2xpYi91c2VyYWdlbnQiKSx1PWUoIi4uL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLGE9ZnVuY3Rpb24oZSl7dGhpcy5lbGVtZW50PWkuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5lbGVtZW50LmNsYXNzTmFtZT0iYWNlX2xheWVyIGFjZV90ZXh0LWxheWVyIixlLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCksdGhpcy4kY2hhcmFjdGVyU2l6ZT10aGlzLiRtZWFzdXJlU2l6ZXMoKXx8e3dpZHRoOjAsaGVpZ2h0OjB9LHRoaXMuJHBvbGxTaXplQ2hhbmdlcygpfTsoZnVuY3Rpb24oKXtyLmltcGxlbWVudCh0aGlzLHUpLHRoaXMuRU9GX0NIQVI9IsK2Iix0aGlzLkVPTF9DSEFSPSLCrCIsdGhpcy5UQUJfQ0hBUj0i4oaSIix0aGlzLlNQQUNFX0NIQVI9IsK3Iix0aGlzLiRwYWRkaW5nPTAsdGhpcy5zZXRQYWRkaW5nPWZ1bmN0aW9uKGUpe3RoaXMuJHBhZGRpbmc9ZSx0aGlzLmVsZW1lbnQuc3R5bGUucGFkZGluZz0iMCAiK2UrInB4In0sdGhpcy5nZXRMaW5lSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNoYXJhY3RlclNpemUuaGVpZ2h0fHwxfSx0aGlzLmdldENoYXJhY3RlcldpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNoYXJhY3RlclNpemUud2lkdGh8fDF9LHRoaXMuY2hlY2tGb3JTaXplQ2hhbmdlcz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuJG1lYXN1cmVTaXplcygpO2UmJih0aGlzLiRjaGFyYWN0ZXJTaXplLndpZHRoIT09ZS53aWR0aHx8dGhpcy4kY2hhcmFjdGVyU2l6ZS5oZWlnaHQhPT1lLmhlaWdodCkmJih0aGlzLiRjaGFyYWN0ZXJTaXplPWUsdGhpcy5fZW1pdCgiY2hhbmdlQ2hhcmFjdGVyU2l6ZSIse2RhdGE6ZX0pKX0sdGhpcy4kcG9sbFNpemVDaGFuZ2VzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLiRwb2xsU2l6ZUNoYW5nZXNUaW1lcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2UuY2hlY2tGb3JTaXplQ2hhbmdlcygpfSw1MDApfSx0aGlzLiRmb250U3R5bGVzPXtmb250RmFtaWx5OjEsZm9udFNpemU6MSxmb250V2VpZ2h0OjEsZm9udFN0eWxlOjEsbGluZUhlaWdodDoxfSx0aGlzLiRtZWFzdXJlU2l6ZXM9by5pc0lFfHxvLmlzT2xkR2Vja28/ZnVuY3Rpb24oKXt2YXIgZT0xZTM7aWYoIXRoaXMuJG1lYXN1cmVOb2RlKXt2YXIgdD10aGlzLiRtZWFzdXJlTm9kZT1pLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG49dC5zdHlsZTtuLndpZHRoPW4uaGVpZ2h0PSJhdXRvIixuLmxlZnQ9bi50b3A9LWUqNDArInB4IixuLnZpc2liaWxpdHk9ImhpZGRlbiIsbi5wb3NpdGlvbj0iZml4ZWQiLG4ub3ZlcmZsb3c9InZpc2libGUiLG4ud2hpdGVTcGFjZT0ibm93cmFwIix0LmlubmVySFRNTD1zLnN0cmluZ1JlcGVhdCgiWHkiLGUpO2lmKHRoaXMuZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHkpdGhpcy5lbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTtlbHNle3ZhciByPXRoaXMuZWxlbWVudC5wYXJlbnROb2RlO3doaWxlKCFpLmhhc0Nzc0NsYXNzKHIsImFjZV9lZGl0b3IiKSlyPXIucGFyZW50Tm9kZTtyLmFwcGVuZENoaWxkKHQpfX1pZighdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoKXJldHVybiBudWxsO3ZhciBuPXRoaXMuJG1lYXN1cmVOb2RlLnN0eWxlLG89aS5jb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudCk7Zm9yKHZhciB1IGluIHRoaXMuJGZvbnRTdHlsZXMpblt1XT1vW3VdO3ZhciBhPXtoZWlnaHQ6dGhpcy4kbWVhc3VyZU5vZGUub2Zmc2V0SGVpZ2h0LHdpZHRoOnRoaXMuJG1lYXN1cmVOb2RlLm9mZnNldFdpZHRoLyhlKjIpfTtyZXR1cm4gYS53aWR0aD09MHx8YS5oZWlnaHQ9PTA/bnVsbDphfTpmdW5jdGlvbigpe2lmKCF0aGlzLiRtZWFzdXJlTm9kZSl7dmFyIGU9dGhpcy4kbWVhc3VyZU5vZGU9aS5jcmVhdGVFbGVtZW50KCJkaXYiKSx0PWUuc3R5bGU7dC53aWR0aD10LmhlaWdodD0iYXV0byIsdC5sZWZ0PXQudG9wPSItMTAwcHgiLHQudmlzaWJpbGl0eT0iaGlkZGVuIix0LnBvc2l0aW9uPSJmaXhlZCIsdC5vdmVyZmxvdz0idmlzaWJsZSIsdC53aGl0ZVNwYWNlPSJub3dyYXAiLGUuaW5uZXJIVE1MPSJYIjt2YXIgbj10aGlzLmVsZW1lbnQucGFyZW50Tm9kZTt3aGlsZShuJiYhaS5oYXNDc3NDbGFzcyhuLCJhY2VfZWRpdG9yIikpbj1uLnBhcmVudE5vZGU7aWYoIW4pcmV0dXJuIHRoaXMuJG1lYXN1cmVOb2RlPW51bGw7bi5hcHBlbmRDaGlsZChlKX12YXIgcj10aGlzLiRtZWFzdXJlTm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzPXtoZWlnaHQ6ci5oZWlnaHQsd2lkdGg6ci53aWR0aH07cmV0dXJuIHMud2lkdGg9PTB8fHMuaGVpZ2h0PT0wP251bGw6c30sdGhpcy5zZXRTZXNzaW9uPWZ1bmN0aW9uKGUpe3RoaXMuc2Vzc2lvbj1lfSx0aGlzLnNob3dJbnZpc2libGVzPSExLHRoaXMuc2V0U2hvd0ludmlzaWJsZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2hvd0ludmlzaWJsZXM9PWU/ITE6KHRoaXMuc2hvd0ludmlzaWJsZXM9ZSwhMCl9LHRoaXMuJHRhYlN0cmluZ3M9W10sdGhpcy4kY29tcHV0ZVRhYlN0cmluZz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2Vzc2lvbi5nZXRUYWJTaXplKCksdD10aGlzLiR0YWJTdHJpbmdzPVswXTtmb3IodmFyIG49MTtuPGUrMTtuKyspdGhpcy5zaG93SW52aXNpYmxlcz90LnB1c2goIjxzcGFuIGNsYXNzPSdhY2VfaW52aXNpYmxlJz4iK3RoaXMuVEFCX0NIQVIrKG5ldyBBcnJheShuKSkuam9pbigiJiMxNjA7IikrIjwvc3Bhbj4iKTp0LnB1c2goKG5ldyBBcnJheShuKzEpKS5qb2luKCImIzE2MDsiKSl9LHRoaXMudXBkYXRlTGluZXM9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJGNvbXB1dGVUYWJTdHJpbmcoKSwodGhpcy5jb25maWcubGFzdFJvdyE9ZS5sYXN0Um93fHx0aGlzLmNvbmZpZy5maXJzdFJvdyE9ZS5maXJzdFJvdykmJnRoaXMuc2Nyb2xsTGluZXMoZSksdGhpcy5jb25maWc9ZTt2YXIgcj1NYXRoLm1heCh0LGUuZmlyc3RSb3cpLHM9TWF0aC5taW4obixlLmxhc3RSb3cpLG89dGhpcy5lbGVtZW50LmNoaWxkTm9kZXMsdT0wO2Zvcih2YXIgYT1lLmZpcnN0Um93O2E8cjthKyspe3ZhciBmPXRoaXMuc2Vzc2lvbi5nZXRGb2xkTGluZShhKTtpZihmKXtpZihmLmNvbnRhaW5zUm93KHIpKXtyPWYuc3RhcnQucm93O2JyZWFrfWE9Zi5lbmQucm93fXUrK31mb3IodmFyIGw9cjtsPD1zO2wrKyl7dmFyIGM9b1t1KytdO2lmKCFjKWNvbnRpbnVlO3ZhciBoPVtdLHA9dGhpcy5zZXNzaW9uLmdldFRva2VucyhsKTt0aGlzLiRyZW5kZXJMaW5lKGgsbCxwLCF0aGlzLiR1c2VMaW5lR3JvdXBzKCkpLGM9aS5zZXRJbm5lckh0bWwoYyxoLmpvaW4oIiIpKSxsPXRoaXMuc2Vzc2lvbi5nZXRSb3dGb2xkRW5kKGwpfX0sdGhpcy5zY3JvbGxMaW5lcz1mdW5jdGlvbihlKXt0aGlzLiRjb21wdXRlVGFiU3RyaW5nKCk7dmFyIHQ9dGhpcy5jb25maWc7dGhpcy5jb25maWc9ZTtpZighdHx8dC5sYXN0Um93PGUuZmlyc3RSb3cpcmV0dXJuIHRoaXMudXBkYXRlKGUpO2lmKGUubGFzdFJvdzx0LmZpcnN0Um93KXJldHVybiB0aGlzLnVwZGF0ZShlKTt2YXIgbj10aGlzLmVsZW1lbnQ7aWYodC5maXJzdFJvdzxlLmZpcnN0Um93KWZvcih2YXIgcj10aGlzLnNlc3Npb24uZ2V0Rm9sZGVkUm93Q291bnQodC5maXJzdFJvdyxlLmZpcnN0Um93LTEpO3I+MDtyLS0pbi5yZW1vdmVDaGlsZChuLmZpcnN0Q2hpbGQpO2lmKHQubGFzdFJvdz5lLmxhc3RSb3cpZm9yKHZhciByPXRoaXMuc2Vzc2lvbi5nZXRGb2xkZWRSb3dDb3VudChlLmxhc3RSb3crMSx0Lmxhc3RSb3cpO3I+MDtyLS0pbi5yZW1vdmVDaGlsZChuLmxhc3RDaGlsZCk7aWYoZS5maXJzdFJvdzx0LmZpcnN0Um93KXt2YXIgaT10aGlzLiRyZW5kZXJMaW5lc0ZyYWdtZW50KGUsZS5maXJzdFJvdyx0LmZpcnN0Um93LTEpO24uZmlyc3RDaGlsZD9uLmluc2VydEJlZm9yZShpLG4uZmlyc3RDaGlsZCk6bi5hcHBlbmRDaGlsZChpKX1pZihlLmxhc3RSb3c+dC5sYXN0Um93KXt2YXIgaT10aGlzLiRyZW5kZXJMaW5lc0ZyYWdtZW50KGUsdC5sYXN0Um93KzEsZS5sYXN0Um93KTtuLmFwcGVuZENoaWxkKGkpfX0sdGhpcy4kcmVuZGVyTGluZXNGcmFnbWVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5lbGVtZW50Lm93bmVyRG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHM9dCxvPXRoaXMuc2Vzc2lvbi5nZXROZXh0Rm9sZExpbmUocyksdT1vP28uc3RhcnQucm93OkluZmluaXR5O2Zvcig7Oyl7cz51JiYocz1vLmVuZC5yb3crMSxvPXRoaXMuc2Vzc2lvbi5nZXROZXh0Rm9sZExpbmUocyxvKSx1PW8/by5zdGFydC5yb3c6SW5maW5pdHkpO2lmKHM+bilicmVhazt2YXIgYT1pLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGY9W10sbD10aGlzLnNlc3Npb24uZ2V0VG9rZW5zKHMpO3RoaXMuJHJlbmRlckxpbmUoZixzLGwsITEpLGEuaW5uZXJIVE1MPWYuam9pbigiIik7aWYodGhpcy4kdXNlTGluZUdyb3VwcygpKWEuY2xhc3NOYW1lPSJhY2VfbGluZV9ncm91cCIsci5hcHBlbmRDaGlsZChhKTtlbHNle3ZhciBjPWEuY2hpbGROb2Rlczt3aGlsZShjLmxlbmd0aClyLmFwcGVuZENoaWxkKGNbMF0pfXMrK31yZXR1cm4gcn0sdGhpcy51cGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy4kY29tcHV0ZVRhYlN0cmluZygpLHRoaXMuY29uZmlnPWU7dmFyIHQ9W10sbj1lLmZpcnN0Um93LHI9ZS5sYXN0Um93LHM9bixvPXRoaXMuc2Vzc2lvbi5nZXROZXh0Rm9sZExpbmUocyksdT1vP28uc3RhcnQucm93OkluZmluaXR5O2Zvcig7Oyl7cz51JiYocz1vLmVuZC5yb3crMSxvPXRoaXMuc2Vzc2lvbi5nZXROZXh0Rm9sZExpbmUocyxvKSx1PW8/by5zdGFydC5yb3c6SW5maW5pdHkpO2lmKHM+cilicmVhazt0aGlzLiR1c2VMaW5lR3JvdXBzKCkmJnQucHVzaCgiPGRpdiBjbGFzcz0nYWNlX2xpbmVfZ3JvdXAnPiIpO3ZhciBhPXRoaXMuc2Vzc2lvbi5nZXRUb2tlbnMocyk7dGhpcy4kcmVuZGVyTGluZSh0LHMsYSwhMSksdGhpcy4kdXNlTGluZUdyb3VwcygpJiZ0LnB1c2goIjwvZGl2PiIpLHMrK310aGlzLmVsZW1lbnQ9aS5zZXRJbm5lckh0bWwodGhpcy5lbGVtZW50LHQuam9pbigiIikpfSx0aGlzLiR0ZXh0VG9rZW49e3RleHQ6ITAscnBhcmVuOiEwLGxwYXJlbjohMH0sdGhpcy4kcmVuZGVyVG9rZW49ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dGhpcyxzPS9cdHwmfDx8KCArKXwoW1x1MDAwMC1cdTAwMTlcdTAwYTBcdTE2ODBcdTE4MEVcdTIwMDAtXHUyMDBiXHUyMDI4XHUyMDI5XHUyMDJGXHUyMDVGXHUzMDAwXHVGRUZGXSl8W1x1MTEwMC1cdTExNUZcdTExQTMtXHUxMUE3XHUxMUZBLVx1MTFGRlx1MjMyOS1cdTIzMkFcdTJFODAtXHUyRTk5XHUyRTlCLVx1MkVGM1x1MkYwMC1cdTJGRDVcdTJGRjAtXHUyRkZCXHUzMDAwLVx1MzAzRVx1MzA0MS1cdTMwOTZcdTMwOTktXHUzMEZGXHUzMTA1LVx1MzEyRFx1MzEzMS1cdTMxOEVcdTMxOTAtXHUzMUJBXHUzMUMwLVx1MzFFM1x1MzFGMC1cdTMyMUVcdTMyMjAtXHUzMjQ3XHUzMjUwLVx1MzJGRVx1MzMwMC1cdTREQkZcdTRFMDAtXHVBNDhDXHVBNDkwLVx1QTRDNlx1QTk2MC1cdUE5N0NcdUFDMDAtXHVEN0EzXHVEN0IwLVx1RDdDNlx1RDdDQi1cdUQ3RkJcdUY5MDAtXHVGQUZGXHVGRTEwLVx1RkUxOVx1RkUzMC1cdUZFNTJcdUZFNTQtXHVGRTY2XHVGRTY4LVx1RkU2Qlx1RkYwMS1cdUZGNjBcdUZGRTAtXHVGRkU2XS9nLG89ZnVuY3Rpb24oZSxuLHIscyxvKXtpZihuKXJldHVybihuZXcgQXJyYXkoZS5sZW5ndGgrMSkpLmpvaW4oIiYjMTYwOyIpO2lmKGU9PSImIilyZXR1cm4iJiMzODsiO2lmKGU9PSI8IilyZXR1cm4iJiM2MDsiO2lmKGU9PSIJIil7dmFyIHU9aS5zZXNzaW9uLmdldFNjcmVlblRhYlNpemUodCtzKTtyZXR1cm4gdCs9dS0xLGkuJHRhYlN0cmluZ3NbdV19aWYoZT09IuOAgCIpe3ZhciBhPWkuc2hvd0ludmlzaWJsZXM/ImFjZV9jamsgYWNlX2ludmlzaWJsZSI6ImFjZV9jamsiLGY9aS5zaG93SW52aXNpYmxlcz9pLlNQQUNFX0NIQVI6IiI7cmV0dXJuIHQrPTEsIjxzcGFuIGNsYXNzPSciK2ErIicgc3R5bGU9J3dpZHRoOiIraS5jb25maWcuY2hhcmFjdGVyV2lkdGgqMisicHgnPiIrZisiPC9zcGFuPiJ9cmV0dXJuIHI/IjxzcGFuIGNsYXNzPSdhY2VfaW52aXNpYmxlIGFjZV9pbnZhbGlkJz4iK2kuU1BBQ0VfQ0hBUisiPC9zcGFuPiI6KHQrPTEsIjxzcGFuIGNsYXNzPSdhY2VfY2prJyBzdHlsZT0nd2lkdGg6IitpLmNvbmZpZy5jaGFyYWN0ZXJXaWR0aCoyKyJweCc+IitlKyI8L3NwYW4+Iil9LHU9ci5yZXBsYWNlKHMsbyk7aWYoIXRoaXMuJHRleHRUb2tlbltuLnR5cGVdKXt2YXIgYT0iYWNlXyIrbi50eXBlLnJlcGxhY2UoL1wuL2csIiBhY2VfIiksZj0iIjtuLnR5cGU9PSJmb2xkIiYmKGY9IiBzdHlsZT0nd2lkdGg6IituLnZhbHVlLmxlbmd0aCp0aGlzLmNvbmZpZy5jaGFyYWN0ZXJXaWR0aCsicHg7JyAiKSxlLnB1c2goIjxzcGFuIGNsYXNzPSciLGEsIiciLGYsIj4iLHUsIjwvc3Bhbj4iKX1lbHNlIGUucHVzaCh1KTtyZXR1cm4gdCtyLmxlbmd0aH0sdGhpcy4kcmVuZGVyTGluZUNvcmU9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz0wLG89MCx1LGE9MCxmPXRoaXM7IXJ8fHIubGVuZ3RoPT0wP3U9TnVtYmVyLk1BWF9WQUxVRTp1PXJbMF0saXx8ZS5wdXNoKCI8ZGl2IGNsYXNzPSdhY2VfbGluZScgc3R5bGU9J2hlaWdodDoiLHRoaXMuY29uZmlnLmxpbmVIZWlnaHQsInB4IiwiJz4iKTtmb3IodmFyIGw9MDtsPG4ubGVuZ3RoO2wrKyl7dmFyIGM9bltsXSxoPWMudmFsdWU7aWYocytoLmxlbmd0aDx1KWE9Zi4kcmVuZGVyVG9rZW4oZSxhLGMsaCkscys9aC5sZW5ndGg7ZWxzZXt3aGlsZShzK2gubGVuZ3RoPj11KWE9Zi4kcmVuZGVyVG9rZW4oZSxhLGMsaC5zdWJzdHJpbmcoMCx1LXMpKSxoPWguc3Vic3RyaW5nKHUtcykscz11LGl8fGUucHVzaCgiPC9kaXY+IiwiPGRpdiBjbGFzcz0nYWNlX2xpbmUnIHN0eWxlPSdoZWlnaHQ6Iix0aGlzLmNvbmZpZy5saW5lSGVpZ2h0LCJweCIsIic+IiksbysrLGE9MCx1PXJbb118fE51bWJlci5NQVhfVkFMVUU7aC5sZW5ndGghPTAmJihzKz1oLmxlbmd0aCxhPWYuJHJlbmRlclRva2VuKGUsYSxjLGgpKX19dGhpcy5zaG93SW52aXNpYmxlcyYmKHQhPT10aGlzLnNlc3Npb24uZ2V0TGVuZ3RoKCktMT9lLnB1c2goIjxzcGFuIGNsYXNzPSdhY2VfaW52aXNpYmxlJz4iK3RoaXMuRU9MX0NIQVIrIjwvc3Bhbj4iKTplLnB1c2goIjxzcGFuIGNsYXNzPSdhY2VfaW52aXNpYmxlJz4iK3RoaXMuRU9GX0NIQVIrIjwvc3Bhbj4iKSksaXx8ZS5wdXNoKCI8L2Rpdj4iKX0sdGhpcy4kcmVuZGVyTGluZT1mdW5jdGlvbihlLHQsbixyKXtpZighdGhpcy5zZXNzaW9uLmlzUm93Rm9sZGVkKHQpKXt2YXIgaT10aGlzLnNlc3Npb24uZ2V0Um93U3BsaXREYXRhKHQpO3RoaXMuJHJlbmRlckxpbmVDb3JlKGUsdCxuLGkscil9ZWxzZSB0aGlzLiRyZW5kZXJGb2xkTGluZShlLHQsbixyKX0sdGhpcy4kcmVuZGVyRm9sZExpbmU9ZnVuY3Rpb24oZSx0LG4scil7ZnVuY3Rpb24gdShlLHQsbil7dmFyIHI9MCxpPTA7d2hpbGUoaStlW3JdLnZhbHVlLmxlbmd0aDx0KXtpKz1lW3JdLnZhbHVlLmxlbmd0aCxyKys7aWYocj09ZS5sZW5ndGgpcmV0dXJufWlmKGkhPXQpe3ZhciBzPWVbcl0udmFsdWUuc3Vic3RyaW5nKHQtaSk7cy5sZW5ndGg+bi10JiYocz1zLnN1YnN0cmluZygwLG4tdCkpLG8ucHVzaCh7dHlwZTplW3JdLnR5cGUsdmFsdWU6c30pLGk9dCtzLmxlbmd0aCxyKz0xfXdoaWxlKGk8biYmcjxlLmxlbmd0aCl7dmFyIHM9ZVtyXS52YWx1ZTtzLmxlbmd0aCtpPm4/by5wdXNoKHt0eXBlOmVbcl0udHlwZSx2YWx1ZTpzLnN1YnN0cmluZygwLG4taSl9KTpvLnB1c2goZVtyXSksaSs9cy5sZW5ndGgscis9MX19dmFyIGk9dGhpcy5zZXNzaW9uLHM9aS5nZXRGb2xkTGluZSh0KSxvPVtdO3Mud2FsayhmdW5jdGlvbihlLHQscixzLGEpe2U/by5wdXNoKHt0eXBlOiJmb2xkIix2YWx1ZTplfSk6KGEmJihuPWkuZ2V0VG9rZW5zKHQpKSxuLmxlbmd0aCYmdShuLHMscikpfSxzLmVuZC5yb3csdGhpcy5zZXNzaW9uLmdldExpbmUocy5lbmQucm93KS5sZW5ndGgpO3ZhciBhPXRoaXMuc2Vzc2lvbi4kdXNlV3JhcE1vZGU/dGhpcy5zZXNzaW9uLiR3cmFwRGF0YVt0XTpudWxsO3RoaXMuJHJlbmRlckxpbmVDb3JlKGUsdCxvLGEscil9LHRoaXMuJHVzZUxpbmVHcm91cHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXNzaW9uLmdldFVzZVdyYXBNb2RlKCl9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwodGhpcy4kcG9sbFNpemVDaGFuZ2VzVGltZXIpLHRoaXMuJG1lYXN1cmVOb2RlJiZ0aGlzLiRtZWFzdXJlTm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuJG1lYXN1cmVOb2RlKSxkZWxldGUgdGhpcy4kbWVhc3VyZU5vZGV9fSkuY2FsbChhLnByb3RvdHlwZSksdC5UZXh0PWF9KSxkZWZpbmUoImFjZS9sYXllci9jdXJzb3IiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvZG9tIiksaT1mdW5jdGlvbihlKXt0aGlzLmVsZW1lbnQ9ci5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmVsZW1lbnQuY2xhc3NOYW1lPSJhY2VfbGF5ZXIgYWNlX2N1cnNvci1sYXllciIsZS5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpLHRoaXMuaXNWaXNpYmxlPSExLHRoaXMuY3Vyc29ycz1bXSx0aGlzLmN1cnNvcj10aGlzLmFkZEN1cnNvcigpfTsoZnVuY3Rpb24oKXt0aGlzLiRwYWRkaW5nPTAsdGhpcy5zZXRQYWRkaW5nPWZ1bmN0aW9uKGUpe3RoaXMuJHBhZGRpbmc9ZX0sdGhpcy5zZXRTZXNzaW9uPWZ1bmN0aW9uKGUpe3RoaXMuc2Vzc2lvbj1lfSx0aGlzLmFkZEN1cnNvcj1mdW5jdGlvbigpe3ZhciBlPXIuY3JlYXRlRWxlbWVudCgiZGl2IiksdD0iYWNlX2N1cnNvciI7cmV0dXJuIHRoaXMuaXNWaXNpYmxlfHwodCs9IiBhY2VfaGlkZGVuIiksdGhpcy5vdmVyd3JpdGUmJih0Kz0iIGFjZV9vdmVyd3JpdGUiKSxlLmNsYXNzTmFtZT10LHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChlKSx0aGlzLmN1cnNvcnMucHVzaChlKSxlfSx0aGlzLnJlbW92ZUN1cnNvcj1mdW5jdGlvbigpe2lmKHRoaXMuY3Vyc29ycy5sZW5ndGg+MSl7dmFyIGU9dGhpcy5jdXJzb3JzLnBvcCgpO3JldHVybiBlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSksZX19LHRoaXMuaGlkZUN1cnNvcj1mdW5jdGlvbigpe3RoaXMuaXNWaXNpYmxlPSExO2Zvcih2YXIgZT10aGlzLmN1cnNvcnMubGVuZ3RoO2UtLTspci5hZGRDc3NDbGFzcyh0aGlzLmN1cnNvcnNbZV0sImFjZV9oaWRkZW4iKTtjbGVhckludGVydmFsKHRoaXMuYmxpbmtJZCl9LHRoaXMuc2hvd0N1cnNvcj1mdW5jdGlvbigpe3RoaXMuaXNWaXNpYmxlPSEwO2Zvcih2YXIgZT10aGlzLmN1cnNvcnMubGVuZ3RoO2UtLTspci5yZW1vdmVDc3NDbGFzcyh0aGlzLmN1cnNvcnNbZV0sImFjZV9oaWRkZW4iKTt0aGlzLmVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0iIix0aGlzLnJlc3RhcnRUaW1lcigpfSx0aGlzLnJlc3RhcnRUaW1lcj1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwodGhpcy5ibGlua0lkKTtpZighdGhpcy5pc1Zpc2libGUpcmV0dXJuO3ZhciBlPXRoaXMuY3Vyc29ycy5sZW5ndGg9PTE/dGhpcy5jdXJzb3I6dGhpcy5lbGVtZW50O3RoaXMuYmxpbmtJZD1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2Uuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5zdHlsZS52aXNpYmlsaXR5PSIifSw0MDApfSwxZTMpfSx0aGlzLmdldFBpeGVsUG9zaXRpb249ZnVuY3Rpb24oZSx0KXtpZighdGhpcy5jb25maWd8fCF0aGlzLnNlc3Npb24pcmV0dXJue2xlZnQ6MCx0b3A6MH07ZXx8KGU9dGhpcy5zZXNzaW9uLnNlbGVjdGlvbi5nZXRDdXJzb3IoKSk7dmFyIG49dGhpcy5zZXNzaW9uLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbihlKSxyPU1hdGgucm91bmQodGhpcy4kcGFkZGluZytuLmNvbHVtbip0aGlzLmNvbmZpZy5jaGFyYWN0ZXJXaWR0aCksaT0obi5yb3ctKHQ/dGhpcy5jb25maWcuZmlyc3RSb3dTY3JlZW46MCkpKnRoaXMuY29uZmlnLmxpbmVIZWlnaHQ7cmV0dXJue2xlZnQ6cix0b3A6aX19LHRoaXMudXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMuY29uZmlnPWU7aWYodGhpcy5zZXNzaW9uLnNlbGVjdGlvbk1hcmtlckNvdW50PjApe3ZhciB0PXRoaXMuc2Vzc2lvbi4kc2VsZWN0aW9uTWFya2VycyxuPTAscixpPTA7Zm9yKHZhciBuPXQubGVuZ3RoO24tLTspe3I9dFtuXTt2YXIgcz10aGlzLmdldFBpeGVsUG9zaXRpb24oci5jdXJzb3IsITApLG89KHRoaXMuY3Vyc29yc1tpKytdfHx0aGlzLmFkZEN1cnNvcigpKS5zdHlsZTtvLmxlZnQ9cy5sZWZ0KyJweCIsby50b3A9cy50b3ArInB4IixvLndpZHRoPWUuY2hhcmFjdGVyV2lkdGgrInB4IixvLmhlaWdodD1lLmxpbmVIZWlnaHQrInB4In1pZihpPjEpd2hpbGUodGhpcy5jdXJzb3JzLmxlbmd0aD5pKXRoaXMucmVtb3ZlQ3Vyc29yKCl9ZWxzZXt2YXIgcz10aGlzLmdldFBpeGVsUG9zaXRpb24obnVsbCwhMCksbz10aGlzLmN1cnNvci5zdHlsZTtvLmxlZnQ9cy5sZWZ0KyJweCIsby50b3A9cy50b3ArInB4IixvLndpZHRoPWUuY2hhcmFjdGVyV2lkdGgrInB4IixvLmhlaWdodD1lLmxpbmVIZWlnaHQrInB4Ijt3aGlsZSh0aGlzLmN1cnNvcnMubGVuZ3RoPjEpdGhpcy5yZW1vdmVDdXJzb3IoKX12YXIgdT10aGlzLnNlc3Npb24uZ2V0T3ZlcndyaXRlKCk7dSE9dGhpcy5vdmVyd3JpdGUmJnRoaXMuJHNldE92ZXJpdGUodSksdGhpcy4kcGl4ZWxQb3M9cyx0aGlzLnJlc3RhcnRUaW1lcigpfSx0aGlzLiRzZXRPdmVyaXRlPWZ1bmN0aW9uKGUpe3RoaXMub3ZlcndyaXRlPWU7Zm9yKHZhciB0PXRoaXMuY3Vyc29ycy5sZW5ndGg7dC0tOyllP3IuYWRkQ3NzQ2xhc3ModGhpcy5jdXJzb3JzW3RdLCJhY2Vfb3ZlcndyaXRlIik6ci5yZW1vdmVDc3NDbGFzcyh0aGlzLmN1cnNvcnNbdF0sImFjZV9vdmVyd3JpdGUiKX0sdGhpcy5kZXN0cm95PWZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbCh0aGlzLmJsaW5rSWQpfX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuQ3Vyc29yPWl9KSxkZWZpbmUoImFjZS9zY3JvbGxiYXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvZG9tIiwiYWNlL2xpYi9ldmVudCIsImFjZS9saWIvZXZlbnRfZW1pdHRlciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL2xpYi9vb3AiKSxpPWUoIi4vbGliL2RvbSIpLHM9ZSgiLi9saWIvZXZlbnQiKSxvPWUoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsdT1mdW5jdGlvbihlKXt0aGlzLmVsZW1lbnQ9aS5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmVsZW1lbnQuY2xhc3NOYW1lPSJhY2Vfc2IiLHRoaXMuaW5uZXI9aS5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5pbm5lciksZS5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpLHRoaXMud2lkdGg9aS5zY3JvbGxiYXJXaWR0aChlLm93bmVyRG9jdW1lbnQpLHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aD0odGhpcy53aWR0aHx8MTUpKzUrInB4IixzLmFkZExpc3RlbmVyKHRoaXMuZWxlbWVudCwic2Nyb2xsIix0aGlzLm9uU2Nyb2xsLmJpbmQodGhpcykpfTsoZnVuY3Rpb24oKXtyLmltcGxlbWVudCh0aGlzLG8pLHRoaXMub25TY3JvbGw9ZnVuY3Rpb24oKXt0aGlzLl9lbWl0KCJzY3JvbGwiLHtkYXRhOnRoaXMuZWxlbWVudC5zY3JvbGxUb3B9KX0sdGhpcy5nZXRXaWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLndpZHRofSx0aGlzLnNldEhlaWdodD1mdW5jdGlvbihlKXt0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0PWUrInB4In0sdGhpcy5zZXRJbm5lckhlaWdodD1mdW5jdGlvbihlKXt0aGlzLmlubmVyLnN0eWxlLmhlaWdodD1lKyJweCJ9LHRoaXMuc2V0U2Nyb2xsVG9wPWZ1bmN0aW9uKGUpe3RoaXMuZWxlbWVudC5zY3JvbGxUb3A9ZX19KS5jYWxsKHUucHJvdG90eXBlKSx0LlNjcm9sbEJhcj11fSksZGVmaW5lKCJhY2UvcmVuZGVybG9vcCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZXZlbnQiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9saWIvZXZlbnQiKSxpPWZ1bmN0aW9uKGUsdCl7dGhpcy5vblJlbmRlcj1lLHRoaXMucGVuZGluZz0hMSx0aGlzLmNoYW5nZXM9MCx0aGlzLndpbmRvdz10fHx3aW5kb3d9OyhmdW5jdGlvbigpe3RoaXMuc2NoZWR1bGU9ZnVuY3Rpb24oZSl7dGhpcy5jaGFuZ2VzPXRoaXMuY2hhbmdlc3xlO2lmKCF0aGlzLnBlbmRpbmcpe3RoaXMucGVuZGluZz0hMDt2YXIgdD10aGlzO3IubmV4dFRpY2soZnVuY3Rpb24oKXt0LnBlbmRpbmc9ITE7dmFyIGU7d2hpbGUoZT10LmNoYW5nZXMpdC5jaGFuZ2VzPTAsdC5vblJlbmRlcihlKX0sdGhpcy53aW5kb3cpfX19KS5jYWxsKGkucHJvdG90eXBlKSx0LlJlbmRlckxvb3A9aX0pLGRlZmluZSgidGV4dCFhY2UvY3NzL2VkaXRvci5jc3MiLFtdLCIuYWNlX2VkaXRvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZm9udC1mYW1pbHk6ICdNb25hY28nLCAnTWVubG8nLCAnVWJ1bnR1IE1vbm8nLCAnRHJvaWQgU2FucyBNb25vJywgJ0NvbnNvbGFzJywgbW9ub3NwYWNlO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbn1cblxuLmFjZV9zY3JvbGxlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5hY2VfY29udGVudCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBjdXJzb3I6IHRleHQ7XG59XG5cbi5hY2VfZ3V0dGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgb3ZlcmZsb3cgOiBoaWRkZW47XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB6LWluZGV4OiA0O1xufVxuXG4uYWNlX3Njcm9sbGVyLmhvcnNjcm9sbCB7XG4gICAgYm94LXNoYWRvdzogMTdweCAwIDE2cHggLTE2cHggcmdiYSgwLCAwLCAwLCAwLjQpIGluc2V0O1xufVxuXG4uYWNlX2d1dHRlci1jZWxsIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDE5cHg7XG4gICAgcGFkZGluZy1yaWdodDogNnB4O1xufVxuXG4uYWNlX2d1dHRlci1jZWxsLmFjZV9lcnJvciB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUF5SnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU1DMWpNRFl3SURZeExqRXpORGMzTnl3Z01qQXhNQzh3TWk4eE1pMHhOem96TWpvd01DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTlROU0JOWVdOcGJuUnZjMmdpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2UVVNMk9FWkRRVFE0UlRVME1URkZNVUV6TTBWRlJUTTJSVVkxTTBSQk1qWWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZRVU0yT0VaRFFUVTRSVFUwTVRGRk1VRXpNMFZGUlRNMlJVWTFNMFJCTWpZaVBpQThlRzF3VFUwNlJHVnlhWFpsWkVaeWIyMGdjM1JTWldZNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcEJRelk0UmtOQk1qaEZOVFF4TVVVeFFUTXpSVVZGTXpaRlJqVXpSRUV5TmlJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwQlF6WTRSa05CTXpoRk5UUXhNVVV4UVRNelJVVkZNelpGUmpVelJFRXlOaUl2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUGtnWHhiQUFBQUpiU1VSQlZIamFwRk5OYUJOQkZINHpzNXZkWkxQNXNRbU5wVDgyUVkyMDloZWgxaW9XaXNhRFJjU0tGMFdLSjBHUW5yenJ4YXNIc1I2RW5scndEMFRhZ3hKYWJhVkVwRll4TFdsTFNTODIydHI4N202NmNjZmQyR0t5VmhBNk1NeWJnZmU5Ny92bVBVUXBoZDBzWmp0bzlYSW45T09zdmx1Mm5rcVJ6VlUrNnZ2bHpQZjhXNmJrOGR4UTBOUGJ4QUFMZ0NnZzJKa2FRdWh6UWF1L0VsMHpibVVBN1UwRXM4djJDaVltS1FKSEdPMVFJQ0NMb3FpbE1oa211ckRBeWFwS2dxSXRlemkvVVNSZEpxRVlZNEQ1akN5MDNodDJ5TWtrdkw5MWpUVFgxMHF6eXl1MmhydVBSTjdqZ2JIK0VPc1hjTUxnWWlUaEVnQU1oQUJXODVvcXkxRFhkUklkdlAxQUhKMmFjUVh2RElyVkhjZFFOckVLTllTVk1TWkdNakV6SUlBd0RYSW8rNkcvRnhjR256a0MzVDJvTWhManJlNDlzQkIrUlJjSExxZGFmSzZzWWRFL0dHQndVMVZwRk5qMGFOOHBKYmUrQmtaeWV2VXJ2TGw2WG1tMFc5SXVUYzBEeHJETkFKZDVvRXZJL0tSc05DM2JReU5qUE85eVExWUhjZmoyUXZmUWMvNVRVaEpUQmMyaU0wVTdBV0RRdGMxbkpIdkQvY2ZPMnM3amFHa2lURWZhL0VwOGNvTHU3em1ObWg4K2RjNWxaRHVVZUZBR1VOQS9PWTZKVmF5cFEwdmpyN1hZalV2Sk0zN3Z0K2oxdnVUSzVEZ1ZmVlVvVGpWZSt5My9MeE14WTJHZ1UrQ1NMeTRjcGZzWW9yUlh1WElPaTBWdDQwaDY3dVpGVGRJbzZuTGFaY3dVSldBendOUzB0Qm5xcUt6UURuamRHL2lQeVp4bzQ2SGFLVXBidllrajhxWVJUWnNCaGdlK0pIaFp5aDB4OWI5NUpxalZKa1QwODRrWklQd3UvbVBXcVBnZlE1alhoMis5MkF5N0hlZGZBZ3dBNktEV2FmYjR3M2NBQUFBQVNVVk9SSzVDWUlJPVwiKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDJweCBjZW50ZXI7XG59XG5cbi5hY2VfZ3V0dGVyLWNlbGwuYWNlX3dhcm5pbmcge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeUpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNQzFqTURZd0lEWXhMakV6TkRjM055d2dNakF4TUM4d01pOHhNaTB4Tnpvek1qb3dNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTlNCTllXTnBiblJ2YzJnaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlFVTTJPRVpEUVRnNFJUVTBNVEZGTVVFek0wVkZSVE0yUlVZMU0wUkJNallpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2UVVNMk9FWkRRVGs0UlRVME1URkZNVUV6TTBWRlJUTTJSVVkxTTBSQk1qWWlQaUE4ZUcxd1RVMDZSR1Z5YVhabFpFWnliMjBnYzNSU1pXWTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRHBCUXpZNFJrTkJOamhGTlRReE1VVXhRVE16UlVWRk16WkZSalV6UkVFeU5pSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEcEJRelk0UmtOQk56aEZOVFF4TVVVeFFUTXpSVVZGTXpaRlJqVXpSRUV5TmlJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BnZDdQZklBQUFHbVNVUkJWSGphWXZyLy96OERKWmlKZ1VJQU5vQ1JrUkViOWdMaVNWQWFReDRPUU03QUFrd2Q3WFUyL3YrKy9yT3R0ZFlHRUI5ZEFTRXZPTXlkR0tmSDhHdi9wNFhUa3ZSQmZMeGVRQVArMWNVaFhvcHl2emhQN1AvSW9TajdnN013MDljTktPNkoxUVEwTDRnSUNQSXYvdmVnLzhXK0pkRnZRTkxIVnNXOS9ubW45ems3QitjQ2tEd2hMN2d0NmtuU1pueDkvTHVDRU9jdmtJQU1QK2N2dG85bmZxeVptbVVBa3NmbkJVdGJNNjBnWC8zL2tneXYzL3hTRk9MNURaVCtMOHZQK1lmaDVjdmZQdnAveFVIeVFIWEd5QVl3Z3B3QmpaWUZUM1kxT0VsL09mQ0g0ZmZ2M3d6YzRpd012TklzREorZi9tSDQrdklQQXhzYjYzMVdXMFlsbjZacFFMWGRNSy9EWEdEZmxoK3NJdjM3RWl2RDV4Ly9HYjcrWVdUNHk4NnNsN0JDQ2tTRCtaKysvMWRrdnNGUmwrSG5EMVJ2amU0Rjh3aGpNWG1HajU4WUdmNXpzRE13Y25Bd2ZQdktjbWw2MkRzUURlYUR4TisvWTBxd2xwRUhxcmRCOTRJUk5JRFVnZmdmS0pDaEdLNE9pa0VXM2dUaVhVQjk1MEFTTEZBRjU0QUM5NEEwRzlRQWZPbm1GOURDRHpBQkZxUzA4SUhZRElTY2Rpak9qUUFCQmdDKy85YXdCSDk2andBQUFBQkpSVTVFcmtKZ2dnPT1cIik7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAycHggY2VudGVyO1xufVxuXG4uYWNlX2d1dHRlci1jZWxsLmFjZV9pbmZvIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhFQUFRQU1RQUFBQUFBRUZCUVZKU1VsNWVYbVJrWkd0cmEzOS9mNFdGaFltSmlaR1JrYWFtcHJ5OHZNUER3OHpNek5YVjFkemMzT1RrNU9ycTZ2RHc4UC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBa0FBQlFBTEFBQUFBQVFBQkFBQUFVdUlDV09aR21lYUJtbDVYR3dGQ1FTQkd5WFJTQXd0cVFJaVJ1aXdJTTVCb1lWYkVGSXlHQ1FvZUpHclZwdElRQTdcIik7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMnB4IGNlbnRlcjtcbn1cbi5hY2VfZGFyayAuYWNlX2d1dHRlci1jZWxsLmFjZV9pbmZvIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9UV0ZqYVc1MGIzTm9LU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRHBHUlRrNU1UVkdSRUl4TkRreE1VVXhPVGM1UTBGRlJFUXlNVE5HTWpCRlF5SWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEcEdSVGs1TVRWR1JVSXhORGt4TVVVeE9UYzVRMEZGUkVReU1UTkdNakJGUXlJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09rWkZPVGt4TlVaQ1FqRTBPVEV4UlRFNU56bERRVVZFUkRJeE0wWXlNRVZESWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2taRk9Ua3hOVVpEUWpFME9URXhSVEU1TnpsRFFVVkVSREl4TTBZeU1FVkRJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrU0lEa2pBQUFBSjFKUkVGVWVOcGkvUC8vUHdNbGdJbUJRa0I3QTZxcnEvK0RNQzU1RmtJR0tDb3E0cFZucEZrZ1RwMDY5Zi8rL2Z2L3IxdTM3cit0cmUxL2tnMEErcHRuOXV6WllMYVJrUkhwTHZqdzRjTlhXVmxaaHVmUG56T2NPM2VPZEFPMHRiVlBBakhEbXpkdkdBNGZQc3hJc2dHU2twSm12Mzc5WW5qMzdoMkRqSXlNQ01rRzNMaHhRL1QyN2RzTWFtcHFESFoyZHEvcEg0MUR4d0NBQUFNQUZkYzY4ZFVzRlpnQUFBQUFTVVZPUks1Q1lJST1cIik7XG59XG5cbi5hY2VfZWRpdG9yIC5hY2Vfc2Ige1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICAgIHJpZ2h0OiAwO1xufVxuXG4uYWNlX2VkaXRvciAuYWNlX3NiIGRpdiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxcHg7XG4gICAgbGVmdDogMDtcbn1cblxuLmFjZV9lZGl0b3IgLmFjZV9wcmludF9tYXJnaW5fbGF5ZXIge1xuICAgIHotaW5kZXg6IDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWFyZ2luOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4uYWNlX2VkaXRvciAuYWNlX3ByaW50X21hcmdpbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLmFjZV9lZGl0b3IgPiB0ZXh0YXJlYSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDA7XG4gICAgd2lkdGg6IDAuNWVtO1xuICAgIGhlaWdodDogMWVtO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHJlc2l6ZTogbm9uZTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5hY2VfZWRpdG9yID4gdGV4dGFyZWEuYWNlX2NvbXBvc2l0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGNvbG9yOiAjMDAwO1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgb3BhY2l0eTogMTtcbiAgICBib3JkZXI6IHNvbGlkIGxpZ2h0Z3JheSAxcHg7XG4gICAgbWFyZ2luOiAtMXB4XG59XG5cbi5hY2VfbGF5ZXIge1xuICAgIHotaW5kZXg6IDE7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC8qIHNldHRpbmcgcG9pbnRlci1ldmVudHM6IGF1dG87IG9uIG5vZGUgdW5kZXIgdGhlIG1vdXNlLCB3aGljaCBjaGFuZ2VzXG4gICAgICAgIGR1cmluZyBzY3JvbGwsIHdpbGwgYnJlYWsgbW91c2Ugd2hlZWwgc2Nyb2xsaW5nIGluIFNhZmFyaSAqL1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uYWNlX2d1dHRlciAuYWNlX2xheWVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLXdpZHRoOiA0MHB4O1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuXG4uYWNlX3RleHQtbGF5ZXIge1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBmb250OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG59XG5cbi5hY2VfY2prIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uYWNlX2N1cnNvci1sYXllciB7XG4gICAgei1pbmRleDogNDtcbn1cblxuLmFjZV9jdXJzb3Ige1xuICAgIHotaW5kZXg6IDQ7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4uYWNlX2N1cnNvci5hY2VfaGlkZGVuIHtcbiAgICBvcGFjaXR5OiAwLjI7XG59XG5cbi5hY2VfZWRpdG9yLm11bHRpc2VsZWN0IC5hY2VfY3Vyc29yIHtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMXB4O1xufVxuXG4uYWNlX2xpbmUge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RlcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDM7XG59XG5cbi5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogNTtcbn1cblxuLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9icmFja2V0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogNjtcbn1cblxuLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9hY3RpdmVfbGluZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDI7XG59XG5cbi5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDQ7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4uYWNlX2xpbmUgLmFjZV9mb2xkIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAxMXB4O1xuICAgIG1hcmdpbi10b3A6IC0ycHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgIGJhY2tncm91bmQtaW1hZ2U6XG4gICAgICAgIHVybChcImRhdGE6aW1hZ2UvcG5nLCU4OVBORyUwRCUwQSUxQSUwQSUwMCUwMCUwMCUwRElIRFIlMDAlMDAlMDAlMTElMDAlMDAlMDAlMDklMDglMDYlMDAlMDAlMDAlRDQlRTglQzclMEMlMDAlMDAlMDMlMUVpQ0NQSUNDJTIwUHJvZmlsZSUwMCUwMHglMDElODVUJURGayVEM1AlMTQlRkUlREFlJTlEJUIwJUUxJThCJTNBZyUxMSUwOSUzRWglOTFuZFN0QyU5QyVCNmtXJUJBJUNEWiVFQTYlQjchSCU5QiVBNm0lNUMlOUElQzYlMjQlRUR+JUIwJTA3JUQ5JThCbyUzQSVDNXclRjElMDclM0UlRjklMDclMEMlRDklODNvJTdCJTkyJTBEJUM2JTE0YSVGOCVBQyU4OCUyMkwlRjYlMjIlQjMlOUUlOUI0TSdTJTAzJUI5JUY3JUJCJURGJUY5JUVFOSclRTclRTQlNUUlQTAlRjlxWiVEMyUxNCUyRiUwRiUxNFVTTyVDNSVDMiVGQyVDNCVFNCUxNCVERiVGMiUwMSU1RSUxQ0MlMkIlRkNoTSU4QiU4NiUxNkolMjZHJTQwJTBGJUQzJUIyeSVFRiVCMyVGMyUwRSUxRSVDNmx0JUVFbyVERiVBQiVGRWMlRDUlOUElOTUlMEMlMTElRjAlMUMlMjAlQkUlOTQ1JUM0JTIyJUUxWSVBMGklNUMlRDR0JTEzJUUwJUQ2JTg5JUVGJTlEMTUlQzIlQ0RMc1glQTclMDQlMDklMUZnOG9jJTgxJUUxJThDJThEJTIzJTk2ZjQ1JTQwJTlBJTA5JUMyJTA3JUM1QiUzQUslQjglNDA4JTk4aSVFMCVGMyUwRCVEOCVDRSU4MSUxNCVFNCclMjYlQTklOTIuJThCJTNDJUFCRVIlMkYlRTVkRSVCMiUwQyVGNiVGMCUxRnMlODMlRjJfJUIwJUE4JTk0JUU5JTlCJUFEJUU3JTEwJThEbSU5QSUxOU4lRDElN0MlOEElREUlMUY5JTdEcCU4QyVFNiUwMCVENSVDMSUzRl8lMTglQkRBJUI4JTlEcFg2JUUzJUEzNX5CJUNEJTI0JUFFJTExJTI2JUJEJUU3JUVFdGklOTglRURlJTlBJTk3WSklMTIlMjUlMUMlMjQlQkNiVCVBRTNsaSVFNiUwQiUwMyU4OSU5QSVFNiVEMyVFRCVGNFAlOTIlQjAlOUY0JUJGNDNZJUYzJUUzJUVEUCU5NSUwNCVFQjElQzUlRjUlRjZLRiVGNCVCQSVCRCVENyVEQiU5MSU5MyUwNyVFMzUlM0UlQTcpJUQ2JTdGJTQwJUZFJUJEJUY3JUY1ciU4QSVFNXklOTIlRjAlRUIlQjQlMUUlOEQlRDUlRjQlNUIlOTIlM0FWJURCJURCJUU0JUNEJUE2JTIzJUMzJUM0d1ElM0YlMDNIQiU4MiU4RSUxQ2QoJUUwJTkxQiUwQ2ElOUFjJUM0JUFBJUY4TCUxNiUxOSUyMkolQTQlRDJpdFR5JUIyOCVENiUzQiglOTMlOTYlRUQlMUNHeCVDOV8lMEUlQjglNUUlMTYlRjUlNUIlQjIlQjglRjYlRTAlRkIlOUUlREQlMjUlRDclOEUlQkMlMTUlODUlQzUlQjclQTMlRDhRJUVEJUI1JTgxJUU5JUJBJUIyJTEzJTlBJTFCJTdGdWElQTUlQTNuJUUxNyVCOSVFNSU5QiUxQm0lQUIlMEIlMDhRJUZFJThBJUU1JUIxSCU1RWUlQ0FPJTgyUSVEN3U2JUU2JTkwUyU5NyVGQ3UlMEIlQ0YyJTk0JUVFJTI1diUxMlglMEMlQkElQUMlRjAlNUUlRjgqbCUwQU8lODUlMTclQzIlOTclQkYlRDQlQzglQ0UlREUlQUQlMTElQ0IlODBxJTJDJTNFJUFCJTlFUyVDRCVDNiVFQyUyNSVEMkwlRDIlRUJkJUI4JUJGJThBJUY1QiVDNiUxOCVGOSU5MDFDWiU5RCVCRSUyNE0lOUMlOEE5JUYyJURBUCUwQiclMDZ3JTgyJUVCJUU2JUUyJTVDJTJGJUQ3JTA3JTlFJUJCJUNDJTVEJUUxJUZBJUI5JTA4JUFELnIlMjMlOEUlQzIlMTclRjVFJTdDISVGMCVCRTMlQkUlM0VfJUI3byU4OGElQTclREIlQkUlRDNkJUVCJUEzMVolRUIlQkIlRDMlOTElQkElQTIlQjF6JTk0JThGJURCJyVGNiUzRCU4RSVBQSUxMyUxOSVCMiVCMSVCRSVCMX5WJTA4JTJCJUI0JUEyY2pKJUIzdE8lMDAlMDMlMjVtTiU5NyVGMyUwNSU5MyVFRiUxMSU4NCUwQiU3QyU4OCVBRS0lODklOEYlQUJiVyU5ME8lMkIlMEFvJTk5JTBDJTVFJTk3JTBDSSVBRkglRDkuJUIwJTNCJThGJUVEJTAzJUI2UyVENiU1RCVFNmlfczklRjMqcCVFOSUxQiVGRCVDMyVFQi43VSUwNiU1RSUxOSVDMCVEMXMuJTE3JUEwM3UlRTQlMDklQjAlN0MlNUUlMkMlRUIlMTUlREIlMUYlM0MlOUUlQjclODAlOTElM0IlREJjJUFEJTNEbWElQkElOEIlM0VWJUFCJURCdC4lNUIlMUUlMDElQkIlMEYlQUIlRDUlOUYlQ0YlQUElRDUlREQlRTclRTQlN0YlMEJ4JUEzJUZDJTA2JUE5JTIzJTBBJUQ2JUMyJUExXzIlMDAlMDAlMDAlMDlwSFlzJTAwJTAwJTBCJTEzJTAwJTAwJTBCJTEzJTAxJTAwJTlBJTlDJTE4JTAwJTAwJTAwJUI1SURBVCglMTUlQTUlOTElM0QlMEUlMDIhJTEwJTg1YWMlRTElMDUlRDYlQ0UlRDYlQzYlQ0UlRDIlRTglRUQlQ0QlREUlQzAlQzYlRDZOLiVFMFYlRjglM0QlOUNhJTg5MVhIJUMyJUJFJUQ5eSUzRiU5MCElRTYlOUMlQzMlQkZrJUU1JTAxMSVDNi0lRjUlQzhOJTA0JURGJUJEJUZGJTg5JURGdCU4M0ROJTYwJTNFJUYzJUFCJUEwJURFJTFBJTVEZyVCRSUxMFElOTclMUIlNDAlOUMlQThvJTEwJThGJTVFJTgyOCVCNCUxQiU2MCU4NyVGNiUwMiUyNiU4NSUxQ2glMUUlQzElMkIlNUJrJUZGJTg2JUVFJUI3aiUwOSU5QSVEQSU5QiVBQ2UlQTMlRjklRUMlREEhOSVCNCVENSVBNiU4MSU4NiU4NiU5OCVDQyUzQyU1QiU0MCVGQSU4MSVCMyVFOSVDQiUyMyU5NCVDMTZBem8lMDUlRDQlRTElQzElOTVhJTNCJThBJyVBMCVFOCVDQyUxNyUyMiU4NSUxRCVCQSUwMCVBMiVGQSVEQyUwQSU5NCVEMSVEMSU4RCU4QiUzQSU4NCUxN0IlQzclNjAlMUElMjVaJUZDJThEJTAwJTAwJTAwJTAwSUVORCVBRUIlNjAlODJcIiksXG4gICAgICAgIHVybChcImRhdGE6aW1hZ2UvcG5nLCU4OVBORyUwRCUwQSUxQSUwQSUwMCUwMCUwMCUwRElIRFIlMDAlMDAlMDAlMDUlMDAlMDAlMDA3JTA4JTA2JTAwJTAwJTAwJUM0JUREJTgwQyUwMCUwMCUwMyUxRWlDQ1BJQ0MlMjBQcm9maWxlJTAwJTAweCUwMSU4NVQlREZrJUQzUCUxNCVGRSVEQWUlOUQlQjAlRTElOEIlM0FnJTExJTA5JTNFaCU5MW5kU3RDJTlDJUI2a1clQkElQ0RaJUVBNiVCNyFIJTlCJUE2bSU1QyU5QSVDNiUyNCVFRH4lQjAlMDclRDklOEJvJTNBJUM1dyVGMSUwNyUzRSVGOSUwNyUwQyVEOSU4M28lN0IlOTIlMEQlQzYlMTRhJUY4JUFDJTg4JTIyTCVGNiUyMiVCMyU5RSU5QjRNJ1MlMDMlQjklRjclQkIlREYlRjklRUU5JyVFNyVFNCU1RSVBMCVGOXFaJUQzJTE0JTJGJTBGJTE0VVNPJUM1JUMyJUZDJUM0JUU0JTE0JURGJUYyJTAxJTVFJTFDQyUyQiVGQ2hNJThCJTg2JTE2SiUyNkclNDAlMEYlRDMlQjJ5JUVGJUIzJUYzJTBFJTFFJUM2bHQlRUVvJURGJUFCJUZFYyVENSU5QSU5NSUwQyUxMSVGMCUxQyUyMCVCRSU5NDUlQzQlMjIlRTFZJUEwaSU1QyVENHQlMTMlRTAlRDYlODklRUYlOUQxNSVDMiVDRExzWCVBNyUwNCUwOSUxRmc4b2MlODElRTElOEMlOEQlMjMlOTZmNDUlNDAlOUElMDklQzIlMDclQzVCJTNBSyVCOCU0MDglOThpJUUwJUYzJTBEJUQ4JUNFJTgxJTE0JUU0JyUyNiVBOSU5Mi4lOEIlM0MlQUJFUiUyRiVFNWRFJUIyJTBDJUY2JUYwJTFGcyU4MyVGMl8lQjAlQTglOTQlRTklOUIlQUQlRTclMTAlOERtJTlBJTE5TiVEMSU3QyU4QSVERSUxRjklN0RwJThDJUU2JTAwJUQ1JUMxJTNGXyUxOCVCREElQjglOURwWDYlRTMlQTM1fkIlQ0QlMjQlQUUlMTElMjYlQkQlRTclRUV0aSU5OCVFRGUlOUElOTdZKSUxMiUyNSUxQyUyNCVCQ2JUJUFFM2xpJUU2JTBCJTAzJTg5JTlBJUU2JUQzJUVEJUY0UCU5MiVCMCU5RjQlQkY0M1klRjMlRTMlRURQJTk1JTA0JUVCMSVDNSVGNSVGNktGJUY0JUJBJUJEJUQ3JURCJTkxJTkzJTA3JUUzNSUzRSVBNyklRDYlN0YlNDAlRkUlQkQlRjclRjVyJThBJUU1eSU5MiVGMCVFQiVCNCUxRSU4RCVENSVGNCU1QiU5MiUzQVYlREIlREIlRTQlQ0QlQTYlMjMlQzMlQzR3USUzRiUwM0hCJTgyJThFJTFDZCglRTAlOTFCJTBDYSU5QWMlQzQlQUElRjhMJTE2JTE5JTIySiVBNCVEMml0VHklQjI4JUQ2JTNCKCU5MyU5NiVFRCUxQ0d4JUM5XyUwRSVCOCU1RSUxNiVGNSU1QiVCMiVCOCVGNiVFMCVGQiU5RSVERCUyNSVENyU4RSVCQyUxNSU4NSVDNSVCNyVBMyVEOFElRUQlQjUlODElRTklQkElQjIlMTMlOUElMUIlN0Z1YSVBNSVBM24lRTE3JUI5JUU1JTlCJTFCbSVBQiUwQiUwOFElRkUlOEElRTUlQjFIJTVFZSVDQU8lODJRJUQ3dTYlRTYlOTBTJTk3JUZDdSUwQiVDRjIlOTQlRUUlMjV2JTEyWCUwQyVCQSVBQyVGMCU1RSVGOCpsJTBBTyU4NSUxNyVDMiU5NyVCRiVENCVDOCVDRSVERSVBRCUxMSVDQiU4MHElMkMlM0UlQUIlOUVTJUNEJUM2JUVDJTI1JUQyTCVEMiVFQmQlQjglQkYlOEElRjVCJUM2JTE4JUY5JTkwMUNaJTlEJUJFJTI0TSU5QyU4QTklRjIlREFQJTBCJyUwNnclODIlRUIlRTYlRTIlNUMlMkYlRDclMDclOUUlQkIlQ0MlNUQlRTElRkElQjklMDglQUQuciUyMyU4RSVDMiUxNyVGNUUlN0MhJUYwJUJFMyVCRSUzRV8lQjdvJTg4YSVBNyVEQiVCRSVEM2QlRUIlQTMxWiVFQiVCQiVEMyU5MSVCQSVBMiVCMXolOTQlOEYlREInJUY2JTNEJThFJUFBJTEzJTE5JUIyJUIxJUJFJUIxflYlMDglMkIlQjQlQTJjakolQjN0TyUwMCUwMyUyNW1OJTk3JUYzJTA1JTkzJUVGJTExJTg0JTBCJTdDJTg4JUFFLSU4OSU4RiVBQmJXJTkwTyUyQiUwQW8lOTklMEMlNUUlOTclMENJJUFGSCVEOS4lQjAlM0IlOEYlRUQlMDMlQjZTJUQ2JTVEJUU2aV9zOSVGMypwJUU5JTFCJUZEJUMzJUVCLjdVJTA2JTVFJTE5JUMwJUQxcy4lMTclQTAzdSVFNCUwOSVCMCU3QyU1RSUyQyVFQiUxNSVEQiUxRiUzQyU5RSVCNyU4MCU5MSUzQiVEQmMlQUQlM0RtYSVCQSU4QiUzRVYlQUIlREJ0LiU1QiUxRSUwMSVCQiUwRiVBQiVENSU5RiVDRiVBQSVENSVERCVFNyVFNCU3RiUwQnglQTMlRkMlMDYlQTklMjMlMEElRDYlQzIlQTFfMiUwMCUwMCUwMCUwOXBIWXMlMDAlMDAlMEIlMTMlMDAlMDAlMEIlMTMlMDElMDAlOUElOUMlMTglMDAlMDAlMDAlM0FJREFUOCUxMWMlRkMlRkYlRkYlN0YlMTglMDMlMUElNjAlMDElRjIlM0YlQTAlODkxJTgwJTA0JUZGJTExLSVGOCUxNyU5QkolRTIlMDUlQjFaRCU4MXYlMjZ0JUU3JTgwJUY4JUEzJTgyaCVBMTIlMUElMjAlQTMlMDElMDIlMEYlMDElQkElMjUlMDYlMDAlMTklQzAlMEQlQUVGJUQ1JTNFUyUwMCUwMCUwMCUwMElFTkQlQUVCJTYwJTgyXCIpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQsIHJlcGVhdC14O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXIsIHRvcCBsZWZ0O1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cblxuLmFjZV9kYXJrIC5hY2VfZm9sZCB7XG59XG5cbi5hY2VfZm9sZDpob3ZlcntcbiAgICBiYWNrZ3JvdW5kLWltYWdlOlxuICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3BuZywlODlQTkclMEQlMEElMUElMEElMDAlMDAlMDAlMERJSERSJTAwJTAwJTAwJTExJTAwJTAwJTAwJTA5JTA4JTA2JTAwJTAwJTAwJUQ0JUU4JUM3JTBDJTAwJTAwJTAzJTFFaUNDUElDQyUyMFByb2ZpbGUlMDAlMDB4JTAxJTg1VCVERmslRDNQJTE0JUZFJURBZSU5RCVCMCVFMSU4QiUzQWclMTElMDklM0VoJTkxbmRTdEMlOUMlQjZrVyVCQSVDRFolRUE2JUI3IUglOUIlQTZtJTVDJTlBJUM2JTI0JUVEfiVCMCUwNyVEOSU4Qm8lM0ElQzV3JUYxJTA3JTNFJUY5JTA3JTBDJUQ5JTgzbyU3QiU5MiUwRCVDNiUxNGElRjglQUMlODglMjJMJUY2JTIyJUIzJTlFJTlCNE0nUyUwMyVCOSVGNyVCQiVERiVGOSVFRTknJUU3JUU0JTVFJUEwJUY5cVolRDMlMTQlMkYlMEYlMTRVU08lQzUlQzIlRkMlQzQlRTQlMTQlREYlRjIlMDElNUUlMUNDJTJCJUZDaE0lOEIlODYlMTZKJTI2RyU0MCUwRiVEMyVCMnklRUYlQjMlRjMlMEUlMUUlQzZsdCVFRW8lREYlQUIlRkVjJUQ1JTlBJTk1JTBDJTExJUYwJTFDJTIwJUJFJTk0NSVDNCUyMiVFMVklQTBpJTVDJUQ0dCUxMyVFMCVENiU4OSVFRiU5RDE1JUMyJUNETHNYJUE3JTA0JTA5JTFGZzhvYyU4MSVFMSU4QyU4RCUyMyU5NmY0NSU0MCU5QSUwOSVDMiUwNyVDNUIlM0FLJUI4JTQwOCU5OGklRTAlRjMlMEQlRDglQ0UlODElMTQlRTQnJTI2JUE5JTkyLiU4QiUzQyVBQkVSJTJGJUU1ZEUlQjIlMEMlRjYlRjAlMUZzJTgzJUYyXyVCMCVBOCU5NCVFOSU5QiVBRCVFNyUxMCU4RG0lOUElMTlOJUQxJTdDJThBJURFJTFGOSU3RHAlOEMlRTYlMDAlRDUlQzElM0ZfJTE4JUJEQSVCOCU5RHBYNiVFMyVBMzV+QiVDRCUyNCVBRSUxMSUyNiVCRCVFNyVFRXRpJTk4JUVEZSU5QSU5N1kpJTEyJTI1JTFDJTI0JUJDYlQlQUUzbGklRTYlMEIlMDMlODklOUElRTYlRDMlRUQlRjRQJTkyJUIwJTlGNCVCRjQzWSVGMyVFMyVFRFAlOTUlMDQlRUIxJUM1JUY1JUY2S0YlRjQlQkElQkQlRDclREIlOTElOTMlMDclRTM1JTNFJUE3KSVENiU3RiU0MCVGRSVCRCVGNyVGNXIlOEElRTV5JTkyJUYwJUVCJUI0JTFFJThEJUQ1JUY0JTVCJTkyJTNBViVEQiVEQiVFNCVDRCVBNiUyMyVDMyVDNHdRJTNGJTAzSEIlODIlOEUlMUNkKCVFMCU5MUIlMENhJTlBYyVDNCVBQSVGOEwlMTYlMTklMjJKJUE0JUQyaXRUeSVCMjglRDYlM0IoJTkzJTk2JUVEJTFDR3glQzlfJTBFJUI4JTVFJTE2JUY1JTVCJUIyJUI4JUY2JUUwJUZCJTlFJUREJTI1JUQ3JThFJUJDJTE1JTg1JUM1JUI3JUEzJUQ4USVFRCVCNSU4MSVFOSVCQSVCMiUxMyU5QSUxQiU3RnVhJUE1JUEzbiVFMTclQjklRTUlOUIlMUJtJUFCJTBCJTA4USVGRSU4QSVFNSVCMUglNUVlJUNBTyU4MlElRDd1NiVFNiU5MFMlOTclRkN1JTBCJUNGMiU5NCVFRSUyNXYlMTJYJTBDJUJBJUFDJUYwJTVFJUY4KmwlMEFPJTg1JTE3JUMyJTk3JUJGJUQ0JUM4JUNFJURFJUFEJTExJUNCJTgwcSUyQyUzRSVBQiU5RVMlQ0QlQzYlRUMlMjUlRDJMJUQyJUVCZCVCOCVCRiU4QSVGNUIlQzYlMTglRjklOTAxQ1olOUQlQkUlMjRNJTlDJThBOSVGMiVEQVAlMEInJTA2dyU4MiVFQiVFNiVFMiU1QyUyRiVENyUwNyU5RSVCQiVDQyU1RCVFMSVGQSVCOSUwOCVBRC5yJTIzJThFJUMyJTE3JUY1RSU3QyElRjAlQkUzJUJFJTNFXyVCN28lODhhJUE3JURCJUJFJUQzZCVFQiVBMzFaJUVCJUJCJUQzJTkxJUJBJUEyJUIxeiU5NCU4RiVEQiclRjYlM0QlOEUlQUElMTMlMTklQjIlQjElQkUlQjF+ViUwOCUyQiVCNCVBMmNqSiVCM3RPJTAwJTAzJTI1bU4lOTclRjMlMDUlOTMlRUYlMTElODQlMEIlN0MlODglQUUtJTg5JThGJUFCYlclOTBPJTJCJTBBbyU5OSUwQyU1RSU5NyUwQ0klQUZIJUQ5LiVCMCUzQiU4RiVFRCUwMyVCNlMlRDYlNUQlRTZpX3M5JUYzKnAlRTklMUIlRkQlQzMlRUIuN1UlMDYlNUUlMTklQzAlRDFzLiUxNyVBMDN1JUU0JTA5JUIwJTdDJTVFJTJDJUVCJTE1JURCJTFGJTNDJTlFJUI3JTgwJTkxJTNCJURCYyVBRCUzRG1hJUJBJThCJTNFViVBQiVEQnQuJTVCJTFFJTAxJUJCJTBGJUFCJUQ1JTlGJUNGJUFBJUQ1JUREJUU3JUU0JTdGJTBCeCVBMyVGQyUwNiVBOSUyMyUwQSVENiVDMiVBMV8yJTAwJTAwJTAwJTA5cEhZcyUwMCUwMCUwQiUxMyUwMCUwMCUwQiUxMyUwMSUwMCU5QSU5QyUxOCUwMCUwMCUwMCVCNUlEQVQoJTE1JUE1JTkxJTNEJTBFJTAyISUxMCU4NWFjJUUxJTA1JUQ2JUNFJUQ2JUM2JUNFJUQyJUU4JUVEJUNEJURFJUMwJUM2JUQ2Ti4lRTBWJUY4JTNEJTlDYSU4OTFYSCVDMiVCRSVEOXklM0YlOTAhJUU2JTlDJUMzJUJGayVFNSUwMTElQzYtJUY1JUM4TiUwNCVERiVCRCVGRiU4OSVERnQlODNETiU2MCUzRSVGMyVBQiVBMCVERSUxQSU1RGclQkUlMTBRJTk3JTFCJTQwJTlDJUE4byUxMCU4RiU1RSU4MjglQjQlMUIlNjAlODclRjYlMDIlMjYlODUlMUNoJTFFJUMxJTJCJTVCayVGRiU4NiVFRSVCN2olMDklOUElREElOUIlQUNlJUEzJUY5JUVDJURBITklQjQlRDUlQTYlODElODYlODYlOTglQ0MlM0MlNUIlNDAlRkElODElQjMlRTklQ0IlMjMlOTQlQzE2QXpvJTA1JUQ0JUUxJUMxJTk1YSUzQiU4QSclQTAlRTglQ0MlMTclMjIlODUlMUQlQkElMDAlQTIlRkElREMlMEElOTQlRDElRDElOEQlOEIlM0ElODQlMTdCJUM3JTYwJTFBJTI1WiVGQyU4RCUwMCUwMCUwMCUwMElFTkQlQUVCJTYwJTgyXCIpLFxuICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3BuZywlODlQTkclMEQlMEElMUElMEElMDAlMDAlMDAlMERJSERSJTAwJTAwJTAwJTA1JTAwJTAwJTAwNyUwOCUwNiUwMCUwMCUwMCVDNCVERCU4MEMlMDAlMDAlMDMlMUVpQ0NQSUNDJTIwUHJvZmlsZSUwMCUwMHglMDElODVUJURGayVEM1AlMTQlRkUlREFlJTlEJUIwJUUxJThCJTNBZyUxMSUwOSUzRWglOTFuZFN0QyU5QyVCNmtXJUJBJUNEWiVFQTYlQjchSCU5QiVBNm0lNUMlOUElQzYlMjQlRUR+JUIwJTA3JUQ5JThCbyUzQSVDNXclRjElMDclM0UlRjklMDclMEMlRDklODNvJTdCJTkyJTBEJUM2JTE0YSVGOCVBQyU4OCUyMkwlRjYlMjIlQjMlOUUlOUI0TSdTJTAzJUI5JUY3JUJCJURGJUY5JUVFOSclRTclRTQlNUUlQTAlRjlxWiVEMyUxNCUyRiUwRiUxNFVTTyVDNSVDMiVGQyVDNCVFNCUxNCVERiVGMiUwMSU1RSUxQ0MlMkIlRkNoTSU4QiU4NiUxNkolMjZHJTQwJTBGJUQzJUIyeSVFRiVCMyVGMyUwRSUxRSVDNmx0JUVFbyVERiVBQiVGRWMlRDUlOUElOTUlMEMlMTElRjAlMUMlMjAlQkUlOTQ1JUM0JTIyJUUxWSVBMGklNUMlRDR0JTEzJUUwJUQ2JTg5JUVGJTlEMTUlQzIlQ0RMc1glQTclMDQlMDklMUZnOG9jJTgxJUUxJThDJThEJTIzJTk2ZjQ1JTQwJTlBJTA5JUMyJTA3JUM1QiUzQUslQjglNDA4JTk4aSVFMCVGMyUwRCVEOCVDRSU4MSUxNCVFNCclMjYlQTklOTIuJThCJTNDJUFCRVIlMkYlRTVkRSVCMiUwQyVGNiVGMCUxRnMlODMlRjJfJUIwJUE4JTk0JUU5JTlCJUFEJUU3JTEwJThEbSU5QSUxOU4lRDElN0MlOEElREUlMUY5JTdEcCU4QyVFNiUwMCVENSVDMSUzRl8lMTglQkRBJUI4JTlEcFg2JUUzJUEzNX5CJUNEJTI0JUFFJTExJTI2JUJEJUU3JUVFdGklOTglRURlJTlBJTk3WSklMTIlMjUlMUMlMjQlQkNiVCVBRTNsaSVFNiUwQiUwMyU4OSU5QSVFNiVEMyVFRCVGNFAlOTIlQjAlOUY0JUJGNDNZJUYzJUUzJUVEUCU5NSUwNCVFQjElQzUlRjUlRjZLRiVGNCVCQSVCRCVENyVEQiU5MSU5MyUwNyVFMzUlM0UlQTcpJUQ2JTdGJTQwJUZFJUJEJUY3JUY1ciU4QSVFNXklOTIlRjAlRUIlQjQlMUUlOEQlRDUlRjQlNUIlOTIlM0FWJURCJURCJUU0JUNEJUE2JTIzJUMzJUM0d1ElM0YlMDNIQiU4MiU4RSUxQ2QoJUUwJTkxQiUwQ2ElOUFjJUM0JUFBJUY4TCUxNiUxOSUyMkolQTQlRDJpdFR5JUIyOCVENiUzQiglOTMlOTYlRUQlMUNHeCVDOV8lMEUlQjglNUUlMTYlRjUlNUIlQjIlQjglRjYlRTAlRkIlOUUlREQlMjUlRDclOEUlQkMlMTUlODUlQzUlQjclQTMlRDhRJUVEJUI1JTgxJUU5JUJBJUIyJTEzJTlBJTFCJTdGdWElQTUlQTNuJUUxNyVCOSVFNSU5QiUxQm0lQUIlMEIlMDhRJUZFJThBJUU1JUIxSCU1RWUlQ0FPJTgyUSVEN3U2JUU2JTkwUyU5NyVGQ3UlMEIlQ0YyJTk0JUVFJTI1diUxMlglMEMlQkElQUMlRjAlNUUlRjgqbCUwQU8lODUlMTclQzIlOTclQkYlRDQlQzglQ0UlREUlQUQlMTElQ0IlODBxJTJDJTNFJUFCJTlFUyVDRCVDNiVFQyUyNSVEMkwlRDIlRUJkJUI4JUJGJThBJUY1QiVDNiUxOCVGOSU5MDFDWiU5RCVCRSUyNE0lOUMlOEE5JUYyJURBUCUwQiclMDZ3JTgyJUVCJUU2JUUyJTVDJTJGJUQ3JTA3JTlFJUJCJUNDJTVEJUUxJUZBJUI5JTA4JUFELnIlMjMlOEUlQzIlMTclRjVFJTdDISVGMCVCRTMlQkUlM0VfJUI3byU4OGElQTclREIlQkUlRDNkJUVCJUEzMVolRUIlQkIlRDMlOTElQkElQTIlQjF6JTk0JThGJURCJyVGNiUzRCU4RSVBQSUxMyUxOSVCMiVCMSVCRSVCMX5WJTA4JTJCJUI0JUEyY2pKJUIzdE8lMDAlMDMlMjVtTiU5NyVGMyUwNSU5MyVFRiUxMSU4NCUwQiU3QyU4OCVBRS0lODklOEYlQUJiVyU5ME8lMkIlMEFvJTk5JTBDJTVFJTk3JTBDSSVBRkglRDkuJUIwJTNCJThGJUVEJTAzJUI2UyVENiU1RCVFNmlfczklRjMqcCVFOSUxQiVGRCVDMyVFQi43VSUwNiU1RSUxOSVDMCVEMXMuJTE3JUEwM3UlRTQlMDklQjAlN0MlNUUlMkMlRUIlMTUlREIlMUYlM0MlOUUlQjclODAlOTElM0IlREJjJUFEJTNEbWElQkElOEIlM0VWJUFCJURCdC4lNUIlMUUlMDElQkIlMEYlQUIlRDUlOUYlQ0YlQUElRDUlREQlRTclRTQlN0YlMEJ4JUEzJUZDJTA2JUE5JTIzJTBBJUQ2JUMyJUExXzIlMDAlMDAlMDAlMDlwSFlzJTAwJTAwJTBCJTEzJTAwJTAwJTBCJTEzJTAxJTAwJTlBJTlDJTE4JTAwJTAwJTAwM0lEQVQ4JTExYyVGQyVGRiVGRiU3RiUzRSUwMyUxQSU2MCUwMSVGMiUzRiVBMyU4OTElODAlMDQlRkZRJTI2JUY4dyVDMCVCNDMlQTElREIlMEMlRTIlOEYlMEElQTIlODUlQ0FoJTgwJThDJTA2JTA4JTNDJTA0JUU4JTk2JTE4JTAwJUEzUyUwRCVDRCVDRiVEOCVDMSU5RCUwMCUwMCUwMCUwMElFTkQlQUVCJTYwJTgyXCIpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQsIHJlcGVhdC14O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXIsIHRvcCBsZWZ0O1xufVxuXG4uYWNlX2RyYWdnaW5nIC5hY2VfY29udGVudCB7XG4gICAgY3Vyc29yOiBtb3ZlO1xufVxuXG4uYWNlX2ZvbGRpbmctZW5hYmxlZCA+IC5hY2VfZ3V0dGVyLWNlbGwge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEzcHg7XG59XG5cbi5hY2VfZm9sZC13aWRnZXQge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAgIG1hcmdpbjogMCAtMTJweCAxcHggMXB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBoZWlnaHQ6IDE0cHg7XG4gICAgd2lkdGg6IDExcHg7XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tO1xuXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmcsJTg5UE5HJTBEJTBBJTFBJTBBJTAwJTAwJTAwJTBESUhEUiUwMCUwMCUwMCUwNSUwMCUwMCUwMCUwNSUwOCUwNiUwMCUwMCUwMCU4RG8lMjYlRTUlMDAlMDAlMDA0SURBVHglREFlJThBJUIxJTBEJTAwMCUwQyVDMiVGMiUyQ0slOTYlQkMlRDAlOEY5JTgxJTg4SCVFOSVEMCUwRSU5NiVDMCUxMCU5MiUzRSUwMiU4MCU1RSU4MiVFNCVBOSotJUVFc3clQzglQ0MlMTElRUUlOTZ3JUQ4JURDJUU5KkVoJTBDJTE1MSglMDAlMDAlMDAlMDBJRU5EJUFFQiU2MCU4MlwiKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciA0cHg7XG5cbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgXG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbi5hY2VfZm9sZC13aWRnZXQuZW5kIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZywlODlQTkclMEQlMEElMUElMEElMDAlMDAlMDAlMERJSERSJTAwJTAwJTAwJTA1JTAwJTAwJTAwJTA1JTA4JTA2JTAwJTAwJTAwJThEbyUyNiVFNSUwMCUwMCUwMDRJREFUeCVEQW0lQzclQzElMDklMDAwJTA4QyVEMSU4QyVFQ0UlQzhFKCU4RSVFQyUwMiklMUVaSiVGMSVDMSclMDQlMDdJJUUxJUU1JUVFJUNBTCVGNSVBMiU5OSU5OSUyMiVFMiVENiUxRlUlQjUlRkUwJUQ5eCVBNyUyNld6NSUwRSVENSUwMCUwMCUwMCUwMElFTkQlQUVCJTYwJTgyXCIpO1xufVxuXG4uYWNlX2ZvbGQtd2lkZ2V0LmNsb3NlZCB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmcsJTg5UE5HJTBEJTBBJTFBJTBBJTAwJTAwJTAwJTBESUhEUiUwMCUwMCUwMCUwMyUwMCUwMCUwMCUwNiUwOCUwNiUwMCUwMCUwMCUwNiVFNSUyNCUwQyUwMCUwMCUwMDlJREFUeCVEQTUlQ0ElQzElMDklMDAwJTA4JTAzJUMwJUFDKiglM0UlMDQlQzElMEQlQkElQjElMjMlQTRVaCVFMCUyMCU4MSVDMCVDQyVGOCU4MiU4MSVBQSVBMiVBQXJHZnIlODglMDglMTElMTElMUMlREQlN0QlRTAlRUUlNUIlRjYlRjYlQ0IlQjglMDVRJTJGJUU5dGFpJUQ5JTAwJTAwJTAwJTAwSUVORCVBRUIlNjAlODJcIik7XG59XG5cbi5hY2VfZm9sZC13aWRnZXQ6aG92ZXIge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gICAgLW1vei1ib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciA0cHg7XG59XG5cbi5hY2VfZm9sZC13aWRnZXQ6YWN0aXZlIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICAtbW96LWJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG59XG4vKipcbiAqIERhcmsgdmVyc2lvbiBmb3IgZm9sZCB3aWRnZXRzXG4gKi9cbi5hY2VfZGFyayAuYWNlX2ZvbGQtd2lkZ2V0IHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFVQUFBQUZDQVlBQUFDTmJ5YmxBQUFBSGtsRVFWUUlXMlA0Ly84L0F6b0dFUTdvR0NhTExBaFdpU3dCMTQ2QkFRQ1NUUFlvY3FUMEFBQUFBRWxGVGtTdVFtQ0NcIik7XG59XG4uYWNlX2RhcmsgLmFjZV9mb2xkLXdpZGdldC5lbmQge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQVVBQUFBRkNBWUFBQUNOYnlibEFBQUFIMGxFUVZRSVcyUDQvLzgvQXhRN3dOaklBakRNZ0M0QXhqQ1ZLQmlySUFBRjBrejJybGh4cEFBQUFBQkpSVTVFcmtKZ2dnPT1cIik7XG59XG4uYWNlX2RhcmsgLmFjZV9mb2xkLXdpZGdldC5jbG9zZWQge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQU1BQUFBRkNBWUFBQUNBY1ZhaUFBQUFIRWxFUVZRSVcyUDQvLysvQXhBemdEQURsT09Bem5IQUtnUFdBd0FSamk4VUlEVGZRUUFBQUFCSlJVNUVya0pnZ2c9PVwiKTtcbn1cbi5hY2VfZGFyayAuYWNlX2ZvbGQtd2lkZ2V0OmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbn1cbi5hY2VfZGFyayAuYWNlX2ZvbGQtd2lkZ2V0OmFjdGl2ZSB7XG4gICAgLW1vei1ib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xufVxuICAgIFxuICAgIFxuICAgIFxuLmFjZV9mb2xkLXdpZGdldC5pbnZhbGlkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZCNEI0O1xuICAgIGJvcmRlci1jb2xvcjogI0RFNTU1NTtcbn1cblxuLmFjZV9mYWRlLWZvbGQtd2lkZ2V0cyAuYWNlX2ZvbGQtd2lkZ2V0IHtcbiAgICAgICAtbW96LXRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlIDAuMDVzO1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjRzIGVhc2UgMC4wNXM7XG4gICAgICAgICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNHMgZWFzZSAwLjA1cztcbiAgICAgICAgLW1zLXRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlIDAuMDVzO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjRzIGVhc2UgMC4wNXM7XG4gICAgb3BhY2l0eTogMDtcbn1cblxuLmFjZV9mYWRlLWZvbGQtd2lkZ2V0czpob3ZlciAuYWNlX2ZvbGQtd2lkZ2V0IHtcbiAgICAgICAtbW96LXRyYW5zaXRpb246IG9wYWNpdHkgMC4wNXMgZWFzZSAwLjA1cztcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4wNXMgZWFzZSAwLjA1cztcbiAgICAgICAgIC1vLXRyYW5zaXRpb246IG9wYWNpdHkgMC4wNXMgZWFzZSAwLjA1cztcbiAgICAgICAgLW1zLXRyYW5zaXRpb246IG9wYWNpdHkgMC4wNXMgZWFzZSAwLjA1cztcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4wNXMgZWFzZSAwLjA1cztcbiAgICBvcGFjaXR5OjE7XG59XG4iKSxkZWZpbmUoImFjZS9tdWx0aV9zZWxlY3QiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2VfbGlzdCIsImFjZS9yYW5nZSIsImFjZS9zZWxlY3Rpb24iLCJhY2UvbW91c2UvbXVsdGlfc2VsZWN0X2hhbmRsZXIiLCJhY2UvbGliL2V2ZW50IiwiYWNlL2NvbW1hbmRzL211bHRpX3NlbGVjdF9jb21tYW5kcyIsImFjZS9zZWFyY2giLCJhY2UvZWRpdF9zZXNzaW9uIiwiYWNlL2VkaXRvciJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBjKGUsdCxuKXtyZXR1cm4gbC4kb3B0aW9ucy53cmFwPSEwLGwuJG9wdGlvbnMubmVlZGxlPXQsbC4kb3B0aW9ucy5iYWNrd2FyZHM9bj09LTEsbC5maW5kKGUpfWZ1bmN0aW9uIGQoZSx0KXtyZXR1cm4gZS5yb3c9PXQucm93JiZlLmNvbHVtbj09dC5jb2x1bW59ZnVuY3Rpb24gdihlKXtlLiRvbkFkZFJhbmdlPWUuJG9uQWRkUmFuZ2UuYmluZChlKSxlLiRvblJlbW92ZVJhbmdlPWUuJG9uUmVtb3ZlUmFuZ2UuYmluZChlKSxlLiRvbk11bHRpU2VsZWN0PWUuJG9uTXVsdGlTZWxlY3QuYmluZChlKSxlLiRvblNpbmdsZVNlbGVjdD1lLiRvblNpbmdsZVNlbGVjdC5iaW5kKGUpLHQub25TZXNzaW9uQ2hhbmdlLmNhbGwoZSxlKSxlLm9uKCJjaGFuZ2VTZXNzaW9uIix0Lm9uU2Vzc2lvbkNoYW5nZS5iaW5kKGUpKSxlLm9uKCJtb3VzZWRvd24iLG8pLGUuY29tbWFuZHMuYWRkQ29tbWFuZHMoYS5kZWZhdWx0Q29tbWFuZHMpLG0oZSl9ZnVuY3Rpb24gbShlKXtmdW5jdGlvbiBpKCl7biYmKHIuc3R5bGUuY3Vyc29yPSIiLG49ITEpfXZhciB0PWUudGV4dElucHV0LmdldEVsZW1lbnQoKSxuPSExLHI9ZS5yZW5kZXJlci5jb250ZW50O3UuYWRkTGlzdGVuZXIodCwia2V5ZG93biIsZnVuY3Rpb24oZSl7ZS5rZXlDb2RlPT0xOCYmIShlLmN0cmxLZXl8fGUuc2hpZnRLZXl8fGUubWV0YUtleSk/bnx8KHIuc3R5bGUuY3Vyc29yPSJjcm9zc2hhaXIiLG49ITApOm4mJihyLnN0eWxlLmN1cnNvcj0iIil9KSx1LmFkZExpc3RlbmVyKHQsImtleXVwIixpKSx1LmFkZExpc3RlbmVyKHQsImJsdXIiLGkpfXZhciByPWUoIi4vcmFuZ2VfbGlzdCIpLlJhbmdlTGlzdCxpPWUoIi4vcmFuZ2UiKS5SYW5nZSxzPWUoIi4vc2VsZWN0aW9uIikuU2VsZWN0aW9uLG89ZSgiLi9tb3VzZS9tdWx0aV9zZWxlY3RfaGFuZGxlciIpLm9uTW91c2VEb3duLHU9ZSgiLi9saWIvZXZlbnQiKSxhPWUoIi4vY29tbWFuZHMvbXVsdGlfc2VsZWN0X2NvbW1hbmRzIik7dC5jb21tYW5kcz1hLmRlZmF1bHRDb21tYW5kcy5jb25jYXQoYS5tdWx0aVNlbGVjdENvbW1hbmRzKTt2YXIgZj1lKCIuL3NlYXJjaCIpLlNlYXJjaCxsPW5ldyBmLGg9ZSgiLi9lZGl0X3Nlc3Npb24iKS5FZGl0U2Vzc2lvbjsoZnVuY3Rpb24oKXt0aGlzLmdldFNlbGVjdGlvbk1hcmtlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2VsZWN0aW9uTWFya2Vyc319KS5jYWxsKGgucHJvdG90eXBlKSxmdW5jdGlvbigpe3RoaXMucmFuZ2VzPW51bGwsdGhpcy5yYW5nZUxpc3Q9bnVsbCx0aGlzLmFkZFJhbmdlPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKCF0aGlzLmluTXVsdGlTZWxlY3RNb2RlJiZ0aGlzLnJhbmdlQ291bnQ9PTApe3ZhciBuPXRoaXMudG9PcmllbnRlZFJhbmdlKCk7aWYoZS5pbnRlcnNlY3RzKG4pKXJldHVybiB0fHx0aGlzLmZyb21PcmllbnRlZFJhbmdlKGUpO3RoaXMucmFuZ2VMaXN0LmFkZChuKSx0aGlzLiRvbkFkZFJhbmdlKG4pfWUuY3Vyc29yfHwoZS5jdXJzb3I9ZS5lbmQpO3ZhciByPXRoaXMucmFuZ2VMaXN0LmFkZChlKTtyZXR1cm4gdGhpcy4kb25BZGRSYW5nZShlKSxyLmxlbmd0aCYmdGhpcy4kb25SZW1vdmVSYW5nZShyKSx0aGlzLnJhbmdlQ291bnQ+MSYmIXRoaXMuaW5NdWx0aVNlbGVjdE1vZGUmJih0aGlzLl9lbWl0KCJtdWx0aVNlbGVjdCIpLHRoaXMuaW5NdWx0aVNlbGVjdE1vZGU9ITAsdGhpcy5zZXNzaW9uLiR1bmRvU2VsZWN0PSExLHRoaXMucmFuZ2VMaXN0LmF0dGFjaCh0aGlzLnNlc3Npb24pKSx0fHx0aGlzLmZyb21PcmllbnRlZFJhbmdlKGUpfSx0aGlzLnRvU2luZ2xlUmFuZ2U9ZnVuY3Rpb24oZSl7ZT1lfHx0aGlzLnJhbmdlc1swXTt2YXIgdD10aGlzLnJhbmdlTGlzdC5yZW1vdmVBbGwoKTt0Lmxlbmd0aCYmdGhpcy4kb25SZW1vdmVSYW5nZSh0KSxlJiZ0aGlzLmZyb21PcmllbnRlZFJhbmdlKGUpfSx0aGlzLnN1YnN0cmFjdFBvaW50PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucmFuZ2VMaXN0LnN1YnN0cmFjdFBvaW50KGUpO2lmKHQpcmV0dXJuIHRoaXMuJG9uUmVtb3ZlUmFuZ2UodCksdFswXX0sdGhpcy5tZXJnZU92ZXJsYXBwaW5nUmFuZ2VzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yYW5nZUxpc3QubWVyZ2UoKTtlLmxlbmd0aD90aGlzLiRvblJlbW92ZVJhbmdlKGUpOnRoaXMucmFuZ2VzWzBdJiZ0aGlzLmZyb21PcmllbnRlZFJhbmdlKHRoaXMucmFuZ2VzWzBdKX0sdGhpcy4kb25BZGRSYW5nZT1mdW5jdGlvbihlKXt0aGlzLnJhbmdlQ291bnQ9dGhpcy5yYW5nZUxpc3QucmFuZ2VzLmxlbmd0aCx0aGlzLnJhbmdlcy51bnNoaWZ0KGUpLHRoaXMuX2VtaXQoImFkZFJhbmdlIix7cmFuZ2U6ZX0pfSx0aGlzLiRvblJlbW92ZVJhbmdlPWZ1bmN0aW9uKGUpe3RoaXMucmFuZ2VDb3VudD10aGlzLnJhbmdlTGlzdC5yYW5nZXMubGVuZ3RoO2lmKHRoaXMucmFuZ2VDb3VudD09MSYmdGhpcy5pbk11bHRpU2VsZWN0TW9kZSl7dmFyIHQ9dGhpcy5yYW5nZUxpc3QucmFuZ2VzLnBvcCgpO2UucHVzaCh0KSx0aGlzLnJhbmdlQ291bnQ9MH1mb3IodmFyIG49ZS5sZW5ndGg7bi0tOyl7dmFyIHI9dGhpcy5yYW5nZXMuaW5kZXhPZihlW25dKTt0aGlzLnJhbmdlcy5zcGxpY2UociwxKX10aGlzLl9lbWl0KCJyZW1vdmVSYW5nZSIse3JhbmdlczplfSksdGhpcy5yYW5nZUNvdW50PT0wJiZ0aGlzLmluTXVsdGlTZWxlY3RNb2RlJiYodGhpcy5pbk11bHRpU2VsZWN0TW9kZT0hMSx0aGlzLl9lbWl0KCJzaW5nbGVTZWxlY3QiKSx0aGlzLnNlc3Npb24uJHVuZG9TZWxlY3Q9ITAsdGhpcy5yYW5nZUxpc3QuZGV0YWNoKHRoaXMuc2Vzc2lvbikpLHQ9dHx8dGhpcy5yYW5nZXNbMF0sdCYmIXQuaXNFcXVhbCh0aGlzLmdldFJhbmdlKCkpJiZ0aGlzLmZyb21PcmllbnRlZFJhbmdlKHQpfSx0aGlzLiRpbml0UmFuZ2VMaXN0PWZ1bmN0aW9uKCl7aWYodGhpcy5yYW5nZUxpc3QpcmV0dXJuO3RoaXMucmFuZ2VMaXN0PW5ldyByLHRoaXMucmFuZ2VzPVtdLHRoaXMucmFuZ2VDb3VudD0wfSx0aGlzLmdldEFsbFJhbmdlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJhbmdlTGlzdC5yYW5nZXMuY29uY2F0KCl9LHRoaXMuc3BsaXRJbnRvTGluZXM9ZnVuY3Rpb24oKXtpZih0aGlzLnJhbmdlQ291bnQ+MSl7dmFyIGU9dGhpcy5yYW5nZUxpc3QucmFuZ2VzLHQ9ZVtlLmxlbmd0aC0xXSxuPWkuZnJvbVBvaW50cyhlWzBdLnN0YXJ0LHQuZW5kKTt0aGlzLnRvU2luZ2xlUmFuZ2UoKSx0aGlzLnNldFNlbGVjdGlvblJhbmdlKG4sdC5jdXJzb3I9PXQuc3RhcnQpfWVsc2V7dmFyIG49dGhpcy5nZXRSYW5nZSgpLHI9bi5zdGFydC5yb3cscz1uLmVuZC5yb3c7aWYocj09cylyZXR1cm47dmFyIG89W10sdT10aGlzLmdldExpbmVSYW5nZShyLCEwKTt1LnN0YXJ0LmNvbHVtbj1uLnN0YXJ0LmNvbHVtbixvLnB1c2godSk7Zm9yKHZhciBhPXIrMTthPHM7YSsrKW8ucHVzaCh0aGlzLmdldExpbmVSYW5nZShhLCEwKSk7dT10aGlzLmdldExpbmVSYW5nZShzLCEwKSx1LmVuZC5jb2x1bW49bi5lbmQuY29sdW1uLG8ucHVzaCh1KSxvLmZvckVhY2godGhpcy5hZGRSYW5nZSx0aGlzKX19LHRoaXMudG9nZ2xlQmxvY2tTZWxlY3Rpb249ZnVuY3Rpb24oKXtpZih0aGlzLnJhbmdlQ291bnQ+MSl7dmFyIGU9dGhpcy5yYW5nZUxpc3QucmFuZ2VzLHQ9ZVtlLmxlbmd0aC0xXSxuPWkuZnJvbVBvaW50cyhlWzBdLnN0YXJ0LHQuZW5kKTt0aGlzLnRvU2luZ2xlUmFuZ2UoKSx0aGlzLnNldFNlbGVjdGlvblJhbmdlKG4sdC5jdXJzb3I9PXQuc3RhcnQpfWVsc2V7dmFyIHI9dGhpcy5zZXNzaW9uLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLnNlbGVjdGlvbkxlYWQpLHM9dGhpcy5zZXNzaW9uLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLnNlbGVjdGlvbkFuY2hvciksbz10aGlzLnJlY3Rhbmd1bGFyUmFuZ2VCbG9jayhyLHMpO28uZm9yRWFjaCh0aGlzLmFkZFJhbmdlLHRoaXMpfX0sdGhpcy5yZWN0YW5ndWxhclJhbmdlQmxvY2s9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVtdLHM9ZS5jb2x1bW48dC5jb2x1bW47aWYocyl2YXIgbz1lLmNvbHVtbix1PXQuY29sdW1uO2Vsc2UgdmFyIG89dC5jb2x1bW4sdT1lLmNvbHVtbjt2YXIgYT1lLnJvdzx0LnJvdztpZihhKXZhciBmPWUucm93LGw9dC5yb3c7ZWxzZSB2YXIgZj10LnJvdyxsPWUucm93O288MCYmKG89MCksZjwwJiYoZj0wKSxmPT1sJiYobj0hMCk7Zm9yKHZhciBjPWY7Yzw9bDtjKyspe3ZhciBoPWkuZnJvbVBvaW50cyh0aGlzLnNlc3Npb24uc2NyZWVuVG9Eb2N1bWVudFBvc2l0aW9uKGMsbyksdGhpcy5zZXNzaW9uLnNjcmVlblRvRG9jdW1lbnRQb3NpdGlvbihjLHUpKTtpZihoLmlzRW1wdHkoKSl7aWYocCYmZChoLmVuZCxwKSlicmVhazt2YXIgcD1oLmVuZH1oLmN1cnNvcj1zP2guc3RhcnQ6aC5lbmQsci5wdXNoKGgpfWEmJnIucmV2ZXJzZSgpO2lmKCFuKXt2YXIgdj1yLmxlbmd0aC0xO3doaWxlKHJbdl0uaXNFbXB0eSgpJiZ2PjApdi0tO2lmKHY+MCl7dmFyIG09MDt3aGlsZShyW21dLmlzRW1wdHkoKSltKyt9Zm9yKHZhciBnPXY7Zz49bTtnLS0pcltnXS5pc0VtcHR5KCkmJnIuc3BsaWNlKGcsMSl9cmV0dXJuIHJ9fS5jYWxsKHMucHJvdG90eXBlKTt2YXIgcD1lKCIuL2VkaXRvciIpLkVkaXRvcjsoZnVuY3Rpb24oKXt0aGlzLnVwZGF0ZVNlbGVjdGlvbk1hcmtlcnM9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnVwZGF0ZUN1cnNvcigpLHRoaXMucmVuZGVyZXIudXBkYXRlQmFja01hcmtlcnMoKX0sdGhpcy5hZGRTZWxlY3Rpb25NYXJrZXI9ZnVuY3Rpb24oZSl7ZS5jdXJzb3J8fChlLmN1cnNvcj1lLmVuZCk7dmFyIHQ9dGhpcy5nZXRTZWxlY3Rpb25TdHlsZSgpO3JldHVybiBlLm1hcmtlcj10aGlzLnNlc3Npb24uYWRkTWFya2VyKGUsImFjZV9zZWxlY3Rpb24iLHQpLHRoaXMuc2Vzc2lvbi4kc2VsZWN0aW9uTWFya2Vycy5wdXNoKGUpLHRoaXMuc2Vzc2lvbi5zZWxlY3Rpb25NYXJrZXJDb3VudD10aGlzLnNlc3Npb24uJHNlbGVjdGlvbk1hcmtlcnMubGVuZ3RoLGV9LHRoaXMucmVtb3ZlU2VsZWN0aW9uTWFya2VyPWZ1bmN0aW9uKGUpe2lmKCFlLm1hcmtlcilyZXR1cm47dGhpcy5zZXNzaW9uLnJlbW92ZU1hcmtlcihlLm1hcmtlcik7dmFyIHQ9dGhpcy5zZXNzaW9uLiRzZWxlY3Rpb25NYXJrZXJzLmluZGV4T2YoZSk7dCE9LTEmJnRoaXMuc2Vzc2lvbi4kc2VsZWN0aW9uTWFya2Vycy5zcGxpY2UodCwxKSx0aGlzLnNlc3Npb24uc2VsZWN0aW9uTWFya2VyQ291bnQ9dGhpcy5zZXNzaW9uLiRzZWxlY3Rpb25NYXJrZXJzLmxlbmd0aH0sdGhpcy5yZW1vdmVTZWxlY3Rpb25NYXJrZXJzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc2Vzc2lvbi4kc2VsZWN0aW9uTWFya2Vycztmb3IodmFyIG49ZS5sZW5ndGg7bi0tOyl7dmFyIHI9ZVtuXTtpZighci5tYXJrZXIpY29udGludWU7dGhpcy5zZXNzaW9uLnJlbW92ZU1hcmtlcihyLm1hcmtlcik7dmFyIGk9dC5pbmRleE9mKHIpO2khPS0xJiZ0LnNwbGljZShpLDEpfXRoaXMuc2Vzc2lvbi5zZWxlY3Rpb25NYXJrZXJDb3VudD10Lmxlbmd0aH0sdGhpcy4kb25BZGRSYW5nZT1mdW5jdGlvbihlKXt0aGlzLmFkZFNlbGVjdGlvbk1hcmtlcihlLnJhbmdlKSx0aGlzLnJlbmRlcmVyLnVwZGF0ZUN1cnNvcigpLHRoaXMucmVuZGVyZXIudXBkYXRlQmFja01hcmtlcnMoKX0sdGhpcy4kb25SZW1vdmVSYW5nZT1mdW5jdGlvbihlKXt0aGlzLnJlbW92ZVNlbGVjdGlvbk1hcmtlcnMoZS5yYW5nZXMpLHRoaXMucmVuZGVyZXIudXBkYXRlQ3Vyc29yKCksdGhpcy5yZW5kZXJlci51cGRhdGVCYWNrTWFya2VycygpfSx0aGlzLiRvbk11bHRpU2VsZWN0PWZ1bmN0aW9uKGUpe2lmKHRoaXMuaW5NdWx0aVNlbGVjdE1vZGUpcmV0dXJuO3RoaXMuaW5NdWx0aVNlbGVjdE1vZGU9ITAsdGhpcy5zZXRTdHlsZSgibXVsdGlzZWxlY3QiKSx0aGlzLmtleUJpbmRpbmcuYWRkS2V5Ym9hcmRIYW5kbGVyKGEua2V5Ym9hcmRIYW5kbGVyKSx0aGlzLmNvbW1hbmRzLm9uKCJleGVjIix0aGlzLiRvbk11bHRpU2VsZWN0RXhlYyksdGhpcy5yZW5kZXJlci51cGRhdGVDdXJzb3IoKSx0aGlzLnJlbmRlcmVyLnVwZGF0ZUJhY2tNYXJrZXJzKCl9LHRoaXMuJG9uU2luZ2xlU2VsZWN0PWZ1bmN0aW9uKGUpe2lmKHRoaXMuc2Vzc2lvbi5tdWx0aVNlbGVjdC5pblZpcnR1YWxNb2RlKXJldHVybjt0aGlzLmluTXVsdGlTZWxlY3RNb2RlPSExLHRoaXMudW5zZXRTdHlsZSgibXVsdGlzZWxlY3QiKSx0aGlzLmtleUJpbmRpbmcucmVtb3ZlS2V5Ym9hcmRIYW5kbGVyKGEua2V5Ym9hcmRIYW5kbGVyKSx0aGlzLmNvbW1hbmRzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImV4ZWMiLHRoaXMuJG9uTXVsdGlTZWxlY3RFeGVjKSx0aGlzLnJlbmRlcmVyLnVwZGF0ZUN1cnNvcigpLHRoaXMucmVuZGVyZXIudXBkYXRlQmFja01hcmtlcnMoKX0sdGhpcy4kb25NdWx0aVNlbGVjdEV4ZWM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb21tYW5kLG49ZS5lZGl0b3I7aWYoIW4ubXVsdGlTZWxlY3QpcmV0dXJuO3QubXVsdGlTZWxlY3RBY3Rpb24/dC5tdWx0aVNlbGVjdEFjdGlvbj09ImZvckVhY2giP24uZm9yRWFjaFNlbGVjdGlvbih0LGUuYXJncyk6dC5tdWx0aVNlbGVjdEFjdGlvbj09InNpbmdsZSI/KG4uZXhpdE11bHRpU2VsZWN0TW9kZSgpLHQuZXhlYyhuLGUuYXJnc3x8e30pKTp0Lm11bHRpU2VsZWN0QWN0aW9uKG4sZS5hcmdzfHx7fSk6KHQuZXhlYyhuLGUuYXJnc3x8e30pLG4ubXVsdGlTZWxlY3QuYWRkUmFuZ2Uobi5tdWx0aVNlbGVjdC50b09yaWVudGVkUmFuZ2UoKSksbi5tdWx0aVNlbGVjdC5tZXJnZU92ZXJsYXBwaW5nUmFuZ2VzKCkpLGUucHJldmVudERlZmF1bHQoKX0sdGhpcy5mb3JFYWNoU2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5pblZpcnR1YWxTZWxlY3Rpb25Nb2RlKXJldHVybjt2YXIgbj10aGlzLnNlc3Npb24scj10aGlzLnNlbGVjdGlvbixpPXIucmFuZ2VMaXN0LG89ci5fZXZlbnRSZWdpc3RyeTtyLl9ldmVudFJlZ2lzdHJ5PXt9O3ZhciB1PW5ldyBzKG4pO3RoaXMuaW5WaXJ0dWFsU2VsZWN0aW9uTW9kZT0hMDtmb3IodmFyIGE9aS5yYW5nZXMubGVuZ3RoO2EtLTspdS5mcm9tT3JpZW50ZWRSYW5nZShpLnJhbmdlc1thXSksdGhpcy5zZWxlY3Rpb249bi5zZWxlY3Rpb249dSxlLmV4ZWModGhpcyx0fHx7fSksdS50b09yaWVudGVkUmFuZ2UoaS5yYW5nZXNbYV0pO3UuZGV0YWNoKCksdGhpcy5zZWxlY3Rpb249bi5zZWxlY3Rpb249cix0aGlzLmluVmlydHVhbFNlbGVjdGlvbk1vZGU9ITEsci5fZXZlbnRSZWdpc3RyeT1vLHIubWVyZ2VPdmVybGFwcGluZ1JhbmdlcygpLHRoaXMub25DdXJzb3JDaGFuZ2UoKSx0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlKCl9LHRoaXMuZXhpdE11bHRpU2VsZWN0TW9kZT1mdW5jdGlvbigpe2lmKHRoaXMuaW5WaXJ0dWFsU2VsZWN0aW9uTW9kZSlyZXR1cm47dGhpcy5tdWx0aVNlbGVjdC50b1NpbmdsZVJhbmdlKCl9LHRoaXMuZ2V0Q29weVRleHQ9ZnVuY3Rpb24oKXt2YXIgZT0iIjtpZih0aGlzLmluTXVsdGlTZWxlY3RNb2RlKXt2YXIgdD10aGlzLm11bHRpU2VsZWN0LnJhbmdlTGlzdC5yYW5nZXM7ZT1bXTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyllLnB1c2godGhpcy5zZXNzaW9uLmdldFRleHRSYW5nZSh0W25dKSk7ZT1lLmpvaW4odGhpcy5zZXNzaW9uLmdldERvY3VtZW50KCkuZ2V0TmV3TGluZUNoYXJhY3RlcigpKX1lbHNlIHRoaXMuc2VsZWN0aW9uLmlzRW1wdHkoKXx8KGU9dGhpcy5zZXNzaW9uLmdldFRleHRSYW5nZSh0aGlzLmdldFNlbGVjdGlvblJhbmdlKCkpKTtyZXR1cm4gZX0sdGhpcy5vblBhc3RlPWZ1bmN0aW9uKGUpe3RoaXMuX2VtaXQoInBhc3RlIixlKTtpZighdGhpcy5pbk11bHRpU2VsZWN0TW9kZSlyZXR1cm4gdGhpcy5pbnNlcnQoZSk7dmFyIHQ9ZS5zcGxpdCgvXHJcbnxccnxcbi8pLG49dGhpcy5zZWxlY3Rpb24ucmFuZ2VMaXN0LnJhbmdlcztpZih0Lmxlbmd0aD5uLmxlbmd0aHx8dC5sZW5ndGg8PTJ8fCF0WzFdKXJldHVybiB0aGlzLmNvbW1hbmRzLmV4ZWMoImluc2VydHN0cmluZyIsdGhpcyxlKTtmb3IodmFyIHI9bi5sZW5ndGg7ci0tOyl7dmFyIGk9bltyXTtpLmlzRW1wdHkoKXx8dGhpcy5zZXNzaW9uLnJlbW92ZShpKSx0aGlzLnNlc3Npb24uaW5zZXJ0KGkuc3RhcnQsdFtyXSl9fSx0aGlzLmZpbmRBbGw9ZnVuY3Rpb24oZSx0LG4pe3Q9dHx8e30sdC5uZWVkbGU9ZXx8dC5uZWVkbGUsdGhpcy4kc2VhcmNoLnNldCh0KTt2YXIgcj10aGlzLiRzZWFyY2guZmluZEFsbCh0aGlzLnNlc3Npb24pO2lmKCFyLmxlbmd0aClyZXR1cm4gMDt0aGlzLiRibG9ja1Njcm9sbGluZys9MTt2YXIgaT10aGlzLm11bHRpU2VsZWN0O258fGkudG9TaW5nbGVSYW5nZShyWzBdKTtmb3IodmFyIHM9ci5sZW5ndGg7cy0tOylpLmFkZFJhbmdlKHJbc10sITApO3JldHVybiB0aGlzLiRibG9ja1Njcm9sbGluZy09MSxyLmxlbmd0aH0sdGhpcy5zZWxlY3RNb3JlTGluZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnNlbGVjdGlvbi50b09yaWVudGVkUmFuZ2UoKSxyPW4uY3Vyc29yPT1uLmVuZCxzPXRoaXMuc2Vzc2lvbi5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24obi5jdXJzb3IpO3RoaXMuc2VsZWN0aW9uLiRkZXNpcmVkQ29sdW1uJiYocy5jb2x1bW49dGhpcy5zZWxlY3Rpb24uJGRlc2lyZWRDb2x1bW4pO3ZhciBvPXRoaXMuc2Vzc2lvbi5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24ocy5yb3crZSxzLmNvbHVtbik7aWYoIW4uaXNFbXB0eSgpKXZhciB1PXRoaXMuc2Vzc2lvbi5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24ocj9uLmVuZDpuLnN0YXJ0KSxhPXRoaXMuc2Vzc2lvbi5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24odS5yb3crZSx1LmNvbHVtbik7ZWxzZSB2YXIgYT1vO2lmKHIpe3ZhciBmPWkuZnJvbVBvaW50cyhvLGEpO2YuY3Vyc29yPWYuc3RhcnR9ZWxzZXt2YXIgZj1pLmZyb21Qb2ludHMoYSxvKTtmLmN1cnNvcj1mLmVuZH1mLmRlc2lyZWRDb2x1bW49cy5jb2x1bW47aWYoIXRoaXMuc2VsZWN0aW9uLmluTXVsdGlTZWxlY3RNb2RlKXRoaXMuc2VsZWN0aW9uLmFkZFJhbmdlKG4pO2Vsc2UgaWYodCl2YXIgbD1uLmN1cnNvcjt0aGlzLnNlbGVjdGlvbi5hZGRSYW5nZShmKSxsJiZ0aGlzLnNlbGVjdGlvbi5zdWJzdHJhY3RQb2ludChsKX0sdGhpcy50cmFuc3Bvc2VTZWxlY3Rpb25zPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc2Vzc2lvbixuPXQubXVsdGlTZWxlY3Qscj1uLnJhbmdlcztmb3IodmFyIGk9ci5sZW5ndGg7aS0tOyl7dmFyIHM9cltpXTtpZihzLmlzRW1wdHkoKSl7dmFyIG89dC5nZXRXb3JkUmFuZ2Uocy5zdGFydC5yb3cscy5zdGFydC5jb2x1bW4pO3Muc3RhcnQucm93PW8uc3RhcnQucm93LHMuc3RhcnQuY29sdW1uPW8uc3RhcnQuY29sdW1uLHMuZW5kLnJvdz1vLmVuZC5yb3cscy5lbmQuY29sdW1uPW8uZW5kLmNvbHVtbn19bi5tZXJnZU92ZXJsYXBwaW5nUmFuZ2VzKCk7dmFyIHU9W107Zm9yKHZhciBpPXIubGVuZ3RoO2ktLTspe3ZhciBzPXJbaV07dS51bnNoaWZ0KHQuZ2V0VGV4dFJhbmdlKHMpKX1lPDA/dS51bnNoaWZ0KHUucG9wKCkpOnUucHVzaCh1LnNoaWZ0KCkpO2Zvcih2YXIgaT1yLmxlbmd0aDtpLS07KXt2YXIgcz1yW2ldLG89cy5jbG9uZSgpO3QucmVwbGFjZShzLHVbaV0pLHMuc3RhcnQucm93PW8uc3RhcnQucm93LHMuc3RhcnQuY29sdW1uPW8uc3RhcnQuY29sdW1ufX0sdGhpcy5zZWxlY3RNb3JlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zZXNzaW9uLHI9bi5tdWx0aVNlbGVjdCxpPXIudG9PcmllbnRlZFJhbmdlKCk7aWYoaS5pc0VtcHR5KCkpe3ZhciBpPW4uZ2V0V29yZFJhbmdlKGkuc3RhcnQucm93LGkuc3RhcnQuY29sdW1uKTtpLmN1cnNvcj1pLmVuZCx0aGlzLm11bHRpU2VsZWN0LmFkZFJhbmdlKGkpfXZhciBzPW4uZ2V0VGV4dFJhbmdlKGkpLG89YyhuLHMsZSk7byYmKG8uY3Vyc29yPWU9PS0xP28uc3RhcnQ6by5lbmQsdGhpcy5tdWx0aVNlbGVjdC5hZGRSYW5nZShvKSksdCYmdGhpcy5tdWx0aVNlbGVjdC5zdWJzdHJhY3RQb2ludChpLmN1cnNvcil9fSkuY2FsbChwLnByb3RvdHlwZSksdC5vblNlc3Npb25DaGFuZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zZXNzaW9uO3QubXVsdGlTZWxlY3R8fCh0LiRzZWxlY3Rpb25NYXJrZXJzPVtdLHQuc2VsZWN0aW9uLiRpbml0UmFuZ2VMaXN0KCksdC5tdWx0aVNlbGVjdD10LnNlbGVjdGlvbiksdGhpcy5tdWx0aVNlbGVjdD10Lm11bHRpU2VsZWN0O3ZhciBuPWUub2xkU2Vzc2lvbjtuJiYobi5tdWx0aVNlbGVjdCYmbi5tdWx0aVNlbGVjdC5lZGl0b3I9PXRoaXMmJihuLm11bHRpU2VsZWN0LmVkaXRvcj1udWxsKSx0Lm11bHRpU2VsZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImFkZFJhbmdlIix0aGlzLiRvbkFkZFJhbmdlKSx0Lm11bHRpU2VsZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlbW92ZVJhbmdlIix0aGlzLiRvblJlbW92ZVJhbmdlKSx0Lm11bHRpU2VsZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm11bHRpU2VsZWN0Iix0aGlzLiRvbk11bHRpU2VsZWN0KSx0Lm11bHRpU2VsZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNpbmdsZVNlbGVjdCIsdGhpcy4kb25TaW5nbGVTZWxlY3QpKSx0Lm11bHRpU2VsZWN0Lm9uKCJhZGRSYW5nZSIsdGhpcy4kb25BZGRSYW5nZSksdC5tdWx0aVNlbGVjdC5vbigicmVtb3ZlUmFuZ2UiLHRoaXMuJG9uUmVtb3ZlUmFuZ2UpLHQubXVsdGlTZWxlY3Qub24oIm11bHRpU2VsZWN0Iix0aGlzLiRvbk11bHRpU2VsZWN0KSx0Lm11bHRpU2VsZWN0Lm9uKCJzaW5nbGVTZWxlY3QiLHRoaXMuJG9uU2luZ2xlU2VsZWN0KSx0aGlzLmluTXVsdGlTZWxlY3RNb2RlIT10LnNlbGVjdGlvbi5pbk11bHRpU2VsZWN0TW9kZSYmKHQuc2VsZWN0aW9uLmluTXVsdGlTZWxlY3RNb2RlP3RoaXMuJG9uTXVsdGlTZWxlY3QoKTp0aGlzLiRvblNpbmdsZVNlbGVjdCgpKX0sdC5NdWx0aVNlbGVjdD12fSksZGVmaW5lKCJhY2UvcmFuZ2VfbGlzdCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1mdW5jdGlvbigpe3RoaXMucmFuZ2VzPVtdfTsoZnVuY3Rpb24oKXt0aGlzLmNvbXBhcmVQb2ludHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5yb3ctdC5yb3d8fGUuY29sdW1uLXQuY29sdW1ufSx0aGlzLnBvaW50SW5kZXg9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhbmdlcztmb3IodmFyIHI9dHx8MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIGk9bltyXSxzPXRoaXMuY29tcGFyZVBvaW50cyhlLGkuZW5kKTtpZihzPjApY29udGludWU7cmV0dXJuIHM9PTA/cjoocz10aGlzLmNvbXBhcmVQb2ludHMoZSxpLnN0YXJ0KSxzPj0wP3I6LXItMSl9cmV0dXJuLXItMX0sdGhpcy5hZGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wb2ludEluZGV4KGUuc3RhcnQpO3Q8MCYmKHQ9LXQtMSk7dmFyIG49dGhpcy5wb2ludEluZGV4KGUuZW5kLHQpO3JldHVybiBuPDA/bj0tbi0xOm4rKyx0aGlzLnJhbmdlcy5zcGxpY2UodCxuLXQsZSl9LHRoaXMuYWRkTGlzdD1mdW5jdGlvbihlKXt2YXIgdD1bXTtmb3IodmFyIG49ZS5sZW5ndGg7bi0tOyl0LnB1c2guY2FsbCh0LHRoaXMuYWRkKGVbbl0pKTtyZXR1cm4gdH0sdGhpcy5zdWJzdHJhY3RQb2ludD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnBvaW50SW5kZXgoZSk7aWYodD49MClyZXR1cm4gdGhpcy5yYW5nZXMuc3BsaWNlKHQsMSl9LHRoaXMubWVyZ2U9ZnVuY3Rpb24oKXt2YXIgZT1bXSx0PXRoaXMucmFuZ2VzLG49dFswXSxyO2Zvcih2YXIgaT0xO2k8dC5sZW5ndGg7aSsrKXtyPW4sbj10W2ldO3ZhciBzPXRoaXMuY29tcGFyZVBvaW50cyhyLmVuZCxuLnN0YXJ0KTtpZihzPDApY29udGludWU7aWYocz09MCYmIXIuaXNFbXB0eSgpJiYhbi5pc0VtcHR5KCkpY29udGludWU7dGhpcy5jb21wYXJlUG9pbnRzKHIuZW5kLG4uZW5kKTwwJiYoci5lbmQucm93PW4uZW5kLnJvdyxyLmVuZC5jb2x1bW49bi5lbmQuY29sdW1uKSx0LnNwbGljZShpLDEpLGUucHVzaChuKSxuPXIsaS0tfXJldHVybiBlfSx0aGlzLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucG9pbnRJbmRleCh7cm93OmUsY29sdW1uOnR9KT49MH0sdGhpcy5jb250YWluc1BvaW50PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnBvaW50SW5kZXgoZSk+PTB9LHRoaXMucmFuZ2VBdFBvaW50PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucG9pbnRJbmRleChlKTtpZih0Pj0wKXJldHVybiB0aGlzLnJhbmdlc1t0XX0sdGhpcy5jbGlwUm93cz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmFuZ2VzO2lmKG5bMF0uc3RhcnQucm93PnR8fG5bbi5sZW5ndGgtMV0uc3RhcnQucm93PGUpcmV0dXJuW107dmFyIHI9dGhpcy5wb2ludEluZGV4KHtyb3c6ZSxjb2x1bW46MH0pO3I8MCYmKHI9LXItMSk7dmFyIGk9dGhpcy5wb2ludEluZGV4KHtyb3c6dCxjb2x1bW46MH0scik7aTwwJiYoaT0taS0xKTt2YXIgcz1bXTtmb3IodmFyIG89cjtvPGk7bysrKXMucHVzaChuW29dKTtyZXR1cm4gc30sdGhpcy5yZW1vdmVBbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5nZXMuc3BsaWNlKDAsdGhpcy5yYW5nZXMubGVuZ3RoKX0sdGhpcy5hdHRhY2g9ZnVuY3Rpb24oZSl7dGhpcy5zZXNzaW9uJiZ0aGlzLmRldGFjaCgpLHRoaXMuc2Vzc2lvbj1lLHRoaXMub25DaGFuZ2U9dGhpcy4kb25DaGFuZ2UuYmluZCh0aGlzKSx0aGlzLnNlc3Npb24ub24oImNoYW5nZSIsdGhpcy5vbkNoYW5nZSl9LHRoaXMuZGV0YWNoPWZ1bmN0aW9uKCl7aWYoIXRoaXMuc2Vzc2lvbilyZXR1cm47dGhpcy5zZXNzaW9uLnJlbW92ZUxpc3RlbmVyKCJjaGFuZ2UiLHRoaXMub25DaGFuZ2UpLHRoaXMuc2Vzc2lvbj1udWxsfSx0aGlzLiRvbkNoYW5nZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGEucmFuZ2U7aWYoZS5kYXRhLmFjdGlvblswXT09ImkiKXZhciBuPXQuc3RhcnQscj10LmVuZDtlbHNlIHZhciByPXQuc3RhcnQsbj10LmVuZDt2YXIgaT1uLnJvdyxzPXIucm93LG89cy1pLHU9LW4uY29sdW1uK3IuY29sdW1uLGE9dGhpcy5yYW5nZXM7Zm9yKHZhciBmPTAsbD1hLmxlbmd0aDtmPGw7ZisrKXt2YXIgYz1hW2ZdO2lmKGMuZW5kLnJvdzxpKWNvbnRpbnVlO2lmKGMuc3RhcnQucm93PmkpYnJlYWs7Yy5zdGFydC5yb3c9PWkmJmMuc3RhcnQuY29sdW1uPj1uLmNvbHVtbiYmKGMuc3RhcnQuY29sdW1uKz11LGMuc3RhcnQucm93Kz1vKSxjLmVuZC5yb3c9PWkmJmMuZW5kLmNvbHVtbj49bi5jb2x1bW4mJihjLmVuZC5jb2x1bW4rPXUsYy5lbmQucm93Kz1vKX1pZihvIT0wJiZmPGwpZm9yKDtmPGw7ZisrKXt2YXIgYz1hW2ZdO2Muc3RhcnQucm93Kz1vLGMuZW5kLnJvdys9b319fSkuY2FsbChyLnByb3RvdHlwZSksdC5SYW5nZUxpc3Q9cn0pLGRlZmluZSgiYWNlL21vdXNlL211bHRpX3NlbGVjdF9oYW5kbGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9ldmVudCJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBpKGUsdCl7cmV0dXJuIGUucm93PT10LnJvdyYmZS5jb2x1bW49PXQuY29sdW1ufWZ1bmN0aW9uIHMoZSl7dmFyIHQ9ZS5kb21FdmVudCxuPXQuYWx0S2V5LHM9dC5zaGlmdEtleSxvPWUuZ2V0QWNjZWxLZXkoKSx1PWUuZ2V0QnV0dG9uKCk7aWYoZS5lZGl0b3IuaW5NdWx0aVNlbGVjdE1vZGUmJnU9PTIpe2UuZWRpdG9yLnRleHRJbnB1dC5vbkNvbnRleHRNZW51KGUuZG9tRXZlbnQpO3JldHVybn1pZighbyYmIW4pe3U9PTAmJmUuZWRpdG9yLmluTXVsdGlTZWxlY3RNb2RlJiZlLmVkaXRvci5leGl0TXVsdGlTZWxlY3RNb2RlKCk7cmV0dXJufXZhciBhPWUuZWRpdG9yLGY9YS5zZWxlY3Rpb24sbD1hLmluTXVsdGlTZWxlY3RNb2RlLGM9ZS5nZXREb2N1bWVudFBvc2l0aW9uKCksaD1mLmdldEN1cnNvcigpLHA9ZS5pblNlbGVjdGlvbigpfHxmLmlzRW1wdHkoKSYmaShjLGgpLGQ9ZS54LHY9ZS55LG09ZnVuY3Rpb24oZSl7ZD1lLmNsaWVudFgsdj1lLmNsaWVudFl9LGc9ZnVuY3Rpb24oKXt2YXIgZT1hLnJlbmRlcmVyLnBpeGVsVG9TY3JlZW5Db29yZGluYXRlcyhkLHYpLHQ9eS5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24oZS5yb3csZS5jb2x1bW4pO2lmKGkodyxlKSYmaSh0LGYuc2VsZWN0aW9uTGVhZCkpcmV0dXJuO3c9ZSxhLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yVG9Qb3NpdGlvbih0KSxhLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGEucmVuZGVyZXIuc2Nyb2xsQ3Vyc29ySW50b1ZpZXcoKSxhLnJlbW92ZVNlbGVjdGlvbk1hcmtlcnMoeCkseD1mLnJlY3Rhbmd1bGFyUmFuZ2VCbG9jayh3LGIpLHguZm9yRWFjaChhLmFkZFNlbGVjdGlvbk1hcmtlcixhKSxhLnVwZGF0ZVNlbGVjdGlvbk1hcmtlcnMoKX0seT1hLnNlc3Npb24sYj1hLnJlbmRlcmVyLnBpeGVsVG9TY3JlZW5Db29yZGluYXRlcyhkLHYpLHc9YjtpZihvJiYhcyYmIW4mJnU9PTApe2lmKCFsJiZwKXJldHVybjtpZighbCl7dmFyIEU9Zi50b09yaWVudGVkUmFuZ2UoKTthLmFkZFNlbGVjdGlvbk1hcmtlcihFKX12YXIgUz1mLnJhbmdlTGlzdC5yYW5nZUF0UG9pbnQoYyk7ci5jYXB0dXJlKGEuY29udGFpbmVyLGZ1bmN0aW9uKCl7fSxmdW5jdGlvbigpe3ZhciBlPWYudG9PcmllbnRlZFJhbmdlKCk7UyYmZS5pc0VtcHR5KCkmJmkoUy5jdXJzb3IsZS5jdXJzb3IpP2Yuc3Vic3RyYWN0UG9pbnQoZS5jdXJzb3IpOihFJiYoYS5yZW1vdmVTZWxlY3Rpb25NYXJrZXIoRSksZi5hZGRSYW5nZShFKSksZi5hZGRSYW5nZShlKSl9KX1lbHNlIGlmKCFzJiZuJiZ1PT0wKXtlLnN0b3AoKSxsJiYhbz9mLnRvU2luZ2xlUmFuZ2UoKTohbCYmbyYmZi5hZGRSYW5nZSgpLGYubW92ZUN1cnNvclRvUG9zaXRpb24oYyksZi5jbGVhclNlbGVjdGlvbigpO3ZhciB4PVtdLFQ9ZnVuY3Rpb24oZSl7Y2xlYXJJbnRlcnZhbChDKSxhLnJlbW92ZVNlbGVjdGlvbk1hcmtlcnMoeCk7Zm9yKHZhciB0PTA7dDx4Lmxlbmd0aDt0KyspZi5hZGRSYW5nZSh4W3RdKX0sTj1nO3IuY2FwdHVyZShhLmNvbnRhaW5lcixtLFQpO3ZhciBDPXNldEludGVydmFsKGZ1bmN0aW9uKCl7TigpfSwyMCk7cmV0dXJuIGUucHJldmVudERlZmF1bHQoKX19dmFyIHI9ZSgiLi4vbGliL2V2ZW50Iik7dC5vbk1vdXNlRG93bj1zfSksZGVmaW5lKCJhY2UvY29tbWFuZHMvbXVsdGlfc2VsZWN0X2NvbW1hbmRzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2tleWJvYXJkL2hhc2hfaGFuZGxlciJdLGZ1bmN0aW9uKGUsdCxuKXt0LmRlZmF1bHRDb21tYW5kcz1be25hbWU6ImFkZEN1cnNvckFib3ZlIixleGVjOmZ1bmN0aW9uKGUpe2Uuc2VsZWN0TW9yZUxpbmVzKC0xKX0sYmluZEtleTp7d2luOiJDdHJsLUFsdC1VcCIsbWFjOiJDdHJsLUFsdC1VcCJ9LHJlYWRvbmx5OiEwfSx7bmFtZToiYWRkQ3Vyc29yQmVsb3ciLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZWxlY3RNb3JlTGluZXMoMSl9LGJpbmRLZXk6e3dpbjoiQ3RybC1BbHQtRG93biIsbWFjOiJDdHJsLUFsdC1Eb3duIn0scmVhZG9ubHk6ITB9LHtuYW1lOiJhZGRDdXJzb3JBYm92ZVNraXBDdXJyZW50IixleGVjOmZ1bmN0aW9uKGUpe2Uuc2VsZWN0TW9yZUxpbmVzKC0xLCEwKX0sYmluZEtleTp7d2luOiJDdHJsLUFsdC1TaGlmdC1VcCIsbWFjOiJDdHJsLUFsdC1TaGlmdC1VcCJ9LHJlYWRvbmx5OiEwfSx7bmFtZToiYWRkQ3Vyc29yQmVsb3dTa2lwQ3VycmVudCIsZXhlYzpmdW5jdGlvbihlKXtlLnNlbGVjdE1vcmVMaW5lcygxLCEwKX0sYmluZEtleTp7d2luOiJDdHJsLUFsdC1TaGlmdC1Eb3duIixtYWM6IkN0cmwtQWx0LVNoaWZ0LURvd24ifSxyZWFkb25seTohMH0se25hbWU6InNlbGVjdE1vcmVCZWZvcmUiLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZWxlY3RNb3JlKC0xKX0sYmluZEtleTp7d2luOiJDdHJsLUFsdC1MZWZ0IixtYWM6IkN0cmwtQWx0LUxlZnQifSxyZWFkb25seTohMH0se25hbWU6InNlbGVjdE1vcmVBZnRlciIsZXhlYzpmdW5jdGlvbihlKXtlLnNlbGVjdE1vcmUoMSl9LGJpbmRLZXk6e3dpbjoiQ3RybC1BbHQtUmlnaHQiLG1hYzoiQ3RybC1BbHQtUmlnaHQifSxyZWFkb25seTohMH0se25hbWU6InNlbGVjdE5leHRCZWZvcmUiLGV4ZWM6ZnVuY3Rpb24oZSl7ZS5zZWxlY3RNb3JlKC0xLCEwKX0sYmluZEtleTp7d2luOiJDdHJsLUFsdC1TaGlmdC1MZWZ0IixtYWM6IkN0cmwtQWx0LVNoaWZ0LUxlZnQifSxyZWFkb25seTohMH0se25hbWU6InNlbGVjdE5leHRBZnRlciIsZXhlYzpmdW5jdGlvbihlKXtlLnNlbGVjdE1vcmUoMSwhMCl9LGJpbmRLZXk6e3dpbjoiQ3RybC1BbHQtU2hpZnQtUmlnaHQiLG1hYzoiQ3RybC1BbHQtU2hpZnQtUmlnaHQifSxyZWFkb25seTohMH0se25hbWU6InNwbGl0SW50b0xpbmVzIixleGVjOmZ1bmN0aW9uKGUpe2UubXVsdGlTZWxlY3Quc3BsaXRJbnRvTGluZXMoKX0sYmluZEtleTp7d2luOiJDdHJsLVNoaWZ0LUwiLG1hYzoiQ3RybC1TaGlmdC1MIn0scmVhZG9ubHk6ITB9XSx0Lm11bHRpU2VsZWN0Q29tbWFuZHM9W3tuYW1lOiJzaW5nbGVTZWxlY3Rpb24iLGJpbmRLZXk6ImVzYyIsZXhlYzpmdW5jdGlvbihlKXtlLmV4aXRNdWx0aVNlbGVjdE1vZGUoKX0scmVhZG9ubHk6ITAsaXNBdmFpbGFibGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuaW5NdWx0aVNlbGVjdE1vZGV9fV07dmFyIHI9ZSgiLi4va2V5Ym9hcmQvaGFzaF9oYW5kbGVyIikuSGFzaEhhbmRsZXI7dC5rZXlib2FyZEhhbmRsZXI9bmV3IHIodC5tdWx0aVNlbGVjdENvbW1hbmRzKX0pLGRlZmluZSgiYWNlL3dvcmtlci93b3JrZXJfY2xpZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLCJhY2UvY29uZmlnIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLHM9ZSgiLi4vY29uZmlnIiksbz1mdW5jdGlvbih0LG4scil7dGhpcy5jaGFuZ2VMaXN0ZW5lcj10aGlzLmNoYW5nZUxpc3RlbmVyLmJpbmQodGhpcyk7aWYocy5nZXQoInBhY2thZ2VkIikpdGhpcy4kd29ya2VyPW5ldyBXb3JrZXIocy5tb2R1bGVVcmwobiwid29ya2VyIikpO2Vsc2V7dmFyIGk7dHlwZW9mIGUuc3VwcG9ydHMhPSJ1bmRlZmluZWQiJiZlLnN1cHBvcnRzLmluZGV4T2YoInVjanMyLXBpbmYtMCIpPj0wP2k9ZS5uYW1lVG9VcmwoImFjZS93b3JrZXIvd29ya2VyX3NvdXJjZW1pbnQiKTooZS5uYW1lVG9VcmwmJiFlLnRvVXJsJiYoZS50b1VybD1lLm5hbWVUb1VybCksaT10aGlzLiRub3JtYWxpemVQYXRoKGUudG9VcmwoImFjZS93b3JrZXIvd29ya2VyIixudWxsLCJfIikpKSx0aGlzLiR3b3JrZXI9bmV3IFdvcmtlcihpKTt2YXIgbz17fTtmb3IodmFyIHU9MDt1PHQubGVuZ3RoO3UrKyl7dmFyIGE9dFt1XSxmPXRoaXMuJG5vcm1hbGl6ZVBhdGgoZS50b1VybChhLG51bGwsIl8iKS5yZXBsYWNlKC8uanMoXD8uKik/JC8sIiIpKTtvW2FdPWZ9fXRoaXMuJHdvcmtlci5wb3N0TWVzc2FnZSh7aW5pdDohMCx0bG5zOm8sbW9kdWxlOm4sY2xhc3NuYW1lOnJ9KSx0aGlzLmNhbGxiYWNrSWQ9MSx0aGlzLmNhbGxiYWNrcz17fTt2YXIgbD10aGlzO3RoaXMuJHdvcmtlci5vbmVycm9yPWZ1bmN0aW9uKGUpe3Rocm93IHdpbmRvdy5jb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coZSksZX0sdGhpcy4kd29ya2VyLm9ubWVzc2FnZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGE7c3dpdGNoKHQudHlwZSl7Y2FzZSJsb2ciOndpbmRvdy5jb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2codC5kYXRhKTticmVhaztjYXNlImV2ZW50IjpsLl9lbWl0KHQubmFtZSx7ZGF0YTp0LmRhdGF9KTticmVhaztjYXNlImNhbGwiOnZhciBuPWwuY2FsbGJhY2tzW3QuaWRdO24mJihuKHQuZGF0YSksZGVsZXRlIGwuY2FsbGJhY2tzW3QuaWRdKX19fTsoZnVuY3Rpb24oKXtyLmltcGxlbWVudCh0aGlzLGkpLHRoaXMuJG5vcm1hbGl6ZVBhdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZS5yZXBsYWNlKC9eW2Etel0rOlwvXC9bXlwvXSsvLCIiKSxlPWxvY2F0aW9uLnByb3RvY29sKyIvLyIrbG9jYXRpb24uaG9zdCsoZS5jaGFyQXQoMCk9PSIvIj8iIjpsb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cL1teXC9dKiQvLCIiKSkrIi8iK2UucmVwbGFjZSgvXltcL10rLywiIiksZX0sdGhpcy50ZXJtaW5hdGU9ZnVuY3Rpb24oKXt0aGlzLl9lbWl0KCJ0ZXJtaW5hdGUiLHt9KSx0aGlzLiR3b3JrZXIudGVybWluYXRlKCksdGhpcy4kd29ya2VyPW51bGwsdGhpcy4kZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy5jaGFuZ2VMaXN0ZW5lciksdGhpcy4kZG9jPW51bGx9LHRoaXMuc2VuZD1mdW5jdGlvbihlLHQpe3RoaXMuJHdvcmtlci5wb3N0TWVzc2FnZSh7Y29tbWFuZDplLGFyZ3M6dH0pfSx0aGlzLmNhbGw9ZnVuY3Rpb24oZSx0LG4pe2lmKG4pe3ZhciByPXRoaXMuY2FsbGJhY2tJZCsrO3RoaXMuY2FsbGJhY2tzW3JdPW4sdC5wdXNoKHIpfXRoaXMuc2VuZChlLHQpfSx0aGlzLmVtaXQ9ZnVuY3Rpb24oZSx0KXt0cnl7dGhpcy4kd29ya2VyLnBvc3RNZXNzYWdlKHtldmVudDplLGRhdGE6e2RhdGE6dC5kYXRhfX0pfWNhdGNoKG4pe319LHRoaXMuYXR0YWNoVG9Eb2N1bWVudD1mdW5jdGlvbihlKXt0aGlzLiRkb2MmJnRoaXMudGVybWluYXRlKCksdGhpcy4kZG9jPWUsdGhpcy5jYWxsKCJzZXRWYWx1ZSIsW2UuZ2V0VmFsdWUoKV0pLGUub24oImNoYW5nZSIsdGhpcy5jaGFuZ2VMaXN0ZW5lcil9LHRoaXMuY2hhbmdlTGlzdGVuZXI9ZnVuY3Rpb24oZSl7ZS5yYW5nZT17c3RhcnQ6ZS5kYXRhLnJhbmdlLnN0YXJ0LGVuZDplLmRhdGEucmFuZ2UuZW5kfSx0aGlzLmVtaXQoImNoYW5nZSIsZSl9fSkuY2FsbChvLnByb3RvdHlwZSksdC5Xb3JrZXJDbGllbnQ9b30pLGRlZmluZSgiYWNlL2tleWJvYXJkL3N0YXRlX2hhbmRsZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gaShlKXt0aGlzLmtleW1hcHBpbmc9dGhpcy4kYnVpbGRLZXltYXBwaW5nUmVnZXgoZSl9dmFyIHI9ITE7aS5wcm90b3R5cGU9eyRidWlsZEtleW1hcHBpbmdSZWdleDpmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZSl0aGlzLiRidWlsZEJpbmRpbmdzUmVnZXgoZVt0XSk7cmV0dXJuIGV9LCRidWlsZEJpbmRpbmdzUmVnZXg6ZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Uua2V5P2Uua2V5PW5ldyBSZWdFeHAoIl4iK2Uua2V5KyIkIik6QXJyYXkuaXNBcnJheShlLnJlZ2V4KT8oImtleSJpbiBlfHwoZS5rZXk9bmV3IFJlZ0V4cCgiXiIrZS5yZWdleFsxXSsiJCIpKSxlLnJlZ2V4PW5ldyBSZWdFeHAoZS5yZWdleC5qb2luKCIiKSsiJCIpKTplLnJlZ2V4JiYoZS5yZWdleD1uZXcgUmVnRXhwKGUucmVnZXgrIiQiKSl9KX0sJGNvbXBvc2VCdWZmZXI6ZnVuY3Rpb24oZSx0LG4scil7aWYoZS5zdGF0ZT09bnVsbHx8ZS5idWZmZXI9PW51bGwpZS5zdGF0ZT0ic3RhcnQiLGUuYnVmZmVyPSIiO3ZhciBpPVtdO3QmMSYmaS5wdXNoKCJjdHJsIiksdCY4JiZpLnB1c2goImNvbW1hbmQiKSx0JjImJmkucHVzaCgib3B0aW9uIiksdCY0JiZpLnB1c2goInNoaWZ0IiksbiYmaS5wdXNoKG4pO3ZhciBzPWkuam9pbigiLSIpLG89ZS5idWZmZXIrczt0IT0yJiYoZS5idWZmZXI9byk7dmFyIHU9e2J1ZmZlclRvVXNlOm8sc3ltYm9saWNOYW1lOnN9O3JldHVybiByJiYodS5rZXlJZGVudGlmaWVyPXIua2V5SWRlbnRpZmllciksdX0sJGZpbmQ6ZnVuY3Rpb24oZSx0LG4saSxzLG8pe3ZhciB1PXt9O3JldHVybiB0aGlzLmtleW1hcHBpbmdbZS5zdGF0ZV0uc29tZShmdW5jdGlvbihhKXt2YXIgZjtpZihhLmtleSYmIWEua2V5LnRlc3QobikpcmV0dXJuITE7aWYoYS5yZWdleCYmIShmPWEucmVnZXguZXhlYyh0KSkpcmV0dXJuITE7aWYoYS5tYXRjaCYmIWEubWF0Y2godCxpLHMsbixvKSlyZXR1cm4hMTtpZihhLmRpc2FsbG93TWF0Y2hlcylmb3IodmFyIGw9MDtsPGEuZGlzYWxsb3dNYXRjaGVzLmxlbmd0aDtsKyspaWYoISFmW2EuZGlzYWxsb3dNYXRjaGVzW2xdXSlyZXR1cm4hMTtpZihhLmV4ZWMpe3UuY29tbWFuZD1hLmV4ZWM7aWYoYS5wYXJhbXMpe3ZhciBjO3UuYXJncz17fSxhLnBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UubWF0Y2ghPW51bGwmJmYhPW51bGw/Yz1mW2UubWF0Y2hdfHxlLmRlZmF1bHRWYWx1ZTpjPWUuZGVmYXVsdFZhbHVlLGUudHlwZT09PSJudW1iZXIiJiYoYz1wYXJzZUludChjKSksdS5hcmdzW2UubmFtZV09Y30pfWUuYnVmZmVyPSIifXJldHVybiBhLnRoZW4mJihlLnN0YXRlPWEudGhlbixlLmJ1ZmZlcj0iIiksdS5jb21tYW5kPT1udWxsJiYodS5jb21tYW5kPSJudWxsIiksciYmY29uc29sZS5sb2coIktleWJvYXJkU3RhdGVNYXBwZXIjZmluZCIsYSksITB9KSx1LmNvbW1hbmQ/dTooZS5idWZmZXI9IiIsITEpfSxoYW5kbGVLZXlib2FyZDpmdW5jdGlvbihlLHQsbixpLHMpe3Q9PS0xJiYodD0wKTtpZih0PT0wfHxuIT0iIiYmbiE9U3RyaW5nLmZyb21DaGFyQ29kZSgwKSl7dmFyIG89dGhpcy4kY29tcG9zZUJ1ZmZlcihlLHQsbixzKSx1PW8uYnVmZmVyVG9Vc2UsYT1vLnN5bWJvbGljTmFtZSxmPW8ua2V5SWRlbnRpZmllcjtyZXR1cm4gbz10aGlzLiRmaW5kKGUsdSxhLHQsbixmKSxyJiZjb25zb2xlLmxvZygiS2V5Ym9hcmRTdGF0ZU1hcHBlciNtYXRjaCIsdSxhLG8pLG99cmV0dXJuIG51bGx9fSx0Lm1hdGNoQ2hhcmFjdGVyT25seT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdD09MD8hMDp0PT00JiZuLmxlbmd0aD09MT8hMDohMX0sdC5TdGF0ZUhhbmRsZXI9aX0pLGRlZmluZSgiYWNlL3BsYWNlaG9sZGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIiwiYWNlL2xpYi9vb3AiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9yYW5nZSIpLlJhbmdlLGk9ZSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixzPWUoIi4vbGliL29vcCIpLG89ZnVuY3Rpb24oZSx0LG4scixpLHMpe3ZhciBvPXRoaXM7dGhpcy5sZW5ndGg9dCx0aGlzLnNlc3Npb249ZSx0aGlzLmRvYz1lLmdldERvY3VtZW50KCksdGhpcy5tYWluQ2xhc3M9aSx0aGlzLm90aGVyc0NsYXNzPXMsdGhpcy4kb25VcGRhdGU9dGhpcy5vblVwZGF0ZS5iaW5kKHRoaXMpLHRoaXMuZG9jLm9uKCJjaGFuZ2UiLHRoaXMuJG9uVXBkYXRlKSx0aGlzLiRvdGhlcnM9cix0aGlzLiRvbkN1cnNvckNoYW5nZT1mdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtvLm9uQ3Vyc29yQ2hhbmdlKCl9KX0sdGhpcy4kcG9zPW47dmFyIHU9ZS5nZXRVbmRvTWFuYWdlcigpLiR1bmRvU3RhY2t8fGUuZ2V0VW5kb01hbmFnZXIoKS4kdW5kb3N0YWNrfHx7bGVuZ3RoOi0xfTt0aGlzLiR1bmRvU3RhY2tEZXB0aD11Lmxlbmd0aCx0aGlzLnNldHVwKCksZS5zZWxlY3Rpb24ub24oImNoYW5nZUN1cnNvciIsdGhpcy4kb25DdXJzb3JDaGFuZ2UpfTsoZnVuY3Rpb24oKXtzLmltcGxlbWVudCh0aGlzLGkpLHRoaXMuc2V0dXA9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5kb2Msbj10aGlzLnNlc3Npb24saT10aGlzLiRwb3M7dGhpcy5wb3M9dC5jcmVhdGVBbmNob3IoaS5yb3csaS5jb2x1bW4pLHRoaXMubWFya2VySWQ9bi5hZGRNYXJrZXIobmV3IHIoaS5yb3csaS5jb2x1bW4saS5yb3csaS5jb2x1bW4rdGhpcy5sZW5ndGgpLHRoaXMubWFpbkNsYXNzLG51bGwsITEpLHRoaXMucG9zLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKHQpe24ucmVtb3ZlTWFya2VyKGUubWFya2VySWQpLGUubWFya2VySWQ9bi5hZGRNYXJrZXIobmV3IHIodC52YWx1ZS5yb3csdC52YWx1ZS5jb2x1bW4sdC52YWx1ZS5yb3csdC52YWx1ZS5jb2x1bW4rZS5sZW5ndGgpLGUubWFpbkNsYXNzLG51bGwsITEpfSksdGhpcy5vdGhlcnM9W10sdGhpcy4kb3RoZXJzLmZvckVhY2goZnVuY3Rpb24obil7dmFyIHI9dC5jcmVhdGVBbmNob3Iobi5yb3csbi5jb2x1bW4pO2Uub3RoZXJzLnB1c2gocil9KSxuLnNldFVuZG9TZWxlY3QoITEpfSx0aGlzLnNob3dPdGhlck1hcmtlcnM9ZnVuY3Rpb24oKXtpZih0aGlzLm90aGVyc0FjdGl2ZSlyZXR1cm47dmFyIGU9dGhpcy5zZXNzaW9uLHQ9dGhpczt0aGlzLm90aGVyc0FjdGl2ZT0hMCx0aGlzLm90aGVycy5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ubWFya2VySWQ9ZS5hZGRNYXJrZXIobmV3IHIobi5yb3csbi5jb2x1bW4sbi5yb3csbi5jb2x1bW4rdC5sZW5ndGgpLHQub3RoZXJzQ2xhc3MsbnVsbCwhMSksbi5vbigiY2hhbmdlIixmdW5jdGlvbihpKXtlLnJlbW92ZU1hcmtlcihuLm1hcmtlcklkKSxuLm1hcmtlcklkPWUuYWRkTWFya2VyKG5ldyByKGkudmFsdWUucm93LGkudmFsdWUuY29sdW1uLGkudmFsdWUucm93LGkudmFsdWUuY29sdW1uK3QubGVuZ3RoKSx0Lm90aGVyc0NsYXNzLG51bGwsITEpfSl9KX0sdGhpcy5oaWRlT3RoZXJNYXJrZXJzPWZ1bmN0aW9uKCl7aWYoIXRoaXMub3RoZXJzQWN0aXZlKXJldHVybjt0aGlzLm90aGVyc0FjdGl2ZT0hMTtmb3IodmFyIGU9MDtlPHRoaXMub3RoZXJzLmxlbmd0aDtlKyspdGhpcy5zZXNzaW9uLnJlbW92ZU1hcmtlcih0aGlzLm90aGVyc1tlXS5tYXJrZXJJZCl9LHRoaXMub25VcGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhLG49dC5yYW5nZTtpZihuLnN0YXJ0LnJvdyE9PW4uZW5kLnJvdylyZXR1cm47aWYobi5zdGFydC5yb3chPT10aGlzLnBvcy5yb3cpcmV0dXJuO2lmKHRoaXMuJHVwZGF0aW5nKXJldHVybjt0aGlzLiR1cGRhdGluZz0hMDt2YXIgaT10LmFjdGlvbj09PSJpbnNlcnRUZXh0Ij9uLmVuZC5jb2x1bW4tbi5zdGFydC5jb2x1bW46bi5zdGFydC5jb2x1bW4tbi5lbmQuY29sdW1uO2lmKG4uc3RhcnQuY29sdW1uPj10aGlzLnBvcy5jb2x1bW4mJm4uc3RhcnQuY29sdW1uPD10aGlzLnBvcy5jb2x1bW4rdGhpcy5sZW5ndGgrMSl7dmFyIHM9bi5zdGFydC5jb2x1bW4tdGhpcy5wb3MuY29sdW1uO3RoaXMubGVuZ3RoKz1pO2lmKCF0aGlzLnNlc3Npb24uJGZyb21VbmRvKXtpZih0LmFjdGlvbj09PSJpbnNlcnRUZXh0Iilmb3IodmFyIG89dGhpcy5vdGhlcnMubGVuZ3RoLTE7bz49MDtvLS0pe3ZhciB1PXRoaXMub3RoZXJzW29dLGE9e3Jvdzp1LnJvdyxjb2x1bW46dS5jb2x1bW4rc307dS5yb3c9PT1uLnN0YXJ0LnJvdyYmbi5zdGFydC5jb2x1bW48dS5jb2x1bW4mJihhLmNvbHVtbis9aSksdGhpcy5kb2MuaW5zZXJ0KGEsdC50ZXh0KX1lbHNlIGlmKHQuYWN0aW9uPT09InJlbW92ZVRleHQiKWZvcih2YXIgbz10aGlzLm90aGVycy5sZW5ndGgtMTtvPj0wO28tLSl7dmFyIHU9dGhpcy5vdGhlcnNbb10sYT17cm93OnUucm93LGNvbHVtbjp1LmNvbHVtbitzfTt1LnJvdz09PW4uc3RhcnQucm93JiZuLnN0YXJ0LmNvbHVtbjx1LmNvbHVtbiYmKGEuY29sdW1uKz1pKSx0aGlzLmRvYy5yZW1vdmUobmV3IHIoYS5yb3csYS5jb2x1bW4sYS5yb3csYS5jb2x1bW4taSkpfW4uc3RhcnQuY29sdW1uPT09dGhpcy5wb3MuY29sdW1uJiZ0LmFjdGlvbj09PSJpbnNlcnRUZXh0Ij9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpcy5wb3Muc2V0UG9zaXRpb24odGhpcy5wb3Mucm93LHRoaXMucG9zLmNvbHVtbi1pKTtmb3IodmFyIGU9MDtlPHRoaXMub3RoZXJzLmxlbmd0aDtlKyspe3ZhciB0PXRoaXMub3RoZXJzW2VdLHI9e3Jvdzp0LnJvdyxjb2x1bW46dC5jb2x1bW4taX07dC5yb3c9PT1uLnN0YXJ0LnJvdyYmbi5zdGFydC5jb2x1bW48dC5jb2x1bW4mJihyLmNvbHVtbis9aSksdC5zZXRQb3NpdGlvbihyLnJvdyxyLmNvbHVtbil9fS5iaW5kKHRoaXMpLDApOm4uc3RhcnQuY29sdW1uPT09dGhpcy5wb3MuY29sdW1uJiZ0LmFjdGlvbj09PSJyZW1vdmVUZXh0IiYmc2V0VGltZW91dChmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dGhpcy5vdGhlcnMubGVuZ3RoO2UrKyl7dmFyIHQ9dGhpcy5vdGhlcnNbZV07dC5yb3c9PT1uLnN0YXJ0LnJvdyYmbi5zdGFydC5jb2x1bW48dC5jb2x1bW4mJnQuc2V0UG9zaXRpb24odC5yb3csdC5jb2x1bW4taSl9fS5iaW5kKHRoaXMpLDApfXRoaXMucG9zLl9lbWl0KCJjaGFuZ2UiLHt2YWx1ZTp0aGlzLnBvc30pO2Zvcih2YXIgbz0wO288dGhpcy5vdGhlcnMubGVuZ3RoO28rKyl0aGlzLm90aGVyc1tvXS5fZW1pdCgiY2hhbmdlIix7dmFsdWU6dGhpcy5vdGhlcnNbb119KX10aGlzLiR1cGRhdGluZz0hMX0sdGhpcy5vbkN1cnNvckNoYW5nZT1mdW5jdGlvbihlKXtpZih0aGlzLiR1cGRhdGluZylyZXR1cm47dmFyIHQ9dGhpcy5zZXNzaW9uLnNlbGVjdGlvbi5nZXRDdXJzb3IoKTt0LnJvdz09PXRoaXMucG9zLnJvdyYmdC5jb2x1bW4+PXRoaXMucG9zLmNvbHVtbiYmdC5jb2x1bW48PXRoaXMucG9zLmNvbHVtbit0aGlzLmxlbmd0aD8odGhpcy5zaG93T3RoZXJNYXJrZXJzKCksdGhpcy5fZW1pdCgiY3Vyc29yRW50ZXIiLGUpKToodGhpcy5oaWRlT3RoZXJNYXJrZXJzKCksdGhpcy5fZW1pdCgiY3Vyc29yTGVhdmUiLGUpKX0sdGhpcy5kZXRhY2g9ZnVuY3Rpb24oKXt0aGlzLnNlc3Npb24ucmVtb3ZlTWFya2VyKHRoaXMubWFya2VySWQpLHRoaXMuaGlkZU90aGVyTWFya2VycygpLHRoaXMuZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy4kb25VcGRhdGUpLHRoaXMuc2Vzc2lvbi5zZWxlY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlQ3Vyc29yIix0aGlzLiRvbkN1cnNvckNoYW5nZSksdGhpcy5wb3MuZGV0YWNoKCk7Zm9yKHZhciBlPTA7ZTx0aGlzLm90aGVycy5sZW5ndGg7ZSsrKXRoaXMub3RoZXJzW2VdLmRldGFjaCgpO3RoaXMuc2Vzc2lvbi5zZXRVbmRvU2VsZWN0KCEwKX0sdGhpcy5jYW5jZWw9ZnVuY3Rpb24oKXtpZih0aGlzLiR1bmRvU3RhY2tEZXB0aD09PS0xKXRocm93IEVycm9yKCJDYW5jZWxpbmcgcGxhY2Vob2xkZXJzIG9ubHkgc3VwcG9ydGVkIHdpdGggdW5kbyBtYW5hZ2VyIGF0dGFjaGVkIHRvIHNlc3Npb24uIik7dmFyIGU9dGhpcy5zZXNzaW9uLmdldFVuZG9NYW5hZ2VyKCksdD0oZS4kdW5kb1N0YWNrfHxlLiR1bmRvc3RhY2spLmxlbmd0aC10aGlzLiR1bmRvU3RhY2tEZXB0aDtmb3IodmFyIG49MDtuPHQ7bisrKWUudW5kbyghMCl9fSkuY2FsbChvLnByb3RvdHlwZSksdC5QbGFjZUhvbGRlcj1vfSksZGVmaW5lKCJhY2UvdGhlbWUvdGV4dG1hdGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJ0ZXh0IWFjZS90aGVtZS90ZXh0bWF0ZS5jc3MiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmlzRGFyaz0hMSx0LmNzc0NsYXNzPSJhY2UtdG0iLHQuY3NzVGV4dD1lKCJ0ZXh0IS4vdGV4dG1hdGUuY3NzIik7dmFyIHI9ZSgiLi4vbGliL2RvbSIpO3IuaW1wb3J0Q3NzU3RyaW5nKHQuY3NzVGV4dCx0LmNzc0NsYXNzKX0pLGRlZmluZSgidGV4dCFhY2UvdGhlbWUvdGV4dG1hdGUuY3NzIixbXSwiLmFjZS10bSAuYWNlX2VkaXRvciB7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHJnYigxNTksIDE1OSwgMTU5KTtcbn1cblxuLmFjZS10bSAuYWNlX2VkaXRvci5hY2VfZm9jdXMge1xuICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO1xufVxuXG4uYWNlLXRtIC5hY2VfZ3V0dGVyIHtcbiAgYmFja2dyb3VuZDogI2YwZjBmMDtcbiAgY29sb3I6ICMzMzM7XG59XG5cbi5hY2UtdG0gLmFjZV9wcmludF9tYXJnaW4ge1xuICB3aWR0aDogMXB4O1xuICBiYWNrZ3JvdW5kOiAjZThlOGU4O1xufVxuXG4uYWNlLXRtIC5hY2VfZm9sZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzZCNzJFNjtcbn1cblxuLmFjZS10bSAuYWNlX3RleHQtbGF5ZXIge1xufVxuXG4uYWNlLXRtIC5hY2VfY3Vyc29yIHtcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCBibGFjaztcbn1cblxuLmFjZS10bSAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHtcbiAgYm9yZGVyLWxlZnQ6IDBweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrO1xufVxuICAgICAgICBcbi5hY2UtdG0gLmFjZV9saW5lIC5hY2VfaW52aXNpYmxlIHtcbiAgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTtcbn1cblxuLmFjZS10bSAuYWNlX2xpbmUgLmFjZV9zdG9yYWdlLFxuLmFjZS10bSAuYWNlX2xpbmUgLmFjZV9rZXl3b3JkIHtcbiAgY29sb3I6IGJsdWU7XG59XG5cbi5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29uc3RhbnQge1xuICBjb2xvcjogcmdiKDE5NywgNiwgMTEpO1xufVxuXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9idWlsZGluIHtcbiAgY29sb3I6IHJnYig4OCwgNzIsIDI0Nik7XG59XG5cbi5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX2xhbmd1YWdlIHtcbiAgY29sb3I6IHJnYig4OCwgOTIsIDI0Nik7XG59XG5cbi5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX2xpYnJhcnkge1xuICBjb2xvcjogcmdiKDYsIDE1MCwgMTQpO1xufVxuXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX2ludmFsaWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMCwgMCwgMC4xKTtcbiAgY29sb3I6IHJlZDtcbn1cblxuLmFjZS10bSAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV9mdW5jdGlvbiB7XG4gIGNvbG9yOiByZ2IoNjAsIDc2LCAxMTQpO1xufVxuXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX3N1cHBvcnQuYWNlX2NvbnN0YW50IHtcbiAgY29sb3I6IHJnYig2LCAxNTAsIDE0KTtcbn1cblxuLmFjZS10bSAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV90eXBlLFxuLmFjZS10bSAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV9jbGFzcyB7XG4gIGNvbG9yOiByZ2IoMTA5LCAxMjEsIDIyMik7XG59XG5cbi5hY2UtdG0gLmFjZV9saW5lIC5hY2Vfa2V5d29yZC5hY2Vfb3BlcmF0b3Ige1xuICBjb2xvcjogcmdiKDEwNCwgMTE4LCAxMzUpO1xufVxuXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX3N0cmluZyB7XG4gIGNvbG9yOiByZ2IoMywgMTA2LCA3KTtcbn1cblxuLmFjZS10bSAuYWNlX2xpbmUgLmFjZV9jb21tZW50IHtcbiAgY29sb3I6IHJnYig3NiwgMTM2LCAxMDcpO1xufVxuXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX2NvbW1lbnQuYWNlX2RvYyB7XG4gIGNvbG9yOiByZ2IoMCwgMTAyLCAyNTUpO1xufVxuXG4uYWNlLXRtIC5hY2VfbGluZSAuYWNlX2NvbW1lbnQuYWNlX2RvYy5hY2VfdGFnIHtcbiAgY29sb3I6IHJnYigxMjgsIDE1OSwgMTkxKTtcbn1cblxuLmFjZS10bSAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7XG4gIGNvbG9yOiByZ2IoMCwgMCwgMjA1KTtcbn1cblxuLmFjZS10bSAuYWNlX2xpbmUgLmFjZV92YXJpYWJsZSB7XG4gIGNvbG9yOiByZ2IoNDksIDEzMiwgMTQ5KTtcbn1cblxuLmFjZS10bSAuYWNlX2xpbmUgLmFjZV94bWxfcGUge1xuICBjb2xvcjogcmdiKDEwNCwgMTA0LCA5MSk7XG59XG5cbi5hY2UtdG0gLmFjZV9lbnRpdHkuYWNlX25hbWUuYWNlX2Z1bmN0aW9uIHtcbiAgY29sb3I6ICMwMDAwQTI7XG59XG5cbi5hY2UtdG0gLmFjZV9tYXJrdXAuYWNlX21hcmt1cGluZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtcbn1cblxuLmFjZS10bSAuYWNlX21hcmt1cC5hY2VfaGVhZGluZyB7XG4gIGNvbG9yOiByZ2IoMTIsIDcsIDI1NSk7XG59XG5cbi5hY2UtdG0gLmFjZV9tYXJrdXAuYWNlX2xpc3Qge1xuICBjb2xvcjpyZ2IoMTg1LCA2LCAxNDQpO1xufVxuXG4uYWNlLXRtIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHtcbiAgYmFja2dyb3VuZDogcmdiKDE4MSwgMjEzLCAyNTUpO1xufVxuLmFjZS10bS5tdWx0aXNlbGVjdCAuYWNlX3NlbGVjdGlvbi5zdGFydCB7XG4gIGJveC1zaGFkb3c6IDAgMCAzcHggMHB4IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG59XG4uYWNlLXRtIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RlcCB7XG4gIGJhY2tncm91bmQ6IHJnYigyNTIsIDI1NSwgMCk7XG59XG5cbi5hY2UtdG0gLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGFjayB7XG4gIGJhY2tncm91bmQ6IHJnYigxNjQsIDIyOSwgMTAxKTtcbn1cblxuLmFjZS10bSAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQge1xuICBtYXJnaW46IC0xcHggMCAwIC0xcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYigxOTIsIDE5MiwgMTkyKTtcbn1cblxuLmFjZS10bSAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjA3KTtcbn1cblxuLmFjZS10bSAuYWNlX2d1dHRlcl9hY3RpdmVfbGluZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvciA6ICNkY2RjZGM7XG59XG5cbi5hY2UtdG0gLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHtcbiAgYmFja2dyb3VuZDogcmdiKDI1MCwgMjUwLCAyNTUpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjAwLCAyMDAsIDI1MCk7XG59XG5cbi5hY2UtdG0gLmFjZV9tZXRhLmFjZV90YWcge1xuICBjb2xvcjpyZ2IoMCwgNTAsIDE5OCk7XG59XG5cbi5hY2UtdG0gLmFjZV9zdHJpbmcuYWNlX3JlZ2V4IHtcbiAgY29sb3I6IHJnYigyNTUsIDAsIDApXG59Iik7CiAgICAgICAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5yZXF1aXJlKFsiYWNlL2FjZSJdLCBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAgICAgYSAmJiBhLmNvbmZpZy5pbml0KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF3aW5kb3cuYWNlKQogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuYWNlID0ge307CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGEpIGlmIChhLmhhc093blByb3BlcnR5KGtleSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGFjZVtrZXldID0gYVtrZXldOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pKCk7CiAgICAgICAg]]></data>
	</file>
	<file>
	  <filename>/ace/src/keybinding-emacs.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2Uva2V5Ym9hcmQvZW1hY3MiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSIsImFjZS9rZXlib2FyZC9oYXNoX2hhbmRsZXIiLCJhY2UvbGliL2tleXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL2RvbSIpLGk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnNjcm9sbGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9TWF0aC5mbG9vcigoZSt0aGlzLnNjcm9sbExlZnQtbi5sZWZ0LXRoaXMuJHBhZGRpbmctci5nZXRQYWdlU2Nyb2xsTGVmdCgpKS90aGlzLmNoYXJhY3RlcldpZHRoKSxzPU1hdGguZmxvb3IoKHQrdGhpcy5zY3JvbGxUb3Atbi50b3Atci5nZXRQYWdlU2Nyb2xsVG9wKCkpL3RoaXMubGluZUhlaWdodCk7cmV0dXJuIHRoaXMuc2Vzc2lvbi5zY3JlZW5Ub0RvY3VtZW50UG9zaXRpb24ocyxpKX0scz1lKCIuL2hhc2hfaGFuZGxlciIpLkhhc2hIYW5kbGVyO3QuaGFuZGxlcj1uZXcgczt2YXIgbz0hMTt0LmhhbmRsZXIuYXR0YWNoPWZ1bmN0aW9uKGUpe298fChvPSEwLHIuaW1wb3J0Q3NzU3RyaW5nKCIgICAgICAgICAgICAuZW1hY3MtbW9kZSAuYWNlX2N1cnNvcnsgICAgICAgICAgICAgICAgYm9yZGVyOiAycHggcmdiYSg1MCwyNTAsNTAsMC44KSBzb2xpZCFpbXBvcnRhbnQ7ICAgICAgICAgICAgICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveCFpbXBvcnRhbnQ7ICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ghaW1wb3J0YW50OyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMjUwLDAsMC45KTsgICAgICAgICAgICAgICAgb3BhY2l0eTogMC41OyAgICAgICAgICAgIH0gICAgICAgICAgICAuZW1hY3MtbW9kZSAuYWNlX2N1cnNvci5hY2VfaGlkZGVueyAgICAgICAgICAgICAgICBvcGFjaXR5OiAxOyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgICAgICAgICAgICB9ICAgICAgICAgICAgLmVtYWNzLW1vZGUgLmFjZV9jdXJzb3IuYWNlX292ZXJ3cml0ZSB7ICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7ICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDAgMCAycHggMnB4ICFpbXBvcnRhbnQ7ICAgICAgICAgICAgfSAgICAgICAgICAgIC5lbWFjcy1tb2RlIC5hY2VfdGV4dC1sYXllciB7ICAgICAgICAgICAgICAgIHotaW5kZXg6IDQgICAgICAgICAgICB9ICAgICAgICAgICAgLmVtYWNzLW1vZGUgLmFjZV9jdXJzb3ItbGF5ZXIgeyAgICAgICAgICAgICAgICB6LWluZGV4OiAyICAgICAgICAgICAgfSIsImVtYWNzTW9kZSIpKSxlLnJlbmRlcmVyLnNjcmVlblRvVGV4dENvb3JkaW5hdGVzPWksZS5zZXRTdHlsZSgiZW1hY3MtbW9kZSIpfSx0LmhhbmRsZXIuZGV0YWNoPWZ1bmN0aW9uKGUpe2RlbGV0ZSBlLnJlbmRlcmVyLnNjcmVlblRvVGV4dENvb3JkaW5hdGVzLGUudW5zZXRTdHlsZSgiZW1hY3MtbW9kZSIpfTt2YXIgdT1lKCIuLi9saWIva2V5cyIpLktFWV9NT0RTLGE9e0M6ImN0cmwiLFM6InNoaWZ0IixNOiJhbHQifTtbIlMtQy1NIiwiUy1DIiwiUy1NIiwiQy1NIiwiUyIsIkMiLCJNIl0uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD0wO2Uuc3BsaXQoIi0iKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3R8PXVbYVtlXV19KSxhW3RdPWUudG9Mb3dlckNhc2UoKSsiLSJ9KSx0LmhhbmRsZXIuYmluZEtleT1mdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjt2YXIgbj10aGlzLmNvbW1tYW5kS2V5QmluZGluZztlLnNwbGl0KCJ8IikuZm9yRWFjaChmdW5jdGlvbihlKXtlPWUudG9Mb3dlckNhc2UoKSxuW2VdPXQsZT1lLnNwbGl0KCIgIilbMF0sbltlXXx8KG5bZV09Im51bGwiKX0sdGhpcyl9LHQuaGFuZGxlci5oYW5kbGVLZXlib2FyZD1mdW5jdGlvbihlLHQsbixyKXtpZih0PT0tMSYmZS5jb3VudCl7dmFyIGk9QXJyYXkoZS5jb3VudCsxKS5qb2luKG4pO3JldHVybiBlLmNvdW50PW51bGwse2NvbW1hbmQ6Imluc2VydHN0cmluZyIsYXJnczppfX1pZihuPT0iXDAiKXJldHVybjt2YXIgcz1hW3RdO2lmKHM9PSJjLSJ8fGUudW5pdmVyc2FsQXJndW1lbnQpe3ZhciBvPXBhcnNlSW50KG5bbi5sZW5ndGgtMV0pO2lmKG8pcmV0dXJuIGUuY291bnQ9byx7Y29tbWFuZDoibnVsbCJ9fWUudW5pdmVyc2FsQXJndW1lbnQ9ITEscyYmKG49cytuKSxlLmtleUNoYWluJiYobj1lLmtleUNoYWluKz0iICIrbik7dmFyIHU9dGhpcy5jb21tbWFuZEtleUJpbmRpbmdbbl07ZS5rZXlDaGFpbj11PT0ibnVsbCI/bjoiIjtpZighdSlyZXR1cm47aWYodT09Im51bGwiKXJldHVybntjb21tYW5kOiJudWxsIn07aWYodT09InVuaXZlcnNhbEFyZ3VtZW50IilyZXR1cm4gZS51bml2ZXJzYWxBcmd1bWVudD0hMCx7Y29tbWFuZDoibnVsbCJ9O2lmKHR5cGVvZiB1IT0ic3RyaW5nIil7dmFyIGY9dS5hcmdzO3U9dS5jb21tYW5kfXR5cGVvZiB1PT0ic3RyaW5nIiYmKHU9dGhpcy5jb21tYW5kc1t1XXx8ZS5lZGl0b3IuY29tbWFuZHMuY29tbWFuZHNbdV0pLCF1LnJlYWRvbmx5JiYhdS5pc1lhbmsmJihlLmxhc3RDb21tYW5kPW51bGwpO2lmKGUuY291bnQpe3ZhciBvPWUuY291bnQ7cmV0dXJuIGUuY291bnQ9MCx7YXJnczpmLGNvbW1hbmQ6e2V4ZWM6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPG87bisrKXUuZXhlYyhlLHQpfX19fXJldHVybntjb21tYW5kOnUsYXJnczpmfX0sdC5lbWFjc0tleXM9eyJVcHxDLXAiOiJnb2xpbmV1cCIsIkRvd258Qy1uIjoiZ29saW5lZG93biIsIkxlZnR8Qy1iIjoiZ290b2xlZnQiLCJSaWdodHxDLWYiOiJnb3RvcmlnaHQiLCJDLUxlZnR8TS1iIjoiZ290b3dvcmRsZWZ0IiwiQy1SaWdodHxNLWYiOiJnb3Rvd29yZHJpZ2h0IiwiSG9tZXxDLWEiOiJnb3RvbGluZXN0YXJ0IiwiRW5kfEMtZSI6ImdvdG9saW5lZW5kIiwiQy1Ib21lfFMtTS0sIjoiZ290b3N0YXJ0IiwiQy1FbmR8Uy1NLS4iOiJnb3RvZW5kIiwiUy1VcHxTLUMtcCI6InNlbGVjdHVwIiwiUy1Eb3dufFMtQy1uIjoic2VsZWN0ZG93biIsIlMtTGVmdHxTLUMtYiI6InNlbGVjdGxlZnQiLCJTLVJpZ2h0fFMtQy1mIjoic2VsZWN0cmlnaHQiLCJTLUMtTGVmdHxTLU0tYiI6InNlbGVjdHdvcmRsZWZ0IiwiUy1DLVJpZ2h0fFMtTS1mIjoic2VsZWN0d29yZHJpZ2h0IiwiUy1Ib21lfFMtQy1hIjoic2VsZWN0dG9saW5lc3RhcnQiLCJTLUVuZHxTLUMtZSI6InNlbGVjdHRvbGluZWVuZCIsIlMtQy1Ib21lIjoic2VsZWN0dG9zdGFydCIsIlMtQy1FbmQiOiJzZWxlY3R0b2VuZCIsIkMtbHxNLXMiOiJjZW50ZXJzZWxlY3Rpb24iLCJNLWciOiJnb3RvbGluZSIsIkMteCBDLXAiOiJzZWxlY3RhbGwiLCJDLURvd24iOiJnb3RvcGFnZWRvd24iLCJDLVVwIjoiZ290b3BhZ2V1cCIsIlBhZ2VEb3dufEMtdiI6ImdvdG9wYWdlZG93biIsIlBhZ2VVcHxNLXYiOiJnb3RvcGFnZXVwIiwiUy1DLURvd24iOiJzZWxlY3RwYWdlZG93biIsIlMtQy1VcCI6InNlbGVjdHBhZ2V1cCIsIkMtcyI6ImZpbmRuZXh0IiwiQy1yIjoiZmluZHByZXZpb3VzIiwiTS1DLXMiOiJmaW5kbmV4dCIsIk0tQy1yIjoiZmluZHByZXZpb3VzIiwiUy1NLTUiOiJyZXBsYWNlIixCYWNrc3BhY2U6ImJhY2tzcGFjZSIsIkRlbGV0ZXxDLWQiOiJkZWwiLCJSZXR1cm58Qy1tIjp7Y29tbWFuZDoiaW5zZXJ0c3RyaW5nIixhcmdzOiJcbiJ9LCJDLW8iOiJzcGxpdGxpbmUiLCJNLWR8Qy1EZWxldGUiOntjb21tYW5kOiJraWxsV29yZCIsYXJnczoicmlnaHQifSwiQy1CYWNrc3BhY2V8TS1CYWNrc3BhY2V8TS1EZWxldGUiOntjb21tYW5kOiJraWxsV29yZCIsYXJnczoibGVmdCJ9LCJDLWsiOiJraWxsTGluZSIsIkMteXxTLURlbGV0ZSI6InlhbmsiLCJNLXkiOiJ5YW5rUm90YXRlIiwiQy1nIjoia2V5Ym9hcmRRdWl0IiwiQy13Ijoia2lsbFJlZ2lvbiIsIk0tdyI6ImtpbGxSaW5nU2F2ZSIsIkMtU3BhY2UiOiJzZXRNYXJrIiwiQy14IEMteCI6ImV4Y2hhbmdlUG9pbnRBbmRNYXJrIiwiQy10IjoidHJhbnNwb3NlbGV0dGVycyIsIk0tdSI6InRvdXBwZXJjYXNlIiwiTS1sIjoidG9sb3dlcmNhc2UiLCJNLS8iOiJhdXRvY29tcGxldGUiLCJDLXUiOiJ1bml2ZXJzYWxBcmd1bWVudCIsIk0tOyI6InRvZ2dsZWNvbW1lbnQiLCJDLS98Qy14IHV8Uy1DLS18Qy16IjoidW5kbyIsIlMtQy0vfFMtQy14IHV8Qy0tfFMtQy16IjoicmVkbyIsIkMteCByIjoic2VsZWN0UmVjdGFuZ3VsYXJSZWdpb24ifSx0LmhhbmRsZXIuYmluZEtleXModC5lbWFjc0tleXMpLHQuaGFuZGxlci5hZGRDb21tYW5kcyh7c2VsZWN0UmVjdGFuZ3VsYXJSZWdpb246ZnVuY3Rpb24oZSl7ZS5tdWx0aVNlbGVjdC50b2dnbGVCbG9ja1NlbGVjdGlvbigpfSxzZXRNYXJrOmZ1bmN0aW9uKCl7fSxleGNoYW5nZVBvaW50QW5kTWFyazp7ZXhlYzpmdW5jdGlvbihlKXt2YXIgdD1lLnNlbGVjdGlvbi5nZXRSYW5nZSgpO2Uuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKHQsIWUuc2VsZWN0aW9uLmlzQmFja3dhcmRzKCkpfSxyZWFkb25seTohMCxtdWx0aXNlbGVjdEFjdGlvbjoiZm9yRWFjaCJ9LGtpbGxXb3JkOntleGVjOmZ1bmN0aW9uKGUsbil7ZS5jbGVhclNlbGVjdGlvbigpLG49PSJsZWZ0Ij9lLnNlbGVjdGlvbi5zZWxlY3RXb3JkTGVmdCgpOmUuc2VsZWN0aW9uLnNlbGVjdFdvcmRSaWdodCgpO3ZhciByPWUuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxpPWUuc2Vzc2lvbi5nZXRUZXh0UmFuZ2Uocik7dC5raWxsUmluZy5hZGQoaSksZS5zZXNzaW9uLnJlbW92ZShyKSxlLmNsZWFyU2VsZWN0aW9uKCl9LG11bHRpc2VsZWN0QWN0aW9uOiJmb3JFYWNoIn0sa2lsbExpbmU6ZnVuY3Rpb24oZSl7ZS5zZWxlY3Rpb24uc2VsZWN0TGluZSgpO3ZhciBuPWUuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxyPWUuc2Vzc2lvbi5nZXRUZXh0UmFuZ2Uobik7dC5raWxsUmluZy5hZGQociksZS5zZXNzaW9uLnJlbW92ZShuKSxlLmNsZWFyU2VsZWN0aW9uKCl9LHlhbms6ZnVuY3Rpb24oZSl7ZS5vblBhc3RlKHQua2lsbFJpbmcuZ2V0KCkpLGUua2V5QmluZGluZy4kZGF0YS5sYXN0Q29tbWFuZD0ieWFuayJ9LHlhbmtSb3RhdGU6ZnVuY3Rpb24oZSl7aWYoZS5rZXlCaW5kaW5nLiRkYXRhLmxhc3RDb21tYW5kIT0ieWFuayIpcmV0dXJuO2UudW5kbygpLGUub25QYXN0ZSh0LmtpbGxSaW5nLnJvdGF0ZSgpKSxlLmtleUJpbmRpbmcuJGRhdGEubGFzdENvbW1hbmQ9InlhbmsifSxraWxsUmVnaW9uOmZ1bmN0aW9uKGUpe3Qua2lsbFJpbmcuYWRkKGUuZ2V0Q29weVRleHQoKSksZS5jdXQoKX0sa2lsbFJpbmdTYXZlOmZ1bmN0aW9uKGUpe3Qua2lsbFJpbmcuYWRkKGUuZ2V0Q29weVRleHQoKSl9fSk7dmFyIGY9dC5oYW5kbGVyLmNvbW1hbmRzO2YueWFuay5pc1lhbms9ITAsZi55YW5rUm90YXRlLmlzWWFuaz0hMCx0LmtpbGxSaW5nPXskZGF0YTpbXSxhZGQ6ZnVuY3Rpb24oZSl7ZSYmdGhpcy4kZGF0YS5wdXNoKGUpLHRoaXMuJGRhdGEubGVuZ3RoPjMwJiZ0aGlzLiRkYXRhLnNoaWZ0KCl9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRkYXRhW3RoaXMuJGRhdGEubGVuZ3RoLTFdfHwiIn0scG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGRhdGEubGVuZ3RoPjEmJnRoaXMuJGRhdGEucG9wKCksdGhpcy5nZXQoKX0scm90YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGRhdGEudW5zaGlmdCh0aGlzLiRkYXRhLnBvcCgpKSx0aGlzLmdldCgpfX19KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/keybinding-vim.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2Uva2V5Ym9hcmQvdmltIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9rZXlzIiwiYWNlL2tleWJvYXJkL3ZpbS9jb21tYW5kcyIsImFjZS9rZXlib2FyZC92aW0vbWFwcy91dGlsIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9rZXlzIiksaT1lKCIuL3ZpbS9jb21tYW5kcyIpLHM9aS5jb3JlQ29tbWFuZHMsbz1lKCIuL3ZpbS9tYXBzL3V0aWwiKSx1PXtpOntjb21tYW5kOnMuc3RhcnR9LEk6e2NvbW1hbmQ6cy5zdGFydEJlZ2lubmluZ30sYTp7Y29tbWFuZDpzLmFwcGVuZH0sQTp7Y29tbWFuZDpzLmFwcGVuZEVuZH0sImN0cmwtZiI6e2NvbW1hbmQ6ImdvdG9wYWdlZG93biJ9LCJjdHJsLWIiOntjb21tYW5kOiJnb3RvcGFnZXVwIn19O3QuaGFuZGxlcj17aGFuZGxlS2V5Ym9hcmQ6ZnVuY3Rpb24oZSx0LG4scixvKXtpZih0IT0wJiYobj09IiJ8fG49PSJcMCIpKXJldHVybiBudWxsO3Q9PTEmJihuPSJjdHJsLSIrbik7aWYoZS5zdGF0ZT09InN0YXJ0Iil7aWYodD09LTF8fHQ9PTEpcmV0dXJuIGkuaW5wdXRCdWZmZXIuaWRsZSYmdVtuXT91W25dOntjb21tYW5kOntleGVjOmZ1bmN0aW9uKGUpe2kuaW5wdXRCdWZmZXIucHVzaChlLG4pfX19O2lmKG4ubGVuZ3RoPT0xJiYodD09MHx8dD09NCkpcmV0dXJue2NvbW1hbmQ6Im51bGwiLHBhc3NFdmVudDohMH07aWYobj09ImVzYyIpcmV0dXJue2NvbW1hbmQ6cy5zdG9wfX1lbHNle2lmKG49PSJlc2MifHxuPT0iY3RybC1bIilyZXR1cm4gZS5zdGF0ZT0ic3RhcnQiLHtjb21tYW5kOnMuc3RvcH07aWYobj09ImN0cmwtdyIpcmV0dXJue2NvbW1hbmQ6InJlbW92ZXdvcmRsZWZ0In19fSxhdHRhY2g6ZnVuY3Rpb24oZSl7ZS5vbigiY2xpY2siLHQub25DdXJzb3JNb3ZlKSxvLmN1cnJlbnRNb2RlIT09Imluc2VydCImJmkuY29yZUNvbW1hbmRzLnN0b3AuZXhlYyhlKX0sZGV0YWNoOmZ1bmN0aW9uKGUpe2UucmVtb3ZlTGlzdGVuZXIoImNsaWNrIix0Lm9uQ3Vyc29yTW92ZSksby5ub01vZGUoZSksby5jdXJyZW50TW9kZT0ibm9ybWFsIn0sYWN0aW9uczppLmFjdGlvbnN9LHQub25DdXJzb3JNb3ZlPWZ1bmN0aW9uKGUpe2kub25DdXJzb3JNb3ZlKGUuZWRpdG9yLGUpLHQub25DdXJzb3JNb3ZlLnNjaGVkdWxlZD0hMX19KSxkZWZpbmUoImFjZS9rZXlib2FyZC92aW0vY29tbWFuZHMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2Uva2V5Ym9hcmQvdmltL21hcHMvdXRpbCIsImFjZS9rZXlib2FyZC92aW0vbWFwcy9tb3Rpb25zIiwiYWNlL2tleWJvYXJkL3ZpbS9tYXBzL29wZXJhdG9ycyIsImFjZS9rZXlib2FyZC92aW0vbWFwcy9hbGlhc2VzIiwiYWNlL2tleWJvYXJkL3ZpbS9yZWdpc3RlcnMiXSxmdW5jdGlvbihlLHQsbil7Im5ldmVyIHVzZSBzdHJpY3QiO2Z1bmN0aW9uIGcoZSl7bS5wcmV2aW91cz17YWN0aW9uOnthY3Rpb246e2ZuOmV9fX19dmFyIHI9ZSgiLi9tYXBzL3V0aWwiKSxpPWUoIi4vbWFwcy9tb3Rpb25zIikscz1lKCIuL21hcHMvb3BlcmF0b3JzIiksbz1lKCIuL21hcHMvYWxpYXNlcyIpLHU9ZSgiLi9yZWdpc3RlcnMiKSxhPTEsZj0yLGw9MyxjPTQsaD04LHA9ZnVuY3Rpb24odCxuLHIpe3doaWxlKDA8bi0tKXQuYXBwbHkodGhpcyxyKX0sZD1mdW5jdGlvbihlKXt2YXIgdD1lLnJlbmRlcmVyLG49dC4kY3Vyc29yTGF5ZXIuZ2V0UGl4ZWxQb3NpdGlvbigpLHI9bi50b3AsaT1oKnQubGF5ZXJDb25maWcubGluZUhlaWdodDsyKmk+dC4kc2l6ZS5zY3JvbGxlckhlaWdodCYmKGk9dC4kc2l6ZS5zY3JvbGxlckhlaWdodC8yKSx0LnNjcm9sbFRvcD5yLWkmJnQuc2Vzc2lvbi5zZXRTY3JvbGxUb3Aoci1pKSx0LnNjcm9sbFRvcCt0LiRzaXplLnNjcm9sbGVySGVpZ2h0PHIraSt0LmxpbmVIZWlnaHQmJnQuc2Vzc2lvbi5zZXRTY3JvbGxUb3AocitpK3QubGluZUhlaWdodC10LiRzaXplLnNjcm9sbGVySGVpZ2h0KX0sdj10LmFjdGlvbnM9e3o6e3BhcmFtOiEwLGZuOmZ1bmN0aW9uKGUsdCxuLHIpe3N3aXRjaChyKXtjYXNlInoiOmUuYWxpZ25DdXJzb3IobnVsbCwuNSk7YnJlYWs7Y2FzZSJ0IjplLmFsaWduQ3Vyc29yKG51bGwsMCk7YnJlYWs7Y2FzZSJiIjplLmFsaWduQ3Vyc29yKG51bGwsMSl9fX0scjp7cGFyYW06ITAsZm46ZnVuY3Rpb24oZSx0LG4scil7ciYmci5sZW5ndGgmJihwKGZ1bmN0aW9uKCl7ZS5pbnNlcnQocil9LG58fDEpLGUubmF2aWdhdGVMZWZ0KCkpfX0sUjp7Zm46ZnVuY3Rpb24oZSx0LG4saSl7ci5pbnNlcnRNb2RlKGUpLGUuc2V0T3ZlcndyaXRlKCEwKX19LCJ+Ijp7Zm46ZnVuY3Rpb24oZSx0LG4pe3AoZnVuY3Rpb24oKXt2YXIgdD1lLnNlbGVjdGlvbi5nZXRSYW5nZSgpO3QuaXNFbXB0eSgpJiZ0LmVuZC5jb2x1bW4rKzt2YXIgbj1lLnNlc3Npb24uZ2V0VGV4dFJhbmdlKHQpLHI9bi50b1VwcGVyQ2FzZSgpO3I9PW4/ZS5uYXZpZ2F0ZVJpZ2h0KCk6ZS5zZXNzaW9uLnJlcGxhY2UodCxyKX0sbnx8MSl9fSwiKiI6e2ZuOmZ1bmN0aW9uKGUsdCxuLHIpe2Uuc2VsZWN0aW9uLnNlbGVjdFdvcmQoKSxlLmZpbmROZXh0KCksZChlKTt2YXIgaT1lLnNlbGVjdGlvbi5nZXRSYW5nZSgpO2Uuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKGksITApfX0sIiMiOntmbjpmdW5jdGlvbihlLHQsbixyKXtlLnNlbGVjdGlvbi5zZWxlY3RXb3JkKCksZS5maW5kUHJldmlvdXMoKSxkKGUpO3ZhciBpPWUuc2VsZWN0aW9uLmdldFJhbmdlKCk7ZS5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UoaSwhMCl9fSxuOntmbjpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT1lLmdldExhc3RTZWFyY2hPcHRpb25zKCk7aS5iYWNrd2FyZHM9ITEsZS5zZWxlY3Rpb24ubW92ZUN1cnNvclJpZ2h0KCksZS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxlLmZpbmROZXh0KGkpLGQoZSk7dmFyIHM9ZS5zZWxlY3Rpb24uZ2V0UmFuZ2UoKTtzLmVuZC5yb3c9cy5zdGFydC5yb3cscy5lbmQuY29sdW1uPXMuc3RhcnQuY29sdW1uLGUuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKHMsITApfX0sTjp7Zm46ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ZS5nZXRMYXN0U2VhcmNoT3B0aW9ucygpO2kuYmFja3dhcmRzPSEwLGUuZmluZFByZXZpb3VzKGkpLGQoZSk7dmFyIHM9ZS5zZWxlY3Rpb24uZ2V0UmFuZ2UoKTtzLmVuZC5yb3c9cy5zdGFydC5yb3cscy5lbmQuY29sdW1uPXMuc3RhcnQuY29sdW1uLGUuc2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKHMsITApfX0sdjp7Zm46ZnVuY3Rpb24oZSx0LG4saSl7ZS5zZWxlY3Rpb24uc2VsZWN0UmlnaHQoKSxyLnZpc3VhbE1vZGUoZSwhMSl9LGFjY2VwdHNNb3Rpb246ITB9LFY6e2ZuOmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBzPWUuZ2V0Q3Vyc29yUG9zaXRpb24oKS5yb3c7ZS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxlLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yVG8ocywwKSxlLnNlbGVjdGlvbi5zZWxlY3RMaW5lRW5kKCksZS5zZWxlY3Rpb24udmlzdWFsTGluZVN0YXJ0PXMsci52aXN1YWxNb2RlKGUsITApfSxhY2NlcHRzTW90aW9uOiEwfSxZOntmbjpmdW5jdGlvbihlLHQsbixpKXtyLmNvcHlMaW5lKGUpfX0scDp7Zm46ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dS5fZGVmYXVsdDtlLnNldE92ZXJ3cml0ZSghMSk7aWYoaS5pc0xpbmUpe3ZhciBzPWUuZ2V0Q3Vyc29yUG9zaXRpb24oKSxvPWkudGV4dC5zcGxpdCgiXG4iKTtlLnNlc3Npb24uZ2V0RG9jdW1lbnQoKS5pbnNlcnRMaW5lcyhzLnJvdysxLG8pLGUubW92ZUN1cnNvclRvKHMucm93KzEsMCl9ZWxzZSBlLm5hdmlnYXRlUmlnaHQoKSxlLmluc2VydChpLnRleHQpLGUubmF2aWdhdGVMZWZ0KCk7ZS5zZXRPdmVyd3JpdGUoITApLGUuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCl9fSxQOntmbjpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT11Ll9kZWZhdWx0O2Uuc2V0T3ZlcndyaXRlKCExKTtpZihpLmlzTGluZSl7dmFyIHM9ZS5nZXRDdXJzb3JQb3NpdGlvbigpLG89aS50ZXh0LnNwbGl0KCJcbiIpO2Uuc2Vzc2lvbi5nZXREb2N1bWVudCgpLmluc2VydExpbmVzKHMucm93LG8pLGUubW92ZUN1cnNvclRvKHMucm93LDApfWVsc2UgZS5pbnNlcnQoaS50ZXh0KTtlLnNldE92ZXJ3cml0ZSghMCksZS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKX19LEo6e2ZuOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPWUuc2Vzc2lvbjt0PWUuZ2V0U2VsZWN0aW9uUmFuZ2UoKTt2YXIgcz17cm93OnQuc3RhcnQucm93LGNvbHVtbjp0LnN0YXJ0LmNvbHVtbn07bj1ufHx0LmVuZC5yb3ctdC5zdGFydC5yb3c7dmFyIG89TWF0aC5taW4ocy5yb3crKG58fDEpLGkuZ2V0TGVuZ3RoKCktMSk7dC5zdGFydC5jb2x1bW49aS5nZXRMaW5lKHMucm93KS5sZW5ndGgsdC5lbmQuY29sdW1uPWkuZ2V0TGluZShvKS5sZW5ndGgsdC5lbmQucm93PW87dmFyIHU9IiI7Zm9yKHZhciBhPXMucm93O2E8bzthKyspe3ZhciBmPWkuZ2V0TGluZShhKzEpO3UrPSIgIisvXlxzKiguKikkLy5leGVjKGYpWzFdfHwiIn1pLnJlcGxhY2UodCx1KSxlLm1vdmVDdXJzb3JUbyhzLnJvdyxzLmNvbHVtbil9fSx1OntmbjpmdW5jdGlvbihlLHQsbixyKXtuPXBhcnNlSW50KG58fDEsMTApO2Zvcih2YXIgaT0wO2k8bjtpKyspZS51bmRvKCk7ZS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKX19LCJjdHJsLXIiOntmbjpmdW5jdGlvbihlLHQsbixyKXtuPXBhcnNlSW50KG58fDEsMTApO2Zvcih2YXIgaT0wO2k8bjtpKyspZS5yZWRvKCk7ZS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKX19LCI6Ijp7Zm46ZnVuY3Rpb24oZSx0LG4scil7fX0sIi8iOntmbjpmdW5jdGlvbihlLHQsbixyKXt9fSwiPyI6e2ZuOmZ1bmN0aW9uKGUsdCxuLHIpe319LCIuIjp7Zm46ZnVuY3Rpb24oZSx0LG4saSl7ci5vbkluc2VydFJlcGxheVNlcXVlbmNlPW0ubGFzdEluc2VydENvbW1hbmRzO3ZhciBzPW0ucHJldmlvdXM7cyYmbS5leGVjKGUscy5hY3Rpb24scy5wYXJhbSl9fX0sbT10LmlucHV0QnVmZmVyPXthY2NlcHRpbmc6W2EsZixsLGNdLGN1cnJlbnRDbWQ6bnVsbCxjdXJyZW50Q291bnQ6IiIsb3BlcmF0b3I6bnVsbCxtb3Rpb246bnVsbCxsYXN0SW5zZXJ0Q29tbWFuZHM6W10scHVzaDpmdW5jdGlvbihlLHQsbil7dGhpcy5pZGxlPSExO3ZhciByPXRoaXMud2FpdGluZ0ZvclBhcmFtO2lmKHIpdGhpcy5leGVjKGUscix0KTtlbHNlIGlmKHQ9PT0iMCImJiF0aGlzLmN1cnJlbnRDb3VudC5sZW5ndGh8fCF0Lm1hdGNoKC9eXGQrJC8pfHwhdGhpcy5pc0FjY2VwdGluZyhhKSlpZighdGhpcy5vcGVyYXRvciYmdGhpcy5pc0FjY2VwdGluZyhmKSYmc1t0XSl0aGlzLm9wZXJhdG9yPXsiY2hhciI6dCxjb3VudDp0aGlzLmdldENvdW50KCl9LHRoaXMuY3VycmVudENtZD1mLHRoaXMuYWNjZXB0aW5nPVthLGwsY10sdGhpcy5leGVjKGUse29wZXJhdG9yOnRoaXMub3BlcmF0b3J9KTtlbHNlIGlmKGlbdF0mJnRoaXMuaXNBY2NlcHRpbmcobCkpe3RoaXMuY3VycmVudENtZD1sO3ZhciB1PXtvcGVyYXRvcjp0aGlzLm9wZXJhdG9yLG1vdGlvbjp7ImNoYXIiOnQsY291bnQ6dGhpcy5nZXRDb3VudCgpfX07aVt0XS5wYXJhbT90aGlzLndhaXRGb3JQYXJhbSh1KTp0aGlzLmV4ZWMoZSx1KX1lbHNlIGlmKG9bdF0mJnRoaXMuaXNBY2NlcHRpbmcobCkpb1t0XS5vcGVyYXRvci5jb3VudD10aGlzLmdldENvdW50KCksdGhpcy5leGVjKGUsb1t0XSk7ZWxzZSBpZih2W3RdJiZ0aGlzLmlzQWNjZXB0aW5nKGMpKXt2YXIgaD17YWN0aW9uOntmbjp2W3RdLmZuLGNvdW50OnRoaXMuZ2V0Q291bnQoKX19O3ZbdF0ucGFyYW0/dGhpcy53YWl0Rm9yUGFyYW0oaCk6dGhpcy5leGVjKGUsaCksdlt0XS5hY2NlcHRzTW90aW9uJiYodGhpcy5pZGxlPSExKX1lbHNlIHRoaXMub3BlcmF0b3I/dGhpcy5leGVjKGUse29wZXJhdG9yOnRoaXMub3BlcmF0b3J9LHQpOnRoaXMucmVzZXQoKTtlbHNlIHRoaXMuY3VycmVudENvdW50Kz10LHRoaXMuY3VycmVudENtZD1hLHRoaXMuYWNjZXB0aW5nPVthLGYsbCxjXX0sd2FpdEZvclBhcmFtOmZ1bmN0aW9uKGUpe3RoaXMud2FpdGluZ0ZvclBhcmFtPWV9LGdldENvdW50OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jdXJyZW50Q291bnQ7cmV0dXJuIHRoaXMuY3VycmVudENvdW50PSIiLGUmJnBhcnNlSW50KGUsMTApfSxleGVjOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz10Lm1vdGlvbix1PXQub3BlcmF0b3IsYT10LmFjdGlvbjtufHwobj10LnBhcmFtKSx1JiYodGhpcy5wcmV2aW91cz17YWN0aW9uOnQscGFyYW06bn0pO2lmKHUmJiFlLnNlbGVjdGlvbi5pc0VtcHR5KCkpe3NbdS5jaGFyXS5zZWxGbiYmKHNbdS5jaGFyXS5zZWxGbihlLGUuZ2V0U2VsZWN0aW9uUmFuZ2UoKSx1LmNvdW50LG4pLHRoaXMucmVzZXQoKSk7cmV0dXJufWlmKCFvJiYhYSYmdSYmbilzW3UuY2hhcl0uZm4oZSxudWxsLHUuY291bnQsbiksdGhpcy5yZXNldCgpO2Vsc2UgaWYobyl7dmFyIGY9ZnVuY3Rpb24odCl7dCYmdHlwZW9mIHQ9PSJmdW5jdGlvbiImJihvLmNvdW50JiYhbC5oYW5kbGVzQ291bnQ/cCh0LG8uY291bnQsW2UsbnVsbCxvLmNvdW50LG5dKTp0KGUsbnVsbCxvLmNvdW50LG4pKX0sbD1pW28uY2hhcl0sYz1sLnNlbDt1P2MmJnAoZnVuY3Rpb24oKXtmKGwuc2VsKSxzW3UuY2hhcl0uZm4oZSxlLmdldFNlbGVjdGlvblJhbmdlKCksdS5jb3VudCxuKX0sdS5jb3VudHx8MSk6KHIub25WaXN1YWxNb2RlfHxyLm9uVmlzdWFsTGluZU1vZGUpJiZjP2YobC5zZWwpOmYobC5uYXYpLHRoaXMucmVzZXQoKX1lbHNlIGEmJihhLmZuKGUsZS5nZXRTZWxlY3Rpb25SYW5nZSgpLGEuY291bnQsbiksdGhpcy5yZXNldCgpKTt5KGUpfSxpc0FjY2VwdGluZzpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hY2NlcHRpbmcuaW5kZXhPZihlKSE9PS0xfSxyZXNldDpmdW5jdGlvbigpe3RoaXMub3BlcmF0b3I9bnVsbCx0aGlzLm1vdGlvbj1udWxsLHRoaXMuY3VycmVudENvdW50PSIiLHRoaXMuYWNjZXB0aW5nPVthLGYsbCxjXSx0aGlzLmlkbGU9ITAsdGhpcy53YWl0aW5nRm9yUGFyYW09bnVsbH19O3QuY29yZUNvbW1hbmRzPXtzdGFydDp7ZXhlYzpmdW5jdGlvbiBiKGUpe3IuaW5zZXJ0TW9kZShlKSxnKGIpfX0sc3RhcnRCZWdpbm5pbmc6e2V4ZWM6ZnVuY3Rpb24gdyhlKXtlLm5hdmlnYXRlTGluZVN0YXJ0KCksci5pbnNlcnRNb2RlKGUpLGcodyl9fSxzdG9wOntleGVjOmZ1bmN0aW9uKHQpe20ucmVzZXQoKSxyLm9uVmlzdWFsTW9kZT0hMSxyLm9uVmlzdWFsTGluZU1vZGU9ITEsbS5sYXN0SW5zZXJ0Q29tbWFuZHM9ci5ub3JtYWxNb2RlKHQpfX0sYXBwZW5kOntleGVjOmZ1bmN0aW9uIEUoZSl7dmFyIHQ9ZS5nZXRDdXJzb3JQb3NpdGlvbigpLG49ZS5zZXNzaW9uLmdldExpbmUodC5yb3cpLmxlbmd0aDtuJiZlLm5hdmlnYXRlUmlnaHQoKSxyLmluc2VydE1vZGUoZSksZyhFKX19LGFwcGVuZEVuZDp7ZXhlYzpmdW5jdGlvbiBTKGUpe2UubmF2aWdhdGVMaW5lRW5kKCksci5pbnNlcnRNb2RlKGUpLGcoUyl9fX07dmFyIHk9dC5vbkN1cnNvck1vdmU9ZnVuY3Rpb24oZSx0KXtpZihyLmN1cnJlbnRNb2RlPT09Imluc2VydCJ8fHkucnVubmluZylyZXR1cm47aWYoIWUuc2VsZWN0aW9uLmlzRW1wdHkoKSl7eS5ydW5uaW5nPSEwO2lmKHIub25WaXN1YWxMaW5lTW9kZSl7dmFyIG49ZS5zZWxlY3Rpb24udmlzdWFsTGluZVN0YXJ0LGk9ZS5nZXRDdXJzb3JQb3NpdGlvbigpLnJvdztpZihuPD1pKXt2YXIgcz1lLnNlc3Npb24uZ2V0TGluZShpKTtlLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGUuc2VsZWN0aW9uLm1vdmVDdXJzb3JUbyhuLDApLGUuc2VsZWN0aW9uLnNlbGVjdFRvKGkscy5sZW5ndGgpfWVsc2V7dmFyIHM9ZS5zZXNzaW9uLmdldExpbmUobik7ZS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxlLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yVG8obixzLmxlbmd0aCksZS5zZWxlY3Rpb24uc2VsZWN0VG8oaSwwKX19eS5ydW5uaW5nPSExO3JldHVybn10JiYoci5vblZpc3VhbExpbmVNb2RlfHxyLm9uVmlzdWFsTW9kZSkmJihlLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLHIubm9ybWFsTW9kZShlKSkseS5ydW5uaW5nPSEwO3ZhciBvPWUuZ2V0Q3Vyc29yUG9zaXRpb24oKSx1PWUuc2Vzc2lvbi5nZXRMaW5lKG8ucm93KS5sZW5ndGg7dSYmby5jb2x1bW49PT11JiZlLm5hdmlnYXRlTGVmdCgpLHkucnVubmluZz0hMX19KSxkZWZpbmUoImFjZS9rZXlib2FyZC92aW0vbWFwcy91dGlsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2tleWJvYXJkL3ZpbS9yZWdpc3RlcnMiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9yZWdpc3RlcnMiKSxpPWUoIi4uLy4uLy4uL2xpYi9kb20iKTtpLmltcG9ydENzc1N0cmluZygiLmluc2VydC1tb2RlLiBhY2VfY3Vyc29yeyAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICMzMzMzMzM7fS5hY2VfZGFyay5pbnNlcnQtbW9kZSAuYWNlX2N1cnNvcnsgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjZWVlZWVlO30ubm9ybWFsLW1vZGUgLmFjZV9jdXJzb3J7ICAgIGJvcmRlcjogMCFpbXBvcnRhbnQ7ICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsgICAgb3BhY2l0eTogMC41O30iLCJ2aW1Nb2RlIiksbi5leHBvcnRzPXtvblZpc3VhbE1vZGU6ITEsb25WaXN1YWxMaW5lTW9kZTohMSxjdXJyZW50TW9kZToibm9ybWFsIixub01vZGU6ZnVuY3Rpb24oZSl7ZS51bnNldFN0eWxlKCJpbnNlcnQtbW9kZSIpLGUudW5zZXRTdHlsZSgibm9ybWFsLW1vZGUiKSxlLmNvbW1hbmRzLnJlY29yZGluZyYmZS5jb21tYW5kcy50b2dnbGVSZWNvcmRpbmcoKSxlLnNldE92ZXJ3cml0ZSghMSl9LGluc2VydE1vZGU6ZnVuY3Rpb24oZSl7dGhpcy5jdXJyZW50TW9kZT0iaW5zZXJ0IixlLnNldFN0eWxlKCJpbnNlcnQtbW9kZSIpLGUudW5zZXRTdHlsZSgibm9ybWFsLW1vZGUiKSxlLnNldE92ZXJ3cml0ZSghMSksZS5rZXlCaW5kaW5nLiRkYXRhLmJ1ZmZlcj0iIixlLmtleUJpbmRpbmcuJGRhdGEuc3RhdGU9Imluc2VydE1vZGUiLHRoaXMub25WaXN1YWxNb2RlPSExLHRoaXMub25WaXN1YWxMaW5lTW9kZT0hMSx0aGlzLm9uSW5zZXJ0UmVwbGF5U2VxdWVuY2U/KGUuY29tbWFuZHMubWFjcm89dGhpcy5vbkluc2VydFJlcGxheVNlcXVlbmNlLGUuY29tbWFuZHMucmVwbGF5KGUpLHRoaXMub25JbnNlcnRSZXBsYXlTZXF1ZW5jZT1udWxsLHRoaXMubm9ybWFsTW9kZShlKSk6KGUuX2VtaXQoInZpbU1vZGUiLCJpbnNlcnQiKSxlLmNvbW1hbmRzLnJlY29yZGluZ3x8ZS5jb21tYW5kcy50b2dnbGVSZWNvcmRpbmcoKSl9LG5vcm1hbE1vZGU6ZnVuY3Rpb24oZSl7dGhpcy5jdXJyZW50TW9kZT0ibm9ybWFsIixlLnVuc2V0U3R5bGUoImluc2VydC1tb2RlIiksZS5zZXRTdHlsZSgibm9ybWFsLW1vZGUiKSxlLmNsZWFyU2VsZWN0aW9uKCk7dmFyIHQ7cmV0dXJuIGUuZ2V0T3ZlcndyaXRlKCl8fCh0PWUuZ2V0Q3Vyc29yUG9zaXRpb24oKSx0LmNvbHVtbj4wJiZlLm5hdmlnYXRlTGVmdCgpKSxlLnNldE92ZXJ3cml0ZSghMCksZS5rZXlCaW5kaW5nLiRkYXRhLmJ1ZmZlcj0iIixlLmtleUJpbmRpbmcuJGRhdGEuc3RhdGU9InN0YXJ0Iix0aGlzLm9uVmlzdWFsTW9kZT0hMSx0aGlzLm9uVmlzdWFsTGluZU1vZGU9ITEsZS5fZW1pdCgiY2hhbmdlVmltTW9kZSIsIm5vcm1hbCIpLGUuY29tbWFuZHMucmVjb3JkaW5nPyhlLmNvbW1hbmRzLnRvZ2dsZVJlY29yZGluZygpLGUuY29tbWFuZHMubWFjcm8pOltdfSx2aXN1YWxNb2RlOmZ1bmN0aW9uKGUsdCl7aWYodGhpcy5vblZpc3VhbExpbmVNb2RlJiZ0fHx0aGlzLm9uVmlzdWFsTW9kZSYmIXQpe3RoaXMubm9ybWFsTW9kZShlKTtyZXR1cm59ZS5zZXRTdHlsZSgiaW5zZXJ0LW1vZGUiKSxlLnVuc2V0U3R5bGUoIm5vcm1hbC1tb2RlIiksZS5fZW1pdCgiY2hhbmdlVmltTW9kZSIsInZpc3VhbCIpLHQ/dGhpcy5vblZpc3VhbExpbmVNb2RlPSEwOih0aGlzLm9uVmlzdWFsTW9kZT0hMCx0aGlzLm9uVmlzdWFsTGluZU1vZGU9ITEpfSxnZXRSaWdodE50aENoYXI6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ZS5nZXRTZXNzaW9uKCkuZ2V0TGluZSh0LnJvdykscz1pLnN1YnN0cih0LmNvbHVtbisxKS5zcGxpdChuKTtyZXR1cm4gcjxzLmxlbmd0aD9zLnNsaWNlKDAscikuam9pbihuKS5sZW5ndGg6bnVsbH0sZ2V0TGVmdE50aENoYXI6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ZS5nZXRTZXNzaW9uKCkuZ2V0TGluZSh0LnJvdykscz1pLnN1YnN0cigwLHQuY29sdW1uKS5zcGxpdChuKTtyZXR1cm4gcjxzLmxlbmd0aD9zLnNsaWNlKC0xKnIpLmpvaW4obikubGVuZ3RoOm51bGx9LHRvUmVhbENoYXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubGVuZ3RoPT09MT9lOi9ec2hpZnQtLi8udGVzdChlKT9lW2UubGVuZ3RoLTFdLnRvVXBwZXJDYXNlKCk6IiJ9LGNvcHlMaW5lOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0Q3Vyc29yUG9zaXRpb24oKTtlLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGUubW92ZUN1cnNvclRvKHQucm93LHQuY29sdW1uKSxlLnNlbGVjdGlvbi5zZWxlY3RMaW5lKCksci5fZGVmYXVsdC5pc0xpbmU9ITAsci5fZGVmYXVsdC50ZXh0PWUuZ2V0Q29weVRleHQoKS5yZXBsYWNlKC9cbiQvLCIiKSxlLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGUubW92ZUN1cnNvclRvKHQucm93LHQuY29sdW1uKX19fSksZGVmaW5lKCJhY2Uva2V5Ym9hcmQvdmltL3JlZ2lzdGVycyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXsibmV2ZXIgdXNlIHN0cmljdCI7bi5leHBvcnRzPXtfZGVmYXVsdDp7dGV4dDoiIixpc0xpbmU6ITF9fX0pLCJ1c2Ugc3RyaWN0IixkZWZpbmUoImFjZS9rZXlib2FyZC92aW0vbWFwcy9tb3Rpb25zIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2tleWJvYXJkL3ZpbS9tYXBzL3V0aWwiLCJhY2Uvc2VhcmNoIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHMoZSx0KXtpZih0PT0iZXh0ZW5kIil2YXIgbj0hMDtlbHNlIHZhciByPXQ7dGhpcy5uYXY9ZnVuY3Rpb24odCl7dmFyIG49ZSh0KTtpZighbilyZXR1cm47aWYoIW4uZW5kKXZhciBpPW47ZWxzZSBpZihyKXZhciBpPW4uc3RhcnQ7ZWxzZSB2YXIgaT1uLmVuZDt0LmNsZWFyU2VsZWN0aW9uKCksdC5tb3ZlQ3Vyc29yVG8oaS5yb3csaS5jb2x1bW4pfSx0aGlzLnNlbD1mdW5jdGlvbih0KXt2YXIgaT1lKHQpO2lmKCFpKXJldHVybjtpZihuKXJldHVybiB0LnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShpKTtpZighaS5lbmQpdmFyIHM9aTtlbHNlIGlmKHIpdmFyIHM9aS5zdGFydDtlbHNlIHZhciBzPWkuZW5kO3Quc2VsZWN0aW9uLnNlbGVjdFRvKHMucm93LHMuY29sdW1uKX19ZnVuY3Rpb24gaChlLHQsbil7cmV0dXJuIGMuJG9wdGlvbnMubmVlZGxlPXQsYy4kb3B0aW9ucy5iYWNrd2FyZHM9bj09LTEsYy5maW5kKGUuc2Vzc2lvbil9dmFyIHI9ZSgiLi91dGlsIiksaT1mdW5jdGlvbihlLHQpe3ZhciBuPWUucmVuZGVyZXIuZ2V0U2Nyb2xsVG9wUm93KCkscj1lLmdldEN1cnNvclBvc2l0aW9uKCkucm93LGk9ci1uO3QmJnQuY2FsbChlKSxlLnJlbmRlcmVyLnNjcm9sbFRvUm93KGUuZ2V0Q3Vyc29yUG9zaXRpb24oKS5yb3ctaSl9LG89L1tccy5cL1xcKClcIictOiwuOzw+fiFAIyQlXiYqfCs9XFtcXXt9YH4/XS8sdT0vWy5cL1xcKClcIictOiwuOzw+fiFAIyQlXiYqfCs9XFtcXXt9YH4/XS8sYT0vXHMvLGY9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnNlbGVjdGlvbjt0aGlzLnJhbmdlPW4uZ2V0UmFuZ2UoKSx0PXR8fG4uc2VsZWN0aW9uTGVhZCx0aGlzLnJvdz10LnJvdyx0aGlzLmNvbD10LmNvbHVtbjt2YXIgcj1lLnNlc3Npb24uZ2V0TGluZSh0aGlzLnJvdyksaT1lLnNlc3Npb24uZ2V0TGVuZ3RoKCk7dGhpcy5jaD1yW3RoaXMuY29sXXx8IlxuIix0aGlzLnNraXBwZWRMaW5lcz0wLHRoaXMubmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNoPXJbKyt0aGlzLmNvbF18fHRoaXMuaGFuZGxlTmV3TGluZSgxKSx0aGlzLmNofSx0aGlzLnByZXY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaD1yWy0tdGhpcy5jb2xdfHx0aGlzLmhhbmRsZU5ld0xpbmUoLTEpLHRoaXMuY2h9LHRoaXMucGVlaz1mdW5jdGlvbih0KXt2YXIgbj1yW3RoaXMuY29sK3RdO3JldHVybiBuP246dD09LTE/IlxuIjp0aGlzLmNvbD09ci5sZW5ndGgtMT8iXG4iOmUuc2Vzc2lvbi5nZXRMaW5lKHRoaXMucm93KzEpWzBdfHwiXG4ifSx0aGlzLmhhbmRsZU5ld0xpbmU9ZnVuY3Rpb24odCl7aWYodD09MSlyZXR1cm4gdGhpcy5jb2w9PXIubGVuZ3RoPyJcbiI6dGhpcy5yb3c9PWktMT8iIjoodGhpcy5jb2w9MCx0aGlzLnJvdysrLHI9ZS5zZXNzaW9uLmdldExpbmUodGhpcy5yb3cpLHRoaXMuc2tpcHBlZExpbmVzKyssclswXXx8IlxuIik7aWYodD09LTEpcmV0dXJuIHRoaXMucm93PT0wPyIiOih0aGlzLnJvdy0tLHI9ZS5zZXNzaW9uLmdldExpbmUodGhpcy5yb3cpLHRoaXMuY29sPXIubGVuZ3RoLHRoaXMuc2tpcHBlZExpbmVzLS0sIlxuIil9LHRoaXMuZGVidWc9ZnVuY3Rpb24oKXtjb25zb2xlLmxvZyhyLnN1YnN0cmluZygwLHRoaXMuY29sKSsifCIrdGhpcy5jaCsiJyIrdGhpcy5jb2wrIiciK3Iuc3Vic3RyKHRoaXMuY29sKzEpKX19LGw9ZSgiYWNlL3NlYXJjaCIpLlNlYXJjaCxjPW5ldyBsLHA9ZSgiYWNlL3JhbmdlIikuUmFuZ2U7bi5leHBvcnRzPXt3Om5ldyBzKGZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBmKGUpO2lmKHQuY2gmJnUudGVzdCh0LmNoKSl3aGlsZSh0LmNoJiZ1LnRlc3QodC5jaCkpdC5uZXh0KCk7ZWxzZSB3aGlsZSh0LmNoJiYhby50ZXN0KHQuY2gpKXQubmV4dCgpO3doaWxlKHQuY2gmJmEudGVzdCh0LmNoKSYmdC5za2lwcGVkTGluZXM8Mil0Lm5leHQoKTtyZXR1cm4gdC5za2lwcGVkTGluZXM9PTImJnQucHJldigpLHtjb2x1bW46dC5jb2wscm93OnQucm93fX0pLFc6bmV3IHMoZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGYoZSk7d2hpbGUodC5jaCYmKCFhLnRlc3QodC5jaCl8fCEhYS50ZXN0KHQucGVlaygxKSkpJiZ0LnNraXBwZWRMaW5lczwyKXQubmV4dCgpO3JldHVybiB0LnNraXBwZWRMaW5lcz09Mj90LnByZXYoKTp0Lm5leHQoKSx7Y29sdW1uOnQuY29sLHJvdzp0LnJvd319KSxiOm5ldyBzKGZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBmKGUpO3QucHJldigpO3doaWxlKHQuY2gmJmEudGVzdCh0LmNoKSYmdC5za2lwcGVkTGluZXM+LTIpdC5wcmV2KCk7aWYodC5jaCYmdS50ZXN0KHQuY2gpKXdoaWxlKHQuY2gmJnUudGVzdCh0LmNoKSl0LnByZXYoKTtlbHNlIHdoaWxlKHQuY2gmJiFvLnRlc3QodC5jaCkpdC5wcmV2KCk7cmV0dXJuIHQuY2gmJnQubmV4dCgpLHtjb2x1bW46dC5jb2wscm93OnQucm93fX0pLEI6bmV3IHMoZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGYoZSk7dC5wcmV2KCk7d2hpbGUodC5jaCYmKCEhYS50ZXN0KHQuY2gpfHwhYS50ZXN0KHQucGVlaygtMSkpKSYmdC5za2lwcGVkTGluZXM+LTIpdC5wcmV2KCk7cmV0dXJuIHQuc2tpcHBlZExpbmVzPT0tMiYmdC5uZXh0KCkse2NvbHVtbjp0LmNvbCxyb3c6dC5yb3d9fSwhMCksZTpuZXcgcyhmdW5jdGlvbihlKXt2YXIgdD1uZXcgZihlKTt0Lm5leHQoKTt3aGlsZSh0LmNoJiZhLnRlc3QodC5jaCkpdC5uZXh0KCk7aWYodC5jaCYmdS50ZXN0KHQuY2gpKXdoaWxlKHQuY2gmJnUudGVzdCh0LmNoKSl0Lm5leHQoKTtlbHNlIHdoaWxlKHQuY2gmJiFvLnRlc3QodC5jaCkpdC5uZXh0KCk7cmV0dXJuIHQuY2gmJnQucHJldigpLHtjb2x1bW46dC5jb2wscm93OnQucm93fX0pLEU6bmV3IHMoZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGYoZSk7dC5uZXh0KCk7d2hpbGUodC5jaCYmKCEhYS50ZXN0KHQuY2gpfHwhYS50ZXN0KHQucGVlaygxKSkpKXQubmV4dCgpO3JldHVybntjb2x1bW46dC5jb2wscm93OnQucm93fX0pLGw6e25hdjpmdW5jdGlvbihlKXtlLm5hdmlnYXRlUmlnaHQoKX0sc2VsOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0Q3Vyc29yUG9zaXRpb24oKSxuPXQuY29sdW1uLHI9ZS5zZXNzaW9uLmdldExpbmUodC5yb3cpLmxlbmd0aDtyJiZuIT09ciYmZS5zZWxlY3Rpb24uc2VsZWN0UmlnaHQoKX19LGg6e25hdjpmdW5jdGlvbihlKXt2YXIgdD1lLmdldEN1cnNvclBvc2l0aW9uKCk7dC5jb2x1bW4+MCYmZS5uYXZpZ2F0ZUxlZnQoKX0sc2VsOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0Q3Vyc29yUG9zaXRpb24oKTt0LmNvbHVtbj4wJiZlLnNlbGVjdGlvbi5zZWxlY3RMZWZ0KCl9fSxrOntuYXY6ZnVuY3Rpb24oZSl7ZS5uYXZpZ2F0ZVVwKCl9LHNlbDpmdW5jdGlvbihlKXtlLnNlbGVjdGlvbi5zZWxlY3RVcCgpfX0sajp7bmF2OmZ1bmN0aW9uKGUpe2UubmF2aWdhdGVEb3duKCl9LHNlbDpmdW5jdGlvbihlKXtlLnNlbGVjdGlvbi5zZWxlY3REb3duKCl9fSxpOntwYXJhbTohMCxzZWw6ZnVuY3Rpb24oZSx0LG4scil7c3dpdGNoKHIpe2Nhc2UidyI6ZS5zZWxlY3Rpb24uc2VsZWN0V29yZCgpO2JyZWFrO2Nhc2UiVyI6ZS5zZWxlY3Rpb24uc2VsZWN0QVdvcmQoKTticmVhaztjYXNlIigiOmNhc2UieyI6Y2FzZSJbIjp2YXIgaT1lLmdldEN1cnNvclBvc2l0aW9uKCkscz1lLnNlc3Npb24uJGZpbmRDbG9zaW5nQnJhY2tldChyLGksL3BhcmVuLyk7aWYoIXMpcmV0dXJuO3ZhciBvPWUuc2Vzc2lvbi4kZmluZE9wZW5pbmdCcmFja2V0KGUuc2Vzc2lvbi4kYnJhY2tldHNbcl0saSwvcGFyZW4vKTtpZighbylyZXR1cm47by5jb2x1bW4rKyxlLnNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShwLmZyb21Qb2ludHMobyxzKSk7YnJlYWs7Y2FzZSInIjpjYXNlJyInOmNhc2UiLyI6dmFyIHM9aChlLHIsMSk7aWYoIXMpcmV0dXJuO3ZhciBvPWgoZSxyLC0xKTtpZighbylyZXR1cm47ZS5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UocC5mcm9tUG9pbnRzKG8uZW5kLHMuc3RhcnQpKX19fSxhOntwYXJhbTohMCxzZWw6ZnVuY3Rpb24oZSx0LG4scil7c3dpdGNoKHIpe2Nhc2UidyI6ZS5zZWxlY3Rpb24uc2VsZWN0QVdvcmQoKTticmVhaztjYXNlIlciOmUuc2VsZWN0aW9uLnNlbGVjdEFXb3JkKCk7YnJlYWs7Y2FzZSIoIjpjYXNlInsiOmNhc2UiWyI6dmFyIGk9ZS5nZXRDdXJzb3JQb3NpdGlvbigpLHM9ZS5zZXNzaW9uLiRmaW5kQ2xvc2luZ0JyYWNrZXQocixpLC9wYXJlbi8pO2lmKCFzKXJldHVybjt2YXIgbz1lLnNlc3Npb24uJGZpbmRPcGVuaW5nQnJhY2tldChlLnNlc3Npb24uJGJyYWNrZXRzW3JdLGksL3BhcmVuLyk7aWYoIW8pcmV0dXJuO3MuY29sdW1uKyssZS5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UocC5mcm9tUG9pbnRzKG8scykpO2JyZWFrO2Nhc2UiJyI6Y2FzZSciJzpjYXNlIi8iOnZhciBzPWgoZSxyLDEpO2lmKCFzKXJldHVybjt2YXIgbz1oKGUsciwtMSk7aWYoIW8pcmV0dXJuO3MuY29sdW1uKyssZS5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UocC5mcm9tUG9pbnRzKG8uc3RhcnQscy5lbmQpKX19fSxmOntwYXJhbTohMCxoYW5kbGVzQ291bnQ6ITAsbmF2OmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBzPWUsbz1zLmdldEN1cnNvclBvc2l0aW9uKCksdT1yLmdldFJpZ2h0TnRoQ2hhcihlLG8saSxufHwxKTt0eXBlb2YgdT09Im51bWJlciImJihzLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLHMubW92ZUN1cnNvclRvKG8ucm93LHUrby5jb2x1bW4rMSkpfSxzZWw6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIHM9ZSxvPXMuZ2V0Q3Vyc29yUG9zaXRpb24oKSx1PXIuZ2V0UmlnaHROdGhDaGFyKGUsbyxpLG58fDEpO3R5cGVvZiB1PT0ibnVtYmVyIiYmcy5tb3ZlQ3Vyc29yVG8oby5yb3csdStvLmNvbHVtbisxKX19LEY6e3BhcmFtOiEwLGhhbmRsZXNDb3VudDohMCxuYXY6ZnVuY3Rpb24oZSx0LG4saSl7bj1wYXJzZUludChuLDEwKXx8MTt2YXIgcz1lLG89cy5nZXRDdXJzb3JQb3NpdGlvbigpLHU9ci5nZXRMZWZ0TnRoQ2hhcihlLG8saSxuKTt0eXBlb2YgdT09Im51bWJlciImJihzLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLHMubW92ZUN1cnNvclRvKG8ucm93LG8uY29sdW1uLXUtMSkpfSxzZWw6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIHM9ZSxvPXMuZ2V0Q3Vyc29yUG9zaXRpb24oKSx1PXIuZ2V0TGVmdE50aENoYXIoZSxvLGksbnx8MSk7dHlwZW9mIHU9PSJudW1iZXIiJiZzLm1vdmVDdXJzb3JUbyhvLnJvdyxvLmNvbHVtbi11LTEpfX0sdDp7cGFyYW06ITAsaGFuZGxlc0NvdW50OiEwLG5hdjpmdW5jdGlvbihlLHQsbixpKXt2YXIgcz1lLG89cy5nZXRDdXJzb3JQb3NpdGlvbigpLHU9ci5nZXRSaWdodE50aENoYXIoZSxvLGksbnx8MSk7dHlwZW9mIHU9PSJudW1iZXIiJiYocy5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxzLm1vdmVDdXJzb3JUbyhvLnJvdyx1K28uY29sdW1uKSl9LHNlbDpmdW5jdGlvbihlLHQsbixpKXt2YXIgcz1lLG89cy5nZXRDdXJzb3JQb3NpdGlvbigpLHU9ci5nZXRSaWdodE50aENoYXIoZSxvLGksbnx8MSk7dHlwZW9mIHU9PSJudW1iZXIiJiZzLm1vdmVDdXJzb3JUbyhvLnJvdyx1K28uY29sdW1uKX19LFQ6e3BhcmFtOiEwLGhhbmRsZXNDb3VudDohMCxuYXY6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIHM9ZSxvPXMuZ2V0Q3Vyc29yUG9zaXRpb24oKSx1PXIuZ2V0TGVmdE50aENoYXIoZSxvLGksbnx8MSk7dHlwZW9mIHU9PSJudW1iZXIiJiYocy5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxzLm1vdmVDdXJzb3JUbyhvLnJvdywtdStvLmNvbHVtbikpfSxzZWw6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIHM9ZSxvPXMuZ2V0Q3Vyc29yUG9zaXRpb24oKSx1PXIuZ2V0TGVmdE50aENoYXIoZSxvLGksbnx8MSk7dHlwZW9mIHU9PSJudW1iZXIiJiZzLm1vdmVDdXJzb3JUbyhvLnJvdywtdStvLmNvbHVtbil9fSwiXiI6e25hdjpmdW5jdGlvbihlKXtlLm5hdmlnYXRlTGluZVN0YXJ0KCl9LHNlbDpmdW5jdGlvbihlKXtlLnNlbGVjdGlvbi5zZWxlY3RMaW5lU3RhcnQoKX19LCQ6e25hdjpmdW5jdGlvbihlKXtlLm5hdmlnYXRlTGluZUVuZCgpfSxzZWw6ZnVuY3Rpb24oZSl7ZS5zZWxlY3Rpb24uc2VsZWN0TGluZUVuZCgpfX0sMDp7bmF2OmZ1bmN0aW9uKGUpe3ZhciB0PWU7dC5uYXZpZ2F0ZVRvKHQuc2VsZWN0aW9uLnNlbGVjdGlvbkxlYWQucm93LDApfSxzZWw6ZnVuY3Rpb24oZSl7dmFyIHQ9ZTt0LnNlbGVjdFRvKHQuc2VsZWN0aW9uLnNlbGVjdGlvbkxlYWQucm93LDApfX0sRzp7bmF2OmZ1bmN0aW9uKGUsdCxuLHIpeyFuJiZuIT09MCYmKG49ZS5zZXNzaW9uLmdldExlbmd0aCgpKSxlLmdvdG9MaW5lKG4pfSxzZWw6ZnVuY3Rpb24oZSx0LG4scil7IW4mJm4hPT0wJiYobj1lLnNlc3Npb24uZ2V0TGVuZ3RoKCkpLGUuc2VsZWN0aW9uLnNlbGVjdFRvKG4sMCl9fSxnOntwYXJhbTohMCxuYXY6ZnVuY3Rpb24oZSx0LG4scil7c3dpdGNoKHIpe2Nhc2UibSI6Y29uc29sZS5sb2coIk1pZGRsZSBsaW5lIik7YnJlYWs7Y2FzZSJlIjpjb25zb2xlLmxvZygiRW5kIG9mIHByZXYgd29yZCIpO2JyZWFrO2Nhc2UiZyI6ZS5nb3RvTGluZShufHwwKTtjYXNlInUiOmUuZ290b0xpbmUobnx8MCk7Y2FzZSJVIjplLmdvdG9MaW5lKG58fDApfX0sc2VsOmZ1bmN0aW9uKGUsdCxuLHIpe3N3aXRjaChyKXtjYXNlIm0iOmNvbnNvbGUubG9nKCJNaWRkbGUgbGluZSIpO2JyZWFrO2Nhc2UiZSI6Y29uc29sZS5sb2coIkVuZCBvZiBwcmV2IHdvcmQiKTticmVhaztjYXNlImciOmUuc2VsZWN0aW9uLnNlbGVjdFRvKG58fDAsMCl9fX0sbzp7bmF2OmZ1bmN0aW9uKGUsdCxuLGkpe249bnx8MTt2YXIgcz0iIjt3aGlsZSgwPG4tLSlzKz0iXG4iO3MubGVuZ3RoJiYoZS5uYXZpZ2F0ZUxpbmVFbmQoKSxlLmluc2VydChzKSxyLmluc2VydE1vZGUoZSkpfX0sTzp7bmF2OmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBzPWUuZ2V0Q3Vyc29yUG9zaXRpb24oKS5yb3c7bj1ufHwxO3ZhciBvPSIiO3doaWxlKDA8bi0tKW8rPSJcbiI7by5sZW5ndGgmJihzPjA/KGUubmF2aWdhdGVVcCgpLGUubmF2aWdhdGVMaW5lRW5kKCksZS5pbnNlcnQobykpOihlLnNlc3Npb24uaW5zZXJ0KHtyb3c6MCxjb2x1bW46MH0sbyksZS5uYXZpZ2F0ZVVwKCkpLHIuaW5zZXJ0TW9kZShlKSl9fSwiJSI6bmV3IHMoZnVuY3Rpb24oZSl7dmFyIHQ9L1tcW1xde30oKV0vZyxuPWUuZ2V0Q3Vyc29yUG9zaXRpb24oKSxyPWUuc2Vzc2lvbi5nZXRMaW5lKG4ucm93KVtuLmNvbHVtbl07aWYoIXQudGVzdChyKSl7dmFyIGk9aChlLHQpO2lmKCFpKXJldHVybjtuPWkuc3RhcnR9dmFyIHM9ZS5zZXNzaW9uLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3JvdzpuLnJvdyxjb2x1bW46bi5jb2x1bW4rMX0pO3JldHVybiBzfSksImN0cmwtZCI6e25hdjpmdW5jdGlvbihlLHQsbixyKXtlLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGkoZSxlLmdvdG9QYWdlRG93bil9LHNlbDpmdW5jdGlvbihlLHQsbixyKXtpKGUsZS5zZWxlY3RQYWdlRG93bil9fSwiY3RybC11Ijp7bmF2OmZ1bmN0aW9uKGUsdCxuLHIpe2Uuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCksaShlLGUuZ290b1BhZ2VVcCl9LHNlbDpmdW5jdGlvbihlLHQsbixyKXtpKGUsZS5zZWxlY3RQYWdlVXApfX19LG4uZXhwb3J0cy5iYWNrc3BhY2U9bi5leHBvcnRzLmxlZnQ9bi5leHBvcnRzLmgsbi5leHBvcnRzLnJpZ2h0PW4uZXhwb3J0cy5sLG4uZXhwb3J0cy51cD1uLmV4cG9ydHMuayxuLmV4cG9ydHMuZG93bj1uLmV4cG9ydHMuaixuLmV4cG9ydHMucGFnZWRvd249bi5leHBvcnRzWyJjdHJsLWQiXSxuLmV4cG9ydHMucGFnZXVwPW4uZXhwb3J0c1siY3RybC11Il19KSxkZWZpbmUoImFjZS9rZXlib2FyZC92aW0vbWFwcy9vcGVyYXRvcnMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2Uva2V5Ym9hcmQvdmltL21hcHMvdXRpbCIsImFjZS9rZXlib2FyZC92aW0vcmVnaXN0ZXJzIl0sZnVuY3Rpb24oZSx0LG4peyJuZXZlciB1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuL3V0aWwiKSxpPWUoIi4uL3JlZ2lzdGVycyIpO24uZXhwb3J0cz17ZDp7c2VsRm46ZnVuY3Rpb24oZSx0LG4scyl7aS5fZGVmYXVsdC50ZXh0PWUuZ2V0Q29weVRleHQoKSxpLl9kZWZhdWx0LmlzTGluZT1yLm9uVmlzdWFsTGluZU1vZGUsci5vblZpc3VhbExpbmVNb2RlP2UucmVtb3ZlTGluZXMoKTplLnNlc3Npb24ucmVtb3ZlKHQpLHIubm9ybWFsTW9kZShlKX0sZm46ZnVuY3Rpb24oZSx0LG4scil7bj1ufHwxO3N3aXRjaChyKXtjYXNlImQiOmkuX2RlZmF1bHQudGV4dD0iIixpLl9kZWZhdWx0LmlzTGluZT0hMDtmb3IodmFyIHM9MDtzPG47cysrKXtlLnNlbGVjdGlvbi5zZWxlY3RMaW5lKCksaS5fZGVmYXVsdC50ZXh0Kz1lLmdldENvcHlUZXh0KCk7dmFyIG89ZS5nZXRTZWxlY3Rpb25SYW5nZSgpO2lmKCFvLmlzTXVsdGlMaW5lKCkpe2xhc3RMaW5lUmVhY2hlZD0hMDt2YXIgdT1vLnN0YXJ0LnJvdy0xLGE9ZS5zZXNzaW9uLmdldExpbmUodSkubGVuZ3RoO28uc2V0U3RhcnQodSxhKSxlLnNlc3Npb24ucmVtb3ZlKG8pLGUuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCk7YnJlYWt9ZS5zZXNzaW9uLnJlbW92ZShvKSxlLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpfWkuX2RlZmF1bHQudGV4dD1pLl9kZWZhdWx0LnRleHQucmVwbGFjZSgvXG4kLywiIik7YnJlYWs7ZGVmYXVsdDp0JiYoZS5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UodCksaS5fZGVmYXVsdC50ZXh0PWUuZ2V0Q29weVRleHQoKSxpLl9kZWZhdWx0LmlzTGluZT0hMSxlLnNlc3Npb24ucmVtb3ZlKHQpLGUuc2VsZWN0aW9uLmNsZWFyU2VsZWN0aW9uKCkpfX19LGM6e3NlbEZuOmZ1bmN0aW9uKGUsdCxuLGkpe2Uuc2Vzc2lvbi5yZW1vdmUodCksci5pbnNlcnRNb2RlKGUpfSxmbjpmdW5jdGlvbihlLHQsbixpKXtuPW58fDE7c3dpdGNoKGkpe2Nhc2UiYyI6Zm9yKHZhciBzPTA7czxuO3MrKyllLnJlbW92ZUxpbmVzKCksci5pbnNlcnRNb2RlKGUpO2JyZWFrO2RlZmF1bHQ6dCYmKGUuc2Vzc2lvbi5yZW1vdmUodCksci5pbnNlcnRNb2RlKGUpKX19fSx5OntzZWxGbjpmdW5jdGlvbihlLHQsbixzKXtpLl9kZWZhdWx0LnRleHQ9ZS5nZXRDb3B5VGV4dCgpLGkuX2RlZmF1bHQuaXNMaW5lPXIub25WaXN1YWxMaW5lTW9kZSxlLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLHIubm9ybWFsTW9kZShlKX0sZm46ZnVuY3Rpb24oZSx0LG4scil7bj1ufHwxO3N3aXRjaChyKXtjYXNlInkiOnZhciBzPWUuZ2V0Q3Vyc29yUG9zaXRpb24oKTtlLnNlbGVjdGlvbi5zZWxlY3RMaW5lKCk7Zm9yKHZhciBvPTA7bzxuLTE7bysrKWUuc2VsZWN0aW9uLm1vdmVDdXJzb3JEb3duKCk7aS5fZGVmYXVsdC50ZXh0PWUuZ2V0Q29weVRleHQoKS5yZXBsYWNlKC9cbiQvLCIiKSxlLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGkuX2RlZmF1bHQuaXNMaW5lPSEwLGUubW92ZUN1cnNvclRvUG9zaXRpb24ocyk7YnJlYWs7ZGVmYXVsdDppZih0KXt2YXIgcz1lLmdldEN1cnNvclBvc2l0aW9uKCk7ZS5zZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UodCksaS5fZGVmYXVsdC50ZXh0PWUuZ2V0Q29weVRleHQoKSxpLl9kZWZhdWx0LmlzTGluZT0hMSxlLnNlbGVjdGlvbi5jbGVhclNlbGVjdGlvbigpLGUubW92ZUN1cnNvclRvKHMucm93LHMuY29sdW1uKX19fX0sIj4iOntzZWxGbjpmdW5jdGlvbihlLHQsbixpKXtuPW58fDE7Zm9yKHZhciBzPTA7czxuO3MrKyllLmluZGVudCgpO3Iubm9ybWFsTW9kZShlKX0sZm46ZnVuY3Rpb24oZSx0LG4scil7bj1wYXJzZUludChufHwxLDEwKTtzd2l0Y2gocil7Y2FzZSI+Ijp2YXIgaT1lLmdldEN1cnNvclBvc2l0aW9uKCk7ZS5zZWxlY3Rpb24uc2VsZWN0TGluZSgpO2Zvcih2YXIgcz0wO3M8bi0xO3MrKyllLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yRG93bigpO2UuaW5kZW50KCksZS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxlLm1vdmVDdXJzb3JUb1Bvc2l0aW9uKGkpLGUubmF2aWdhdGVMaW5lRW5kKCksZS5uYXZpZ2F0ZUxpbmVTdGFydCgpfX19LCI8Ijp7c2VsRm46ZnVuY3Rpb24oZSx0LG4saSl7bj1ufHwxO2Zvcih2YXIgcz0wO3M8bjtzKyspZS5ibG9ja091dGRlbnQoKTtyLm5vcm1hbE1vZGUoZSl9LGZuOmZ1bmN0aW9uKGUsdCxuLHIpe249bnx8MTtzd2l0Y2gocil7Y2FzZSI8Ijp2YXIgaT1lLmdldEN1cnNvclBvc2l0aW9uKCk7ZS5zZWxlY3Rpb24uc2VsZWN0TGluZSgpO2Zvcih2YXIgcz0wO3M8bi0xO3MrKyllLnNlbGVjdGlvbi5tb3ZlQ3Vyc29yRG93bigpO2UuYmxvY2tPdXRkZW50KCksZS5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSxlLm1vdmVDdXJzb3JUb1Bvc2l0aW9uKGkpLGUubmF2aWdhdGVMaW5lRW5kKCksZS5uYXZpZ2F0ZUxpbmVTdGFydCgpfX19fX0pLCJ1c2Ugc3RyaWN0IixkZWZpbmUoImFjZS9rZXlib2FyZC92aW0vbWFwcy9hbGlhc2VzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe24uZXhwb3J0cz17eDp7b3BlcmF0b3I6eyJjaGFyIjoiZCIsY291bnQ6MX0sbW90aW9uOnsiY2hhciI6ImwiLGNvdW50OjF9fSxYOntvcGVyYXRvcjp7ImNoYXIiOiJkIixjb3VudDoxfSxtb3Rpb246eyJjaGFyIjoiaCIsY291bnQ6MX19LEQ6e29wZXJhdG9yOnsiY2hhciI6ImQiLGNvdW50OjF9LG1vdGlvbjp7ImNoYXIiOiIkIixjb3VudDoxfX0sQzp7b3BlcmF0b3I6eyJjaGFyIjoiYyIsY291bnQ6MX0sbW90aW9uOnsiY2hhciI6IiQiLGNvdW50OjF9fSxzOntvcGVyYXRvcjp7ImNoYXIiOiJjIixjb3VudDoxfSxtb3Rpb246eyJjaGFyIjoibCIsY291bnQ6MX19LFM6e29wZXJhdG9yOnsiY2hhciI6ImMiLGNvdW50OjF9LHBhcmFtOiJjIn19fSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-c9search.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9jOXNlYXJjaCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9jOXNlYXJjaF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IiwiYWNlL21vZGUvZm9sZGluZy9jOXNlYXJjaCJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9jOXNlYXJjaF9oaWdobGlnaHRfcnVsZXMiKS5DOVNlYXJjaEhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsYT1lKCIuL2ZvbGRpbmcvYzlzZWFyY2giKS5Gb2xkTW9kZSxmPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBzKChuZXcgbykuZ2V0UnVsZXMoKSwiaSIpLHRoaXMuJG91dGRlbnQ9bmV3IHUsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGF9O3IuaW5oZXJpdHMoZixpKSxmdW5jdGlvbigpe3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJGdldEluZGVudCh0KTtyZXR1cm4gcn0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudCh0LG4pfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KHQsbil9fS5jYWxsKGYucHJvdG90eXBlKSx0Lk1vZGU9Zn0pLGRlZmluZSgiYWNlL21vZGUvYzlzZWFyY2hfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLHM9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjpbImM5c2VhcmNocmVzdWx0cy5jb25zdGFudC5udW1lcmljIiwiYzlzZWFyY2hyZXN1bHRzLnRleHQiLCJjOXNlYXJjaHJlc3VsdHMudGV4dCJdLHJlZ2V4OiIoXlxccytbMC05XSspKDpcXHMqKSguKykifSx7dG9rZW46WyJzdHJpbmciLCJ0ZXh0Il0scmVnZXg6IiguKykoOiQpIn1dfX07ci5pbmhlcml0cyhzLGkpLHQuQzlTZWFyY2hIaWdobGlnaHRSdWxlcz1zfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXlxzKyQvLnRlc3QoZSk/L15ccypcfS8udGVzdCh0KTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0TGluZSh0KSxpPW4ubWF0Y2goL14oXHMqXH0pLyk7aWYoIWkpcmV0dXJuIDA7dmFyIHM9aVsxXS5sZW5ndGgsbz1lLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp0LGNvbHVtbjpzfSk7aWYoIW98fG8ucm93PT10KXJldHVybiAwO3ZhciB1PXRoaXMuJGdldEluZGVudChlLmdldExpbmUoby5yb3cpKTtlLnJlcGxhY2UobmV3IHIodCwwLHQscy0xKSx1KX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14oXHMrKS8pO3JldHVybiB0P3RbMV06IiJ9fSkuY2FsbChpLnByb3RvdHlwZSksdC5NYXRjaGluZ0JyYWNlT3V0ZGVudD1pfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2M5c2VhcmNoIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLHM9ZSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxvPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O3IuaW5oZXJpdHMobyxzKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS9eKFx3LipcOnxTZWFyY2hpbmcgZm9yLiopJC8sdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj0vXihccyt8Rm91bmQuKikkLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pLHM9L14oRm91bmQuKnxTZWFyY2hpbmcgZm9yLiopJC8sbz0vXihcdy4qXDp8XHMqKSQvLHU9cy50ZXN0KHIpP3M6bztpZih0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KHIpKXtmb3IodmFyIGE9bisxLGY9ZS5nZXRMZW5ndGgoKTthPGY7YSsrKWlmKHUudGVzdChlLmdldExpbmUoYSkpKWJyZWFrO3JldHVybiBuZXcgaShuLHIubGVuZ3RoLGEsMCl9aWYodGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KHIpKXtmb3IodmFyIGE9bi0xO2E+PTA7YS0tKXtyPWUuZ2V0TGluZShhKTtpZih1LnRlc3QocikpYnJlYWt9cmV0dXJuIG5ldyBpKGEsci5sZW5ndGgsbiwwKX19fS5jYWxsKG8ucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxpPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KHIpPyJzdGFydCI6dD09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChyKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPS9cUy8scz1lLmdldExpbmUodCksbz1zLnNlYXJjaChpKTtpZihvPT0tMSlyZXR1cm47dmFyIHU9bnx8cy5sZW5ndGgsYT1lLmdldExlbmd0aCgpLGY9dCxsPXQ7d2hpbGUoKyt0PGEpe3ZhciBjPWUuZ2V0TGluZSh0KS5zZWFyY2goaSk7aWYoYz09LTEpY29udGludWU7aWYoYzw9bylicmVhaztsPXR9aWYobD5mKXt2YXIgaD1lLmdldExpbmUobCkubGVuZ3RoO3JldHVybiBuZXcgcihmLHUsbCxoKX19LHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jaz1mdW5jdGlvbihlLHQsbixpLHMpe3ZhciBvPXtyb3c6bixjb2x1bW46aSsxfSx1PWUuJGZpbmRDbG9zaW5nQnJhY2tldCh0LG8scyk7aWYoIXUpcmV0dXJuO3ZhciBhPWUuZm9sZFdpZGdldHNbdS5yb3ddO3JldHVybiBhPT1udWxsJiYoYT10aGlzLmdldEZvbGRXaWRnZXQoZSx1LnJvdykpLGE9PSJzdGFydCImJnUucm93Pm8ucm93JiYodS5yb3ctLSx1LmNvbHVtbj1lLmdldExpbmUodS5yb3cpLmxlbmd0aCksci5mcm9tUG9pbnRzKG8sdSl9fSkuY2FsbChpLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-clojure.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9jbG9qdXJlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2Nsb2p1cmVfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfcGFyZW5zX291dGRlbnQiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4vY2xvanVyZV9oaWdobGlnaHRfcnVsZXMiKS5DbG9qdXJlSGlnaGxpZ2h0UnVsZXMsdT1lKCIuL21hdGNoaW5nX3BhcmVuc19vdXRkZW50IikuTWF0Y2hpbmdQYXJlbnNPdXRkZW50LGE9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxmPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBzKChuZXcgbykuZ2V0UnVsZXMoKSksdGhpcy4kb3V0ZGVudD1uZXcgdX07ci5pbmhlcml0cyhmLGkpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ITAscz0vXihccyopIy87Zm9yKHZhciBvPW47bzw9cjtvKyspaWYoIXMudGVzdCh0LmdldExpbmUobykpKXtpPSExO2JyZWFrfWlmKGkpe3ZhciB1PW5ldyBhKDAsMCwwLDApO2Zvcih2YXIgbz1uO288PXI7bysrKXt2YXIgZj10LmdldExpbmUobyksbD1mLm1hdGNoKHMpO3Uuc3RhcnQucm93PW8sdS5lbmQucm93PW8sdS5lbmQuY29sdW1uPWxbMF0ubGVuZ3RoLHQucmVwbGFjZSh1LGxbMV0pfX1lbHNlIHQuaW5kZW50Um93cyhuLHIsIjsiKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy4kZ2V0SW5kZW50KHQpLGk9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnModCxlKSxzPWkudG9rZW5zO2lmKHMubGVuZ3RoJiZzW3MubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gcjtpZihlPT0ic3RhcnQiKXt2YXIgbz10Lm1hdGNoKC9bXChcW10vKTtvJiYocis9IiAgIiksbz10Lm1hdGNoKC9bXCldLyksbyYmKHI9IiIpfXJldHVybiByfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KHQsbil9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQodCxuKX19LmNhbGwoZi5wcm90b3R5cGUpLHQuTW9kZT1mfSksZGVmaW5lKCJhY2UvbW9kZS9jbG9qdXJlX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsbz1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgiKiAqMSAqMiAqMyAqYWdlbnQqICphbGxvdy11bnJlc29sdmVkLXZhcnMqICphc3NlcnQqICpjbG9qdXJlLXZlcnNpb24qICpjb21tYW5kLWxpbmUtYXJncyogKmNvbXBpbGUtZmlsZXMqICpjb21waWxlLXBhdGgqICplICplcnIqICpmaWxlKiAqZmx1c2gtb24tbmV3bGluZSogKmluKiAqbWFjcm8tbWV0YSogKm1hdGgtY29udGV4dCogKm5zKiAqb3V0KiAqcHJpbnQtZHVwKiAqcHJpbnQtbGVuZ3RoKiAqcHJpbnQtbGV2ZWwqICpwcmludC1tZXRhKiAqcHJpbnQtcmVhZGFibHkqICpyZWFkLWV2YWwqICpzb3VyY2UtcGF0aCogKnVzZS1jb250ZXh0LWNsYXNzbG9hZGVyKiAqd2Fybi1vbi1yZWZsZWN0aW9uKiArIC0gLT4gLSZndDsgLT4+IC0mZ3Q7Jmd0OyAuLiAvIDwgJmx0OyA8PSAmbHQ7PSA9ID09ID4gJmd0OyA+PSAmZ3Q7PSBhY2Nlc3NvciBhY2xvbmUgYWRkLWNsYXNzcGF0aCBhZGQtd2F0Y2ggYWdlbnQgYWdlbnQtZXJyb3JzIGFnZXQgYWxlbmd0aCBhbGlhcyBhbGwtbnMgYWx0ZXIgYWx0ZXItbWV0YSEgYWx0ZXItdmFyLXJvb3QgYW1hcCBhbmNlc3RvcnMgYW5kIGFwcGx5IGFyZWR1Y2UgYXJyYXktbWFwIGFzZXQgYXNldC1ib29sZWFuIGFzZXQtYnl0ZSBhc2V0LWNoYXIgYXNldC1kb3VibGUgYXNldC1mbG9hdCBhc2V0LWludCBhc2V0LWxvbmcgYXNldC1zaG9ydCBhc3NlcnQgYXNzb2MgYXNzb2MhIGFzc29jLWluIGFzc29jaWF0aXZlPyBhdG9tIGF3YWl0IGF3YWl0LWZvciBhd2FpdDEgYmFzZXMgYmVhbiBiaWdkZWMgYmlnaW50IGJpbmRpbmcgYml0LWFuZCBiaXQtYW5kLW5vdCBiaXQtY2xlYXIgYml0LWZsaXAgYml0LW5vdCBiaXQtb3IgYml0LXNldCBiaXQtc2hpZnQtbGVmdCBiaXQtc2hpZnQtcmlnaHQgYml0LXRlc3QgYml0LXhvciBib29sZWFuIGJvb2xlYW4tYXJyYXkgYm9vbGVhbnMgYm91bmQtZm4gYm91bmQtZm4qIGJ1dGxhc3QgYnl0ZSBieXRlLWFycmF5IGJ5dGVzIGNhc3QgY2hhciBjaGFyLWFycmF5IGNoYXItZXNjYXBlLXN0cmluZyBjaGFyLW5hbWUtc3RyaW5nIGNoYXI/IGNoYXJzIGNodW5rIGNodW5rLWFwcGVuZCBjaHVuay1idWZmZXIgY2h1bmstY29ucyBjaHVuay1maXJzdCBjaHVuay1uZXh0IGNodW5rLXJlc3QgY2h1bmtlZC1zZXE/IGNsYXNzIGNsYXNzPyBjbGVhci1hZ2VudC1lcnJvcnMgY2xvanVyZS12ZXJzaW9uIGNvbGw/IGNvbW1lbnQgY29tbXV0ZSBjb21wIGNvbXBhcmF0b3IgY29tcGFyZSBjb21wYXJlLWFuZC1zZXQhIGNvbXBpbGUgY29tcGxlbWVudCBjb25jYXQgY29uZCBjb25kcCBjb25qIGNvbmohIGNvbnMgY29uc3RhbnRseSBjb25zdHJ1Y3QtcHJveHkgY29udGFpbnM/IGNvdW50IGNvdW50ZWQ/IGNyZWF0ZS1ucyBjcmVhdGUtc3RydWN0IGN5Y2xlIGRlYyBkZWNpbWFsPyBkZWNsYXJlIGRlZmlubGluZSBkZWZtYWNybyBkZWZtZXRob2QgZGVmbXVsdGkgZGVmbiBkZWZuLSBkZWZvbmNlIGRlZnN0cnVjdCBkZWxheSBkZWxheT8gZGVsaXZlciBkZXJlZiBkZXJpdmUgZGVzY2VuZGFudHMgZGVzdHJ1Y3R1cmUgZGlzaiBkaXNqISBkaXNzb2MgZGlzc29jISBkaXN0aW5jdCBkaXN0aW5jdD8gZG9hbGwgZG9jIGRvcnVuIGRvc2VxIGRvc3luYyBkb3RpbWVzIGRvdG8gZG91YmxlIGRvdWJsZS1hcnJheSBkb3VibGVzIGRyb3AgZHJvcC1sYXN0IGRyb3Atd2hpbGUgZW1wdHkgZW1wdHk/IGVuc3VyZSBlbnVtZXJhdGlvbi1zZXEgZXZhbCBldmVuPyBldmVyeT8gZmFsc2U/IGZmaXJzdCBmaWxlLXNlcSBmaWx0ZXIgZmluZCBmaW5kLWRvYyBmaW5kLW5zIGZpbmQtdmFyIGZpcnN0IGZsb2F0IGZsb2F0LWFycmF5IGZsb2F0PyBmbG9hdHMgZmx1c2ggZm4gZm4/IGZuZXh0IGZvciBmb3JjZSBmb3JtYXQgZnV0dXJlIGZ1dHVyZS1jYWxsIGZ1dHVyZS1jYW5jZWwgZnV0dXJlLWNhbmNlbGxlZD8gZnV0dXJlLWRvbmU/IGZ1dHVyZT8gZ2VuLWNsYXNzIGdlbi1pbnRlcmZhY2UgZ2Vuc3ltIGdldCBnZXQtaW4gZ2V0LW1ldGhvZCBnZXQtcHJveHktY2xhc3MgZ2V0LXRocmVhZC1iaW5kaW5ncyBnZXQtdmFsaWRhdG9yIGhhc2ggaGFzaC1tYXAgaGFzaC1zZXQgaWRlbnRpY2FsPyBpZGVudGl0eSBpZi1sZXQgaWYtbm90IGlmbj8gaW1wb3J0IGluLW5zIGluYyBpbml0LXByb3h5IGluc3RhbmNlPyBpbnQgaW50LWFycmF5IGludGVnZXI/IGludGVybGVhdmUgaW50ZXJuIGludGVycG9zZSBpbnRvIGludG8tYXJyYXkgaW50cyBpbyEgaXNhPyBpdGVyYXRlIGl0ZXJhdG9yLXNlcSBqdXh0IGtleSBrZXlzIGtleXdvcmQga2V5d29yZD8gbGFzdCBsYXp5LWNhdCBsYXp5LXNlcSBsZXQgbGV0Zm4gbGluZS1zZXEgbGlzdCBsaXN0KiBsaXN0PyBsb2FkIGxvYWQtZmlsZSBsb2FkLXJlYWRlciBsb2FkLXN0cmluZyBsb2FkZWQtbGlicyBsb2NraW5nIGxvbmcgbG9uZy1hcnJheSBsb25ncyBsb29wIG1hY3JvZXhwYW5kIG1hY3JvZXhwYW5kLTEgbWFrZS1hcnJheSBtYWtlLWhpZXJhcmNoeSBtYXAgbWFwPyBtYXBjYXQgbWF4IG1heC1rZXkgbWVtZm4gbWVtb2l6ZSBtZXJnZSBtZXJnZS13aXRoIG1ldGEgbWV0aG9kLXNpZyBtZXRob2RzIG1pbiBtaW4ta2V5IG1vZCBuYW1lIG5hbWVzcGFjZSBuZWc/IG5ld2xpbmUgbmV4dCBuZmlyc3QgbmlsPyBubmV4dCBub3Qgbm90LWFueT8gbm90LWVtcHR5IG5vdC1ldmVyeT8gbm90PSBucyBucy1hbGlhc2VzIG5zLWltcG9ydHMgbnMtaW50ZXJucyBucy1tYXAgbnMtbmFtZSBucy1wdWJsaWNzIG5zLXJlZmVycyBucy1yZXNvbHZlIG5zLXVuYWxpYXMgbnMtdW5tYXAgbnRoIG50aG5leHQgbnVtIG51bWJlcj8gb2RkPyBvciBwYXJlbnRzIHBhcnRpYWwgcGFydGl0aW9uIHBjYWxscyBwZWVrIHBlcnNpc3RlbnQhIHBtYXAgcG9wIHBvcCEgcG9wLXRocmVhZC1iaW5kaW5ncyBwb3M/IHByIHByLXN0ciBwcmVmZXItbWV0aG9kIHByZWZlcnMgcHJpbWl0aXZlcy1jbGFzc25hbWVzIHByaW50IHByaW50LWN0b3IgcHJpbnQtZG9jIHByaW50LWR1cCBwcmludC1tZXRob2QgcHJpbnQtbmFtZXNwYWNlLWRvYyBwcmludC1zaW1wbGUgcHJpbnQtc3BlY2lhbC1kb2MgcHJpbnQtc3RyIHByaW50ZiBwcmludGxuIHByaW50bG4tc3RyIHBybiBwcm4tc3RyIHByb21pc2UgcHJveHkgcHJveHktY2FsbC13aXRoLXN1cGVyIHByb3h5LW1hcHBpbmdzIHByb3h5LW5hbWUgcHJveHktc3VwZXIgcHVzaC10aHJlYWQtYmluZGluZ3MgcHZhbHVlcyBxdW90IHJhbmQgcmFuZC1pbnQgcmFuZ2UgcmF0aW8/IHJhdGlvbmFsPyByYXRpb25hbGl6ZSByZS1maW5kIHJlLWdyb3VwcyByZS1tYXRjaGVyIHJlLW1hdGNoZXMgcmUtcGF0dGVybiByZS1zZXEgcmVhZCByZWFkLWxpbmUgcmVhZC1zdHJpbmcgcmVkdWNlIHJlZiByZWYtaGlzdG9yeS1jb3VudCByZWYtbWF4LWhpc3RvcnkgcmVmLW1pbi1oaXN0b3J5IHJlZi1zZXQgcmVmZXIgcmVmZXItY2xvanVyZSByZWxlYXNlLXBlbmRpbmctc2VuZHMgcmVtIHJlbW92ZSByZW1vdmUtbWV0aG9kIHJlbW92ZS1ucyByZW1vdmUtd2F0Y2ggcmVwZWF0IHJlcGVhdGVkbHkgcmVwbGFjZSByZXBsaWNhdGUgcmVxdWlyZSByZXNldCEgcmVzZXQtbWV0YSEgcmVzb2x2ZSByZXN0IHJlc3VsdHNldC1zZXEgcmV2ZXJzZSByZXZlcnNpYmxlPyByc2VxIHJzdWJzZXEgc2Vjb25kIHNlbGVjdC1rZXlzIHNlbmQgc2VuZC1vZmYgc2VxIHNlcT8gc2VxdWUgc2VxdWVuY2Ugc2VxdWVudGlhbD8gc2V0IHNldC12YWxpZGF0b3IhIHNldD8gc2hvcnQgc2hvcnQtYXJyYXkgc2hvcnRzIHNodXRkb3duLWFnZW50cyBzbHVycCBzb21lIHNvcnQgc29ydC1ieSBzb3J0ZWQtbWFwIHNvcnRlZC1tYXAtYnkgc29ydGVkLXNldCBzb3J0ZWQtc2V0LWJ5IHNvcnRlZD8gc3BlY2lhbC1mb3JtLWFuY2hvciBzcGVjaWFsLXN5bWJvbD8gc3BsaXQtYXQgc3BsaXQtd2l0aCBzdHIgc3RyZWFtPyBzdHJpbmc/IHN0cnVjdCBzdHJ1Y3QtbWFwIHN1YnMgc3Vic2VxIHN1YnZlYyBzdXBlcnMgc3dhcCEgc3ltYm9sIHN5bWJvbD8gc3luYyBzeW50YXgtc3ltYm9sLWFuY2hvciB0YWtlIHRha2UtbGFzdCB0YWtlLW50aCB0YWtlLXdoaWxlIHRlc3QgdGhlLW5zIHRpbWUgdG8tYXJyYXkgdG8tYXJyYXktMmQgdHJhbXBvbGluZSB0cmFuc2llbnQgdHJlZS1zZXEgdHJ1ZT8gdHlwZSB1bmNoZWNrZWQtYWRkIHVuY2hlY2tlZC1kZWMgdW5jaGVja2VkLWRpdmlkZSB1bmNoZWNrZWQtaW5jIHVuY2hlY2tlZC1tdWx0aXBseSB1bmNoZWNrZWQtbmVnYXRlIHVuY2hlY2tlZC1yZW1haW5kZXIgdW5jaGVja2VkLXN1YnRyYWN0IHVuZGVyaXZlIHVucXVvdGUgdW5xdW90ZS1zcGxpY2luZyB1cGRhdGUtaW4gdXBkYXRlLXByb3h5IHVzZSB2YWwgdmFscyB2YXItZ2V0IHZhci1zZXQgdmFyPyB2YXJ5LW1ldGEgdmVjIHZlY3RvciB2ZWN0b3I/IHdoZW4gd2hlbi1maXJzdCB3aGVuLWxldCB3aGVuLW5vdCB3aGlsZSB3aXRoLWJpbmRpbmdzIHdpdGgtYmluZGluZ3MqIHdpdGgtaW4tc3RyIHdpdGgtbG9hZGluZy1jb250ZXh0IHdpdGgtbG9jYWwtdmFycyB3aXRoLW1ldGEgd2l0aC1vcGVuIHdpdGgtb3V0LXN0ciB3aXRoLXByZWNpc2lvbiB4bWwtc2VxIHplcm8/IHppcG1hcCAiLnNwbGl0KCIgIikpLHQ9aS5hcnJheVRvTWFwKCJkZWYgZG8gZm4gaWYgbGV0IGxvb3AgbW9uaXRvci1lbnRlciBtb25pdG9yLWV4aXQgbmV3IHF1b3RlIHJlY3VyIHNldCEgdGhyb3cgdHJ5IHZhciIuc3BsaXQoIiAiKSksbj1pLmFycmF5VG9NYXAoInRydWUgZmFsc2UgbmlsIi5zcGxpdCgiICIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IjsuKiQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJePWJlZ2luJCIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IltcXCh8XFwpXSJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IltcXCdcXChdIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiW1xcW3xcXF1dIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiW1xce3xcXH18XFwjXFx7fFxcI1xcfV0ifSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiJbXFwmXSJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IltcXCNcXF5cXHtdIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiW1xcJV0ifSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiJbQF0ifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIwW3hYXVswLTlhLWZBLUZdK1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IlsrLV0/XFxkKyg/Oig/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPyk/XFxiIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZSIscmVnZXg6IlshfFxcJHwlfCZ8XFwqfFxcLVxcLXxcXC18XFwrXFwrfFxcK3x8PXwhPXw8PXw+PXw8Pnw8fD58IXwmJl0ifSx7dG9rZW46ZnVuY3Rpb24ocil7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkocik/ImtleXdvcmQiOm4uaGFzT3duUHJvcGVydHkocik/ImNvbnN0YW50Lmxhbmd1YWdlIjplLmhhc093blByb3BlcnR5KHIpPyJzdXBwb3J0LmZ1bmN0aW9uIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj8kJyxuZXh0OiJzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6Ils6XSg/OlthLXpBLVpdfFxcZCkrIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDonLyMiKD86XFwufCg/OlxcIil8W14iIlxuXSkqIi9nJ31dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Il49ZW5kJCIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiXFxcXC4ifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1teIlxcXFxdKj8iJyxuZXh0OiJzdGFydCJ9XX19O3IuaW5oZXJpdHMobyxzKSx0LkNsb2p1cmVIaWdobGlnaHRSdWxlcz1vfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19wYXJlbnNfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9yYW5nZSIpLlJhbmdlLGk9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuL15ccyskLy50ZXN0KGUpPy9eXHMqXCkvLnRlc3QodCk6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldExpbmUodCksaT1uLm1hdGNoKC9eKFxzKlwpKS8pO2lmKCFpKXJldHVybiAwO3ZhciBzPWlbMV0ubGVuZ3RoLG89ZS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dCxjb2x1bW46c30pO2lmKCFvfHxvLnJvdz09dClyZXR1cm4gMDt2YXIgdT10aGlzLiRnZXRJbmRlbnQoZS5nZXRMaW5lKG8ucm93KSk7ZS5yZXBsYWNlKG5ldyByKHQsMCx0LHMtMSksdSl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gdD90WzFdOiIifX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuTWF0Y2hpbmdQYXJlbnNPdXRkZW50PWl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-coffee.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9jb2ZmZWUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvY29mZmVlX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2UvbW9kZS9mb2xkaW5nL2NvZmZlZSIsImFjZS9yYW5nZSIsImFjZS9tb2RlL3RleHQiLCJhY2Uvd29ya2VyL3dvcmtlcl9jbGllbnQiLCJhY2UvbGliL29vcCJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBjKCl7dGhpcy4kdG9rZW5pemVyPW5ldyByKChuZXcgaSkuZ2V0UnVsZXMoKSksdGhpcy4kb3V0ZGVudD1uZXcgcyx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgbygiPXw9PnwtPnxcXHMqY2xhc3MgW14jXSoiKX12YXIgcj1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsaT1lKCIuL2NvZmZlZV9oaWdobGlnaHRfcnVsZXMiKS5Db2ZmZWVIaWdobGlnaHRSdWxlcyxzPWUoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LG89ZSgiLi9mb2xkaW5nL2NvZmZlZSIpLkZvbGRNb2RlLHU9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxhPWUoIi4vdGV4dCIpLk1vZGUsZj1lKCIuLi93b3JrZXIvd29ya2VyX2NsaWVudCIpLldvcmtlckNsaWVudCxsPWUoIi4uL2xpYi9vb3AiKTtsLmluaGVyaXRzKGMsYSksZnVuY3Rpb24oKXt2YXIgZT0vKD86Wyh7Wz06XXxbLT1dPnxcYig/OmVsc2V8c3dpdGNofHRyeXxjYXRjaCg/OlxzKlskQS1aYS16X1x4N2YtXHVmZmZmXVskXHdceDdmLVx1ZmZmZl0qKT98ZmluYWxseSkpXHMqJC8sdD0vXihccyopIy8sbj0vXlxzKiMjIyg/ISMpLyxyPS9eXHMqLzt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKHQsbixyKXt2YXIgaT10aGlzLiRnZXRJbmRlbnQobikscz10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2VucyhuLHQpLnRva2VucztyZXR1cm4oIXMubGVuZ3RofHxzW3MubGVuZ3RoLTFdLnR5cGUhPT0iY29tbWVudCIpJiZ0PT09InN0YXJ0IiYmZS50ZXN0KG4pJiYoaSs9ciksaX0sdGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oZSxpLHMsbyl7Y29uc29sZS5sb2coInRvZ2dsZSIpO3ZhciBhPW5ldyB1KDAsMCwwLDApO2Zvcih2YXIgZj1zO2Y8PW87KytmKXt2YXIgbD1pLmdldExpbmUoZik7aWYobi50ZXN0KGwpKWNvbnRpbnVlO3QudGVzdChsKT9sPWwucmVwbGFjZSh0LCIkMSIpOmw9bC5yZXBsYWNlKHIsIiQmIyIpLGEuZW5kLnJvdz1hLnN0YXJ0LnJvdz1mLGEuZW5kLmNvbHVtbj1sLmxlbmd0aCsxLGkucmVwbGFjZShhLGwpfX0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudCh0LG4pfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KHQsbil9LHRoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBmKFsiYWNlIl0sImFjZS9tb2RlL2NvZmZlZV93b3JrZXIiLCJXb3JrZXIiKTtyZXR1cm4gdC5hdHRhY2hUb0RvY3VtZW50KGUuZ2V0RG9jdW1lbnQoKSksdC5vbigiZXJyb3IiLGZ1bmN0aW9uKHQpe2Uuc2V0QW5ub3RhdGlvbnMoW3QuZGF0YV0pfSksdC5vbigib2siLGZ1bmN0aW9uKHQpe2UuY2xlYXJBbm5vdGF0aW9ucygpfSksdH19LmNhbGwoYy5wcm90b3R5cGUpLHQuTW9kZT1jfSksZGVmaW5lKCJhY2UvbW9kZS9jb2ZmZWVfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9sYW5nIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBvKCl7dmFyIGU9IlskQS1aYS16X1xceDdmLVxcdWZmZmZdWyRcXHdcXHg3Zi1cXHVmZmZmXSoiLHQ9e3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9LG49ci5hcnJheVRvTWFwKCJ0aGlzfHRocm93fHRoZW58dHJ5fHR5cGVvZnxzdXBlcnxzd2l0Y2h8cmV0dXJufGJyZWFrfGJ5KXxjb250aW51ZXxjYXRjaHxjbGFzc3xpbnxpbnN0YW5jZW9mfGlzfGlzbnR8aWZ8ZWxzZXxleHRlbmRzfGZvcnxmb3Jvd258ZmluYWxseXxmdW5jdGlvbnx3aGlsZXx3aGVufG5ld3xub3xub3R8ZGVsZXRlfGRlYnVnZ2VyfGRvfGxvb3B8b2Z8b2ZmfG9yfG9ufHVubGVzc3x1bnRpbHxhbmR8eWVzIi5zcGxpdCgifCIpKSxpPXIuYXJyYXlUb01hcCgidHJ1ZXxmYWxzZXxudWxsfHVuZGVmaW5lZCIuc3BsaXQoInwiKSkscz1yLmFycmF5VG9NYXAoImNhc2V8Y29uc3R8ZGVmYXVsdHxmdW5jdGlvbnx2YXJ8dm9pZHx3aXRofGVudW18ZXhwb3J0fGltcGxlbWVudHN8aW50ZXJmYWNlfGxldHxwYWNrYWdlfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xzdGF0aWN8eWllbGR8X19oYXNQcm9wfGV4dGVuZHN8c2xpY2V8YmluZHxpbmRleE9mIi5zcGxpdCgifCIpKSxvPXIuYXJyYXlUb01hcCgiQXJyYXl8Qm9vbGVhbnxEYXRlfEZ1bmN0aW9ufE51bWJlcnxPYmplY3R8UmVnRXhwfFJlZmVyZW5jZUVycm9yfFJhbmdlRXJyb3J8U3RyaW5nfFN5bnRheEVycm9yfEVycm9yfEV2YWxFcnJvcnxUeXBlRXJyb3J8VVJJRXJyb3IiLnNwbGl0KCJ8IikpLHU9ci5hcnJheVRvTWFwKCJNYXRofEpTT058aXNOYU58aXNGaW5pdGV8cGFyc2VJbnR8cGFyc2VGbG9hdHxlbmNvZGVVUkl8ZW5jb2RlVVJJQ29tcG9uZW50fGRlY29kZVVSSXxkZWNvZGVVUklDb21wb25lbnR8UmFuZ2VFcnJvcnxTdHJpbmd8U3ludGF4RXJyb3J8RXJyb3J8RXZhbEVycm9yfFR5cGVFcnJvcnxVUklFcnJvciIuc3BsaXQoInwiKSk7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImlkZW50aWZpZXIiLHJlZ2V4OiIoPzooPzpcXC58OjopXFxzKikiK2V9LHt0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJAKD86IitlKyIpPyJ9LHt0b2tlbjpmdW5jdGlvbihlKXtyZXR1cm4gbi5oYXNPd25Qcm9wZXJ0eShlKT8ia2V5d29yZCI6aS5oYXNPd25Qcm9wZXJ0eShlKT8iY29uc3RhbnQubGFuZ3VhZ2UiOnMuaGFzT3duUHJvcGVydHkoZSk/ImludmFsaWQuaWxsZWdhbCI6by5oYXNPd25Qcm9wZXJ0eShlKT8ibGFuZ3VhZ2Uuc3VwcG9ydC5jbGFzcyI6dS5oYXNPd25Qcm9wZXJ0eShlKT8ibGFuZ3VhZ2Uuc3VwcG9ydC5mdW5jdGlvbiI6ImlkZW50aWZpZXIifSxyZWdleDplfSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIoPzoweFtcXGRhLWZBLUZdK3woPzpcXGQrKD86XFwuXFxkKyk/fFxcLlxcZCspKD86W2VFXVsrLV0/XFxkKyk/KSJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiJycnIixuZXh0OiJxZG9jIn0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiciIiInLG5leHQ6InFxZG9jIn0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiInIixuZXh0OiJxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiciJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiYCIsbmV4dDoianMifSx7dG9rZW46InN0cmluZy5yZWdleCIsbWVyZ2U6ITAscmVnZXg6Ii8vLyIsbmV4dDoiaGVyZWdleCJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4IixyZWdleDoiLyg/IVxccylbXlsvXFxuXFxcXF0qKD86ICg/OlxcXFwufFxcW1teXFxdXFxuXFxcXF0qKD86XFxcXC5bXlxcXVxcblxcXFxdKikqXFxdKVteWy9cXG5cXFxcXSopKi9baW1neV17MCw0fSg/IVxcdykifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIjIyMoPyEjKSIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6IiMuKiJ9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJcXD98XFw6fFxcLHxcXC4ifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiIoPzpbXFwtPV0+fFstKyovJTw+JnxeIT89XT18Pj4+PT98XFwtXFwtfFxcK1xcK3w6OnwmJj18XFx8XFx8PXw8PD18Pj49fFxcP1xcLnxcXC57MiwzfXxbISorLT0+PF0pIn0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJbKHtbXSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiW1xcXX0pXSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0scWRvYzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIuKj8nJyciLG5leHQ6InN0YXJ0In0sdF0scXFkb2M6W3t0b2tlbjoic3RyaW5nIixyZWdleDonLio/IiIiJyxuZXh0OiJzdGFydCJ9LHRdLHFzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiW15cXFxcJ10qKD86XFxcXC5bXlxcXFwnXSopKiciLG1lcmdlOiEwLG5leHQ6InN0YXJ0In0sdF0scXFzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDonW15cXFxcIl0qKD86XFxcXC5bXlxcXFwiXSopKiInLG1lcmdlOiEwLG5leHQ6InN0YXJ0In0sdF0sanM6W3t0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiW15cXFxcYF0qKD86XFxcXC5bXlxcXFxgXSopKmAiLG5leHQ6InN0YXJ0In0sdF0saGVyZWdleDpbe3Rva2VuOiJzdHJpbmcucmVnZXgiLHJlZ2V4OiIuKj8vLy9baW1neV17MCw0fSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQucmVnZXgiLHJlZ2V4OiJcXHMrKD86Iy4qKT8ifSx7dG9rZW46InN0cmluZy5yZWdleCIsbWVyZ2U6ITAscmVnZXg6IlxcUysifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/IyMjIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfX12YXIgcj1lKCIuLi9saWIvbGFuZyIpLGk9ZSgiLi4vbGliL29vcCIpLHM9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcztpLmluaGVyaXRzKG8scyksdC5Db2ZmZWVIaWdobGlnaHRSdWxlcz1vfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXlxzKyQvLnRlc3QoZSk/L15ccypcfS8udGVzdCh0KTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0TGluZSh0KSxpPW4ubWF0Y2goL14oXHMqXH0pLyk7aWYoIWkpcmV0dXJuIDA7dmFyIHM9aVsxXS5sZW5ndGgsbz1lLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp0LGNvbHVtbjpzfSk7aWYoIW98fG8ucm93PT10KXJldHVybiAwO3ZhciB1PXRoaXMuJGdldEluZGVudChlLmdldExpbmUoby5yb3cpKTtlLnJlcGxhY2UobmV3IHIodCwwLHQscy0xKSx1KX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14oXHMrKS8pO3JldHVybiB0P3RbMV06IiJ9fSkuY2FsbChpLnByb3RvdHlwZSksdC5NYXRjaGluZ0JyYWNlT3V0ZGVudD1pfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NvZmZlZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxzPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2Usbz10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtyLmluaGVyaXRzKG8saSksZnVuY3Rpb24oKXt0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5pbmRlbnRhdGlvbkJsb2NrKGUsbik7aWYocilyZXR1cm4gcjt2YXIgaT0vXFMvLG89ZS5nZXRMaW5lKG4pLHU9by5zZWFyY2goaSk7aWYodT09LTF8fG9bdV0hPSIjIilyZXR1cm47dmFyIGE9by5sZW5ndGgsZj1lLmdldExlbmd0aCgpLGw9bixjPW47d2hpbGUoKytuPGYpe289ZS5nZXRMaW5lKG4pO3ZhciBoPW8uc2VhcmNoKGkpO2lmKGg9PS0xKWNvbnRpbnVlO2lmKG9baF0hPSIjIilicmVhaztjPW59aWYoYz5sKXt2YXIgcD1lLmdldExpbmUoYykubGVuZ3RoO3JldHVybiBuZXcgcyhsLGEsYyxwKX19LHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pLGk9ci5zZWFyY2goL1xTLykscz1lLmdldExpbmUobisxKSxvPWUuZ2V0TGluZShuLTEpLHU9by5zZWFyY2goL1xTLyksYT1zLnNlYXJjaCgvXFMvKTtpZihpPT0tMSlyZXR1cm4gZS5mb2xkV2lkZ2V0c1tuLTFdPXUhPS0xJiZ1PGE/InN0YXJ0IjoiIiwiIjtpZih1PT0tMSl7aWYoaT09YSYmcltpXT09IiMiJiZzW2ldPT0iIyIpcmV0dXJuIGUuZm9sZFdpZGdldHNbbi0xXT0iIixlLmZvbGRXaWRnZXRzW24rMV09IiIsInN0YXJ0In1lbHNlIGlmKHU9PWkmJnJbaV09PSIjIiYmb1tpXT09IiMiJiZlLmdldExpbmUobi0yKS5zZWFyY2goL1xTLyk9PS0xKXJldHVybiBlLmZvbGRXaWRnZXRzW24tMV09InN0YXJ0IixlLmZvbGRXaWRnZXRzW24rMV09IiIsIiI7cmV0dXJuIHUhPS0xJiZ1PGk/ZS5mb2xkV2lkZ2V0c1tuLTFdPSJzdGFydCI6ZS5mb2xkV2lkZ2V0c1tuLTFdPSIiLGk8YT8ic3RhcnQiOiIifX0uY2FsbChvLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2UsaT10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChyKT8ic3RhcnQiOnQ9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3Qocik/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT0vXFMvLHM9ZS5nZXRMaW5lKHQpLG89cy5zZWFyY2goaSk7aWYobz09LTEpcmV0dXJuO3ZhciB1PW58fHMubGVuZ3RoLGE9ZS5nZXRMZW5ndGgoKSxmPXQsbD10O3doaWxlKCsrdDxhKXt2YXIgYz1lLmdldExpbmUodCkuc2VhcmNoKGkpO2lmKGM9PS0xKWNvbnRpbnVlO2lmKGM8PW8pYnJlYWs7bD10fWlmKGw+Zil7dmFyIGg9ZS5nZXRMaW5lKGwpLmxlbmd0aDtyZXR1cm4gbmV3IHIoZix1LGwsaCl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oZSx0LG4saSxzKXt2YXIgbz17cm93Om4sY29sdW1uOmkrMX0sdT1lLiRmaW5kQ2xvc2luZ0JyYWNrZXQodCxvLHMpO2lmKCF1KXJldHVybjt2YXIgYT1lLmZvbGRXaWRnZXRzW3Uucm93XTtyZXR1cm4gYT09bnVsbCYmKGE9dGhpcy5nZXRGb2xkV2lkZ2V0KGUsdS5yb3cpKSxhPT0ic3RhcnQiJiZ1LnJvdz5vLnJvdyYmKHUucm93LS0sdS5jb2x1bW49ZS5nZXRMaW5lKHUucm93KS5sZW5ndGgpLHIuZnJvbVBvaW50cyhvLHUpfX0pLmNhbGwoaS5wcm90b3R5cGUpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-coldfusion.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9jb2xkZnVzaW9uIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS94bWwiLCJhY2UvbW9kZS9qYXZhc2NyaXB0IiwiYWNlL21vZGUvY3NzIiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2NvbGRmdXNpb25faGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4veG1sIikuTW9kZSxzPWUoIi4vamF2YXNjcmlwdCIpLk1vZGUsbz1lKCIuL2NzcyIpLk1vZGUsdT1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsYT1lKCIuL2NvbGRmdXNpb25faGlnaGxpZ2h0X3J1bGVzIikuQ29sZGZ1c2lvbkhpZ2hsaWdodFJ1bGVzLGY9ZnVuY3Rpb24oKXtpLmNhbGwodGhpcyk7dmFyIGU9bmV3IGE7dGhpcy4kdG9rZW5pemVyPW5ldyB1KGUuZ2V0UnVsZXMoKSksdGhpcy4kZW1iZWRzPWUuZ2V0RW1iZWRzKCksdGhpcy5jcmVhdGVNb2RlRGVsZWdhdGVzKHsianMtIjpzLCJjc3MtIjpvfSl9O3IuaW5oZXJpdHMoZixpKSxmdW5jdGlvbigpe3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRnZXRJbmRlbnQodCl9fS5jYWxsKGYucHJvdG90eXBlKSx0Lk1vZGU9Zn0pLGRlZmluZSgiYWNlL21vZGUveG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3htbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9iZWhhdmlvdXIveG1sIiwiYWNlL21vZGUvZm9sZGluZy94bWwiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4veG1sX2hpZ2hsaWdodF9ydWxlcyIpLlhtbEhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9iZWhhdmlvdXIveG1sIikuWG1sQmVoYXZpb3VyLGE9ZSgiLi9mb2xkaW5nL3htbCIpLkZvbGRNb2RlLGY9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLiRiZWhhdmlvdXI9bmV3IHUsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGF9O3IuaW5oZXJpdHMoZixpKSxmdW5jdGlvbigpe3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRnZXRJbmRlbnQodCl9fS5jYWxsKGYucHJvdG90eXBlKSx0Lk1vZGU9Zn0pLGRlZmluZSgiYWNlL21vZGUveG1sX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUveG1sX3V0aWwiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3htbF91dGlsIikscz1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLG89ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidGV4dCIscmVnZXg6IjxcXCFcXFtDREFUQVxcWyIsbmV4dDoiY2RhdGEifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXD8uKj9cXD8+In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiPFxcIS0tIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJ4bWxfcGUiLHJlZ2V4OiI8XFwhLio/PiJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvPyIsbmV4dDoidGFnIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29uc3RhbnQuY2hhcmFjdGVyLmVudGl0eSIscmVnZXg6Iig/OiYjWzAtOV0rOyl8KD86JiN4WzAtOWEtZkEtRl0rOyl8KD86JlthLXpBLVowLTlfOlxcLi1dKzspIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiW148XSsifV0sY2RhdGE6W3t0b2tlbjoidGV4dCIscmVnZXg6IlxcXVxcXT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6Iig/OlteXFxdXXxcXF0oPyFcXF0+KSkrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qPy0tPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0saS50YWcodGhpcy4kcnVsZXMsInRhZyIsInN0YXJ0Iil9O3IuaW5oZXJpdHMobyxzKSx0LlhtbEhpZ2hsaWdodFJ1bGVzPW99KSxkZWZpbmUoImFjZS9tb2RlL3htbF91dGlsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuW3t0b2tlbjoic3RyaW5nIixyZWdleDonIi4qPyInfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6J1siXS4qJyxuZXh0OmUrIl9xcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4qPycifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IlsnXS4qIixuZXh0OmUrIl9xc3RyaW5nIn1dfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm5be3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKj8iK2UsbmV4dDp0fSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfXQudGFnPWZ1bmN0aW9uKGUsdCxuLHMpe2VbdF09W3t0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46ZnVuY3Rpb24oZSl7cmV0dXJuIHMmJnNbZV0/Im1ldGEudGFnLnRhZy1uYW1lLiIrc1tlXToibWV0YS50YWcudGFnLW5hbWUifSxtZXJnZTohMCxyZWdleDoiWy1fYS16QS1aMC05Ol0rIixuZXh0OnQrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6dCsiX2VtYmVkX2F0dHJpYnV0ZV9saXN0In1dLGVbdCsiX3FzdHJpbmciXT1pKCInIix0KyJfZW1iZWRfYXR0cmlidXRlX2xpc3QiKSxlW3QrIl9xcXN0cmluZyJdPWkoJyInLHQrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCIpLGVbdCsiX2VtYmVkX2F0dHJpYnV0ZV9saXN0Il09W3t0b2tlbjoibWV0YS50YWciLG1lcmdlOiEwLHJlZ2V4OiIvPz4iLG5leHQ6bn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiPSJ9LHt0b2tlbjoiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lIixyZWdleDoiWy1fYS16QS1aMC05Ol0rIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLmNvbmNhdChyKHQpKX19KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci94bWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvdG9rZW5faXRlcmF0b3IiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gdShlLHQpe3ZhciBuPSEwLHI9ZS50eXBlLnNwbGl0KCIuIiksaT10LnNwbGl0KCIuIik7cmV0dXJuIGkuZm9yRWFjaChmdW5jdGlvbihlKXtpZihyLmluZGV4T2YoZSk9PS0xKXJldHVybiBuPSExLCExfSksbn12YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIscz1lKCIuL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixvPWUoIi4uLy4uL3Rva2VuX2l0ZXJhdG9yIikuVG9rZW5JdGVyYXRvcixhPWZ1bmN0aW9uKCl7dGhpcy5pbmhlcml0KHMsWyJzdHJpbmdfZHF1b3RlcyJdKSx0aGlzLmFkZCgiYXV0b2Nsb3NpbmciLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09Ij4iKXt2YXIgcz1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1uZXcgbyhyLHMucm93LHMuY29sdW1uKSxmPWEuZ2V0Q3VycmVudFRva2VuKCksbD0hMTtpZighZnx8IXUoZiwibWV0YS50YWciKSYmKCF1KGYsInRleHQiKXx8IWYudmFsdWUubWF0Y2goIi8iKSkpe2RvIGY9YS5zdGVwQmFja3dhcmQoKTt3aGlsZShmJiYodShmLCJzdHJpbmciKXx8dShmLCJrZXl3b3JkLm9wZXJhdG9yIil8fHUoZiwiZW50aXR5LmF0dHJpYnV0ZS1uYW1lIil8fHUoZiwidGV4dCIpKSl9ZWxzZSBsPSEwO2lmKCFmfHwhdShmLCJtZXRhLnRhZy1uYW1lIil8fGEuc3RlcEJhY2t3YXJkKCkudmFsdWUubWF0Y2goIi8iKSlyZXR1cm47dmFyIGM9Zi52YWx1ZTtpZihsKXZhciBjPWMuc3Vic3RyaW5nKDAscy5jb2x1bW4tZi5zdGFydCk7cmV0dXJue3RleHQ6Ij48LyIrYysiPiIsc2VsZWN0aW9uOlsxLDFdfX19KSx0aGlzLmFkZCgiYXV0b2luZGVudCIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iXG4iKXt2YXIgcz1uLmdldEN1cnNvclBvc2l0aW9uKCksbz1yLmRvYy5nZXRMaW5lKHMucm93KSx1PW8uc3Vic3RyaW5nKHMuY29sdW1uLHMuY29sdW1uKzIpO2lmKHU9PSI8LyIpe3ZhciBhPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKHMucm93KSkrci5nZXRUYWJTdHJpbmcoKSxmPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKHMucm93KSk7cmV0dXJue3RleHQ6IlxuIithKyJcbiIrZixzZWxlY3Rpb246WzEsYS5sZW5ndGgsMSxhLmxlbmd0aF19fX19KX07ci5pbmhlcml0cyhhLGkpLHQuWG1sQmVoYXZpb3VyPWF9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIscz1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09InsiKXt2YXIgcz1uLmdldFNlbGVjdGlvblJhbmdlKCksbz1yLmRvYy5nZXRUZXh0UmFuZ2Uocyk7cmV0dXJuIG8hPT0iIj97dGV4dDoieyIrbysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoaT09In0iKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJ9Iil7dmFyIGw9ci4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOnUuY29sdW1uKzEscm93OnUucm93fSk7aWYobCE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihpPT0iXG4iKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJ9Iil7dmFyIGM9ci5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dS5yb3csY29sdW1uOnUuY29sdW1uKzF9KTtpZighYylyZXR1cm4gbnVsbDt2YXIgaD10aGlzLmdldE5leHRMaW5lSW5kZW50KGUsYS5zdWJzdHJpbmcoMCxhLmxlbmd0aC0xKSxyLmdldFRhYlN0cmluZygpKSxwPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKGMucm93KSk7cmV0dXJue3RleHQ6IlxuIitoKyJcbiIrcCxzZWxlY3Rpb246WzEsaC5sZW5ndGgsMSxoLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSJ7Iil7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLmVuZC5jb2x1bW4saS5lbmQuY29sdW1uKzEpO2lmKHU9PSJ9IilyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSIoIil7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO3JldHVybiBvIT09IiI/e3RleHQ6IigiK28rIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGk9PSIpIil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0iKSIpe3ZhciBsPXIuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjp1LmNvbHVtbisxLHJvdzp1LnJvd30pO2lmKGwhPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcz09IigiKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09IikiKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0nIid8fGk9PSInIil7dmFyIHM9aSxvPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSx1PXIuZG9jLmdldFRleHRSYW5nZShvKTtpZih1IT09IiIpcmV0dXJue3RleHQ6cyt1K3Msc2VsZWN0aW9uOiExfTt2YXIgYT1uLmdldEN1cnNvclBvc2l0aW9uKCksZj1yLmRvYy5nZXRMaW5lKGEucm93KSxsPWYuc3Vic3RyaW5nKGEuY29sdW1uLTEsYS5jb2x1bW4pO2lmKGw9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGM9ci5nZXRUb2tlbnMoby5zdGFydC5yb3cpLGg9MCxwLGQ9LTE7Zm9yKHZhciB2PTA7djxjLmxlbmd0aDt2Kyspe3A9Y1t2XSxwLnR5cGU9PSJzdHJpbmciP2Q9LTE6ZDwwJiYoZD1wLnZhbHVlLmluZGV4T2YocykpO2lmKHAudmFsdWUubGVuZ3RoK2g+by5zdGFydC5jb2x1bW4pYnJlYWs7aCs9Y1t2XS52YWx1ZS5sZW5ndGh9aWYoIXB8fGQ8MCYmcC50eXBlIT09ImNvbW1lbnQiJiYocC50eXBlIT09InN0cmluZyJ8fG8uc3RhcnQuY29sdW1uIT09cC52YWx1ZS5sZW5ndGgraC0xJiZwLnZhbHVlLmxhc3RJbmRleE9mKHMpPT09cC52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6cytzLHNlbGVjdGlvbjpbMSwxXX07aWYocCYmcC50eXBlPT09InN0cmluZyIpe3ZhciBtPWYuc3Vic3RyaW5nKGEuY29sdW1uLGEuY29sdW1uKzEpO2lmKG09PXMpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJihzPT0nIid8fHM9PSInIikpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5zdGFydC5jb2x1bW4rMSxpLnN0YXJ0LmNvbHVtbisyKTtpZih1PT0nIicpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSl9O3IuaW5oZXJpdHMocyxpKSx0LkNzdHlsZUJlaGF2aW91cj1zfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL3htbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLCJhY2UvdG9rZW5faXRlcmF0b3IiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vLi4vbGliL2xhbmciKSxzPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2Usbz1lKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLHU9ZSgiLi4vLi4vdG9rZW5faXRlcmF0b3IiKS5Ub2tlbkl0ZXJhdG9yLGE9dC5Gb2xkTW9kZT1mdW5jdGlvbihlKXtvLmNhbGwodGhpcyksdGhpcy52b2lkRWxlbWVudHM9ZXx8e319O3IuaW5oZXJpdHMoYSxvKSxmdW5jdGlvbigpe3RoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmUoZSxuKTtyZXR1cm4gci5jbG9zaW5nP3Q9PSJtYXJrYmVnaW5lbmQiPyJlbmQiOiIiOiFyLnRhZ05hbWV8fHRoaXMudm9pZEVsZW1lbnRzW3IudGFnTmFtZS50b0xvd2VyQ2FzZSgpXT8iIjpyLnNlbGZDbG9zaW5nPyIiOnIudmFsdWUuaW5kZXhPZigiLyIrci50YWdOYW1lKSE9PS0xPyIiOiJzdGFydCJ9LHRoaXMuX2dldEZpcnN0VGFnSW5MaW5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRUb2tlbnModCkscj0iIjtmb3IodmFyIHM9MDtzPG4ubGVuZ3RoO3MrKyl7dmFyIG89bltzXTtvLnR5cGUuaW5kZXhPZigibWV0YS50YWciKT09PTA/cis9by52YWx1ZTpyKz1pLnN0cmluZ1JlcGVhdCgiICIsby52YWx1ZS5sZW5ndGgpfXJldHVybiB0aGlzLl9wYXJzZVRhZyhyKX0sdGhpcy50YWdSZT0vXihccyopKDw/KFwvPykoWy1fYS16QS1aMC05OiFdKilccyooXC8/KT4/KS8sdGhpcy5fcGFyc2VUYWc9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50YWdSZS5leGVjKGUpLG49dGhpcy50YWdSZS5sYXN0SW5kZXh8fDA7cmV0dXJuIHRoaXMudGFnUmUubGFzdEluZGV4PTAse3ZhbHVlOmUsbWF0Y2g6dD90WzJdOiIiLGNsb3Npbmc6dD8hIXRbM106ITEsc2VsZkNsb3Npbmc6dD8hIXRbNV18fHRbMl09PSIvPiI6ITEsdGFnTmFtZTp0P3RbNF06IiIsY29sdW1uOnRbMV0/bit0WzFdLmxlbmd0aDpufX0sdGhpcy5fcmVhZFRhZ0ZvcndhcmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRDdXJyZW50VG9rZW4oKTtpZighdClyZXR1cm4gbnVsbDt2YXIgbj0iIixyO2RvIGlmKHQudHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MCl7aWYoIXIpdmFyIHI9e3JvdzplLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjplLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpfTtuKz10LnZhbHVlO2lmKG4uaW5kZXhPZigiPiIpIT09LTEpe3ZhciBpPXRoaXMuX3BhcnNlVGFnKG4pO3JldHVybiBpLnN0YXJ0PXIsaS5lbmQ9e3JvdzplLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjplLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK3QudmFsdWUubGVuZ3RofSxlLnN0ZXBGb3J3YXJkKCksaX19d2hpbGUodD1lLnN0ZXBGb3J3YXJkKCkpO3JldHVybiBudWxsfSx0aGlzLl9yZWFkVGFnQmFja3dhcmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRDdXJyZW50VG9rZW4oKTtpZighdClyZXR1cm4gbnVsbDt2YXIgbj0iIixyO2RvIGlmKHQudHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MCl7cnx8KHI9e3JvdzplLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjplLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK3QudmFsdWUubGVuZ3RofSksbj10LnZhbHVlK247aWYobi5pbmRleE9mKCI8IikhPT0tMSl7dmFyIGk9dGhpcy5fcGFyc2VUYWcobik7cmV0dXJuIGkuZW5kPXIsaS5zdGFydD17cm93OmUuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmUuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCl9LGUuc3RlcEJhY2t3YXJkKCksaX19d2hpbGUodD1lLnN0ZXBCYWNrd2FyZCgpKTtyZXR1cm4gbnVsbH0sdGhpcy5fcG9wPWZ1bmN0aW9uKGUsdCl7d2hpbGUoZS5sZW5ndGgpe3ZhciBuPWVbZS5sZW5ndGgtMV07aWYoIXR8fG4udGFnTmFtZT09dC50YWdOYW1lKXJldHVybiBlLnBvcCgpO2lmKHRoaXMudm9pZEVsZW1lbnRzW3QudGFnTmFtZV0pcmV0dXJuO2lmKHRoaXMudm9pZEVsZW1lbnRzW24udGFnTmFtZV0pe2UucG9wKCk7Y29udGludWV9cmV0dXJuIG51bGx9fSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmUoZSxuKTtpZighci5tYXRjaClyZXR1cm4gbnVsbDt2YXIgaT1yLmNsb3Npbmd8fHIuc2VsZkNsb3Npbmcsbz1bXSxhO2lmKCFpKXt2YXIgZj1uZXcgdShlLG4sci5jb2x1bW4pLGw9e3JvdzpuLGNvbHVtbjpyLmNvbHVtbityLnRhZ05hbWUubGVuZ3RoKzJ9O3doaWxlKGE9dGhpcy5fcmVhZFRhZ0ZvcndhcmQoZikpe2lmKGEuc2VsZkNsb3Npbmcpe2lmKCFvLmxlbmd0aClyZXR1cm4gYS5zdGFydC5jb2x1bW4rPWEudGFnTmFtZS5sZW5ndGgrMixhLmVuZC5jb2x1bW4tPTIscy5mcm9tUG9pbnRzKGEuc3RhcnQsYS5lbmQpO2NvbnRpbnVlfWlmKGEuY2xvc2luZyl7dGhpcy5fcG9wKG8sYSk7aWYoby5sZW5ndGg9PTApcmV0dXJuIHMuZnJvbVBvaW50cyhsLGEuc3RhcnQpfWVsc2Ugby5wdXNoKGEpfX1lbHNle3ZhciBmPW5ldyB1KGUsbixyLmNvbHVtbityLm1hdGNoLmxlbmd0aCksYz17cm93Om4sY29sdW1uOnIuY29sdW1ufTt3aGlsZShhPXRoaXMuX3JlYWRUYWdCYWNrd2FyZChmKSl7aWYoYS5zZWxmQ2xvc2luZyl7aWYoIW8ubGVuZ3RoKXJldHVybiBhLnN0YXJ0LmNvbHVtbis9YS50YWdOYW1lLmxlbmd0aCsyLGEuZW5kLmNvbHVtbi09MixzLmZyb21Qb2ludHMoYS5zdGFydCxhLmVuZCk7Y29udGludWV9aWYoIWEuY2xvc2luZyl7dGhpcy5fcG9wKG8sYSk7aWYoby5sZW5ndGg9PTApcmV0dXJuIGEuc3RhcnQuY29sdW1uKz1hLnRhZ05hbWUubGVuZ3RoKzIscy5mcm9tUG9pbnRzKGEuc3RhcnQsYyl9ZWxzZSBvLnB1c2goYSl9fX19LmNhbGwoYS5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGk9dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobik7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3Qocik/InN0YXJ0Ijp0PT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KHIpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihlLHQsbil7dmFyIGk9L1xTLyxzPWUuZ2V0TGluZSh0KSxvPXMuc2VhcmNoKGkpO2lmKG89PS0xKXJldHVybjt2YXIgdT1ufHxzLmxlbmd0aCxhPWUuZ2V0TGVuZ3RoKCksZj10LGw9dDt3aGlsZSgrK3Q8YSl7dmFyIGM9ZS5nZXRMaW5lKHQpLnNlYXJjaChpKTtpZihjPT0tMSljb250aW51ZTtpZihjPD1vKWJyZWFrO2w9dH1pZihsPmYpe3ZhciBoPWUuZ2V0TGluZShsKS5sZW5ndGg7cmV0dXJuIG5ldyByKGYsdSxsLGgpfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGUsdCxuLGkscyl7dmFyIG89e3JvdzpuLGNvbHVtbjppKzF9LHU9ZS4kZmluZENsb3NpbmdCcmFja2V0KHQsbyxzKTtpZighdSlyZXR1cm47dmFyIGE9ZS5mb2xkV2lkZ2V0c1t1LnJvd107cmV0dXJuIGE9PW51bGwmJihhPXRoaXMuZ2V0Rm9sZFdpZGdldChlLHUucm93KSksYT09InN0YXJ0IiYmdS5yb3c+by5yb3cmJih1LnJvdy0tLHUuY29sdW1uPWUuZ2V0TGluZSh1LnJvdykubGVuZ3RoKSxyLmZyb21Qb2ludHMobyx1KX19KS5jYWxsKGkucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2UvcmFuZ2UiLCJhY2Uvd29ya2VyL3dvcmtlcl9jbGllbnQiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4vamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiKS5KYXZhU2NyaXB0SGlnaGxpZ2h0UnVsZXMsdT1lKCIuL21hdGNoaW5nX2JyYWNlX291dGRlbnQiKS5NYXRjaGluZ0JyYWNlT3V0ZGVudCxhPWUoIi4uL3JhbmdlIikuUmFuZ2UsZj1lKCIuLi93b3JrZXIvd29ya2VyX2NsaWVudCIpLldvcmtlckNsaWVudCxsPWUoIi4vYmVoYXZpb3VyL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixjPWUoIi4vZm9sZGluZy9jc3R5bGUiKS5Gb2xkTW9kZSxoPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBzKChuZXcgbykuZ2V0UnVsZXMoKSksdGhpcy4kb3V0ZGVudD1uZXcgdSx0aGlzLiRiZWhhdmlvdXI9bmV3IGwsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGN9O3IuaW5oZXJpdHMoaCxpKSxmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPSEwLHM9L14oXHMqKVwvXC8vO2Zvcih2YXIgbz1uO288PXI7bysrKWlmKCFzLnRlc3QodC5nZXRMaW5lKG8pKSl7aT0hMTticmVha31pZihpKXt2YXIgdT1uZXcgYSgwLDAsMCwwKTtmb3IodmFyIG89bjtvPD1yO28rKyl7dmFyIGY9dC5nZXRMaW5lKG8pLGw9Zi5tYXRjaChzKTt1LnN0YXJ0LnJvdz1vLHUuZW5kLnJvdz1vLHUuZW5kLmNvbHVtbj1sWzBdLmxlbmd0aCx0LnJlcGxhY2UodSxsWzFdKX19ZWxzZSB0LmluZGVudFJvd3MobixyLCIvLyIpfSx0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRnZXRJbmRlbnQodCksaT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2Vucyh0LGUpLHM9aS50b2tlbnMsbz1pLnN0YXRlO2lmKHMubGVuZ3RoJiZzW3MubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gcjtpZihlPT0ic3RhcnQifHxlPT0icmVnZXhfYWxsb3dlZCIpe3ZhciB1PXQubWF0Y2goL14uKig/OlxiY2FzZVxiLipcOnxbXHtcKFxbXSlccyokLyk7dSYmKHIrPW4pfWVsc2UgaWYoZT09ImRvYy1zdGFydCIpe2lmKG89PSJzdGFydCJ8fGU9PSJyZWdleF9hbGxvd2VkIilyZXR1cm4iIjt2YXIgdT10Lm1hdGNoKC9eXHMqKFwvPylcKi8pO3UmJih1WzFdJiYocis9IiAiKSxyKz0iKiAiKX1yZXR1cm4gcn0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudCh0LG4pfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KHQsbil9LHRoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBmKFsiYWNlIl0sImFjZS9tb2RlL2phdmFzY3JpcHRfd29ya2VyIiwiSmF2YVNjcmlwdFdvcmtlciIpO3JldHVybiB0LmF0dGFjaFRvRG9jdW1lbnQoZS5nZXREb2N1bWVudCgpKSx0Lm9uKCJqc2xpbnQiLGZ1bmN0aW9uKHQpe3ZhciBuPVtdO2Zvcih2YXIgcj0wO3I8dC5kYXRhLmxlbmd0aDtyKyspe3ZhciBpPXQuZGF0YVtyXTtpJiZuLnB1c2goe3JvdzppLmxpbmUtMSxjb2x1bW46aS5jaGFyYWN0ZXItMSx0ZXh0OmkucmVhc29uLHR5cGU6Indhcm5pbmciLGxpbnQ6aX0pfWUuc2V0QW5ub3RhdGlvbnMobil9KSx0Lm9uKCJuYXJjaXNzdXMiLGZ1bmN0aW9uKHQpe2Uuc2V0QW5ub3RhdGlvbnMoW3QuZGF0YV0pfSksdC5vbigidGVybWluYXRlIixmdW5jdGlvbigpe2UuY2xlYXJBbm5vdGF0aW9ucygpfSksdH19LmNhbGwoaC5wcm90b3R5cGUpLHQuTW9kZT1ofSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL3VuaWNvZGUiLCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi9saWIvbGFuZyIpLHM9ZSgiLi4vdW5pY29kZSIpLG89ZSgiLi9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiKS5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXMsdT1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGE9ZnVuY3Rpb24oKXt2YXIgZT1pLmFycmF5VG9NYXAoIkFycmF5fEJvb2xlYW58RGF0ZXxGdW5jdGlvbnxJdGVyYXRvcnxOdW1iZXJ8T2JqZWN0fFJlZ0V4cHxTdHJpbmd8UHJveHl8TmFtZXNwYWNlfFFOYW1lfFhNTHxYTUxMaXN0fEFycmF5QnVmZmVyfEZsb2F0MzJBcnJheXxGbG9hdDY0QXJyYXl8SW50MTZBcnJheXxJbnQzMkFycmF5fEludDhBcnJheXxVaW50MTZBcnJheXxVaW50MzJBcnJheXxVaW50OEFycmF5fFVpbnQ4Q2xhbXBlZEFycmF5fEVycm9yfEV2YWxFcnJvcnxJbnRlcm5hbEVycm9yfFJhbmdlRXJyb3J8UmVmZXJlbmNlRXJyb3J8U3RvcEl0ZXJhdGlvbnxTeW50YXhFcnJvcnxUeXBlRXJyb3J8VVJJRXJyb3J8ZGVjb2RlVVJJfGRlY29kZVVSSUNvbXBvbmVudHxlbmNvZGVVUkl8ZW5jb2RlVVJJQ29tcG9uZW50fGV2YWx8aXNGaW5pdGV8aXNOYU58cGFyc2VGbG9hdHxwYXJzZUludHxKU09OfE1hdGh8dGhpc3xhcmd1bWVudHN8cHJvdG90eXBlfHdpbmRvd3xkb2N1bWVudCIuc3BsaXQoInwiKSksdD1pLmFycmF5VG9NYXAoImJyZWFrfGNhc2V8Y2F0Y2h8Y29udGludWV8ZGVmYXVsdHxkZWxldGV8ZG98ZWxzZXxmaW5hbGx5fGZvcnxmdW5jdGlvbnxpZnxpbnxpbnN0YW5jZW9mfG5ld3xyZXR1cm58c3dpdGNofHRocm93fHRyeXx0eXBlb2Z8bGV0fHZhcnx3aGlsZXx3aXRofGNvbnN0fHlpZWxkfGltcG9ydHxnZXR8c2V0Ii5zcGxpdCgifCIpKSxuPSJjYXNlfGRvfGVsc2V8ZmluYWxseXxpbnxpbnN0YW5jZW9mfHJldHVybnx0aHJvd3x0cnl8dHlwZW9mfHlpZWxkIixyPWkuYXJyYXlUb01hcCgiX19wYXJlbnRfX3xfX2NvdW50X198ZXNjYXBlfHVuZXNjYXBlfHdpdGh8X19wcm90b19fIi5zcGxpdCgifCIpKSx1PWkuYXJyYXlUb01hcCgiY29uc3R8bGV0fHZhcnxmdW5jdGlvbiIuc3BsaXQoInwiKSksYT1pLmFycmF5VG9NYXAoIm51bGx8SW5maW5pdHl8TmFOfHVuZGVmaW5lZCIuc3BsaXQoInwiKSksZj1pLmFycmF5VG9NYXAoImNsYXNzfGVudW18ZXh0ZW5kc3xzdXBlcnxleHBvcnR8aW1wbGVtZW50c3xwcml2YXRlfHB1YmxpY3xpbnRlcmZhY2V8cGFja2FnZXxwcm90ZWN0ZWR8c3RhdGljIi5zcGxpdCgifCIpKSxsPSJbIitzLnBhY2thZ2VzLkwrIlxcJF9dWyIrcy5wYWNrYWdlcy5MK3MucGFja2FnZXMuTW4rcy5wYWNrYWdlcy5NYytzLnBhY2thZ2VzLk5kK3MucGFja2FnZXMuUGMrIlxcJF9dKlxcYiIsYz0iXFxcXCg/OnhbMC05YS1mQS1GXXsyfXx1WzAtOWEtZkEtRl17NH18WzAtMl1bMC03XXswLDJ9fDNbMC02XVswLTddP3wzN1swLTddP3xbNC03XVswLTddP3wuKSI7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4Oi9cL1wvLiokL30sby5nZXRTdGFydFJ1bGUoImRvYy1zdGFydCIpLHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6L1wvXCovLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6IicoPz0uKSIsbmV4dDoicXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonIig/PS4pJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6LzBbeFhdWzAtOWEtZkEtRl0rXGIvfSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi9bKy1dP1xkKyg/Oig/OlwuXGQqKT8oPzpbZUVdWystXT9cZCspPyk/XGIvfSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxcLikocHJvdG90eXBlKShcXC4pKCIrbCsiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCJdLHJlZ2V4OiIoIitsKyIpKFxcLikocHJvdG90eXBlKShcXC4pKCIrbCsiKShcXHMqKSg9KShcXHMqKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXC4pKCIrbCsiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFwuKSgiK2wrIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyspKFxcdyspKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInRleHQiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKGZ1bmN0aW9uKShcXHMrKSgiK2wrIikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxccyopKDopKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJ0ZXh0IiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKDopKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmJvb2xlYW4iLHJlZ2V4Oi8oPzp0cnVlfGZhbHNlKVxiL30se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiKD86IituKyIpXFxiIixuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIl0scmVnZXg6LyhcLikocyg/OmgoPzppZnR8b3coPzpNb2QoPzplbGVzc0RpYWxvZ3xhbERpYWxvZyl8SGVscCkpfGNyb2xsKD86WHxCeSg/OlBhZ2VzfExpbmVzKT98WXxUbyk/fHQoPzpvcHp6enp8cmlrZSl8aSg/Om58emVUb0NvbnRlbnR8ZGViYXJ8Z25UZXh0KXxvcnR8dSg/OnB8Yig/OnN0cig/OmluZyk/KT8pfHBsaSg/OmNlfHQpfGUoPzpuZHx0KD86UmUoPzpzaXphYmxlfHF1ZXN0SGVhZGVyKXxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG8oPzp0S2V5c3x1cnMpfFllYXJ8Q3Vyc29yfFRpbWUoPzpvdXQpP3xJbnRlcnZhbHxaT3B0aW9uc3xEYXRlfFVUQyg/Ok0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIb3Vyc3xEYXRlfEZ1bGxZZWFyKXxGdWxsWWVhcnxBY3RpdmUpfGFyY2gpfHFydHxsaWNlfGF2ZVByZWZlcmVuY2VzfG1hbGwpfGgoPzpvbWV8YW5kbGVFdmVudCl8bmF2aWdhdGV8Yyg/Omhhcig/OkNvZGVBdHxBdCl8byg/OnN8big/OmNhdHx0ZXh0dWFsfGZpcm0pfG1waWxlKXxlaWx8bGVhcig/OlRpbWVvdXR8SW50ZXJ2YWwpP3xhKD86cHR1cmVFdmVudHN8bGwpfHJlYXRlKD86U3R5bGVTaGVldHxQb3B1cHxFdmVudE9iamVjdCkpfHQoPzpvKD86R01UU3RyaW5nfFMoPzp0cmluZ3xvdXJjZSl8VSg/OlRDU3RyaW5nfHBwZXJDYXNlKXxMbyg/OmNhbGVTdHJpbmd8d2VyQ2FzZSkpfGVzdHxhKD86bnxpbnQoPzpFbmFibGVkKT8pKXxpKD86cyg/Ok5hTnxGaW5pdGUpfG5kZXhPZnx0YWxpY3MpfGQoPzppc2FibGVFeHRlcm5hbENhcHR1cmV8dW1wfGV0YWNoRXZlbnQpfHUoPzpuKD86c2hpZnR8dGFpbnR8ZXNjYXBlfHdhdGNoKXxwZGF0ZUNvbW1hbmRzKXxqKD86b2lufGF2YUVuYWJsZWQpfHAoPzpvKD86cHx3KXx1c2h8bHVnaW5zLnJlZnJlc2h8YSg/OmRkaW5nc3xyc2UoPzpJbnR8RmxvYXQpPyl8cig/OmludHxvbXB0fGVmZXJlbmNlKSl8ZSg/OnNjYXBlfG5hYmxlRXh0ZXJuYWxDYXB0dXJlfHZhbHxsZW1lbnRGcm9tUG9pbnR8eCg/OnB8ZWMoPzpTY3JpcHR8Q29tbWFuZCk/KSl8dmFsdWVPZnxVVEN8cXVlcnlDb21tYW5kKD86U3RhdGV8SW5kZXRlcm18RW5hYmxlZHxWYWx1ZSl8Zig/OmkoPzpuZHxsZSg/Ok1vZGlmaWVkRGF0ZXxTaXplfENyZWF0ZWREYXRlfFVwZGF0ZWREYXRlKXx4ZWQpfG8oPzpudCg/OnNpemV8Y29sb3IpfHJ3YXJkKXxsb29yfHJvbUNoYXJDb2RlKXx3YXRjaHxsKD86aW5rfG8oPzphZHxnKXxhc3RJbmRleE9mKXxhKD86c2lufG5jaG9yfGNvc3x0KD86dGFjaEV2ZW50fG9ifGFuKD86Mik/KXxwcGx5fGxlcnR8Yig/OnN8b3J0KSl8cig/Om91KD86bmR8dGVFdmVudHMpfGUoPzpzaXplKD86Qnl8VG8pfGNhbGN8dHVyblZhbHVlfHBsYWNlfHZlcnNlfGwoPzpvYWR8ZWFzZSg/OkNhcHR1cmV8RXZlbnRzKSkpfGFuZG9tKXxnKD86b3xldCg/OlJlc3BvbnNlSGVhZGVyfE0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2UoPzpjb25kc3xsZWN0aW9uKXxIb3Vyc3xZZWFyfFRpbWUoPzp6b25lT2Zmc2V0KT98RGEoPzp5fHRlKXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGEoPzp5fHRlKXxGdWxsWWVhcil8RnVsbFllYXJ8QSg/OnR0ZW50aW9ufGxsUmVzcG9uc2VIZWFkZXJzKSkpfG0oPzppbnxvdmUoPzpCKD86eXxlbG93KXxUbyg/OkFic29sdXRlKT98QWJvdmUpfGVyZ2VBdHRyaWJ1dGVzfGEoPzp0Y2h8cmdpbnN8eCkpfGIoPzp0b2F8aWd8byg/OmxkfHJkZXJXaWR0aHMpfGxpbmt8YWNrKSlcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbi5kb20iXSxyZWdleDovKFwuKShzKD86dWIoPzpzdHJpbmdEYXRhfG1pdCl8cGxpdFRleHR8ZSg/OnQoPzpOYW1lZEl0ZW18QXR0cmlidXRlKD86Tm9kZSk/KXxsZWN0KSl8aGFzKD86Q2hpbGROb2Rlc3xGZWF0dXJlKXxuYW1lZEl0ZW18Yyg/OmwoPzppY2t8byg/OnNlfG5lTm9kZSkpfHJlYXRlKD86Qyg/Om9tbWVudHxEQVRBU2VjdGlvbnxhcHRpb24pfFQoPzpIZWFkfGV4dE5vZGV8Rm9vdCl8RG9jdW1lbnRGcmFnbWVudHxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb258RSg/Om50aXR5UmVmZXJlbmNlfGxlbWVudCl8QXR0cmlidXRlKSl8dGFiSW5kZXh8aSg/Om5zZXJ0KD86Um93fEJlZm9yZXxDZWxsfERhdGEpfHRlbSl8b3BlbnxkZWxldGUoPzpSb3d8Qyg/OmVsbHxhcHRpb24pfFQoPzpIZWFkfEZvb3QpfERhdGEpfGZvY3VzfHdyaXRlKD86bG4pP3xhKD86ZGR8cHBlbmQoPzpDaGlsZHxEYXRhKSl8cmUoPzpzZXR8cGxhY2UoPzpDaGlsZHxEYXRhKXxtb3ZlKD86TmFtZWRJdGVtfENoaWxkfEF0dHJpYnV0ZSg/Ok5vZGUpPyk/KXxnZXQoPzpOYW1lZEl0ZW18RWxlbWVudCg/OnNCeSg/Ok5hbWV8VGFnTmFtZSl8QnlJZCl8QXR0cmlidXRlKD86Tm9kZSk/KXxibHVyKVxiKD89XCgpL30se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmNvbnN0YW50Il0scmVnZXg6LyhcLikocyg/OnlzdGVtTGFuZ3VhZ2V8Y3IoPzppcHRzfG9sbGJhcnN8ZWVuKD86WHxZfFRvcHxMZWZ0KSl8dCg/OnlsZSg/OlNoZWV0cyk/fGF0dXMoPzpUZXh0fGJhcik/KXxpYmxpbmcoPzpCZWxvd3xBYm92ZSl8b3VyY2V8dWZmaXhlc3xlKD86Y3VyaXR5KD86UG9saWN5KT98bCg/OmVjdGlvbnxmKSkpfGgoPzppc3Rvcnl8b3N0KD86bmFtZSk/fGFzKD86aHxGb2N1cykpfHl8WCg/Ok1MRG9jdW1lbnR8U0xEb2N1bWVudCl8big/OmV4dHxhbWUoPzpzcGFjZSg/OnN8VVJJKXxQcm9wKSl8TSg/OklOX1ZBTFVFfEFYX1ZBTFVFKXxjKD86aGFyYWN0ZXJTZXR8byg/Om4oPzpzdHJ1Y3Rvcnx0cm9sbGVycyl8b2tpZUVuYWJsZWR8bG9yRGVwdGh8bXAoPzpvbmVudHN8bGV0ZSkpfHVycmVudHxwdUNsYXNzfGwoPzppKD86cCg/OmJvYXJkRGF0YSk/fGVudEluZm9ybWF0aW9uKXxvc2VkfGFzc2VzKXxhbGxlKD86ZXxyKXxyeXB0byl8dCg/Om8oPzpvbGJhcnxwKXxleHQoPzpUcmFuc2Zvcm18SW5kZW50fERlY29yYXRpb258QWxpZ24pfGFncyl8U1FSVCg/OjFfMnwyKXxpKD86big/Om5lcig/OkhlaWdodHxXaWR0aCl8cHV0KXxkc3xnbm9yZUNhc2UpfHpJbmRleHxvKD86c2NwdXxuKD86cmVhZHlzdGF0ZWNoYW5nZXxMaW5lKXx1dGVyKD86SGVpZ2h0fFdpZHRoKXxwKD86c1Byb2ZpbGV8ZW5lcil8ZmZzY3JlZW5CdWZmZXJpbmcpfE5FR0FUSVZFX0lORklOSVRZfGQoPzppKD86c3BsYXl8YWxvZyg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdHxBcmd1bWVudHMpfHJlY3Rvcmllcyl8ZSg/OnNjcmlwdGlvbnxmYXVsdCg/OlN0YXR1c3xDaCg/OmVja2VkfGFyc2V0KXxWaWV3KSkpfHUoPzpzZXIoPzpQcm9maWxlfExhbmd1YWdlfEFnZW50KXxuKD86aXF1ZUlEfGRlZmluZWQpfHBkYXRlSW50ZXJ2YWwpfF9jb250ZW50fHAoPzppeGVsRGVwdGh8b3J0fGVyc29uYWxiYXJ8a2NzMTF8bCg/OnVnaW5zfGF0Zm9ybSl8YSg/OnRobmFtZXxkZGluZyg/OlJpZ2h0fEJvdHRvbXxUb3B8TGVmdCl8cmVudCg/OldpbmRvd3xMYXllcik/fGdlKD86WCg/Ok9mZnNldCk/fFkoPzpPZmZzZXQpPykpfHIoPzpvKD86dG8oPzpjb2x8dHlwZSl8ZHVjdCg/OlN1Yik/fG1wdGVyKXxlKD86dmlvdXN8Zml4KSkpfGUoPzpuKD86Y29kaW5nfGFibGVkUGx1Z2luKXx4KD86dGVybmFsfHBhbmRvKXxtYmVkcyl8dig/OmlzaWJpbGl0eXxlbmRvcig/OlN1Yik/fExpbmtjb2xvcil8VVJMVW5lbmNvZGVkfFAoPzpJfE9TSVRJVkVfSU5GSU5JVFkpfGYoPzppbGVuYW1lfG8oPzpudCg/OlNpemV8RmFtaWx5fFdlaWdodCl8cm1OYW1lKXxyYW1lKD86c3xFbGVtZW50KXxnQ29sb3IpfEV8d2hpdGVTcGFjZXxsKD86aSg/OnN0U3R5bGVUeXBlfG4oPzplSGVpZ2h0fGtDb2xvcikpfG8oPzpjYSg/OnRpb24oPzpiYXIpP3xsTmFtZSl8d3NyYyl8ZSg/Om5ndGh8ZnQoPzpDb250ZXh0KT8pfGEoPzpzdCg/Ok0oPzpvZGlmaWVkfGF0Y2gpfEluZGV4fFBhcmVuKXx5ZXIoPzpzfFgpfG5ndWFnZSkpfGEoPzpwcCg/Ok1pbm9yVmVyc2lvbnxOYW1lfENvKD86ZGVOYW1lfHJlKXxWZXJzaW9uKXx2YWlsKD86SGVpZ2h0fFRvcHxXaWR0aHxMZWZ0KXxsbHxyKD86aXR5fGd1bWVudHMpfExpbmtjb2xvcnxib3ZlKXxyKD86aWdodCg/OkNvbnRleHQpP3xlKD86c3BvbnNlKD86WE1MfFRleHQpfGFkeVN0YXRlKSl8Z2xvYmFsfHh8bSg/OmltZVR5cGVzfHVsdGlsaW5lfGVudWJhcnxhcmdpbig/OlJpZ2h0fEJvdHRvbXxUb3B8TGVmdCkpfEwoPzpOKD86MTB8Mil8T0coPzoxMEV8MkUpKXxiKD86byg/OnR0b218cmRlcig/OldpZHRofFJpZ2h0V2lkdGh8Qm90dG9tV2lkdGh8U3R5bGV8Q29sb3J8VG9wV2lkdGh8TGVmdFdpZHRoKSl8dWZmZXJEZXB0aHxlbG93fGFja2dyb3VuZCg/OkNvbG9yfEltYWdlKSkpXGIvfSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZmlyZWJ1ZyJdLHJlZ2V4Oi8oY29uc29sZSkoXC4pKHdhcm58aW5mb3xsb2d8ZXJyb3J8dGltZXx0aW1lRW5kfGFzc2VydClcYi99LHt0b2tlbjpmdW5jdGlvbihuKXtyZXR1cm4gZS5oYXNPd25Qcm9wZXJ0eShuKT8idmFyaWFibGUubGFuZ3VhZ2UiOnIuaGFzT3duUHJvcGVydHkobik/ImludmFsaWQuZGVwcmVjYXRlZCI6dS5oYXNPd25Qcm9wZXJ0eShuKT8ic3RvcmFnZS50eXBlIjp0Lmhhc093blByb3BlcnR5KG4pPyJrZXl3b3JkIjphLmhhc093blByb3BlcnR5KG4pPyJjb25zdGFudC5sYW5ndWFnZSI6Zi5oYXNPd25Qcm9wZXJ0eShuKT8iaW52YWxpZC5pbGxlZ2FsIjpuPT0iZGVidWdnZXIiPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOiJpZGVudGlmaWVyIn0scmVnZXg6bH0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovIXxcJHwlfCZ8XCp8XC1cLXxcLXxcK1wrfFwrfH58PT09fD09fD18IT18IT09fDw9fD49fDw8PXw+Pj18Pj4+PXw8Pnw8fD58IXwmJnxcfFx8fFw/XDp8XCo9fCU9fFwrPXxcLT18Jj18XF49fFxiKD86aW58aW5zdGFuY2VvZnxuZXd8ZGVsZXRlfHR5cGVvZnx2b2lkKS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4Oi9cP3xcOnxcLHxcO3xcLi8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDovW1xbKHtdLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4Oi9bXF0pfV0vfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4Oi9cLz0/LyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixyZWdleDovXiMhLiokL30se3Rva2VuOiJ0ZXh0IixyZWdleDovXHMrL31dLHJlZ2V4X2FsbG93ZWQ6W28uZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnRfcmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qJCJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6IlxcLyIsbmV4dDoicmVnZXgiLG1lcmdlOiEwfSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0scmVnZXg6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6Ii9cXHcqIixuZXh0OiJzdGFydCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6IlteXFxcXC9cXFtdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJcXFsiLG5leHQ6InJlZ2V4X2NoYXJhY3Rlcl9jbGFzcyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4X2NoYXJhY3Rlcl9jbGFzczpbe3Rva2VuOiJyZWdleHAua2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcXFwoPzp1W1xcZGEtZkEtRl17NH18eFtcXGRhLWZBLUZdezJ9fC4pIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6Il0iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6IlteXFxcXFxcXV0rIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sZnVuY3Rpb25fYXJndW1lbnRzOlt7dG9rZW46InZhcmlhYmxlLnBhcmFtZXRlciIscmVnZXg6bH0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IlssIF0rIixtZXJnZTohMH0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IiQiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxjb21tZW50X3JlZ2V4X2FsbG93ZWQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbWVyZ2U6ITAsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbWVyZ2U6ITAsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4OmN9LHt0b2tlbjoic3RyaW5nIixyZWdleDonW14iXFxcXF0rJyxtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXFxcJCIsbmV4dDoicXFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6JyJ8JCcsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV0scXN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4OmN9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiW14nXFxcXF0rIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXFxcJCIsbmV4dDoicXN0cmluZyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJ3wkIixuZXh0OiJzdGFydCIsbWVyZ2U6ITB9XX0sdGhpcy5lbWJlZFJ1bGVzKG8sImRvYy0iLFtvLmdldEVuZFJ1bGUoInN0YXJ0IildKX07ci5pbmhlcml0cyhhLHUpLHQuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzPWF9KSxkZWZpbmUoImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxzPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQuZG9jLnRhZyIscmVnZXg6IkBbXFx3XFxkX10rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiVE9ETyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJbXkBcXCpdKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiIuIn1dfX07ci5pbmhlcml0cyhzLGkpLHMuZ2V0U3RhcnRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCooPz1cXCopIixuZXh0OmV9fSxzLmdldEVuZFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcKlxcLyIsbmV4dDplfX0sdC5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXM9c30pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9yYW5nZSIpLlJhbmdlLGk9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuL15ccyskLy50ZXN0KGUpPy9eXHMqXH0vLnRlc3QodCk6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldExpbmUodCksaT1uLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFpKXJldHVybiAwO3ZhciBzPWlbMV0ubGVuZ3RoLG89ZS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dCxjb2x1bW46c30pO2lmKCFvfHxvLnJvdz09dClyZXR1cm4gMDt2YXIgdT10aGlzLiRnZXRJbmRlbnQoZS5nZXRMaW5lKG8ucm93KSk7ZS5yZXBsYWNlKG5ldyByKHQsMCx0LHMtMSksdSl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gdD90WzFdOiIifX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9aX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2Uscz1lKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLG89dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307ci5pbmhlcml0cyhvLHMpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9Lyhce3xcWylbXlx9XF1dKiR8XlxzKihcL1wqKS8sdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj0vXlteXFtce10qKFx9fFxdKXxeW1xzXCpdKihcKlwvKS8sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKSxzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXg7aWYoc1sxXSlyZXR1cm4gdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrKGUsc1sxXSxuLG8pO3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8rc1swXS5sZW5ndGgpO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX1pZih0IT09Im1hcmtiZWdpbmVuZCIpcmV0dXJuO3ZhciBzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RvcE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleCtzWzBdLmxlbmd0aDtpZihzWzJdKXt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9dmFyIGE9e3JvdzpuLGNvbHVtbjpvfSxmPWUuJGZpbmRPcGVuaW5nQnJhY2tldChzWzFdLGEpO2lmKCFmKXJldHVybjtyZXR1cm4gZi5jb2x1bW4rKyxhLmNvbHVtbi0tLGkuZnJvbVBvaW50cyhmLGEpfX19LmNhbGwoby5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9jc3MiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvY3NzX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2Uvd29ya2VyL3dvcmtlcl9jbGllbnQiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9jc3NfaGlnaGxpZ2h0X3J1bGVzIikuQ3NzSGlnaGxpZ2h0UnVsZXMsdT1lKCIuL21hdGNoaW5nX2JyYWNlX291dGRlbnQiKS5NYXRjaGluZ0JyYWNlT3V0ZGVudCxhPWUoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGY9ZSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGw9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpLCJpIiksdGhpcy4kb3V0ZGVudD1uZXcgdSx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgZn07ci5pbmhlcml0cyhsLGkpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nUnVsZXM9ImNTdHlsZSIsdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy4kZ2V0SW5kZW50KHQpLGk9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnModCxlKS50b2tlbnM7aWYoaS5sZW5ndGgmJmlbaS5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiByO3ZhciBzPXQubWF0Y2goL14uKlx7XHMqJC8pO3JldHVybiBzJiYocis9bikscn0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudCh0LG4pfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KHQsbil9LHRoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBhKFsiYWNlIl0sImFjZS9tb2RlL2Nzc193b3JrZXIiLCJXb3JrZXIiKTtyZXR1cm4gdC5hdHRhY2hUb0RvY3VtZW50KGUuZ2V0RG9jdW1lbnQoKSksdC5vbigiY3NzbGludCIsZnVuY3Rpb24odCl7dmFyIG49W107dC5kYXRhLmZvckVhY2goZnVuY3Rpb24oZSl7bi5wdXNoKHtyb3c6ZS5saW5lLTEsY29sdW1uOmUuY29sLTEsdGV4dDplLm1lc3NhZ2UsdHlwZTplLnR5cGUsbGludDplfSl9KSxlLnNldEFubm90YXRpb25zKG4pfSksdH19LmNhbGwobC5wcm90b3R5cGUpLHQuTW9kZT1sfSksZGVmaW5lKCJhY2UvbW9kZS9jc3NfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi9saWIvbGFuZyIpLHM9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxvPWZ1bmN0aW9uKCl7dmFyIGU9aS5hcnJheVRvTWFwKCJhbmltYXRpb24tZmlsbC1tb2RlfGFsaWdubWVudC1hZGp1c3R8YWxpZ25tZW50LWJhc2VsaW5lfGFuaW1hdGlvbi1kZWxheXxhbmltYXRpb24tZGlyZWN0aW9ufGFuaW1hdGlvbi1kdXJhdGlvbnxhbmltYXRpb24taXRlcmF0aW9uLWNvdW50fGFuaW1hdGlvbi1uYW1lfGFuaW1hdGlvbi1wbGF5LXN0YXRlfGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb258YW5pbWF0aW9ufGFwcGVhcmFuY2V8YXppbXV0aHxiYWNrZmFjZS12aXNpYmlsaXR5fGJhY2tncm91bmQtYXR0YWNobWVudHxiYWNrZ3JvdW5kLWJyZWFrfGJhY2tncm91bmQtY2xpcHxiYWNrZ3JvdW5kLWNvbG9yfGJhY2tncm91bmQtaW1hZ2V8YmFja2dyb3VuZC1vcmlnaW58YmFja2dyb3VuZC1wb3NpdGlvbnxiYWNrZ3JvdW5kLXJlcGVhdHxiYWNrZ3JvdW5kLXNpemV8YmFja2dyb3VuZHxiYXNlbGluZS1zaGlmdHxiaW5kaW5nfGJsZWVkfGJvb2ttYXJrLWxhYmVsfGJvb2ttYXJrLWxldmVsfGJvb2ttYXJrLXN0YXRlfGJvb2ttYXJrLXRhcmdldHxib3JkZXItYm90dG9tfGJvcmRlci1ib3R0b20tY29sb3J8Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1c3xib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1c3xib3JkZXItYm90dG9tLXN0eWxlfGJvcmRlci1ib3R0b20td2lkdGh8Ym9yZGVyLWNvbGxhcHNlfGJvcmRlci1jb2xvcnxib3JkZXItaW1hZ2V8Ym9yZGVyLWltYWdlLW91dHNldHxib3JkZXItaW1hZ2UtcmVwZWF0fGJvcmRlci1pbWFnZS1zbGljZXxib3JkZXItaW1hZ2Utc291cmNlfGJvcmRlci1pbWFnZS13aWR0aHxib3JkZXItbGVmdHxib3JkZXItbGVmdC1jb2xvcnxib3JkZXItbGVmdC1zdHlsZXxib3JkZXItbGVmdC13aWR0aHxib3JkZXItcmFkaXVzfGJvcmRlci1yaWdodHxib3JkZXItcmlnaHQtY29sb3J8Ym9yZGVyLXJpZ2h0LXN0eWxlfGJvcmRlci1yaWdodC13aWR0aHxib3JkZXItc3BhY2luZ3xib3JkZXItc3R5bGV8Ym9yZGVyLXRvcHxib3JkZXItdG9wLWNvbG9yfGJvcmRlci10b3AtbGVmdC1yYWRpdXN8Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXN8Ym9yZGVyLXRvcC1zdHlsZXxib3JkZXItdG9wLXdpZHRofGJvcmRlci13aWR0aHxib3JkZXJ8Ym90dG9tfGJveC1hbGlnbnxib3gtZGVjb3JhdGlvbi1icmVha3xib3gtZGlyZWN0aW9ufGJveC1mbGV4LWdyb3VwfGJveC1mbGV4fGJveC1saW5lc3xib3gtb3JkaW5hbC1ncm91cHxib3gtb3JpZW50fGJveC1wYWNrfGJveC1zaGFkb3d8Ym94LXNpemluZ3xicmVhay1hZnRlcnxicmVhay1iZWZvcmV8YnJlYWstaW5zaWRlfGNhcHRpb24tc2lkZXxjbGVhcnxjbGlwfGNvbG9yLXByb2ZpbGV8Y29sb3J8Y29sdW1uLWNvdW50fGNvbHVtbi1maWxsfGNvbHVtbi1nYXB8Y29sdW1uLXJ1bGV8Y29sdW1uLXJ1bGUtY29sb3J8Y29sdW1uLXJ1bGUtc3R5bGV8Y29sdW1uLXJ1bGUtd2lkdGh8Y29sdW1uLXNwYW58Y29sdW1uLXdpZHRofGNvbHVtbnN8Y29udGVudHxjb3VudGVyLWluY3JlbWVudHxjb3VudGVyLXJlc2V0fGNyb3B8Y3VlLWFmdGVyfGN1ZS1iZWZvcmV8Y3VlfGN1cnNvcnxkaXJlY3Rpb258ZGlzcGxheXxkb21pbmFudC1iYXNlbGluZXxkcm9wLWluaXRpYWwtYWZ0ZXItYWRqdXN0fGRyb3AtaW5pdGlhbC1hZnRlci1hbGlnbnxkcm9wLWluaXRpYWwtYmVmb3JlLWFkanVzdHxkcm9wLWluaXRpYWwtYmVmb3JlLWFsaWdufGRyb3AtaW5pdGlhbC1zaXplfGRyb3AtaW5pdGlhbC12YWx1ZXxlbGV2YXRpb258ZW1wdHktY2VsbHN8Zml0fGZpdC1wb3NpdGlvbnxmbG9hdC1vZmZzZXR8ZmxvYXR8Zm9udC1mYW1pbHl8Zm9udC1zaXplfGZvbnQtc2l6ZS1hZGp1c3R8Zm9udC1zdHJldGNofGZvbnQtc3R5bGV8Zm9udC12YXJpYW50fGZvbnQtd2VpZ2h0fGZvbnR8Z3JpZC1jb2x1bW5zfGdyaWQtcm93c3xoYW5naW5nLXB1bmN0dWF0aW9ufGhlaWdodHxoeXBoZW5hdGUtYWZ0ZXJ8aHlwaGVuYXRlLWJlZm9yZXxoeXBoZW5hdGUtY2hhcmFjdGVyfGh5cGhlbmF0ZS1saW5lc3xoeXBoZW5hdGUtcmVzb3VyY2V8aHlwaGVuc3xpY29ufGltYWdlLW9yaWVudGF0aW9ufGltYWdlLXJlbmRlcmluZ3xpbWFnZS1yZXNvbHV0aW9ufGlubGluZS1ib3gtYWxpZ258bGVmdHxsZXR0ZXItc3BhY2luZ3xsaW5lLWhlaWdodHxsaW5lLXN0YWNraW5nLXJ1Ynl8bGluZS1zdGFja2luZy1zaGlmdHxsaW5lLXN0YWNraW5nLXN0cmF0ZWd5fGxpbmUtc3RhY2tpbmd8bGlzdC1zdHlsZS1pbWFnZXxsaXN0LXN0eWxlLXBvc2l0aW9ufGxpc3Qtc3R5bGUtdHlwZXxsaXN0LXN0eWxlfG1hcmdpbi1ib3R0b218bWFyZ2luLWxlZnR8bWFyZ2luLXJpZ2h0fG1hcmdpbi10b3B8bWFyZ2lufG1hcmstYWZ0ZXJ8bWFyay1iZWZvcmV8bWFya3xtYXJrc3xtYXJxdWVlLWRpcmVjdGlvbnxtYXJxdWVlLXBsYXktY291bnR8bWFycXVlZS1zcGVlZHxtYXJxdWVlLXN0eWxlfG1heC1oZWlnaHR8bWF4LXdpZHRofG1pbi1oZWlnaHR8bWluLXdpZHRofG1vdmUtdG98bmF2LWRvd258bmF2LWluZGV4fG5hdi1sZWZ0fG5hdi1yaWdodHxuYXYtdXB8b3BhY2l0eXxvcnBoYW5zfG91dGxpbmUtY29sb3J8b3V0bGluZS1vZmZzZXR8b3V0bGluZS1zdHlsZXxvdXRsaW5lLXdpZHRofG91dGxpbmV8b3ZlcmZsb3ctc3R5bGV8b3ZlcmZsb3cteHxvdmVyZmxvdy15fG92ZXJmbG93fHBhZGRpbmctYm90dG9tfHBhZGRpbmctbGVmdHxwYWRkaW5nLXJpZ2h0fHBhZGRpbmctdG9wfHBhZGRpbmd8cGFnZS1icmVhay1hZnRlcnxwYWdlLWJyZWFrLWJlZm9yZXxwYWdlLWJyZWFrLWluc2lkZXxwYWdlLXBvbGljeXxwYWdlfHBhdXNlLWFmdGVyfHBhdXNlLWJlZm9yZXxwYXVzZXxwZXJzcGVjdGl2ZS1vcmlnaW58cGVyc3BlY3RpdmV8cGhvbmVtZXN8cGl0Y2gtcmFuZ2V8cGl0Y2h8cGxheS1kdXJpbmd8cG9zaXRpb258cHJlc2VudGF0aW9uLWxldmVsfHB1bmN0dWF0aW9uLXRyaW18cXVvdGVzfHJlbmRlcmluZy1pbnRlbnR8cmVzaXplfHJlc3QtYWZ0ZXJ8cmVzdC1iZWZvcmV8cmVzdHxyaWNobmVzc3xyaWdodHxyb3RhdGlvbi1wb2ludHxyb3RhdGlvbnxydWJ5LWFsaWdufHJ1Ynktb3Zlcmhhbmd8cnVieS1wb3NpdGlvbnxydWJ5LXNwYW58c2l6ZXxzcGVhay1oZWFkZXJ8c3BlYWstbnVtZXJhbHxzcGVhay1wdW5jdHVhdGlvbnxzcGVha3xzcGVlY2gtcmF0ZXxzdHJlc3N8c3RyaW5nLXNldHx0YWJsZS1sYXlvdXR8dGFyZ2V0LW5hbWV8dGFyZ2V0LW5ld3x0YXJnZXQtcG9zaXRpb258dGFyZ2V0fHRleHQtYWxpZ24tbGFzdHx0ZXh0LWFsaWdufHRleHQtZGVjb3JhdGlvbnx0ZXh0LWVtcGhhc2lzfHRleHQtaGVpZ2h0fHRleHQtaW5kZW50fHRleHQtanVzdGlmeXx0ZXh0LW91dGxpbmV8dGV4dC1zaGFkb3d8dGV4dC10cmFuc2Zvcm18dGV4dC13cmFwfHRvcHx0cmFuc2Zvcm0tb3JpZ2lufHRyYW5zZm9ybS1zdHlsZXx0cmFuc2Zvcm18dHJhbnNpdGlvbi1kZWxheXx0cmFuc2l0aW9uLWR1cmF0aW9ufHRyYW5zaXRpb24tcHJvcGVydHl8dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb258dHJhbnNpdGlvbnx1bmljb2RlLWJpZGl8dmVydGljYWwtYWxpZ258dmlzaWJpbGl0eXx2b2ljZS1iYWxhbmNlfHZvaWNlLWR1cmF0aW9ufHZvaWNlLWZhbWlseXx2b2ljZS1waXRjaC1yYW5nZXx2b2ljZS1waXRjaHx2b2ljZS1yYXRlfHZvaWNlLXN0cmVzc3x2b2ljZS12b2x1bWV8dm9sdW1lfHdoaXRlLXNwYWNlLWNvbGxhcHNlfHdoaXRlLXNwYWNlfHdpZG93c3x3aWR0aHx3b3JkLWJyZWFrfHdvcmQtc3BhY2luZ3x3b3JkLXdyYXB8ei1pbmRleCIuc3BsaXQoInwiKSksdD1pLmFycmF5VG9NYXAoInJnYnxyZ2JhfHVybHxhdHRyfGNvdW50ZXJ8Y291bnRlcnMiLnNwbGl0KCJ8IikpLG49aS5hcnJheVRvTWFwKCJhYnNvbHV0ZXxhZnRlci1lZGdlfGFmdGVyfGFsbC1zY3JvbGx8YWxsfGFscGhhYmV0aWN8YWx3YXlzfGFudGlhbGlhc2VkfGFybWVuaWFufGF1dG98YXZvaWQtY29sdW1ufGF2b2lkLXBhZ2V8YXZvaWR8YmFsYW5jZXxiYXNlbGluZXxiZWZvcmUtZWRnZXxiZWZvcmV8YmVsb3d8YmlkaS1vdmVycmlkZXxibG9jay1saW5lLWhlaWdodHxibG9ja3xib2xkfGJvbGRlcnxib3JkZXItYm94fGJvdGh8Ym90dG9tfGJveHxicmVhay1hbGx8YnJlYWstd29yZHxjYXBpdGFsaXplfGNhcHMtaGVpZ2h0fGNhcHRpb258Y2VudGVyfGNlbnRyYWx8Y2hhcnxjaXJjbGV8Y2prLWlkZW9ncmFwaGljfGNsb25lfGNsb3NlLXF1b3RlfGNvbC1yZXNpemV8Y29sbGFwc2V8Y29sdW1ufGNvbnNpZGVyLXNoaWZ0c3xjb250YWlufGNvbnRlbnQtYm94fGNvdmVyfGNyb3NzaGFpcnxjdWJpYy1iZXppZXJ8ZGFzaGVkfGRlY2ltYWwtbGVhZGluZy16ZXJvfGRlY2ltYWx8ZGVmYXVsdHxkaXNhYmxlZHxkaXNjfGRpc3JlZ2FyZC1zaGlmdHN8ZGlzdHJpYnV0ZS1hbGwtbGluZXN8ZGlzdHJpYnV0ZS1sZXR0ZXJ8ZGlzdHJpYnV0ZS1zcGFjZXxkaXN0cmlidXRlfGRvdHRlZHxkb3VibGV8ZS1yZXNpemV8ZWFzZS1pbnxlYXNlLWluLW91dHxlYXNlLW91dHxlYXNlfGVsbGlwc2lzfGVuZHxleGNsdWRlLXJ1Ynl8ZmlsbHxmaXhlZHxmb250LXNpemV8Zm9udHxnZW9yZ2lhbnxnbHlwaHN8Z3JpZC1oZWlnaHR8Z3Jvb3ZlfGhhbmR8aGFuZ2luZ3xoZWJyZXd8aGVscHxoaWRkZW58aGlyYWdhbmEtaXJvaGF8aGlyYWdhbmF8aG9yaXpvbnRhbHxpY29ufGlkZW9ncmFwaC1hbHBoYXxpZGVvZ3JhcGgtbnVtZXJpY3xpZGVvZ3JhcGgtcGFyZW50aGVzaXN8aWRlb2dyYXBoLXNwYWNlfGlkZW9ncmFwaGljfGluYWN0aXZlfGluY2x1ZGUtcnVieXxpbmhlcml0fGluaXRpYWx8aW5saW5lLWJsb2NrfGlubGluZS1ib3h8aW5saW5lLWxpbmUtaGVpZ2h0fGlubGluZS10YWJsZXxpbmxpbmV8aW5zZXR8aW5zaWRlfGludGVyLWlkZW9ncmFwaHxpbnRlci13b3JkfGludmVydHxpdGFsaWN8anVzdGlmeXxrYXRha2FuYS1pcm9oYXxrYXRha2FuYXxrZWVwLWFsbHxsYXN0fGxlZnR8bGlnaHRlcnxsaW5lLWVkZ2V8bGluZS10aHJvdWdofGxpbmV8bGluZWFyfGxpc3QtaXRlbXxsb2NhbHxsb29zZXxsb3dlci1hbHBoYXxsb3dlci1ncmVla3xsb3dlci1sYXRpbnxsb3dlci1yb21hbnxsb3dlcmNhc2V8bHItdGJ8bHRyfG1hdGhlbWF0aWNhbHxtYXgtaGVpZ2h0fG1heC1zaXplfG1lZGl1bXxtZW51fG1lc3NhZ2UtYm94fG1pZGRsZXxtb3ZlfG4tcmVzaXplfG5lLXJlc2l6ZXxuZXdzcGFwZXJ8bm8tY2hhbmdlfG5vLWNsb3NlLXF1b3RlfG5vLWRyb3B8bm8tb3Blbi1xdW90ZXxuby1yZXBlYXR8bm9uZXxub3JtYWx8bm90LWFsbG93ZWR8bm93cmFwfG53LXJlc2l6ZXxvYmxpcXVlfG9wZW4tcXVvdGV8b3V0c2V0fG91dHNpZGV8b3ZlcmxpbmV8cGFkZGluZy1ib3h8cGFnZXxwb2ludGVyfHByZS1saW5lfHByZS13cmFwfHByZXxwcmVzZXJ2ZS0zZHxwcm9ncmVzc3xyZWxhdGl2ZXxyZXBlYXQteHxyZXBlYXQteXxyZXBlYXR8cmVwbGFjZWR8cmVzZXQtc2l6ZXxyaWRnZXxyaWdodHxyb3VuZHxyb3ctcmVzaXplfHJ0bHxzLXJlc2l6ZXxzY3JvbGx8c2UtcmVzaXplfHNlcGFyYXRlfHNsaWNlfHNtYWxsLWNhcHN8c21hbGwtY2FwdGlvbnxzb2xpZHxzcGFjZXxzcXVhcmV8c3RhcnR8c3RhdGljfHN0YXR1cy1iYXJ8c3RlcC1lbmR8c3RlcC1zdGFydHxzdGVwc3xzdHJldGNofHN0cmljdHxzdWJ8c3VwZXJ8c3ctcmVzaXplfHRhYmxlLWNhcHRpb258dGFibGUtY2VsbHx0YWJsZS1jb2x1bW4tZ3JvdXB8dGFibGUtY29sdW1ufHRhYmxlLWZvb3Rlci1ncm91cHx0YWJsZS1oZWFkZXItZ3JvdXB8dGFibGUtcm93LWdyb3VwfHRhYmxlLXJvd3x0YWJsZXx0Yi1ybHx0ZXh0LWFmdGVyLWVkZ2V8dGV4dC1iZWZvcmUtZWRnZXx0ZXh0LWJvdHRvbXx0ZXh0LXNpemV8dGV4dC10b3B8dGV4dHx0aGlja3x0aGlufHRvcHx0cmFuc3BhcmVudHx1bmRlcmxpbmV8dXBwZXItYWxwaGF8dXBwZXItbGF0aW58dXBwZXItcm9tYW58dXBwZXJjYXNlfHVzZS1zY3JpcHR8dmVydGljYWwtaWRlb2dyYXBoaWN8dmVydGljYWwtdGV4dHx2aXNpYmxlfHctcmVzaXplfHdhaXR8d2hpdGVzcGFjZXx6LWluZGV4fHplcm8iLnNwbGl0KCJ8IikpLHI9aS5hcnJheVRvTWFwKCJhcXVhfGJsYWNrfGJsdWV8ZnVjaHNpYXxncmF5fGdyZWVufGxpbWV8bWFyb29ufG5hdnl8b2xpdmV8b3JhbmdlfHB1cnBsZXxyZWR8c2lsdmVyfHRlYWx8d2hpdGV8eWVsbG93Ii5zcGxpdCgifCIpKSxzPWkuYXJyYXlUb01hcCgiYXJpYWx8Y2VudHVyeXxjb21pY3xjb3VyaWVyfGdhcmFtb25kfGdlb3JnaWF8aGVsdmV0aWNhfGltcGFjdHxsdWNpZGF8c3ltYm9sfHN5c3RlbXx0YWhvbWF8dGltZXN8dHJlYnVjaGV0fHV0b3BpYXx2ZXJkYW5hfHdlYmRpbmdzfHNhbnMtc2VyaWZ8c2VyaWZ8bW9ub3NwYWNlIi5zcGxpdCgifCIpKSxvPSJcXC0/KD86KD86WzAtOV0rKXwoPzpbMC05XSpcXC5bMC05XSspKSIsdT0iKFxcOispXFxiKGFmdGVyfGJlZm9yZXxmaXJzdC1sZXR0ZXJ8Zmlyc3QtbGluZXxtb3otc2VsZWN0aW9ufHNlbGVjdGlvbilcXGIiLGE9Iig6KVxcYihhY3RpdmV8Y2hlY2tlZHxkaXNhYmxlZHxlbXB0eXxlbmFibGVkfGZpcnN0LWNoaWxkfGZpcnN0LW9mLXR5cGV8Zm9jdXN8aG92ZXJ8aW5kZXRlcm1pbmF0ZXxpbnZhbGlkfGxhc3QtY2hpbGR8bGFzdC1vZi10eXBlfGxpbmt8bm90fG50aC1jaGlsZHxudGgtbGFzdC1jaGlsZHxudGgtbGFzdC1vZi10eXBlfG50aC1vZi10eXBlfG9ubHktY2hpbGR8b25seS1vZi10eXBlfHJlcXVpcmVkfHJvb3R8dGFyZ2V0fHZhbGlkfHZpc2l0ZWQpXFxiIixmPVt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6InJ1bGVzZXRfY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjpbImNvbnN0YW50Lm51bWVyaWMiLCJrZXl3b3JkIl0scmVnZXg6IigiK28rIikoY2h8Y218ZGVnfGVtfGV4fGZyfGdkfGdyYWR8SHp8aW58a0h6fG1tfG1zfHBjfHB0fHB4fHJhZHxyZW18c3x0dXJufHZofHZtfHZ3fCUpIn0se3Rva2VuOlsiY29uc3RhbnQubnVtZXJpYyJdLHJlZ2V4OiIoWzAtOV0rKSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IiNbYS1mMC05XXs2fSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IiNbYS1mMC05XXszfSJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uIiwiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lLnBzZXVkby1lbGVtZW50LmNzcyJdLHJlZ2V4OnV9LHt0b2tlbjpbInB1bmN0dWF0aW9uIiwiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lLnBzZXVkby1jbGFzcy5jc3MiXSxyZWdleDphfSx7dG9rZW46ZnVuY3Rpb24oaSl7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkoaS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC50eXBlIjp0Lmhhc093blByb3BlcnR5KGkudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuZnVuY3Rpb24iOm4uaGFzT3duUHJvcGVydHkoaS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC5jb25zdGFudCI6ci5oYXNPd25Qcm9wZXJ0eShpLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50LmNvbG9yIjpzLmhhc093blByb3BlcnR5KGkudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuY29uc3RhbnQuZm9udHMiOiJ0ZXh0In0scmVnZXg6IlxcLT9bYS16QS1aX11bYS16QS1aMC05X1xcLV0qIn1dLGw9aS5jb3B5QXJyYXkoZik7bC51bnNoaWZ0KHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiXFx9IixuZXh0OiJzdGFydCJ9KTt2YXIgYz1pLmNvcHlBcnJheShmKTtjLnVuc2hpZnQoe3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJcXH0iLG5leHQ6Im1lZGlhIn0pO3ZhciBoPVt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxwPWkuY29weUFycmF5KGgpO3AudW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InN0YXJ0In0pO3ZhciBkPWkuY29weUFycmF5KGgpO2QudW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6Im1lZGlhIn0pO3ZhciB2PWkuY29weUFycmF5KGgpO3YudW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InJ1bGVzZXQifSksdGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IlxceyIsbmV4dDoicnVsZXNldCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiQC4qP3siLG5leHQ6Im1lZGlhIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiI1thLXowLTktX10rIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlxcLlthLXowLTktX10rIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiI6W2EtejAtOS1fXSsifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiW2EtejAtOS1fXSsifV0sbWVkaWE6W3t0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoibWVkaWFfY29tbWVudCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiXFx7IixuZXh0OiJtZWRpYV9ydWxlc2V0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXH0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiI1thLXowLTktX10rIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlxcLlthLXowLTktX10rIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiI6W2EtejAtOS1fXSsifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiW2EtejAtOS1fXSsifV0sY29tbWVudDpwLHJ1bGVzZXQ6bCxydWxlc2V0X2NvbW1lbnQ6dixtZWRpYV9ydWxlc2V0OmMsbWVkaWFfY29tbWVudDpkfX07ci5pbmhlcml0cyhvLHMpLHQuQ3NzSGlnaGxpZ2h0UnVsZXM9b30pLGRlZmluZSgiYWNlL21vZGUvY29sZGZ1c2lvbl9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2Nzc19oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUveG1sX3V0aWwiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi9jc3NfaGlnaGxpZ2h0X3J1bGVzIikuQ3NzSGlnaGxpZ2h0UnVsZXMscz1lKCIuL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIikuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzLG89ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyx1PWUoIi4veG1sX3V0aWwiKSxhPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46InRleHQiLG1lcmdlOiEwLHJlZ2V4OiI8XFwhXFxbQ0RBVEFcXFsiLG5leHQ6ImNkYXRhIn0se3Rva2VuOiJ4bWxfcGUiLHJlZ2V4OiI8XFw/Lio/XFw/PiJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IjxcXCEtLSIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8KD89cypzY3JpcHQpIixuZXh0OiJzY3JpcHQifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPCg/PXMqc3R5bGUpIixuZXh0OiJzdHlsZSJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvPyIsbmV4dDoidGFnIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IltePF0rIn1dLGNkYXRhOlt7dG9rZW46InRleHQiLHJlZ2V4OiJcXF1cXF0+IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoidGV4dCIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46InRleHQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj8tLT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV19LHUudGFnKHRoaXMuJHJ1bGVzLCJ0YWciLCJzdGFydCIpLHUudGFnKHRoaXMuJHJ1bGVzLCJzdHlsZSIsImNzcy1zdGFydCIpLHUudGFnKHRoaXMuJHJ1bGVzLCJzY3JpcHQiLCJqcy1zdGFydCIpLHRoaXMuZW1iZWRSdWxlcyhzLCJqcy0iLFt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKig/PTxcXC9zY3JpcHQ+KSIsbmV4dDoidGFnIn0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjxcXC8oPz1zY3JpcHQpIixuZXh0OiJ0YWcifV0pLHRoaXMuZW1iZWRSdWxlcyhpLCJjc3MtIixbe3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjxcXC8oPz1zdHlsZSkiLG5leHQ6InRhZyJ9XSl9O3IuaW5oZXJpdHMoYSxvKSx0LkNvbGRmdXNpb25IaWdobGlnaHRSdWxlcz1hfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-csharp.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9jc2hhcnAiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvY3NoYXJwX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4vY3NoYXJwX2hpZ2hsaWdodF9ydWxlcyIpLkNTaGFycEhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsYT1lKCIuL2JlaGF2aW91ci9jc3R5bGUiKS5Dc3R5bGVCZWhhdmlvdXIsZj1lKCIuL2ZvbGRpbmcvY3N0eWxlIikuRm9sZE1vZGUsbD1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgcygobmV3IG8pLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IHUsdGhpcy4kYmVoYXZpb3VyPW5ldyBhLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBmfTtyLmluaGVyaXRzKGwsaSksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRnZXRJbmRlbnQodCksaT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2Vucyh0LGUpLHM9aS50b2tlbnM7aWYocy5sZW5ndGgmJnNbcy5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiByO2lmKGU9PSJzdGFydCIpe3ZhciBvPXQubWF0Y2goL14uKltce1woXFtdXHMqJC8pO28mJihyKz1uKX1yZXR1cm4gcn0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudCh0LG4pfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KHQsbil9LHRoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsfX0uY2FsbChsLnByb3RvdHlwZSksdC5Nb2RlPWx9KSxkZWZpbmUoImFjZS9tb2RlL2NzaGFycF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2xpYi9sYW5nIikscz1lKCIuL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIpLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcyxvPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsdT1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgiYWJzdHJhY3R8ZXZlbnR8bmV3fHN0cnVjdHxhc3xleHBsaWNpdHxudWxsfHN3aXRjaHxiYXNlfGV4dGVybnxvYmplY3R8dGhpc3xib29sfGZhbHNlfG9wZXJhdG9yfHRocm93fGJyZWFrfGZpbmFsbHl8b3V0fHRydWV8Ynl0ZXxmaXhlZHxvdmVycmlkZXx0cnl8Y2FzZXxmbG9hdHxwYXJhbXN8dHlwZW9mfGNhdGNofGZvcnxwcml2YXRlfHVpbnR8Y2hhcnxmb3JlYWNofHByb3RlY3RlZHx1bG9uZ3xjaGVja2VkfGdvdG98cHVibGljfHVuY2hlY2tlZHxjbGFzc3xpZnxyZWFkb25seXx1bnNhZmV8Y29uc3R8aW1wbGljaXR8cmVmfHVzaG9ydHxjb250aW51ZXxpbnxyZXR1cm58dXNpbmd8ZGVjaW1hbHxpbnR8c2J5dGV8dmlydHVhbHxkZWZhdWx0fGludGVyZmFjZXxzZWFsZWR8dm9sYXRpbGV8ZGVsZWdhdGV8aW50ZXJuYWx8c2hvcnR8dm9pZHxkb3xpc3xzaXplb2Z8d2hpbGV8ZG91YmxlfGxvY2t8c3RhY2thbGxvY3xlbHNlfGxvbmd8c3RhdGljfGVudW18bmFtZXNwYWNlfHN0cmluZ3x2YXJ8ZHluYW1pYyIuc3BsaXQoInwiKSksdD1pLmFycmF5VG9NYXAoIm51bGx8dHJ1ZXxmYWxzZSIuc3BsaXQoInwiKSk7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSxzLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwqIixtZXJnZTohMCxuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiWy9dKD86KD86XFxbKD86XFxcXF18W15cXF1dKStcXF0pfCg/OlxcXFwvfFteXFxdL10pKSpbL11cXHcqXFxzKig/PVspLiw7XXwkKSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IjBbeFhdWzAtOWEtZkEtRl0rXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmJvb2xlYW4iLHJlZ2V4OiIoPzp0cnVlfGZhbHNlKVxcYiJ9LHt0b2tlbjpmdW5jdGlvbihuKXtyZXR1cm4gbj09InRoaXMiPyJ2YXJpYWJsZS5sYW5ndWFnZSI6ZS5oYXNPd25Qcm9wZXJ0eShuKT8ia2V5d29yZCI6dC5oYXNPd25Qcm9wZXJ0eShuKT8iY29uc3RhbnQubGFuZ3VhZ2UiOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IiF8XFwkfCV8JnxcXCp8XFwtXFwtfFxcLXxcXCtcXCt8XFwrfH58PT09fD09fD18IT18IT09fDw9fD49fDw8PXw+Pj18Pj4+PXw8Pnw8fD58IXwmJnxcXHxcXHx8XFw/XFw6fFxcKj18JT18XFwrPXxcXC09fCY9fFxcXj18XFxiKD86aW58aW5zdGFuY2VvZnxuZXd8ZGVsZXRlfHR5cGVvZnx2b2lkKSJ9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJcXD98XFw6fFxcLHxcXDt8XFwuIn0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJbWyh7XSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiW1xcXSl9XSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfSx0aGlzLmVtYmVkUnVsZXMocywiZG9jLSIsW3MuZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtyLmluaGVyaXRzKHUsbyksdC5DU2hhcnBIaWdobGlnaHRSdWxlcz11fSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMscz1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O3IuaW5oZXJpdHMocyxpKSxzLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihlKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDplfX0scy5nZXRFbmRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6ZX19LHQuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPXN9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxpPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQpe3JldHVybi9eXHMrJC8udGVzdChlKT8vXlxzKlx9Ly50ZXN0KHQpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRMaW5lKHQpLGk9bi5tYXRjaCgvXihccypcfSkvKTtpZighaSlyZXR1cm4gMDt2YXIgcz1pWzFdLmxlbmd0aCxvPWUuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnQsY29sdW1uOnN9KTtpZighb3x8by5yb3c9PXQpcmV0dXJuIDA7dmFyIHU9dGhpcy4kZ2V0SW5kZW50KGUuZ2V0TGluZShvLnJvdykpO2UucmVwbGFjZShuZXcgcih0LDAsdCxzLTEpLHUpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCgvXihccyspLyk7cmV0dXJuIHQ/dFsxXToiIn19KS5jYWxsKGkucHJvdG90eXBlKSx0Lk1hdGNoaW5nQnJhY2VPdXRkZW50PWl9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIscz1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09InsiKXt2YXIgcz1uLmdldFNlbGVjdGlvblJhbmdlKCksbz1yLmRvYy5nZXRUZXh0UmFuZ2Uocyk7cmV0dXJuIG8hPT0iIj97dGV4dDoieyIrbysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoaT09In0iKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJ9Iil7dmFyIGw9ci4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOnUuY29sdW1uKzEscm93OnUucm93fSk7aWYobCE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihpPT0iXG4iKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJ9Iil7dmFyIGM9ci5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dS5yb3csY29sdW1uOnUuY29sdW1uKzF9KTtpZighYylyZXR1cm4gbnVsbDt2YXIgaD10aGlzLmdldE5leHRMaW5lSW5kZW50KGUsYS5zdWJzdHJpbmcoMCxhLmxlbmd0aC0xKSxyLmdldFRhYlN0cmluZygpKSxwPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKGMucm93KSk7cmV0dXJue3RleHQ6IlxuIitoKyJcbiIrcCxzZWxlY3Rpb246WzEsaC5sZW5ndGgsMSxoLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSJ7Iil7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLmVuZC5jb2x1bW4saS5lbmQuY29sdW1uKzEpO2lmKHU9PSJ9IilyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSIoIil7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO3JldHVybiBvIT09IiI/e3RleHQ6IigiK28rIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGk9PSIpIil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0iKSIpe3ZhciBsPXIuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjp1LmNvbHVtbisxLHJvdzp1LnJvd30pO2lmKGwhPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcz09IigiKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09IikiKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0nIid8fGk9PSInIil7dmFyIHM9aSxvPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSx1PXIuZG9jLmdldFRleHRSYW5nZShvKTtpZih1IT09IiIpcmV0dXJue3RleHQ6cyt1K3Msc2VsZWN0aW9uOiExfTt2YXIgYT1uLmdldEN1cnNvclBvc2l0aW9uKCksZj1yLmRvYy5nZXRMaW5lKGEucm93KSxsPWYuc3Vic3RyaW5nKGEuY29sdW1uLTEsYS5jb2x1bW4pO2lmKGw9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGM9ci5nZXRUb2tlbnMoby5zdGFydC5yb3cpLGg9MCxwLGQ9LTE7Zm9yKHZhciB2PTA7djxjLmxlbmd0aDt2Kyspe3A9Y1t2XSxwLnR5cGU9PSJzdHJpbmciP2Q9LTE6ZDwwJiYoZD1wLnZhbHVlLmluZGV4T2YocykpO2lmKHAudmFsdWUubGVuZ3RoK2g+by5zdGFydC5jb2x1bW4pYnJlYWs7aCs9Y1t2XS52YWx1ZS5sZW5ndGh9aWYoIXB8fGQ8MCYmcC50eXBlIT09ImNvbW1lbnQiJiYocC50eXBlIT09InN0cmluZyJ8fG8uc3RhcnQuY29sdW1uIT09cC52YWx1ZS5sZW5ndGgraC0xJiZwLnZhbHVlLmxhc3RJbmRleE9mKHMpPT09cC52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6cytzLHNlbGVjdGlvbjpbMSwxXX07aWYocCYmcC50eXBlPT09InN0cmluZyIpe3ZhciBtPWYuc3Vic3RyaW5nKGEuY29sdW1uLGEuY29sdW1uKzEpO2lmKG09PXMpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJihzPT0nIid8fHM9PSInIikpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5zdGFydC5jb2x1bW4rMSxpLnN0YXJ0LmNvbHVtbisyKTtpZih1PT0nIicpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSl9O3IuaW5oZXJpdHMocyxpKSx0LkNzdHlsZUJlaGF2aW91cj1zfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxzPWUoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsbz10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtyLmluaGVyaXRzKG8scyksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pLHM9ci5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleDtpZihzWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soZSxzWzFdLG4sbyk7dmFyIHU9ZS5nZXRDb21tZW50Rm9sZFJhbmdlKG4sbytzWzBdLmxlbmd0aCk7cmV0dXJuIHUuZW5kLmNvbHVtbi09Mix1fWlmKHQhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIHM9ci5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihzKXt2YXIgbz1zLmluZGV4K3NbMF0ubGVuZ3RoO2lmKHNbMl0pe3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8pO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX12YXIgYT17cm93Om4sY29sdW1uOm99LGY9ZS4kZmluZE9wZW5pbmdCcmFja2V0KHNbMV0sYSk7aWYoIWYpcmV0dXJuO3JldHVybiBmLmNvbHVtbisrLGEuY29sdW1uLS0saS5mcm9tUG9pbnRzKGYsYSl9fX0uY2FsbChvLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2UsaT10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChyKT8ic3RhcnQiOnQ9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3Qocik/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT0vXFMvLHM9ZS5nZXRMaW5lKHQpLG89cy5zZWFyY2goaSk7aWYobz09LTEpcmV0dXJuO3ZhciB1PW58fHMubGVuZ3RoLGE9ZS5nZXRMZW5ndGgoKSxmPXQsbD10O3doaWxlKCsrdDxhKXt2YXIgYz1lLmdldExpbmUodCkuc2VhcmNoKGkpO2lmKGM9PS0xKWNvbnRpbnVlO2lmKGM8PW8pYnJlYWs7bD10fWlmKGw+Zil7dmFyIGg9ZS5nZXRMaW5lKGwpLmxlbmd0aDtyZXR1cm4gbmV3IHIoZix1LGwsaCl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oZSx0LG4saSxzKXt2YXIgbz17cm93Om4sY29sdW1uOmkrMX0sdT1lLiRmaW5kQ2xvc2luZ0JyYWNrZXQodCxvLHMpO2lmKCF1KXJldHVybjt2YXIgYT1lLmZvbGRXaWRnZXRzW3Uucm93XTtyZXR1cm4gYT09bnVsbCYmKGE9dGhpcy5nZXRGb2xkV2lkZ2V0KGUsdS5yb3cpKSxhPT0ic3RhcnQiJiZ1LnJvdz5vLnJvdyYmKHUucm93LS0sdS5jb2x1bW49ZS5nZXRMaW5lKHUucm93KS5sZW5ndGgpLHIuZnJvbVBvaW50cyhvLHUpfX0pLmNhbGwoaS5wcm90b3R5cGUpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-css.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9jc3MiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvY3NzX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2Uvd29ya2VyL3dvcmtlcl9jbGllbnQiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9jc3NfaGlnaGxpZ2h0X3J1bGVzIikuQ3NzSGlnaGxpZ2h0UnVsZXMsdT1lKCIuL21hdGNoaW5nX2JyYWNlX291dGRlbnQiKS5NYXRjaGluZ0JyYWNlT3V0ZGVudCxhPWUoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGY9ZSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGw9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpLCJpIiksdGhpcy4kb3V0ZGVudD1uZXcgdSx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgZn07ci5pbmhlcml0cyhsLGkpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nUnVsZXM9ImNTdHlsZSIsdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy4kZ2V0SW5kZW50KHQpLGk9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnModCxlKS50b2tlbnM7aWYoaS5sZW5ndGgmJmlbaS5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiByO3ZhciBzPXQubWF0Y2goL14uKlx7XHMqJC8pO3JldHVybiBzJiYocis9bikscn0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudCh0LG4pfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KHQsbil9LHRoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBhKFsiYWNlIl0sImFjZS9tb2RlL2Nzc193b3JrZXIiLCJXb3JrZXIiKTtyZXR1cm4gdC5hdHRhY2hUb0RvY3VtZW50KGUuZ2V0RG9jdW1lbnQoKSksdC5vbigiY3NzbGludCIsZnVuY3Rpb24odCl7dmFyIG49W107dC5kYXRhLmZvckVhY2goZnVuY3Rpb24oZSl7bi5wdXNoKHtyb3c6ZS5saW5lLTEsY29sdW1uOmUuY29sLTEsdGV4dDplLm1lc3NhZ2UsdHlwZTplLnR5cGUsbGludDplfSl9KSxlLnNldEFubm90YXRpb25zKG4pfSksdH19LmNhbGwobC5wcm90b3R5cGUpLHQuTW9kZT1sfSksZGVmaW5lKCJhY2UvbW9kZS9jc3NfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi9saWIvbGFuZyIpLHM9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxvPWZ1bmN0aW9uKCl7dmFyIGU9aS5hcnJheVRvTWFwKCJhbmltYXRpb24tZmlsbC1tb2RlfGFsaWdubWVudC1hZGp1c3R8YWxpZ25tZW50LWJhc2VsaW5lfGFuaW1hdGlvbi1kZWxheXxhbmltYXRpb24tZGlyZWN0aW9ufGFuaW1hdGlvbi1kdXJhdGlvbnxhbmltYXRpb24taXRlcmF0aW9uLWNvdW50fGFuaW1hdGlvbi1uYW1lfGFuaW1hdGlvbi1wbGF5LXN0YXRlfGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb258YW5pbWF0aW9ufGFwcGVhcmFuY2V8YXppbXV0aHxiYWNrZmFjZS12aXNpYmlsaXR5fGJhY2tncm91bmQtYXR0YWNobWVudHxiYWNrZ3JvdW5kLWJyZWFrfGJhY2tncm91bmQtY2xpcHxiYWNrZ3JvdW5kLWNvbG9yfGJhY2tncm91bmQtaW1hZ2V8YmFja2dyb3VuZC1vcmlnaW58YmFja2dyb3VuZC1wb3NpdGlvbnxiYWNrZ3JvdW5kLXJlcGVhdHxiYWNrZ3JvdW5kLXNpemV8YmFja2dyb3VuZHxiYXNlbGluZS1zaGlmdHxiaW5kaW5nfGJsZWVkfGJvb2ttYXJrLWxhYmVsfGJvb2ttYXJrLWxldmVsfGJvb2ttYXJrLXN0YXRlfGJvb2ttYXJrLXRhcmdldHxib3JkZXItYm90dG9tfGJvcmRlci1ib3R0b20tY29sb3J8Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1c3xib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1c3xib3JkZXItYm90dG9tLXN0eWxlfGJvcmRlci1ib3R0b20td2lkdGh8Ym9yZGVyLWNvbGxhcHNlfGJvcmRlci1jb2xvcnxib3JkZXItaW1hZ2V8Ym9yZGVyLWltYWdlLW91dHNldHxib3JkZXItaW1hZ2UtcmVwZWF0fGJvcmRlci1pbWFnZS1zbGljZXxib3JkZXItaW1hZ2Utc291cmNlfGJvcmRlci1pbWFnZS13aWR0aHxib3JkZXItbGVmdHxib3JkZXItbGVmdC1jb2xvcnxib3JkZXItbGVmdC1zdHlsZXxib3JkZXItbGVmdC13aWR0aHxib3JkZXItcmFkaXVzfGJvcmRlci1yaWdodHxib3JkZXItcmlnaHQtY29sb3J8Ym9yZGVyLXJpZ2h0LXN0eWxlfGJvcmRlci1yaWdodC13aWR0aHxib3JkZXItc3BhY2luZ3xib3JkZXItc3R5bGV8Ym9yZGVyLXRvcHxib3JkZXItdG9wLWNvbG9yfGJvcmRlci10b3AtbGVmdC1yYWRpdXN8Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXN8Ym9yZGVyLXRvcC1zdHlsZXxib3JkZXItdG9wLXdpZHRofGJvcmRlci13aWR0aHxib3JkZXJ8Ym90dG9tfGJveC1hbGlnbnxib3gtZGVjb3JhdGlvbi1icmVha3xib3gtZGlyZWN0aW9ufGJveC1mbGV4LWdyb3VwfGJveC1mbGV4fGJveC1saW5lc3xib3gtb3JkaW5hbC1ncm91cHxib3gtb3JpZW50fGJveC1wYWNrfGJveC1zaGFkb3d8Ym94LXNpemluZ3xicmVhay1hZnRlcnxicmVhay1iZWZvcmV8YnJlYWstaW5zaWRlfGNhcHRpb24tc2lkZXxjbGVhcnxjbGlwfGNvbG9yLXByb2ZpbGV8Y29sb3J8Y29sdW1uLWNvdW50fGNvbHVtbi1maWxsfGNvbHVtbi1nYXB8Y29sdW1uLXJ1bGV8Y29sdW1uLXJ1bGUtY29sb3J8Y29sdW1uLXJ1bGUtc3R5bGV8Y29sdW1uLXJ1bGUtd2lkdGh8Y29sdW1uLXNwYW58Y29sdW1uLXdpZHRofGNvbHVtbnN8Y29udGVudHxjb3VudGVyLWluY3JlbWVudHxjb3VudGVyLXJlc2V0fGNyb3B8Y3VlLWFmdGVyfGN1ZS1iZWZvcmV8Y3VlfGN1cnNvcnxkaXJlY3Rpb258ZGlzcGxheXxkb21pbmFudC1iYXNlbGluZXxkcm9wLWluaXRpYWwtYWZ0ZXItYWRqdXN0fGRyb3AtaW5pdGlhbC1hZnRlci1hbGlnbnxkcm9wLWluaXRpYWwtYmVmb3JlLWFkanVzdHxkcm9wLWluaXRpYWwtYmVmb3JlLWFsaWdufGRyb3AtaW5pdGlhbC1zaXplfGRyb3AtaW5pdGlhbC12YWx1ZXxlbGV2YXRpb258ZW1wdHktY2VsbHN8Zml0fGZpdC1wb3NpdGlvbnxmbG9hdC1vZmZzZXR8ZmxvYXR8Zm9udC1mYW1pbHl8Zm9udC1zaXplfGZvbnQtc2l6ZS1hZGp1c3R8Zm9udC1zdHJldGNofGZvbnQtc3R5bGV8Zm9udC12YXJpYW50fGZvbnQtd2VpZ2h0fGZvbnR8Z3JpZC1jb2x1bW5zfGdyaWQtcm93c3xoYW5naW5nLXB1bmN0dWF0aW9ufGhlaWdodHxoeXBoZW5hdGUtYWZ0ZXJ8aHlwaGVuYXRlLWJlZm9yZXxoeXBoZW5hdGUtY2hhcmFjdGVyfGh5cGhlbmF0ZS1saW5lc3xoeXBoZW5hdGUtcmVzb3VyY2V8aHlwaGVuc3xpY29ufGltYWdlLW9yaWVudGF0aW9ufGltYWdlLXJlbmRlcmluZ3xpbWFnZS1yZXNvbHV0aW9ufGlubGluZS1ib3gtYWxpZ258bGVmdHxsZXR0ZXItc3BhY2luZ3xsaW5lLWhlaWdodHxsaW5lLXN0YWNraW5nLXJ1Ynl8bGluZS1zdGFja2luZy1zaGlmdHxsaW5lLXN0YWNraW5nLXN0cmF0ZWd5fGxpbmUtc3RhY2tpbmd8bGlzdC1zdHlsZS1pbWFnZXxsaXN0LXN0eWxlLXBvc2l0aW9ufGxpc3Qtc3R5bGUtdHlwZXxsaXN0LXN0eWxlfG1hcmdpbi1ib3R0b218bWFyZ2luLWxlZnR8bWFyZ2luLXJpZ2h0fG1hcmdpbi10b3B8bWFyZ2lufG1hcmstYWZ0ZXJ8bWFyay1iZWZvcmV8bWFya3xtYXJrc3xtYXJxdWVlLWRpcmVjdGlvbnxtYXJxdWVlLXBsYXktY291bnR8bWFycXVlZS1zcGVlZHxtYXJxdWVlLXN0eWxlfG1heC1oZWlnaHR8bWF4LXdpZHRofG1pbi1oZWlnaHR8bWluLXdpZHRofG1vdmUtdG98bmF2LWRvd258bmF2LWluZGV4fG5hdi1sZWZ0fG5hdi1yaWdodHxuYXYtdXB8b3BhY2l0eXxvcnBoYW5zfG91dGxpbmUtY29sb3J8b3V0bGluZS1vZmZzZXR8b3V0bGluZS1zdHlsZXxvdXRsaW5lLXdpZHRofG91dGxpbmV8b3ZlcmZsb3ctc3R5bGV8b3ZlcmZsb3cteHxvdmVyZmxvdy15fG92ZXJmbG93fHBhZGRpbmctYm90dG9tfHBhZGRpbmctbGVmdHxwYWRkaW5nLXJpZ2h0fHBhZGRpbmctdG9wfHBhZGRpbmd8cGFnZS1icmVhay1hZnRlcnxwYWdlLWJyZWFrLWJlZm9yZXxwYWdlLWJyZWFrLWluc2lkZXxwYWdlLXBvbGljeXxwYWdlfHBhdXNlLWFmdGVyfHBhdXNlLWJlZm9yZXxwYXVzZXxwZXJzcGVjdGl2ZS1vcmlnaW58cGVyc3BlY3RpdmV8cGhvbmVtZXN8cGl0Y2gtcmFuZ2V8cGl0Y2h8cGxheS1kdXJpbmd8cG9zaXRpb258cHJlc2VudGF0aW9uLWxldmVsfHB1bmN0dWF0aW9uLXRyaW18cXVvdGVzfHJlbmRlcmluZy1pbnRlbnR8cmVzaXplfHJlc3QtYWZ0ZXJ8cmVzdC1iZWZvcmV8cmVzdHxyaWNobmVzc3xyaWdodHxyb3RhdGlvbi1wb2ludHxyb3RhdGlvbnxydWJ5LWFsaWdufHJ1Ynktb3Zlcmhhbmd8cnVieS1wb3NpdGlvbnxydWJ5LXNwYW58c2l6ZXxzcGVhay1oZWFkZXJ8c3BlYWstbnVtZXJhbHxzcGVhay1wdW5jdHVhdGlvbnxzcGVha3xzcGVlY2gtcmF0ZXxzdHJlc3N8c3RyaW5nLXNldHx0YWJsZS1sYXlvdXR8dGFyZ2V0LW5hbWV8dGFyZ2V0LW5ld3x0YXJnZXQtcG9zaXRpb258dGFyZ2V0fHRleHQtYWxpZ24tbGFzdHx0ZXh0LWFsaWdufHRleHQtZGVjb3JhdGlvbnx0ZXh0LWVtcGhhc2lzfHRleHQtaGVpZ2h0fHRleHQtaW5kZW50fHRleHQtanVzdGlmeXx0ZXh0LW91dGxpbmV8dGV4dC1zaGFkb3d8dGV4dC10cmFuc2Zvcm18dGV4dC13cmFwfHRvcHx0cmFuc2Zvcm0tb3JpZ2lufHRyYW5zZm9ybS1zdHlsZXx0cmFuc2Zvcm18dHJhbnNpdGlvbi1kZWxheXx0cmFuc2l0aW9uLWR1cmF0aW9ufHRyYW5zaXRpb24tcHJvcGVydHl8dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb258dHJhbnNpdGlvbnx1bmljb2RlLWJpZGl8dmVydGljYWwtYWxpZ258dmlzaWJpbGl0eXx2b2ljZS1iYWxhbmNlfHZvaWNlLWR1cmF0aW9ufHZvaWNlLWZhbWlseXx2b2ljZS1waXRjaC1yYW5nZXx2b2ljZS1waXRjaHx2b2ljZS1yYXRlfHZvaWNlLXN0cmVzc3x2b2ljZS12b2x1bWV8dm9sdW1lfHdoaXRlLXNwYWNlLWNvbGxhcHNlfHdoaXRlLXNwYWNlfHdpZG93c3x3aWR0aHx3b3JkLWJyZWFrfHdvcmQtc3BhY2luZ3x3b3JkLXdyYXB8ei1pbmRleCIuc3BsaXQoInwiKSksdD1pLmFycmF5VG9NYXAoInJnYnxyZ2JhfHVybHxhdHRyfGNvdW50ZXJ8Y291bnRlcnMiLnNwbGl0KCJ8IikpLG49aS5hcnJheVRvTWFwKCJhYnNvbHV0ZXxhZnRlci1lZGdlfGFmdGVyfGFsbC1zY3JvbGx8YWxsfGFscGhhYmV0aWN8YWx3YXlzfGFudGlhbGlhc2VkfGFybWVuaWFufGF1dG98YXZvaWQtY29sdW1ufGF2b2lkLXBhZ2V8YXZvaWR8YmFsYW5jZXxiYXNlbGluZXxiZWZvcmUtZWRnZXxiZWZvcmV8YmVsb3d8YmlkaS1vdmVycmlkZXxibG9jay1saW5lLWhlaWdodHxibG9ja3xib2xkfGJvbGRlcnxib3JkZXItYm94fGJvdGh8Ym90dG9tfGJveHxicmVhay1hbGx8YnJlYWstd29yZHxjYXBpdGFsaXplfGNhcHMtaGVpZ2h0fGNhcHRpb258Y2VudGVyfGNlbnRyYWx8Y2hhcnxjaXJjbGV8Y2prLWlkZW9ncmFwaGljfGNsb25lfGNsb3NlLXF1b3RlfGNvbC1yZXNpemV8Y29sbGFwc2V8Y29sdW1ufGNvbnNpZGVyLXNoaWZ0c3xjb250YWlufGNvbnRlbnQtYm94fGNvdmVyfGNyb3NzaGFpcnxjdWJpYy1iZXppZXJ8ZGFzaGVkfGRlY2ltYWwtbGVhZGluZy16ZXJvfGRlY2ltYWx8ZGVmYXVsdHxkaXNhYmxlZHxkaXNjfGRpc3JlZ2FyZC1zaGlmdHN8ZGlzdHJpYnV0ZS1hbGwtbGluZXN8ZGlzdHJpYnV0ZS1sZXR0ZXJ8ZGlzdHJpYnV0ZS1zcGFjZXxkaXN0cmlidXRlfGRvdHRlZHxkb3VibGV8ZS1yZXNpemV8ZWFzZS1pbnxlYXNlLWluLW91dHxlYXNlLW91dHxlYXNlfGVsbGlwc2lzfGVuZHxleGNsdWRlLXJ1Ynl8ZmlsbHxmaXhlZHxmb250LXNpemV8Zm9udHxnZW9yZ2lhbnxnbHlwaHN8Z3JpZC1oZWlnaHR8Z3Jvb3ZlfGhhbmR8aGFuZ2luZ3xoZWJyZXd8aGVscHxoaWRkZW58aGlyYWdhbmEtaXJvaGF8aGlyYWdhbmF8aG9yaXpvbnRhbHxpY29ufGlkZW9ncmFwaC1hbHBoYXxpZGVvZ3JhcGgtbnVtZXJpY3xpZGVvZ3JhcGgtcGFyZW50aGVzaXN8aWRlb2dyYXBoLXNwYWNlfGlkZW9ncmFwaGljfGluYWN0aXZlfGluY2x1ZGUtcnVieXxpbmhlcml0fGluaXRpYWx8aW5saW5lLWJsb2NrfGlubGluZS1ib3h8aW5saW5lLWxpbmUtaGVpZ2h0fGlubGluZS10YWJsZXxpbmxpbmV8aW5zZXR8aW5zaWRlfGludGVyLWlkZW9ncmFwaHxpbnRlci13b3JkfGludmVydHxpdGFsaWN8anVzdGlmeXxrYXRha2FuYS1pcm9oYXxrYXRha2FuYXxrZWVwLWFsbHxsYXN0fGxlZnR8bGlnaHRlcnxsaW5lLWVkZ2V8bGluZS10aHJvdWdofGxpbmV8bGluZWFyfGxpc3QtaXRlbXxsb2NhbHxsb29zZXxsb3dlci1hbHBoYXxsb3dlci1ncmVla3xsb3dlci1sYXRpbnxsb3dlci1yb21hbnxsb3dlcmNhc2V8bHItdGJ8bHRyfG1hdGhlbWF0aWNhbHxtYXgtaGVpZ2h0fG1heC1zaXplfG1lZGl1bXxtZW51fG1lc3NhZ2UtYm94fG1pZGRsZXxtb3ZlfG4tcmVzaXplfG5lLXJlc2l6ZXxuZXdzcGFwZXJ8bm8tY2hhbmdlfG5vLWNsb3NlLXF1b3RlfG5vLWRyb3B8bm8tb3Blbi1xdW90ZXxuby1yZXBlYXR8bm9uZXxub3JtYWx8bm90LWFsbG93ZWR8bm93cmFwfG53LXJlc2l6ZXxvYmxpcXVlfG9wZW4tcXVvdGV8b3V0c2V0fG91dHNpZGV8b3ZlcmxpbmV8cGFkZGluZy1ib3h8cGFnZXxwb2ludGVyfHByZS1saW5lfHByZS13cmFwfHByZXxwcmVzZXJ2ZS0zZHxwcm9ncmVzc3xyZWxhdGl2ZXxyZXBlYXQteHxyZXBlYXQteXxyZXBlYXR8cmVwbGFjZWR8cmVzZXQtc2l6ZXxyaWRnZXxyaWdodHxyb3VuZHxyb3ctcmVzaXplfHJ0bHxzLXJlc2l6ZXxzY3JvbGx8c2UtcmVzaXplfHNlcGFyYXRlfHNsaWNlfHNtYWxsLWNhcHN8c21hbGwtY2FwdGlvbnxzb2xpZHxzcGFjZXxzcXVhcmV8c3RhcnR8c3RhdGljfHN0YXR1cy1iYXJ8c3RlcC1lbmR8c3RlcC1zdGFydHxzdGVwc3xzdHJldGNofHN0cmljdHxzdWJ8c3VwZXJ8c3ctcmVzaXplfHRhYmxlLWNhcHRpb258dGFibGUtY2VsbHx0YWJsZS1jb2x1bW4tZ3JvdXB8dGFibGUtY29sdW1ufHRhYmxlLWZvb3Rlci1ncm91cHx0YWJsZS1oZWFkZXItZ3JvdXB8dGFibGUtcm93LWdyb3VwfHRhYmxlLXJvd3x0YWJsZXx0Yi1ybHx0ZXh0LWFmdGVyLWVkZ2V8dGV4dC1iZWZvcmUtZWRnZXx0ZXh0LWJvdHRvbXx0ZXh0LXNpemV8dGV4dC10b3B8dGV4dHx0aGlja3x0aGlufHRvcHx0cmFuc3BhcmVudHx1bmRlcmxpbmV8dXBwZXItYWxwaGF8dXBwZXItbGF0aW58dXBwZXItcm9tYW58dXBwZXJjYXNlfHVzZS1zY3JpcHR8dmVydGljYWwtaWRlb2dyYXBoaWN8dmVydGljYWwtdGV4dHx2aXNpYmxlfHctcmVzaXplfHdhaXR8d2hpdGVzcGFjZXx6LWluZGV4fHplcm8iLnNwbGl0KCJ8IikpLHI9aS5hcnJheVRvTWFwKCJhcXVhfGJsYWNrfGJsdWV8ZnVjaHNpYXxncmF5fGdyZWVufGxpbWV8bWFyb29ufG5hdnl8b2xpdmV8b3JhbmdlfHB1cnBsZXxyZWR8c2lsdmVyfHRlYWx8d2hpdGV8eWVsbG93Ii5zcGxpdCgifCIpKSxzPWkuYXJyYXlUb01hcCgiYXJpYWx8Y2VudHVyeXxjb21pY3xjb3VyaWVyfGdhcmFtb25kfGdlb3JnaWF8aGVsdmV0aWNhfGltcGFjdHxsdWNpZGF8c3ltYm9sfHN5c3RlbXx0YWhvbWF8dGltZXN8dHJlYnVjaGV0fHV0b3BpYXx2ZXJkYW5hfHdlYmRpbmdzfHNhbnMtc2VyaWZ8c2VyaWZ8bW9ub3NwYWNlIi5zcGxpdCgifCIpKSxvPSJcXC0/KD86KD86WzAtOV0rKXwoPzpbMC05XSpcXC5bMC05XSspKSIsdT0iKFxcOispXFxiKGFmdGVyfGJlZm9yZXxmaXJzdC1sZXR0ZXJ8Zmlyc3QtbGluZXxtb3otc2VsZWN0aW9ufHNlbGVjdGlvbilcXGIiLGE9Iig6KVxcYihhY3RpdmV8Y2hlY2tlZHxkaXNhYmxlZHxlbXB0eXxlbmFibGVkfGZpcnN0LWNoaWxkfGZpcnN0LW9mLXR5cGV8Zm9jdXN8aG92ZXJ8aW5kZXRlcm1pbmF0ZXxpbnZhbGlkfGxhc3QtY2hpbGR8bGFzdC1vZi10eXBlfGxpbmt8bm90fG50aC1jaGlsZHxudGgtbGFzdC1jaGlsZHxudGgtbGFzdC1vZi10eXBlfG50aC1vZi10eXBlfG9ubHktY2hpbGR8b25seS1vZi10eXBlfHJlcXVpcmVkfHJvb3R8dGFyZ2V0fHZhbGlkfHZpc2l0ZWQpXFxiIixmPVt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6InJ1bGVzZXRfY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjpbImNvbnN0YW50Lm51bWVyaWMiLCJrZXl3b3JkIl0scmVnZXg6IigiK28rIikoY2h8Y218ZGVnfGVtfGV4fGZyfGdkfGdyYWR8SHp8aW58a0h6fG1tfG1zfHBjfHB0fHB4fHJhZHxyZW18c3x0dXJufHZofHZtfHZ3fCUpIn0se3Rva2VuOlsiY29uc3RhbnQubnVtZXJpYyJdLHJlZ2V4OiIoWzAtOV0rKSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IiNbYS1mMC05XXs2fSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IiNbYS1mMC05XXszfSJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uIiwiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lLnBzZXVkby1lbGVtZW50LmNzcyJdLHJlZ2V4OnV9LHt0b2tlbjpbInB1bmN0dWF0aW9uIiwiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lLnBzZXVkby1jbGFzcy5jc3MiXSxyZWdleDphfSx7dG9rZW46ZnVuY3Rpb24oaSl7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkoaS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC50eXBlIjp0Lmhhc093blByb3BlcnR5KGkudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuZnVuY3Rpb24iOm4uaGFzT3duUHJvcGVydHkoaS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC5jb25zdGFudCI6ci5oYXNPd25Qcm9wZXJ0eShpLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50LmNvbG9yIjpzLmhhc093blByb3BlcnR5KGkudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuY29uc3RhbnQuZm9udHMiOiJ0ZXh0In0scmVnZXg6IlxcLT9bYS16QS1aX11bYS16QS1aMC05X1xcLV0qIn1dLGw9aS5jb3B5QXJyYXkoZik7bC51bnNoaWZ0KHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiXFx9IixuZXh0OiJzdGFydCJ9KTt2YXIgYz1pLmNvcHlBcnJheShmKTtjLnVuc2hpZnQoe3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJcXH0iLG5leHQ6Im1lZGlhIn0pO3ZhciBoPVt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxwPWkuY29weUFycmF5KGgpO3AudW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InN0YXJ0In0pO3ZhciBkPWkuY29weUFycmF5KGgpO2QudW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6Im1lZGlhIn0pO3ZhciB2PWkuY29weUFycmF5KGgpO3YudW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InJ1bGVzZXQifSksdGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IlxceyIsbmV4dDoicnVsZXNldCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiQC4qP3siLG5leHQ6Im1lZGlhIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiI1thLXowLTktX10rIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlxcLlthLXowLTktX10rIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiI6W2EtejAtOS1fXSsifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiW2EtejAtOS1fXSsifV0sbWVkaWE6W3t0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoibWVkaWFfY29tbWVudCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiXFx7IixuZXh0OiJtZWRpYV9ydWxlc2V0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXH0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiI1thLXowLTktX10rIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlxcLlthLXowLTktX10rIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiI6W2EtejAtOS1fXSsifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiW2EtejAtOS1fXSsifV0sY29tbWVudDpwLHJ1bGVzZXQ6bCxydWxlc2V0X2NvbW1lbnQ6dixtZWRpYV9ydWxlc2V0OmMsbWVkaWFfY29tbWVudDpkfX07ci5pbmhlcml0cyhvLHMpLHQuQ3NzSGlnaGxpZ2h0UnVsZXM9b30pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9yYW5nZSIpLlJhbmdlLGk9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuL15ccyskLy50ZXN0KGUpPy9eXHMqXH0vLnRlc3QodCk6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldExpbmUodCksaT1uLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFpKXJldHVybiAwO3ZhciBzPWlbMV0ubGVuZ3RoLG89ZS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dCxjb2x1bW46c30pO2lmKCFvfHxvLnJvdz09dClyZXR1cm4gMDt2YXIgdT10aGlzLiRnZXRJbmRlbnQoZS5nZXRMaW5lKG8ucm93KSk7ZS5yZXBsYWNlKG5ldyByKHQsMCx0LHMtMSksdSl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gdD90WzFdOiIifX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9aX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2Uscz1lKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLG89dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307ci5pbmhlcml0cyhvLHMpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9Lyhce3xcWylbXlx9XF1dKiR8XlxzKihcL1wqKS8sdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj0vXlteXFtce10qKFx9fFxdKXxeW1xzXCpdKihcKlwvKS8sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKSxzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXg7aWYoc1sxXSlyZXR1cm4gdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrKGUsc1sxXSxuLG8pO3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8rc1swXS5sZW5ndGgpO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX1pZih0IT09Im1hcmtiZWdpbmVuZCIpcmV0dXJuO3ZhciBzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RvcE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleCtzWzBdLmxlbmd0aDtpZihzWzJdKXt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9dmFyIGE9e3JvdzpuLGNvbHVtbjpvfSxmPWUuJGZpbmRPcGVuaW5nQnJhY2tldChzWzFdLGEpO2lmKCFmKXJldHVybjtyZXR1cm4gZi5jb2x1bW4rKyxhLmNvbHVtbi0tLGkuZnJvbVBvaW50cyhmLGEpfX19LmNhbGwoby5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGk9dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobik7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3Qocik/InN0YXJ0Ijp0PT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KHIpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihlLHQsbil7dmFyIGk9L1xTLyxzPWUuZ2V0TGluZSh0KSxvPXMuc2VhcmNoKGkpO2lmKG89PS0xKXJldHVybjt2YXIgdT1ufHxzLmxlbmd0aCxhPWUuZ2V0TGVuZ3RoKCksZj10LGw9dDt3aGlsZSgrK3Q8YSl7dmFyIGM9ZS5nZXRMaW5lKHQpLnNlYXJjaChpKTtpZihjPT0tMSljb250aW51ZTtpZihjPD1vKWJyZWFrO2w9dH1pZihsPmYpe3ZhciBoPWUuZ2V0TGluZShsKS5sZW5ndGg7cmV0dXJuIG5ldyByKGYsdSxsLGgpfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGUsdCxuLGkscyl7dmFyIG89e3JvdzpuLGNvbHVtbjppKzF9LHU9ZS4kZmluZENsb3NpbmdCcmFja2V0KHQsbyxzKTtpZighdSlyZXR1cm47dmFyIGE9ZS5mb2xkV2lkZ2V0c1t1LnJvd107cmV0dXJuIGE9PW51bGwmJihhPXRoaXMuZ2V0Rm9sZFdpZGdldChlLHUucm93KSksYT09InN0YXJ0IiYmdS5yb3c+by5yb3cmJih1LnJvdy0tLHUuY29sdW1uPWUuZ2V0TGluZSh1LnJvdykubGVuZ3RoKSxyLmZyb21Qb2ludHMobyx1KX19KS5jYWxsKGkucHJvdG90eXBlKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-c_cpp.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9jX2NwcCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9jX2NwcF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dCIpLk1vZGUscz1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsbz1lKCIuL2NfY3BwX2hpZ2hsaWdodF9ydWxlcyIpLmNfY3BwSGlnaGxpZ2h0UnVsZXMsdT1lKCIuL21hdGNoaW5nX2JyYWNlX291dGRlbnQiKS5NYXRjaGluZ0JyYWNlT3V0ZGVudCxhPWUoIi4uL3JhbmdlIikuUmFuZ2UsZj1lKCIuL2JlaGF2aW91ci9jc3R5bGUiKS5Dc3R5bGVCZWhhdmlvdXIsbD1lKCIuL2ZvbGRpbmcvY3N0eWxlIikuRm9sZE1vZGUsYz1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgcygobmV3IG8pLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IHUsdGhpcy4kYmVoYXZpb3VyPW5ldyBmLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBsfTtyLmluaGVyaXRzKGMsaSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT0hMCxzPS9eKFxzKilcL1wvLztmb3IodmFyIG89bjtvPD1yO28rKylpZighcy50ZXN0KHQuZ2V0TGluZShvKSkpe2k9ITE7YnJlYWt9aWYoaSl7dmFyIHU9bmV3IGEoMCwwLDAsMCk7Zm9yKHZhciBvPW47bzw9cjtvKyspe3ZhciBmPXQuZ2V0TGluZShvKSxsPWYubWF0Y2gocyk7dS5zdGFydC5yb3c9byx1LmVuZC5yb3c9byx1LmVuZC5jb2x1bW49bFswXS5sZW5ndGgsdC5yZXBsYWNlKHUsbFsxXSl9fWVsc2UgdC5pbmRlbnRSb3dzKG4sciwiLy8iKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy4kZ2V0SW5kZW50KHQpLGk9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnModCxlKSxzPWkudG9rZW5zLG89aS5zdGF0ZTtpZihzLmxlbmd0aCYmc1tzLmxlbmd0aC0xXS50eXBlPT0iY29tbWVudCIpcmV0dXJuIHI7aWYoZT09InN0YXJ0Iil7dmFyIHU9dC5tYXRjaCgvXi4qW1x7XChcW11ccyokLyk7dSYmKHIrPW4pfWVsc2UgaWYoZT09ImRvYy1zdGFydCIpe2lmKG89PSJzdGFydCIpcmV0dXJuIiI7dmFyIHU9dC5tYXRjaCgvXlxzKihcLz8pXCovKTt1JiYodVsxXSYmKHIrPSIgIikscis9IiogIil9cmV0dXJuIHJ9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQodCxuKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudCh0LG4pfX0uY2FsbChjLnByb3RvdHlwZSksdC5Nb2RlPWN9KSxkZWZpbmUoImFjZS9tb2RlL2NfY3BwX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLG89ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyx1PWZ1bmN0aW9uKCl7dmFyIGU9aS5hcnJheVRvTWFwKCJhbmR8ZG91YmxlfG5vdF9lcXx0aHJvd3xhbmRfZXF8ZHluYW1pY19jYXN0fG9wZXJhdG9yfHRydWV8YXNtfGVsc2V8b3J8dHJ5fGF1dG98ZW51bXxvcl9lcXx0eXBlZGVmfGJpdGFuZHxleHBsaWNpdHxwcml2YXRlfHR5cGVpZHxiaXRvcnxleHRlcm58cHJvdGVjdGVkfHR5cGVuYW1lfGJvb2x8ZmFsc2V8cHVibGljfHVuaW9ufGJyZWFrfGZsb2F0fHJlZ2lzdGVyfHVuc2lnbmVkfGNhc2V8ZnJvfHJlaW50ZXJwcmV0LWNhc3R8dXNpbmd8Y2F0Y2h8ZnJpZW5kfHJldHVybnx2aXJ0dWFsfGNoYXJ8Z290b3xzaG9ydHx2b2lkfGNsYXNzfGlmfHNpZ25lZHx2b2xhdGlsZXxjb21wbHxpbmxpbmV8c2l6ZW9mfHdjaGFyX3R8Y29uc3R8aW50fHN0YXRpY3x3aGlsZXxjb25zdC1jYXN0fGxvbmd8c3RhdGljX2Nhc3R8eG9yfGNvbnRpbnVlfG11dGFibGV8c3RydWN0fHhvcl9lcXxkZWZhdWx0fG5hbWVzcGFjZXxzd2l0Y2h8ZGVsZXRlfG5ld3x0ZW1wbGF0ZXxkb3xub3R8dGhpc3xmb3IiLnNwbGl0KCJ8IikpLHQ9aS5hcnJheVRvTWFwKCJOVUxMIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qJCJ9LHMuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6J1siXS4qXFxcXCQnLG5leHQ6InFxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiJbJ10uKlxcXFwkIixuZXh0OiJxc3RyaW5nIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiMFt4WF1bMC05YS1mQS1GXStcXGIifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQiLHJlZ2V4OiI8W2EtekEtWjAtOS5dKz4ifSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiIoPzojaW5jbHVkZXwjcHJhZ21hfCNsaW5lfCNkZWZpbmV8I3VuZGVmfCNpZmRlZnwjZWxzZXwjZWxpZnwjZW5kaWZ8I2lmbmRlZikifSx7dG9rZW46ZnVuY3Rpb24obil7cmV0dXJuIG49PSJ0aGlzIj8idmFyaWFibGUubGFuZ3VhZ2UiOmUuaGFzT3duUHJvcGVydHkobik/ImtleXdvcmQiOnQuaGFzT3duUHJvcGVydHkobik/ImNvbnN0YW50Lmxhbmd1YWdlIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiIhfFxcJHwlfCZ8XFwqfFxcLVxcLXxcXC18XFwrXFwrfFxcK3x+fD09fD18IT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFxcfFxcfHxcXD9cXDp8XFwqPXwlPXxcXCs9fFxcLT18Jj18XFxePXxcXGIoPzppbnxuZXd8ZGVsZXRlfHR5cGVvZnx2b2lkKSJ9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJcXD98XFw6fFxcLHxcXDt8XFwuIn0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJbWyh7XSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiW1xcXSl9XSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFxc3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Jyg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj8iJyxuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV0scXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIoPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/JyIsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfSx0aGlzLmVtYmVkUnVsZXMocywiZG9jLSIsW3MuZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtyLmluaGVyaXRzKHUsbyksdC5jX2NwcEhpZ2hsaWdodFJ1bGVzPXV9KSxkZWZpbmUoImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxzPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQuZG9jLnRhZyIscmVnZXg6IkBbXFx3XFxkX10rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiVE9ETyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJbXkBcXCpdKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiIuIn1dfX07ci5pbmhlcml0cyhzLGkpLHMuZ2V0U3RhcnRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCooPz1cXCopIixuZXh0OmV9fSxzLmdldEVuZFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcKlxcLyIsbmV4dDplfX0sdC5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXM9c30pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9yYW5nZSIpLlJhbmdlLGk9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuL15ccyskLy50ZXN0KGUpPy9eXHMqXH0vLnRlc3QodCk6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldExpbmUodCksaT1uLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFpKXJldHVybiAwO3ZhciBzPWlbMV0ubGVuZ3RoLG89ZS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dCxjb2x1bW46c30pO2lmKCFvfHxvLnJvdz09dClyZXR1cm4gMDt2YXIgdT10aGlzLiRnZXRJbmRlbnQoZS5nZXRMaW5lKG8ucm93KSk7ZS5yZXBsYWNlKG5ldyByKHQsMCx0LHMtMSksdSl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gdD90WzFdOiIifX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9aX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixzPWZ1bmN0aW9uKCl7dGhpcy5hZGQoImJyYWNlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0ieyIpe3ZhciBzPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSxvPXIuZG9jLmdldFRleHRSYW5nZShzKTtyZXR1cm4gbyE9PSIiP3t0ZXh0OiJ7IitvKyJ9IixzZWxlY3Rpb246ITF9Ont0ZXh0OiJ7fSIsc2VsZWN0aW9uOlsxLDFdfX1pZihpPT0ifSIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09In0iKXt2YXIgbD1yLiRmaW5kT3BlbmluZ0JyYWNrZXQoIn0iLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihsIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX1lbHNlIGlmKGk9PSJcbiIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09In0iKXt2YXIgYz1yLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp1LnJvdyxjb2x1bW46dS5jb2x1bW4rMX0pO2lmKCFjKXJldHVybiBudWxsO3ZhciBoPXRoaXMuZ2V0TmV4dExpbmVJbmRlbnQoZSxhLnN1YnN0cmluZygwLGEubGVuZ3RoLTEpLHIuZ2V0VGFiU3RyaW5nKCkpLHA9dGhpcy4kZ2V0SW5kZW50KHIuZG9jLmdldExpbmUoYy5yb3cpKTtyZXR1cm57dGV4dDoiXG4iK2grIlxuIitwLHNlbGVjdGlvbjpbMSxoLmxlbmd0aCwxLGgubGVuZ3RoXX19fX0pLHRoaXMuYWRkKCJicmFjZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcz09InsiKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuZW5kLmNvbHVtbixpLmVuZC5jb2x1bW4rMSk7aWYodT09In0iKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09IigiKXt2YXIgcz1uLmdldFNlbGVjdGlvblJhbmdlKCksbz1yLmRvYy5nZXRUZXh0UmFuZ2Uocyk7cmV0dXJuIG8hPT0iIj97dGV4dDoiKCIrbysiKSIsc2VsZWN0aW9uOiExfTp7dGV4dDoiKCkiLHNlbGVjdGlvbjpbMSwxXX19aWYoaT09IikiKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSIpIil7dmFyIGw9ci4kZmluZE9wZW5pbmdCcmFja2V0KCIpIix7Y29sdW1uOnUuY29sdW1uKzEscm93OnUucm93fSk7aWYobCE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInBhcmVucyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiZzPT0iKCIpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5zdGFydC5jb2x1bW4rMSxpLnN0YXJ0LmNvbHVtbisyKTtpZih1PT0iKSIpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSciJ3x8aT09IiciKXt2YXIgcz1pLG89bi5nZXRTZWxlY3Rpb25SYW5nZSgpLHU9ci5kb2MuZ2V0VGV4dFJhbmdlKG8pO2lmKHUhPT0iIilyZXR1cm57dGV4dDpzK3UrcyxzZWxlY3Rpb246ITF9O3ZhciBhPW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxmPXIuZG9jLmdldExpbmUoYS5yb3cpLGw9Zi5zdWJzdHJpbmcoYS5jb2x1bW4tMSxhLmNvbHVtbik7aWYobD09IlxcIilyZXR1cm4gbnVsbDt2YXIgYz1yLmdldFRva2VucyhvLnN0YXJ0LnJvdyksaD0wLHAsZD0tMTtmb3IodmFyIHY9MDt2PGMubGVuZ3RoO3YrKyl7cD1jW3ZdLHAudHlwZT09InN0cmluZyI/ZD0tMTpkPDAmJihkPXAudmFsdWUuaW5kZXhPZihzKSk7aWYocC52YWx1ZS5sZW5ndGgraD5vLnN0YXJ0LmNvbHVtbilicmVhaztoKz1jW3ZdLnZhbHVlLmxlbmd0aH1pZighcHx8ZDwwJiZwLnR5cGUhPT0iY29tbWVudCImJihwLnR5cGUhPT0ic3RyaW5nInx8by5zdGFydC5jb2x1bW4hPT1wLnZhbHVlLmxlbmd0aCtoLTEmJnAudmFsdWUubGFzdEluZGV4T2Yocyk9PT1wLnZhbHVlLmxlbmd0aC0xKSlyZXR1cm57dGV4dDpzK3Msc2VsZWN0aW9uOlsxLDFdfTtpZihwJiZwLnR5cGU9PT0ic3RyaW5nIil7dmFyIG09Zi5zdWJzdHJpbmcoYS5jb2x1bW4sYS5jb2x1bW4rMSk7aWYobT09cylyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmKHM9PSciJ3x8cz09IiciKSl7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLnN0YXJ0LmNvbHVtbisxLGkuc3RhcnQuY29sdW1uKzIpO2lmKHU9PSciJylyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KX07ci5pbmhlcml0cyhzLGkpLHQuQ3N0eWxlQmVoYXZpb3VyPXN9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLHM9ZSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxvPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O3IuaW5oZXJpdHMobyxzKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobikscz1yLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihzKXt2YXIgbz1zLmluZGV4O2lmKHNbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhlLHNbMV0sbixvKTt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvK3NbMF0ubGVuZ3RoKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9aWYodCE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgcz1yLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXgrc1swXS5sZW5ndGg7aWYoc1syXSl7dmFyIHU9ZS5nZXRDb21tZW50Rm9sZFJhbmdlKG4sbyk7cmV0dXJuIHUuZW5kLmNvbHVtbi09Mix1fXZhciBhPXtyb3c6bixjb2x1bW46b30sZj1lLiRmaW5kT3BlbmluZ0JyYWNrZXQoc1sxXSxhKTtpZighZilyZXR1cm47cmV0dXJuIGYuY29sdW1uKyssYS5jb2x1bW4tLSxpLmZyb21Qb2ludHMoZixhKX19fS5jYWxsKG8ucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxpPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KHIpPyJzdGFydCI6dD09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChyKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPS9cUy8scz1lLmdldExpbmUodCksbz1zLnNlYXJjaChpKTtpZihvPT0tMSlyZXR1cm47dmFyIHU9bnx8cy5sZW5ndGgsYT1lLmdldExlbmd0aCgpLGY9dCxsPXQ7d2hpbGUoKyt0PGEpe3ZhciBjPWUuZ2V0TGluZSh0KS5zZWFyY2goaSk7aWYoYz09LTEpY29udGludWU7aWYoYzw9bylicmVhaztsPXR9aWYobD5mKXt2YXIgaD1lLmdldExpbmUobCkubGVuZ3RoO3JldHVybiBuZXcgcihmLHUsbCxoKX19LHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jaz1mdW5jdGlvbihlLHQsbixpLHMpe3ZhciBvPXtyb3c6bixjb2x1bW46aSsxfSx1PWUuJGZpbmRDbG9zaW5nQnJhY2tldCh0LG8scyk7aWYoIXUpcmV0dXJuO3ZhciBhPWUuZm9sZFdpZGdldHNbdS5yb3ddO3JldHVybiBhPT1udWxsJiYoYT10aGlzLmdldEZvbGRXaWRnZXQoZSx1LnJvdykpLGE9PSJzdGFydCImJnUucm93Pm8ucm93JiYodS5yb3ctLSx1LmNvbHVtbj1lLmdldExpbmUodS5yb3cpLmxlbmd0aCksci5mcm9tUG9pbnRzKG8sdSl9fSkuY2FsbChpLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-diff.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9kaWZmIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2RpZmZfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvZm9sZGluZy9kaWZmIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dCIpLk1vZGUscz1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsbz1lKCIuL2RpZmZfaGlnaGxpZ2h0X3J1bGVzIikuRGlmZkhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9mb2xkaW5nL2RpZmYiKS5Gb2xkTW9kZSxhPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBzKChuZXcgbykuZ2V0UnVsZXMoKSwiaSIpLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyB1KFsiZGlmZiIsImluZGV4IiwiXFwrezN9IiwiQEB8XFwqezV9Il0sImkiKX07ci5pbmhlcml0cyhhLGkpLGZ1bmN0aW9uKCl7fS5jYWxsKGEucHJvdG90eXBlKSx0Lk1vZGU9YX0pLGRlZmluZSgiYWNlL21vZGUvZGlmZl9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMscz1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3JlZ2V4OiJeKD86XFwqezE1fXw9ezY3fXwtezN9fFxcK3szfSkkIix0b2tlbjoicHVuY3R1YXRpb24uZGVmaW5pdGlvbi5zZXBhcmF0b3IuZGlmZiIsbmFtZToia2V5d29yZCJ9LHtyZWdleDoiXihAQCkoXFxzKi4rP1xccyopKEBAKSguKikkIix0b2tlbjpbImNvbnN0YW50IiwiY29uc3RhbnQubnVtZXJpYyIsImNvbnN0YW50IiwiY29tbWVudC5kb2MudGFnIl19LHtyZWdleDoiXihcXGQrKShbLFxcZF0rKShhfGR8YykoXFxkKykoWyxcXGRdKykoLiopJCIsdG9rZW46WyJjb25zdGFudC5udW1lcmljIiwicHVuY3R1YXRpb24uZGVmaW5pdGlvbi5yYW5nZS5kaWZmIiwiY29uc3RhbnQuZnVuY3Rpb24iLCJjb25zdGFudC5udW1lcmljIiwicHVuY3R1YXRpb24uZGVmaW5pdGlvbi5yYW5nZS5kaWZmIiwiaW52YWxpZCJdLG5hbWU6Im1ldGEuIn0se3JlZ2V4OiJeKD86KFxcLXszfXxcXCt7M318XFwqezN9KSggLispKSQiLHRva2VuOlsiY29uc3RhbnQubnVtZXJpYyIsIm1ldGEudGFnIl19LHtyZWdleDoiXihbISs+XSkoLio/KShcXHMqKSQiLHRva2VuOlsic3VwcG9ydC5jb25zdGFudCIsInRleHQiLCJpbnZhbGlkIl19LHtyZWdleDoiXihbPFxcLV0pKC4qPykoXFxzKikkIix0b2tlbjpbInN1cHBvcnQuZnVuY3Rpb24iLCJzdHJpbmciLCJpbnZhbGlkIl19LHtyZWdleDoiXihkaWZmKShcXHMrLS1cXHcrKT8oLis/KSggLispPyQiLHRva2VuOlsidmFyaWFibGUiLCJ2YXJpYWJsZSIsImtleXdvcmQiLCJ2YXJpYWJsZSJdfSx7cmVnZXg6Il5JbmRleC4rJCIsdG9rZW46InZhcmlhYmxlIn0se3JlZ2V4OiJeKC4qPykoXFxzKikkIix0b2tlbjpbImludmlzaWJsZSIsImludmFsaWQiXX1dfX07ci5pbmhlcml0cyhzLGkpLHQuRGlmZkhpZ2hsaWdodFJ1bGVzPXN9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZGlmZiIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxzPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2Usbz10LkZvbGRNb2RlPWZ1bmN0aW9uKGUsdCl7dGhpcy5yZWdFeHBMaXN0PWUsdGhpcy5mbGFnPXQsdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9UmVnRXhwKCJeKCIrZS5qb2luKCJ8IikrIikiLHRoaXMuZmxhZyl9O3IuaW5oZXJpdHMobyxpKSxmdW5jdGlvbigpe3RoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobiksaT17cm93Om4sY29sdW1uOnIubGVuZ3RofSxvPXRoaXMucmVnRXhwTGlzdDtmb3IodmFyIHU9MTt1PD1vLmxlbmd0aDt1Kyspe3ZhciBhPVJlZ0V4cCgiXigiK28uc2xpY2UoMCx1KS5qb2luKCJ8IikrIikiLHRoaXMuZmxhZyk7aWYoYS50ZXN0KHIpKWJyZWFrfWZvcih2YXIgZj1lLmdldExlbmd0aCgpOysrbjxmOyl7cj1lLmdldExpbmUobik7aWYoYS50ZXN0KHIpKWJyZWFrfWlmKG49PWkucm93KzEpcmV0dXJuO3JldHVybiBzLmZyb21Qb2ludHMoaSx7cm93Om4tMSxjb2x1bW46ci5sZW5ndGh9KX19LmNhbGwoby5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGk9dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobik7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3Qocik/InN0YXJ0Ijp0PT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KHIpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihlLHQsbil7dmFyIGk9L1xTLyxzPWUuZ2V0TGluZSh0KSxvPXMuc2VhcmNoKGkpO2lmKG89PS0xKXJldHVybjt2YXIgdT1ufHxzLmxlbmd0aCxhPWUuZ2V0TGVuZ3RoKCksZj10LGw9dDt3aGlsZSgrK3Q8YSl7dmFyIGM9ZS5nZXRMaW5lKHQpLnNlYXJjaChpKTtpZihjPT0tMSljb250aW51ZTtpZihjPD1vKWJyZWFrO2w9dH1pZihsPmYpe3ZhciBoPWUuZ2V0TGluZShsKS5sZW5ndGg7cmV0dXJuIG5ldyByKGYsdSxsLGgpfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGUsdCxuLGkscyl7dmFyIG89e3JvdzpuLGNvbHVtbjppKzF9LHU9ZS4kZmluZENsb3NpbmdCcmFja2V0KHQsbyxzKTtpZighdSlyZXR1cm47dmFyIGE9ZS5mb2xkV2lkZ2V0c1t1LnJvd107cmV0dXJuIGE9PW51bGwmJihhPXRoaXMuZ2V0Rm9sZFdpZGdldChlLHUucm93KSksYT09InN0YXJ0IiYmdS5yb3c+by5yb3cmJih1LnJvdy0tLHUuY29sdW1uPWUuZ2V0TGluZSh1LnJvdykubGVuZ3RoKSxyLmZyb21Qb2ludHMobyx1KX19KS5jYWxsKGkucHJvdG90eXBlKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-golang.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9nb2xhbmciLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvZ29sYW5nX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4vZ29sYW5nX2hpZ2hsaWdodF9ydWxlcyIpLkdvbGFuZ0hpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsYT1lKCIuL2JlaGF2aW91ci9jc3R5bGUiKS5Dc3R5bGVCZWhhdmlvdXIsZj1lKCIuL2ZvbGRpbmcvY3N0eWxlIikuRm9sZE1vZGUsbD1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgcygobmV3IG8pLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IHUsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGZ9O3IuaW5oZXJpdHMobCxpKSxmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPSEwLHM9W10sbz0vXihccyopXC9cLy87Zm9yKHZhciB1PW47dTw9cjt1KyspaWYoIW8udGVzdCh0LmdldExpbmUodSkpKXtpPSExO2JyZWFrfWlmKGkpe3ZhciBhPW5ldyBSYW5nZSgwLDAsMCwwKTtmb3IodmFyIHU9bjt1PD1yO3UrKyl7dmFyIGY9dC5nZXRMaW5lKHUpLGw9Zi5tYXRjaChvKTthLnN0YXJ0LnJvdz11LGEuZW5kLnJvdz11LGEuZW5kLmNvbHVtbj1sWzBdLmxlbmd0aCx0LnJlcGxhY2UoYSxsWzFdKX19ZWxzZSB0LmluZGVudFJvd3MobixyLCIvLyIpfSx0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRnZXRJbmRlbnQodCksaT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2Vucyh0LGUpLHM9aS50b2tlbnMsbz1pLnN0YXRlO2lmKHMubGVuZ3RoJiZzW3MubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gcjtpZihlPT0ic3RhcnQiKXt2YXIgdT10Lm1hdGNoKC9eLipbXHtcKFxbXVxzKiQvKTt1JiYocis9bil9cmV0dXJuIHJ9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQodCxuKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudCh0LG4pfX0uY2FsbChsLnByb3RvdHlwZSksdC5Nb2RlPWx9KSxkZWZpbmUoImFjZS9tb2RlL2dvbGFuZ19oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2xpYi9sYW5nIikscz1lKCIuL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIpLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcyxvPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsdT1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgidHJ1ZXxlbHNlfGZhbHNlfGJyZWFrfGNhc2V8cmV0dXJufGdvdG98aWZ8Y29uc3R8Y29udGludWV8c3RydWN0fGRlZmF1bHR8c3dpdGNofGZvcnxmdW5jfGltcG9ydHxwYWNrYWdlfGNoYW58ZGVmZXJ8ZmFsbHRocm91Z2h8Z298aW50ZXJmYWNlfG1hcHxyYW5nZXNlbGVjdHx0eXBlfHZhciIuc3BsaXQoInwiKSksdD1pLmFycmF5VG9NYXAoIm5pdHx0cnVlfGZhbHNlfGlvdGEiLnNwbGl0KCJ8IikpO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiokIn0scy5nZXRTdGFydFJ1bGUoImRvYy1zdGFydCIpLHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDonWyJdLipcXFxcJCcsbmV4dDoicXFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6IlsnXSg/Oig/OlxcXFwuKXwoPzpbXidcXFxcXSkpKj9bJ10ifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IlsnXS4qXFxcXCQiLG5leHQ6InFzdHJpbmcifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIwW3hYXVswLTlhLWZBLUZdK1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IlsrLV0/XFxkKyg/Oig/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPyk/XFxiIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IjxbYS16QS1aMC05Ll0rPiJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6Iig/OiNpbmNsdWRlfCNwcmFnbWF8I2xpbmV8I2RlZmluZXwjdW5kZWZ8I2lmZGVmfCNlbHNlfCNlbGlmfCNlbmRpZnwjaWZuZGVmKSJ9LHt0b2tlbjpmdW5jdGlvbihuKXtyZXR1cm4gbj09InRoaXMiPyJ2YXJpYWJsZS5sYW5ndWFnZSI6ZS5oYXNPd25Qcm9wZXJ0eShuKT8ia2V5d29yZCI6dC5oYXNPd25Qcm9wZXJ0eShuKT8iY29uc3RhbnQubGFuZ3VhZ2UiOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IiF8XFwkfCV8JnxcXCp8XFwtXFwtfFxcLXxcXCtcXCt8XFwrfH58PT18PXwhPXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XFx8XFx8fFxcP1xcOnxcXCo9fCU9fFxcKz18XFwtPXwmPXxcXF49fFxcYig/OmlufG5ld3xkZWxldGV8dHlwZW9mfHZvaWQpIn0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IlxcP3xcXDp8XFwsfFxcO3xcXC4ifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IltbKHtdIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJbXFxdKX1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scXFzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDonKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqPyInLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Iig/Oig/OlxcXFwuKXwoPzpbXidcXFxcXSkpKj8nIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV19LHRoaXMuZW1iZWRSdWxlcyhzLCJkb2MtIixbcy5nZXRFbmRSdWxlKCJzdGFydCIpXSl9O3IuaW5oZXJpdHModSxvKSx0LkdvbGFuZ0hpZ2hsaWdodFJ1bGVzPXV9KSxkZWZpbmUoImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxzPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQuZG9jLnRhZyIscmVnZXg6IkBbXFx3XFxkX10rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiVE9ETyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJbXkBcXCpdKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiIuIn1dfX07ci5pbmhlcml0cyhzLGkpLHMuZ2V0U3RhcnRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCooPz1cXCopIixuZXh0OmV9fSxzLmdldEVuZFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcKlxcLyIsbmV4dDplfX0sdC5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXM9c30pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9yYW5nZSIpLlJhbmdlLGk9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuL15ccyskLy50ZXN0KGUpPy9eXHMqXH0vLnRlc3QodCk6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldExpbmUodCksaT1uLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFpKXJldHVybiAwO3ZhciBzPWlbMV0ubGVuZ3RoLG89ZS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dCxjb2x1bW46c30pO2lmKCFvfHxvLnJvdz09dClyZXR1cm4gMDt2YXIgdT10aGlzLiRnZXRJbmRlbnQoZS5nZXRMaW5lKG8ucm93KSk7ZS5yZXBsYWNlKG5ldyByKHQsMCx0LHMtMSksdSl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gdD90WzFdOiIifX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9aX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixzPWZ1bmN0aW9uKCl7dGhpcy5hZGQoImJyYWNlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0ieyIpe3ZhciBzPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSxvPXIuZG9jLmdldFRleHRSYW5nZShzKTtyZXR1cm4gbyE9PSIiP3t0ZXh0OiJ7IitvKyJ9IixzZWxlY3Rpb246ITF9Ont0ZXh0OiJ7fSIsc2VsZWN0aW9uOlsxLDFdfX1pZihpPT0ifSIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09In0iKXt2YXIgbD1yLiRmaW5kT3BlbmluZ0JyYWNrZXQoIn0iLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihsIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX1lbHNlIGlmKGk9PSJcbiIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09In0iKXt2YXIgYz1yLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp1LnJvdyxjb2x1bW46dS5jb2x1bW4rMX0pO2lmKCFjKXJldHVybiBudWxsO3ZhciBoPXRoaXMuZ2V0TmV4dExpbmVJbmRlbnQoZSxhLnN1YnN0cmluZygwLGEubGVuZ3RoLTEpLHIuZ2V0VGFiU3RyaW5nKCkpLHA9dGhpcy4kZ2V0SW5kZW50KHIuZG9jLmdldExpbmUoYy5yb3cpKTtyZXR1cm57dGV4dDoiXG4iK2grIlxuIitwLHNlbGVjdGlvbjpbMSxoLmxlbmd0aCwxLGgubGVuZ3RoXX19fX0pLHRoaXMuYWRkKCJicmFjZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcz09InsiKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuZW5kLmNvbHVtbixpLmVuZC5jb2x1bW4rMSk7aWYodT09In0iKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09IigiKXt2YXIgcz1uLmdldFNlbGVjdGlvblJhbmdlKCksbz1yLmRvYy5nZXRUZXh0UmFuZ2Uocyk7cmV0dXJuIG8hPT0iIj97dGV4dDoiKCIrbysiKSIsc2VsZWN0aW9uOiExfTp7dGV4dDoiKCkiLHNlbGVjdGlvbjpbMSwxXX19aWYoaT09IikiKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSIpIil7dmFyIGw9ci4kZmluZE9wZW5pbmdCcmFja2V0KCIpIix7Y29sdW1uOnUuY29sdW1uKzEscm93OnUucm93fSk7aWYobCE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInBhcmVucyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiZzPT0iKCIpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5zdGFydC5jb2x1bW4rMSxpLnN0YXJ0LmNvbHVtbisyKTtpZih1PT0iKSIpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSciJ3x8aT09IiciKXt2YXIgcz1pLG89bi5nZXRTZWxlY3Rpb25SYW5nZSgpLHU9ci5kb2MuZ2V0VGV4dFJhbmdlKG8pO2lmKHUhPT0iIilyZXR1cm57dGV4dDpzK3UrcyxzZWxlY3Rpb246ITF9O3ZhciBhPW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxmPXIuZG9jLmdldExpbmUoYS5yb3cpLGw9Zi5zdWJzdHJpbmcoYS5jb2x1bW4tMSxhLmNvbHVtbik7aWYobD09IlxcIilyZXR1cm4gbnVsbDt2YXIgYz1yLmdldFRva2VucyhvLnN0YXJ0LnJvdyksaD0wLHAsZD0tMTtmb3IodmFyIHY9MDt2PGMubGVuZ3RoO3YrKyl7cD1jW3ZdLHAudHlwZT09InN0cmluZyI/ZD0tMTpkPDAmJihkPXAudmFsdWUuaW5kZXhPZihzKSk7aWYocC52YWx1ZS5sZW5ndGgraD5vLnN0YXJ0LmNvbHVtbilicmVhaztoKz1jW3ZdLnZhbHVlLmxlbmd0aH1pZighcHx8ZDwwJiZwLnR5cGUhPT0iY29tbWVudCImJihwLnR5cGUhPT0ic3RyaW5nInx8by5zdGFydC5jb2x1bW4hPT1wLnZhbHVlLmxlbmd0aCtoLTEmJnAudmFsdWUubGFzdEluZGV4T2Yocyk9PT1wLnZhbHVlLmxlbmd0aC0xKSlyZXR1cm57dGV4dDpzK3Msc2VsZWN0aW9uOlsxLDFdfTtpZihwJiZwLnR5cGU9PT0ic3RyaW5nIil7dmFyIG09Zi5zdWJzdHJpbmcoYS5jb2x1bW4sYS5jb2x1bW4rMSk7aWYobT09cylyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmKHM9PSciJ3x8cz09IiciKSl7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLnN0YXJ0LmNvbHVtbisxLGkuc3RhcnQuY29sdW1uKzIpO2lmKHU9PSciJylyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KX07ci5pbmhlcml0cyhzLGkpLHQuQ3N0eWxlQmVoYXZpb3VyPXN9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLHM9ZSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxvPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O3IuaW5oZXJpdHMobyxzKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobikscz1yLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihzKXt2YXIgbz1zLmluZGV4O2lmKHNbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhlLHNbMV0sbixvKTt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvK3NbMF0ubGVuZ3RoKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9aWYodCE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgcz1yLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXgrc1swXS5sZW5ndGg7aWYoc1syXSl7dmFyIHU9ZS5nZXRDb21tZW50Rm9sZFJhbmdlKG4sbyk7cmV0dXJuIHUuZW5kLmNvbHVtbi09Mix1fXZhciBhPXtyb3c6bixjb2x1bW46b30sZj1lLiRmaW5kT3BlbmluZ0JyYWNrZXQoc1sxXSxhKTtpZighZilyZXR1cm47cmV0dXJuIGYuY29sdW1uKyssYS5jb2x1bW4tLSxpLmZyb21Qb2ludHMoZixhKX19fS5jYWxsKG8ucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxpPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KHIpPyJzdGFydCI6dD09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChyKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPS9cUy8scz1lLmdldExpbmUodCksbz1zLnNlYXJjaChpKTtpZihvPT0tMSlyZXR1cm47dmFyIHU9bnx8cy5sZW5ndGgsYT1lLmdldExlbmd0aCgpLGY9dCxsPXQ7d2hpbGUoKyt0PGEpe3ZhciBjPWUuZ2V0TGluZSh0KS5zZWFyY2goaSk7aWYoYz09LTEpY29udGludWU7aWYoYzw9bylicmVhaztsPXR9aWYobD5mKXt2YXIgaD1lLmdldExpbmUobCkubGVuZ3RoO3JldHVybiBuZXcgcihmLHUsbCxoKX19LHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jaz1mdW5jdGlvbihlLHQsbixpLHMpe3ZhciBvPXtyb3c6bixjb2x1bW46aSsxfSx1PWUuJGZpbmRDbG9zaW5nQnJhY2tldCh0LG8scyk7aWYoIXUpcmV0dXJuO3ZhciBhPWUuZm9sZFdpZGdldHNbdS5yb3ddO3JldHVybiBhPT1udWxsJiYoYT10aGlzLmdldEZvbGRXaWRnZXQoZSx1LnJvdykpLGE9PSJzdGFydCImJnUucm93Pm8ucm93JiYodS5yb3ctLSx1LmNvbHVtbj1lLmdldExpbmUodS5yb3cpLmxlbmd0aCksci5mcm9tUG9pbnRzKG8sdSl9fSkuY2FsbChpLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-groovy.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9ncm9vdnkiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2phdmFzY3JpcHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvZ3Jvb3Z5X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL2phdmFzY3JpcHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9ncm9vdnlfaGlnaGxpZ2h0X3J1bGVzIikuR3Jvb3Z5SGlnaGxpZ2h0UnVsZXMsdT1mdW5jdGlvbigpe2kuY2FsbCh0aGlzKSx0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKX07ci5pbmhlcml0cyh1LGkpLGZ1bmN0aW9uKCl7dGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGx9fS5jYWxsKHUucHJvdG90eXBlKSx0Lk1vZGU9dX0pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2UvcmFuZ2UiLCJhY2Uvd29ya2VyL3dvcmtlcl9jbGllbnQiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4vamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiKS5KYXZhU2NyaXB0SGlnaGxpZ2h0UnVsZXMsdT1lKCIuL21hdGNoaW5nX2JyYWNlX291dGRlbnQiKS5NYXRjaGluZ0JyYWNlT3V0ZGVudCxhPWUoIi4uL3JhbmdlIikuUmFuZ2UsZj1lKCIuLi93b3JrZXIvd29ya2VyX2NsaWVudCIpLldvcmtlckNsaWVudCxsPWUoIi4vYmVoYXZpb3VyL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixjPWUoIi4vZm9sZGluZy9jc3R5bGUiKS5Gb2xkTW9kZSxoPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBzKChuZXcgbykuZ2V0UnVsZXMoKSksdGhpcy4kb3V0ZGVudD1uZXcgdSx0aGlzLiRiZWhhdmlvdXI9bmV3IGwsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGN9O3IuaW5oZXJpdHMoaCxpKSxmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPSEwLHM9L14oXHMqKVwvXC8vO2Zvcih2YXIgbz1uO288PXI7bysrKWlmKCFzLnRlc3QodC5nZXRMaW5lKG8pKSl7aT0hMTticmVha31pZihpKXt2YXIgdT1uZXcgYSgwLDAsMCwwKTtmb3IodmFyIG89bjtvPD1yO28rKyl7dmFyIGY9dC5nZXRMaW5lKG8pLGw9Zi5tYXRjaChzKTt1LnN0YXJ0LnJvdz1vLHUuZW5kLnJvdz1vLHUuZW5kLmNvbHVtbj1sWzBdLmxlbmd0aCx0LnJlcGxhY2UodSxsWzFdKX19ZWxzZSB0LmluZGVudFJvd3MobixyLCIvLyIpfSx0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRnZXRJbmRlbnQodCksaT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2Vucyh0LGUpLHM9aS50b2tlbnMsbz1pLnN0YXRlO2lmKHMubGVuZ3RoJiZzW3MubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gcjtpZihlPT0ic3RhcnQifHxlPT0icmVnZXhfYWxsb3dlZCIpe3ZhciB1PXQubWF0Y2goL14uKig/OlxiY2FzZVxiLipcOnxbXHtcKFxbXSlccyokLyk7dSYmKHIrPW4pfWVsc2UgaWYoZT09ImRvYy1zdGFydCIpe2lmKG89PSJzdGFydCJ8fGU9PSJyZWdleF9hbGxvd2VkIilyZXR1cm4iIjt2YXIgdT10Lm1hdGNoKC9eXHMqKFwvPylcKi8pO3UmJih1WzFdJiYocis9IiAiKSxyKz0iKiAiKX1yZXR1cm4gcn0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudCh0LG4pfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KHQsbil9LHRoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBmKFsiYWNlIl0sImFjZS9tb2RlL2phdmFzY3JpcHRfd29ya2VyIiwiSmF2YVNjcmlwdFdvcmtlciIpO3JldHVybiB0LmF0dGFjaFRvRG9jdW1lbnQoZS5nZXREb2N1bWVudCgpKSx0Lm9uKCJqc2xpbnQiLGZ1bmN0aW9uKHQpe3ZhciBuPVtdO2Zvcih2YXIgcj0wO3I8dC5kYXRhLmxlbmd0aDtyKyspe3ZhciBpPXQuZGF0YVtyXTtpJiZuLnB1c2goe3JvdzppLmxpbmUtMSxjb2x1bW46aS5jaGFyYWN0ZXItMSx0ZXh0OmkucmVhc29uLHR5cGU6Indhcm5pbmciLGxpbnQ6aX0pfWUuc2V0QW5ub3RhdGlvbnMobil9KSx0Lm9uKCJuYXJjaXNzdXMiLGZ1bmN0aW9uKHQpe2Uuc2V0QW5ub3RhdGlvbnMoW3QuZGF0YV0pfSksdC5vbigidGVybWluYXRlIixmdW5jdGlvbigpe2UuY2xlYXJBbm5vdGF0aW9ucygpfSksdH19LmNhbGwoaC5wcm90b3R5cGUpLHQuTW9kZT1ofSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL3VuaWNvZGUiLCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi9saWIvbGFuZyIpLHM9ZSgiLi4vdW5pY29kZSIpLG89ZSgiLi9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiKS5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXMsdT1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGE9ZnVuY3Rpb24oKXt2YXIgZT1pLmFycmF5VG9NYXAoIkFycmF5fEJvb2xlYW58RGF0ZXxGdW5jdGlvbnxJdGVyYXRvcnxOdW1iZXJ8T2JqZWN0fFJlZ0V4cHxTdHJpbmd8UHJveHl8TmFtZXNwYWNlfFFOYW1lfFhNTHxYTUxMaXN0fEFycmF5QnVmZmVyfEZsb2F0MzJBcnJheXxGbG9hdDY0QXJyYXl8SW50MTZBcnJheXxJbnQzMkFycmF5fEludDhBcnJheXxVaW50MTZBcnJheXxVaW50MzJBcnJheXxVaW50OEFycmF5fFVpbnQ4Q2xhbXBlZEFycmF5fEVycm9yfEV2YWxFcnJvcnxJbnRlcm5hbEVycm9yfFJhbmdlRXJyb3J8UmVmZXJlbmNlRXJyb3J8U3RvcEl0ZXJhdGlvbnxTeW50YXhFcnJvcnxUeXBlRXJyb3J8VVJJRXJyb3J8ZGVjb2RlVVJJfGRlY29kZVVSSUNvbXBvbmVudHxlbmNvZGVVUkl8ZW5jb2RlVVJJQ29tcG9uZW50fGV2YWx8aXNGaW5pdGV8aXNOYU58cGFyc2VGbG9hdHxwYXJzZUludHxKU09OfE1hdGh8dGhpc3xhcmd1bWVudHN8cHJvdG90eXBlfHdpbmRvd3xkb2N1bWVudCIuc3BsaXQoInwiKSksdD1pLmFycmF5VG9NYXAoImJyZWFrfGNhc2V8Y2F0Y2h8Y29udGludWV8ZGVmYXVsdHxkZWxldGV8ZG98ZWxzZXxmaW5hbGx5fGZvcnxmdW5jdGlvbnxpZnxpbnxpbnN0YW5jZW9mfG5ld3xyZXR1cm58c3dpdGNofHRocm93fHRyeXx0eXBlb2Z8bGV0fHZhcnx3aGlsZXx3aXRofGNvbnN0fHlpZWxkfGltcG9ydHxnZXR8c2V0Ii5zcGxpdCgifCIpKSxuPSJjYXNlfGRvfGVsc2V8ZmluYWxseXxpbnxpbnN0YW5jZW9mfHJldHVybnx0aHJvd3x0cnl8dHlwZW9mfHlpZWxkIixyPWkuYXJyYXlUb01hcCgiX19wYXJlbnRfX3xfX2NvdW50X198ZXNjYXBlfHVuZXNjYXBlfHdpdGh8X19wcm90b19fIi5zcGxpdCgifCIpKSx1PWkuYXJyYXlUb01hcCgiY29uc3R8bGV0fHZhcnxmdW5jdGlvbiIuc3BsaXQoInwiKSksYT1pLmFycmF5VG9NYXAoIm51bGx8SW5maW5pdHl8TmFOfHVuZGVmaW5lZCIuc3BsaXQoInwiKSksZj1pLmFycmF5VG9NYXAoImNsYXNzfGVudW18ZXh0ZW5kc3xzdXBlcnxleHBvcnR8aW1wbGVtZW50c3xwcml2YXRlfHB1YmxpY3xpbnRlcmZhY2V8cGFja2FnZXxwcm90ZWN0ZWR8c3RhdGljIi5zcGxpdCgifCIpKSxsPSJbIitzLnBhY2thZ2VzLkwrIlxcJF9dWyIrcy5wYWNrYWdlcy5MK3MucGFja2FnZXMuTW4rcy5wYWNrYWdlcy5NYytzLnBhY2thZ2VzLk5kK3MucGFja2FnZXMuUGMrIlxcJF9dKlxcYiIsYz0iXFxcXCg/OnhbMC05YS1mQS1GXXsyfXx1WzAtOWEtZkEtRl17NH18WzAtMl1bMC03XXswLDJ9fDNbMC02XVswLTddP3wzN1swLTddP3xbNC03XVswLTddP3wuKSI7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4Oi9cL1wvLiokL30sby5nZXRTdGFydFJ1bGUoImRvYy1zdGFydCIpLHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6L1wvXCovLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6IicoPz0uKSIsbmV4dDoicXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonIig/PS4pJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6LzBbeFhdWzAtOWEtZkEtRl0rXGIvfSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi9bKy1dP1xkKyg/Oig/OlwuXGQqKT8oPzpbZUVdWystXT9cZCspPyk/XGIvfSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxcLikocHJvdG90eXBlKShcXC4pKCIrbCsiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCJdLHJlZ2V4OiIoIitsKyIpKFxcLikocHJvdG90eXBlKShcXC4pKCIrbCsiKShcXHMqKSg9KShcXHMqKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXC4pKCIrbCsiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFwuKSgiK2wrIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyspKFxcdyspKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInRleHQiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKGZ1bmN0aW9uKShcXHMrKSgiK2wrIikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxccyopKDopKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJ0ZXh0IiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKDopKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmJvb2xlYW4iLHJlZ2V4Oi8oPzp0cnVlfGZhbHNlKVxiL30se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiKD86IituKyIpXFxiIixuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIl0scmVnZXg6LyhcLikocyg/OmgoPzppZnR8b3coPzpNb2QoPzplbGVzc0RpYWxvZ3xhbERpYWxvZyl8SGVscCkpfGNyb2xsKD86WHxCeSg/OlBhZ2VzfExpbmVzKT98WXxUbyk/fHQoPzpvcHp6enp8cmlrZSl8aSg/Om58emVUb0NvbnRlbnR8ZGViYXJ8Z25UZXh0KXxvcnR8dSg/OnB8Yig/OnN0cig/OmluZyk/KT8pfHBsaSg/OmNlfHQpfGUoPzpuZHx0KD86UmUoPzpzaXphYmxlfHF1ZXN0SGVhZGVyKXxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG8oPzp0S2V5c3x1cnMpfFllYXJ8Q3Vyc29yfFRpbWUoPzpvdXQpP3xJbnRlcnZhbHxaT3B0aW9uc3xEYXRlfFVUQyg/Ok0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIb3Vyc3xEYXRlfEZ1bGxZZWFyKXxGdWxsWWVhcnxBY3RpdmUpfGFyY2gpfHFydHxsaWNlfGF2ZVByZWZlcmVuY2VzfG1hbGwpfGgoPzpvbWV8YW5kbGVFdmVudCl8bmF2aWdhdGV8Yyg/Omhhcig/OkNvZGVBdHxBdCl8byg/OnN8big/OmNhdHx0ZXh0dWFsfGZpcm0pfG1waWxlKXxlaWx8bGVhcig/OlRpbWVvdXR8SW50ZXJ2YWwpP3xhKD86cHR1cmVFdmVudHN8bGwpfHJlYXRlKD86U3R5bGVTaGVldHxQb3B1cHxFdmVudE9iamVjdCkpfHQoPzpvKD86R01UU3RyaW5nfFMoPzp0cmluZ3xvdXJjZSl8VSg/OlRDU3RyaW5nfHBwZXJDYXNlKXxMbyg/OmNhbGVTdHJpbmd8d2VyQ2FzZSkpfGVzdHxhKD86bnxpbnQoPzpFbmFibGVkKT8pKXxpKD86cyg/Ok5hTnxGaW5pdGUpfG5kZXhPZnx0YWxpY3MpfGQoPzppc2FibGVFeHRlcm5hbENhcHR1cmV8dW1wfGV0YWNoRXZlbnQpfHUoPzpuKD86c2hpZnR8dGFpbnR8ZXNjYXBlfHdhdGNoKXxwZGF0ZUNvbW1hbmRzKXxqKD86b2lufGF2YUVuYWJsZWQpfHAoPzpvKD86cHx3KXx1c2h8bHVnaW5zLnJlZnJlc2h8YSg/OmRkaW5nc3xyc2UoPzpJbnR8RmxvYXQpPyl8cig/OmludHxvbXB0fGVmZXJlbmNlKSl8ZSg/OnNjYXBlfG5hYmxlRXh0ZXJuYWxDYXB0dXJlfHZhbHxsZW1lbnRGcm9tUG9pbnR8eCg/OnB8ZWMoPzpTY3JpcHR8Q29tbWFuZCk/KSl8dmFsdWVPZnxVVEN8cXVlcnlDb21tYW5kKD86U3RhdGV8SW5kZXRlcm18RW5hYmxlZHxWYWx1ZSl8Zig/OmkoPzpuZHxsZSg/Ok1vZGlmaWVkRGF0ZXxTaXplfENyZWF0ZWREYXRlfFVwZGF0ZWREYXRlKXx4ZWQpfG8oPzpudCg/OnNpemV8Y29sb3IpfHJ3YXJkKXxsb29yfHJvbUNoYXJDb2RlKXx3YXRjaHxsKD86aW5rfG8oPzphZHxnKXxhc3RJbmRleE9mKXxhKD86c2lufG5jaG9yfGNvc3x0KD86dGFjaEV2ZW50fG9ifGFuKD86Mik/KXxwcGx5fGxlcnR8Yig/OnN8b3J0KSl8cig/Om91KD86bmR8dGVFdmVudHMpfGUoPzpzaXplKD86Qnl8VG8pfGNhbGN8dHVyblZhbHVlfHBsYWNlfHZlcnNlfGwoPzpvYWR8ZWFzZSg/OkNhcHR1cmV8RXZlbnRzKSkpfGFuZG9tKXxnKD86b3xldCg/OlJlc3BvbnNlSGVhZGVyfE0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2UoPzpjb25kc3xsZWN0aW9uKXxIb3Vyc3xZZWFyfFRpbWUoPzp6b25lT2Zmc2V0KT98RGEoPzp5fHRlKXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGEoPzp5fHRlKXxGdWxsWWVhcil8RnVsbFllYXJ8QSg/OnR0ZW50aW9ufGxsUmVzcG9uc2VIZWFkZXJzKSkpfG0oPzppbnxvdmUoPzpCKD86eXxlbG93KXxUbyg/OkFic29sdXRlKT98QWJvdmUpfGVyZ2VBdHRyaWJ1dGVzfGEoPzp0Y2h8cmdpbnN8eCkpfGIoPzp0b2F8aWd8byg/OmxkfHJkZXJXaWR0aHMpfGxpbmt8YWNrKSlcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbi5kb20iXSxyZWdleDovKFwuKShzKD86dWIoPzpzdHJpbmdEYXRhfG1pdCl8cGxpdFRleHR8ZSg/OnQoPzpOYW1lZEl0ZW18QXR0cmlidXRlKD86Tm9kZSk/KXxsZWN0KSl8aGFzKD86Q2hpbGROb2Rlc3xGZWF0dXJlKXxuYW1lZEl0ZW18Yyg/OmwoPzppY2t8byg/OnNlfG5lTm9kZSkpfHJlYXRlKD86Qyg/Om9tbWVudHxEQVRBU2VjdGlvbnxhcHRpb24pfFQoPzpIZWFkfGV4dE5vZGV8Rm9vdCl8RG9jdW1lbnRGcmFnbWVudHxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb258RSg/Om50aXR5UmVmZXJlbmNlfGxlbWVudCl8QXR0cmlidXRlKSl8dGFiSW5kZXh8aSg/Om5zZXJ0KD86Um93fEJlZm9yZXxDZWxsfERhdGEpfHRlbSl8b3BlbnxkZWxldGUoPzpSb3d8Qyg/OmVsbHxhcHRpb24pfFQoPzpIZWFkfEZvb3QpfERhdGEpfGZvY3VzfHdyaXRlKD86bG4pP3xhKD86ZGR8cHBlbmQoPzpDaGlsZHxEYXRhKSl8cmUoPzpzZXR8cGxhY2UoPzpDaGlsZHxEYXRhKXxtb3ZlKD86TmFtZWRJdGVtfENoaWxkfEF0dHJpYnV0ZSg/Ok5vZGUpPyk/KXxnZXQoPzpOYW1lZEl0ZW18RWxlbWVudCg/OnNCeSg/Ok5hbWV8VGFnTmFtZSl8QnlJZCl8QXR0cmlidXRlKD86Tm9kZSk/KXxibHVyKVxiKD89XCgpL30se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmNvbnN0YW50Il0scmVnZXg6LyhcLikocyg/OnlzdGVtTGFuZ3VhZ2V8Y3IoPzppcHRzfG9sbGJhcnN8ZWVuKD86WHxZfFRvcHxMZWZ0KSl8dCg/OnlsZSg/OlNoZWV0cyk/fGF0dXMoPzpUZXh0fGJhcik/KXxpYmxpbmcoPzpCZWxvd3xBYm92ZSl8b3VyY2V8dWZmaXhlc3xlKD86Y3VyaXR5KD86UG9saWN5KT98bCg/OmVjdGlvbnxmKSkpfGgoPzppc3Rvcnl8b3N0KD86bmFtZSk/fGFzKD86aHxGb2N1cykpfHl8WCg/Ok1MRG9jdW1lbnR8U0xEb2N1bWVudCl8big/OmV4dHxhbWUoPzpzcGFjZSg/OnN8VVJJKXxQcm9wKSl8TSg/OklOX1ZBTFVFfEFYX1ZBTFVFKXxjKD86aGFyYWN0ZXJTZXR8byg/Om4oPzpzdHJ1Y3Rvcnx0cm9sbGVycyl8b2tpZUVuYWJsZWR8bG9yRGVwdGh8bXAoPzpvbmVudHN8bGV0ZSkpfHVycmVudHxwdUNsYXNzfGwoPzppKD86cCg/OmJvYXJkRGF0YSk/fGVudEluZm9ybWF0aW9uKXxvc2VkfGFzc2VzKXxhbGxlKD86ZXxyKXxyeXB0byl8dCg/Om8oPzpvbGJhcnxwKXxleHQoPzpUcmFuc2Zvcm18SW5kZW50fERlY29yYXRpb258QWxpZ24pfGFncyl8U1FSVCg/OjFfMnwyKXxpKD86big/Om5lcig/OkhlaWdodHxXaWR0aCl8cHV0KXxkc3xnbm9yZUNhc2UpfHpJbmRleHxvKD86c2NwdXxuKD86cmVhZHlzdGF0ZWNoYW5nZXxMaW5lKXx1dGVyKD86SGVpZ2h0fFdpZHRoKXxwKD86c1Byb2ZpbGV8ZW5lcil8ZmZzY3JlZW5CdWZmZXJpbmcpfE5FR0FUSVZFX0lORklOSVRZfGQoPzppKD86c3BsYXl8YWxvZyg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdHxBcmd1bWVudHMpfHJlY3Rvcmllcyl8ZSg/OnNjcmlwdGlvbnxmYXVsdCg/OlN0YXR1c3xDaCg/OmVja2VkfGFyc2V0KXxWaWV3KSkpfHUoPzpzZXIoPzpQcm9maWxlfExhbmd1YWdlfEFnZW50KXxuKD86aXF1ZUlEfGRlZmluZWQpfHBkYXRlSW50ZXJ2YWwpfF9jb250ZW50fHAoPzppeGVsRGVwdGh8b3J0fGVyc29uYWxiYXJ8a2NzMTF8bCg/OnVnaW5zfGF0Zm9ybSl8YSg/OnRobmFtZXxkZGluZyg/OlJpZ2h0fEJvdHRvbXxUb3B8TGVmdCl8cmVudCg/OldpbmRvd3xMYXllcik/fGdlKD86WCg/Ok9mZnNldCk/fFkoPzpPZmZzZXQpPykpfHIoPzpvKD86dG8oPzpjb2x8dHlwZSl8ZHVjdCg/OlN1Yik/fG1wdGVyKXxlKD86dmlvdXN8Zml4KSkpfGUoPzpuKD86Y29kaW5nfGFibGVkUGx1Z2luKXx4KD86dGVybmFsfHBhbmRvKXxtYmVkcyl8dig/OmlzaWJpbGl0eXxlbmRvcig/OlN1Yik/fExpbmtjb2xvcil8VVJMVW5lbmNvZGVkfFAoPzpJfE9TSVRJVkVfSU5GSU5JVFkpfGYoPzppbGVuYW1lfG8oPzpudCg/OlNpemV8RmFtaWx5fFdlaWdodCl8cm1OYW1lKXxyYW1lKD86c3xFbGVtZW50KXxnQ29sb3IpfEV8d2hpdGVTcGFjZXxsKD86aSg/OnN0U3R5bGVUeXBlfG4oPzplSGVpZ2h0fGtDb2xvcikpfG8oPzpjYSg/OnRpb24oPzpiYXIpP3xsTmFtZSl8d3NyYyl8ZSg/Om5ndGh8ZnQoPzpDb250ZXh0KT8pfGEoPzpzdCg/Ok0oPzpvZGlmaWVkfGF0Y2gpfEluZGV4fFBhcmVuKXx5ZXIoPzpzfFgpfG5ndWFnZSkpfGEoPzpwcCg/Ok1pbm9yVmVyc2lvbnxOYW1lfENvKD86ZGVOYW1lfHJlKXxWZXJzaW9uKXx2YWlsKD86SGVpZ2h0fFRvcHxXaWR0aHxMZWZ0KXxsbHxyKD86aXR5fGd1bWVudHMpfExpbmtjb2xvcnxib3ZlKXxyKD86aWdodCg/OkNvbnRleHQpP3xlKD86c3BvbnNlKD86WE1MfFRleHQpfGFkeVN0YXRlKSl8Z2xvYmFsfHh8bSg/OmltZVR5cGVzfHVsdGlsaW5lfGVudWJhcnxhcmdpbig/OlJpZ2h0fEJvdHRvbXxUb3B8TGVmdCkpfEwoPzpOKD86MTB8Mil8T0coPzoxMEV8MkUpKXxiKD86byg/OnR0b218cmRlcig/OldpZHRofFJpZ2h0V2lkdGh8Qm90dG9tV2lkdGh8U3R5bGV8Q29sb3J8VG9wV2lkdGh8TGVmdFdpZHRoKSl8dWZmZXJEZXB0aHxlbG93fGFja2dyb3VuZCg/OkNvbG9yfEltYWdlKSkpXGIvfSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZmlyZWJ1ZyJdLHJlZ2V4Oi8oY29uc29sZSkoXC4pKHdhcm58aW5mb3xsb2d8ZXJyb3J8dGltZXx0aW1lRW5kfGFzc2VydClcYi99LHt0b2tlbjpmdW5jdGlvbihuKXtyZXR1cm4gZS5oYXNPd25Qcm9wZXJ0eShuKT8idmFyaWFibGUubGFuZ3VhZ2UiOnIuaGFzT3duUHJvcGVydHkobik/ImludmFsaWQuZGVwcmVjYXRlZCI6dS5oYXNPd25Qcm9wZXJ0eShuKT8ic3RvcmFnZS50eXBlIjp0Lmhhc093blByb3BlcnR5KG4pPyJrZXl3b3JkIjphLmhhc093blByb3BlcnR5KG4pPyJjb25zdGFudC5sYW5ndWFnZSI6Zi5oYXNPd25Qcm9wZXJ0eShuKT8iaW52YWxpZC5pbGxlZ2FsIjpuPT0iZGVidWdnZXIiPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOiJpZGVudGlmaWVyIn0scmVnZXg6bH0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovIXxcJHwlfCZ8XCp8XC1cLXxcLXxcK1wrfFwrfH58PT09fD09fD18IT18IT09fDw9fD49fDw8PXw+Pj18Pj4+PXw8Pnw8fD58IXwmJnxcfFx8fFw/XDp8XCo9fCU9fFwrPXxcLT18Jj18XF49fFxiKD86aW58aW5zdGFuY2VvZnxuZXd8ZGVsZXRlfHR5cGVvZnx2b2lkKS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4Oi9cP3xcOnxcLHxcO3xcLi8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDovW1xbKHtdLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4Oi9bXF0pfV0vfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4Oi9cLz0/LyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixyZWdleDovXiMhLiokL30se3Rva2VuOiJ0ZXh0IixyZWdleDovXHMrL31dLHJlZ2V4X2FsbG93ZWQ6W28uZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnRfcmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qJCJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6IlxcLyIsbmV4dDoicmVnZXgiLG1lcmdlOiEwfSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0scmVnZXg6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6Ii9cXHcqIixuZXh0OiJzdGFydCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6IlteXFxcXC9cXFtdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJcXFsiLG5leHQ6InJlZ2V4X2NoYXJhY3Rlcl9jbGFzcyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4X2NoYXJhY3Rlcl9jbGFzczpbe3Rva2VuOiJyZWdleHAua2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcXFwoPzp1W1xcZGEtZkEtRl17NH18eFtcXGRhLWZBLUZdezJ9fC4pIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6Il0iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6IlteXFxcXFxcXV0rIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sZnVuY3Rpb25fYXJndW1lbnRzOlt7dG9rZW46InZhcmlhYmxlLnBhcmFtZXRlciIscmVnZXg6bH0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IlssIF0rIixtZXJnZTohMH0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IiQiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxjb21tZW50X3JlZ2V4X2FsbG93ZWQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbWVyZ2U6ITAsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbWVyZ2U6ITAsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4OmN9LHt0b2tlbjoic3RyaW5nIixyZWdleDonW14iXFxcXF0rJyxtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXFxcJCIsbmV4dDoicXFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6JyJ8JCcsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV0scXN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4OmN9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiW14nXFxcXF0rIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXFxcJCIsbmV4dDoicXN0cmluZyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJ3wkIixuZXh0OiJzdGFydCIsbWVyZ2U6ITB9XX0sdGhpcy5lbWJlZFJ1bGVzKG8sImRvYy0iLFtvLmdldEVuZFJ1bGUoInN0YXJ0IildKX07ci5pbmhlcml0cyhhLHUpLHQuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzPWF9KSxkZWZpbmUoImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxzPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQuZG9jLnRhZyIscmVnZXg6IkBbXFx3XFxkX10rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiVE9ETyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJbXkBcXCpdKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiIuIn1dfX07ci5pbmhlcml0cyhzLGkpLHMuZ2V0U3RhcnRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCooPz1cXCopIixuZXh0OmV9fSxzLmdldEVuZFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcKlxcLyIsbmV4dDplfX0sdC5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXM9c30pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9yYW5nZSIpLlJhbmdlLGk9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuL15ccyskLy50ZXN0KGUpPy9eXHMqXH0vLnRlc3QodCk6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldExpbmUodCksaT1uLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFpKXJldHVybiAwO3ZhciBzPWlbMV0ubGVuZ3RoLG89ZS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dCxjb2x1bW46c30pO2lmKCFvfHxvLnJvdz09dClyZXR1cm4gMDt2YXIgdT10aGlzLiRnZXRJbmRlbnQoZS5nZXRMaW5lKG8ucm93KSk7ZS5yZXBsYWNlKG5ldyByKHQsMCx0LHMtMSksdSl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gdD90WzFdOiIifX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9aX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixzPWZ1bmN0aW9uKCl7dGhpcy5hZGQoImJyYWNlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0ieyIpe3ZhciBzPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSxvPXIuZG9jLmdldFRleHRSYW5nZShzKTtyZXR1cm4gbyE9PSIiP3t0ZXh0OiJ7IitvKyJ9IixzZWxlY3Rpb246ITF9Ont0ZXh0OiJ7fSIsc2VsZWN0aW9uOlsxLDFdfX1pZihpPT0ifSIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09In0iKXt2YXIgbD1yLiRmaW5kT3BlbmluZ0JyYWNrZXQoIn0iLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihsIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX1lbHNlIGlmKGk9PSJcbiIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09In0iKXt2YXIgYz1yLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp1LnJvdyxjb2x1bW46dS5jb2x1bW4rMX0pO2lmKCFjKXJldHVybiBudWxsO3ZhciBoPXRoaXMuZ2V0TmV4dExpbmVJbmRlbnQoZSxhLnN1YnN0cmluZygwLGEubGVuZ3RoLTEpLHIuZ2V0VGFiU3RyaW5nKCkpLHA9dGhpcy4kZ2V0SW5kZW50KHIuZG9jLmdldExpbmUoYy5yb3cpKTtyZXR1cm57dGV4dDoiXG4iK2grIlxuIitwLHNlbGVjdGlvbjpbMSxoLmxlbmd0aCwxLGgubGVuZ3RoXX19fX0pLHRoaXMuYWRkKCJicmFjZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcz09InsiKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuZW5kLmNvbHVtbixpLmVuZC5jb2x1bW4rMSk7aWYodT09In0iKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09IigiKXt2YXIgcz1uLmdldFNlbGVjdGlvblJhbmdlKCksbz1yLmRvYy5nZXRUZXh0UmFuZ2Uocyk7cmV0dXJuIG8hPT0iIj97dGV4dDoiKCIrbysiKSIsc2VsZWN0aW9uOiExfTp7dGV4dDoiKCkiLHNlbGVjdGlvbjpbMSwxXX19aWYoaT09IikiKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSIpIil7dmFyIGw9ci4kZmluZE9wZW5pbmdCcmFja2V0KCIpIix7Y29sdW1uOnUuY29sdW1uKzEscm93OnUucm93fSk7aWYobCE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInBhcmVucyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiZzPT0iKCIpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5zdGFydC5jb2x1bW4rMSxpLnN0YXJ0LmNvbHVtbisyKTtpZih1PT0iKSIpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSciJ3x8aT09IiciKXt2YXIgcz1pLG89bi5nZXRTZWxlY3Rpb25SYW5nZSgpLHU9ci5kb2MuZ2V0VGV4dFJhbmdlKG8pO2lmKHUhPT0iIilyZXR1cm57dGV4dDpzK3UrcyxzZWxlY3Rpb246ITF9O3ZhciBhPW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxmPXIuZG9jLmdldExpbmUoYS5yb3cpLGw9Zi5zdWJzdHJpbmcoYS5jb2x1bW4tMSxhLmNvbHVtbik7aWYobD09IlxcIilyZXR1cm4gbnVsbDt2YXIgYz1yLmdldFRva2VucyhvLnN0YXJ0LnJvdyksaD0wLHAsZD0tMTtmb3IodmFyIHY9MDt2PGMubGVuZ3RoO3YrKyl7cD1jW3ZdLHAudHlwZT09InN0cmluZyI/ZD0tMTpkPDAmJihkPXAudmFsdWUuaW5kZXhPZihzKSk7aWYocC52YWx1ZS5sZW5ndGgraD5vLnN0YXJ0LmNvbHVtbilicmVhaztoKz1jW3ZdLnZhbHVlLmxlbmd0aH1pZighcHx8ZDwwJiZwLnR5cGUhPT0iY29tbWVudCImJihwLnR5cGUhPT0ic3RyaW5nInx8by5zdGFydC5jb2x1bW4hPT1wLnZhbHVlLmxlbmd0aCtoLTEmJnAudmFsdWUubGFzdEluZGV4T2Yocyk9PT1wLnZhbHVlLmxlbmd0aC0xKSlyZXR1cm57dGV4dDpzK3Msc2VsZWN0aW9uOlsxLDFdfTtpZihwJiZwLnR5cGU9PT0ic3RyaW5nIil7dmFyIG09Zi5zdWJzdHJpbmcoYS5jb2x1bW4sYS5jb2x1bW4rMSk7aWYobT09cylyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmKHM9PSciJ3x8cz09IiciKSl7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLnN0YXJ0LmNvbHVtbisxLGkuc3RhcnQuY29sdW1uKzIpO2lmKHU9PSciJylyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KX07ci5pbmhlcml0cyhzLGkpLHQuQ3N0eWxlQmVoYXZpb3VyPXN9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLHM9ZSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxvPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O3IuaW5oZXJpdHMobyxzKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobikscz1yLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihzKXt2YXIgbz1zLmluZGV4O2lmKHNbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhlLHNbMV0sbixvKTt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvK3NbMF0ubGVuZ3RoKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9aWYodCE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgcz1yLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXgrc1swXS5sZW5ndGg7aWYoc1syXSl7dmFyIHU9ZS5nZXRDb21tZW50Rm9sZFJhbmdlKG4sbyk7cmV0dXJuIHUuZW5kLmNvbHVtbi09Mix1fXZhciBhPXtyb3c6bixjb2x1bW46b30sZj1lLiRmaW5kT3BlbmluZ0JyYWNrZXQoc1sxXSxhKTtpZighZilyZXR1cm47cmV0dXJuIGYuY29sdW1uKyssYS5jb2x1bW4tLSxpLmZyb21Qb2ludHMoZixhKX19fS5jYWxsKG8ucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxpPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KHIpPyJzdGFydCI6dD09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChyKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPS9cUy8scz1lLmdldExpbmUodCksbz1zLnNlYXJjaChpKTtpZihvPT0tMSlyZXR1cm47dmFyIHU9bnx8cy5sZW5ndGgsYT1lLmdldExlbmd0aCgpLGY9dCxsPXQ7d2hpbGUoKyt0PGEpe3ZhciBjPWUuZ2V0TGluZSh0KS5zZWFyY2goaSk7aWYoYz09LTEpY29udGludWU7aWYoYzw9bylicmVhaztsPXR9aWYobD5mKXt2YXIgaD1lLmdldExpbmUobCkubGVuZ3RoO3JldHVybiBuZXcgcihmLHUsbCxoKX19LHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jaz1mdW5jdGlvbihlLHQsbixpLHMpe3ZhciBvPXtyb3c6bixjb2x1bW46aSsxfSx1PWUuJGZpbmRDbG9zaW5nQnJhY2tldCh0LG8scyk7aWYoIXUpcmV0dXJuO3ZhciBhPWUuZm9sZFdpZGdldHNbdS5yb3ddO3JldHVybiBhPT1udWxsJiYoYT10aGlzLmdldEZvbGRXaWRnZXQoZSx1LnJvdykpLGE9PSJzdGFydCImJnUucm93Pm8ucm93JiYodS5yb3ctLSx1LmNvbHVtbj1lLmdldExpbmUodS5yb3cpLmxlbmd0aCksci5mcm9tUG9pbnRzKG8sdSl9fSkuY2FsbChpLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2dyb292eV9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2xpYi9sYW5nIikscz1lKCIuL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIpLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcyxvPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsdT1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgiYXNzZXJ0fHdpdGh8YWJzdHJhY3R8Y29udGludWV8Zm9yfG5ld3xzd2l0Y2h8YXNzZXJ0fGRlZmF1bHR8Z290b3xwYWNrYWdlfHN5bmNocm9uaXplZHxib29sZWFufGRvfGlmfHByaXZhdGV8dGhpc3xicmVha3xkb3VibGV8aW1wbGVtZW50c3xwcm90ZWN0ZWR8dGhyb3d8Ynl0ZXxlbHNlfGltcG9ydHxwdWJsaWN8dGhyb3dzfGNhc2V8ZW51bXxpbnN0YW5jZW9mfHJldHVybnx0cmFuc2llbnR8Y2F0Y2h8ZXh0ZW5kc3xpbnR8c2hvcnR8dHJ5fGNoYXJ8ZmluYWx8aW50ZXJmYWNlfHN0YXRpY3x2b2lkfGNsYXNzfGZpbmFsbHl8bG9uZ3xzdHJpY3RmcHx2b2xhdGlsZXxkZWZ8ZmxvYXR8bmF0aXZlfHN1cGVyfHdoaWxlIi5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgibnVsbHxJbmZpbml0eXxOYU58dW5kZWZpbmVkIi5zcGxpdCgifCIpKSxuPWkuYXJyYXlUb01hcCgiQWJzdHJhY3RNZXRob2RFcnJvcnxBc3NlcnRpb25FcnJvcnxDbGFzc0NpcmN1bGFyaXR5RXJyb3J8Q2xhc3NGb3JtYXRFcnJvcnxEZXByZWNhdGVkfEVudW1Db25zdGFudE5vdFByZXNlbnRFeGNlcHRpb258RXhjZXB0aW9uSW5Jbml0aWFsaXplckVycm9yfElsbGVnYWxBY2Nlc3NFcnJvcnxJbGxlZ2FsVGhyZWFkU3RhdGVFeGNlcHRpb258SW5zdGFudGlhdGlvbkVycm9yfEludGVybmFsRXJyb3J8TmVnYXRpdmVBcnJheVNpemVFeGNlcHRpb258Tm9TdWNoRmllbGRFcnJvcnxPdmVycmlkZXxQcm9jZXNzfFByb2Nlc3NCdWlsZGVyfFNlY3VyaXR5TWFuYWdlcnxTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9ufFN1cHByZXNzV2FybmluZ3N8VHlwZU5vdFByZXNlbnRFeGNlcHRpb258VW5rbm93bkVycm9yfFVuc2F0aXNmaWVkTGlua0Vycm9yfFVuc3VwcG9ydGVkQ2xhc3NWZXJzaW9uRXJyb3J8VmVyaWZ5RXJyb3J8SW5zdGFudGlhdGlvbkV4Y2VwdGlvbnxJbmRleE91dE9mQm91bmRzRXhjZXB0aW9ufEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbnxDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbnxOb1N1Y2hGaWVsZEV4Y2VwdGlvbnxJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb258TnVtYmVyRm9ybWF0RXhjZXB0aW9ufFNlY3VyaXR5RXhjZXB0aW9ufFZvaWR8SW5oZXJpdGFibGVUaHJlYWRMb2NhbHxJbGxlZ2FsU3RhdGVFeGNlcHRpb258SW50ZXJydXB0ZWRFeGNlcHRpb258Tm9TdWNoTWV0aG9kRXhjZXB0aW9ufElsbGVnYWxBY2Nlc3NFeGNlcHRpb258VW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb258RW51bXxTdHJpY3RNYXRofFBhY2thZ2V8Q29tcGlsZXJ8UmVhZGFibGV8UnVudGltZXxTdHJpbmdCdWlsZGVyfE1hdGh8SW5jb21wYXRpYmxlQ2xhc3NDaGFuZ2VFcnJvcnxOb1N1Y2hNZXRob2RFcnJvcnxUaHJlYWRMb2NhbHxSdW50aW1lUGVybWlzc2lvbnxBcml0aG1ldGljRXhjZXB0aW9ufE51bGxQb2ludGVyRXhjZXB0aW9ufExvbmd8SW50ZWdlcnxTaG9ydHxCeXRlfERvdWJsZXxOdW1iZXJ8RmxvYXR8Q2hhcmFjdGVyfEJvb2xlYW58U3RhY2tUcmFjZUVsZW1lbnR8QXBwZW5kYWJsZXxTdHJpbmdCdWZmZXJ8SXRlcmFibGV8VGhyZWFkR3JvdXB8UnVubmFibGV8VGhyZWFkfElsbGVnYWxNb25pdG9yU3RhdGVFeGNlcHRpb258U3RhY2tPdmVyZmxvd0Vycm9yfE91dE9mTWVtb3J5RXJyb3J8VmlydHVhbE1hY2hpbmVFcnJvcnxBcnJheVN0b3JlRXhjZXB0aW9ufENsYXNzQ2FzdEV4Y2VwdGlvbnxMaW5rYWdlRXJyb3J8Tm9DbGFzc0RlZkZvdW5kRXJyb3J8Q2xhc3NOb3RGb3VuZEV4Y2VwdGlvbnxSdW50aW1lRXhjZXB0aW9ufEV4Y2VwdGlvbnxUaHJlYWREZWF0aHxFcnJvcnxUaHJvd2FibGV8U3lzdGVtfENsYXNzTG9hZGVyfENsb25lYWJsZXxDbGFzc3xDaGFyU2VxdWVuY2V8Q29tcGFyYWJsZXxTdHJpbmd8T2JqZWN0Ii5zcGxpdCgifCIpKSxyPWkuYXJyYXlUb01hcCgiIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qJCJ9LHMuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbL10oPzooPzpcXFsoPzpcXFxcXXxbXlxcXV0pK1xcXSl8KD86XFxcXC98W15cXF0vXSkpKlsvXVxcdypcXHMqKD89WykuLDtdfCQpIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciIiInLG5leHQ6InFxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInJyciLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlsnXSg/Oig/OlxcXFwuKXwoPzpbXidcXFxcXSkpKj9bJ10ifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIwW3hYXVswLTlhLWZBLUZdK1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IlsrLV0/XFxkKyg/Oig/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPyk/XFxiIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDoiKD86dHJ1ZXxmYWxzZSlcXGIifSx7dG9rZW46ZnVuY3Rpb24oaSl7cmV0dXJuIGk9PSJ0aGlzIj8idmFyaWFibGUubGFuZ3VhZ2UiOmUuaGFzT3duUHJvcGVydHkoaSk/ImtleXdvcmQiOm4uaGFzT3duUHJvcGVydHkoaSk/InN1cHBvcnQuZnVuY3Rpb24iOnIuaGFzT3duUHJvcGVydHkoaSk/InN1cHBvcnQuZnVuY3Rpb24iOnQuaGFzT3duUHJvcGVydHkoaSk/ImNvbnN0YW50Lmxhbmd1YWdlIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXD86fFxcP1xcLnxcXCpcXC58PD0+fD1+fD09fnxcXC5AfFxcKlxcLkB8XFwuJnxhc3xpbnxpc3whfFxcJHwlfCZ8XFwqfFxcLVxcLXxcXC18XFwrXFwrfFxcK3x+fD09PXw9PXw9fCE9fCE9PXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XFx8XFx8fFxcP1xcOnxcXCo9fCU9fFxcKz18XFwtPXwmPXxcXF49fFxcYig/OmlufGluc3RhbmNlb2Z8bmV3fGRlbGV0ZXx0eXBlb2Z8dm9pZCkifSx7dG9rZW46ImxwYXJlbiIscmVnZXg6IltbKHtdIn0se3Rva2VuOiJycGFyZW4iLHJlZ2V4OiJbXFxdKX1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scXFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDovXFwoPzp1WzAtOUEtRmEtZl17NH18LnwkKS99LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDovXCRbXHdcZF0rL30se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4Oi9cJFx7W14iXH1dK1x9Py99LHt0b2tlbjoic3RyaW5nIixyZWdleDonInszLDV9JyxuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiLis/In1dLHFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDovXFwoPzp1WzAtOUEtRmEtZl17NH18LnwkKS99LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJ3szLDV9IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiLis/In1dfSx0aGlzLmVtYmVkUnVsZXMocywiZG9jLSIsW3MuZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtyLmluaGVyaXRzKHUsbyksdC5Hcm9vdnlIaWdobGlnaHRSdWxlcz11fSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-haxe.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9oYXhlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2hheGVfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9oYXhlX2hpZ2hsaWdodF9ydWxlcyIpLkhheGVIaWdobGlnaHRSdWxlcyx1PWUoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGE9ZSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGY9ZSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGw9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyB1LHRoaXMuJGJlaGF2aW91cj1uZXcgYSx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgZn07ci5pbmhlcml0cyhsLGkpLGZ1bmN0aW9uKCl7dGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy4kZ2V0SW5kZW50KHQpLGk9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnModCxlKSxzPWkudG9rZW5zO2lmKHMubGVuZ3RoJiZzW3MubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gcjtpZihlPT0ic3RhcnQiKXt2YXIgbz10Lm1hdGNoKC9eLipbXHtcKFxbXVxzKiQvKTtvJiYocis9bil9cmV0dXJuIHJ9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQodCxuKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudCh0LG4pfSx0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbH19LmNhbGwobC5wcm90b3R5cGUpLHQuTW9kZT1sfSksZGVmaW5lKCJhY2UvbW9kZS9oYXhlX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLG89ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyx1PWZ1bmN0aW9uKCl7dmFyIGU9aS5hcnJheVRvTWFwKCJicmVha3xjYXNlfGNhc3R8Y2F0Y2h8Y2xhc3N8Y29udGludWV8ZGVmYXVsdHxlbHNlfGVudW18ZXh0ZW5kc3xmb3J8ZnVuY3Rpb258aWZ8aW1wbGVtZW50c3xpbXBvcnR8aW58aW5saW5lfGludGVyZmFjZXxuZXd8b3ZlcnJpZGV8cGFja2FnZXxwcml2YXRlfHB1YmxpY3xyZXR1cm58c3RhdGljfHN1cGVyfHN3aXRjaHx0aGlzfHRocm93fHRyYWNlfHRyeXx0eXBlZGVmfHVudHlwZWR8dmFyfHdoaWxlfEFycmF5fFZvaWR8Qm9vbHxJbnR8VUludHxGbG9hdHxEeW5hbWljfFN0cmluZ3xMaXN0fEhhc2h8SW50SGFzaHxFcnJvcnxVbmtub3dufFR5cGV8U3RkIi5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgibnVsbHx0cnVlfGZhbHNlIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qJCJ9LHMuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXCoiLG1lcmdlOiEwLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbL10oPzooPzpcXFsoPzpcXFxcXXxbXlxcXV0pK1xcXSl8KD86XFxcXC98W15cXF0vXSkpKlsvXVxcdypcXHMqKD89WykuLDtdfCQpIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiMFt4WF1bMC05YS1mQS1GXStcXGIifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuYm9vbGVhbiIscmVnZXg6Iig/OnRydWV8ZmFsc2UpXFxiIn0se3Rva2VuOmZ1bmN0aW9uKG4pe3JldHVybiBuPT0idGhpcyI/InZhcmlhYmxlLmxhbmd1YWdlIjplLmhhc093blByb3BlcnR5KG4pPyJrZXl3b3JkIjp0Lmhhc093blByb3BlcnR5KG4pPyJjb25zdGFudC5sYW5ndWFnZSI6ImlkZW50aWZpZXIifSxyZWdleDoiW2EtekEtWl8kXVthLXpBLVowLTlfJF0qXFxiIn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiIXxcXCR8JXwmfFxcKnxcXC1cXC18XFwtfFxcK1xcK3xcXCt8fnw9PT18PT18PXwhPXwhPT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFxcfFxcfHxcXD9cXDp8XFwqPXwlPXxcXCs9fFxcLT18Jj18XFxePXxcXGIoPzppbnxpbnN0YW5jZW9mfG5ld3xkZWxldGV8dHlwZW9mfHZvaWQpIn0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IlxcP3xcXDp8XFwsfFxcO3xcXC4ifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IltbKHs8XSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiW1xcXSl9Pl0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0sdGhpcy5lbWJlZFJ1bGVzKHMsImRvYy0iLFtzLmdldEVuZFJ1bGUoInN0YXJ0IildKX07ci5pbmhlcml0cyh1LG8pLHQuSGF4ZUhpZ2hsaWdodFJ1bGVzPXV9KSxkZWZpbmUoImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxzPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQuZG9jLnRhZyIscmVnZXg6IkBbXFx3XFxkX10rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiVE9ETyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJbXkBcXCpdKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiIuIn1dfX07ci5pbmhlcml0cyhzLGkpLHMuZ2V0U3RhcnRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCooPz1cXCopIixuZXh0OmV9fSxzLmdldEVuZFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcKlxcLyIsbmV4dDplfX0sdC5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXM9c30pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9yYW5nZSIpLlJhbmdlLGk9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuL15ccyskLy50ZXN0KGUpPy9eXHMqXH0vLnRlc3QodCk6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldExpbmUodCksaT1uLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFpKXJldHVybiAwO3ZhciBzPWlbMV0ubGVuZ3RoLG89ZS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dCxjb2x1bW46c30pO2lmKCFvfHxvLnJvdz09dClyZXR1cm4gMDt2YXIgdT10aGlzLiRnZXRJbmRlbnQoZS5nZXRMaW5lKG8ucm93KSk7ZS5yZXBsYWNlKG5ldyByKHQsMCx0LHMtMSksdSl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gdD90WzFdOiIifX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9aX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixzPWZ1bmN0aW9uKCl7dGhpcy5hZGQoImJyYWNlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0ieyIpe3ZhciBzPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSxvPXIuZG9jLmdldFRleHRSYW5nZShzKTtyZXR1cm4gbyE9PSIiP3t0ZXh0OiJ7IitvKyJ9IixzZWxlY3Rpb246ITF9Ont0ZXh0OiJ7fSIsc2VsZWN0aW9uOlsxLDFdfX1pZihpPT0ifSIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09In0iKXt2YXIgbD1yLiRmaW5kT3BlbmluZ0JyYWNrZXQoIn0iLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihsIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX1lbHNlIGlmKGk9PSJcbiIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09In0iKXt2YXIgYz1yLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp1LnJvdyxjb2x1bW46dS5jb2x1bW4rMX0pO2lmKCFjKXJldHVybiBudWxsO3ZhciBoPXRoaXMuZ2V0TmV4dExpbmVJbmRlbnQoZSxhLnN1YnN0cmluZygwLGEubGVuZ3RoLTEpLHIuZ2V0VGFiU3RyaW5nKCkpLHA9dGhpcy4kZ2V0SW5kZW50KHIuZG9jLmdldExpbmUoYy5yb3cpKTtyZXR1cm57dGV4dDoiXG4iK2grIlxuIitwLHNlbGVjdGlvbjpbMSxoLmxlbmd0aCwxLGgubGVuZ3RoXX19fX0pLHRoaXMuYWRkKCJicmFjZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcz09InsiKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuZW5kLmNvbHVtbixpLmVuZC5jb2x1bW4rMSk7aWYodT09In0iKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09IigiKXt2YXIgcz1uLmdldFNlbGVjdGlvblJhbmdlKCksbz1yLmRvYy5nZXRUZXh0UmFuZ2Uocyk7cmV0dXJuIG8hPT0iIj97dGV4dDoiKCIrbysiKSIsc2VsZWN0aW9uOiExfTp7dGV4dDoiKCkiLHNlbGVjdGlvbjpbMSwxXX19aWYoaT09IikiKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSIpIil7dmFyIGw9ci4kZmluZE9wZW5pbmdCcmFja2V0KCIpIix7Y29sdW1uOnUuY29sdW1uKzEscm93OnUucm93fSk7aWYobCE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInBhcmVucyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiZzPT0iKCIpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5zdGFydC5jb2x1bW4rMSxpLnN0YXJ0LmNvbHVtbisyKTtpZih1PT0iKSIpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSciJ3x8aT09IiciKXt2YXIgcz1pLG89bi5nZXRTZWxlY3Rpb25SYW5nZSgpLHU9ci5kb2MuZ2V0VGV4dFJhbmdlKG8pO2lmKHUhPT0iIilyZXR1cm57dGV4dDpzK3UrcyxzZWxlY3Rpb246ITF9O3ZhciBhPW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxmPXIuZG9jLmdldExpbmUoYS5yb3cpLGw9Zi5zdWJzdHJpbmcoYS5jb2x1bW4tMSxhLmNvbHVtbik7aWYobD09IlxcIilyZXR1cm4gbnVsbDt2YXIgYz1yLmdldFRva2VucyhvLnN0YXJ0LnJvdyksaD0wLHAsZD0tMTtmb3IodmFyIHY9MDt2PGMubGVuZ3RoO3YrKyl7cD1jW3ZdLHAudHlwZT09InN0cmluZyI/ZD0tMTpkPDAmJihkPXAudmFsdWUuaW5kZXhPZihzKSk7aWYocC52YWx1ZS5sZW5ndGgraD5vLnN0YXJ0LmNvbHVtbilicmVhaztoKz1jW3ZdLnZhbHVlLmxlbmd0aH1pZighcHx8ZDwwJiZwLnR5cGUhPT0iY29tbWVudCImJihwLnR5cGUhPT0ic3RyaW5nInx8by5zdGFydC5jb2x1bW4hPT1wLnZhbHVlLmxlbmd0aCtoLTEmJnAudmFsdWUubGFzdEluZGV4T2Yocyk9PT1wLnZhbHVlLmxlbmd0aC0xKSlyZXR1cm57dGV4dDpzK3Msc2VsZWN0aW9uOlsxLDFdfTtpZihwJiZwLnR5cGU9PT0ic3RyaW5nIil7dmFyIG09Zi5zdWJzdHJpbmcoYS5jb2x1bW4sYS5jb2x1bW4rMSk7aWYobT09cylyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmKHM9PSciJ3x8cz09IiciKSl7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLnN0YXJ0LmNvbHVtbisxLGkuc3RhcnQuY29sdW1uKzIpO2lmKHU9PSciJylyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KX07ci5pbmhlcml0cyhzLGkpLHQuQ3N0eWxlQmVoYXZpb3VyPXN9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLHM9ZSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxvPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O3IuaW5oZXJpdHMobyxzKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobikscz1yLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihzKXt2YXIgbz1zLmluZGV4O2lmKHNbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhlLHNbMV0sbixvKTt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvK3NbMF0ubGVuZ3RoKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9aWYodCE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgcz1yLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXgrc1swXS5sZW5ndGg7aWYoc1syXSl7dmFyIHU9ZS5nZXRDb21tZW50Rm9sZFJhbmdlKG4sbyk7cmV0dXJuIHUuZW5kLmNvbHVtbi09Mix1fXZhciBhPXtyb3c6bixjb2x1bW46b30sZj1lLiRmaW5kT3BlbmluZ0JyYWNrZXQoc1sxXSxhKTtpZighZilyZXR1cm47cmV0dXJuIGYuY29sdW1uKyssYS5jb2x1bW4tLSxpLmZyb21Qb2ludHMoZixhKX19fS5jYWxsKG8ucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxpPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KHIpPyJzdGFydCI6dD09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChyKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPS9cUy8scz1lLmdldExpbmUodCksbz1zLnNlYXJjaChpKTtpZihvPT0tMSlyZXR1cm47dmFyIHU9bnx8cy5sZW5ndGgsYT1lLmdldExlbmd0aCgpLGY9dCxsPXQ7d2hpbGUoKyt0PGEpe3ZhciBjPWUuZ2V0TGluZSh0KS5zZWFyY2goaSk7aWYoYz09LTEpY29udGludWU7aWYoYzw9bylicmVhaztsPXR9aWYobD5mKXt2YXIgaD1lLmdldExpbmUobCkubGVuZ3RoO3JldHVybiBuZXcgcihmLHUsbCxoKX19LHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jaz1mdW5jdGlvbihlLHQsbixpLHMpe3ZhciBvPXtyb3c6bixjb2x1bW46aSsxfSx1PWUuJGZpbmRDbG9zaW5nQnJhY2tldCh0LG8scyk7aWYoIXUpcmV0dXJuO3ZhciBhPWUuZm9sZFdpZGdldHNbdS5yb3ddO3JldHVybiBhPT1udWxsJiYoYT10aGlzLmdldEZvbGRXaWRnZXQoZSx1LnJvdykpLGE9PSJzdGFydCImJnUucm93Pm8ucm93JiYodS5yb3ctLSx1LmNvbHVtbj1lLmdldExpbmUodS5yb3cpLmxlbmd0aCksci5mcm9tUG9pbnRzKG8sdSl9fSkuY2FsbChpLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-html.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9odG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL21vZGUvamF2YXNjcmlwdCIsImFjZS9tb2RlL2NzcyIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9odG1sX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2JlaGF2aW91ci9odG1sIiwiYWNlL21vZGUvZm9sZGluZy9odG1sIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dCIpLk1vZGUscz1lKCIuL2phdmFzY3JpcHQiKS5Nb2RlLG89ZSgiLi9jc3MiKS5Nb2RlLHU9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGE9ZSgiLi9odG1sX2hpZ2hsaWdodF9ydWxlcyIpLkh0bWxIaWdobGlnaHRSdWxlcyxmPWUoIi4vYmVoYXZpb3VyL2h0bWwiKS5IdG1sQmVoYXZpb3VyLGw9ZSgiLi9mb2xkaW5nL2h0bWwiKS5Gb2xkTW9kZSxjPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IGE7dGhpcy4kdG9rZW5pemVyPW5ldyB1KGUuZ2V0UnVsZXMoKSksdGhpcy4kYmVoYXZpb3VyPW5ldyBmLHRoaXMuJGVtYmVkcz1lLmdldEVtYmVkcygpLHRoaXMuY3JlYXRlTW9kZURlbGVnYXRlcyh7ImpzLSI6cywiY3NzLSI6b30pLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBsfTtyLmluaGVyaXRzKGMsaSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gMH0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJGdldEluZGVudCh0KX0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiExfX0uY2FsbChjLnByb3RvdHlwZSksdC5Nb2RlPWN9KSxkZWZpbmUoImFjZS9tb2RlL2phdmFzY3JpcHQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IiwiYWNlL3JhbmdlIiwiYWNlL3dvcmtlci93b3JrZXJfY2xpZW50IiwiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dCIpLk1vZGUscz1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsbz1lKCIuL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIikuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsYT1lKCIuLi9yYW5nZSIpLlJhbmdlLGY9ZSgiLi4vd29ya2VyL3dvcmtlcl9jbGllbnQiKS5Xb3JrZXJDbGllbnQsbD1lKCIuL2JlaGF2aW91ci9jc3R5bGUiKS5Dc3R5bGVCZWhhdmlvdXIsYz1lKCIuL2ZvbGRpbmcvY3N0eWxlIikuRm9sZE1vZGUsaD1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgcygobmV3IG8pLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IHUsdGhpcy4kYmVoYXZpb3VyPW5ldyBsLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBjfTtyLmluaGVyaXRzKGgsaSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT0hMCxzPS9eKFxzKilcL1wvLztmb3IodmFyIG89bjtvPD1yO28rKylpZighcy50ZXN0KHQuZ2V0TGluZShvKSkpe2k9ITE7YnJlYWt9aWYoaSl7dmFyIHU9bmV3IGEoMCwwLDAsMCk7Zm9yKHZhciBvPW47bzw9cjtvKyspe3ZhciBmPXQuZ2V0TGluZShvKSxsPWYubWF0Y2gocyk7dS5zdGFydC5yb3c9byx1LmVuZC5yb3c9byx1LmVuZC5jb2x1bW49bFswXS5sZW5ndGgsdC5yZXBsYWNlKHUsbFsxXSl9fWVsc2UgdC5pbmRlbnRSb3dzKG4sciwiLy8iKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy4kZ2V0SW5kZW50KHQpLGk9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnModCxlKSxzPWkudG9rZW5zLG89aS5zdGF0ZTtpZihzLmxlbmd0aCYmc1tzLmxlbmd0aC0xXS50eXBlPT0iY29tbWVudCIpcmV0dXJuIHI7aWYoZT09InN0YXJ0Inx8ZT09InJlZ2V4X2FsbG93ZWQiKXt2YXIgdT10Lm1hdGNoKC9eLiooPzpcYmNhc2VcYi4qXDp8W1x7XChcW10pXHMqJC8pO3UmJihyKz1uKX1lbHNlIGlmKGU9PSJkb2Mtc3RhcnQiKXtpZihvPT0ic3RhcnQifHxlPT0icmVnZXhfYWxsb3dlZCIpcmV0dXJuIiI7dmFyIHU9dC5tYXRjaCgvXlxzKihcLz8pXCovKTt1JiYodVsxXSYmKHIrPSIgIikscis9IiogIil9cmV0dXJuIHJ9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQodCxuKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudCh0LG4pfSx0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihlKXt2YXIgdD1uZXcgZihbImFjZSJdLCJhY2UvbW9kZS9qYXZhc2NyaXB0X3dvcmtlciIsIkphdmFTY3JpcHRXb3JrZXIiKTtyZXR1cm4gdC5hdHRhY2hUb0RvY3VtZW50KGUuZ2V0RG9jdW1lbnQoKSksdC5vbigianNsaW50IixmdW5jdGlvbih0KXt2YXIgbj1bXTtmb3IodmFyIHI9MDtyPHQuZGF0YS5sZW5ndGg7cisrKXt2YXIgaT10LmRhdGFbcl07aSYmbi5wdXNoKHtyb3c6aS5saW5lLTEsY29sdW1uOmkuY2hhcmFjdGVyLTEsdGV4dDppLnJlYXNvbix0eXBlOiJ3YXJuaW5nIixsaW50Oml9KX1lLnNldEFubm90YXRpb25zKG4pfSksdC5vbigibmFyY2lzc3VzIixmdW5jdGlvbih0KXtlLnNldEFubm90YXRpb25zKFt0LmRhdGFdKX0pLHQub24oInRlcm1pbmF0ZSIsZnVuY3Rpb24oKXtlLmNsZWFyQW5ub3RhdGlvbnMoKX0pLHR9fS5jYWxsKGgucHJvdG90eXBlKSx0Lk1vZGU9aH0pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS91bmljb2RlIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4uL3VuaWNvZGUiKSxvPWUoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxhPWZ1bmN0aW9uKCl7dmFyIGU9aS5hcnJheVRvTWFwKCJBcnJheXxCb29sZWFufERhdGV8RnVuY3Rpb258SXRlcmF0b3J8TnVtYmVyfE9iamVjdHxSZWdFeHB8U3RyaW5nfFByb3h5fE5hbWVzcGFjZXxRTmFtZXxYTUx8WE1MTGlzdHxBcnJheUJ1ZmZlcnxGbG9hdDMyQXJyYXl8RmxvYXQ2NEFycmF5fEludDE2QXJyYXl8SW50MzJBcnJheXxJbnQ4QXJyYXl8VWludDE2QXJyYXl8VWludDMyQXJyYXl8VWludDhBcnJheXxVaW50OENsYW1wZWRBcnJheXxFcnJvcnxFdmFsRXJyb3J8SW50ZXJuYWxFcnJvcnxSYW5nZUVycm9yfFJlZmVyZW5jZUVycm9yfFN0b3BJdGVyYXRpb258U3ludGF4RXJyb3J8VHlwZUVycm9yfFVSSUVycm9yfGRlY29kZVVSSXxkZWNvZGVVUklDb21wb25lbnR8ZW5jb2RlVVJJfGVuY29kZVVSSUNvbXBvbmVudHxldmFsfGlzRmluaXRlfGlzTmFOfHBhcnNlRmxvYXR8cGFyc2VJbnR8SlNPTnxNYXRofHRoaXN8YXJndW1lbnRzfHByb3RvdHlwZXx3aW5kb3d8ZG9jdW1lbnQiLnNwbGl0KCJ8IikpLHQ9aS5hcnJheVRvTWFwKCJicmVha3xjYXNlfGNhdGNofGNvbnRpbnVlfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZmluYWxseXxmb3J8ZnVuY3Rpb258aWZ8aW58aW5zdGFuY2VvZnxuZXd8cmV0dXJufHN3aXRjaHx0aHJvd3x0cnl8dHlwZW9mfGxldHx2YXJ8d2hpbGV8d2l0aHxjb25zdHx5aWVsZHxpbXBvcnR8Z2V0fHNldCIuc3BsaXQoInwiKSksbj0iY2FzZXxkb3xlbHNlfGZpbmFsbHl8aW58aW5zdGFuY2VvZnxyZXR1cm58dGhyb3d8dHJ5fHR5cGVvZnx5aWVsZCIscj1pLmFycmF5VG9NYXAoIl9fcGFyZW50X198X19jb3VudF9ffGVzY2FwZXx1bmVzY2FwZXx3aXRofF9fcHJvdG9fXyIuc3BsaXQoInwiKSksdT1pLmFycmF5VG9NYXAoImNvbnN0fGxldHx2YXJ8ZnVuY3Rpb24iLnNwbGl0KCJ8IikpLGE9aS5hcnJheVRvTWFwKCJudWxsfEluZmluaXR5fE5hTnx1bmRlZmluZWQiLnNwbGl0KCJ8IikpLGY9aS5hcnJheVRvTWFwKCJjbGFzc3xlbnVtfGV4dGVuZHN8c3VwZXJ8ZXhwb3J0fGltcGxlbWVudHN8cHJpdmF0ZXxwdWJsaWN8aW50ZXJmYWNlfHBhY2thZ2V8cHJvdGVjdGVkfHN0YXRpYyIuc3BsaXQoInwiKSksbD0iWyIrcy5wYWNrYWdlcy5MKyJcXCRfXVsiK3MucGFja2FnZXMuTCtzLnBhY2thZ2VzLk1uK3MucGFja2FnZXMuTWMrcy5wYWNrYWdlcy5OZCtzLnBhY2thZ2VzLlBjKyJcXCRfXSpcXGIiLGM9IlxcXFwoPzp4WzAtOWEtZkEtRl17Mn18dVswLTlhLWZBLUZdezR9fFswLTJdWzAtN117MCwyfXwzWzAtNl1bMC03XT98MzdbMC03XT98WzQtN11bMC03XT98LikiO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDovXC9cLy4qJC99LG8uZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4Oi9cL1wqLyxuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInKD89LikiLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIoPz0uKScsbmV4dDoicXFzdHJpbmcifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi8wW3hYXVswLTlhLWZBLUZdK1xiL30se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovWystXT9cZCsoPzooPzpcLlxkKik/KD86W2VFXVsrLV0/XGQrKT8pP1xiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2wrIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiXSxyZWdleDoiKCIrbCsiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2wrIikoXFxzKikoPSkoXFxzKikiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFwuKSgiK2wrIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMrKShcXHcrKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IihmdW5jdGlvbikoXFxzKykoIitsKyIpKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXHMqKSg6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsidGV4dCIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6Iig6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDovKD86dHJ1ZXxmYWxzZSlcYi99LHt0b2tlbjoia2V5d29yZCIscmVnZXg6Iig/OiIrbisiKVxcYiIsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiJdLHJlZ2V4Oi8oXC4pKHMoPzpoKD86aWZ0fG93KD86TW9kKD86ZWxlc3NEaWFsb2d8YWxEaWFsb2cpfEhlbHApKXxjcm9sbCg/Olh8QnkoPzpQYWdlc3xMaW5lcyk/fFl8VG8pP3x0KD86b3B6enp6fHJpa2UpfGkoPzpufHplVG9Db250ZW50fGRlYmFyfGduVGV4dCl8b3J0fHUoPzpwfGIoPzpzdHIoPzppbmcpPyk/KXxwbGkoPzpjZXx0KXxlKD86bmR8dCg/OlJlKD86c2l6YWJsZXxxdWVzdEhlYWRlcil8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvKD86dEtleXN8dXJzKXxZZWFyfEN1cnNvcnxUaW1lKD86b3V0KT98SW50ZXJ2YWx8Wk9wdGlvbnN8RGF0ZXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGF0ZXxGdWxsWWVhcil8RnVsbFllYXJ8QWN0aXZlKXxhcmNoKXxxcnR8bGljZXxhdmVQcmVmZXJlbmNlc3xtYWxsKXxoKD86b21lfGFuZGxlRXZlbnQpfG5hdmlnYXRlfGMoPzpoYXIoPzpDb2RlQXR8QXQpfG8oPzpzfG4oPzpjYXR8dGV4dHVhbHxmaXJtKXxtcGlsZSl8ZWlsfGxlYXIoPzpUaW1lb3V0fEludGVydmFsKT98YSg/OnB0dXJlRXZlbnRzfGxsKXxyZWF0ZSg/OlN0eWxlU2hlZXR8UG9wdXB8RXZlbnRPYmplY3QpKXx0KD86byg/OkdNVFN0cmluZ3xTKD86dHJpbmd8b3VyY2UpfFUoPzpUQ1N0cmluZ3xwcGVyQ2FzZSl8TG8oPzpjYWxlU3RyaW5nfHdlckNhc2UpKXxlc3R8YSg/Om58aW50KD86RW5hYmxlZCk/KSl8aSg/OnMoPzpOYU58RmluaXRlKXxuZGV4T2Z8dGFsaWNzKXxkKD86aXNhYmxlRXh0ZXJuYWxDYXB0dXJlfHVtcHxldGFjaEV2ZW50KXx1KD86big/OnNoaWZ0fHRhaW50fGVzY2FwZXx3YXRjaCl8cGRhdGVDb21tYW5kcyl8aig/Om9pbnxhdmFFbmFibGVkKXxwKD86byg/OnB8dyl8dXNofGx1Z2lucy5yZWZyZXNofGEoPzpkZGluZ3N8cnNlKD86SW50fEZsb2F0KT8pfHIoPzppbnR8b21wdHxlZmVyZW5jZSkpfGUoPzpzY2FwZXxuYWJsZUV4dGVybmFsQ2FwdHVyZXx2YWx8bGVtZW50RnJvbVBvaW50fHgoPzpwfGVjKD86U2NyaXB0fENvbW1hbmQpPykpfHZhbHVlT2Z8VVRDfHF1ZXJ5Q29tbWFuZCg/OlN0YXRlfEluZGV0ZXJtfEVuYWJsZWR8VmFsdWUpfGYoPzppKD86bmR8bGUoPzpNb2RpZmllZERhdGV8U2l6ZXxDcmVhdGVkRGF0ZXxVcGRhdGVkRGF0ZSl8eGVkKXxvKD86bnQoPzpzaXplfGNvbG9yKXxyd2FyZCl8bG9vcnxyb21DaGFyQ29kZSl8d2F0Y2h8bCg/Omlua3xvKD86YWR8Zyl8YXN0SW5kZXhPZil8YSg/OnNpbnxuY2hvcnxjb3N8dCg/OnRhY2hFdmVudHxvYnxhbig/OjIpPyl8cHBseXxsZXJ0fGIoPzpzfG9ydCkpfHIoPzpvdSg/Om5kfHRlRXZlbnRzKXxlKD86c2l6ZSg/OkJ5fFRvKXxjYWxjfHR1cm5WYWx1ZXxwbGFjZXx2ZXJzZXxsKD86b2FkfGVhc2UoPzpDYXB0dXJlfEV2ZW50cykpKXxhbmRvbSl8Zyg/Om98ZXQoPzpSZXNwb25zZUhlYWRlcnxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlKD86Y29uZHN8bGVjdGlvbil8SG91cnN8WWVhcnxUaW1lKD86em9uZU9mZnNldCk/fERhKD86eXx0ZSl8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhKD86eXx0ZSl8RnVsbFllYXIpfEZ1bGxZZWFyfEEoPzp0dGVudGlvbnxsbFJlc3BvbnNlSGVhZGVycykpKXxtKD86aW58b3ZlKD86Qig/Onl8ZWxvdyl8VG8oPzpBYnNvbHV0ZSk/fEFib3ZlKXxlcmdlQXR0cmlidXRlc3xhKD86dGNofHJnaW5zfHgpKXxiKD86dG9hfGlnfG8oPzpsZHxyZGVyV2lkdGhzKXxsaW5rfGFjaykpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZG9tIl0scmVnZXg6LyhcLikocyg/OnViKD86c3RyaW5nRGF0YXxtaXQpfHBsaXRUZXh0fGUoPzp0KD86TmFtZWRJdGVtfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8bGVjdCkpfGhhcyg/OkNoaWxkTm9kZXN8RmVhdHVyZSl8bmFtZWRJdGVtfGMoPzpsKD86aWNrfG8oPzpzZXxuZU5vZGUpKXxyZWF0ZSg/OkMoPzpvbW1lbnR8REFUQVNlY3Rpb258YXB0aW9uKXxUKD86SGVhZHxleHROb2RlfEZvb3QpfERvY3VtZW50RnJhZ21lbnR8UHJvY2Vzc2luZ0luc3RydWN0aW9ufEUoPzpudGl0eVJlZmVyZW5jZXxsZW1lbnQpfEF0dHJpYnV0ZSkpfHRhYkluZGV4fGkoPzpuc2VydCg/OlJvd3xCZWZvcmV8Q2VsbHxEYXRhKXx0ZW0pfG9wZW58ZGVsZXRlKD86Um93fEMoPzplbGx8YXB0aW9uKXxUKD86SGVhZHxGb290KXxEYXRhKXxmb2N1c3x3cml0ZSg/OmxuKT98YSg/OmRkfHBwZW5kKD86Q2hpbGR8RGF0YSkpfHJlKD86c2V0fHBsYWNlKD86Q2hpbGR8RGF0YSl8bW92ZSg/Ok5hbWVkSXRlbXxDaGlsZHxBdHRyaWJ1dGUoPzpOb2RlKT8pPyl8Z2V0KD86TmFtZWRJdGVtfEVsZW1lbnQoPzpzQnkoPzpOYW1lfFRhZ05hbWUpfEJ5SWQpfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8Ymx1cilcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5jb25zdGFudCJdLHJlZ2V4Oi8oXC4pKHMoPzp5c3RlbUxhbmd1YWdlfGNyKD86aXB0c3xvbGxiYXJzfGVlbig/Olh8WXxUb3B8TGVmdCkpfHQoPzp5bGUoPzpTaGVldHMpP3xhdHVzKD86VGV4dHxiYXIpPyl8aWJsaW5nKD86QmVsb3d8QWJvdmUpfG91cmNlfHVmZml4ZXN8ZSg/OmN1cml0eSg/OlBvbGljeSk/fGwoPzplY3Rpb258ZikpKXxoKD86aXN0b3J5fG9zdCg/Om5hbWUpP3xhcyg/Omh8Rm9jdXMpKXx5fFgoPzpNTERvY3VtZW50fFNMRG9jdW1lbnQpfG4oPzpleHR8YW1lKD86c3BhY2UoPzpzfFVSSSl8UHJvcCkpfE0oPzpJTl9WQUxVRXxBWF9WQUxVRSl8Yyg/OmhhcmFjdGVyU2V0fG8oPzpuKD86c3RydWN0b3J8dHJvbGxlcnMpfG9raWVFbmFibGVkfGxvckRlcHRofG1wKD86b25lbnRzfGxldGUpKXx1cnJlbnR8cHVDbGFzc3xsKD86aSg/OnAoPzpib2FyZERhdGEpP3xlbnRJbmZvcm1hdGlvbil8b3NlZHxhc3Nlcyl8YWxsZSg/OmV8cil8cnlwdG8pfHQoPzpvKD86b2xiYXJ8cCl8ZXh0KD86VHJhbnNmb3JtfEluZGVudHxEZWNvcmF0aW9ufEFsaWduKXxhZ3MpfFNRUlQoPzoxXzJ8Mil8aSg/Om4oPzpuZXIoPzpIZWlnaHR8V2lkdGgpfHB1dCl8ZHN8Z25vcmVDYXNlKXx6SW5kZXh8byg/OnNjcHV8big/OnJlYWR5c3RhdGVjaGFuZ2V8TGluZSl8dXRlcig/OkhlaWdodHxXaWR0aCl8cCg/OnNQcm9maWxlfGVuZXIpfGZmc2NyZWVuQnVmZmVyaW5nKXxORUdBVElWRV9JTkZJTklUWXxkKD86aSg/OnNwbGF5fGFsb2coPzpIZWlnaHR8VG9wfFdpZHRofExlZnR8QXJndW1lbnRzKXxyZWN0b3JpZXMpfGUoPzpzY3JpcHRpb258ZmF1bHQoPzpTdGF0dXN8Q2goPzplY2tlZHxhcnNldCl8VmlldykpKXx1KD86c2VyKD86UHJvZmlsZXxMYW5ndWFnZXxBZ2VudCl8big/OmlxdWVJRHxkZWZpbmVkKXxwZGF0ZUludGVydmFsKXxfY29udGVudHxwKD86aXhlbERlcHRofG9ydHxlcnNvbmFsYmFyfGtjczExfGwoPzp1Z2luc3xhdGZvcm0pfGEoPzp0aG5hbWV8ZGRpbmcoPzpSaWdodHxCb3R0b218VG9wfExlZnQpfHJlbnQoPzpXaW5kb3d8TGF5ZXIpP3xnZSg/OlgoPzpPZmZzZXQpP3xZKD86T2Zmc2V0KT8pKXxyKD86byg/OnRvKD86Y29sfHR5cGUpfGR1Y3QoPzpTdWIpP3xtcHRlcil8ZSg/OnZpb3VzfGZpeCkpKXxlKD86big/OmNvZGluZ3xhYmxlZFBsdWdpbil8eCg/OnRlcm5hbHxwYW5kbyl8bWJlZHMpfHYoPzppc2liaWxpdHl8ZW5kb3IoPzpTdWIpP3xMaW5rY29sb3IpfFVSTFVuZW5jb2RlZHxQKD86SXxPU0lUSVZFX0lORklOSVRZKXxmKD86aWxlbmFtZXxvKD86bnQoPzpTaXplfEZhbWlseXxXZWlnaHQpfHJtTmFtZSl8cmFtZSg/OnN8RWxlbWVudCl8Z0NvbG9yKXxFfHdoaXRlU3BhY2V8bCg/OmkoPzpzdFN0eWxlVHlwZXxuKD86ZUhlaWdodHxrQ29sb3IpKXxvKD86Y2EoPzp0aW9uKD86YmFyKT98bE5hbWUpfHdzcmMpfGUoPzpuZ3RofGZ0KD86Q29udGV4dCk/KXxhKD86c3QoPzpNKD86b2RpZmllZHxhdGNoKXxJbmRleHxQYXJlbil8eWVyKD86c3xYKXxuZ3VhZ2UpKXxhKD86cHAoPzpNaW5vclZlcnNpb258TmFtZXxDbyg/OmRlTmFtZXxyZSl8VmVyc2lvbil8dmFpbCg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdCl8bGx8cig/Oml0eXxndW1lbnRzKXxMaW5rY29sb3J8Ym92ZSl8cig/OmlnaHQoPzpDb250ZXh0KT98ZSg/OnNwb25zZSg/OlhNTHxUZXh0KXxhZHlTdGF0ZSkpfGdsb2JhbHx4fG0oPzppbWVUeXBlc3x1bHRpbGluZXxlbnViYXJ8YXJnaW4oPzpSaWdodHxCb3R0b218VG9wfExlZnQpKXxMKD86Tig/OjEwfDIpfE9HKD86MTBFfDJFKSl8Yig/Om8oPzp0dG9tfHJkZXIoPzpXaWR0aHxSaWdodFdpZHRofEJvdHRvbVdpZHRofFN0eWxlfENvbG9yfFRvcFdpZHRofExlZnRXaWR0aCkpfHVmZmVyRGVwdGh8ZWxvd3xhY2tncm91bmQoPzpDb2xvcnxJbWFnZSkpKVxiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmZpcmVidWciXSxyZWdleDovKGNvbnNvbGUpKFwuKSh3YXJufGluZm98bG9nfGVycm9yfHRpbWV8dGltZUVuZHxhc3NlcnQpXGIvfSx7dG9rZW46ZnVuY3Rpb24obil7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkobik/InZhcmlhYmxlLmxhbmd1YWdlIjpyLmhhc093blByb3BlcnR5KG4pPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOnUuaGFzT3duUHJvcGVydHkobik/InN0b3JhZ2UudHlwZSI6dC5oYXNPd25Qcm9wZXJ0eShuKT8ia2V5d29yZCI6YS5oYXNPd25Qcm9wZXJ0eShuKT8iY29uc3RhbnQubGFuZ3VhZ2UiOmYuaGFzT3duUHJvcGVydHkobik/ImludmFsaWQuaWxsZWdhbCI6bj09ImRlYnVnZ2VyIj8iaW52YWxpZC5kZXByZWNhdGVkIjoiaWRlbnRpZmllciJ9LHJlZ2V4Omx9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6LyF8XCR8JXwmfFwqfFwtXC18XC18XCtcK3xcK3x+fD09PXw9PXw9fCE9fCE9PXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XHxcfHxcP1w6fFwqPXwlPXxcKz18XC09fCY9fFxePXxcYig/OmlufGluc3RhbmNlb2Z8bmV3fGRlbGV0ZXx0eXBlb2Z8dm9pZCkvLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDovXD98XDp8XCx8XDt8XC4vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6L1tcWyh7XS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDovW1xdKX1dL30se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovXC89Py8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6L14jIS4qJC99LHt0b2tlbjoidGV4dCIscmVnZXg6L1xzKy99XSxyZWdleF9hbGxvd2VkOltvLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50X3JlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJcXC8iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4Olt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiIvXFx3KiIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbXlxcXFwvXFxbXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXFxbIixuZXh0OiJyZWdleF9jaGFyYWN0ZXJfY2xhc3MiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleF9jaGFyYWN0ZXJfY2xhc3M6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJdIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJbXlxcXFxcXF1dKyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGZ1bmN0aW9uX2FyZ3VtZW50czpbe3Rva2VuOiJ2YXJpYWJsZS5wYXJhbWV0ZXIiLHJlZ2V4Omx9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJbLCBdKyIsbWVyZ2U6ITB9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiIkIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sY29tbWVudF9yZWdleF9hbGxvd2VkOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scXFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpjfSx7dG9rZW46InN0cmluZyIscmVnZXg6J1teIlxcXFxdKycsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OicifCQnLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dLHFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpjfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlteJ1xcXFxdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6Iid8JCIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV19LHRoaXMuZW1iZWRSdWxlcyhvLCJkb2MtIixbby5nZXRFbmRSdWxlKCJzdGFydCIpXSl9O3IuaW5oZXJpdHMoYSx1KSx0LkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcz1hfSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMscz1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O3IuaW5oZXJpdHMocyxpKSxzLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihlKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDplfX0scy5nZXRFbmRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6ZX19LHQuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPXN9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxpPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQpe3JldHVybi9eXHMrJC8udGVzdChlKT8vXlxzKlx9Ly50ZXN0KHQpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRMaW5lKHQpLGk9bi5tYXRjaCgvXihccypcfSkvKTtpZighaSlyZXR1cm4gMDt2YXIgcz1pWzFdLmxlbmd0aCxvPWUuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnQsY29sdW1uOnN9KTtpZighb3x8by5yb3c9PXQpcmV0dXJuIDA7dmFyIHU9dGhpcy4kZ2V0SW5kZW50KGUuZ2V0TGluZShvLnJvdykpO2UucmVwbGFjZShuZXcgcih0LDAsdCxzLTEpLHUpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCgvXihccyspLyk7cmV0dXJuIHQ/dFsxXToiIn19KS5jYWxsKGkucHJvdG90eXBlKSx0Lk1hdGNoaW5nQnJhY2VPdXRkZW50PWl9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIscz1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09InsiKXt2YXIgcz1uLmdldFNlbGVjdGlvblJhbmdlKCksbz1yLmRvYy5nZXRUZXh0UmFuZ2Uocyk7cmV0dXJuIG8hPT0iIj97dGV4dDoieyIrbysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoaT09In0iKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJ9Iil7dmFyIGw9ci4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOnUuY29sdW1uKzEscm93OnUucm93fSk7aWYobCE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihpPT0iXG4iKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJ9Iil7dmFyIGM9ci5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dS5yb3csY29sdW1uOnUuY29sdW1uKzF9KTtpZighYylyZXR1cm4gbnVsbDt2YXIgaD10aGlzLmdldE5leHRMaW5lSW5kZW50KGUsYS5zdWJzdHJpbmcoMCxhLmxlbmd0aC0xKSxyLmdldFRhYlN0cmluZygpKSxwPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKGMucm93KSk7cmV0dXJue3RleHQ6IlxuIitoKyJcbiIrcCxzZWxlY3Rpb246WzEsaC5sZW5ndGgsMSxoLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSJ7Iil7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLmVuZC5jb2x1bW4saS5lbmQuY29sdW1uKzEpO2lmKHU9PSJ9IilyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSIoIil7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO3JldHVybiBvIT09IiI/e3RleHQ6IigiK28rIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGk9PSIpIil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0iKSIpe3ZhciBsPXIuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjp1LmNvbHVtbisxLHJvdzp1LnJvd30pO2lmKGwhPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcz09IigiKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09IikiKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0nIid8fGk9PSInIil7dmFyIHM9aSxvPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSx1PXIuZG9jLmdldFRleHRSYW5nZShvKTtpZih1IT09IiIpcmV0dXJue3RleHQ6cyt1K3Msc2VsZWN0aW9uOiExfTt2YXIgYT1uLmdldEN1cnNvclBvc2l0aW9uKCksZj1yLmRvYy5nZXRMaW5lKGEucm93KSxsPWYuc3Vic3RyaW5nKGEuY29sdW1uLTEsYS5jb2x1bW4pO2lmKGw9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGM9ci5nZXRUb2tlbnMoby5zdGFydC5yb3cpLGg9MCxwLGQ9LTE7Zm9yKHZhciB2PTA7djxjLmxlbmd0aDt2Kyspe3A9Y1t2XSxwLnR5cGU9PSJzdHJpbmciP2Q9LTE6ZDwwJiYoZD1wLnZhbHVlLmluZGV4T2YocykpO2lmKHAudmFsdWUubGVuZ3RoK2g+by5zdGFydC5jb2x1bW4pYnJlYWs7aCs9Y1t2XS52YWx1ZS5sZW5ndGh9aWYoIXB8fGQ8MCYmcC50eXBlIT09ImNvbW1lbnQiJiYocC50eXBlIT09InN0cmluZyJ8fG8uc3RhcnQuY29sdW1uIT09cC52YWx1ZS5sZW5ndGgraC0xJiZwLnZhbHVlLmxhc3RJbmRleE9mKHMpPT09cC52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6cytzLHNlbGVjdGlvbjpbMSwxXX07aWYocCYmcC50eXBlPT09InN0cmluZyIpe3ZhciBtPWYuc3Vic3RyaW5nKGEuY29sdW1uLGEuY29sdW1uKzEpO2lmKG09PXMpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJihzPT0nIid8fHM9PSInIikpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5zdGFydC5jb2x1bW4rMSxpLnN0YXJ0LmNvbHVtbisyKTtpZih1PT0nIicpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSl9O3IuaW5oZXJpdHMocyxpKSx0LkNzdHlsZUJlaGF2aW91cj1zfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxzPWUoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsbz10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtyLmluaGVyaXRzKG8scyksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pLHM9ci5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleDtpZihzWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soZSxzWzFdLG4sbyk7dmFyIHU9ZS5nZXRDb21tZW50Rm9sZFJhbmdlKG4sbytzWzBdLmxlbmd0aCk7cmV0dXJuIHUuZW5kLmNvbHVtbi09Mix1fWlmKHQhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIHM9ci5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihzKXt2YXIgbz1zLmluZGV4K3NbMF0ubGVuZ3RoO2lmKHNbMl0pe3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8pO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX12YXIgYT17cm93Om4sY29sdW1uOm99LGY9ZS4kZmluZE9wZW5pbmdCcmFja2V0KHNbMV0sYSk7aWYoIWYpcmV0dXJuO3JldHVybiBmLmNvbHVtbisrLGEuY29sdW1uLS0saS5mcm9tUG9pbnRzKGYsYSl9fX0uY2FsbChvLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2UsaT10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChyKT8ic3RhcnQiOnQ9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3Qocik/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT0vXFMvLHM9ZS5nZXRMaW5lKHQpLG89cy5zZWFyY2goaSk7aWYobz09LTEpcmV0dXJuO3ZhciB1PW58fHMubGVuZ3RoLGE9ZS5nZXRMZW5ndGgoKSxmPXQsbD10O3doaWxlKCsrdDxhKXt2YXIgYz1lLmdldExpbmUodCkuc2VhcmNoKGkpO2lmKGM9PS0xKWNvbnRpbnVlO2lmKGM8PW8pYnJlYWs7bD10fWlmKGw+Zil7dmFyIGg9ZS5nZXRMaW5lKGwpLmxlbmd0aDtyZXR1cm4gbmV3IHIoZix1LGwsaCl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oZSx0LG4saSxzKXt2YXIgbz17cm93Om4sY29sdW1uOmkrMX0sdT1lLiRmaW5kQ2xvc2luZ0JyYWNrZXQodCxvLHMpO2lmKCF1KXJldHVybjt2YXIgYT1lLmZvbGRXaWRnZXRzW3Uucm93XTtyZXR1cm4gYT09bnVsbCYmKGE9dGhpcy5nZXRGb2xkV2lkZ2V0KGUsdS5yb3cpKSxhPT0ic3RhcnQiJiZ1LnJvdz5vLnJvdyYmKHUucm93LS0sdS5jb2x1bW49ZS5nZXRMaW5lKHUucm93KS5sZW5ndGgpLHIuZnJvbVBvaW50cyhvLHUpfX0pLmNhbGwoaS5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9jc3MiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvY3NzX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2Uvd29ya2VyL3dvcmtlcl9jbGllbnQiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9jc3NfaGlnaGxpZ2h0X3J1bGVzIikuQ3NzSGlnaGxpZ2h0UnVsZXMsdT1lKCIuL21hdGNoaW5nX2JyYWNlX291dGRlbnQiKS5NYXRjaGluZ0JyYWNlT3V0ZGVudCxhPWUoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGY9ZSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGw9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpLCJpIiksdGhpcy4kb3V0ZGVudD1uZXcgdSx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgZn07ci5pbmhlcml0cyhsLGkpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nUnVsZXM9ImNTdHlsZSIsdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy4kZ2V0SW5kZW50KHQpLGk9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnModCxlKS50b2tlbnM7aWYoaS5sZW5ndGgmJmlbaS5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiByO3ZhciBzPXQubWF0Y2goL14uKlx7XHMqJC8pO3JldHVybiBzJiYocis9bikscn0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudCh0LG4pfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KHQsbil9LHRoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBhKFsiYWNlIl0sImFjZS9tb2RlL2Nzc193b3JrZXIiLCJXb3JrZXIiKTtyZXR1cm4gdC5hdHRhY2hUb0RvY3VtZW50KGUuZ2V0RG9jdW1lbnQoKSksdC5vbigiY3NzbGludCIsZnVuY3Rpb24odCl7dmFyIG49W107dC5kYXRhLmZvckVhY2goZnVuY3Rpb24oZSl7bi5wdXNoKHtyb3c6ZS5saW5lLTEsY29sdW1uOmUuY29sLTEsdGV4dDplLm1lc3NhZ2UsdHlwZTplLnR5cGUsbGludDplfSl9KSxlLnNldEFubm90YXRpb25zKG4pfSksdH19LmNhbGwobC5wcm90b3R5cGUpLHQuTW9kZT1sfSksZGVmaW5lKCJhY2UvbW9kZS9jc3NfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi9saWIvbGFuZyIpLHM9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxvPWZ1bmN0aW9uKCl7dmFyIGU9aS5hcnJheVRvTWFwKCJhbmltYXRpb24tZmlsbC1tb2RlfGFsaWdubWVudC1hZGp1c3R8YWxpZ25tZW50LWJhc2VsaW5lfGFuaW1hdGlvbi1kZWxheXxhbmltYXRpb24tZGlyZWN0aW9ufGFuaW1hdGlvbi1kdXJhdGlvbnxhbmltYXRpb24taXRlcmF0aW9uLWNvdW50fGFuaW1hdGlvbi1uYW1lfGFuaW1hdGlvbi1wbGF5LXN0YXRlfGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb258YW5pbWF0aW9ufGFwcGVhcmFuY2V8YXppbXV0aHxiYWNrZmFjZS12aXNpYmlsaXR5fGJhY2tncm91bmQtYXR0YWNobWVudHxiYWNrZ3JvdW5kLWJyZWFrfGJhY2tncm91bmQtY2xpcHxiYWNrZ3JvdW5kLWNvbG9yfGJhY2tncm91bmQtaW1hZ2V8YmFja2dyb3VuZC1vcmlnaW58YmFja2dyb3VuZC1wb3NpdGlvbnxiYWNrZ3JvdW5kLXJlcGVhdHxiYWNrZ3JvdW5kLXNpemV8YmFja2dyb3VuZHxiYXNlbGluZS1zaGlmdHxiaW5kaW5nfGJsZWVkfGJvb2ttYXJrLWxhYmVsfGJvb2ttYXJrLWxldmVsfGJvb2ttYXJrLXN0YXRlfGJvb2ttYXJrLXRhcmdldHxib3JkZXItYm90dG9tfGJvcmRlci1ib3R0b20tY29sb3J8Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1c3xib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1c3xib3JkZXItYm90dG9tLXN0eWxlfGJvcmRlci1ib3R0b20td2lkdGh8Ym9yZGVyLWNvbGxhcHNlfGJvcmRlci1jb2xvcnxib3JkZXItaW1hZ2V8Ym9yZGVyLWltYWdlLW91dHNldHxib3JkZXItaW1hZ2UtcmVwZWF0fGJvcmRlci1pbWFnZS1zbGljZXxib3JkZXItaW1hZ2Utc291cmNlfGJvcmRlci1pbWFnZS13aWR0aHxib3JkZXItbGVmdHxib3JkZXItbGVmdC1jb2xvcnxib3JkZXItbGVmdC1zdHlsZXxib3JkZXItbGVmdC13aWR0aHxib3JkZXItcmFkaXVzfGJvcmRlci1yaWdodHxib3JkZXItcmlnaHQtY29sb3J8Ym9yZGVyLXJpZ2h0LXN0eWxlfGJvcmRlci1yaWdodC13aWR0aHxib3JkZXItc3BhY2luZ3xib3JkZXItc3R5bGV8Ym9yZGVyLXRvcHxib3JkZXItdG9wLWNvbG9yfGJvcmRlci10b3AtbGVmdC1yYWRpdXN8Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXN8Ym9yZGVyLXRvcC1zdHlsZXxib3JkZXItdG9wLXdpZHRofGJvcmRlci13aWR0aHxib3JkZXJ8Ym90dG9tfGJveC1hbGlnbnxib3gtZGVjb3JhdGlvbi1icmVha3xib3gtZGlyZWN0aW9ufGJveC1mbGV4LWdyb3VwfGJveC1mbGV4fGJveC1saW5lc3xib3gtb3JkaW5hbC1ncm91cHxib3gtb3JpZW50fGJveC1wYWNrfGJveC1zaGFkb3d8Ym94LXNpemluZ3xicmVhay1hZnRlcnxicmVhay1iZWZvcmV8YnJlYWstaW5zaWRlfGNhcHRpb24tc2lkZXxjbGVhcnxjbGlwfGNvbG9yLXByb2ZpbGV8Y29sb3J8Y29sdW1uLWNvdW50fGNvbHVtbi1maWxsfGNvbHVtbi1nYXB8Y29sdW1uLXJ1bGV8Y29sdW1uLXJ1bGUtY29sb3J8Y29sdW1uLXJ1bGUtc3R5bGV8Y29sdW1uLXJ1bGUtd2lkdGh8Y29sdW1uLXNwYW58Y29sdW1uLXdpZHRofGNvbHVtbnN8Y29udGVudHxjb3VudGVyLWluY3JlbWVudHxjb3VudGVyLXJlc2V0fGNyb3B8Y3VlLWFmdGVyfGN1ZS1iZWZvcmV8Y3VlfGN1cnNvcnxkaXJlY3Rpb258ZGlzcGxheXxkb21pbmFudC1iYXNlbGluZXxkcm9wLWluaXRpYWwtYWZ0ZXItYWRqdXN0fGRyb3AtaW5pdGlhbC1hZnRlci1hbGlnbnxkcm9wLWluaXRpYWwtYmVmb3JlLWFkanVzdHxkcm9wLWluaXRpYWwtYmVmb3JlLWFsaWdufGRyb3AtaW5pdGlhbC1zaXplfGRyb3AtaW5pdGlhbC12YWx1ZXxlbGV2YXRpb258ZW1wdHktY2VsbHN8Zml0fGZpdC1wb3NpdGlvbnxmbG9hdC1vZmZzZXR8ZmxvYXR8Zm9udC1mYW1pbHl8Zm9udC1zaXplfGZvbnQtc2l6ZS1hZGp1c3R8Zm9udC1zdHJldGNofGZvbnQtc3R5bGV8Zm9udC12YXJpYW50fGZvbnQtd2VpZ2h0fGZvbnR8Z3JpZC1jb2x1bW5zfGdyaWQtcm93c3xoYW5naW5nLXB1bmN0dWF0aW9ufGhlaWdodHxoeXBoZW5hdGUtYWZ0ZXJ8aHlwaGVuYXRlLWJlZm9yZXxoeXBoZW5hdGUtY2hhcmFjdGVyfGh5cGhlbmF0ZS1saW5lc3xoeXBoZW5hdGUtcmVzb3VyY2V8aHlwaGVuc3xpY29ufGltYWdlLW9yaWVudGF0aW9ufGltYWdlLXJlbmRlcmluZ3xpbWFnZS1yZXNvbHV0aW9ufGlubGluZS1ib3gtYWxpZ258bGVmdHxsZXR0ZXItc3BhY2luZ3xsaW5lLWhlaWdodHxsaW5lLXN0YWNraW5nLXJ1Ynl8bGluZS1zdGFja2luZy1zaGlmdHxsaW5lLXN0YWNraW5nLXN0cmF0ZWd5fGxpbmUtc3RhY2tpbmd8bGlzdC1zdHlsZS1pbWFnZXxsaXN0LXN0eWxlLXBvc2l0aW9ufGxpc3Qtc3R5bGUtdHlwZXxsaXN0LXN0eWxlfG1hcmdpbi1ib3R0b218bWFyZ2luLWxlZnR8bWFyZ2luLXJpZ2h0fG1hcmdpbi10b3B8bWFyZ2lufG1hcmstYWZ0ZXJ8bWFyay1iZWZvcmV8bWFya3xtYXJrc3xtYXJxdWVlLWRpcmVjdGlvbnxtYXJxdWVlLXBsYXktY291bnR8bWFycXVlZS1zcGVlZHxtYXJxdWVlLXN0eWxlfG1heC1oZWlnaHR8bWF4LXdpZHRofG1pbi1oZWlnaHR8bWluLXdpZHRofG1vdmUtdG98bmF2LWRvd258bmF2LWluZGV4fG5hdi1sZWZ0fG5hdi1yaWdodHxuYXYtdXB8b3BhY2l0eXxvcnBoYW5zfG91dGxpbmUtY29sb3J8b3V0bGluZS1vZmZzZXR8b3V0bGluZS1zdHlsZXxvdXRsaW5lLXdpZHRofG91dGxpbmV8b3ZlcmZsb3ctc3R5bGV8b3ZlcmZsb3cteHxvdmVyZmxvdy15fG92ZXJmbG93fHBhZGRpbmctYm90dG9tfHBhZGRpbmctbGVmdHxwYWRkaW5nLXJpZ2h0fHBhZGRpbmctdG9wfHBhZGRpbmd8cGFnZS1icmVhay1hZnRlcnxwYWdlLWJyZWFrLWJlZm9yZXxwYWdlLWJyZWFrLWluc2lkZXxwYWdlLXBvbGljeXxwYWdlfHBhdXNlLWFmdGVyfHBhdXNlLWJlZm9yZXxwYXVzZXxwZXJzcGVjdGl2ZS1vcmlnaW58cGVyc3BlY3RpdmV8cGhvbmVtZXN8cGl0Y2gtcmFuZ2V8cGl0Y2h8cGxheS1kdXJpbmd8cG9zaXRpb258cHJlc2VudGF0aW9uLWxldmVsfHB1bmN0dWF0aW9uLXRyaW18cXVvdGVzfHJlbmRlcmluZy1pbnRlbnR8cmVzaXplfHJlc3QtYWZ0ZXJ8cmVzdC1iZWZvcmV8cmVzdHxyaWNobmVzc3xyaWdodHxyb3RhdGlvbi1wb2ludHxyb3RhdGlvbnxydWJ5LWFsaWdufHJ1Ynktb3Zlcmhhbmd8cnVieS1wb3NpdGlvbnxydWJ5LXNwYW58c2l6ZXxzcGVhay1oZWFkZXJ8c3BlYWstbnVtZXJhbHxzcGVhay1wdW5jdHVhdGlvbnxzcGVha3xzcGVlY2gtcmF0ZXxzdHJlc3N8c3RyaW5nLXNldHx0YWJsZS1sYXlvdXR8dGFyZ2V0LW5hbWV8dGFyZ2V0LW5ld3x0YXJnZXQtcG9zaXRpb258dGFyZ2V0fHRleHQtYWxpZ24tbGFzdHx0ZXh0LWFsaWdufHRleHQtZGVjb3JhdGlvbnx0ZXh0LWVtcGhhc2lzfHRleHQtaGVpZ2h0fHRleHQtaW5kZW50fHRleHQtanVzdGlmeXx0ZXh0LW91dGxpbmV8dGV4dC1zaGFkb3d8dGV4dC10cmFuc2Zvcm18dGV4dC13cmFwfHRvcHx0cmFuc2Zvcm0tb3JpZ2lufHRyYW5zZm9ybS1zdHlsZXx0cmFuc2Zvcm18dHJhbnNpdGlvbi1kZWxheXx0cmFuc2l0aW9uLWR1cmF0aW9ufHRyYW5zaXRpb24tcHJvcGVydHl8dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb258dHJhbnNpdGlvbnx1bmljb2RlLWJpZGl8dmVydGljYWwtYWxpZ258dmlzaWJpbGl0eXx2b2ljZS1iYWxhbmNlfHZvaWNlLWR1cmF0aW9ufHZvaWNlLWZhbWlseXx2b2ljZS1waXRjaC1yYW5nZXx2b2ljZS1waXRjaHx2b2ljZS1yYXRlfHZvaWNlLXN0cmVzc3x2b2ljZS12b2x1bWV8dm9sdW1lfHdoaXRlLXNwYWNlLWNvbGxhcHNlfHdoaXRlLXNwYWNlfHdpZG93c3x3aWR0aHx3b3JkLWJyZWFrfHdvcmQtc3BhY2luZ3x3b3JkLXdyYXB8ei1pbmRleCIuc3BsaXQoInwiKSksdD1pLmFycmF5VG9NYXAoInJnYnxyZ2JhfHVybHxhdHRyfGNvdW50ZXJ8Y291bnRlcnMiLnNwbGl0KCJ8IikpLG49aS5hcnJheVRvTWFwKCJhYnNvbHV0ZXxhZnRlci1lZGdlfGFmdGVyfGFsbC1zY3JvbGx8YWxsfGFscGhhYmV0aWN8YWx3YXlzfGFudGlhbGlhc2VkfGFybWVuaWFufGF1dG98YXZvaWQtY29sdW1ufGF2b2lkLXBhZ2V8YXZvaWR8YmFsYW5jZXxiYXNlbGluZXxiZWZvcmUtZWRnZXxiZWZvcmV8YmVsb3d8YmlkaS1vdmVycmlkZXxibG9jay1saW5lLWhlaWdodHxibG9ja3xib2xkfGJvbGRlcnxib3JkZXItYm94fGJvdGh8Ym90dG9tfGJveHxicmVhay1hbGx8YnJlYWstd29yZHxjYXBpdGFsaXplfGNhcHMtaGVpZ2h0fGNhcHRpb258Y2VudGVyfGNlbnRyYWx8Y2hhcnxjaXJjbGV8Y2prLWlkZW9ncmFwaGljfGNsb25lfGNsb3NlLXF1b3RlfGNvbC1yZXNpemV8Y29sbGFwc2V8Y29sdW1ufGNvbnNpZGVyLXNoaWZ0c3xjb250YWlufGNvbnRlbnQtYm94fGNvdmVyfGNyb3NzaGFpcnxjdWJpYy1iZXppZXJ8ZGFzaGVkfGRlY2ltYWwtbGVhZGluZy16ZXJvfGRlY2ltYWx8ZGVmYXVsdHxkaXNhYmxlZHxkaXNjfGRpc3JlZ2FyZC1zaGlmdHN8ZGlzdHJpYnV0ZS1hbGwtbGluZXN8ZGlzdHJpYnV0ZS1sZXR0ZXJ8ZGlzdHJpYnV0ZS1zcGFjZXxkaXN0cmlidXRlfGRvdHRlZHxkb3VibGV8ZS1yZXNpemV8ZWFzZS1pbnxlYXNlLWluLW91dHxlYXNlLW91dHxlYXNlfGVsbGlwc2lzfGVuZHxleGNsdWRlLXJ1Ynl8ZmlsbHxmaXhlZHxmb250LXNpemV8Zm9udHxnZW9yZ2lhbnxnbHlwaHN8Z3JpZC1oZWlnaHR8Z3Jvb3ZlfGhhbmR8aGFuZ2luZ3xoZWJyZXd8aGVscHxoaWRkZW58aGlyYWdhbmEtaXJvaGF8aGlyYWdhbmF8aG9yaXpvbnRhbHxpY29ufGlkZW9ncmFwaC1hbHBoYXxpZGVvZ3JhcGgtbnVtZXJpY3xpZGVvZ3JhcGgtcGFyZW50aGVzaXN8aWRlb2dyYXBoLXNwYWNlfGlkZW9ncmFwaGljfGluYWN0aXZlfGluY2x1ZGUtcnVieXxpbmhlcml0fGluaXRpYWx8aW5saW5lLWJsb2NrfGlubGluZS1ib3h8aW5saW5lLWxpbmUtaGVpZ2h0fGlubGluZS10YWJsZXxpbmxpbmV8aW5zZXR8aW5zaWRlfGludGVyLWlkZW9ncmFwaHxpbnRlci13b3JkfGludmVydHxpdGFsaWN8anVzdGlmeXxrYXRha2FuYS1pcm9oYXxrYXRha2FuYXxrZWVwLWFsbHxsYXN0fGxlZnR8bGlnaHRlcnxsaW5lLWVkZ2V8bGluZS10aHJvdWdofGxpbmV8bGluZWFyfGxpc3QtaXRlbXxsb2NhbHxsb29zZXxsb3dlci1hbHBoYXxsb3dlci1ncmVla3xsb3dlci1sYXRpbnxsb3dlci1yb21hbnxsb3dlcmNhc2V8bHItdGJ8bHRyfG1hdGhlbWF0aWNhbHxtYXgtaGVpZ2h0fG1heC1zaXplfG1lZGl1bXxtZW51fG1lc3NhZ2UtYm94fG1pZGRsZXxtb3ZlfG4tcmVzaXplfG5lLXJlc2l6ZXxuZXdzcGFwZXJ8bm8tY2hhbmdlfG5vLWNsb3NlLXF1b3RlfG5vLWRyb3B8bm8tb3Blbi1xdW90ZXxuby1yZXBlYXR8bm9uZXxub3JtYWx8bm90LWFsbG93ZWR8bm93cmFwfG53LXJlc2l6ZXxvYmxpcXVlfG9wZW4tcXVvdGV8b3V0c2V0fG91dHNpZGV8b3ZlcmxpbmV8cGFkZGluZy1ib3h8cGFnZXxwb2ludGVyfHByZS1saW5lfHByZS13cmFwfHByZXxwcmVzZXJ2ZS0zZHxwcm9ncmVzc3xyZWxhdGl2ZXxyZXBlYXQteHxyZXBlYXQteXxyZXBlYXR8cmVwbGFjZWR8cmVzZXQtc2l6ZXxyaWRnZXxyaWdodHxyb3VuZHxyb3ctcmVzaXplfHJ0bHxzLXJlc2l6ZXxzY3JvbGx8c2UtcmVzaXplfHNlcGFyYXRlfHNsaWNlfHNtYWxsLWNhcHN8c21hbGwtY2FwdGlvbnxzb2xpZHxzcGFjZXxzcXVhcmV8c3RhcnR8c3RhdGljfHN0YXR1cy1iYXJ8c3RlcC1lbmR8c3RlcC1zdGFydHxzdGVwc3xzdHJldGNofHN0cmljdHxzdWJ8c3VwZXJ8c3ctcmVzaXplfHRhYmxlLWNhcHRpb258dGFibGUtY2VsbHx0YWJsZS1jb2x1bW4tZ3JvdXB8dGFibGUtY29sdW1ufHRhYmxlLWZvb3Rlci1ncm91cHx0YWJsZS1oZWFkZXItZ3JvdXB8dGFibGUtcm93LWdyb3VwfHRhYmxlLXJvd3x0YWJsZXx0Yi1ybHx0ZXh0LWFmdGVyLWVkZ2V8dGV4dC1iZWZvcmUtZWRnZXx0ZXh0LWJvdHRvbXx0ZXh0LXNpemV8dGV4dC10b3B8dGV4dHx0aGlja3x0aGlufHRvcHx0cmFuc3BhcmVudHx1bmRlcmxpbmV8dXBwZXItYWxwaGF8dXBwZXItbGF0aW58dXBwZXItcm9tYW58dXBwZXJjYXNlfHVzZS1zY3JpcHR8dmVydGljYWwtaWRlb2dyYXBoaWN8dmVydGljYWwtdGV4dHx2aXNpYmxlfHctcmVzaXplfHdhaXR8d2hpdGVzcGFjZXx6LWluZGV4fHplcm8iLnNwbGl0KCJ8IikpLHI9aS5hcnJheVRvTWFwKCJhcXVhfGJsYWNrfGJsdWV8ZnVjaHNpYXxncmF5fGdyZWVufGxpbWV8bWFyb29ufG5hdnl8b2xpdmV8b3JhbmdlfHB1cnBsZXxyZWR8c2lsdmVyfHRlYWx8d2hpdGV8eWVsbG93Ii5zcGxpdCgifCIpKSxzPWkuYXJyYXlUb01hcCgiYXJpYWx8Y2VudHVyeXxjb21pY3xjb3VyaWVyfGdhcmFtb25kfGdlb3JnaWF8aGVsdmV0aWNhfGltcGFjdHxsdWNpZGF8c3ltYm9sfHN5c3RlbXx0YWhvbWF8dGltZXN8dHJlYnVjaGV0fHV0b3BpYXx2ZXJkYW5hfHdlYmRpbmdzfHNhbnMtc2VyaWZ8c2VyaWZ8bW9ub3NwYWNlIi5zcGxpdCgifCIpKSxvPSJcXC0/KD86KD86WzAtOV0rKXwoPzpbMC05XSpcXC5bMC05XSspKSIsdT0iKFxcOispXFxiKGFmdGVyfGJlZm9yZXxmaXJzdC1sZXR0ZXJ8Zmlyc3QtbGluZXxtb3otc2VsZWN0aW9ufHNlbGVjdGlvbilcXGIiLGE9Iig6KVxcYihhY3RpdmV8Y2hlY2tlZHxkaXNhYmxlZHxlbXB0eXxlbmFibGVkfGZpcnN0LWNoaWxkfGZpcnN0LW9mLXR5cGV8Zm9jdXN8aG92ZXJ8aW5kZXRlcm1pbmF0ZXxpbnZhbGlkfGxhc3QtY2hpbGR8bGFzdC1vZi10eXBlfGxpbmt8bm90fG50aC1jaGlsZHxudGgtbGFzdC1jaGlsZHxudGgtbGFzdC1vZi10eXBlfG50aC1vZi10eXBlfG9ubHktY2hpbGR8b25seS1vZi10eXBlfHJlcXVpcmVkfHJvb3R8dGFyZ2V0fHZhbGlkfHZpc2l0ZWQpXFxiIixmPVt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6InJ1bGVzZXRfY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjpbImNvbnN0YW50Lm51bWVyaWMiLCJrZXl3b3JkIl0scmVnZXg6IigiK28rIikoY2h8Y218ZGVnfGVtfGV4fGZyfGdkfGdyYWR8SHp8aW58a0h6fG1tfG1zfHBjfHB0fHB4fHJhZHxyZW18c3x0dXJufHZofHZtfHZ3fCUpIn0se3Rva2VuOlsiY29uc3RhbnQubnVtZXJpYyJdLHJlZ2V4OiIoWzAtOV0rKSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IiNbYS1mMC05XXs2fSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IiNbYS1mMC05XXszfSJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uIiwiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lLnBzZXVkby1lbGVtZW50LmNzcyJdLHJlZ2V4OnV9LHt0b2tlbjpbInB1bmN0dWF0aW9uIiwiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lLnBzZXVkby1jbGFzcy5jc3MiXSxyZWdleDphfSx7dG9rZW46ZnVuY3Rpb24oaSl7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkoaS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC50eXBlIjp0Lmhhc093blByb3BlcnR5KGkudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuZnVuY3Rpb24iOm4uaGFzT3duUHJvcGVydHkoaS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC5jb25zdGFudCI6ci5oYXNPd25Qcm9wZXJ0eShpLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50LmNvbG9yIjpzLmhhc093blByb3BlcnR5KGkudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuY29uc3RhbnQuZm9udHMiOiJ0ZXh0In0scmVnZXg6IlxcLT9bYS16QS1aX11bYS16QS1aMC05X1xcLV0qIn1dLGw9aS5jb3B5QXJyYXkoZik7bC51bnNoaWZ0KHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiXFx9IixuZXh0OiJzdGFydCJ9KTt2YXIgYz1pLmNvcHlBcnJheShmKTtjLnVuc2hpZnQoe3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJcXH0iLG5leHQ6Im1lZGlhIn0pO3ZhciBoPVt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxwPWkuY29weUFycmF5KGgpO3AudW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InN0YXJ0In0pO3ZhciBkPWkuY29weUFycmF5KGgpO2QudW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6Im1lZGlhIn0pO3ZhciB2PWkuY29weUFycmF5KGgpO3YudW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InJ1bGVzZXQifSksdGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IlxceyIsbmV4dDoicnVsZXNldCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiQC4qP3siLG5leHQ6Im1lZGlhIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiI1thLXowLTktX10rIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlxcLlthLXowLTktX10rIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiI6W2EtejAtOS1fXSsifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiW2EtejAtOS1fXSsifV0sbWVkaWE6W3t0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoibWVkaWFfY29tbWVudCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiXFx7IixuZXh0OiJtZWRpYV9ydWxlc2V0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXH0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiI1thLXowLTktX10rIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlxcLlthLXowLTktX10rIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiI6W2EtejAtOS1fXSsifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiW2EtejAtOS1fXSsifV0sY29tbWVudDpwLHJ1bGVzZXQ6bCxydWxlc2V0X2NvbW1lbnQ6dixtZWRpYV9ydWxlc2V0OmMsbWVkaWFfY29tbWVudDpkfX07ci5pbmhlcml0cyhvLHMpLHQuQ3NzSGlnaGxpZ2h0UnVsZXM9b30pLGRlZmluZSgiYWNlL21vZGUvaHRtbF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2Nzc19oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3htbF91dGlsIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi9jc3NfaGlnaGxpZ2h0X3J1bGVzIikuQ3NzSGlnaGxpZ2h0UnVsZXMscz1lKCIuL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIikuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzLG89ZSgiLi94bWxfdXRpbCIpLHU9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxhPXthOiJhbmNob3IiLGJ1dHRvbjoiZm9ybSIsZm9ybToiZm9ybSIsaW1nOiJpbWFnZSIsaW5wdXQ6ImZvcm0iLGxhYmVsOiJmb3JtIixzY3JpcHQ6InNjcmlwdCIsc2VsZWN0OiJmb3JtIix0ZXh0YXJlYToiZm9ybSIsc3R5bGU6InN0eWxlIix0YWJsZToidGFibGUiLHRib2R5OiJ0YWJsZSIsdGQ6InRhYmxlIix0Zm9vdDoidGFibGUiLHRoOiJ0YWJsZSIsdHI6InRhYmxlIn0sZj1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJ0ZXh0IixtZXJnZTohMCxyZWdleDoiPFxcIVxcW0NEQVRBXFxbIixuZXh0OiJjZGF0YSJ9LHt0b2tlbjoieG1sX3BlIixyZWdleDoiPFxcPy4qP1xcPz4ifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiI8XFwhLS0iLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXCEuKj8+In0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjwoPz1zKnNjcmlwdFxcYikiLG5leHQ6InNjcmlwdCJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8KD89cypzdHlsZVxcYikiLG5leHQ6InN0eWxlIn0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjxcXC8/IixuZXh0OiJ0YWcifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb25zdGFudC5jaGFyYWN0ZXIuZW50aXR5IixyZWdleDoiKD86JiNbMC05XSs7KXwoPzomI3hbMC05YS1mQS1GXSs7KXwoPzomW2EtekEtWjAtOV86XFwuLV0rOykifSx7dG9rZW46InRleHQiLHJlZ2V4OiJbXjxdKyJ9XSxjZGF0YTpbe3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxdXFxdPiIsbmV4dDoic3RhcnQifSx7dG9rZW46InRleHQiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJ0ZXh0IixtZXJnZTohMCxyZWdleDoiLisifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/LS0+IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfSxvLnRhZyh0aGlzLiRydWxlcywidGFnIiwic3RhcnQiLGEpLG8udGFnKHRoaXMuJHJ1bGVzLCJzdHlsZSIsImNzcy1zdGFydCIsYSksby50YWcodGhpcy4kcnVsZXMsInNjcmlwdCIsImpzLXN0YXJ0IixhKSx0aGlzLmVtYmVkUnVsZXMocywianMtIixbe3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiooPz08XFwvc2NyaXB0PikiLG5leHQ6InRhZyJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvKD89c2NyaXB0KSIsbmV4dDoidGFnIn1dKSx0aGlzLmVtYmVkUnVsZXMoaSwiY3NzLSIsW3t0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvKD89c3R5bGUpIixuZXh0OiJ0YWcifV0pfTtyLmluaGVyaXRzKGYsdSksdC5IdG1sSGlnaGxpZ2h0UnVsZXM9Zn0pLGRlZmluZSgiYWNlL21vZGUveG1sX3V0aWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXtyZXR1cm5be3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciLio/Iid9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDonWyJdLionLG5leHQ6ZSsiX3Fxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInLio/JyJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiWyddLioiLG5leHQ6ZSsiX3FzdHJpbmcifV19ZnVuY3Rpb24gaShlLHQpe3JldHVyblt7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4qPyIrZSxuZXh0OnR9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV19dC50YWc9ZnVuY3Rpb24oZSx0LG4scyl7ZVt0XT1be3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjpmdW5jdGlvbihlKXtyZXR1cm4gcyYmc1tlXT8ibWV0YS50YWcudGFnLW5hbWUuIitzW2VdOiJtZXRhLnRhZy50YWctbmFtZSJ9LG1lcmdlOiEwLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsiLG5leHQ6dCsiX2VtYmVkX2F0dHJpYnV0ZV9saXN0In0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDp0KyJfZW1iZWRfYXR0cmlidXRlX2xpc3QifV0sZVt0KyJfcXN0cmluZyJdPWkoIiciLHQrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCIpLGVbdCsiX3Fxc3RyaW5nIl09aSgnIicsdCsiX2VtYmVkX2F0dHJpYnV0ZV9saXN0IiksZVt0KyJfZW1iZWRfYXR0cmlidXRlX2xpc3QiXT1be3Rva2VuOiJtZXRhLnRhZyIsbWVyZ2U6ITAscmVnZXg6Ii8/PiIsbmV4dDpufSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiI9In0se3Rva2VuOiJlbnRpdHkub3RoZXIuYXR0cmlidXRlLW5hbWUiLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0uY29uY2F0KHIodCkpfX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL2h0bWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ci94bWwiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIiwiYWNlL3Rva2VuX2l0ZXJhdG9yIl0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIGEoZSx0KXt2YXIgbj0hMCxyPWUudHlwZS5zcGxpdCgiLiIpLGk9dC5zcGxpdCgiLiIpO3JldHVybiBpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoci5pbmRleE9mKGUpPT0tMSlyZXR1cm4gbj0hMSwhMX0pLG59dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vYmVoYXZpb3VyL3htbCIpLlhtbEJlaGF2aW91cixzPWUoIi4vY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLG89ZSgiLi4vLi4vdG9rZW5faXRlcmF0b3IiKS5Ub2tlbkl0ZXJhdG9yLHU9WyJhcmVhIiwiYmFzZSIsImJyIiwiY29sIiwiY29tbWFuZCIsImVtYmVkIiwiaHIiLCJpbWciLCJpbnB1dCIsImtleWdlbiIsImxpbmsiLCJtZXRhIiwicGFyYW0iLCJzb3VyY2UiLCJ0cmFjayIsIndiciJdLGY9ZnVuY3Rpb24oKXt0aGlzLmluaGVyaXQoaSksdGhpcy5hZGQoImF1dG9jbG9zaW5nIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSI+Iil7dmFyIHM9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGY9bmV3IG8ocixzLnJvdyxzLmNvbHVtbiksbD1mLmdldEN1cnJlbnRUb2tlbigpLGM9ITE7aWYoIWx8fCFhKGwsIm1ldGEudGFnIikmJighYShsLCJ0ZXh0Iil8fCFsLnZhbHVlLm1hdGNoKCIvIikpKXtkbyBsPWYuc3RlcEJhY2t3YXJkKCk7d2hpbGUobCYmKGEobCwic3RyaW5nIil8fGEobCwia2V5d29yZC5vcGVyYXRvciIpfHxhKGwsImVudGl0eS5hdHRyaWJ1dGUtbmFtZSIpfHxhKGwsInRleHQiKSkpfWVsc2UgYz0hMDtpZighbHx8IWEobCwibWV0YS50YWctbmFtZSIpfHxmLnN0ZXBCYWNrd2FyZCgpLnZhbHVlLm1hdGNoKCIvIikpcmV0dXJuO3ZhciBoPWwudmFsdWU7aWYoYyl2YXIgaD1oLnN1YnN0cmluZygwLHMuY29sdW1uLWwuc3RhcnQpO2lmKHUuaW5kZXhPZihoKSE9PS0xKXJldHVybjtyZXR1cm57dGV4dDoiPjwvIitoKyI+IixzZWxlY3Rpb246WzEsMV19fX0pfTtyLmluaGVyaXRzKGYsaSksdC5IdG1sQmVoYXZpb3VyPWZ9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci94bWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvdG9rZW5faXRlcmF0b3IiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gdShlLHQpe3ZhciBuPSEwLHI9ZS50eXBlLnNwbGl0KCIuIiksaT10LnNwbGl0KCIuIik7cmV0dXJuIGkuZm9yRWFjaChmdW5jdGlvbihlKXtpZihyLmluZGV4T2YoZSk9PS0xKXJldHVybiBuPSExLCExfSksbn12YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIscz1lKCIuL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixvPWUoIi4uLy4uL3Rva2VuX2l0ZXJhdG9yIikuVG9rZW5JdGVyYXRvcixhPWZ1bmN0aW9uKCl7dGhpcy5pbmhlcml0KHMsWyJzdHJpbmdfZHF1b3RlcyJdKSx0aGlzLmFkZCgiYXV0b2Nsb3NpbmciLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09Ij4iKXt2YXIgcz1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1uZXcgbyhyLHMucm93LHMuY29sdW1uKSxmPWEuZ2V0Q3VycmVudFRva2VuKCksbD0hMTtpZighZnx8IXUoZiwibWV0YS50YWciKSYmKCF1KGYsInRleHQiKXx8IWYudmFsdWUubWF0Y2goIi8iKSkpe2RvIGY9YS5zdGVwQmFja3dhcmQoKTt3aGlsZShmJiYodShmLCJzdHJpbmciKXx8dShmLCJrZXl3b3JkLm9wZXJhdG9yIil8fHUoZiwiZW50aXR5LmF0dHJpYnV0ZS1uYW1lIil8fHUoZiwidGV4dCIpKSl9ZWxzZSBsPSEwO2lmKCFmfHwhdShmLCJtZXRhLnRhZy1uYW1lIil8fGEuc3RlcEJhY2t3YXJkKCkudmFsdWUubWF0Y2goIi8iKSlyZXR1cm47dmFyIGM9Zi52YWx1ZTtpZihsKXZhciBjPWMuc3Vic3RyaW5nKDAscy5jb2x1bW4tZi5zdGFydCk7cmV0dXJue3RleHQ6Ij48LyIrYysiPiIsc2VsZWN0aW9uOlsxLDFdfX19KSx0aGlzLmFkZCgiYXV0b2luZGVudCIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iXG4iKXt2YXIgcz1uLmdldEN1cnNvclBvc2l0aW9uKCksbz1yLmRvYy5nZXRMaW5lKHMucm93KSx1PW8uc3Vic3RyaW5nKHMuY29sdW1uLHMuY29sdW1uKzIpO2lmKHU9PSI8LyIpe3ZhciBhPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKHMucm93KSkrci5nZXRUYWJTdHJpbmcoKSxmPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKHMucm93KSk7cmV0dXJue3RleHQ6IlxuIithKyJcbiIrZixzZWxlY3Rpb246WzEsYS5sZW5ndGgsMSxhLmxlbmd0aF19fX19KX07ci5pbmhlcml0cyhhLGkpLHQuWG1sQmVoYXZpb3VyPWF9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvaHRtbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvZm9sZGluZy9taXhlZCIsImFjZS9tb2RlL2ZvbGRpbmcveG1sIiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi9taXhlZCIpLkZvbGRNb2RlLHM9ZSgiLi94bWwiKS5Gb2xkTW9kZSxvPWUoIi4vY3N0eWxlIikuRm9sZE1vZGUsdT10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7aS5jYWxsKHRoaXMsbmV3IHMoe2FyZWE6MSxiYXNlOjEsYnI6MSxjb2w6MSxjb21tYW5kOjEsZW1iZWQ6MSxocjoxLGltZzoxLGlucHV0OjEsa2V5Z2VuOjEsbGluazoxLG1ldGE6MSxwYXJhbToxLHNvdXJjZToxLHRyYWNrOjEsd2JyOjEsbGk6MSxkdDoxLGRkOjEscDoxLHJ0OjEscnA6MSxvcHRncm91cDoxLG9wdGlvbjoxLGNvbGdyb3VwOjEsdGQ6MSx0aDoxfSkseyJqcy0iOm5ldyBvLCJjc3MtIjpuZXcgb30pfTtyLmluaGVyaXRzKHUsaSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvbWl4ZWQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUscz10LkZvbGRNb2RlPWZ1bmN0aW9uKGUsdCl7dGhpcy5kZWZhdWx0TW9kZT1lLHRoaXMuc3ViTW9kZXM9dH07ci5pbmhlcml0cyhzLGkpLGZ1bmN0aW9uKCl7dGhpcy4kZ2V0TW9kZT1mdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gdGhpcy5zdWJNb2RlcylpZihlLmluZGV4T2YodCk9PT0wKXJldHVybiB0aGlzLnN1Yk1vZGVzW3RdO3JldHVybiBudWxsfSx0aGlzLiR0cnlNb2RlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRoaXMuJGdldE1vZGUoZSk7cmV0dXJuIGk/aS5nZXRGb2xkV2lkZ2V0KHQsbixyKToiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy4kdHJ5TW9kZShlLmdldFN0YXRlKG4tMSksZSx0LG4pfHx0aGlzLiR0cnlNb2RlKGUuZ2V0U3RhdGUobiksZSx0LG4pfHx0aGlzLmRlZmF1bHRNb2RlLmdldEZvbGRXaWRnZXQoZSx0LG4pfSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy4kZ2V0TW9kZShlLmdldFN0YXRlKG4tMSkpO2lmKCFyfHwhci5nZXRGb2xkV2lkZ2V0KGUsdCxuKSlyPXRoaXMuJGdldE1vZGUoZS5nZXRTdGF0ZShuKSk7aWYoIXJ8fCFyLmdldEZvbGRXaWRnZXQoZSx0LG4pKXI9dGhpcy5kZWZhdWx0TW9kZTtyZXR1cm4gci5nZXRGb2xkV2lkZ2V0UmFuZ2UoZSx0LG4pfX0uY2FsbChzLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcveG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsImFjZS90b2tlbl9pdGVyYXRvciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi8uLi9saWIvbGFuZyIpLHM9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxvPWUoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsdT1lKCIuLi8uLi90b2tlbl9pdGVyYXRvciIpLlRva2VuSXRlcmF0b3IsYT10LkZvbGRNb2RlPWZ1bmN0aW9uKGUpe28uY2FsbCh0aGlzKSx0aGlzLnZvaWRFbGVtZW50cz1lfHx7fX07ci5pbmhlcml0cyhhLG8pLGZ1bmN0aW9uKCl7dGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9nZXRGaXJzdFRhZ0luTGluZShlLG4pO3JldHVybiByLmNsb3Npbmc/dD09Im1hcmtiZWdpbmVuZCI/ImVuZCI6IiI6IXIudGFnTmFtZXx8dGhpcy52b2lkRWxlbWVudHNbci50YWdOYW1lLnRvTG93ZXJDYXNlKCldPyIiOnIuc2VsZkNsb3Npbmc/IiI6ci52YWx1ZS5pbmRleE9mKCIvIityLnRhZ05hbWUpIT09LTE/IiI6InN0YXJ0In0sdGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldFRva2Vucyh0KSxyPSIiO2Zvcih2YXIgcz0wO3M8bi5sZW5ndGg7cysrKXt2YXIgbz1uW3NdO28udHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MD9yKz1vLnZhbHVlOnIrPWkuc3RyaW5nUmVwZWF0KCIgIixvLnZhbHVlLmxlbmd0aCl9cmV0dXJuIHRoaXMuX3BhcnNlVGFnKHIpfSx0aGlzLnRhZ1JlPS9eKFxzKikoPD8oXC8/KShbLV9hLXpBLVowLTk6IV0qKVxzKihcLz8pPj8pLyx0aGlzLl9wYXJzZVRhZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnRhZ1JlLmV4ZWMoZSksbj10aGlzLnRhZ1JlLmxhc3RJbmRleHx8MDtyZXR1cm4gdGhpcy50YWdSZS5sYXN0SW5kZXg9MCx7dmFsdWU6ZSxtYXRjaDp0P3RbMl06IiIsY2xvc2luZzp0PyEhdFszXTohMSxzZWxmQ2xvc2luZzp0PyEhdFs1XXx8dFsyXT09Ii8+IjohMSx0YWdOYW1lOnQ/dFs0XToiIixjb2x1bW46dFsxXT9uK3RbMV0ubGVuZ3RoOm59fSx0aGlzLl9yZWFkVGFnRm9yd2FyZD1mdW5jdGlvbihlKXt2YXIgdD1lLmdldEN1cnJlbnRUb2tlbigpO2lmKCF0KXJldHVybiBudWxsO3ZhciBuPSIiLHI7ZG8gaWYodC50eXBlLmluZGV4T2YoIm1ldGEudGFnIik9PT0wKXtpZighcil2YXIgcj17cm93OmUuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmUuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCl9O24rPXQudmFsdWU7aWYobi5pbmRleE9mKCI+IikhPT0tMSl7dmFyIGk9dGhpcy5fcGFyc2VUYWcobik7cmV0dXJuIGkuc3RhcnQ9cixpLmVuZD17cm93OmUuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmUuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCkrdC52YWx1ZS5sZW5ndGh9LGUuc3RlcEZvcndhcmQoKSxpfX13aGlsZSh0PWUuc3RlcEZvcndhcmQoKSk7cmV0dXJuIG51bGx9LHRoaXMuX3JlYWRUYWdCYWNrd2FyZD1mdW5jdGlvbihlKXt2YXIgdD1lLmdldEN1cnJlbnRUb2tlbigpO2lmKCF0KXJldHVybiBudWxsO3ZhciBuPSIiLHI7ZG8gaWYodC50eXBlLmluZGV4T2YoIm1ldGEudGFnIik9PT0wKXtyfHwocj17cm93OmUuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmUuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCkrdC52YWx1ZS5sZW5ndGh9KSxuPXQudmFsdWUrbjtpZihuLmluZGV4T2YoIjwiKSE9PS0xKXt2YXIgaT10aGlzLl9wYXJzZVRhZyhuKTtyZXR1cm4gaS5lbmQ9cixpLnN0YXJ0PXtyb3c6ZS5nZXRDdXJyZW50VG9rZW5Sb3coKSxjb2x1bW46ZS5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKX0sZS5zdGVwQmFja3dhcmQoKSxpfX13aGlsZSh0PWUuc3RlcEJhY2t3YXJkKCkpO3JldHVybiBudWxsfSx0aGlzLl9wb3A9ZnVuY3Rpb24oZSx0KXt3aGlsZShlLmxlbmd0aCl7dmFyIG49ZVtlLmxlbmd0aC0xXTtpZighdHx8bi50YWdOYW1lPT10LnRhZ05hbWUpcmV0dXJuIGUucG9wKCk7aWYodGhpcy52b2lkRWxlbWVudHNbdC50YWdOYW1lXSlyZXR1cm47aWYodGhpcy52b2lkRWxlbWVudHNbbi50YWdOYW1lXSl7ZS5wb3AoKTtjb250aW51ZX1yZXR1cm4gbnVsbH19LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9nZXRGaXJzdFRhZ0luTGluZShlLG4pO2lmKCFyLm1hdGNoKXJldHVybiBudWxsO3ZhciBpPXIuY2xvc2luZ3x8ci5zZWxmQ2xvc2luZyxvPVtdLGE7aWYoIWkpe3ZhciBmPW5ldyB1KGUsbixyLmNvbHVtbiksbD17cm93Om4sY29sdW1uOnIuY29sdW1uK3IudGFnTmFtZS5sZW5ndGgrMn07d2hpbGUoYT10aGlzLl9yZWFkVGFnRm9yd2FyZChmKSl7aWYoYS5zZWxmQ2xvc2luZyl7aWYoIW8ubGVuZ3RoKXJldHVybiBhLnN0YXJ0LmNvbHVtbis9YS50YWdOYW1lLmxlbmd0aCsyLGEuZW5kLmNvbHVtbi09MixzLmZyb21Qb2ludHMoYS5zdGFydCxhLmVuZCk7Y29udGludWV9aWYoYS5jbG9zaW5nKXt0aGlzLl9wb3AobyxhKTtpZihvLmxlbmd0aD09MClyZXR1cm4gcy5mcm9tUG9pbnRzKGwsYS5zdGFydCl9ZWxzZSBvLnB1c2goYSl9fWVsc2V7dmFyIGY9bmV3IHUoZSxuLHIuY29sdW1uK3IubWF0Y2gubGVuZ3RoKSxjPXtyb3c6bixjb2x1bW46ci5jb2x1bW59O3doaWxlKGE9dGhpcy5fcmVhZFRhZ0JhY2t3YXJkKGYpKXtpZihhLnNlbGZDbG9zaW5nKXtpZighby5sZW5ndGgpcmV0dXJuIGEuc3RhcnQuY29sdW1uKz1hLnRhZ05hbWUubGVuZ3RoKzIsYS5lbmQuY29sdW1uLT0yLHMuZnJvbVBvaW50cyhhLnN0YXJ0LGEuZW5kKTtjb250aW51ZX1pZighYS5jbG9zaW5nKXt0aGlzLl9wb3AobyxhKTtpZihvLmxlbmd0aD09MClyZXR1cm4gYS5zdGFydC5jb2x1bW4rPWEudGFnTmFtZS5sZW5ndGgrMixzLmZyb21Qb2ludHMoYS5zdGFydCxjKX1lbHNlIG8ucHVzaChhKX19fX0uY2FsbChhLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-java.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9qYXZhIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9qYXZhc2NyaXB0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2phdmFfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vamF2YXNjcmlwdCIpLk1vZGUscz1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsbz1lKCIuL2phdmFfaGlnaGxpZ2h0X3J1bGVzIikuSmF2YUhpZ2hsaWdodFJ1bGVzLHU9ZnVuY3Rpb24oKXtpLmNhbGwodGhpcyksdGhpcy4kdG9rZW5pemVyPW5ldyBzKChuZXcgbykuZ2V0UnVsZXMoKSl9O3IuaW5oZXJpdHModSxpKSxmdW5jdGlvbigpe3RoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsfX0uY2FsbCh1LnByb3RvdHlwZSksdC5Nb2RlPXV9KSxkZWZpbmUoImFjZS9tb2RlL2phdmFzY3JpcHQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IiwiYWNlL3JhbmdlIiwiYWNlL3dvcmtlci93b3JrZXJfY2xpZW50IiwiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dCIpLk1vZGUscz1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsbz1lKCIuL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIikuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsYT1lKCIuLi9yYW5nZSIpLlJhbmdlLGY9ZSgiLi4vd29ya2VyL3dvcmtlcl9jbGllbnQiKS5Xb3JrZXJDbGllbnQsbD1lKCIuL2JlaGF2aW91ci9jc3R5bGUiKS5Dc3R5bGVCZWhhdmlvdXIsYz1lKCIuL2ZvbGRpbmcvY3N0eWxlIikuRm9sZE1vZGUsaD1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgcygobmV3IG8pLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IHUsdGhpcy4kYmVoYXZpb3VyPW5ldyBsLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBjfTtyLmluaGVyaXRzKGgsaSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT0hMCxzPS9eKFxzKilcL1wvLztmb3IodmFyIG89bjtvPD1yO28rKylpZighcy50ZXN0KHQuZ2V0TGluZShvKSkpe2k9ITE7YnJlYWt9aWYoaSl7dmFyIHU9bmV3IGEoMCwwLDAsMCk7Zm9yKHZhciBvPW47bzw9cjtvKyspe3ZhciBmPXQuZ2V0TGluZShvKSxsPWYubWF0Y2gocyk7dS5zdGFydC5yb3c9byx1LmVuZC5yb3c9byx1LmVuZC5jb2x1bW49bFswXS5sZW5ndGgsdC5yZXBsYWNlKHUsbFsxXSl9fWVsc2UgdC5pbmRlbnRSb3dzKG4sciwiLy8iKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy4kZ2V0SW5kZW50KHQpLGk9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnModCxlKSxzPWkudG9rZW5zLG89aS5zdGF0ZTtpZihzLmxlbmd0aCYmc1tzLmxlbmd0aC0xXS50eXBlPT0iY29tbWVudCIpcmV0dXJuIHI7aWYoZT09InN0YXJ0Inx8ZT09InJlZ2V4X2FsbG93ZWQiKXt2YXIgdT10Lm1hdGNoKC9eLiooPzpcYmNhc2VcYi4qXDp8W1x7XChcW10pXHMqJC8pO3UmJihyKz1uKX1lbHNlIGlmKGU9PSJkb2Mtc3RhcnQiKXtpZihvPT0ic3RhcnQifHxlPT0icmVnZXhfYWxsb3dlZCIpcmV0dXJuIiI7dmFyIHU9dC5tYXRjaCgvXlxzKihcLz8pXCovKTt1JiYodVsxXSYmKHIrPSIgIikscis9IiogIil9cmV0dXJuIHJ9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQodCxuKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudCh0LG4pfSx0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihlKXt2YXIgdD1uZXcgZihbImFjZSJdLCJhY2UvbW9kZS9qYXZhc2NyaXB0X3dvcmtlciIsIkphdmFTY3JpcHRXb3JrZXIiKTtyZXR1cm4gdC5hdHRhY2hUb0RvY3VtZW50KGUuZ2V0RG9jdW1lbnQoKSksdC5vbigianNsaW50IixmdW5jdGlvbih0KXt2YXIgbj1bXTtmb3IodmFyIHI9MDtyPHQuZGF0YS5sZW5ndGg7cisrKXt2YXIgaT10LmRhdGFbcl07aSYmbi5wdXNoKHtyb3c6aS5saW5lLTEsY29sdW1uOmkuY2hhcmFjdGVyLTEsdGV4dDppLnJlYXNvbix0eXBlOiJ3YXJuaW5nIixsaW50Oml9KX1lLnNldEFubm90YXRpb25zKG4pfSksdC5vbigibmFyY2lzc3VzIixmdW5jdGlvbih0KXtlLnNldEFubm90YXRpb25zKFt0LmRhdGFdKX0pLHQub24oInRlcm1pbmF0ZSIsZnVuY3Rpb24oKXtlLmNsZWFyQW5ub3RhdGlvbnMoKX0pLHR9fS5jYWxsKGgucHJvdG90eXBlKSx0Lk1vZGU9aH0pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS91bmljb2RlIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4uL3VuaWNvZGUiKSxvPWUoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxhPWZ1bmN0aW9uKCl7dmFyIGU9aS5hcnJheVRvTWFwKCJBcnJheXxCb29sZWFufERhdGV8RnVuY3Rpb258SXRlcmF0b3J8TnVtYmVyfE9iamVjdHxSZWdFeHB8U3RyaW5nfFByb3h5fE5hbWVzcGFjZXxRTmFtZXxYTUx8WE1MTGlzdHxBcnJheUJ1ZmZlcnxGbG9hdDMyQXJyYXl8RmxvYXQ2NEFycmF5fEludDE2QXJyYXl8SW50MzJBcnJheXxJbnQ4QXJyYXl8VWludDE2QXJyYXl8VWludDMyQXJyYXl8VWludDhBcnJheXxVaW50OENsYW1wZWRBcnJheXxFcnJvcnxFdmFsRXJyb3J8SW50ZXJuYWxFcnJvcnxSYW5nZUVycm9yfFJlZmVyZW5jZUVycm9yfFN0b3BJdGVyYXRpb258U3ludGF4RXJyb3J8VHlwZUVycm9yfFVSSUVycm9yfGRlY29kZVVSSXxkZWNvZGVVUklDb21wb25lbnR8ZW5jb2RlVVJJfGVuY29kZVVSSUNvbXBvbmVudHxldmFsfGlzRmluaXRlfGlzTmFOfHBhcnNlRmxvYXR8cGFyc2VJbnR8SlNPTnxNYXRofHRoaXN8YXJndW1lbnRzfHByb3RvdHlwZXx3aW5kb3d8ZG9jdW1lbnQiLnNwbGl0KCJ8IikpLHQ9aS5hcnJheVRvTWFwKCJicmVha3xjYXNlfGNhdGNofGNvbnRpbnVlfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZmluYWxseXxmb3J8ZnVuY3Rpb258aWZ8aW58aW5zdGFuY2VvZnxuZXd8cmV0dXJufHN3aXRjaHx0aHJvd3x0cnl8dHlwZW9mfGxldHx2YXJ8d2hpbGV8d2l0aHxjb25zdHx5aWVsZHxpbXBvcnR8Z2V0fHNldCIuc3BsaXQoInwiKSksbj0iY2FzZXxkb3xlbHNlfGZpbmFsbHl8aW58aW5zdGFuY2VvZnxyZXR1cm58dGhyb3d8dHJ5fHR5cGVvZnx5aWVsZCIscj1pLmFycmF5VG9NYXAoIl9fcGFyZW50X198X19jb3VudF9ffGVzY2FwZXx1bmVzY2FwZXx3aXRofF9fcHJvdG9fXyIuc3BsaXQoInwiKSksdT1pLmFycmF5VG9NYXAoImNvbnN0fGxldHx2YXJ8ZnVuY3Rpb24iLnNwbGl0KCJ8IikpLGE9aS5hcnJheVRvTWFwKCJudWxsfEluZmluaXR5fE5hTnx1bmRlZmluZWQiLnNwbGl0KCJ8IikpLGY9aS5hcnJheVRvTWFwKCJjbGFzc3xlbnVtfGV4dGVuZHN8c3VwZXJ8ZXhwb3J0fGltcGxlbWVudHN8cHJpdmF0ZXxwdWJsaWN8aW50ZXJmYWNlfHBhY2thZ2V8cHJvdGVjdGVkfHN0YXRpYyIuc3BsaXQoInwiKSksbD0iWyIrcy5wYWNrYWdlcy5MKyJcXCRfXVsiK3MucGFja2FnZXMuTCtzLnBhY2thZ2VzLk1uK3MucGFja2FnZXMuTWMrcy5wYWNrYWdlcy5OZCtzLnBhY2thZ2VzLlBjKyJcXCRfXSpcXGIiLGM9IlxcXFwoPzp4WzAtOWEtZkEtRl17Mn18dVswLTlhLWZBLUZdezR9fFswLTJdWzAtN117MCwyfXwzWzAtNl1bMC03XT98MzdbMC03XT98WzQtN11bMC03XT98LikiO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDovXC9cLy4qJC99LG8uZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4Oi9cL1wqLyxuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInKD89LikiLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIoPz0uKScsbmV4dDoicXFzdHJpbmcifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi8wW3hYXVswLTlhLWZBLUZdK1xiL30se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovWystXT9cZCsoPzooPzpcLlxkKik/KD86W2VFXVsrLV0/XGQrKT8pP1xiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2wrIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiXSxyZWdleDoiKCIrbCsiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2wrIikoXFxzKikoPSkoXFxzKikiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFwuKSgiK2wrIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMrKShcXHcrKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IihmdW5jdGlvbikoXFxzKykoIitsKyIpKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXHMqKSg6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsidGV4dCIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6Iig6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDovKD86dHJ1ZXxmYWxzZSlcYi99LHt0b2tlbjoia2V5d29yZCIscmVnZXg6Iig/OiIrbisiKVxcYiIsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiJdLHJlZ2V4Oi8oXC4pKHMoPzpoKD86aWZ0fG93KD86TW9kKD86ZWxlc3NEaWFsb2d8YWxEaWFsb2cpfEhlbHApKXxjcm9sbCg/Olh8QnkoPzpQYWdlc3xMaW5lcyk/fFl8VG8pP3x0KD86b3B6enp6fHJpa2UpfGkoPzpufHplVG9Db250ZW50fGRlYmFyfGduVGV4dCl8b3J0fHUoPzpwfGIoPzpzdHIoPzppbmcpPyk/KXxwbGkoPzpjZXx0KXxlKD86bmR8dCg/OlJlKD86c2l6YWJsZXxxdWVzdEhlYWRlcil8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvKD86dEtleXN8dXJzKXxZZWFyfEN1cnNvcnxUaW1lKD86b3V0KT98SW50ZXJ2YWx8Wk9wdGlvbnN8RGF0ZXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGF0ZXxGdWxsWWVhcil8RnVsbFllYXJ8QWN0aXZlKXxhcmNoKXxxcnR8bGljZXxhdmVQcmVmZXJlbmNlc3xtYWxsKXxoKD86b21lfGFuZGxlRXZlbnQpfG5hdmlnYXRlfGMoPzpoYXIoPzpDb2RlQXR8QXQpfG8oPzpzfG4oPzpjYXR8dGV4dHVhbHxmaXJtKXxtcGlsZSl8ZWlsfGxlYXIoPzpUaW1lb3V0fEludGVydmFsKT98YSg/OnB0dXJlRXZlbnRzfGxsKXxyZWF0ZSg/OlN0eWxlU2hlZXR8UG9wdXB8RXZlbnRPYmplY3QpKXx0KD86byg/OkdNVFN0cmluZ3xTKD86dHJpbmd8b3VyY2UpfFUoPzpUQ1N0cmluZ3xwcGVyQ2FzZSl8TG8oPzpjYWxlU3RyaW5nfHdlckNhc2UpKXxlc3R8YSg/Om58aW50KD86RW5hYmxlZCk/KSl8aSg/OnMoPzpOYU58RmluaXRlKXxuZGV4T2Z8dGFsaWNzKXxkKD86aXNhYmxlRXh0ZXJuYWxDYXB0dXJlfHVtcHxldGFjaEV2ZW50KXx1KD86big/OnNoaWZ0fHRhaW50fGVzY2FwZXx3YXRjaCl8cGRhdGVDb21tYW5kcyl8aig/Om9pbnxhdmFFbmFibGVkKXxwKD86byg/OnB8dyl8dXNofGx1Z2lucy5yZWZyZXNofGEoPzpkZGluZ3N8cnNlKD86SW50fEZsb2F0KT8pfHIoPzppbnR8b21wdHxlZmVyZW5jZSkpfGUoPzpzY2FwZXxuYWJsZUV4dGVybmFsQ2FwdHVyZXx2YWx8bGVtZW50RnJvbVBvaW50fHgoPzpwfGVjKD86U2NyaXB0fENvbW1hbmQpPykpfHZhbHVlT2Z8VVRDfHF1ZXJ5Q29tbWFuZCg/OlN0YXRlfEluZGV0ZXJtfEVuYWJsZWR8VmFsdWUpfGYoPzppKD86bmR8bGUoPzpNb2RpZmllZERhdGV8U2l6ZXxDcmVhdGVkRGF0ZXxVcGRhdGVkRGF0ZSl8eGVkKXxvKD86bnQoPzpzaXplfGNvbG9yKXxyd2FyZCl8bG9vcnxyb21DaGFyQ29kZSl8d2F0Y2h8bCg/Omlua3xvKD86YWR8Zyl8YXN0SW5kZXhPZil8YSg/OnNpbnxuY2hvcnxjb3N8dCg/OnRhY2hFdmVudHxvYnxhbig/OjIpPyl8cHBseXxsZXJ0fGIoPzpzfG9ydCkpfHIoPzpvdSg/Om5kfHRlRXZlbnRzKXxlKD86c2l6ZSg/OkJ5fFRvKXxjYWxjfHR1cm5WYWx1ZXxwbGFjZXx2ZXJzZXxsKD86b2FkfGVhc2UoPzpDYXB0dXJlfEV2ZW50cykpKXxhbmRvbSl8Zyg/Om98ZXQoPzpSZXNwb25zZUhlYWRlcnxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlKD86Y29uZHN8bGVjdGlvbil8SG91cnN8WWVhcnxUaW1lKD86em9uZU9mZnNldCk/fERhKD86eXx0ZSl8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhKD86eXx0ZSl8RnVsbFllYXIpfEZ1bGxZZWFyfEEoPzp0dGVudGlvbnxsbFJlc3BvbnNlSGVhZGVycykpKXxtKD86aW58b3ZlKD86Qig/Onl8ZWxvdyl8VG8oPzpBYnNvbHV0ZSk/fEFib3ZlKXxlcmdlQXR0cmlidXRlc3xhKD86dGNofHJnaW5zfHgpKXxiKD86dG9hfGlnfG8oPzpsZHxyZGVyV2lkdGhzKXxsaW5rfGFjaykpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZG9tIl0scmVnZXg6LyhcLikocyg/OnViKD86c3RyaW5nRGF0YXxtaXQpfHBsaXRUZXh0fGUoPzp0KD86TmFtZWRJdGVtfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8bGVjdCkpfGhhcyg/OkNoaWxkTm9kZXN8RmVhdHVyZSl8bmFtZWRJdGVtfGMoPzpsKD86aWNrfG8oPzpzZXxuZU5vZGUpKXxyZWF0ZSg/OkMoPzpvbW1lbnR8REFUQVNlY3Rpb258YXB0aW9uKXxUKD86SGVhZHxleHROb2RlfEZvb3QpfERvY3VtZW50RnJhZ21lbnR8UHJvY2Vzc2luZ0luc3RydWN0aW9ufEUoPzpudGl0eVJlZmVyZW5jZXxsZW1lbnQpfEF0dHJpYnV0ZSkpfHRhYkluZGV4fGkoPzpuc2VydCg/OlJvd3xCZWZvcmV8Q2VsbHxEYXRhKXx0ZW0pfG9wZW58ZGVsZXRlKD86Um93fEMoPzplbGx8YXB0aW9uKXxUKD86SGVhZHxGb290KXxEYXRhKXxmb2N1c3x3cml0ZSg/OmxuKT98YSg/OmRkfHBwZW5kKD86Q2hpbGR8RGF0YSkpfHJlKD86c2V0fHBsYWNlKD86Q2hpbGR8RGF0YSl8bW92ZSg/Ok5hbWVkSXRlbXxDaGlsZHxBdHRyaWJ1dGUoPzpOb2RlKT8pPyl8Z2V0KD86TmFtZWRJdGVtfEVsZW1lbnQoPzpzQnkoPzpOYW1lfFRhZ05hbWUpfEJ5SWQpfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8Ymx1cilcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5jb25zdGFudCJdLHJlZ2V4Oi8oXC4pKHMoPzp5c3RlbUxhbmd1YWdlfGNyKD86aXB0c3xvbGxiYXJzfGVlbig/Olh8WXxUb3B8TGVmdCkpfHQoPzp5bGUoPzpTaGVldHMpP3xhdHVzKD86VGV4dHxiYXIpPyl8aWJsaW5nKD86QmVsb3d8QWJvdmUpfG91cmNlfHVmZml4ZXN8ZSg/OmN1cml0eSg/OlBvbGljeSk/fGwoPzplY3Rpb258ZikpKXxoKD86aXN0b3J5fG9zdCg/Om5hbWUpP3xhcyg/Omh8Rm9jdXMpKXx5fFgoPzpNTERvY3VtZW50fFNMRG9jdW1lbnQpfG4oPzpleHR8YW1lKD86c3BhY2UoPzpzfFVSSSl8UHJvcCkpfE0oPzpJTl9WQUxVRXxBWF9WQUxVRSl8Yyg/OmhhcmFjdGVyU2V0fG8oPzpuKD86c3RydWN0b3J8dHJvbGxlcnMpfG9raWVFbmFibGVkfGxvckRlcHRofG1wKD86b25lbnRzfGxldGUpKXx1cnJlbnR8cHVDbGFzc3xsKD86aSg/OnAoPzpib2FyZERhdGEpP3xlbnRJbmZvcm1hdGlvbil8b3NlZHxhc3Nlcyl8YWxsZSg/OmV8cil8cnlwdG8pfHQoPzpvKD86b2xiYXJ8cCl8ZXh0KD86VHJhbnNmb3JtfEluZGVudHxEZWNvcmF0aW9ufEFsaWduKXxhZ3MpfFNRUlQoPzoxXzJ8Mil8aSg/Om4oPzpuZXIoPzpIZWlnaHR8V2lkdGgpfHB1dCl8ZHN8Z25vcmVDYXNlKXx6SW5kZXh8byg/OnNjcHV8big/OnJlYWR5c3RhdGVjaGFuZ2V8TGluZSl8dXRlcig/OkhlaWdodHxXaWR0aCl8cCg/OnNQcm9maWxlfGVuZXIpfGZmc2NyZWVuQnVmZmVyaW5nKXxORUdBVElWRV9JTkZJTklUWXxkKD86aSg/OnNwbGF5fGFsb2coPzpIZWlnaHR8VG9wfFdpZHRofExlZnR8QXJndW1lbnRzKXxyZWN0b3JpZXMpfGUoPzpzY3JpcHRpb258ZmF1bHQoPzpTdGF0dXN8Q2goPzplY2tlZHxhcnNldCl8VmlldykpKXx1KD86c2VyKD86UHJvZmlsZXxMYW5ndWFnZXxBZ2VudCl8big/OmlxdWVJRHxkZWZpbmVkKXxwZGF0ZUludGVydmFsKXxfY29udGVudHxwKD86aXhlbERlcHRofG9ydHxlcnNvbmFsYmFyfGtjczExfGwoPzp1Z2luc3xhdGZvcm0pfGEoPzp0aG5hbWV8ZGRpbmcoPzpSaWdodHxCb3R0b218VG9wfExlZnQpfHJlbnQoPzpXaW5kb3d8TGF5ZXIpP3xnZSg/OlgoPzpPZmZzZXQpP3xZKD86T2Zmc2V0KT8pKXxyKD86byg/OnRvKD86Y29sfHR5cGUpfGR1Y3QoPzpTdWIpP3xtcHRlcil8ZSg/OnZpb3VzfGZpeCkpKXxlKD86big/OmNvZGluZ3xhYmxlZFBsdWdpbil8eCg/OnRlcm5hbHxwYW5kbyl8bWJlZHMpfHYoPzppc2liaWxpdHl8ZW5kb3IoPzpTdWIpP3xMaW5rY29sb3IpfFVSTFVuZW5jb2RlZHxQKD86SXxPU0lUSVZFX0lORklOSVRZKXxmKD86aWxlbmFtZXxvKD86bnQoPzpTaXplfEZhbWlseXxXZWlnaHQpfHJtTmFtZSl8cmFtZSg/OnN8RWxlbWVudCl8Z0NvbG9yKXxFfHdoaXRlU3BhY2V8bCg/OmkoPzpzdFN0eWxlVHlwZXxuKD86ZUhlaWdodHxrQ29sb3IpKXxvKD86Y2EoPzp0aW9uKD86YmFyKT98bE5hbWUpfHdzcmMpfGUoPzpuZ3RofGZ0KD86Q29udGV4dCk/KXxhKD86c3QoPzpNKD86b2RpZmllZHxhdGNoKXxJbmRleHxQYXJlbil8eWVyKD86c3xYKXxuZ3VhZ2UpKXxhKD86cHAoPzpNaW5vclZlcnNpb258TmFtZXxDbyg/OmRlTmFtZXxyZSl8VmVyc2lvbil8dmFpbCg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdCl8bGx8cig/Oml0eXxndW1lbnRzKXxMaW5rY29sb3J8Ym92ZSl8cig/OmlnaHQoPzpDb250ZXh0KT98ZSg/OnNwb25zZSg/OlhNTHxUZXh0KXxhZHlTdGF0ZSkpfGdsb2JhbHx4fG0oPzppbWVUeXBlc3x1bHRpbGluZXxlbnViYXJ8YXJnaW4oPzpSaWdodHxCb3R0b218VG9wfExlZnQpKXxMKD86Tig/OjEwfDIpfE9HKD86MTBFfDJFKSl8Yig/Om8oPzp0dG9tfHJkZXIoPzpXaWR0aHxSaWdodFdpZHRofEJvdHRvbVdpZHRofFN0eWxlfENvbG9yfFRvcFdpZHRofExlZnRXaWR0aCkpfHVmZmVyRGVwdGh8ZWxvd3xhY2tncm91bmQoPzpDb2xvcnxJbWFnZSkpKVxiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmZpcmVidWciXSxyZWdleDovKGNvbnNvbGUpKFwuKSh3YXJufGluZm98bG9nfGVycm9yfHRpbWV8dGltZUVuZHxhc3NlcnQpXGIvfSx7dG9rZW46ZnVuY3Rpb24obil7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkobik/InZhcmlhYmxlLmxhbmd1YWdlIjpyLmhhc093blByb3BlcnR5KG4pPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOnUuaGFzT3duUHJvcGVydHkobik/InN0b3JhZ2UudHlwZSI6dC5oYXNPd25Qcm9wZXJ0eShuKT8ia2V5d29yZCI6YS5oYXNPd25Qcm9wZXJ0eShuKT8iY29uc3RhbnQubGFuZ3VhZ2UiOmYuaGFzT3duUHJvcGVydHkobik/ImludmFsaWQuaWxsZWdhbCI6bj09ImRlYnVnZ2VyIj8iaW52YWxpZC5kZXByZWNhdGVkIjoiaWRlbnRpZmllciJ9LHJlZ2V4Omx9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6LyF8XCR8JXwmfFwqfFwtXC18XC18XCtcK3xcK3x+fD09PXw9PXw9fCE9fCE9PXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XHxcfHxcP1w6fFwqPXwlPXxcKz18XC09fCY9fFxePXxcYig/OmlufGluc3RhbmNlb2Z8bmV3fGRlbGV0ZXx0eXBlb2Z8dm9pZCkvLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDovXD98XDp8XCx8XDt8XC4vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6L1tcWyh7XS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDovW1xdKX1dL30se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovXC89Py8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6L14jIS4qJC99LHt0b2tlbjoidGV4dCIscmVnZXg6L1xzKy99XSxyZWdleF9hbGxvd2VkOltvLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50X3JlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJcXC8iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4Olt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiIvXFx3KiIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbXlxcXFwvXFxbXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXFxbIixuZXh0OiJyZWdleF9jaGFyYWN0ZXJfY2xhc3MiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleF9jaGFyYWN0ZXJfY2xhc3M6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJdIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJbXlxcXFxcXF1dKyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGZ1bmN0aW9uX2FyZ3VtZW50czpbe3Rva2VuOiJ2YXJpYWJsZS5wYXJhbWV0ZXIiLHJlZ2V4Omx9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJbLCBdKyIsbWVyZ2U6ITB9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiIkIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sY29tbWVudF9yZWdleF9hbGxvd2VkOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scXFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpjfSx7dG9rZW46InN0cmluZyIscmVnZXg6J1teIlxcXFxdKycsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OicifCQnLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dLHFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpjfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlteJ1xcXFxdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6Iid8JCIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV19LHRoaXMuZW1iZWRSdWxlcyhvLCJkb2MtIixbby5nZXRFbmRSdWxlKCJzdGFydCIpXSl9O3IuaW5oZXJpdHMoYSx1KSx0LkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcz1hfSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMscz1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O3IuaW5oZXJpdHMocyxpKSxzLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihlKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDplfX0scy5nZXRFbmRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6ZX19LHQuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPXN9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxpPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQpe3JldHVybi9eXHMrJC8udGVzdChlKT8vXlxzKlx9Ly50ZXN0KHQpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRMaW5lKHQpLGk9bi5tYXRjaCgvXihccypcfSkvKTtpZighaSlyZXR1cm4gMDt2YXIgcz1pWzFdLmxlbmd0aCxvPWUuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnQsY29sdW1uOnN9KTtpZighb3x8by5yb3c9PXQpcmV0dXJuIDA7dmFyIHU9dGhpcy4kZ2V0SW5kZW50KGUuZ2V0TGluZShvLnJvdykpO2UucmVwbGFjZShuZXcgcih0LDAsdCxzLTEpLHUpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCgvXihccyspLyk7cmV0dXJuIHQ/dFsxXToiIn19KS5jYWxsKGkucHJvdG90eXBlKSx0Lk1hdGNoaW5nQnJhY2VPdXRkZW50PWl9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIscz1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09InsiKXt2YXIgcz1uLmdldFNlbGVjdGlvblJhbmdlKCksbz1yLmRvYy5nZXRUZXh0UmFuZ2Uocyk7cmV0dXJuIG8hPT0iIj97dGV4dDoieyIrbysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoaT09In0iKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJ9Iil7dmFyIGw9ci4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOnUuY29sdW1uKzEscm93OnUucm93fSk7aWYobCE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihpPT0iXG4iKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJ9Iil7dmFyIGM9ci5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dS5yb3csY29sdW1uOnUuY29sdW1uKzF9KTtpZighYylyZXR1cm4gbnVsbDt2YXIgaD10aGlzLmdldE5leHRMaW5lSW5kZW50KGUsYS5zdWJzdHJpbmcoMCxhLmxlbmd0aC0xKSxyLmdldFRhYlN0cmluZygpKSxwPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKGMucm93KSk7cmV0dXJue3RleHQ6IlxuIitoKyJcbiIrcCxzZWxlY3Rpb246WzEsaC5sZW5ndGgsMSxoLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSJ7Iil7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLmVuZC5jb2x1bW4saS5lbmQuY29sdW1uKzEpO2lmKHU9PSJ9IilyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSIoIil7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO3JldHVybiBvIT09IiI/e3RleHQ6IigiK28rIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGk9PSIpIil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0iKSIpe3ZhciBsPXIuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjp1LmNvbHVtbisxLHJvdzp1LnJvd30pO2lmKGwhPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcz09IigiKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09IikiKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0nIid8fGk9PSInIil7dmFyIHM9aSxvPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSx1PXIuZG9jLmdldFRleHRSYW5nZShvKTtpZih1IT09IiIpcmV0dXJue3RleHQ6cyt1K3Msc2VsZWN0aW9uOiExfTt2YXIgYT1uLmdldEN1cnNvclBvc2l0aW9uKCksZj1yLmRvYy5nZXRMaW5lKGEucm93KSxsPWYuc3Vic3RyaW5nKGEuY29sdW1uLTEsYS5jb2x1bW4pO2lmKGw9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGM9ci5nZXRUb2tlbnMoby5zdGFydC5yb3cpLGg9MCxwLGQ9LTE7Zm9yKHZhciB2PTA7djxjLmxlbmd0aDt2Kyspe3A9Y1t2XSxwLnR5cGU9PSJzdHJpbmciP2Q9LTE6ZDwwJiYoZD1wLnZhbHVlLmluZGV4T2YocykpO2lmKHAudmFsdWUubGVuZ3RoK2g+by5zdGFydC5jb2x1bW4pYnJlYWs7aCs9Y1t2XS52YWx1ZS5sZW5ndGh9aWYoIXB8fGQ8MCYmcC50eXBlIT09ImNvbW1lbnQiJiYocC50eXBlIT09InN0cmluZyJ8fG8uc3RhcnQuY29sdW1uIT09cC52YWx1ZS5sZW5ndGgraC0xJiZwLnZhbHVlLmxhc3RJbmRleE9mKHMpPT09cC52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6cytzLHNlbGVjdGlvbjpbMSwxXX07aWYocCYmcC50eXBlPT09InN0cmluZyIpe3ZhciBtPWYuc3Vic3RyaW5nKGEuY29sdW1uLGEuY29sdW1uKzEpO2lmKG09PXMpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJihzPT0nIid8fHM9PSInIikpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5zdGFydC5jb2x1bW4rMSxpLnN0YXJ0LmNvbHVtbisyKTtpZih1PT0nIicpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSl9O3IuaW5oZXJpdHMocyxpKSx0LkNzdHlsZUJlaGF2aW91cj1zfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxzPWUoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsbz10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtyLmluaGVyaXRzKG8scyksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pLHM9ci5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleDtpZihzWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soZSxzWzFdLG4sbyk7dmFyIHU9ZS5nZXRDb21tZW50Rm9sZFJhbmdlKG4sbytzWzBdLmxlbmd0aCk7cmV0dXJuIHUuZW5kLmNvbHVtbi09Mix1fWlmKHQhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIHM9ci5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihzKXt2YXIgbz1zLmluZGV4K3NbMF0ubGVuZ3RoO2lmKHNbMl0pe3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8pO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX12YXIgYT17cm93Om4sY29sdW1uOm99LGY9ZS4kZmluZE9wZW5pbmdCcmFja2V0KHNbMV0sYSk7aWYoIWYpcmV0dXJuO3JldHVybiBmLmNvbHVtbisrLGEuY29sdW1uLS0saS5mcm9tUG9pbnRzKGYsYSl9fX0uY2FsbChvLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2UsaT10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChyKT8ic3RhcnQiOnQ9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3Qocik/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT0vXFMvLHM9ZS5nZXRMaW5lKHQpLG89cy5zZWFyY2goaSk7aWYobz09LTEpcmV0dXJuO3ZhciB1PW58fHMubGVuZ3RoLGE9ZS5nZXRMZW5ndGgoKSxmPXQsbD10O3doaWxlKCsrdDxhKXt2YXIgYz1lLmdldExpbmUodCkuc2VhcmNoKGkpO2lmKGM9PS0xKWNvbnRpbnVlO2lmKGM8PW8pYnJlYWs7bD10fWlmKGw+Zil7dmFyIGg9ZS5nZXRMaW5lKGwpLmxlbmd0aDtyZXR1cm4gbmV3IHIoZix1LGwsaCl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oZSx0LG4saSxzKXt2YXIgbz17cm93Om4sY29sdW1uOmkrMX0sdT1lLiRmaW5kQ2xvc2luZ0JyYWNrZXQodCxvLHMpO2lmKCF1KXJldHVybjt2YXIgYT1lLmZvbGRXaWRnZXRzW3Uucm93XTtyZXR1cm4gYT09bnVsbCYmKGE9dGhpcy5nZXRGb2xkV2lkZ2V0KGUsdS5yb3cpKSxhPT0ic3RhcnQiJiZ1LnJvdz5vLnJvdyYmKHUucm93LS0sdS5jb2x1bW49ZS5nZXRMaW5lKHUucm93KS5sZW5ndGgpLHIuZnJvbVBvaW50cyhvLHUpfX0pLmNhbGwoaS5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLG89ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyx1PWZ1bmN0aW9uKCl7dmFyIGU9aS5hcnJheVRvTWFwKCJhYnN0cmFjdHxjb250aW51ZXxmb3J8bmV3fHN3aXRjaHxhc3NlcnR8ZGVmYXVsdHxnb3RvfHBhY2thZ2V8c3luY2hyb25pemVkfGJvb2xlYW58ZG98aWZ8cHJpdmF0ZXx0aGlzfGJyZWFrfGRvdWJsZXxpbXBsZW1lbnRzfHByb3RlY3RlZHx0aHJvd3xieXRlfGVsc2V8aW1wb3J0fHB1YmxpY3x0aHJvd3N8Y2FzZXxlbnVtfGluc3RhbmNlb2Z8cmV0dXJufHRyYW5zaWVudHxjYXRjaHxleHRlbmRzfGludHxzaG9ydHx0cnl8Y2hhcnxmaW5hbHxpbnRlcmZhY2V8c3RhdGljfHZvaWR8Y2xhc3N8ZmluYWxseXxsb25nfHN0cmljdGZwfHZvbGF0aWxlfGNvbnN0fGZsb2F0fG5hdGl2ZXxzdXBlcnx3aGlsZSIuc3BsaXQoInwiKSksdD1pLmFycmF5VG9NYXAoIm51bGx8SW5maW5pdHl8TmFOfHVuZGVmaW5lZCIuc3BsaXQoInwiKSksbj1pLmFycmF5VG9NYXAoIkFic3RyYWN0TWV0aG9kRXJyb3J8QXNzZXJ0aW9uRXJyb3J8Q2xhc3NDaXJjdWxhcml0eUVycm9yfENsYXNzRm9ybWF0RXJyb3J8RGVwcmVjYXRlZHxFbnVtQ29uc3RhbnROb3RQcmVzZW50RXhjZXB0aW9ufEV4Y2VwdGlvbkluSW5pdGlhbGl6ZXJFcnJvcnxJbGxlZ2FsQWNjZXNzRXJyb3J8SWxsZWdhbFRocmVhZFN0YXRlRXhjZXB0aW9ufEluc3RhbnRpYXRpb25FcnJvcnxJbnRlcm5hbEVycm9yfE5lZ2F0aXZlQXJyYXlTaXplRXhjZXB0aW9ufE5vU3VjaEZpZWxkRXJyb3J8T3ZlcnJpZGV8UHJvY2Vzc3xQcm9jZXNzQnVpbGRlcnxTZWN1cml0eU1hbmFnZXJ8U3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbnxTdXBwcmVzc1dhcm5pbmdzfFR5cGVOb3RQcmVzZW50RXhjZXB0aW9ufFVua25vd25FcnJvcnxVbnNhdGlzZmllZExpbmtFcnJvcnxVbnN1cHBvcnRlZENsYXNzVmVyc2lvbkVycm9yfFZlcmlmeUVycm9yfEluc3RhbnRpYXRpb25FeGNlcHRpb258SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbnxBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb258Q2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb258Tm9TdWNoRmllbGRFeGNlcHRpb258SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9ufE51bWJlckZvcm1hdEV4Y2VwdGlvbnxTZWN1cml0eUV4Y2VwdGlvbnxWb2lkfEluaGVyaXRhYmxlVGhyZWFkTG9jYWx8SWxsZWdhbFN0YXRlRXhjZXB0aW9ufEludGVycnVwdGVkRXhjZXB0aW9ufE5vU3VjaE1ldGhvZEV4Y2VwdGlvbnxJbGxlZ2FsQWNjZXNzRXhjZXB0aW9ufFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9ufEVudW18U3RyaWN0TWF0aHxQYWNrYWdlfENvbXBpbGVyfFJlYWRhYmxlfFJ1bnRpbWV8U3RyaW5nQnVpbGRlcnxNYXRofEluY29tcGF0aWJsZUNsYXNzQ2hhbmdlRXJyb3J8Tm9TdWNoTWV0aG9kRXJyb3J8VGhyZWFkTG9jYWx8UnVudGltZVBlcm1pc3Npb258QXJpdGhtZXRpY0V4Y2VwdGlvbnxOdWxsUG9pbnRlckV4Y2VwdGlvbnxMb25nfEludGVnZXJ8U2hvcnR8Qnl0ZXxEb3VibGV8TnVtYmVyfEZsb2F0fENoYXJhY3RlcnxCb29sZWFufFN0YWNrVHJhY2VFbGVtZW50fEFwcGVuZGFibGV8U3RyaW5nQnVmZmVyfEl0ZXJhYmxlfFRocmVhZEdyb3VwfFJ1bm5hYmxlfFRocmVhZHxJbGxlZ2FsTW9uaXRvclN0YXRlRXhjZXB0aW9ufFN0YWNrT3ZlcmZsb3dFcnJvcnxPdXRPZk1lbW9yeUVycm9yfFZpcnR1YWxNYWNoaW5lRXJyb3J8QXJyYXlTdG9yZUV4Y2VwdGlvbnxDbGFzc0Nhc3RFeGNlcHRpb258TGlua2FnZUVycm9yfE5vQ2xhc3NEZWZGb3VuZEVycm9yfENsYXNzTm90Rm91bmRFeGNlcHRpb258UnVudGltZUV4Y2VwdGlvbnxFeGNlcHRpb258VGhyZWFkRGVhdGh8RXJyb3J8VGhyb3dhYmxlfFN5c3RlbXxDbGFzc0xvYWRlcnxDbG9uZWFibGV8Q2xhc3N8Q2hhclNlcXVlbmNlfENvbXBhcmFibGV8U3RyaW5nfE9iamVjdCIuc3BsaXQoInwiKSkscj1pLmFycmF5VG9NYXAoIiIuc3BsaXQoInwiKSk7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSxzLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiWy9dKD86KD86XFxbKD86XFxcXF18W15cXF1dKStcXF0pfCg/OlxcXFwvfFteXFxdL10pKSpbL11cXHcqXFxzKig/PVspLiw7XXwkKSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IjBbeFhdWzAtOWEtZkEtRl0rXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmJvb2xlYW4iLHJlZ2V4OiIoPzp0cnVlfGZhbHNlKVxcYiJ9LHt0b2tlbjpmdW5jdGlvbihpKXtyZXR1cm4gaT09InRoaXMiPyJ2YXJpYWJsZS5sYW5ndWFnZSI6ZS5oYXNPd25Qcm9wZXJ0eShpKT8ia2V5d29yZCI6bi5oYXNPd25Qcm9wZXJ0eShpKT8ic3VwcG9ydC5mdW5jdGlvbiI6ci5oYXNPd25Qcm9wZXJ0eShpKT8ic3VwcG9ydC5mdW5jdGlvbiI6dC5oYXNPd25Qcm9wZXJ0eShpKT8iY29uc3RhbnQubGFuZ3VhZ2UiOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IiF8XFwkfCV8JnxcXCp8XFwtXFwtfFxcLXxcXCtcXCt8XFwrfH58PT09fD09fD18IT18IT09fDw9fD49fDw8PXw+Pj18Pj4+PXw8Pnw8fD58IXwmJnxcXHxcXHx8XFw/XFw6fFxcKj18JT18XFwrPXxcXC09fCY9fFxcXj18XFxiKD86aW58aW5zdGFuY2VvZnxuZXd8ZGVsZXRlfHR5cGVvZnx2b2lkKSJ9LHt0b2tlbjoibHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InJwYXJlbiIscmVnZXg6IltcXF0pfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0sdGhpcy5lbWJlZFJ1bGVzKHMsImRvYy0iLFtzLmdldEVuZFJ1bGUoInN0YXJ0IildKX07ci5pbmhlcml0cyh1LG8pLHQuSmF2YUhpZ2hsaWdodFJ1bGVzPXV9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-javascript.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSIsImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIpLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcyx1PWUoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGE9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxmPWUoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGw9ZSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGM9ZSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGg9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyB1LHRoaXMuJGJlaGF2aW91cj1uZXcgbCx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgY307ci5pbmhlcml0cyhoLGkpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ITAscz0vXihccyopXC9cLy87Zm9yKHZhciBvPW47bzw9cjtvKyspaWYoIXMudGVzdCh0LmdldExpbmUobykpKXtpPSExO2JyZWFrfWlmKGkpe3ZhciB1PW5ldyBhKDAsMCwwLDApO2Zvcih2YXIgbz1uO288PXI7bysrKXt2YXIgZj10LmdldExpbmUobyksbD1mLm1hdGNoKHMpO3Uuc3RhcnQucm93PW8sdS5lbmQucm93PW8sdS5lbmQuY29sdW1uPWxbMF0ubGVuZ3RoLHQucmVwbGFjZSh1LGxbMV0pfX1lbHNlIHQuaW5kZW50Um93cyhuLHIsIi8vIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJGdldEluZGVudCh0KSxpPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKHQsZSkscz1pLnRva2VucyxvPWkuc3RhdGU7aWYocy5sZW5ndGgmJnNbcy5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiByO2lmKGU9PSJzdGFydCJ8fGU9PSJyZWdleF9hbGxvd2VkIil7dmFyIHU9dC5tYXRjaCgvXi4qKD86XGJjYXNlXGIuKlw6fFtce1woXFtdKVxzKiQvKTt1JiYocis9bil9ZWxzZSBpZihlPT0iZG9jLXN0YXJ0Iil7aWYobz09InN0YXJ0Inx8ZT09InJlZ2V4X2FsbG93ZWQiKXJldHVybiIiO3ZhciB1PXQubWF0Y2goL15ccyooXC8/KVwqLyk7dSYmKHVbMV0mJihyKz0iICIpLHIrPSIqICIpfXJldHVybiByfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KHQsbil9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQodCxuKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGYoWyJhY2UiXSwiYWNlL21vZGUvamF2YXNjcmlwdF93b3JrZXIiLCJKYXZhU2NyaXB0V29ya2VyIik7cmV0dXJuIHQuYXR0YWNoVG9Eb2N1bWVudChlLmdldERvY3VtZW50KCkpLHQub24oImpzbGludCIsZnVuY3Rpb24odCl7dmFyIG49W107Zm9yKHZhciByPTA7cjx0LmRhdGEubGVuZ3RoO3IrKyl7dmFyIGk9dC5kYXRhW3JdO2kmJm4ucHVzaCh7cm93OmkubGluZS0xLGNvbHVtbjppLmNoYXJhY3Rlci0xLHRleHQ6aS5yZWFzb24sdHlwZToid2FybmluZyIsbGludDppfSl9ZS5zZXRBbm5vdGF0aW9ucyhuKX0pLHQub24oIm5hcmNpc3N1cyIsZnVuY3Rpb24odCl7ZS5zZXRBbm5vdGF0aW9ucyhbdC5kYXRhXSl9KSx0Lm9uKCJ0ZXJtaW5hdGUiLGZ1bmN0aW9uKCl7ZS5jbGVhckFubm90YXRpb25zKCl9KSx0fX0uY2FsbChoLnByb3RvdHlwZSksdC5Nb2RlPWh9KSxkZWZpbmUoImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvdW5pY29kZSIsImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2xpYi9sYW5nIikscz1lKCIuLi91bmljb2RlIiksbz1lKCIuL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIpLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcyx1PWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsYT1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgiQXJyYXl8Qm9vbGVhbnxEYXRlfEZ1bmN0aW9ufEl0ZXJhdG9yfE51bWJlcnxPYmplY3R8UmVnRXhwfFN0cmluZ3xQcm94eXxOYW1lc3BhY2V8UU5hbWV8WE1MfFhNTExpc3R8QXJyYXlCdWZmZXJ8RmxvYXQzMkFycmF5fEZsb2F0NjRBcnJheXxJbnQxNkFycmF5fEludDMyQXJyYXl8SW50OEFycmF5fFVpbnQxNkFycmF5fFVpbnQzMkFycmF5fFVpbnQ4QXJyYXl8VWludDhDbGFtcGVkQXJyYXl8RXJyb3J8RXZhbEVycm9yfEludGVybmFsRXJyb3J8UmFuZ2VFcnJvcnxSZWZlcmVuY2VFcnJvcnxTdG9wSXRlcmF0aW9ufFN5bnRheEVycm9yfFR5cGVFcnJvcnxVUklFcnJvcnxkZWNvZGVVUkl8ZGVjb2RlVVJJQ29tcG9uZW50fGVuY29kZVVSSXxlbmNvZGVVUklDb21wb25lbnR8ZXZhbHxpc0Zpbml0ZXxpc05hTnxwYXJzZUZsb2F0fHBhcnNlSW50fEpTT058TWF0aHx0aGlzfGFyZ3VtZW50c3xwcm90b3R5cGV8d2luZG93fGRvY3VtZW50Ii5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgiYnJlYWt8Y2FzZXxjYXRjaHxjb250aW51ZXxkZWZhdWx0fGRlbGV0ZXxkb3xlbHNlfGZpbmFsbHl8Zm9yfGZ1bmN0aW9ufGlmfGlufGluc3RhbmNlb2Z8bmV3fHJldHVybnxzd2l0Y2h8dGhyb3d8dHJ5fHR5cGVvZnxsZXR8dmFyfHdoaWxlfHdpdGh8Y29uc3R8eWllbGR8aW1wb3J0fGdldHxzZXQiLnNwbGl0KCJ8IikpLG49ImNhc2V8ZG98ZWxzZXxmaW5hbGx5fGlufGluc3RhbmNlb2Z8cmV0dXJufHRocm93fHRyeXx0eXBlb2Z8eWllbGQiLHI9aS5hcnJheVRvTWFwKCJfX3BhcmVudF9ffF9fY291bnRfX3xlc2NhcGV8dW5lc2NhcGV8d2l0aHxfX3Byb3RvX18iLnNwbGl0KCJ8IikpLHU9aS5hcnJheVRvTWFwKCJjb25zdHxsZXR8dmFyfGZ1bmN0aW9uIi5zcGxpdCgifCIpKSxhPWkuYXJyYXlUb01hcCgibnVsbHxJbmZpbml0eXxOYU58dW5kZWZpbmVkIi5zcGxpdCgifCIpKSxmPWkuYXJyYXlUb01hcCgiY2xhc3N8ZW51bXxleHRlbmRzfHN1cGVyfGV4cG9ydHxpbXBsZW1lbnRzfHByaXZhdGV8cHVibGljfGludGVyZmFjZXxwYWNrYWdlfHByb3RlY3RlZHxzdGF0aWMiLnNwbGl0KCJ8IikpLGw9IlsiK3MucGFja2FnZXMuTCsiXFwkX11bIitzLnBhY2thZ2VzLkwrcy5wYWNrYWdlcy5NbitzLnBhY2thZ2VzLk1jK3MucGFja2FnZXMuTmQrcy5wYWNrYWdlcy5QYysiXFwkX10qXFxiIixjPSJcXFxcKD86eFswLTlhLWZBLUZdezJ9fHVbMC05YS1mQS1GXXs0fXxbMC0yXVswLTddezAsMn18M1swLTZdWzAtN10/fDM3WzAtN10/fFs0LTddWzAtN10/fC4pIjt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6L1wvXC8uKiQvfSxvLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDovXC9cKi8sbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJyg/PS4pIixuZXh0OiJxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciKD89LiknLG5leHQ6InFxc3RyaW5nIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovMFt4WF1bMC05YS1mQS1GXStcYi99LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6L1srLV0/XGQrKD86KD86XC5cZCopPyg/OltlRV1bKy1dP1xkKyk/KT9cYi99LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFwuKShwcm90b3R5cGUpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Il0scmVnZXg6IigiK2wrIikoXFwuKShwcm90b3R5cGUpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXC4pKCIrbCsiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKykoXFx3KykoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwidGV4dCIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoZnVuY3Rpb24pKFxccyspKCIrbCsiKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFxzKikoOikoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInRleHQiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoOikoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuYm9vbGVhbiIscmVnZXg6Lyg/OnRydWV8ZmFsc2UpXGIvfSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiIoPzoiK24rIilcXGIiLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iXSxyZWdleDovKFwuKShzKD86aCg/OmlmdHxvdyg/Ok1vZCg/OmVsZXNzRGlhbG9nfGFsRGlhbG9nKXxIZWxwKSl8Y3JvbGwoPzpYfEJ5KD86UGFnZXN8TGluZXMpP3xZfFRvKT98dCg/Om9wenp6enxyaWtlKXxpKD86bnx6ZVRvQ29udGVudHxkZWJhcnxnblRleHQpfG9ydHx1KD86cHxiKD86c3RyKD86aW5nKT8pPyl8cGxpKD86Y2V8dCl8ZSg/Om5kfHQoPzpSZSg/OnNpemFibGV8cXVlc3RIZWFkZXIpfE0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIbyg/OnRLZXlzfHVycyl8WWVhcnxDdXJzb3J8VGltZSg/Om91dCk/fEludGVydmFsfFpPcHRpb25zfERhdGV8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhdGV8RnVsbFllYXIpfEZ1bGxZZWFyfEFjdGl2ZSl8YXJjaCl8cXJ0fGxpY2V8YXZlUHJlZmVyZW5jZXN8bWFsbCl8aCg/Om9tZXxhbmRsZUV2ZW50KXxuYXZpZ2F0ZXxjKD86aGFyKD86Q29kZUF0fEF0KXxvKD86c3xuKD86Y2F0fHRleHR1YWx8ZmlybSl8bXBpbGUpfGVpbHxsZWFyKD86VGltZW91dHxJbnRlcnZhbCk/fGEoPzpwdHVyZUV2ZW50c3xsbCl8cmVhdGUoPzpTdHlsZVNoZWV0fFBvcHVwfEV2ZW50T2JqZWN0KSl8dCg/Om8oPzpHTVRTdHJpbmd8Uyg/OnRyaW5nfG91cmNlKXxVKD86VENTdHJpbmd8cHBlckNhc2UpfExvKD86Y2FsZVN0cmluZ3x3ZXJDYXNlKSl8ZXN0fGEoPzpufGludCg/OkVuYWJsZWQpPykpfGkoPzpzKD86TmFOfEZpbml0ZSl8bmRleE9mfHRhbGljcyl8ZCg/OmlzYWJsZUV4dGVybmFsQ2FwdHVyZXx1bXB8ZXRhY2hFdmVudCl8dSg/Om4oPzpzaGlmdHx0YWludHxlc2NhcGV8d2F0Y2gpfHBkYXRlQ29tbWFuZHMpfGooPzpvaW58YXZhRW5hYmxlZCl8cCg/Om8oPzpwfHcpfHVzaHxsdWdpbnMucmVmcmVzaHxhKD86ZGRpbmdzfHJzZSg/OkludHxGbG9hdCk/KXxyKD86aW50fG9tcHR8ZWZlcmVuY2UpKXxlKD86c2NhcGV8bmFibGVFeHRlcm5hbENhcHR1cmV8dmFsfGxlbWVudEZyb21Qb2ludHx4KD86cHxlYyg/OlNjcmlwdHxDb21tYW5kKT8pKXx2YWx1ZU9mfFVUQ3xxdWVyeUNvbW1hbmQoPzpTdGF0ZXxJbmRldGVybXxFbmFibGVkfFZhbHVlKXxmKD86aSg/Om5kfGxlKD86TW9kaWZpZWREYXRlfFNpemV8Q3JlYXRlZERhdGV8VXBkYXRlZERhdGUpfHhlZCl8byg/Om50KD86c2l6ZXxjb2xvcil8cndhcmQpfGxvb3J8cm9tQ2hhckNvZGUpfHdhdGNofGwoPzppbmt8byg/OmFkfGcpfGFzdEluZGV4T2YpfGEoPzpzaW58bmNob3J8Y29zfHQoPzp0YWNoRXZlbnR8b2J8YW4oPzoyKT8pfHBwbHl8bGVydHxiKD86c3xvcnQpKXxyKD86b3UoPzpuZHx0ZUV2ZW50cyl8ZSg/OnNpemUoPzpCeXxUbyl8Y2FsY3x0dXJuVmFsdWV8cGxhY2V8dmVyc2V8bCg/Om9hZHxlYXNlKD86Q2FwdHVyZXxFdmVudHMpKSl8YW5kb20pfGcoPzpvfGV0KD86UmVzcG9uc2VIZWFkZXJ8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZSg/OmNvbmRzfGxlY3Rpb24pfEhvdXJzfFllYXJ8VGltZSg/OnpvbmVPZmZzZXQpP3xEYSg/Onl8dGUpfFVUQyg/Ok0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIb3Vyc3xEYSg/Onl8dGUpfEZ1bGxZZWFyKXxGdWxsWWVhcnxBKD86dHRlbnRpb258bGxSZXNwb25zZUhlYWRlcnMpKSl8bSg/OmlufG92ZSg/OkIoPzp5fGVsb3cpfFRvKD86QWJzb2x1dGUpP3xBYm92ZSl8ZXJnZUF0dHJpYnV0ZXN8YSg/OnRjaHxyZ2luc3x4KSl8Yig/OnRvYXxpZ3xvKD86bGR8cmRlcldpZHRocyl8bGlua3xhY2spKVxiKD89XCgpL30se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmRvbSJdLHJlZ2V4Oi8oXC4pKHMoPzp1Yig/OnN0cmluZ0RhdGF8bWl0KXxwbGl0VGV4dHxlKD86dCg/Ok5hbWVkSXRlbXxBdHRyaWJ1dGUoPzpOb2RlKT8pfGxlY3QpKXxoYXMoPzpDaGlsZE5vZGVzfEZlYXR1cmUpfG5hbWVkSXRlbXxjKD86bCg/Omlja3xvKD86c2V8bmVOb2RlKSl8cmVhdGUoPzpDKD86b21tZW50fERBVEFTZWN0aW9ufGFwdGlvbil8VCg/OkhlYWR8ZXh0Tm9kZXxGb290KXxEb2N1bWVudEZyYWdtZW50fFByb2Nlc3NpbmdJbnN0cnVjdGlvbnxFKD86bnRpdHlSZWZlcmVuY2V8bGVtZW50KXxBdHRyaWJ1dGUpKXx0YWJJbmRleHxpKD86bnNlcnQoPzpSb3d8QmVmb3JlfENlbGx8RGF0YSl8dGVtKXxvcGVufGRlbGV0ZSg/OlJvd3xDKD86ZWxsfGFwdGlvbil8VCg/OkhlYWR8Rm9vdCl8RGF0YSl8Zm9jdXN8d3JpdGUoPzpsbik/fGEoPzpkZHxwcGVuZCg/OkNoaWxkfERhdGEpKXxyZSg/OnNldHxwbGFjZSg/OkNoaWxkfERhdGEpfG1vdmUoPzpOYW1lZEl0ZW18Q2hpbGR8QXR0cmlidXRlKD86Tm9kZSk/KT8pfGdldCg/Ok5hbWVkSXRlbXxFbGVtZW50KD86c0J5KD86TmFtZXxUYWdOYW1lKXxCeUlkKXxBdHRyaWJ1dGUoPzpOb2RlKT8pfGJsdXIpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuY29uc3RhbnQiXSxyZWdleDovKFwuKShzKD86eXN0ZW1MYW5ndWFnZXxjcig/OmlwdHN8b2xsYmFyc3xlZW4oPzpYfFl8VG9wfExlZnQpKXx0KD86eWxlKD86U2hlZXRzKT98YXR1cyg/OlRleHR8YmFyKT8pfGlibGluZyg/OkJlbG93fEFib3ZlKXxvdXJjZXx1ZmZpeGVzfGUoPzpjdXJpdHkoPzpQb2xpY3kpP3xsKD86ZWN0aW9ufGYpKSl8aCg/OmlzdG9yeXxvc3QoPzpuYW1lKT98YXMoPzpofEZvY3VzKSl8eXxYKD86TUxEb2N1bWVudHxTTERvY3VtZW50KXxuKD86ZXh0fGFtZSg/OnNwYWNlKD86c3xVUkkpfFByb3ApKXxNKD86SU5fVkFMVUV8QVhfVkFMVUUpfGMoPzpoYXJhY3RlclNldHxvKD86big/OnN0cnVjdG9yfHRyb2xsZXJzKXxva2llRW5hYmxlZHxsb3JEZXB0aHxtcCg/Om9uZW50c3xsZXRlKSl8dXJyZW50fHB1Q2xhc3N8bCg/OmkoPzpwKD86Ym9hcmREYXRhKT98ZW50SW5mb3JtYXRpb24pfG9zZWR8YXNzZXMpfGFsbGUoPzplfHIpfHJ5cHRvKXx0KD86byg/Om9sYmFyfHApfGV4dCg/OlRyYW5zZm9ybXxJbmRlbnR8RGVjb3JhdGlvbnxBbGlnbil8YWdzKXxTUVJUKD86MV8yfDIpfGkoPzpuKD86bmVyKD86SGVpZ2h0fFdpZHRoKXxwdXQpfGRzfGdub3JlQ2FzZSl8ekluZGV4fG8oPzpzY3B1fG4oPzpyZWFkeXN0YXRlY2hhbmdlfExpbmUpfHV0ZXIoPzpIZWlnaHR8V2lkdGgpfHAoPzpzUHJvZmlsZXxlbmVyKXxmZnNjcmVlbkJ1ZmZlcmluZyl8TkVHQVRJVkVfSU5GSU5JVFl8ZCg/OmkoPzpzcGxheXxhbG9nKD86SGVpZ2h0fFRvcHxXaWR0aHxMZWZ0fEFyZ3VtZW50cyl8cmVjdG9yaWVzKXxlKD86c2NyaXB0aW9ufGZhdWx0KD86U3RhdHVzfENoKD86ZWNrZWR8YXJzZXQpfFZpZXcpKSl8dSg/OnNlcig/OlByb2ZpbGV8TGFuZ3VhZ2V8QWdlbnQpfG4oPzppcXVlSUR8ZGVmaW5lZCl8cGRhdGVJbnRlcnZhbCl8X2NvbnRlbnR8cCg/Oml4ZWxEZXB0aHxvcnR8ZXJzb25hbGJhcnxrY3MxMXxsKD86dWdpbnN8YXRmb3JtKXxhKD86dGhuYW1lfGRkaW5nKD86UmlnaHR8Qm90dG9tfFRvcHxMZWZ0KXxyZW50KD86V2luZG93fExheWVyKT98Z2UoPzpYKD86T2Zmc2V0KT98WSg/Ok9mZnNldCk/KSl8cig/Om8oPzp0byg/OmNvbHx0eXBlKXxkdWN0KD86U3ViKT98bXB0ZXIpfGUoPzp2aW91c3xmaXgpKSl8ZSg/Om4oPzpjb2Rpbmd8YWJsZWRQbHVnaW4pfHgoPzp0ZXJuYWx8cGFuZG8pfG1iZWRzKXx2KD86aXNpYmlsaXR5fGVuZG9yKD86U3ViKT98TGlua2NvbG9yKXxVUkxVbmVuY29kZWR8UCg/Okl8T1NJVElWRV9JTkZJTklUWSl8Zig/OmlsZW5hbWV8byg/Om50KD86U2l6ZXxGYW1pbHl8V2VpZ2h0KXxybU5hbWUpfHJhbWUoPzpzfEVsZW1lbnQpfGdDb2xvcil8RXx3aGl0ZVNwYWNlfGwoPzppKD86c3RTdHlsZVR5cGV8big/OmVIZWlnaHR8a0NvbG9yKSl8byg/OmNhKD86dGlvbig/OmJhcik/fGxOYW1lKXx3c3JjKXxlKD86bmd0aHxmdCg/OkNvbnRleHQpPyl8YSg/OnN0KD86TSg/Om9kaWZpZWR8YXRjaCl8SW5kZXh8UGFyZW4pfHllcig/OnN8WCl8bmd1YWdlKSl8YSg/OnBwKD86TWlub3JWZXJzaW9ufE5hbWV8Q28oPzpkZU5hbWV8cmUpfFZlcnNpb24pfHZhaWwoPzpIZWlnaHR8VG9wfFdpZHRofExlZnQpfGxsfHIoPzppdHl8Z3VtZW50cyl8TGlua2NvbG9yfGJvdmUpfHIoPzppZ2h0KD86Q29udGV4dCk/fGUoPzpzcG9uc2UoPzpYTUx8VGV4dCl8YWR5U3RhdGUpKXxnbG9iYWx8eHxtKD86aW1lVHlwZXN8dWx0aWxpbmV8ZW51YmFyfGFyZ2luKD86UmlnaHR8Qm90dG9tfFRvcHxMZWZ0KSl8TCg/Ok4oPzoxMHwyKXxPRyg/OjEwRXwyRSkpfGIoPzpvKD86dHRvbXxyZGVyKD86V2lkdGh8UmlnaHRXaWR0aHxCb3R0b21XaWR0aHxTdHlsZXxDb2xvcnxUb3BXaWR0aHxMZWZ0V2lkdGgpKXx1ZmZlckRlcHRofGVsb3d8YWNrZ3JvdW5kKD86Q29sb3J8SW1hZ2UpKSlcYi99LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbi5maXJlYnVnIl0scmVnZXg6Lyhjb25zb2xlKShcLikod2FybnxpbmZvfGxvZ3xlcnJvcnx0aW1lfHRpbWVFbmR8YXNzZXJ0KVxiL30se3Rva2VuOmZ1bmN0aW9uKG4pe3JldHVybiBlLmhhc093blByb3BlcnR5KG4pPyJ2YXJpYWJsZS5sYW5ndWFnZSI6ci5oYXNPd25Qcm9wZXJ0eShuKT8iaW52YWxpZC5kZXByZWNhdGVkIjp1Lmhhc093blByb3BlcnR5KG4pPyJzdG9yYWdlLnR5cGUiOnQuaGFzT3duUHJvcGVydHkobik/ImtleXdvcmQiOmEuaGFzT3duUHJvcGVydHkobik/ImNvbnN0YW50Lmxhbmd1YWdlIjpmLmhhc093blByb3BlcnR5KG4pPyJpbnZhbGlkLmlsbGVnYWwiOm49PSJkZWJ1Z2dlciI/ImludmFsaWQuZGVwcmVjYXRlZCI6ImlkZW50aWZpZXIifSxyZWdleDpsfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4Oi8hfFwkfCV8JnxcKnxcLVwtfFwtfFwrXCt8XCt8fnw9PT18PT18PXwhPXwhPT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFx8XHx8XD9cOnxcKj18JT18XCs9fFwtPXwmPXxcXj18XGIoPzppbnxpbnN0YW5jZW9mfG5ld3xkZWxldGV8dHlwZW9mfHZvaWQpLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6L1w/fFw6fFwsfFw7fFwuLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4Oi9bXFsoe10vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6L1tcXSl9XS99LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6L1wvPT8vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4Oi9eIyEuKiQvfSx7dG9rZW46InRleHQiLHJlZ2V4Oi9ccysvfV0scmVnZXhfYWxsb3dlZDpbby5nZXRTdGFydFJ1bGUoImRvYy1zdGFydCIpLHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoiY29tbWVudF9yZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiokIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiXFwvIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleDpbe3Rva2VuOiJyZWdleHAua2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcXFwoPzp1W1xcZGEtZkEtRl17NH18eFtcXGRhLWZBLUZdezJ9fC4pIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiL1xcdyoiLG5leHQ6InN0YXJ0IixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiW15cXFxcL1xcW10rIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6IlxcWyIsbmV4dDoicmVnZXhfY2hhcmFjdGVyX2NsYXNzIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0scmVnZXhfY2hhcmFjdGVyX2NsYXNzOlt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXSIsbmV4dDoicmVnZXgiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiW15cXFxcXFxdXSsiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxmdW5jdGlvbl9hcmd1bWVudHM6W3t0b2tlbjoidmFyaWFibGUucGFyYW1ldGVyIixyZWdleDpsfSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDoiWywgXSsiLG1lcmdlOiEwfSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDoiJCIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGNvbW1lbnRfcmVnZXhfYWxsb3dlZDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixtZXJnZTohMCxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixtZXJnZTohMCxuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFxc3RyaW5nOlt7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmVzY2FwZSIscmVnZXg6Y30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbXiJcXFxcXSsnLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlxcXFwkIixuZXh0OiJxcXN0cmluZyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDonInwkJyxuZXh0OiJzdGFydCIsbWVyZ2U6ITB9XSxxc3RyaW5nOlt7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmVzY2FwZSIscmVnZXg6Y30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbXidcXFxcXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlxcXFwkIixuZXh0OiJxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInfCQiLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dfSx0aGlzLmVtYmVkUnVsZXMobywiZG9jLSIsW28uZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtyLmluaGVyaXRzKGEsdSksdC5KYXZhU2NyaXB0SGlnaGxpZ2h0UnVsZXM9YX0pLGRlZmluZSgiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLHM9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudC5kb2MudGFnIixyZWdleDoiQFtcXHdcXGRfXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJUT0RPIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlteQFxcKl0rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6Ii4ifV19fTtyLmluaGVyaXRzKHMsaSkscy5nZXRTdGFydFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKig/PVxcKikiLG5leHQ6ZX19LHMuZ2V0RW5kUnVsZT1mdW5jdGlvbihlKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwqXFwvIixuZXh0OmV9fSx0LkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcz1zfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXlxzKyQvLnRlc3QoZSk/L15ccypcfS8udGVzdCh0KTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0TGluZSh0KSxpPW4ubWF0Y2goL14oXHMqXH0pLyk7aWYoIWkpcmV0dXJuIDA7dmFyIHM9aVsxXS5sZW5ndGgsbz1lLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp0LGNvbHVtbjpzfSk7aWYoIW98fG8ucm93PT10KXJldHVybiAwO3ZhciB1PXRoaXMuJGdldEluZGVudChlLmdldExpbmUoby5yb3cpKTtlLnJlcGxhY2UobmV3IHIodCwwLHQscy0xKSx1KX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14oXHMrKS8pO3JldHVybiB0P3RbMV06IiJ9fSkuY2FsbChpLnByb3RvdHlwZSksdC5NYXRjaGluZ0JyYWNlT3V0ZGVudD1pfSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vYmVoYXZpb3VyIikuQmVoYXZpb3VyLHM9ZnVuY3Rpb24oKXt0aGlzLmFkZCgiYnJhY2VzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSJ7Iil7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO3JldHVybiBvIT09IiI/e3RleHQ6InsiK28rIn0iLHNlbGVjdGlvbjohMX06e3RleHQ6Int9IixzZWxlY3Rpb246WzEsMV19fWlmKGk9PSJ9Iil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0ifSIpe3ZhciBsPXIuJGZpbmRPcGVuaW5nQnJhY2tldCgifSIse2NvbHVtbjp1LmNvbHVtbisxLHJvdzp1LnJvd30pO2lmKGwhPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fWVsc2UgaWYoaT09IlxuIil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0ifSIpe3ZhciBjPXIuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnUucm93LGNvbHVtbjp1LmNvbHVtbisxfSk7aWYoIWMpcmV0dXJuIG51bGw7dmFyIGg9dGhpcy5nZXROZXh0TGluZUluZGVudChlLGEuc3Vic3RyaW5nKDAsYS5sZW5ndGgtMSksci5nZXRUYWJTdHJpbmcoKSkscD10aGlzLiRnZXRJbmRlbnQoci5kb2MuZ2V0TGluZShjLnJvdykpO3JldHVybnt0ZXh0OiJcbiIraCsiXG4iK3Asc2VsZWN0aW9uOlsxLGgubGVuZ3RoLDEsaC5sZW5ndGhdfX19fSksdGhpcy5hZGQoImJyYWNlcyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiZzPT0ieyIpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5lbmQuY29sdW1uLGkuZW5kLmNvbHVtbisxKTtpZih1PT0ifSIpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSksdGhpcy5hZGQoInBhcmVucyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iKCIpe3ZhciBzPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSxvPXIuZG9jLmdldFRleHRSYW5nZShzKTtyZXR1cm4gbyE9PSIiP3t0ZXh0OiIoIitvKyIpIixzZWxlY3Rpb246ITF9Ont0ZXh0OiIoKSIsc2VsZWN0aW9uOlsxLDFdfX1pZihpPT0iKSIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09IikiKXt2YXIgbD1yLiRmaW5kT3BlbmluZ0JyYWNrZXQoIikiLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihsIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgicGFyZW5zIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSIoIil7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLnN0YXJ0LmNvbHVtbisxLGkuc3RhcnQuY29sdW1uKzIpO2lmKHU9PSIpIilyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09JyInfHxpPT0iJyIpe3ZhciBzPWksbz1uLmdldFNlbGVjdGlvblJhbmdlKCksdT1yLmRvYy5nZXRUZXh0UmFuZ2Uobyk7aWYodSE9PSIiKXJldHVybnt0ZXh0OnMrdStzLHNlbGVjdGlvbjohMX07dmFyIGE9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGY9ci5kb2MuZ2V0TGluZShhLnJvdyksbD1mLnN1YnN0cmluZyhhLmNvbHVtbi0xLGEuY29sdW1uKTtpZihsPT0iXFwiKXJldHVybiBudWxsO3ZhciBjPXIuZ2V0VG9rZW5zKG8uc3RhcnQucm93KSxoPTAscCxkPS0xO2Zvcih2YXIgdj0wO3Y8Yy5sZW5ndGg7disrKXtwPWNbdl0scC50eXBlPT0ic3RyaW5nIj9kPS0xOmQ8MCYmKGQ9cC52YWx1ZS5pbmRleE9mKHMpKTtpZihwLnZhbHVlLmxlbmd0aCtoPm8uc3RhcnQuY29sdW1uKWJyZWFrO2grPWNbdl0udmFsdWUubGVuZ3RofWlmKCFwfHxkPDAmJnAudHlwZSE9PSJjb21tZW50IiYmKHAudHlwZSE9PSJzdHJpbmcifHxvLnN0YXJ0LmNvbHVtbiE9PXAudmFsdWUubGVuZ3RoK2gtMSYmcC52YWx1ZS5sYXN0SW5kZXhPZihzKT09PXAudmFsdWUubGVuZ3RoLTEpKXJldHVybnt0ZXh0OnMrcyxzZWxlY3Rpb246WzEsMV19O2lmKHAmJnAudHlwZT09PSJzdHJpbmciKXt2YXIgbT1mLnN1YnN0cmluZyhhLmNvbHVtbixhLmNvbHVtbisxKTtpZihtPT1zKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiYocz09JyInfHxzPT0iJyIpKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09JyInKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pfTtyLmluaGVyaXRzKHMsaSksdC5Dc3R5bGVCZWhhdmlvdXI9c30pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2Uscz1lKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLG89dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307ci5pbmhlcml0cyhvLHMpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9Lyhce3xcWylbXlx9XF1dKiR8XlxzKihcL1wqKS8sdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj0vXlteXFtce10qKFx9fFxdKXxeW1xzXCpdKihcKlwvKS8sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKSxzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXg7aWYoc1sxXSlyZXR1cm4gdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrKGUsc1sxXSxuLG8pO3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8rc1swXS5sZW5ndGgpO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX1pZih0IT09Im1hcmtiZWdpbmVuZCIpcmV0dXJuO3ZhciBzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RvcE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleCtzWzBdLmxlbmd0aDtpZihzWzJdKXt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9dmFyIGE9e3JvdzpuLGNvbHVtbjpvfSxmPWUuJGZpbmRPcGVuaW5nQnJhY2tldChzWzFdLGEpO2lmKCFmKXJldHVybjtyZXR1cm4gZi5jb2x1bW4rKyxhLmNvbHVtbi0tLGkuZnJvbVBvaW50cyhmLGEpfX19LmNhbGwoby5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGk9dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobik7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3Qocik/InN0YXJ0Ijp0PT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KHIpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihlLHQsbil7dmFyIGk9L1xTLyxzPWUuZ2V0TGluZSh0KSxvPXMuc2VhcmNoKGkpO2lmKG89PS0xKXJldHVybjt2YXIgdT1ufHxzLmxlbmd0aCxhPWUuZ2V0TGVuZ3RoKCksZj10LGw9dDt3aGlsZSgrK3Q8YSl7dmFyIGM9ZS5nZXRMaW5lKHQpLnNlYXJjaChpKTtpZihjPT0tMSljb250aW51ZTtpZihjPD1vKWJyZWFrO2w9dH1pZihsPmYpe3ZhciBoPWUuZ2V0TGluZShsKS5sZW5ndGg7cmV0dXJuIG5ldyByKGYsdSxsLGgpfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGUsdCxuLGkscyl7dmFyIG89e3JvdzpuLGNvbHVtbjppKzF9LHU9ZS4kZmluZENsb3NpbmdCcmFja2V0KHQsbyxzKTtpZighdSlyZXR1cm47dmFyIGE9ZS5mb2xkV2lkZ2V0c1t1LnJvd107cmV0dXJuIGE9PW51bGwmJihhPXRoaXMuZ2V0Rm9sZFdpZGdldChlLHUucm93KSksYT09InN0YXJ0IiYmdS5yb3c+by5yb3cmJih1LnJvdy0tLHUuY29sdW1uPWUuZ2V0TGluZSh1LnJvdykubGVuZ3RoKSxyLmZyb21Qb2ludHMobyx1KX19KS5jYWxsKGkucHJvdG90eXBlKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-json.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9qc29uIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2pzb25faGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9qc29uX2hpZ2hsaWdodF9ydWxlcyIpLkpzb25IaWdobGlnaHRSdWxlcyx1PWUoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGE9ZSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGY9ZSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGw9ZSgiLi4vd29ya2VyL3dvcmtlcl9jbGllbnQiKS5Xb3JrZXJDbGllbnQsYz1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgcygobmV3IG8pLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IHUsdGhpcy4kYmVoYXZpb3VyPW5ldyBhLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBmfTtyLmluaGVyaXRzKGMsaSksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRnZXRJbmRlbnQodCk7aWYoZT09InN0YXJ0Iil7dmFyIGk9dC5tYXRjaCgvXi4qW1x7XChcW11ccyokLyk7aSYmKHIrPW4pfXJldHVybiByfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KHQsbil9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQodCxuKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGwoWyJhY2UiXSwiYWNlL21vZGUvanNvbl93b3JrZXIiLCJKc29uV29ya2VyIik7cmV0dXJuIHQuYXR0YWNoVG9Eb2N1bWVudChlLmdldERvY3VtZW50KCkpLHQub24oImVycm9yIixmdW5jdGlvbih0KXtlLnNldEFubm90YXRpb25zKFt0LmRhdGFdKX0pLHQub24oIm9rIixmdW5jdGlvbigpe2UuY2xlYXJBbm5vdGF0aW9ucygpfSksdH19LmNhbGwoYy5wcm90b3R5cGUpLHQuTW9kZT1jfSksZGVmaW5lKCJhY2UvbW9kZS9qc29uX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxzPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46InZhcmlhYmxlIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXVxccyooPz06KSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDonIicsbmV4dDoic3RyaW5nIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiMFt4WF1bMC05YS1mQS1GXStcXGIifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuYm9vbGVhbiIscmVnZXg6Iig/OnRydWV8ZmFsc2UpXFxiIn0se3Rva2VuOiJpbnZhbGlkLmlsbGVnYWwiLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOiJpbnZhbGlkLmlsbGVnYWwiLHJlZ2V4OiJcXC9cXC8uKiQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IltbKHtdIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJbXFxdKX1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDovXFwoPzp4WzAtOWEtZkEtRl17Mn18dVswLTlhLWZBLUZdezR9KS99LHt0b2tlbjoic3RyaW5nIixyZWdleDonW14iXFxcXF0rJyxtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciJyxuZXh0OiJzdGFydCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiIixuZXh0OiJzdGFydCIsbWVyZ2U6ITB9XX19O3IuaW5oZXJpdHMocyxpKSx0Lkpzb25IaWdobGlnaHRSdWxlcz1zfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXlxzKyQvLnRlc3QoZSk/L15ccypcfS8udGVzdCh0KTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0TGluZSh0KSxpPW4ubWF0Y2goL14oXHMqXH0pLyk7aWYoIWkpcmV0dXJuIDA7dmFyIHM9aVsxXS5sZW5ndGgsbz1lLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp0LGNvbHVtbjpzfSk7aWYoIW98fG8ucm93PT10KXJldHVybiAwO3ZhciB1PXRoaXMuJGdldEluZGVudChlLmdldExpbmUoby5yb3cpKTtlLnJlcGxhY2UobmV3IHIodCwwLHQscy0xKSx1KX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14oXHMrKS8pO3JldHVybiB0P3RbMV06IiJ9fSkuY2FsbChpLnByb3RvdHlwZSksdC5NYXRjaGluZ0JyYWNlT3V0ZGVudD1pfSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vYmVoYXZpb3VyIikuQmVoYXZpb3VyLHM9ZnVuY3Rpb24oKXt0aGlzLmFkZCgiYnJhY2VzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSJ7Iil7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO3JldHVybiBvIT09IiI/e3RleHQ6InsiK28rIn0iLHNlbGVjdGlvbjohMX06e3RleHQ6Int9IixzZWxlY3Rpb246WzEsMV19fWlmKGk9PSJ9Iil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0ifSIpe3ZhciBsPXIuJGZpbmRPcGVuaW5nQnJhY2tldCgifSIse2NvbHVtbjp1LmNvbHVtbisxLHJvdzp1LnJvd30pO2lmKGwhPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fWVsc2UgaWYoaT09IlxuIil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0ifSIpe3ZhciBjPXIuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnUucm93LGNvbHVtbjp1LmNvbHVtbisxfSk7aWYoIWMpcmV0dXJuIG51bGw7dmFyIGg9dGhpcy5nZXROZXh0TGluZUluZGVudChlLGEuc3Vic3RyaW5nKDAsYS5sZW5ndGgtMSksci5nZXRUYWJTdHJpbmcoKSkscD10aGlzLiRnZXRJbmRlbnQoci5kb2MuZ2V0TGluZShjLnJvdykpO3JldHVybnt0ZXh0OiJcbiIraCsiXG4iK3Asc2VsZWN0aW9uOlsxLGgubGVuZ3RoLDEsaC5sZW5ndGhdfX19fSksdGhpcy5hZGQoImJyYWNlcyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiZzPT0ieyIpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5lbmQuY29sdW1uLGkuZW5kLmNvbHVtbisxKTtpZih1PT0ifSIpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSksdGhpcy5hZGQoInBhcmVucyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iKCIpe3ZhciBzPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSxvPXIuZG9jLmdldFRleHRSYW5nZShzKTtyZXR1cm4gbyE9PSIiP3t0ZXh0OiIoIitvKyIpIixzZWxlY3Rpb246ITF9Ont0ZXh0OiIoKSIsc2VsZWN0aW9uOlsxLDFdfX1pZihpPT0iKSIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09IikiKXt2YXIgbD1yLiRmaW5kT3BlbmluZ0JyYWNrZXQoIikiLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihsIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgicGFyZW5zIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSIoIil7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLnN0YXJ0LmNvbHVtbisxLGkuc3RhcnQuY29sdW1uKzIpO2lmKHU9PSIpIilyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09JyInfHxpPT0iJyIpe3ZhciBzPWksbz1uLmdldFNlbGVjdGlvblJhbmdlKCksdT1yLmRvYy5nZXRUZXh0UmFuZ2Uobyk7aWYodSE9PSIiKXJldHVybnt0ZXh0OnMrdStzLHNlbGVjdGlvbjohMX07dmFyIGE9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGY9ci5kb2MuZ2V0TGluZShhLnJvdyksbD1mLnN1YnN0cmluZyhhLmNvbHVtbi0xLGEuY29sdW1uKTtpZihsPT0iXFwiKXJldHVybiBudWxsO3ZhciBjPXIuZ2V0VG9rZW5zKG8uc3RhcnQucm93KSxoPTAscCxkPS0xO2Zvcih2YXIgdj0wO3Y8Yy5sZW5ndGg7disrKXtwPWNbdl0scC50eXBlPT0ic3RyaW5nIj9kPS0xOmQ8MCYmKGQ9cC52YWx1ZS5pbmRleE9mKHMpKTtpZihwLnZhbHVlLmxlbmd0aCtoPm8uc3RhcnQuY29sdW1uKWJyZWFrO2grPWNbdl0udmFsdWUubGVuZ3RofWlmKCFwfHxkPDAmJnAudHlwZSE9PSJjb21tZW50IiYmKHAudHlwZSE9PSJzdHJpbmcifHxvLnN0YXJ0LmNvbHVtbiE9PXAudmFsdWUubGVuZ3RoK2gtMSYmcC52YWx1ZS5sYXN0SW5kZXhPZihzKT09PXAudmFsdWUubGVuZ3RoLTEpKXJldHVybnt0ZXh0OnMrcyxzZWxlY3Rpb246WzEsMV19O2lmKHAmJnAudHlwZT09PSJzdHJpbmciKXt2YXIgbT1mLnN1YnN0cmluZyhhLmNvbHVtbixhLmNvbHVtbisxKTtpZihtPT1zKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiYocz09JyInfHxzPT0iJyIpKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09JyInKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pfTtyLmluaGVyaXRzKHMsaSksdC5Dc3R5bGVCZWhhdmlvdXI9c30pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2Uscz1lKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLG89dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307ci5pbmhlcml0cyhvLHMpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9Lyhce3xcWylbXlx9XF1dKiR8XlxzKihcL1wqKS8sdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj0vXlteXFtce10qKFx9fFxdKXxeW1xzXCpdKihcKlwvKS8sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKSxzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXg7aWYoc1sxXSlyZXR1cm4gdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrKGUsc1sxXSxuLG8pO3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8rc1swXS5sZW5ndGgpO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX1pZih0IT09Im1hcmtiZWdpbmVuZCIpcmV0dXJuO3ZhciBzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RvcE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleCtzWzBdLmxlbmd0aDtpZihzWzJdKXt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9dmFyIGE9e3JvdzpuLGNvbHVtbjpvfSxmPWUuJGZpbmRPcGVuaW5nQnJhY2tldChzWzFdLGEpO2lmKCFmKXJldHVybjtyZXR1cm4gZi5jb2x1bW4rKyxhLmNvbHVtbi0tLGkuZnJvbVBvaW50cyhmLGEpfX19LmNhbGwoby5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGk9dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobik7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3Qocik/InN0YXJ0Ijp0PT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KHIpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihlLHQsbil7dmFyIGk9L1xTLyxzPWUuZ2V0TGluZSh0KSxvPXMuc2VhcmNoKGkpO2lmKG89PS0xKXJldHVybjt2YXIgdT1ufHxzLmxlbmd0aCxhPWUuZ2V0TGVuZ3RoKCksZj10LGw9dDt3aGlsZSgrK3Q8YSl7dmFyIGM9ZS5nZXRMaW5lKHQpLnNlYXJjaChpKTtpZihjPT0tMSljb250aW51ZTtpZihjPD1vKWJyZWFrO2w9dH1pZihsPmYpe3ZhciBoPWUuZ2V0TGluZShsKS5sZW5ndGg7cmV0dXJuIG5ldyByKGYsdSxsLGgpfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGUsdCxuLGkscyl7dmFyIG89e3JvdzpuLGNvbHVtbjppKzF9LHU9ZS4kZmluZENsb3NpbmdCcmFja2V0KHQsbyxzKTtpZighdSlyZXR1cm47dmFyIGE9ZS5mb2xkV2lkZ2V0c1t1LnJvd107cmV0dXJuIGE9PW51bGwmJihhPXRoaXMuZ2V0Rm9sZFdpZGdldChlLHUucm93KSksYT09InN0YXJ0IiYmdS5yb3c+by5yb3cmJih1LnJvdy0tLHUuY29sdW1uPWUuZ2V0TGluZSh1LnJvdykubGVuZ3RoKSxyLmZyb21Qb2ludHMobyx1KX19KS5jYWxsKGkucHJvdG90eXBlKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-jsx.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9qc3giLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvanN4X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gbCgpe3RoaXMuJHRva2VuaXplcj1uZXcgcygobmV3IG8pLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IHUsdGhpcy4kYmVoYXZpb3VyPW5ldyBhLHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBmfXZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dCIpLk1vZGUscz1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsbz1lKCIuL2pzeF9oaWdobGlnaHRfcnVsZXMiKS5Kc3hIaWdobGlnaHRSdWxlcyx1PWUoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGE9ZSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGY9ZSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlO3IuaW5oZXJpdHMobCxpKSxmdW5jdGlvbigpe3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJGdldEluZGVudCh0KSxpPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKHQsZSkscz1pLnRva2VucztpZihzLmxlbmd0aCYmc1tzLmxlbmd0aC0xXS50eXBlPT0iY29tbWVudCIpcmV0dXJuIHI7aWYoZT09InN0YXJ0Iil7dmFyIG89dC5tYXRjaCgvXi4qW1x7XChcW11ccyokLyk7byYmKHIrPW4pfXJldHVybiByfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KHQsbil9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQodCxuKX19LmNhbGwobC5wcm90b3R5cGUpLHQuTW9kZT1sfSksZGVmaW5lKCJhY2UvbW9kZS9qc3hfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi9saWIvbGFuZyIpLHM9ZSgiLi9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiKS5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXMsbz1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLHU9ZnVuY3Rpb24oKXt2YXIgZT1pLmFycmF5VG9NYXAoImJyZWFrfGRvfGluc3RhbmNlb2Z8dHlwZW9mfGNhc2V8ZWxzZXxuZXd8dmFyfGNhdGNofGZpbmFsbHl8cmV0dXJufHZvaWR8Y29udGludWV8Zm9yfHN3aXRjaHxkZWZhdWx0fHdoaWxlfGZ1bmN0aW9ufHRoaXN8aWZ8dGhyb3d8ZGVsZXRlfGlufHRyeXxjbGFzc3xleHRlbmRzfHN1cGVyfGltcG9ydHxmcm9tfGludG98aW1wbGVtZW50c3xpbnRlcmZhY2V8c3RhdGljfG1peGlufG92ZXJyaWRlfGFic3RyYWN0fGZpbmFsfG51bWJlcnxpbnR8c3RyaW5nfGJvb2xlYW58dmFyaWFudHxsb2d8YXNzZXJ0Ii5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgibnVsbHx0cnVlfGZhbHNlfE5hTnxJbmZpbml0eXxfX0ZJTEVfX3xfX0xJTkVfX3x1bmRlZmluZWQiLnNwbGl0KCJ8IikpLG49aS5hcnJheVRvTWFwKCJkZWJ1Z2dlcnx3aXRofGNvbnN0fGV4cG9ydHxsZXR8cHJpdmF0ZXxwdWJsaWN8eWllbGR8cHJvdGVjdGVkfGV4dGVybnxuYXRpdmV8YXN8b3BlcmF0b3J8X19mYWtlX198X19yZWFkb25seV9fIi5zcGxpdCgifCIpKSxyPSJbYS16QS1aX11bYS16QS1aMC05X10qXFxiIjt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qJCJ9LHMuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXCoiLG1lcmdlOiEwLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbL10oPzooPzpcXFsoPzpcXFxcXXxbXlxcXV0pK1xcXSl8KD86XFxcXC98W15cXF0vXSkpKlsvXVxcdypcXHMqKD89WykuLDtdfCQpIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiMFt4WF1bMC05YS1mQS1GXStcXGIifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuYm9vbGVhbiIscmVnZXg6Iig/OnRydWV8ZmFsc2UpXFxiIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwidGV4dCIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIl0scmVnZXg6IihmdW5jdGlvbikoXFxzKykoIityKyIpIn0se3Rva2VuOmZ1bmN0aW9uKHIpe3JldHVybiByPT0idGhpcyI/InZhcmlhYmxlLmxhbmd1YWdlIjpyPT0iZnVuY3Rpb24iPyJzdG9yYWdlLnR5cGUiOmUuaGFzT3duUHJvcGVydHkocil8fG4uaGFzT3duUHJvcGVydHkocik/ImtleXdvcmQiOnQuaGFzT3duUHJvcGVydHkocik/ImNvbnN0YW50Lmxhbmd1YWdlIjovXl8/W0EtWl1bYS16QS1aMC05X10qJC8udGVzdChyKT8ibGFuZ3VhZ2Uuc3VwcG9ydC5jbGFzcyI6ImlkZW50aWZpZXIifSxyZWdleDpyfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiIhfCV8JnxcXCp8XFwtXFwtfFxcLXxcXCtcXCt8XFwrfH58PT18PXwhPXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XFx8XFx8fFxcP1xcOnxcXCo9fCU9fFxcKz18XFwtPXwmPXxcXF49fFxcYig/OmlufGluc3RhbmNlb2Z8bmV3fGRlbGV0ZXx0eXBlb2Z8dm9pZCkifSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDoiXFw/fFxcOnxcXCx8XFw7fFxcLiJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1soezxdIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJbXFxdKX0+XSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfSx0aGlzLmVtYmVkUnVsZXMocywiZG9jLSIsW3MuZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtyLmluaGVyaXRzKHUsbyksdC5Kc3hIaWdobGlnaHRSdWxlcz11fSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMscz1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O3IuaW5oZXJpdHMocyxpKSxzLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihlKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDplfX0scy5nZXRFbmRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6ZX19LHQuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPXN9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxpPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQpe3JldHVybi9eXHMrJC8udGVzdChlKT8vXlxzKlx9Ly50ZXN0KHQpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRMaW5lKHQpLGk9bi5tYXRjaCgvXihccypcfSkvKTtpZighaSlyZXR1cm4gMDt2YXIgcz1pWzFdLmxlbmd0aCxvPWUuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnQsY29sdW1uOnN9KTtpZighb3x8by5yb3c9PXQpcmV0dXJuIDA7dmFyIHU9dGhpcy4kZ2V0SW5kZW50KGUuZ2V0TGluZShvLnJvdykpO2UucmVwbGFjZShuZXcgcih0LDAsdCxzLTEpLHUpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCgvXihccyspLyk7cmV0dXJuIHQ/dFsxXToiIn19KS5jYWxsKGkucHJvdG90eXBlKSx0Lk1hdGNoaW5nQnJhY2VPdXRkZW50PWl9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIscz1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09InsiKXt2YXIgcz1uLmdldFNlbGVjdGlvblJhbmdlKCksbz1yLmRvYy5nZXRUZXh0UmFuZ2Uocyk7cmV0dXJuIG8hPT0iIj97dGV4dDoieyIrbysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoaT09In0iKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJ9Iil7dmFyIGw9ci4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOnUuY29sdW1uKzEscm93OnUucm93fSk7aWYobCE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihpPT0iXG4iKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJ9Iil7dmFyIGM9ci5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dS5yb3csY29sdW1uOnUuY29sdW1uKzF9KTtpZighYylyZXR1cm4gbnVsbDt2YXIgaD10aGlzLmdldE5leHRMaW5lSW5kZW50KGUsYS5zdWJzdHJpbmcoMCxhLmxlbmd0aC0xKSxyLmdldFRhYlN0cmluZygpKSxwPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKGMucm93KSk7cmV0dXJue3RleHQ6IlxuIitoKyJcbiIrcCxzZWxlY3Rpb246WzEsaC5sZW5ndGgsMSxoLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSJ7Iil7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLmVuZC5jb2x1bW4saS5lbmQuY29sdW1uKzEpO2lmKHU9PSJ9IilyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSIoIil7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO3JldHVybiBvIT09IiI/e3RleHQ6IigiK28rIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGk9PSIpIil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0iKSIpe3ZhciBsPXIuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjp1LmNvbHVtbisxLHJvdzp1LnJvd30pO2lmKGwhPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcz09IigiKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09IikiKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0nIid8fGk9PSInIil7dmFyIHM9aSxvPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSx1PXIuZG9jLmdldFRleHRSYW5nZShvKTtpZih1IT09IiIpcmV0dXJue3RleHQ6cyt1K3Msc2VsZWN0aW9uOiExfTt2YXIgYT1uLmdldEN1cnNvclBvc2l0aW9uKCksZj1yLmRvYy5nZXRMaW5lKGEucm93KSxsPWYuc3Vic3RyaW5nKGEuY29sdW1uLTEsYS5jb2x1bW4pO2lmKGw9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGM9ci5nZXRUb2tlbnMoby5zdGFydC5yb3cpLGg9MCxwLGQ9LTE7Zm9yKHZhciB2PTA7djxjLmxlbmd0aDt2Kyspe3A9Y1t2XSxwLnR5cGU9PSJzdHJpbmciP2Q9LTE6ZDwwJiYoZD1wLnZhbHVlLmluZGV4T2YocykpO2lmKHAudmFsdWUubGVuZ3RoK2g+by5zdGFydC5jb2x1bW4pYnJlYWs7aCs9Y1t2XS52YWx1ZS5sZW5ndGh9aWYoIXB8fGQ8MCYmcC50eXBlIT09ImNvbW1lbnQiJiYocC50eXBlIT09InN0cmluZyJ8fG8uc3RhcnQuY29sdW1uIT09cC52YWx1ZS5sZW5ndGgraC0xJiZwLnZhbHVlLmxhc3RJbmRleE9mKHMpPT09cC52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6cytzLHNlbGVjdGlvbjpbMSwxXX07aWYocCYmcC50eXBlPT09InN0cmluZyIpe3ZhciBtPWYuc3Vic3RyaW5nKGEuY29sdW1uLGEuY29sdW1uKzEpO2lmKG09PXMpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJihzPT0nIid8fHM9PSInIikpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5zdGFydC5jb2x1bW4rMSxpLnN0YXJ0LmNvbHVtbisyKTtpZih1PT0nIicpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSl9O3IuaW5oZXJpdHMocyxpKSx0LkNzdHlsZUJlaGF2aW91cj1zfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxzPWUoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsbz10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtyLmluaGVyaXRzKG8scyksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pLHM9ci5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleDtpZihzWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soZSxzWzFdLG4sbyk7dmFyIHU9ZS5nZXRDb21tZW50Rm9sZFJhbmdlKG4sbytzWzBdLmxlbmd0aCk7cmV0dXJuIHUuZW5kLmNvbHVtbi09Mix1fWlmKHQhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIHM9ci5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihzKXt2YXIgbz1zLmluZGV4K3NbMF0ubGVuZ3RoO2lmKHNbMl0pe3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8pO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX12YXIgYT17cm93Om4sY29sdW1uOm99LGY9ZS4kZmluZE9wZW5pbmdCcmFja2V0KHNbMV0sYSk7aWYoIWYpcmV0dXJuO3JldHVybiBmLmNvbHVtbisrLGEuY29sdW1uLS0saS5mcm9tUG9pbnRzKGYsYSl9fX0uY2FsbChvLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2UsaT10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChyKT8ic3RhcnQiOnQ9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3Qocik/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT0vXFMvLHM9ZS5nZXRMaW5lKHQpLG89cy5zZWFyY2goaSk7aWYobz09LTEpcmV0dXJuO3ZhciB1PW58fHMubGVuZ3RoLGE9ZS5nZXRMZW5ndGgoKSxmPXQsbD10O3doaWxlKCsrdDxhKXt2YXIgYz1lLmdldExpbmUodCkuc2VhcmNoKGkpO2lmKGM9PS0xKWNvbnRpbnVlO2lmKGM8PW8pYnJlYWs7bD10fWlmKGw+Zil7dmFyIGg9ZS5nZXRMaW5lKGwpLmxlbmd0aDtyZXR1cm4gbmV3IHIoZix1LGwsaCl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oZSx0LG4saSxzKXt2YXIgbz17cm93Om4sY29sdW1uOmkrMX0sdT1lLiRmaW5kQ2xvc2luZ0JyYWNrZXQodCxvLHMpO2lmKCF1KXJldHVybjt2YXIgYT1lLmZvbGRXaWRnZXRzW3Uucm93XTtyZXR1cm4gYT09bnVsbCYmKGE9dGhpcy5nZXRGb2xkV2lkZ2V0KGUsdS5yb3cpKSxhPT0ic3RhcnQiJiZ1LnJvdz5vLnJvdyYmKHUucm93LS0sdS5jb2x1bW49ZS5nZXRMaW5lKHUucm93KS5sZW5ndGgpLHIuZnJvbVBvaW50cyhvLHUpfX0pLmNhbGwoaS5wcm90b3R5cGUpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-latex.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9sYXRleCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9sYXRleF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4vbGF0ZXhfaGlnaGxpZ2h0X3J1bGVzIikuTGF0ZXhIaWdobGlnaHRSdWxlcyx1PWUoIi4uL3JhbmdlIikuUmFuZ2UsYT1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgcygobmV3IG8pLmdldFJ1bGVzKCkpfTtyLmluaGVyaXRzKGEsaSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT0hMCxzPS9eKFxzKilcJS87Zm9yKHZhciBvPW47bzw9cjtvKyspaWYoIXMudGVzdCh0LmdldExpbmUobykpKXtpPSExO2JyZWFrfWlmKGkpe3ZhciBhPW5ldyB1KDAsMCwwLDApO2Zvcih2YXIgbz1uO288PXI7bysrKXt2YXIgZj10LmdldExpbmUobyksbD1mLm1hdGNoKHMpO2Euc3RhcnQucm93PW8sYS5lbmQucm93PW8sYS5lbmQuY29sdW1uPWxbMF0ubGVuZ3RoLHQucmVwbGFjZShhLGxbMV0pfX1lbHNlIHQuaW5kZW50Um93cyhuLHIsIiUiKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJGdldEluZGVudCh0KX19LmNhbGwoYS5wcm90b3R5cGUpLHQuTW9kZT1hfSksZGVmaW5lKCJhY2UvbW9kZS9sYXRleF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMscz1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJrZXl3b3JkIixyZWdleDoiXFxcXCg/OlteYS16QS1aXXxbYS16QS1aXSspIn0se3Rva2VuOiJscGFyZW4iLHJlZ2V4OiJbWyh7XSJ9LHt0b2tlbjoicnBhcmVuIixyZWdleDoiW1xcXSl9XSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFwkKD86KD86XFxcXC4pfCg/OlteXFwkXFxcXF0pKSo/XFwkIn0se3Rva2VuOiJjb21tZW50IixyZWdleDoiJS4qJCJ9XX19O3IuaW5oZXJpdHMocyxpKSx0LkxhdGV4SGlnaGxpZ2h0UnVsZXM9c30p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-less.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9sZXNzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2xlc3NfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dCIpLk1vZGUscz1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsbz1lKCIuL2xlc3NfaGlnaGxpZ2h0X3J1bGVzIikuTGVzc0hpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsYT1lKCIuL2ZvbGRpbmcvY3N0eWxlIikuRm9sZE1vZGUsZj1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgcygobmV3IG8pLmdldFJ1bGVzKCksImkiKSx0aGlzLiRvdXRkZW50PW5ldyB1LHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBhfTtyLmluaGVyaXRzKGYsaSksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRnZXRJbmRlbnQodCksaT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2Vucyh0LGUpLnRva2VucztpZihpLmxlbmd0aCYmaVtpLmxlbmd0aC0xXS50eXBlPT0iY29tbWVudCIpcmV0dXJuIHI7dmFyIHM9dC5tYXRjaCgvXi4qXHtccyokLyk7cmV0dXJuIHMmJihyKz1uKSxyfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KHQsbil9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQodCxuKX19LmNhbGwoZi5wcm90b3R5cGUpLHQuTW9kZT1mfSksZGVmaW5lKCJhY2UvbW9kZS9sZXNzX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsbz1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcChmdW5jdGlvbigpe3ZhciBlPSItd2Via2l0LXwtbW96LXwtby18LW1zLXwtc3ZnLXwtcGllLXwta2h0bWwtIi5zcGxpdCgifCIpLHQ9ImFwcGVhcmFuY2V8YmFja2dyb3VuZC1jbGlwfGJhY2tncm91bmQtaW5saW5lLXBvbGljeXxiYWNrZ3JvdW5kLW9yaWdpbnxiYWNrZ3JvdW5kLXNpemV8YmluZGluZ3xib3JkZXItYm90dG9tLWNvbG9yc3xib3JkZXItbGVmdC1jb2xvcnN8Ym9yZGVyLXJpZ2h0LWNvbG9yc3xib3JkZXItdG9wLWNvbG9yc3xib3JkZXItZW5kfGJvcmRlci1lbmQtY29sb3J8Ym9yZGVyLWVuZC1zdHlsZXxib3JkZXItZW5kLXdpZHRofGJvcmRlci1pbWFnZXxib3JkZXItc3RhcnR8Ym9yZGVyLXN0YXJ0LWNvbG9yfGJvcmRlci1zdGFydC1zdHlsZXxib3JkZXItc3RhcnQtd2lkdGh8Ym94LWFsaWdufGJveC1kaXJlY3Rpb258Ym94LWZsZXh8Ym94LWZsZXhncm91cHxib3gtb3JkaW5hbC1ncm91cHxib3gtb3JpZW50fGJveC1wYWNrfGJveC1zaXppbmd8Y29sdW1uLWNvdW50fGNvbHVtbi1nYXB8Y29sdW1uLXdpZHRofGNvbHVtbi1ydWxlfGNvbHVtbi1ydWxlLXdpZHRofGNvbHVtbi1ydWxlLXN0eWxlfGNvbHVtbi1ydWxlLWNvbG9yfGZsb2F0LWVkZ2V8Zm9udC1mZWF0dXJlLXNldHRpbmdzfGZvbnQtbGFuZ3VhZ2Utb3ZlcnJpZGV8Zm9yY2UtYnJva2VuLWltYWdlLWljb258aW1hZ2UtcmVnaW9ufG1hcmdpbi1lbmR8bWFyZ2luLXN0YXJ0fG9wYWNpdHl8b3V0bGluZXxvdXRsaW5lLWNvbG9yfG91dGxpbmUtb2Zmc2V0fG91dGxpbmUtcmFkaXVzfG91dGxpbmUtcmFkaXVzLWJvdHRvbWxlZnR8b3V0bGluZS1yYWRpdXMtYm90dG9tcmlnaHR8b3V0bGluZS1yYWRpdXMtdG9wbGVmdHxvdXRsaW5lLXJhZGl1cy10b3ByaWdodHxvdXRsaW5lLXN0eWxlfG91dGxpbmUtd2lkdGh8cGFkZGluZy1lbmR8cGFkZGluZy1zdGFydHxzdGFjay1zaXppbmd8dGFiLXNpemV8dGV4dC1ibGlua3x0ZXh0LWRlY29yYXRpb24tY29sb3J8dGV4dC1kZWNvcmF0aW9uLWxpbmV8dGV4dC1kZWNvcmF0aW9uLXN0eWxlfHRyYW5zZm9ybXx0cmFuc2Zvcm0tb3JpZ2lufHRyYW5zaXRpb258dHJhbnNpdGlvbi1kZWxheXx0cmFuc2l0aW9uLWR1cmF0aW9ufHRyYW5zaXRpb24tcHJvcGVydHl8dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb258dXNlci1mb2N1c3x1c2VyLWlucHV0fHVzZXItbW9kaWZ5fHVzZXItc2VsZWN0fHdpbmRvdy1zaGFkb3d8Ym9yZGVyLXJhZGl1cyIuc3BsaXQoInwiKSxuPSJhemltdXRofGJhY2tncm91bmQtYXR0YWNobWVudHxiYWNrZ3JvdW5kLWNvbG9yfGJhY2tncm91bmQtaW1hZ2V8YmFja2dyb3VuZC1wb3NpdGlvbnxiYWNrZ3JvdW5kLXJlcGVhdHxiYWNrZ3JvdW5kfGJvcmRlci1ib3R0b20tY29sb3J8Ym9yZGVyLWJvdHRvbS1zdHlsZXxib3JkZXItYm90dG9tLXdpZHRofGJvcmRlci1ib3R0b218Ym9yZGVyLWNvbGxhcHNlfGJvcmRlci1jb2xvcnxib3JkZXItbGVmdC1jb2xvcnxib3JkZXItbGVmdC1zdHlsZXxib3JkZXItbGVmdC13aWR0aHxib3JkZXItbGVmdHxib3JkZXItcmlnaHQtY29sb3J8Ym9yZGVyLXJpZ2h0LXN0eWxlfGJvcmRlci1yaWdodC13aWR0aHxib3JkZXItcmlnaHR8Ym9yZGVyLXNwYWNpbmd8Ym9yZGVyLXN0eWxlfGJvcmRlci10b3AtY29sb3J8Ym9yZGVyLXRvcC1zdHlsZXxib3JkZXItdG9wLXdpZHRofGJvcmRlci10b3B8Ym9yZGVyLXdpZHRofGJvcmRlcnxib3R0b218Ym94LXNpemluZ3xjYXB0aW9uLXNpZGV8Y2xlYXJ8Y2xpcHxjb2xvcnxjb250ZW50fGNvdW50ZXItaW5jcmVtZW50fGNvdW50ZXItcmVzZXR8Y3VlLWFmdGVyfGN1ZS1iZWZvcmV8Y3VlfGN1cnNvcnxkaXJlY3Rpb258ZGlzcGxheXxlbGV2YXRpb258ZW1wdHktY2VsbHN8ZmxvYXR8Zm9udC1mYW1pbHl8Zm9udC1zaXplLWFkanVzdHxmb250LXNpemV8Zm9udC1zdHJldGNofGZvbnQtc3R5bGV8Zm9udC12YXJpYW50fGZvbnQtd2VpZ2h0fGZvbnR8aGVpZ2h0fGxlZnR8bGV0dGVyLXNwYWNpbmd8bGluZS1oZWlnaHR8bGlzdC1zdHlsZS1pbWFnZXxsaXN0LXN0eWxlLXBvc2l0aW9ufGxpc3Qtc3R5bGUtdHlwZXxsaXN0LXN0eWxlfG1hcmdpbi1ib3R0b218bWFyZ2luLWxlZnR8bWFyZ2luLXJpZ2h0fG1hcmdpbi10b3B8bWFya2VyLW9mZnNldHxtYXJnaW58bWFya3N8bWF4LWhlaWdodHxtYXgtd2lkdGh8bWluLWhlaWdodHxtaW4td2lkdGh8b3BhY2l0eXxvcnBoYW5zfG91dGxpbmUtY29sb3J8b3V0bGluZS1zdHlsZXxvdXRsaW5lLXdpZHRofG91dGxpbmV8b3ZlcmZsb3d8b3ZlcmZsb3cteHxvdmVyZmxvdy15fHBhZGRpbmctYm90dG9tfHBhZGRpbmctbGVmdHxwYWRkaW5nLXJpZ2h0fHBhZGRpbmctdG9wfHBhZGRpbmd8cGFnZS1icmVhay1hZnRlcnxwYWdlLWJyZWFrLWJlZm9yZXxwYWdlLWJyZWFrLWluc2lkZXxwYWdlfHBhdXNlLWFmdGVyfHBhdXNlLWJlZm9yZXxwYXVzZXxwaXRjaC1yYW5nZXxwaXRjaHxwbGF5LWR1cmluZ3xwb3NpdGlvbnxxdW90ZXN8cmljaG5lc3N8cmlnaHR8c2l6ZXxzcGVhay1oZWFkZXJ8c3BlYWstbnVtZXJhbHxzcGVhay1wdW5jdHVhdGlvbnxzcGVlY2gtcmF0ZXxzcGVha3xzdHJlc3N8dGFibGUtbGF5b3V0fHRleHQtYWxpZ258dGV4dC1kZWNvcmF0aW9ufHRleHQtaW5kZW50fHRleHQtc2hhZG93fHRleHQtdHJhbnNmb3JtfHRvcHx1bmljb2RlLWJpZGl8dmVydGljYWwtYWxpZ258dmlzaWJpbGl0eXx2b2ljZS1mYW1pbHl8dm9sdW1lfHdoaXRlLXNwYWNlfHdpZG93c3x3aWR0aHx3b3JkLXNwYWNpbmd8ei1pbmRleCIuc3BsaXQoInwiKSxyPVtdO2Zvcih2YXIgaT0wLHM9ZS5sZW5ndGg7aTxzO2krKylBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShyLChlW2ldK3Quam9pbigifCIrZVtpXSkpLnNwbGl0KCJ8IikpO3JldHVybiBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShyLHQpLEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHIsbikscn0oKSksdD1pLmFycmF5VG9NYXAoImhzbHxoc2xhfHJnYnxyZ2JhfHVybHxhdHRyfGNvdW50ZXJ8Y291bnRlcnN8bGlnaHRlbnxkYXJrZW58c2F0dXJhdGV8ZGVzYXR1cmF0ZXxmYWRlaW58ZmFkZW91dHxmYWRlfHNwaW58bWl4fGh1ZXxzYXR1cmF0aW9ufGxpZ2h0bmVzc3xhbHBoYXxyb3VuZHxjZWlsfGZsb29yfHBlcmNlbnRhZ2V8Y29sb3J8aXNjb2xvcnxpc251bWJlcnxpc3N0cmluZ3xpc2tleXdvcmR8aXN1cmx8aXNwaXhlbHxpc3BlcmNlbnRhZ2V8aXNlbSIuc3BsaXQoInwiKSksbj1pLmFycmF5VG9NYXAoImFic29sdXRlfGFsbC1zY3JvbGx8YWx3YXlzfGFybWVuaWFufGF1dG98YmFzZWxpbmV8YmVsb3d8YmlkaS1vdmVycmlkZXxibG9ja3xib2xkfGJvbGRlcnxib3JkZXItYm94fGJvdGh8Ym90dG9tfGJyZWFrLWFsbHxicmVhay13b3JkfGNhcGl0YWxpemV8Y2VudGVyfGNoYXJ8Y2lyY2xlfGNqay1pZGVvZ3JhcGhpY3xjb2wtcmVzaXplfGNvbGxhcHNlfGNvbnRlbnQtYm94fGNyb3NzaGFpcnxkYXNoZWR8ZGVjaW1hbC1sZWFkaW5nLXplcm98ZGVjaW1hbHxkZWZhdWx0fGRpc2FibGVkfGRpc2N8ZGlzdHJpYnV0ZS1hbGwtbGluZXN8ZGlzdHJpYnV0ZS1sZXR0ZXJ8ZGlzdHJpYnV0ZS1zcGFjZXxkaXN0cmlidXRlfGRvdHRlZHxkb3VibGV8ZS1yZXNpemV8ZWxsaXBzaXN8Zml4ZWR8Z2VvcmdpYW58Z3Jvb3ZlfGhhbmR8aGVicmV3fGhlbHB8aGlkZGVufGhpcmFnYW5hLWlyb2hhfGhpcmFnYW5hfGhvcml6b250YWx8aWRlb2dyYXBoLWFscGhhfGlkZW9ncmFwaC1udW1lcmljfGlkZW9ncmFwaC1wYXJlbnRoZXNpc3xpZGVvZ3JhcGgtc3BhY2V8aW5hY3RpdmV8aW5oZXJpdHxpbmxpbmUtYmxvY2t8aW5saW5lfGluc2V0fGluc2lkZXxpbnRlci1pZGVvZ3JhcGh8aW50ZXItd29yZHxpdGFsaWN8anVzdGlmeXxrYXRha2FuYS1pcm9oYXxrYXRha2FuYXxrZWVwLWFsbHxsZWZ0fGxpZ2h0ZXJ8bGluZS1lZGdlfGxpbmUtdGhyb3VnaHxsaW5lfGxpc3QtaXRlbXxsb29zZXxsb3dlci1hbHBoYXxsb3dlci1ncmVla3xsb3dlci1sYXRpbnxsb3dlci1yb21hbnxsb3dlcmNhc2V8bHItdGJ8bHRyfG1lZGl1bXxtaWRkbGV8bW92ZXxuLXJlc2l6ZXxuZS1yZXNpemV8bmV3c3BhcGVyfG5vLWRyb3B8bm8tcmVwZWF0fG53LXJlc2l6ZXxub25lfG5vcm1hbHxub3QtYWxsb3dlZHxub3dyYXB8b2JsaXF1ZXxvdXRzZXR8b3V0c2lkZXxvdmVybGluZXxwb2ludGVyfHByb2dyZXNzfHJlbGF0aXZlfHJlcGVhdC14fHJlcGVhdC15fHJlcGVhdHxyaWdodHxyaWRnZXxyb3ctcmVzaXplfHJ0bHxzLXJlc2l6ZXxzY3JvbGx8c2UtcmVzaXplfHNlcGFyYXRlfHNtYWxsLWNhcHN8c29saWR8c3F1YXJlfHN0YXRpY3xzdHJpY3R8c3VwZXJ8c3ctcmVzaXplfHRhYmxlLWZvb3Rlci1ncm91cHx0YWJsZS1oZWFkZXItZ3JvdXB8dGItcmx8dGV4dC1ib3R0b218dGV4dC10b3B8dGV4dHx0aGlja3x0aGlufHRvcHx0cmFuc3BhcmVudHx1bmRlcmxpbmV8dXBwZXItYWxwaGF8dXBwZXItbGF0aW58dXBwZXItcm9tYW58dXBwZXJjYXNlfHZlcnRpY2FsLWlkZW9ncmFwaGljfHZlcnRpY2FsLXRleHR8dmlzaWJsZXx3LXJlc2l6ZXx3YWl0fHdoaXRlc3BhY2V8emVybyIuc3BsaXQoInwiKSkscj1pLmFycmF5VG9NYXAoImFxdWF8YmxhY2t8Ymx1ZXxmdWNoc2lhfGdyYXl8Z3JlZW58bGltZXxtYXJvb258bmF2eXxvbGl2ZXxvcmFuZ2V8cHVycGxlfHJlZHxzaWx2ZXJ8dGVhbHx3aGl0ZXx5ZWxsb3ciLnNwbGl0KCJ8IikpLHM9aS5hcnJheVRvTWFwKCJAbWl4aW58QGV4dGVuZHxAaW5jbHVkZXxAaW1wb3J0fEBtZWRpYXxAZGVidWd8QHdhcm58QGlmfEBmb3J8QGVhY2h8QHdoaWxlfEBlbHNlfEBmb250LWZhY2V8QC13ZWJraXQta2V5ZnJhbWVzfGlmfGFuZHwhZGVmYXVsdHxtb2R1bGV8ZGVmfGVuZHxkZWNsYXJlfHdoZW58bm90fGFuZCIuc3BsaXQoInwiKSksbz1pLmFycmF5VG9NYXAoImF8YWJicnxhY3JvbnltfGFkZHJlc3N8YXBwbGV0fGFyZWF8YXJ0aWNsZXxhc2lkZXxhdWRpb3xifGJhc2V8YmFzZWZvbnR8YmRvfGJpZ3xibG9ja3F1b3RlfGJvZHl8YnJ8YnV0dG9ufGNhbnZhc3xjYXB0aW9ufGNlbnRlcnxjaXRlfGNvZGV8Y29sfGNvbGdyb3VwfGNvbW1hbmR8ZGF0YWxpc3R8ZGR8ZGVsfGRldGFpbHN8ZGZufGRpcnxkaXZ8ZGx8ZHR8ZW18ZW1iZWR8ZmllbGRzZXR8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9udHxmb290ZXJ8Zm9ybXxmcmFtZXxmcmFtZXNldHxoMXxoMnxoM3xoNHxoNXxoNnxoZWFkfGhlYWRlcnxoZ3JvdXB8aHJ8aHRtbHxpfGlmcmFtZXxpbWd8aW5wdXR8aW5zfGtleWdlbnxrYmR8bGFiZWx8bGVnZW5kfGxpfGxpbmt8bWFwfG1hcmt8bWVudXxtZXRhfG1ldGVyfG5hdnxub2ZyYW1lc3xub3NjcmlwdHxvYmplY3R8b2x8b3B0Z3JvdXB8b3B0aW9ufG91dHB1dHxwfHBhcmFtfHByZXxwcm9ncmVzc3xxfHJwfHJ0fHJ1Ynl8c3xzYW1wfHNjcmlwdHxzZWN0aW9ufHNlbGVjdHxzbWFsbHxzb3VyY2V8c3BhbnxzdHJpa2V8c3Ryb25nfHN0eWxlfHN1YnxzdW1tYXJ5fHN1cHx0YWJsZXx0Ym9keXx0ZHx0ZXh0YXJlYXx0Zm9vdHx0aHx0aGVhZHx0aW1lfHRpdGxlfHRyfHR0fHV8dWx8dmFyfHZpZGVvfHdicnx4bXAiLnNwbGl0KCJ8IikpLHU9IlxcLT8oPzooPzpbMC05XSspfCg/OlswLTldKlxcLlswLTldKykpIjt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qJCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6dSsiKD86ZW18ZXh8cHh8Y218bW18aW58cHR8cGN8ZGVnfHJhZHxncmFkfG1zfHN8aHp8a2h6fCUpIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiI1thLWYwLTldezZ9In0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiI1thLWYwLTldezN9In0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDp1fSx7dG9rZW46ZnVuY3Rpb24oZSl7cmV0dXJuIHMuaGFzT3duUHJvcGVydHkoZSk/ImtleXdvcmQiOiJ2YXJpYWJsZSJ9LHJlZ2V4OiJAW2EtejAtOV9cXC1AXSpcXGIifSx7dG9rZW46ZnVuY3Rpb24oaSl7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkoaS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC50eXBlIjpzLmhhc093blByb3BlcnR5KGkpPyJrZXl3b3JkIjpuLmhhc093blByb3BlcnR5KGkpPyJjb25zdGFudC5sYW5ndWFnZSI6dC5oYXNPd25Qcm9wZXJ0eShpKT8ic3VwcG9ydC5mdW5jdGlvbiI6ci5oYXNPd25Qcm9wZXJ0eShpLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50LmNvbG9yIjpvLmhhc093blByb3BlcnR5KGkudG9Mb3dlckNhc2UoKSk/InZhcmlhYmxlLmxhbmd1YWdlIjoidGV4dCJ9LHJlZ2V4OiJcXC0/W0BhLXpfXVtAYS16MC05X1xcLV0qIn0se3Rva2VuOiJ2YXJpYWJsZS5sYW5ndWFnZSIscmVnZXg6IiNbYS16MC05LV9dKyJ9LHt0b2tlbjoidmFyaWFibGUubGFuZ3VhZ2UiLHJlZ2V4OiJcXC5bYS16MC05LV9dKyJ9LHt0b2tlbjoidmFyaWFibGUubGFuZ3VhZ2UiLHJlZ2V4OiI6W2EtejAtOS1fXSsifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiW2EtejAtOS1fXSsifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiI8fD58PD18Pj18PT18IT18LXwlfCN8XFwrfFxcJHxcXCt8XFwqIn0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJbWyh7XSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiW1xcXSl9XSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfX07ci5pbmhlcml0cyhvLHMpLHQuTGVzc0hpZ2hsaWdodFJ1bGVzPW99KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxpPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQpe3JldHVybi9eXHMrJC8udGVzdChlKT8vXlxzKlx9Ly50ZXN0KHQpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRMaW5lKHQpLGk9bi5tYXRjaCgvXihccypcfSkvKTtpZighaSlyZXR1cm4gMDt2YXIgcz1pWzFdLmxlbmd0aCxvPWUuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnQsY29sdW1uOnN9KTtpZighb3x8by5yb3c9PXQpcmV0dXJuIDA7dmFyIHU9dGhpcy4kZ2V0SW5kZW50KGUuZ2V0TGluZShvLnJvdykpO2UucmVwbGFjZShuZXcgcih0LDAsdCxzLTEpLHUpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCgvXihccyspLyk7cmV0dXJuIHQ/dFsxXToiIn19KS5jYWxsKGkucHJvdG90eXBlKSx0Lk1hdGNoaW5nQnJhY2VPdXRkZW50PWl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLHM9ZSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxvPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O3IuaW5oZXJpdHMobyxzKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobikscz1yLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihzKXt2YXIgbz1zLmluZGV4O2lmKHNbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhlLHNbMV0sbixvKTt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvK3NbMF0ubGVuZ3RoKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9aWYodCE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgcz1yLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXgrc1swXS5sZW5ndGg7aWYoc1syXSl7dmFyIHU9ZS5nZXRDb21tZW50Rm9sZFJhbmdlKG4sbyk7cmV0dXJuIHUuZW5kLmNvbHVtbi09Mix1fXZhciBhPXtyb3c6bixjb2x1bW46b30sZj1lLiRmaW5kT3BlbmluZ0JyYWNrZXQoc1sxXSxhKTtpZighZilyZXR1cm47cmV0dXJuIGYuY29sdW1uKyssYS5jb2x1bW4tLSxpLmZyb21Qb2ludHMoZixhKX19fS5jYWxsKG8ucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxpPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KHIpPyJzdGFydCI6dD09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChyKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPS9cUy8scz1lLmdldExpbmUodCksbz1zLnNlYXJjaChpKTtpZihvPT0tMSlyZXR1cm47dmFyIHU9bnx8cy5sZW5ndGgsYT1lLmdldExlbmd0aCgpLGY9dCxsPXQ7d2hpbGUoKyt0PGEpe3ZhciBjPWUuZ2V0TGluZSh0KS5zZWFyY2goaSk7aWYoYz09LTEpY29udGludWU7aWYoYzw9bylicmVhaztsPXR9aWYobD5mKXt2YXIgaD1lLmdldExpbmUobCkubGVuZ3RoO3JldHVybiBuZXcgcihmLHUsbCxoKX19LHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jaz1mdW5jdGlvbihlLHQsbixpLHMpe3ZhciBvPXtyb3c6bixjb2x1bW46aSsxfSx1PWUuJGZpbmRDbG9zaW5nQnJhY2tldCh0LG8scyk7aWYoIXUpcmV0dXJuO3ZhciBhPWUuZm9sZFdpZGdldHNbdS5yb3ddO3JldHVybiBhPT1udWxsJiYoYT10aGlzLmdldEZvbGRXaWRnZXQoZSx1LnJvdykpLGE9PSJzdGFydCImJnUucm93Pm8ucm93JiYodS5yb3ctLSx1LmNvbHVtbj1lLmdldExpbmUodS5yb3cpLmxlbmd0aCksci5mcm9tUG9pbnRzKG8sdSl9fSkuY2FsbChpLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-liquid.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9saXF1aWQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvbGlxdWlkX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4vbGlxdWlkX2hpZ2hsaWdodF9ydWxlcyIpLkxpcXVpZEhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsYT1lKCIuLi9yYW5nZSIpLlJhbmdlLGY9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyB1fTtyLmluaGVyaXRzKGYsaSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT0hMCxzPVtdLG89L14oXHMqKSMvO2Zvcih2YXIgdT1uO3U8PXI7dSsrKWlmKCFvLnRlc3QodC5nZXRMaW5lKHUpKSl7aT0hMTticmVha31pZihpKXt2YXIgZj1uZXcgYSgwLDAsMCwwKTtmb3IodmFyIHU9bjt1PD1yO3UrKyl7dmFyIGw9dC5nZXRMaW5lKHUpLGM9bC5tYXRjaChvKTtmLnN0YXJ0LnJvdz11LGYuZW5kLnJvdz11LGYuZW5kLmNvbHVtbj1jWzBdLmxlbmd0aCx0LnJlcGxhY2UoZixjWzFdKX19ZWxzZSB0LmluZGVudFJvd3MobixyLCIjIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJGdldEluZGVudCh0KSxpPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKHQsZSkscz1pLnRva2VucyxvPWkuc3RhdGU7aWYocy5sZW5ndGgmJnNbcy5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiByO2lmKGU9PSJzdGFydCIpe3ZhciB1PXQubWF0Y2goL14uKltce1woXFtdXHMqJC8pO3UmJihyKz1uKX1yZXR1cm4gcn0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudCh0LG4pfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KHQsbil9fS5jYWxsKGYucHJvdG90eXBlKSx0Lk1vZGU9Zn0pLGRlZmluZSgiYWNlL21vZGUvbGlxdWlkX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvY3NzX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUveG1sX3V0aWwiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL2Nzc19oaWdobGlnaHRfcnVsZXMiKS5Dc3NIaWdobGlnaHRSdWxlcyxzPWUoIi4vamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiKS5KYXZhU2NyaXB0SGlnaGxpZ2h0UnVsZXMsbz1lKCIuLi9saWIvbGFuZyIpLHU9ZSgiLi94bWxfdXRpbCIpLGE9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxmPWZ1bmN0aW9uKCl7dmFyIGU9by5hcnJheVRvTWFwKCJkYXRlfGNhcGl0YWxpemV8ZG93bmNhc2V8dXBjYXNlfGZpcnN0fGxhc3R8am9pbnxzb3J0fG1hcHxzaXplfGVzY2FwZXxlc2NhcGVfb25jZXxzdHJpcF9odG1sfHN0cmlwX25ld2xpbmVzfG5ld2xpbmVfdG9fYnJ8cmVwbGFjZXxyZXBsYWNlX2ZpcnN0fHRydW5jYXRlfHRydW5jYXRld29yZHN8cHJlcGVuZHxhcHBlbmR8bWludXN8cGx1c3x0aW1lc3xkaXZpZGVkX2J5fHNwbGl0Ii5zcGxpdCgifCIpKSx0PW8uYXJyYXlUb01hcCgiY2FwdHVyZXxlbmRjYXB0dXJlfGNhc2V8ZW5kY2FzZXx3aGVufGNvbW1lbnR8ZW5kY29tbWVudHxjeWNsZXxmb3J8ZW5kZm9yfGlufHJldmVyc2VkfGlmfGVuZGlmfGVsc2V8ZWxzaWZ8aW5jbHVkZXxlbmRpbmNsdWRlfHVubGVzc3xlbmR1bmxlc3N8c3R5bGV8dGV4dHxpbWFnZXx3aWRnZXR8cGx1Z2lufG1hcmtlcnxlbmRtYXJrZXJ8dGFibGVyb3d8ZW5kdGFibGVyb3ciLnNwbGl0KCJ8IikpLG49by5hcnJheVRvTWFwKFsiZm9ybG9vcCJdKSxyPW8uYXJyYXlUb01hcCgiYXNzaWduIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJ7JSIsbmV4dDoibGlxdWlkX3N0YXJ0In0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6Int7IixuZXh0OiJsaXF1aWRfc3RhcnQifSx7dG9rZW46Im1ldGEudGFnIixtZXJnZTohMCxyZWdleDoiPFxcIVxcW0NEQVRBXFxbIixuZXh0OiJjZGF0YSJ9LHt0b2tlbjoieG1sX3BlIixyZWdleDoiPFxcPy4qP1xcPz4ifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiI8XFwhLS0iLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPCg/PVxccypzY3JpcHRcXGIpIixuZXh0OiJzY3JpcHQifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPCg/PVxccypzdHlsZVxcYikiLG5leHQ6InN0eWxlIn0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjxcXC8/IixuZXh0OiJ0YWcifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiW148XSsifV0sY2RhdGE6W3t0b2tlbjoidGV4dCIscmVnZXg6IlxcXVxcXT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJ0ZXh0IixtZXJnZTohMCxyZWdleDoiXFxzKyJ9LHt0b2tlbjoidGV4dCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qPy0tPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxsaXF1aWRfc3RhcnQ6W3t0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJ9fSIsbmV4dDoic3RhcnQifSx7dG9rZW46InZhcmlhYmxlIixyZWdleDoiJX0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiMFt4WF1bMC05YS1mQS1GXStcXGIifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuYm9vbGVhbiIscmVnZXg6Iig/OnRydWV8ZmFsc2UpXFxiIn0se3Rva2VuOmZ1bmN0aW9uKGkpe3JldHVybiBlLmhhc093blByb3BlcnR5KGkpPyJzdXBwb3J0LmZ1bmN0aW9uIjp0Lmhhc093blByb3BlcnR5KGkpPyJrZXl3b3JkIjpuLmhhc093blByb3BlcnR5KGkpPyJ2YXJpYWJsZS5sYW5ndWFnZSI6ci5oYXNPd25Qcm9wZXJ0eShpKT8ia2V5d29yZC5kZWZpbml0aW9uIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiIvfFxcKnxcXC18XFwrfD18IT18XFw/XFw6In0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4Oi9bXFtcKHtdL30se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4Oi9bXF0pfV0vfSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dfSx1LnRhZyh0aGlzLiRydWxlcywidGFnIiwic3RhcnQiKSx1LnRhZyh0aGlzLiRydWxlcywic3R5bGUiLCJjc3Mtc3RhcnQiKSx1LnRhZyh0aGlzLiRydWxlcywic2NyaXB0IiwianMtc3RhcnQiKSx0aGlzLmVtYmVkUnVsZXMocywianMtIixbe3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiooPz08XFwvc2NyaXB0PikiLG5leHQ6InRhZyJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvKD89c2NyaXB0KSIsbmV4dDoidGFnIn1dKSx0aGlzLmVtYmVkUnVsZXMoaSwiY3NzLSIsW3t0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvKD89c3R5bGUpIixuZXh0OiJ0YWcifV0pfTtyLmluaGVyaXRzKGYsYSksdC5MaXF1aWRIaWdobGlnaHRSdWxlcz1mfSksZGVmaW5lKCJhY2UvbW9kZS9jc3NfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi9saWIvbGFuZyIpLHM9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxvPWZ1bmN0aW9uKCl7dmFyIGU9aS5hcnJheVRvTWFwKCJhbmltYXRpb24tZmlsbC1tb2RlfGFsaWdubWVudC1hZGp1c3R8YWxpZ25tZW50LWJhc2VsaW5lfGFuaW1hdGlvbi1kZWxheXxhbmltYXRpb24tZGlyZWN0aW9ufGFuaW1hdGlvbi1kdXJhdGlvbnxhbmltYXRpb24taXRlcmF0aW9uLWNvdW50fGFuaW1hdGlvbi1uYW1lfGFuaW1hdGlvbi1wbGF5LXN0YXRlfGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb258YW5pbWF0aW9ufGFwcGVhcmFuY2V8YXppbXV0aHxiYWNrZmFjZS12aXNpYmlsaXR5fGJhY2tncm91bmQtYXR0YWNobWVudHxiYWNrZ3JvdW5kLWJyZWFrfGJhY2tncm91bmQtY2xpcHxiYWNrZ3JvdW5kLWNvbG9yfGJhY2tncm91bmQtaW1hZ2V8YmFja2dyb3VuZC1vcmlnaW58YmFja2dyb3VuZC1wb3NpdGlvbnxiYWNrZ3JvdW5kLXJlcGVhdHxiYWNrZ3JvdW5kLXNpemV8YmFja2dyb3VuZHxiYXNlbGluZS1zaGlmdHxiaW5kaW5nfGJsZWVkfGJvb2ttYXJrLWxhYmVsfGJvb2ttYXJrLWxldmVsfGJvb2ttYXJrLXN0YXRlfGJvb2ttYXJrLXRhcmdldHxib3JkZXItYm90dG9tfGJvcmRlci1ib3R0b20tY29sb3J8Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1c3xib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1c3xib3JkZXItYm90dG9tLXN0eWxlfGJvcmRlci1ib3R0b20td2lkdGh8Ym9yZGVyLWNvbGxhcHNlfGJvcmRlci1jb2xvcnxib3JkZXItaW1hZ2V8Ym9yZGVyLWltYWdlLW91dHNldHxib3JkZXItaW1hZ2UtcmVwZWF0fGJvcmRlci1pbWFnZS1zbGljZXxib3JkZXItaW1hZ2Utc291cmNlfGJvcmRlci1pbWFnZS13aWR0aHxib3JkZXItbGVmdHxib3JkZXItbGVmdC1jb2xvcnxib3JkZXItbGVmdC1zdHlsZXxib3JkZXItbGVmdC13aWR0aHxib3JkZXItcmFkaXVzfGJvcmRlci1yaWdodHxib3JkZXItcmlnaHQtY29sb3J8Ym9yZGVyLXJpZ2h0LXN0eWxlfGJvcmRlci1yaWdodC13aWR0aHxib3JkZXItc3BhY2luZ3xib3JkZXItc3R5bGV8Ym9yZGVyLXRvcHxib3JkZXItdG9wLWNvbG9yfGJvcmRlci10b3AtbGVmdC1yYWRpdXN8Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXN8Ym9yZGVyLXRvcC1zdHlsZXxib3JkZXItdG9wLXdpZHRofGJvcmRlci13aWR0aHxib3JkZXJ8Ym90dG9tfGJveC1hbGlnbnxib3gtZGVjb3JhdGlvbi1icmVha3xib3gtZGlyZWN0aW9ufGJveC1mbGV4LWdyb3VwfGJveC1mbGV4fGJveC1saW5lc3xib3gtb3JkaW5hbC1ncm91cHxib3gtb3JpZW50fGJveC1wYWNrfGJveC1zaGFkb3d8Ym94LXNpemluZ3xicmVhay1hZnRlcnxicmVhay1iZWZvcmV8YnJlYWstaW5zaWRlfGNhcHRpb24tc2lkZXxjbGVhcnxjbGlwfGNvbG9yLXByb2ZpbGV8Y29sb3J8Y29sdW1uLWNvdW50fGNvbHVtbi1maWxsfGNvbHVtbi1nYXB8Y29sdW1uLXJ1bGV8Y29sdW1uLXJ1bGUtY29sb3J8Y29sdW1uLXJ1bGUtc3R5bGV8Y29sdW1uLXJ1bGUtd2lkdGh8Y29sdW1uLXNwYW58Y29sdW1uLXdpZHRofGNvbHVtbnN8Y29udGVudHxjb3VudGVyLWluY3JlbWVudHxjb3VudGVyLXJlc2V0fGNyb3B8Y3VlLWFmdGVyfGN1ZS1iZWZvcmV8Y3VlfGN1cnNvcnxkaXJlY3Rpb258ZGlzcGxheXxkb21pbmFudC1iYXNlbGluZXxkcm9wLWluaXRpYWwtYWZ0ZXItYWRqdXN0fGRyb3AtaW5pdGlhbC1hZnRlci1hbGlnbnxkcm9wLWluaXRpYWwtYmVmb3JlLWFkanVzdHxkcm9wLWluaXRpYWwtYmVmb3JlLWFsaWdufGRyb3AtaW5pdGlhbC1zaXplfGRyb3AtaW5pdGlhbC12YWx1ZXxlbGV2YXRpb258ZW1wdHktY2VsbHN8Zml0fGZpdC1wb3NpdGlvbnxmbG9hdC1vZmZzZXR8ZmxvYXR8Zm9udC1mYW1pbHl8Zm9udC1zaXplfGZvbnQtc2l6ZS1hZGp1c3R8Zm9udC1zdHJldGNofGZvbnQtc3R5bGV8Zm9udC12YXJpYW50fGZvbnQtd2VpZ2h0fGZvbnR8Z3JpZC1jb2x1bW5zfGdyaWQtcm93c3xoYW5naW5nLXB1bmN0dWF0aW9ufGhlaWdodHxoeXBoZW5hdGUtYWZ0ZXJ8aHlwaGVuYXRlLWJlZm9yZXxoeXBoZW5hdGUtY2hhcmFjdGVyfGh5cGhlbmF0ZS1saW5lc3xoeXBoZW5hdGUtcmVzb3VyY2V8aHlwaGVuc3xpY29ufGltYWdlLW9yaWVudGF0aW9ufGltYWdlLXJlbmRlcmluZ3xpbWFnZS1yZXNvbHV0aW9ufGlubGluZS1ib3gtYWxpZ258bGVmdHxsZXR0ZXItc3BhY2luZ3xsaW5lLWhlaWdodHxsaW5lLXN0YWNraW5nLXJ1Ynl8bGluZS1zdGFja2luZy1zaGlmdHxsaW5lLXN0YWNraW5nLXN0cmF0ZWd5fGxpbmUtc3RhY2tpbmd8bGlzdC1zdHlsZS1pbWFnZXxsaXN0LXN0eWxlLXBvc2l0aW9ufGxpc3Qtc3R5bGUtdHlwZXxsaXN0LXN0eWxlfG1hcmdpbi1ib3R0b218bWFyZ2luLWxlZnR8bWFyZ2luLXJpZ2h0fG1hcmdpbi10b3B8bWFyZ2lufG1hcmstYWZ0ZXJ8bWFyay1iZWZvcmV8bWFya3xtYXJrc3xtYXJxdWVlLWRpcmVjdGlvbnxtYXJxdWVlLXBsYXktY291bnR8bWFycXVlZS1zcGVlZHxtYXJxdWVlLXN0eWxlfG1heC1oZWlnaHR8bWF4LXdpZHRofG1pbi1oZWlnaHR8bWluLXdpZHRofG1vdmUtdG98bmF2LWRvd258bmF2LWluZGV4fG5hdi1sZWZ0fG5hdi1yaWdodHxuYXYtdXB8b3BhY2l0eXxvcnBoYW5zfG91dGxpbmUtY29sb3J8b3V0bGluZS1vZmZzZXR8b3V0bGluZS1zdHlsZXxvdXRsaW5lLXdpZHRofG91dGxpbmV8b3ZlcmZsb3ctc3R5bGV8b3ZlcmZsb3cteHxvdmVyZmxvdy15fG92ZXJmbG93fHBhZGRpbmctYm90dG9tfHBhZGRpbmctbGVmdHxwYWRkaW5nLXJpZ2h0fHBhZGRpbmctdG9wfHBhZGRpbmd8cGFnZS1icmVhay1hZnRlcnxwYWdlLWJyZWFrLWJlZm9yZXxwYWdlLWJyZWFrLWluc2lkZXxwYWdlLXBvbGljeXxwYWdlfHBhdXNlLWFmdGVyfHBhdXNlLWJlZm9yZXxwYXVzZXxwZXJzcGVjdGl2ZS1vcmlnaW58cGVyc3BlY3RpdmV8cGhvbmVtZXN8cGl0Y2gtcmFuZ2V8cGl0Y2h8cGxheS1kdXJpbmd8cG9zaXRpb258cHJlc2VudGF0aW9uLWxldmVsfHB1bmN0dWF0aW9uLXRyaW18cXVvdGVzfHJlbmRlcmluZy1pbnRlbnR8cmVzaXplfHJlc3QtYWZ0ZXJ8cmVzdC1iZWZvcmV8cmVzdHxyaWNobmVzc3xyaWdodHxyb3RhdGlvbi1wb2ludHxyb3RhdGlvbnxydWJ5LWFsaWdufHJ1Ynktb3Zlcmhhbmd8cnVieS1wb3NpdGlvbnxydWJ5LXNwYW58c2l6ZXxzcGVhay1oZWFkZXJ8c3BlYWstbnVtZXJhbHxzcGVhay1wdW5jdHVhdGlvbnxzcGVha3xzcGVlY2gtcmF0ZXxzdHJlc3N8c3RyaW5nLXNldHx0YWJsZS1sYXlvdXR8dGFyZ2V0LW5hbWV8dGFyZ2V0LW5ld3x0YXJnZXQtcG9zaXRpb258dGFyZ2V0fHRleHQtYWxpZ24tbGFzdHx0ZXh0LWFsaWdufHRleHQtZGVjb3JhdGlvbnx0ZXh0LWVtcGhhc2lzfHRleHQtaGVpZ2h0fHRleHQtaW5kZW50fHRleHQtanVzdGlmeXx0ZXh0LW91dGxpbmV8dGV4dC1zaGFkb3d8dGV4dC10cmFuc2Zvcm18dGV4dC13cmFwfHRvcHx0cmFuc2Zvcm0tb3JpZ2lufHRyYW5zZm9ybS1zdHlsZXx0cmFuc2Zvcm18dHJhbnNpdGlvbi1kZWxheXx0cmFuc2l0aW9uLWR1cmF0aW9ufHRyYW5zaXRpb24tcHJvcGVydHl8dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb258dHJhbnNpdGlvbnx1bmljb2RlLWJpZGl8dmVydGljYWwtYWxpZ258dmlzaWJpbGl0eXx2b2ljZS1iYWxhbmNlfHZvaWNlLWR1cmF0aW9ufHZvaWNlLWZhbWlseXx2b2ljZS1waXRjaC1yYW5nZXx2b2ljZS1waXRjaHx2b2ljZS1yYXRlfHZvaWNlLXN0cmVzc3x2b2ljZS12b2x1bWV8dm9sdW1lfHdoaXRlLXNwYWNlLWNvbGxhcHNlfHdoaXRlLXNwYWNlfHdpZG93c3x3aWR0aHx3b3JkLWJyZWFrfHdvcmQtc3BhY2luZ3x3b3JkLXdyYXB8ei1pbmRleCIuc3BsaXQoInwiKSksdD1pLmFycmF5VG9NYXAoInJnYnxyZ2JhfHVybHxhdHRyfGNvdW50ZXJ8Y291bnRlcnMiLnNwbGl0KCJ8IikpLG49aS5hcnJheVRvTWFwKCJhYnNvbHV0ZXxhZnRlci1lZGdlfGFmdGVyfGFsbC1zY3JvbGx8YWxsfGFscGhhYmV0aWN8YWx3YXlzfGFudGlhbGlhc2VkfGFybWVuaWFufGF1dG98YXZvaWQtY29sdW1ufGF2b2lkLXBhZ2V8YXZvaWR8YmFsYW5jZXxiYXNlbGluZXxiZWZvcmUtZWRnZXxiZWZvcmV8YmVsb3d8YmlkaS1vdmVycmlkZXxibG9jay1saW5lLWhlaWdodHxibG9ja3xib2xkfGJvbGRlcnxib3JkZXItYm94fGJvdGh8Ym90dG9tfGJveHxicmVhay1hbGx8YnJlYWstd29yZHxjYXBpdGFsaXplfGNhcHMtaGVpZ2h0fGNhcHRpb258Y2VudGVyfGNlbnRyYWx8Y2hhcnxjaXJjbGV8Y2prLWlkZW9ncmFwaGljfGNsb25lfGNsb3NlLXF1b3RlfGNvbC1yZXNpemV8Y29sbGFwc2V8Y29sdW1ufGNvbnNpZGVyLXNoaWZ0c3xjb250YWlufGNvbnRlbnQtYm94fGNvdmVyfGNyb3NzaGFpcnxjdWJpYy1iZXppZXJ8ZGFzaGVkfGRlY2ltYWwtbGVhZGluZy16ZXJvfGRlY2ltYWx8ZGVmYXVsdHxkaXNhYmxlZHxkaXNjfGRpc3JlZ2FyZC1zaGlmdHN8ZGlzdHJpYnV0ZS1hbGwtbGluZXN8ZGlzdHJpYnV0ZS1sZXR0ZXJ8ZGlzdHJpYnV0ZS1zcGFjZXxkaXN0cmlidXRlfGRvdHRlZHxkb3VibGV8ZS1yZXNpemV8ZWFzZS1pbnxlYXNlLWluLW91dHxlYXNlLW91dHxlYXNlfGVsbGlwc2lzfGVuZHxleGNsdWRlLXJ1Ynl8ZmlsbHxmaXhlZHxmb250LXNpemV8Zm9udHxnZW9yZ2lhbnxnbHlwaHN8Z3JpZC1oZWlnaHR8Z3Jvb3ZlfGhhbmR8aGFuZ2luZ3xoZWJyZXd8aGVscHxoaWRkZW58aGlyYWdhbmEtaXJvaGF8aGlyYWdhbmF8aG9yaXpvbnRhbHxpY29ufGlkZW9ncmFwaC1hbHBoYXxpZGVvZ3JhcGgtbnVtZXJpY3xpZGVvZ3JhcGgtcGFyZW50aGVzaXN8aWRlb2dyYXBoLXNwYWNlfGlkZW9ncmFwaGljfGluYWN0aXZlfGluY2x1ZGUtcnVieXxpbmhlcml0fGluaXRpYWx8aW5saW5lLWJsb2NrfGlubGluZS1ib3h8aW5saW5lLWxpbmUtaGVpZ2h0fGlubGluZS10YWJsZXxpbmxpbmV8aW5zZXR8aW5zaWRlfGludGVyLWlkZW9ncmFwaHxpbnRlci13b3JkfGludmVydHxpdGFsaWN8anVzdGlmeXxrYXRha2FuYS1pcm9oYXxrYXRha2FuYXxrZWVwLWFsbHxsYXN0fGxlZnR8bGlnaHRlcnxsaW5lLWVkZ2V8bGluZS10aHJvdWdofGxpbmV8bGluZWFyfGxpc3QtaXRlbXxsb2NhbHxsb29zZXxsb3dlci1hbHBoYXxsb3dlci1ncmVla3xsb3dlci1sYXRpbnxsb3dlci1yb21hbnxsb3dlcmNhc2V8bHItdGJ8bHRyfG1hdGhlbWF0aWNhbHxtYXgtaGVpZ2h0fG1heC1zaXplfG1lZGl1bXxtZW51fG1lc3NhZ2UtYm94fG1pZGRsZXxtb3ZlfG4tcmVzaXplfG5lLXJlc2l6ZXxuZXdzcGFwZXJ8bm8tY2hhbmdlfG5vLWNsb3NlLXF1b3RlfG5vLWRyb3B8bm8tb3Blbi1xdW90ZXxuby1yZXBlYXR8bm9uZXxub3JtYWx8bm90LWFsbG93ZWR8bm93cmFwfG53LXJlc2l6ZXxvYmxpcXVlfG9wZW4tcXVvdGV8b3V0c2V0fG91dHNpZGV8b3ZlcmxpbmV8cGFkZGluZy1ib3h8cGFnZXxwb2ludGVyfHByZS1saW5lfHByZS13cmFwfHByZXxwcmVzZXJ2ZS0zZHxwcm9ncmVzc3xyZWxhdGl2ZXxyZXBlYXQteHxyZXBlYXQteXxyZXBlYXR8cmVwbGFjZWR8cmVzZXQtc2l6ZXxyaWRnZXxyaWdodHxyb3VuZHxyb3ctcmVzaXplfHJ0bHxzLXJlc2l6ZXxzY3JvbGx8c2UtcmVzaXplfHNlcGFyYXRlfHNsaWNlfHNtYWxsLWNhcHN8c21hbGwtY2FwdGlvbnxzb2xpZHxzcGFjZXxzcXVhcmV8c3RhcnR8c3RhdGljfHN0YXR1cy1iYXJ8c3RlcC1lbmR8c3RlcC1zdGFydHxzdGVwc3xzdHJldGNofHN0cmljdHxzdWJ8c3VwZXJ8c3ctcmVzaXplfHRhYmxlLWNhcHRpb258dGFibGUtY2VsbHx0YWJsZS1jb2x1bW4tZ3JvdXB8dGFibGUtY29sdW1ufHRhYmxlLWZvb3Rlci1ncm91cHx0YWJsZS1oZWFkZXItZ3JvdXB8dGFibGUtcm93LWdyb3VwfHRhYmxlLXJvd3x0YWJsZXx0Yi1ybHx0ZXh0LWFmdGVyLWVkZ2V8dGV4dC1iZWZvcmUtZWRnZXx0ZXh0LWJvdHRvbXx0ZXh0LXNpemV8dGV4dC10b3B8dGV4dHx0aGlja3x0aGlufHRvcHx0cmFuc3BhcmVudHx1bmRlcmxpbmV8dXBwZXItYWxwaGF8dXBwZXItbGF0aW58dXBwZXItcm9tYW58dXBwZXJjYXNlfHVzZS1zY3JpcHR8dmVydGljYWwtaWRlb2dyYXBoaWN8dmVydGljYWwtdGV4dHx2aXNpYmxlfHctcmVzaXplfHdhaXR8d2hpdGVzcGFjZXx6LWluZGV4fHplcm8iLnNwbGl0KCJ8IikpLHI9aS5hcnJheVRvTWFwKCJhcXVhfGJsYWNrfGJsdWV8ZnVjaHNpYXxncmF5fGdyZWVufGxpbWV8bWFyb29ufG5hdnl8b2xpdmV8b3JhbmdlfHB1cnBsZXxyZWR8c2lsdmVyfHRlYWx8d2hpdGV8eWVsbG93Ii5zcGxpdCgifCIpKSxzPWkuYXJyYXlUb01hcCgiYXJpYWx8Y2VudHVyeXxjb21pY3xjb3VyaWVyfGdhcmFtb25kfGdlb3JnaWF8aGVsdmV0aWNhfGltcGFjdHxsdWNpZGF8c3ltYm9sfHN5c3RlbXx0YWhvbWF8dGltZXN8dHJlYnVjaGV0fHV0b3BpYXx2ZXJkYW5hfHdlYmRpbmdzfHNhbnMtc2VyaWZ8c2VyaWZ8bW9ub3NwYWNlIi5zcGxpdCgifCIpKSxvPSJcXC0/KD86KD86WzAtOV0rKXwoPzpbMC05XSpcXC5bMC05XSspKSIsdT0iKFxcOispXFxiKGFmdGVyfGJlZm9yZXxmaXJzdC1sZXR0ZXJ8Zmlyc3QtbGluZXxtb3otc2VsZWN0aW9ufHNlbGVjdGlvbilcXGIiLGE9Iig6KVxcYihhY3RpdmV8Y2hlY2tlZHxkaXNhYmxlZHxlbXB0eXxlbmFibGVkfGZpcnN0LWNoaWxkfGZpcnN0LW9mLXR5cGV8Zm9jdXN8aG92ZXJ8aW5kZXRlcm1pbmF0ZXxpbnZhbGlkfGxhc3QtY2hpbGR8bGFzdC1vZi10eXBlfGxpbmt8bm90fG50aC1jaGlsZHxudGgtbGFzdC1jaGlsZHxudGgtbGFzdC1vZi10eXBlfG50aC1vZi10eXBlfG9ubHktY2hpbGR8b25seS1vZi10eXBlfHJlcXVpcmVkfHJvb3R8dGFyZ2V0fHZhbGlkfHZpc2l0ZWQpXFxiIixmPVt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6InJ1bGVzZXRfY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjpbImNvbnN0YW50Lm51bWVyaWMiLCJrZXl3b3JkIl0scmVnZXg6IigiK28rIikoY2h8Y218ZGVnfGVtfGV4fGZyfGdkfGdyYWR8SHp8aW58a0h6fG1tfG1zfHBjfHB0fHB4fHJhZHxyZW18c3x0dXJufHZofHZtfHZ3fCUpIn0se3Rva2VuOlsiY29uc3RhbnQubnVtZXJpYyJdLHJlZ2V4OiIoWzAtOV0rKSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IiNbYS1mMC05XXs2fSJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IiNbYS1mMC05XXszfSJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uIiwiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lLnBzZXVkby1lbGVtZW50LmNzcyJdLHJlZ2V4OnV9LHt0b2tlbjpbInB1bmN0dWF0aW9uIiwiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lLnBzZXVkby1jbGFzcy5jc3MiXSxyZWdleDphfSx7dG9rZW46ZnVuY3Rpb24oaSl7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkoaS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC50eXBlIjp0Lmhhc093blByb3BlcnR5KGkudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuZnVuY3Rpb24iOm4uaGFzT3duUHJvcGVydHkoaS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC5jb25zdGFudCI6ci5oYXNPd25Qcm9wZXJ0eShpLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50LmNvbG9yIjpzLmhhc093blByb3BlcnR5KGkudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuY29uc3RhbnQuZm9udHMiOiJ0ZXh0In0scmVnZXg6IlxcLT9bYS16QS1aX11bYS16QS1aMC05X1xcLV0qIn1dLGw9aS5jb3B5QXJyYXkoZik7bC51bnNoaWZ0KHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiXFx9IixuZXh0OiJzdGFydCJ9KTt2YXIgYz1pLmNvcHlBcnJheShmKTtjLnVuc2hpZnQoe3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJcXH0iLG5leHQ6Im1lZGlhIn0pO3ZhciBoPVt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxwPWkuY29weUFycmF5KGgpO3AudW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InN0YXJ0In0pO3ZhciBkPWkuY29weUFycmF5KGgpO2QudW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6Im1lZGlhIn0pO3ZhciB2PWkuY29weUFycmF5KGgpO3YudW5zaGlmdCh7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InJ1bGVzZXQifSksdGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IlxceyIsbmV4dDoicnVsZXNldCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiQC4qP3siLG5leHQ6Im1lZGlhIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiI1thLXowLTktX10rIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlxcLlthLXowLTktX10rIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiI6W2EtejAtOS1fXSsifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiW2EtejAtOS1fXSsifV0sbWVkaWE6W3t0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoibWVkaWFfY29tbWVudCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiXFx7IixuZXh0OiJtZWRpYV9ydWxlc2V0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXH0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiI1thLXowLTktX10rIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlxcLlthLXowLTktX10rIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiI6W2EtejAtOS1fXSsifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiW2EtejAtOS1fXSsifV0sY29tbWVudDpwLHJ1bGVzZXQ6bCxydWxlc2V0X2NvbW1lbnQ6dixtZWRpYV9ydWxlc2V0OmMsbWVkaWFfY29tbWVudDpkfX07ci5pbmhlcml0cyhvLHMpLHQuQ3NzSGlnaGxpZ2h0UnVsZXM9b30pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS91bmljb2RlIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4uL3VuaWNvZGUiKSxvPWUoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxhPWZ1bmN0aW9uKCl7dmFyIGU9aS5hcnJheVRvTWFwKCJBcnJheXxCb29sZWFufERhdGV8RnVuY3Rpb258SXRlcmF0b3J8TnVtYmVyfE9iamVjdHxSZWdFeHB8U3RyaW5nfFByb3h5fE5hbWVzcGFjZXxRTmFtZXxYTUx8WE1MTGlzdHxBcnJheUJ1ZmZlcnxGbG9hdDMyQXJyYXl8RmxvYXQ2NEFycmF5fEludDE2QXJyYXl8SW50MzJBcnJheXxJbnQ4QXJyYXl8VWludDE2QXJyYXl8VWludDMyQXJyYXl8VWludDhBcnJheXxVaW50OENsYW1wZWRBcnJheXxFcnJvcnxFdmFsRXJyb3J8SW50ZXJuYWxFcnJvcnxSYW5nZUVycm9yfFJlZmVyZW5jZUVycm9yfFN0b3BJdGVyYXRpb258U3ludGF4RXJyb3J8VHlwZUVycm9yfFVSSUVycm9yfGRlY29kZVVSSXxkZWNvZGVVUklDb21wb25lbnR8ZW5jb2RlVVJJfGVuY29kZVVSSUNvbXBvbmVudHxldmFsfGlzRmluaXRlfGlzTmFOfHBhcnNlRmxvYXR8cGFyc2VJbnR8SlNPTnxNYXRofHRoaXN8YXJndW1lbnRzfHByb3RvdHlwZXx3aW5kb3d8ZG9jdW1lbnQiLnNwbGl0KCJ8IikpLHQ9aS5hcnJheVRvTWFwKCJicmVha3xjYXNlfGNhdGNofGNvbnRpbnVlfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZmluYWxseXxmb3J8ZnVuY3Rpb258aWZ8aW58aW5zdGFuY2VvZnxuZXd8cmV0dXJufHN3aXRjaHx0aHJvd3x0cnl8dHlwZW9mfGxldHx2YXJ8d2hpbGV8d2l0aHxjb25zdHx5aWVsZHxpbXBvcnR8Z2V0fHNldCIuc3BsaXQoInwiKSksbj0iY2FzZXxkb3xlbHNlfGZpbmFsbHl8aW58aW5zdGFuY2VvZnxyZXR1cm58dGhyb3d8dHJ5fHR5cGVvZnx5aWVsZCIscj1pLmFycmF5VG9NYXAoIl9fcGFyZW50X198X19jb3VudF9ffGVzY2FwZXx1bmVzY2FwZXx3aXRofF9fcHJvdG9fXyIuc3BsaXQoInwiKSksdT1pLmFycmF5VG9NYXAoImNvbnN0fGxldHx2YXJ8ZnVuY3Rpb24iLnNwbGl0KCJ8IikpLGE9aS5hcnJheVRvTWFwKCJudWxsfEluZmluaXR5fE5hTnx1bmRlZmluZWQiLnNwbGl0KCJ8IikpLGY9aS5hcnJheVRvTWFwKCJjbGFzc3xlbnVtfGV4dGVuZHN8c3VwZXJ8ZXhwb3J0fGltcGxlbWVudHN8cHJpdmF0ZXxwdWJsaWN8aW50ZXJmYWNlfHBhY2thZ2V8cHJvdGVjdGVkfHN0YXRpYyIuc3BsaXQoInwiKSksbD0iWyIrcy5wYWNrYWdlcy5MKyJcXCRfXVsiK3MucGFja2FnZXMuTCtzLnBhY2thZ2VzLk1uK3MucGFja2FnZXMuTWMrcy5wYWNrYWdlcy5OZCtzLnBhY2thZ2VzLlBjKyJcXCRfXSpcXGIiLGM9IlxcXFwoPzp4WzAtOWEtZkEtRl17Mn18dVswLTlhLWZBLUZdezR9fFswLTJdWzAtN117MCwyfXwzWzAtNl1bMC03XT98MzdbMC03XT98WzQtN11bMC03XT98LikiO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDovXC9cLy4qJC99LG8uZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4Oi9cL1wqLyxuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInKD89LikiLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIoPz0uKScsbmV4dDoicXFzdHJpbmcifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi8wW3hYXVswLTlhLWZBLUZdK1xiL30se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovWystXT9cZCsoPzooPzpcLlxkKik/KD86W2VFXVsrLV0/XGQrKT8pP1xiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2wrIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiXSxyZWdleDoiKCIrbCsiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2wrIikoXFxzKikoPSkoXFxzKikiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFwuKSgiK2wrIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMrKShcXHcrKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IihmdW5jdGlvbikoXFxzKykoIitsKyIpKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXHMqKSg6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsidGV4dCIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6Iig6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDovKD86dHJ1ZXxmYWxzZSlcYi99LHt0b2tlbjoia2V5d29yZCIscmVnZXg6Iig/OiIrbisiKVxcYiIsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiJdLHJlZ2V4Oi8oXC4pKHMoPzpoKD86aWZ0fG93KD86TW9kKD86ZWxlc3NEaWFsb2d8YWxEaWFsb2cpfEhlbHApKXxjcm9sbCg/Olh8QnkoPzpQYWdlc3xMaW5lcyk/fFl8VG8pP3x0KD86b3B6enp6fHJpa2UpfGkoPzpufHplVG9Db250ZW50fGRlYmFyfGduVGV4dCl8b3J0fHUoPzpwfGIoPzpzdHIoPzppbmcpPyk/KXxwbGkoPzpjZXx0KXxlKD86bmR8dCg/OlJlKD86c2l6YWJsZXxxdWVzdEhlYWRlcil8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvKD86dEtleXN8dXJzKXxZZWFyfEN1cnNvcnxUaW1lKD86b3V0KT98SW50ZXJ2YWx8Wk9wdGlvbnN8RGF0ZXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGF0ZXxGdWxsWWVhcil8RnVsbFllYXJ8QWN0aXZlKXxhcmNoKXxxcnR8bGljZXxhdmVQcmVmZXJlbmNlc3xtYWxsKXxoKD86b21lfGFuZGxlRXZlbnQpfG5hdmlnYXRlfGMoPzpoYXIoPzpDb2RlQXR8QXQpfG8oPzpzfG4oPzpjYXR8dGV4dHVhbHxmaXJtKXxtcGlsZSl8ZWlsfGxlYXIoPzpUaW1lb3V0fEludGVydmFsKT98YSg/OnB0dXJlRXZlbnRzfGxsKXxyZWF0ZSg/OlN0eWxlU2hlZXR8UG9wdXB8RXZlbnRPYmplY3QpKXx0KD86byg/OkdNVFN0cmluZ3xTKD86dHJpbmd8b3VyY2UpfFUoPzpUQ1N0cmluZ3xwcGVyQ2FzZSl8TG8oPzpjYWxlU3RyaW5nfHdlckNhc2UpKXxlc3R8YSg/Om58aW50KD86RW5hYmxlZCk/KSl8aSg/OnMoPzpOYU58RmluaXRlKXxuZGV4T2Z8dGFsaWNzKXxkKD86aXNhYmxlRXh0ZXJuYWxDYXB0dXJlfHVtcHxldGFjaEV2ZW50KXx1KD86big/OnNoaWZ0fHRhaW50fGVzY2FwZXx3YXRjaCl8cGRhdGVDb21tYW5kcyl8aig/Om9pbnxhdmFFbmFibGVkKXxwKD86byg/OnB8dyl8dXNofGx1Z2lucy5yZWZyZXNofGEoPzpkZGluZ3N8cnNlKD86SW50fEZsb2F0KT8pfHIoPzppbnR8b21wdHxlZmVyZW5jZSkpfGUoPzpzY2FwZXxuYWJsZUV4dGVybmFsQ2FwdHVyZXx2YWx8bGVtZW50RnJvbVBvaW50fHgoPzpwfGVjKD86U2NyaXB0fENvbW1hbmQpPykpfHZhbHVlT2Z8VVRDfHF1ZXJ5Q29tbWFuZCg/OlN0YXRlfEluZGV0ZXJtfEVuYWJsZWR8VmFsdWUpfGYoPzppKD86bmR8bGUoPzpNb2RpZmllZERhdGV8U2l6ZXxDcmVhdGVkRGF0ZXxVcGRhdGVkRGF0ZSl8eGVkKXxvKD86bnQoPzpzaXplfGNvbG9yKXxyd2FyZCl8bG9vcnxyb21DaGFyQ29kZSl8d2F0Y2h8bCg/Omlua3xvKD86YWR8Zyl8YXN0SW5kZXhPZil8YSg/OnNpbnxuY2hvcnxjb3N8dCg/OnRhY2hFdmVudHxvYnxhbig/OjIpPyl8cHBseXxsZXJ0fGIoPzpzfG9ydCkpfHIoPzpvdSg/Om5kfHRlRXZlbnRzKXxlKD86c2l6ZSg/OkJ5fFRvKXxjYWxjfHR1cm5WYWx1ZXxwbGFjZXx2ZXJzZXxsKD86b2FkfGVhc2UoPzpDYXB0dXJlfEV2ZW50cykpKXxhbmRvbSl8Zyg/Om98ZXQoPzpSZXNwb25zZUhlYWRlcnxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlKD86Y29uZHN8bGVjdGlvbil8SG91cnN8WWVhcnxUaW1lKD86em9uZU9mZnNldCk/fERhKD86eXx0ZSl8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhKD86eXx0ZSl8RnVsbFllYXIpfEZ1bGxZZWFyfEEoPzp0dGVudGlvbnxsbFJlc3BvbnNlSGVhZGVycykpKXxtKD86aW58b3ZlKD86Qig/Onl8ZWxvdyl8VG8oPzpBYnNvbHV0ZSk/fEFib3ZlKXxlcmdlQXR0cmlidXRlc3xhKD86dGNofHJnaW5zfHgpKXxiKD86dG9hfGlnfG8oPzpsZHxyZGVyV2lkdGhzKXxsaW5rfGFjaykpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZG9tIl0scmVnZXg6LyhcLikocyg/OnViKD86c3RyaW5nRGF0YXxtaXQpfHBsaXRUZXh0fGUoPzp0KD86TmFtZWRJdGVtfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8bGVjdCkpfGhhcyg/OkNoaWxkTm9kZXN8RmVhdHVyZSl8bmFtZWRJdGVtfGMoPzpsKD86aWNrfG8oPzpzZXxuZU5vZGUpKXxyZWF0ZSg/OkMoPzpvbW1lbnR8REFUQVNlY3Rpb258YXB0aW9uKXxUKD86SGVhZHxleHROb2RlfEZvb3QpfERvY3VtZW50RnJhZ21lbnR8UHJvY2Vzc2luZ0luc3RydWN0aW9ufEUoPzpudGl0eVJlZmVyZW5jZXxsZW1lbnQpfEF0dHJpYnV0ZSkpfHRhYkluZGV4fGkoPzpuc2VydCg/OlJvd3xCZWZvcmV8Q2VsbHxEYXRhKXx0ZW0pfG9wZW58ZGVsZXRlKD86Um93fEMoPzplbGx8YXB0aW9uKXxUKD86SGVhZHxGb290KXxEYXRhKXxmb2N1c3x3cml0ZSg/OmxuKT98YSg/OmRkfHBwZW5kKD86Q2hpbGR8RGF0YSkpfHJlKD86c2V0fHBsYWNlKD86Q2hpbGR8RGF0YSl8bW92ZSg/Ok5hbWVkSXRlbXxDaGlsZHxBdHRyaWJ1dGUoPzpOb2RlKT8pPyl8Z2V0KD86TmFtZWRJdGVtfEVsZW1lbnQoPzpzQnkoPzpOYW1lfFRhZ05hbWUpfEJ5SWQpfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8Ymx1cilcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5jb25zdGFudCJdLHJlZ2V4Oi8oXC4pKHMoPzp5c3RlbUxhbmd1YWdlfGNyKD86aXB0c3xvbGxiYXJzfGVlbig/Olh8WXxUb3B8TGVmdCkpfHQoPzp5bGUoPzpTaGVldHMpP3xhdHVzKD86VGV4dHxiYXIpPyl8aWJsaW5nKD86QmVsb3d8QWJvdmUpfG91cmNlfHVmZml4ZXN8ZSg/OmN1cml0eSg/OlBvbGljeSk/fGwoPzplY3Rpb258ZikpKXxoKD86aXN0b3J5fG9zdCg/Om5hbWUpP3xhcyg/Omh8Rm9jdXMpKXx5fFgoPzpNTERvY3VtZW50fFNMRG9jdW1lbnQpfG4oPzpleHR8YW1lKD86c3BhY2UoPzpzfFVSSSl8UHJvcCkpfE0oPzpJTl9WQUxVRXxBWF9WQUxVRSl8Yyg/OmhhcmFjdGVyU2V0fG8oPzpuKD86c3RydWN0b3J8dHJvbGxlcnMpfG9raWVFbmFibGVkfGxvckRlcHRofG1wKD86b25lbnRzfGxldGUpKXx1cnJlbnR8cHVDbGFzc3xsKD86aSg/OnAoPzpib2FyZERhdGEpP3xlbnRJbmZvcm1hdGlvbil8b3NlZHxhc3Nlcyl8YWxsZSg/OmV8cil8cnlwdG8pfHQoPzpvKD86b2xiYXJ8cCl8ZXh0KD86VHJhbnNmb3JtfEluZGVudHxEZWNvcmF0aW9ufEFsaWduKXxhZ3MpfFNRUlQoPzoxXzJ8Mil8aSg/Om4oPzpuZXIoPzpIZWlnaHR8V2lkdGgpfHB1dCl8ZHN8Z25vcmVDYXNlKXx6SW5kZXh8byg/OnNjcHV8big/OnJlYWR5c3RhdGVjaGFuZ2V8TGluZSl8dXRlcig/OkhlaWdodHxXaWR0aCl8cCg/OnNQcm9maWxlfGVuZXIpfGZmc2NyZWVuQnVmZmVyaW5nKXxORUdBVElWRV9JTkZJTklUWXxkKD86aSg/OnNwbGF5fGFsb2coPzpIZWlnaHR8VG9wfFdpZHRofExlZnR8QXJndW1lbnRzKXxyZWN0b3JpZXMpfGUoPzpzY3JpcHRpb258ZmF1bHQoPzpTdGF0dXN8Q2goPzplY2tlZHxhcnNldCl8VmlldykpKXx1KD86c2VyKD86UHJvZmlsZXxMYW5ndWFnZXxBZ2VudCl8big/OmlxdWVJRHxkZWZpbmVkKXxwZGF0ZUludGVydmFsKXxfY29udGVudHxwKD86aXhlbERlcHRofG9ydHxlcnNvbmFsYmFyfGtjczExfGwoPzp1Z2luc3xhdGZvcm0pfGEoPzp0aG5hbWV8ZGRpbmcoPzpSaWdodHxCb3R0b218VG9wfExlZnQpfHJlbnQoPzpXaW5kb3d8TGF5ZXIpP3xnZSg/OlgoPzpPZmZzZXQpP3xZKD86T2Zmc2V0KT8pKXxyKD86byg/OnRvKD86Y29sfHR5cGUpfGR1Y3QoPzpTdWIpP3xtcHRlcil8ZSg/OnZpb3VzfGZpeCkpKXxlKD86big/OmNvZGluZ3xhYmxlZFBsdWdpbil8eCg/OnRlcm5hbHxwYW5kbyl8bWJlZHMpfHYoPzppc2liaWxpdHl8ZW5kb3IoPzpTdWIpP3xMaW5rY29sb3IpfFVSTFVuZW5jb2RlZHxQKD86SXxPU0lUSVZFX0lORklOSVRZKXxmKD86aWxlbmFtZXxvKD86bnQoPzpTaXplfEZhbWlseXxXZWlnaHQpfHJtTmFtZSl8cmFtZSg/OnN8RWxlbWVudCl8Z0NvbG9yKXxFfHdoaXRlU3BhY2V8bCg/OmkoPzpzdFN0eWxlVHlwZXxuKD86ZUhlaWdodHxrQ29sb3IpKXxvKD86Y2EoPzp0aW9uKD86YmFyKT98bE5hbWUpfHdzcmMpfGUoPzpuZ3RofGZ0KD86Q29udGV4dCk/KXxhKD86c3QoPzpNKD86b2RpZmllZHxhdGNoKXxJbmRleHxQYXJlbil8eWVyKD86c3xYKXxuZ3VhZ2UpKXxhKD86cHAoPzpNaW5vclZlcnNpb258TmFtZXxDbyg/OmRlTmFtZXxyZSl8VmVyc2lvbil8dmFpbCg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdCl8bGx8cig/Oml0eXxndW1lbnRzKXxMaW5rY29sb3J8Ym92ZSl8cig/OmlnaHQoPzpDb250ZXh0KT98ZSg/OnNwb25zZSg/OlhNTHxUZXh0KXxhZHlTdGF0ZSkpfGdsb2JhbHx4fG0oPzppbWVUeXBlc3x1bHRpbGluZXxlbnViYXJ8YXJnaW4oPzpSaWdodHxCb3R0b218VG9wfExlZnQpKXxMKD86Tig/OjEwfDIpfE9HKD86MTBFfDJFKSl8Yig/Om8oPzp0dG9tfHJkZXIoPzpXaWR0aHxSaWdodFdpZHRofEJvdHRvbVdpZHRofFN0eWxlfENvbG9yfFRvcFdpZHRofExlZnRXaWR0aCkpfHVmZmVyRGVwdGh8ZWxvd3xhY2tncm91bmQoPzpDb2xvcnxJbWFnZSkpKVxiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmZpcmVidWciXSxyZWdleDovKGNvbnNvbGUpKFwuKSh3YXJufGluZm98bG9nfGVycm9yfHRpbWV8dGltZUVuZHxhc3NlcnQpXGIvfSx7dG9rZW46ZnVuY3Rpb24obil7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkobik/InZhcmlhYmxlLmxhbmd1YWdlIjpyLmhhc093blByb3BlcnR5KG4pPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOnUuaGFzT3duUHJvcGVydHkobik/InN0b3JhZ2UudHlwZSI6dC5oYXNPd25Qcm9wZXJ0eShuKT8ia2V5d29yZCI6YS5oYXNPd25Qcm9wZXJ0eShuKT8iY29uc3RhbnQubGFuZ3VhZ2UiOmYuaGFzT3duUHJvcGVydHkobik/ImludmFsaWQuaWxsZWdhbCI6bj09ImRlYnVnZ2VyIj8iaW52YWxpZC5kZXByZWNhdGVkIjoiaWRlbnRpZmllciJ9LHJlZ2V4Omx9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6LyF8XCR8JXwmfFwqfFwtXC18XC18XCtcK3xcK3x+fD09PXw9PXw9fCE9fCE9PXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XHxcfHxcP1w6fFwqPXwlPXxcKz18XC09fCY9fFxePXxcYig/OmlufGluc3RhbmNlb2Z8bmV3fGRlbGV0ZXx0eXBlb2Z8dm9pZCkvLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDovXD98XDp8XCx8XDt8XC4vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6L1tcWyh7XS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDovW1xdKX1dL30se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovXC89Py8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6L14jIS4qJC99LHt0b2tlbjoidGV4dCIscmVnZXg6L1xzKy99XSxyZWdleF9hbGxvd2VkOltvLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50X3JlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJcXC8iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4Olt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiIvXFx3KiIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbXlxcXFwvXFxbXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXFxbIixuZXh0OiJyZWdleF9jaGFyYWN0ZXJfY2xhc3MiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleF9jaGFyYWN0ZXJfY2xhc3M6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJdIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJbXlxcXFxcXF1dKyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGZ1bmN0aW9uX2FyZ3VtZW50czpbe3Rva2VuOiJ2YXJpYWJsZS5wYXJhbWV0ZXIiLHJlZ2V4Omx9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJbLCBdKyIsbWVyZ2U6ITB9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiIkIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sY29tbWVudF9yZWdleF9hbGxvd2VkOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scXFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpjfSx7dG9rZW46InN0cmluZyIscmVnZXg6J1teIlxcXFxdKycsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OicifCQnLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dLHFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpjfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlteJ1xcXFxdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6Iid8JCIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV19LHRoaXMuZW1iZWRSdWxlcyhvLCJkb2MtIixbby5nZXRFbmRSdWxlKCJzdGFydCIpXSl9O3IuaW5oZXJpdHMoYSx1KSx0LkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcz1hfSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMscz1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O3IuaW5oZXJpdHMocyxpKSxzLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihlKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDplfX0scy5nZXRFbmRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6ZX19LHQuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPXN9KSxkZWZpbmUoImFjZS9tb2RlL3htbF91dGlsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuW3t0b2tlbjoic3RyaW5nIixyZWdleDonIi4qPyInfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6J1siXS4qJyxuZXh0OmUrIl9xcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4qPycifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IlsnXS4qIixuZXh0OmUrIl9xc3RyaW5nIn1dfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm5be3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKj8iK2UsbmV4dDp0fSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfXQudGFnPWZ1bmN0aW9uKGUsdCxuLHMpe2VbdF09W3t0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46ZnVuY3Rpb24oZSl7cmV0dXJuIHMmJnNbZV0/Im1ldGEudGFnLnRhZy1uYW1lLiIrc1tlXToibWV0YS50YWcudGFnLW5hbWUifSxtZXJnZTohMCxyZWdleDoiWy1fYS16QS1aMC05Ol0rIixuZXh0OnQrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6dCsiX2VtYmVkX2F0dHJpYnV0ZV9saXN0In1dLGVbdCsiX3FzdHJpbmciXT1pKCInIix0KyJfZW1iZWRfYXR0cmlidXRlX2xpc3QiKSxlW3QrIl9xcXN0cmluZyJdPWkoJyInLHQrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCIpLGVbdCsiX2VtYmVkX2F0dHJpYnV0ZV9saXN0Il09W3t0b2tlbjoibWV0YS50YWciLG1lcmdlOiEwLHJlZ2V4OiIvPz4iLG5leHQ6bn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiPSJ9LHt0b2tlbjoiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lIixyZWdleDoiWy1fYS16QS1aMC05Ol0rIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLmNvbmNhdChyKHQpKX19KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxpPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQpe3JldHVybi9eXHMrJC8udGVzdChlKT8vXlxzKlx9Ly50ZXN0KHQpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRMaW5lKHQpLGk9bi5tYXRjaCgvXihccypcfSkvKTtpZighaSlyZXR1cm4gMDt2YXIgcz1pWzFdLmxlbmd0aCxvPWUuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnQsY29sdW1uOnN9KTtpZighb3x8by5yb3c9PXQpcmV0dXJuIDA7dmFyIHU9dGhpcy4kZ2V0SW5kZW50KGUuZ2V0TGluZShvLnJvdykpO2UucmVwbGFjZShuZXcgcih0LDAsdCxzLTEpLHUpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCgvXihccyspLyk7cmV0dXJuIHQ/dFsxXToiIn19KS5jYWxsKGkucHJvdG90eXBlKSx0Lk1hdGNoaW5nQnJhY2VPdXRkZW50PWl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-lua.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9sdWEiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvbHVhX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9sdWFfaGlnaGxpZ2h0X3J1bGVzIikuTHVhSGlnaGxpZ2h0UnVsZXMsdT1lKCIuLi9yYW5nZSIpLlJhbmdlLGE9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKX07ci5pbmhlcml0cyhhLGkpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih0KXt2YXIgbj0wO2Zvcih2YXIgciBpbiB0KXt2YXIgaT10W3JdO2kudHlwZT09ImtleXdvcmQiP2kudmFsdWUgaW4gZSYmKG4rPWVbaS52YWx1ZV0pOmkudHlwZT09InBhcmVuLmxwYXJlbiI/bisrOmkudHlwZT09InBhcmVuLnJwYXJlbiImJm4tLX1yZXR1cm4gbjwwPy0xOm4+MD8xOjB9dmFyIGU9eyJmdW5jdGlvbiI6MSx0aGVuOjEsImRvIjoxLCJlbHNlIjoxLGVsc2VpZjoxLHJlcGVhdDoxLGVuZDotMSx1bnRpbDotMX0sdD1bImVsc2UiLCJlbHNlaWYiLCJlbmQiLCJ1bnRpbCJdO3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXRoaXMuJGdldEluZGVudCh0KSxzPTAsbz10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2Vucyh0LGUpLHU9by50b2tlbnM7cmV0dXJuIGU9PSJzdGFydCImJihzPW4odSkpLHM+MD9pK3I6czwwJiZpLnN1YnN0cihpLmxlbmd0aC1yLmxlbmd0aCk9PXImJiF0aGlzLmNoZWNrT3V0ZGVudChlLHQsIlxuIik/aS5zdWJzdHIoMCxpLmxlbmd0aC1yLmxlbmd0aCk6aX0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSxuLHIpe2lmKHIhPSJcbiImJnIhPSJcciImJnIhPSJcclxuIilyZXR1cm4hMTtpZihuLm1hdGNoKC9eXHMqW1wpXH1cXV0kLykpcmV0dXJuITA7dmFyIGk9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMobi50cmltKCksZSkudG9rZW5zO3JldHVybiFpfHwhaS5sZW5ndGg/ITE6aVswXS50eXBlPT0ia2V5d29yZCImJnQuaW5kZXhPZihpWzBdLnZhbHVlKSE9LTF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXQuZ2V0TGluZShyLTEpLHM9dGhpcy4kZ2V0SW5kZW50KGkpLmxlbmd0aCxvPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGksInN0YXJ0IikudG9rZW5zLGE9dC5nZXRUYWJTdHJpbmcoKS5sZW5ndGgsZj1zK2EqbihvKSxsPXRoaXMuJGdldEluZGVudCh0LmdldExpbmUocikpLmxlbmd0aDtpZihsPGYpcmV0dXJuO3Qub3V0ZGVudFJvd3MobmV3IHUociwwLHIrMiwwKSl9fS5jYWxsKGEucHJvdG90eXBlKSx0Lk1vZGU9YX0pLGRlZmluZSgiYWNlL21vZGUvbHVhX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsbz1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgiYnJlYWt8ZG98ZWxzZXxlbHNlaWZ8ZW5kfGZvcnxmdW5jdGlvbnxpZnxpbnxsb2NhbHxyZXBlYXR8cmV0dXJufHRoZW58dW50aWx8d2hpbGV8b3J8YW5kfG5vdCIuc3BsaXQoInwiKSksdD1pLmFycmF5VG9NYXAoInRydWV8ZmFsc2V8bmlsfF9HfF9WRVJTSU9OIi5zcGxpdCgifCIpKSxuPWkuYXJyYXlUb01hcCgic3RyaW5nfHhwY2FsbHxwYWNrYWdlfHRvc3RyaW5nfHByaW50fG9zfHVucGFja3xyZXF1aXJlfGdldGZlbnZ8c2V0bWV0YXRhYmxlfG5leHR8YXNzZXJ0fHRvbnVtYmVyfGlvfHJhd2VxdWFsfGNvbGxlY3RnYXJiYWdlfGdldG1ldGF0YWJsZXxtb2R1bGV8cmF3c2V0fG1hdGh8ZGVidWd8cGNhbGx8dGFibGV8bmV3cHJveHl8dHlwZXxjb3JvdXRpbmV8X0d8c2VsZWN0fGdjaW5mb3xwYWlyc3xyYXdnZXR8bG9hZHN0cmluZ3xpcGFpcnN8X1ZFUlNJT058ZG9maWxlfHNldGZlbnZ8bG9hZHxlcnJvcnxsb2FkZmlsZXxzdWJ8dXBwZXJ8bGVufGdmaW5kfHJlcHxmaW5kfG1hdGNofGNoYXJ8ZHVtcHxnbWF0Y2h8cmV2ZXJzZXxieXRlfGZvcm1hdHxnc3VifGxvd2VyfHByZWxvYWR8bG9hZGxpYnxsb2FkZWR8bG9hZGVyc3xjcGF0aHxjb25maWd8cGF0aHxzZWVhbGx8ZXhpdHxzZXRsb2NhbGV8ZGF0ZXxnZXRlbnZ8ZGlmZnRpbWV8cmVtb3ZlfHRpbWV8Y2xvY2t8dG1wbmFtZXxyZW5hbWV8ZXhlY3V0ZXxsaW5lc3x3cml0ZXxjbG9zZXxmbHVzaHxvcGVufG91dHB1dHx0eXBlfHJlYWR8c3RkZXJyfHN0ZGlufGlucHV0fHN0ZG91dHxwb3Blbnx0bXBmaWxlfGxvZ3xtYXh8YWNvc3xodWdlfGxkZXhwfHBpfGNvc3x0YW5ofHBvd3xkZWd8dGFufGNvc2h8c2luaHxyYW5kb218cmFuZG9tc2VlZHxmcmV4cHxjZWlsfGZsb29yfHJhZHxhYnN8c3FydHxtb2RmfGFzaW58bWlufG1vZHxmbW9kfGxvZzEwfGF0YW4yfGV4cHxzaW58YXRhbnxnZXR1cHZhbHVlfGRlYnVnfHNldGhvb2t8Z2V0bWV0YXRhYmxlfGdldGhvb2t8c2V0bWV0YXRhYmxlfHNldGxvY2FsfHRyYWNlYmFja3xzZXRmZW52fGdldGluZm98c2V0dXB2YWx1ZXxnZXRsb2NhbHxnZXRyZWdpc3RyeXxnZXRmZW52fHNldG58aW5zZXJ0fGdldG58Zm9yZWFjaGl8bWF4bnxmb3JlYWNofGNvbmNhdHxzb3J0fHJlbW92ZXxyZXN1bWV8eWllbGR8c3RhdHVzfHdyYXB8Y3JlYXRlfHJ1bm5pbmciLnNwbGl0KCJ8IikpLHI9aS5hcnJheVRvTWFwKCJzdHJpbmd8cGFja2FnZXxvc3xpb3xtYXRofGRlYnVnfHRhYmxlfGNvcm91dGluZSIuc3BsaXQoInwiKSkscz1pLmFycmF5VG9NYXAoIl9fYWRkfF9fc3VifF9fbW9kfF9fdW5tfF9fY29uY2F0fF9fbHR8X19pbmRleHxfX2NhbGx8X19nY3xfX21ldGF0YWJsZXxfX211bHxfX2RpdnxfX3Bvd3xfX2xlbnxfX2VxfF9fbGV8X19uZXdpbmRleHxfX3Rvc3RyaW5nfF9fbW9kZXxfX3RvbnVtYmVyIi5zcGxpdCgifCIpKSxvPWkuYXJyYXlUb01hcCgiIi5zcGxpdCgifCIpKSx1PWkuYXJyYXlUb01hcCgic2V0bnxmb3JlYWNofGZvcmVhY2hpfGdjaW5mb3xsb2cxMHxtYXhuIi5zcGxpdCgifCIpKSxhPSIiLGY9Iig/Oig/OlsxLTldXFxkKil8KD86MCkpIixsPSIoPzowW3hYXVtcXGRBLUZhLWZdKykiLGM9Iig/OiIrZisifCIrbCsiKSIsaD0iKD86XFwuXFxkKykiLHA9Iig/OlxcZCspIixkPSIoPzooPzoiK3ArIj8iK2grIil8KD86IitwKyJcXC4pKSIsdj0iKD86IitkKyIpIixtPVtdO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDphKyJcXC1cXC1cXFtcXFsuKlxcXVxcXSJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6YSsiXFwtXFwtXFxbXFw9XFxbLipcXF1cXD1cXF0ifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmErIlxcLVxcLVxcW1xcPXsyfVxcWy4qXFxdXFw9ezJ9XFxdIn0se3Rva2VuOiJjb21tZW50IixyZWdleDphKyJcXC1cXC1cXFtcXD17M31cXFsuKlxcXVxcPXszfVxcXSJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6YSsiXFwtXFwtXFxbXFw9ezR9XFxbLipcXF1cXD17NH1cXF0ifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmErIlxcLVxcLVxcW1xcPXs1fVxcPSpcXFsuKlxcXVxcPXs1fVxcPSpcXF0ifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmErIlxcLVxcLVxcW1xcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicWNvbW1lbnQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmErIlxcLVxcLVxcW1xcPVxcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicWNvbW1lbnQxIn0se3Rva2VuOiJjb21tZW50IixyZWdleDphKyJcXC1cXC1cXFtcXD17Mn1cXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFjb21tZW50MiJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6YSsiXFwtXFwtXFxbXFw9ezN9XFxbLiokIixtZXJnZTohMCxuZXh0OiJxY29tbWVudDMifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmErIlxcLVxcLVxcW1xcPXs0fVxcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicWNvbW1lbnQ0In0se3Rva2VuOmZ1bmN0aW9uKGUpe3ZhciB0PS9cLVwtXFsoXD0rKVxbLyxuO3JldHVybihuPXQuZXhlYyhlKSkhPW51bGwmJihuPW5bMV0pIT11bmRlZmluZWQmJm0ucHVzaChuLmxlbmd0aCksImNvbW1lbnQifSxyZWdleDphKyJcXC1cXC1cXFtcXD17NX1cXD0qXFxbLiokIixtZXJnZTohMCxuZXh0OiJxY29tbWVudDUifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC1cXC0uKiQifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFxbLipcXF1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFw9XFxbLipcXF1cXD1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFw9ezJ9XFxbLipcXF1cXD17Mn1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFw9ezN9XFxbLipcXF1cXD17M31cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFw9ezR9XFxbLipcXF1cXD17NH1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFw9ezV9XFw9KlxcWy4qXFxdXFw9ezV9XFw9KlxcXSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDphKyJcXFtcXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFw9XFxbLiokIixtZXJnZTohMCxuZXh0OiJxc3RyaW5nMSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDphKyJcXFtcXD17Mn1cXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFzdHJpbmcyIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OmErIlxcW1xcPXszfVxcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicXN0cmluZzMifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFw9ezR9XFxbLiokIixtZXJnZTohMCxuZXh0OiJxc3RyaW5nNCJ9LHt0b2tlbjpmdW5jdGlvbihlKXt2YXIgdD0vXFsoXD0rKVxbLyxuO3JldHVybihuPXQuZXhlYyhlKSkhPW51bGwmJihuPW5bMV0pIT11bmRlZmluZWQmJm0ucHVzaChuLmxlbmd0aCksInN0cmluZyJ9LHJlZ2V4OmErIlxcW1xcPXs1fVxcPSpcXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFzdHJpbmc1In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OmErJyIoPzpbXlxcXFxdfFxcXFwuKSo/Iid9LHt0b2tlbjoic3RyaW5nIixyZWdleDphKyInKD86W15cXFxcXXxcXFxcLikqPycifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OnZ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6YysiXFxiIn0se3Rva2VuOmZ1bmN0aW9uKGkpe3JldHVybiBlLmhhc093blByb3BlcnR5KGkpPyJrZXl3b3JkIjp0Lmhhc093blByb3BlcnR5KGkpPyJjb25zdGFudC5sYW5ndWFnZSI6by5oYXNPd25Qcm9wZXJ0eShpKT8iaW52YWxpZC5pbGxlZ2FsIjpyLmhhc093blByb3BlcnR5KGkpPyJjb25zdGFudC5saWJyYXJ5Ijp1Lmhhc093blByb3BlcnR5KGkpPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOm4uaGFzT3duUHJvcGVydHkoaSk/InN1cHBvcnQuZnVuY3Rpb24iOnMuaGFzT3duUHJvcGVydHkoaSk/InN1cHBvcnQuZnVuY3Rpb24iOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcK3xcXC18XFwqfFxcL3wlfFxcI3xcXF58fnw8fD58PD18PT58PT18fj18PXxcXDp8XFwuXFwuXFwufFxcLlxcLiJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1xcW1xcKFxce10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF1cXClcXH1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxxY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiKD86W15cXFxcXXxcXFxcLikqP1xcXVxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxY29tbWVudDE6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD1cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scWNvbW1lbnQyOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9ezJ9XFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFjb21tZW50Mzpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiKD86W15cXFxcXXxcXFxcLikqP1xcXVxcPXszfVxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxY29tbWVudDQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD17NH1cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scWNvbW1lbnQ1Olt7dG9rZW46ZnVuY3Rpb24oZSl7dmFyIHQ9L1xdKFw9KylcXS8sbj10aGlzLnJ1bGVzLnFjb21tZW50NVswXSxyO24ubmV4dD0ic3RhcnQiO2lmKChyPXQuZXhlYyhlKSkhPW51bGwmJihyPXJbMV0pIT11bmRlZmluZWQpe3ZhciBpPXIubGVuZ3RoLHM7KHM9bS5wb3AoKSkhPWkmJihtLnB1c2gocyksbi5uZXh0PSJxY29tbWVudDUiKX1yZXR1cm4iY29tbWVudCJ9LHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9ezV9XFw9KlxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nMTpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9XFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV0scXN0cmluZzI6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiKD86W15cXFxcXXxcXFxcLikqP1xcXVxcPXsyfVxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFzdHJpbmczOlt7dG9rZW46InN0cmluZyIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD17M31cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nNDpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9ezR9XFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV0scXN0cmluZzU6W3t0b2tlbjpmdW5jdGlvbihlKXt2YXIgdD0vXF0oXD0rKVxdLyxuPXRoaXMucnVsZXMucXN0cmluZzVbMF0scjtuLm5leHQ9InN0YXJ0IjtpZigocj10LmV4ZWMoZSkpIT1udWxsJiYocj1yWzFdKSE9dW5kZWZpbmVkKXt2YXIgaT1yLmxlbmd0aCxzOyhzPW0ucG9wKCkpIT1pJiYobS5wdXNoKHMpLG4ubmV4dD0icXN0cmluZzUiKX1yZXR1cm4ic3RyaW5nIn0scmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD17NX1cXD0qXFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV19fTtyLmluaGVyaXRzKG8scyksdC5MdWFIaWdobGlnaHRSdWxlcz1vfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-luahtml.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9sdWFodG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9odG1sIiwiYWNlL21vZGUvbHVhIiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2x1YWh0bWxfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vaHRtbCIpLk1vZGUsZj1hKCIuL2x1YSIpLk1vZGUsZz1hKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsaD1hKCIuL2x1YWh0bWxfaGlnaGxpZ2h0X3J1bGVzIikuTHVhSHRtbEhpZ2hsaWdodFJ1bGVzLGk9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgaDt0aGlzLiR0b2tlbml6ZXI9bmV3IGcoKG5ldyBoKS5nZXRSdWxlcygpKSx0aGlzLiRlbWJlZHM9YS5nZXRFbWJlZHMoKSx0aGlzLmNyZWF0ZU1vZGVEZWxlZ2F0ZXMoeyJsdWEtIjpmfSl9O2QuaW5oZXJpdHMoaSxlKSxiLk1vZGU9aX0pLGRlZmluZSgiYWNlL21vZGUvaHRtbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS9tb2RlL2phdmFzY3JpcHQiLCJhY2UvbW9kZS9jc3MiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvaHRtbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9iZWhhdmlvdXIveG1sIiwiYWNlL21vZGUvZm9sZGluZy9odG1sIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dCIpLk1vZGUsZj1hKCIuL2phdmFzY3JpcHQiKS5Nb2RlLGc9YSgiLi9jc3MiKS5Nb2RlLGg9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGk9YSgiLi9odG1sX2hpZ2hsaWdodF9ydWxlcyIpLkh0bWxIaWdobGlnaHRSdWxlcyxqPWEoIi4vYmVoYXZpb3VyL3htbCIpLlhtbEJlaGF2aW91cixrPWEoIi4vZm9sZGluZy9odG1sIikuRm9sZE1vZGUsbD1mdW5jdGlvbigpe3ZhciBhPW5ldyBpO3RoaXMuJHRva2VuaXplcj1uZXcgaChhLmdldFJ1bGVzKCkpLHRoaXMuJGJlaGF2aW91cj1uZXcgaix0aGlzLiRlbWJlZHM9YS5nZXRFbWJlZHMoKSx0aGlzLmNyZWF0ZU1vZGVEZWxlZ2F0ZXMoeyJqcy0iOmYsImNzcy0iOmd9KSx0aGlzLmZvbGRpbmdSdWxlcz1uZXcga307ZC5pbmhlcml0cyhsLGUpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIDB9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLiRnZXRJbmRlbnQoYil9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4hMX19LmNhbGwobC5wcm90b3R5cGUpLGIuTW9kZT1sfSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSIsImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIpLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcyxoPWEoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGk9YSgiLi4vcmFuZ2UiKS5SYW5nZSxqPWEoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGs9YSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGw9YSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLG09ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IGYoKG5ldyBnKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyBoLHRoaXMuJGJlaGF2aW91cj1uZXcgayx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgbH07ZC5pbmhlcml0cyhtLGUpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ITAsZj0vXihccyopXC9cLy87Zm9yKHZhciBnPWM7Zzw9ZDtnKyspaWYoIWYudGVzdChiLmdldExpbmUoZykpKXtlPSExO2JyZWFrfWlmKGUpe3ZhciBoPW5ldyBpKDAsMCwwLDApO2Zvcih2YXIgZz1jO2c8PWQ7ZysrKXt2YXIgaj1iLmdldExpbmUoZyksaz1qLm1hdGNoKGYpO2guc3RhcnQucm93PWcsaC5lbmQucm93PWcsaC5lbmQuY29sdW1uPWtbMF0ubGVuZ3RoLGIucmVwbGFjZShoLGtbMV0pfX1lbHNlIGIuaW5kZW50Um93cyhjLGQsIi8vIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldEluZGVudChiKSxlPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGIsYSksZj1lLnRva2VucyxnPWUuc3RhdGU7aWYoZi5sZW5ndGgmJmZbZi5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiBkO2lmKGE9PSJzdGFydCJ8fGE9PSJyZWdleF9hbGxvd2VkIil7dmFyIGg9Yi5tYXRjaCgvXi4qKD86XGJjYXNlXGIuKlw6fFtce1woXFtdKVxzKiQvKTtoJiYoZCs9Yyl9ZWxzZSBpZihhPT0iZG9jLXN0YXJ0Iil7aWYoZz09InN0YXJ0Inx8YT09InJlZ2V4X2FsbG93ZWQiKXJldHVybiIiO3ZhciBoPWIubWF0Y2goL15ccyooXC8/KVwqLyk7aCYmKGhbMV0mJihkKz0iICIpLGQrPSIqICIpfXJldHVybiBkfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KGIsYyl9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQoYixjKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGooWyJhY2UiXSwid29ya2VyLWphdmFzY3JpcHQuanMiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X3dvcmtlciIsIkphdmFTY3JpcHRXb3JrZXIiKTtyZXR1cm4gYi5hdHRhY2hUb0RvY3VtZW50KGEuZ2V0RG9jdW1lbnQoKSksYi5vbigianNsaW50IixmdW5jdGlvbihiKXt2YXIgYz1bXTtmb3IodmFyIGQ9MDtkPGIuZGF0YS5sZW5ndGg7ZCsrKXt2YXIgZT1iLmRhdGFbZF07ZSYmYy5wdXNoKHtyb3c6ZS5saW5lLTEsY29sdW1uOmUuY2hhcmFjdGVyLTEsdGV4dDplLnJlYXNvbix0eXBlOiJ3YXJuaW5nIixsaW50OmV9KX1hLnNldEFubm90YXRpb25zKGMpfSksYi5vbigibmFyY2lzc3VzIixmdW5jdGlvbihiKXthLnNldEFubm90YXRpb25zKFtiLmRhdGFdKX0pLGIub24oInRlcm1pbmF0ZSIsZnVuY3Rpb24oKXthLmNsZWFyQW5ub3RhdGlvbnMoKX0pLGJ9fS5jYWxsKG0ucHJvdG90eXBlKSxiLk1vZGU9bX0pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS91bmljb2RlIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4uL3VuaWNvZGUiKSxnPWEoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLGg9YSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxpPWZ1bmN0aW9uKCl7dmFyIGE9ZS5hcnJheVRvTWFwKCJBcnJheXxCb29sZWFufERhdGV8RnVuY3Rpb258SXRlcmF0b3J8TnVtYmVyfE9iamVjdHxSZWdFeHB8U3RyaW5nfFByb3h5fE5hbWVzcGFjZXxRTmFtZXxYTUx8WE1MTGlzdHxBcnJheUJ1ZmZlcnxGbG9hdDMyQXJyYXl8RmxvYXQ2NEFycmF5fEludDE2QXJyYXl8SW50MzJBcnJheXxJbnQ4QXJyYXl8VWludDE2QXJyYXl8VWludDMyQXJyYXl8VWludDhBcnJheXxVaW50OENsYW1wZWRBcnJheXxFcnJvcnxFdmFsRXJyb3J8SW50ZXJuYWxFcnJvcnxSYW5nZUVycm9yfFJlZmVyZW5jZUVycm9yfFN0b3BJdGVyYXRpb258U3ludGF4RXJyb3J8VHlwZUVycm9yfFVSSUVycm9yfGRlY29kZVVSSXxkZWNvZGVVUklDb21wb25lbnR8ZW5jb2RlVVJJfGVuY29kZVVSSUNvbXBvbmVudHxldmFsfGlzRmluaXRlfGlzTmFOfHBhcnNlRmxvYXR8cGFyc2VJbnR8SlNPTnxNYXRofHRoaXN8YXJndW1lbnRzfHByb3RvdHlwZXx3aW5kb3d8ZG9jdW1lbnQiLnNwbGl0KCJ8IikpLGI9ZS5hcnJheVRvTWFwKCJicmVha3xjYXNlfGNhdGNofGNvbnRpbnVlfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZmluYWxseXxmb3J8ZnVuY3Rpb258aWZ8aW58aW5zdGFuY2VvZnxuZXd8cmV0dXJufHN3aXRjaHx0aHJvd3x0cnl8dHlwZW9mfGxldHx2YXJ8d2hpbGV8d2l0aHxjb25zdHx5aWVsZHxpbXBvcnR8Z2V0fHNldCIuc3BsaXQoInwiKSksYz0iY2FzZXxkb3xlbHNlfGZpbmFsbHl8aW58aW5zdGFuY2VvZnxyZXR1cm58dGhyb3d8dHJ5fHR5cGVvZnx5aWVsZCIsZD1lLmFycmF5VG9NYXAoIl9fcGFyZW50X198X19jb3VudF9ffGVzY2FwZXx1bmVzY2FwZXx3aXRofF9fcHJvdG9fXyIuc3BsaXQoInwiKSksaD1lLmFycmF5VG9NYXAoImNvbnN0fGxldHx2YXJ8ZnVuY3Rpb24iLnNwbGl0KCJ8IikpLGk9ZS5hcnJheVRvTWFwKCJudWxsfEluZmluaXR5fE5hTnx1bmRlZmluZWQiLnNwbGl0KCJ8IikpLGo9ZS5hcnJheVRvTWFwKCJjbGFzc3xlbnVtfGV4dGVuZHN8c3VwZXJ8ZXhwb3J0fGltcGxlbWVudHN8cHJpdmF0ZXxwdWJsaWN8aW50ZXJmYWNlfHBhY2thZ2V8cHJvdGVjdGVkfHN0YXRpYyIuc3BsaXQoInwiKSksaz0iWyIrZi5wYWNrYWdlcy5MKyJcXCRfXVsiK2YucGFja2FnZXMuTCtmLnBhY2thZ2VzLk1uK2YucGFja2FnZXMuTWMrZi5wYWNrYWdlcy5OZCtmLnBhY2thZ2VzLlBjKyJcXCRfXSpcXGIiLGw9IlxcXFwoPzp4WzAtOWEtZkEtRl17Mn18dVswLTlhLWZBLUZdezR9fFswLTJdWzAtN117MCwyfXwzWzAtNl1bMC03XT98MzdbMC03XT98WzQtN11bMC03XT98LikiO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDovXC9cLy4qJC99LGcuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4Oi9cL1wqLyxuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInKD89LikiLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIoPz0uKScsbmV4dDoicXFzdHJpbmcifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi8wW3hYXVswLTlhLWZBLUZdK1xiL30se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovWystXT9cZCsoPzooPzpcLlxkKik/KD86W2VFXVsrLV0/XGQrKT8pP1xiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiXSxyZWdleDoiKCIraysiKShcXC4pKHByb3RvdHlwZSkoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2srIikoXFwuKSgiK2srIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitrKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitrKyIpKFxcLikoIitrKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMrKShcXHcrKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IihmdW5jdGlvbikoXFxzKykoIitrKyIpKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIraysiKShcXHMqKSg6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsidGV4dCIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6Iig6KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDovKD86dHJ1ZXxmYWxzZSlcYi99LHt0b2tlbjoia2V5d29yZCIscmVnZXg6Iig/OiIrYysiKVxcYiIsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiJdLHJlZ2V4Oi8oXC4pKHMoPzpoKD86aWZ0fG93KD86TW9kKD86ZWxlc3NEaWFsb2d8YWxEaWFsb2cpfEhlbHApKXxjcm9sbCg/Olh8QnkoPzpQYWdlc3xMaW5lcyk/fFl8VG8pP3x0KD86b3B6enp6fHJpa2UpfGkoPzpufHplVG9Db250ZW50fGRlYmFyfGduVGV4dCl8b3J0fHUoPzpwfGIoPzpzdHIoPzppbmcpPyk/KXxwbGkoPzpjZXx0KXxlKD86bmR8dCg/OlJlKD86c2l6YWJsZXxxdWVzdEhlYWRlcil8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvKD86dEtleXN8dXJzKXxZZWFyfEN1cnNvcnxUaW1lKD86b3V0KT98SW50ZXJ2YWx8Wk9wdGlvbnN8RGF0ZXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGF0ZXxGdWxsWWVhcil8RnVsbFllYXJ8QWN0aXZlKXxhcmNoKXxxcnR8bGljZXxhdmVQcmVmZXJlbmNlc3xtYWxsKXxoKD86b21lfGFuZGxlRXZlbnQpfG5hdmlnYXRlfGMoPzpoYXIoPzpDb2RlQXR8QXQpfG8oPzpzfG4oPzpjYXR8dGV4dHVhbHxmaXJtKXxtcGlsZSl8ZWlsfGxlYXIoPzpUaW1lb3V0fEludGVydmFsKT98YSg/OnB0dXJlRXZlbnRzfGxsKXxyZWF0ZSg/OlN0eWxlU2hlZXR8UG9wdXB8RXZlbnRPYmplY3QpKXx0KD86byg/OkdNVFN0cmluZ3xTKD86dHJpbmd8b3VyY2UpfFUoPzpUQ1N0cmluZ3xwcGVyQ2FzZSl8TG8oPzpjYWxlU3RyaW5nfHdlckNhc2UpKXxlc3R8YSg/Om58aW50KD86RW5hYmxlZCk/KSl8aSg/OnMoPzpOYU58RmluaXRlKXxuZGV4T2Z8dGFsaWNzKXxkKD86aXNhYmxlRXh0ZXJuYWxDYXB0dXJlfHVtcHxldGFjaEV2ZW50KXx1KD86big/OnNoaWZ0fHRhaW50fGVzY2FwZXx3YXRjaCl8cGRhdGVDb21tYW5kcyl8aig/Om9pbnxhdmFFbmFibGVkKXxwKD86byg/OnB8dyl8dXNofGx1Z2lucy5yZWZyZXNofGEoPzpkZGluZ3N8cnNlKD86SW50fEZsb2F0KT8pfHIoPzppbnR8b21wdHxlZmVyZW5jZSkpfGUoPzpzY2FwZXxuYWJsZUV4dGVybmFsQ2FwdHVyZXx2YWx8bGVtZW50RnJvbVBvaW50fHgoPzpwfGVjKD86U2NyaXB0fENvbW1hbmQpPykpfHZhbHVlT2Z8VVRDfHF1ZXJ5Q29tbWFuZCg/OlN0YXRlfEluZGV0ZXJtfEVuYWJsZWR8VmFsdWUpfGYoPzppKD86bmR8bGUoPzpNb2RpZmllZERhdGV8U2l6ZXxDcmVhdGVkRGF0ZXxVcGRhdGVkRGF0ZSl8eGVkKXxvKD86bnQoPzpzaXplfGNvbG9yKXxyd2FyZCl8bG9vcnxyb21DaGFyQ29kZSl8d2F0Y2h8bCg/Omlua3xvKD86YWR8Zyl8YXN0SW5kZXhPZil8YSg/OnNpbnxuY2hvcnxjb3N8dCg/OnRhY2hFdmVudHxvYnxhbig/OjIpPyl8cHBseXxsZXJ0fGIoPzpzfG9ydCkpfHIoPzpvdSg/Om5kfHRlRXZlbnRzKXxlKD86c2l6ZSg/OkJ5fFRvKXxjYWxjfHR1cm5WYWx1ZXxwbGFjZXx2ZXJzZXxsKD86b2FkfGVhc2UoPzpDYXB0dXJlfEV2ZW50cykpKXxhbmRvbSl8Zyg/Om98ZXQoPzpSZXNwb25zZUhlYWRlcnxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlKD86Y29uZHN8bGVjdGlvbil8SG91cnN8WWVhcnxUaW1lKD86em9uZU9mZnNldCk/fERhKD86eXx0ZSl8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhKD86eXx0ZSl8RnVsbFllYXIpfEZ1bGxZZWFyfEEoPzp0dGVudGlvbnxsbFJlc3BvbnNlSGVhZGVycykpKXxtKD86aW58b3ZlKD86Qig/Onl8ZWxvdyl8VG8oPzpBYnNvbHV0ZSk/fEFib3ZlKXxlcmdlQXR0cmlidXRlc3xhKD86dGNofHJnaW5zfHgpKXxiKD86dG9hfGlnfG8oPzpsZHxyZGVyV2lkdGhzKXxsaW5rfGFjaykpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZG9tIl0scmVnZXg6LyhcLikocyg/OnViKD86c3RyaW5nRGF0YXxtaXQpfHBsaXRUZXh0fGUoPzp0KD86TmFtZWRJdGVtfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8bGVjdCkpfGhhcyg/OkNoaWxkTm9kZXN8RmVhdHVyZSl8bmFtZWRJdGVtfGMoPzpsKD86aWNrfG8oPzpzZXxuZU5vZGUpKXxyZWF0ZSg/OkMoPzpvbW1lbnR8REFUQVNlY3Rpb258YXB0aW9uKXxUKD86SGVhZHxleHROb2RlfEZvb3QpfERvY3VtZW50RnJhZ21lbnR8UHJvY2Vzc2luZ0luc3RydWN0aW9ufEUoPzpudGl0eVJlZmVyZW5jZXxsZW1lbnQpfEF0dHJpYnV0ZSkpfHRhYkluZGV4fGkoPzpuc2VydCg/OlJvd3xCZWZvcmV8Q2VsbHxEYXRhKXx0ZW0pfG9wZW58ZGVsZXRlKD86Um93fEMoPzplbGx8YXB0aW9uKXxUKD86SGVhZHxGb290KXxEYXRhKXxmb2N1c3x3cml0ZSg/OmxuKT98YSg/OmRkfHBwZW5kKD86Q2hpbGR8RGF0YSkpfHJlKD86c2V0fHBsYWNlKD86Q2hpbGR8RGF0YSl8bW92ZSg/Ok5hbWVkSXRlbXxDaGlsZHxBdHRyaWJ1dGUoPzpOb2RlKT8pPyl8Z2V0KD86TmFtZWRJdGVtfEVsZW1lbnQoPzpzQnkoPzpOYW1lfFRhZ05hbWUpfEJ5SWQpfEF0dHJpYnV0ZSg/Ok5vZGUpPyl8Ymx1cilcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5jb25zdGFudCJdLHJlZ2V4Oi8oXC4pKHMoPzp5c3RlbUxhbmd1YWdlfGNyKD86aXB0c3xvbGxiYXJzfGVlbig/Olh8WXxUb3B8TGVmdCkpfHQoPzp5bGUoPzpTaGVldHMpP3xhdHVzKD86VGV4dHxiYXIpPyl8aWJsaW5nKD86QmVsb3d8QWJvdmUpfG91cmNlfHVmZml4ZXN8ZSg/OmN1cml0eSg/OlBvbGljeSk/fGwoPzplY3Rpb258ZikpKXxoKD86aXN0b3J5fG9zdCg/Om5hbWUpP3xhcyg/Omh8Rm9jdXMpKXx5fFgoPzpNTERvY3VtZW50fFNMRG9jdW1lbnQpfG4oPzpleHR8YW1lKD86c3BhY2UoPzpzfFVSSSl8UHJvcCkpfE0oPzpJTl9WQUxVRXxBWF9WQUxVRSl8Yyg/OmhhcmFjdGVyU2V0fG8oPzpuKD86c3RydWN0b3J8dHJvbGxlcnMpfG9raWVFbmFibGVkfGxvckRlcHRofG1wKD86b25lbnRzfGxldGUpKXx1cnJlbnR8cHVDbGFzc3xsKD86aSg/OnAoPzpib2FyZERhdGEpP3xlbnRJbmZvcm1hdGlvbil8b3NlZHxhc3Nlcyl8YWxsZSg/OmV8cil8cnlwdG8pfHQoPzpvKD86b2xiYXJ8cCl8ZXh0KD86VHJhbnNmb3JtfEluZGVudHxEZWNvcmF0aW9ufEFsaWduKXxhZ3MpfFNRUlQoPzoxXzJ8Mil8aSg/Om4oPzpuZXIoPzpIZWlnaHR8V2lkdGgpfHB1dCl8ZHN8Z25vcmVDYXNlKXx6SW5kZXh8byg/OnNjcHV8big/OnJlYWR5c3RhdGVjaGFuZ2V8TGluZSl8dXRlcig/OkhlaWdodHxXaWR0aCl8cCg/OnNQcm9maWxlfGVuZXIpfGZmc2NyZWVuQnVmZmVyaW5nKXxORUdBVElWRV9JTkZJTklUWXxkKD86aSg/OnNwbGF5fGFsb2coPzpIZWlnaHR8VG9wfFdpZHRofExlZnR8QXJndW1lbnRzKXxyZWN0b3JpZXMpfGUoPzpzY3JpcHRpb258ZmF1bHQoPzpTdGF0dXN8Q2goPzplY2tlZHxhcnNldCl8VmlldykpKXx1KD86c2VyKD86UHJvZmlsZXxMYW5ndWFnZXxBZ2VudCl8big/OmlxdWVJRHxkZWZpbmVkKXxwZGF0ZUludGVydmFsKXxfY29udGVudHxwKD86aXhlbERlcHRofG9ydHxlcnNvbmFsYmFyfGtjczExfGwoPzp1Z2luc3xhdGZvcm0pfGEoPzp0aG5hbWV8ZGRpbmcoPzpSaWdodHxCb3R0b218VG9wfExlZnQpfHJlbnQoPzpXaW5kb3d8TGF5ZXIpP3xnZSg/OlgoPzpPZmZzZXQpP3xZKD86T2Zmc2V0KT8pKXxyKD86byg/OnRvKD86Y29sfHR5cGUpfGR1Y3QoPzpTdWIpP3xtcHRlcil8ZSg/OnZpb3VzfGZpeCkpKXxlKD86big/OmNvZGluZ3xhYmxlZFBsdWdpbil8eCg/OnRlcm5hbHxwYW5kbyl8bWJlZHMpfHYoPzppc2liaWxpdHl8ZW5kb3IoPzpTdWIpP3xMaW5rY29sb3IpfFVSTFVuZW5jb2RlZHxQKD86SXxPU0lUSVZFX0lORklOSVRZKXxmKD86aWxlbmFtZXxvKD86bnQoPzpTaXplfEZhbWlseXxXZWlnaHQpfHJtTmFtZSl8cmFtZSg/OnN8RWxlbWVudCl8Z0NvbG9yKXxFfHdoaXRlU3BhY2V8bCg/OmkoPzpzdFN0eWxlVHlwZXxuKD86ZUhlaWdodHxrQ29sb3IpKXxvKD86Y2EoPzp0aW9uKD86YmFyKT98bE5hbWUpfHdzcmMpfGUoPzpuZ3RofGZ0KD86Q29udGV4dCk/KXxhKD86c3QoPzpNKD86b2RpZmllZHxhdGNoKXxJbmRleHxQYXJlbil8eWVyKD86c3xYKXxuZ3VhZ2UpKXxhKD86cHAoPzpNaW5vclZlcnNpb258TmFtZXxDbyg/OmRlTmFtZXxyZSl8VmVyc2lvbil8dmFpbCg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdCl8bGx8cig/Oml0eXxndW1lbnRzKXxMaW5rY29sb3J8Ym92ZSl8cig/OmlnaHQoPzpDb250ZXh0KT98ZSg/OnNwb25zZSg/OlhNTHxUZXh0KXxhZHlTdGF0ZSkpfGdsb2JhbHx4fG0oPzppbWVUeXBlc3x1bHRpbGluZXxlbnViYXJ8YXJnaW4oPzpSaWdodHxCb3R0b218VG9wfExlZnQpKXxMKD86Tig/OjEwfDIpfE9HKD86MTBFfDJFKSl8Yig/Om8oPzp0dG9tfHJkZXIoPzpXaWR0aHxSaWdodFdpZHRofEJvdHRvbVdpZHRofFN0eWxlfENvbG9yfFRvcFdpZHRofExlZnRXaWR0aCkpfHVmZmVyRGVwdGh8ZWxvd3xhY2tncm91bmQoPzpDb2xvcnxJbWFnZSkpKVxiL30se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmZpcmVidWciXSxyZWdleDovKGNvbnNvbGUpKFwuKSh3YXJufGluZm98bG9nfGVycm9yfHRpbWV8dGltZUVuZHxhc3NlcnQpXGIvfSx7dG9rZW46ZnVuY3Rpb24oYyl7cmV0dXJuIGEuaGFzT3duUHJvcGVydHkoYyk/InZhcmlhYmxlLmxhbmd1YWdlIjpkLmhhc093blByb3BlcnR5KGMpPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOmguaGFzT3duUHJvcGVydHkoYyk/InN0b3JhZ2UudHlwZSI6Yi5oYXNPd25Qcm9wZXJ0eShjKT8ia2V5d29yZCI6aS5oYXNPd25Qcm9wZXJ0eShjKT8iY29uc3RhbnQubGFuZ3VhZ2UiOmouaGFzT3duUHJvcGVydHkoYyk/ImludmFsaWQuaWxsZWdhbCI6Yz09ImRlYnVnZ2VyIj8iaW52YWxpZC5kZXByZWNhdGVkIjoiaWRlbnRpZmllciJ9LHJlZ2V4Omt9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6LyF8XCR8JXwmfFwqfFwtXC18XC18XCtcK3xcK3x+fD09PXw9PXw9fCE9fCE9PXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XHxcfHxcP1w6fFwqPXwlPXxcKz18XC09fCY9fFxePXxcYig/OmlufGluc3RhbmNlb2Z8bmV3fGRlbGV0ZXx0eXBlb2Z8dm9pZCkvLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDovXD98XDp8XCx8XDt8XC4vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6L1tcWyh7XS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDovW1xdKX1dL30se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovXC89Py8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6L14jIS4qJC99LHt0b2tlbjoidGV4dCIscmVnZXg6L1xzKy99XSxyZWdleF9hbGxvd2VkOltnLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50X3JlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJcXC8iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4Olt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiIvXFx3KiIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbXlxcXFwvXFxbXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXFxbIixuZXh0OiJyZWdleF9jaGFyYWN0ZXJfY2xhc3MiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleF9jaGFyYWN0ZXJfY2xhc3M6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJdIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJbXlxcXFxcXF1dKyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGZ1bmN0aW9uX2FyZ3VtZW50czpbe3Rva2VuOiJ2YXJpYWJsZS5wYXJhbWV0ZXIiLHJlZ2V4Omt9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiJbLCBdKyIsbWVyZ2U6ITB9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4OiIkIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sY29tbWVudF9yZWdleF9hbGxvd2VkOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG1lcmdlOiEwLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scXFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpsfSx7dG9rZW46InN0cmluZyIscmVnZXg6J1teIlxcXFxdKycsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OicifCQnLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dLHFzdHJpbmc6W3t0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDpsfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlteJ1xcXFxdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFxcXCQiLG5leHQ6InFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6Iid8JCIsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV19LHRoaXMuZW1iZWRSdWxlcyhnLCJkb2MtIixbZy5nZXRFbmRSdWxlKCJzdGFydCIpXSl9O2QuaW5oZXJpdHMoaSxoKSxiLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcz1pfSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZj1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O2QuaW5oZXJpdHMoZixlKSxmLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihhKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDphfX0sZi5nZXRFbmRSdWxlPWZ1bmN0aW9uKGEpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6YX19LGIuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPWZ9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vcmFuZ2UiKS5SYW5nZSxlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihhLGIpe3JldHVybi9eXHMrJC8udGVzdChhKT8vXlxzKlx9Ly50ZXN0KGIpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRMaW5lKGIpLGU9Yy5tYXRjaCgvXihccypcfSkvKTtpZighZSlyZXR1cm4gMDt2YXIgZj1lWzFdLmxlbmd0aCxnPWEuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OmIsY29sdW1uOmZ9KTtpZighZ3x8Zy5yb3c9PWIpcmV0dXJuIDA7dmFyIGg9dGhpcy4kZ2V0SW5kZW50KGEuZ2V0TGluZShnLnJvdykpO2EucmVwbGFjZShuZXcgZChiLDAsYixmLTEpLGgpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXihccyspLyk7cmV0dXJuIGI/YlsxXToiIn19KS5jYWxsKGUucHJvdG90eXBlKSxiLk1hdGNoaW5nQnJhY2VPdXRkZW50PWV9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIsZj1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09InsiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj97dGV4dDoieyIrZysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09In0iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGs9ZC4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOmguY29sdW1uKzEscm93Omgucm93fSk7aWYoayE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihlPT0iXG4iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSJ9Iil7dmFyIGw9ZC5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6aC5yb3csY29sdW1uOmguY29sdW1uKzF9KTtpZighbClyZXR1cm4gbnVsbDt2YXIgbT10aGlzLmdldE5leHRMaW5lSW5kZW50KGEsaS5zdWJzdHJpbmcoMCxpLmxlbmd0aC0xKSxkLmdldFRhYlN0cmluZygpKSxuPXRoaXMuJGdldEluZGVudChkLmRvYy5nZXRMaW5lKGwucm93KSk7cmV0dXJue3RleHQ6IlxuIittKyJcbiIrbixzZWxlY3Rpb246WzEsbS5sZW5ndGgsMSxtLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJmY9PSJ7Iil7dmFyIGc9ZC5kb2MuZ2V0TGluZShlLnN0YXJ0LnJvdyksaD1nLnN1YnN0cmluZyhlLmVuZC5jb2x1bW4sZS5lbmQuY29sdW1uKzEpO2lmKGg9PSJ9IilyZXR1cm4gZS5lbmQuY29sdW1uKyssZX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGU9PSIoIil7dmFyIGY9Yy5nZXRTZWxlY3Rpb25SYW5nZSgpLGc9ZC5kb2MuZ2V0VGV4dFJhbmdlKGYpO3JldHVybiBnIT09IiI/e3RleHQ6IigiK2crIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGU9PSIpIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaj1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisxKTtpZihqPT0iKSIpe3ZhciBrPWQuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjpoLmNvbHVtbisxLHJvdzpoLnJvd30pO2lmKGshPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kLmRvYy5nZXRUZXh0UmFuZ2UoZSk7aWYoIWUuaXNNdWx0aUxpbmUoKSYmZj09IigiKXt2YXIgZz1kLmRvYy5nZXRMaW5lKGUuc3RhcnQucm93KSxoPWcuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKzEsZS5zdGFydC5jb2x1bW4rMik7aWYoaD09IikiKXJldHVybiBlLmVuZC5jb2x1bW4rKyxlfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihlPT0nIid8fGU9PSInIil7dmFyIGY9ZSxnPWMuZ2V0U2VsZWN0aW9uUmFuZ2UoKSxoPWQuZG9jLmdldFRleHRSYW5nZShnKTtpZihoIT09IiIpcmV0dXJue3RleHQ6ZitoK2Ysc2VsZWN0aW9uOiExfTt2YXIgaT1jLmdldEN1cnNvclBvc2l0aW9uKCksaj1kLmRvYy5nZXRMaW5lKGkucm93KSxrPWouc3Vic3RyaW5nKGkuY29sdW1uLTEsaS5jb2x1bW4pO2lmKGs9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGw9ZC5nZXRUb2tlbnMoZy5zdGFydC5yb3cpLG09MCxuLG89LTE7Zm9yKHZhciBwPTA7cDxsLmxlbmd0aDtwKyspe249bFtwXSxuLnR5cGU9PSJzdHJpbmciP289LTE6bzwwJiYobz1uLnZhbHVlLmluZGV4T2YoZikpO2lmKG4udmFsdWUubGVuZ3RoK20+Zy5zdGFydC5jb2x1bW4pYnJlYWs7bSs9bFtwXS52YWx1ZS5sZW5ndGh9aWYoIW58fG88MCYmbi50eXBlIT09ImNvbW1lbnQiJiYobi50eXBlIT09InN0cmluZyJ8fGcuc3RhcnQuY29sdW1uIT09bi52YWx1ZS5sZW5ndGgrbS0xJiZuLnZhbHVlLmxhc3RJbmRleE9mKGYpPT09bi52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6ZitmLHNlbGVjdGlvbjpbMSwxXX07aWYobiYmbi50eXBlPT09InN0cmluZyIpe3ZhciBxPWouc3Vic3RyaW5nKGkuY29sdW1uLGkuY29sdW1uKzEpO2lmKHE9PWYpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZC5kb2MuZ2V0VGV4dFJhbmdlKGUpO2lmKCFlLmlzTXVsdGlMaW5lKCkmJihmPT0nIid8fGY9PSInIikpe3ZhciBnPWQuZG9jLmdldExpbmUoZS5zdGFydC5yb3cpLGg9Zy5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4rMSxlLnN0YXJ0LmNvbHVtbisyKTtpZihoPT0nIicpcmV0dXJuIGUuZW5kLmNvbHVtbisrLGV9fSl9O2QuaW5oZXJpdHMoZixlKSxiLkNzdHlsZUJlaGF2aW91cj1mfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxmPWEoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsZz1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtkLmluaGVyaXRzKGcsZiksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRMaW5lKGMpLGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYoZil7dmFyIGc9Zi5pbmRleDtpZihmWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soYSxmWzFdLGMsZyk7dmFyIGg9YS5nZXRDb21tZW50Rm9sZFJhbmdlKGMsZytmWzBdLmxlbmd0aCk7cmV0dXJuIGguZW5kLmNvbHVtbi09MixofWlmKGIhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIGY9ZC5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihmKXt2YXIgZz1mLmluZGV4K2ZbMF0ubGVuZ3RoO2lmKGZbMl0pe3ZhciBoPWEuZ2V0Q29tbWVudEZvbGRSYW5nZShjLGcpO3JldHVybiBoLmVuZC5jb2x1bW4tPTIsaH12YXIgaT17cm93OmMsY29sdW1uOmd9LGo9YS4kZmluZE9wZW5pbmdCcmFja2V0KGZbMV0saSk7aWYoIWopcmV0dXJuO3JldHVybiBqLmNvbHVtbisrLGkuY29sdW1uLS0sZS5mcm9tUG9pbnRzKGosaSl9fX0uY2FsbChnLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZT1iLkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0TGluZShjKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChkKT8ic3RhcnQiOmI9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3QoZCk/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT0vXlxzKi8sZj1iLGc9YixoPWEuZ2V0TGluZShiKSxpPWN8fGgubGVuZ3RoLGo9aC5tYXRjaChlKVswXS5sZW5ndGgsaz1hLmdldExlbmd0aCgpO3doaWxlKCsrYjxrKXtoPWEuZ2V0TGluZShiKTt2YXIgbD1oLm1hdGNoKGUpWzBdLmxlbmd0aDtpZihsPT1oLmxlbmd0aCljb250aW51ZTtpZihsPD1qKWJyZWFrO2c9Yn1pZihnPmYpe3ZhciBtPWEuZ2V0TGluZShnKS5sZW5ndGg7cmV0dXJuIG5ldyBkKGYsaSxnLG0pfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGEsYixjLGUsZixnKXt2YXIgaD17cm93OmMsY29sdW1uOmUrMX0saT1hLiRmaW5kQ2xvc2luZ0JyYWNrZXQoYixoLGYsZyk7aWYoIWkpcmV0dXJuO3ZhciBqPWEuZm9sZFdpZGdldHNbaS5yb3ddO3JldHVybiBqPT1udWxsJiYoaj10aGlzLmdldEZvbGRXaWRnZXQoYSxpLnJvdykpLGo9PSJzdGFydCImJihpLnJvdy0tLGkuY29sdW1uPWEuZ2V0TGluZShpLnJvdykubGVuZ3RoKSxkLmZyb21Qb2ludHMoaCxpKX19KS5jYWxsKGUucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvY3NzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2Nzc19oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IiwiYWNlL3dvcmtlci93b3JrZXJfY2xpZW50IiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi90ZXh0IikuTW9kZSxmPWEoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixnPWEoIi4vY3NzX2hpZ2hsaWdodF9ydWxlcyIpLkNzc0hpZ2hsaWdodFJ1bGVzLGg9YSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsaT1hKCIuLi93b3JrZXIvd29ya2VyX2NsaWVudCIpLldvcmtlckNsaWVudCxqPWEoIi4vZm9sZGluZy9jc3R5bGUiKS5Gb2xkTW9kZSxrPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBmKChuZXcgZykuZ2V0UnVsZXMoKSwiaSIpLHRoaXMuJG91dGRlbnQ9bmV3IGgsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGp9O2QuaW5oZXJpdHMoayxlKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1J1bGVzPSJjU3R5bGUiLHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldEluZGVudChiKSxlPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGIsYSkudG9rZW5zO2lmKGUubGVuZ3RoJiZlW2UubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gZDt2YXIgZj1iLm1hdGNoKC9eLipce1xzKiQvKTtyZXR1cm4gZiYmKGQrPWMpLGR9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQoYixjKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihhLGIsYyl7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudChiLGMpfSx0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgaShbImFjZSJdLCJ3b3JrZXItY3NzLmpzIiwiYWNlL21vZGUvY3NzX3dvcmtlciIsIldvcmtlciIpO3JldHVybiBiLmF0dGFjaFRvRG9jdW1lbnQoYS5nZXREb2N1bWVudCgpKSxiLm9uKCJjc3NsaW50IixmdW5jdGlvbihiKXt2YXIgYz1bXTtiLmRhdGEuZm9yRWFjaChmdW5jdGlvbihhKXtjLnB1c2goe3JvdzphLmxpbmUtMSxjb2x1bW46YS5jb2wtMSx0ZXh0OmEubWVzc2FnZSx0eXBlOmEudHlwZSxsaW50OmF9KX0pLGEuc2V0QW5ub3RhdGlvbnMoYyl9KSxifX0uY2FsbChrLnByb3RvdHlwZSksYi5Nb2RlPWt9KSxkZWZpbmUoImFjZS9tb2RlL2Nzc19oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4uL2xpYi9sYW5nIiksZj1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGc9ZnVuY3Rpb24oKXt2YXIgYT1lLmFycmF5VG9NYXAoImFuaW1hdGlvbi1maWxsLW1vZGV8YWxpZ25tZW50LWFkanVzdHxhbGlnbm1lbnQtYmFzZWxpbmV8YW5pbWF0aW9uLWRlbGF5fGFuaW1hdGlvbi1kaXJlY3Rpb258YW5pbWF0aW9uLWR1cmF0aW9ufGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnR8YW5pbWF0aW9uLW5hbWV8YW5pbWF0aW9uLXBsYXktc3RhdGV8YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbnxhbmltYXRpb258YXBwZWFyYW5jZXxhemltdXRofGJhY2tmYWNlLXZpc2liaWxpdHl8YmFja2dyb3VuZC1hdHRhY2htZW50fGJhY2tncm91bmQtYnJlYWt8YmFja2dyb3VuZC1jbGlwfGJhY2tncm91bmQtY29sb3J8YmFja2dyb3VuZC1pbWFnZXxiYWNrZ3JvdW5kLW9yaWdpbnxiYWNrZ3JvdW5kLXBvc2l0aW9ufGJhY2tncm91bmQtcmVwZWF0fGJhY2tncm91bmQtc2l6ZXxiYWNrZ3JvdW5kfGJhc2VsaW5lLXNoaWZ0fGJpbmRpbmd8YmxlZWR8Ym9va21hcmstbGFiZWx8Ym9va21hcmstbGV2ZWx8Ym9va21hcmstc3RhdGV8Ym9va21hcmstdGFyZ2V0fGJvcmRlci1ib3R0b218Ym9yZGVyLWJvdHRvbS1jb2xvcnxib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzfGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzfGJvcmRlci1ib3R0b20tc3R5bGV8Ym9yZGVyLWJvdHRvbS13aWR0aHxib3JkZXItY29sbGFwc2V8Ym9yZGVyLWNvbG9yfGJvcmRlci1pbWFnZXxib3JkZXItaW1hZ2Utb3V0c2V0fGJvcmRlci1pbWFnZS1yZXBlYXR8Ym9yZGVyLWltYWdlLXNsaWNlfGJvcmRlci1pbWFnZS1zb3VyY2V8Ym9yZGVyLWltYWdlLXdpZHRofGJvcmRlci1sZWZ0fGJvcmRlci1sZWZ0LWNvbG9yfGJvcmRlci1sZWZ0LXN0eWxlfGJvcmRlci1sZWZ0LXdpZHRofGJvcmRlci1yYWRpdXN8Ym9yZGVyLXJpZ2h0fGJvcmRlci1yaWdodC1jb2xvcnxib3JkZXItcmlnaHQtc3R5bGV8Ym9yZGVyLXJpZ2h0LXdpZHRofGJvcmRlci1zcGFjaW5nfGJvcmRlci1zdHlsZXxib3JkZXItdG9wfGJvcmRlci10b3AtY29sb3J8Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1c3xib3JkZXItdG9wLXJpZ2h0LXJhZGl1c3xib3JkZXItdG9wLXN0eWxlfGJvcmRlci10b3Atd2lkdGh8Ym9yZGVyLXdpZHRofGJvcmRlcnxib3R0b218Ym94LWFsaWdufGJveC1kZWNvcmF0aW9uLWJyZWFrfGJveC1kaXJlY3Rpb258Ym94LWZsZXgtZ3JvdXB8Ym94LWZsZXh8Ym94LWxpbmVzfGJveC1vcmRpbmFsLWdyb3VwfGJveC1vcmllbnR8Ym94LXBhY2t8Ym94LXNoYWRvd3xib3gtc2l6aW5nfGJyZWFrLWFmdGVyfGJyZWFrLWJlZm9yZXxicmVhay1pbnNpZGV8Y2FwdGlvbi1zaWRlfGNsZWFyfGNsaXB8Y29sb3ItcHJvZmlsZXxjb2xvcnxjb2x1bW4tY291bnR8Y29sdW1uLWZpbGx8Y29sdW1uLWdhcHxjb2x1bW4tcnVsZXxjb2x1bW4tcnVsZS1jb2xvcnxjb2x1bW4tcnVsZS1zdHlsZXxjb2x1bW4tcnVsZS13aWR0aHxjb2x1bW4tc3Bhbnxjb2x1bW4td2lkdGh8Y29sdW1uc3xjb250ZW50fGNvdW50ZXItaW5jcmVtZW50fGNvdW50ZXItcmVzZXR8Y3JvcHxjdWUtYWZ0ZXJ8Y3VlLWJlZm9yZXxjdWV8Y3Vyc29yfGRpcmVjdGlvbnxkaXNwbGF5fGRvbWluYW50LWJhc2VsaW5lfGRyb3AtaW5pdGlhbC1hZnRlci1hZGp1c3R8ZHJvcC1pbml0aWFsLWFmdGVyLWFsaWdufGRyb3AtaW5pdGlhbC1iZWZvcmUtYWRqdXN0fGRyb3AtaW5pdGlhbC1iZWZvcmUtYWxpZ258ZHJvcC1pbml0aWFsLXNpemV8ZHJvcC1pbml0aWFsLXZhbHVlfGVsZXZhdGlvbnxlbXB0eS1jZWxsc3xmaXR8Zml0LXBvc2l0aW9ufGZsb2F0LW9mZnNldHxmbG9hdHxmb250LWZhbWlseXxmb250LXNpemV8Zm9udC1zaXplLWFkanVzdHxmb250LXN0cmV0Y2h8Zm9udC1zdHlsZXxmb250LXZhcmlhbnR8Zm9udC13ZWlnaHR8Zm9udHxncmlkLWNvbHVtbnN8Z3JpZC1yb3dzfGhhbmdpbmctcHVuY3R1YXRpb258aGVpZ2h0fGh5cGhlbmF0ZS1hZnRlcnxoeXBoZW5hdGUtYmVmb3JlfGh5cGhlbmF0ZS1jaGFyYWN0ZXJ8aHlwaGVuYXRlLWxpbmVzfGh5cGhlbmF0ZS1yZXNvdXJjZXxoeXBoZW5zfGljb258aW1hZ2Utb3JpZW50YXRpb258aW1hZ2UtcmVuZGVyaW5nfGltYWdlLXJlc29sdXRpb258aW5saW5lLWJveC1hbGlnbnxsZWZ0fGxldHRlci1zcGFjaW5nfGxpbmUtaGVpZ2h0fGxpbmUtc3RhY2tpbmctcnVieXxsaW5lLXN0YWNraW5nLXNoaWZ0fGxpbmUtc3RhY2tpbmctc3RyYXRlZ3l8bGluZS1zdGFja2luZ3xsaXN0LXN0eWxlLWltYWdlfGxpc3Qtc3R5bGUtcG9zaXRpb258bGlzdC1zdHlsZS10eXBlfGxpc3Qtc3R5bGV8bWFyZ2luLWJvdHRvbXxtYXJnaW4tbGVmdHxtYXJnaW4tcmlnaHR8bWFyZ2luLXRvcHxtYXJnaW58bWFyay1hZnRlcnxtYXJrLWJlZm9yZXxtYXJrfG1hcmtzfG1hcnF1ZWUtZGlyZWN0aW9ufG1hcnF1ZWUtcGxheS1jb3VudHxtYXJxdWVlLXNwZWVkfG1hcnF1ZWUtc3R5bGV8bWF4LWhlaWdodHxtYXgtd2lkdGh8bWluLWhlaWdodHxtaW4td2lkdGh8bW92ZS10b3xuYXYtZG93bnxuYXYtaW5kZXh8bmF2LWxlZnR8bmF2LXJpZ2h0fG5hdi11cHxvcGFjaXR5fG9ycGhhbnN8b3V0bGluZS1jb2xvcnxvdXRsaW5lLW9mZnNldHxvdXRsaW5lLXN0eWxlfG91dGxpbmUtd2lkdGh8b3V0bGluZXxvdmVyZmxvdy1zdHlsZXxvdmVyZmxvdy14fG92ZXJmbG93LXl8b3ZlcmZsb3d8cGFkZGluZy1ib3R0b218cGFkZGluZy1sZWZ0fHBhZGRpbmctcmlnaHR8cGFkZGluZy10b3B8cGFkZGluZ3xwYWdlLWJyZWFrLWFmdGVyfHBhZ2UtYnJlYWstYmVmb3JlfHBhZ2UtYnJlYWstaW5zaWRlfHBhZ2UtcG9saWN5fHBhZ2V8cGF1c2UtYWZ0ZXJ8cGF1c2UtYmVmb3JlfHBhdXNlfHBlcnNwZWN0aXZlLW9yaWdpbnxwZXJzcGVjdGl2ZXxwaG9uZW1lc3xwaXRjaC1yYW5nZXxwaXRjaHxwbGF5LWR1cmluZ3xwb3NpdGlvbnxwcmVzZW50YXRpb24tbGV2ZWx8cHVuY3R1YXRpb24tdHJpbXxxdW90ZXN8cmVuZGVyaW5nLWludGVudHxyZXNpemV8cmVzdC1hZnRlcnxyZXN0LWJlZm9yZXxyZXN0fHJpY2huZXNzfHJpZ2h0fHJvdGF0aW9uLXBvaW50fHJvdGF0aW9ufHJ1YnktYWxpZ258cnVieS1vdmVyaGFuZ3xydWJ5LXBvc2l0aW9ufHJ1Ynktc3BhbnxzaXplfHNwZWFrLWhlYWRlcnxzcGVhay1udW1lcmFsfHNwZWFrLXB1bmN0dWF0aW9ufHNwZWFrfHNwZWVjaC1yYXRlfHN0cmVzc3xzdHJpbmctc2V0fHRhYmxlLWxheW91dHx0YXJnZXQtbmFtZXx0YXJnZXQtbmV3fHRhcmdldC1wb3NpdGlvbnx0YXJnZXR8dGV4dC1hbGlnbi1sYXN0fHRleHQtYWxpZ258dGV4dC1kZWNvcmF0aW9ufHRleHQtZW1waGFzaXN8dGV4dC1oZWlnaHR8dGV4dC1pbmRlbnR8dGV4dC1qdXN0aWZ5fHRleHQtb3V0bGluZXx0ZXh0LXNoYWRvd3x0ZXh0LXRyYW5zZm9ybXx0ZXh0LXdyYXB8dG9wfHRyYW5zZm9ybS1vcmlnaW58dHJhbnNmb3JtLXN0eWxlfHRyYW5zZm9ybXx0cmFuc2l0aW9uLWRlbGF5fHRyYW5zaXRpb24tZHVyYXRpb258dHJhbnNpdGlvbi1wcm9wZXJ0eXx0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbnx0cmFuc2l0aW9ufHVuaWNvZGUtYmlkaXx2ZXJ0aWNhbC1hbGlnbnx2aXNpYmlsaXR5fHZvaWNlLWJhbGFuY2V8dm9pY2UtZHVyYXRpb258dm9pY2UtZmFtaWx5fHZvaWNlLXBpdGNoLXJhbmdlfHZvaWNlLXBpdGNofHZvaWNlLXJhdGV8dm9pY2Utc3RyZXNzfHZvaWNlLXZvbHVtZXx2b2x1bWV8d2hpdGUtc3BhY2UtY29sbGFwc2V8d2hpdGUtc3BhY2V8d2lkb3dzfHdpZHRofHdvcmQtYnJlYWt8d29yZC1zcGFjaW5nfHdvcmQtd3JhcHx6LWluZGV4Ii5zcGxpdCgifCIpKSxiPWUuYXJyYXlUb01hcCgicmdifHJnYmF8dXJsfGF0dHJ8Y291bnRlcnxjb3VudGVycyIuc3BsaXQoInwiKSksYz1lLmFycmF5VG9NYXAoImFic29sdXRlfGFmdGVyLWVkZ2V8YWZ0ZXJ8YWxsLXNjcm9sbHxhbGx8YWxwaGFiZXRpY3xhbHdheXN8YW50aWFsaWFzZWR8YXJtZW5pYW58YXV0b3xhdm9pZC1jb2x1bW58YXZvaWQtcGFnZXxhdm9pZHxiYWxhbmNlfGJhc2VsaW5lfGJlZm9yZS1lZGdlfGJlZm9yZXxiZWxvd3xiaWRpLW92ZXJyaWRlfGJsb2NrLWxpbmUtaGVpZ2h0fGJsb2NrfGJvbGR8Ym9sZGVyfGJvcmRlci1ib3h8Ym90aHxib3R0b218Ym94fGJyZWFrLWFsbHxicmVhay13b3JkfGNhcGl0YWxpemV8Y2Fwcy1oZWlnaHR8Y2FwdGlvbnxjZW50ZXJ8Y2VudHJhbHxjaGFyfGNpcmNsZXxjamstaWRlb2dyYXBoaWN8Y2xvbmV8Y2xvc2UtcXVvdGV8Y29sLXJlc2l6ZXxjb2xsYXBzZXxjb2x1bW58Y29uc2lkZXItc2hpZnRzfGNvbnRhaW58Y29udGVudC1ib3h8Y292ZXJ8Y3Jvc3NoYWlyfGN1YmljLWJlemllcnxkYXNoZWR8ZGVjaW1hbC1sZWFkaW5nLXplcm98ZGVjaW1hbHxkZWZhdWx0fGRpc2FibGVkfGRpc2N8ZGlzcmVnYXJkLXNoaWZ0c3xkaXN0cmlidXRlLWFsbC1saW5lc3xkaXN0cmlidXRlLWxldHRlcnxkaXN0cmlidXRlLXNwYWNlfGRpc3RyaWJ1dGV8ZG90dGVkfGRvdWJsZXxlLXJlc2l6ZXxlYXNlLWlufGVhc2UtaW4tb3V0fGVhc2Utb3V0fGVhc2V8ZWxsaXBzaXN8ZW5kfGV4Y2x1ZGUtcnVieXxmaWxsfGZpeGVkfGZvbnQtc2l6ZXxmb250fGdlb3JnaWFufGdseXBoc3xncmlkLWhlaWdodHxncm9vdmV8aGFuZHxoYW5naW5nfGhlYnJld3xoZWxwfGhpZGRlbnxoaXJhZ2FuYS1pcm9oYXxoaXJhZ2FuYXxob3Jpem9udGFsfGljb258aWRlb2dyYXBoLWFscGhhfGlkZW9ncmFwaC1udW1lcmljfGlkZW9ncmFwaC1wYXJlbnRoZXNpc3xpZGVvZ3JhcGgtc3BhY2V8aWRlb2dyYXBoaWN8aW5hY3RpdmV8aW5jbHVkZS1ydWJ5fGluaGVyaXR8aW5pdGlhbHxpbmxpbmUtYmxvY2t8aW5saW5lLWJveHxpbmxpbmUtbGluZS1oZWlnaHR8aW5saW5lLXRhYmxlfGlubGluZXxpbnNldHxpbnNpZGV8aW50ZXItaWRlb2dyYXBofGludGVyLXdvcmR8aW52ZXJ0fGl0YWxpY3xqdXN0aWZ5fGthdGFrYW5hLWlyb2hhfGthdGFrYW5hfGtlZXAtYWxsfGxhc3R8bGVmdHxsaWdodGVyfGxpbmUtZWRnZXxsaW5lLXRocm91Z2h8bGluZXxsaW5lYXJ8bGlzdC1pdGVtfGxvY2FsfGxvb3NlfGxvd2VyLWFscGhhfGxvd2VyLWdyZWVrfGxvd2VyLWxhdGlufGxvd2VyLXJvbWFufGxvd2VyY2FzZXxsci10YnxsdHJ8bWF0aGVtYXRpY2FsfG1heC1oZWlnaHR8bWF4LXNpemV8bWVkaXVtfG1lbnV8bWVzc2FnZS1ib3h8bWlkZGxlfG1vdmV8bi1yZXNpemV8bmUtcmVzaXplfG5ld3NwYXBlcnxuby1jaGFuZ2V8bm8tY2xvc2UtcXVvdGV8bm8tZHJvcHxuby1vcGVuLXF1b3RlfG5vLXJlcGVhdHxub25lfG5vcm1hbHxub3QtYWxsb3dlZHxub3dyYXB8bnctcmVzaXplfG9ibGlxdWV8b3Blbi1xdW90ZXxvdXRzZXR8b3V0c2lkZXxvdmVybGluZXxwYWRkaW5nLWJveHxwYWdlfHBvaW50ZXJ8cHJlLWxpbmV8cHJlLXdyYXB8cHJlfHByZXNlcnZlLTNkfHByb2dyZXNzfHJlbGF0aXZlfHJlcGVhdC14fHJlcGVhdC15fHJlcGVhdHxyZXBsYWNlZHxyZXNldC1zaXplfHJpZGdlfHJpZ2h0fHJvdW5kfHJvdy1yZXNpemV8cnRsfHMtcmVzaXplfHNjcm9sbHxzZS1yZXNpemV8c2VwYXJhdGV8c2xpY2V8c21hbGwtY2Fwc3xzbWFsbC1jYXB0aW9ufHNvbGlkfHNwYWNlfHNxdWFyZXxzdGFydHxzdGF0aWN8c3RhdHVzLWJhcnxzdGVwLWVuZHxzdGVwLXN0YXJ0fHN0ZXBzfHN0cmV0Y2h8c3RyaWN0fHN1YnxzdXBlcnxzdy1yZXNpemV8dGFibGUtY2FwdGlvbnx0YWJsZS1jZWxsfHRhYmxlLWNvbHVtbi1ncm91cHx0YWJsZS1jb2x1bW58dGFibGUtZm9vdGVyLWdyb3VwfHRhYmxlLWhlYWRlci1ncm91cHx0YWJsZS1yb3ctZ3JvdXB8dGFibGUtcm93fHRhYmxlfHRiLXJsfHRleHQtYWZ0ZXItZWRnZXx0ZXh0LWJlZm9yZS1lZGdlfHRleHQtYm90dG9tfHRleHQtc2l6ZXx0ZXh0LXRvcHx0ZXh0fHRoaWNrfHRoaW58dG9wfHRyYW5zcGFyZW50fHVuZGVybGluZXx1cHBlci1hbHBoYXx1cHBlci1sYXRpbnx1cHBlci1yb21hbnx1cHBlcmNhc2V8dXNlLXNjcmlwdHx2ZXJ0aWNhbC1pZGVvZ3JhcGhpY3x2ZXJ0aWNhbC10ZXh0fHZpc2libGV8dy1yZXNpemV8d2FpdHx3aGl0ZXNwYWNlfHotaW5kZXh8emVybyIuc3BsaXQoInwiKSksZD1lLmFycmF5VG9NYXAoImFxdWF8YmxhY2t8Ymx1ZXxmdWNoc2lhfGdyYXl8Z3JlZW58bGltZXxtYXJvb258bmF2eXxvbGl2ZXxvcmFuZ2V8cHVycGxlfHJlZHxzaWx2ZXJ8dGVhbHx3aGl0ZXx5ZWxsb3ciLnNwbGl0KCJ8IikpLGY9ZS5hcnJheVRvTWFwKCJhcmlhbHxjZW50dXJ5fGNvbWljfGNvdXJpZXJ8Z2FyYW1vbmR8Z2VvcmdpYXxoZWx2ZXRpY2F8aW1wYWN0fGx1Y2lkYXxzeW1ib2x8c3lzdGVtfHRhaG9tYXx0aW1lc3x0cmVidWNoZXR8dXRvcGlhfHZlcmRhbmF8d2ViZGluZ3N8c2Fucy1zZXJpZnxzZXJpZnxtb25vc3BhY2UiLnNwbGl0KCJ8IikpLGc9IlxcLT8oPzooPzpbMC05XSspfCg/OlswLTldKlxcLlswLTldKykpIixoPSIoXFw6KylcXGIoYWZ0ZXJ8YmVmb3JlfGZpcnN0LWxldHRlcnxmaXJzdC1saW5lfG1vei1zZWxlY3Rpb258c2VsZWN0aW9uKVxcYiIsaT0iKDopXFxiKGFjdGl2ZXxjaGVja2VkfGRpc2FibGVkfGVtcHR5fGVuYWJsZWR8Zmlyc3QtY2hpbGR8Zmlyc3Qtb2YtdHlwZXxmb2N1c3xob3ZlcnxpbmRldGVybWluYXRlfGludmFsaWR8bGFzdC1jaGlsZHxsYXN0LW9mLXR5cGV8bGlua3xub3R8bnRoLWNoaWxkfG50aC1sYXN0LWNoaWxkfG50aC1sYXN0LW9mLXR5cGV8bnRoLW9mLXR5cGV8b25seS1jaGlsZHxvbmx5LW9mLXR5cGV8cmVxdWlyZWR8cm9vdHx0YXJnZXR8dmFsaWR8dmlzaXRlZClcXGIiLGo9W3t0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoicnVsZXNldF9jb21tZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOlsiY29uc3RhbnQubnVtZXJpYyIsImtleXdvcmQiXSxyZWdleDoiKCIrZysiKShjaHxjbXxkZWd8ZW18ZXh8ZnJ8Z2R8Z3JhZHxIenxpbnxrSHp8bW18bXN8cGN8cHR8cHh8cmFkfHJlbXxzfHR1cm58dmh8dm18dnd8JSkifSx7dG9rZW46WyJjb25zdGFudC5udW1lcmljIl0scmVnZXg6IihbMC05XSspIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiI1thLWYwLTldezZ9In0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiI1thLWYwLTldezN9In0se3Rva2VuOlsicHVuY3R1YXRpb24iLCJlbnRpdHkub3RoZXIuYXR0cmlidXRlLW5hbWUucHNldWRvLWVsZW1lbnQuY3NzIl0scmVnZXg6aH0se3Rva2VuOlsicHVuY3R1YXRpb24iLCJlbnRpdHkub3RoZXIuYXR0cmlidXRlLW5hbWUucHNldWRvLWNsYXNzLmNzcyJdLHJlZ2V4Oml9LHt0b2tlbjpmdW5jdGlvbihlKXtyZXR1cm4gYS5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LnR5cGUiOmIuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC5mdW5jdGlvbiI6Yy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50IjpkLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuY29uc3RhbnQuY29sb3IiOmYuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC5jb25zdGFudC5mb250cyI6InRleHQifSxyZWdleDoiXFwtP1thLXpBLVpfXVthLXpBLVowLTlfXFwtXSoifV0saz1lLmNvcHlBcnJheShqKTtrLnVuc2hpZnQoe3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJcXH0iLG5leHQ6InN0YXJ0In0pO3ZhciBsPWUuY29weUFycmF5KGopO2wudW5zaGlmdCh7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IlxcfSIsbmV4dDoibWVkaWEifSk7dmFyIG09W3t0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLG49ZS5jb3B5QXJyYXkobSk7bi51bnNoaWZ0KHt0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSk7dmFyIG89ZS5jb3B5QXJyYXkobSk7by51bnNoaWZ0KHt0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoibWVkaWEifSk7dmFyIHA9ZS5jb3B5QXJyYXkobSk7cC51bnNoaWZ0KHt0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoicnVsZXNldCJ9KSx0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiXFx7IixuZXh0OiJydWxlc2V0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJALio/eyIsbmV4dDoibWVkaWEifSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiIjW2EtejAtOS1fXSsifSx7dG9rZW46InZhcmlhYmxlIixyZWdleDoiXFwuW2EtejAtOS1fXSsifSx7dG9rZW46InN0cmluZyIscmVnZXg6IjpbYS16MC05LV9dKyJ9LHt0b2tlbjoiY29uc3RhbnQiLHJlZ2V4OiJbYS16MC05LV9dKyJ9XSxtZWRpYTpbe3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJtZWRpYV9jb21tZW50In0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJcXHsiLG5leHQ6Im1lZGlhX3J1bGVzZXQifSx7dG9rZW46InN0cmluZyIscmVnZXg6IlxcfSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiIjW2EtejAtOS1fXSsifSx7dG9rZW46InZhcmlhYmxlIixyZWdleDoiXFwuW2EtejAtOS1fXSsifSx7dG9rZW46InN0cmluZyIscmVnZXg6IjpbYS16MC05LV9dKyJ9LHt0b2tlbjoiY29uc3RhbnQiLHJlZ2V4OiJbYS16MC05LV9dKyJ9XSxjb21tZW50Om4scnVsZXNldDprLHJ1bGVzZXRfY29tbWVudDpwLG1lZGlhX3J1bGVzZXQ6bCxtZWRpYV9jb21tZW50Om99fTtkLmluaGVyaXRzKGcsZiksYi5Dc3NIaWdobGlnaHRSdWxlcz1nfSksZGVmaW5lKCJhY2UvbW9kZS9odG1sX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvY3NzX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUveG1sX3V0aWwiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL2Nzc19oaWdobGlnaHRfcnVsZXMiKS5Dc3NIaWdobGlnaHRSdWxlcyxmPWEoIi4vamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiKS5KYXZhU2NyaXB0SGlnaGxpZ2h0UnVsZXMsZz1hKCIuL3htbF91dGlsIiksaD1hKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGk9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidGV4dCIsbWVyZ2U6ITAscmVnZXg6IjxcXCFcXFtDREFUQVxcWyIsbmV4dDoiY2RhdGEifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXD8uKj9cXD8+In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiPFxcIS0tIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJ4bWxfcGUiLHJlZ2V4OiI8XFwhLio/PiJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8KD89cypzY3JpcHRcXGIpIixuZXh0OiJzY3JpcHQifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPCg/PXMqc3R5bGVcXGIpIixuZXh0OiJzdHlsZSJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvPyIsbmV4dDoidGFnIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29uc3RhbnQuY2hhcmFjdGVyLmVudGl0eSIscmVnZXg6Iig/OiYjWzAtOV0rOyl8KD86JiN4WzAtOWEtZkEtRl0rOyl8KD86JlthLXpBLVowLTlfOlxcLi1dKzspIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiW148XSsifV0sY2RhdGE6W3t0b2tlbjoidGV4dCIscmVnZXg6IlxcXVxcXT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJ0ZXh0IixtZXJnZTohMCxyZWdleDoiXFxzKyJ9LHt0b2tlbjoidGV4dCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qPy0tPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0sZy50YWcodGhpcy4kcnVsZXMsInRhZyIsInN0YXJ0IiksZy50YWcodGhpcy4kcnVsZXMsInN0eWxlIiwiY3NzLXN0YXJ0IiksZy50YWcodGhpcy4kcnVsZXMsInNjcmlwdCIsImpzLXN0YXJ0IiksdGhpcy5lbWJlZFJ1bGVzKGYsImpzLSIsW3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qKD89PFxcL3NjcmlwdD4pIixuZXh0OiJ0YWcifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPFxcLyg/PXNjcmlwdCkiLG5leHQ6InRhZyJ9XSksdGhpcy5lbWJlZFJ1bGVzKGUsImNzcy0iLFt7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPFxcLyg/PXN0eWxlKSIsbmV4dDoidGFnIn1dKX07ZC5pbmhlcml0cyhpLGgpLGIuSHRtbEhpZ2hsaWdodFJ1bGVzPWl9KSxkZWZpbmUoImFjZS9tb2RlL3htbF91dGlsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9sYW5nIl0sZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGcoYSl7cmV0dXJuW3t0b2tlbjoic3RyaW5nIixyZWdleDonIi4qPyInfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6J1siXS4qJyxuZXh0OmErIl9xcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4qPycifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IlsnXS4qIixuZXh0OmErIl9xc3RyaW5nIn1dfWZ1bmN0aW9uIGgoYSxiKXtyZXR1cm5be3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKj8iK2EsbmV4dDpifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfXZhciBkPWEoIi4uL2xpYi9sYW5nIiksZT1kLmFycmF5VG9NYXAoImJ1dHRvbnxmb3JtfGlucHV0fGxhYmVsfHNlbGVjdHx0ZXh0YXJlYSIuc3BsaXQoInwiKSksZj1kLmFycmF5VG9NYXAoInRhYmxlfHRib2R5fHRkfHRmb290fHRofHRyIi5zcGxpdCgifCIpKTtiLnRhZz1mdW5jdGlvbihhLGIsYyl7YVtiXT1be3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjpmdW5jdGlvbihhKXtyZXR1cm4gYT09PSJhIj8ibWV0YS50YWcuYW5jaG9yIjphPT09ImltZyI/Im1ldGEudGFnLmltYWdlIjphPT09InNjcmlwdCI/Im1ldGEudGFnLnNjcmlwdCI6YT09PSJzdHlsZSI/Im1ldGEudGFnLnN0eWxlIjplLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/Im1ldGEudGFnLmZvcm0iOmYuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT8ibWV0YS50YWcudGFibGUiOiJtZXRhLnRhZyJ9LG1lcmdlOiEwLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsiLG5leHQ6YisiX2VtYmVkX2F0dHJpYnV0ZV9saXN0In0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDpiKyJfZW1iZWRfYXR0cmlidXRlX2xpc3QifV0sYVtiKyJfcXN0cmluZyJdPWgoIiciLGIrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCIpLGFbYisiX3Fxc3RyaW5nIl09aCgnIicsYisiX2VtYmVkX2F0dHJpYnV0ZV9saXN0IiksYVtiKyJfZW1iZWRfYXR0cmlidXRlX2xpc3QiXT1be3Rva2VuOiJtZXRhLnRhZyIsbWVyZ2U6ITAscmVnZXg6Ii8/PiIsbmV4dDpjfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiI9In0se3Rva2VuOiJlbnRpdHkub3RoZXIuYXR0cmlidXRlLW5hbWUiLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0uY29uY2F0KGcoYikpfX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL3htbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIiwiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIsZj1hKCIuL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixnPWZ1bmN0aW9uKCl7dGhpcy5pbmhlcml0KGYsWyJzdHJpbmdfZHF1b3RlcyJdKSx0aGlzLmFkZCgiYnJhY2tldHMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZT09IjwiKXt2YXIgZj1jLmdldFNlbGVjdGlvblJhbmdlKCksZz1kLmRvYy5nZXRUZXh0UmFuZ2UoZik7cmV0dXJuIGchPT0iIj8hMTp7dGV4dDoiPD4iLHNlbGVjdGlvbjpbMSwxXX19aWYoZT09Ij4iKXt2YXIgaD1jLmdldEN1cnNvclBvc2l0aW9uKCksaT1kLmRvYy5nZXRMaW5lKGgucm93KSxqPWkuc3Vic3RyaW5nKGguY29sdW1uLGguY29sdW1uKzEpO2lmKGo9PSI+IilyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fWVsc2UgaWYoZT09IlxuIil7dmFyIGg9Yy5nZXRDdXJzb3JQb3NpdGlvbigpLGk9ZC5kb2MuZ2V0TGluZShoLnJvdyksaz1pLnN1YnN0cmluZyhoLmNvbHVtbixoLmNvbHVtbisyKTtpZihrPT0iPC8iKXt2YXIgbD10aGlzLiRnZXRJbmRlbnQoZC5kb2MuZ2V0TGluZShoLnJvdykpK2QuZ2V0VGFiU3RyaW5nKCksbT10aGlzLiRnZXRJbmRlbnQoZC5kb2MuZ2V0TGluZShoLnJvdykpO3JldHVybnt0ZXh0OiJcbiIrbCsiXG4iK20sc2VsZWN0aW9uOlsxLGwubGVuZ3RoLDEsbC5sZW5ndGhdfX19fSl9O2QuaW5oZXJpdHMoZyxlKSxiLlhtbEJlaGF2aW91cj1nfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2h0bWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2ZvbGRpbmcvbWl4ZWQiLCJhY2UvbW9kZS9mb2xkaW5nL3htbCIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uLy4uL2xpYi9vb3AiKSxlPWEoIi4vbWl4ZWQiKS5Gb2xkTW9kZSxmPWEoIi4veG1sIikuRm9sZE1vZGUsZz1hKCIuL2NzdHlsZSIpLkZvbGRNb2RlLGg9Yi5Gb2xkTW9kZT1mdW5jdGlvbigpe2UuY2FsbCh0aGlzLG5ldyBmKHthcmVhOjEsYmFzZToxLGJyOjEsY29sOjEsY29tbWFuZDoxLGVtYmVkOjEsaHI6MSxpbWc6MSxpbnB1dDoxLGtleWdlbjoxLGxpbms6MSxtZXRhOjEscGFyYW06MSxzb3VyY2U6MSx0cmFjazoxLHdicjoxLGxpOjEsZHQ6MSxkZDoxLHA6MSxydDoxLHJwOjEsb3B0Z3JvdXA6MSxvcHRpb246MSxjb2xncm91cDoxLHRkOjEsdGg6MX0pLHsianMtIjpuZXcgZywiY3NzLSI6bmV3IGd9KX07ZC5pbmhlcml0cyhoLGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL21peGVkIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi8uLi9saWIvb29wIiksZT1hKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLGY9Yi5Gb2xkTW9kZT1mdW5jdGlvbihhLGIpe3RoaXMuZGVmYXVsdE1vZGU9YSx0aGlzLnN1Yk1vZGVzPWJ9O2QuaW5oZXJpdHMoZixlKSxmdW5jdGlvbigpe3RoaXMuJGdldE1vZGU9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIHRoaXMuc3ViTW9kZXMpaWYoYS5pbmRleE9mKGIpPT09MClyZXR1cm4gdGhpcy5zdWJNb2Rlc1tiXTtyZXR1cm4gbnVsbH0sdGhpcy4kdHJ5TW9kZT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT10aGlzLiRnZXRNb2RlKGEpO3JldHVybiBlP2UuZ2V0Rm9sZFdpZGdldChiLGMsZCk6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuJHRyeU1vZGUoYS5nZXRTdGF0ZShjLTEpLGEsYixjKXx8dGhpcy4kdHJ5TW9kZShhLmdldFN0YXRlKGMpLGEsYixjKXx8dGhpcy5kZWZhdWx0TW9kZS5nZXRGb2xkV2lkZ2V0KGEsYixjKX0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuJGdldE1vZGUoYS5nZXRTdGF0ZShjLTEpKTtpZighZHx8IWQuZ2V0Rm9sZFdpZGdldChhLGIsYykpZD10aGlzLiRnZXRNb2RlKGEuZ2V0U3RhdGUoYykpO2lmKCFkfHwhZC5nZXRGb2xkV2lkZ2V0KGEsYixjKSlkPXRoaXMuZGVmYXVsdE1vZGU7cmV0dXJuIGQuZ2V0Rm9sZFdpZGdldFJhbmdlKGEsYixjKX19LmNhbGwoZi5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL3htbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLCJhY2UvdG9rZW5faXRlcmF0b3IiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vLi4vbGliL29vcCIpLGU9YSgiLi4vLi4vbGliL2xhbmciKSxmPWEoIi4uLy4uL3JhbmdlIikuUmFuZ2UsZz1hKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLGg9YSgiLi4vLi4vdG9rZW5faXRlcmF0b3IiKS5Ub2tlbkl0ZXJhdG9yLGk9Yi5Gb2xkTW9kZT1mdW5jdGlvbihhKXtnLmNhbGwodGhpcyksdGhpcy52b2lkRWxlbWVudHM9YXx8e319O2QuaW5oZXJpdHMoaSxnKSxmdW5jdGlvbigpe3RoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmUoYSxjKTtyZXR1cm4gZC5jbG9zaW5nP2I9PSJtYXJrYmVnaW5lbmQiPyJlbmQiOiIiOiFkLnRhZ05hbWV8fHRoaXMudm9pZEVsZW1lbnRzW2QudGFnTmFtZS50b0xvd2VyQ2FzZSgpXT8iIjpkLnNlbGZDbG9zaW5nPyIiOmQudmFsdWUuaW5kZXhPZigiLyIrZC50YWdOYW1lKSE9PS0xPyIiOiJzdGFydCJ9LHRoaXMuX2dldEZpcnN0VGFnSW5MaW5lPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRUb2tlbnMoYiksZD0iIjtmb3IodmFyIGY9MDtmPGMubGVuZ3RoO2YrKyl7dmFyIGc9Y1tmXTtnLnR5cGUuaW5kZXhPZigibWV0YS50YWciKT09PTA/ZCs9Zy52YWx1ZTpkKz1lLnN0cmluZ1JlcGVhdCgiICIsZy52YWx1ZS5sZW5ndGgpfXJldHVybiB0aGlzLl9wYXJzZVRhZyhkKX0sdGhpcy50YWdSZT0vXihccyopKDw/KFwvPykoWy1fYS16QS1aMC05OiFdKilccyooXC8/KT4/KS8sdGhpcy5fcGFyc2VUYWc9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy50YWdSZS5leGVjKGEpLGM9dGhpcy50YWdSZS5sYXN0SW5kZXh8fDA7cmV0dXJuIHRoaXMudGFnUmUubGFzdEluZGV4PTAse3ZhbHVlOmEsbWF0Y2g6Yj9iWzJdOiIiLGNsb3Npbmc6Yj8hIWJbM106ITEsc2VsZkNsb3Npbmc6Yj8hIWJbNV18fGJbMl09PSIvPiI6ITEsdGFnTmFtZTpiP2JbNF06IiIsY29sdW1uOmJbMV0/YytiWzFdLmxlbmd0aDpjfX0sdGhpcy5fcmVhZFRhZ0ZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRDdXJyZW50VG9rZW4oKTtpZighYilyZXR1cm4gbnVsbDt2YXIgYz0iIixkO2RvIGlmKGIudHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MCl7aWYoIWQpdmFyIGQ9e3JvdzphLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjphLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpfTtjKz1iLnZhbHVlO2lmKGMuaW5kZXhPZigiPiIpIT09LTEpe3ZhciBlPXRoaXMuX3BhcnNlVGFnKGMpO3JldHVybiBlLnN0YXJ0PWQsZS5lbmQ9e3JvdzphLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjphLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK2IudmFsdWUubGVuZ3RofSxhLnN0ZXBGb3J3YXJkKCksZX19d2hpbGUoYj1hLnN0ZXBGb3J3YXJkKCkpO3JldHVybiBudWxsfSx0aGlzLl9yZWFkVGFnQmFja3dhcmQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRDdXJyZW50VG9rZW4oKTtpZighYilyZXR1cm4gbnVsbDt2YXIgYz0iIixkO2RvIGlmKGIudHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MCl7ZHx8KGQ9e3JvdzphLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjphLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK2IudmFsdWUubGVuZ3RofSksYz1iLnZhbHVlK2M7aWYoYy5pbmRleE9mKCI8IikhPT0tMSl7dmFyIGU9dGhpcy5fcGFyc2VUYWcoYyk7cmV0dXJuIGUuZW5kPWQsZS5zdGFydD17cm93OmEuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmEuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCl9LGEuc3RlcEJhY2t3YXJkKCksZX19d2hpbGUoYj1hLnN0ZXBCYWNrd2FyZCgpKTtyZXR1cm4gbnVsbH0sdGhpcy5fcG9wPWZ1bmN0aW9uKGEsYil7d2hpbGUoYS5sZW5ndGgpe3ZhciBjPWFbYS5sZW5ndGgtMV07aWYoIWJ8fGMudGFnTmFtZT09Yi50YWdOYW1lKXJldHVybiBhLnBvcCgpO2lmKHRoaXMudm9pZEVsZW1lbnRzW2IudGFnTmFtZV0pcmV0dXJuO2lmKHRoaXMudm9pZEVsZW1lbnRzW2MudGFnTmFtZV0pe2EucG9wKCk7Y29udGludWV9cmV0dXJuIG51bGx9fSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmUoYSxjKTtpZighZC5tYXRjaClyZXR1cm4gbnVsbDt2YXIgZT1kLmNsb3Npbmd8fGQuc2VsZkNsb3NpbmcsZz1bXSxpO2lmKCFlKXt2YXIgaj1uZXcgaChhLGMsZC5jb2x1bW4pLGs9e3JvdzpjLGNvbHVtbjpkLmNvbHVtbitkLnRhZ05hbWUubGVuZ3RoKzJ9O3doaWxlKGk9dGhpcy5fcmVhZFRhZ0ZvcndhcmQoaikpe2lmKGkuc2VsZkNsb3Npbmcpe2lmKCFnLmxlbmd0aClyZXR1cm4gaS5zdGFydC5jb2x1bW4rPWkudGFnTmFtZS5sZW5ndGgrMixpLmVuZC5jb2x1bW4tPTIsZi5mcm9tUG9pbnRzKGkuc3RhcnQsaS5lbmQpO2NvbnRpbnVlfWlmKGkuY2xvc2luZyl7dGhpcy5fcG9wKGcsaSk7aWYoZy5sZW5ndGg9PTApcmV0dXJuIGYuZnJvbVBvaW50cyhrLGkuc3RhcnQpfWVsc2UgZy5wdXNoKGkpfX1lbHNle3ZhciBqPW5ldyBoKGEsYyxkLmNvbHVtbitkLm1hdGNoLmxlbmd0aCksbD17cm93OmMsY29sdW1uOmQuY29sdW1ufTt3aGlsZShpPXRoaXMuX3JlYWRUYWdCYWNrd2FyZChqKSl7aWYoaS5zZWxmQ2xvc2luZyl7aWYoIWcubGVuZ3RoKXJldHVybiBpLnN0YXJ0LmNvbHVtbis9aS50YWdOYW1lLmxlbmd0aCsyLGkuZW5kLmNvbHVtbi09MixmLmZyb21Qb2ludHMoaS5zdGFydCxpLmVuZCk7Y29udGludWV9aWYoIWkuY2xvc2luZyl7dGhpcy5fcG9wKGcsaSk7aWYoZy5sZW5ndGg9PTApcmV0dXJuIGkuc3RhcnQuY29sdW1uKz1pLnRhZ05hbWUubGVuZ3RoKzIsZi5mcm9tUG9pbnRzKGkuc3RhcnQsbCl9ZWxzZSBnLnB1c2goaSl9fX19LmNhbGwoaS5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9sdWEiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvbHVhX2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9saWIvb29wIiksZT1hKCIuL3RleHQiKS5Nb2RlLGY9YSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLGc9YSgiLi9sdWFfaGlnaGxpZ2h0X3J1bGVzIikuTHVhSGlnaGxpZ2h0UnVsZXMsaD1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgZigobmV3IGcpLmdldFJ1bGVzKCkpfTtkLmluaGVyaXRzKGgsZSksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLiRnZXRJbmRlbnQoYiksZT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2VucyhiLGEpLGY9ZS50b2tlbnMsZz1bImZ1bmN0aW9uIiwidGhlbiIsImRvIiwicmVwZWF0Il07aWYoYT09InN0YXJ0Iil7dmFyIGg9Yi5tYXRjaCgvXi4qW1x7XChcW11ccyokLyk7aWYoaClkKz1jO2Vsc2UgZm9yKHZhciBpIGluIGYpe3ZhciBqPWZbaV07aWYoai50eXBlIT0ia2V5d29yZCIpY29udGludWU7dmFyIGs9Zy5pbmRleE9mKGoudmFsdWUpO2lmKGshPS0xKXtkKz1jO2JyZWFrfX19cmV0dXJuIGR9fS5jYWxsKGgucHJvdG90eXBlKSxiLk1vZGU9aH0pLGRlZmluZSgiYWNlL21vZGUvbHVhX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vbGliL29vcCIpLGU9YSgiLi4vbGliL2xhbmciKSxmPWEoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsZz1mdW5jdGlvbigpe3ZhciBhPWUuYXJyYXlUb01hcCgiYnJlYWt8ZG98ZWxzZXxlbHNlaWZ8ZW5kfGZvcnxmdW5jdGlvbnxpZnxpbnxsb2NhbHxyZXBlYXR8cmV0dXJufHRoZW58dW50aWx8d2hpbGV8b3J8YW5kfG5vdCIuc3BsaXQoInwiKSksYj1lLmFycmF5VG9NYXAoInRydWV8ZmFsc2V8bmlsfF9HfF9WRVJTSU9OIi5zcGxpdCgifCIpKSxjPWUuYXJyYXlUb01hcCgic3RyaW5nfHhwY2FsbHxwYWNrYWdlfHRvc3RyaW5nfHByaW50fG9zfHVucGFja3xyZXF1aXJlfGdldGZlbnZ8c2V0bWV0YXRhYmxlfG5leHR8YXNzZXJ0fHRvbnVtYmVyfGlvfHJhd2VxdWFsfGNvbGxlY3RnYXJiYWdlfGdldG1ldGF0YWJsZXxtb2R1bGV8cmF3c2V0fG1hdGh8ZGVidWd8cGNhbGx8dGFibGV8bmV3cHJveHl8dHlwZXxjb3JvdXRpbmV8X0d8c2VsZWN0fGdjaW5mb3xwYWlyc3xyYXdnZXR8bG9hZHN0cmluZ3xpcGFpcnN8X1ZFUlNJT058ZG9maWxlfHNldGZlbnZ8bG9hZHxlcnJvcnxsb2FkZmlsZXxzdWJ8dXBwZXJ8bGVufGdmaW5kfHJlcHxmaW5kfG1hdGNofGNoYXJ8ZHVtcHxnbWF0Y2h8cmV2ZXJzZXxieXRlfGZvcm1hdHxnc3VifGxvd2VyfHByZWxvYWR8bG9hZGxpYnxsb2FkZWR8bG9hZGVyc3xjcGF0aHxjb25maWd8cGF0aHxzZWVhbGx8ZXhpdHxzZXRsb2NhbGV8ZGF0ZXxnZXRlbnZ8ZGlmZnRpbWV8cmVtb3ZlfHRpbWV8Y2xvY2t8dG1wbmFtZXxyZW5hbWV8ZXhlY3V0ZXxsaW5lc3x3cml0ZXxjbG9zZXxmbHVzaHxvcGVufG91dHB1dHx0eXBlfHJlYWR8c3RkZXJyfHN0ZGlufGlucHV0fHN0ZG91dHxwb3Blbnx0bXBmaWxlfGxvZ3xtYXh8YWNvc3xodWdlfGxkZXhwfHBpfGNvc3x0YW5ofHBvd3xkZWd8dGFufGNvc2h8c2luaHxyYW5kb218cmFuZG9tc2VlZHxmcmV4cHxjZWlsfGZsb29yfHJhZHxhYnN8c3FydHxtb2RmfGFzaW58bWlufG1vZHxmbW9kfGxvZzEwfGF0YW4yfGV4cHxzaW58YXRhbnxnZXR1cHZhbHVlfGRlYnVnfHNldGhvb2t8Z2V0bWV0YXRhYmxlfGdldGhvb2t8c2V0bWV0YXRhYmxlfHNldGxvY2FsfHRyYWNlYmFja3xzZXRmZW52fGdldGluZm98c2V0dXB2YWx1ZXxnZXRsb2NhbHxnZXRyZWdpc3RyeXxnZXRmZW52fHNldG58aW5zZXJ0fGdldG58Zm9yZWFjaGl8bWF4bnxmb3JlYWNofGNvbmNhdHxzb3J0fHJlbW92ZXxyZXN1bWV8eWllbGR8c3RhdHVzfHdyYXB8Y3JlYXRlfHJ1bm5pbmciLnNwbGl0KCJ8IikpLGQ9ZS5hcnJheVRvTWFwKCJzdHJpbmd8cGFja2FnZXxvc3xpb3xtYXRofGRlYnVnfHRhYmxlfGNvcm91dGluZSIuc3BsaXQoInwiKSksZj1lLmFycmF5VG9NYXAoIl9fYWRkfF9fc3VifF9fbW9kfF9fdW5tfF9fY29uY2F0fF9fbHR8X19pbmRleHxfX2NhbGx8X19nY3xfX21ldGF0YWJsZXxfX211bHxfX2RpdnxfX3Bvd3xfX2xlbnxfX2VxfF9fbGV8X19uZXdpbmRleHxfX3Rvc3RyaW5nfF9fbW9kZXxfX3RvbnVtYmVyIi5zcGxpdCgifCIpKSxnPWUuYXJyYXlUb01hcCgiIi5zcGxpdCgifCIpKSxoPWUuYXJyYXlUb01hcCgic2V0bnxmb3JlYWNofGZvcmVhY2hpfGdjaW5mb3xsb2cxMHxtYXhuIi5zcGxpdCgifCIpKSxpPSIiLGo9Iig/Oig/OlsxLTldXFxkKil8KD86MCkpIixrPSIoPzowW3hYXVtcXGRBLUZhLWZdKykiLGw9Iig/OiIraisifCIraysiKSIsbT0iKD86XFwuXFxkKykiLG49Iig/OlxcZCspIixvPSIoPzooPzoiK24rIj8iK20rIil8KD86IituKyJcXC4pKSIscD0iKD86IitvKyIpIixxPVtdO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDppKyJcXC1cXC1cXFtcXFsuKlxcXVxcXSJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6aSsiXFwtXFwtXFxbXFw9XFxbLipcXF1cXD1cXF0ifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmkrIlxcLVxcLVxcW1xcPXsyfVxcWy4qXFxdXFw9ezJ9XFxdIn0se3Rva2VuOiJjb21tZW50IixyZWdleDppKyJcXC1cXC1cXFtcXD17M31cXFsuKlxcXVxcPXszfVxcXSJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6aSsiXFwtXFwtXFxbXFw9ezR9XFxbLipcXF1cXD17NH1cXF0ifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmkrIlxcLVxcLVxcW1xcPXs1fVxcPSpcXFsuKlxcXVxcPXs1fVxcPSpcXF0ifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmkrIlxcLVxcLVxcW1xcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicWNvbW1lbnQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmkrIlxcLVxcLVxcW1xcPVxcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicWNvbW1lbnQxIn0se3Rva2VuOiJjb21tZW50IixyZWdleDppKyJcXC1cXC1cXFtcXD17Mn1cXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFjb21tZW50MiJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6aSsiXFwtXFwtXFxbXFw9ezN9XFxbLiokIixtZXJnZTohMCxuZXh0OiJxY29tbWVudDMifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmkrIlxcLVxcLVxcW1xcPXs0fVxcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicWNvbW1lbnQ0In0se3Rva2VuOmZ1bmN0aW9uKGEpe3ZhciBiPS9cLVwtXFsoXD0rKVxbLyxjO3JldHVybihjPWIuZXhlYyhhKSkhPW51bGwmJihjPWNbMV0pIT11bmRlZmluZWQmJnEucHVzaChjLmxlbmd0aCksImNvbW1lbnQifSxyZWdleDppKyJcXC1cXC1cXFtcXD17NX1cXD0qXFxbLiokIixtZXJnZTohMCxuZXh0OiJxY29tbWVudDUifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC1cXC0uKiQifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFxbLipcXF1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFw9XFxbLipcXF1cXD1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFw9ezJ9XFxbLipcXF1cXD17Mn1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFw9ezN9XFxbLipcXF1cXD17M31cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFw9ezR9XFxbLipcXF1cXD17NH1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFw9ezV9XFw9KlxcWy4qXFxdXFw9ezV9XFw9KlxcXSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDppKyJcXFtcXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFw9XFxbLiokIixtZXJnZTohMCxuZXh0OiJxc3RyaW5nMSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDppKyJcXFtcXD17Mn1cXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFzdHJpbmcyIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OmkrIlxcW1xcPXszfVxcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicXN0cmluZzMifSx7dG9rZW46InN0cmluZyIscmVnZXg6aSsiXFxbXFw9ezR9XFxbLiokIixtZXJnZTohMCxuZXh0OiJxc3RyaW5nNCJ9LHt0b2tlbjpmdW5jdGlvbihhKXt2YXIgYj0vXFsoXD0rKVxbLyxjO3JldHVybihjPWIuZXhlYyhhKSkhPW51bGwmJihjPWNbMV0pIT11bmRlZmluZWQmJnEucHVzaChjLmxlbmd0aCksInN0cmluZyJ9LHJlZ2V4OmkrIlxcW1xcPXs1fVxcPSpcXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFzdHJpbmc1In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OmkrJyIoPzpbXlxcXFxdfFxcXFwuKSo/Iid9LHt0b2tlbjoic3RyaW5nIixyZWdleDppKyInKD86W15cXFxcXXxcXFxcLikqPycifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OnB9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6bCsiXFxiIn0se3Rva2VuOmZ1bmN0aW9uKGUpe3JldHVybiBhLmhhc093blByb3BlcnR5KGUpPyJrZXl3b3JkIjpiLmhhc093blByb3BlcnR5KGUpPyJjb25zdGFudC5sYW5ndWFnZSI6Zy5oYXNPd25Qcm9wZXJ0eShlKT8iaW52YWxpZC5pbGxlZ2FsIjpkLmhhc093blByb3BlcnR5KGUpPyJjb25zdGFudC5saWJyYXJ5IjpoLmhhc093blByb3BlcnR5KGUpPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOmMuaGFzT3duUHJvcGVydHkoZSk/InN1cHBvcnQuZnVuY3Rpb24iOmYuaGFzT3duUHJvcGVydHkoZSk/InN1cHBvcnQuZnVuY3Rpb24iOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcK3xcXC18XFwqfFxcL3wlfFxcI3xcXF58fnw8fD58PD18PT58PT18fj18PXxcXDp8XFwuXFwuXFwufFxcLlxcLiJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1xcW1xcKFxce10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF1cXClcXH1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxxY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiKD86W15cXFxcXXxcXFxcLikqP1xcXVxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxY29tbWVudDE6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD1cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scWNvbW1lbnQyOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9ezJ9XFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFjb21tZW50Mzpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiKD86W15cXFxcXXxcXFxcLikqP1xcXVxcPXszfVxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxY29tbWVudDQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD17NH1cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scWNvbW1lbnQ1Olt7dG9rZW46ZnVuY3Rpb24oYSl7dmFyIGI9L1xdKFw9KylcXS8sYz10aGlzLnJ1bGVzLnFjb21tZW50NVswXSxkO2MubmV4dD0ic3RhcnQiO2lmKChkPWIuZXhlYyhhKSkhPW51bGwmJihkPWRbMV0pIT11bmRlZmluZWQpe3ZhciBlPWQubGVuZ3RoLGY7KGY9cS5wb3AoKSkhPWUmJihxLnB1c2goZiksYy5uZXh0PSJxY29tbWVudDUiKX1yZXR1cm4iY29tbWVudCJ9LHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9ezV9XFw9KlxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nMTpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9XFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV0scXN0cmluZzI6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiKD86W15cXFxcXXxcXFxcLikqP1xcXVxcPXsyfVxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFzdHJpbmczOlt7dG9rZW46InN0cmluZyIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD17M31cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nNDpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9ezR9XFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV0scXN0cmluZzU6W3t0b2tlbjpmdW5jdGlvbihhKXt2YXIgYj0vXF0oXD0rKVxdLyxjPXRoaXMucnVsZXMucXN0cmluZzVbMF0sZDtjLm5leHQ9InN0YXJ0IjtpZigoZD1iLmV4ZWMoYSkpIT1udWxsJiYoZD1kWzFdKSE9dW5kZWZpbmVkKXt2YXIgZT1kLmxlbmd0aCxmOyhmPXEucG9wKCkpIT1lJiYocS5wdXNoKGYpLGMubmV4dD0icXN0cmluZzUiKX1yZXR1cm4ic3RyaW5nIn0scmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD17NX1cXD0qXFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV19fTtkLmluaGVyaXRzKGcsZiksYi5MdWFIaWdobGlnaHRSdWxlcz1nfSksZGVmaW5lKCJhY2UvbW9kZS9sdWFodG1sX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvaHRtbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9sdWFfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2xpYi9vb3AiKSxlPWEoIi4vaHRtbF9oaWdobGlnaHRfcnVsZXMiKS5IdG1sSGlnaGxpZ2h0UnVsZXMsZj1hKCIuL2x1YV9oaWdobGlnaHRfcnVsZXMiKS5MdWFIaWdobGlnaHRSdWxlcyxnPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9KG5ldyBlKS5nZXRSdWxlcygpO2Zvcih2YXIgYSBpbiB0aGlzLiRydWxlcyl0aGlzLiRydWxlc1thXS51bnNoaWZ0KHt0b2tlbjoibHVhdGFnLXBlcmNlbnQiLHJlZ2V4OiI8XFwlIixuZXh0OiJsdWEtc3RhcnQifSx7dG9rZW46Imx1YXRhZy1sdWEiLHJlZ2V4OiI8XFw/bHVhIixuZXh0OiJsdWEtc3RhcnQifSk7dGhpcy5lbWJlZFJ1bGVzKGYsImx1YS0iLFt7dG9rZW46ImtleXdvcmQxIixyZWdleDoiXFwlPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImtleXdvcmQyIixyZWdleDoiXFw/PiIsbmV4dDoic3RhcnQifV0pfTtkLmluaGVyaXRzKGcsZSksYi5MdWFIdG1sSGlnaGxpZ2h0UnVsZXM9Z30p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-luapage.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9sdWFwYWdlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9odG1sIiwiYWNlL21vZGUvbHVhIiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2x1YXBhZ2VfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vaHRtbCIpLk1vZGUscz1lKCIuL2x1YSIpLk1vZGUsbz1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsdT1lKCIuL2x1YXBhZ2VfaGlnaGxpZ2h0X3J1bGVzIikuTHVhUGFnZUhpZ2hsaWdodFJ1bGVzLGE9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdTt0aGlzLiR0b2tlbml6ZXI9bmV3IG8oKG5ldyB1KS5nZXRSdWxlcygpKSx0aGlzLiRlbWJlZHM9ZS5nZXRFbWJlZHMoKSx0aGlzLmNyZWF0ZU1vZGVEZWxlZ2F0ZXMoeyJsdWEtIjpzfSl9O3IuaW5oZXJpdHMoYSxpKSx0Lk1vZGU9YX0pLGRlZmluZSgiYWNlL21vZGUvaHRtbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS9tb2RlL2phdmFzY3JpcHQiLCJhY2UvbW9kZS9jc3MiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvaHRtbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9iZWhhdmlvdXIvaHRtbCIsImFjZS9tb2RlL2ZvbGRpbmcvaHRtbCJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi9qYXZhc2NyaXB0IikuTW9kZSxvPWUoIi4vY3NzIikuTW9kZSx1PWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixhPWUoIi4vaHRtbF9oaWdobGlnaHRfcnVsZXMiKS5IdG1sSGlnaGxpZ2h0UnVsZXMsZj1lKCIuL2JlaGF2aW91ci9odG1sIikuSHRtbEJlaGF2aW91cixsPWUoIi4vZm9sZGluZy9odG1sIikuRm9sZE1vZGUsYz1mdW5jdGlvbigpe3ZhciBlPW5ldyBhO3RoaXMuJHRva2VuaXplcj1uZXcgdShlLmdldFJ1bGVzKCkpLHRoaXMuJGJlaGF2aW91cj1uZXcgZix0aGlzLiRlbWJlZHM9ZS5nZXRFbWJlZHMoKSx0aGlzLmNyZWF0ZU1vZGVEZWxlZ2F0ZXMoeyJqcy0iOnMsImNzcy0iOm99KSx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgbH07ci5pbmhlcml0cyhjLGkpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIDB9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRnZXRJbmRlbnQodCl9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hMX19LmNhbGwoYy5wcm90b3R5cGUpLHQuTW9kZT1jfSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSIsImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIpLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcyx1PWUoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGE9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxmPWUoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGw9ZSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGM9ZSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGg9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyB1LHRoaXMuJGJlaGF2aW91cj1uZXcgbCx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgY307ci5pbmhlcml0cyhoLGkpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ITAscz0vXihccyopXC9cLy87Zm9yKHZhciBvPW47bzw9cjtvKyspaWYoIXMudGVzdCh0LmdldExpbmUobykpKXtpPSExO2JyZWFrfWlmKGkpe3ZhciB1PW5ldyBhKDAsMCwwLDApO2Zvcih2YXIgbz1uO288PXI7bysrKXt2YXIgZj10LmdldExpbmUobyksbD1mLm1hdGNoKHMpO3Uuc3RhcnQucm93PW8sdS5lbmQucm93PW8sdS5lbmQuY29sdW1uPWxbMF0ubGVuZ3RoLHQucmVwbGFjZSh1LGxbMV0pfX1lbHNlIHQuaW5kZW50Um93cyhuLHIsIi8vIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJGdldEluZGVudCh0KSxpPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKHQsZSkscz1pLnRva2VucyxvPWkuc3RhdGU7aWYocy5sZW5ndGgmJnNbcy5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiByO2lmKGU9PSJzdGFydCJ8fGU9PSJyZWdleF9hbGxvd2VkIil7dmFyIHU9dC5tYXRjaCgvXi4qKD86XGJjYXNlXGIuKlw6fFtce1woXFtdKVxzKiQvKTt1JiYocis9bil9ZWxzZSBpZihlPT0iZG9jLXN0YXJ0Iil7aWYobz09InN0YXJ0Inx8ZT09InJlZ2V4X2FsbG93ZWQiKXJldHVybiIiO3ZhciB1PXQubWF0Y2goL15ccyooXC8/KVwqLyk7dSYmKHVbMV0mJihyKz0iICIpLHIrPSIqICIpfXJldHVybiByfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KHQsbil9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQodCxuKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGYoWyJhY2UiXSwiYWNlL21vZGUvamF2YXNjcmlwdF93b3JrZXIiLCJKYXZhU2NyaXB0V29ya2VyIik7cmV0dXJuIHQuYXR0YWNoVG9Eb2N1bWVudChlLmdldERvY3VtZW50KCkpLHQub24oImpzbGludCIsZnVuY3Rpb24odCl7dmFyIG49W107Zm9yKHZhciByPTA7cjx0LmRhdGEubGVuZ3RoO3IrKyl7dmFyIGk9dC5kYXRhW3JdO2kmJm4ucHVzaCh7cm93OmkubGluZS0xLGNvbHVtbjppLmNoYXJhY3Rlci0xLHRleHQ6aS5yZWFzb24sdHlwZToid2FybmluZyIsbGludDppfSl9ZS5zZXRBbm5vdGF0aW9ucyhuKX0pLHQub24oIm5hcmNpc3N1cyIsZnVuY3Rpb24odCl7ZS5zZXRBbm5vdGF0aW9ucyhbdC5kYXRhXSl9KSx0Lm9uKCJ0ZXJtaW5hdGUiLGZ1bmN0aW9uKCl7ZS5jbGVhckFubm90YXRpb25zKCl9KSx0fX0uY2FsbChoLnByb3RvdHlwZSksdC5Nb2RlPWh9KSxkZWZpbmUoImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvdW5pY29kZSIsImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2xpYi9sYW5nIikscz1lKCIuLi91bmljb2RlIiksbz1lKCIuL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIpLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcyx1PWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsYT1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgiQXJyYXl8Qm9vbGVhbnxEYXRlfEZ1bmN0aW9ufEl0ZXJhdG9yfE51bWJlcnxPYmplY3R8UmVnRXhwfFN0cmluZ3xQcm94eXxOYW1lc3BhY2V8UU5hbWV8WE1MfFhNTExpc3R8QXJyYXlCdWZmZXJ8RmxvYXQzMkFycmF5fEZsb2F0NjRBcnJheXxJbnQxNkFycmF5fEludDMyQXJyYXl8SW50OEFycmF5fFVpbnQxNkFycmF5fFVpbnQzMkFycmF5fFVpbnQ4QXJyYXl8VWludDhDbGFtcGVkQXJyYXl8RXJyb3J8RXZhbEVycm9yfEludGVybmFsRXJyb3J8UmFuZ2VFcnJvcnxSZWZlcmVuY2VFcnJvcnxTdG9wSXRlcmF0aW9ufFN5bnRheEVycm9yfFR5cGVFcnJvcnxVUklFcnJvcnxkZWNvZGVVUkl8ZGVjb2RlVVJJQ29tcG9uZW50fGVuY29kZVVSSXxlbmNvZGVVUklDb21wb25lbnR8ZXZhbHxpc0Zpbml0ZXxpc05hTnxwYXJzZUZsb2F0fHBhcnNlSW50fEpTT058TWF0aHx0aGlzfGFyZ3VtZW50c3xwcm90b3R5cGV8d2luZG93fGRvY3VtZW50Ii5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgiYnJlYWt8Y2FzZXxjYXRjaHxjb250aW51ZXxkZWZhdWx0fGRlbGV0ZXxkb3xlbHNlfGZpbmFsbHl8Zm9yfGZ1bmN0aW9ufGlmfGlufGluc3RhbmNlb2Z8bmV3fHJldHVybnxzd2l0Y2h8dGhyb3d8dHJ5fHR5cGVvZnxsZXR8dmFyfHdoaWxlfHdpdGh8Y29uc3R8eWllbGR8aW1wb3J0fGdldHxzZXQiLnNwbGl0KCJ8IikpLG49ImNhc2V8ZG98ZWxzZXxmaW5hbGx5fGlufGluc3RhbmNlb2Z8cmV0dXJufHRocm93fHRyeXx0eXBlb2Z8eWllbGQiLHI9aS5hcnJheVRvTWFwKCJfX3BhcmVudF9ffF9fY291bnRfX3xlc2NhcGV8dW5lc2NhcGV8d2l0aHxfX3Byb3RvX18iLnNwbGl0KCJ8IikpLHU9aS5hcnJheVRvTWFwKCJjb25zdHxsZXR8dmFyfGZ1bmN0aW9uIi5zcGxpdCgifCIpKSxhPWkuYXJyYXlUb01hcCgibnVsbHxJbmZpbml0eXxOYU58dW5kZWZpbmVkIi5zcGxpdCgifCIpKSxmPWkuYXJyYXlUb01hcCgiY2xhc3N8ZW51bXxleHRlbmRzfHN1cGVyfGV4cG9ydHxpbXBsZW1lbnRzfHByaXZhdGV8cHVibGljfGludGVyZmFjZXxwYWNrYWdlfHByb3RlY3RlZHxzdGF0aWMiLnNwbGl0KCJ8IikpLGw9IlsiK3MucGFja2FnZXMuTCsiXFwkX11bIitzLnBhY2thZ2VzLkwrcy5wYWNrYWdlcy5NbitzLnBhY2thZ2VzLk1jK3MucGFja2FnZXMuTmQrcy5wYWNrYWdlcy5QYysiXFwkX10qXFxiIixjPSJcXFxcKD86eFswLTlhLWZBLUZdezJ9fHVbMC05YS1mQS1GXXs0fXxbMC0yXVswLTddezAsMn18M1swLTZdWzAtN10/fDM3WzAtN10/fFs0LTddWzAtN10/fC4pIjt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6L1wvXC8uKiQvfSxvLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDovXC9cKi8sbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJyg/PS4pIixuZXh0OiJxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciKD89LiknLG5leHQ6InFxc3RyaW5nIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovMFt4WF1bMC05YS1mQS1GXStcYi99LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6L1srLV0/XGQrKD86KD86XC5cZCopPyg/OltlRV1bKy1dP1xkKyk/KT9cYi99LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFwuKShwcm90b3R5cGUpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Il0scmVnZXg6IigiK2wrIikoXFwuKShwcm90b3R5cGUpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXC4pKCIrbCsiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKykoXFx3KykoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwidGV4dCIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoZnVuY3Rpb24pKFxccyspKCIrbCsiKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFxzKikoOikoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInRleHQiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoOikoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuYm9vbGVhbiIscmVnZXg6Lyg/OnRydWV8ZmFsc2UpXGIvfSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiIoPzoiK24rIilcXGIiLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iXSxyZWdleDovKFwuKShzKD86aCg/OmlmdHxvdyg/Ok1vZCg/OmVsZXNzRGlhbG9nfGFsRGlhbG9nKXxIZWxwKSl8Y3JvbGwoPzpYfEJ5KD86UGFnZXN8TGluZXMpP3xZfFRvKT98dCg/Om9wenp6enxyaWtlKXxpKD86bnx6ZVRvQ29udGVudHxkZWJhcnxnblRleHQpfG9ydHx1KD86cHxiKD86c3RyKD86aW5nKT8pPyl8cGxpKD86Y2V8dCl8ZSg/Om5kfHQoPzpSZSg/OnNpemFibGV8cXVlc3RIZWFkZXIpfE0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIbyg/OnRLZXlzfHVycyl8WWVhcnxDdXJzb3J8VGltZSg/Om91dCk/fEludGVydmFsfFpPcHRpb25zfERhdGV8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhdGV8RnVsbFllYXIpfEZ1bGxZZWFyfEFjdGl2ZSl8YXJjaCl8cXJ0fGxpY2V8YXZlUHJlZmVyZW5jZXN8bWFsbCl8aCg/Om9tZXxhbmRsZUV2ZW50KXxuYXZpZ2F0ZXxjKD86aGFyKD86Q29kZUF0fEF0KXxvKD86c3xuKD86Y2F0fHRleHR1YWx8ZmlybSl8bXBpbGUpfGVpbHxsZWFyKD86VGltZW91dHxJbnRlcnZhbCk/fGEoPzpwdHVyZUV2ZW50c3xsbCl8cmVhdGUoPzpTdHlsZVNoZWV0fFBvcHVwfEV2ZW50T2JqZWN0KSl8dCg/Om8oPzpHTVRTdHJpbmd8Uyg/OnRyaW5nfG91cmNlKXxVKD86VENTdHJpbmd8cHBlckNhc2UpfExvKD86Y2FsZVN0cmluZ3x3ZXJDYXNlKSl8ZXN0fGEoPzpufGludCg/OkVuYWJsZWQpPykpfGkoPzpzKD86TmFOfEZpbml0ZSl8bmRleE9mfHRhbGljcyl8ZCg/OmlzYWJsZUV4dGVybmFsQ2FwdHVyZXx1bXB8ZXRhY2hFdmVudCl8dSg/Om4oPzpzaGlmdHx0YWludHxlc2NhcGV8d2F0Y2gpfHBkYXRlQ29tbWFuZHMpfGooPzpvaW58YXZhRW5hYmxlZCl8cCg/Om8oPzpwfHcpfHVzaHxsdWdpbnMucmVmcmVzaHxhKD86ZGRpbmdzfHJzZSg/OkludHxGbG9hdCk/KXxyKD86aW50fG9tcHR8ZWZlcmVuY2UpKXxlKD86c2NhcGV8bmFibGVFeHRlcm5hbENhcHR1cmV8dmFsfGxlbWVudEZyb21Qb2ludHx4KD86cHxlYyg/OlNjcmlwdHxDb21tYW5kKT8pKXx2YWx1ZU9mfFVUQ3xxdWVyeUNvbW1hbmQoPzpTdGF0ZXxJbmRldGVybXxFbmFibGVkfFZhbHVlKXxmKD86aSg/Om5kfGxlKD86TW9kaWZpZWREYXRlfFNpemV8Q3JlYXRlZERhdGV8VXBkYXRlZERhdGUpfHhlZCl8byg/Om50KD86c2l6ZXxjb2xvcil8cndhcmQpfGxvb3J8cm9tQ2hhckNvZGUpfHdhdGNofGwoPzppbmt8byg/OmFkfGcpfGFzdEluZGV4T2YpfGEoPzpzaW58bmNob3J8Y29zfHQoPzp0YWNoRXZlbnR8b2J8YW4oPzoyKT8pfHBwbHl8bGVydHxiKD86c3xvcnQpKXxyKD86b3UoPzpuZHx0ZUV2ZW50cyl8ZSg/OnNpemUoPzpCeXxUbyl8Y2FsY3x0dXJuVmFsdWV8cGxhY2V8dmVyc2V8bCg/Om9hZHxlYXNlKD86Q2FwdHVyZXxFdmVudHMpKSl8YW5kb20pfGcoPzpvfGV0KD86UmVzcG9uc2VIZWFkZXJ8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZSg/OmNvbmRzfGxlY3Rpb24pfEhvdXJzfFllYXJ8VGltZSg/OnpvbmVPZmZzZXQpP3xEYSg/Onl8dGUpfFVUQyg/Ok0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIb3Vyc3xEYSg/Onl8dGUpfEZ1bGxZZWFyKXxGdWxsWWVhcnxBKD86dHRlbnRpb258bGxSZXNwb25zZUhlYWRlcnMpKSl8bSg/OmlufG92ZSg/OkIoPzp5fGVsb3cpfFRvKD86QWJzb2x1dGUpP3xBYm92ZSl8ZXJnZUF0dHJpYnV0ZXN8YSg/OnRjaHxyZ2luc3x4KSl8Yig/OnRvYXxpZ3xvKD86bGR8cmRlcldpZHRocyl8bGlua3xhY2spKVxiKD89XCgpL30se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmRvbSJdLHJlZ2V4Oi8oXC4pKHMoPzp1Yig/OnN0cmluZ0RhdGF8bWl0KXxwbGl0VGV4dHxlKD86dCg/Ok5hbWVkSXRlbXxBdHRyaWJ1dGUoPzpOb2RlKT8pfGxlY3QpKXxoYXMoPzpDaGlsZE5vZGVzfEZlYXR1cmUpfG5hbWVkSXRlbXxjKD86bCg/Omlja3xvKD86c2V8bmVOb2RlKSl8cmVhdGUoPzpDKD86b21tZW50fERBVEFTZWN0aW9ufGFwdGlvbil8VCg/OkhlYWR8ZXh0Tm9kZXxGb290KXxEb2N1bWVudEZyYWdtZW50fFByb2Nlc3NpbmdJbnN0cnVjdGlvbnxFKD86bnRpdHlSZWZlcmVuY2V8bGVtZW50KXxBdHRyaWJ1dGUpKXx0YWJJbmRleHxpKD86bnNlcnQoPzpSb3d8QmVmb3JlfENlbGx8RGF0YSl8dGVtKXxvcGVufGRlbGV0ZSg/OlJvd3xDKD86ZWxsfGFwdGlvbil8VCg/OkhlYWR8Rm9vdCl8RGF0YSl8Zm9jdXN8d3JpdGUoPzpsbik/fGEoPzpkZHxwcGVuZCg/OkNoaWxkfERhdGEpKXxyZSg/OnNldHxwbGFjZSg/OkNoaWxkfERhdGEpfG1vdmUoPzpOYW1lZEl0ZW18Q2hpbGR8QXR0cmlidXRlKD86Tm9kZSk/KT8pfGdldCg/Ok5hbWVkSXRlbXxFbGVtZW50KD86c0J5KD86TmFtZXxUYWdOYW1lKXxCeUlkKXxBdHRyaWJ1dGUoPzpOb2RlKT8pfGJsdXIpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuY29uc3RhbnQiXSxyZWdleDovKFwuKShzKD86eXN0ZW1MYW5ndWFnZXxjcig/OmlwdHN8b2xsYmFyc3xlZW4oPzpYfFl8VG9wfExlZnQpKXx0KD86eWxlKD86U2hlZXRzKT98YXR1cyg/OlRleHR8YmFyKT8pfGlibGluZyg/OkJlbG93fEFib3ZlKXxvdXJjZXx1ZmZpeGVzfGUoPzpjdXJpdHkoPzpQb2xpY3kpP3xsKD86ZWN0aW9ufGYpKSl8aCg/OmlzdG9yeXxvc3QoPzpuYW1lKT98YXMoPzpofEZvY3VzKSl8eXxYKD86TUxEb2N1bWVudHxTTERvY3VtZW50KXxuKD86ZXh0fGFtZSg/OnNwYWNlKD86c3xVUkkpfFByb3ApKXxNKD86SU5fVkFMVUV8QVhfVkFMVUUpfGMoPzpoYXJhY3RlclNldHxvKD86big/OnN0cnVjdG9yfHRyb2xsZXJzKXxva2llRW5hYmxlZHxsb3JEZXB0aHxtcCg/Om9uZW50c3xsZXRlKSl8dXJyZW50fHB1Q2xhc3N8bCg/OmkoPzpwKD86Ym9hcmREYXRhKT98ZW50SW5mb3JtYXRpb24pfG9zZWR8YXNzZXMpfGFsbGUoPzplfHIpfHJ5cHRvKXx0KD86byg/Om9sYmFyfHApfGV4dCg/OlRyYW5zZm9ybXxJbmRlbnR8RGVjb3JhdGlvbnxBbGlnbil8YWdzKXxTUVJUKD86MV8yfDIpfGkoPzpuKD86bmVyKD86SGVpZ2h0fFdpZHRoKXxwdXQpfGRzfGdub3JlQ2FzZSl8ekluZGV4fG8oPzpzY3B1fG4oPzpyZWFkeXN0YXRlY2hhbmdlfExpbmUpfHV0ZXIoPzpIZWlnaHR8V2lkdGgpfHAoPzpzUHJvZmlsZXxlbmVyKXxmZnNjcmVlbkJ1ZmZlcmluZyl8TkVHQVRJVkVfSU5GSU5JVFl8ZCg/OmkoPzpzcGxheXxhbG9nKD86SGVpZ2h0fFRvcHxXaWR0aHxMZWZ0fEFyZ3VtZW50cyl8cmVjdG9yaWVzKXxlKD86c2NyaXB0aW9ufGZhdWx0KD86U3RhdHVzfENoKD86ZWNrZWR8YXJzZXQpfFZpZXcpKSl8dSg/OnNlcig/OlByb2ZpbGV8TGFuZ3VhZ2V8QWdlbnQpfG4oPzppcXVlSUR8ZGVmaW5lZCl8cGRhdGVJbnRlcnZhbCl8X2NvbnRlbnR8cCg/Oml4ZWxEZXB0aHxvcnR8ZXJzb25hbGJhcnxrY3MxMXxsKD86dWdpbnN8YXRmb3JtKXxhKD86dGhuYW1lfGRkaW5nKD86UmlnaHR8Qm90dG9tfFRvcHxMZWZ0KXxyZW50KD86V2luZG93fExheWVyKT98Z2UoPzpYKD86T2Zmc2V0KT98WSg/Ok9mZnNldCk/KSl8cig/Om8oPzp0byg/OmNvbHx0eXBlKXxkdWN0KD86U3ViKT98bXB0ZXIpfGUoPzp2aW91c3xmaXgpKSl8ZSg/Om4oPzpjb2Rpbmd8YWJsZWRQbHVnaW4pfHgoPzp0ZXJuYWx8cGFuZG8pfG1iZWRzKXx2KD86aXNpYmlsaXR5fGVuZG9yKD86U3ViKT98TGlua2NvbG9yKXxVUkxVbmVuY29kZWR8UCg/Okl8T1NJVElWRV9JTkZJTklUWSl8Zig/OmlsZW5hbWV8byg/Om50KD86U2l6ZXxGYW1pbHl8V2VpZ2h0KXxybU5hbWUpfHJhbWUoPzpzfEVsZW1lbnQpfGdDb2xvcil8RXx3aGl0ZVNwYWNlfGwoPzppKD86c3RTdHlsZVR5cGV8big/OmVIZWlnaHR8a0NvbG9yKSl8byg/OmNhKD86dGlvbig/OmJhcik/fGxOYW1lKXx3c3JjKXxlKD86bmd0aHxmdCg/OkNvbnRleHQpPyl8YSg/OnN0KD86TSg/Om9kaWZpZWR8YXRjaCl8SW5kZXh8UGFyZW4pfHllcig/OnN8WCl8bmd1YWdlKSl8YSg/OnBwKD86TWlub3JWZXJzaW9ufE5hbWV8Q28oPzpkZU5hbWV8cmUpfFZlcnNpb24pfHZhaWwoPzpIZWlnaHR8VG9wfFdpZHRofExlZnQpfGxsfHIoPzppdHl8Z3VtZW50cyl8TGlua2NvbG9yfGJvdmUpfHIoPzppZ2h0KD86Q29udGV4dCk/fGUoPzpzcG9uc2UoPzpYTUx8VGV4dCl8YWR5U3RhdGUpKXxnbG9iYWx8eHxtKD86aW1lVHlwZXN8dWx0aWxpbmV8ZW51YmFyfGFyZ2luKD86UmlnaHR8Qm90dG9tfFRvcHxMZWZ0KSl8TCg/Ok4oPzoxMHwyKXxPRyg/OjEwRXwyRSkpfGIoPzpvKD86dHRvbXxyZGVyKD86V2lkdGh8UmlnaHRXaWR0aHxCb3R0b21XaWR0aHxTdHlsZXxDb2xvcnxUb3BXaWR0aHxMZWZ0V2lkdGgpKXx1ZmZlckRlcHRofGVsb3d8YWNrZ3JvdW5kKD86Q29sb3J8SW1hZ2UpKSlcYi99LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbi5maXJlYnVnIl0scmVnZXg6Lyhjb25zb2xlKShcLikod2FybnxpbmZvfGxvZ3xlcnJvcnx0aW1lfHRpbWVFbmR8YXNzZXJ0KVxiL30se3Rva2VuOmZ1bmN0aW9uKG4pe3JldHVybiBlLmhhc093blByb3BlcnR5KG4pPyJ2YXJpYWJsZS5sYW5ndWFnZSI6ci5oYXNPd25Qcm9wZXJ0eShuKT8iaW52YWxpZC5kZXByZWNhdGVkIjp1Lmhhc093blByb3BlcnR5KG4pPyJzdG9yYWdlLnR5cGUiOnQuaGFzT3duUHJvcGVydHkobik/ImtleXdvcmQiOmEuaGFzT3duUHJvcGVydHkobik/ImNvbnN0YW50Lmxhbmd1YWdlIjpmLmhhc093blByb3BlcnR5KG4pPyJpbnZhbGlkLmlsbGVnYWwiOm49PSJkZWJ1Z2dlciI/ImludmFsaWQuZGVwcmVjYXRlZCI6ImlkZW50aWZpZXIifSxyZWdleDpsfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4Oi8hfFwkfCV8JnxcKnxcLVwtfFwtfFwrXCt8XCt8fnw9PT18PT18PXwhPXwhPT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFx8XHx8XD9cOnxcKj18JT18XCs9fFwtPXwmPXxcXj18XGIoPzppbnxpbnN0YW5jZW9mfG5ld3xkZWxldGV8dHlwZW9mfHZvaWQpLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6L1w/fFw6fFwsfFw7fFwuLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4Oi9bXFsoe10vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6L1tcXSl9XS99LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6L1wvPT8vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4Oi9eIyEuKiQvfSx7dG9rZW46InRleHQiLHJlZ2V4Oi9ccysvfV0scmVnZXhfYWxsb3dlZDpbby5nZXRTdGFydFJ1bGUoImRvYy1zdGFydCIpLHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoiY29tbWVudF9yZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiokIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiXFwvIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleDpbe3Rva2VuOiJyZWdleHAua2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcXFwoPzp1W1xcZGEtZkEtRl17NH18eFtcXGRhLWZBLUZdezJ9fC4pIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiL1xcdyoiLG5leHQ6InN0YXJ0IixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiW15cXFxcL1xcW10rIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6IlxcWyIsbmV4dDoicmVnZXhfY2hhcmFjdGVyX2NsYXNzIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0scmVnZXhfY2hhcmFjdGVyX2NsYXNzOlt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXSIsbmV4dDoicmVnZXgiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiW15cXFxcXFxdXSsiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxmdW5jdGlvbl9hcmd1bWVudHM6W3t0b2tlbjoidmFyaWFibGUucGFyYW1ldGVyIixyZWdleDpsfSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDoiWywgXSsiLG1lcmdlOiEwfSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDoiJCIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGNvbW1lbnRfcmVnZXhfYWxsb3dlZDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixtZXJnZTohMCxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixtZXJnZTohMCxuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFxc3RyaW5nOlt7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmVzY2FwZSIscmVnZXg6Y30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbXiJcXFxcXSsnLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlxcXFwkIixuZXh0OiJxcXN0cmluZyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDonInwkJyxuZXh0OiJzdGFydCIsbWVyZ2U6ITB9XSxxc3RyaW5nOlt7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmVzY2FwZSIscmVnZXg6Y30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbXidcXFxcXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlxcXFwkIixuZXh0OiJxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInfCQiLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dfSx0aGlzLmVtYmVkUnVsZXMobywiZG9jLSIsW28uZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtyLmluaGVyaXRzKGEsdSksdC5KYXZhU2NyaXB0SGlnaGxpZ2h0UnVsZXM9YX0pLGRlZmluZSgiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLHM9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudC5kb2MudGFnIixyZWdleDoiQFtcXHdcXGRfXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJUT0RPIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlteQFxcKl0rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6Ii4ifV19fTtyLmluaGVyaXRzKHMsaSkscy5nZXRTdGFydFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKig/PVxcKikiLG5leHQ6ZX19LHMuZ2V0RW5kUnVsZT1mdW5jdGlvbihlKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwqXFwvIixuZXh0OmV9fSx0LkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcz1zfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXlxzKyQvLnRlc3QoZSk/L15ccypcfS8udGVzdCh0KTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0TGluZSh0KSxpPW4ubWF0Y2goL14oXHMqXH0pLyk7aWYoIWkpcmV0dXJuIDA7dmFyIHM9aVsxXS5sZW5ndGgsbz1lLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp0LGNvbHVtbjpzfSk7aWYoIW98fG8ucm93PT10KXJldHVybiAwO3ZhciB1PXRoaXMuJGdldEluZGVudChlLmdldExpbmUoby5yb3cpKTtlLnJlcGxhY2UobmV3IHIodCwwLHQscy0xKSx1KX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14oXHMrKS8pO3JldHVybiB0P3RbMV06IiJ9fSkuY2FsbChpLnByb3RvdHlwZSksdC5NYXRjaGluZ0JyYWNlT3V0ZGVudD1pfSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vYmVoYXZpb3VyIikuQmVoYXZpb3VyLHM9ZnVuY3Rpb24oKXt0aGlzLmFkZCgiYnJhY2VzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSJ7Iil7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO3JldHVybiBvIT09IiI/e3RleHQ6InsiK28rIn0iLHNlbGVjdGlvbjohMX06e3RleHQ6Int9IixzZWxlY3Rpb246WzEsMV19fWlmKGk9PSJ9Iil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0ifSIpe3ZhciBsPXIuJGZpbmRPcGVuaW5nQnJhY2tldCgifSIse2NvbHVtbjp1LmNvbHVtbisxLHJvdzp1LnJvd30pO2lmKGwhPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fWVsc2UgaWYoaT09IlxuIil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0ifSIpe3ZhciBjPXIuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnUucm93LGNvbHVtbjp1LmNvbHVtbisxfSk7aWYoIWMpcmV0dXJuIG51bGw7dmFyIGg9dGhpcy5nZXROZXh0TGluZUluZGVudChlLGEuc3Vic3RyaW5nKDAsYS5sZW5ndGgtMSksci5nZXRUYWJTdHJpbmcoKSkscD10aGlzLiRnZXRJbmRlbnQoci5kb2MuZ2V0TGluZShjLnJvdykpO3JldHVybnt0ZXh0OiJcbiIraCsiXG4iK3Asc2VsZWN0aW9uOlsxLGgubGVuZ3RoLDEsaC5sZW5ndGhdfX19fSksdGhpcy5hZGQoImJyYWNlcyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiZzPT0ieyIpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5lbmQuY29sdW1uLGkuZW5kLmNvbHVtbisxKTtpZih1PT0ifSIpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSksdGhpcy5hZGQoInBhcmVucyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iKCIpe3ZhciBzPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSxvPXIuZG9jLmdldFRleHRSYW5nZShzKTtyZXR1cm4gbyE9PSIiP3t0ZXh0OiIoIitvKyIpIixzZWxlY3Rpb246ITF9Ont0ZXh0OiIoKSIsc2VsZWN0aW9uOlsxLDFdfX1pZihpPT0iKSIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09IikiKXt2YXIgbD1yLiRmaW5kT3BlbmluZ0JyYWNrZXQoIikiLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihsIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgicGFyZW5zIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSIoIil7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLnN0YXJ0LmNvbHVtbisxLGkuc3RhcnQuY29sdW1uKzIpO2lmKHU9PSIpIilyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09JyInfHxpPT0iJyIpe3ZhciBzPWksbz1uLmdldFNlbGVjdGlvblJhbmdlKCksdT1yLmRvYy5nZXRUZXh0UmFuZ2Uobyk7aWYodSE9PSIiKXJldHVybnt0ZXh0OnMrdStzLHNlbGVjdGlvbjohMX07dmFyIGE9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGY9ci5kb2MuZ2V0TGluZShhLnJvdyksbD1mLnN1YnN0cmluZyhhLmNvbHVtbi0xLGEuY29sdW1uKTtpZihsPT0iXFwiKXJldHVybiBudWxsO3ZhciBjPXIuZ2V0VG9rZW5zKG8uc3RhcnQucm93KSxoPTAscCxkPS0xO2Zvcih2YXIgdj0wO3Y8Yy5sZW5ndGg7disrKXtwPWNbdl0scC50eXBlPT0ic3RyaW5nIj9kPS0xOmQ8MCYmKGQ9cC52YWx1ZS5pbmRleE9mKHMpKTtpZihwLnZhbHVlLmxlbmd0aCtoPm8uc3RhcnQuY29sdW1uKWJyZWFrO2grPWNbdl0udmFsdWUubGVuZ3RofWlmKCFwfHxkPDAmJnAudHlwZSE9PSJjb21tZW50IiYmKHAudHlwZSE9PSJzdHJpbmcifHxvLnN0YXJ0LmNvbHVtbiE9PXAudmFsdWUubGVuZ3RoK2gtMSYmcC52YWx1ZS5sYXN0SW5kZXhPZihzKT09PXAudmFsdWUubGVuZ3RoLTEpKXJldHVybnt0ZXh0OnMrcyxzZWxlY3Rpb246WzEsMV19O2lmKHAmJnAudHlwZT09PSJzdHJpbmciKXt2YXIgbT1mLnN1YnN0cmluZyhhLmNvbHVtbixhLmNvbHVtbisxKTtpZihtPT1zKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiYocz09JyInfHxzPT0iJyIpKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09JyInKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pfTtyLmluaGVyaXRzKHMsaSksdC5Dc3R5bGVCZWhhdmlvdXI9c30pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2Uscz1lKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLG89dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307ci5pbmhlcml0cyhvLHMpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9Lyhce3xcWylbXlx9XF1dKiR8XlxzKihcL1wqKS8sdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj0vXlteXFtce10qKFx9fFxdKXxeW1xzXCpdKihcKlwvKS8sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKSxzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXg7aWYoc1sxXSlyZXR1cm4gdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrKGUsc1sxXSxuLG8pO3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8rc1swXS5sZW5ndGgpO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX1pZih0IT09Im1hcmtiZWdpbmVuZCIpcmV0dXJuO3ZhciBzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RvcE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleCtzWzBdLmxlbmd0aDtpZihzWzJdKXt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9dmFyIGE9e3JvdzpuLGNvbHVtbjpvfSxmPWUuJGZpbmRPcGVuaW5nQnJhY2tldChzWzFdLGEpO2lmKCFmKXJldHVybjtyZXR1cm4gZi5jb2x1bW4rKyxhLmNvbHVtbi0tLGkuZnJvbVBvaW50cyhmLGEpfX19LmNhbGwoby5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGk9dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobik7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3Qocik/InN0YXJ0Ijp0PT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KHIpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihlLHQsbil7dmFyIGk9L1xTLyxzPWUuZ2V0TGluZSh0KSxvPXMuc2VhcmNoKGkpO2lmKG89PS0xKXJldHVybjt2YXIgdT1ufHxzLmxlbmd0aCxhPWUuZ2V0TGVuZ3RoKCksZj10LGw9dDt3aGlsZSgrK3Q8YSl7dmFyIGM9ZS5nZXRMaW5lKHQpLnNlYXJjaChpKTtpZihjPT0tMSljb250aW51ZTtpZihjPD1vKWJyZWFrO2w9dH1pZihsPmYpe3ZhciBoPWUuZ2V0TGluZShsKS5sZW5ndGg7cmV0dXJuIG5ldyByKGYsdSxsLGgpfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGUsdCxuLGkscyl7dmFyIG89e3JvdzpuLGNvbHVtbjppKzF9LHU9ZS4kZmluZENsb3NpbmdCcmFja2V0KHQsbyxzKTtpZighdSlyZXR1cm47dmFyIGE9ZS5mb2xkV2lkZ2V0c1t1LnJvd107cmV0dXJuIGE9PW51bGwmJihhPXRoaXMuZ2V0Rm9sZFdpZGdldChlLHUucm93KSksYT09InN0YXJ0IiYmdS5yb3c+by5yb3cmJih1LnJvdy0tLHUuY29sdW1uPWUuZ2V0TGluZSh1LnJvdykubGVuZ3RoKSxyLmZyb21Qb2ludHMobyx1KX19KS5jYWxsKGkucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvY3NzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2Nzc19oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IiwiYWNlL3dvcmtlci93b3JrZXJfY2xpZW50IiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4vY3NzX2hpZ2hsaWdodF9ydWxlcyIpLkNzc0hpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsYT1lKCIuLi93b3JrZXIvd29ya2VyX2NsaWVudCIpLldvcmtlckNsaWVudCxmPWUoIi4vZm9sZGluZy9jc3R5bGUiKS5Gb2xkTW9kZSxsPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBzKChuZXcgbykuZ2V0UnVsZXMoKSwiaSIpLHRoaXMuJG91dGRlbnQ9bmV3IHUsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGZ9O3IuaW5oZXJpdHMobCxpKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1J1bGVzPSJjU3R5bGUiLHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJGdldEluZGVudCh0KSxpPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKHQsZSkudG9rZW5zO2lmKGkubGVuZ3RoJiZpW2kubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gcjt2YXIgcz10Lm1hdGNoKC9eLipce1xzKiQvKTtyZXR1cm4gcyYmKHIrPW4pLHJ9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQodCxuKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudCh0LG4pfSx0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihlKXt2YXIgdD1uZXcgYShbImFjZSJdLCJhY2UvbW9kZS9jc3Nfd29ya2VyIiwiV29ya2VyIik7cmV0dXJuIHQuYXR0YWNoVG9Eb2N1bWVudChlLmdldERvY3VtZW50KCkpLHQub24oImNzc2xpbnQiLGZ1bmN0aW9uKHQpe3ZhciBuPVtdO3QuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGUpe24ucHVzaCh7cm93OmUubGluZS0xLGNvbHVtbjplLmNvbC0xLHRleHQ6ZS5tZXNzYWdlLHR5cGU6ZS50eXBlLGxpbnQ6ZX0pfSksZS5zZXRBbm5vdGF0aW9ucyhuKX0pLHR9fS5jYWxsKGwucHJvdG90eXBlKSx0Lk1vZGU9bH0pLGRlZmluZSgiYWNlL21vZGUvY3NzX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsbz1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgiYW5pbWF0aW9uLWZpbGwtbW9kZXxhbGlnbm1lbnQtYWRqdXN0fGFsaWdubWVudC1iYXNlbGluZXxhbmltYXRpb24tZGVsYXl8YW5pbWF0aW9uLWRpcmVjdGlvbnxhbmltYXRpb24tZHVyYXRpb258YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudHxhbmltYXRpb24tbmFtZXxhbmltYXRpb24tcGxheS1zdGF0ZXxhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9ufGFuaW1hdGlvbnxhcHBlYXJhbmNlfGF6aW11dGh8YmFja2ZhY2UtdmlzaWJpbGl0eXxiYWNrZ3JvdW5kLWF0dGFjaG1lbnR8YmFja2dyb3VuZC1icmVha3xiYWNrZ3JvdW5kLWNsaXB8YmFja2dyb3VuZC1jb2xvcnxiYWNrZ3JvdW5kLWltYWdlfGJhY2tncm91bmQtb3JpZ2lufGJhY2tncm91bmQtcG9zaXRpb258YmFja2dyb3VuZC1yZXBlYXR8YmFja2dyb3VuZC1zaXplfGJhY2tncm91bmR8YmFzZWxpbmUtc2hpZnR8YmluZGluZ3xibGVlZHxib29rbWFyay1sYWJlbHxib29rbWFyay1sZXZlbHxib29rbWFyay1zdGF0ZXxib29rbWFyay10YXJnZXR8Ym9yZGVyLWJvdHRvbXxib3JkZXItYm90dG9tLWNvbG9yfGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXN8Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXN8Ym9yZGVyLWJvdHRvbS1zdHlsZXxib3JkZXItYm90dG9tLXdpZHRofGJvcmRlci1jb2xsYXBzZXxib3JkZXItY29sb3J8Ym9yZGVyLWltYWdlfGJvcmRlci1pbWFnZS1vdXRzZXR8Ym9yZGVyLWltYWdlLXJlcGVhdHxib3JkZXItaW1hZ2Utc2xpY2V8Ym9yZGVyLWltYWdlLXNvdXJjZXxib3JkZXItaW1hZ2Utd2lkdGh8Ym9yZGVyLWxlZnR8Ym9yZGVyLWxlZnQtY29sb3J8Ym9yZGVyLWxlZnQtc3R5bGV8Ym9yZGVyLWxlZnQtd2lkdGh8Ym9yZGVyLXJhZGl1c3xib3JkZXItcmlnaHR8Ym9yZGVyLXJpZ2h0LWNvbG9yfGJvcmRlci1yaWdodC1zdHlsZXxib3JkZXItcmlnaHQtd2lkdGh8Ym9yZGVyLXNwYWNpbmd8Ym9yZGVyLXN0eWxlfGJvcmRlci10b3B8Ym9yZGVyLXRvcC1jb2xvcnxib3JkZXItdG9wLWxlZnQtcmFkaXVzfGJvcmRlci10b3AtcmlnaHQtcmFkaXVzfGJvcmRlci10b3Atc3R5bGV8Ym9yZGVyLXRvcC13aWR0aHxib3JkZXItd2lkdGh8Ym9yZGVyfGJvdHRvbXxib3gtYWxpZ258Ym94LWRlY29yYXRpb24tYnJlYWt8Ym94LWRpcmVjdGlvbnxib3gtZmxleC1ncm91cHxib3gtZmxleHxib3gtbGluZXN8Ym94LW9yZGluYWwtZ3JvdXB8Ym94LW9yaWVudHxib3gtcGFja3xib3gtc2hhZG93fGJveC1zaXppbmd8YnJlYWstYWZ0ZXJ8YnJlYWstYmVmb3JlfGJyZWFrLWluc2lkZXxjYXB0aW9uLXNpZGV8Y2xlYXJ8Y2xpcHxjb2xvci1wcm9maWxlfGNvbG9yfGNvbHVtbi1jb3VudHxjb2x1bW4tZmlsbHxjb2x1bW4tZ2FwfGNvbHVtbi1ydWxlfGNvbHVtbi1ydWxlLWNvbG9yfGNvbHVtbi1ydWxlLXN0eWxlfGNvbHVtbi1ydWxlLXdpZHRofGNvbHVtbi1zcGFufGNvbHVtbi13aWR0aHxjb2x1bW5zfGNvbnRlbnR8Y291bnRlci1pbmNyZW1lbnR8Y291bnRlci1yZXNldHxjcm9wfGN1ZS1hZnRlcnxjdWUtYmVmb3JlfGN1ZXxjdXJzb3J8ZGlyZWN0aW9ufGRpc3BsYXl8ZG9taW5hbnQtYmFzZWxpbmV8ZHJvcC1pbml0aWFsLWFmdGVyLWFkanVzdHxkcm9wLWluaXRpYWwtYWZ0ZXItYWxpZ258ZHJvcC1pbml0aWFsLWJlZm9yZS1hZGp1c3R8ZHJvcC1pbml0aWFsLWJlZm9yZS1hbGlnbnxkcm9wLWluaXRpYWwtc2l6ZXxkcm9wLWluaXRpYWwtdmFsdWV8ZWxldmF0aW9ufGVtcHR5LWNlbGxzfGZpdHxmaXQtcG9zaXRpb258ZmxvYXQtb2Zmc2V0fGZsb2F0fGZvbnQtZmFtaWx5fGZvbnQtc2l6ZXxmb250LXNpemUtYWRqdXN0fGZvbnQtc3RyZXRjaHxmb250LXN0eWxlfGZvbnQtdmFyaWFudHxmb250LXdlaWdodHxmb250fGdyaWQtY29sdW1uc3xncmlkLXJvd3N8aGFuZ2luZy1wdW5jdHVhdGlvbnxoZWlnaHR8aHlwaGVuYXRlLWFmdGVyfGh5cGhlbmF0ZS1iZWZvcmV8aHlwaGVuYXRlLWNoYXJhY3RlcnxoeXBoZW5hdGUtbGluZXN8aHlwaGVuYXRlLXJlc291cmNlfGh5cGhlbnN8aWNvbnxpbWFnZS1vcmllbnRhdGlvbnxpbWFnZS1yZW5kZXJpbmd8aW1hZ2UtcmVzb2x1dGlvbnxpbmxpbmUtYm94LWFsaWdufGxlZnR8bGV0dGVyLXNwYWNpbmd8bGluZS1oZWlnaHR8bGluZS1zdGFja2luZy1ydWJ5fGxpbmUtc3RhY2tpbmctc2hpZnR8bGluZS1zdGFja2luZy1zdHJhdGVneXxsaW5lLXN0YWNraW5nfGxpc3Qtc3R5bGUtaW1hZ2V8bGlzdC1zdHlsZS1wb3NpdGlvbnxsaXN0LXN0eWxlLXR5cGV8bGlzdC1zdHlsZXxtYXJnaW4tYm90dG9tfG1hcmdpbi1sZWZ0fG1hcmdpbi1yaWdodHxtYXJnaW4tdG9wfG1hcmdpbnxtYXJrLWFmdGVyfG1hcmstYmVmb3JlfG1hcmt8bWFya3N8bWFycXVlZS1kaXJlY3Rpb258bWFycXVlZS1wbGF5LWNvdW50fG1hcnF1ZWUtc3BlZWR8bWFycXVlZS1zdHlsZXxtYXgtaGVpZ2h0fG1heC13aWR0aHxtaW4taGVpZ2h0fG1pbi13aWR0aHxtb3ZlLXRvfG5hdi1kb3dufG5hdi1pbmRleHxuYXYtbGVmdHxuYXYtcmlnaHR8bmF2LXVwfG9wYWNpdHl8b3JwaGFuc3xvdXRsaW5lLWNvbG9yfG91dGxpbmUtb2Zmc2V0fG91dGxpbmUtc3R5bGV8b3V0bGluZS13aWR0aHxvdXRsaW5lfG92ZXJmbG93LXN0eWxlfG92ZXJmbG93LXh8b3ZlcmZsb3cteXxvdmVyZmxvd3xwYWRkaW5nLWJvdHRvbXxwYWRkaW5nLWxlZnR8cGFkZGluZy1yaWdodHxwYWRkaW5nLXRvcHxwYWRkaW5nfHBhZ2UtYnJlYWstYWZ0ZXJ8cGFnZS1icmVhay1iZWZvcmV8cGFnZS1icmVhay1pbnNpZGV8cGFnZS1wb2xpY3l8cGFnZXxwYXVzZS1hZnRlcnxwYXVzZS1iZWZvcmV8cGF1c2V8cGVyc3BlY3RpdmUtb3JpZ2lufHBlcnNwZWN0aXZlfHBob25lbWVzfHBpdGNoLXJhbmdlfHBpdGNofHBsYXktZHVyaW5nfHBvc2l0aW9ufHByZXNlbnRhdGlvbi1sZXZlbHxwdW5jdHVhdGlvbi10cmltfHF1b3Rlc3xyZW5kZXJpbmctaW50ZW50fHJlc2l6ZXxyZXN0LWFmdGVyfHJlc3QtYmVmb3JlfHJlc3R8cmljaG5lc3N8cmlnaHR8cm90YXRpb24tcG9pbnR8cm90YXRpb258cnVieS1hbGlnbnxydWJ5LW92ZXJoYW5nfHJ1YnktcG9zaXRpb258cnVieS1zcGFufHNpemV8c3BlYWstaGVhZGVyfHNwZWFrLW51bWVyYWx8c3BlYWstcHVuY3R1YXRpb258c3BlYWt8c3BlZWNoLXJhdGV8c3RyZXNzfHN0cmluZy1zZXR8dGFibGUtbGF5b3V0fHRhcmdldC1uYW1lfHRhcmdldC1uZXd8dGFyZ2V0LXBvc2l0aW9ufHRhcmdldHx0ZXh0LWFsaWduLWxhc3R8dGV4dC1hbGlnbnx0ZXh0LWRlY29yYXRpb258dGV4dC1lbXBoYXNpc3x0ZXh0LWhlaWdodHx0ZXh0LWluZGVudHx0ZXh0LWp1c3RpZnl8dGV4dC1vdXRsaW5lfHRleHQtc2hhZG93fHRleHQtdHJhbnNmb3JtfHRleHQtd3JhcHx0b3B8dHJhbnNmb3JtLW9yaWdpbnx0cmFuc2Zvcm0tc3R5bGV8dHJhbnNmb3JtfHRyYW5zaXRpb24tZGVsYXl8dHJhbnNpdGlvbi1kdXJhdGlvbnx0cmFuc2l0aW9uLXByb3BlcnR5fHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9ufHRyYW5zaXRpb258dW5pY29kZS1iaWRpfHZlcnRpY2FsLWFsaWdufHZpc2liaWxpdHl8dm9pY2UtYmFsYW5jZXx2b2ljZS1kdXJhdGlvbnx2b2ljZS1mYW1pbHl8dm9pY2UtcGl0Y2gtcmFuZ2V8dm9pY2UtcGl0Y2h8dm9pY2UtcmF0ZXx2b2ljZS1zdHJlc3N8dm9pY2Utdm9sdW1lfHZvbHVtZXx3aGl0ZS1zcGFjZS1jb2xsYXBzZXx3aGl0ZS1zcGFjZXx3aWRvd3N8d2lkdGh8d29yZC1icmVha3x3b3JkLXNwYWNpbmd8d29yZC13cmFwfHotaW5kZXgiLnNwbGl0KCJ8IikpLHQ9aS5hcnJheVRvTWFwKCJyZ2J8cmdiYXx1cmx8YXR0cnxjb3VudGVyfGNvdW50ZXJzIi5zcGxpdCgifCIpKSxuPWkuYXJyYXlUb01hcCgiYWJzb2x1dGV8YWZ0ZXItZWRnZXxhZnRlcnxhbGwtc2Nyb2xsfGFsbHxhbHBoYWJldGljfGFsd2F5c3xhbnRpYWxpYXNlZHxhcm1lbmlhbnxhdXRvfGF2b2lkLWNvbHVtbnxhdm9pZC1wYWdlfGF2b2lkfGJhbGFuY2V8YmFzZWxpbmV8YmVmb3JlLWVkZ2V8YmVmb3JlfGJlbG93fGJpZGktb3ZlcnJpZGV8YmxvY2stbGluZS1oZWlnaHR8YmxvY2t8Ym9sZHxib2xkZXJ8Ym9yZGVyLWJveHxib3RofGJvdHRvbXxib3h8YnJlYWstYWxsfGJyZWFrLXdvcmR8Y2FwaXRhbGl6ZXxjYXBzLWhlaWdodHxjYXB0aW9ufGNlbnRlcnxjZW50cmFsfGNoYXJ8Y2lyY2xlfGNqay1pZGVvZ3JhcGhpY3xjbG9uZXxjbG9zZS1xdW90ZXxjb2wtcmVzaXplfGNvbGxhcHNlfGNvbHVtbnxjb25zaWRlci1zaGlmdHN8Y29udGFpbnxjb250ZW50LWJveHxjb3Zlcnxjcm9zc2hhaXJ8Y3ViaWMtYmV6aWVyfGRhc2hlZHxkZWNpbWFsLWxlYWRpbmctemVyb3xkZWNpbWFsfGRlZmF1bHR8ZGlzYWJsZWR8ZGlzY3xkaXNyZWdhcmQtc2hpZnRzfGRpc3RyaWJ1dGUtYWxsLWxpbmVzfGRpc3RyaWJ1dGUtbGV0dGVyfGRpc3RyaWJ1dGUtc3BhY2V8ZGlzdHJpYnV0ZXxkb3R0ZWR8ZG91YmxlfGUtcmVzaXplfGVhc2UtaW58ZWFzZS1pbi1vdXR8ZWFzZS1vdXR8ZWFzZXxlbGxpcHNpc3xlbmR8ZXhjbHVkZS1ydWJ5fGZpbGx8Zml4ZWR8Zm9udC1zaXplfGZvbnR8Z2VvcmdpYW58Z2x5cGhzfGdyaWQtaGVpZ2h0fGdyb292ZXxoYW5kfGhhbmdpbmd8aGVicmV3fGhlbHB8aGlkZGVufGhpcmFnYW5hLWlyb2hhfGhpcmFnYW5hfGhvcml6b250YWx8aWNvbnxpZGVvZ3JhcGgtYWxwaGF8aWRlb2dyYXBoLW51bWVyaWN8aWRlb2dyYXBoLXBhcmVudGhlc2lzfGlkZW9ncmFwaC1zcGFjZXxpZGVvZ3JhcGhpY3xpbmFjdGl2ZXxpbmNsdWRlLXJ1Ynl8aW5oZXJpdHxpbml0aWFsfGlubGluZS1ibG9ja3xpbmxpbmUtYm94fGlubGluZS1saW5lLWhlaWdodHxpbmxpbmUtdGFibGV8aW5saW5lfGluc2V0fGluc2lkZXxpbnRlci1pZGVvZ3JhcGh8aW50ZXItd29yZHxpbnZlcnR8aXRhbGljfGp1c3RpZnl8a2F0YWthbmEtaXJvaGF8a2F0YWthbmF8a2VlcC1hbGx8bGFzdHxsZWZ0fGxpZ2h0ZXJ8bGluZS1lZGdlfGxpbmUtdGhyb3VnaHxsaW5lfGxpbmVhcnxsaXN0LWl0ZW18bG9jYWx8bG9vc2V8bG93ZXItYWxwaGF8bG93ZXItZ3JlZWt8bG93ZXItbGF0aW58bG93ZXItcm9tYW58bG93ZXJjYXNlfGxyLXRifGx0cnxtYXRoZW1hdGljYWx8bWF4LWhlaWdodHxtYXgtc2l6ZXxtZWRpdW18bWVudXxtZXNzYWdlLWJveHxtaWRkbGV8bW92ZXxuLXJlc2l6ZXxuZS1yZXNpemV8bmV3c3BhcGVyfG5vLWNoYW5nZXxuby1jbG9zZS1xdW90ZXxuby1kcm9wfG5vLW9wZW4tcXVvdGV8bm8tcmVwZWF0fG5vbmV8bm9ybWFsfG5vdC1hbGxvd2VkfG5vd3JhcHxudy1yZXNpemV8b2JsaXF1ZXxvcGVuLXF1b3RlfG91dHNldHxvdXRzaWRlfG92ZXJsaW5lfHBhZGRpbmctYm94fHBhZ2V8cG9pbnRlcnxwcmUtbGluZXxwcmUtd3JhcHxwcmV8cHJlc2VydmUtM2R8cHJvZ3Jlc3N8cmVsYXRpdmV8cmVwZWF0LXh8cmVwZWF0LXl8cmVwZWF0fHJlcGxhY2VkfHJlc2V0LXNpemV8cmlkZ2V8cmlnaHR8cm91bmR8cm93LXJlc2l6ZXxydGx8cy1yZXNpemV8c2Nyb2xsfHNlLXJlc2l6ZXxzZXBhcmF0ZXxzbGljZXxzbWFsbC1jYXBzfHNtYWxsLWNhcHRpb258c29saWR8c3BhY2V8c3F1YXJlfHN0YXJ0fHN0YXRpY3xzdGF0dXMtYmFyfHN0ZXAtZW5kfHN0ZXAtc3RhcnR8c3RlcHN8c3RyZXRjaHxzdHJpY3R8c3VifHN1cGVyfHN3LXJlc2l6ZXx0YWJsZS1jYXB0aW9ufHRhYmxlLWNlbGx8dGFibGUtY29sdW1uLWdyb3VwfHRhYmxlLWNvbHVtbnx0YWJsZS1mb290ZXItZ3JvdXB8dGFibGUtaGVhZGVyLWdyb3VwfHRhYmxlLXJvdy1ncm91cHx0YWJsZS1yb3d8dGFibGV8dGItcmx8dGV4dC1hZnRlci1lZGdlfHRleHQtYmVmb3JlLWVkZ2V8dGV4dC1ib3R0b218dGV4dC1zaXplfHRleHQtdG9wfHRleHR8dGhpY2t8dGhpbnx0b3B8dHJhbnNwYXJlbnR8dW5kZXJsaW5lfHVwcGVyLWFscGhhfHVwcGVyLWxhdGlufHVwcGVyLXJvbWFufHVwcGVyY2FzZXx1c2Utc2NyaXB0fHZlcnRpY2FsLWlkZW9ncmFwaGljfHZlcnRpY2FsLXRleHR8dmlzaWJsZXx3LXJlc2l6ZXx3YWl0fHdoaXRlc3BhY2V8ei1pbmRleHx6ZXJvIi5zcGxpdCgifCIpKSxyPWkuYXJyYXlUb01hcCgiYXF1YXxibGFja3xibHVlfGZ1Y2hzaWF8Z3JheXxncmVlbnxsaW1lfG1hcm9vbnxuYXZ5fG9saXZlfG9yYW5nZXxwdXJwbGV8cmVkfHNpbHZlcnx0ZWFsfHdoaXRlfHllbGxvdyIuc3BsaXQoInwiKSkscz1pLmFycmF5VG9NYXAoImFyaWFsfGNlbnR1cnl8Y29taWN8Y291cmllcnxnYXJhbW9uZHxnZW9yZ2lhfGhlbHZldGljYXxpbXBhY3R8bHVjaWRhfHN5bWJvbHxzeXN0ZW18dGFob21hfHRpbWVzfHRyZWJ1Y2hldHx1dG9waWF8dmVyZGFuYXx3ZWJkaW5nc3xzYW5zLXNlcmlmfHNlcmlmfG1vbm9zcGFjZSIuc3BsaXQoInwiKSksbz0iXFwtPyg/Oig/OlswLTldKyl8KD86WzAtOV0qXFwuWzAtOV0rKSkiLHU9IihcXDorKVxcYihhZnRlcnxiZWZvcmV8Zmlyc3QtbGV0dGVyfGZpcnN0LWxpbmV8bW96LXNlbGVjdGlvbnxzZWxlY3Rpb24pXFxiIixhPSIoOilcXGIoYWN0aXZlfGNoZWNrZWR8ZGlzYWJsZWR8ZW1wdHl8ZW5hYmxlZHxmaXJzdC1jaGlsZHxmaXJzdC1vZi10eXBlfGZvY3VzfGhvdmVyfGluZGV0ZXJtaW5hdGV8aW52YWxpZHxsYXN0LWNoaWxkfGxhc3Qtb2YtdHlwZXxsaW5rfG5vdHxudGgtY2hpbGR8bnRoLWxhc3QtY2hpbGR8bnRoLWxhc3Qtb2YtdHlwZXxudGgtb2YtdHlwZXxvbmx5LWNoaWxkfG9ubHktb2YtdHlwZXxyZXF1aXJlZHxyb290fHRhcmdldHx2YWxpZHx2aXNpdGVkKVxcYiIsZj1be3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJydWxlc2V0X2NvbW1lbnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlsnXSg/Oig/OlxcXFwuKXwoPzpbXidcXFxcXSkpKj9bJ10ifSx7dG9rZW46WyJjb25zdGFudC5udW1lcmljIiwia2V5d29yZCJdLHJlZ2V4OiIoIitvKyIpKGNofGNtfGRlZ3xlbXxleHxmcnxnZHxncmFkfEh6fGlufGtIenxtbXxtc3xwY3xwdHxweHxyYWR8cmVtfHN8dHVybnx2aHx2bXx2d3wlKSJ9LHt0b2tlbjpbImNvbnN0YW50Lm51bWVyaWMiXSxyZWdleDoiKFswLTldKykifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIjW2EtZjAtOV17Nn0ifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIjW2EtZjAtOV17M30ifSx7dG9rZW46WyJwdW5jdHVhdGlvbiIsImVudGl0eS5vdGhlci5hdHRyaWJ1dGUtbmFtZS5wc2V1ZG8tZWxlbWVudC5jc3MiXSxyZWdleDp1fSx7dG9rZW46WyJwdW5jdHVhdGlvbiIsImVudGl0eS5vdGhlci5hdHRyaWJ1dGUtbmFtZS5wc2V1ZG8tY2xhc3MuY3NzIl0scmVnZXg6YX0se3Rva2VuOmZ1bmN0aW9uKGkpe3JldHVybiBlLmhhc093blByb3BlcnR5KGkudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQudHlwZSI6dC5oYXNPd25Qcm9wZXJ0eShpLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmZ1bmN0aW9uIjpuLmhhc093blByb3BlcnR5KGkudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuY29uc3RhbnQiOnIuaGFzT3duUHJvcGVydHkoaS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC5jb25zdGFudC5jb2xvciI6cy5oYXNPd25Qcm9wZXJ0eShpLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50LmZvbnRzIjoidGV4dCJ9LHJlZ2V4OiJcXC0/W2EtekEtWl9dW2EtekEtWjAtOV9cXC1dKiJ9XSxsPWkuY29weUFycmF5KGYpO2wudW5zaGlmdCh7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IlxcfSIsbmV4dDoic3RhcnQifSk7dmFyIGM9aS5jb3B5QXJyYXkoZik7Yy51bnNoaWZ0KHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiXFx9IixuZXh0OiJtZWRpYSJ9KTt2YXIgaD1be3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scD1pLmNvcHlBcnJheShoKTtwLnVuc2hpZnQoe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJzdGFydCJ9KTt2YXIgZD1pLmNvcHlBcnJheShoKTtkLnVuc2hpZnQoe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJtZWRpYSJ9KTt2YXIgdj1pLmNvcHlBcnJheShoKTt2LnVuc2hpZnQoe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJydWxlc2V0In0pLHRoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJcXHsiLG5leHQ6InJ1bGVzZXQifSx7dG9rZW46InN0cmluZyIscmVnZXg6IkAuKj97IixuZXh0OiJtZWRpYSJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IiNbYS16MC05LV9dKyJ9LHt0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJcXC5bYS16MC05LV9dKyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiOlthLXowLTktX10rIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IlthLXowLTktX10rIn1dLG1lZGlhOlt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6Im1lZGlhX2NvbW1lbnQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IlxceyIsbmV4dDoibWVkaWFfcnVsZXNldCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFx9IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IiNbYS16MC05LV9dKyJ9LHt0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJcXC5bYS16MC05LV9dKyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiOlthLXowLTktX10rIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IlthLXowLTktX10rIn1dLGNvbW1lbnQ6cCxydWxlc2V0OmwscnVsZXNldF9jb21tZW50OnYsbWVkaWFfcnVsZXNldDpjLG1lZGlhX2NvbW1lbnQ6ZH19O3IuaW5oZXJpdHMobyxzKSx0LkNzc0hpZ2hsaWdodFJ1bGVzPW99KSxkZWZpbmUoImFjZS9tb2RlL2h0bWxfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9jc3NfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS94bWxfdXRpbCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vY3NzX2hpZ2hsaWdodF9ydWxlcyIpLkNzc0hpZ2hsaWdodFJ1bGVzLHM9ZSgiLi9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIpLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcyxvPWUoIi4veG1sX3V0aWwiKSx1PWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsYT17YToiYW5jaG9yIixidXR0b246ImZvcm0iLGZvcm06ImZvcm0iLGltZzoiaW1hZ2UiLGlucHV0OiJmb3JtIixsYWJlbDoiZm9ybSIsc2NyaXB0OiJzY3JpcHQiLHNlbGVjdDoiZm9ybSIsdGV4dGFyZWE6ImZvcm0iLHN0eWxlOiJzdHlsZSIsdGFibGU6InRhYmxlIix0Ym9keToidGFibGUiLHRkOiJ0YWJsZSIsdGZvb3Q6InRhYmxlIix0aDoidGFibGUiLHRyOiJ0YWJsZSJ9LGY9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidGV4dCIsbWVyZ2U6ITAscmVnZXg6IjxcXCFcXFtDREFUQVxcWyIsbmV4dDoiY2RhdGEifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXD8uKj9cXD8+In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiPFxcIS0tIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJ4bWxfcGUiLHJlZ2V4OiI8XFwhLio/PiJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8KD89cypzY3JpcHRcXGIpIixuZXh0OiJzY3JpcHQifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPCg/PXMqc3R5bGVcXGIpIixuZXh0OiJzdHlsZSJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvPyIsbmV4dDoidGFnIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29uc3RhbnQuY2hhcmFjdGVyLmVudGl0eSIscmVnZXg6Iig/OiYjWzAtOV0rOyl8KD86JiN4WzAtOWEtZkEtRl0rOyl8KD86JlthLXpBLVowLTlfOlxcLi1dKzspIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiW148XSsifV0sY2RhdGE6W3t0b2tlbjoidGV4dCIscmVnZXg6IlxcXVxcXT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJ0ZXh0IixtZXJnZTohMCxyZWdleDoiXFxzKyJ9LHt0b2tlbjoidGV4dCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qPy0tPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0sby50YWcodGhpcy4kcnVsZXMsInRhZyIsInN0YXJ0IixhKSxvLnRhZyh0aGlzLiRydWxlcywic3R5bGUiLCJjc3Mtc3RhcnQiLGEpLG8udGFnKHRoaXMuJHJ1bGVzLCJzY3JpcHQiLCJqcy1zdGFydCIsYSksdGhpcy5lbWJlZFJ1bGVzKHMsImpzLSIsW3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qKD89PFxcL3NjcmlwdD4pIixuZXh0OiJ0YWcifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPFxcLyg/PXNjcmlwdCkiLG5leHQ6InRhZyJ9XSksdGhpcy5lbWJlZFJ1bGVzKGksImNzcy0iLFt7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPFxcLyg/PXN0eWxlKSIsbmV4dDoidGFnIn1dKX07ci5pbmhlcml0cyhmLHUpLHQuSHRtbEhpZ2hsaWdodFJ1bGVzPWZ9KSxkZWZpbmUoImFjZS9tb2RlL3htbF91dGlsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuW3t0b2tlbjoic3RyaW5nIixyZWdleDonIi4qPyInfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6J1siXS4qJyxuZXh0OmUrIl9xcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4qPycifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IlsnXS4qIixuZXh0OmUrIl9xc3RyaW5nIn1dfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm5be3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKj8iK2UsbmV4dDp0fSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfXQudGFnPWZ1bmN0aW9uKGUsdCxuLHMpe2VbdF09W3t0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46ZnVuY3Rpb24oZSl7cmV0dXJuIHMmJnNbZV0/Im1ldGEudGFnLnRhZy1uYW1lLiIrc1tlXToibWV0YS50YWcudGFnLW5hbWUifSxtZXJnZTohMCxyZWdleDoiWy1fYS16QS1aMC05Ol0rIixuZXh0OnQrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6dCsiX2VtYmVkX2F0dHJpYnV0ZV9saXN0In1dLGVbdCsiX3FzdHJpbmciXT1pKCInIix0KyJfZW1iZWRfYXR0cmlidXRlX2xpc3QiKSxlW3QrIl9xcXN0cmluZyJdPWkoJyInLHQrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCIpLGVbdCsiX2VtYmVkX2F0dHJpYnV0ZV9saXN0Il09W3t0b2tlbjoibWV0YS50YWciLG1lcmdlOiEwLHJlZ2V4OiIvPz4iLG5leHQ6bn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiPSJ9LHt0b2tlbjoiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lIixyZWdleDoiWy1fYS16QS1aMC05Ol0rIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLmNvbmNhdChyKHQpKX19KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9odG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIveG1sIiwiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsImFjZS90b2tlbl9pdGVyYXRvciJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBhKGUsdCl7dmFyIG49ITAscj1lLnR5cGUuc3BsaXQoIi4iKSxpPXQuc3BsaXQoIi4iKTtyZXR1cm4gaS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKHIuaW5kZXhPZihlKT09LTEpcmV0dXJuIG49ITEsITF9KSxufXZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uL2JlaGF2aW91ci94bWwiKS5YbWxCZWhhdmlvdXIscz1lKCIuL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixvPWUoIi4uLy4uL3Rva2VuX2l0ZXJhdG9yIikuVG9rZW5JdGVyYXRvcix1PVsiYXJlYSIsImJhc2UiLCJiciIsImNvbCIsImNvbW1hbmQiLCJlbWJlZCIsImhyIiwiaW1nIiwiaW5wdXQiLCJrZXlnZW4iLCJsaW5rIiwibWV0YSIsInBhcmFtIiwic291cmNlIiwidHJhY2siLCJ3YnIiXSxmPWZ1bmN0aW9uKCl7dGhpcy5pbmhlcml0KGkpLHRoaXMuYWRkKCJhdXRvY2xvc2luZyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iPiIpe3ZhciBzPW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxmPW5ldyBvKHIscy5yb3cscy5jb2x1bW4pLGw9Zi5nZXRDdXJyZW50VG9rZW4oKSxjPSExO2lmKCFsfHwhYShsLCJtZXRhLnRhZyIpJiYoIWEobCwidGV4dCIpfHwhbC52YWx1ZS5tYXRjaCgiLyIpKSl7ZG8gbD1mLnN0ZXBCYWNrd2FyZCgpO3doaWxlKGwmJihhKGwsInN0cmluZyIpfHxhKGwsImtleXdvcmQub3BlcmF0b3IiKXx8YShsLCJlbnRpdHkuYXR0cmlidXRlLW5hbWUiKXx8YShsLCJ0ZXh0IikpKX1lbHNlIGM9ITA7aWYoIWx8fCFhKGwsIm1ldGEudGFnLW5hbWUiKXx8Zi5zdGVwQmFja3dhcmQoKS52YWx1ZS5tYXRjaCgiLyIpKXJldHVybjt2YXIgaD1sLnZhbHVlO2lmKGMpdmFyIGg9aC5zdWJzdHJpbmcoMCxzLmNvbHVtbi1sLnN0YXJ0KTtpZih1LmluZGV4T2YoaCkhPT0tMSlyZXR1cm47cmV0dXJue3RleHQ6Ij48LyIraCsiPiIsc2VsZWN0aW9uOlsxLDFdfX19KX07ci5pbmhlcml0cyhmLGkpLHQuSHRtbEJlaGF2aW91cj1mfSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIveG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIiwiYWNlL3Rva2VuX2l0ZXJhdG9yIl0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHUoZSx0KXt2YXIgbj0hMCxyPWUudHlwZS5zcGxpdCgiLiIpLGk9dC5zcGxpdCgiLiIpO3JldHVybiBpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoci5pbmRleE9mKGUpPT0tMSlyZXR1cm4gbj0hMSwhMX0pLG59dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vYmVoYXZpb3VyIikuQmVoYXZpb3VyLHM9ZSgiLi9jc3R5bGUiKS5Dc3R5bGVCZWhhdmlvdXIsbz1lKCIuLi8uLi90b2tlbl9pdGVyYXRvciIpLlRva2VuSXRlcmF0b3IsYT1mdW5jdGlvbigpe3RoaXMuaW5oZXJpdChzLFsic3RyaW5nX2RxdW90ZXMiXSksdGhpcy5hZGQoImF1dG9jbG9zaW5nIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSI+Iil7dmFyIHM9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9bmV3IG8ocixzLnJvdyxzLmNvbHVtbiksZj1hLmdldEN1cnJlbnRUb2tlbigpLGw9ITE7aWYoIWZ8fCF1KGYsIm1ldGEudGFnIikmJighdShmLCJ0ZXh0Iil8fCFmLnZhbHVlLm1hdGNoKCIvIikpKXtkbyBmPWEuc3RlcEJhY2t3YXJkKCk7d2hpbGUoZiYmKHUoZiwic3RyaW5nIil8fHUoZiwia2V5d29yZC5vcGVyYXRvciIpfHx1KGYsImVudGl0eS5hdHRyaWJ1dGUtbmFtZSIpfHx1KGYsInRleHQiKSkpfWVsc2UgbD0hMDtpZighZnx8IXUoZiwibWV0YS50YWctbmFtZSIpfHxhLnN0ZXBCYWNrd2FyZCgpLnZhbHVlLm1hdGNoKCIvIikpcmV0dXJuO3ZhciBjPWYudmFsdWU7aWYobCl2YXIgYz1jLnN1YnN0cmluZygwLHMuY29sdW1uLWYuc3RhcnQpO3JldHVybnt0ZXh0OiI+PC8iK2MrIj4iLHNlbGVjdGlvbjpbMSwxXX19fSksdGhpcy5hZGQoImF1dG9pbmRlbnQiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09IlxuIil7dmFyIHM9bi5nZXRDdXJzb3JQb3NpdGlvbigpLG89ci5kb2MuZ2V0TGluZShzLnJvdyksdT1vLnN1YnN0cmluZyhzLmNvbHVtbixzLmNvbHVtbisyKTtpZih1PT0iPC8iKXt2YXIgYT10aGlzLiRnZXRJbmRlbnQoci5kb2MuZ2V0TGluZShzLnJvdykpK3IuZ2V0VGFiU3RyaW5nKCksZj10aGlzLiRnZXRJbmRlbnQoci5kb2MuZ2V0TGluZShzLnJvdykpO3JldHVybnt0ZXh0OiJcbiIrYSsiXG4iK2Ysc2VsZWN0aW9uOlsxLGEubGVuZ3RoLDEsYS5sZW5ndGhdfX19fSl9O3IuaW5oZXJpdHMoYSxpKSx0LlhtbEJlaGF2aW91cj1hfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2h0bWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2ZvbGRpbmcvbWl4ZWQiLCJhY2UvbW9kZS9mb2xkaW5nL3htbCIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4vbWl4ZWQiKS5Gb2xkTW9kZSxzPWUoIi4veG1sIikuRm9sZE1vZGUsbz1lKCIuL2NzdHlsZSIpLkZvbGRNb2RlLHU9dC5Gb2xkTW9kZT1mdW5jdGlvbigpe2kuY2FsbCh0aGlzLG5ldyBzKHthcmVhOjEsYmFzZToxLGJyOjEsY29sOjEsY29tbWFuZDoxLGVtYmVkOjEsaHI6MSxpbWc6MSxpbnB1dDoxLGtleWdlbjoxLGxpbms6MSxtZXRhOjEscGFyYW06MSxzb3VyY2U6MSx0cmFjazoxLHdicjoxLGxpOjEsZHQ6MSxkZDoxLHA6MSxydDoxLHJwOjEsb3B0Z3JvdXA6MSxvcHRpb246MSxjb2xncm91cDoxLHRkOjEsdGg6MX0pLHsianMtIjpuZXcgbywiY3NzLSI6bmV3IG99KX07ci5pbmhlcml0cyh1LGkpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL21peGVkIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLHM9dC5Gb2xkTW9kZT1mdW5jdGlvbihlLHQpe3RoaXMuZGVmYXVsdE1vZGU9ZSx0aGlzLnN1Yk1vZGVzPXR9O3IuaW5oZXJpdHMocyxpKSxmdW5jdGlvbigpe3RoaXMuJGdldE1vZGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHRoaXMuc3ViTW9kZXMpaWYoZS5pbmRleE9mKHQpPT09MClyZXR1cm4gdGhpcy5zdWJNb2Rlc1t0XTtyZXR1cm4gbnVsbH0sdGhpcy4kdHJ5TW9kZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLiRnZXRNb2RlKGUpO3JldHVybiBpP2kuZ2V0Rm9sZFdpZGdldCh0LG4scik6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJHRyeU1vZGUoZS5nZXRTdGF0ZShuLTEpLGUsdCxuKXx8dGhpcy4kdHJ5TW9kZShlLmdldFN0YXRlKG4pLGUsdCxuKXx8dGhpcy5kZWZhdWx0TW9kZS5nZXRGb2xkV2lkZ2V0KGUsdCxuKX0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJGdldE1vZGUoZS5nZXRTdGF0ZShuLTEpKTtpZighcnx8IXIuZ2V0Rm9sZFdpZGdldChlLHQsbikpcj10aGlzLiRnZXRNb2RlKGUuZ2V0U3RhdGUobikpO2lmKCFyfHwhci5nZXRGb2xkV2lkZ2V0KGUsdCxuKSlyPXRoaXMuZGVmYXVsdE1vZGU7cmV0dXJuIHIuZ2V0Rm9sZFdpZGdldFJhbmdlKGUsdCxuKX19LmNhbGwocy5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL3htbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLCJhY2UvdG9rZW5faXRlcmF0b3IiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vLi4vbGliL2xhbmciKSxzPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2Usbz1lKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLHU9ZSgiLi4vLi4vdG9rZW5faXRlcmF0b3IiKS5Ub2tlbkl0ZXJhdG9yLGE9dC5Gb2xkTW9kZT1mdW5jdGlvbihlKXtvLmNhbGwodGhpcyksdGhpcy52b2lkRWxlbWVudHM9ZXx8e319O3IuaW5oZXJpdHMoYSxvKSxmdW5jdGlvbigpe3RoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmUoZSxuKTtyZXR1cm4gci5jbG9zaW5nP3Q9PSJtYXJrYmVnaW5lbmQiPyJlbmQiOiIiOiFyLnRhZ05hbWV8fHRoaXMudm9pZEVsZW1lbnRzW3IudGFnTmFtZS50b0xvd2VyQ2FzZSgpXT8iIjpyLnNlbGZDbG9zaW5nPyIiOnIudmFsdWUuaW5kZXhPZigiLyIrci50YWdOYW1lKSE9PS0xPyIiOiJzdGFydCJ9LHRoaXMuX2dldEZpcnN0VGFnSW5MaW5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRUb2tlbnModCkscj0iIjtmb3IodmFyIHM9MDtzPG4ubGVuZ3RoO3MrKyl7dmFyIG89bltzXTtvLnR5cGUuaW5kZXhPZigibWV0YS50YWciKT09PTA/cis9by52YWx1ZTpyKz1pLnN0cmluZ1JlcGVhdCgiICIsby52YWx1ZS5sZW5ndGgpfXJldHVybiB0aGlzLl9wYXJzZVRhZyhyKX0sdGhpcy50YWdSZT0vXihccyopKDw/KFwvPykoWy1fYS16QS1aMC05OiFdKilccyooXC8/KT4/KS8sdGhpcy5fcGFyc2VUYWc9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50YWdSZS5leGVjKGUpLG49dGhpcy50YWdSZS5sYXN0SW5kZXh8fDA7cmV0dXJuIHRoaXMudGFnUmUubGFzdEluZGV4PTAse3ZhbHVlOmUsbWF0Y2g6dD90WzJdOiIiLGNsb3Npbmc6dD8hIXRbM106ITEsc2VsZkNsb3Npbmc6dD8hIXRbNV18fHRbMl09PSIvPiI6ITEsdGFnTmFtZTp0P3RbNF06IiIsY29sdW1uOnRbMV0/bit0WzFdLmxlbmd0aDpufX0sdGhpcy5fcmVhZFRhZ0ZvcndhcmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRDdXJyZW50VG9rZW4oKTtpZighdClyZXR1cm4gbnVsbDt2YXIgbj0iIixyO2RvIGlmKHQudHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MCl7aWYoIXIpdmFyIHI9e3JvdzplLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjplLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpfTtuKz10LnZhbHVlO2lmKG4uaW5kZXhPZigiPiIpIT09LTEpe3ZhciBpPXRoaXMuX3BhcnNlVGFnKG4pO3JldHVybiBpLnN0YXJ0PXIsaS5lbmQ9e3JvdzplLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjplLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK3QudmFsdWUubGVuZ3RofSxlLnN0ZXBGb3J3YXJkKCksaX19d2hpbGUodD1lLnN0ZXBGb3J3YXJkKCkpO3JldHVybiBudWxsfSx0aGlzLl9yZWFkVGFnQmFja3dhcmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRDdXJyZW50VG9rZW4oKTtpZighdClyZXR1cm4gbnVsbDt2YXIgbj0iIixyO2RvIGlmKHQudHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MCl7cnx8KHI9e3JvdzplLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjplLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK3QudmFsdWUubGVuZ3RofSksbj10LnZhbHVlK247aWYobi5pbmRleE9mKCI8IikhPT0tMSl7dmFyIGk9dGhpcy5fcGFyc2VUYWcobik7cmV0dXJuIGkuZW5kPXIsaS5zdGFydD17cm93OmUuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmUuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCl9LGUuc3RlcEJhY2t3YXJkKCksaX19d2hpbGUodD1lLnN0ZXBCYWNrd2FyZCgpKTtyZXR1cm4gbnVsbH0sdGhpcy5fcG9wPWZ1bmN0aW9uKGUsdCl7d2hpbGUoZS5sZW5ndGgpe3ZhciBuPWVbZS5sZW5ndGgtMV07aWYoIXR8fG4udGFnTmFtZT09dC50YWdOYW1lKXJldHVybiBlLnBvcCgpO2lmKHRoaXMudm9pZEVsZW1lbnRzW3QudGFnTmFtZV0pcmV0dXJuO2lmKHRoaXMudm9pZEVsZW1lbnRzW24udGFnTmFtZV0pe2UucG9wKCk7Y29udGludWV9cmV0dXJuIG51bGx9fSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmUoZSxuKTtpZighci5tYXRjaClyZXR1cm4gbnVsbDt2YXIgaT1yLmNsb3Npbmd8fHIuc2VsZkNsb3Npbmcsbz1bXSxhO2lmKCFpKXt2YXIgZj1uZXcgdShlLG4sci5jb2x1bW4pLGw9e3JvdzpuLGNvbHVtbjpyLmNvbHVtbityLnRhZ05hbWUubGVuZ3RoKzJ9O3doaWxlKGE9dGhpcy5fcmVhZFRhZ0ZvcndhcmQoZikpe2lmKGEuc2VsZkNsb3Npbmcpe2lmKCFvLmxlbmd0aClyZXR1cm4gYS5zdGFydC5jb2x1bW4rPWEudGFnTmFtZS5sZW5ndGgrMixhLmVuZC5jb2x1bW4tPTIscy5mcm9tUG9pbnRzKGEuc3RhcnQsYS5lbmQpO2NvbnRpbnVlfWlmKGEuY2xvc2luZyl7dGhpcy5fcG9wKG8sYSk7aWYoby5sZW5ndGg9PTApcmV0dXJuIHMuZnJvbVBvaW50cyhsLGEuc3RhcnQpfWVsc2Ugby5wdXNoKGEpfX1lbHNle3ZhciBmPW5ldyB1KGUsbixyLmNvbHVtbityLm1hdGNoLmxlbmd0aCksYz17cm93Om4sY29sdW1uOnIuY29sdW1ufTt3aGlsZShhPXRoaXMuX3JlYWRUYWdCYWNrd2FyZChmKSl7aWYoYS5zZWxmQ2xvc2luZyl7aWYoIW8ubGVuZ3RoKXJldHVybiBhLnN0YXJ0LmNvbHVtbis9YS50YWdOYW1lLmxlbmd0aCsyLGEuZW5kLmNvbHVtbi09MixzLmZyb21Qb2ludHMoYS5zdGFydCxhLmVuZCk7Y29udGludWV9aWYoIWEuY2xvc2luZyl7dGhpcy5fcG9wKG8sYSk7aWYoby5sZW5ndGg9PTApcmV0dXJuIGEuc3RhcnQuY29sdW1uKz1hLnRhZ05hbWUubGVuZ3RoKzIscy5mcm9tUG9pbnRzKGEuc3RhcnQsYyl9ZWxzZSBvLnB1c2goYSl9fX19LmNhbGwoYS5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9sdWEiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvbHVhX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9sdWFfaGlnaGxpZ2h0X3J1bGVzIikuTHVhSGlnaGxpZ2h0UnVsZXMsdT1lKCIuLi9yYW5nZSIpLlJhbmdlLGE9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKX07ci5pbmhlcml0cyhhLGkpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih0KXt2YXIgbj0wO2Zvcih2YXIgciBpbiB0KXt2YXIgaT10W3JdO2kudHlwZT09ImtleXdvcmQiP2kudmFsdWUgaW4gZSYmKG4rPWVbaS52YWx1ZV0pOmkudHlwZT09InBhcmVuLmxwYXJlbiI/bisrOmkudHlwZT09InBhcmVuLnJwYXJlbiImJm4tLX1yZXR1cm4gbjwwPy0xOm4+MD8xOjB9dmFyIGU9eyJmdW5jdGlvbiI6MSx0aGVuOjEsImRvIjoxLCJlbHNlIjoxLGVsc2VpZjoxLHJlcGVhdDoxLGVuZDotMSx1bnRpbDotMX0sdD1bImVsc2UiLCJlbHNlaWYiLCJlbmQiLCJ1bnRpbCJdO3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXRoaXMuJGdldEluZGVudCh0KSxzPTAsbz10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2Vucyh0LGUpLHU9by50b2tlbnM7cmV0dXJuIGU9PSJzdGFydCImJihzPW4odSkpLHM+MD9pK3I6czwwJiZpLnN1YnN0cihpLmxlbmd0aC1yLmxlbmd0aCk9PXImJiF0aGlzLmNoZWNrT3V0ZGVudChlLHQsIlxuIik/aS5zdWJzdHIoMCxpLmxlbmd0aC1yLmxlbmd0aCk6aX0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSxuLHIpe2lmKHIhPSJcbiImJnIhPSJcciImJnIhPSJcclxuIilyZXR1cm4hMTtpZihuLm1hdGNoKC9eXHMqW1wpXH1cXV0kLykpcmV0dXJuITA7dmFyIGk9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMobi50cmltKCksZSkudG9rZW5zO3JldHVybiFpfHwhaS5sZW5ndGg/ITE6aVswXS50eXBlPT0ia2V5d29yZCImJnQuaW5kZXhPZihpWzBdLnZhbHVlKSE9LTF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXQuZ2V0TGluZShyLTEpLHM9dGhpcy4kZ2V0SW5kZW50KGkpLmxlbmd0aCxvPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKGksInN0YXJ0IikudG9rZW5zLGE9dC5nZXRUYWJTdHJpbmcoKS5sZW5ndGgsZj1zK2EqbihvKSxsPXRoaXMuJGdldEluZGVudCh0LmdldExpbmUocikpLmxlbmd0aDtpZihsPGYpcmV0dXJuO3Qub3V0ZGVudFJvd3MobmV3IHUociwwLHIrMiwwKSl9fS5jYWxsKGEucHJvdG90eXBlKSx0Lk1vZGU9YX0pLGRlZmluZSgiYWNlL21vZGUvbHVhX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsbz1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgiYnJlYWt8ZG98ZWxzZXxlbHNlaWZ8ZW5kfGZvcnxmdW5jdGlvbnxpZnxpbnxsb2NhbHxyZXBlYXR8cmV0dXJufHRoZW58dW50aWx8d2hpbGV8b3J8YW5kfG5vdCIuc3BsaXQoInwiKSksdD1pLmFycmF5VG9NYXAoInRydWV8ZmFsc2V8bmlsfF9HfF9WRVJTSU9OIi5zcGxpdCgifCIpKSxuPWkuYXJyYXlUb01hcCgic3RyaW5nfHhwY2FsbHxwYWNrYWdlfHRvc3RyaW5nfHByaW50fG9zfHVucGFja3xyZXF1aXJlfGdldGZlbnZ8c2V0bWV0YXRhYmxlfG5leHR8YXNzZXJ0fHRvbnVtYmVyfGlvfHJhd2VxdWFsfGNvbGxlY3RnYXJiYWdlfGdldG1ldGF0YWJsZXxtb2R1bGV8cmF3c2V0fG1hdGh8ZGVidWd8cGNhbGx8dGFibGV8bmV3cHJveHl8dHlwZXxjb3JvdXRpbmV8X0d8c2VsZWN0fGdjaW5mb3xwYWlyc3xyYXdnZXR8bG9hZHN0cmluZ3xpcGFpcnN8X1ZFUlNJT058ZG9maWxlfHNldGZlbnZ8bG9hZHxlcnJvcnxsb2FkZmlsZXxzdWJ8dXBwZXJ8bGVufGdmaW5kfHJlcHxmaW5kfG1hdGNofGNoYXJ8ZHVtcHxnbWF0Y2h8cmV2ZXJzZXxieXRlfGZvcm1hdHxnc3VifGxvd2VyfHByZWxvYWR8bG9hZGxpYnxsb2FkZWR8bG9hZGVyc3xjcGF0aHxjb25maWd8cGF0aHxzZWVhbGx8ZXhpdHxzZXRsb2NhbGV8ZGF0ZXxnZXRlbnZ8ZGlmZnRpbWV8cmVtb3ZlfHRpbWV8Y2xvY2t8dG1wbmFtZXxyZW5hbWV8ZXhlY3V0ZXxsaW5lc3x3cml0ZXxjbG9zZXxmbHVzaHxvcGVufG91dHB1dHx0eXBlfHJlYWR8c3RkZXJyfHN0ZGlufGlucHV0fHN0ZG91dHxwb3Blbnx0bXBmaWxlfGxvZ3xtYXh8YWNvc3xodWdlfGxkZXhwfHBpfGNvc3x0YW5ofHBvd3xkZWd8dGFufGNvc2h8c2luaHxyYW5kb218cmFuZG9tc2VlZHxmcmV4cHxjZWlsfGZsb29yfHJhZHxhYnN8c3FydHxtb2RmfGFzaW58bWlufG1vZHxmbW9kfGxvZzEwfGF0YW4yfGV4cHxzaW58YXRhbnxnZXR1cHZhbHVlfGRlYnVnfHNldGhvb2t8Z2V0bWV0YXRhYmxlfGdldGhvb2t8c2V0bWV0YXRhYmxlfHNldGxvY2FsfHRyYWNlYmFja3xzZXRmZW52fGdldGluZm98c2V0dXB2YWx1ZXxnZXRsb2NhbHxnZXRyZWdpc3RyeXxnZXRmZW52fHNldG58aW5zZXJ0fGdldG58Zm9yZWFjaGl8bWF4bnxmb3JlYWNofGNvbmNhdHxzb3J0fHJlbW92ZXxyZXN1bWV8eWllbGR8c3RhdHVzfHdyYXB8Y3JlYXRlfHJ1bm5pbmciLnNwbGl0KCJ8IikpLHI9aS5hcnJheVRvTWFwKCJzdHJpbmd8cGFja2FnZXxvc3xpb3xtYXRofGRlYnVnfHRhYmxlfGNvcm91dGluZSIuc3BsaXQoInwiKSkscz1pLmFycmF5VG9NYXAoIl9fYWRkfF9fc3VifF9fbW9kfF9fdW5tfF9fY29uY2F0fF9fbHR8X19pbmRleHxfX2NhbGx8X19nY3xfX21ldGF0YWJsZXxfX211bHxfX2RpdnxfX3Bvd3xfX2xlbnxfX2VxfF9fbGV8X19uZXdpbmRleHxfX3Rvc3RyaW5nfF9fbW9kZXxfX3RvbnVtYmVyIi5zcGxpdCgifCIpKSxvPWkuYXJyYXlUb01hcCgiIi5zcGxpdCgifCIpKSx1PWkuYXJyYXlUb01hcCgic2V0bnxmb3JlYWNofGZvcmVhY2hpfGdjaW5mb3xsb2cxMHxtYXhuIi5zcGxpdCgifCIpKSxhPSIiLGY9Iig/Oig/OlsxLTldXFxkKil8KD86MCkpIixsPSIoPzowW3hYXVtcXGRBLUZhLWZdKykiLGM9Iig/OiIrZisifCIrbCsiKSIsaD0iKD86XFwuXFxkKykiLHA9Iig/OlxcZCspIixkPSIoPzooPzoiK3ArIj8iK2grIil8KD86IitwKyJcXC4pKSIsdj0iKD86IitkKyIpIixtPVtdO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDphKyJcXC1cXC1cXFtcXFsuKlxcXVxcXSJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6YSsiXFwtXFwtXFxbXFw9XFxbLipcXF1cXD1cXF0ifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmErIlxcLVxcLVxcW1xcPXsyfVxcWy4qXFxdXFw9ezJ9XFxdIn0se3Rva2VuOiJjb21tZW50IixyZWdleDphKyJcXC1cXC1cXFtcXD17M31cXFsuKlxcXVxcPXszfVxcXSJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6YSsiXFwtXFwtXFxbXFw9ezR9XFxbLipcXF1cXD17NH1cXF0ifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmErIlxcLVxcLVxcW1xcPXs1fVxcPSpcXFsuKlxcXVxcPXs1fVxcPSpcXF0ifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmErIlxcLVxcLVxcW1xcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicWNvbW1lbnQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmErIlxcLVxcLVxcW1xcPVxcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicWNvbW1lbnQxIn0se3Rva2VuOiJjb21tZW50IixyZWdleDphKyJcXC1cXC1cXFtcXD17Mn1cXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFjb21tZW50MiJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6YSsiXFwtXFwtXFxbXFw9ezN9XFxbLiokIixtZXJnZTohMCxuZXh0OiJxY29tbWVudDMifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OmErIlxcLVxcLVxcW1xcPXs0fVxcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicWNvbW1lbnQ0In0se3Rva2VuOmZ1bmN0aW9uKGUpe3ZhciB0PS9cLVwtXFsoXD0rKVxbLyxuO3JldHVybihuPXQuZXhlYyhlKSkhPW51bGwmJihuPW5bMV0pIT11bmRlZmluZWQmJm0ucHVzaChuLmxlbmd0aCksImNvbW1lbnQifSxyZWdleDphKyJcXC1cXC1cXFtcXD17NX1cXD0qXFxbLiokIixtZXJnZTohMCxuZXh0OiJxY29tbWVudDUifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC1cXC0uKiQifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFxbLipcXF1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFw9XFxbLipcXF1cXD1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFw9ezJ9XFxbLipcXF1cXD17Mn1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFw9ezN9XFxbLipcXF1cXD17M31cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFw9ezR9XFxbLipcXF1cXD17NH1cXF0ifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFw9ezV9XFw9KlxcWy4qXFxdXFw9ezV9XFw9KlxcXSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDphKyJcXFtcXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFw9XFxbLiokIixtZXJnZTohMCxuZXh0OiJxc3RyaW5nMSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDphKyJcXFtcXD17Mn1cXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFzdHJpbmcyIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OmErIlxcW1xcPXszfVxcWy4qJCIsbWVyZ2U6ITAsbmV4dDoicXN0cmluZzMifSx7dG9rZW46InN0cmluZyIscmVnZXg6YSsiXFxbXFw9ezR9XFxbLiokIixtZXJnZTohMCxuZXh0OiJxc3RyaW5nNCJ9LHt0b2tlbjpmdW5jdGlvbihlKXt2YXIgdD0vXFsoXD0rKVxbLyxuO3JldHVybihuPXQuZXhlYyhlKSkhPW51bGwmJihuPW5bMV0pIT11bmRlZmluZWQmJm0ucHVzaChuLmxlbmd0aCksInN0cmluZyJ9LHJlZ2V4OmErIlxcW1xcPXs1fVxcPSpcXFsuKiQiLG1lcmdlOiEwLG5leHQ6InFzdHJpbmc1In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OmErJyIoPzpbXlxcXFxdfFxcXFwuKSo/Iid9LHt0b2tlbjoic3RyaW5nIixyZWdleDphKyInKD86W15cXFxcXXxcXFxcLikqPycifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OnZ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6YysiXFxiIn0se3Rva2VuOmZ1bmN0aW9uKGkpe3JldHVybiBlLmhhc093blByb3BlcnR5KGkpPyJrZXl3b3JkIjp0Lmhhc093blByb3BlcnR5KGkpPyJjb25zdGFudC5sYW5ndWFnZSI6by5oYXNPd25Qcm9wZXJ0eShpKT8iaW52YWxpZC5pbGxlZ2FsIjpyLmhhc093blByb3BlcnR5KGkpPyJjb25zdGFudC5saWJyYXJ5Ijp1Lmhhc093blByb3BlcnR5KGkpPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOm4uaGFzT3duUHJvcGVydHkoaSk/InN1cHBvcnQuZnVuY3Rpb24iOnMuaGFzT3duUHJvcGVydHkoaSk/InN1cHBvcnQuZnVuY3Rpb24iOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcK3xcXC18XFwqfFxcL3wlfFxcI3xcXF58fnw8fD58PD18PT58PT18fj18PXxcXDp8XFwuXFwuXFwufFxcLlxcLiJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1xcW1xcKFxce10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF1cXClcXH1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxxY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiKD86W15cXFxcXXxcXFxcLikqP1xcXVxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxY29tbWVudDE6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD1cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scWNvbW1lbnQyOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9ezJ9XFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFjb21tZW50Mzpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiKD86W15cXFxcXXxcXFxcLikqP1xcXVxcPXszfVxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxY29tbWVudDQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD17NH1cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scWNvbW1lbnQ1Olt7dG9rZW46ZnVuY3Rpb24oZSl7dmFyIHQ9L1xdKFw9KylcXS8sbj10aGlzLnJ1bGVzLnFjb21tZW50NVswXSxyO24ubmV4dD0ic3RhcnQiO2lmKChyPXQuZXhlYyhlKSkhPW51bGwmJihyPXJbMV0pIT11bmRlZmluZWQpe3ZhciBpPXIubGVuZ3RoLHM7KHM9bS5wb3AoKSkhPWkmJihtLnB1c2gocyksbi5uZXh0PSJxY29tbWVudDUiKX1yZXR1cm4iY29tbWVudCJ9LHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9ezV9XFw9KlxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nMTpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9XFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV0scXN0cmluZzI6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiKD86W15cXFxcXXxcXFxcLikqP1xcXVxcPXsyfVxcXSIsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFzdHJpbmczOlt7dG9rZW46InN0cmluZyIscmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD17M31cXF0iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nNDpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/XFxdXFw9ezR9XFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV0scXN0cmluZzU6W3t0b2tlbjpmdW5jdGlvbihlKXt2YXIgdD0vXF0oXD0rKVxdLyxuPXRoaXMucnVsZXMucXN0cmluZzVbMF0scjtuLm5leHQ9InN0YXJ0IjtpZigocj10LmV4ZWMoZSkpIT1udWxsJiYocj1yWzFdKSE9dW5kZWZpbmVkKXt2YXIgaT1yLmxlbmd0aCxzOyhzPW0ucG9wKCkpIT1pJiYobS5wdXNoKHMpLG4ubmV4dD0icXN0cmluZzUiKX1yZXR1cm4ic3RyaW5nIn0scmVnZXg6Iig/OlteXFxcXF18XFxcXC4pKj9cXF1cXD17NX1cXD0qXFxdIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV19fTtyLmluaGVyaXRzKG8scyksdC5MdWFIaWdobGlnaHRSdWxlcz1vfSksZGVmaW5lKCJhY2UvbW9kZS9sdWFwYWdlX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvaHRtbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9sdWFfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vaHRtbF9oaWdobGlnaHRfcnVsZXMiKS5IdG1sSGlnaGxpZ2h0UnVsZXMscz1lKCIuL2x1YV9oaWdobGlnaHRfcnVsZXMiKS5MdWFIaWdobGlnaHRSdWxlcyxvPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9KG5ldyBpKS5nZXRSdWxlcygpO2Zvcih2YXIgZSBpbiB0aGlzLiRydWxlcyl0aGlzLiRydWxlc1tlXS51bnNoaWZ0KHt0b2tlbjoia2V5d29yZCIscmVnZXg6IjxcXCVcXD0/IixuZXh0OiJsdWEtc3RhcnQifSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiI8XFw/bHVhXFw9PyIsbmV4dDoibHVhLXN0YXJ0In0pO3RoaXMuZW1iZWRSdWxlcyhzLCJsdWEtIixbe3Rva2VuOiJrZXl3b3JkIixyZWdleDoiXFwlPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiJcXD8+IixuZXh0OiJzdGFydCJ9XSl9O3IuaW5oZXJpdHMobyxpKSx0Lkx1YVBhZ2VIaWdobGlnaHRSdWxlcz1vfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-markdown.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9tYXJrZG93biIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS9tb2RlL2phdmFzY3JpcHQiLCJhY2UvbW9kZS94bWwiLCJhY2UvbW9kZS9odG1sIiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL21hcmtkb3duX2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi9qYXZhc2NyaXB0IikuTW9kZSxvPWUoIi4veG1sIikuTW9kZSx1PWUoIi4vaHRtbCIpLk1vZGUsYT1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsZj1lKCIuL21hcmtkb3duX2hpZ2hsaWdodF9ydWxlcyIpLk1hcmtkb3duSGlnaGxpZ2h0UnVsZXMsbD1mdW5jdGlvbigpe3ZhciBlPW5ldyBmO3RoaXMuJHRva2VuaXplcj1uZXcgYShlLmdldFJ1bGVzKCkpLHRoaXMuJGVtYmVkcz1lLmdldEVtYmVkcygpLHRoaXMuY3JlYXRlTW9kZURlbGVnYXRlcyh7ImpzLSI6cywieG1sLSI6bywiaHRtbC0iOnV9KX07ci5pbmhlcml0cyhsLGkpLGZ1bmN0aW9uKCl7dGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7aWYoZT09Imxpc3RibG9jayIpe3ZhciByPS9eKCg/Oi4rKT8pKFstKypdWyBdKykvLmV4ZWModCk7cmV0dXJuIHI/KG5ldyBBcnJheShyWzFdLmxlbmd0aCsxKSkuam9pbigiICIpK3JbMl06IiJ9cmV0dXJuIHRoaXMuJGdldEluZGVudCh0KX19LmNhbGwobC5wcm90b3R5cGUpLHQuTW9kZT1sfSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSIsImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIpLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcyx1PWUoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGE9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxmPWUoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGw9ZSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGM9ZSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGg9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyB1LHRoaXMuJGJlaGF2aW91cj1uZXcgbCx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgY307ci5pbmhlcml0cyhoLGkpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ITAscz0vXihccyopXC9cLy87Zm9yKHZhciBvPW47bzw9cjtvKyspaWYoIXMudGVzdCh0LmdldExpbmUobykpKXtpPSExO2JyZWFrfWlmKGkpe3ZhciB1PW5ldyBhKDAsMCwwLDApO2Zvcih2YXIgbz1uO288PXI7bysrKXt2YXIgZj10LmdldExpbmUobyksbD1mLm1hdGNoKHMpO3Uuc3RhcnQucm93PW8sdS5lbmQucm93PW8sdS5lbmQuY29sdW1uPWxbMF0ubGVuZ3RoLHQucmVwbGFjZSh1LGxbMV0pfX1lbHNlIHQuaW5kZW50Um93cyhuLHIsIi8vIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJGdldEluZGVudCh0KSxpPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKHQsZSkscz1pLnRva2VucyxvPWkuc3RhdGU7aWYocy5sZW5ndGgmJnNbcy5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiByO2lmKGU9PSJzdGFydCJ8fGU9PSJyZWdleF9hbGxvd2VkIil7dmFyIHU9dC5tYXRjaCgvXi4qKD86XGJjYXNlXGIuKlw6fFtce1woXFtdKVxzKiQvKTt1JiYocis9bil9ZWxzZSBpZihlPT0iZG9jLXN0YXJ0Iil7aWYobz09InN0YXJ0Inx8ZT09InJlZ2V4X2FsbG93ZWQiKXJldHVybiIiO3ZhciB1PXQubWF0Y2goL15ccyooXC8/KVwqLyk7dSYmKHVbMV0mJihyKz0iICIpLHIrPSIqICIpfXJldHVybiByfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KHQsbil9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQodCxuKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGYoWyJhY2UiXSwiYWNlL21vZGUvamF2YXNjcmlwdF93b3JrZXIiLCJKYXZhU2NyaXB0V29ya2VyIik7cmV0dXJuIHQuYXR0YWNoVG9Eb2N1bWVudChlLmdldERvY3VtZW50KCkpLHQub24oImpzbGludCIsZnVuY3Rpb24odCl7dmFyIG49W107Zm9yKHZhciByPTA7cjx0LmRhdGEubGVuZ3RoO3IrKyl7dmFyIGk9dC5kYXRhW3JdO2kmJm4ucHVzaCh7cm93OmkubGluZS0xLGNvbHVtbjppLmNoYXJhY3Rlci0xLHRleHQ6aS5yZWFzb24sdHlwZToid2FybmluZyIsbGludDppfSl9ZS5zZXRBbm5vdGF0aW9ucyhuKX0pLHQub24oIm5hcmNpc3N1cyIsZnVuY3Rpb24odCl7ZS5zZXRBbm5vdGF0aW9ucyhbdC5kYXRhXSl9KSx0Lm9uKCJ0ZXJtaW5hdGUiLGZ1bmN0aW9uKCl7ZS5jbGVhckFubm90YXRpb25zKCl9KSx0fX0uY2FsbChoLnByb3RvdHlwZSksdC5Nb2RlPWh9KSxkZWZpbmUoImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvdW5pY29kZSIsImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2xpYi9sYW5nIikscz1lKCIuLi91bmljb2RlIiksbz1lKCIuL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIpLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcyx1PWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsYT1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgiQXJyYXl8Qm9vbGVhbnxEYXRlfEZ1bmN0aW9ufEl0ZXJhdG9yfE51bWJlcnxPYmplY3R8UmVnRXhwfFN0cmluZ3xQcm94eXxOYW1lc3BhY2V8UU5hbWV8WE1MfFhNTExpc3R8QXJyYXlCdWZmZXJ8RmxvYXQzMkFycmF5fEZsb2F0NjRBcnJheXxJbnQxNkFycmF5fEludDMyQXJyYXl8SW50OEFycmF5fFVpbnQxNkFycmF5fFVpbnQzMkFycmF5fFVpbnQ4QXJyYXl8VWludDhDbGFtcGVkQXJyYXl8RXJyb3J8RXZhbEVycm9yfEludGVybmFsRXJyb3J8UmFuZ2VFcnJvcnxSZWZlcmVuY2VFcnJvcnxTdG9wSXRlcmF0aW9ufFN5bnRheEVycm9yfFR5cGVFcnJvcnxVUklFcnJvcnxkZWNvZGVVUkl8ZGVjb2RlVVJJQ29tcG9uZW50fGVuY29kZVVSSXxlbmNvZGVVUklDb21wb25lbnR8ZXZhbHxpc0Zpbml0ZXxpc05hTnxwYXJzZUZsb2F0fHBhcnNlSW50fEpTT058TWF0aHx0aGlzfGFyZ3VtZW50c3xwcm90b3R5cGV8d2luZG93fGRvY3VtZW50Ii5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgiYnJlYWt8Y2FzZXxjYXRjaHxjb250aW51ZXxkZWZhdWx0fGRlbGV0ZXxkb3xlbHNlfGZpbmFsbHl8Zm9yfGZ1bmN0aW9ufGlmfGlufGluc3RhbmNlb2Z8bmV3fHJldHVybnxzd2l0Y2h8dGhyb3d8dHJ5fHR5cGVvZnxsZXR8dmFyfHdoaWxlfHdpdGh8Y29uc3R8eWllbGR8aW1wb3J0fGdldHxzZXQiLnNwbGl0KCJ8IikpLG49ImNhc2V8ZG98ZWxzZXxmaW5hbGx5fGlufGluc3RhbmNlb2Z8cmV0dXJufHRocm93fHRyeXx0eXBlb2Z8eWllbGQiLHI9aS5hcnJheVRvTWFwKCJfX3BhcmVudF9ffF9fY291bnRfX3xlc2NhcGV8dW5lc2NhcGV8d2l0aHxfX3Byb3RvX18iLnNwbGl0KCJ8IikpLHU9aS5hcnJheVRvTWFwKCJjb25zdHxsZXR8dmFyfGZ1bmN0aW9uIi5zcGxpdCgifCIpKSxhPWkuYXJyYXlUb01hcCgibnVsbHxJbmZpbml0eXxOYU58dW5kZWZpbmVkIi5zcGxpdCgifCIpKSxmPWkuYXJyYXlUb01hcCgiY2xhc3N8ZW51bXxleHRlbmRzfHN1cGVyfGV4cG9ydHxpbXBsZW1lbnRzfHByaXZhdGV8cHVibGljfGludGVyZmFjZXxwYWNrYWdlfHByb3RlY3RlZHxzdGF0aWMiLnNwbGl0KCJ8IikpLGw9IlsiK3MucGFja2FnZXMuTCsiXFwkX11bIitzLnBhY2thZ2VzLkwrcy5wYWNrYWdlcy5NbitzLnBhY2thZ2VzLk1jK3MucGFja2FnZXMuTmQrcy5wYWNrYWdlcy5QYysiXFwkX10qXFxiIixjPSJcXFxcKD86eFswLTlhLWZBLUZdezJ9fHVbMC05YS1mQS1GXXs0fXxbMC0yXVswLTddezAsMn18M1swLTZdWzAtN10/fDM3WzAtN10/fFs0LTddWzAtN10/fC4pIjt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6L1wvXC8uKiQvfSxvLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDovXC9cKi8sbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJyg/PS4pIixuZXh0OiJxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciKD89LiknLG5leHQ6InFxc3RyaW5nIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovMFt4WF1bMC05YS1mQS1GXStcYi99LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6L1srLV0/XGQrKD86KD86XC5cZCopPyg/OltlRV1bKy1dP1xkKyk/KT9cYi99LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFwuKShwcm90b3R5cGUpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Il0scmVnZXg6IigiK2wrIikoXFwuKShwcm90b3R5cGUpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXC4pKCIrbCsiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKykoXFx3KykoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwidGV4dCIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoZnVuY3Rpb24pKFxccyspKCIrbCsiKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFxzKikoOikoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInRleHQiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoOikoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuYm9vbGVhbiIscmVnZXg6Lyg/OnRydWV8ZmFsc2UpXGIvfSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiIoPzoiK24rIilcXGIiLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iXSxyZWdleDovKFwuKShzKD86aCg/OmlmdHxvdyg/Ok1vZCg/OmVsZXNzRGlhbG9nfGFsRGlhbG9nKXxIZWxwKSl8Y3JvbGwoPzpYfEJ5KD86UGFnZXN8TGluZXMpP3xZfFRvKT98dCg/Om9wenp6enxyaWtlKXxpKD86bnx6ZVRvQ29udGVudHxkZWJhcnxnblRleHQpfG9ydHx1KD86cHxiKD86c3RyKD86aW5nKT8pPyl8cGxpKD86Y2V8dCl8ZSg/Om5kfHQoPzpSZSg/OnNpemFibGV8cXVlc3RIZWFkZXIpfE0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIbyg/OnRLZXlzfHVycyl8WWVhcnxDdXJzb3J8VGltZSg/Om91dCk/fEludGVydmFsfFpPcHRpb25zfERhdGV8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhdGV8RnVsbFllYXIpfEZ1bGxZZWFyfEFjdGl2ZSl8YXJjaCl8cXJ0fGxpY2V8YXZlUHJlZmVyZW5jZXN8bWFsbCl8aCg/Om9tZXxhbmRsZUV2ZW50KXxuYXZpZ2F0ZXxjKD86aGFyKD86Q29kZUF0fEF0KXxvKD86c3xuKD86Y2F0fHRleHR1YWx8ZmlybSl8bXBpbGUpfGVpbHxsZWFyKD86VGltZW91dHxJbnRlcnZhbCk/fGEoPzpwdHVyZUV2ZW50c3xsbCl8cmVhdGUoPzpTdHlsZVNoZWV0fFBvcHVwfEV2ZW50T2JqZWN0KSl8dCg/Om8oPzpHTVRTdHJpbmd8Uyg/OnRyaW5nfG91cmNlKXxVKD86VENTdHJpbmd8cHBlckNhc2UpfExvKD86Y2FsZVN0cmluZ3x3ZXJDYXNlKSl8ZXN0fGEoPzpufGludCg/OkVuYWJsZWQpPykpfGkoPzpzKD86TmFOfEZpbml0ZSl8bmRleE9mfHRhbGljcyl8ZCg/OmlzYWJsZUV4dGVybmFsQ2FwdHVyZXx1bXB8ZXRhY2hFdmVudCl8dSg/Om4oPzpzaGlmdHx0YWludHxlc2NhcGV8d2F0Y2gpfHBkYXRlQ29tbWFuZHMpfGooPzpvaW58YXZhRW5hYmxlZCl8cCg/Om8oPzpwfHcpfHVzaHxsdWdpbnMucmVmcmVzaHxhKD86ZGRpbmdzfHJzZSg/OkludHxGbG9hdCk/KXxyKD86aW50fG9tcHR8ZWZlcmVuY2UpKXxlKD86c2NhcGV8bmFibGVFeHRlcm5hbENhcHR1cmV8dmFsfGxlbWVudEZyb21Qb2ludHx4KD86cHxlYyg/OlNjcmlwdHxDb21tYW5kKT8pKXx2YWx1ZU9mfFVUQ3xxdWVyeUNvbW1hbmQoPzpTdGF0ZXxJbmRldGVybXxFbmFibGVkfFZhbHVlKXxmKD86aSg/Om5kfGxlKD86TW9kaWZpZWREYXRlfFNpemV8Q3JlYXRlZERhdGV8VXBkYXRlZERhdGUpfHhlZCl8byg/Om50KD86c2l6ZXxjb2xvcil8cndhcmQpfGxvb3J8cm9tQ2hhckNvZGUpfHdhdGNofGwoPzppbmt8byg/OmFkfGcpfGFzdEluZGV4T2YpfGEoPzpzaW58bmNob3J8Y29zfHQoPzp0YWNoRXZlbnR8b2J8YW4oPzoyKT8pfHBwbHl8bGVydHxiKD86c3xvcnQpKXxyKD86b3UoPzpuZHx0ZUV2ZW50cyl8ZSg/OnNpemUoPzpCeXxUbyl8Y2FsY3x0dXJuVmFsdWV8cGxhY2V8dmVyc2V8bCg/Om9hZHxlYXNlKD86Q2FwdHVyZXxFdmVudHMpKSl8YW5kb20pfGcoPzpvfGV0KD86UmVzcG9uc2VIZWFkZXJ8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZSg/OmNvbmRzfGxlY3Rpb24pfEhvdXJzfFllYXJ8VGltZSg/OnpvbmVPZmZzZXQpP3xEYSg/Onl8dGUpfFVUQyg/Ok0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIb3Vyc3xEYSg/Onl8dGUpfEZ1bGxZZWFyKXxGdWxsWWVhcnxBKD86dHRlbnRpb258bGxSZXNwb25zZUhlYWRlcnMpKSl8bSg/OmlufG92ZSg/OkIoPzp5fGVsb3cpfFRvKD86QWJzb2x1dGUpP3xBYm92ZSl8ZXJnZUF0dHJpYnV0ZXN8YSg/OnRjaHxyZ2luc3x4KSl8Yig/OnRvYXxpZ3xvKD86bGR8cmRlcldpZHRocyl8bGlua3xhY2spKVxiKD89XCgpL30se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmRvbSJdLHJlZ2V4Oi8oXC4pKHMoPzp1Yig/OnN0cmluZ0RhdGF8bWl0KXxwbGl0VGV4dHxlKD86dCg/Ok5hbWVkSXRlbXxBdHRyaWJ1dGUoPzpOb2RlKT8pfGxlY3QpKXxoYXMoPzpDaGlsZE5vZGVzfEZlYXR1cmUpfG5hbWVkSXRlbXxjKD86bCg/Omlja3xvKD86c2V8bmVOb2RlKSl8cmVhdGUoPzpDKD86b21tZW50fERBVEFTZWN0aW9ufGFwdGlvbil8VCg/OkhlYWR8ZXh0Tm9kZXxGb290KXxEb2N1bWVudEZyYWdtZW50fFByb2Nlc3NpbmdJbnN0cnVjdGlvbnxFKD86bnRpdHlSZWZlcmVuY2V8bGVtZW50KXxBdHRyaWJ1dGUpKXx0YWJJbmRleHxpKD86bnNlcnQoPzpSb3d8QmVmb3JlfENlbGx8RGF0YSl8dGVtKXxvcGVufGRlbGV0ZSg/OlJvd3xDKD86ZWxsfGFwdGlvbil8VCg/OkhlYWR8Rm9vdCl8RGF0YSl8Zm9jdXN8d3JpdGUoPzpsbik/fGEoPzpkZHxwcGVuZCg/OkNoaWxkfERhdGEpKXxyZSg/OnNldHxwbGFjZSg/OkNoaWxkfERhdGEpfG1vdmUoPzpOYW1lZEl0ZW18Q2hpbGR8QXR0cmlidXRlKD86Tm9kZSk/KT8pfGdldCg/Ok5hbWVkSXRlbXxFbGVtZW50KD86c0J5KD86TmFtZXxUYWdOYW1lKXxCeUlkKXxBdHRyaWJ1dGUoPzpOb2RlKT8pfGJsdXIpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuY29uc3RhbnQiXSxyZWdleDovKFwuKShzKD86eXN0ZW1MYW5ndWFnZXxjcig/OmlwdHN8b2xsYmFyc3xlZW4oPzpYfFl8VG9wfExlZnQpKXx0KD86eWxlKD86U2hlZXRzKT98YXR1cyg/OlRleHR8YmFyKT8pfGlibGluZyg/OkJlbG93fEFib3ZlKXxvdXJjZXx1ZmZpeGVzfGUoPzpjdXJpdHkoPzpQb2xpY3kpP3xsKD86ZWN0aW9ufGYpKSl8aCg/OmlzdG9yeXxvc3QoPzpuYW1lKT98YXMoPzpofEZvY3VzKSl8eXxYKD86TUxEb2N1bWVudHxTTERvY3VtZW50KXxuKD86ZXh0fGFtZSg/OnNwYWNlKD86c3xVUkkpfFByb3ApKXxNKD86SU5fVkFMVUV8QVhfVkFMVUUpfGMoPzpoYXJhY3RlclNldHxvKD86big/OnN0cnVjdG9yfHRyb2xsZXJzKXxva2llRW5hYmxlZHxsb3JEZXB0aHxtcCg/Om9uZW50c3xsZXRlKSl8dXJyZW50fHB1Q2xhc3N8bCg/OmkoPzpwKD86Ym9hcmREYXRhKT98ZW50SW5mb3JtYXRpb24pfG9zZWR8YXNzZXMpfGFsbGUoPzplfHIpfHJ5cHRvKXx0KD86byg/Om9sYmFyfHApfGV4dCg/OlRyYW5zZm9ybXxJbmRlbnR8RGVjb3JhdGlvbnxBbGlnbil8YWdzKXxTUVJUKD86MV8yfDIpfGkoPzpuKD86bmVyKD86SGVpZ2h0fFdpZHRoKXxwdXQpfGRzfGdub3JlQ2FzZSl8ekluZGV4fG8oPzpzY3B1fG4oPzpyZWFkeXN0YXRlY2hhbmdlfExpbmUpfHV0ZXIoPzpIZWlnaHR8V2lkdGgpfHAoPzpzUHJvZmlsZXxlbmVyKXxmZnNjcmVlbkJ1ZmZlcmluZyl8TkVHQVRJVkVfSU5GSU5JVFl8ZCg/OmkoPzpzcGxheXxhbG9nKD86SGVpZ2h0fFRvcHxXaWR0aHxMZWZ0fEFyZ3VtZW50cyl8cmVjdG9yaWVzKXxlKD86c2NyaXB0aW9ufGZhdWx0KD86U3RhdHVzfENoKD86ZWNrZWR8YXJzZXQpfFZpZXcpKSl8dSg/OnNlcig/OlByb2ZpbGV8TGFuZ3VhZ2V8QWdlbnQpfG4oPzppcXVlSUR8ZGVmaW5lZCl8cGRhdGVJbnRlcnZhbCl8X2NvbnRlbnR8cCg/Oml4ZWxEZXB0aHxvcnR8ZXJzb25hbGJhcnxrY3MxMXxsKD86dWdpbnN8YXRmb3JtKXxhKD86dGhuYW1lfGRkaW5nKD86UmlnaHR8Qm90dG9tfFRvcHxMZWZ0KXxyZW50KD86V2luZG93fExheWVyKT98Z2UoPzpYKD86T2Zmc2V0KT98WSg/Ok9mZnNldCk/KSl8cig/Om8oPzp0byg/OmNvbHx0eXBlKXxkdWN0KD86U3ViKT98bXB0ZXIpfGUoPzp2aW91c3xmaXgpKSl8ZSg/Om4oPzpjb2Rpbmd8YWJsZWRQbHVnaW4pfHgoPzp0ZXJuYWx8cGFuZG8pfG1iZWRzKXx2KD86aXNpYmlsaXR5fGVuZG9yKD86U3ViKT98TGlua2NvbG9yKXxVUkxVbmVuY29kZWR8UCg/Okl8T1NJVElWRV9JTkZJTklUWSl8Zig/OmlsZW5hbWV8byg/Om50KD86U2l6ZXxGYW1pbHl8V2VpZ2h0KXxybU5hbWUpfHJhbWUoPzpzfEVsZW1lbnQpfGdDb2xvcil8RXx3aGl0ZVNwYWNlfGwoPzppKD86c3RTdHlsZVR5cGV8big/OmVIZWlnaHR8a0NvbG9yKSl8byg/OmNhKD86dGlvbig/OmJhcik/fGxOYW1lKXx3c3JjKXxlKD86bmd0aHxmdCg/OkNvbnRleHQpPyl8YSg/OnN0KD86TSg/Om9kaWZpZWR8YXRjaCl8SW5kZXh8UGFyZW4pfHllcig/OnN8WCl8bmd1YWdlKSl8YSg/OnBwKD86TWlub3JWZXJzaW9ufE5hbWV8Q28oPzpkZU5hbWV8cmUpfFZlcnNpb24pfHZhaWwoPzpIZWlnaHR8VG9wfFdpZHRofExlZnQpfGxsfHIoPzppdHl8Z3VtZW50cyl8TGlua2NvbG9yfGJvdmUpfHIoPzppZ2h0KD86Q29udGV4dCk/fGUoPzpzcG9uc2UoPzpYTUx8VGV4dCl8YWR5U3RhdGUpKXxnbG9iYWx8eHxtKD86aW1lVHlwZXN8dWx0aWxpbmV8ZW51YmFyfGFyZ2luKD86UmlnaHR8Qm90dG9tfFRvcHxMZWZ0KSl8TCg/Ok4oPzoxMHwyKXxPRyg/OjEwRXwyRSkpfGIoPzpvKD86dHRvbXxyZGVyKD86V2lkdGh8UmlnaHRXaWR0aHxCb3R0b21XaWR0aHxTdHlsZXxDb2xvcnxUb3BXaWR0aHxMZWZ0V2lkdGgpKXx1ZmZlckRlcHRofGVsb3d8YWNrZ3JvdW5kKD86Q29sb3J8SW1hZ2UpKSlcYi99LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbi5maXJlYnVnIl0scmVnZXg6Lyhjb25zb2xlKShcLikod2FybnxpbmZvfGxvZ3xlcnJvcnx0aW1lfHRpbWVFbmR8YXNzZXJ0KVxiL30se3Rva2VuOmZ1bmN0aW9uKG4pe3JldHVybiBlLmhhc093blByb3BlcnR5KG4pPyJ2YXJpYWJsZS5sYW5ndWFnZSI6ci5oYXNPd25Qcm9wZXJ0eShuKT8iaW52YWxpZC5kZXByZWNhdGVkIjp1Lmhhc093blByb3BlcnR5KG4pPyJzdG9yYWdlLnR5cGUiOnQuaGFzT3duUHJvcGVydHkobik/ImtleXdvcmQiOmEuaGFzT3duUHJvcGVydHkobik/ImNvbnN0YW50Lmxhbmd1YWdlIjpmLmhhc093blByb3BlcnR5KG4pPyJpbnZhbGlkLmlsbGVnYWwiOm49PSJkZWJ1Z2dlciI/ImludmFsaWQuZGVwcmVjYXRlZCI6ImlkZW50aWZpZXIifSxyZWdleDpsfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4Oi8hfFwkfCV8JnxcKnxcLVwtfFwtfFwrXCt8XCt8fnw9PT18PT18PXwhPXwhPT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFx8XHx8XD9cOnxcKj18JT18XCs9fFwtPXwmPXxcXj18XGIoPzppbnxpbnN0YW5jZW9mfG5ld3xkZWxldGV8dHlwZW9mfHZvaWQpLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6L1w/fFw6fFwsfFw7fFwuLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4Oi9bXFsoe10vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6L1tcXSl9XS99LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6L1wvPT8vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4Oi9eIyEuKiQvfSx7dG9rZW46InRleHQiLHJlZ2V4Oi9ccysvfV0scmVnZXhfYWxsb3dlZDpbby5nZXRTdGFydFJ1bGUoImRvYy1zdGFydCIpLHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoiY29tbWVudF9yZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiokIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiXFwvIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleDpbe3Rva2VuOiJyZWdleHAua2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcXFwoPzp1W1xcZGEtZkEtRl17NH18eFtcXGRhLWZBLUZdezJ9fC4pIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiL1xcdyoiLG5leHQ6InN0YXJ0IixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiW15cXFxcL1xcW10rIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6IlxcWyIsbmV4dDoicmVnZXhfY2hhcmFjdGVyX2NsYXNzIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0scmVnZXhfY2hhcmFjdGVyX2NsYXNzOlt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXSIsbmV4dDoicmVnZXgiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiW15cXFxcXFxdXSsiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxmdW5jdGlvbl9hcmd1bWVudHM6W3t0b2tlbjoidmFyaWFibGUucGFyYW1ldGVyIixyZWdleDpsfSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDoiWywgXSsiLG1lcmdlOiEwfSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDoiJCIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGNvbW1lbnRfcmVnZXhfYWxsb3dlZDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixtZXJnZTohMCxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixtZXJnZTohMCxuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFxc3RyaW5nOlt7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmVzY2FwZSIscmVnZXg6Y30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbXiJcXFxcXSsnLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlxcXFwkIixuZXh0OiJxcXN0cmluZyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDonInwkJyxuZXh0OiJzdGFydCIsbWVyZ2U6ITB9XSxxc3RyaW5nOlt7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmVzY2FwZSIscmVnZXg6Y30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbXidcXFxcXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlxcXFwkIixuZXh0OiJxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInfCQiLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dfSx0aGlzLmVtYmVkUnVsZXMobywiZG9jLSIsW28uZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtyLmluaGVyaXRzKGEsdSksdC5KYXZhU2NyaXB0SGlnaGxpZ2h0UnVsZXM9YX0pLGRlZmluZSgiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLHM9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudC5kb2MudGFnIixyZWdleDoiQFtcXHdcXGRfXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJUT0RPIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlteQFxcKl0rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6Ii4ifV19fTtyLmluaGVyaXRzKHMsaSkscy5nZXRTdGFydFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKig/PVxcKikiLG5leHQ6ZX19LHMuZ2V0RW5kUnVsZT1mdW5jdGlvbihlKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwqXFwvIixuZXh0OmV9fSx0LkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcz1zfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXlxzKyQvLnRlc3QoZSk/L15ccypcfS8udGVzdCh0KTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0TGluZSh0KSxpPW4ubWF0Y2goL14oXHMqXH0pLyk7aWYoIWkpcmV0dXJuIDA7dmFyIHM9aVsxXS5sZW5ndGgsbz1lLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp0LGNvbHVtbjpzfSk7aWYoIW98fG8ucm93PT10KXJldHVybiAwO3ZhciB1PXRoaXMuJGdldEluZGVudChlLmdldExpbmUoby5yb3cpKTtlLnJlcGxhY2UobmV3IHIodCwwLHQscy0xKSx1KX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14oXHMrKS8pO3JldHVybiB0P3RbMV06IiJ9fSkuY2FsbChpLnByb3RvdHlwZSksdC5NYXRjaGluZ0JyYWNlT3V0ZGVudD1pfSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vYmVoYXZpb3VyIikuQmVoYXZpb3VyLHM9ZnVuY3Rpb24oKXt0aGlzLmFkZCgiYnJhY2VzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSJ7Iil7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO3JldHVybiBvIT09IiI/e3RleHQ6InsiK28rIn0iLHNlbGVjdGlvbjohMX06e3RleHQ6Int9IixzZWxlY3Rpb246WzEsMV19fWlmKGk9PSJ9Iil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0ifSIpe3ZhciBsPXIuJGZpbmRPcGVuaW5nQnJhY2tldCgifSIse2NvbHVtbjp1LmNvbHVtbisxLHJvdzp1LnJvd30pO2lmKGwhPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fWVsc2UgaWYoaT09IlxuIil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0ifSIpe3ZhciBjPXIuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnUucm93LGNvbHVtbjp1LmNvbHVtbisxfSk7aWYoIWMpcmV0dXJuIG51bGw7dmFyIGg9dGhpcy5nZXROZXh0TGluZUluZGVudChlLGEuc3Vic3RyaW5nKDAsYS5sZW5ndGgtMSksci5nZXRUYWJTdHJpbmcoKSkscD10aGlzLiRnZXRJbmRlbnQoci5kb2MuZ2V0TGluZShjLnJvdykpO3JldHVybnt0ZXh0OiJcbiIraCsiXG4iK3Asc2VsZWN0aW9uOlsxLGgubGVuZ3RoLDEsaC5sZW5ndGhdfX19fSksdGhpcy5hZGQoImJyYWNlcyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiZzPT0ieyIpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5lbmQuY29sdW1uLGkuZW5kLmNvbHVtbisxKTtpZih1PT0ifSIpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSksdGhpcy5hZGQoInBhcmVucyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iKCIpe3ZhciBzPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSxvPXIuZG9jLmdldFRleHRSYW5nZShzKTtyZXR1cm4gbyE9PSIiP3t0ZXh0OiIoIitvKyIpIixzZWxlY3Rpb246ITF9Ont0ZXh0OiIoKSIsc2VsZWN0aW9uOlsxLDFdfX1pZihpPT0iKSIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09IikiKXt2YXIgbD1yLiRmaW5kT3BlbmluZ0JyYWNrZXQoIikiLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihsIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgicGFyZW5zIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSIoIil7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLnN0YXJ0LmNvbHVtbisxLGkuc3RhcnQuY29sdW1uKzIpO2lmKHU9PSIpIilyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09JyInfHxpPT0iJyIpe3ZhciBzPWksbz1uLmdldFNlbGVjdGlvblJhbmdlKCksdT1yLmRvYy5nZXRUZXh0UmFuZ2Uobyk7aWYodSE9PSIiKXJldHVybnt0ZXh0OnMrdStzLHNlbGVjdGlvbjohMX07dmFyIGE9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGY9ci5kb2MuZ2V0TGluZShhLnJvdyksbD1mLnN1YnN0cmluZyhhLmNvbHVtbi0xLGEuY29sdW1uKTtpZihsPT0iXFwiKXJldHVybiBudWxsO3ZhciBjPXIuZ2V0VG9rZW5zKG8uc3RhcnQucm93KSxoPTAscCxkPS0xO2Zvcih2YXIgdj0wO3Y8Yy5sZW5ndGg7disrKXtwPWNbdl0scC50eXBlPT0ic3RyaW5nIj9kPS0xOmQ8MCYmKGQ9cC52YWx1ZS5pbmRleE9mKHMpKTtpZihwLnZhbHVlLmxlbmd0aCtoPm8uc3RhcnQuY29sdW1uKWJyZWFrO2grPWNbdl0udmFsdWUubGVuZ3RofWlmKCFwfHxkPDAmJnAudHlwZSE9PSJjb21tZW50IiYmKHAudHlwZSE9PSJzdHJpbmcifHxvLnN0YXJ0LmNvbHVtbiE9PXAudmFsdWUubGVuZ3RoK2gtMSYmcC52YWx1ZS5sYXN0SW5kZXhPZihzKT09PXAudmFsdWUubGVuZ3RoLTEpKXJldHVybnt0ZXh0OnMrcyxzZWxlY3Rpb246WzEsMV19O2lmKHAmJnAudHlwZT09PSJzdHJpbmciKXt2YXIgbT1mLnN1YnN0cmluZyhhLmNvbHVtbixhLmNvbHVtbisxKTtpZihtPT1zKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiYocz09JyInfHxzPT0iJyIpKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09JyInKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pfTtyLmluaGVyaXRzKHMsaSksdC5Dc3R5bGVCZWhhdmlvdXI9c30pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2Uscz1lKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLG89dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307ci5pbmhlcml0cyhvLHMpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9Lyhce3xcWylbXlx9XF1dKiR8XlxzKihcL1wqKS8sdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj0vXlteXFtce10qKFx9fFxdKXxeW1xzXCpdKihcKlwvKS8sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKSxzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXg7aWYoc1sxXSlyZXR1cm4gdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrKGUsc1sxXSxuLG8pO3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8rc1swXS5sZW5ndGgpO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX1pZih0IT09Im1hcmtiZWdpbmVuZCIpcmV0dXJuO3ZhciBzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RvcE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleCtzWzBdLmxlbmd0aDtpZihzWzJdKXt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9dmFyIGE9e3JvdzpuLGNvbHVtbjpvfSxmPWUuJGZpbmRPcGVuaW5nQnJhY2tldChzWzFdLGEpO2lmKCFmKXJldHVybjtyZXR1cm4gZi5jb2x1bW4rKyxhLmNvbHVtbi0tLGkuZnJvbVBvaW50cyhmLGEpfX19LmNhbGwoby5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGk9dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobik7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3Qocik/InN0YXJ0Ijp0PT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KHIpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihlLHQsbil7dmFyIGk9L1xTLyxzPWUuZ2V0TGluZSh0KSxvPXMuc2VhcmNoKGkpO2lmKG89PS0xKXJldHVybjt2YXIgdT1ufHxzLmxlbmd0aCxhPWUuZ2V0TGVuZ3RoKCksZj10LGw9dDt3aGlsZSgrK3Q8YSl7dmFyIGM9ZS5nZXRMaW5lKHQpLnNlYXJjaChpKTtpZihjPT0tMSljb250aW51ZTtpZihjPD1vKWJyZWFrO2w9dH1pZihsPmYpe3ZhciBoPWUuZ2V0TGluZShsKS5sZW5ndGg7cmV0dXJuIG5ldyByKGYsdSxsLGgpfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGUsdCxuLGkscyl7dmFyIG89e3JvdzpuLGNvbHVtbjppKzF9LHU9ZS4kZmluZENsb3NpbmdCcmFja2V0KHQsbyxzKTtpZighdSlyZXR1cm47dmFyIGE9ZS5mb2xkV2lkZ2V0c1t1LnJvd107cmV0dXJuIGE9PW51bGwmJihhPXRoaXMuZ2V0Rm9sZFdpZGdldChlLHUucm93KSksYT09InN0YXJ0IiYmdS5yb3c+by5yb3cmJih1LnJvdy0tLHUuY29sdW1uPWUuZ2V0TGluZSh1LnJvdykubGVuZ3RoKSxyLmZyb21Qb2ludHMobyx1KX19KS5jYWxsKGkucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUveG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3htbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9iZWhhdmlvdXIveG1sIiwiYWNlL21vZGUvZm9sZGluZy94bWwiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4veG1sX2hpZ2hsaWdodF9ydWxlcyIpLlhtbEhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9iZWhhdmlvdXIveG1sIikuWG1sQmVoYXZpb3VyLGE9ZSgiLi9mb2xkaW5nL3htbCIpLkZvbGRNb2RlLGY9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLiRiZWhhdmlvdXI9bmV3IHUsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGF9O3IuaW5oZXJpdHMoZixpKSxmdW5jdGlvbigpe3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRnZXRJbmRlbnQodCl9fS5jYWxsKGYucHJvdG90eXBlKSx0Lk1vZGU9Zn0pLGRlZmluZSgiYWNlL21vZGUveG1sX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUveG1sX3V0aWwiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3htbF91dGlsIikscz1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLG89ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidGV4dCIscmVnZXg6IjxcXCFcXFtDREFUQVxcWyIsbmV4dDoiY2RhdGEifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXD8uKj9cXD8+In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiPFxcIS0tIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJ4bWxfcGUiLHJlZ2V4OiI8XFwhLio/PiJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvPyIsbmV4dDoidGFnIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29uc3RhbnQuY2hhcmFjdGVyLmVudGl0eSIscmVnZXg6Iig/OiYjWzAtOV0rOyl8KD86JiN4WzAtOWEtZkEtRl0rOyl8KD86JlthLXpBLVowLTlfOlxcLi1dKzspIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiW148XSsifV0sY2RhdGE6W3t0b2tlbjoidGV4dCIscmVnZXg6IlxcXVxcXT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6Iig/OlteXFxdXXxcXF0oPyFcXF0+KSkrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qPy0tPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0saS50YWcodGhpcy4kcnVsZXMsInRhZyIsInN0YXJ0Iil9O3IuaW5oZXJpdHMobyxzKSx0LlhtbEhpZ2hsaWdodFJ1bGVzPW99KSxkZWZpbmUoImFjZS9tb2RlL3htbF91dGlsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuW3t0b2tlbjoic3RyaW5nIixyZWdleDonIi4qPyInfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6J1siXS4qJyxuZXh0OmUrIl9xcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4qPycifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IlsnXS4qIixuZXh0OmUrIl9xc3RyaW5nIn1dfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm5be3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKj8iK2UsbmV4dDp0fSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfXQudGFnPWZ1bmN0aW9uKGUsdCxuLHMpe2VbdF09W3t0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46ZnVuY3Rpb24oZSl7cmV0dXJuIHMmJnNbZV0/Im1ldGEudGFnLnRhZy1uYW1lLiIrc1tlXToibWV0YS50YWcudGFnLW5hbWUifSxtZXJnZTohMCxyZWdleDoiWy1fYS16QS1aMC05Ol0rIixuZXh0OnQrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6dCsiX2VtYmVkX2F0dHJpYnV0ZV9saXN0In1dLGVbdCsiX3FzdHJpbmciXT1pKCInIix0KyJfZW1iZWRfYXR0cmlidXRlX2xpc3QiKSxlW3QrIl9xcXN0cmluZyJdPWkoJyInLHQrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCIpLGVbdCsiX2VtYmVkX2F0dHJpYnV0ZV9saXN0Il09W3t0b2tlbjoibWV0YS50YWciLG1lcmdlOiEwLHJlZ2V4OiIvPz4iLG5leHQ6bn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiPSJ9LHt0b2tlbjoiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lIixyZWdleDoiWy1fYS16QS1aMC05Ol0rIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLmNvbmNhdChyKHQpKX19KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci94bWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvdG9rZW5faXRlcmF0b3IiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gdShlLHQpe3ZhciBuPSEwLHI9ZS50eXBlLnNwbGl0KCIuIiksaT10LnNwbGl0KCIuIik7cmV0dXJuIGkuZm9yRWFjaChmdW5jdGlvbihlKXtpZihyLmluZGV4T2YoZSk9PS0xKXJldHVybiBuPSExLCExfSksbn12YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIscz1lKCIuL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixvPWUoIi4uLy4uL3Rva2VuX2l0ZXJhdG9yIikuVG9rZW5JdGVyYXRvcixhPWZ1bmN0aW9uKCl7dGhpcy5pbmhlcml0KHMsWyJzdHJpbmdfZHF1b3RlcyJdKSx0aGlzLmFkZCgiYXV0b2Nsb3NpbmciLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09Ij4iKXt2YXIgcz1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1uZXcgbyhyLHMucm93LHMuY29sdW1uKSxmPWEuZ2V0Q3VycmVudFRva2VuKCksbD0hMTtpZighZnx8IXUoZiwibWV0YS50YWciKSYmKCF1KGYsInRleHQiKXx8IWYudmFsdWUubWF0Y2goIi8iKSkpe2RvIGY9YS5zdGVwQmFja3dhcmQoKTt3aGlsZShmJiYodShmLCJzdHJpbmciKXx8dShmLCJrZXl3b3JkLm9wZXJhdG9yIil8fHUoZiwiZW50aXR5LmF0dHJpYnV0ZS1uYW1lIil8fHUoZiwidGV4dCIpKSl9ZWxzZSBsPSEwO2lmKCFmfHwhdShmLCJtZXRhLnRhZy1uYW1lIil8fGEuc3RlcEJhY2t3YXJkKCkudmFsdWUubWF0Y2goIi8iKSlyZXR1cm47dmFyIGM9Zi52YWx1ZTtpZihsKXZhciBjPWMuc3Vic3RyaW5nKDAscy5jb2x1bW4tZi5zdGFydCk7cmV0dXJue3RleHQ6Ij48LyIrYysiPiIsc2VsZWN0aW9uOlsxLDFdfX19KSx0aGlzLmFkZCgiYXV0b2luZGVudCIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iXG4iKXt2YXIgcz1uLmdldEN1cnNvclBvc2l0aW9uKCksbz1yLmRvYy5nZXRMaW5lKHMucm93KSx1PW8uc3Vic3RyaW5nKHMuY29sdW1uLHMuY29sdW1uKzIpO2lmKHU9PSI8LyIpe3ZhciBhPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKHMucm93KSkrci5nZXRUYWJTdHJpbmcoKSxmPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKHMucm93KSk7cmV0dXJue3RleHQ6IlxuIithKyJcbiIrZixzZWxlY3Rpb246WzEsYS5sZW5ndGgsMSxhLmxlbmd0aF19fX19KX07ci5pbmhlcml0cyhhLGkpLHQuWG1sQmVoYXZpb3VyPWF9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcveG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsImFjZS90b2tlbl9pdGVyYXRvciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi8uLi9saWIvbGFuZyIpLHM9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxvPWUoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsdT1lKCIuLi8uLi90b2tlbl9pdGVyYXRvciIpLlRva2VuSXRlcmF0b3IsYT10LkZvbGRNb2RlPWZ1bmN0aW9uKGUpe28uY2FsbCh0aGlzKSx0aGlzLnZvaWRFbGVtZW50cz1lfHx7fX07ci5pbmhlcml0cyhhLG8pLGZ1bmN0aW9uKCl7dGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9nZXRGaXJzdFRhZ0luTGluZShlLG4pO3JldHVybiByLmNsb3Npbmc/dD09Im1hcmtiZWdpbmVuZCI/ImVuZCI6IiI6IXIudGFnTmFtZXx8dGhpcy52b2lkRWxlbWVudHNbci50YWdOYW1lLnRvTG93ZXJDYXNlKCldPyIiOnIuc2VsZkNsb3Npbmc/IiI6ci52YWx1ZS5pbmRleE9mKCIvIityLnRhZ05hbWUpIT09LTE/IiI6InN0YXJ0In0sdGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldFRva2Vucyh0KSxyPSIiO2Zvcih2YXIgcz0wO3M8bi5sZW5ndGg7cysrKXt2YXIgbz1uW3NdO28udHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MD9yKz1vLnZhbHVlOnIrPWkuc3RyaW5nUmVwZWF0KCIgIixvLnZhbHVlLmxlbmd0aCl9cmV0dXJuIHRoaXMuX3BhcnNlVGFnKHIpfSx0aGlzLnRhZ1JlPS9eKFxzKikoPD8oXC8/KShbLV9hLXpBLVowLTk6IV0qKVxzKihcLz8pPj8pLyx0aGlzLl9wYXJzZVRhZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnRhZ1JlLmV4ZWMoZSksbj10aGlzLnRhZ1JlLmxhc3RJbmRleHx8MDtyZXR1cm4gdGhpcy50YWdSZS5sYXN0SW5kZXg9MCx7dmFsdWU6ZSxtYXRjaDp0P3RbMl06IiIsY2xvc2luZzp0PyEhdFszXTohMSxzZWxmQ2xvc2luZzp0PyEhdFs1XXx8dFsyXT09Ii8+IjohMSx0YWdOYW1lOnQ/dFs0XToiIixjb2x1bW46dFsxXT9uK3RbMV0ubGVuZ3RoOm59fSx0aGlzLl9yZWFkVGFnRm9yd2FyZD1mdW5jdGlvbihlKXt2YXIgdD1lLmdldEN1cnJlbnRUb2tlbigpO2lmKCF0KXJldHVybiBudWxsO3ZhciBuPSIiLHI7ZG8gaWYodC50eXBlLmluZGV4T2YoIm1ldGEudGFnIik9PT0wKXtpZighcil2YXIgcj17cm93OmUuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmUuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCl9O24rPXQudmFsdWU7aWYobi5pbmRleE9mKCI+IikhPT0tMSl7dmFyIGk9dGhpcy5fcGFyc2VUYWcobik7cmV0dXJuIGkuc3RhcnQ9cixpLmVuZD17cm93OmUuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmUuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCkrdC52YWx1ZS5sZW5ndGh9LGUuc3RlcEZvcndhcmQoKSxpfX13aGlsZSh0PWUuc3RlcEZvcndhcmQoKSk7cmV0dXJuIG51bGx9LHRoaXMuX3JlYWRUYWdCYWNrd2FyZD1mdW5jdGlvbihlKXt2YXIgdD1lLmdldEN1cnJlbnRUb2tlbigpO2lmKCF0KXJldHVybiBudWxsO3ZhciBuPSIiLHI7ZG8gaWYodC50eXBlLmluZGV4T2YoIm1ldGEudGFnIik9PT0wKXtyfHwocj17cm93OmUuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmUuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCkrdC52YWx1ZS5sZW5ndGh9KSxuPXQudmFsdWUrbjtpZihuLmluZGV4T2YoIjwiKSE9PS0xKXt2YXIgaT10aGlzLl9wYXJzZVRhZyhuKTtyZXR1cm4gaS5lbmQ9cixpLnN0YXJ0PXtyb3c6ZS5nZXRDdXJyZW50VG9rZW5Sb3coKSxjb2x1bW46ZS5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKX0sZS5zdGVwQmFja3dhcmQoKSxpfX13aGlsZSh0PWUuc3RlcEJhY2t3YXJkKCkpO3JldHVybiBudWxsfSx0aGlzLl9wb3A9ZnVuY3Rpb24oZSx0KXt3aGlsZShlLmxlbmd0aCl7dmFyIG49ZVtlLmxlbmd0aC0xXTtpZighdHx8bi50YWdOYW1lPT10LnRhZ05hbWUpcmV0dXJuIGUucG9wKCk7aWYodGhpcy52b2lkRWxlbWVudHNbdC50YWdOYW1lXSlyZXR1cm47aWYodGhpcy52b2lkRWxlbWVudHNbbi50YWdOYW1lXSl7ZS5wb3AoKTtjb250aW51ZX1yZXR1cm4gbnVsbH19LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9nZXRGaXJzdFRhZ0luTGluZShlLG4pO2lmKCFyLm1hdGNoKXJldHVybiBudWxsO3ZhciBpPXIuY2xvc2luZ3x8ci5zZWxmQ2xvc2luZyxvPVtdLGE7aWYoIWkpe3ZhciBmPW5ldyB1KGUsbixyLmNvbHVtbiksbD17cm93Om4sY29sdW1uOnIuY29sdW1uK3IudGFnTmFtZS5sZW5ndGgrMn07d2hpbGUoYT10aGlzLl9yZWFkVGFnRm9yd2FyZChmKSl7aWYoYS5zZWxmQ2xvc2luZyl7aWYoIW8ubGVuZ3RoKXJldHVybiBhLnN0YXJ0LmNvbHVtbis9YS50YWdOYW1lLmxlbmd0aCsyLGEuZW5kLmNvbHVtbi09MixzLmZyb21Qb2ludHMoYS5zdGFydCxhLmVuZCk7Y29udGludWV9aWYoYS5jbG9zaW5nKXt0aGlzLl9wb3AobyxhKTtpZihvLmxlbmd0aD09MClyZXR1cm4gcy5mcm9tUG9pbnRzKGwsYS5zdGFydCl9ZWxzZSBvLnB1c2goYSl9fWVsc2V7dmFyIGY9bmV3IHUoZSxuLHIuY29sdW1uK3IubWF0Y2gubGVuZ3RoKSxjPXtyb3c6bixjb2x1bW46ci5jb2x1bW59O3doaWxlKGE9dGhpcy5fcmVhZFRhZ0JhY2t3YXJkKGYpKXtpZihhLnNlbGZDbG9zaW5nKXtpZighby5sZW5ndGgpcmV0dXJuIGEuc3RhcnQuY29sdW1uKz1hLnRhZ05hbWUubGVuZ3RoKzIsYS5lbmQuY29sdW1uLT0yLHMuZnJvbVBvaW50cyhhLnN0YXJ0LGEuZW5kKTtjb250aW51ZX1pZighYS5jbG9zaW5nKXt0aGlzLl9wb3AobyxhKTtpZihvLmxlbmd0aD09MClyZXR1cm4gYS5zdGFydC5jb2x1bW4rPWEudGFnTmFtZS5sZW5ndGgrMixzLmZyb21Qb2ludHMoYS5zdGFydCxjKX1lbHNlIG8ucHVzaChhKX19fX0uY2FsbChhLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2h0bWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvbW9kZS9qYXZhc2NyaXB0IiwiYWNlL21vZGUvY3NzIiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2h0bWxfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvYmVoYXZpb3VyL2h0bWwiLCJhY2UvbW9kZS9mb2xkaW5nL2h0bWwiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4vamF2YXNjcmlwdCIpLk1vZGUsbz1lKCIuL2NzcyIpLk1vZGUsdT1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsYT1lKCIuL2h0bWxfaGlnaGxpZ2h0X3J1bGVzIikuSHRtbEhpZ2hsaWdodFJ1bGVzLGY9ZSgiLi9iZWhhdmlvdXIvaHRtbCIpLkh0bWxCZWhhdmlvdXIsbD1lKCIuL2ZvbGRpbmcvaHRtbCIpLkZvbGRNb2RlLGM9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgYTt0aGlzLiR0b2tlbml6ZXI9bmV3IHUoZS5nZXRSdWxlcygpKSx0aGlzLiRiZWhhdmlvdXI9bmV3IGYsdGhpcy4kZW1iZWRzPWUuZ2V0RW1iZWRzKCksdGhpcy5jcmVhdGVNb2RlRGVsZWdhdGVzKHsianMtIjpzLCJjc3MtIjpvfSksdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGx9O3IuaW5oZXJpdHMoYyxpKSxmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiAwfSx0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy4kZ2V0SW5kZW50KHQpfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuITF9fS5jYWxsKGMucHJvdG90eXBlKSx0Lk1vZGU9Y30pLGRlZmluZSgiYWNlL21vZGUvY3NzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2Nzc19oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IiwiYWNlL3dvcmtlci93b3JrZXJfY2xpZW50IiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4vY3NzX2hpZ2hsaWdodF9ydWxlcyIpLkNzc0hpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsYT1lKCIuLi93b3JrZXIvd29ya2VyX2NsaWVudCIpLldvcmtlckNsaWVudCxmPWUoIi4vZm9sZGluZy9jc3R5bGUiKS5Gb2xkTW9kZSxsPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBzKChuZXcgbykuZ2V0UnVsZXMoKSwiaSIpLHRoaXMuJG91dGRlbnQ9bmV3IHUsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGZ9O3IuaW5oZXJpdHMobCxpKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1J1bGVzPSJjU3R5bGUiLHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJGdldEluZGVudCh0KSxpPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKHQsZSkudG9rZW5zO2lmKGkubGVuZ3RoJiZpW2kubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gcjt2YXIgcz10Lm1hdGNoKC9eLipce1xzKiQvKTtyZXR1cm4gcyYmKHIrPW4pLHJ9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQodCxuKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudCh0LG4pfSx0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihlKXt2YXIgdD1uZXcgYShbImFjZSJdLCJhY2UvbW9kZS9jc3Nfd29ya2VyIiwiV29ya2VyIik7cmV0dXJuIHQuYXR0YWNoVG9Eb2N1bWVudChlLmdldERvY3VtZW50KCkpLHQub24oImNzc2xpbnQiLGZ1bmN0aW9uKHQpe3ZhciBuPVtdO3QuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGUpe24ucHVzaCh7cm93OmUubGluZS0xLGNvbHVtbjplLmNvbC0xLHRleHQ6ZS5tZXNzYWdlLHR5cGU6ZS50eXBlLGxpbnQ6ZX0pfSksZS5zZXRBbm5vdGF0aW9ucyhuKX0pLHR9fS5jYWxsKGwucHJvdG90eXBlKSx0Lk1vZGU9bH0pLGRlZmluZSgiYWNlL21vZGUvY3NzX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsbz1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgiYW5pbWF0aW9uLWZpbGwtbW9kZXxhbGlnbm1lbnQtYWRqdXN0fGFsaWdubWVudC1iYXNlbGluZXxhbmltYXRpb24tZGVsYXl8YW5pbWF0aW9uLWRpcmVjdGlvbnxhbmltYXRpb24tZHVyYXRpb258YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudHxhbmltYXRpb24tbmFtZXxhbmltYXRpb24tcGxheS1zdGF0ZXxhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9ufGFuaW1hdGlvbnxhcHBlYXJhbmNlfGF6aW11dGh8YmFja2ZhY2UtdmlzaWJpbGl0eXxiYWNrZ3JvdW5kLWF0dGFjaG1lbnR8YmFja2dyb3VuZC1icmVha3xiYWNrZ3JvdW5kLWNsaXB8YmFja2dyb3VuZC1jb2xvcnxiYWNrZ3JvdW5kLWltYWdlfGJhY2tncm91bmQtb3JpZ2lufGJhY2tncm91bmQtcG9zaXRpb258YmFja2dyb3VuZC1yZXBlYXR8YmFja2dyb3VuZC1zaXplfGJhY2tncm91bmR8YmFzZWxpbmUtc2hpZnR8YmluZGluZ3xibGVlZHxib29rbWFyay1sYWJlbHxib29rbWFyay1sZXZlbHxib29rbWFyay1zdGF0ZXxib29rbWFyay10YXJnZXR8Ym9yZGVyLWJvdHRvbXxib3JkZXItYm90dG9tLWNvbG9yfGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXN8Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXN8Ym9yZGVyLWJvdHRvbS1zdHlsZXxib3JkZXItYm90dG9tLXdpZHRofGJvcmRlci1jb2xsYXBzZXxib3JkZXItY29sb3J8Ym9yZGVyLWltYWdlfGJvcmRlci1pbWFnZS1vdXRzZXR8Ym9yZGVyLWltYWdlLXJlcGVhdHxib3JkZXItaW1hZ2Utc2xpY2V8Ym9yZGVyLWltYWdlLXNvdXJjZXxib3JkZXItaW1hZ2Utd2lkdGh8Ym9yZGVyLWxlZnR8Ym9yZGVyLWxlZnQtY29sb3J8Ym9yZGVyLWxlZnQtc3R5bGV8Ym9yZGVyLWxlZnQtd2lkdGh8Ym9yZGVyLXJhZGl1c3xib3JkZXItcmlnaHR8Ym9yZGVyLXJpZ2h0LWNvbG9yfGJvcmRlci1yaWdodC1zdHlsZXxib3JkZXItcmlnaHQtd2lkdGh8Ym9yZGVyLXNwYWNpbmd8Ym9yZGVyLXN0eWxlfGJvcmRlci10b3B8Ym9yZGVyLXRvcC1jb2xvcnxib3JkZXItdG9wLWxlZnQtcmFkaXVzfGJvcmRlci10b3AtcmlnaHQtcmFkaXVzfGJvcmRlci10b3Atc3R5bGV8Ym9yZGVyLXRvcC13aWR0aHxib3JkZXItd2lkdGh8Ym9yZGVyfGJvdHRvbXxib3gtYWxpZ258Ym94LWRlY29yYXRpb24tYnJlYWt8Ym94LWRpcmVjdGlvbnxib3gtZmxleC1ncm91cHxib3gtZmxleHxib3gtbGluZXN8Ym94LW9yZGluYWwtZ3JvdXB8Ym94LW9yaWVudHxib3gtcGFja3xib3gtc2hhZG93fGJveC1zaXppbmd8YnJlYWstYWZ0ZXJ8YnJlYWstYmVmb3JlfGJyZWFrLWluc2lkZXxjYXB0aW9uLXNpZGV8Y2xlYXJ8Y2xpcHxjb2xvci1wcm9maWxlfGNvbG9yfGNvbHVtbi1jb3VudHxjb2x1bW4tZmlsbHxjb2x1bW4tZ2FwfGNvbHVtbi1ydWxlfGNvbHVtbi1ydWxlLWNvbG9yfGNvbHVtbi1ydWxlLXN0eWxlfGNvbHVtbi1ydWxlLXdpZHRofGNvbHVtbi1zcGFufGNvbHVtbi13aWR0aHxjb2x1bW5zfGNvbnRlbnR8Y291bnRlci1pbmNyZW1lbnR8Y291bnRlci1yZXNldHxjcm9wfGN1ZS1hZnRlcnxjdWUtYmVmb3JlfGN1ZXxjdXJzb3J8ZGlyZWN0aW9ufGRpc3BsYXl8ZG9taW5hbnQtYmFzZWxpbmV8ZHJvcC1pbml0aWFsLWFmdGVyLWFkanVzdHxkcm9wLWluaXRpYWwtYWZ0ZXItYWxpZ258ZHJvcC1pbml0aWFsLWJlZm9yZS1hZGp1c3R8ZHJvcC1pbml0aWFsLWJlZm9yZS1hbGlnbnxkcm9wLWluaXRpYWwtc2l6ZXxkcm9wLWluaXRpYWwtdmFsdWV8ZWxldmF0aW9ufGVtcHR5LWNlbGxzfGZpdHxmaXQtcG9zaXRpb258ZmxvYXQtb2Zmc2V0fGZsb2F0fGZvbnQtZmFtaWx5fGZvbnQtc2l6ZXxmb250LXNpemUtYWRqdXN0fGZvbnQtc3RyZXRjaHxmb250LXN0eWxlfGZvbnQtdmFyaWFudHxmb250LXdlaWdodHxmb250fGdyaWQtY29sdW1uc3xncmlkLXJvd3N8aGFuZ2luZy1wdW5jdHVhdGlvbnxoZWlnaHR8aHlwaGVuYXRlLWFmdGVyfGh5cGhlbmF0ZS1iZWZvcmV8aHlwaGVuYXRlLWNoYXJhY3RlcnxoeXBoZW5hdGUtbGluZXN8aHlwaGVuYXRlLXJlc291cmNlfGh5cGhlbnN8aWNvbnxpbWFnZS1vcmllbnRhdGlvbnxpbWFnZS1yZW5kZXJpbmd8aW1hZ2UtcmVzb2x1dGlvbnxpbmxpbmUtYm94LWFsaWdufGxlZnR8bGV0dGVyLXNwYWNpbmd8bGluZS1oZWlnaHR8bGluZS1zdGFja2luZy1ydWJ5fGxpbmUtc3RhY2tpbmctc2hpZnR8bGluZS1zdGFja2luZy1zdHJhdGVneXxsaW5lLXN0YWNraW5nfGxpc3Qtc3R5bGUtaW1hZ2V8bGlzdC1zdHlsZS1wb3NpdGlvbnxsaXN0LXN0eWxlLXR5cGV8bGlzdC1zdHlsZXxtYXJnaW4tYm90dG9tfG1hcmdpbi1sZWZ0fG1hcmdpbi1yaWdodHxtYXJnaW4tdG9wfG1hcmdpbnxtYXJrLWFmdGVyfG1hcmstYmVmb3JlfG1hcmt8bWFya3N8bWFycXVlZS1kaXJlY3Rpb258bWFycXVlZS1wbGF5LWNvdW50fG1hcnF1ZWUtc3BlZWR8bWFycXVlZS1zdHlsZXxtYXgtaGVpZ2h0fG1heC13aWR0aHxtaW4taGVpZ2h0fG1pbi13aWR0aHxtb3ZlLXRvfG5hdi1kb3dufG5hdi1pbmRleHxuYXYtbGVmdHxuYXYtcmlnaHR8bmF2LXVwfG9wYWNpdHl8b3JwaGFuc3xvdXRsaW5lLWNvbG9yfG91dGxpbmUtb2Zmc2V0fG91dGxpbmUtc3R5bGV8b3V0bGluZS13aWR0aHxvdXRsaW5lfG92ZXJmbG93LXN0eWxlfG92ZXJmbG93LXh8b3ZlcmZsb3cteXxvdmVyZmxvd3xwYWRkaW5nLWJvdHRvbXxwYWRkaW5nLWxlZnR8cGFkZGluZy1yaWdodHxwYWRkaW5nLXRvcHxwYWRkaW5nfHBhZ2UtYnJlYWstYWZ0ZXJ8cGFnZS1icmVhay1iZWZvcmV8cGFnZS1icmVhay1pbnNpZGV8cGFnZS1wb2xpY3l8cGFnZXxwYXVzZS1hZnRlcnxwYXVzZS1iZWZvcmV8cGF1c2V8cGVyc3BlY3RpdmUtb3JpZ2lufHBlcnNwZWN0aXZlfHBob25lbWVzfHBpdGNoLXJhbmdlfHBpdGNofHBsYXktZHVyaW5nfHBvc2l0aW9ufHByZXNlbnRhdGlvbi1sZXZlbHxwdW5jdHVhdGlvbi10cmltfHF1b3Rlc3xyZW5kZXJpbmctaW50ZW50fHJlc2l6ZXxyZXN0LWFmdGVyfHJlc3QtYmVmb3JlfHJlc3R8cmljaG5lc3N8cmlnaHR8cm90YXRpb24tcG9pbnR8cm90YXRpb258cnVieS1hbGlnbnxydWJ5LW92ZXJoYW5nfHJ1YnktcG9zaXRpb258cnVieS1zcGFufHNpemV8c3BlYWstaGVhZGVyfHNwZWFrLW51bWVyYWx8c3BlYWstcHVuY3R1YXRpb258c3BlYWt8c3BlZWNoLXJhdGV8c3RyZXNzfHN0cmluZy1zZXR8dGFibGUtbGF5b3V0fHRhcmdldC1uYW1lfHRhcmdldC1uZXd8dGFyZ2V0LXBvc2l0aW9ufHRhcmdldHx0ZXh0LWFsaWduLWxhc3R8dGV4dC1hbGlnbnx0ZXh0LWRlY29yYXRpb258dGV4dC1lbXBoYXNpc3x0ZXh0LWhlaWdodHx0ZXh0LWluZGVudHx0ZXh0LWp1c3RpZnl8dGV4dC1vdXRsaW5lfHRleHQtc2hhZG93fHRleHQtdHJhbnNmb3JtfHRleHQtd3JhcHx0b3B8dHJhbnNmb3JtLW9yaWdpbnx0cmFuc2Zvcm0tc3R5bGV8dHJhbnNmb3JtfHRyYW5zaXRpb24tZGVsYXl8dHJhbnNpdGlvbi1kdXJhdGlvbnx0cmFuc2l0aW9uLXByb3BlcnR5fHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9ufHRyYW5zaXRpb258dW5pY29kZS1iaWRpfHZlcnRpY2FsLWFsaWdufHZpc2liaWxpdHl8dm9pY2UtYmFsYW5jZXx2b2ljZS1kdXJhdGlvbnx2b2ljZS1mYW1pbHl8dm9pY2UtcGl0Y2gtcmFuZ2V8dm9pY2UtcGl0Y2h8dm9pY2UtcmF0ZXx2b2ljZS1zdHJlc3N8dm9pY2Utdm9sdW1lfHZvbHVtZXx3aGl0ZS1zcGFjZS1jb2xsYXBzZXx3aGl0ZS1zcGFjZXx3aWRvd3N8d2lkdGh8d29yZC1icmVha3x3b3JkLXNwYWNpbmd8d29yZC13cmFwfHotaW5kZXgiLnNwbGl0KCJ8IikpLHQ9aS5hcnJheVRvTWFwKCJyZ2J8cmdiYXx1cmx8YXR0cnxjb3VudGVyfGNvdW50ZXJzIi5zcGxpdCgifCIpKSxuPWkuYXJyYXlUb01hcCgiYWJzb2x1dGV8YWZ0ZXItZWRnZXxhZnRlcnxhbGwtc2Nyb2xsfGFsbHxhbHBoYWJldGljfGFsd2F5c3xhbnRpYWxpYXNlZHxhcm1lbmlhbnxhdXRvfGF2b2lkLWNvbHVtbnxhdm9pZC1wYWdlfGF2b2lkfGJhbGFuY2V8YmFzZWxpbmV8YmVmb3JlLWVkZ2V8YmVmb3JlfGJlbG93fGJpZGktb3ZlcnJpZGV8YmxvY2stbGluZS1oZWlnaHR8YmxvY2t8Ym9sZHxib2xkZXJ8Ym9yZGVyLWJveHxib3RofGJvdHRvbXxib3h8YnJlYWstYWxsfGJyZWFrLXdvcmR8Y2FwaXRhbGl6ZXxjYXBzLWhlaWdodHxjYXB0aW9ufGNlbnRlcnxjZW50cmFsfGNoYXJ8Y2lyY2xlfGNqay1pZGVvZ3JhcGhpY3xjbG9uZXxjbG9zZS1xdW90ZXxjb2wtcmVzaXplfGNvbGxhcHNlfGNvbHVtbnxjb25zaWRlci1zaGlmdHN8Y29udGFpbnxjb250ZW50LWJveHxjb3Zlcnxjcm9zc2hhaXJ8Y3ViaWMtYmV6aWVyfGRhc2hlZHxkZWNpbWFsLWxlYWRpbmctemVyb3xkZWNpbWFsfGRlZmF1bHR8ZGlzYWJsZWR8ZGlzY3xkaXNyZWdhcmQtc2hpZnRzfGRpc3RyaWJ1dGUtYWxsLWxpbmVzfGRpc3RyaWJ1dGUtbGV0dGVyfGRpc3RyaWJ1dGUtc3BhY2V8ZGlzdHJpYnV0ZXxkb3R0ZWR8ZG91YmxlfGUtcmVzaXplfGVhc2UtaW58ZWFzZS1pbi1vdXR8ZWFzZS1vdXR8ZWFzZXxlbGxpcHNpc3xlbmR8ZXhjbHVkZS1ydWJ5fGZpbGx8Zml4ZWR8Zm9udC1zaXplfGZvbnR8Z2VvcmdpYW58Z2x5cGhzfGdyaWQtaGVpZ2h0fGdyb292ZXxoYW5kfGhhbmdpbmd8aGVicmV3fGhlbHB8aGlkZGVufGhpcmFnYW5hLWlyb2hhfGhpcmFnYW5hfGhvcml6b250YWx8aWNvbnxpZGVvZ3JhcGgtYWxwaGF8aWRlb2dyYXBoLW51bWVyaWN8aWRlb2dyYXBoLXBhcmVudGhlc2lzfGlkZW9ncmFwaC1zcGFjZXxpZGVvZ3JhcGhpY3xpbmFjdGl2ZXxpbmNsdWRlLXJ1Ynl8aW5oZXJpdHxpbml0aWFsfGlubGluZS1ibG9ja3xpbmxpbmUtYm94fGlubGluZS1saW5lLWhlaWdodHxpbmxpbmUtdGFibGV8aW5saW5lfGluc2V0fGluc2lkZXxpbnRlci1pZGVvZ3JhcGh8aW50ZXItd29yZHxpbnZlcnR8aXRhbGljfGp1c3RpZnl8a2F0YWthbmEtaXJvaGF8a2F0YWthbmF8a2VlcC1hbGx8bGFzdHxsZWZ0fGxpZ2h0ZXJ8bGluZS1lZGdlfGxpbmUtdGhyb3VnaHxsaW5lfGxpbmVhcnxsaXN0LWl0ZW18bG9jYWx8bG9vc2V8bG93ZXItYWxwaGF8bG93ZXItZ3JlZWt8bG93ZXItbGF0aW58bG93ZXItcm9tYW58bG93ZXJjYXNlfGxyLXRifGx0cnxtYXRoZW1hdGljYWx8bWF4LWhlaWdodHxtYXgtc2l6ZXxtZWRpdW18bWVudXxtZXNzYWdlLWJveHxtaWRkbGV8bW92ZXxuLXJlc2l6ZXxuZS1yZXNpemV8bmV3c3BhcGVyfG5vLWNoYW5nZXxuby1jbG9zZS1xdW90ZXxuby1kcm9wfG5vLW9wZW4tcXVvdGV8bm8tcmVwZWF0fG5vbmV8bm9ybWFsfG5vdC1hbGxvd2VkfG5vd3JhcHxudy1yZXNpemV8b2JsaXF1ZXxvcGVuLXF1b3RlfG91dHNldHxvdXRzaWRlfG92ZXJsaW5lfHBhZGRpbmctYm94fHBhZ2V8cG9pbnRlcnxwcmUtbGluZXxwcmUtd3JhcHxwcmV8cHJlc2VydmUtM2R8cHJvZ3Jlc3N8cmVsYXRpdmV8cmVwZWF0LXh8cmVwZWF0LXl8cmVwZWF0fHJlcGxhY2VkfHJlc2V0LXNpemV8cmlkZ2V8cmlnaHR8cm91bmR8cm93LXJlc2l6ZXxydGx8cy1yZXNpemV8c2Nyb2xsfHNlLXJlc2l6ZXxzZXBhcmF0ZXxzbGljZXxzbWFsbC1jYXBzfHNtYWxsLWNhcHRpb258c29saWR8c3BhY2V8c3F1YXJlfHN0YXJ0fHN0YXRpY3xzdGF0dXMtYmFyfHN0ZXAtZW5kfHN0ZXAtc3RhcnR8c3RlcHN8c3RyZXRjaHxzdHJpY3R8c3VifHN1cGVyfHN3LXJlc2l6ZXx0YWJsZS1jYXB0aW9ufHRhYmxlLWNlbGx8dGFibGUtY29sdW1uLWdyb3VwfHRhYmxlLWNvbHVtbnx0YWJsZS1mb290ZXItZ3JvdXB8dGFibGUtaGVhZGVyLWdyb3VwfHRhYmxlLXJvdy1ncm91cHx0YWJsZS1yb3d8dGFibGV8dGItcmx8dGV4dC1hZnRlci1lZGdlfHRleHQtYmVmb3JlLWVkZ2V8dGV4dC1ib3R0b218dGV4dC1zaXplfHRleHQtdG9wfHRleHR8dGhpY2t8dGhpbnx0b3B8dHJhbnNwYXJlbnR8dW5kZXJsaW5lfHVwcGVyLWFscGhhfHVwcGVyLWxhdGlufHVwcGVyLXJvbWFufHVwcGVyY2FzZXx1c2Utc2NyaXB0fHZlcnRpY2FsLWlkZW9ncmFwaGljfHZlcnRpY2FsLXRleHR8dmlzaWJsZXx3LXJlc2l6ZXx3YWl0fHdoaXRlc3BhY2V8ei1pbmRleHx6ZXJvIi5zcGxpdCgifCIpKSxyPWkuYXJyYXlUb01hcCgiYXF1YXxibGFja3xibHVlfGZ1Y2hzaWF8Z3JheXxncmVlbnxsaW1lfG1hcm9vbnxuYXZ5fG9saXZlfG9yYW5nZXxwdXJwbGV8cmVkfHNpbHZlcnx0ZWFsfHdoaXRlfHllbGxvdyIuc3BsaXQoInwiKSkscz1pLmFycmF5VG9NYXAoImFyaWFsfGNlbnR1cnl8Y29taWN8Y291cmllcnxnYXJhbW9uZHxnZW9yZ2lhfGhlbHZldGljYXxpbXBhY3R8bHVjaWRhfHN5bWJvbHxzeXN0ZW18dGFob21hfHRpbWVzfHRyZWJ1Y2hldHx1dG9waWF8dmVyZGFuYXx3ZWJkaW5nc3xzYW5zLXNlcmlmfHNlcmlmfG1vbm9zcGFjZSIuc3BsaXQoInwiKSksbz0iXFwtPyg/Oig/OlswLTldKyl8KD86WzAtOV0qXFwuWzAtOV0rKSkiLHU9IihcXDorKVxcYihhZnRlcnxiZWZvcmV8Zmlyc3QtbGV0dGVyfGZpcnN0LWxpbmV8bW96LXNlbGVjdGlvbnxzZWxlY3Rpb24pXFxiIixhPSIoOilcXGIoYWN0aXZlfGNoZWNrZWR8ZGlzYWJsZWR8ZW1wdHl8ZW5hYmxlZHxmaXJzdC1jaGlsZHxmaXJzdC1vZi10eXBlfGZvY3VzfGhvdmVyfGluZGV0ZXJtaW5hdGV8aW52YWxpZHxsYXN0LWNoaWxkfGxhc3Qtb2YtdHlwZXxsaW5rfG5vdHxudGgtY2hpbGR8bnRoLWxhc3QtY2hpbGR8bnRoLWxhc3Qtb2YtdHlwZXxudGgtb2YtdHlwZXxvbmx5LWNoaWxkfG9ubHktb2YtdHlwZXxyZXF1aXJlZHxyb290fHRhcmdldHx2YWxpZHx2aXNpdGVkKVxcYiIsZj1be3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJydWxlc2V0X2NvbW1lbnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlsnXSg/Oig/OlxcXFwuKXwoPzpbXidcXFxcXSkpKj9bJ10ifSx7dG9rZW46WyJjb25zdGFudC5udW1lcmljIiwia2V5d29yZCJdLHJlZ2V4OiIoIitvKyIpKGNofGNtfGRlZ3xlbXxleHxmcnxnZHxncmFkfEh6fGlufGtIenxtbXxtc3xwY3xwdHxweHxyYWR8cmVtfHN8dHVybnx2aHx2bXx2d3wlKSJ9LHt0b2tlbjpbImNvbnN0YW50Lm51bWVyaWMiXSxyZWdleDoiKFswLTldKykifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIjW2EtZjAtOV17Nn0ifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIjW2EtZjAtOV17M30ifSx7dG9rZW46WyJwdW5jdHVhdGlvbiIsImVudGl0eS5vdGhlci5hdHRyaWJ1dGUtbmFtZS5wc2V1ZG8tZWxlbWVudC5jc3MiXSxyZWdleDp1fSx7dG9rZW46WyJwdW5jdHVhdGlvbiIsImVudGl0eS5vdGhlci5hdHRyaWJ1dGUtbmFtZS5wc2V1ZG8tY2xhc3MuY3NzIl0scmVnZXg6YX0se3Rva2VuOmZ1bmN0aW9uKGkpe3JldHVybiBlLmhhc093blByb3BlcnR5KGkudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQudHlwZSI6dC5oYXNPd25Qcm9wZXJ0eShpLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmZ1bmN0aW9uIjpuLmhhc093blByb3BlcnR5KGkudG9Mb3dlckNhc2UoKSk/InN1cHBvcnQuY29uc3RhbnQiOnIuaGFzT3duUHJvcGVydHkoaS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC5jb25zdGFudC5jb2xvciI6cy5oYXNPd25Qcm9wZXJ0eShpLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50LmZvbnRzIjoidGV4dCJ9LHJlZ2V4OiJcXC0/W2EtekEtWl9dW2EtekEtWjAtOV9cXC1dKiJ9XSxsPWkuY29weUFycmF5KGYpO2wudW5zaGlmdCh7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IlxcfSIsbmV4dDoic3RhcnQifSk7dmFyIGM9aS5jb3B5QXJyYXkoZik7Yy51bnNoaWZ0KHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiXFx9IixuZXh0OiJtZWRpYSJ9KTt2YXIgaD1be3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0scD1pLmNvcHlBcnJheShoKTtwLnVuc2hpZnQoe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJzdGFydCJ9KTt2YXIgZD1pLmNvcHlBcnJheShoKTtkLnVuc2hpZnQoe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJtZWRpYSJ9KTt2YXIgdj1pLmNvcHlBcnJheShoKTt2LnVuc2hpZnQoe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJydWxlc2V0In0pLHRoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJcXHsiLG5leHQ6InJ1bGVzZXQifSx7dG9rZW46InN0cmluZyIscmVnZXg6IkAuKj97IixuZXh0OiJtZWRpYSJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IiNbYS16MC05LV9dKyJ9LHt0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJcXC5bYS16MC05LV9dKyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiOlthLXowLTktX10rIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IlthLXowLTktX10rIn1dLG1lZGlhOlt7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6Im1lZGlhX2NvbW1lbnQifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IlxceyIsbmV4dDoibWVkaWFfcnVsZXNldCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFx9IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IiNbYS16MC05LV9dKyJ9LHt0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJcXC5bYS16MC05LV9dKyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiOlthLXowLTktX10rIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IlthLXowLTktX10rIn1dLGNvbW1lbnQ6cCxydWxlc2V0OmwscnVsZXNldF9jb21tZW50OnYsbWVkaWFfcnVsZXNldDpjLG1lZGlhX2NvbW1lbnQ6ZH19O3IuaW5oZXJpdHMobyxzKSx0LkNzc0hpZ2hsaWdodFJ1bGVzPW99KSxkZWZpbmUoImFjZS9tb2RlL2h0bWxfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9jc3NfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS94bWxfdXRpbCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vY3NzX2hpZ2hsaWdodF9ydWxlcyIpLkNzc0hpZ2hsaWdodFJ1bGVzLHM9ZSgiLi9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIpLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcyxvPWUoIi4veG1sX3V0aWwiKSx1PWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsYT17YToiYW5jaG9yIixidXR0b246ImZvcm0iLGZvcm06ImZvcm0iLGltZzoiaW1hZ2UiLGlucHV0OiJmb3JtIixsYWJlbDoiZm9ybSIsc2NyaXB0OiJzY3JpcHQiLHNlbGVjdDoiZm9ybSIsdGV4dGFyZWE6ImZvcm0iLHN0eWxlOiJzdHlsZSIsdGFibGU6InRhYmxlIix0Ym9keToidGFibGUiLHRkOiJ0YWJsZSIsdGZvb3Q6InRhYmxlIix0aDoidGFibGUiLHRyOiJ0YWJsZSJ9LGY9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidGV4dCIsbWVyZ2U6ITAscmVnZXg6IjxcXCFcXFtDREFUQVxcWyIsbmV4dDoiY2RhdGEifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXD8uKj9cXD8+In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiPFxcIS0tIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJ4bWxfcGUiLHJlZ2V4OiI8XFwhLio/PiJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8KD89cypzY3JpcHRcXGIpIixuZXh0OiJzY3JpcHQifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPCg/PXMqc3R5bGVcXGIpIixuZXh0OiJzdHlsZSJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvPyIsbmV4dDoidGFnIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29uc3RhbnQuY2hhcmFjdGVyLmVudGl0eSIscmVnZXg6Iig/OiYjWzAtOV0rOyl8KD86JiN4WzAtOWEtZkEtRl0rOyl8KD86JlthLXpBLVowLTlfOlxcLi1dKzspIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiW148XSsifV0sY2RhdGE6W3t0b2tlbjoidGV4dCIscmVnZXg6IlxcXVxcXT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJ0ZXh0IixtZXJnZTohMCxyZWdleDoiXFxzKyJ9LHt0b2tlbjoidGV4dCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qPy0tPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0sby50YWcodGhpcy4kcnVsZXMsInRhZyIsInN0YXJ0IixhKSxvLnRhZyh0aGlzLiRydWxlcywic3R5bGUiLCJjc3Mtc3RhcnQiLGEpLG8udGFnKHRoaXMuJHJ1bGVzLCJzY3JpcHQiLCJqcy1zdGFydCIsYSksdGhpcy5lbWJlZFJ1bGVzKHMsImpzLSIsW3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qKD89PFxcL3NjcmlwdD4pIixuZXh0OiJ0YWcifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPFxcLyg/PXNjcmlwdCkiLG5leHQ6InRhZyJ9XSksdGhpcy5lbWJlZFJ1bGVzKGksImNzcy0iLFt7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPFxcLyg/PXN0eWxlKSIsbmV4dDoidGFnIn1dKX07ci5pbmhlcml0cyhmLHUpLHQuSHRtbEhpZ2hsaWdodFJ1bGVzPWZ9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9odG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIveG1sIiwiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsImFjZS90b2tlbl9pdGVyYXRvciJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBhKGUsdCl7dmFyIG49ITAscj1lLnR5cGUuc3BsaXQoIi4iKSxpPXQuc3BsaXQoIi4iKTtyZXR1cm4gaS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKHIuaW5kZXhPZihlKT09LTEpcmV0dXJuIG49ITEsITF9KSxufXZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uL2JlaGF2aW91ci94bWwiKS5YbWxCZWhhdmlvdXIscz1lKCIuL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixvPWUoIi4uLy4uL3Rva2VuX2l0ZXJhdG9yIikuVG9rZW5JdGVyYXRvcix1PVsiYXJlYSIsImJhc2UiLCJiciIsImNvbCIsImNvbW1hbmQiLCJlbWJlZCIsImhyIiwiaW1nIiwiaW5wdXQiLCJrZXlnZW4iLCJsaW5rIiwibWV0YSIsInBhcmFtIiwic291cmNlIiwidHJhY2siLCJ3YnIiXSxmPWZ1bmN0aW9uKCl7dGhpcy5pbmhlcml0KGkpLHRoaXMuYWRkKCJhdXRvY2xvc2luZyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iPiIpe3ZhciBzPW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxmPW5ldyBvKHIscy5yb3cscy5jb2x1bW4pLGw9Zi5nZXRDdXJyZW50VG9rZW4oKSxjPSExO2lmKCFsfHwhYShsLCJtZXRhLnRhZyIpJiYoIWEobCwidGV4dCIpfHwhbC52YWx1ZS5tYXRjaCgiLyIpKSl7ZG8gbD1mLnN0ZXBCYWNrd2FyZCgpO3doaWxlKGwmJihhKGwsInN0cmluZyIpfHxhKGwsImtleXdvcmQub3BlcmF0b3IiKXx8YShsLCJlbnRpdHkuYXR0cmlidXRlLW5hbWUiKXx8YShsLCJ0ZXh0IikpKX1lbHNlIGM9ITA7aWYoIWx8fCFhKGwsIm1ldGEudGFnLW5hbWUiKXx8Zi5zdGVwQmFja3dhcmQoKS52YWx1ZS5tYXRjaCgiLyIpKXJldHVybjt2YXIgaD1sLnZhbHVlO2lmKGMpdmFyIGg9aC5zdWJzdHJpbmcoMCxzLmNvbHVtbi1sLnN0YXJ0KTtpZih1LmluZGV4T2YoaCkhPT0tMSlyZXR1cm47cmV0dXJue3RleHQ6Ij48LyIraCsiPiIsc2VsZWN0aW9uOlsxLDFdfX19KX07ci5pbmhlcml0cyhmLGkpLHQuSHRtbEJlaGF2aW91cj1mfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2h0bWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2ZvbGRpbmcvbWl4ZWQiLCJhY2UvbW9kZS9mb2xkaW5nL3htbCIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4vbWl4ZWQiKS5Gb2xkTW9kZSxzPWUoIi4veG1sIikuRm9sZE1vZGUsbz1lKCIuL2NzdHlsZSIpLkZvbGRNb2RlLHU9dC5Gb2xkTW9kZT1mdW5jdGlvbigpe2kuY2FsbCh0aGlzLG5ldyBzKHthcmVhOjEsYmFzZToxLGJyOjEsY29sOjEsY29tbWFuZDoxLGVtYmVkOjEsaHI6MSxpbWc6MSxpbnB1dDoxLGtleWdlbjoxLGxpbms6MSxtZXRhOjEscGFyYW06MSxzb3VyY2U6MSx0cmFjazoxLHdicjoxLGxpOjEsZHQ6MSxkZDoxLHA6MSxydDoxLHJwOjEsb3B0Z3JvdXA6MSxvcHRpb246MSxjb2xncm91cDoxLHRkOjEsdGg6MX0pLHsianMtIjpuZXcgbywiY3NzLSI6bmV3IG99KX07ci5pbmhlcml0cyh1LGkpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL21peGVkIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLHM9dC5Gb2xkTW9kZT1mdW5jdGlvbihlLHQpe3RoaXMuZGVmYXVsdE1vZGU9ZSx0aGlzLnN1Yk1vZGVzPXR9O3IuaW5oZXJpdHMocyxpKSxmdW5jdGlvbigpe3RoaXMuJGdldE1vZGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHRoaXMuc3ViTW9kZXMpaWYoZS5pbmRleE9mKHQpPT09MClyZXR1cm4gdGhpcy5zdWJNb2Rlc1t0XTtyZXR1cm4gbnVsbH0sdGhpcy4kdHJ5TW9kZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLiRnZXRNb2RlKGUpO3JldHVybiBpP2kuZ2V0Rm9sZFdpZGdldCh0LG4scik6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJHRyeU1vZGUoZS5nZXRTdGF0ZShuLTEpLGUsdCxuKXx8dGhpcy4kdHJ5TW9kZShlLmdldFN0YXRlKG4pLGUsdCxuKXx8dGhpcy5kZWZhdWx0TW9kZS5nZXRGb2xkV2lkZ2V0KGUsdCxuKX0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJGdldE1vZGUoZS5nZXRTdGF0ZShuLTEpKTtpZighcnx8IXIuZ2V0Rm9sZFdpZGdldChlLHQsbikpcj10aGlzLiRnZXRNb2RlKGUuZ2V0U3RhdGUobikpO2lmKCFyfHwhci5nZXRGb2xkV2lkZ2V0KGUsdCxuKSlyPXRoaXMuZGVmYXVsdE1vZGU7cmV0dXJuIHIuZ2V0Rm9sZFdpZGdldFJhbmdlKGUsdCxuKX19LmNhbGwocy5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9tYXJrZG93bl9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS94bWxfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvaHRtbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9jc3NfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIGYoZSx0KXtyZXR1cm57dG9rZW46InN1cHBvcnQuZnVuY3Rpb24iLHJlZ2V4OiJeYGBgIitlKyJcXHMqJCIsbmV4dDp0KyJzdGFydCJ9fXZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMscz1lKCIuL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIikuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzLG89ZSgiLi94bWxfaGlnaGxpZ2h0X3J1bGVzIikuWG1sSGlnaGxpZ2h0UnVsZXMsdT1lKCIuL2h0bWxfaGlnaGxpZ2h0X3J1bGVzIikuSHRtbEhpZ2hsaWdodFJ1bGVzLGE9ZSgiLi9jc3NfaGlnaGxpZ2h0X3J1bGVzIikuQ3NzSGlnaGxpZ2h0UnVsZXMsbD1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJlbXB0eV9saW5lIixyZWdleDoiXiQifSx7dG9rZW46WyJzdXBwb3J0LmZ1bmN0aW9uIiwic3VwcG9ydC5mdW5jdGlvbiIsInN1cHBvcnQuZnVuY3Rpb24iXSxyZWdleDoiKGArKShbXlxccl0qP1teYF0pKFxcMSkifSx7dG9rZW46InN1cHBvcnQuZnVuY3Rpb24iLHJlZ2V4OiJeWyBdezR9LisifSx7dG9rZW46Im1hcmt1cC5oZWFkaW5nLjEiLHJlZ2V4OiJePSsoPz1cXHMqJCkifSx7dG9rZW46Im1hcmt1cC5oZWFkaW5nLjEiLHJlZ2V4OiJeXFwtKyg/PVxccyokKSJ9LHt0b2tlbjpmdW5jdGlvbihlKXtyZXR1cm4ibWFya3VwLmhlYWRpbmcuIitlLmxlbmd0aH0scmVnZXg6Il4jezEsNn0ifSxmKCIoPzpqYXZhc2NyaXB0fGpzKSIsImpzLSIpLGYoInhtbCIsInhtbC0iKSxmKCJodG1sIiwiaHRtbC0iKSxmKCJjc3MiLCJjc3MtIikse3Rva2VuOiJzdXBwb3J0LmZ1bmN0aW9uIixyZWdleDoiXmBgYFthLXpBLVpdK1xccyokIixuZXh0OiJnaXRodWJibG9jayJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXj5bIF0uKyQiLG5leHQ6ImJsb2NrcXVvdGUifSx7dG9rZW46WyJ0ZXh0IiwiY29uc3RhbnQiLCJ0ZXh0IiwidXJsIiwic3RyaW5nIiwidGV4dCJdLHJlZ2V4OideKFsgXXswLDN9XFxbKShbXlxcXV0rKShcXF06XFxzKikoW14gXSspKFxccyooPzpbIl1bXiJdK1siXSk/KFxccyopKSQnfSx7dG9rZW46WyJ0ZXh0Iiwic3RyaW5nIiwidGV4dCIsImNvbnN0YW50IiwidGV4dCJdLHJlZ2V4OiIoXFxbKSgoPzpbW15cXF1dKlxcXXxbXlxcW1xcXV0pKikoXFxdWyBdPyg/OlxcblsgXSopP1xcWykoLio/KShcXF0pIn0se3Rva2VuOlsidGV4dCIsInN0cmluZyIsInRleHQiLCJtYXJrdXAudW5kZXJsaW5lIiwic3RyaW5nIiwidGV4dCJdLHJlZ2V4OicoXFxbKShcXFtbXlxcXV0qXFxdfFteXFxbXFxdXSopKFxcXVxcKFsgXFx0XSopKDw/KD86KD86W15cXChdKj9cXChbXlxcKV0qP1xcKVxcUyo/KXwoPzouKj8pKT4/KSgoPzpbIAldKiIoPzouKj8pIlsgXFx0XSopPykoXFwpKSd9LHt0b2tlbjoiY29uc3RhbnQiLHJlZ2V4OiJeWyBdezAsMn0oPzpbIF0/XFwqWyBdPyl7Myx9XFxzKiQifSx7dG9rZW46ImNvbnN0YW50IixyZWdleDoiXlsgXXswLDJ9KD86WyBdP1xcLVsgXT8pezMsfVxccyokIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6Il5bIF17MCwyfSg/OlsgXT9cXF9bIF0/KXszLH1cXHMqJCJ9LHt0b2tlbjoibWFya3VwLmxpc3QiLHJlZ2V4OiJeXFxzezAsM30oPzpbKistXXxcXGQrXFwuKVxccysiLG5leHQ6Imxpc3RibG9jayJ9LHt0b2tlbjpbInN0cmluZyIsInN0cmluZyIsInN0cmluZyJdLHJlZ2V4OiIoWypdezJ9fFtfXXsyfSg/PVxcUykpKFteXFxyXSo/XFxTWypfXSopKFxcMSkifSx7dG9rZW46WyJzdHJpbmciLCJzdHJpbmciLCJzdHJpbmciXSxyZWdleDoiKFsqXXxbX10oPz1cXFMpKShbXlxccl0qP1xcU1sqX10qKShcXDEpIn0se3Rva2VuOlsidGV4dCIsInVybCIsInRleHQiXSxyZWdleDoiKDwpKCg/Omh0dHBzP3xmdHB8ZGljdCk6W14nXCI+XFxzXSt8KD86bWFpbHRvOik/Wy0uXFx3XStcXEBbLWEtejAtOV0rKD86XFwuWy1hLXowLTldKykqXFwuW2Etel0rKSg+KSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlteXFwqXyUkYFxcWyM8Pl0rIn1dLGxpc3RibG9jazpbe3Rva2VuOiJlbXB0eV9saW5lIixyZWdleDoiXiQiLG5leHQ6InN0YXJ0In0se3Rva2VuOiJtYXJrdXAubGlzdCIscmVnZXg6Ii4rIn1dLGJsb2NrcXVvdGU6W3t0b2tlbjoiZW1wdHlfbGluZSIscmVnZXg6Il5cXHMqJCIsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6Ii4rIn1dLGdpdGh1YmJsb2NrOlt7dG9rZW46InN1cHBvcnQuZnVuY3Rpb24iLHJlZ2V4OiJeYGBgIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3VwcG9ydC5mdW5jdGlvbiIscmVnZXg6Ii4rIn1dfSx0aGlzLmVtYmVkUnVsZXMocywianMtIixbe3Rva2VuOiJzdXBwb3J0LmZ1bmN0aW9uIixyZWdleDoiXmBgYCIsbmV4dDoic3RhcnQifV0pLHRoaXMuZW1iZWRSdWxlcyh1LCJodG1sLSIsW3t0b2tlbjoic3VwcG9ydC5mdW5jdGlvbiIscmVnZXg6Il5gYGAiLG5leHQ6InN0YXJ0In1dKSx0aGlzLmVtYmVkUnVsZXMoYSwiY3NzLSIsW3t0b2tlbjoic3VwcG9ydC5mdW5jdGlvbiIscmVnZXg6Il5gYGAiLG5leHQ6InN0YXJ0In1dKSx0aGlzLmVtYmVkUnVsZXMobywieG1sLSIsW3t0b2tlbjoic3VwcG9ydC5mdW5jdGlvbiIscmVnZXg6Il5gYGAiLG5leHQ6InN0YXJ0In1dKX07ci5pbmhlcml0cyhsLGkpLHQuTWFya2Rvd25IaWdobGlnaHRSdWxlcz1sfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-ocaml.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9vY2FtbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9vY2FtbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dCIpLk1vZGUscz1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsbz1lKCIuL29jYW1sX2hpZ2hsaWdodF9ydWxlcyIpLk9jYW1sSGlnaGxpZ2h0UnVsZXMsdT1lKCIuL21hdGNoaW5nX2JyYWNlX291dGRlbnQiKS5NYXRjaGluZ0JyYWNlT3V0ZGVudCxhPWUoIi4uL3JhbmdlIikuUmFuZ2UsZj1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgcygobmV3IG8pLmdldFJ1bGVzKCkpLHRoaXMuJG91dGRlbnQ9bmV3IHV9O3IuaW5oZXJpdHMoZixpKTt2YXIgbD0vKD86Wyh7Wz06XXxbLT1dPnxcYig/OmVsc2V8dHJ5fHdpdGgpKVxzKiQvOyhmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLHMsbz0hMCx1PS9eXHMqXChcKiguKilcKlwpLztmb3IoaT1uO2k8PXI7aSsrKWlmKCF1LnRlc3QodC5nZXRMaW5lKGkpKSl7bz0hMTticmVha312YXIgZj1uZXcgYSgwLDAsMCwwKTtmb3IoaT1uO2k8PXI7aSsrKXM9dC5nZXRMaW5lKGkpLGYuc3RhcnQucm93PWksZi5lbmQucm93PWksZi5lbmQuY29sdW1uPXMubGVuZ3RoLHQucmVwbGFjZShmLG8/cy5tYXRjaCh1KVsxXToiKCoiK3MrIiopIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJGdldEluZGVudCh0KSxpPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKHQsZSkudG9rZW5zO3JldHVybighaS5sZW5ndGh8fGlbaS5sZW5ndGgtMV0udHlwZSE9PSJjb21tZW50IikmJmU9PT0ic3RhcnQiJiZsLnRlc3QodCkmJihyKz1uKSxyfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KHQsbil9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQodCxuKX19KS5jYWxsKGYucHJvdG90eXBlKSx0Lk1vZGU9Zn0pLGRlZmluZSgiYWNlL21vZGUvb2NhbWxfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi9saWIvbGFuZyIpLHM9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxvPWZ1bmN0aW9uKCl7dmFyIGU9aS5hcnJheVRvTWFwKCJhbmR8YXN8YXNzZXJ0fGJlZ2lufGNsYXNzfGNvbnN0cmFpbnR8ZG98ZG9uZXxkb3dudG98ZWxzZXxlbmR8ZXhjZXB0aW9ufGV4dGVybmFsfGZvcnxmdW58ZnVuY3Rpb258ZnVuY3RvcnxpZnxpbnxpbmNsdWRlfGluaGVyaXR8aW5pdGlhbGl6ZXJ8bGF6eXxsZXR8bWF0Y2h8bWV0aG9kfG1vZHVsZXxtdXRhYmxlfG5ld3xvYmplY3R8b2Z8b3Blbnxvcnxwcml2YXRlfHJlY3xzaWd8c3RydWN0fHRoZW58dG98dHJ5fHR5cGV8dmFsfHZpcnR1YWx8d2hlbnx3aGlsZXx3aXRoIi5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgidHJ1ZXxmYWxzZSIuc3BsaXQoInwiKSksbj1pLmFycmF5VG9NYXAoImFic3xhYnNfYmlnX2ludHxhYnNfZmxvYXR8YWJzX251bXxhYnN0cmFjdF90YWd8YWNjZXB0fGFjY2Vzc3xhY29zfGFkZHxhZGRfYXZhaWxhYmxlX3VuaXRzfGFkZF9iaWdfaW50fGFkZF9idWZmZXJ8YWRkX2NoYW5uZWx8YWRkX2NoYXJ8YWRkX2luaXRpYWxpemVyfGFkZF9pbnRfYmlnX2ludHxhZGRfaW50ZXJmYWNlc3xhZGRfbnVtfGFkZF9zdHJpbmd8YWRkX3N1YnN0aXR1dGV8YWRkX3N1YnN0cmluZ3xhbGFybXxhbGxvY2F0ZWRfYnl0ZXN8YWxsb3dfb25seXxhbGxvd191bnNhZmVfbW9kdWxlc3xhbHdheXN8YXBwZW5kfGFwcG5hbWVfZ2V0fGFwcG5hbWVfc2V0fGFwcHJveF9udW1fZXhwfGFwcHJveF9udW1fZml4fGFyZ3xhcmd2fGFyaXRoX3N0YXR1c3xhcnJheXxhcnJheTFfb2ZfZ2VuYXJyYXl8YXJyYXkyX29mX2dlbmFycmF5fGFycmF5M19vZl9nZW5hcnJheXxhc2lufGFzcnxhc3NvY3xhc3NxfGF0X2V4aXR8YXRhbnxhdGFuMnxhdXRvX3N5bmNocm9uaXplfGJhY2tncm91bmR8YmFzZW5hbWV8YmVnaW5uaW5nX29mX2lucHV0fGJpZ19pbnRfb2ZfaW50fGJpZ19pbnRfb2ZfbnVtfGJpZ19pbnRfb2Zfc3RyaW5nfGJpbmR8YmluZF9jbGFzc3xiaW5kX3RhZ3xiaXRzfGJpdHNfb2ZfZmxvYXR8YmxhY2t8YmxpdHxibGl0X2ltYWdlfGJsdWV8Ym9vbHxib29sX29mX3N0cmluZ3xib3VuZGVkX2Z1bGxfc3BsaXR8Ym91bmRlZF9zcGxpdHxib3VuZGVkX3NwbGl0X2RlbGltfGJwcmludGZ8YnJlYWt8YnJvYWRjYXN0fGJzY2FuZnxidXR0b25fZG93bnxjX2xheW91dHxjYXBpdGFsaXplfGNhcmRpbmFsfGNhcmRpbmFsfGNhdGNofGNhdGNoX2JyZWFrfGNlaWx8Y2VpbGluZ19udW18Y2hhbm5lbHxjaGFyfGNoYXJfb2ZfaW50fGNoZGlyfGNoZWNrfGNoZWNrX3N1ZmZpeHxjaG1vZHxjaG9vc2V8Y2hvcF9leHRlbnNpb258Y2hvcF9zdWZmaXh8Y2hvd258Y2hvd258Y2hyfGNocm9vdHxjbGFzc2lmeV9mbG9hdHxjbGVhcnxjbGVhcl9hdmFpbGFibGVfdW5pdHN8Y2xlYXJfY2xvc2Vfb25fZXhlY3xjbGVhcl9ncmFwaHxjbGVhcl9ub25ibG9ja3xjbGVhcl9wYXJzZXJ8Y2xvc2V8Y2xvc2V8Y2xvc2VUa3xjbG9zZV9ib3h8Y2xvc2VfZ3JhcGh8Y2xvc2VfaW58Y2xvc2VfaW5fbm9lcnJ8Y2xvc2Vfb3V0fGNsb3NlX291dF9ub2VycnxjbG9zZV9wcm9jZXNzfGNsb3NlX3Byb2Nlc3N8Y2xvc2VfcHJvY2Vzc19mdWxsfGNsb3NlX3Byb2Nlc3NfaW58Y2xvc2VfcHJvY2Vzc19vdXR8Y2xvc2Vfc3Vid2luZG93fGNsb3NlX3RhZ3xjbG9zZV90Ym94fGNsb3NlZGlyfGNsb3NlZGlyfGNsb3N1cmVfdGFnfGNvZGV8Y29tYmluZXxjb21iaW5lfGNvbWJpbmV8Y29tbWFuZHxjb21wYWN0fGNvbXBhcmV8Y29tcGFyZV9iaWdfaW50fGNvbXBhcmVfbnVtfGNvbXBsZXgzMnxjb21wbGV4NjR8Y29uY2F0fGNvbmp8Y29ubmVjdHxjb250YWluc3xjb250YWluc19mcm9tfGNvbnRlbnRzfGNvcHl8Y29zfGNvc2h8Y291bnR8Y291bnR8Y291bnRlcnN8Y3JlYXRlfGNyZWF0ZV9hbGFybXxjcmVhdGVfaW1hZ2V8Y3JlYXRlX21hdHJpeHxjcmVhdGVfbWF0cml4fGNyZWF0ZV9tYXRyaXh8Y3JlYXRlX29iamVjdHxjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGl6ZXJzfGNyZWF0ZV9vYmplY3Rfb3B0fGNyZWF0ZV9wcm9jZXNzfGNyZWF0ZV9wcm9jZXNzfGNyZWF0ZV9wcm9jZXNzX2VudnxjcmVhdGVfcHJvY2Vzc19lbnZ8Y3JlYXRlX3RhYmxlfGN1cnJlbnR8Y3VycmVudF9kaXJfbmFtZXxjdXJyZW50X3BvaW50fGN1cnJlbnRfeHxjdXJyZW50X3l8Y3VydmV0b3xjdXN0b21fdGFnfGN5YW58ZGF0YV9zaXplfGRlY3J8ZGVjcl9udW18ZGVmYXVsdF9hdmFpbGFibGVfdW5pdHN8ZGVsYXl8ZGVsZXRlX2FsYXJtfGRlc2NyX29mX2luX2NoYW5uZWx8ZGVzY3Jfb2Zfb3V0X2NoYW5uZWx8ZGVzdHJveXxkaWZmfGRpbXxkaW0xfGRpbTJ8ZGltM3xkaW1zfGRpcm5hbWV8ZGlzcGxheV9tb2RlfGRpdnxkaXZfYmlnX2ludHxkaXZfbnVtfGRvdWJsZV9hcnJheV90YWd8ZG91YmxlX3RhZ3xkcmF3X2FyY3xkcmF3X2NoYXJ8ZHJhd19jaXJjbGV8ZHJhd19lbGxpcHNlfGRyYXdfaW1hZ2V8ZHJhd19wb2x5fGRyYXdfcG9seV9saW5lfGRyYXdfcmVjdHxkcmF3X3NlZ21lbnRzfGRyYXdfc3RyaW5nfGR1bW15X3Bvc3xkdW1teV90YWJsZXxkdW1wX2ltYWdlfGR1cHxkdXAyfGVsZW1lbnRzfGVtcHR5fGVuZF9vZl9pbnB1dHxlbnZpcm9ubWVudHxlcHJpbnRmfGVwc2lsb25fZmxvYXR8ZXFfYmlnX2ludHxlcV9udW18ZXF1YWx8ZXJyX2Zvcm1hdHRlcnxlcnJvcl9tZXNzYWdlfGVzY2FwZWR8ZXN0YWJsaXNoX3NlcnZlcnxleGVjdXRhYmxlX25hbWV8ZXhlY3Z8ZXhlY3ZlfGV4ZWN2cHxleGVjdnBlfGV4aXN0c3xleGlzdHMyfGV4aXR8ZXhwfGZhaWx3aXRofGZhc3Rfc29ydHxmY2htb2R8ZmNob3dufGZpZWxkfGZpbGV8ZmlsZV9leGlzdHN8ZmlsbHxmaWxsX2FyY3xmaWxsX2NpcmNsZXxmaWxsX2VsbGlwc2V8ZmlsbF9wb2x5fGZpbGxfcmVjdHxmaWx0ZXJ8ZmluYWxfdGFnfGZpbmFsaXNlfGZpbmR8ZmluZF9hbGx8Zmlyc3RfY2hhcnN8Zmlyc3RrZXl8ZmxhdHRlbnxmbG9hdHxmbG9hdDMyfGZsb2F0NjR8ZmxvYXRfb2ZfYmlnX2ludHxmbG9hdF9vZl9iaXRzfGZsb2F0X29mX2ludHxmbG9hdF9vZl9udW18ZmxvYXRfb2Zfc3RyaW5nfGZsb29yfGZsb29yX251bXxmbHVzaHxmbHVzaF9hbGx8Zmx1c2hfaW5wdXR8Zmx1c2hfc3RyX2Zvcm1hdHRlcnxmb2xkfGZvbGRfbGVmdHxmb2xkX2xlZnQyfGZvbGRfcmlnaHR8Zm9sZF9yaWdodDJ8Zm9yX2FsbHxmb3JfYWxsMnxmb3JjZXxmb3JjZV9uZXdsaW5lfGZvcmNlX3ZhbHxmb3JlZ3JvdW5kfGZvcmt8Zm9ybWF0X29mX3N0cmluZ3xmb3JtYXR0ZXJfb2ZfYnVmZmVyfGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbHxmb3J0cmFuX2xheW91dHxmb3J3YXJkX3RhZ3xmcHJpbnRmfGZyZXhwfGZyb218ZnJvbV9jaGFubmVsfGZyb21fZmlsZXxmcm9tX2ZpbGVfYmlufGZyb21fZnVuY3Rpb258ZnJvbV9zdHJpbmd8ZnNjYW5mfGZzdHxmc3RhdHxmdHJ1bmNhdGV8ZnVsbF9pbml0fGZ1bGxfbWFqb3J8ZnVsbF9zcGxpdHxnY2RfYmlnX2ludHxnZV9iaWdfaW50fGdlX251bXxnZW5hcnJheV9vZl9hcnJheTF8Z2VuYXJyYXlfb2ZfYXJyYXkyfGdlbmFycmF5X29mX2FycmF5M3xnZXR8Z2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uc3xnZXRfYXBwcm94X3ByaW50aW5nfGdldF9jb3B5fGdldF9lbGxpcHNpc190ZXh0fGdldF9lcnJvcl93aGVuX251bGxfZGVub21pbmF0b3J8Z2V0X2Zsb2F0aW5nX3ByZWNpc2lvbnxnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnN8Z2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zfGdldF9pbWFnZXxnZXRfbWFyZ2lufGdldF9tYXJrX3RhZ3N8Z2V0X21heF9ib3hlc3xnZXRfbWF4X2luZGVudHxnZXRfbWV0aG9kfGdldF9tZXRob2RfbGFiZWx8Z2V0X25vcm1hbGl6ZV9yYXRpb3xnZXRfbm9ybWFsaXplX3JhdGlvX3doZW5fcHJpbnRpbmd8Z2V0X3ByaW50X3RhZ3N8Z2V0X3N0YXRlfGdldF92YXJpYWJsZXxnZXRjd2R8Z2V0ZWdpZHxnZXRlZ2lkfGdldGVudnxnZXRlbnZ8Z2V0ZW52fGdldGV1aWR8Z2V0ZXVpZHxnZXRnaWR8Z2V0Z2lkfGdldGdyZ2lkfGdldGdyZ2lkfGdldGdybmFtfGdldGdybmFtfGdldGdyb3Vwc3xnZXRob3N0YnlhZGRyfGdldGhvc3RieW5hbWV8Z2V0aG9zdG5hbWV8Z2V0aXRpbWVyfGdldGxvZ2lufGdldHBlZXJuYW1lfGdldHBpZHxnZXRwcGlkfGdldHByb3RvYnluYW1lfGdldHByb3RvYnludW1iZXJ8Z2V0cHduYW18Z2V0cHd1aWR8Z2V0c2VydmJ5bmFtZXxnZXRzZXJ2Ynlwb3J0fGdldHNvY2tuYW1lfGdldHNvY2tvcHR8Z2V0c29ja29wdF9mbG9hdHxnZXRzb2Nrb3B0X2ludHxnZXRzb2Nrb3B0X29wdGludHxnZXR0aW1lb2ZkYXl8Z2V0dWlkfGdsb2JhbF9yZXBsYWNlfGdsb2JhbF9zdWJzdGl0dXRlfGdtdGltZXxncmVlbnxncmlkfGdyb3VwX2JlZ2lubmluZ3xncm91cF9lbmR8Z3RfYmlnX2ludHxndF9udW18Z3VhcmR8aGFuZGxlX3VuaXhfZXJyb3J8aGFzaHxoYXNoX3BhcmFtfGhkfGhlYWRlcl9zaXplfGl8aWR8aWdub3JlfGluX2NoYW5uZWxfbGVuZ3RofGluX2NoYW5uZWxfb2ZfZGVzY3J8aW5jcnxpbmNyX251bXxpbmRleHxpbmRleF9mcm9tfGluZXRfYWRkcl9hbnl8aW5ldF9hZGRyX29mX3N0cmluZ3xpbmZpbml0eXxpbmZpeF90YWd8aW5pdHxpbml0X2NsYXNzfGlucHV0fGlucHV0X2JpbmFyeV9pbnR8aW5wdXRfYnl0ZXxpbnB1dF9jaGFyfGlucHV0X2xpbmV8aW5wdXRfdmFsdWV8aW50fGludDE2X3NpZ25lZHxpbnQxNl91bnNpZ25lZHxpbnQzMnxpbnQ2NHxpbnQ4X3NpZ25lZHxpbnQ4X3Vuc2lnbmVkfGludF9vZl9iaWdfaW50fGludF9vZl9jaGFyfGludF9vZl9mbG9hdHxpbnRfb2ZfbnVtfGludF9vZl9zdHJpbmd8aW50ZWdlcl9udW18aW50ZXJ8aW50ZXJhY3RpdmV8aW52fGludmFsaWRfYXJnfGlzX2Jsb2NrfGlzX2VtcHR5fGlzX2ltcGxpY2l0fGlzX2ludHxpc19pbnRfYmlnX2ludHxpc19pbnRlZ2VyX251bXxpc19yZWxhdGl2ZXxpdGVyfGl0ZXIyfGl0ZXJpfGpvaW58anVua3xrZXlfcHJlc3NlZHxraWxsfGtpbmR8a3ByaW50Znxrc2NhbmZ8bGFuZHxsYXN0X2NoYXJzfGxheW91dHxsYXp5X2Zyb21fZnVufGxhenlfZnJvbV92YWx8bGF6eV9pc192YWx8bGF6eV90YWd8bGRleHB8bGVfYmlnX2ludHxsZV9udW18bGVuZ3RofGxleGVtZXxsZXhlbWVfY2hhcnxsZXhlbWVfZW5kfGxleGVtZV9lbmRfcHxsZXhlbWVfc3RhcnR8bGV4ZW1lX3N0YXJ0X3B8bGluZXRvfGxpbmt8bGlzdHxsaXN0ZW58bG5vdHxsb2FkZmlsZXxsb2FkZmlsZV9wcml2YXRlfGxvY2FsdGltZXxsb2NrfGxvY2tmfGxvZ3xsb2cxMHxsb2dhbmR8bG9nbm90fGxvZ29yfGxvZ3hvcnxsb3J8bG93ZXJfd2luZG93fGxvd2VyY2FzZXxsc2Vla3xsc2x8bHNyfGxzdGF0fGx0X2JpZ19pbnR8bHRfbnVtfGx4b3J8bWFnZW50YXxtYWdpY3xtYWluTG9vcHxtYWpvcnxtYWpvcl9zbGljZXxtYWtlfG1ha2VfZm9ybWF0dGVyfG1ha2VfaW1hZ2V8bWFrZV9sZXhlcnxtYWtlX21hdHJpeHxtYWtlX3NlbGZfaW5pdHxtYXB8bWFwMnxtYXBfZmlsZXxtYXBpfG1hcnNoYWx8bWF0Y2hfYmVnaW5uaW5nfG1hdGNoX2VuZHxtYXRjaGVkX2dyb3VwfG1hdGNoZWRfc3RyaW5nfG1heHxtYXhfYXJyYXlfbGVuZ3RofG1heF9iaWdfaW50fG1heF9lbHR8bWF4X2Zsb2F0fG1heF9pbnR8bWF4X251bXxtYXhfc3RyaW5nX2xlbmd0aHxtZW18bWVtX2Fzc29jfG1lbV9hc3NxfG1lbXF8bWVyZ2V8bWlufG1pbl9iaWdfaW50fG1pbl9lbHR8bWluX2Zsb2F0fG1pbl9pbnR8bWluX251bXxtaW5vcnxtaW51c19iaWdfaW50fG1pbnVzX251bXxtaW51c19vbmV8bWtkaXJ8bWtmaWZvfG1rdGltZXxtb2R8bW9kX2JpZ19pbnR8bW9kX2Zsb2F0fG1vZF9udW18bW9kZnxtb3VzZV9wb3N8bW92ZXRvfG11bHxtdWx0X2JpZ19pbnR8bXVsdF9pbnRfYmlnX2ludHxtdWx0X251bXxuYW58bmFycm93fG5hdF9vZl9udW18bmF0aXZlaW50fG5lZ3xuZWdfaW5maW5pdHl8bmV3X2Jsb2NrfG5ld19jaGFubmVsfG5ld19tZXRob2R8bmV3X3ZhcmlhYmxlfG5leHR8bmV4dGtleXxuaWNlfG5pY2V8bm9fc2Nhbl90YWd8bm9ybXxub3JtMnxub3R8bnBlZWt8bnRofG50aF9kaW18bnVtX2RpZ2l0c19iaWdfaW50fG51bV9kaW1zfG51bV9vZl9iaWdfaW50fG51bV9vZl9pbnR8bnVtX29mX25hdHxudW1fb2ZfcmF0aW98bnVtX29mX3N0cmluZ3xPfG9ianxvYmplY3RfdGFnfG9jYW1sX3ZlcnNpb258b2ZfYXJyYXl8b2ZfY2hhbm5lbHxvZl9mbG9hdHxvZl9pbnR8b2ZfaW50MzJ8b2ZfbGlzdHxvZl9uYXRpdmVpbnR8b2Zfc3RyaW5nfG9uZXxvcGVuVGt8b3Blbl9ib3h8b3Blbl9jb25uZWN0aW9ufG9wZW5fZ3JhcGh8b3Blbl9oYm94fG9wZW5faG92Ym94fG9wZW5faHZib3h8b3Blbl9pbnxvcGVuX2luX2JpbnxvcGVuX2luX2dlbnxvcGVuX291dHxvcGVuX291dF9iaW58b3Blbl9vdXRfZ2VufG9wZW5fcHJvY2Vzc3xvcGVuX3Byb2Nlc3NfZnVsbHxvcGVuX3Byb2Nlc3NfaW58b3Blbl9wcm9jZXNzX291dHxvcGVuX3N1YndpbmRvd3xvcGVuX3RhZ3xvcGVuX3Rib3h8b3Blbl90ZW1wX2ZpbGV8b3Blbl92Ym94fG9wZW5kYm18b3BlbmRpcnxvcGVuZmlsZXxvcnxvc190eXBlfG91dF9jaGFubmVsX2xlbmd0aHxvdXRfY2hhbm5lbF9vZl9kZXNjcnxvdXRwdXR8b3V0cHV0X2JpbmFyeV9pbnR8b3V0cHV0X2J1ZmZlcnxvdXRwdXRfYnl0ZXxvdXRwdXRfY2hhcnxvdXRwdXRfc3RyaW5nfG91dHB1dF92YWx1ZXxvdmVyX21heF9ib3hlc3xwYWNrfHBhcmFtc3xwYXJlbnRfZGlyX25hbWV8cGFyc2V8cGFyc2VfYXJndnxwYXJ0aXRpb258cGF1c2V8cGVla3xwaXBlfHBpeGVsc3xwbGFjZXxwbG90fHBsb3RzfHBvaW50X2NvbG9yfHBvbGFyfHBvbGx8cG9wfHBvc19pbnxwb3Nfb3V0fHBvd3xwb3dlcl9iaWdfaW50X3Bvc2l0aXZlX2JpZ19pbnR8cG93ZXJfYmlnX2ludF9wb3NpdGl2ZV9pbnR8cG93ZXJfaW50X3Bvc2l0aXZlX2JpZ19pbnR8cG93ZXJfaW50X3Bvc2l0aXZlX2ludHxwb3dlcl9udW18cHBfY2xvc2VfYm94fHBwX2Nsb3NlX3RhZ3xwcF9jbG9zZV90Ym94fHBwX2ZvcmNlX25ld2xpbmV8cHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uc3xwcF9nZXRfZWxsaXBzaXNfdGV4dHxwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnN8cHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zfHBwX2dldF9tYXJnaW58cHBfZ2V0X21hcmtfdGFnc3xwcF9nZXRfbWF4X2JveGVzfHBwX2dldF9tYXhfaW5kZW50fHBwX2dldF9wcmludF90YWdzfHBwX29wZW5fYm94fHBwX29wZW5faGJveHxwcF9vcGVuX2hvdmJveHxwcF9vcGVuX2h2Ym94fHBwX29wZW5fdGFnfHBwX29wZW5fdGJveHxwcF9vcGVuX3Zib3h8cHBfb3Zlcl9tYXhfYm94ZXN8cHBfcHJpbnRfYXN8cHBfcHJpbnRfYm9vbHxwcF9wcmludF9icmVha3xwcF9wcmludF9jaGFyfHBwX3ByaW50X2N1dHxwcF9wcmludF9mbG9hdHxwcF9wcmludF9mbHVzaHxwcF9wcmludF9pZl9uZXdsaW5lfHBwX3ByaW50X2ludHxwcF9wcmludF9uZXdsaW5lfHBwX3ByaW50X3NwYWNlfHBwX3ByaW50X3N0cmluZ3xwcF9wcmludF90YWJ8cHBfcHJpbnRfdGJyZWFrfHBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnN8cHBfc2V0X2VsbGlwc2lzX3RleHR8cHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbHxwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnN8cHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zfHBwX3NldF9tYXJnaW58cHBfc2V0X21hcmtfdGFnc3xwcF9zZXRfbWF4X2JveGVzfHBwX3NldF9tYXhfaW5kZW50fHBwX3NldF9wcmludF90YWdzfHBwX3NldF90YWJ8cHBfc2V0X3RhZ3N8cHJlZHxwcmVkX2JpZ19pbnR8cHJlZF9udW18cHJlcnJfY2hhcnxwcmVycl9lbmRsaW5lfHByZXJyX2Zsb2F0fHByZXJyX2ludHxwcmVycl9uZXdsaW5lfHByZXJyX3N0cmluZ3xwcmludHxwcmludF9hc3xwcmludF9ib29sfHByaW50X2JyZWFrfHByaW50X2NoYXJ8cHJpbnRfY3V0fHByaW50X2VuZGxpbmV8cHJpbnRfZmxvYXR8cHJpbnRfZmx1c2h8cHJpbnRfaWZfbmV3bGluZXxwcmludF9pbnR8cHJpbnRfbmV3bGluZXxwcmludF9zcGFjZXxwcmludF9zdGF0fHByaW50X3N0cmluZ3xwcmludF90YWJ8cHJpbnRfdGJyZWFrfHByaW50Znxwcm9oaWJpdHxwdWJsaWNfbWV0aG9kX2xhYmVsfHB1c2h8cHV0ZW52fHF1b19udW18cXVvbW9kX2JpZ19pbnR8cXVvdGV8cmFpc2V8cmFpc2Vfd2luZG93fHJhdGlvX29mX251bXxyY29udGFpbnNfZnJvbXxyZWFkfHJlYWRfZmxvYXR8cmVhZF9pbnR8cmVhZF9rZXl8cmVhZF9saW5lfHJlYWRkaXJ8cmVhZGRpcnxyZWFkbGlua3xyZWFsbHlfaW5wdXR8cmVjZWl2ZXxyZWN2fHJlY3Zmcm9tfHJlZHxyZWZ8cmVnZXhwfHJlZ2V4cF9jYXNlX2ZvbGR8cmVnZXhwX3N0cmluZ3xyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZHxyZWdpc3RlcnxyZWdpc3Rlcl9leGNlcHRpb258cmVtfHJlbWVtYmVyX21vZGV8cmVtb3ZlfHJlbW92ZV9hc3NvY3xyZW1vdmVfYXNzcXxyZW5hbWV8cmVwbGFjZXxyZXBsYWNlX2ZpcnN0fHJlcGxhY2VfbWF0Y2hlZHxyZXByfHJlc2V0fHJlc2hhcGV8cmVzaGFwZV8xfHJlc2hhcGVfMnxyZXNoYXBlXzN8cmV2fHJldl9hcHBlbmR8cmV2X21hcHxyZXZfbWFwMnxyZXdpbmRkaXJ8cmdifHJoc19lbmR8cmhzX2VuZF9wb3N8cmhzX3N0YXJ0fHJoc19zdGFydF9wb3N8cmluZGV4fHJpbmRleF9mcm9tfHJsaW5ldG98cm1kaXJ8cm1vdmV0b3xyb3VuZF9udW18cnVuX2luaXRpYWxpemVyc3xydW5faW5pdGlhbGl6ZXJzX29wdHxzY2FuZnxzZWFyY2hfYmFja3dhcmR8c2VhcmNoX2ZvcndhcmR8c2Vla19pbnxzZWVrX291dHxzZWxlY3R8c2VsZnxzZWxmX2luaXR8c2VuZHxzZW5kdG98c2V0fHNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnN8c2V0X2FwcHJveF9wcmludGluZ3xzZXRfYmluYXJ5X21vZGVfaW58c2V0X2JpbmFyeV9tb2RlX291dHxzZXRfY2xvc2Vfb25fZXhlY3xzZXRfY2xvc2Vfb25fZXhlY3xzZXRfY29sb3J8c2V0X2VsbGlwc2lzX3RleHR8c2V0X2Vycm9yX3doZW5fbnVsbF9kZW5vbWluYXRvcnxzZXRfZmllbGR8c2V0X2Zsb2F0aW5nX3ByZWNpc2lvbnxzZXRfZm9udHxzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsfHNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uc3xzZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnN8c2V0X2xpbmVfd2lkdGh8c2V0X21hcmdpbnxzZXRfbWFya190YWdzfHNldF9tYXhfYm94ZXN8c2V0X21heF9pbmRlbnR8c2V0X21ldGhvZHxzZXRfbm9uYmxvY2t8c2V0X25vbmJsb2NrfHNldF9ub3JtYWxpemVfcmF0aW98c2V0X25vcm1hbGl6ZV9yYXRpb193aGVuX3ByaW50aW5nfHNldF9wcmludF90YWdzfHNldF9zaWduYWx8c2V0X3N0YXRlfHNldF90YWJ8c2V0X3RhZ3xzZXRfdGFnc3xzZXRfdGV4dF9zaXplfHNldF93aW5kb3dfdGl0bGV8c2V0Z2lkfHNldGdpZHxzZXRpdGltZXJ8c2V0aXRpbWVyfHNldHNpZHxzZXRzaWR8c2V0c29ja29wdHxzZXRzb2Nrb3B0fHNldHNvY2tvcHRfZmxvYXR8c2V0c29ja29wdF9mbG9hdHxzZXRzb2Nrb3B0X2ludHxzZXRzb2Nrb3B0X2ludHxzZXRzb2Nrb3B0X29wdGludHxzZXRzb2Nrb3B0X29wdGludHxzZXR1aWR8c2V0dWlkfHNoaWZ0X2xlZnR8c2hpZnRfbGVmdHxzaGlmdF9sZWZ0fHNoaWZ0X3JpZ2h0fHNoaWZ0X3JpZ2h0fHNoaWZ0X3JpZ2h0fHNoaWZ0X3JpZ2h0X2xvZ2ljYWx8c2hpZnRfcmlnaHRfbG9naWNhbHxzaGlmdF9yaWdodF9sb2dpY2FsfHNob3dfYnVja2V0c3xzaHV0ZG93bnxzaHV0ZG93bnxzaHV0ZG93bl9jb25uZWN0aW9ufHNodXRkb3duX2Nvbm5lY3Rpb258c2lnYWJydHxzaWdhbHJtfHNpZ2NobGR8c2lnY29udHxzaWdmcGV8c2lnaHVwfHNpZ2lsbHxzaWdpbnR8c2lna2lsbHxzaWduX2JpZ19pbnR8c2lnbl9udW18c2lnbmFsfHNpZ25hbHxzaWdwZW5kaW5nfHNpZ3BlbmRpbmd8c2lncGlwZXxzaWdwcm9jbWFza3xzaWdwcm9jbWFza3xzaWdwcm9mfHNpZ3F1aXR8c2lnc2VndnxzaWdzdG9wfHNpZ3N1c3BlbmR8c2lnc3VzcGVuZHxzaWd0ZXJtfHNpZ3RzdHB8c2lndHRpbnxzaWd0dG91fHNpZ3VzcjF8c2lndXNyMnxzaWd2dGFscm18c2lufHNpbmdsZXRvbnxzaW5ofHNpemV8c2l6ZXxzaXplX3h8c2l6ZV95fHNsZWVwfHNsZWVwfHNsZWVwfHNsaWNlX2xlZnR8c2xpY2VfbGVmdHxzbGljZV9sZWZ0XzF8c2xpY2VfbGVmdF8yfHNsaWNlX3JpZ2h0fHNsaWNlX3JpZ2h0fHNsaWNlX3JpZ2h0XzF8c2xpY2VfcmlnaHRfMnxzbmR8c29ja2V0fHNvY2tldHxzb2NrZXR8c29ja2V0cGFpcnxzb2NrZXRwYWlyfHNvcnR8c291bmR8c3BsaXR8c3BsaXRfZGVsaW18c3ByaW50ZnxzcHJpbnRmfHNxcnR8c3FydHxzcXJ0X2JpZ19pbnR8c3F1YXJlX2JpZ19pbnR8c3F1YXJlX251bXxzc2NhbmZ8c3RhYmxlX3NvcnR8c3RhYmxlX3NvcnR8c3RhYmxlX3NvcnR8c3RhYmxlX3NvcnR8c3RhYmxlX3NvcnR8c3RhYmxlX3NvcnR8c3RhdHxzdGF0fHN0YXR8c3RhdHxzdGF0fHN0YXRzfHN0YXRzfHN0ZF9mb3JtYXR0ZXJ8c3RkYnVmfHN0ZGVycnxzdGRlcnJ8c3RkZXJyfHN0ZGlifHN0ZGlufHN0ZGlufHN0ZGlufHN0ZG91dHxzdGRvdXR8c3Rkb3V0fHN0cl9mb3JtYXR0ZXJ8c3RyaW5nfHN0cmluZ19hZnRlcnxzdHJpbmdfYmVmb3JlfHN0cmluZ19tYXRjaHxzdHJpbmdfb2ZfYmlnX2ludHxzdHJpbmdfb2ZfYm9vbHxzdHJpbmdfb2ZfZmxvYXR8c3RyaW5nX29mX2Zvcm1hdHxzdHJpbmdfb2ZfaW5ldF9hZGRyfHN0cmluZ19vZl9pbmV0X2FkZHJ8c3RyaW5nX29mX2ludHxzdHJpbmdfb2ZfbnVtfHN0cmluZ19wYXJ0aWFsX21hdGNofHN0cmluZ190YWd8c3VifHN1YnxzdWJfYmlnX2ludHxzdWJfbGVmdHxzdWJfbnVtfHN1Yl9yaWdodHxzdWJzZXR8c3Vic2V0fHN1YnN0aXR1dGVfZmlyc3R8c3Vic3RyaW5nfHN1Y2N8c3VjY3xzdWNjfHN1Y2N8c3VjY19iaWdfaW50fHN1Y2NfbnVtfHN5bWJvbF9lbmR8c3ltYm9sX2VuZF9wb3N8c3ltYm9sX3N0YXJ0fHN5bWJvbF9zdGFydF9wb3N8c3ltbGlua3xzeW1saW5rfHN5bmN8c3luY2hyb25pemV8c3lzdGVtfHN5c3RlbXxzeXN0ZW18dGFnfHRha2V8dGFufHRhbmh8dGNkcmFpbnx0Y2RyYWlufHRjZmxvd3x0Y2Zsb3d8dGNmbHVzaHx0Y2ZsdXNofHRjZ2V0YXR0cnx0Y2dldGF0dHJ8dGNzZW5kYnJlYWt8dGNzZW5kYnJlYWt8dGNzZXRhdHRyfHRjc2V0YXR0cnx0ZW1wX2ZpbGV8dGV4dF9zaXplfHRpbWV8dGltZXx0aW1lfHRpbWVkX3JlYWR8dGltZWRfd3JpdGV8dGltZXN8dGltZXN8dGx8dGx8dGx8dG9fYnVmZmVyfHRvX2NoYW5uZWx8dG9fZmxvYXR8dG9faGV4fHRvX2ludHx0b19pbnQzMnx0b19saXN0fHRvX2xpc3R8dG9fbGlzdHx0b19uYXRpdmVpbnR8dG9fc3RyaW5nfHRvX3N0cmluZ3x0b19zdHJpbmd8dG9fc3RyaW5nfHRvX3N0cmluZ3x0b3B8dG9wfHRvdGFsX3NpemV8dHJhbnNmZXJ8dHJhbnNwfHRydW5jYXRlfHRydW5jYXRlfHRydW5jYXRlfHRydW5jYXRlfHRydW5jYXRlfHRydW5jYXRlfHRyeV9sb2NrfHVtYXNrfHVtYXNrfHVuY2FwaXRhbGl6ZXx1bmNhcGl0YWxpemV8dW5jYXBpdGFsaXplfHVuaW9ufHVuaW9ufHVuaXRfYmlnX2ludHx1bmxpbmt8dW5saW5rfHVubG9ja3x1bm1hcnNoYWx8dW5zYWZlX2JsaXR8dW5zYWZlX2ZpbGx8dW5zYWZlX2dldHx1bnNhZmVfZ2V0fHVuc2FmZV9zZXR8dW5zYWZlX3NldHx1cGRhdGV8dXBwZXJjYXNlfHVwcGVyY2FzZXx1cHBlcmNhc2V8dXBwZXJjYXNlfHVzYWdlfHV0aW1lc3x1dGltZXN8d2FpdHx3YWl0fHdhaXR8d2FpdHx3YWl0X25leHRfZXZlbnR8d2FpdF9waWR8d2FpdF9yZWFkfHdhaXRfc2lnbmFsfHdhaXRfdGltZWRfcmVhZHx3YWl0X3RpbWVkX3dyaXRlfHdhaXRfd3JpdGV8d2FpdHBpZHx3aGl0ZXx3aWRlbnx3aW5kb3dfaWR8d29yZF9zaXplfHdyYXB8d3JhcF9hYm9ydHx3cml0ZXx5ZWxsb3d8eWllbGR8emVyb3x6ZXJvX2JpZ19pbnR8QXJnfEFyaXRoX3N0YXR1c3xBcnJheXxBcnJheTF8QXJyYXkyfEFycmF5M3xBcnJheUxhYmVsc3xCaWdfaW50fEJpZ2FycmF5fEJ1ZmZlcnxDYWxsYmFja3xDYW1saW50ZXJuYWxPT3xDaGFyfENvbXBsZXh8Q29uZGl0aW9ufERibXxEaWdlc3R8RHlubGlua3xFdmVudHxGaWxlbmFtZXxGb3JtYXR8R2N8R2VuYXJyYXl8R2VubGV4fEdyYXBoaWNzfEdyYXBoaWNzWDExfEhhc2h0Ymx8SW50MzJ8SW50NjR8TGFyZ2VGaWxlfExhenl8TGV4aW5nfExpc3R8TGlzdExhYmVsc3xNYWtlfE1hcHxNYXJzaGFsfE1vcmVMYWJlbHN8TXV0ZXh8TmF0aXZlaW50fE51bXxPYmp8T298UGFyc2luZ3xQZXJ2YXNpdmVzfFByaW50ZXhjfFByaW50ZnxRdWV1ZXxSYW5kb218U2NhbmZ8U2Nhbm5pbmd8U2V0fFNvcnR8U3RhY2t8U3RhdGV8U3RkTGFiZWxzfFN0cnxTdHJlYW18U3RyaW5nfFN0cmluZ0xhYmVsc3xTeXN8VGhyZWFkfFRocmVhZFVuaXh8VGt8VW5peHxVbml4TGFiZWxzfFdlYWsiLnNwbGl0KCJ8IikpLHI9Iig/Oig/OlsxLTldXFxkKil8KD86MCkpIixzPSIoPzowW29PXT9bMC03XSspIixvPSIoPzowW3hYXVtcXGRBLUZhLWZdKykiLHU9Iig/OjBbYkJdWzAxXSspIixhPSIoPzoiK3IrInwiK3MrInwiK28rInwiK3UrIikiLGY9Iig/OltlRV1bKy1dP1xcZCspIixsPSIoPzpcXC5cXGQrKSIsYz0iKD86XFxkKykiLGg9Iig/Oig/OiIrYysiPyIrbCsiKXwoPzoiK2MrIlxcLikpIixwPSIoPzooPzoiK2grInwiK2MrIikiK2YrIikiLGQ9Iig/OiIrcCsifCIraCsiKSI7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXChcXCouKj9cXCpcXClcXHMqPyQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXChcXCouKiIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4nIn0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiciJyxuZXh0OiJxc3RyaW5nIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiKD86IitkKyJ8XFxkKylbakpdXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDpkfSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OmErIlxcYiJ9LHt0b2tlbjpmdW5jdGlvbihyKXtyZXR1cm4gZS5oYXNPd25Qcm9wZXJ0eShyKT8ia2V5d29yZCI6dC5oYXNPd25Qcm9wZXJ0eShyKT8iY29uc3RhbnQubGFuZ3VhZ2UiOm4uaGFzT3duUHJvcGVydHkocik/InN1cHBvcnQuZnVuY3Rpb24iOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcK1xcLnxcXC1cXC58XFwqXFwufFxcL1xcLnwjfDs7fFxcK3xcXC18XFwqfFxcKlxcKlxcL3xcXC9cXC98JXw8PHw+PnwmfFxcfHxcXF58fnw8fD58PD18PT58PT18IT18PD58PC18PSJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF0pfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcKSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxc3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6JyInLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX19O3IuaW5oZXJpdHMobyxzKSx0Lk9jYW1sSGlnaGxpZ2h0UnVsZXM9b30pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9yYW5nZSIpLlJhbmdlLGk9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuL15ccyskLy50ZXN0KGUpPy9eXHMqXH0vLnRlc3QodCk6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldExpbmUodCksaT1uLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFpKXJldHVybiAwO3ZhciBzPWlbMV0ubGVuZ3RoLG89ZS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dCxjb2x1bW46c30pO2lmKCFvfHxvLnJvdz09dClyZXR1cm4gMDt2YXIgdT10aGlzLiRnZXRJbmRlbnQoZS5nZXRMaW5lKG8ucm93KSk7ZS5yZXBsYWNlKG5ldyByKHQsMCx0LHMtMSksdSl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gdD90WzFdOiIifX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9aX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-perl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9wZXJsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3BlcmxfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dCIpLk1vZGUscz1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsbz1lKCIuL3BlcmxfaGlnaGxpZ2h0X3J1bGVzIikuUGVybEhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsYT1lKCIuLi9yYW5nZSIpLlJhbmdlLGY9ZSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGw9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyB1LHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBmfTtyLmluaGVyaXRzKGwsaSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT0hMCxzPS9eKFxzKikjLztmb3IodmFyIG89bjtvPD1yO28rKylpZighcy50ZXN0KHQuZ2V0TGluZShvKSkpe2k9ITE7YnJlYWt9aWYoaSl7dmFyIHU9bmV3IGEoMCwwLDAsMCk7Zm9yKHZhciBvPW47bzw9cjtvKyspe3ZhciBmPXQuZ2V0TGluZShvKSxsPWYubWF0Y2gocyk7dS5zdGFydC5yb3c9byx1LmVuZC5yb3c9byx1LmVuZC5jb2x1bW49bFswXS5sZW5ndGgsdC5yZXBsYWNlKHUsbFsxXSl9fWVsc2UgdC5pbmRlbnRSb3dzKG4sciwiIyIpfSx0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRnZXRJbmRlbnQodCksaT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2Vucyh0LGUpLHM9aS50b2tlbnM7aWYocy5sZW5ndGgmJnNbcy5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiByO2lmKGU9PSJzdGFydCIpe3ZhciBvPXQubWF0Y2goL14uKltce1woXFtcOl1ccyokLyk7byYmKHIrPW4pfXJldHVybiByfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KHQsbil9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQodCxuKX19LmNhbGwobC5wcm90b3R5cGUpLHQuTW9kZT1sfSksZGVmaW5lKCJhY2UvbW9kZS9wZXJsX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsbz1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgiYmFzZXxjb25zdGFudHxjb250aW51ZXxlbHNlfGVsc2lmfGZvcnxmb3JlYWNofGZvcm1hdHxnb3RvfGlmfGxhc3R8bG9jYWx8bXl8bmV4dHxub3xwYWNrYWdlfHBhcmVudHxyZWRvfHJlcXVpcmV8c2NhbGFyfHN1Ynx1bmxlc3N8dW50aWx8d2hpbGV8dXNlfHZhcnMiLnNwbGl0KCJ8IikpLHQ9aS5hcnJheVRvTWFwKCJBUkdWfEVOVnxJTkN8U0lHIi5zcGxpdCgifCIpKSxuPWkuYXJyYXlUb01hcCgiZ2V0cHJvdG9ieW51bWJlcnxnZXRwcm90b2J5bmFtZXxnZXRzZXJ2YnluYW1lfGdldGhvc3RieWFkZHJ8Z2V0aG9zdGJ5bmFtZXxnZXRzZXJ2Ynlwb3J0fGdldG5ldGJ5YWRkcnxnZXRuZXRieW5hbWV8Z2V0c29ja25hbWV8Z2V0cGVlcm5hbWV8c2V0cHJpb3JpdHl8Z2V0cHJvdG9lbnR8c2V0cHJvdG9lbnR8Z2V0cHJpb3JpdHl8ZW5kcHJvdG9lbnR8Z2V0c2VydmVudHxzZXRzZXJ2ZW50fGVuZHNlcnZlbnR8c2V0aG9zdGVudHxzb2NrZXRwYWlyfGdldHNvY2tvcHR8Z2V0aG9zdGVudHxlbmRob3N0ZW50fHNldHNvY2tvcHR8c2V0bmV0ZW50fHF1b3RlbWV0YXxsb2NhbHRpbWV8cHJvdG90eXBlfGdldG5ldGVudHxlbmRuZXRlbnR8cmV3aW5kZGlyfHdhbnRhcnJheXxnZXRwd3VpZHxjbG9zZWRpcnxnZXRsb2dpbnxyZWFkbGlua3xlbmRncmVudHxnZXRncmdpZHxnZXRncm5hbXxzaG13cml0ZXxzaHV0ZG93bnxyZWFkbGluZXxlbmRwd2VudHxzZXRncmVudHxyZWFkcGlwZXxmb3JtbGluZXx0cnVuY2F0ZXxkYm1jbG9zZXxzeXN3cml0ZXxzZXRwd2VudHxnZXRwd25hbXxnZXRncmVudHxnZXRwd2VudHx1Y2ZpcnN0fHN5c3JlYWR8c2V0cGdycHxzaG1yZWFkfHN5c3NlZWt8c3lzb3Blbnx0ZWxsZGlyfGRlZmluZWR8b3BlbmRpcnxjb25uZWN0fGxjZmlyc3R8Z2V0cHBpZHxiaW5tb2RlfHN5c2NhbGx8c3ByaW50ZnxnZXRwZ3JwfHJlYWRkaXJ8c2Vla2Rpcnx3YWl0cGlkfHJldmVyc2V8dW5zaGlmdHxzeW1saW5rfGRibW9wZW58c2VtZ2V0fG1zZ3JjdnxyZW5hbWV8bGlzdGVufGNocm9vdHxtc2dzbmR8c2htY3RsfGFjY2VwdHx1bnBhY2t8ZXhpc3RzfGZpbGVub3xzaG1nZXR8c3lzdGVtfHVubGlua3xwcmludGZ8Z210aW1lfG1zZ2N0bHxzZW1jdGx8dmFsdWVzfHJpbmRleHxzdWJzdHJ8c3BsaWNlfGxlbmd0aHxtc2dnZXR8c2VsZWN0fHNvY2tldHxyZXR1cm58Y2FsbGVyfGRlbGV0ZXxhbGFybXxpb2N0bHxpbmRleHx1bmRlZnxsc3RhdHx0aW1lc3xzcmFuZHxjaG93bnxmY250bHxjbG9zZXx3cml0ZXx1bWFza3xybWRpcnxzdHVkeXxzbGVlcHxjaG9tcHx1bnRpZXxwcmludHx1dGltZXxta2RpcnxhdGFuMnxzcGxpdHxjcnlwdHxmbG9ja3xjaG1vZHxCRUdJTnxibGVzc3xjaGRpcnxzZW1vcHxzaGlmdHxyZXNldHxsaW5rfHN0YXR8Y2hvcHxncmVwfGZvcmt8ZHVtcHxqb2lufG9wZW58dGVsbHxwaXBlfGV4aXR8Z2xvYnx3YXJufGVhY2h8YmluZHxzb3J0fHBhY2t8ZXZhbHxwdXNofGtleXN8Z2V0Y3xraWxsfHNlZWt8c3FydHxzZW5kfHdhaXR8cmFuZHx0aWVkfHJlYWR8dGltZXxleGVjfHJlY3Z8ZW9mfGNocnxpbnR8b3JkfGV4cHxwb3N8cG9wfHNpbnxsb2d8YWJzfG9jdHxoZXh8dGllfGNvc3x2ZWN8RU5EfHJlZnxtYXB8ZGllfHVjfGxjfGRvIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IiMuKiQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbL10oPzooPzpcXFsoPzpcXFxcXXxbXlxcXV0pK1xcXSl8KD86XFxcXC98W15cXF0vXSkpKlsvXVxcdypcXHMqKD89WykuLDtdfCQpIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdJ30se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OidbIl0uKlxcXFwkJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiWyddLipcXFxcJCIsbmV4dDoicXN0cmluZyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IjB4WzAtOWEtZkEtRl0rXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ZnVuY3Rpb24ocil7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkocik/ImtleXdvcmQiOnQuaGFzT3duUHJvcGVydHkocik/ImNvbnN0YW50Lmxhbmd1YWdlIjpuLmhhc093blByb3BlcnR5KHIpPyJzdXBwb3J0LmZ1bmN0aW9uIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXC5cXC5cXC58XFx8XFx8PXw+Pj18PDw9fDw9PnwmJj18PT58IX58XFxePXwmPXxcXHw9fFxcLj18eD18JT18XFwvPXxcXCo9fFxcLT18XFwrPXw9fnxcXCpcXCp8XFwtXFwtfFxcLlxcLnxcXHxcXHx8JiZ8XFwrXFwrfFxcLT58IT18PT18Pj18PD18Pj58PDx8LHw9fFxcP1xcOnxcXF58XFx8fHh8JXxcXC98XFwqfDx8JnxcXFxcfH58IXw+fFxcLnxcXC18XFwrfFxcLUN8XFwtYnxcXC1TfFxcLXV8XFwtdHxcXC1wfFxcLWx8XFwtZHxcXC1mfFxcLWd8XFwtc3xcXC16fFxcLWt8XFwtZXxcXC1PfFxcLVR8XFwtQnxcXC1NfFxcLUF8XFwtWHxcXC1XfFxcLWN8XFwtUnxcXC1vfFxcLXh8XFwtd3xcXC1yfFxcYig/OmFuZHxjbXB8ZXF8Z2V8Z3R8bGV8bHR8bmV8bm90fG9yfHhvcikifSx7dG9rZW46ImxwYXJlbiIscmVnZXg6IltbKHtdIn0se3Rva2VuOiJycGFyZW4iLHJlZ2V4OiJbXFxdKX1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OicoPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/IicsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqPyciLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX19O3IuaW5oZXJpdHMobyxzKSx0LlBlcmxIaWdobGlnaHRSdWxlcz1vfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXlxzKyQvLnRlc3QoZSk/L15ccypcfS8udGVzdCh0KTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0TGluZSh0KSxpPW4ubWF0Y2goL14oXHMqXH0pLyk7aWYoIWkpcmV0dXJuIDA7dmFyIHM9aVsxXS5sZW5ndGgsbz1lLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp0LGNvbHVtbjpzfSk7aWYoIW98fG8ucm93PT10KXJldHVybiAwO3ZhciB1PXRoaXMuJGdldEluZGVudChlLmdldExpbmUoby5yb3cpKTtlLnJlcGxhY2UobmV3IHIodCwwLHQscy0xKSx1KX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14oXHMrKS8pO3JldHVybiB0P3RbMV06IiJ9fSkuY2FsbChpLnByb3RvdHlwZSksdC5NYXRjaGluZ0JyYWNlT3V0ZGVudD1pfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxzPWUoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsbz10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtyLmluaGVyaXRzKG8scyksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pLHM9ci5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleDtpZihzWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soZSxzWzFdLG4sbyk7dmFyIHU9ZS5nZXRDb21tZW50Rm9sZFJhbmdlKG4sbytzWzBdLmxlbmd0aCk7cmV0dXJuIHUuZW5kLmNvbHVtbi09Mix1fWlmKHQhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIHM9ci5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihzKXt2YXIgbz1zLmluZGV4K3NbMF0ubGVuZ3RoO2lmKHNbMl0pe3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8pO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX12YXIgYT17cm93Om4sY29sdW1uOm99LGY9ZS4kZmluZE9wZW5pbmdCcmFja2V0KHNbMV0sYSk7aWYoIWYpcmV0dXJuO3JldHVybiBmLmNvbHVtbisrLGEuY29sdW1uLS0saS5mcm9tUG9pbnRzKGYsYSl9fX0uY2FsbChvLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2UsaT10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChyKT8ic3RhcnQiOnQ9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3Qocik/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT0vXFMvLHM9ZS5nZXRMaW5lKHQpLG89cy5zZWFyY2goaSk7aWYobz09LTEpcmV0dXJuO3ZhciB1PW58fHMubGVuZ3RoLGE9ZS5nZXRMZW5ndGgoKSxmPXQsbD10O3doaWxlKCsrdDxhKXt2YXIgYz1lLmdldExpbmUodCkuc2VhcmNoKGkpO2lmKGM9PS0xKWNvbnRpbnVlO2lmKGM8PW8pYnJlYWs7bD10fWlmKGw+Zil7dmFyIGg9ZS5nZXRMaW5lKGwpLmxlbmd0aDtyZXR1cm4gbmV3IHIoZix1LGwsaCl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oZSx0LG4saSxzKXt2YXIgbz17cm93Om4sY29sdW1uOmkrMX0sdT1lLiRmaW5kQ2xvc2luZ0JyYWNrZXQodCxvLHMpO2lmKCF1KXJldHVybjt2YXIgYT1lLmZvbGRXaWRnZXRzW3Uucm93XTtyZXR1cm4gYT09bnVsbCYmKGE9dGhpcy5nZXRGb2xkV2lkZ2V0KGUsdS5yb3cpKSxhPT0ic3RhcnQiJiZ1LnJvdz5vLnJvdyYmKHUucm93LS0sdS5jb2x1bW49ZS5nZXRMaW5lKHUucm93KS5sZW5ndGgpLHIuZnJvbVBvaW50cyhvLHUpfX0pLmNhbGwoaS5wcm90b3R5cGUpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-pgsql.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9wZ3NxbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9wZ3NxbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiYWNlL2xpYi9vb3AiKSxpPWUoImFjZS9tb2RlL3RleHQiKS5Nb2RlLHM9ZSgiYWNlL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoImFjZS9tb2RlL3Bnc3FsX2hpZ2hsaWdodF9ydWxlcyIpLlBnc3FsSGlnaGxpZ2h0UnVsZXMsdT1lKCJhY2UvcmFuZ2UiKS5SYW5nZSxhPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBzKChuZXcgbykuZ2V0UnVsZXMoKSl9O3IuaW5oZXJpdHMoYSxpKSxmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPSEwLHM9L14oXHMqKS0tLztmb3IodmFyIG89bjtvPD1yO28rKylpZighcy50ZXN0KHQuZ2V0TGluZShvKSkpe2k9ITE7YnJlYWt9aWYoaSl7dmFyIGE9bmV3IHUoMCwwLDAsMCk7Zm9yKHZhciBvPW47bzw9cjtvKyspe3ZhciBmPXQuZ2V0TGluZShvKSxsPWYubWF0Y2gocyk7YS5zdGFydC5yb3c9byxhLmVuZC5yb3c9byxhLmVuZC5jb2x1bW49bFswXS5sZW5ndGgsdC5yZXBsYWNlKGEsbFsxXSl9fWVsc2UgdC5pbmRlbnRSb3dzKG4sciwiLS0iKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9PSJzdGFydCJ8fGU9PSJrZXl3b3JkLnN0YXRlbWVudEVuZCI/IiI6dGhpcy4kZ2V0SW5kZW50KHQpfX0uY2FsbChhLnByb3RvdHlwZSksdC5Nb2RlPWF9KSxkZWZpbmUoImFjZS9tb2RlL3Bnc3FsX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9wZXJsX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3B5dGhvbl9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiYWNlL2xpYi9vb3AiKSxpPWUoImFjZS9saWIvbGFuZyIpLHM9ZSgiLi9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiKS5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXMsbz1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9wZXJsX2hpZ2hsaWdodF9ydWxlcyIpLlBlcmxIaWdobGlnaHRSdWxlcyxhPWUoIi4vcHl0aG9uX2hpZ2hsaWdodF9ydWxlcyIpLlB5dGhvbkhpZ2hsaWdodFJ1bGVzLGY9ZnVuY3Rpb24oKXt2YXIgZT1pLmFycmF5VG9NYXAoImFib3J0fGFic29sdXRlfGFic3RpbWV8YWNjZXNzfGFjbGl0ZW18YWN0aW9ufGFkZHxhZG1pbnxhZnRlcnxhZ2dyZWdhdGV8YWxsfGFsc298YWx0ZXJ8YWx3YXlzfGFuYWx5c2V8YW5hbHl6ZXxhbmR8YW55fGFueWFycmF5fGFueWVsZW1lbnR8YW55ZW51bXxhbnlub25hcnJheXxhcnJheXxhc3xhc2N8YXNzZXJ0aW9ufGFzc2lnbm1lbnR8YXN5bW1ldHJpY3xhdHxhdHRyaWJ1dGV8YXV0aG9yaXphdGlvbnxiYWNrd2FyZHxiZWZvcmV8YmVnaW58YmV0d2VlbnxiaWdpbnR8YmluYXJ5fGJpdHxib29sfGJvb2xlYW58Ym90aHxib3h8YnBjaGFyfGJ5fGJ5dGVhfGNhY2hlfGNhbGxlZHxjYXNjYWRlfGNhc2NhZGVkfGNhc2V8Y2FzdHxjYXRhbG9nfGNoYWlufGNoYXJ8Y2hhcmFjdGVyfGNoYXJhY3RlcmlzdGljc3xjaGVja3xjaGVja3BvaW50fGNpZHxjaWRyfGNpcmNsZXxjbGFzc3xjbG9zZXxjbHVzdGVyfGNvYWxlc2NlfGNvbGxhdGV8Y29sbGF0aW9ufGNvbHVtbnxjb21tZW50fGNvbW1lbnRzfGNvbW1pdHxjb21taXR0ZWR8Y29uY3VycmVudGx5fGNvbmZpZ3VyYXRpb258Y29ubmVjdGlvbnxjb25zdHJhaW50fGNvbnN0cmFpbnRzfGNvbnRlbnR8Y29udGludWV8Y29udmVyc2lvbnxjb3B5fGNvc3R8Y3JlYXRlfGNyb3NzfGNzdHJpbmd8Y3N2fGN1cnJlbnR8Y3VycmVudF9jYXRhbG9nfGN1cnJlbnRfZGF0ZXxjdXJyZW50X3JvbGV8Y3VycmVudF9zY2hlbWF8Y3VycmVudF90aW1lfGN1cnJlbnRfdGltZXN0YW1wfGN1cnJlbnRfdXNlcnxjdXJzb3J8Y3ljbGV8ZGF0YXxkYXRhYmFzZXxkYXRlfGRheXxkZWFsbG9jYXRlfGRlY3xkZWNpbWFsfGRlY2xhcmV8ZGVmYXVsdHxkZWZhdWx0c3xkZWZlcnJhYmxlfGRlZmVycmVkfGRlZmluZXJ8ZGVsZXRlfGRlbGltaXRlcnxkZWxpbWl0ZXJzfGRlc2N8ZGljdGlvbmFyeXxkaXNhYmxlfGRpc2NhcmR8ZGlzdGluY3R8ZG98ZG9jdW1lbnR8ZG9tYWlufGRvdWJsZXxkcm9wfGVhY2h8ZWxzZXxlbmFibGV8ZW5jb2Rpbmd8ZW5jcnlwdGVkfGVuZHxlbnVtfGVzY2FwZXxleGNlcHR8ZXhjbHVkZXxleGNsdWRpbmd8ZXhjbHVzaXZlfGV4ZWN1dGV8ZXhpc3RzfGV4cGxhaW58ZXh0ZW5zaW9ufGV4dGVybmFsfGV4dHJhY3R8ZmFsc2V8ZmFtaWx5fGZkd19oYW5kbGVyfGZldGNofGZpcnN0fGZsb2F0fGZsb2F0NHxmbG9hdDh8Zm9sbG93aW5nfGZvcnxmb3JjZXxmb3JlaWdufGZvcndhcmR8ZnJlZXplfGZyb218ZnVsbHxmdW5jdGlvbnxmdW5jdGlvbnN8Z2xvYmFsfGdyYW50fGdyYW50ZWR8Z3JlYXRlc3R8Z3JvdXB8Z3RzdmVjdG9yfGhhbmRsZXJ8aGF2aW5nfGhlYWRlcnxob2xkfGhvdXJ8aWRlbnRpdHl8aWZ8aWxpa2V8aW1tZWRpYXRlfGltbXV0YWJsZXxpbXBsaWNpdHxpbnxpbmNsdWRpbmd8aW5jcmVtZW50fGluZGV4fGluZGV4ZXN8aW5ldHxpbmhlcml0fGluaGVyaXRzfGluaXRpYWxseXxpbmxpbmV8aW5uZXJ8aW5vdXR8aW5wdXR8aW5zZW5zaXRpdmV8aW5zZXJ0fGluc3RlYWR8aW50fGludDJ8aW50MnZlY3RvcnxpbnQ0fGludDh8aW50ZWdlcnxpbnRlcm5hbHxpbnRlcnNlY3R8aW50ZXJ2YWx8aW50b3xpbnZva2VyfGlzfGlzbnVsbHxpc29sYXRpb258am9pbnxrZXl8bGFiZWx8bGFuZ3VhZ2V8bGFuZ3VhZ2VfaGFuZGxlcnxsYXJnZXxsYXN0fGxjX2NvbGxhdGV8bGNfY3R5cGV8bGVhZGluZ3xsZWFzdHxsZWZ0fGxldmVsfGxpa2V8bGltaXR8bGluZXxsaXN0ZW58bG9hZHxsb2NhbHxsb2NhbHRpbWV8bG9jYWx0aW1lc3RhbXB8bG9jYXRpb258bG9ja3xsc2VnfG1hY2FkZHJ8bWFwcGluZ3xtYXRjaHxtYXh2YWx1ZXxtaW51dGV8bWludmFsdWV8bW9kZXxtb25leXxtb250aHxtb3ZlfG5hbWV8bmFtZXN8bmF0aW9uYWx8bmF0dXJhbHxuY2hhcnxuZXh0fG5vfG5vbmV8bm90fG5vdGhpbmd8bm90aWZ5fG5vdG51bGx8bm93YWl0fG51bGx8bnVsbGlmfG51bGxzfG51bWVyaWN8b2JqZWN0fG9mfG9mZnxvZmZzZXR8b2lkfG9pZHN8b2lkdmVjdG9yfG9ufG9ubHl8b3BhcXVlfG9wZXJhdG9yfG9wdGlvbnxvcHRpb25zfG9yfG9yZGVyfG91dHxvdXRlcnxvdmVyfG92ZXJsYXBzfG92ZXJsYXl8b3duZWR8b3duZXJ8cGFyc2VyfHBhcnRpYWx8cGFydGl0aW9ufHBhc3Npbmd8cGFzc3dvcmR8cGF0aHxwZ19hdHRyaWJ1dGV8cGdfYXV0aF9tZW1iZXJzfHBnX2F1dGhpZHxwZ19jbGFzc3xwZ19kYXRhYmFzZXxwZ19ub2RlX3RyZWV8cGdfcHJvY3xwZ190eXBlfHBsYWNpbmd8cGxhbnN8cG9pbnR8cG9seWdvbnxwb3NpdGlvbnxwcmVjZWRpbmd8cHJlY2lzaW9ufHByZXBhcmV8cHJlcGFyZWR8cHJlc2VydmV8cHJpbWFyeXxwcmlvcnxwcml2aWxlZ2VzfHByb2NlZHVyYWx8cHJvY2VkdXJlfHF1b3RlfHJhbmdlfHJlYWR8cmVhbHxyZWFzc2lnbnxyZWNoZWNrfHJlY29yZHxyZWN1cnNpdmV8cmVmfHJlZmN1cnNvcnxyZWZlcmVuY2VzfHJlZ2NsYXNzfHJlZ2NvbmZpZ3xyZWdkaWN0aW9uYXJ5fHJlZ29wZXJ8cmVnb3BlcmF0b3J8cmVncHJvY3xyZWdwcm9jZWR1cmV8cmVndHlwZXxyZWluZGV4fHJlbGF0aXZlfHJlbGVhc2V8cmVsdGltZXxyZW5hbWV8cmVwZWF0YWJsZXxyZXBsYWNlfHJlcGxpY2F8cmVzZXR8cmVzdGFydHxyZXN0cmljdHxyZXR1cm5pbmd8cmV0dXJuc3xyZXZva2V8cmlnaHR8cm9sZXxyb2xsYmFja3xyb3d8cm93c3xydWxlfHNhdmVwb2ludHxzY2hlbWF8c2Nyb2xsfHNlYXJjaHxzZWNvbmR8c2VjdXJpdHl8c2VsZWN0fHNlcXVlbmNlfHNlcXVlbmNlc3xzZXJpYWxpemFibGV8c2VydmVyfHNlc3Npb258c2Vzc2lvbl91c2VyfHNldHxzZXRvZnxzaGFyZXxzaG93fHNpbWlsYXJ8c2ltcGxlfHNtYWxsaW50fHNtZ3J8c29tZXxzdGFibGV8c3RhbmRhbG9uZXxzdGFydHxzdGF0ZW1lbnR8c3RhdGlzdGljc3xzdGRpbnxzdGRvdXR8c3RvcmFnZXxzdHJpY3R8c3RyaXB8c3Vic3RyaW5nfHN5bW1ldHJpY3xzeXNpZHxzeXN0ZW18dGFibGV8dGFibGVzfHRhYmxlc3BhY2V8dGVtcHx0ZW1wbGF0ZXx0ZW1wb3Jhcnl8dGV4dHx0aGVufHRpZHx0aW1lfHRpbWVzdGFtcHx0aW1lc3RhbXB0enx0aW1ldHp8dGludGVydmFsfHRvfHRyYWlsaW5nfHRyYW5zYWN0aW9ufHRyZWF0fHRyaWdnZXJ8dHJpbXx0cnVlfHRydW5jYXRlfHRydXN0ZWR8dHNxdWVyeXx0c3ZlY3Rvcnx0eGlkX3NuYXBzaG90fHR5cGV8dW5ib3VuZGVkfHVuY29tbWl0dGVkfHVuZW5jcnlwdGVkfHVuaW9ufHVuaXF1ZXx1bmtub3dufHVubGlzdGVufHVubG9nZ2VkfHVudGlsfHVwZGF0ZXx1c2VyfHVzaW5nfHV1aWR8dmFjdXVtfHZhbGlkfHZhbGlkYXRlfHZhbGlkYXRvcnx2YWx1ZXx2YWx1ZXN8dmFyYml0fHZhcmNoYXJ8dmFyaWFkaWN8dmFyeWluZ3x2ZXJib3NlfHZlcnNpb258dmlld3x2b2lkfHZvbGF0aWxlfHdoZW58d2hlcmV8d2hpdGVzcGFjZXx3aW5kb3d8d2l0aHx3aXRob3V0fHdvcmt8d3JhcHBlcnx3cml0ZXx4aWR8eG1sfHhtbGF0dHJpYnV0ZXN8eG1sY29uY2F0fHhtbGVsZW1lbnR8eG1sZXhpc3RzfHhtbGZvcmVzdHx4bWxwYXJzZXx4bWxwaXx4bWxyb290fHhtbHNlcmlhbGl6ZXx5ZWFyfHllc3x6b25lIi5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgiUklfRktleV9jYXNjYWRlX2RlbHxSSV9GS2V5X2Nhc2NhZGVfdXBkfFJJX0ZLZXlfY2hlY2tfaW5zfFJJX0ZLZXlfY2hlY2tfdXBkfFJJX0ZLZXlfbm9hY3Rpb25fZGVsfFJJX0ZLZXlfbm9hY3Rpb25fdXBkfFJJX0ZLZXlfcmVzdHJpY3RfZGVsfFJJX0ZLZXlfcmVzdHJpY3RfdXBkfFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWx8UklfRktleV9zZXRkZWZhdWx0X3VwZHxSSV9GS2V5X3NldG51bGxfZGVsfFJJX0ZLZXlfc2V0bnVsbF91cGR8YWJicmV2fGFic3xhYnN0aW1lfGFic3RpbWVlcXxhYnN0aW1lZ2V8YWJzdGltZWd0fGFic3RpbWVpbnxhYnN0aW1lbGV8YWJzdGltZWx0fGFic3RpbWVuZXxhYnN0aW1lb3V0fGFic3RpbWVyZWN2fGFic3RpbWVzZW5kfGFjbGNvbnRhaW5zfGFjbGV4cGxvZGV8YWNsaW5zZXJ0fGFjbGl0ZW1lcXxhY2xpdGVtaW58YWNsaXRlbW91dHxhY2xyZW1vdmV8YWNvc3xhZ2V8YW55X2lufGFueV9vdXR8YW55YXJyYXlfaW58YW55YXJyYXlfb3V0fGFueWFycmF5X3JlY3Z8YW55YXJyYXlfc2VuZHxhbnllbGVtZW50X2lufGFueWVsZW1lbnRfb3V0fGFueWVudW1faW58YW55ZW51bV9vdXR8YW55bm9uYXJyYXlfaW58YW55bm9uYXJyYXlfb3V0fGFueXRleHRjYXR8YXJlYXxhcmVham9pbnNlbHxhcmVhc2VsfGFycmF5X2FnZ3xhcnJheV9hZ2dfZmluYWxmbnxhcnJheV9hZ2dfdHJhbnNmbnxhcnJheV9hcHBlbmR8YXJyYXlfY2F0fGFycmF5X2RpbXN8YXJyYXlfZXF8YXJyYXlfZmlsbHxhcnJheV9nZXxhcnJheV9ndHxhcnJheV9pbnxhcnJheV9sYXJnZXJ8YXJyYXlfbGV8YXJyYXlfbGVuZ3RofGFycmF5X2xvd2VyfGFycmF5X2x0fGFycmF5X25kaW1zfGFycmF5X25lfGFycmF5X291dHxhcnJheV9wcmVwZW5kfGFycmF5X3JlY3Z8YXJyYXlfc2VuZHxhcnJheV9zbWFsbGVyfGFycmF5X3RvX3N0cmluZ3xhcnJheV91cHBlcnxhcnJheWNvbnRhaW5lZHxhcnJheWNvbnRhaW5zfGFycmF5b3ZlcmxhcHxhc2NpaXxhc2NpaV90b19taWN8YXNjaWlfdG9fdXRmOHxhc2lufGF0YW58YXRhbjJ8YXZnfGJpZzVfdG9fZXVjX3R3fGJpZzVfdG9fbWljfGJpZzVfdG9fdXRmOHxiaXRfYW5kfGJpdF9pbnxiaXRfbGVuZ3RofGJpdF9vcnxiaXRfb3V0fGJpdF9yZWN2fGJpdF9zZW5kfGJpdGFuZHxiaXRjYXR8Yml0Y21wfGJpdGVxfGJpdGdlfGJpdGd0fGJpdGxlfGJpdGx0fGJpdG5lfGJpdG5vdHxiaXRvcnxiaXRzaGlmdGxlZnR8Yml0c2hpZnRyaWdodHxiaXR0eXBtb2RpbnxiaXR0eXBtb2RvdXR8Yml0eG9yfGJvb2x8Ym9vbF9hbmR8Ym9vbF9vcnxib29sYW5kX3N0YXRlZnVuY3xib29sZXF8Ym9vbGdlfGJvb2xndHxib29saW58Ym9vbGxlfGJvb2xsdHxib29sbmV8Ym9vbG9yX3N0YXRlZnVuY3xib29sb3V0fGJvb2xyZWN2fGJvb2xzZW5kfGJveHxib3hfYWJvdmV8Ym94X2Fib3ZlX2VxfGJveF9hZGR8Ym94X2JlbG93fGJveF9iZWxvd19lcXxib3hfY2VudGVyfGJveF9jb250YWlufGJveF9jb250YWluX3B0fGJveF9jb250YWluZWR8Ym94X2Rpc3RhbmNlfGJveF9kaXZ8Ym94X2VxfGJveF9nZXxib3hfZ3R8Ym94X2lufGJveF9pbnRlcnNlY3R8Ym94X2xlfGJveF9sZWZ0fGJveF9sdHxib3hfbXVsfGJveF9vdXR8Ym94X292ZXJhYm92ZXxib3hfb3ZlcmJlbG93fGJveF9vdmVybGFwfGJveF9vdmVybGVmdHxib3hfb3ZlcnJpZ2h0fGJveF9yZWN2fGJveF9yaWdodHxib3hfc2FtZXxib3hfc2VuZHxib3hfc3VifGJwY2hhcl9sYXJnZXJ8YnBjaGFyX3BhdHRlcm5fZ2V8YnBjaGFyX3BhdHRlcm5fZ3R8YnBjaGFyX3BhdHRlcm5fbGV8YnBjaGFyX3BhdHRlcm5fbHR8YnBjaGFyX3NtYWxsZXJ8YnBjaGFyY21wfGJwY2hhcmVxfGJwY2hhcmdlfGJwY2hhcmd0fGJwY2hhcmljbGlrZXxicGNoYXJpY25saWtlfGJwY2hhcmljcmVnZXhlcXxicGNoYXJpY3JlZ2V4bmV8YnBjaGFyaW58YnBjaGFybGV8YnBjaGFybGlrZXxicGNoYXJsdHxicGNoYXJuZXxicGNoYXJubGlrZXxicGNoYXJvdXR8YnBjaGFycmVjdnxicGNoYXJyZWdleGVxfGJwY2hhcnJlZ2V4bmV8YnBjaGFyc2VuZHxicGNoYXJ0eXBtb2RpbnxicGNoYXJ0eXBtb2RvdXR8YnJvYWRjYXN0fGJ0YWJzdGltZWNtcHxidGFycmF5Y21wfGJ0YmVnaW5zY2FufGJ0Ym9vbGNtcHxidGJwY2hhcl9wYXR0ZXJuX2NtcHxidGJ1aWxkfGJ0YnVpbGRlbXB0eXxidGJ1bGtkZWxldGV8YnRjaGFyY21wfGJ0Y29zdGVzdGltYXRlfGJ0ZW5kc2NhbnxidGZsb2F0NDhjbXB8YnRmbG9hdDRjbXB8YnRmbG9hdDg0Y21wfGJ0ZmxvYXQ4Y21wfGJ0Z2V0Yml0bWFwfGJ0Z2V0dHVwbGV8YnRpbnNlcnR8YnRpbnQyNGNtcHxidGludDI4Y21wfGJ0aW50MmNtcHxidGludDQyY21wfGJ0aW50NDhjbXB8YnRpbnQ0Y21wfGJ0aW50ODJjbXB8YnRpbnQ4NGNtcHxidGludDhjbXB8YnRtYXJrcG9zfGJ0bmFtZWNtcHxidG9pZGNtcHxidG9pZHZlY3RvcmNtcHxidG9wdGlvbnN8YnRyZWNvcmRjbXB8YnRyZWx0aW1lY21wfGJ0cmVzY2FufGJ0cmVzdHJwb3N8YnRyaW18YnR0ZXh0X3BhdHRlcm5fY21wfGJ0dGV4dGNtcHxidHRpZGNtcHxidHRpbnRlcnZhbGNtcHxidHZhY3V1bWNsZWFudXB8Ynl0ZWFjYXR8Ynl0ZWFjbXB8Ynl0ZWFlcXxieXRlYWdlfGJ5dGVhZ3R8Ynl0ZWFpbnxieXRlYWxlfGJ5dGVhbGlrZXxieXRlYWx0fGJ5dGVhbmV8Ynl0ZWFubGlrZXxieXRlYW91dHxieXRlYXJlY3Z8Ynl0ZWFzZW5kfGNhc2hfY21wfGNhc2hfZGl2X2Nhc2h8Y2FzaF9kaXZfZmx0NHxjYXNoX2Rpdl9mbHQ4fGNhc2hfZGl2X2ludDJ8Y2FzaF9kaXZfaW50NHxjYXNoX2VxfGNhc2hfZ2V8Y2FzaF9ndHxjYXNoX2lufGNhc2hfbGV8Y2FzaF9sdHxjYXNoX21pfGNhc2hfbXVsX2ZsdDR8Y2FzaF9tdWxfZmx0OHxjYXNoX211bF9pbnQyfGNhc2hfbXVsX2ludDR8Y2FzaF9uZXxjYXNoX291dHxjYXNoX3BsfGNhc2hfcmVjdnxjYXNoX3NlbmR8Y2FzaF93b3Jkc3xjYXNobGFyZ2VyfGNhc2hzbWFsbGVyfGNicnR8Y2VpbHxjZWlsaW5nfGNlbnRlcnxjaGFyfGNoYXJfbGVuZ3RofGNoYXJhY3Rlcl9sZW5ndGh8Y2hhcmVxfGNoYXJnZXxjaGFyZ3R8Y2hhcmlufGNoYXJsZXxjaGFybHR8Y2hhcm5lfGNoYXJvdXR8Y2hhcnJlY3Z8Y2hhcnNlbmR8Y2hyfGNpZGVxfGNpZGlufGNpZG91dHxjaWRyfGNpZHJfaW58Y2lkcl9vdXR8Y2lkcl9yZWN2fGNpZHJfc2VuZHxjaWRyZWN2fGNpZHNlbmR8Y2lyY2xlfGNpcmNsZV9hYm92ZXxjaXJjbGVfYWRkX3B0fGNpcmNsZV9iZWxvd3xjaXJjbGVfY2VudGVyfGNpcmNsZV9jb250YWlufGNpcmNsZV9jb250YWluX3B0fGNpcmNsZV9jb250YWluZWR8Y2lyY2xlX2Rpc3RhbmNlfGNpcmNsZV9kaXZfcHR8Y2lyY2xlX2VxfGNpcmNsZV9nZXxjaXJjbGVfZ3R8Y2lyY2xlX2lufGNpcmNsZV9sZXxjaXJjbGVfbGVmdHxjaXJjbGVfbHR8Y2lyY2xlX211bF9wdHxjaXJjbGVfbmV8Y2lyY2xlX291dHxjaXJjbGVfb3ZlcmFib3ZlfGNpcmNsZV9vdmVyYmVsb3d8Y2lyY2xlX292ZXJsYXB8Y2lyY2xlX292ZXJsZWZ0fGNpcmNsZV9vdmVycmlnaHR8Y2lyY2xlX3JlY3Z8Y2lyY2xlX3JpZ2h0fGNpcmNsZV9zYW1lfGNpcmNsZV9zZW5kfGNpcmNsZV9zdWJfcHR8Y2xvY2tfdGltZXN0YW1wfGNsb3NlX2xifGNsb3NlX2xzfGNsb3NlX2xzZWd8Y2xvc2VfcGJ8Y2xvc2VfcGx8Y2xvc2VfcHN8Y2xvc2Vfc2J8Y2xvc2Vfc2x8Y29sX2Rlc2NyaXB0aW9ufGNvbmNhdHxjb25jYXRfd3N8Y29udGpvaW5zZWx8Y29udHNlbHxjb252ZXJ0fGNvbnZlcnRfZnJvbXxjb252ZXJ0X3RvfGNvcnJ8Y29zfGNvdHxjb3VudHxjb3Zhcl9wb3B8Y292YXJfc2FtcHxjc3RyaW5nX2lufGNzdHJpbmdfb3V0fGNzdHJpbmdfcmVjdnxjc3RyaW5nX3NlbmR8Y3VtZV9kaXN0fGN1cnJlbnRfZGF0YWJhc2V8Y3VycmVudF9xdWVyeXxjdXJyZW50X3NjaGVtYXxjdXJyZW50X3NjaGVtYXN8Y3VycmVudF9zZXR0aW5nfGN1cnJlbnRfdXNlcnxjdXJydGlkfGN1cnJ0aWQyfGN1cnJ2YWx8Y3Vyc29yX3RvX3htbHxjdXJzb3JfdG9feG1sc2NoZW1hfGRhdGFiYXNlX3RvX3htbHxkYXRhYmFzZV90b194bWxfYW5kX3htbHNjaGVtYXxkYXRhYmFzZV90b194bWxzY2hlbWF8ZGF0ZXxkYXRlX2NtcHxkYXRlX2NtcF90aW1lc3RhbXB8ZGF0ZV9jbXBfdGltZXN0YW1wdHp8ZGF0ZV9lcXxkYXRlX2VxX3RpbWVzdGFtcHxkYXRlX2VxX3RpbWVzdGFtcHR6fGRhdGVfZ2V8ZGF0ZV9nZV90aW1lc3RhbXB8ZGF0ZV9nZV90aW1lc3RhbXB0enxkYXRlX2d0fGRhdGVfZ3RfdGltZXN0YW1wfGRhdGVfZ3RfdGltZXN0YW1wdHp8ZGF0ZV9pbnxkYXRlX2xhcmdlcnxkYXRlX2xlfGRhdGVfbGVfdGltZXN0YW1wfGRhdGVfbGVfdGltZXN0YW1wdHp8ZGF0ZV9sdHxkYXRlX2x0X3RpbWVzdGFtcHxkYXRlX2x0X3RpbWVzdGFtcHR6fGRhdGVfbWl8ZGF0ZV9taV9pbnRlcnZhbHxkYXRlX21paXxkYXRlX25lfGRhdGVfbmVfdGltZXN0YW1wfGRhdGVfbmVfdGltZXN0YW1wdHp8ZGF0ZV9vdXR8ZGF0ZV9wYXJ0fGRhdGVfcGxfaW50ZXJ2YWx8ZGF0ZV9wbGl8ZGF0ZV9yZWN2fGRhdGVfc2VuZHxkYXRlX3NtYWxsZXJ8ZGF0ZV90cnVuY3xkYXRldGltZV9wbHxkYXRldGltZXR6X3BsfGRjYnJ0fGRlY29kZXxkZWdyZWVzfGRlbnNlX3Jhbmt8ZGV4cHxkaWFnb25hbHxkaWFtZXRlcnxkaXNwZWxsX2luaXR8ZGlzcGVsbF9sZXhpemV8ZGlzdF9jcG9seXxkaXN0X2xifGRpc3RfcGJ8ZGlzdF9wY3xkaXN0X3BsfGRpc3RfcHBhdGh8ZGlzdF9wc3xkaXN0X3NifGRpc3Rfc2x8ZGl2fGRsb2cxfGRsb2cxMHxkb21haW5faW58ZG9tYWluX3JlY3Z8ZHBvd3xkcm91bmR8ZHNpbXBsZV9pbml0fGRzaW1wbGVfbGV4aXplfGRzbm93YmFsbF9pbml0fGRzbm93YmFsbF9sZXhpemV8ZHNxcnR8ZHN5bm9ueW1faW5pdHxkc3lub255bV9sZXhpemV8ZHRydW5jfGVuY29kZXxlbnVtX2NtcHxlbnVtX2VxfGVudW1fZmlyc3R8ZW51bV9nZXxlbnVtX2d0fGVudW1faW58ZW51bV9sYXJnZXJ8ZW51bV9sYXN0fGVudW1fbGV8ZW51bV9sdHxlbnVtX25lfGVudW1fb3V0fGVudW1fcmFuZ2V8ZW51bV9yZWN2fGVudW1fc2VuZHxlbnVtX3NtYWxsZXJ8ZXFqb2luc2VsfGVxc2VsfGV1Y19jbl90b19taWN8ZXVjX2NuX3RvX3V0Zjh8ZXVjX2ppc18yMDA0X3RvX3NoaWZ0X2ppc18yMDA0fGV1Y19qaXNfMjAwNF90b191dGY4fGV1Y19qcF90b19taWN8ZXVjX2pwX3RvX3NqaXN8ZXVjX2pwX3RvX3V0Zjh8ZXVjX2tyX3RvX21pY3xldWNfa3JfdG9fdXRmOHxldWNfdHdfdG9fYmlnNXxldWNfdHdfdG9fbWljfGV1Y190d190b191dGY4fGV2ZXJ5fGV4cHxmYWN0b3JpYWx8ZmFtaWx5fGZkd19oYW5kbGVyX2lufGZkd19oYW5kbGVyX291dHxmaXJzdF92YWx1ZXxmbG9hdDR8ZmxvYXQ0OGRpdnxmbG9hdDQ4ZXF8ZmxvYXQ0OGdlfGZsb2F0NDhndHxmbG9hdDQ4bGV8ZmxvYXQ0OGx0fGZsb2F0NDhtaXxmbG9hdDQ4bXVsfGZsb2F0NDhuZXxmbG9hdDQ4cGx8ZmxvYXQ0X2FjY3VtfGZsb2F0NGFic3xmbG9hdDRkaXZ8ZmxvYXQ0ZXF8ZmxvYXQ0Z2V8ZmxvYXQ0Z3R8ZmxvYXQ0aW58ZmxvYXQ0bGFyZ2VyfGZsb2F0NGxlfGZsb2F0NGx0fGZsb2F0NG1pfGZsb2F0NG11bHxmbG9hdDRuZXxmbG9hdDRvdXR8ZmxvYXQ0cGx8ZmxvYXQ0cmVjdnxmbG9hdDRzZW5kfGZsb2F0NHNtYWxsZXJ8ZmxvYXQ0dW18ZmxvYXQ0dXB8ZmxvYXQ4fGZsb2F0ODRkaXZ8ZmxvYXQ4NGVxfGZsb2F0ODRnZXxmbG9hdDg0Z3R8ZmxvYXQ4NGxlfGZsb2F0ODRsdHxmbG9hdDg0bWl8ZmxvYXQ4NG11bHxmbG9hdDg0bmV8ZmxvYXQ4NHBsfGZsb2F0OF9hY2N1bXxmbG9hdDhfYXZnfGZsb2F0OF9jb3JyfGZsb2F0OF9jb3Zhcl9wb3B8ZmxvYXQ4X2NvdmFyX3NhbXB8ZmxvYXQ4X3JlZ3JfYWNjdW18ZmxvYXQ4X3JlZ3JfYXZneHxmbG9hdDhfcmVncl9hdmd5fGZsb2F0OF9yZWdyX2ludGVyY2VwdHxmbG9hdDhfcmVncl9yMnxmbG9hdDhfcmVncl9zbG9wZXxmbG9hdDhfcmVncl9zeHh8ZmxvYXQ4X3JlZ3Jfc3h5fGZsb2F0OF9yZWdyX3N5eXxmbG9hdDhfc3RkZGV2X3BvcHxmbG9hdDhfc3RkZGV2X3NhbXB8ZmxvYXQ4X3Zhcl9wb3B8ZmxvYXQ4X3Zhcl9zYW1wfGZsb2F0OGFic3xmbG9hdDhkaXZ8ZmxvYXQ4ZXF8ZmxvYXQ4Z2V8ZmxvYXQ4Z3R8ZmxvYXQ4aW58ZmxvYXQ4bGFyZ2VyfGZsb2F0OGxlfGZsb2F0OGx0fGZsb2F0OG1pfGZsb2F0OG11bHxmbG9hdDhuZXxmbG9hdDhvdXR8ZmxvYXQ4cGx8ZmxvYXQ4cmVjdnxmbG9hdDhzZW5kfGZsb2F0OHNtYWxsZXJ8ZmxvYXQ4dW18ZmxvYXQ4dXB8Zmxvb3J8Zmx0NF9tdWxfY2FzaHxmbHQ4X211bF9jYXNofGZtZ3JfY192YWxpZGF0b3J8Zm1ncl9pbnRlcm5hbF92YWxpZGF0b3J8Zm1ncl9zcWxfdmFsaWRhdG9yfGZvcm1hdHxmb3JtYXRfdHlwZXxnYjE4MDMwX3RvX3V0Zjh8Z2JrX3RvX3V0Zjh8Z2VuZXJhdGVfc2VyaWVzfGdlbmVyYXRlX3N1YnNjcmlwdHN8Z2V0X2JpdHxnZXRfYnl0ZXxnZXRfY3VycmVudF90c19jb25maWd8Z2V0ZGF0YWJhc2VlbmNvZGluZ3xnZXRwZ3VzZXJuYW1lfGdpbl9jbXBfcHJlZml4fGdpbl9jbXBfdHNsZXhlbWV8Z2luX2V4dHJhY3RfdHNxdWVyeXxnaW5fZXh0cmFjdF90c3ZlY3RvcnxnaW5fdHNxdWVyeV9jb25zaXN0ZW50fGdpbmFycmF5Y29uc2lzdGVudHxnaW5hcnJheWV4dHJhY3R8Z2luYmVnaW5zY2FufGdpbmJ1aWxkfGdpbmJ1aWxkZW1wdHl8Z2luYnVsa2RlbGV0ZXxnaW5jb3N0ZXN0aW1hdGV8Z2luZW5kc2NhbnxnaW5nZXRiaXRtYXB8Z2luaW5zZXJ0fGdpbm1hcmtwb3N8Z2lub3B0aW9uc3xnaW5xdWVyeWFycmF5ZXh0cmFjdHxnaW5yZXNjYW58Z2lucmVzdHJwb3N8Z2ludmFjdXVtY2xlYW51cHxnaXN0X2JveF9jb21wcmVzc3xnaXN0X2JveF9jb25zaXN0ZW50fGdpc3RfYm94X2RlY29tcHJlc3N8Z2lzdF9ib3hfcGVuYWx0eXxnaXN0X2JveF9waWNrc3BsaXR8Z2lzdF9ib3hfc2FtZXxnaXN0X2JveF91bmlvbnxnaXN0X2NpcmNsZV9jb21wcmVzc3xnaXN0X2NpcmNsZV9jb25zaXN0ZW50fGdpc3RfcG9pbnRfY29tcHJlc3N8Z2lzdF9wb2ludF9jb25zaXN0ZW50fGdpc3RfcG9pbnRfZGlzdGFuY2V8Z2lzdF9wb2x5X2NvbXByZXNzfGdpc3RfcG9seV9jb25zaXN0ZW50fGdpc3RiZWdpbnNjYW58Z2lzdGJ1aWxkfGdpc3RidWlsZGVtcHR5fGdpc3RidWxrZGVsZXRlfGdpc3Rjb3N0ZXN0aW1hdGV8Z2lzdGVuZHNjYW58Z2lzdGdldGJpdG1hcHxnaXN0Z2V0dHVwbGV8Z2lzdGluc2VydHxnaXN0bWFya3Bvc3xnaXN0b3B0aW9uc3xnaXN0cmVzY2FufGdpc3RyZXN0cnBvc3xnaXN0dmFjdXVtY2xlYW51cHxndHNxdWVyeV9jb21wcmVzc3xndHNxdWVyeV9jb25zaXN0ZW50fGd0c3F1ZXJ5X2RlY29tcHJlc3N8Z3RzcXVlcnlfcGVuYWx0eXxndHNxdWVyeV9waWNrc3BsaXR8Z3RzcXVlcnlfc2FtZXxndHNxdWVyeV91bmlvbnxndHN2ZWN0b3JfY29tcHJlc3N8Z3RzdmVjdG9yX2NvbnNpc3RlbnR8Z3RzdmVjdG9yX2RlY29tcHJlc3N8Z3RzdmVjdG9yX3BlbmFsdHl8Z3RzdmVjdG9yX3BpY2tzcGxpdHxndHN2ZWN0b3Jfc2FtZXxndHN2ZWN0b3JfdW5pb258Z3RzdmVjdG9yaW58Z3RzdmVjdG9yb3V0fGhhc19hbnlfY29sdW1uX3ByaXZpbGVnZXxoYXNfY29sdW1uX3ByaXZpbGVnZXxoYXNfZGF0YWJhc2VfcHJpdmlsZWdlfGhhc19mb3JlaWduX2RhdGFfd3JhcHBlcl9wcml2aWxlZ2V8aGFzX2Z1bmN0aW9uX3ByaXZpbGVnZXxoYXNfbGFuZ3VhZ2VfcHJpdmlsZWdlfGhhc19zY2hlbWFfcHJpdmlsZWdlfGhhc19zZXF1ZW5jZV9wcml2aWxlZ2V8aGFzX3NlcnZlcl9wcml2aWxlZ2V8aGFzX3RhYmxlX3ByaXZpbGVnZXxoYXNfdGFibGVzcGFjZV9wcml2aWxlZ2V8aGFzaF9hY2xpdGVtfGhhc2hfYXJyYXl8aGFzaF9udW1lcmljfGhhc2hiZWdpbnNjYW58aGFzaGJwY2hhcnxoYXNoYnVpbGR8aGFzaGJ1aWxkZW1wdHl8aGFzaGJ1bGtkZWxldGV8aGFzaGNoYXJ8aGFzaGNvc3Rlc3RpbWF0ZXxoYXNoZW5kc2NhbnxoYXNoZW51bXxoYXNoZmxvYXQ0fGhhc2hmbG9hdDh8aGFzaGdldGJpdG1hcHxoYXNoZ2V0dHVwbGV8aGFzaGluZXR8aGFzaGluc2VydHxoYXNoaW50MnxoYXNoaW50MnZlY3RvcnxoYXNoaW50NHxoYXNoaW50OHxoYXNobWFjYWRkcnxoYXNobWFya3Bvc3xoYXNobmFtZXxoYXNob2lkfGhhc2hvaWR2ZWN0b3J8aGFzaG9wdGlvbnN8aGFzaHJlc2NhbnxoYXNocmVzdHJwb3N8aGFzaHRleHR8aGFzaHZhY3V1bWNsZWFudXB8aGFzaHZhcmxlbmF8aGVpZ2h0fGhvc3R8aG9zdG1hc2t8aWNsaWtlam9pbnNlbHxpY2xpa2VzZWx8aWNubGlrZWpvaW5zZWx8aWNubGlrZXNlbHxpY3JlZ2V4ZXFqb2luc2VsfGljcmVnZXhlcXNlbHxpY3JlZ2V4bmVqb2luc2VsfGljcmVnZXhuZXNlbHxpbmV0X2NsaWVudF9hZGRyfGluZXRfY2xpZW50X3BvcnR8aW5ldF9pbnxpbmV0X291dHxpbmV0X3JlY3Z8aW5ldF9zZW5kfGluZXRfc2VydmVyX2FkZHJ8aW5ldF9zZXJ2ZXJfcG9ydHxpbmV0YW5kfGluZXRtaXxpbmV0bWlfaW50OHxpbmV0bm90fGluZXRvcnxpbmV0cGx8aW5pdGNhcHxpbnQyfGludDI0ZGl2fGludDI0ZXF8aW50MjRnZXxpbnQyNGd0fGludDI0bGV8aW50MjRsdHxpbnQyNG1pfGludDI0bXVsfGludDI0bmV8aW50MjRwbHxpbnQyOGRpdnxpbnQyOGVxfGludDI4Z2V8aW50MjhndHxpbnQyOGxlfGludDI4bHR8aW50MjhtaXxpbnQyOG11bHxpbnQyOG5lfGludDI4cGx8aW50Ml9hY2N1bXxpbnQyX2F2Z19hY2N1bXxpbnQyX211bF9jYXNofGludDJfc3VtfGludDJhYnN8aW50MmFuZHxpbnQyZGl2fGludDJlcXxpbnQyZ2V8aW50Mmd0fGludDJpbnxpbnQybGFyZ2VyfGludDJsZXxpbnQybHR8aW50Mm1pfGludDJtb2R8aW50Mm11bHxpbnQybmV8aW50Mm5vdHxpbnQyb3J8aW50Mm91dHxpbnQycGx8aW50MnJlY3Z8aW50MnNlbmR8aW50MnNobHxpbnQyc2hyfGludDJzbWFsbGVyfGludDJ1bXxpbnQydXB8aW50MnZlY3RvcmVxfGludDJ2ZWN0b3JpbnxpbnQydmVjdG9yb3V0fGludDJ2ZWN0b3JyZWN2fGludDJ2ZWN0b3JzZW5kfGludDJ4b3J8aW50NHxpbnQ0MmRpdnxpbnQ0MmVxfGludDQyZ2V8aW50NDJndHxpbnQ0MmxlfGludDQybHR8aW50NDJtaXxpbnQ0Mm11bHxpbnQ0Mm5lfGludDQycGx8aW50NDhkaXZ8aW50NDhlcXxpbnQ0OGdlfGludDQ4Z3R8aW50NDhsZXxpbnQ0OGx0fGludDQ4bWl8aW50NDhtdWx8aW50NDhuZXxpbnQ0OHBsfGludDRfYWNjdW18aW50NF9hdmdfYWNjdW18aW50NF9tdWxfY2FzaHxpbnQ0X3N1bXxpbnQ0YWJzfGludDRhbmR8aW50NGRpdnxpbnQ0ZXF8aW50NGdlfGludDRndHxpbnQ0aW58aW50NGluY3xpbnQ0bGFyZ2VyfGludDRsZXxpbnQ0bHR8aW50NG1pfGludDRtb2R8aW50NG11bHxpbnQ0bmV8aW50NG5vdHxpbnQ0b3J8aW50NG91dHxpbnQ0cGx8aW50NHJlY3Z8aW50NHNlbmR8aW50NHNobHxpbnQ0c2hyfGludDRzbWFsbGVyfGludDR1bXxpbnQ0dXB8aW50NHhvcnxpbnQ4fGludDgyZGl2fGludDgyZXF8aW50ODJnZXxpbnQ4Mmd0fGludDgybGV8aW50ODJsdHxpbnQ4Mm1pfGludDgybXVsfGludDgybmV8aW50ODJwbHxpbnQ4NGRpdnxpbnQ4NGVxfGludDg0Z2V8aW50ODRndHxpbnQ4NGxlfGludDg0bHR8aW50ODRtaXxpbnQ4NG11bHxpbnQ4NG5lfGludDg0cGx8aW50OF9hY2N1bXxpbnQ4X2F2Z3xpbnQ4X2F2Z19hY2N1bXxpbnQ4X3N1bXxpbnQ4YWJzfGludDhhbmR8aW50OGRpdnxpbnQ4ZXF8aW50OGdlfGludDhndHxpbnQ4aW58aW50OGluY3xpbnQ4aW5jX2FueXxpbnQ4aW5jX2Zsb2F0OF9mbG9hdDh8aW50OGxhcmdlcnxpbnQ4bGV8aW50OGx0fGludDhtaXxpbnQ4bW9kfGludDhtdWx8aW50OG5lfGludDhub3R8aW50OG9yfGludDhvdXR8aW50OHBsfGludDhwbF9pbmV0fGludDhyZWN2fGludDhzZW5kfGludDhzaGx8aW50OHNocnxpbnQ4c21hbGxlcnxpbnQ4dW18aW50OHVwfGludDh4b3J8aW50ZWdlcl9wbF9kYXRlfGludGVyX2xifGludGVyX3NifGludGVyX3NsfGludGVybmFsX2lufGludGVybmFsX291dHxpbnRlcnZhbF9hY2N1bXxpbnRlcnZhbF9hdmd8aW50ZXJ2YWxfY21wfGludGVydmFsX2RpdnxpbnRlcnZhbF9lcXxpbnRlcnZhbF9nZXxpbnRlcnZhbF9ndHxpbnRlcnZhbF9oYXNofGludGVydmFsX2lufGludGVydmFsX2xhcmdlcnxpbnRlcnZhbF9sZXxpbnRlcnZhbF9sdHxpbnRlcnZhbF9taXxpbnRlcnZhbF9tdWx8aW50ZXJ2YWxfbmV8aW50ZXJ2YWxfb3V0fGludGVydmFsX3BsfGludGVydmFsX3BsX2RhdGV8aW50ZXJ2YWxfcGxfdGltZXxpbnRlcnZhbF9wbF90aW1lc3RhbXB8aW50ZXJ2YWxfcGxfdGltZXN0YW1wdHp8aW50ZXJ2YWxfcGxfdGltZXR6fGludGVydmFsX3JlY3Z8aW50ZXJ2YWxfc2VuZHxpbnRlcnZhbF9zbWFsbGVyfGludGVydmFsX3VtfGludGVydmFsdHlwbW9kaW58aW50ZXJ2YWx0eXBtb2RvdXR8aW50aW50ZXJ2YWx8aXNjbG9zZWR8aXNmaW5pdGV8aXNob3Jpem9udGFsfGlzbzg4NTlfMV90b191dGY4fGlzbzg4NTlfdG9fdXRmOHxpc29fdG9fa29pOHJ8aXNvX3RvX21pY3xpc29fdG9fd2luMTI1MXxpc29fdG9fd2luODY2fGlzb3Blbnxpc3BhcmFsbGVsfGlzcGVycHxpc3ZlcnRpY2FsfGpvaGFiX3RvX3V0Zjh8anVzdGlmeV9kYXlzfGp1c3RpZnlfaG91cnN8anVzdGlmeV9pbnRlcnZhbHxrb2k4cl90b19pc298a29pOHJfdG9fbWljfGtvaThyX3RvX3V0Zjh8a29pOHJfdG9fd2luMTI1MXxrb2k4cl90b193aW44NjZ8a29pOHVfdG9fdXRmOHxsYWd8bGFuZ3VhZ2VfaGFuZGxlcl9pbnxsYW5ndWFnZV9oYW5kbGVyX291dHxsYXN0X3ZhbHVlfGxhc3R2YWx8bGF0aW4xX3RvX21pY3xsYXRpbjJfdG9fbWljfGxhdGluMl90b193aW4xMjUwfGxhdGluM190b19taWN8bGF0aW40X3RvX21pY3xsZWFkfGxlZnR8bGVuZ3RofGxpa2V8bGlrZV9lc2NhcGV8bGlrZWpvaW5zZWx8bGlrZXNlbHxsaW5lfGxpbmVfZGlzdGFuY2V8bGluZV9lcXxsaW5lX2hvcml6b250YWx8bGluZV9pbnxsaW5lX2ludGVycHR8bGluZV9pbnRlcnNlY3R8bGluZV9vdXR8bGluZV9wYXJhbGxlbHxsaW5lX3BlcnB8bGluZV9yZWN2fGxpbmVfc2VuZHxsaW5lX3ZlcnRpY2FsfGxufGxvX2Nsb3NlfGxvX2NyZWF0fGxvX2NyZWF0ZXxsb19leHBvcnR8bG9faW1wb3J0fGxvX2xzZWVrfGxvX29wZW58bG9fdGVsbHxsb190cnVuY2F0ZXxsb191bmxpbmt8bG9nfGxvcmVhZHxsb3dlcnxsb3dyaXRlfGxwYWR8bHNlZ3xsc2VnX2NlbnRlcnxsc2VnX2Rpc3RhbmNlfGxzZWdfZXF8bHNlZ19nZXxsc2VnX2d0fGxzZWdfaG9yaXpvbnRhbHxsc2VnX2lufGxzZWdfaW50ZXJwdHxsc2VnX2ludGVyc2VjdHxsc2VnX2xlfGxzZWdfbGVuZ3RofGxzZWdfbHR8bHNlZ19uZXxsc2VnX291dHxsc2VnX3BhcmFsbGVsfGxzZWdfcGVycHxsc2VnX3JlY3Z8bHNlZ19zZW5kfGxzZWdfdmVydGljYWx8bHRyaW18bWFjYWRkcl9jbXB8bWFjYWRkcl9lcXxtYWNhZGRyX2dlfG1hY2FkZHJfZ3R8bWFjYWRkcl9pbnxtYWNhZGRyX2xlfG1hY2FkZHJfbHR8bWFjYWRkcl9uZXxtYWNhZGRyX291dHxtYWNhZGRyX3JlY3Z8bWFjYWRkcl9zZW5kfG1ha2VhY2xpdGVtfG1hc2tsZW58bWF4fG1kNXxtaWNfdG9fYXNjaWl8bWljX3RvX2JpZzV8bWljX3RvX2V1Y19jbnxtaWNfdG9fZXVjX2pwfG1pY190b19ldWNfa3J8bWljX3RvX2V1Y190d3xtaWNfdG9faXNvfG1pY190b19rb2k4cnxtaWNfdG9fbGF0aW4xfG1pY190b19sYXRpbjJ8bWljX3RvX2xhdGluM3xtaWNfdG9fbGF0aW40fG1pY190b19zamlzfG1pY190b193aW4xMjUwfG1pY190b193aW4xMjUxfG1pY190b193aW44NjZ8bWlufG1rdGludGVydmFsfG1vZHxtb25leXxtdWxfZF9pbnRlcnZhbHxuYW1lfG5hbWVlcXxuYW1lZ2V8bmFtZWd0fG5hbWVpY2xpa2V8bmFtZWljbmxpa2V8bmFtZWljcmVnZXhlcXxuYW1laWNyZWdleG5lfG5hbWVpbnxuYW1lbGV8bmFtZWxpa2V8bmFtZWx0fG5hbWVuZXxuYW1lbmxpa2V8bmFtZW91dHxuYW1lcmVjdnxuYW1lcmVnZXhlcXxuYW1lcmVnZXhuZXxuYW1lc2VuZHxuZXFqb2luc2VsfG5lcXNlbHxuZXRtYXNrfG5ldHdvcmt8bmV0d29ya19jbXB8bmV0d29ya19lcXxuZXR3b3JrX2dlfG5ldHdvcmtfZ3R8bmV0d29ya19sZXxuZXR3b3JrX2x0fG5ldHdvcmtfbmV8bmV0d29ya19zdWJ8bmV0d29ya19zdWJlcXxuZXR3b3JrX3N1cHxuZXR3b3JrX3N1cGVxfG5leHR2YWx8bmxpa2Vqb2luc2VsfG5saWtlc2VsfG5vdGxpa2V8bm93fG5wb2ludHN8bnRoX3ZhbHVlfG50aWxlfG51bWVyaWNfYWJzfG51bWVyaWNfYWNjdW18bnVtZXJpY19hZGR8bnVtZXJpY19hdmd8bnVtZXJpY19hdmdfYWNjdW18bnVtZXJpY19jbXB8bnVtZXJpY19kaXZ8bnVtZXJpY19kaXZfdHJ1bmN8bnVtZXJpY19lcXxudW1lcmljX2V4cHxudW1lcmljX2ZhY3xudW1lcmljX2dlfG51bWVyaWNfZ3R8bnVtZXJpY19pbnxudW1lcmljX2luY3xudW1lcmljX2xhcmdlcnxudW1lcmljX2xlfG51bWVyaWNfbG58bnVtZXJpY19sb2d8bnVtZXJpY19sdHxudW1lcmljX21vZHxudW1lcmljX211bHxudW1lcmljX25lfG51bWVyaWNfb3V0fG51bWVyaWNfcG93ZXJ8bnVtZXJpY19yZWN2fG51bWVyaWNfc2VuZHxudW1lcmljX3NtYWxsZXJ8bnVtZXJpY19zcXJ0fG51bWVyaWNfc3RkZGV2X3BvcHxudW1lcmljX3N0ZGRldl9zYW1wfG51bWVyaWNfc3VifG51bWVyaWNfdW1pbnVzfG51bWVyaWNfdXBsdXN8bnVtZXJpY192YXJfcG9wfG51bWVyaWNfdmFyX3NhbXB8bnVtZXJpY3R5cG1vZGlufG51bWVyaWN0eXBtb2RvdXR8bnVtbm9kZXxvYmpfZGVzY3JpcHRpb258b2N0ZXRfbGVuZ3RofG9pZHxvaWRlcXxvaWRnZXxvaWRndHxvaWRpbnxvaWRsYXJnZXJ8b2lkbGV8b2lkbHR8b2lkbmV8b2lkb3V0fG9pZHJlY3Z8b2lkc2VuZHxvaWRzbWFsbGVyfG9pZHZlY3RvcmVxfG9pZHZlY3RvcmdlfG9pZHZlY3Rvcmd0fG9pZHZlY3RvcmlufG9pZHZlY3RvcmxlfG9pZHZlY3Rvcmx0fG9pZHZlY3Rvcm5lfG9pZHZlY3Rvcm91dHxvaWR2ZWN0b3JyZWN2fG9pZHZlY3RvcnNlbmR8b2lkdmVjdG9ydHlwZXN8b25fcGJ8b25fcGx8b25fcHBhdGh8b25fcHN8b25fc2J8b25fc2x8b3BhcXVlX2lufG9wYXF1ZV9vdXR8b3ZlcmxhcHN8b3ZlcmxheXxwYXRofHBhdGhfYWRkfHBhdGhfYWRkX3B0fHBhdGhfY2VudGVyfHBhdGhfY29udGFpbl9wdHxwYXRoX2Rpc3RhbmNlfHBhdGhfZGl2X3B0fHBhdGhfaW58cGF0aF9pbnRlcnxwYXRoX2xlbmd0aHxwYXRoX211bF9wdHxwYXRoX25fZXF8cGF0aF9uX2dlfHBhdGhfbl9ndHxwYXRoX25fbGV8cGF0aF9uX2x0fHBhdGhfbnBvaW50c3xwYXRoX291dHxwYXRoX3JlY3Z8cGF0aF9zZW5kfHBhdGhfc3ViX3B0fHBjbG9zZXxwZXJjZW50X3Jhbmt8cGdfYWR2aXNvcnlfbG9ja3xwZ19hZHZpc29yeV9sb2NrX3NoYXJlZHxwZ19hZHZpc29yeV91bmxvY2t8cGdfYWR2aXNvcnlfdW5sb2NrX2FsbHxwZ19hZHZpc29yeV91bmxvY2tfc2hhcmVkfHBnX2Fkdmlzb3J5X3hhY3RfbG9ja3xwZ19hZHZpc29yeV94YWN0X2xvY2tfc2hhcmVkfHBnX2F2YWlsYWJsZV9leHRlbnNpb25fdmVyc2lvbnN8cGdfYXZhaWxhYmxlX2V4dGVuc2lvbnN8cGdfYmFja2VuZF9waWR8cGdfY2FuY2VsX2JhY2tlbmR8cGdfY2hhcl90b19lbmNvZGluZ3xwZ19jbGllbnRfZW5jb2Rpbmd8cGdfY29sbGF0aW9uX2lzX3Zpc2libGV8cGdfY29sdW1uX3NpemV8cGdfY29uZl9sb2FkX3RpbWV8cGdfY29udmVyc2lvbl9pc192aXNpYmxlfHBnX2NyZWF0ZV9yZXN0b3JlX3BvaW50fHBnX2N1cnJlbnRfeGxvZ19pbnNlcnRfbG9jYXRpb258cGdfY3VycmVudF94bG9nX2xvY2F0aW9ufHBnX2N1cnNvcnxwZ19kYXRhYmFzZV9zaXplfHBnX2Rlc2NyaWJlX29iamVjdHxwZ19lbmNvZGluZ19tYXhfbGVuZ3RofHBnX2VuY29kaW5nX3RvX2NoYXJ8cGdfZXh0ZW5zaW9uX2NvbmZpZ19kdW1wfHBnX2V4dGVuc2lvbl91cGRhdGVfcGF0aHN8cGdfZnVuY3Rpb25faXNfdmlzaWJsZXxwZ19nZXRfY29uc3RyYWludGRlZnxwZ19nZXRfZXhwcnxwZ19nZXRfZnVuY3Rpb25fYXJndW1lbnRzfHBnX2dldF9mdW5jdGlvbl9pZGVudGl0eV9hcmd1bWVudHN8cGdfZ2V0X2Z1bmN0aW9uX3Jlc3VsdHxwZ19nZXRfZnVuY3Rpb25kZWZ8cGdfZ2V0X2luZGV4ZGVmfHBnX2dldF9rZXl3b3Jkc3xwZ19nZXRfcnVsZWRlZnxwZ19nZXRfc2VyaWFsX3NlcXVlbmNlfHBnX2dldF90cmlnZ2VyZGVmfHBnX2dldF91c2VyYnlpZHxwZ19nZXRfdmlld2RlZnxwZ19oYXNfcm9sZXxwZ19pbmRleGVzX3NpemV8cGdfaXNfaW5fcmVjb3Zlcnl8cGdfaXNfb3RoZXJfdGVtcF9zY2hlbWF8cGdfaXNfeGxvZ19yZXBsYXlfcGF1c2VkfHBnX2xhc3RfeGFjdF9yZXBsYXlfdGltZXN0YW1wfHBnX2xhc3RfeGxvZ19yZWNlaXZlX2xvY2F0aW9ufHBnX2xhc3RfeGxvZ19yZXBsYXlfbG9jYXRpb258cGdfbGlzdGVuaW5nX2NoYW5uZWxzfHBnX2xvY2tfc3RhdHVzfHBnX2xzX2RpcnxwZ19teV90ZW1wX3NjaGVtYXxwZ19ub2RlX3RyZWVfaW58cGdfbm9kZV90cmVlX291dHxwZ19ub2RlX3RyZWVfcmVjdnxwZ19ub2RlX3RyZWVfc2VuZHxwZ19ub3RpZnl8cGdfb3BjbGFzc19pc192aXNpYmxlfHBnX29wZXJhdG9yX2lzX3Zpc2libGV8cGdfb3B0aW9uc190b190YWJsZXxwZ19wb3N0bWFzdGVyX3N0YXJ0X3RpbWV8cGdfcHJlcGFyZWRfc3RhdGVtZW50fHBnX3ByZXBhcmVkX3hhY3R8cGdfcmVhZF9iaW5hcnlfZmlsZXxwZ19yZWFkX2ZpbGV8cGdfcmVsYXRpb25fZmlsZW5vZGV8cGdfcmVsYXRpb25fZmlsZXBhdGh8cGdfcmVsYXRpb25fc2l6ZXxwZ19yZWxvYWRfY29uZnxwZ19yb3RhdGVfbG9nZmlsZXxwZ19zZXF1ZW5jZV9wYXJhbWV0ZXJzfHBnX3Nob3dfYWxsX3NldHRpbmdzfHBnX3NpemVfcHJldHR5fHBnX3NsZWVwfHBnX3N0YXJ0X2JhY2t1cHxwZ19zdGF0X2NsZWFyX3NuYXBzaG90fHBnX3N0YXRfZmlsZXxwZ19zdGF0X2dldF9hY3Rpdml0eXxwZ19zdGF0X2dldF9hbmFseXplX2NvdW50fHBnX3N0YXRfZ2V0X2F1dG9hbmFseXplX2NvdW50fHBnX3N0YXRfZ2V0X2F1dG92YWN1dW1fY291bnR8cGdfc3RhdF9nZXRfYmFja2VuZF9hY3Rpdml0eXxwZ19zdGF0X2dldF9iYWNrZW5kX2FjdGl2aXR5X3N0YXJ0fHBnX3N0YXRfZ2V0X2JhY2tlbmRfY2xpZW50X2FkZHJ8cGdfc3RhdF9nZXRfYmFja2VuZF9jbGllbnRfcG9ydHxwZ19zdGF0X2dldF9iYWNrZW5kX2RiaWR8cGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldHxwZ19zdGF0X2dldF9iYWNrZW5kX3BpZHxwZ19zdGF0X2dldF9iYWNrZW5kX3N0YXJ0fHBnX3N0YXRfZ2V0X2JhY2tlbmRfdXNlcmlkfHBnX3N0YXRfZ2V0X2JhY2tlbmRfd2FpdGluZ3xwZ19zdGF0X2dldF9iYWNrZW5kX3hhY3Rfc3RhcnR8cGdfc3RhdF9nZXRfYmd3cml0ZXJfYnVmX3dyaXR0ZW5fY2hlY2twb2ludHN8cGdfc3RhdF9nZXRfYmd3cml0ZXJfYnVmX3dyaXR0ZW5fY2xlYW58cGdfc3RhdF9nZXRfYmd3cml0ZXJfbWF4d3JpdHRlbl9jbGVhbnxwZ19zdGF0X2dldF9iZ3dyaXRlcl9yZXF1ZXN0ZWRfY2hlY2twb2ludHN8cGdfc3RhdF9nZXRfYmd3cml0ZXJfc3RhdF9yZXNldF90aW1lfHBnX3N0YXRfZ2V0X2Jnd3JpdGVyX3RpbWVkX2NoZWNrcG9pbnRzfHBnX3N0YXRfZ2V0X2Jsb2Nrc19mZXRjaGVkfHBnX3N0YXRfZ2V0X2Jsb2Nrc19oaXR8cGdfc3RhdF9nZXRfYnVmX2FsbG9jfHBnX3N0YXRfZ2V0X2J1Zl9mc3luY19iYWNrZW5kfHBnX3N0YXRfZ2V0X2J1Zl93cml0dGVuX2JhY2tlbmR8cGdfc3RhdF9nZXRfZGJfYmxvY2tzX2ZldGNoZWR8cGdfc3RhdF9nZXRfZGJfYmxvY2tzX2hpdHxwZ19zdGF0X2dldF9kYl9jb25mbGljdF9hbGx8cGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfYnVmZmVycGlufHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvY2t8cGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3R8cGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9ja3xwZ19zdGF0X2dldF9kYl9jb25mbGljdF90YWJsZXNwYWNlfHBnX3N0YXRfZ2V0X2RiX251bWJhY2tlbmRzfHBnX3N0YXRfZ2V0X2RiX3N0YXRfcmVzZXRfdGltZXxwZ19zdGF0X2dldF9kYl90dXBsZXNfZGVsZXRlZHxwZ19zdGF0X2dldF9kYl90dXBsZXNfZmV0Y2hlZHxwZ19zdGF0X2dldF9kYl90dXBsZXNfaW5zZXJ0ZWR8cGdfc3RhdF9nZXRfZGJfdHVwbGVzX3JldHVybmVkfHBnX3N0YXRfZ2V0X2RiX3R1cGxlc191cGRhdGVkfHBnX3N0YXRfZ2V0X2RiX3hhY3RfY29tbWl0fHBnX3N0YXRfZ2V0X2RiX3hhY3Rfcm9sbGJhY2t8cGdfc3RhdF9nZXRfZGVhZF90dXBsZXN8cGdfc3RhdF9nZXRfZnVuY3Rpb25fY2FsbHN8cGdfc3RhdF9nZXRfZnVuY3Rpb25fc2VsZl90aW1lfHBnX3N0YXRfZ2V0X2Z1bmN0aW9uX3RpbWV8cGdfc3RhdF9nZXRfbGFzdF9hbmFseXplX3RpbWV8cGdfc3RhdF9nZXRfbGFzdF9hdXRvYW5hbHl6ZV90aW1lfHBnX3N0YXRfZ2V0X2xhc3RfYXV0b3ZhY3V1bV90aW1lfHBnX3N0YXRfZ2V0X2xhc3RfdmFjdXVtX3RpbWV8cGdfc3RhdF9nZXRfbGl2ZV90dXBsZXN8cGdfc3RhdF9nZXRfbnVtc2NhbnN8cGdfc3RhdF9nZXRfdHVwbGVzX2RlbGV0ZWR8cGdfc3RhdF9nZXRfdHVwbGVzX2ZldGNoZWR8cGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkfHBnX3N0YXRfZ2V0X3R1cGxlc19pbnNlcnRlZHxwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWR8cGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWR8cGdfc3RhdF9nZXRfdmFjdXVtX2NvdW50fHBnX3N0YXRfZ2V0X3dhbF9zZW5kZXJzfHBnX3N0YXRfZ2V0X3hhY3RfYmxvY2tzX2ZldGNoZWR8cGdfc3RhdF9nZXRfeGFjdF9ibG9ja3NfaGl0fHBnX3N0YXRfZ2V0X3hhY3RfZnVuY3Rpb25fY2FsbHN8cGdfc3RhdF9nZXRfeGFjdF9mdW5jdGlvbl9zZWxmX3RpbWV8cGdfc3RhdF9nZXRfeGFjdF9mdW5jdGlvbl90aW1lfHBnX3N0YXRfZ2V0X3hhY3RfbnVtc2NhbnN8cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfZGVsZXRlZHxwZ19zdGF0X2dldF94YWN0X3R1cGxlc19mZXRjaGVkfHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkfHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2luc2VydGVkfHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3JldHVybmVkfHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWR8cGdfc3RhdF9yZXNldHxwZ19zdGF0X3Jlc2V0X3NoYXJlZHxwZ19zdGF0X3Jlc2V0X3NpbmdsZV9mdW5jdGlvbl9jb3VudGVyc3xwZ19zdGF0X3Jlc2V0X3NpbmdsZV90YWJsZV9jb3VudGVyc3xwZ19zdG9wX2JhY2t1cHxwZ19zd2l0Y2hfeGxvZ3xwZ190YWJsZV9pc192aXNpYmxlfHBnX3RhYmxlX3NpemV8cGdfdGFibGVzcGFjZV9kYXRhYmFzZXN8cGdfdGFibGVzcGFjZV9zaXplfHBnX3Rlcm1pbmF0ZV9iYWNrZW5kfHBnX3RpbWV6b25lX2FiYnJldnN8cGdfdGltZXpvbmVfbmFtZXN8cGdfdG90YWxfcmVsYXRpb25fc2l6ZXxwZ190cnlfYWR2aXNvcnlfbG9ja3xwZ190cnlfYWR2aXNvcnlfbG9ja19zaGFyZWR8cGdfdHJ5X2Fkdmlzb3J5X3hhY3RfbG9ja3xwZ190cnlfYWR2aXNvcnlfeGFjdF9sb2NrX3NoYXJlZHxwZ190c19jb25maWdfaXNfdmlzaWJsZXxwZ190c19kaWN0X2lzX3Zpc2libGV8cGdfdHNfcGFyc2VyX2lzX3Zpc2libGV8cGdfdHNfdGVtcGxhdGVfaXNfdmlzaWJsZXxwZ190eXBlX2lzX3Zpc2libGV8cGdfdHlwZW9mfHBnX3hsb2dfcmVwbGF5X3BhdXNlfHBnX3hsb2dfcmVwbGF5X3Jlc3VtZXxwZ194bG9nZmlsZV9uYW1lfHBnX3hsb2dmaWxlX25hbWVfb2Zmc2V0fHBpfHBsYWludG9fdHNxdWVyeXxwbHBnc3FsX2NhbGxfaGFuZGxlcnxwbHBnc3FsX2lubGluZV9oYW5kbGVyfHBscGdzcWxfdmFsaWRhdG9yfHBvaW50fHBvaW50X2Fib3ZlfHBvaW50X2FkZHxwb2ludF9iZWxvd3xwb2ludF9kaXN0YW5jZXxwb2ludF9kaXZ8cG9pbnRfZXF8cG9pbnRfaG9yaXp8cG9pbnRfaW58cG9pbnRfbGVmdHxwb2ludF9tdWx8cG9pbnRfbmV8cG9pbnRfb3V0fHBvaW50X3JlY3Z8cG9pbnRfcmlnaHR8cG9pbnRfc2VuZHxwb2ludF9zdWJ8cG9pbnRfdmVydHxwb2x5X2Fib3ZlfHBvbHlfYmVsb3d8cG9seV9jZW50ZXJ8cG9seV9jb250YWlufHBvbHlfY29udGFpbl9wdHxwb2x5X2NvbnRhaW5lZHxwb2x5X2Rpc3RhbmNlfHBvbHlfaW58cG9seV9sZWZ0fHBvbHlfbnBvaW50c3xwb2x5X291dHxwb2x5X292ZXJhYm92ZXxwb2x5X292ZXJiZWxvd3xwb2x5X292ZXJsYXB8cG9seV9vdmVybGVmdHxwb2x5X292ZXJyaWdodHxwb2x5X3JlY3Z8cG9seV9yaWdodHxwb2x5X3NhbWV8cG9seV9zZW5kfHBvbHlnb258cG9wZW58cG9zaXRpb258cG9zaXRpb25qb2luc2VsfHBvc2l0aW9uc2VsfHBvc3RncmVzcWxfZmR3X3ZhbGlkYXRvcnxwb3d8cG93ZXJ8cHJzZF9lbmR8cHJzZF9oZWFkbGluZXxwcnNkX2xleHR5cGV8cHJzZF9uZXh0dG9rZW58cHJzZF9zdGFydHxwdF9jb250YWluZWRfY2lyY2xlfHB0X2NvbnRhaW5lZF9wb2x5fHF1ZXJ5X3RvX3htbHxxdWVyeV90b194bWxfYW5kX3htbHNjaGVtYXxxdWVyeV90b194bWxzY2hlbWF8cXVlcnl0cmVlfHF1b3RlX2lkZW50fHF1b3RlX2xpdGVyYWx8cXVvdGVfbnVsbGFibGV8cmFkaWFuc3xyYWRpdXN8cmFuZG9tfHJhbmt8cmVjb3JkX2VxfHJlY29yZF9nZXxyZWNvcmRfZ3R8cmVjb3JkX2lufHJlY29yZF9sZXxyZWNvcmRfbHR8cmVjb3JkX25lfHJlY29yZF9vdXR8cmVjb3JkX3JlY3Z8cmVjb3JkX3NlbmR8cmVnY2xhc3N8cmVnY2xhc3NpbnxyZWdjbGFzc291dHxyZWdjbGFzc3JlY3Z8cmVnY2xhc3NzZW5kfHJlZ2NvbmZpZ2lufHJlZ2NvbmZpZ291dHxyZWdjb25maWdyZWN2fHJlZ2NvbmZpZ3NlbmR8cmVnZGljdGlvbmFyeWlufHJlZ2RpY3Rpb25hcnlvdXR8cmVnZGljdGlvbmFyeXJlY3Z8cmVnZGljdGlvbmFyeXNlbmR8cmVnZXhlcWpvaW5zZWx8cmVnZXhlcXNlbHxyZWdleG5lam9pbnNlbHxyZWdleG5lc2VsfHJlZ2V4cF9tYXRjaGVzfHJlZ2V4cF9yZXBsYWNlfHJlZ2V4cF9zcGxpdF90b19hcnJheXxyZWdleHBfc3BsaXRfdG9fdGFibGV8cmVnb3BlcmF0b3JpbnxyZWdvcGVyYXRvcm91dHxyZWdvcGVyYXRvcnJlY3Z8cmVnb3BlcmF0b3JzZW5kfHJlZ29wZXJpbnxyZWdvcGVyb3V0fHJlZ29wZXJyZWN2fHJlZ29wZXJzZW5kfHJlZ3Byb2NlZHVyZWlufHJlZ3Byb2NlZHVyZW91dHxyZWdwcm9jZWR1cmVyZWN2fHJlZ3Byb2NlZHVyZXNlbmR8cmVncHJvY2lufHJlZ3Byb2NvdXR8cmVncHJvY3JlY3Z8cmVncHJvY3NlbmR8cmVncl9hdmd4fHJlZ3JfYXZneXxyZWdyX2NvdW50fHJlZ3JfaW50ZXJjZXB0fHJlZ3JfcjJ8cmVncl9zbG9wZXxyZWdyX3N4eHxyZWdyX3N4eXxyZWdyX3N5eXxyZWd0eXBlaW58cmVndHlwZW91dHxyZWd0eXBlcmVjdnxyZWd0eXBlc2VuZHxyZWx0aW1lfHJlbHRpbWVlcXxyZWx0aW1lZ2V8cmVsdGltZWd0fHJlbHRpbWVpbnxyZWx0aW1lbGV8cmVsdGltZWx0fHJlbHRpbWVuZXxyZWx0aW1lb3V0fHJlbHRpbWVyZWN2fHJlbHRpbWVzZW5kfHJlcGVhdHxyZXBsYWNlfHJldmVyc2V8cmlnaHR8cm91bmR8cm93X251bWJlcnxycGFkfHJ0cmltfHNjYWxhcmd0am9pbnNlbHxzY2FsYXJndHNlbHxzY2FsYXJsdGpvaW5zZWx8c2NhbGFybHRzZWx8c2NoZW1hX3RvX3htbHxzY2hlbWFfdG9feG1sX2FuZF94bWxzY2hlbWF8c2NoZW1hX3RvX3htbHNjaGVtYXxzZXNzaW9uX3VzZXJ8c2V0X2JpdHxzZXRfYnl0ZXxzZXRfY29uZmlnfHNldF9tYXNrbGVufHNldHNlZWR8c2V0dmFsfHNldHdlaWdodHxzaGVsbF9pbnxzaGVsbF9vdXR8c2hpZnRfamlzXzIwMDRfdG9fZXVjX2ppc18yMDA0fHNoaWZ0X2ppc18yMDA0X3RvX3V0Zjh8c2hvYmpfZGVzY3JpcHRpb258c2lnbnxzaW1pbGFyX2VzY2FwZXxzaW58c2ppc190b19ldWNfanB8c2ppc190b19taWN8c2ppc190b191dGY4fHNsb3BlfHNtZ3JlcXxzbWdyaW58c21ncm5lfHNtZ3JvdXR8c3BsaXRfcGFydHxzcXJ0fHN0YXRlbWVudF90aW1lc3RhbXB8c3RkZGV2fHN0ZGRldl9wb3B8c3RkZGV2X3NhbXB8c3RyaW5nX2FnZ3xzdHJpbmdfYWdnX2ZpbmFsZm58c3RyaW5nX2FnZ190cmFuc2ZufHN0cmluZ190b19hcnJheXxzdHJpcHxzdHJwb3N8c3Vic3RyfHN1YnN0cmluZ3xzdW18c3VwcHJlc3NfcmVkdW5kYW50X3VwZGF0ZXNfdHJpZ2dlcnx0YWJsZV90b194bWx8dGFibGVfdG9feG1sX2FuZF94bWxzY2hlbWF8dGFibGVfdG9feG1sc2NoZW1hfHRhbnx0ZXh0fHRleHRfZ2V8dGV4dF9ndHx0ZXh0X2xhcmdlcnx0ZXh0X2xlfHRleHRfbHR8dGV4dF9wYXR0ZXJuX2dlfHRleHRfcGF0dGVybl9ndHx0ZXh0X3BhdHRlcm5fbGV8dGV4dF9wYXR0ZXJuX2x0fHRleHRfc21hbGxlcnx0ZXh0YW55Y2F0fHRleHRjYXR8dGV4dGVxfHRleHRpY2xpa2V8dGV4dGljbmxpa2V8dGV4dGljcmVnZXhlcXx0ZXh0aWNyZWdleG5lfHRleHRpbnx0ZXh0bGVufHRleHRsaWtlfHRleHRuZXx0ZXh0bmxpa2V8dGV4dG91dHx0ZXh0cmVjdnx0ZXh0cmVnZXhlcXx0ZXh0cmVnZXhuZXx0ZXh0c2VuZHx0aGVzYXVydXNfaW5pdHx0aGVzYXVydXNfbGV4aXplfHRpZGVxfHRpZGdlfHRpZGd0fHRpZGlufHRpZGxhcmdlcnx0aWRsZXx0aWRsdHx0aWRuZXx0aWRvdXR8dGlkcmVjdnx0aWRzZW5kfHRpZHNtYWxsZXJ8dGltZV9jbXB8dGltZV9lcXx0aW1lX2dlfHRpbWVfZ3R8dGltZV9oYXNofHRpbWVfaW58dGltZV9sYXJnZXJ8dGltZV9sZXx0aW1lX2x0fHRpbWVfbWlfaW50ZXJ2YWx8dGltZV9taV90aW1lfHRpbWVfbmV8dGltZV9vdXR8dGltZV9wbF9pbnRlcnZhbHx0aW1lX3JlY3Z8dGltZV9zZW5kfHRpbWVfc21hbGxlcnx0aW1lZGF0ZV9wbHx0aW1lbWl8dGltZW5vd3x0aW1lb2ZkYXl8dGltZXBsfHRpbWVzdGFtcF9jbXB8dGltZXN0YW1wX2NtcF9kYXRlfHRpbWVzdGFtcF9jbXBfdGltZXN0YW1wdHp8dGltZXN0YW1wX2VxfHRpbWVzdGFtcF9lcV9kYXRlfHRpbWVzdGFtcF9lcV90aW1lc3RhbXB0enx0aW1lc3RhbXBfZ2V8dGltZXN0YW1wX2dlX2RhdGV8dGltZXN0YW1wX2dlX3RpbWVzdGFtcHR6fHRpbWVzdGFtcF9ndHx0aW1lc3RhbXBfZ3RfZGF0ZXx0aW1lc3RhbXBfZ3RfdGltZXN0YW1wdHp8dGltZXN0YW1wX2hhc2h8dGltZXN0YW1wX2lufHRpbWVzdGFtcF9sYXJnZXJ8dGltZXN0YW1wX2xlfHRpbWVzdGFtcF9sZV9kYXRlfHRpbWVzdGFtcF9sZV90aW1lc3RhbXB0enx0aW1lc3RhbXBfbHR8dGltZXN0YW1wX2x0X2RhdGV8dGltZXN0YW1wX2x0X3RpbWVzdGFtcHR6fHRpbWVzdGFtcF9taXx0aW1lc3RhbXBfbWlfaW50ZXJ2YWx8dGltZXN0YW1wX25lfHRpbWVzdGFtcF9uZV9kYXRlfHRpbWVzdGFtcF9uZV90aW1lc3RhbXB0enx0aW1lc3RhbXBfb3V0fHRpbWVzdGFtcF9wbF9pbnRlcnZhbHx0aW1lc3RhbXBfcmVjdnx0aW1lc3RhbXBfc2VuZHx0aW1lc3RhbXBfc21hbGxlcnx0aW1lc3RhbXB0eXBtb2Rpbnx0aW1lc3RhbXB0eXBtb2RvdXR8dGltZXN0YW1wdHpfY21wfHRpbWVzdGFtcHR6X2NtcF9kYXRlfHRpbWVzdGFtcHR6X2NtcF90aW1lc3RhbXB8dGltZXN0YW1wdHpfZXF8dGltZXN0YW1wdHpfZXFfZGF0ZXx0aW1lc3RhbXB0el9lcV90aW1lc3RhbXB8dGltZXN0YW1wdHpfZ2V8dGltZXN0YW1wdHpfZ2VfZGF0ZXx0aW1lc3RhbXB0el9nZV90aW1lc3RhbXB8dGltZXN0YW1wdHpfZ3R8dGltZXN0YW1wdHpfZ3RfZGF0ZXx0aW1lc3RhbXB0el9ndF90aW1lc3RhbXB8dGltZXN0YW1wdHpfaW58dGltZXN0YW1wdHpfbGFyZ2VyfHRpbWVzdGFtcHR6X2xlfHRpbWVzdGFtcHR6X2xlX2RhdGV8dGltZXN0YW1wdHpfbGVfdGltZXN0YW1wfHRpbWVzdGFtcHR6X2x0fHRpbWVzdGFtcHR6X2x0X2RhdGV8dGltZXN0YW1wdHpfbHRfdGltZXN0YW1wfHRpbWVzdGFtcHR6X21pfHRpbWVzdGFtcHR6X21pX2ludGVydmFsfHRpbWVzdGFtcHR6X25lfHRpbWVzdGFtcHR6X25lX2RhdGV8dGltZXN0YW1wdHpfbmVfdGltZXN0YW1wfHRpbWVzdGFtcHR6X291dHx0aW1lc3RhbXB0el9wbF9pbnRlcnZhbHx0aW1lc3RhbXB0el9yZWN2fHRpbWVzdGFtcHR6X3NlbmR8dGltZXN0YW1wdHpfc21hbGxlcnx0aW1lc3RhbXB0enR5cG1vZGlufHRpbWVzdGFtcHR6dHlwbW9kb3V0fHRpbWV0eXBtb2Rpbnx0aW1ldHlwbW9kb3V0fHRpbWV0el9jbXB8dGltZXR6X2VxfHRpbWV0el9nZXx0aW1ldHpfZ3R8dGltZXR6X2hhc2h8dGltZXR6X2lufHRpbWV0el9sYXJnZXJ8dGltZXR6X2xlfHRpbWV0el9sdHx0aW1ldHpfbWlfaW50ZXJ2YWx8dGltZXR6X25lfHRpbWV0el9vdXR8dGltZXR6X3BsX2ludGVydmFsfHRpbWV0el9yZWN2fHRpbWV0el9zZW5kfHRpbWV0el9zbWFsbGVyfHRpbWV0emRhdGVfcGx8dGltZXR6dHlwbW9kaW58dGltZXR6dHlwbW9kb3V0fHRpbWV6b25lfHRpbnRlcnZhbHx0aW50ZXJ2YWxjdHx0aW50ZXJ2YWxlbmR8dGludGVydmFsZXF8dGludGVydmFsZ2V8dGludGVydmFsZ3R8dGludGVydmFsaW58dGludGVydmFsbGV8dGludGVydmFsbGVuZXF8dGludGVydmFsbGVuZ2V8dGludGVydmFsbGVuZ3R8dGludGVydmFsbGVubGV8dGludGVydmFsbGVubHR8dGludGVydmFsbGVubmV8dGludGVydmFsbHR8dGludGVydmFsbmV8dGludGVydmFsb3V0fHRpbnRlcnZhbG92fHRpbnRlcnZhbHJlY3Z8dGludGVydmFscmVsfHRpbnRlcnZhbHNhbWV8dGludGVydmFsc2VuZHx0aW50ZXJ2YWxzdGFydHx0b19hc2NpaXx0b19jaGFyfHRvX2RhdGV8dG9faGV4fHRvX251bWJlcnx0b190aW1lc3RhbXB8dG9fdHNxdWVyeXx0b190c3ZlY3Rvcnx0cmFuc2FjdGlvbl90aW1lc3RhbXB8dHJhbnNsYXRlfHRyaWdnZXJfaW58dHJpZ2dlcl9vdXR8dHJ1bmN8dHNfZGVidWd8dHNfaGVhZGxpbmV8dHNfbGV4aXplfHRzX21hdGNoX3F2fHRzX21hdGNoX3RxfHRzX21hdGNoX3R0fHRzX21hdGNoX3ZxfHRzX3BhcnNlfHRzX3Jhbmt8dHNfcmFua19jZHx0c19yZXdyaXRlfHRzX3N0YXR8dHNfdG9rZW5fdHlwZXx0c190eXBhbmFseXplfHRzbWF0Y2hqb2luc2VsfHRzbWF0Y2hzZWx8dHNxX21jb250YWluZWR8dHNxX21jb250YWluc3x0c3F1ZXJ5X2FuZHx0c3F1ZXJ5X2NtcHx0c3F1ZXJ5X2VxfHRzcXVlcnlfZ2V8dHNxdWVyeV9ndHx0c3F1ZXJ5X2xlfHRzcXVlcnlfbHR8dHNxdWVyeV9uZXx0c3F1ZXJ5X25vdHx0c3F1ZXJ5X29yfHRzcXVlcnlpbnx0c3F1ZXJ5b3V0fHRzcXVlcnlyZWN2fHRzcXVlcnlzZW5kfHRzdmVjdG9yX2NtcHx0c3ZlY3Rvcl9jb25jYXR8dHN2ZWN0b3JfZXF8dHN2ZWN0b3JfZ2V8dHN2ZWN0b3JfZ3R8dHN2ZWN0b3JfbGV8dHN2ZWN0b3JfbHR8dHN2ZWN0b3JfbmV8dHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXJ8dHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXJfY29sdW1ufHRzdmVjdG9yaW58dHN2ZWN0b3JvdXR8dHN2ZWN0b3JyZWN2fHRzdmVjdG9yc2VuZHx0eGlkX2N1cnJlbnR8dHhpZF9jdXJyZW50X3NuYXBzaG90fHR4aWRfc25hcHNob3RfaW58dHhpZF9zbmFwc2hvdF9vdXR8dHhpZF9zbmFwc2hvdF9yZWN2fHR4aWRfc25hcHNob3Rfc2VuZHx0eGlkX3NuYXBzaG90X3hpcHx0eGlkX3NuYXBzaG90X3htYXh8dHhpZF9zbmFwc2hvdF94bWlufHR4aWRfdmlzaWJsZV9pbl9zbmFwc2hvdHx1aGNfdG9fdXRmOHx1bmlxdWVfa2V5X3JlY2hlY2t8dW5rbm93bmlufHVua25vd25vdXR8dW5rbm93bnJlY3Z8dW5rbm93bnNlbmR8dW5uZXN0fHVwcGVyfHV0ZjhfdG9fYXNjaWl8dXRmOF90b19iaWc1fHV0ZjhfdG9fZXVjX2NufHV0ZjhfdG9fZXVjX2ppc18yMDA0fHV0ZjhfdG9fZXVjX2pwfHV0ZjhfdG9fZXVjX2tyfHV0ZjhfdG9fZXVjX3R3fHV0ZjhfdG9fZ2IxODAzMHx1dGY4X3RvX2dia3x1dGY4X3RvX2lzbzg4NTl8dXRmOF90b19pc284ODU5XzF8dXRmOF90b19qb2hhYnx1dGY4X3RvX2tvaThyfHV0ZjhfdG9fa29pOHV8dXRmOF90b19zaGlmdF9qaXNfMjAwNHx1dGY4X3RvX3NqaXN8dXRmOF90b191aGN8dXRmOF90b193aW58dXVpZF9jbXB8dXVpZF9lcXx1dWlkX2dlfHV1aWRfZ3R8dXVpZF9oYXNofHV1aWRfaW58dXVpZF9sZXx1dWlkX2x0fHV1aWRfbmV8dXVpZF9vdXR8dXVpZF9yZWN2fHV1aWRfc2VuZHx2YXJfcG9wfHZhcl9zYW1wfHZhcmJpdF9pbnx2YXJiaXRfb3V0fHZhcmJpdF9yZWN2fHZhcmJpdF9zZW5kfHZhcmJpdGNtcHx2YXJiaXRlcXx2YXJiaXRnZXx2YXJiaXRndHx2YXJiaXRsZXx2YXJiaXRsdHx2YXJiaXRuZXx2YXJiaXR0eXBtb2Rpbnx2YXJiaXR0eXBtb2RvdXR8dmFyY2hhcmlufHZhcmNoYXJvdXR8dmFyY2hhcnJlY3Z8dmFyY2hhcnNlbmR8dmFyY2hhcnR5cG1vZGlufHZhcmNoYXJ0eXBtb2RvdXR8dmFyaWFuY2V8dmVyc2lvbnx2b2lkX2lufHZvaWRfb3V0fHZvaWRfcmVjdnx2b2lkX3NlbmR8d2lkdGh8d2lkdGhfYnVja2V0fHdpbjEyNTBfdG9fbGF0aW4yfHdpbjEyNTBfdG9fbWljfHdpbjEyNTFfdG9faXNvfHdpbjEyNTFfdG9fa29pOHJ8d2luMTI1MV90b19taWN8d2luMTI1MV90b193aW44NjZ8d2luODY2X3RvX2lzb3x3aW44NjZfdG9fa29pOHJ8d2luODY2X3RvX21pY3x3aW44NjZfdG9fd2luMTI1MXx3aW5fdG9fdXRmOHx4aWRlcXx4aWRlcWludDR8eGlkaW58eGlkb3V0fHhpZHJlY3Z8eGlkc2VuZHx4bWx8eG1sX2lufHhtbF9pc193ZWxsX2Zvcm1lZHx4bWxfaXNfd2VsbF9mb3JtZWRfY29udGVudHx4bWxfaXNfd2VsbF9mb3JtZWRfZG9jdW1lbnR8eG1sX291dHx4bWxfcmVjdnx4bWxfc2VuZHx4bWxhZ2d8eG1sY29tbWVudHx4bWxjb25jYXQyfHhtbGV4aXN0c3x4bWx2YWxpZGF0ZXx4cGF0aHx4cGF0aF9leGlzdHMiLnNwbGl0KCJ8IikpLG49W3t0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoidmFyaWFibGUubGFuZ3VhZ2UiLHJlZ2V4OiciLio/Iid9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IlsrLV0/XFxkKyg/Oig/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPyk/XFxiIn0se3Rva2VuOmZ1bmN0aW9uKG4pe3JldHVybiBuPW4udG9Mb3dlckNhc2UoKSxlLmhhc093blByb3BlcnR5KG4pPyJrZXl3b3JkIjp0Lmhhc093blByb3BlcnR5KG4pPyJzdXBwb3J0LmZ1bmN0aW9uIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aX11bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IiF8ISF8IX58IX5cXCp8IX5+fCF+flxcKnwjfCMjfCM8fCM8PXwjPD58Iz18Iz58Iz49fCV8XFwmfFxcJlxcJnxcXCY8fFxcJjxcXHx8XFwmPnxcXCp8XFwrfFxcLXwvfDx8PCM+fDxcXC0+fDw8fDw8PXw8PFxcfHw8PXw8Pnw8XFw/Pnw8QHw8XFxefD18Pnw+PXw+Pnw+Pj18PlxcXnxcXD8jfFxcP1xcLXxcXD9cXC1cXHx8XFw/XFx8fFxcP1xcfFxcfHxAfEBcXC1AfEA+fEBAfEBAQHxcXF58XFx8fFxcfFxcJj58XFx8L3xcXHw+PnxcXHxcXHx8XFx8XFx8L3x+fH5cXCp8fjw9fnx+PH58fj18fj49fnx+Pn58fn58fn5cXCoifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IltcXChdIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJbXFwpXSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV07dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiItLS4qJCJ9LHMuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46ImtleXdvcmQuc3RhdGVtZW50QmVnaW4iLHJlZ2V4OiJeW2EtekEtWl0rIixuZXh0OiJzdGF0ZW1lbnQifSx7dG9rZW46InN1cHBvcnQuYnVpbGRpbiIscmVnZXg6Il5cXFxcW1xcU10rLiokIn1dLHN0YXRlbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLS0uKiQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnRTdGF0ZW1lbnQifSx7dG9rZW46InN0YXRlbWVudEVuZCIscmVnZXg6IjsiLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXCRwZXJsXFwkIixuZXh0OiJwZXJsLXN0YXJ0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXCRweXRob25cXCQiLG5leHQ6InB5dGhvbi1zdGFydCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFwkW1xcd18wLTldKlxcJCQiLG5leHQ6ImRvbGxhclNxbCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiXFwkW1xcd18wLTldKlxcJCIsbmV4dDoiZG9sbGFyU3RhdGVtZW50U3RyaW5nIn1dLmNvbmNhdChuKSxkb2xsYXJTcWw6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii0tLiokIn0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50RG9sbGFyU3FsIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJeXFwkW1xcd18wLTldKlxcJCIsbmV4dDoic3RhdGVtZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXCRbXFx3XzAtOV0qXFwkIixuZXh0OiJkb2xsYXJTcWxTdHJpbmcifV0uY29uY2F0KG4pLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxjb21tZW50U3RhdGVtZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InN0YXRlbWVudCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLGNvbW1lbnREb2xsYXJTcWw6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoiZG9sbGFyU3FsIn0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0sZG9sbGFyU3RhdGVtZW50U3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Ii4qP1xcJFtcXHdfMC05XSpcXCQiLG5leHQ6InN0YXRlbWVudCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV0sZG9sbGFyU3FsU3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Ii4qP1xcJFtcXHdfMC05XSpcXCQiLG5leHQ6ImRvbGxhclNxbCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV19LHRoaXMuZW1iZWRSdWxlcyhzLCJkb2MtIixbcy5nZXRFbmRSdWxlKCJzdGFydCIpXSksdGhpcy5lbWJlZFJ1bGVzKHUsInBlcmwtIixbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXCRwZXJsXFwkIixuZXh0OiJzdGF0ZW1lbnQifV0pLHRoaXMuZW1iZWRSdWxlcyhhLCJweXRob24tIixbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXCRweXRob25cXCQiLG5leHQ6InN0YXRlbWVudCJ9XSl9O3IuaW5oZXJpdHMoZixvKSx0LlBnc3FsSGlnaGxpZ2h0UnVsZXM9Zn0pLGRlZmluZSgiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLHM9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudC5kb2MudGFnIixyZWdleDoiQFtcXHdcXGRfXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJUT0RPIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlteQFxcKl0rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6Ii4ifV19fTtyLmluaGVyaXRzKHMsaSkscy5nZXRTdGFydFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKig/PVxcKikiLG5leHQ6ZX19LHMuZ2V0RW5kUnVsZT1mdW5jdGlvbihlKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwqXFwvIixuZXh0OmV9fSx0LkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcz1zfSksZGVmaW5lKCJhY2UvbW9kZS9wZXJsX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsbz1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgiYmFzZXxjb25zdGFudHxjb250aW51ZXxlbHNlfGVsc2lmfGZvcnxmb3JlYWNofGZvcm1hdHxnb3RvfGlmfGxhc3R8bG9jYWx8bXl8bmV4dHxub3xwYWNrYWdlfHBhcmVudHxyZWRvfHJlcXVpcmV8c2NhbGFyfHN1Ynx1bmxlc3N8dW50aWx8d2hpbGV8dXNlfHZhcnMiLnNwbGl0KCJ8IikpLHQ9aS5hcnJheVRvTWFwKCJBUkdWfEVOVnxJTkN8U0lHIi5zcGxpdCgifCIpKSxuPWkuYXJyYXlUb01hcCgiZ2V0cHJvdG9ieW51bWJlcnxnZXRwcm90b2J5bmFtZXxnZXRzZXJ2YnluYW1lfGdldGhvc3RieWFkZHJ8Z2V0aG9zdGJ5bmFtZXxnZXRzZXJ2Ynlwb3J0fGdldG5ldGJ5YWRkcnxnZXRuZXRieW5hbWV8Z2V0c29ja25hbWV8Z2V0cGVlcm5hbWV8c2V0cHJpb3JpdHl8Z2V0cHJvdG9lbnR8c2V0cHJvdG9lbnR8Z2V0cHJpb3JpdHl8ZW5kcHJvdG9lbnR8Z2V0c2VydmVudHxzZXRzZXJ2ZW50fGVuZHNlcnZlbnR8c2V0aG9zdGVudHxzb2NrZXRwYWlyfGdldHNvY2tvcHR8Z2V0aG9zdGVudHxlbmRob3N0ZW50fHNldHNvY2tvcHR8c2V0bmV0ZW50fHF1b3RlbWV0YXxsb2NhbHRpbWV8cHJvdG90eXBlfGdldG5ldGVudHxlbmRuZXRlbnR8cmV3aW5kZGlyfHdhbnRhcnJheXxnZXRwd3VpZHxjbG9zZWRpcnxnZXRsb2dpbnxyZWFkbGlua3xlbmRncmVudHxnZXRncmdpZHxnZXRncm5hbXxzaG13cml0ZXxzaHV0ZG93bnxyZWFkbGluZXxlbmRwd2VudHxzZXRncmVudHxyZWFkcGlwZXxmb3JtbGluZXx0cnVuY2F0ZXxkYm1jbG9zZXxzeXN3cml0ZXxzZXRwd2VudHxnZXRwd25hbXxnZXRncmVudHxnZXRwd2VudHx1Y2ZpcnN0fHN5c3JlYWR8c2V0cGdycHxzaG1yZWFkfHN5c3NlZWt8c3lzb3Blbnx0ZWxsZGlyfGRlZmluZWR8b3BlbmRpcnxjb25uZWN0fGxjZmlyc3R8Z2V0cHBpZHxiaW5tb2RlfHN5c2NhbGx8c3ByaW50ZnxnZXRwZ3JwfHJlYWRkaXJ8c2Vla2Rpcnx3YWl0cGlkfHJldmVyc2V8dW5zaGlmdHxzeW1saW5rfGRibW9wZW58c2VtZ2V0fG1zZ3JjdnxyZW5hbWV8bGlzdGVufGNocm9vdHxtc2dzbmR8c2htY3RsfGFjY2VwdHx1bnBhY2t8ZXhpc3RzfGZpbGVub3xzaG1nZXR8c3lzdGVtfHVubGlua3xwcmludGZ8Z210aW1lfG1zZ2N0bHxzZW1jdGx8dmFsdWVzfHJpbmRleHxzdWJzdHJ8c3BsaWNlfGxlbmd0aHxtc2dnZXR8c2VsZWN0fHNvY2tldHxyZXR1cm58Y2FsbGVyfGRlbGV0ZXxhbGFybXxpb2N0bHxpbmRleHx1bmRlZnxsc3RhdHx0aW1lc3xzcmFuZHxjaG93bnxmY250bHxjbG9zZXx3cml0ZXx1bWFza3xybWRpcnxzdHVkeXxzbGVlcHxjaG9tcHx1bnRpZXxwcmludHx1dGltZXxta2RpcnxhdGFuMnxzcGxpdHxjcnlwdHxmbG9ja3xjaG1vZHxCRUdJTnxibGVzc3xjaGRpcnxzZW1vcHxzaGlmdHxyZXNldHxsaW5rfHN0YXR8Y2hvcHxncmVwfGZvcmt8ZHVtcHxqb2lufG9wZW58dGVsbHxwaXBlfGV4aXR8Z2xvYnx3YXJufGVhY2h8YmluZHxzb3J0fHBhY2t8ZXZhbHxwdXNofGtleXN8Z2V0Y3xraWxsfHNlZWt8c3FydHxzZW5kfHdhaXR8cmFuZHx0aWVkfHJlYWR8dGltZXxleGVjfHJlY3Z8ZW9mfGNocnxpbnR8b3JkfGV4cHxwb3N8cG9wfHNpbnxsb2d8YWJzfG9jdHxoZXh8dGllfGNvc3x2ZWN8RU5EfHJlZnxtYXB8ZGllfHVjfGxjfGRvIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IiMuKiQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbL10oPzooPzpcXFsoPzpcXFxcXXxbXlxcXV0pK1xcXSl8KD86XFxcXC98W15cXF0vXSkpKlsvXVxcdypcXHMqKD89WykuLDtdfCQpIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdJ30se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OidbIl0uKlxcXFwkJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiWyddLipcXFxcJCIsbmV4dDoicXN0cmluZyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IjB4WzAtOWEtZkEtRl0rXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ZnVuY3Rpb24ocil7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkocik/ImtleXdvcmQiOnQuaGFzT3duUHJvcGVydHkocik/ImNvbnN0YW50Lmxhbmd1YWdlIjpuLmhhc093blByb3BlcnR5KHIpPyJzdXBwb3J0LmZ1bmN0aW9uIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXC5cXC5cXC58XFx8XFx8PXw+Pj18PDw9fDw9PnwmJj18PT58IX58XFxePXwmPXxcXHw9fFxcLj18eD18JT18XFwvPXxcXCo9fFxcLT18XFwrPXw9fnxcXCpcXCp8XFwtXFwtfFxcLlxcLnxcXHxcXHx8JiZ8XFwrXFwrfFxcLT58IT18PT18Pj18PD18Pj58PDx8LHw9fFxcP1xcOnxcXF58XFx8fHh8JXxcXC98XFwqfDx8JnxcXFxcfH58IXw+fFxcLnxcXC18XFwrfFxcLUN8XFwtYnxcXC1TfFxcLXV8XFwtdHxcXC1wfFxcLWx8XFwtZHxcXC1mfFxcLWd8XFwtc3xcXC16fFxcLWt8XFwtZXxcXC1PfFxcLVR8XFwtQnxcXC1NfFxcLUF8XFwtWHxcXC1XfFxcLWN8XFwtUnxcXC1vfFxcLXh8XFwtd3xcXC1yfFxcYig/OmFuZHxjbXB8ZXF8Z2V8Z3R8bGV8bHR8bmV8bm90fG9yfHhvcikifSx7dG9rZW46ImxwYXJlbiIscmVnZXg6IltbKHtdIn0se3Rva2VuOiJycGFyZW4iLHJlZ2V4OiJbXFxdKX1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OicoPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/IicsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqPyciLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX19O3IuaW5oZXJpdHMobyxzKSx0LlBlcmxIaWdobGlnaHRSdWxlcz1vfSksZGVmaW5lKCJhY2UvbW9kZS9weXRob25faGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi9saWIvbGFuZyIpLHM9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxvPWZ1bmN0aW9uKCl7dmFyIGU9aS5hcnJheVRvTWFwKCJhbmR8YXN8YXNzZXJ0fGJyZWFrfGNsYXNzfGNvbnRpbnVlfGRlZnxkZWx8ZWxpZnxlbHNlfGV4Y2VwdHxleGVjfGZpbmFsbHl8Zm9yfGZyb218Z2xvYmFsfGlmfGltcG9ydHxpbnxpc3xsYW1iZGF8bm90fG9yfHBhc3N8cHJpbnR8cmFpc2V8cmV0dXJufHRyeXx3aGlsZXx3aXRofHlpZWxkIi5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgiVHJ1ZXxGYWxzZXxOb25lfE5vdEltcGxlbWVudGVkfEVsbGlwc2lzfF9fZGVidWdfXyIuc3BsaXQoInwiKSksbj1pLmFycmF5VG9NYXAoImFic3xkaXZtb2R8aW5wdXR8b3BlbnxzdGF0aWNtZXRob2R8YWxsfGVudW1lcmF0ZXxpbnR8b3JkfHN0cnxhbnl8ZXZhbHxpc2luc3RhbmNlfHBvd3xzdW18YmFzZXN0cmluZ3xleGVjZmlsZXxpc3N1YmNsYXNzfHByaW50fHN1cGVyfGJpbmZpbGV8aXRlcnxwcm9wZXJ0eXx0dXBsZXxib29sfGZpbHRlcnxsZW58cmFuZ2V8dHlwZXxieXRlYXJyYXl8ZmxvYXR8bGlzdHxyYXdfaW5wdXR8dW5pY2hyfGNhbGxhYmxlfGZvcm1hdHxsb2NhbHN8cmVkdWNlfHVuaWNvZGV8Y2hyfGZyb3plbnNldHxsb25nfHJlbG9hZHx2YXJzfGNsYXNzbWV0aG9kfGdldGF0dHJ8bWFwfHJlcHJ8eHJhbmdlfGNtcHxnbG9iYWxzfG1heHxyZXZlcnNlZHx6aXB8Y29tcGlsZXxoYXNhdHRyfG1lbW9yeXZpZXd8cm91bmR8X19pbXBvcnRfX3xjb21wbGV4fGhhc2h8bWlufHNldHxhcHBseXxkZWxhdHRyfGhlbHB8bmV4dHxzZXRhdHRyfGJ1ZmZlcnxkaWN0fGhleHxvYmplY3R8c2xpY2V8Y29lcmNlfGRpcnxpZHxvY3R8c29ydGVkfGludGVybiIuc3BsaXQoInwiKSkscj1pLmFycmF5VG9NYXAoIiIuc3BsaXQoInwiKSkscz0iKD86cnx1fHVyfFJ8VXxVUnxVcnx1Uik/IixvPSIoPzooPzpbMS05XVxcZCopfCg/OjApKSIsdT0iKD86MFtvT10/WzAtN10rKSIsYT0iKD86MFt4WF1bXFxkQS1GYS1mXSspIixmPSIoPzowW2JCXVswMV0rKSIsbD0iKD86IitvKyJ8Iit1KyJ8IithKyJ8IitmKyIpIixjPSIoPzpbZUVdWystXT9cXGQrKSIsaD0iKD86XFwuXFxkKykiLHA9Iig/OlxcZCspIixkPSIoPzooPzoiK3ArIj8iK2grIil8KD86IitwKyJcXC4pKSIsdj0iKD86KD86IitkKyJ8IitwKyIpIitjKyIpIixtPSIoPzoiK3YrInwiK2QrIikiO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiIy4qJCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDpzKyciezN9KD86W15cXFxcXXxcXFxcLikqPyJ7M30nfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6cysnInszfS4qJCcsbmV4dDoicXFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6cysnIig/OlteXFxcXF18XFxcXC4pKj8iJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OnMrIid7M30oPzpbXlxcXFxdfFxcXFwuKSo/J3szfSJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDpzKyInezN9LiokIixuZXh0OiJxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OnMrIicoPzpbXlxcXFxdfFxcXFwuKSo/JyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6Iig/OiIrbSsifFxcZCspW2pKXVxcYiJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6bX0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDpsKyJbbExdXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDpsKyJcXGIifSx7dG9rZW46ZnVuY3Rpb24oaSl7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkoaSk/ImtleXdvcmQiOnQuaGFzT3duUHJvcGVydHkoaSk/ImNvbnN0YW50Lmxhbmd1YWdlIjpyLmhhc093blByb3BlcnR5KGkpPyJpbnZhbGlkLmlsbGVnYWwiOm4uaGFzT3duUHJvcGVydHkoaSk/InN1cHBvcnQuZnVuY3Rpb24iOmk9PSJkZWJ1Z2dlciI/ImludmFsaWQuZGVwcmVjYXRlZCI6ImlkZW50aWZpZXIifSxyZWdleDoiW2EtekEtWl8kXVthLXpBLVowLTlfJF0qXFxiIn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFwrfFxcLXxcXCp8XFwqXFwqfFxcL3xcXC9cXC98JXw8PHw+PnwmfFxcfHxcXF58fnw8fD58PD18PT58PT18IT18PD58PSJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1xcW1xcKFxce10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF1cXClcXH1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OicoPzpbXlxcXFxdfFxcXFwuKSo/InszfScsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiKD86W15cXFxcXXxcXFxcLikqPyd7M30iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX19O3IuaW5oZXJpdHMobyxzKSx0LlB5dGhvbkhpZ2hsaWdodFJ1bGVzPW99KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-php.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9waHAiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvcGhwX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4vcGhwX2hpZ2hsaWdodF9ydWxlcyIpLlBocEhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsYT1lKCIuLi9yYW5nZSIpLlJhbmdlLGY9ZSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGw9ZSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGM9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyB1LHRoaXMuJGJlaGF2aW91cj1uZXcgZix0aGlzLmZvbGRpbmdSdWxlcz1uZXcgbH07ci5pbmhlcml0cyhjLGkpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ITAscz0vXihccyopIy87Zm9yKHZhciBvPW47bzw9cjtvKyspaWYoIXMudGVzdCh0LmdldExpbmUobykpKXtpPSExO2JyZWFrfWlmKGkpe3ZhciB1PW5ldyBhKDAsMCwwLDApO2Zvcih2YXIgbz1uO288PXI7bysrKXt2YXIgZj10LmdldExpbmUobyksbD1mLm1hdGNoKHMpO3Uuc3RhcnQucm93PW8sdS5lbmQucm93PW8sdS5lbmQuY29sdW1uPWxbMF0ubGVuZ3RoLHQucmVwbGFjZSh1LGxbMV0pfX1lbHNlIHQuaW5kZW50Um93cyhuLHIsIiMiKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy4kZ2V0SW5kZW50KHQpLGk9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnModCxlKSxzPWkudG9rZW5zO2lmKHMubGVuZ3RoJiZzW3MubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gcjtpZihlPT0ic3RhcnQiKXt2YXIgbz10Lm1hdGNoKC9eLipbXHtcKFxbXDpdXHMqJC8pO28mJihyKz1uKX1yZXR1cm4gcn0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudCh0LG4pfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KHQsbil9fS5jYWxsKGMucHJvdG90eXBlKSx0Lk1vZGU9Y30pLGRlZmluZSgiYWNlL21vZGUvcGhwX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIikuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzLG89ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyx1PWZ1bmN0aW9uKCl7dmFyIGU9cyx0PWkuYXJyYXlUb01hcCgiYWJzfGFjb3N8YWNvc2h8YWRkY3NsYXNoZXN8YWRkc2xhc2hlc3xhZ2dyZWdhdGV8YWdncmVnYXRlX2luZm98YWdncmVnYXRlX21ldGhvZHN8YWdncmVnYXRlX21ldGhvZHNfYnlfbGlzdHxhZ2dyZWdhdGVfbWV0aG9kc19ieV9yZWdleHB8YWdncmVnYXRlX3Byb3BlcnRpZXN8YWdncmVnYXRlX3Byb3BlcnRpZXNfYnlfbGlzdHxhZ2dyZWdhdGVfcHJvcGVydGllc19ieV9yZWdleHB8YWdncmVnYXRpb25faW5mb3xhbXFwY29ubmVjdGlvbnxhbXFwZXhjaGFuZ2V8YW1xcHF1ZXVlfGFwYWNoZV9jaGlsZF90ZXJtaW5hdGV8YXBhY2hlX2dldF9tb2R1bGVzfGFwYWNoZV9nZXRfdmVyc2lvbnxhcGFjaGVfZ2V0ZW52fGFwYWNoZV9sb29rdXBfdXJpfGFwYWNoZV9ub3RlfGFwYWNoZV9yZXF1ZXN0X2hlYWRlcnN8YXBhY2hlX3Jlc2V0X3RpbWVvdXR8YXBhY2hlX3Jlc3BvbnNlX2hlYWRlcnN8YXBhY2hlX3NldGVudnxhcGNfYWRkfGFwY19iaW5fZHVtcHxhcGNfYmluX2R1bXBmaWxlfGFwY19iaW5fbG9hZHxhcGNfYmluX2xvYWRmaWxlfGFwY19jYWNoZV9pbmZvfGFwY19jYXN8YXBjX2NsZWFyX2NhY2hlfGFwY19jb21waWxlX2ZpbGV8YXBjX2RlY3xhcGNfZGVmaW5lX2NvbnN0YW50c3xhcGNfZGVsZXRlfGFwY19kZWxldGVfZmlsZXxhcGNfZXhpc3RzfGFwY19mZXRjaHxhcGNfaW5jfGFwY19sb2FkX2NvbnN0YW50c3xhcGNfc21hX2luZm98YXBjX3N0b3JlfGFwY2l0ZXJhdG9yfGFwZF9icmVha3BvaW50fGFwZF9jYWxsc3RhY2t8YXBkX2NsdW5rfGFwZF9jb250aW51ZXxhcGRfY3JvYWt8YXBkX2R1bXBfZnVuY3Rpb25fdGFibGV8YXBkX2R1bXBfcGVyc2lzdGVudF9yZXNvdXJjZXN8YXBkX2R1bXBfcmVndWxhcl9yZXNvdXJjZXN8YXBkX2VjaG98YXBkX2dldF9hY3RpdmVfc3ltYm9sc3xhcGRfc2V0X3Bwcm9mX3RyYWNlfGFwZF9zZXRfc2Vzc2lvbnxhcGRfc2V0X3Nlc3Npb25fdHJhY2V8YXBkX3NldF9zZXNzaW9uX3RyYWNlX3NvY2tldHxhcHBlbmRpdGVyYXRvcnxhcnJheXxhcnJheV9jaGFuZ2Vfa2V5X2Nhc2V8YXJyYXlfY2h1bmt8YXJyYXlfY29tYmluZXxhcnJheV9jb3VudF92YWx1ZXN8YXJyYXlfZGlmZnxhcnJheV9kaWZmX2Fzc29jfGFycmF5X2RpZmZfa2V5fGFycmF5X2RpZmZfdWFzc29jfGFycmF5X2RpZmZfdWtleXxhcnJheV9maWxsfGFycmF5X2ZpbGxfa2V5c3xhcnJheV9maWx0ZXJ8YXJyYXlfZmxpcHxhcnJheV9pbnRlcnNlY3R8YXJyYXlfaW50ZXJzZWN0X2Fzc29jfGFycmF5X2ludGVyc2VjdF9rZXl8YXJyYXlfaW50ZXJzZWN0X3Vhc3NvY3xhcnJheV9pbnRlcnNlY3RfdWtleXxhcnJheV9rZXlfZXhpc3RzfGFycmF5X2tleXN8YXJyYXlfbWFwfGFycmF5X21lcmdlfGFycmF5X21lcmdlX3JlY3Vyc2l2ZXxhcnJheV9tdWx0aXNvcnR8YXJyYXlfcGFkfGFycmF5X3BvcHxhcnJheV9wcm9kdWN0fGFycmF5X3B1c2h8YXJyYXlfcmFuZHxhcnJheV9yZWR1Y2V8YXJyYXlfcmVwbGFjZXxhcnJheV9yZXBsYWNlX3JlY3Vyc2l2ZXxhcnJheV9yZXZlcnNlfGFycmF5X3NlYXJjaHxhcnJheV9zaGlmdHxhcnJheV9zbGljZXxhcnJheV9zcGxpY2V8YXJyYXlfc3VtfGFycmF5X3VkaWZmfGFycmF5X3VkaWZmX2Fzc29jfGFycmF5X3VkaWZmX3Vhc3NvY3xhcnJheV91aW50ZXJzZWN0fGFycmF5X3VpbnRlcnNlY3RfYXNzb2N8YXJyYXlfdWludGVyc2VjdF91YXNzb2N8YXJyYXlfdW5pcXVlfGFycmF5X3Vuc2hpZnR8YXJyYXlfdmFsdWVzfGFycmF5X3dhbGt8YXJyYXlfd2Fsa19yZWN1cnNpdmV8YXJyYXlhY2Nlc3N8YXJyYXlpdGVyYXRvcnxhcnJheW9iamVjdHxhcnNvcnR8YXNpbnxhc2luaHxhc29ydHxhc3NlcnR8YXNzZXJ0X29wdGlvbnN8YXRhbnxhdGFuMnxhdGFuaHxhdWRpb3Byb3BlcnRpZXN8YmFkZnVuY3Rpb25jYWxsZXhjZXB0aW9ufGJhZG1ldGhvZGNhbGxleGNlcHRpb258YmFzZTY0X2RlY29kZXxiYXNlNjRfZW5jb2RlfGJhc2VfY29udmVydHxiYXNlbmFtZXxiYmNvZGVfYWRkX2VsZW1lbnR8YmJjb2RlX2FkZF9zbWlsZXl8YmJjb2RlX2NyZWF0ZXxiYmNvZGVfZGVzdHJveXxiYmNvZGVfcGFyc2V8YmJjb2RlX3NldF9hcmdfcGFyc2VyfGJiY29kZV9zZXRfZmxhZ3N8YmNhZGR8YmNjb21wfGJjZGl2fGJjbW9kfGJjbXVsfGJjb21waWxlcl9sb2FkfGJjb21waWxlcl9sb2FkX2V4ZXxiY29tcGlsZXJfcGFyc2VfY2xhc3N8YmNvbXBpbGVyX3JlYWR8YmNvbXBpbGVyX3dyaXRlX2NsYXNzfGJjb21waWxlcl93cml0ZV9jb25zdGFudHxiY29tcGlsZXJfd3JpdGVfZXhlX2Zvb3RlcnxiY29tcGlsZXJfd3JpdGVfZmlsZXxiY29tcGlsZXJfd3JpdGVfZm9vdGVyfGJjb21waWxlcl93cml0ZV9mdW5jdGlvbnxiY29tcGlsZXJfd3JpdGVfZnVuY3Rpb25zX2Zyb21fZmlsZXxiY29tcGlsZXJfd3JpdGVfaGVhZGVyfGJjb21waWxlcl93cml0ZV9pbmNsdWRlZF9maWxlbmFtZXxiY3Bvd3xiY3Bvd21vZHxiY3NjYWxlfGJjc3FydHxiY3N1YnxiaW4yaGV4fGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0fGJpbmRlY3xiaW5kdGV4dGRvbWFpbnxic29uX2RlY29kZXxic29uX2VuY29kZXxidW1wVmFsdWV8YnpjbG9zZXxiemNvbXByZXNzfGJ6ZGVjb21wcmVzc3xiemVycm5vfGJ6ZXJyb3J8YnplcnJzdHJ8YnpmbHVzaHxiem9wZW58YnpyZWFkfGJ6d3JpdGV8Y2FjaGluZ2l0ZXJhdG9yfGNhaXJvfGNhaXJvX2NyZWF0ZXxjYWlyb19mb250X2ZhY2VfZ2V0X3R5cGV8Y2Fpcm9fZm9udF9mYWNlX3N0YXR1c3xjYWlyb19mb250X29wdGlvbnNfY3JlYXRlfGNhaXJvX2ZvbnRfb3B0aW9uc19lcXVhbHxjYWlyb19mb250X29wdGlvbnNfZ2V0X2FudGlhbGlhc3xjYWlyb19mb250X29wdGlvbnNfZ2V0X2hpbnRfbWV0cmljc3xjYWlyb19mb250X29wdGlvbnNfZ2V0X2hpbnRfc3R5bGV8Y2Fpcm9fZm9udF9vcHRpb25zX2dldF9zdWJwaXhlbF9vcmRlcnxjYWlyb19mb250X29wdGlvbnNfaGFzaHxjYWlyb19mb250X29wdGlvbnNfbWVyZ2V8Y2Fpcm9fZm9udF9vcHRpb25zX3NldF9hbnRpYWxpYXN8Y2Fpcm9fZm9udF9vcHRpb25zX3NldF9oaW50X21ldHJpY3N8Y2Fpcm9fZm9udF9vcHRpb25zX3NldF9oaW50X3N0eWxlfGNhaXJvX2ZvbnRfb3B0aW9uc19zZXRfc3VicGl4ZWxfb3JkZXJ8Y2Fpcm9fZm9udF9vcHRpb25zX3N0YXR1c3xjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aHxjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZXxjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YXxjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mcm9tX3BuZ3xjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhfGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdHxjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHR8Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlfGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRofGNhaXJvX21hdHJpeF9jcmVhdGVfc2NhbGV8Y2Fpcm9fbWF0cml4X2NyZWF0ZV90cmFuc2xhdGV8Y2Fpcm9fbWF0cml4X2ludmVydHxjYWlyb19tYXRyaXhfbXVsdGlwbHl8Y2Fpcm9fbWF0cml4X3JvdGF0ZXxjYWlyb19tYXRyaXhfdHJhbnNmb3JtX2Rpc3RhbmNlfGNhaXJvX21hdHJpeF90cmFuc2Zvcm1fcG9pbnR8Y2Fpcm9fbWF0cml4X3RyYW5zbGF0ZXxjYWlyb19wYXR0ZXJuX2FkZF9jb2xvcl9zdG9wX3JnYnxjYWlyb19wYXR0ZXJuX2FkZF9jb2xvcl9zdG9wX3JnYmF8Y2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZhY2V8Y2Fpcm9fcGF0dGVybl9jcmVhdGVfbGluZWFyfGNhaXJvX3BhdHRlcm5fY3JlYXRlX3JhZGlhbHxjYWlyb19wYXR0ZXJuX2NyZWF0ZV9yZ2J8Y2Fpcm9fcGF0dGVybl9jcmVhdGVfcmdiYXxjYWlyb19wYXR0ZXJuX2dldF9jb2xvcl9zdG9wX2NvdW50fGNhaXJvX3BhdHRlcm5fZ2V0X2NvbG9yX3N0b3BfcmdiYXxjYWlyb19wYXR0ZXJuX2dldF9leHRlbmR8Y2Fpcm9fcGF0dGVybl9nZXRfZmlsdGVyfGNhaXJvX3BhdHRlcm5fZ2V0X2xpbmVhcl9wb2ludHN8Y2Fpcm9fcGF0dGVybl9nZXRfbWF0cml4fGNhaXJvX3BhdHRlcm5fZ2V0X3JhZGlhbF9jaXJjbGVzfGNhaXJvX3BhdHRlcm5fZ2V0X3JnYmF8Y2Fpcm9fcGF0dGVybl9nZXRfc3VyZmFjZXxjYWlyb19wYXR0ZXJuX2dldF90eXBlfGNhaXJvX3BhdHRlcm5fc2V0X2V4dGVuZHxjYWlyb19wYXR0ZXJuX3NldF9maWx0ZXJ8Y2Fpcm9fcGF0dGVybl9zZXRfbWF0cml4fGNhaXJvX3BhdHRlcm5fc3RhdHVzfGNhaXJvX3BkZl9zdXJmYWNlX2NyZWF0ZXxjYWlyb19wZGZfc3VyZmFjZV9zZXRfc2l6ZXxjYWlyb19wc19nZXRfbGV2ZWxzfGNhaXJvX3BzX2xldmVsX3RvX3N0cmluZ3xjYWlyb19wc19zdXJmYWNlX2NyZWF0ZXxjYWlyb19wc19zdXJmYWNlX2RzY19iZWdpbl9wYWdlX3NldHVwfGNhaXJvX3BzX3N1cmZhY2VfZHNjX2JlZ2luX3NldHVwfGNhaXJvX3BzX3N1cmZhY2VfZHNjX2NvbW1lbnR8Y2Fpcm9fcHNfc3VyZmFjZV9nZXRfZXBzfGNhaXJvX3BzX3N1cmZhY2VfcmVzdHJpY3RfdG9fbGV2ZWx8Y2Fpcm9fcHNfc3VyZmFjZV9zZXRfZXBzfGNhaXJvX3BzX3N1cmZhY2Vfc2V0X3NpemV8Y2Fpcm9fc2NhbGVkX2ZvbnRfY3JlYXRlfGNhaXJvX3NjYWxlZF9mb250X2V4dGVudHN8Y2Fpcm9fc2NhbGVkX2ZvbnRfZ2V0X2N0bXxjYWlyb19zY2FsZWRfZm9udF9nZXRfZm9udF9mYWNlfGNhaXJvX3NjYWxlZF9mb250X2dldF9mb250X21hdHJpeHxjYWlyb19zY2FsZWRfZm9udF9nZXRfZm9udF9vcHRpb25zfGNhaXJvX3NjYWxlZF9mb250X2dldF9zY2FsZV9tYXRyaXh8Y2Fpcm9fc2NhbGVkX2ZvbnRfZ2V0X3R5cGV8Y2Fpcm9fc2NhbGVkX2ZvbnRfZ2x5cGhfZXh0ZW50c3xjYWlyb19zY2FsZWRfZm9udF9zdGF0dXN8Y2Fpcm9fc2NhbGVkX2ZvbnRfdGV4dF9leHRlbnRzfGNhaXJvX3N1cmZhY2VfY29weV9wYWdlfGNhaXJvX3N1cmZhY2VfY3JlYXRlX3NpbWlsYXJ8Y2Fpcm9fc3VyZmFjZV9maW5pc2h8Y2Fpcm9fc3VyZmFjZV9mbHVzaHxjYWlyb19zdXJmYWNlX2dldF9jb250ZW50fGNhaXJvX3N1cmZhY2VfZ2V0X2RldmljZV9vZmZzZXR8Y2Fpcm9fc3VyZmFjZV9nZXRfZm9udF9vcHRpb25zfGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGV8Y2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5fGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGV8Y2Fpcm9fc3VyZmFjZV9zZXRfZGV2aWNlX29mZnNldHxjYWlyb19zdXJmYWNlX3NldF9mYWxsYmFja19yZXNvbHV0aW9ufGNhaXJvX3N1cmZhY2Vfc2hvd19wYWdlfGNhaXJvX3N1cmZhY2Vfc3RhdHVzfGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nfGNhaXJvX3N2Z19zdXJmYWNlX2NyZWF0ZXxjYWlyb19zdmdfc3VyZmFjZV9yZXN0cmljdF90b192ZXJzaW9ufGNhaXJvX3N2Z192ZXJzaW9uX3RvX3N0cmluZ3xjYWlyb2FudGlhbGlhc3xjYWlyb2NvbnRlbnR8Y2Fpcm9jb250ZXh0fGNhaXJvZXhjZXB0aW9ufGNhaXJvZXh0ZW5kfGNhaXJvZmlsbHJ1bGV8Y2Fpcm9maWx0ZXJ8Y2Fpcm9mb250ZmFjZXxjYWlyb2ZvbnRvcHRpb25zfGNhaXJvZm9udHNsYW50fGNhaXJvZm9udHR5cGV8Y2Fpcm9mb250d2VpZ2h0fGNhaXJvZm9ybWF0fGNhaXJvZ3JhZGllbnRwYXR0ZXJufGNhaXJvaGludG1ldHJpY3N8Y2Fpcm9oaW50c3R5bGV8Y2Fpcm9pbWFnZXN1cmZhY2V8Y2Fpcm9saW5lYXJncmFkaWVudHxjYWlyb2xpbmVjYXB8Y2Fpcm9saW5lam9pbnxjYWlyb21hdHJpeHxjYWlyb29wZXJhdG9yfGNhaXJvcGF0aHxjYWlyb3BhdHRlcm58Y2Fpcm9wYXR0ZXJudHlwZXxjYWlyb3BkZnN1cmZhY2V8Y2Fpcm9wc2xldmVsfGNhaXJvcHNzdXJmYWNlfGNhaXJvcmFkaWFsZ3JhZGllbnR8Y2Fpcm9zY2FsZWRmb250fGNhaXJvc29saWRwYXR0ZXJufGNhaXJvc3RhdHVzfGNhaXJvc3VicGl4ZWxvcmRlcnxjYWlyb3N1cmZhY2V8Y2Fpcm9zdXJmYWNlcGF0dGVybnxjYWlyb3N1cmZhY2V0eXBlfGNhaXJvc3Znc3VyZmFjZXxjYWlyb3N2Z3ZlcnNpb258Y2Fpcm90b3lmb250ZmFjZXxjYWxfZGF5c19pbl9tb250aHxjYWxfZnJvbV9qZHxjYWxfaW5mb3xjYWxfdG9famR8Y2FsY3VsX2htYWN8Y2FsY3VsaG1hY3xjYWxsX3VzZXJfZnVuY3xjYWxsX3VzZXJfZnVuY19hcnJheXxjYWxsX3VzZXJfbWV0aG9kfGNhbGxfdXNlcl9tZXRob2RfYXJyYXl8Y2FsbGJhY2tmaWx0ZXJpdGVyYXRvcnxjZWlsfGNoZGJ8Y2hkYl9jcmVhdGV8Y2hkaXJ8Y2hlY2tkYXRlfGNoZWNrZG5zcnJ8Y2hncnB8Y2htb2R8Y2hvcHxjaG93bnxjaHJ8Y2hyb290fGNodW5rX3NwbGl0fGNsYXNzX2FsaWFzfGNsYXNzX2V4aXN0c3xjbGFzc19pbXBsZW1lbnRzfGNsYXNzX3BhcmVudHN8Y2xhc3NraXRfaW1wb3J0fGNsYXNza2l0X21ldGhvZF9hZGR8Y2xhc3NraXRfbWV0aG9kX2NvcHl8Y2xhc3NraXRfbWV0aG9kX3JlZGVmaW5lfGNsYXNza2l0X21ldGhvZF9yZW1vdmV8Y2xhc3NraXRfbWV0aG9kX3JlbmFtZXxjbGVhcnN0YXRjYWNoZXxjbG9uZXxjbG9zZWRpcnxjbG9zZWxvZ3xjb2xsYXRvcnxjb218Y29tX2FkZHJlZnxjb21fY3JlYXRlX2d1aWR8Y29tX2V2ZW50X3Npbmt8Y29tX2dldHxjb21fZ2V0X2FjdGl2ZV9vYmplY3R8Y29tX2ludm9rZXxjb21faXNlbnVtfGNvbV9sb2FkfGNvbV9sb2FkX3R5cGVsaWJ8Y29tX21lc3NhZ2VfcHVtcHxjb21fcHJpbnRfdHlwZWluZm98Y29tX3Byb3BnZXR8Y29tX3Byb3BwdXR8Y29tX3Byb3BzZXR8Y29tX3JlbGVhc2V8Y29tX3NldHxjb21wYWN0fGNvbm5lY3Rpb25fYWJvcnRlZHxjb25uZWN0aW9uX3N0YXR1c3xjb25uZWN0aW9uX3RpbWVvdXR8Y29uc3RhbnR8Y29uc3RydWN0fGNvbnN0cnVjdHxjb25zdHJ1Y3R8Y29udmVydF9jeXJfc3RyaW5nfGNvbnZlcnRfdXVkZWNvZGV8Y29udmVydF91dWVuY29kZXxjb3B5fGNvc3xjb3NofGNvdW50fGNvdW50X2NoYXJzfGNvdW50YWJsZXxjb3VudGVyX2J1bXB8Y291bnRlcl9idW1wX3ZhbHVlfGNvdW50ZXJfY3JlYXRlfGNvdW50ZXJfZ2V0fGNvdW50ZXJfZ2V0X21ldGF8Y291bnRlcl9nZXRfbmFtZWR8Y291bnRlcl9nZXRfdmFsdWV8Y291bnRlcl9yZXNldHxjb3VudGVyX3Jlc2V0X3ZhbHVlfGNyYWNrX2NoZWNrfGNyYWNrX2Nsb3NlZGljdHxjcmFja19nZXRsYXN0bWVzc2FnZXxjcmFja19vcGVuZGljdHxjcmMzMnxjcmVhdGVfZnVuY3Rpb258Y3J5cHR8Y3R5cGVfYWxudW18Y3R5cGVfYWxwaGF8Y3R5cGVfY250cmx8Y3R5cGVfZGlnaXR8Y3R5cGVfZ3JhcGh8Y3R5cGVfbG93ZXJ8Y3R5cGVfcHJpbnR8Y3R5cGVfcHVuY3R8Y3R5cGVfc3BhY2V8Y3R5cGVfdXBwZXJ8Y3R5cGVfeGRpZ2l0fGN1YnJpZF9hZmZlY3RlZF9yb3dzfGN1YnJpZF9iaW5kfGN1YnJpZF9jbGllbnRfZW5jb2Rpbmd8Y3VicmlkX2Nsb3NlfGN1YnJpZF9jbG9zZV9wcmVwYXJlfGN1YnJpZF9jbG9zZV9yZXF1ZXN0fGN1YnJpZF9jb2xfZ2V0fGN1YnJpZF9jb2xfc2l6ZXxjdWJyaWRfY29sdW1uX25hbWVzfGN1YnJpZF9jb2x1bW5fdHlwZXN8Y3VicmlkX2NvbW1pdHxjdWJyaWRfY29ubmVjdHxjdWJyaWRfY29ubmVjdF93aXRoX3VybHxjdWJyaWRfY3VycmVudF9vaWR8Y3VicmlkX2RhdGFfc2Vla3xjdWJyaWRfZGJfbmFtZXxjdWJyaWRfZGlzY29ubmVjdHxjdWJyaWRfZHJvcHxjdWJyaWRfZXJybm98Y3VicmlkX2Vycm9yfGN1YnJpZF9lcnJvcl9jb2RlfGN1YnJpZF9lcnJvcl9jb2RlX2ZhY2lsaXR5fGN1YnJpZF9lcnJvcl9tc2d8Y3VicmlkX2V4ZWN1dGV8Y3VicmlkX2ZldGNofGN1YnJpZF9mZXRjaF9hcnJheXxjdWJyaWRfZmV0Y2hfYXNzb2N8Y3VicmlkX2ZldGNoX2ZpZWxkfGN1YnJpZF9mZXRjaF9sZW5ndGhzfGN1YnJpZF9mZXRjaF9vYmplY3R8Y3VicmlkX2ZldGNoX3Jvd3xjdWJyaWRfZmllbGRfZmxhZ3N8Y3VicmlkX2ZpZWxkX2xlbnxjdWJyaWRfZmllbGRfbmFtZXxjdWJyaWRfZmllbGRfc2Vla3xjdWJyaWRfZmllbGRfdGFibGV8Y3VicmlkX2ZpZWxkX3R5cGV8Y3VicmlkX2ZyZWVfcmVzdWx0fGN1YnJpZF9nZXR8Y3VicmlkX2dldF9hdXRvY29tbWl0fGN1YnJpZF9nZXRfY2hhcnNldHxjdWJyaWRfZ2V0X2NsYXNzX25hbWV8Y3VicmlkX2dldF9jbGllbnRfaW5mb3xjdWJyaWRfZ2V0X2RiX3BhcmFtZXRlcnxjdWJyaWRfZ2V0X3NlcnZlcl9pbmZvfGN1YnJpZF9pbnNlcnRfaWR8Y3VicmlkX2lzX2luc3RhbmNlfGN1YnJpZF9saXN0X2Ric3xjdWJyaWRfbG9hZF9mcm9tX2dsb3xjdWJyaWRfbG9iX2Nsb3NlfGN1YnJpZF9sb2JfZXhwb3J0fGN1YnJpZF9sb2JfZ2V0fGN1YnJpZF9sb2Jfc2VuZHxjdWJyaWRfbG9iX3NpemV8Y3VicmlkX2xvY2tfcmVhZHxjdWJyaWRfbG9ja193cml0ZXxjdWJyaWRfbW92ZV9jdXJzb3J8Y3VicmlkX25ld19nbG98Y3VicmlkX25leHRfcmVzdWx0fGN1YnJpZF9udW1fY29sc3xjdWJyaWRfbnVtX2ZpZWxkc3xjdWJyaWRfbnVtX3Jvd3N8Y3VicmlkX3Bpbmd8Y3VicmlkX3ByZXBhcmV8Y3VicmlkX3B1dHxjdWJyaWRfcXVlcnl8Y3VicmlkX3JlYWxfZXNjYXBlX3N0cmluZ3xjdWJyaWRfcmVzdWx0fGN1YnJpZF9yb2xsYmFja3xjdWJyaWRfc2F2ZV90b19nbG98Y3VicmlkX3NjaGVtYXxjdWJyaWRfc2VuZF9nbG98Y3VicmlkX3NlcV9kcm9wfGN1YnJpZF9zZXFfaW5zZXJ0fGN1YnJpZF9zZXFfcHV0fGN1YnJpZF9zZXRfYWRkfGN1YnJpZF9zZXRfYXV0b2NvbW1pdHxjdWJyaWRfc2V0X2RiX3BhcmFtZXRlcnxjdWJyaWRfc2V0X2Ryb3B8Y3VicmlkX3VuYnVmZmVyZWRfcXVlcnl8Y3VicmlkX3ZlcnNpb258Y3VybF9jbG9zZXxjdXJsX2NvcHlfaGFuZGxlfGN1cmxfZXJybm98Y3VybF9lcnJvcnxjdXJsX2V4ZWN8Y3VybF9nZXRpbmZvfGN1cmxfaW5pdHxjdXJsX211bHRpX2FkZF9oYW5kbGV8Y3VybF9tdWx0aV9jbG9zZXxjdXJsX211bHRpX2V4ZWN8Y3VybF9tdWx0aV9nZXRjb250ZW50fGN1cmxfbXVsdGlfaW5mb19yZWFkfGN1cmxfbXVsdGlfaW5pdHxjdXJsX211bHRpX3JlbW92ZV9oYW5kbGV8Y3VybF9tdWx0aV9zZWxlY3R8Y3VybF9zZXRvcHR8Y3VybF9zZXRvcHRfYXJyYXl8Y3VybF92ZXJzaW9ufGN1cnJlbnR8Y3lydXNfYXV0aGVudGljYXRlfGN5cnVzX2JpbmR8Y3lydXNfY2xvc2V8Y3lydXNfY29ubmVjdHxjeXJ1c19xdWVyeXxjeXJ1c191bmJpbmR8ZGF0ZXxkYXRlX2FkZHxkYXRlX2NyZWF0ZXxkYXRlX2NyZWF0ZV9mcm9tX2Zvcm1hdHxkYXRlX2RhdGVfc2V0fGRhdGVfZGVmYXVsdF90aW1lem9uZV9nZXR8ZGF0ZV9kZWZhdWx0X3RpbWV6b25lX3NldHxkYXRlX2RpZmZ8ZGF0ZV9mb3JtYXR8ZGF0ZV9nZXRfbGFzdF9lcnJvcnN8ZGF0ZV9pbnRlcnZhbF9jcmVhdGVfZnJvbV9kYXRlX3N0cmluZ3xkYXRlX2ludGVydmFsX2Zvcm1hdHxkYXRlX2lzb2RhdGVfc2V0fGRhdGVfbW9kaWZ5fGRhdGVfb2Zmc2V0X2dldHxkYXRlX3BhcnNlfGRhdGVfcGFyc2VfZnJvbV9mb3JtYXR8ZGF0ZV9zdWJ8ZGF0ZV9zdW5faW5mb3xkYXRlX3N1bnJpc2V8ZGF0ZV9zdW5zZXR8ZGF0ZV90aW1lX3NldHxkYXRlX3RpbWVzdGFtcF9nZXR8ZGF0ZV90aW1lc3RhbXBfc2V0fGRhdGVfdGltZXpvbmVfZ2V0fGRhdGVfdGltZXpvbmVfc2V0fGRhdGVpbnRlcnZhbHxkYXRlcGVyaW9kfGRhdGV0aW1lfGRhdGV0aW1lem9uZXxkYjJfYXV0b2NvbW1pdHxkYjJfYmluZF9wYXJhbXxkYjJfY2xpZW50X2luZm98ZGIyX2Nsb3NlfGRiMl9jb2x1bW5fcHJpdmlsZWdlc3xkYjJfY29sdW1uc3xkYjJfY29tbWl0fGRiMl9jb25uX2Vycm9yfGRiMl9jb25uX2Vycm9ybXNnfGRiMl9jb25uZWN0fGRiMl9jdXJzb3JfdHlwZXxkYjJfZXNjYXBlX3N0cmluZ3xkYjJfZXhlY3xkYjJfZXhlY3V0ZXxkYjJfZmV0Y2hfYXJyYXl8ZGIyX2ZldGNoX2Fzc29jfGRiMl9mZXRjaF9ib3RofGRiMl9mZXRjaF9vYmplY3R8ZGIyX2ZldGNoX3Jvd3xkYjJfZmllbGRfZGlzcGxheV9zaXplfGRiMl9maWVsZF9uYW1lfGRiMl9maWVsZF9udW18ZGIyX2ZpZWxkX3ByZWNpc2lvbnxkYjJfZmllbGRfc2NhbGV8ZGIyX2ZpZWxkX3R5cGV8ZGIyX2ZpZWxkX3dpZHRofGRiMl9mb3JlaWduX2tleXN8ZGIyX2ZyZWVfcmVzdWx0fGRiMl9mcmVlX3N0bXR8ZGIyX2dldF9vcHRpb258ZGIyX2xhc3RfaW5zZXJ0X2lkfGRiMl9sb2JfcmVhZHxkYjJfbmV4dF9yZXN1bHR8ZGIyX251bV9maWVsZHN8ZGIyX251bV9yb3dzfGRiMl9wY2xvc2V8ZGIyX3Bjb25uZWN0fGRiMl9wcmVwYXJlfGRiMl9wcmltYXJ5X2tleXN8ZGIyX3Byb2NlZHVyZV9jb2x1bW5zfGRiMl9wcm9jZWR1cmVzfGRiMl9yZXN1bHR8ZGIyX3JvbGxiYWNrfGRiMl9zZXJ2ZXJfaW5mb3xkYjJfc2V0X29wdGlvbnxkYjJfc3BlY2lhbF9jb2x1bW5zfGRiMl9zdGF0aXN0aWNzfGRiMl9zdG10X2Vycm9yfGRiMl9zdG10X2Vycm9ybXNnfGRiMl90YWJsZV9wcml2aWxlZ2VzfGRiMl90YWJsZXN8ZGJhX2Nsb3NlfGRiYV9kZWxldGV8ZGJhX2V4aXN0c3xkYmFfZmV0Y2h8ZGJhX2ZpcnN0a2V5fGRiYV9oYW5kbGVyc3xkYmFfaW5zZXJ0fGRiYV9rZXlfc3BsaXR8ZGJhX2xpc3R8ZGJhX25leHRrZXl8ZGJhX29wZW58ZGJhX29wdGltaXplfGRiYV9wb3BlbnxkYmFfcmVwbGFjZXxkYmFfc3luY3xkYmFzZV9hZGRfcmVjb3JkfGRiYXNlX2Nsb3NlfGRiYXNlX2NyZWF0ZXxkYmFzZV9kZWxldGVfcmVjb3JkfGRiYXNlX2dldF9oZWFkZXJfaW5mb3xkYmFzZV9nZXRfcmVjb3JkfGRiYXNlX2dldF9yZWNvcmRfd2l0aF9uYW1lc3xkYmFzZV9udW1maWVsZHN8ZGJhc2VfbnVtcmVjb3Jkc3xkYmFzZV9vcGVufGRiYXNlX3BhY2t8ZGJhc2VfcmVwbGFjZV9yZWNvcmR8ZGJwbHVzX2FkZHxkYnBsdXNfYXFsfGRicGx1c19jaGRpcnxkYnBsdXNfY2xvc2V8ZGJwbHVzX2N1cnJ8ZGJwbHVzX2VycmNvZGV8ZGJwbHVzX2Vycm5vfGRicGx1c19maW5kfGRicGx1c19maXJzdHxkYnBsdXNfZmx1c2h8ZGJwbHVzX2ZyZWVhbGxsb2Nrc3xkYnBsdXNfZnJlZWxvY2t8ZGJwbHVzX2ZyZWVybG9ja3N8ZGJwbHVzX2dldGxvY2t8ZGJwbHVzX2dldHVuaXF1ZXxkYnBsdXNfaW5mb3xkYnBsdXNfbGFzdHxkYnBsdXNfbG9ja3JlbHxkYnBsdXNfbmV4dHxkYnBsdXNfb3BlbnxkYnBsdXNfcHJldnxkYnBsdXNfcmNocGVybXxkYnBsdXNfcmNyZWF0ZXxkYnBsdXNfcmNydGV4YWN0fGRicGx1c19yY3J0bGlrZXxkYnBsdXNfcmVzb2x2ZXxkYnBsdXNfcmVzdG9yZXBvc3xkYnBsdXNfcmtleXN8ZGJwbHVzX3JvcGVufGRicGx1c19ycXVlcnl8ZGJwbHVzX3JyZW5hbWV8ZGJwbHVzX3JzZWNpbmRleHxkYnBsdXNfcnVubGlua3xkYnBsdXNfcnphcHxkYnBsdXNfc2F2ZXBvc3xkYnBsdXNfc2V0aW5kZXh8ZGJwbHVzX3NldGluZGV4YnludW1iZXJ8ZGJwbHVzX3NxbHxkYnBsdXNfdGNsfGRicGx1c190cmVtb3ZlfGRicGx1c191bmRvfGRicGx1c191bmRvcHJlcGFyZXxkYnBsdXNfdW5sb2NrcmVsfGRicGx1c191bnNlbGVjdHxkYnBsdXNfdXBkYXRlfGRicGx1c194bG9ja3JlbHxkYnBsdXNfeHVubG9ja3JlbHxkYnhfY2xvc2V8ZGJ4X2NvbXBhcmV8ZGJ4X2Nvbm5lY3R8ZGJ4X2Vycm9yfGRieF9lc2NhcGVfc3RyaW5nfGRieF9mZXRjaF9yb3d8ZGJ4X3F1ZXJ5fGRieF9zb3J0fGRjZ2V0dGV4dHxkY25nZXR0ZXh0fGRlYWdncmVnYXRlfGRlYnVnX2JhY2t0cmFjZXxkZWJ1Z19wcmludF9iYWNrdHJhY2V8ZGVidWdfenZhbF9kdW1wfGRlY2JpbnxkZWNoZXh8ZGVjb2N0fGRlZmluZXxkZWZpbmVfc3lzbG9nX3ZhcmlhYmxlc3xkZWZpbmVkfGRlZzJyYWR8ZGVsZXRlfGRnZXR0ZXh0fGRpZXxkaW9fY2xvc2V8ZGlvX2ZjbnRsfGRpb19vcGVufGRpb19yZWFkfGRpb19zZWVrfGRpb19zdGF0fGRpb190Y3NldGF0dHJ8ZGlvX3RydW5jYXRlfGRpb193cml0ZXxkaXJ8ZGlyZWN0b3J5aXRlcmF0b3J8ZGlybmFtZXxkaXNrX2ZyZWVfc3BhY2V8ZGlza190b3RhbF9zcGFjZXxkaXNrZnJlZXNwYWNlfGRsfGRuZ2V0dGV4dHxkbnNfY2hlY2tfcmVjb3JkfGRuc19nZXRfbXh8ZG5zX2dldF9yZWNvcmR8ZG9tX2ltcG9ydF9zaW1wbGV4bWx8ZG9tYWluZXhjZXB0aW9ufGRvbWF0dHJ8ZG9tYXR0cmlidXRlX25hbWV8ZG9tYXR0cmlidXRlX3NldF92YWx1ZXxkb21hdHRyaWJ1dGVfc3BlY2lmaWVkfGRvbWF0dHJpYnV0ZV92YWx1ZXxkb21jaGFyYWN0ZXJkYXRhfGRvbWNvbW1lbnR8ZG9tZG9jdW1lbnR8ZG9tZG9jdW1lbnRfYWRkX3Jvb3R8ZG9tZG9jdW1lbnRfY3JlYXRlX2F0dHJpYnV0ZXxkb21kb2N1bWVudF9jcmVhdGVfY2RhdGFfc2VjdGlvbnxkb21kb2N1bWVudF9jcmVhdGVfY29tbWVudHxkb21kb2N1bWVudF9jcmVhdGVfZWxlbWVudHxkb21kb2N1bWVudF9jcmVhdGVfZWxlbWVudF9uc3xkb21kb2N1bWVudF9jcmVhdGVfZW50aXR5X3JlZmVyZW5jZXxkb21kb2N1bWVudF9jcmVhdGVfcHJvY2Vzc2luZ19pbnN0cnVjdGlvbnxkb21kb2N1bWVudF9jcmVhdGVfdGV4dF9ub2RlfGRvbWRvY3VtZW50X2RvY3R5cGV8ZG9tZG9jdW1lbnRfZG9jdW1lbnRfZWxlbWVudHxkb21kb2N1bWVudF9kdW1wX2ZpbGV8ZG9tZG9jdW1lbnRfZHVtcF9tZW18ZG9tZG9jdW1lbnRfZ2V0X2VsZW1lbnRfYnlfaWR8ZG9tZG9jdW1lbnRfZ2V0X2VsZW1lbnRzX2J5X3RhZ25hbWV8ZG9tZG9jdW1lbnRfaHRtbF9kdW1wX21lbXxkb21kb2N1bWVudF94aW5jbHVkZXxkb21kb2N1bWVudGZyYWdtZW50fGRvbWRvY3VtZW50dHlwZXxkb21kb2N1bWVudHR5cGVfZW50aXRpZXN8ZG9tZG9jdW1lbnR0eXBlX2ludGVybmFsX3N1YnNldHxkb21kb2N1bWVudHR5cGVfbmFtZXxkb21kb2N1bWVudHR5cGVfbm90YXRpb25zfGRvbWRvY3VtZW50dHlwZV9wdWJsaWNfaWR8ZG9tZG9jdW1lbnR0eXBlX3N5c3RlbV9pZHxkb21lbGVtZW50fGRvbWVsZW1lbnRfZ2V0X2F0dHJpYnV0ZXxkb21lbGVtZW50X2dldF9hdHRyaWJ1dGVfbm9kZXxkb21lbGVtZW50X2dldF9lbGVtZW50c19ieV90YWduYW1lfGRvbWVsZW1lbnRfaGFzX2F0dHJpYnV0ZXxkb21lbGVtZW50X3JlbW92ZV9hdHRyaWJ1dGV8ZG9tZWxlbWVudF9zZXRfYXR0cmlidXRlfGRvbWVsZW1lbnRfc2V0X2F0dHJpYnV0ZV9ub2RlfGRvbWVsZW1lbnRfdGFnbmFtZXxkb21lbnRpdHl8ZG9tZW50aXR5cmVmZXJlbmNlfGRvbWV4Y2VwdGlvbnxkb21pbXBsZW1lbnRhdGlvbnxkb21uYW1lZG5vZGVtYXB8ZG9tbm9kZXxkb21ub2RlX2FkZF9uYW1lc3BhY2V8ZG9tbm9kZV9hcHBlbmRfY2hpbGR8ZG9tbm9kZV9hcHBlbmRfc2libGluZ3xkb21ub2RlX2F0dHJpYnV0ZXN8ZG9tbm9kZV9jaGlsZF9ub2Rlc3xkb21ub2RlX2Nsb25lX25vZGV8ZG9tbm9kZV9kdW1wX25vZGV8ZG9tbm9kZV9maXJzdF9jaGlsZHxkb21ub2RlX2dldF9jb250ZW50fGRvbW5vZGVfaGFzX2F0dHJpYnV0ZXN8ZG9tbm9kZV9oYXNfY2hpbGRfbm9kZXN8ZG9tbm9kZV9pbnNlcnRfYmVmb3JlfGRvbW5vZGVfaXNfYmxhbmtfbm9kZXxkb21ub2RlX2xhc3RfY2hpbGR8ZG9tbm9kZV9uZXh0X3NpYmxpbmd8ZG9tbm9kZV9ub2RlX25hbWV8ZG9tbm9kZV9ub2RlX3R5cGV8ZG9tbm9kZV9ub2RlX3ZhbHVlfGRvbW5vZGVfb3duZXJfZG9jdW1lbnR8ZG9tbm9kZV9wYXJlbnRfbm9kZXxkb21ub2RlX3ByZWZpeHxkb21ub2RlX3ByZXZpb3VzX3NpYmxpbmd8ZG9tbm9kZV9yZW1vdmVfY2hpbGR8ZG9tbm9kZV9yZXBsYWNlX2NoaWxkfGRvbW5vZGVfcmVwbGFjZV9ub2RlfGRvbW5vZGVfc2V0X2NvbnRlbnR8ZG9tbm9kZV9zZXRfbmFtZXxkb21ub2RlX3NldF9uYW1lc3BhY2V8ZG9tbm9kZV91bmxpbmtfbm9kZXxkb21ub2RlbGlzdHxkb21ub3RhdGlvbnxkb21wcm9jZXNzaW5naW5zdHJ1Y3Rpb258ZG9tcHJvY2Vzc2luZ2luc3RydWN0aW9uX2RhdGF8ZG9tcHJvY2Vzc2luZ2luc3RydWN0aW9uX3RhcmdldHxkb210ZXh0fGRvbXhtbF9uZXdfZG9jfGRvbXhtbF9vcGVuX2ZpbGV8ZG9teG1sX29wZW5fbWVtfGRvbXhtbF92ZXJzaW9ufGRvbXhtbF94bWx0cmVlfGRvbXhtbF94c2x0X3N0eWxlc2hlZXR8ZG9teG1sX3hzbHRfc3R5bGVzaGVldF9kb2N8ZG9teG1sX3hzbHRfc3R5bGVzaGVldF9maWxlfGRvbXhtbF94c2x0X3ZlcnNpb258ZG9teHBhdGh8ZG9teHNsdHN0eWxlc2hlZXRfcHJvY2Vzc3xkb214c2x0c3R5bGVzaGVldF9yZXN1bHRfZHVtcF9maWxlfGRvbXhzbHRzdHlsZXNoZWV0X3Jlc3VsdF9kdW1wX21lbXxkb3RuZXR8ZG90bmV0X2xvYWR8ZG91YmxldmFsfGVhY2h8ZWFzdGVyX2RhdGV8ZWFzdGVyX2RheXN8ZWNob3xlbXB0eXxlbXB0eWl0ZXJhdG9yfGVuY2hhbnRfYnJva2VyX2Rlc2NyaWJlfGVuY2hhbnRfYnJva2VyX2RpY3RfZXhpc3RzfGVuY2hhbnRfYnJva2VyX2ZyZWV8ZW5jaGFudF9icm9rZXJfZnJlZV9kaWN0fGVuY2hhbnRfYnJva2VyX2dldF9lcnJvcnxlbmNoYW50X2Jyb2tlcl9pbml0fGVuY2hhbnRfYnJva2VyX2xpc3RfZGljdHN8ZW5jaGFudF9icm9rZXJfcmVxdWVzdF9kaWN0fGVuY2hhbnRfYnJva2VyX3JlcXVlc3RfcHdsX2RpY3R8ZW5jaGFudF9icm9rZXJfc2V0X29yZGVyaW5nfGVuY2hhbnRfZGljdF9hZGRfdG9fcGVyc29uYWx8ZW5jaGFudF9kaWN0X2FkZF90b19zZXNzaW9ufGVuY2hhbnRfZGljdF9jaGVja3xlbmNoYW50X2RpY3RfZGVzY3JpYmV8ZW5jaGFudF9kaWN0X2dldF9lcnJvcnxlbmNoYW50X2RpY3RfaXNfaW5fc2Vzc2lvbnxlbmNoYW50X2RpY3RfcXVpY2tfY2hlY2t8ZW5jaGFudF9kaWN0X3N0b3JlX3JlcGxhY2VtZW50fGVuY2hhbnRfZGljdF9zdWdnZXN0fGVuZHxlcmVnfGVyZWdfcmVwbGFjZXxlcmVnaXxlcmVnaV9yZXBsYWNlfGVycm9yX2dldF9sYXN0fGVycm9yX2xvZ3xlcnJvcl9yZXBvcnRpbmd8ZXJyb3JleGNlcHRpb258ZXNjYXBlc2hlbGxhcmd8ZXNjYXBlc2hlbGxjbWR8ZXZhbHxldmVudF9hZGR8ZXZlbnRfYmFzZV9mcmVlfGV2ZW50X2Jhc2VfbG9vcHxldmVudF9iYXNlX2xvb3BicmVha3xldmVudF9iYXNlX2xvb3BleGl0fGV2ZW50X2Jhc2VfbmV3fGV2ZW50X2Jhc2VfcHJpb3JpdHlfaW5pdHxldmVudF9iYXNlX3NldHxldmVudF9idWZmZXJfYmFzZV9zZXR8ZXZlbnRfYnVmZmVyX2Rpc2FibGV8ZXZlbnRfYnVmZmVyX2VuYWJsZXxldmVudF9idWZmZXJfZmRfc2V0fGV2ZW50X2J1ZmZlcl9mcmVlfGV2ZW50X2J1ZmZlcl9uZXd8ZXZlbnRfYnVmZmVyX3ByaW9yaXR5X3NldHxldmVudF9idWZmZXJfcmVhZHxldmVudF9idWZmZXJfc2V0X2NhbGxiYWNrfGV2ZW50X2J1ZmZlcl90aW1lb3V0X3NldHxldmVudF9idWZmZXJfd2F0ZXJtYXJrX3NldHxldmVudF9idWZmZXJfd3JpdGV8ZXZlbnRfZGVsfGV2ZW50X2ZyZWV8ZXZlbnRfbmV3fGV2ZW50X3NldHxleGNlcHRpb258ZXhlY3xleGlmX2ltYWdldHlwZXxleGlmX3JlYWRfZGF0YXxleGlmX3RhZ25hbWV8ZXhpZl90aHVtYm5haWx8ZXhpdHxleHB8ZXhwZWN0X2V4cGVjdGx8ZXhwZWN0X3BvcGVufGV4cGxvZGV8ZXhwbTF8ZXhwb3J0fGV4cG9ydHxleHRlbnNpb25fbG9hZGVkfGV4dHJhY3R8ZXptbG1faGFzaHxmYW1fY2FuY2VsX21vbml0b3J8ZmFtX2Nsb3NlfGZhbV9tb25pdG9yX2NvbGxlY3Rpb258ZmFtX21vbml0b3JfZGlyZWN0b3J5fGZhbV9tb25pdG9yX2ZpbGV8ZmFtX25leHRfZXZlbnR8ZmFtX29wZW58ZmFtX3BlbmRpbmd8ZmFtX3Jlc3VtZV9tb25pdG9yfGZhbV9zdXNwZW5kX21vbml0b3J8ZmJzcWxfYWZmZWN0ZWRfcm93c3xmYnNxbF9hdXRvY29tbWl0fGZic3FsX2Jsb2Jfc2l6ZXxmYnNxbF9jaGFuZ2VfdXNlcnxmYnNxbF9jbG9iX3NpemV8ZmJzcWxfY2xvc2V8ZmJzcWxfY29tbWl0fGZic3FsX2Nvbm5lY3R8ZmJzcWxfY3JlYXRlX2Jsb2J8ZmJzcWxfY3JlYXRlX2Nsb2J8ZmJzcWxfY3JlYXRlX2RifGZic3FsX2RhdGFfc2Vla3xmYnNxbF9kYXRhYmFzZXxmYnNxbF9kYXRhYmFzZV9wYXNzd29yZHxmYnNxbF9kYl9xdWVyeXxmYnNxbF9kYl9zdGF0dXN8ZmJzcWxfZHJvcF9kYnxmYnNxbF9lcnJub3xmYnNxbF9lcnJvcnxmYnNxbF9mZXRjaF9hcnJheXxmYnNxbF9mZXRjaF9hc3NvY3xmYnNxbF9mZXRjaF9maWVsZHxmYnNxbF9mZXRjaF9sZW5ndGhzfGZic3FsX2ZldGNoX29iamVjdHxmYnNxbF9mZXRjaF9yb3d8ZmJzcWxfZmllbGRfZmxhZ3N8ZmJzcWxfZmllbGRfbGVufGZic3FsX2ZpZWxkX25hbWV8ZmJzcWxfZmllbGRfc2Vla3xmYnNxbF9maWVsZF90YWJsZXxmYnNxbF9maWVsZF90eXBlfGZic3FsX2ZyZWVfcmVzdWx0fGZic3FsX2dldF9hdXRvc3RhcnRfaW5mb3xmYnNxbF9ob3N0bmFtZXxmYnNxbF9pbnNlcnRfaWR8ZmJzcWxfbGlzdF9kYnN8ZmJzcWxfbGlzdF9maWVsZHN8ZmJzcWxfbGlzdF90YWJsZXN8ZmJzcWxfbmV4dF9yZXN1bHR8ZmJzcWxfbnVtX2ZpZWxkc3xmYnNxbF9udW1fcm93c3xmYnNxbF9wYXNzd29yZHxmYnNxbF9wY29ubmVjdHxmYnNxbF9xdWVyeXxmYnNxbF9yZWFkX2Jsb2J8ZmJzcWxfcmVhZF9jbG9ifGZic3FsX3Jlc3VsdHxmYnNxbF9yb2xsYmFja3xmYnNxbF9yb3dzX2ZldGNoZWR8ZmJzcWxfc2VsZWN0X2RifGZic3FsX3NldF9jaGFyYWN0ZXJzZXR8ZmJzcWxfc2V0X2xvYl9tb2RlfGZic3FsX3NldF9wYXNzd29yZHxmYnNxbF9zZXRfdHJhbnNhY3Rpb258ZmJzcWxfc3RhcnRfZGJ8ZmJzcWxfc3RvcF9kYnxmYnNxbF90YWJsZV9uYW1lfGZic3FsX3RhYmxlbmFtZXxmYnNxbF91c2VybmFtZXxmYnNxbF93YXJuaW5nc3xmY2xvc2V8ZmRmX2FkZF9kb2NfamF2YXNjcmlwdHxmZGZfYWRkX3RlbXBsYXRlfGZkZl9jbG9zZXxmZGZfY3JlYXRlfGZkZl9lbnVtX3ZhbHVlc3xmZGZfZXJybm98ZmRmX2Vycm9yfGZkZl9nZXRfYXB8ZmRmX2dldF9hdHRhY2htZW50fGZkZl9nZXRfZW5jb2Rpbmd8ZmRmX2dldF9maWxlfGZkZl9nZXRfZmxhZ3N8ZmRmX2dldF9vcHR8ZmRmX2dldF9zdGF0dXN8ZmRmX2dldF92YWx1ZXxmZGZfZ2V0X3ZlcnNpb258ZmRmX2hlYWRlcnxmZGZfbmV4dF9maWVsZF9uYW1lfGZkZl9vcGVufGZkZl9vcGVuX3N0cmluZ3xmZGZfcmVtb3ZlX2l0ZW18ZmRmX3NhdmV8ZmRmX3NhdmVfc3RyaW5nfGZkZl9zZXRfYXB8ZmRmX3NldF9lbmNvZGluZ3xmZGZfc2V0X2ZpbGV8ZmRmX3NldF9mbGFnc3xmZGZfc2V0X2phdmFzY3JpcHRfYWN0aW9ufGZkZl9zZXRfb25faW1wb3J0X2phdmFzY3JpcHR8ZmRmX3NldF9vcHR8ZmRmX3NldF9zdGF0dXN8ZmRmX3NldF9zdWJtaXRfZm9ybV9hY3Rpb258ZmRmX3NldF90YXJnZXRfZnJhbWV8ZmRmX3NldF92YWx1ZXxmZGZfc2V0X3ZlcnNpb258ZmVvZnxmZmx1c2h8ZmdldGN8ZmdldGNzdnxmZ2V0c3xmZ2V0c3N8ZmlsZXxmaWxlX2V4aXN0c3xmaWxlX2dldF9jb250ZW50c3xmaWxlX3B1dF9jb250ZW50c3xmaWxlYXRpbWV8ZmlsZWN0aW1lfGZpbGVncm91cHxmaWxlaW5vZGV8ZmlsZW10aW1lfGZpbGVvd25lcnxmaWxlcGVybXN8ZmlsZXByb3xmaWxlcHJvX2ZpZWxkY291bnR8ZmlsZXByb19maWVsZG5hbWV8ZmlsZXByb19maWVsZHR5cGV8ZmlsZXByb19maWVsZHdpZHRofGZpbGVwcm9fcmV0cmlldmV8ZmlsZXByb19yb3djb3VudHxmaWxlc2l6ZXxmaWxlc3lzdGVtaXRlcmF0b3J8ZmlsZXR5cGV8ZmlsdGVyX2hhc192YXJ8ZmlsdGVyX2lkfGZpbHRlcl9pbnB1dHxmaWx0ZXJfaW5wdXRfYXJyYXl8ZmlsdGVyX2xpc3R8ZmlsdGVyX3ZhcnxmaWx0ZXJfdmFyX2FycmF5fGZpbHRlcml0ZXJhdG9yfGZpbmZvX2J1ZmZlcnxmaW5mb19jbG9zZXxmaW5mb19maWxlfGZpbmZvX29wZW58ZmluZm9fc2V0X2ZsYWdzfGZsb2F0dmFsfGZsb2NrfGZsb29yfGZsdXNofGZtb2R8Zm5tYXRjaHxmb3Blbnxmb3J3YXJkX3N0YXRpY19jYWxsfGZvcndhcmRfc3RhdGljX2NhbGxfYXJyYXl8ZnBhc3N0aHJ1fGZwcmludGZ8ZnB1dGNzdnxmcHV0c3xmcmVhZHxmcmVuY2h0b2pkfGZyaWJpZGlfbG9nMnZpc3xmc2NhbmZ8ZnNlZWt8ZnNvY2tvcGVufGZzdGF0fGZ0ZWxsfGZ0b2t8ZnRwX2FsbG9jfGZ0cF9jZHVwfGZ0cF9jaGRpcnxmdHBfY2htb2R8ZnRwX2Nsb3NlfGZ0cF9jb25uZWN0fGZ0cF9kZWxldGV8ZnRwX2V4ZWN8ZnRwX2ZnZXR8ZnRwX2ZwdXR8ZnRwX2dldHxmdHBfZ2V0X29wdGlvbnxmdHBfbG9naW58ZnRwX21kdG18ZnRwX21rZGlyfGZ0cF9uYl9jb250aW51ZXxmdHBfbmJfZmdldHxmdHBfbmJfZnB1dHxmdHBfbmJfZ2V0fGZ0cF9uYl9wdXR8ZnRwX25saXN0fGZ0cF9wYXN2fGZ0cF9wdXR8ZnRwX3B3ZHxmdHBfcXVpdHxmdHBfcmF3fGZ0cF9yYXdsaXN0fGZ0cF9yZW5hbWV8ZnRwX3JtZGlyfGZ0cF9zZXRfb3B0aW9ufGZ0cF9zaXRlfGZ0cF9zaXplfGZ0cF9zc2xfY29ubmVjdHxmdHBfc3lzdHlwZXxmdHJ1bmNhdGV8ZnVuY19nZXRfYXJnfGZ1bmNfZ2V0X2FyZ3N8ZnVuY19udW1fYXJnc3xmdW5jdGlvbl9leGlzdHN8ZndyaXRlfGdjX2NvbGxlY3RfY3ljbGVzfGdjX2Rpc2FibGV8Z2NfZW5hYmxlfGdjX2VuYWJsZWR8Z2RfaW5mb3xnZWFybWFuY2xpZW50fGdlYXJtYW5qb2J8Z2Vhcm1hbnRhc2t8Z2Vhcm1hbndvcmtlcnxnZW9pcF9jb250aW5lbnRfY29kZV9ieV9uYW1lfGdlb2lwX2NvdW50cnlfY29kZTNfYnlfbmFtZXxnZW9pcF9jb3VudHJ5X2NvZGVfYnlfbmFtZXxnZW9pcF9jb3VudHJ5X25hbWVfYnlfbmFtZXxnZW9pcF9kYXRhYmFzZV9pbmZvfGdlb2lwX2RiX2F2YWlsfGdlb2lwX2RiX2ZpbGVuYW1lfGdlb2lwX2RiX2dldF9hbGxfaW5mb3xnZW9pcF9pZF9ieV9uYW1lfGdlb2lwX2lzcF9ieV9uYW1lfGdlb2lwX29yZ19ieV9uYW1lfGdlb2lwX3JlY29yZF9ieV9uYW1lfGdlb2lwX3JlZ2lvbl9ieV9uYW1lfGdlb2lwX3JlZ2lvbl9uYW1lX2J5X2NvZGV8Z2VvaXBfdGltZV96b25lX2J5X2NvdW50cnlfYW5kX3JlZ2lvbnxnZXRNZXRhfGdldE5hbWVkfGdldFZhbHVlfGdldF9icm93c2VyfGdldF9jYWxsZWRfY2xhc3N8Z2V0X2NmZ192YXJ8Z2V0X2NsYXNzfGdldF9jbGFzc19tZXRob2RzfGdldF9jbGFzc192YXJzfGdldF9jdXJyZW50X3VzZXJ8Z2V0X2RlY2xhcmVkX2NsYXNzZXN8Z2V0X2RlY2xhcmVkX2ludGVyZmFjZXN8Z2V0X2RlZmluZWRfY29uc3RhbnRzfGdldF9kZWZpbmVkX2Z1bmN0aW9uc3xnZXRfZGVmaW5lZF92YXJzfGdldF9leHRlbnNpb25fZnVuY3N8Z2V0X2hlYWRlcnN8Z2V0X2h0bWxfdHJhbnNsYXRpb25fdGFibGV8Z2V0X2luY2x1ZGVfcGF0aHxnZXRfaW5jbHVkZWRfZmlsZXN8Z2V0X2xvYWRlZF9leHRlbnNpb25zfGdldF9tYWdpY19xdW90ZXNfZ3BjfGdldF9tYWdpY19xdW90ZXNfcnVudGltZXxnZXRfbWV0YV90YWdzfGdldF9vYmplY3RfdmFyc3xnZXRfcGFyZW50X2NsYXNzfGdldF9yZXF1aXJlZF9maWxlc3xnZXRfcmVzb3VyY2VfdHlwZXxnZXRhbGxoZWFkZXJzfGdldGNvbnN0YW50fGdldGNvbnN0YW50c3xnZXRjb25zdHJ1Y3RvcnxnZXRjd2R8Z2V0ZGF0ZXxnZXRkZWZhdWx0cHJvcGVydGllc3xnZXRkb2Njb21tZW50fGdldGVuZGxpbmV8Z2V0ZW52fGdldGV4dGVuc2lvbnxnZXRleHRlbnNpb25uYW1lfGdldGZpbGVuYW1lfGdldGhvc3RieWFkZHJ8Z2V0aG9zdGJ5bmFtZXxnZXRob3N0YnluYW1lbHxnZXRob3N0bmFtZXxnZXRpbWFnZXNpemV8Z2V0aW50ZXJmYWNlbmFtZXN8Z2V0aW50ZXJmYWNlc3xnZXRsYXN0bW9kfGdldG1ldGhvZHxnZXRtZXRob2RzfGdldG1vZGlmaWVyc3xnZXRteHJyfGdldG15Z2lkfGdldG15aW5vZGV8Z2V0bXlwaWR8Z2V0bXl1aWR8Z2V0bmFtZXxnZXRuYW1lc3BhY2VuYW1lfGdldG9wdHxnZXRwYXJlbnRjbGFzc3xnZXRwcm9wZXJ0aWVzfGdldHByb3BlcnR5fGdldHByb3RvYnluYW1lfGdldHByb3RvYnludW1iZXJ8Z2V0cmFuZG1heHxnZXRydXNhZ2V8Z2V0c2VydmJ5bmFtZXxnZXRzZXJ2Ynlwb3J0fGdldHNob3J0bmFtZXxnZXRzdGFydGxpbmV8Z2V0c3RhdGljcHJvcGVydGllc3xnZXRzdGF0aWNwcm9wZXJ0eXZhbHVlfGdldHRleHR8Z2V0dGltZW9mZGF5fGdldHR5cGV8Z2xvYnxnbG9iaXRlcmF0b3J8Z21hZ2lja3xnbWFnaWNrZHJhd3xnbWFnaWNrcGl4ZWx8Z21kYXRlfGdtbWt0aW1lfGdtcF9hYnN8Z21wX2FkZHxnbXBfYW5kfGdtcF9jbHJiaXR8Z21wX2NtcHxnbXBfY29tfGdtcF9kaXZ8Z21wX2Rpdl9xfGdtcF9kaXZfcXJ8Z21wX2Rpdl9yfGdtcF9kaXZleGFjdHxnbXBfZmFjdHxnbXBfZ2NkfGdtcF9nY2RleHR8Z21wX2hhbWRpc3R8Z21wX2luaXR8Z21wX2ludHZhbHxnbXBfaW52ZXJ0fGdtcF9qYWNvYml8Z21wX2xlZ2VuZHJlfGdtcF9tb2R8Z21wX211bHxnbXBfbmVnfGdtcF9uZXh0cHJpbWV8Z21wX29yfGdtcF9wZXJmZWN0X3NxdWFyZXxnbXBfcG9wY291bnR8Z21wX3Bvd3xnbXBfcG93bXxnbXBfcHJvYl9wcmltZXxnbXBfcmFuZG9tfGdtcF9zY2FuMHxnbXBfc2NhbjF8Z21wX3NldGJpdHxnbXBfc2lnbnxnbXBfc3FydHxnbXBfc3FydHJlbXxnbXBfc3RydmFsfGdtcF9zdWJ8Z21wX3Rlc3RiaXR8Z21wX3hvcnxnbXN0cmZ0aW1lfGdudXBnX2FkZGRlY3J5cHRrZXl8Z251cGdfYWRkZW5jcnlwdGtleXxnbnVwZ19hZGRzaWdua2V5fGdudXBnX2NsZWFyZGVjcnlwdGtleXN8Z251cGdfY2xlYXJlbmNyeXB0a2V5c3xnbnVwZ19jbGVhcnNpZ25rZXlzfGdudXBnX2RlY3J5cHR8Z251cGdfZGVjcnlwdHZlcmlmeXxnbnVwZ19lbmNyeXB0fGdudXBnX2VuY3J5cHRzaWdufGdudXBnX2V4cG9ydHxnbnVwZ19nZXRlcnJvcnxnbnVwZ19nZXRwcm90b2NvbHxnbnVwZ19pbXBvcnR8Z251cGdfaW5pdHxnbnVwZ19rZXlpbmZvfGdudXBnX3NldGFybW9yfGdudXBnX3NldGVycm9ybW9kZXxnbnVwZ19zZXRzaWdubW9kZXxnbnVwZ19zaWdufGdudXBnX3ZlcmlmeXxnb3BoZXJfcGFyc2VkaXJ8Z3JhcGhlbWVfZXh0cmFjdHxncmFwaGVtZV9zdHJpcG9zfGdyYXBoZW1lX3N0cmlzdHJ8Z3JhcGhlbWVfc3RybGVufGdyYXBoZW1lX3N0cnBvc3xncmFwaGVtZV9zdHJyaXBvc3xncmFwaGVtZV9zdHJycG9zfGdyYXBoZW1lX3N0cnN0cnxncmFwaGVtZV9zdWJzdHJ8Z3JlZ29yaWFudG9qZHxndXBucF9jb250ZXh0X2dldF9ob3N0X2lwfGd1cG5wX2NvbnRleHRfZ2V0X3BvcnR8Z3VwbnBfY29udGV4dF9nZXRfc3Vic2NyaXB0aW9uX3RpbWVvdXR8Z3VwbnBfY29udGV4dF9ob3N0X3BhdGh8Z3VwbnBfY29udGV4dF9uZXd8Z3VwbnBfY29udGV4dF9zZXRfc3Vic2NyaXB0aW9uX3RpbWVvdXR8Z3VwbnBfY29udGV4dF90aW1lb3V0X2FkZHxndXBucF9jb250ZXh0X3VuaG9zdF9wYXRofGd1cG5wX2NvbnRyb2xfcG9pbnRfYnJvd3NlX3N0YXJ0fGd1cG5wX2NvbnRyb2xfcG9pbnRfYnJvd3NlX3N0b3B8Z3VwbnBfY29udHJvbF9wb2ludF9jYWxsYmFja19zZXR8Z3VwbnBfY29udHJvbF9wb2ludF9uZXd8Z3VwbnBfZGV2aWNlX2FjdGlvbl9jYWxsYmFja19zZXR8Z3VwbnBfZGV2aWNlX2luZm9fZ2V0fGd1cG5wX2RldmljZV9pbmZvX2dldF9zZXJ2aWNlfGd1cG5wX3Jvb3RfZGV2aWNlX2dldF9hdmFpbGFibGV8Z3VwbnBfcm9vdF9kZXZpY2VfZ2V0X3JlbGF0aXZlX2xvY2F0aW9ufGd1cG5wX3Jvb3RfZGV2aWNlX25ld3xndXBucF9yb290X2RldmljZV9zZXRfYXZhaWxhYmxlfGd1cG5wX3Jvb3RfZGV2aWNlX3N0YXJ0fGd1cG5wX3Jvb3RfZGV2aWNlX3N0b3B8Z3VwbnBfc2VydmljZV9hY3Rpb25fZ2V0fGd1cG5wX3NlcnZpY2VfYWN0aW9uX3JldHVybnxndXBucF9zZXJ2aWNlX2FjdGlvbl9yZXR1cm5fZXJyb3J8Z3VwbnBfc2VydmljZV9hY3Rpb25fc2V0fGd1cG5wX3NlcnZpY2VfZnJlZXplX25vdGlmeXxndXBucF9zZXJ2aWNlX2luZm9fZ2V0fGd1cG5wX3NlcnZpY2VfaW5mb19nZXRfaW50cm9zcGVjdGlvbnxndXBucF9zZXJ2aWNlX2ludHJvc3BlY3Rpb25fZ2V0X3N0YXRlX3ZhcmlhYmxlfGd1cG5wX3NlcnZpY2Vfbm90aWZ5fGd1cG5wX3NlcnZpY2VfcHJveHlfYWN0aW9uX2dldHxndXBucF9zZXJ2aWNlX3Byb3h5X2FjdGlvbl9zZXR8Z3VwbnBfc2VydmljZV9wcm94eV9hZGRfbm90aWZ5fGd1cG5wX3NlcnZpY2VfcHJveHlfY2FsbGJhY2tfc2V0fGd1cG5wX3NlcnZpY2VfcHJveHlfZ2V0X3N1YnNjcmliZWR8Z3VwbnBfc2VydmljZV9wcm94eV9yZW1vdmVfbm90aWZ5fGd1cG5wX3NlcnZpY2VfcHJveHlfc2V0X3N1YnNjcmliZWR8Z3VwbnBfc2VydmljZV90aGF3X25vdGlmeXxnemNsb3NlfGd6Y29tcHJlc3N8Z3pkZWNvZGV8Z3pkZWZsYXRlfGd6ZW5jb2RlfGd6ZW9mfGd6ZmlsZXxnemdldGN8Z3pnZXRzfGd6Z2V0c3N8Z3ppbmZsYXRlfGd6b3BlbnxnenBhc3N0aHJ1fGd6cHV0c3xnenJlYWR8Z3pyZXdpbmR8Z3pzZWVrfGd6dGVsbHxnenVuY29tcHJlc3N8Z3p3cml0ZXxoYWx0X2NvbXBpbGVyfGhhcnVhbm5vdGF0aW9ufGhhcnVhbm5vdGF0aW9uX3NldGJvcmRlcnN0eWxlfGhhcnVhbm5vdGF0aW9uX3NldGhpZ2hsaWdodG1vZGV8aGFydWFubm90YXRpb25fc2V0aWNvbnxoYXJ1YW5ub3RhdGlvbl9zZXRvcGVuZWR8aGFydWRlc3RpbmF0aW9ufGhhcnVkZXN0aW5hdGlvbl9zZXRmaXR8aGFydWRlc3RpbmF0aW9uX3NldGZpdGJ8aGFydWRlc3RpbmF0aW9uX3NldGZpdGJofGhhcnVkZXN0aW5hdGlvbl9zZXRmaXRidnxoYXJ1ZGVzdGluYXRpb25fc2V0Zml0aHxoYXJ1ZGVzdGluYXRpb25fc2V0Zml0cnxoYXJ1ZGVzdGluYXRpb25fc2V0Zml0dnxoYXJ1ZGVzdGluYXRpb25fc2V0eHl6fGhhcnVkb2N8aGFydWRvY19hZGRwYWdlfGhhcnVkb2NfYWRkcGFnZWxhYmVsfGhhcnVkb2NfY29uc3RydWN0fGhhcnVkb2NfY3JlYXRlb3V0bGluZXxoYXJ1ZG9jX2dldGN1cnJlbnRlbmNvZGVyfGhhcnVkb2NfZ2V0Y3VycmVudHBhZ2V8aGFydWRvY19nZXRlbmNvZGVyfGhhcnVkb2NfZ2V0Zm9udHxoYXJ1ZG9jX2dldGluZm9hdHRyfGhhcnVkb2NfZ2V0cGFnZWxheW91dHxoYXJ1ZG9jX2dldHBhZ2Vtb2RlfGhhcnVkb2NfZ2V0c3RyZWFtc2l6ZXxoYXJ1ZG9jX2luc2VydHBhZ2V8aGFydWRvY19sb2FkanBlZ3xoYXJ1ZG9jX2xvYWRwbmd8aGFydWRvY19sb2FkcmF3fGhhcnVkb2NfbG9hZHR0Y3xoYXJ1ZG9jX2xvYWR0dGZ8aGFydWRvY19sb2FkdHlwZTF8aGFydWRvY19vdXRwdXR8aGFydWRvY19yZWFkZnJvbXN0cmVhbXxoYXJ1ZG9jX3Jlc2V0ZXJyb3J8aGFydWRvY19yZXNldHN0cmVhbXxoYXJ1ZG9jX3NhdmV8aGFydWRvY19zYXZldG9zdHJlYW18aGFydWRvY19zZXRjb21wcmVzc2lvbm1vZGV8aGFydWRvY19zZXRjdXJyZW50ZW5jb2RlcnxoYXJ1ZG9jX3NldGVuY3J5cHRpb25tb2RlfGhhcnVkb2Nfc2V0aW5mb2F0dHJ8aGFydWRvY19zZXRpbmZvZGF0ZWF0dHJ8aGFydWRvY19zZXRvcGVuYWN0aW9ufGhhcnVkb2Nfc2V0cGFnZWxheW91dHxoYXJ1ZG9jX3NldHBhZ2Vtb2RlfGhhcnVkb2Nfc2V0cGFnZXNjb25maWd1cmF0aW9ufGhhcnVkb2Nfc2V0cGFzc3dvcmR8aGFydWRvY19zZXRwZXJtaXNzaW9ufGhhcnVkb2NfdXNlY25zZW5jb2RpbmdzfGhhcnVkb2NfdXNlY25zZm9udHN8aGFydWRvY191c2VjbnRlbmNvZGluZ3N8aGFydWRvY191c2VjbnRmb250c3xoYXJ1ZG9jX3VzZWpwZW5jb2RpbmdzfGhhcnVkb2NfdXNlanBmb250c3xoYXJ1ZG9jX3VzZWtyZW5jb2RpbmdzfGhhcnVkb2NfdXNla3Jmb250c3xoYXJ1ZW5jb2RlcnxoYXJ1ZW5jb2Rlcl9nZXRieXRldHlwZXxoYXJ1ZW5jb2Rlcl9nZXR0eXBlfGhhcnVlbmNvZGVyX2dldHVuaWNvZGV8aGFydWVuY29kZXJfZ2V0d3JpdGluZ21vZGV8aGFydWV4Y2VwdGlvbnxoYXJ1Zm9udHxoYXJ1Zm9udF9nZXRhc2NlbnR8aGFydWZvbnRfZ2V0Y2FwaGVpZ2h0fGhhcnVmb250X2dldGRlc2NlbnR8aGFydWZvbnRfZ2V0ZW5jb2RpbmduYW1lfGhhcnVmb250X2dldGZvbnRuYW1lfGhhcnVmb250X2dldHRleHR3aWR0aHxoYXJ1Zm9udF9nZXR1bmljb2Rld2lkdGh8aGFydWZvbnRfZ2V0eGhlaWdodHxoYXJ1Zm9udF9tZWFzdXJldGV4dHxoYXJ1aW1hZ2V8aGFydWltYWdlX2dldGJpdHNwZXJjb21wb25lbnR8aGFydWltYWdlX2dldGNvbG9yc3BhY2V8aGFydWltYWdlX2dldGhlaWdodHxoYXJ1aW1hZ2VfZ2V0c2l6ZXxoYXJ1aW1hZ2VfZ2V0d2lkdGh8aGFydWltYWdlX3NldGNvbG9ybWFza3xoYXJ1aW1hZ2Vfc2V0bWFza2ltYWdlfGhhcnVvdXRsaW5lfGhhcnVvdXRsaW5lX3NldGRlc3RpbmF0aW9ufGhhcnVvdXRsaW5lX3NldG9wZW5lZHxoYXJ1cGFnZXxoYXJ1cGFnZV9hcmN8aGFydXBhZ2VfYmVnaW50ZXh0fGhhcnVwYWdlX2NpcmNsZXxoYXJ1cGFnZV9jbG9zZXBhdGh8aGFydXBhZ2VfY29uY2F0fGhhcnVwYWdlX2NyZWF0ZWRlc3RpbmF0aW9ufGhhcnVwYWdlX2NyZWF0ZWxpbmthbm5vdGF0aW9ufGhhcnVwYWdlX2NyZWF0ZXRleHRhbm5vdGF0aW9ufGhhcnVwYWdlX2NyZWF0ZXVybGFubm90YXRpb258aGFydXBhZ2VfY3VydmV0b3xoYXJ1cGFnZV9jdXJ2ZXRvMnxoYXJ1cGFnZV9jdXJ2ZXRvM3xoYXJ1cGFnZV9kcmF3aW1hZ2V8aGFydXBhZ2VfZWxsaXBzZXxoYXJ1cGFnZV9lbmRwYXRofGhhcnVwYWdlX2VuZHRleHR8aGFydXBhZ2VfZW9maWxsfGhhcnVwYWdlX2VvZmlsbHN0cm9rZXxoYXJ1cGFnZV9maWxsfGhhcnVwYWdlX2ZpbGxzdHJva2V8aGFydXBhZ2VfZ2V0Y2hhcnNwYWNlfGhhcnVwYWdlX2dldGNteWtmaWxsfGhhcnVwYWdlX2dldGNteWtzdHJva2V8aGFydXBhZ2VfZ2V0Y3VycmVudGZvbnR8aGFydXBhZ2VfZ2V0Y3VycmVudGZvbnRzaXplfGhhcnVwYWdlX2dldGN1cnJlbnRwb3N8aGFydXBhZ2VfZ2V0Y3VycmVudHRleHRwb3N8aGFydXBhZ2VfZ2V0ZGFzaHxoYXJ1cGFnZV9nZXRmaWxsaW5nY29sb3JzcGFjZXxoYXJ1cGFnZV9nZXRmbGF0bmVzc3xoYXJ1cGFnZV9nZXRnbW9kZXxoYXJ1cGFnZV9nZXRncmF5ZmlsbHxoYXJ1cGFnZV9nZXRncmF5c3Ryb2tlfGhhcnVwYWdlX2dldGhlaWdodHxoYXJ1cGFnZV9nZXRob3Jpem9udGFsc2NhbGluZ3xoYXJ1cGFnZV9nZXRsaW5lY2FwfGhhcnVwYWdlX2dldGxpbmVqb2lufGhhcnVwYWdlX2dldGxpbmV3aWR0aHxoYXJ1cGFnZV9nZXRtaXRlcmxpbWl0fGhhcnVwYWdlX2dldHJnYmZpbGx8aGFydXBhZ2VfZ2V0cmdic3Ryb2tlfGhhcnVwYWdlX2dldHN0cm9raW5nY29sb3JzcGFjZXxoYXJ1cGFnZV9nZXR0ZXh0bGVhZGluZ3xoYXJ1cGFnZV9nZXR0ZXh0bWF0cml4fGhhcnVwYWdlX2dldHRleHRyZW5kZXJpbmdtb2RlfGhhcnVwYWdlX2dldHRleHRyaXNlfGhhcnVwYWdlX2dldHRleHR3aWR0aHxoYXJ1cGFnZV9nZXR0cmFuc21hdHJpeHxoYXJ1cGFnZV9nZXR3aWR0aHxoYXJ1cGFnZV9nZXR3b3Jkc3BhY2V8aGFydXBhZ2VfbGluZXRvfGhhcnVwYWdlX21lYXN1cmV0ZXh0fGhhcnVwYWdlX21vdmV0ZXh0cG9zfGhhcnVwYWdlX21vdmV0b3xoYXJ1cGFnZV9tb3ZldG9uZXh0bGluZXxoYXJ1cGFnZV9yZWN0YW5nbGV8aGFydXBhZ2Vfc2V0Y2hhcnNwYWNlfGhhcnVwYWdlX3NldGNteWtmaWxsfGhhcnVwYWdlX3NldGNteWtzdHJva2V8aGFydXBhZ2Vfc2V0ZGFzaHxoYXJ1cGFnZV9zZXRmbGF0bmVzc3xoYXJ1cGFnZV9zZXRmb250YW5kc2l6ZXxoYXJ1cGFnZV9zZXRncmF5ZmlsbHxoYXJ1cGFnZV9zZXRncmF5c3Ryb2tlfGhhcnVwYWdlX3NldGhlaWdodHxoYXJ1cGFnZV9zZXRob3Jpem9udGFsc2NhbGluZ3xoYXJ1cGFnZV9zZXRsaW5lY2FwfGhhcnVwYWdlX3NldGxpbmVqb2lufGhhcnVwYWdlX3NldGxpbmV3aWR0aHxoYXJ1cGFnZV9zZXRtaXRlcmxpbWl0fGhhcnVwYWdlX3NldHJnYmZpbGx8aGFydXBhZ2Vfc2V0cmdic3Ryb2tlfGhhcnVwYWdlX3NldHJvdGF0ZXxoYXJ1cGFnZV9zZXRzaXplfGhhcnVwYWdlX3NldHNsaWRlc2hvd3xoYXJ1cGFnZV9zZXR0ZXh0bGVhZGluZ3xoYXJ1cGFnZV9zZXR0ZXh0bWF0cml4fGhhcnVwYWdlX3NldHRleHRyZW5kZXJpbmdtb2RlfGhhcnVwYWdlX3NldHRleHRyaXNlfGhhcnVwYWdlX3NldHdpZHRofGhhcnVwYWdlX3NldHdvcmRzcGFjZXxoYXJ1cGFnZV9zaG93dGV4dHxoYXJ1cGFnZV9zaG93dGV4dG5leHRsaW5lfGhhcnVwYWdlX3N0cm9rZXxoYXJ1cGFnZV90ZXh0b3V0fGhhcnVwYWdlX3RleHRyZWN0fGhhc2NvbnN0YW50fGhhc2h8aGFzaF9hbGdvc3xoYXNoX2NvcHl8aGFzaF9maWxlfGhhc2hfZmluYWx8aGFzaF9obWFjfGhhc2hfaG1hY19maWxlfGhhc2hfaW5pdHxoYXNoX3VwZGF0ZXxoYXNoX3VwZGF0ZV9maWxlfGhhc2hfdXBkYXRlX3N0cmVhbXxoYXNtZXRob2R8aGFzcHJvcGVydHl8aGVhZGVyfGhlYWRlcl9yZWdpc3Rlcl9jYWxsYmFja3xoZWFkZXJfcmVtb3ZlfGhlYWRlcnNfbGlzdHxoZWFkZXJzX3NlbnR8aGVicmV2fGhlYnJldmN8aGV4MmJpbnxoZXhkZWN8aGlnaGxpZ2h0X2ZpbGV8aGlnaGxpZ2h0X3N0cmluZ3xodG1sX2VudGl0eV9kZWNvZGV8aHRtbGVudGl0aWVzfGh0bWxzcGVjaWFsY2hhcnN8aHRtbHNwZWNpYWxjaGFyc19kZWNvZGV8aHR0cF9idWlsZF9jb29raWV8aHR0cF9idWlsZF9xdWVyeXxodHRwX2J1aWxkX3N0cnxodHRwX2J1aWxkX3VybHxodHRwX2NhY2hlX2V0YWd8aHR0cF9jYWNoZV9sYXN0X21vZGlmaWVkfGh0dHBfY2h1bmtlZF9kZWNvZGV8aHR0cF9kYXRlfGh0dHBfZGVmbGF0ZXxodHRwX2dldHxodHRwX2dldF9yZXF1ZXN0X2JvZHl8aHR0cF9nZXRfcmVxdWVzdF9ib2R5X3N0cmVhbXxodHRwX2dldF9yZXF1ZXN0X2hlYWRlcnN8aHR0cF9oZWFkfGh0dHBfaW5mbGF0ZXxodHRwX21hdGNoX2V0YWd8aHR0cF9tYXRjaF9tb2RpZmllZHxodHRwX21hdGNoX3JlcXVlc3RfaGVhZGVyfGh0dHBfbmVnb3RpYXRlX2NoYXJzZXR8aHR0cF9uZWdvdGlhdGVfY29udGVudF90eXBlfGh0dHBfbmVnb3RpYXRlX2xhbmd1YWdlfGh0dHBfcGFyc2VfY29va2llfGh0dHBfcGFyc2VfaGVhZGVyc3xodHRwX3BhcnNlX21lc3NhZ2V8aHR0cF9wYXJzZV9wYXJhbXN8aHR0cF9wZXJzaXN0ZW50X2hhbmRsZXNfY2xlYW58aHR0cF9wZXJzaXN0ZW50X2hhbmRsZXNfY291bnR8aHR0cF9wZXJzaXN0ZW50X2hhbmRsZXNfaWRlbnR8aHR0cF9wb3N0X2RhdGF8aHR0cF9wb3N0X2ZpZWxkc3xodHRwX3B1dF9kYXRhfGh0dHBfcHV0X2ZpbGV8aHR0cF9wdXRfc3RyZWFtfGh0dHBfcmVkaXJlY3R8aHR0cF9yZXF1ZXN0fGh0dHBfcmVxdWVzdF9ib2R5X2VuY29kZXxodHRwX3JlcXVlc3RfbWV0aG9kX2V4aXN0c3xodHRwX3JlcXVlc3RfbWV0aG9kX25hbWV8aHR0cF9yZXF1ZXN0X21ldGhvZF9yZWdpc3RlcnxodHRwX3JlcXVlc3RfbWV0aG9kX3VucmVnaXN0ZXJ8aHR0cF9yZXNwb25zZV9jb2RlfGh0dHBfc2VuZF9jb250ZW50X2Rpc3Bvc2l0aW9ufGh0dHBfc2VuZF9jb250ZW50X3R5cGV8aHR0cF9zZW5kX2RhdGF8aHR0cF9zZW5kX2ZpbGV8aHR0cF9zZW5kX2xhc3RfbW9kaWZpZWR8aHR0cF9zZW5kX3N0YXR1c3xodHRwX3NlbmRfc3RyZWFtfGh0dHBfc3VwcG9ydHxodHRwX3Rocm90dGxlfGh0dHBkZWZsYXRlc3RyZWFtfGh0dHBkZWZsYXRlc3RyZWFtX2NvbnN0cnVjdHxodHRwZGVmbGF0ZXN0cmVhbV9mYWN0b3J5fGh0dHBkZWZsYXRlc3RyZWFtX2ZpbmlzaHxodHRwZGVmbGF0ZXN0cmVhbV9mbHVzaHxodHRwZGVmbGF0ZXN0cmVhbV91cGRhdGV8aHR0cGluZmxhdGVzdHJlYW18aHR0cGluZmxhdGVzdHJlYW1fY29uc3RydWN0fGh0dHBpbmZsYXRlc3RyZWFtX2ZhY3Rvcnl8aHR0cGluZmxhdGVzdHJlYW1fZmluaXNofGh0dHBpbmZsYXRlc3RyZWFtX2ZsdXNofGh0dHBpbmZsYXRlc3RyZWFtX3VwZGF0ZXxodHRwbWVzc2FnZXxodHRwbWVzc2FnZV9hZGRoZWFkZXJzfGh0dHBtZXNzYWdlX2NvbnN0cnVjdHxodHRwbWVzc2FnZV9kZXRhY2h8aHR0cG1lc3NhZ2VfZmFjdG9yeXxodHRwbWVzc2FnZV9mcm9tZW52fGh0dHBtZXNzYWdlX2Zyb21zdHJpbmd8aHR0cG1lc3NhZ2VfZ2V0Ym9keXxodHRwbWVzc2FnZV9nZXRoZWFkZXJ8aHR0cG1lc3NhZ2VfZ2V0aGVhZGVyc3xodHRwbWVzc2FnZV9nZXRodHRwdmVyc2lvbnxodHRwbWVzc2FnZV9nZXRwYXJlbnRtZXNzYWdlfGh0dHBtZXNzYWdlX2dldHJlcXVlc3RtZXRob2R8aHR0cG1lc3NhZ2VfZ2V0cmVxdWVzdHVybHxodHRwbWVzc2FnZV9nZXRyZXNwb25zZWNvZGV8aHR0cG1lc3NhZ2VfZ2V0cmVzcG9uc2VzdGF0dXN8aHR0cG1lc3NhZ2VfZ2V0dHlwZXxodHRwbWVzc2FnZV9ndWVzc2NvbnRlbnR0eXBlfGh0dHBtZXNzYWdlX3ByZXBlbmR8aHR0cG1lc3NhZ2VfcmV2ZXJzZXxodHRwbWVzc2FnZV9zZW5kfGh0dHBtZXNzYWdlX3NldGJvZHl8aHR0cG1lc3NhZ2Vfc2V0aGVhZGVyc3xodHRwbWVzc2FnZV9zZXRodHRwdmVyc2lvbnxodHRwbWVzc2FnZV9zZXRyZXF1ZXN0bWV0aG9kfGh0dHBtZXNzYWdlX3NldHJlcXVlc3R1cmx8aHR0cG1lc3NhZ2Vfc2V0cmVzcG9uc2Vjb2RlfGh0dHBtZXNzYWdlX3NldHJlc3BvbnNlc3RhdHVzfGh0dHBtZXNzYWdlX3NldHR5cGV8aHR0cG1lc3NhZ2VfdG9tZXNzYWdldHlwZW9iamVjdHxodHRwbWVzc2FnZV90b3N0cmluZ3xodHRwcXVlcnlzdHJpbmd8aHR0cHF1ZXJ5c3RyaW5nX2NvbnN0cnVjdHxodHRwcXVlcnlzdHJpbmdfZ2V0fGh0dHBxdWVyeXN0cmluZ19tb2R8aHR0cHF1ZXJ5c3RyaW5nX3NldHxodHRwcXVlcnlzdHJpbmdfc2luZ2xldG9ufGh0dHBxdWVyeXN0cmluZ190b2FycmF5fGh0dHBxdWVyeXN0cmluZ190b3N0cmluZ3xodHRwcXVlcnlzdHJpbmdfeGxhdGV8aHR0cHJlcXVlc3R8aHR0cHJlcXVlc3RfYWRkY29va2llc3xodHRwcmVxdWVzdF9hZGRoZWFkZXJzfGh0dHByZXF1ZXN0X2FkZHBvc3RmaWVsZHN8aHR0cHJlcXVlc3RfYWRkcG9zdGZpbGV8aHR0cHJlcXVlc3RfYWRkcHV0ZGF0YXxodHRwcmVxdWVzdF9hZGRxdWVyeWRhdGF8aHR0cHJlcXVlc3RfYWRkcmF3cG9zdGRhdGF8aHR0cHJlcXVlc3RfYWRkc3Nsb3B0aW9uc3xodHRwcmVxdWVzdF9jbGVhcmhpc3Rvcnl8aHR0cHJlcXVlc3RfY29uc3RydWN0fGh0dHByZXF1ZXN0X2VuYWJsZWNvb2tpZXN8aHR0cHJlcXVlc3RfZ2V0Y29udGVudHR5cGV8aHR0cHJlcXVlc3RfZ2V0Y29va2llc3xodHRwcmVxdWVzdF9nZXRoZWFkZXJzfGh0dHByZXF1ZXN0X2dldGhpc3Rvcnl8aHR0cHJlcXVlc3RfZ2V0bWV0aG9kfGh0dHByZXF1ZXN0X2dldG9wdGlvbnN8aHR0cHJlcXVlc3RfZ2V0cG9zdGZpZWxkc3xodHRwcmVxdWVzdF9nZXRwb3N0ZmlsZXN8aHR0cHJlcXVlc3RfZ2V0cHV0ZGF0YXxodHRwcmVxdWVzdF9nZXRwdXRmaWxlfGh0dHByZXF1ZXN0X2dldHF1ZXJ5ZGF0YXxodHRwcmVxdWVzdF9nZXRyYXdwb3N0ZGF0YXxodHRwcmVxdWVzdF9nZXRyYXdyZXF1ZXN0bWVzc2FnZXxodHRwcmVxdWVzdF9nZXRyYXdyZXNwb25zZW1lc3NhZ2V8aHR0cHJlcXVlc3RfZ2V0cmVxdWVzdG1lc3NhZ2V8aHR0cHJlcXVlc3RfZ2V0cmVzcG9uc2Vib2R5fGh0dHByZXF1ZXN0X2dldHJlc3BvbnNlY29kZXxodHRwcmVxdWVzdF9nZXRyZXNwb25zZWNvb2tpZXN8aHR0cHJlcXVlc3RfZ2V0cmVzcG9uc2VkYXRhfGh0dHByZXF1ZXN0X2dldHJlc3BvbnNlaGVhZGVyfGh0dHByZXF1ZXN0X2dldHJlc3BvbnNlaW5mb3xodHRwcmVxdWVzdF9nZXRyZXNwb25zZW1lc3NhZ2V8aHR0cHJlcXVlc3RfZ2V0cmVzcG9uc2VzdGF0dXN8aHR0cHJlcXVlc3RfZ2V0c3Nsb3B0aW9uc3xodHRwcmVxdWVzdF9nZXR1cmx8aHR0cHJlcXVlc3RfcmVzZXRjb29raWVzfGh0dHByZXF1ZXN0X3NlbmR8aHR0cHJlcXVlc3Rfc2V0Y29udGVudHR5cGV8aHR0cHJlcXVlc3Rfc2V0Y29va2llc3xodHRwcmVxdWVzdF9zZXRoZWFkZXJzfGh0dHByZXF1ZXN0X3NldG1ldGhvZHxodHRwcmVxdWVzdF9zZXRvcHRpb25zfGh0dHByZXF1ZXN0X3NldHBvc3RmaWVsZHN8aHR0cHJlcXVlc3Rfc2V0cG9zdGZpbGVzfGh0dHByZXF1ZXN0X3NldHB1dGRhdGF8aHR0cHJlcXVlc3Rfc2V0cHV0ZmlsZXxodHRwcmVxdWVzdF9zZXRxdWVyeWRhdGF8aHR0cHJlcXVlc3Rfc2V0cmF3cG9zdGRhdGF8aHR0cHJlcXVlc3Rfc2V0c3Nsb3B0aW9uc3xodHRwcmVxdWVzdF9zZXR1cmx8aHR0cHJlcXVlc3Rwb29sfGh0dHByZXF1ZXN0cG9vbF9hdHRhY2h8aHR0cHJlcXVlc3Rwb29sX2NvbnN0cnVjdHxodHRwcmVxdWVzdHBvb2xfZGVzdHJ1Y3R8aHR0cHJlcXVlc3Rwb29sX2RldGFjaHxodHRwcmVxdWVzdHBvb2xfZ2V0YXR0YWNoZWRyZXF1ZXN0c3xodHRwcmVxdWVzdHBvb2xfZ2V0ZmluaXNoZWRyZXF1ZXN0c3xodHRwcmVxdWVzdHBvb2xfcmVzZXR8aHR0cHJlcXVlc3Rwb29sX3NlbmR8aHR0cHJlcXVlc3Rwb29sX3NvY2tldHBlcmZvcm18aHR0cHJlcXVlc3Rwb29sX3NvY2tldHNlbGVjdHxodHRwcmVzcG9uc2V8aHR0cHJlc3BvbnNlX2NhcHR1cmV8aHR0cHJlc3BvbnNlX2dldGJ1ZmZlcnNpemV8aHR0cHJlc3BvbnNlX2dldGNhY2hlfGh0dHByZXNwb25zZV9nZXRjYWNoZWNvbnRyb2x8aHR0cHJlc3BvbnNlX2dldGNvbnRlbnRkaXNwb3NpdGlvbnxodHRwcmVzcG9uc2VfZ2V0Y29udGVudHR5cGV8aHR0cHJlc3BvbnNlX2dldGRhdGF8aHR0cHJlc3BvbnNlX2dldGV0YWd8aHR0cHJlc3BvbnNlX2dldGZpbGV8aHR0cHJlc3BvbnNlX2dldGd6aXB8aHR0cHJlc3BvbnNlX2dldGhlYWRlcnxodHRwcmVzcG9uc2VfZ2V0bGFzdG1vZGlmaWVkfGh0dHByZXNwb25zZV9nZXRyZXF1ZXN0Ym9keXxodHRwcmVzcG9uc2VfZ2V0cmVxdWVzdGJvZHlzdHJlYW18aHR0cHJlc3BvbnNlX2dldHJlcXVlc3RoZWFkZXJzfGh0dHByZXNwb25zZV9nZXRzdHJlYW18aHR0cHJlc3BvbnNlX2dldHRocm90dGxlZGVsYXl8aHR0cHJlc3BvbnNlX2d1ZXNzY29udGVudHR5cGV8aHR0cHJlc3BvbnNlX3JlZGlyZWN0fGh0dHByZXNwb25zZV9zZW5kfGh0dHByZXNwb25zZV9zZXRidWZmZXJzaXplfGh0dHByZXNwb25zZV9zZXRjYWNoZXxodHRwcmVzcG9uc2Vfc2V0Y2FjaGVjb250cm9sfGh0dHByZXNwb25zZV9zZXRjb250ZW50ZGlzcG9zaXRpb258aHR0cHJlc3BvbnNlX3NldGNvbnRlbnR0eXBlfGh0dHByZXNwb25zZV9zZXRkYXRhfGh0dHByZXNwb25zZV9zZXRldGFnfGh0dHByZXNwb25zZV9zZXRmaWxlfGh0dHByZXNwb25zZV9zZXRnemlwfGh0dHByZXNwb25zZV9zZXRoZWFkZXJ8aHR0cHJlc3BvbnNlX3NldGxhc3Rtb2RpZmllZHxodHRwcmVzcG9uc2Vfc2V0c3RyZWFtfGh0dHByZXNwb25zZV9zZXR0aHJvdHRsZWRlbGF5fGh0dHByZXNwb25zZV9zdGF0dXN8aHdfYXJyYXkyb2JqcmVjfGh3X2NoYW5nZW9iamVjdHxod19jaGlsZHJlbnxod19jaGlsZHJlbm9ianxod19jbG9zZXxod19jb25uZWN0fGh3X2Nvbm5lY3Rpb25faW5mb3xod19jcHxod19kZWxldGVvYmplY3R8aHdfZG9jYnlhbmNob3J8aHdfZG9jYnlhbmNob3JvYmp8aHdfZG9jdW1lbnRfYXR0cmlidXRlc3xod19kb2N1bWVudF9ib2R5dGFnfGh3X2RvY3VtZW50X2NvbnRlbnR8aHdfZG9jdW1lbnRfc2V0Y29udGVudHxod19kb2N1bWVudF9zaXplfGh3X2R1bW15fGh3X2VkaXR0ZXh0fGh3X2Vycm9yfGh3X2Vycm9ybXNnfGh3X2ZyZWVfZG9jdW1lbnR8aHdfZ2V0YW5jaG9yc3xod19nZXRhbmNob3Jzb2JqfGh3X2dldGFuZGxvY2t8aHdfZ2V0Y2hpbGRjb2xsfGh3X2dldGNoaWxkY29sbG9ianxod19nZXRjaGlsZGRvY2NvbGx8aHdfZ2V0Y2hpbGRkb2Njb2xsb2JqfGh3X2dldG9iamVjdHxod19nZXRvYmplY3RieXF1ZXJ5fGh3X2dldG9iamVjdGJ5cXVlcnljb2xsfGh3X2dldG9iamVjdGJ5cXVlcnljb2xsb2JqfGh3X2dldG9iamVjdGJ5cXVlcnlvYmp8aHdfZ2V0cGFyZW50c3xod19nZXRwYXJlbnRzb2JqfGh3X2dldHJlbGxpbmt8aHdfZ2V0cmVtb3RlfGh3X2dldHJlbW90ZWNoaWxkcmVufGh3X2dldHNyY2J5ZGVzdG9ianxod19nZXR0ZXh0fGh3X2dldHVzZXJuYW1lfGh3X2lkZW50aWZ5fGh3X2luY29sbGVjdGlvbnN8aHdfaW5mb3xod19pbnNjb2xsfGh3X2luc2RvY3xod19pbnNlcnRhbmNob3JzfGh3X2luc2VydGRvY3VtZW50fGh3X2luc2VydG9iamVjdHxod19tYXBpZHxod19tb2RpZnlvYmplY3R8aHdfbXZ8aHdfbmV3X2RvY3VtZW50fGh3X29ianJlYzJhcnJheXxod19vdXRwdXRfZG9jdW1lbnR8aHdfcGNvbm5lY3R8aHdfcGlwZWRvY3VtZW50fGh3X3Jvb3R8aHdfc2V0bGlua3Jvb3R8aHdfc3RhdHxod191bmxvY2t8aHdfd2hvfGh3YXBpX2F0dHJpYnV0ZXxod2FwaV9hdHRyaWJ1dGVfa2V5fGh3YXBpX2F0dHJpYnV0ZV9sYW5nZGVwdmFsdWV8aHdhcGlfYXR0cmlidXRlX3ZhbHVlfGh3YXBpX2F0dHJpYnV0ZV92YWx1ZXN8aHdhcGlfY2hlY2tpbnxod2FwaV9jaGVja291dHxod2FwaV9jaGlsZHJlbnxod2FwaV9jb250ZW50fGh3YXBpX2NvbnRlbnRfbWltZXR5cGV8aHdhcGlfY29udGVudF9yZWFkfGh3YXBpX2NvcHl8aHdhcGlfZGJzdGF0fGh3YXBpX2Rjc3RhdHxod2FwaV9kc3RhbmNob3JzfGh3YXBpX2RzdG9mc3JjYW5jaG9yfGh3YXBpX2Vycm9yX2NvdW50fGh3YXBpX2Vycm9yX3JlYXNvbnxod2FwaV9maW5kfGh3YXBpX2Z0c3RhdHxod2FwaV9oZ2NzcHxod2FwaV9od3N0YXR8aHdhcGlfaWRlbnRpZnl8aHdhcGlfaW5mb3xod2FwaV9pbnNlcnR8aHdhcGlfaW5zZXJ0YW5jaG9yfGh3YXBpX2luc2VydGNvbGxlY3Rpb258aHdhcGlfaW5zZXJ0ZG9jdW1lbnR8aHdhcGlfbGlua3xod2FwaV9sb2NrfGh3YXBpX21vdmV8aHdhcGlfbmV3X2NvbnRlbnR8aHdhcGlfb2JqZWN0fGh3YXBpX29iamVjdF9hc3NpZ258aHdhcGlfb2JqZWN0X2F0dHJlZGl0YWJsZXxod2FwaV9vYmplY3RfY291bnR8aHdhcGlfb2JqZWN0X2luc2VydHxod2FwaV9vYmplY3RfbmV3fGh3YXBpX29iamVjdF9yZW1vdmV8aHdhcGlfb2JqZWN0X3RpdGxlfGh3YXBpX29iamVjdF92YWx1ZXxod2FwaV9vYmplY3RieWFuY2hvcnxod2FwaV9wYXJlbnRzfGh3YXBpX3JlYXNvbl9kZXNjcmlwdGlvbnxod2FwaV9yZWFzb25fdHlwZXxod2FwaV9yZW1vdmV8aHdhcGlfcmVwbGFjZXxod2FwaV9zZXRjb21taXR0ZWR2ZXJzaW9ufGh3YXBpX3NyY2FuY2hvcnN8aHdhcGlfc3Jjc29mZHN0fGh3YXBpX3VubG9ja3xod2FwaV91c2VyfGh3YXBpX3VzZXJsaXN0fGh5cG90fGliYXNlX2FkZF91c2VyfGliYXNlX2FmZmVjdGVkX3Jvd3N8aWJhc2VfYmFja3VwfGliYXNlX2Jsb2JfYWRkfGliYXNlX2Jsb2JfY2FuY2VsfGliYXNlX2Jsb2JfY2xvc2V8aWJhc2VfYmxvYl9jcmVhdGV8aWJhc2VfYmxvYl9lY2hvfGliYXNlX2Jsb2JfZ2V0fGliYXNlX2Jsb2JfaW1wb3J0fGliYXNlX2Jsb2JfaW5mb3xpYmFzZV9ibG9iX29wZW58aWJhc2VfY2xvc2V8aWJhc2VfY29tbWl0fGliYXNlX2NvbW1pdF9yZXR8aWJhc2VfY29ubmVjdHxpYmFzZV9kYl9pbmZvfGliYXNlX2RlbGV0ZV91c2VyfGliYXNlX2Ryb3BfZGJ8aWJhc2VfZXJyY29kZXxpYmFzZV9lcnJtc2d8aWJhc2VfZXhlY3V0ZXxpYmFzZV9mZXRjaF9hc3NvY3xpYmFzZV9mZXRjaF9vYmplY3R8aWJhc2VfZmV0Y2hfcm93fGliYXNlX2ZpZWxkX2luZm98aWJhc2VfZnJlZV9ldmVudF9oYW5kbGVyfGliYXNlX2ZyZWVfcXVlcnl8aWJhc2VfZnJlZV9yZXN1bHR8aWJhc2VfZ2VuX2lkfGliYXNlX21haW50YWluX2RifGliYXNlX21vZGlmeV91c2VyfGliYXNlX25hbWVfcmVzdWx0fGliYXNlX251bV9maWVsZHN8aWJhc2VfbnVtX3BhcmFtc3xpYmFzZV9wYXJhbV9pbmZvfGliYXNlX3Bjb25uZWN0fGliYXNlX3ByZXBhcmV8aWJhc2VfcXVlcnl8aWJhc2VfcmVzdG9yZXxpYmFzZV9yb2xsYmFja3xpYmFzZV9yb2xsYmFja19yZXR8aWJhc2Vfc2VydmVyX2luZm98aWJhc2Vfc2VydmljZV9hdHRhY2h8aWJhc2Vfc2VydmljZV9kZXRhY2h8aWJhc2Vfc2V0X2V2ZW50X2hhbmRsZXJ8aWJhc2VfdGltZWZtdHxpYmFzZV90cmFuc3xpYmFzZV93YWl0X2V2ZW50fGljb252fGljb252X2dldF9lbmNvZGluZ3xpY29udl9taW1lX2RlY29kZXxpY29udl9taW1lX2RlY29kZV9oZWFkZXJzfGljb252X21pbWVfZW5jb2RlfGljb252X3NldF9lbmNvZGluZ3xpY29udl9zdHJsZW58aWNvbnZfc3RycG9zfGljb252X3N0cnJwb3N8aWNvbnZfc3Vic3RyfGlkM19nZXRfZnJhbWVfbG9uZ19uYW1lfGlkM19nZXRfZnJhbWVfc2hvcnRfbmFtZXxpZDNfZ2V0X2dlbnJlX2lkfGlkM19nZXRfZ2VucmVfbGlzdHxpZDNfZ2V0X2dlbnJlX25hbWV8aWQzX2dldF90YWd8aWQzX2dldF92ZXJzaW9ufGlkM19yZW1vdmVfdGFnfGlkM19zZXRfdGFnfGlkM3YyYXR0YWNoZWRwaWN0dXJlZnJhbWV8aWQzdjJmcmFtZXxpZDN2MnRhZ3xpZGF0ZXxpZG5fdG9fYXNjaWl8aWRuX3RvX3VuaWNvZGV8aWRuX3RvX3V0Zjh8aWZ4X2FmZmVjdGVkX3Jvd3N8aWZ4X2Jsb2JpbmZpbGVfbW9kZXxpZnhfYnl0ZWFzdmFyY2hhcnxpZnhfY2xvc2V8aWZ4X2Nvbm5lY3R8aWZ4X2NvcHlfYmxvYnxpZnhfY3JlYXRlX2Jsb2J8aWZ4X2NyZWF0ZV9jaGFyfGlmeF9kb3xpZnhfZXJyb3J8aWZ4X2Vycm9ybXNnfGlmeF9mZXRjaF9yb3d8aWZ4X2ZpZWxkcHJvcGVydGllc3xpZnhfZmllbGR0eXBlc3xpZnhfZnJlZV9ibG9ifGlmeF9mcmVlX2NoYXJ8aWZ4X2ZyZWVfcmVzdWx0fGlmeF9nZXRfYmxvYnxpZnhfZ2V0X2NoYXJ8aWZ4X2dldHNxbGNhfGlmeF9odG1sdGJsX3Jlc3VsdHxpZnhfbnVsbGZvcm1hdHxpZnhfbnVtX2ZpZWxkc3xpZnhfbnVtX3Jvd3N8aWZ4X3Bjb25uZWN0fGlmeF9wcmVwYXJlfGlmeF9xdWVyeXxpZnhfdGV4dGFzdmFyY2hhcnxpZnhfdXBkYXRlX2Jsb2J8aWZ4X3VwZGF0ZV9jaGFyfGlmeHVzX2Nsb3NlX3Nsb2J8aWZ4dXNfY3JlYXRlX3Nsb2J8aWZ4dXNfZnJlZV9zbG9ifGlmeHVzX29wZW5fc2xvYnxpZnh1c19yZWFkX3Nsb2J8aWZ4dXNfc2Vla19zbG9ifGlmeHVzX3RlbGxfc2xvYnxpZnh1c193cml0ZV9zbG9ifGlnbm9yZV91c2VyX2Fib3J0fGlpc19hZGRfc2VydmVyfGlpc19nZXRfZGlyX3NlY3VyaXR5fGlpc19nZXRfc2NyaXB0X21hcHxpaXNfZ2V0X3NlcnZlcl9ieV9jb21tZW50fGlpc19nZXRfc2VydmVyX2J5X3BhdGh8aWlzX2dldF9zZXJ2ZXJfcmlnaHRzfGlpc19nZXRfc2VydmljZV9zdGF0ZXxpaXNfcmVtb3ZlX3NlcnZlcnxpaXNfc2V0X2FwcF9zZXR0aW5nc3xpaXNfc2V0X2Rpcl9zZWN1cml0eXxpaXNfc2V0X3NjcmlwdF9tYXB8aWlzX3NldF9zZXJ2ZXJfcmlnaHRzfGlpc19zdGFydF9zZXJ2ZXJ8aWlzX3N0YXJ0X3NlcnZpY2V8aWlzX3N0b3Bfc2VydmVyfGlpc19zdG9wX3NlcnZpY2V8aW1hZ2Uyd2JtcHxpbWFnZV90eXBlX3RvX2V4dGVuc2lvbnxpbWFnZV90eXBlX3RvX21pbWVfdHlwZXxpbWFnZWFscGhhYmxlbmRpbmd8aW1hZ2VhbnRpYWxpYXN8aW1hZ2VhcmN8aW1hZ2VjaGFyfGltYWdlY2hhcnVwfGltYWdlY29sb3JhbGxvY2F0ZXxpbWFnZWNvbG9yYWxsb2NhdGVhbHBoYXxpbWFnZWNvbG9yYXR8aW1hZ2Vjb2xvcmNsb3Nlc3R8aW1hZ2Vjb2xvcmNsb3Nlc3RhbHBoYXxpbWFnZWNvbG9yY2xvc2VzdGh3YnxpbWFnZWNvbG9yZGVhbGxvY2F0ZXxpbWFnZWNvbG9yZXhhY3R8aW1hZ2Vjb2xvcmV4YWN0YWxwaGF8aW1hZ2Vjb2xvcm1hdGNofGltYWdlY29sb3JyZXNvbHZlfGltYWdlY29sb3JyZXNvbHZlYWxwaGF8aW1hZ2Vjb2xvcnNldHxpbWFnZWNvbG9yc2ZvcmluZGV4fGltYWdlY29sb3JzdG90YWx8aW1hZ2Vjb2xvcnRyYW5zcGFyZW50fGltYWdlY29udm9sdXRpb258aW1hZ2Vjb3B5fGltYWdlY29weW1lcmdlfGltYWdlY29weW1lcmdlZ3JheXxpbWFnZWNvcHlyZXNhbXBsZWR8aW1hZ2Vjb3B5cmVzaXplZHxpbWFnZWNyZWF0ZXxpbWFnZWNyZWF0ZWZyb21nZHxpbWFnZWNyZWF0ZWZyb21nZDJ8aW1hZ2VjcmVhdGVmcm9tZ2QycGFydHxpbWFnZWNyZWF0ZWZyb21naWZ8aW1hZ2VjcmVhdGVmcm9tanBlZ3xpbWFnZWNyZWF0ZWZyb21wbmd8aW1hZ2VjcmVhdGVmcm9tc3RyaW5nfGltYWdlY3JlYXRlZnJvbXdibXB8aW1hZ2VjcmVhdGVmcm9teGJtfGltYWdlY3JlYXRlZnJvbXhwbXxpbWFnZWNyZWF0ZXRydWVjb2xvcnxpbWFnZWRhc2hlZGxpbmV8aW1hZ2VkZXN0cm95fGltYWdlZWxsaXBzZXxpbWFnZWZpbGx8aW1hZ2VmaWxsZWRhcmN8aW1hZ2VmaWxsZWRlbGxpcHNlfGltYWdlZmlsbGVkcG9seWdvbnxpbWFnZWZpbGxlZHJlY3RhbmdsZXxpbWFnZWZpbGx0b2JvcmRlcnxpbWFnZWZpbHRlcnxpbWFnZWZvbnRoZWlnaHR8aW1hZ2Vmb250d2lkdGh8aW1hZ2VmdGJib3h8aW1hZ2VmdHRleHR8aW1hZ2VnYW1tYWNvcnJlY3R8aW1hZ2VnZHxpbWFnZWdkMnxpbWFnZWdpZnxpbWFnZWdyYWJzY3JlZW58aW1hZ2VncmFid2luZG93fGltYWdlaW50ZXJsYWNlfGltYWdlaXN0cnVlY29sb3J8aW1hZ2VqcGVnfGltYWdlbGF5ZXJlZmZlY3R8aW1hZ2VsaW5lfGltYWdlbG9hZGZvbnR8aW1hZ2VwYWxldHRlY29weXxpbWFnZXBuZ3xpbWFnZXBvbHlnb258aW1hZ2Vwc2Jib3h8aW1hZ2Vwc2VuY29kZWZvbnR8aW1hZ2Vwc2V4dGVuZGZvbnR8aW1hZ2Vwc2ZyZWVmb250fGltYWdlcHNsb2FkZm9udHxpbWFnZXBzc2xhbnRmb250fGltYWdlcHN0ZXh0fGltYWdlcmVjdGFuZ2xlfGltYWdlcm90YXRlfGltYWdlc2F2ZWFscGhhfGltYWdlc2V0YnJ1c2h8aW1hZ2VzZXRwaXhlbHxpbWFnZXNldHN0eWxlfGltYWdlc2V0dGhpY2tuZXNzfGltYWdlc2V0dGlsZXxpbWFnZXN0cmluZ3xpbWFnZXN0cmluZ3VwfGltYWdlc3h8aW1hZ2VzeXxpbWFnZXRydWVjb2xvcnRvcGFsZXR0ZXxpbWFnZXR0ZmJib3h8aW1hZ2V0dGZ0ZXh0fGltYWdldHlwZXN8aW1hZ2V3Ym1wfGltYWdleGJtfGltYWdpY2t8aW1hZ2lja19hZGFwdGl2ZWJsdXJpbWFnZXxpbWFnaWNrX2FkYXB0aXZlcmVzaXplaW1hZ2V8aW1hZ2lja19hZGFwdGl2ZXNoYXJwZW5pbWFnZXxpbWFnaWNrX2FkYXB0aXZldGhyZXNob2xkaW1hZ2V8aW1hZ2lja19hZGRpbWFnZXxpbWFnaWNrX2FkZG5vaXNlaW1hZ2V8aW1hZ2lja19hZmZpbmV0cmFuc2Zvcm1pbWFnZXxpbWFnaWNrX2FuaW1hdGVpbWFnZXN8aW1hZ2lja19hbm5vdGF0ZWltYWdlfGltYWdpY2tfYXBwZW5kaW1hZ2VzfGltYWdpY2tfYXZlcmFnZWltYWdlc3xpbWFnaWNrX2JsYWNrdGhyZXNob2xkaW1hZ2V8aW1hZ2lja19ibHVyaW1hZ2V8aW1hZ2lja19ib3JkZXJpbWFnZXxpbWFnaWNrX2NoYXJjb2FsaW1hZ2V8aW1hZ2lja19jaG9waW1hZ2V8aW1hZ2lja19jbGVhcnxpbWFnaWNrX2NsaXBpbWFnZXxpbWFnaWNrX2NsaXBwYXRoaW1hZ2V8aW1hZ2lja19jbG9uZXxpbWFnaWNrX2NsdXRpbWFnZXxpbWFnaWNrX2NvYWxlc2NlaW1hZ2VzfGltYWdpY2tfY29sb3JmbG9vZGZpbGxpbWFnZXxpbWFnaWNrX2NvbG9yaXplaW1hZ2V8aW1hZ2lja19jb21iaW5laW1hZ2VzfGltYWdpY2tfY29tbWVudGltYWdlfGltYWdpY2tfY29tcGFyZWltYWdlY2hhbm5lbHN8aW1hZ2lja19jb21wYXJlaW1hZ2VsYXllcnN8aW1hZ2lja19jb21wYXJlaW1hZ2VzfGltYWdpY2tfY29tcG9zaXRlaW1hZ2V8aW1hZ2lja19jb25zdHJ1Y3R8aW1hZ2lja19jb250cmFzdGltYWdlfGltYWdpY2tfY29udHJhc3RzdHJldGNoaW1hZ2V8aW1hZ2lja19jb252b2x2ZWltYWdlfGltYWdpY2tfY3JvcGltYWdlfGltYWdpY2tfY3JvcHRodW1ibmFpbGltYWdlfGltYWdpY2tfY3VycmVudHxpbWFnaWNrX2N5Y2xlY29sb3JtYXBpbWFnZXxpbWFnaWNrX2RlY2lwaGVyaW1hZ2V8aW1hZ2lja19kZWNvbnN0cnVjdGltYWdlc3xpbWFnaWNrX2RlbGV0ZWltYWdlYXJ0aWZhY3R8aW1hZ2lja19kZXNwZWNrbGVpbWFnZXxpbWFnaWNrX2Rlc3Ryb3l8aW1hZ2lja19kaXNwbGF5aW1hZ2V8aW1hZ2lja19kaXNwbGF5aW1hZ2VzfGltYWdpY2tfZGlzdG9ydGltYWdlfGltYWdpY2tfZHJhd2ltYWdlfGltYWdpY2tfZWRnZWltYWdlfGltYWdpY2tfZW1ib3NzaW1hZ2V8aW1hZ2lja19lbmNpcGhlcmltYWdlfGltYWdpY2tfZW5oYW5jZWltYWdlfGltYWdpY2tfZXF1YWxpemVpbWFnZXxpbWFnaWNrX2V2YWx1YXRlaW1hZ2V8aW1hZ2lja19leHRlbnRpbWFnZXxpbWFnaWNrX2ZsYXR0ZW5pbWFnZXN8aW1hZ2lja19mbGlwaW1hZ2V8aW1hZ2lja19mbG9vZGZpbGxwYWludGltYWdlfGltYWdpY2tfZmxvcGltYWdlfGltYWdpY2tfZnJhbWVpbWFnZXxpbWFnaWNrX2Z4aW1hZ2V8aW1hZ2lja19nYW1tYWltYWdlfGltYWdpY2tfZ2F1c3NpYW5ibHVyaW1hZ2V8aW1hZ2lja19nZXRjb2xvcnNwYWNlfGltYWdpY2tfZ2V0Y29tcHJlc3Npb258aW1hZ2lja19nZXRjb21wcmVzc2lvbnF1YWxpdHl8aW1hZ2lja19nZXRjb3B5cmlnaHR8aW1hZ2lja19nZXRmaWxlbmFtZXxpbWFnaWNrX2dldGZvbnR8aW1hZ2lja19nZXRmb3JtYXR8aW1hZ2lja19nZXRncmF2aXR5fGltYWdpY2tfZ2V0aG9tZXVybHxpbWFnaWNrX2dldGltYWdlfGltYWdpY2tfZ2V0aW1hZ2VhbHBoYWNoYW5uZWx8aW1hZ2lja19nZXRpbWFnZWFydGlmYWN0fGltYWdpY2tfZ2V0aW1hZ2ViYWNrZ3JvdW5kY29sb3J8aW1hZ2lja19nZXRpbWFnZWJsb2J8aW1hZ2lja19nZXRpbWFnZWJsdWVwcmltYXJ5fGltYWdpY2tfZ2V0aW1hZ2Vib3JkZXJjb2xvcnxpbWFnaWNrX2dldGltYWdlY2hhbm5lbGRlcHRofGltYWdpY2tfZ2V0aW1hZ2VjaGFubmVsZGlzdG9ydGlvbnxpbWFnaWNrX2dldGltYWdlY2hhbm5lbGRpc3RvcnRpb25zfGltYWdpY2tfZ2V0aW1hZ2VjaGFubmVsZXh0cmVtYXxpbWFnaWNrX2dldGltYWdlY2hhbm5lbG1lYW58aW1hZ2lja19nZXRpbWFnZWNoYW5uZWxyYW5nZXxpbWFnaWNrX2dldGltYWdlY2hhbm5lbHN0YXRpc3RpY3N8aW1hZ2lja19nZXRpbWFnZWNsaXBtYXNrfGltYWdpY2tfZ2V0aW1hZ2Vjb2xvcm1hcGNvbG9yfGltYWdpY2tfZ2V0aW1hZ2Vjb2xvcnN8aW1hZ2lja19nZXRpbWFnZWNvbG9yc3BhY2V8aW1hZ2lja19nZXRpbWFnZWNvbXBvc2V8aW1hZ2lja19nZXRpbWFnZWNvbXByZXNzaW9ufGltYWdpY2tfZ2V0aW1hZ2Vjb21wcmVzc2lvbnF1YWxpdHl8aW1hZ2lja19nZXRpbWFnZWRlbGF5fGltYWdpY2tfZ2V0aW1hZ2VkZXB0aHxpbWFnaWNrX2dldGltYWdlZGlzcG9zZXxpbWFnaWNrX2dldGltYWdlZGlzdG9ydGlvbnxpbWFnaWNrX2dldGltYWdlZXh0cmVtYXxpbWFnaWNrX2dldGltYWdlZmlsZW5hbWV8aW1hZ2lja19nZXRpbWFnZWZvcm1hdHxpbWFnaWNrX2dldGltYWdlZ2FtbWF8aW1hZ2lja19nZXRpbWFnZWdlb21ldHJ5fGltYWdpY2tfZ2V0aW1hZ2VncmF2aXR5fGltYWdpY2tfZ2V0aW1hZ2VncmVlbnByaW1hcnl8aW1hZ2lja19nZXRpbWFnZWhlaWdodHxpbWFnaWNrX2dldGltYWdlaGlzdG9ncmFtfGltYWdpY2tfZ2V0aW1hZ2VpbmRleHxpbWFnaWNrX2dldGltYWdlaW50ZXJsYWNlc2NoZW1lfGltYWdpY2tfZ2V0aW1hZ2VpbnRlcnBvbGF0ZW1ldGhvZHxpbWFnaWNrX2dldGltYWdlaXRlcmF0aW9uc3xpbWFnaWNrX2dldGltYWdlbGVuZ3RofGltYWdpY2tfZ2V0aW1hZ2VtYWdpY2tsaWNlbnNlfGltYWdpY2tfZ2V0aW1hZ2VtYXR0ZXxpbWFnaWNrX2dldGltYWdlbWF0dGVjb2xvcnxpbWFnaWNrX2dldGltYWdlb3JpZW50YXRpb258aW1hZ2lja19nZXRpbWFnZXBhZ2V8aW1hZ2lja19nZXRpbWFnZXBpeGVsY29sb3J8aW1hZ2lja19nZXRpbWFnZXByb2ZpbGV8aW1hZ2lja19nZXRpbWFnZXByb2ZpbGVzfGltYWdpY2tfZ2V0aW1hZ2Vwcm9wZXJ0aWVzfGltYWdpY2tfZ2V0aW1hZ2Vwcm9wZXJ0eXxpbWFnaWNrX2dldGltYWdlcmVkcHJpbWFyeXxpbWFnaWNrX2dldGltYWdlcmVnaW9ufGltYWdpY2tfZ2V0aW1hZ2VyZW5kZXJpbmdpbnRlbnR8aW1hZ2lja19nZXRpbWFnZXJlc29sdXRpb258aW1hZ2lja19nZXRpbWFnZXNibG9ifGltYWdpY2tfZ2V0aW1hZ2VzY2VuZXxpbWFnaWNrX2dldGltYWdlc2lnbmF0dXJlfGltYWdpY2tfZ2V0aW1hZ2VzaXplfGltYWdpY2tfZ2V0aW1hZ2V0aWNrc3BlcnNlY29uZHxpbWFnaWNrX2dldGltYWdldG90YWxpbmtkZW5zaXR5fGltYWdpY2tfZ2V0aW1hZ2V0eXBlfGltYWdpY2tfZ2V0aW1hZ2V1bml0c3xpbWFnaWNrX2dldGltYWdldmlydHVhbHBpeGVsbWV0aG9kfGltYWdpY2tfZ2V0aW1hZ2V3aGl0ZXBvaW50fGltYWdpY2tfZ2V0aW1hZ2V3aWR0aHxpbWFnaWNrX2dldGludGVybGFjZXNjaGVtZXxpbWFnaWNrX2dldGl0ZXJhdG9yaW5kZXh8aW1hZ2lja19nZXRudW1iZXJpbWFnZXN8aW1hZ2lja19nZXRvcHRpb258aW1hZ2lja19nZXRwYWNrYWdlbmFtZXxpbWFnaWNrX2dldHBhZ2V8aW1hZ2lja19nZXRwaXhlbGl0ZXJhdG9yfGltYWdpY2tfZ2V0cGl4ZWxyZWdpb25pdGVyYXRvcnxpbWFnaWNrX2dldHBvaW50c2l6ZXxpbWFnaWNrX2dldHF1YW50dW1kZXB0aHxpbWFnaWNrX2dldHF1YW50dW1yYW5nZXxpbWFnaWNrX2dldHJlbGVhc2VkYXRlfGltYWdpY2tfZ2V0cmVzb3VyY2V8aW1hZ2lja19nZXRyZXNvdXJjZWxpbWl0fGltYWdpY2tfZ2V0c2FtcGxpbmdmYWN0b3JzfGltYWdpY2tfZ2V0c2l6ZXxpbWFnaWNrX2dldHNpemVvZmZzZXR8aW1hZ2lja19nZXR2ZXJzaW9ufGltYWdpY2tfaGFzbmV4dGltYWdlfGltYWdpY2tfaGFzcHJldmlvdXNpbWFnZXxpbWFnaWNrX2lkZW50aWZ5aW1hZ2V8aW1hZ2lja19pbXBsb2RlaW1hZ2V8aW1hZ2lja19sYWJlbGltYWdlfGltYWdpY2tfbGV2ZWxpbWFnZXxpbWFnaWNrX2xpbmVhcnN0cmV0Y2hpbWFnZXxpbWFnaWNrX2xpcXVpZHJlc2NhbGVpbWFnZXxpbWFnaWNrX21hZ25pZnlpbWFnZXxpbWFnaWNrX21hcGltYWdlfGltYWdpY2tfbWF0dGVmbG9vZGZpbGxpbWFnZXxpbWFnaWNrX21lZGlhbmZpbHRlcmltYWdlfGltYWdpY2tfbWVyZ2VpbWFnZWxheWVyc3xpbWFnaWNrX21pbmlmeWltYWdlfGltYWdpY2tfbW9kdWxhdGVpbWFnZXxpbWFnaWNrX21vbnRhZ2VpbWFnZXxpbWFnaWNrX21vcnBoaW1hZ2VzfGltYWdpY2tfbW9zYWljaW1hZ2VzfGltYWdpY2tfbW90aW9uYmx1cmltYWdlfGltYWdpY2tfbmVnYXRlaW1hZ2V8aW1hZ2lja19uZXdpbWFnZXxpbWFnaWNrX25ld3BzZXVkb2ltYWdlfGltYWdpY2tfbmV4dGltYWdlfGltYWdpY2tfbm9ybWFsaXplaW1hZ2V8aW1hZ2lja19vaWxwYWludGltYWdlfGltYWdpY2tfb3BhcXVlcGFpbnRpbWFnZXxpbWFnaWNrX29wdGltaXplaW1hZ2VsYXllcnN8aW1hZ2lja19vcmRlcmVkcG9zdGVyaXplaW1hZ2V8aW1hZ2lja19wYWludGZsb29kZmlsbGltYWdlfGltYWdpY2tfcGFpbnRvcGFxdWVpbWFnZXxpbWFnaWNrX3BhaW50dHJhbnNwYXJlbnRpbWFnZXxpbWFnaWNrX3BpbmdpbWFnZXxpbWFnaWNrX3BpbmdpbWFnZWJsb2J8aW1hZ2lja19waW5naW1hZ2VmaWxlfGltYWdpY2tfcG9sYXJvaWRpbWFnZXxpbWFnaWNrX3Bvc3Rlcml6ZWltYWdlfGltYWdpY2tfcHJldmlld2ltYWdlc3xpbWFnaWNrX3ByZXZpb3VzaW1hZ2V8aW1hZ2lja19wcm9maWxlaW1hZ2V8aW1hZ2lja19xdWFudGl6ZWltYWdlfGltYWdpY2tfcXVhbnRpemVpbWFnZXN8aW1hZ2lja19xdWVyeWZvbnRtZXRyaWNzfGltYWdpY2tfcXVlcnlmb250c3xpbWFnaWNrX3F1ZXJ5Zm9ybWF0c3xpbWFnaWNrX3JhZGlhbGJsdXJpbWFnZXxpbWFnaWNrX3JhaXNlaW1hZ2V8aW1hZ2lja19yYW5kb210aHJlc2hvbGRpbWFnZXxpbWFnaWNrX3JlYWRpbWFnZXxpbWFnaWNrX3JlYWRpbWFnZWJsb2J8aW1hZ2lja19yZWFkaW1hZ2VmaWxlfGltYWdpY2tfcmVjb2xvcmltYWdlfGltYWdpY2tfcmVkdWNlbm9pc2VpbWFnZXxpbWFnaWNrX3JlbW92ZWltYWdlfGltYWdpY2tfcmVtb3ZlaW1hZ2Vwcm9maWxlfGltYWdpY2tfcmVuZGVyfGltYWdpY2tfcmVzYW1wbGVpbWFnZXxpbWFnaWNrX3Jlc2V0aW1hZ2VwYWdlfGltYWdpY2tfcmVzaXplaW1hZ2V8aW1hZ2lja19yb2xsaW1hZ2V8aW1hZ2lja19yb3RhdGVpbWFnZXxpbWFnaWNrX3JvdW5kY29ybmVyc3xpbWFnaWNrX3NhbXBsZWltYWdlfGltYWdpY2tfc2NhbGVpbWFnZXxpbWFnaWNrX3NlcGFyYXRlaW1hZ2VjaGFubmVsfGltYWdpY2tfc2VwaWF0b25laW1hZ2V8aW1hZ2lja19zZXRiYWNrZ3JvdW5kY29sb3J8aW1hZ2lja19zZXRjb2xvcnNwYWNlfGltYWdpY2tfc2V0Y29tcHJlc3Npb258aW1hZ2lja19zZXRjb21wcmVzc2lvbnF1YWxpdHl8aW1hZ2lja19zZXRmaWxlbmFtZXxpbWFnaWNrX3NldGZpcnN0aXRlcmF0b3J8aW1hZ2lja19zZXRmb250fGltYWdpY2tfc2V0Zm9ybWF0fGltYWdpY2tfc2V0Z3Jhdml0eXxpbWFnaWNrX3NldGltYWdlfGltYWdpY2tfc2V0aW1hZ2VhbHBoYWNoYW5uZWx8aW1hZ2lja19zZXRpbWFnZWFydGlmYWN0fGltYWdpY2tfc2V0aW1hZ2ViYWNrZ3JvdW5kY29sb3J8aW1hZ2lja19zZXRpbWFnZWJpYXN8aW1hZ2lja19zZXRpbWFnZWJsdWVwcmltYXJ5fGltYWdpY2tfc2V0aW1hZ2Vib3JkZXJjb2xvcnxpbWFnaWNrX3NldGltYWdlY2hhbm5lbGRlcHRofGltYWdpY2tfc2V0aW1hZ2VjbGlwbWFza3xpbWFnaWNrX3NldGltYWdlY29sb3JtYXBjb2xvcnxpbWFnaWNrX3NldGltYWdlY29sb3JzcGFjZXxpbWFnaWNrX3NldGltYWdlY29tcG9zZXxpbWFnaWNrX3NldGltYWdlY29tcHJlc3Npb258aW1hZ2lja19zZXRpbWFnZWNvbXByZXNzaW9ucXVhbGl0eXxpbWFnaWNrX3NldGltYWdlZGVsYXl8aW1hZ2lja19zZXRpbWFnZWRlcHRofGltYWdpY2tfc2V0aW1hZ2VkaXNwb3NlfGltYWdpY2tfc2V0aW1hZ2VleHRlbnR8aW1hZ2lja19zZXRpbWFnZWZpbGVuYW1lfGltYWdpY2tfc2V0aW1hZ2Vmb3JtYXR8aW1hZ2lja19zZXRpbWFnZWdhbW1hfGltYWdpY2tfc2V0aW1hZ2VncmF2aXR5fGltYWdpY2tfc2V0aW1hZ2VncmVlbnByaW1hcnl8aW1hZ2lja19zZXRpbWFnZWluZGV4fGltYWdpY2tfc2V0aW1hZ2VpbnRlcmxhY2VzY2hlbWV8aW1hZ2lja19zZXRpbWFnZWludGVycG9sYXRlbWV0aG9kfGltYWdpY2tfc2V0aW1hZ2VpdGVyYXRpb25zfGltYWdpY2tfc2V0aW1hZ2VtYXR0ZXxpbWFnaWNrX3NldGltYWdlbWF0dGVjb2xvcnxpbWFnaWNrX3NldGltYWdlb3BhY2l0eXxpbWFnaWNrX3NldGltYWdlb3JpZW50YXRpb258aW1hZ2lja19zZXRpbWFnZXBhZ2V8aW1hZ2lja19zZXRpbWFnZXByb2ZpbGV8aW1hZ2lja19zZXRpbWFnZXByb3BlcnR5fGltYWdpY2tfc2V0aW1hZ2VyZWRwcmltYXJ5fGltYWdpY2tfc2V0aW1hZ2VyZW5kZXJpbmdpbnRlbnR8aW1hZ2lja19zZXRpbWFnZXJlc29sdXRpb258aW1hZ2lja19zZXRpbWFnZXNjZW5lfGltYWdpY2tfc2V0aW1hZ2V0aWNrc3BlcnNlY29uZHxpbWFnaWNrX3NldGltYWdldHlwZXxpbWFnaWNrX3NldGltYWdldW5pdHN8aW1hZ2lja19zZXRpbWFnZXZpcnR1YWxwaXhlbG1ldGhvZHxpbWFnaWNrX3NldGltYWdld2hpdGVwb2ludHxpbWFnaWNrX3NldGludGVybGFjZXNjaGVtZXxpbWFnaWNrX3NldGl0ZXJhdG9yaW5kZXh8aW1hZ2lja19zZXRsYXN0aXRlcmF0b3J8aW1hZ2lja19zZXRvcHRpb258aW1hZ2lja19zZXRwYWdlfGltYWdpY2tfc2V0cG9pbnRzaXplfGltYWdpY2tfc2V0cmVzb2x1dGlvbnxpbWFnaWNrX3NldHJlc291cmNlbGltaXR8aW1hZ2lja19zZXRzYW1wbGluZ2ZhY3RvcnN8aW1hZ2lja19zZXRzaXplfGltYWdpY2tfc2V0c2l6ZW9mZnNldHxpbWFnaWNrX3NldHR5cGV8aW1hZ2lja19zaGFkZWltYWdlfGltYWdpY2tfc2hhZG93aW1hZ2V8aW1hZ2lja19zaGFycGVuaW1hZ2V8aW1hZ2lja19zaGF2ZWltYWdlfGltYWdpY2tfc2hlYXJpbWFnZXxpbWFnaWNrX3NpZ21vaWRhbGNvbnRyYXN0aW1hZ2V8aW1hZ2lja19za2V0Y2hpbWFnZXxpbWFnaWNrX3NvbGFyaXplaW1hZ2V8aW1hZ2lja19zcGxpY2VpbWFnZXxpbWFnaWNrX3NwcmVhZGltYWdlfGltYWdpY2tfc3RlZ2Fub2ltYWdlfGltYWdpY2tfc3RlcmVvaW1hZ2V8aW1hZ2lja19zdHJpcGltYWdlfGltYWdpY2tfc3dpcmxpbWFnZXxpbWFnaWNrX3RleHR1cmVpbWFnZXxpbWFnaWNrX3RocmVzaG9sZGltYWdlfGltYWdpY2tfdGh1bWJuYWlsaW1hZ2V8aW1hZ2lja190aW50aW1hZ2V8aW1hZ2lja190cmFuc2Zvcm1pbWFnZXxpbWFnaWNrX3RyYW5zcGFyZW50cGFpbnRpbWFnZXxpbWFnaWNrX3RyYW5zcG9zZWltYWdlfGltYWdpY2tfdHJhbnN2ZXJzZWltYWdlfGltYWdpY2tfdHJpbWltYWdlfGltYWdpY2tfdW5pcXVlaW1hZ2Vjb2xvcnN8aW1hZ2lja191bnNoYXJwbWFza2ltYWdlfGltYWdpY2tfdmFsaWR8aW1hZ2lja192aWduZXR0ZWltYWdlfGltYWdpY2tfd2F2ZWltYWdlfGltYWdpY2tfd2hpdGV0aHJlc2hvbGRpbWFnZXxpbWFnaWNrX3dyaXRlaW1hZ2V8aW1hZ2lja193cml0ZWltYWdlZmlsZXxpbWFnaWNrX3dyaXRlaW1hZ2VzfGltYWdpY2tfd3JpdGVpbWFnZXNmaWxlfGltYWdpY2tkcmF3fGltYWdpY2tkcmF3X2FmZmluZXxpbWFnaWNrZHJhd19hbm5vdGF0aW9ufGltYWdpY2tkcmF3X2FyY3xpbWFnaWNrZHJhd19iZXppZXJ8aW1hZ2lja2RyYXdfY2lyY2xlfGltYWdpY2tkcmF3X2NsZWFyfGltYWdpY2tkcmF3X2Nsb25lfGltYWdpY2tkcmF3X2NvbG9yfGltYWdpY2tkcmF3X2NvbW1lbnR8aW1hZ2lja2RyYXdfY29tcG9zaXRlfGltYWdpY2tkcmF3X2NvbnN0cnVjdHxpbWFnaWNrZHJhd19kZXN0cm95fGltYWdpY2tkcmF3X2VsbGlwc2V8aW1hZ2lja2RyYXdfZ2V0Y2xpcHBhdGh8aW1hZ2lja2RyYXdfZ2V0Y2xpcHJ1bGV8aW1hZ2lja2RyYXdfZ2V0Y2xpcHVuaXRzfGltYWdpY2tkcmF3X2dldGZpbGxjb2xvcnxpbWFnaWNrZHJhd19nZXRmaWxsb3BhY2l0eXxpbWFnaWNrZHJhd19nZXRmaWxscnVsZXxpbWFnaWNrZHJhd19nZXRmb250fGltYWdpY2tkcmF3X2dldGZvbnRmYW1pbHl8aW1hZ2lja2RyYXdfZ2V0Zm9udHNpemV8aW1hZ2lja2RyYXdfZ2V0Zm9udHN0eWxlfGltYWdpY2tkcmF3X2dldGZvbnR3ZWlnaHR8aW1hZ2lja2RyYXdfZ2V0Z3Jhdml0eXxpbWFnaWNrZHJhd19nZXRzdHJva2VhbnRpYWxpYXN8aW1hZ2lja2RyYXdfZ2V0c3Ryb2tlY29sb3J8aW1hZ2lja2RyYXdfZ2V0c3Ryb2tlZGFzaGFycmF5fGltYWdpY2tkcmF3X2dldHN0cm9rZWRhc2hvZmZzZXR8aW1hZ2lja2RyYXdfZ2V0c3Ryb2tlbGluZWNhcHxpbWFnaWNrZHJhd19nZXRzdHJva2VsaW5lam9pbnxpbWFnaWNrZHJhd19nZXRzdHJva2VtaXRlcmxpbWl0fGltYWdpY2tkcmF3X2dldHN0cm9rZW9wYWNpdHl8aW1hZ2lja2RyYXdfZ2V0c3Ryb2tld2lkdGh8aW1hZ2lja2RyYXdfZ2V0dGV4dGFsaWdubWVudHxpbWFnaWNrZHJhd19nZXR0ZXh0YW50aWFsaWFzfGltYWdpY2tkcmF3X2dldHRleHRkZWNvcmF0aW9ufGltYWdpY2tkcmF3X2dldHRleHRlbmNvZGluZ3xpbWFnaWNrZHJhd19nZXR0ZXh0dW5kZXJjb2xvcnxpbWFnaWNrZHJhd19nZXR2ZWN0b3JncmFwaGljc3xpbWFnaWNrZHJhd19saW5lfGltYWdpY2tkcmF3X21hdHRlfGltYWdpY2tkcmF3X3BhdGhjbG9zZXxpbWFnaWNrZHJhd19wYXRoY3VydmV0b2Fic29sdXRlfGltYWdpY2tkcmF3X3BhdGhjdXJ2ZXRvcXVhZHJhdGljYmV6aWVyYWJzb2x1dGV8aW1hZ2lja2RyYXdfcGF0aGN1cnZldG9xdWFkcmF0aWNiZXppZXJyZWxhdGl2ZXxpbWFnaWNrZHJhd19wYXRoY3VydmV0b3F1YWRyYXRpY2JlemllcnNtb290aGFic29sdXRlfGltYWdpY2tkcmF3X3BhdGhjdXJ2ZXRvcXVhZHJhdGljYmV6aWVyc21vb3RocmVsYXRpdmV8aW1hZ2lja2RyYXdfcGF0aGN1cnZldG9yZWxhdGl2ZXxpbWFnaWNrZHJhd19wYXRoY3VydmV0b3Ntb290aGFic29sdXRlfGltYWdpY2tkcmF3X3BhdGhjdXJ2ZXRvc21vb3RocmVsYXRpdmV8aW1hZ2lja2RyYXdfcGF0aGVsbGlwdGljYXJjYWJzb2x1dGV8aW1hZ2lja2RyYXdfcGF0aGVsbGlwdGljYXJjcmVsYXRpdmV8aW1hZ2lja2RyYXdfcGF0aGZpbmlzaHxpbWFnaWNrZHJhd19wYXRobGluZXRvYWJzb2x1dGV8aW1hZ2lja2RyYXdfcGF0aGxpbmV0b2hvcml6b250YWxhYnNvbHV0ZXxpbWFnaWNrZHJhd19wYXRobGluZXRvaG9yaXpvbnRhbHJlbGF0aXZlfGltYWdpY2tkcmF3X3BhdGhsaW5ldG9yZWxhdGl2ZXxpbWFnaWNrZHJhd19wYXRobGluZXRvdmVydGljYWxhYnNvbHV0ZXxpbWFnaWNrZHJhd19wYXRobGluZXRvdmVydGljYWxyZWxhdGl2ZXxpbWFnaWNrZHJhd19wYXRobW92ZXRvYWJzb2x1dGV8aW1hZ2lja2RyYXdfcGF0aG1vdmV0b3JlbGF0aXZlfGltYWdpY2tkcmF3X3BhdGhzdGFydHxpbWFnaWNrZHJhd19wb2ludHxpbWFnaWNrZHJhd19wb2x5Z29ufGltYWdpY2tkcmF3X3BvbHlsaW5lfGltYWdpY2tkcmF3X3BvcHxpbWFnaWNrZHJhd19wb3BjbGlwcGF0aHxpbWFnaWNrZHJhd19wb3BkZWZzfGltYWdpY2tkcmF3X3BvcHBhdHRlcm58aW1hZ2lja2RyYXdfcHVzaHxpbWFnaWNrZHJhd19wdXNoY2xpcHBhdGh8aW1hZ2lja2RyYXdfcHVzaGRlZnN8aW1hZ2lja2RyYXdfcHVzaHBhdHRlcm58aW1hZ2lja2RyYXdfcmVjdGFuZ2xlfGltYWdpY2tkcmF3X3JlbmRlcnxpbWFnaWNrZHJhd19yb3RhdGV8aW1hZ2lja2RyYXdfcm91bmRyZWN0YW5nbGV8aW1hZ2lja2RyYXdfc2NhbGV8aW1hZ2lja2RyYXdfc2V0Y2xpcHBhdGh8aW1hZ2lja2RyYXdfc2V0Y2xpcHJ1bGV8aW1hZ2lja2RyYXdfc2V0Y2xpcHVuaXRzfGltYWdpY2tkcmF3X3NldGZpbGxhbHBoYXxpbWFnaWNrZHJhd19zZXRmaWxsY29sb3J8aW1hZ2lja2RyYXdfc2V0ZmlsbG9wYWNpdHl8aW1hZ2lja2RyYXdfc2V0ZmlsbHBhdHRlcm51cmx8aW1hZ2lja2RyYXdfc2V0ZmlsbHJ1bGV8aW1hZ2lja2RyYXdfc2V0Zm9udHxpbWFnaWNrZHJhd19zZXRmb250ZmFtaWx5fGltYWdpY2tkcmF3X3NldGZvbnRzaXplfGltYWdpY2tkcmF3X3NldGZvbnRzdHJldGNofGltYWdpY2tkcmF3X3NldGZvbnRzdHlsZXxpbWFnaWNrZHJhd19zZXRmb250d2VpZ2h0fGltYWdpY2tkcmF3X3NldGdyYXZpdHl8aW1hZ2lja2RyYXdfc2V0c3Ryb2tlYWxwaGF8aW1hZ2lja2RyYXdfc2V0c3Ryb2tlYW50aWFsaWFzfGltYWdpY2tkcmF3X3NldHN0cm9rZWNvbG9yfGltYWdpY2tkcmF3X3NldHN0cm9rZWRhc2hhcnJheXxpbWFnaWNrZHJhd19zZXRzdHJva2VkYXNob2Zmc2V0fGltYWdpY2tkcmF3X3NldHN0cm9rZWxpbmVjYXB8aW1hZ2lja2RyYXdfc2V0c3Ryb2tlbGluZWpvaW58aW1hZ2lja2RyYXdfc2V0c3Ryb2tlbWl0ZXJsaW1pdHxpbWFnaWNrZHJhd19zZXRzdHJva2VvcGFjaXR5fGltYWdpY2tkcmF3X3NldHN0cm9rZXBhdHRlcm51cmx8aW1hZ2lja2RyYXdfc2V0c3Ryb2tld2lkdGh8aW1hZ2lja2RyYXdfc2V0dGV4dGFsaWdubWVudHxpbWFnaWNrZHJhd19zZXR0ZXh0YW50aWFsaWFzfGltYWdpY2tkcmF3X3NldHRleHRkZWNvcmF0aW9ufGltYWdpY2tkcmF3X3NldHRleHRlbmNvZGluZ3xpbWFnaWNrZHJhd19zZXR0ZXh0dW5kZXJjb2xvcnxpbWFnaWNrZHJhd19zZXR2ZWN0b3JncmFwaGljc3xpbWFnaWNrZHJhd19zZXR2aWV3Ym94fGltYWdpY2tkcmF3X3NrZXd4fGltYWdpY2tkcmF3X3NrZXd5fGltYWdpY2tkcmF3X3RyYW5zbGF0ZXxpbWFnaWNrcGl4ZWx8aW1hZ2lja3BpeGVsX2NsZWFyfGltYWdpY2twaXhlbF9jb25zdHJ1Y3R8aW1hZ2lja3BpeGVsX2Rlc3Ryb3l8aW1hZ2lja3BpeGVsX2dldGNvbG9yfGltYWdpY2twaXhlbF9nZXRjb2xvcmFzc3RyaW5nfGltYWdpY2twaXhlbF9nZXRjb2xvcmNvdW50fGltYWdpY2twaXhlbF9nZXRjb2xvcnZhbHVlfGltYWdpY2twaXhlbF9nZXRoc2x8aW1hZ2lja3BpeGVsX2lzc2ltaWxhcnxpbWFnaWNrcGl4ZWxfc2V0Y29sb3J8aW1hZ2lja3BpeGVsX3NldGNvbG9ydmFsdWV8aW1hZ2lja3BpeGVsX3NldGhzbHxpbWFnaWNrcGl4ZWxpdGVyYXRvcnxpbWFnaWNrcGl4ZWxpdGVyYXRvcl9jbGVhcnxpbWFnaWNrcGl4ZWxpdGVyYXRvcl9jb25zdHJ1Y3R8aW1hZ2lja3BpeGVsaXRlcmF0b3JfZGVzdHJveXxpbWFnaWNrcGl4ZWxpdGVyYXRvcl9nZXRjdXJyZW50aXRlcmF0b3Jyb3d8aW1hZ2lja3BpeGVsaXRlcmF0b3JfZ2V0aXRlcmF0b3Jyb3d8aW1hZ2lja3BpeGVsaXRlcmF0b3JfZ2V0bmV4dGl0ZXJhdG9ycm93fGltYWdpY2twaXhlbGl0ZXJhdG9yX2dldHByZXZpb3VzaXRlcmF0b3Jyb3d8aW1hZ2lja3BpeGVsaXRlcmF0b3JfbmV3cGl4ZWxpdGVyYXRvcnxpbWFnaWNrcGl4ZWxpdGVyYXRvcl9uZXdwaXhlbHJlZ2lvbml0ZXJhdG9yfGltYWdpY2twaXhlbGl0ZXJhdG9yX3Jlc2V0aXRlcmF0b3J8aW1hZ2lja3BpeGVsaXRlcmF0b3Jfc2V0aXRlcmF0b3JmaXJzdHJvd3xpbWFnaWNrcGl4ZWxpdGVyYXRvcl9zZXRpdGVyYXRvcmxhc3Ryb3d8aW1hZ2lja3BpeGVsaXRlcmF0b3Jfc2V0aXRlcmF0b3Jyb3d8aW1hZ2lja3BpeGVsaXRlcmF0b3Jfc3luY2l0ZXJhdG9yfGltYXBfOGJpdHxpbWFwX2FsZXJ0c3xpbWFwX2FwcGVuZHxpbWFwX2Jhc2U2NHxpbWFwX2JpbmFyeXxpbWFwX2JvZHl8aW1hcF9ib2R5c3RydWN0fGltYXBfY2hlY2t8aW1hcF9jbGVhcmZsYWdfZnVsbHxpbWFwX2Nsb3NlfGltYXBfY3JlYXRlfGltYXBfY3JlYXRlbWFpbGJveHxpbWFwX2RlbGV0ZXxpbWFwX2RlbGV0ZW1haWxib3h8aW1hcF9lcnJvcnN8aW1hcF9leHB1bmdlfGltYXBfZmV0Y2hfb3ZlcnZpZXd8aW1hcF9mZXRjaGJvZHl8aW1hcF9mZXRjaGhlYWRlcnxpbWFwX2ZldGNobWltZXxpbWFwX2ZldGNoc3RydWN0dXJlfGltYXBfZmV0Y2h0ZXh0fGltYXBfZ2N8aW1hcF9nZXRfcXVvdGF8aW1hcF9nZXRfcXVvdGFyb290fGltYXBfZ2V0YWNsfGltYXBfZ2V0bWFpbGJveGVzfGltYXBfZ2V0c3Vic2NyaWJlZHxpbWFwX2hlYWRlcnxpbWFwX2hlYWRlcmluZm98aW1hcF9oZWFkZXJzfGltYXBfbGFzdF9lcnJvcnxpbWFwX2xpc3R8aW1hcF9saXN0bWFpbGJveHxpbWFwX2xpc3RzY2FufGltYXBfbGlzdHN1YnNjcmliZWR8aW1hcF9sc3VifGltYXBfbWFpbHxpbWFwX21haWxfY29tcG9zZXxpbWFwX21haWxfY29weXxpbWFwX21haWxfbW92ZXxpbWFwX21haWxib3htc2dpbmZvfGltYXBfbWltZV9oZWFkZXJfZGVjb2RlfGltYXBfbXNnbm98aW1hcF9udW1fbXNnfGltYXBfbnVtX3JlY2VudHxpbWFwX29wZW58aW1hcF9waW5nfGltYXBfcXByaW50fGltYXBfcmVuYW1lfGltYXBfcmVuYW1lbWFpbGJveHxpbWFwX3Jlb3BlbnxpbWFwX3JmYzgyMl9wYXJzZV9hZHJsaXN0fGltYXBfcmZjODIyX3BhcnNlX2hlYWRlcnN8aW1hcF9yZmM4MjJfd3JpdGVfYWRkcmVzc3xpbWFwX3NhdmVib2R5fGltYXBfc2NhbnxpbWFwX3NjYW5tYWlsYm94fGltYXBfc2VhcmNofGltYXBfc2V0X3F1b3RhfGltYXBfc2V0YWNsfGltYXBfc2V0ZmxhZ19mdWxsfGltYXBfc29ydHxpbWFwX3N0YXR1c3xpbWFwX3N1YnNjcmliZXxpbWFwX3RocmVhZHxpbWFwX3RpbWVvdXR8aW1hcF91aWR8aW1hcF91bmRlbGV0ZXxpbWFwX3Vuc3Vic2NyaWJlfGltYXBfdXRmN19kZWNvZGV8aW1hcF91dGY3X2VuY29kZXxpbWFwX3V0Zjh8aW1wbGVtZW50c2ludGVyZmFjZXxpbXBsb2RlfGltcG9ydF9yZXF1ZXN0X3ZhcmlhYmxlc3xpbl9hcnJheXxpbmNsdWRlfGluY2x1ZGVfb25jZXxpbmNsdWVkX2dldF9kYXRhfGluZXRfbnRvcHxpbmV0X3B0b258aW5maW5pdGVpdGVyYXRvcnxpbmdyZXNfYXV0b2NvbW1pdHxpbmdyZXNfYXV0b2NvbW1pdF9zdGF0ZXxpbmdyZXNfY2hhcnNldHxpbmdyZXNfY2xvc2V8aW5ncmVzX2NvbW1pdHxpbmdyZXNfY29ubmVjdHxpbmdyZXNfY3Vyc29yfGluZ3Jlc19lcnJub3xpbmdyZXNfZXJyb3J8aW5ncmVzX2VycnNxbHN0YXRlfGluZ3Jlc19lc2NhcGVfc3RyaW5nfGluZ3Jlc19leGVjdXRlfGluZ3Jlc19mZXRjaF9hcnJheXxpbmdyZXNfZmV0Y2hfYXNzb2N8aW5ncmVzX2ZldGNoX29iamVjdHxpbmdyZXNfZmV0Y2hfcHJvY19yZXR1cm58aW5ncmVzX2ZldGNoX3Jvd3xpbmdyZXNfZmllbGRfbGVuZ3RofGluZ3Jlc19maWVsZF9uYW1lfGluZ3Jlc19maWVsZF9udWxsYWJsZXxpbmdyZXNfZmllbGRfcHJlY2lzaW9ufGluZ3Jlc19maWVsZF9zY2FsZXxpbmdyZXNfZmllbGRfdHlwZXxpbmdyZXNfZnJlZV9yZXN1bHR8aW5ncmVzX25leHRfZXJyb3J8aW5ncmVzX251bV9maWVsZHN8aW5ncmVzX251bV9yb3dzfGluZ3Jlc19wY29ubmVjdHxpbmdyZXNfcHJlcGFyZXxpbmdyZXNfcXVlcnl8aW5ncmVzX3Jlc3VsdF9zZWVrfGluZ3Jlc19yb2xsYmFja3xpbmdyZXNfc2V0X2Vudmlyb25tZW50fGluZ3Jlc191bmJ1ZmZlcmVkX3F1ZXJ5fGluaV9hbHRlcnxpbmlfZ2V0fGluaV9nZXRfYWxsfGluaV9yZXN0b3JlfGluaV9zZXR8aW5uYW1lc3BhY2V8aW5vdGlmeV9hZGRfd2F0Y2h8aW5vdGlmeV9pbml0fGlub3RpZnlfcXVldWVfbGVufGlub3RpZnlfcmVhZHxpbm90aWZ5X3JtX3dhdGNofGludGVyZmFjZV9leGlzdHN8aW50bF9lcnJvcl9uYW1lfGludGxfZ2V0X2Vycm9yX2NvZGV8aW50bF9nZXRfZXJyb3JfbWVzc2FnZXxpbnRsX2lzX2ZhaWx1cmV8aW50bGRhdGVmb3JtYXR0ZXJ8aW50dmFsfGludmFsaWRhcmd1bWVudGV4Y2VwdGlvbnxpbnZva2V8aW52b2tlYXJnc3xpcDJsb25nfGlwdGNlbWJlZHxpcHRjcGFyc2V8aXNfYXxpc19hcnJheXxpc19ib29sfGlzX2NhbGxhYmxlfGlzX2Rpcnxpc19kb3VibGV8aXNfZXhlY3V0YWJsZXxpc19maWxlfGlzX2Zpbml0ZXxpc19mbG9hdHxpc19pbmZpbml0ZXxpc19pbnR8aXNfaW50ZWdlcnxpc19saW5rfGlzX2xvbmd8aXNfbmFufGlzX251bGx8aXNfbnVtZXJpY3xpc19vYmplY3R8aXNfcmVhZGFibGV8aXNfcmVhbHxpc19yZXNvdXJjZXxpc19zY2FsYXJ8aXNfc29hcF9mYXVsdHxpc19zdHJpbmd8aXNfc3ViY2xhc3Nfb2Z8aXNfdXBsb2FkZWRfZmlsZXxpc193cml0YWJsZXxpc193cml0ZWFibGV8aXNhYnN0cmFjdHxpc2Nsb25lYWJsZXxpc2Rpc2FibGVkfGlzZmluYWx8aXNpbnN0YW5jZXxpc2luc3RhbnRpYWJsZXxpc2ludGVyZmFjZXxpc2ludGVybmFsfGlzaXRlcmF0ZWFibGV8aXNzZXR8aXNzdWJjbGFzc29mfGlzdXNlcmRlZmluZWR8aXRlcmF0b3J8aXRlcmF0b3JfYXBwbHl8aXRlcmF0b3JfY291bnR8aXRlcmF0b3JfdG9fYXJyYXl8aXRlcmF0b3JhZ2dyZWdhdGV8aXRlcmF0b3JpdGVyYXRvcnxqYXZhX2xhc3RfZXhjZXB0aW9uX2NsZWFyfGphdmFfbGFzdF9leGNlcHRpb25fZ2V0fGpkZGF5b2Z3ZWVrfGpkbW9udGhuYW1lfGpkdG9mcmVuY2h8amR0b2dyZWdvcmlhbnxqZHRvamV3aXNofGpkdG9qdWxpYW58amR0b3VuaXh8amV3aXNodG9qZHxqb2lufGpwZWcyd2JtcHxqc29uX2RlY29kZXxqc29uX2VuY29kZXxqc29uX2xhc3RfZXJyb3J8anNvbnNlcmlhbGl6YWJsZXxqdWR5fGp1ZHlfdHlwZXxqdWR5X3ZlcnNpb258anVsaWFudG9qZHxrYWRtNV9jaHBhc3NfcHJpbmNpcGFsfGthZG01X2NyZWF0ZV9wcmluY2lwYWx8a2FkbTVfZGVsZXRlX3ByaW5jaXBhbHxrYWRtNV9kZXN0cm95fGthZG01X2ZsdXNofGthZG01X2dldF9wb2xpY2llc3xrYWRtNV9nZXRfcHJpbmNpcGFsfGthZG01X2dldF9wcmluY2lwYWxzfGthZG01X2luaXRfd2l0aF9wYXNzd29yZHxrYWRtNV9tb2RpZnlfcHJpbmNpcGFsfGtleXxrcnNvcnR8a3NvcnR8bGNmaXJzdHxsY2dfdmFsdWV8bGNoZ3JwfGxjaG93bnxsZGFwXzg4NTlfdG9fdDYxfGxkYXBfYWRkfGxkYXBfYmluZHxsZGFwX2Nsb3NlfGxkYXBfY29tcGFyZXxsZGFwX2Nvbm5lY3R8bGRhcF9jb3VudF9lbnRyaWVzfGxkYXBfZGVsZXRlfGxkYXBfZG4ydWZufGxkYXBfZXJyMnN0cnxsZGFwX2Vycm5vfGxkYXBfZXJyb3J8bGRhcF9leHBsb2RlX2RufGxkYXBfZmlyc3RfYXR0cmlidXRlfGxkYXBfZmlyc3RfZW50cnl8bGRhcF9maXJzdF9yZWZlcmVuY2V8bGRhcF9mcmVlX3Jlc3VsdHxsZGFwX2dldF9hdHRyaWJ1dGVzfGxkYXBfZ2V0X2RufGxkYXBfZ2V0X2VudHJpZXN8bGRhcF9nZXRfb3B0aW9ufGxkYXBfZ2V0X3ZhbHVlc3xsZGFwX2dldF92YWx1ZXNfbGVufGxkYXBfbGlzdHxsZGFwX21vZF9hZGR8bGRhcF9tb2RfZGVsfGxkYXBfbW9kX3JlcGxhY2V8bGRhcF9tb2RpZnl8bGRhcF9uZXh0X2F0dHJpYnV0ZXxsZGFwX25leHRfZW50cnl8bGRhcF9uZXh0X3JlZmVyZW5jZXxsZGFwX3BhcnNlX3JlZmVyZW5jZXxsZGFwX3BhcnNlX3Jlc3VsdHxsZGFwX3JlYWR8bGRhcF9yZW5hbWV8bGRhcF9zYXNsX2JpbmR8bGRhcF9zZWFyY2h8bGRhcF9zZXRfb3B0aW9ufGxkYXBfc2V0X3JlYmluZF9wcm9jfGxkYXBfc29ydHxsZGFwX3N0YXJ0X3Rsc3xsZGFwX3Q2MV90b184ODU5fGxkYXBfdW5iaW5kfGxlbmd0aGV4Y2VwdGlvbnxsZXZlbnNodGVpbnxsaWJ4bWxfY2xlYXJfZXJyb3JzfGxpYnhtbF9kaXNhYmxlX2VudGl0eV9sb2FkZXJ8bGlieG1sX2dldF9lcnJvcnN8bGlieG1sX2dldF9sYXN0X2Vycm9yfGxpYnhtbF9zZXRfc3RyZWFtc19jb250ZXh0fGxpYnhtbF91c2VfaW50ZXJuYWxfZXJyb3JzfGxpYnhtbGVycm9yfGxpbWl0aXRlcmF0b3J8bGlua3xsaW5raW5mb3xsaXN0fGxvY2FsZXxsb2NhbGVjb252fGxvY2FsdGltZXxsb2d8bG9nMTB8bG9nMXB8bG9naWNleGNlcHRpb258bG9uZzJpcHxsc3RhdHxsdHJpbXxsemZfY29tcHJlc3N8bHpmX2RlY29tcHJlc3N8bHpmX29wdGltaXplZF9mb3J8bV9jaGVja3N0YXR1c3xtX2NvbXBsZXRlYXV0aG9yaXphdGlvbnN8bV9jb25uZWN0fG1fY29ubmVjdGlvbmVycm9yfG1fZGVsZXRldHJhbnN8bV9kZXN0cm95Y29ubnxtX2Rlc3Ryb3llbmdpbmV8bV9nZXRjZWxsfG1fZ2V0Y2VsbGJ5bnVtfG1fZ2V0Y29tbWFkZWxpbWl0ZWR8bV9nZXRoZWFkZXJ8bV9pbml0Y29ubnxtX2luaXRlbmdpbmV8bV9pc2NvbW1hZGVsaW1pdGVkfG1fbWF4Y29ubnRpbWVvdXR8bV9tb25pdG9yfG1fbnVtY29sdW1uc3xtX251bXJvd3N8bV9wYXJzZWNvbW1hZGVsaW1pdGVkfG1fcmVzcG9uc2VrZXlzfG1fcmVzcG9uc2VwYXJhbXxtX3JldHVybnN0YXR1c3xtX3NldGJsb2NraW5nfG1fc2V0ZHJvcGZpbGV8bV9zZXRpcHxtX3NldHNzbHxtX3NldHNzbF9jYWZpbGV8bV9zZXRzc2xfZmlsZXN8bV9zZXR0aW1lb3V0fG1fc3NsY2VydF9nZW5faGFzaHxtX3RyYW5zYWN0aW9uc3NlbnR8bV90cmFuc2lucXVldWV8bV90cmFuc2tleXZhbHxtX3RyYW5zbmV3fG1fdHJhbnNzZW5kfG1fdXdhaXR8bV92YWxpZGF0ZWlkZW50aWZpZXJ8bV92ZXJpZnljb25uZWN0aW9ufG1fdmVyaWZ5c3NsY2VydHxtYWdpY19xdW90ZXNfcnVudGltZXxtYWlsfG1haWxwYXJzZV9kZXRlcm1pbmVfYmVzdF94ZmVyX2VuY29kaW5nfG1haWxwYXJzZV9tc2dfY3JlYXRlfG1haWxwYXJzZV9tc2dfZXh0cmFjdF9wYXJ0fG1haWxwYXJzZV9tc2dfZXh0cmFjdF9wYXJ0X2ZpbGV8bWFpbHBhcnNlX21zZ19leHRyYWN0X3dob2xlX3BhcnRfZmlsZXxtYWlscGFyc2VfbXNnX2ZyZWV8bWFpbHBhcnNlX21zZ19nZXRfcGFydHxtYWlscGFyc2VfbXNnX2dldF9wYXJ0X2RhdGF8bWFpbHBhcnNlX21zZ19nZXRfc3RydWN0dXJlfG1haWxwYXJzZV9tc2dfcGFyc2V8bWFpbHBhcnNlX21zZ19wYXJzZV9maWxlfG1haWxwYXJzZV9yZmM4MjJfcGFyc2VfYWRkcmVzc2VzfG1haWxwYXJzZV9zdHJlYW1fZW5jb2RlfG1haWxwYXJzZV91dWRlY29kZV9hbGx8bWFpbnxtYXh8bWF4ZGJfYWZmZWN0ZWRfcm93c3xtYXhkYl9hdXRvY29tbWl0fG1heGRiX2JpbmRfcGFyYW18bWF4ZGJfYmluZF9yZXN1bHR8bWF4ZGJfY2hhbmdlX3VzZXJ8bWF4ZGJfY2hhcmFjdGVyX3NldF9uYW1lfG1heGRiX2NsaWVudF9lbmNvZGluZ3xtYXhkYl9jbG9zZXxtYXhkYl9jbG9zZV9sb25nX2RhdGF8bWF4ZGJfY29tbWl0fG1heGRiX2Nvbm5lY3R8bWF4ZGJfY29ubmVjdF9lcnJub3xtYXhkYl9jb25uZWN0X2Vycm9yfG1heGRiX2RhdGFfc2Vla3xtYXhkYl9kZWJ1Z3xtYXhkYl9kaXNhYmxlX3JlYWRzX2Zyb21fbWFzdGVyfG1heGRiX2Rpc2FibGVfcnBsX3BhcnNlfG1heGRiX2R1bXBfZGVidWdfaW5mb3xtYXhkYl9lbWJlZGRlZF9jb25uZWN0fG1heGRiX2VuYWJsZV9yZWFkc19mcm9tX21hc3RlcnxtYXhkYl9lbmFibGVfcnBsX3BhcnNlfG1heGRiX2Vycm5vfG1heGRiX2Vycm9yfG1heGRiX2VzY2FwZV9zdHJpbmd8bWF4ZGJfZXhlY3V0ZXxtYXhkYl9mZXRjaHxtYXhkYl9mZXRjaF9hcnJheXxtYXhkYl9mZXRjaF9hc3NvY3xtYXhkYl9mZXRjaF9maWVsZHxtYXhkYl9mZXRjaF9maWVsZF9kaXJlY3R8bWF4ZGJfZmV0Y2hfZmllbGRzfG1heGRiX2ZldGNoX2xlbmd0aHN8bWF4ZGJfZmV0Y2hfb2JqZWN0fG1heGRiX2ZldGNoX3Jvd3xtYXhkYl9maWVsZF9jb3VudHxtYXhkYl9maWVsZF9zZWVrfG1heGRiX2ZpZWxkX3RlbGx8bWF4ZGJfZnJlZV9yZXN1bHR8bWF4ZGJfZ2V0X2NsaWVudF9pbmZvfG1heGRiX2dldF9jbGllbnRfdmVyc2lvbnxtYXhkYl9nZXRfaG9zdF9pbmZvfG1heGRiX2dldF9tZXRhZGF0YXxtYXhkYl9nZXRfcHJvdG9faW5mb3xtYXhkYl9nZXRfc2VydmVyX2luZm98bWF4ZGJfZ2V0X3NlcnZlcl92ZXJzaW9ufG1heGRiX2luZm98bWF4ZGJfaW5pdHxtYXhkYl9pbnNlcnRfaWR8bWF4ZGJfa2lsbHxtYXhkYl9tYXN0ZXJfcXVlcnl8bWF4ZGJfbW9yZV9yZXN1bHRzfG1heGRiX211bHRpX3F1ZXJ5fG1heGRiX25leHRfcmVzdWx0fG1heGRiX251bV9maWVsZHN8bWF4ZGJfbnVtX3Jvd3N8bWF4ZGJfb3B0aW9uc3xtYXhkYl9wYXJhbV9jb3VudHxtYXhkYl9waW5nfG1heGRiX3ByZXBhcmV8bWF4ZGJfcXVlcnl8bWF4ZGJfcmVhbF9jb25uZWN0fG1heGRiX3JlYWxfZXNjYXBlX3N0cmluZ3xtYXhkYl9yZWFsX3F1ZXJ5fG1heGRiX3JlcG9ydHxtYXhkYl9yb2xsYmFja3xtYXhkYl9ycGxfcGFyc2VfZW5hYmxlZHxtYXhkYl9ycGxfcHJvYmV8bWF4ZGJfcnBsX3F1ZXJ5X3R5cGV8bWF4ZGJfc2VsZWN0X2RifG1heGRiX3NlbmRfbG9uZ19kYXRhfG1heGRiX3NlbmRfcXVlcnl8bWF4ZGJfc2VydmVyX2VuZHxtYXhkYl9zZXJ2ZXJfaW5pdHxtYXhkYl9zZXRfb3B0fG1heGRiX3NxbHN0YXRlfG1heGRiX3NzbF9zZXR8bWF4ZGJfc3RhdHxtYXhkYl9zdG10X2FmZmVjdGVkX3Jvd3N8bWF4ZGJfc3RtdF9iaW5kX3BhcmFtfG1heGRiX3N0bXRfYmluZF9yZXN1bHR8bWF4ZGJfc3RtdF9jbG9zZXxtYXhkYl9zdG10X2Nsb3NlX2xvbmdfZGF0YXxtYXhkYl9zdG10X2RhdGFfc2Vla3xtYXhkYl9zdG10X2Vycm5vfG1heGRiX3N0bXRfZXJyb3J8bWF4ZGJfc3RtdF9leGVjdXRlfG1heGRiX3N0bXRfZmV0Y2h8bWF4ZGJfc3RtdF9mcmVlX3Jlc3VsdHxtYXhkYl9zdG10X2luaXR8bWF4ZGJfc3RtdF9udW1fcm93c3xtYXhkYl9zdG10X3BhcmFtX2NvdW50fG1heGRiX3N0bXRfcHJlcGFyZXxtYXhkYl9zdG10X3Jlc2V0fG1heGRiX3N0bXRfcmVzdWx0X21ldGFkYXRhfG1heGRiX3N0bXRfc2VuZF9sb25nX2RhdGF8bWF4ZGJfc3RtdF9zcWxzdGF0ZXxtYXhkYl9zdG10X3N0b3JlX3Jlc3VsdHxtYXhkYl9zdG9yZV9yZXN1bHR8bWF4ZGJfdGhyZWFkX2lkfG1heGRiX3RocmVhZF9zYWZlfG1heGRiX3VzZV9yZXN1bHR8bWF4ZGJfd2FybmluZ19jb3VudHxtYl9jaGVja19lbmNvZGluZ3xtYl9jb252ZXJ0X2Nhc2V8bWJfY29udmVydF9lbmNvZGluZ3xtYl9jb252ZXJ0X2thbmF8bWJfY29udmVydF92YXJpYWJsZXN8bWJfZGVjb2RlX21pbWVoZWFkZXJ8bWJfZGVjb2RlX251bWVyaWNlbnRpdHl8bWJfZGV0ZWN0X2VuY29kaW5nfG1iX2RldGVjdF9vcmRlcnxtYl9lbmNvZGVfbWltZWhlYWRlcnxtYl9lbmNvZGVfbnVtZXJpY2VudGl0eXxtYl9lbmNvZGluZ19hbGlhc2VzfG1iX2VyZWd8bWJfZXJlZ19tYXRjaHxtYl9lcmVnX3JlcGxhY2V8bWJfZXJlZ19zZWFyY2h8bWJfZXJlZ19zZWFyY2hfZ2V0cG9zfG1iX2VyZWdfc2VhcmNoX2dldHJlZ3N8bWJfZXJlZ19zZWFyY2hfaW5pdHxtYl9lcmVnX3NlYXJjaF9wb3N8bWJfZXJlZ19zZWFyY2hfcmVnc3xtYl9lcmVnX3NlYXJjaF9zZXRwb3N8bWJfZXJlZ2l8bWJfZXJlZ2lfcmVwbGFjZXxtYl9nZXRfaW5mb3xtYl9odHRwX2lucHV0fG1iX2h0dHBfb3V0cHV0fG1iX2ludGVybmFsX2VuY29kaW5nfG1iX2xhbmd1YWdlfG1iX2xpc3RfZW5jb2RpbmdzfG1iX291dHB1dF9oYW5kbGVyfG1iX3BhcnNlX3N0cnxtYl9wcmVmZXJyZWRfbWltZV9uYW1lfG1iX3JlZ2V4X2VuY29kaW5nfG1iX3JlZ2V4X3NldF9vcHRpb25zfG1iX3NlbmRfbWFpbHxtYl9zcGxpdHxtYl9zdHJjdXR8bWJfc3RyaW13aWR0aHxtYl9zdHJpcG9zfG1iX3N0cmlzdHJ8bWJfc3RybGVufG1iX3N0cnBvc3xtYl9zdHJyY2hyfG1iX3N0cnJpY2hyfG1iX3N0cnJpcG9zfG1iX3N0cnJwb3N8bWJfc3Ryc3RyfG1iX3N0cnRvbG93ZXJ8bWJfc3RydG91cHBlcnxtYl9zdHJ3aWR0aHxtYl9zdWJzdGl0dXRlX2NoYXJhY3RlcnxtYl9zdWJzdHJ8bWJfc3Vic3RyX2NvdW50fG1jcnlwdF9jYmN8bWNyeXB0X2NmYnxtY3J5cHRfY3JlYXRlX2l2fG1jcnlwdF9kZWNyeXB0fG1jcnlwdF9lY2J8bWNyeXB0X2VuY19nZXRfYWxnb3JpdGhtc19uYW1lfG1jcnlwdF9lbmNfZ2V0X2Jsb2NrX3NpemV8bWNyeXB0X2VuY19nZXRfaXZfc2l6ZXxtY3J5cHRfZW5jX2dldF9rZXlfc2l6ZXxtY3J5cHRfZW5jX2dldF9tb2Rlc19uYW1lfG1jcnlwdF9lbmNfZ2V0X3N1cHBvcnRlZF9rZXlfc2l6ZXN8bWNyeXB0X2VuY19pc19ibG9ja19hbGdvcml0aG18bWNyeXB0X2VuY19pc19ibG9ja19hbGdvcml0aG1fbW9kZXxtY3J5cHRfZW5jX2lzX2Jsb2NrX21vZGV8bWNyeXB0X2VuY19zZWxmX3Rlc3R8bWNyeXB0X2VuY3J5cHR8bWNyeXB0X2dlbmVyaWN8bWNyeXB0X2dlbmVyaWNfZGVpbml0fG1jcnlwdF9nZW5lcmljX2VuZHxtY3J5cHRfZ2VuZXJpY19pbml0fG1jcnlwdF9nZXRfYmxvY2tfc2l6ZXxtY3J5cHRfZ2V0X2NpcGhlcl9uYW1lfG1jcnlwdF9nZXRfaXZfc2l6ZXxtY3J5cHRfZ2V0X2tleV9zaXplfG1jcnlwdF9saXN0X2FsZ29yaXRobXN8bWNyeXB0X2xpc3RfbW9kZXN8bWNyeXB0X21vZHVsZV9jbG9zZXxtY3J5cHRfbW9kdWxlX2dldF9hbGdvX2Jsb2NrX3NpemV8bWNyeXB0X21vZHVsZV9nZXRfYWxnb19rZXlfc2l6ZXxtY3J5cHRfbW9kdWxlX2dldF9zdXBwb3J0ZWRfa2V5X3NpemVzfG1jcnlwdF9tb2R1bGVfaXNfYmxvY2tfYWxnb3JpdGhtfG1jcnlwdF9tb2R1bGVfaXNfYmxvY2tfYWxnb3JpdGhtX21vZGV8bWNyeXB0X21vZHVsZV9pc19ibG9ja19tb2RlfG1jcnlwdF9tb2R1bGVfb3BlbnxtY3J5cHRfbW9kdWxlX3NlbGZfdGVzdHxtY3J5cHRfb2ZifG1kNXxtZDVfZmlsZXxtZGVjcnlwdF9nZW5lcmljfG1lbWNhY2hlfG1lbWNhY2hlX2RlYnVnfG1lbWNhY2hlZHxtZW1vcnlfZ2V0X3BlYWtfdXNhZ2V8bWVtb3J5X2dldF91c2FnZXxtZXNzYWdlZm9ybWF0dGVyfG1ldGFwaG9uZXxtZXRob2RfZXhpc3RzfG1oYXNofG1oYXNoX2NvdW50fG1oYXNoX2dldF9ibG9ja19zaXplfG1oYXNoX2dldF9oYXNoX25hbWV8bWhhc2hfa2V5Z2VuX3Mya3xtaWNyb3RpbWV8bWltZV9jb250ZW50X3R5cGV8bWlufG1pbmdfa2V5cHJlc3N8bWluZ19zZXRjdWJpY3RocmVzaG9sZHxtaW5nX3NldHNjYWxlfG1pbmdfc2V0c3dmY29tcHJlc3Npb258bWluZ191c2Vjb25zdGFudHN8bWluZ191c2Vzd2Z2ZXJzaW9ufG1rZGlyfG1rdGltZXxtb25leV9mb3JtYXR8bW9uZ298bW9uZ29iaW5kYXRhfG1vbmdvY29kZXxtb25nb2NvbGxlY3Rpb258bW9uZ29jb25uZWN0aW9uZXhjZXB0aW9ufG1vbmdvY3Vyc29yfG1vbmdvY3Vyc29yZXhjZXB0aW9ufG1vbmdvY3Vyc29ydGltZW91dGV4Y2VwdGlvbnxtb25nb2RhdGV8bW9uZ29kYnxtb25nb2RicmVmfG1vbmdvZXhjZXB0aW9ufG1vbmdvZ3JpZGZzfG1vbmdvZ3JpZGZzY3Vyc29yfG1vbmdvZ3JpZGZzZXhjZXB0aW9ufG1vbmdvZ3JpZGZzZmlsZXxtb25nb2lkfG1vbmdvaW50MzJ8bW9uZ29pbnQ2NHxtb25nb21heGtleXxtb25nb21pbmtleXxtb25nb3JlZ2V4fG1vbmdvdGltZXN0YW1wfG1vdmVfdXBsb2FkZWRfZmlsZXxtcGVnZmlsZXxtcXNlcmllc19iYWNrfG1xc2VyaWVzX2JlZ2lufG1xc2VyaWVzX2Nsb3NlfG1xc2VyaWVzX2NtaXR8bXFzZXJpZXNfY29ubnxtcXNlcmllc19jb25ueHxtcXNlcmllc19kaXNjfG1xc2VyaWVzX2dldHxtcXNlcmllc19pbnF8bXFzZXJpZXNfb3BlbnxtcXNlcmllc19wdXR8bXFzZXJpZXNfcHV0MXxtcXNlcmllc19zZXR8bXFzZXJpZXNfc3RyZXJyb3J8bXNlc3Npb25fY29ubmVjdHxtc2Vzc2lvbl9jb3VudHxtc2Vzc2lvbl9jcmVhdGV8bXNlc3Npb25fZGVzdHJveXxtc2Vzc2lvbl9kaXNjb25uZWN0fG1zZXNzaW9uX2ZpbmR8bXNlc3Npb25fZ2V0fG1zZXNzaW9uX2dldF9hcnJheXxtc2Vzc2lvbl9nZXRfZGF0YXxtc2Vzc2lvbl9pbmN8bXNlc3Npb25fbGlzdHxtc2Vzc2lvbl9saXN0dmFyfG1zZXNzaW9uX2xvY2t8bXNlc3Npb25fcGx1Z2lufG1zZXNzaW9uX3JhbmRzdHJ8bXNlc3Npb25fc2V0fG1zZXNzaW9uX3NldF9hcnJheXxtc2Vzc2lvbl9zZXRfZGF0YXxtc2Vzc2lvbl90aW1lb3V0fG1zZXNzaW9uX3VuaXF8bXNlc3Npb25fdW5sb2NrfG1zZ19nZXRfcXVldWV8bXNnX3F1ZXVlX2V4aXN0c3xtc2dfcmVjZWl2ZXxtc2dfcmVtb3ZlX3F1ZXVlfG1zZ19zZW5kfG1zZ19zZXRfcXVldWV8bXNnX3N0YXRfcXVldWV8bXNxbHxtc3FsX2FmZmVjdGVkX3Jvd3N8bXNxbF9jbG9zZXxtc3FsX2Nvbm5lY3R8bXNxbF9jcmVhdGVfZGJ8bXNxbF9jcmVhdGVkYnxtc3FsX2RhdGFfc2Vla3xtc3FsX2RiX3F1ZXJ5fG1zcWxfZGJuYW1lfG1zcWxfZHJvcF9kYnxtc3FsX2Vycm9yfG1zcWxfZmV0Y2hfYXJyYXl8bXNxbF9mZXRjaF9maWVsZHxtc3FsX2ZldGNoX29iamVjdHxtc3FsX2ZldGNoX3Jvd3xtc3FsX2ZpZWxkX2ZsYWdzfG1zcWxfZmllbGRfbGVufG1zcWxfZmllbGRfbmFtZXxtc3FsX2ZpZWxkX3NlZWt8bXNxbF9maWVsZF90YWJsZXxtc3FsX2ZpZWxkX3R5cGV8bXNxbF9maWVsZGZsYWdzfG1zcWxfZmllbGRsZW58bXNxbF9maWVsZG5hbWV8bXNxbF9maWVsZHRhYmxlfG1zcWxfZmllbGR0eXBlfG1zcWxfZnJlZV9yZXN1bHR8bXNxbF9saXN0X2Ric3xtc3FsX2xpc3RfZmllbGRzfG1zcWxfbGlzdF90YWJsZXN8bXNxbF9udW1fZmllbGRzfG1zcWxfbnVtX3Jvd3N8bXNxbF9udW1maWVsZHN8bXNxbF9udW1yb3dzfG1zcWxfcGNvbm5lY3R8bXNxbF9xdWVyeXxtc3FsX3JlZ2Nhc2V8bXNxbF9yZXN1bHR8bXNxbF9zZWxlY3RfZGJ8bXNxbF90YWJsZW5hbWV8bXNzcWxfYmluZHxtc3NxbF9jbG9zZXxtc3NxbF9jb25uZWN0fG1zc3FsX2RhdGFfc2Vla3xtc3NxbF9leGVjdXRlfG1zc3FsX2ZldGNoX2FycmF5fG1zc3FsX2ZldGNoX2Fzc29jfG1zc3FsX2ZldGNoX2JhdGNofG1zc3FsX2ZldGNoX2ZpZWxkfG1zc3FsX2ZldGNoX29iamVjdHxtc3NxbF9mZXRjaF9yb3d8bXNzcWxfZmllbGRfbGVuZ3RofG1zc3FsX2ZpZWxkX25hbWV8bXNzcWxfZmllbGRfc2Vla3xtc3NxbF9maWVsZF90eXBlfG1zc3FsX2ZyZWVfcmVzdWx0fG1zc3FsX2ZyZWVfc3RhdGVtZW50fG1zc3FsX2dldF9sYXN0X21lc3NhZ2V8bXNzcWxfZ3VpZF9zdHJpbmd8bXNzcWxfaW5pdHxtc3NxbF9taW5fZXJyb3Jfc2V2ZXJpdHl8bXNzcWxfbWluX21lc3NhZ2Vfc2V2ZXJpdHl8bXNzcWxfbmV4dF9yZXN1bHR8bXNzcWxfbnVtX2ZpZWxkc3xtc3NxbF9udW1fcm93c3xtc3NxbF9wY29ubmVjdHxtc3NxbF9xdWVyeXxtc3NxbF9yZXN1bHR8bXNzcWxfcm93c19hZmZlY3RlZHxtc3NxbF9zZWxlY3RfZGJ8bXRfZ2V0cmFuZG1heHxtdF9yYW5kfG10X3NyYW5kfG11bHRpcGxlaXRlcmF0b3J8bXlzcWxfYWZmZWN0ZWRfcm93c3xteXNxbF9jbGllbnRfZW5jb2Rpbmd8bXlzcWxfY2xvc2V8bXlzcWxfY29ubmVjdHxteXNxbF9jcmVhdGVfZGJ8bXlzcWxfZGF0YV9zZWVrfG15c3FsX2RiX25hbWV8bXlzcWxfZGJfcXVlcnl8bXlzcWxfZHJvcF9kYnxteXNxbF9lcnJub3xteXNxbF9lcnJvcnxteXNxbF9lc2NhcGVfc3RyaW5nfG15c3FsX2ZldGNoX2FycmF5fG15c3FsX2ZldGNoX2Fzc29jfG15c3FsX2ZldGNoX2ZpZWxkfG15c3FsX2ZldGNoX2xlbmd0aHN8bXlzcWxfZmV0Y2hfb2JqZWN0fG15c3FsX2ZldGNoX3Jvd3xteXNxbF9maWVsZF9mbGFnc3xteXNxbF9maWVsZF9sZW58bXlzcWxfZmllbGRfbmFtZXxteXNxbF9maWVsZF9zZWVrfG15c3FsX2ZpZWxkX3RhYmxlfG15c3FsX2ZpZWxkX3R5cGV8bXlzcWxfZnJlZV9yZXN1bHR8bXlzcWxfZ2V0X2NsaWVudF9pbmZvfG15c3FsX2dldF9ob3N0X2luZm98bXlzcWxfZ2V0X3Byb3RvX2luZm98bXlzcWxfZ2V0X3NlcnZlcl9pbmZvfG15c3FsX2luZm98bXlzcWxfaW5zZXJ0X2lkfG15c3FsX2xpc3RfZGJzfG15c3FsX2xpc3RfZmllbGRzfG15c3FsX2xpc3RfcHJvY2Vzc2VzfG15c3FsX2xpc3RfdGFibGVzfG15c3FsX251bV9maWVsZHN8bXlzcWxfbnVtX3Jvd3N8bXlzcWxfcGNvbm5lY3R8bXlzcWxfcGluZ3xteXNxbF9xdWVyeXxteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmd8bXlzcWxfcmVzdWx0fG15c3FsX3NlbGVjdF9kYnxteXNxbF9zZXRfY2hhcnNldHxteXNxbF9zdGF0fG15c3FsX3RhYmxlbmFtZXxteXNxbF90aHJlYWRfaWR8bXlzcWxfdW5idWZmZXJlZF9xdWVyeXxteXNxbGl8bXlzcWxpX2JpbmRfcGFyYW18bXlzcWxpX2JpbmRfcmVzdWx0fG15c3FsaV9jbGllbnRfZW5jb2Rpbmd8bXlzcWxpX2Nvbm5lY3R8bXlzcWxpX2Rpc2FibGVfcmVhZHNfZnJvbV9tYXN0ZXJ8bXlzcWxpX2Rpc2FibGVfcnBsX3BhcnNlfG15c3FsaV9kcml2ZXJ8bXlzcWxpX2VuYWJsZV9yZWFkc19mcm9tX21hc3RlcnxteXNxbGlfZW5hYmxlX3JwbF9wYXJzZXxteXNxbGlfZXNjYXBlX3N0cmluZ3xteXNxbGlfZXhlY3V0ZXxteXNxbGlfZmV0Y2h8bXlzcWxpX2dldF9tZXRhZGF0YXxteXNxbGlfbWFzdGVyX3F1ZXJ5fG15c3FsaV9wYXJhbV9jb3VudHxteXNxbGlfcmVwb3J0fG15c3FsaV9yZXN1bHR8bXlzcWxpX3JwbF9wYXJzZV9lbmFibGVkfG15c3FsaV9ycGxfcHJvYmV8bXlzcWxpX3JwbF9xdWVyeV90eXBlfG15c3FsaV9zZW5kX2xvbmdfZGF0YXxteXNxbGlfc2VuZF9xdWVyeXxteXNxbGlfc2V0X29wdHxteXNxbGlfc2xhdmVfcXVlcnl8bXlzcWxpX3N0bXR8bXlzcWxpX3dhcm5pbmd8bXlzcWxuZF9tc19nZXRfc3RhdHN8bXlzcWxuZF9tc19xdWVyeV9pc19zZWxlY3R8bXlzcWxuZF9tc19zZXRfdXNlcl9waWNrX3NlcnZlcnxteXNxbG5kX3FjX2NoYW5nZV9oYW5kbGVyfG15c3FsbmRfcWNfY2xlYXJfY2FjaGV8bXlzcWxuZF9xY19nZXRfY2FjaGVfaW5mb3xteXNxbG5kX3FjX2dldF9jb3JlX3N0YXRzfG15c3FsbmRfcWNfZ2V0X2hhbmRsZXJ8bXlzcWxuZF9xY19nZXRfcXVlcnlfdHJhY2VfbG9nfG15c3FsbmRfcWNfc2V0X3VzZXJfaGFuZGxlcnN8bmF0Y2FzZXNvcnR8bmF0c29ydHxuY3Vyc2VzX2FkZGNofG5jdXJzZXNfYWRkY2huc3RyfG5jdXJzZXNfYWRkY2hzdHJ8bmN1cnNlc19hZGRuc3RyfG5jdXJzZXNfYWRkc3RyfG5jdXJzZXNfYXNzdW1lX2RlZmF1bHRfY29sb3JzfG5jdXJzZXNfYXR0cm9mZnxuY3Vyc2VzX2F0dHJvbnxuY3Vyc2VzX2F0dHJzZXR8bmN1cnNlc19iYXVkcmF0ZXxuY3Vyc2VzX2JlZXB8bmN1cnNlc19ia2dkfG5jdXJzZXNfYmtnZHNldHxuY3Vyc2VzX2JvcmRlcnxuY3Vyc2VzX2JvdHRvbV9wYW5lbHxuY3Vyc2VzX2Nhbl9jaGFuZ2VfY29sb3J8bmN1cnNlc19jYnJlYWt8bmN1cnNlc19jbGVhcnxuY3Vyc2VzX2NscnRvYm90fG5jdXJzZXNfY2xydG9lb2x8bmN1cnNlc19jb2xvcl9jb250ZW50fG5jdXJzZXNfY29sb3Jfc2V0fG5jdXJzZXNfY3Vyc19zZXR8bmN1cnNlc19kZWZfcHJvZ19tb2RlfG5jdXJzZXNfZGVmX3NoZWxsX21vZGV8bmN1cnNlc19kZWZpbmVfa2V5fG5jdXJzZXNfZGVsX3BhbmVsfG5jdXJzZXNfZGVsYXlfb3V0cHV0fG5jdXJzZXNfZGVsY2h8bmN1cnNlc19kZWxldGVsbnxuY3Vyc2VzX2RlbHdpbnxuY3Vyc2VzX2RvdXBkYXRlfG5jdXJzZXNfZWNob3xuY3Vyc2VzX2VjaG9jaGFyfG5jdXJzZXNfZW5kfG5jdXJzZXNfZXJhc2V8bmN1cnNlc19lcmFzZWNoYXJ8bmN1cnNlc19maWx0ZXJ8bmN1cnNlc19mbGFzaHxuY3Vyc2VzX2ZsdXNoaW5wfG5jdXJzZXNfZ2V0Y2h8bmN1cnNlc19nZXRtYXh5eHxuY3Vyc2VzX2dldG1vdXNlfG5jdXJzZXNfZ2V0eXh8bmN1cnNlc19oYWxmZGVsYXl8bmN1cnNlc19oYXNfY29sb3JzfG5jdXJzZXNfaGFzX2ljfG5jdXJzZXNfaGFzX2lsfG5jdXJzZXNfaGFzX2tleXxuY3Vyc2VzX2hpZGVfcGFuZWx8bmN1cnNlc19obGluZXxuY3Vyc2VzX2luY2h8bmN1cnNlc19pbml0fG5jdXJzZXNfaW5pdF9jb2xvcnxuY3Vyc2VzX2luaXRfcGFpcnxuY3Vyc2VzX2luc2NofG5jdXJzZXNfaW5zZGVsbG58bmN1cnNlc19pbnNlcnRsbnxuY3Vyc2VzX2luc3N0cnxuY3Vyc2VzX2luc3RyfG5jdXJzZXNfaXNlbmR3aW58bmN1cnNlc19rZXlva3xuY3Vyc2VzX2tleXBhZHxuY3Vyc2VzX2tpbGxjaGFyfG5jdXJzZXNfbG9uZ25hbWV8bmN1cnNlc19tZXRhfG5jdXJzZXNfbW91c2VfdHJhZm98bmN1cnNlc19tb3VzZWludGVydmFsfG5jdXJzZXNfbW91c2VtYXNrfG5jdXJzZXNfbW92ZXxuY3Vyc2VzX21vdmVfcGFuZWx8bmN1cnNlc19tdmFkZGNofG5jdXJzZXNfbXZhZGRjaG5zdHJ8bmN1cnNlc19tdmFkZGNoc3RyfG5jdXJzZXNfbXZhZGRuc3RyfG5jdXJzZXNfbXZhZGRzdHJ8bmN1cnNlc19tdmN1cnxuY3Vyc2VzX212ZGVsY2h8bmN1cnNlc19tdmdldGNofG5jdXJzZXNfbXZobGluZXxuY3Vyc2VzX212aW5jaHxuY3Vyc2VzX212dmxpbmV8bmN1cnNlc19tdndhZGRzdHJ8bmN1cnNlc19uYXBtc3xuY3Vyc2VzX25ld19wYW5lbHxuY3Vyc2VzX25ld3BhZHxuY3Vyc2VzX25ld3dpbnxuY3Vyc2VzX25sfG5jdXJzZXNfbm9jYnJlYWt8bmN1cnNlc19ub2VjaG98bmN1cnNlc19ub25sfG5jdXJzZXNfbm9xaWZsdXNofG5jdXJzZXNfbm9yYXd8bmN1cnNlc19wYWlyX2NvbnRlbnR8bmN1cnNlc19wYW5lbF9hYm92ZXxuY3Vyc2VzX3BhbmVsX2JlbG93fG5jdXJzZXNfcGFuZWxfd2luZG93fG5jdXJzZXNfcG5vdXRyZWZyZXNofG5jdXJzZXNfcHJlZnJlc2h8bmN1cnNlc19wdXRwfG5jdXJzZXNfcWlmbHVzaHxuY3Vyc2VzX3Jhd3xuY3Vyc2VzX3JlZnJlc2h8bmN1cnNlc19yZXBsYWNlX3BhbmVsfG5jdXJzZXNfcmVzZXRfcHJvZ19tb2RlfG5jdXJzZXNfcmVzZXRfc2hlbGxfbW9kZXxuY3Vyc2VzX3Jlc2V0dHl8bmN1cnNlc19zYXZldHR5fG5jdXJzZXNfc2NyX2R1bXB8bmN1cnNlc19zY3JfaW5pdHxuY3Vyc2VzX3Njcl9yZXN0b3JlfG5jdXJzZXNfc2NyX3NldHxuY3Vyc2VzX3Njcmx8bmN1cnNlc19zaG93X3BhbmVsfG5jdXJzZXNfc2xrX2F0dHJ8bmN1cnNlc19zbGtfYXR0cm9mZnxuY3Vyc2VzX3Nsa19hdHRyb258bmN1cnNlc19zbGtfYXR0cnNldHxuY3Vyc2VzX3Nsa19jbGVhcnxuY3Vyc2VzX3Nsa19jb2xvcnxuY3Vyc2VzX3Nsa19pbml0fG5jdXJzZXNfc2xrX25vdXRyZWZyZXNofG5jdXJzZXNfc2xrX3JlZnJlc2h8bmN1cnNlc19zbGtfcmVzdG9yZXxuY3Vyc2VzX3Nsa19zZXR8bmN1cnNlc19zbGtfdG91Y2h8bmN1cnNlc19zdGFuZGVuZHxuY3Vyc2VzX3N0YW5kb3V0fG5jdXJzZXNfc3RhcnRfY29sb3J8bmN1cnNlc190ZXJtYXR0cnN8bmN1cnNlc190ZXJtbmFtZXxuY3Vyc2VzX3RpbWVvdXR8bmN1cnNlc190b3BfcGFuZWx8bmN1cnNlc190eXBlYWhlYWR8bmN1cnNlc191bmdldGNofG5jdXJzZXNfdW5nZXRtb3VzZXxuY3Vyc2VzX3VwZGF0ZV9wYW5lbHN8bmN1cnNlc191c2VfZGVmYXVsdF9jb2xvcnN8bmN1cnNlc191c2VfZW52fG5jdXJzZXNfdXNlX2V4dGVuZGVkX25hbWVzfG5jdXJzZXNfdmlkYXR0cnxuY3Vyc2VzX3ZsaW5lfG5jdXJzZXNfd2FkZGNofG5jdXJzZXNfd2FkZHN0cnxuY3Vyc2VzX3dhdHRyb2ZmfG5jdXJzZXNfd2F0dHJvbnxuY3Vyc2VzX3dhdHRyc2V0fG5jdXJzZXNfd2JvcmRlcnxuY3Vyc2VzX3djbGVhcnxuY3Vyc2VzX3djb2xvcl9zZXR8bmN1cnNlc193ZXJhc2V8bmN1cnNlc193Z2V0Y2h8bmN1cnNlc193aGxpbmV8bmN1cnNlc193bW91c2VfdHJhZm98bmN1cnNlc193bW92ZXxuY3Vyc2VzX3dub3V0cmVmcmVzaHxuY3Vyc2VzX3dyZWZyZXNofG5jdXJzZXNfd3N0YW5kZW5kfG5jdXJzZXNfd3N0YW5kb3V0fG5jdXJzZXNfd3ZsaW5lfG5ld2luc3RhbmNlfG5ld2luc3RhbmNlYXJnc3xuZXd0X2JlbGx8bmV3dF9idXR0b258bmV3dF9idXR0b25fYmFyfG5ld3RfY2VudGVyZWRfd2luZG93fG5ld3RfY2hlY2tib3h8bmV3dF9jaGVja2JveF9nZXRfdmFsdWV8bmV3dF9jaGVja2JveF9zZXRfZmxhZ3N8bmV3dF9jaGVja2JveF9zZXRfdmFsdWV8bmV3dF9jaGVja2JveF90cmVlfG5ld3RfY2hlY2tib3hfdHJlZV9hZGRfaXRlbXxuZXd0X2NoZWNrYm94X3RyZWVfZmluZF9pdGVtfG5ld3RfY2hlY2tib3hfdHJlZV9nZXRfY3VycmVudHxuZXd0X2NoZWNrYm94X3RyZWVfZ2V0X2VudHJ5X3ZhbHVlfG5ld3RfY2hlY2tib3hfdHJlZV9nZXRfbXVsdGlfc2VsZWN0aW9ufG5ld3RfY2hlY2tib3hfdHJlZV9nZXRfc2VsZWN0aW9ufG5ld3RfY2hlY2tib3hfdHJlZV9tdWx0aXxuZXd0X2NoZWNrYm94X3RyZWVfc2V0X2N1cnJlbnR8bmV3dF9jaGVja2JveF90cmVlX3NldF9lbnRyeXxuZXd0X2NoZWNrYm94X3RyZWVfc2V0X2VudHJ5X3ZhbHVlfG5ld3RfY2hlY2tib3hfdHJlZV9zZXRfd2lkdGh8bmV3dF9jbGVhcl9rZXlfYnVmZmVyfG5ld3RfY2xzfG5ld3RfY29tcGFjdF9idXR0b258bmV3dF9jb21wb25lbnRfYWRkX2NhbGxiYWNrfG5ld3RfY29tcG9uZW50X3Rha2VzX2ZvY3VzfG5ld3RfY3JlYXRlX2dyaWR8bmV3dF9jdXJzb3Jfb2ZmfG5ld3RfY3Vyc29yX29ufG5ld3RfZGVsYXl8bmV3dF9kcmF3X2Zvcm18bmV3dF9kcmF3X3Jvb3RfdGV4dHxuZXd0X2VudHJ5fG5ld3RfZW50cnlfZ2V0X3ZhbHVlfG5ld3RfZW50cnlfc2V0fG5ld3RfZW50cnlfc2V0X2ZpbHRlcnxuZXd0X2VudHJ5X3NldF9mbGFnc3xuZXd0X2ZpbmlzaGVkfG5ld3RfZm9ybXxuZXd0X2Zvcm1fYWRkX2NvbXBvbmVudHxuZXd0X2Zvcm1fYWRkX2NvbXBvbmVudHN8bmV3dF9mb3JtX2FkZF9ob3Rfa2V5fG5ld3RfZm9ybV9kZXN0cm95fG5ld3RfZm9ybV9nZXRfY3VycmVudHxuZXd0X2Zvcm1fcnVufG5ld3RfZm9ybV9zZXRfYmFja2dyb3VuZHxuZXd0X2Zvcm1fc2V0X2hlaWdodHxuZXd0X2Zvcm1fc2V0X3NpemV8bmV3dF9mb3JtX3NldF90aW1lcnxuZXd0X2Zvcm1fc2V0X3dpZHRofG5ld3RfZm9ybV93YXRjaF9mZHxuZXd0X2dldF9zY3JlZW5fc2l6ZXxuZXd0X2dyaWRfYWRkX2NvbXBvbmVudHNfdG9fZm9ybXxuZXd0X2dyaWRfYmFzaWNfd2luZG93fG5ld3RfZ3JpZF9mcmVlfG5ld3RfZ3JpZF9nZXRfc2l6ZXxuZXd0X2dyaWRfaF9jbG9zZV9zdGFja2VkfG5ld3RfZ3JpZF9oX3N0YWNrZWR8bmV3dF9ncmlkX3BsYWNlfG5ld3RfZ3JpZF9zZXRfZmllbGR8bmV3dF9ncmlkX3NpbXBsZV93aW5kb3d8bmV3dF9ncmlkX3ZfY2xvc2Vfc3RhY2tlZHxuZXd0X2dyaWRfdl9zdGFja2VkfG5ld3RfZ3JpZF93cmFwcGVkX3dpbmRvd3xuZXd0X2dyaWRfd3JhcHBlZF93aW5kb3dfYXR8bmV3dF9pbml0fG5ld3RfbGFiZWx8bmV3dF9sYWJlbF9zZXRfdGV4dHxuZXd0X2xpc3Rib3h8bmV3dF9saXN0Ym94X2FwcGVuZF9lbnRyeXxuZXd0X2xpc3Rib3hfY2xlYXJ8bmV3dF9saXN0Ym94X2NsZWFyX3NlbGVjdGlvbnxuZXd0X2xpc3Rib3hfZGVsZXRlX2VudHJ5fG5ld3RfbGlzdGJveF9nZXRfY3VycmVudHxuZXd0X2xpc3Rib3hfZ2V0X3NlbGVjdGlvbnxuZXd0X2xpc3Rib3hfaW5zZXJ0X2VudHJ5fG5ld3RfbGlzdGJveF9pdGVtX2NvdW50fG5ld3RfbGlzdGJveF9zZWxlY3RfaXRlbXxuZXd0X2xpc3Rib3hfc2V0X2N1cnJlbnR8bmV3dF9saXN0Ym94X3NldF9jdXJyZW50X2J5X2tleXxuZXd0X2xpc3Rib3hfc2V0X2RhdGF8bmV3dF9saXN0Ym94X3NldF9lbnRyeXxuZXd0X2xpc3Rib3hfc2V0X3dpZHRofG5ld3RfbGlzdGl0ZW18bmV3dF9saXN0aXRlbV9nZXRfZGF0YXxuZXd0X2xpc3RpdGVtX3NldHxuZXd0X29wZW5fd2luZG93fG5ld3RfcG9wX2hlbHBfbGluZXxuZXd0X3BvcF93aW5kb3d8bmV3dF9wdXNoX2hlbHBfbGluZXxuZXd0X3JhZGlvX2dldF9jdXJyZW50fG5ld3RfcmFkaW9idXR0b258bmV3dF9yZWRyYXdfaGVscF9saW5lfG5ld3RfcmVmbG93X3RleHR8bmV3dF9yZWZyZXNofG5ld3RfcmVzaXplX3NjcmVlbnxuZXd0X3Jlc3VtZXxuZXd0X3J1bl9mb3JtfG5ld3Rfc2NhbGV8bmV3dF9zY2FsZV9zZXR8bmV3dF9zY3JvbGxiYXJfc2V0fG5ld3Rfc2V0X2hlbHBfY2FsbGJhY2t8bmV3dF9zZXRfc3VzcGVuZF9jYWxsYmFja3xuZXd0X3N1c3BlbmR8bmV3dF90ZXh0Ym94fG5ld3RfdGV4dGJveF9nZXRfbnVtX2xpbmVzfG5ld3RfdGV4dGJveF9yZWZsb3dlZHxuZXd0X3RleHRib3hfc2V0X2hlaWdodHxuZXd0X3RleHRib3hfc2V0X3RleHR8bmV3dF92ZXJ0aWNhbF9zY3JvbGxiYXJ8bmV3dF93YWl0X2Zvcl9rZXl8bmV3dF93aW5fY2hvaWNlfG5ld3Rfd2luX2VudHJpZXN8bmV3dF93aW5fbWVudXxuZXd0X3dpbl9tZXNzYWdlfG5ld3Rfd2luX21lc3NhZ2V2fG5ld3Rfd2luX3Rlcm5hcnl8bmV4dHxuZ2V0dGV4dHxubDJicnxubF9sYW5naW5mb3xub3Jld2luZGl0ZXJhdG9yfG5vcm1hbGl6ZXJ8bm90ZXNfYm9keXxub3Rlc19jb3B5X2RifG5vdGVzX2NyZWF0ZV9kYnxub3Rlc19jcmVhdGVfbm90ZXxub3Rlc19kcm9wX2RifG5vdGVzX2ZpbmRfbm90ZXxub3Rlc19oZWFkZXJfaW5mb3xub3Rlc19saXN0X21zZ3N8bm90ZXNfbWFya19yZWFkfG5vdGVzX21hcmtfdW5yZWFkfG5vdGVzX25hdl9jcmVhdGV8bm90ZXNfc2VhcmNofG5vdGVzX3VucmVhZHxub3Rlc192ZXJzaW9ufG5zYXBpX3JlcXVlc3RfaGVhZGVyc3xuc2FwaV9yZXNwb25zZV9oZWFkZXJzfG5zYXBpX3ZpcnR1YWx8bnRobWFjfG51bWJlcl9mb3JtYXR8bnVtYmVyZm9ybWF0dGVyfG9hdXRofG9hdXRoX2dldF9zYnN8b2F1dGhfdXJsZW5jb2RlfG9hdXRoZXhjZXB0aW9ufG9hdXRocHJvdmlkZXJ8b2JfY2xlYW58b2JfZGVmbGF0ZWhhbmRsZXJ8b2JfZW5kX2NsZWFufG9iX2VuZF9mbHVzaHxvYl9ldGFnaGFuZGxlcnxvYl9mbHVzaHxvYl9nZXRfY2xlYW58b2JfZ2V0X2NvbnRlbnRzfG9iX2dldF9mbHVzaHxvYl9nZXRfbGVuZ3RofG9iX2dldF9sZXZlbHxvYl9nZXRfc3RhdHVzfG9iX2d6aGFuZGxlcnxvYl9pY29udl9oYW5kbGVyfG9iX2ltcGxpY2l0X2ZsdXNofG9iX2luZmxhdGVoYW5kbGVyfG9iX2xpc3RfaGFuZGxlcnN8b2Jfc3RhcnR8b2JfdGlkeWhhbmRsZXJ8b2NpX2JpbmRfYXJyYXlfYnlfbmFtZXxvY2lfYmluZF9ieV9uYW1lfG9jaV9jYW5jZWx8b2NpX2NsaWVudF92ZXJzaW9ufG9jaV9jbG9zZXxvY2lfY29sbGVjdGlvbl9hcHBlbmR8b2NpX2NvbGxlY3Rpb25fYXNzaWdufG9jaV9jb2xsZWN0aW9uX2VsZW1lbnRfYXNzaWdufG9jaV9jb2xsZWN0aW9uX2VsZW1lbnRfZ2V0fG9jaV9jb2xsZWN0aW9uX2ZyZWV8b2NpX2NvbGxlY3Rpb25fbWF4fG9jaV9jb2xsZWN0aW9uX3NpemV8b2NpX2NvbGxlY3Rpb25fdHJpbXxvY2lfY29tbWl0fG9jaV9jb25uZWN0fG9jaV9kZWZpbmVfYnlfbmFtZXxvY2lfZXJyb3J8b2NpX2V4ZWN1dGV8b2NpX2ZldGNofG9jaV9mZXRjaF9hbGx8b2NpX2ZldGNoX2FycmF5fG9jaV9mZXRjaF9hc3NvY3xvY2lfZmV0Y2hfb2JqZWN0fG9jaV9mZXRjaF9yb3d8b2NpX2ZpZWxkX2lzX251bGx8b2NpX2ZpZWxkX25hbWV8b2NpX2ZpZWxkX3ByZWNpc2lvbnxvY2lfZmllbGRfc2NhbGV8b2NpX2ZpZWxkX3NpemV8b2NpX2ZpZWxkX3R5cGV8b2NpX2ZpZWxkX3R5cGVfcmF3fG9jaV9mcmVlX3N0YXRlbWVudHxvY2lfaW50ZXJuYWxfZGVidWd8b2NpX2xvYl9hcHBlbmR8b2NpX2xvYl9jbG9zZXxvY2lfbG9iX2NvcHl8b2NpX2xvYl9lb2Z8b2NpX2xvYl9lcmFzZXxvY2lfbG9iX2V4cG9ydHxvY2lfbG9iX2ZsdXNofG9jaV9sb2JfZnJlZXxvY2lfbG9iX2dldGJ1ZmZlcmluZ3xvY2lfbG9iX2ltcG9ydHxvY2lfbG9iX2lzX2VxdWFsfG9jaV9sb2JfbG9hZHxvY2lfbG9iX3JlYWR8b2NpX2xvYl9yZXdpbmR8b2NpX2xvYl9zYXZlfG9jaV9sb2Jfc2F2ZWZpbGV8b2NpX2xvYl9zZWVrfG9jaV9sb2Jfc2V0YnVmZmVyaW5nfG9jaV9sb2Jfc2l6ZXxvY2lfbG9iX3RlbGx8b2NpX2xvYl90cnVuY2F0ZXxvY2lfbG9iX3dyaXRlfG9jaV9sb2Jfd3JpdGV0ZW1wb3Jhcnl8b2NpX2xvYl93cml0ZXRvZmlsZXxvY2lfbmV3X2NvbGxlY3Rpb258b2NpX25ld19jb25uZWN0fG9jaV9uZXdfY3Vyc29yfG9jaV9uZXdfZGVzY3JpcHRvcnxvY2lfbnVtX2ZpZWxkc3xvY2lfbnVtX3Jvd3N8b2NpX3BhcnNlfG9jaV9wYXNzd29yZF9jaGFuZ2V8b2NpX3Bjb25uZWN0fG9jaV9yZXN1bHR8b2NpX3JvbGxiYWNrfG9jaV9zZXJ2ZXJfdmVyc2lvbnxvY2lfc2V0X2FjdGlvbnxvY2lfc2V0X2NsaWVudF9pZGVudGlmaWVyfG9jaV9zZXRfY2xpZW50X2luZm98b2NpX3NldF9lZGl0aW9ufG9jaV9zZXRfbW9kdWxlX25hbWV8b2NpX3NldF9wcmVmZXRjaHxvY2lfc3RhdGVtZW50X3R5cGV8b2NpYmluZGJ5bmFtZXxvY2ljYW5jZWx8b2NpY2xvc2Vsb2J8b2NpY29sbGFwcGVuZHxvY2ljb2xsYXNzaWdufG9jaWNvbGxhc3NpZ25lbGVtfG9jaWNvbGxnZXRlbGVtfG9jaWNvbGxtYXh8b2NpY29sbHNpemV8b2NpY29sbHRyaW18b2NpY29sdW1uaXNudWxsfG9jaWNvbHVtbm5hbWV8b2NpY29sdW1ucHJlY2lzaW9ufG9jaWNvbHVtbnNjYWxlfG9jaWNvbHVtbnNpemV8b2NpY29sdW1udHlwZXxvY2ljb2x1bW50eXBlcmF3fG9jaWNvbW1pdHxvY2lkZWZpbmVieW5hbWV8b2NpZXJyb3J8b2NpZXhlY3V0ZXxvY2lmZXRjaHxvY2lmZXRjaGludG98b2NpZmV0Y2hzdGF0ZW1lbnR8b2NpZnJlZWNvbGxlY3Rpb258b2NpZnJlZWN1cnNvcnxvY2lmcmVlZGVzY3xvY2lmcmVlc3RhdGVtZW50fG9jaWludGVybmFsZGVidWd8b2NpbG9hZGxvYnxvY2lsb2dvZmZ8b2NpbG9nb258b2NpbmV3Y29sbGVjdGlvbnxvY2luZXdjdXJzb3J8b2NpbmV3ZGVzY3JpcHRvcnxvY2lubG9nb258b2NpbnVtY29sc3xvY2lwYXJzZXxvY2lwbG9nb258b2NpcmVzdWx0fG9jaXJvbGxiYWNrfG9jaXJvd2NvdW50fG9jaXNhdmVsb2J8b2Npc2F2ZWxvYmZpbGV8b2Npc2VydmVydmVyc2lvbnxvY2lzZXRwcmVmZXRjaHxvY2lzdGF0ZW1lbnR0eXBlfG9jaXdyaXRlbG9idG9maWxlfG9jaXdyaXRldGVtcG9yYXJ5bG9ifG9jdGRlY3xvZGJjX2F1dG9jb21taXR8b2RiY19iaW5tb2RlfG9kYmNfY2xvc2V8b2RiY19jbG9zZV9hbGx8b2RiY19jb2x1bW5wcml2aWxlZ2VzfG9kYmNfY29sdW1uc3xvZGJjX2NvbW1pdHxvZGJjX2Nvbm5lY3R8b2RiY19jdXJzb3J8b2RiY19kYXRhX3NvdXJjZXxvZGJjX2RvfG9kYmNfZXJyb3J8b2RiY19lcnJvcm1zZ3xvZGJjX2V4ZWN8b2RiY19leGVjdXRlfG9kYmNfZmV0Y2hfYXJyYXl8b2RiY19mZXRjaF9pbnRvfG9kYmNfZmV0Y2hfb2JqZWN0fG9kYmNfZmV0Y2hfcm93fG9kYmNfZmllbGRfbGVufG9kYmNfZmllbGRfbmFtZXxvZGJjX2ZpZWxkX251bXxvZGJjX2ZpZWxkX3ByZWNpc2lvbnxvZGJjX2ZpZWxkX3NjYWxlfG9kYmNfZmllbGRfdHlwZXxvZGJjX2ZvcmVpZ25rZXlzfG9kYmNfZnJlZV9yZXN1bHR8b2RiY19nZXR0eXBlaW5mb3xvZGJjX2xvbmdyZWFkbGVufG9kYmNfbmV4dF9yZXN1bHR8b2RiY19udW1fZmllbGRzfG9kYmNfbnVtX3Jvd3N8b2RiY19wY29ubmVjdHxvZGJjX3ByZXBhcmV8b2RiY19wcmltYXJ5a2V5c3xvZGJjX3Byb2NlZHVyZWNvbHVtbnN8b2RiY19wcm9jZWR1cmVzfG9kYmNfcmVzdWx0fG9kYmNfcmVzdWx0X2FsbHxvZGJjX3JvbGxiYWNrfG9kYmNfc2V0b3B0aW9ufG9kYmNfc3BlY2lhbGNvbHVtbnN8b2RiY19zdGF0aXN0aWNzfG9kYmNfdGFibGVwcml2aWxlZ2VzfG9kYmNfdGFibGVzfG9wZW5hbF9idWZmZXJfY3JlYXRlfG9wZW5hbF9idWZmZXJfZGF0YXxvcGVuYWxfYnVmZmVyX2Rlc3Ryb3l8b3BlbmFsX2J1ZmZlcl9nZXR8b3BlbmFsX2J1ZmZlcl9sb2Fkd2F2fG9wZW5hbF9jb250ZXh0X2NyZWF0ZXxvcGVuYWxfY29udGV4dF9jdXJyZW50fG9wZW5hbF9jb250ZXh0X2Rlc3Ryb3l8b3BlbmFsX2NvbnRleHRfcHJvY2Vzc3xvcGVuYWxfY29udGV4dF9zdXNwZW5kfG9wZW5hbF9kZXZpY2VfY2xvc2V8b3BlbmFsX2RldmljZV9vcGVufG9wZW5hbF9saXN0ZW5lcl9nZXR8b3BlbmFsX2xpc3RlbmVyX3NldHxvcGVuYWxfc291cmNlX2NyZWF0ZXxvcGVuYWxfc291cmNlX2Rlc3Ryb3l8b3BlbmFsX3NvdXJjZV9nZXR8b3BlbmFsX3NvdXJjZV9wYXVzZXxvcGVuYWxfc291cmNlX3BsYXl8b3BlbmFsX3NvdXJjZV9yZXdpbmR8b3BlbmFsX3NvdXJjZV9zZXR8b3BlbmFsX3NvdXJjZV9zdG9wfG9wZW5hbF9zdHJlYW18b3BlbmRpcnxvcGVubG9nfG9wZW5zc2xfY2lwaGVyX2l2X2xlbmd0aHxvcGVuc3NsX2Nzcl9leHBvcnR8b3BlbnNzbF9jc3JfZXhwb3J0X3RvX2ZpbGV8b3BlbnNzbF9jc3JfZ2V0X3B1YmxpY19rZXl8b3BlbnNzbF9jc3JfZ2V0X3N1YmplY3R8b3BlbnNzbF9jc3JfbmV3fG9wZW5zc2xfY3NyX3NpZ258b3BlbnNzbF9kZWNyeXB0fG9wZW5zc2xfZGhfY29tcHV0ZV9rZXl8b3BlbnNzbF9kaWdlc3R8b3BlbnNzbF9lbmNyeXB0fG9wZW5zc2xfZXJyb3Jfc3RyaW5nfG9wZW5zc2xfZnJlZV9rZXl8b3BlbnNzbF9nZXRfY2lwaGVyX21ldGhvZHN8b3BlbnNzbF9nZXRfbWRfbWV0aG9kc3xvcGVuc3NsX2dldF9wcml2YXRla2V5fG9wZW5zc2xfZ2V0X3B1YmxpY2tleXxvcGVuc3NsX29wZW58b3BlbnNzbF9wa2NzMTJfZXhwb3J0fG9wZW5zc2xfcGtjczEyX2V4cG9ydF90b19maWxlfG9wZW5zc2xfcGtjczEyX3JlYWR8b3BlbnNzbF9wa2NzN19kZWNyeXB0fG9wZW5zc2xfcGtjczdfZW5jcnlwdHxvcGVuc3NsX3BrY3M3X3NpZ258b3BlbnNzbF9wa2NzN192ZXJpZnl8b3BlbnNzbF9wa2V5X2V4cG9ydHxvcGVuc3NsX3BrZXlfZXhwb3J0X3RvX2ZpbGV8b3BlbnNzbF9wa2V5X2ZyZWV8b3BlbnNzbF9wa2V5X2dldF9kZXRhaWxzfG9wZW5zc2xfcGtleV9nZXRfcHJpdmF0ZXxvcGVuc3NsX3BrZXlfZ2V0X3B1YmxpY3xvcGVuc3NsX3BrZXlfbmV3fG9wZW5zc2xfcHJpdmF0ZV9kZWNyeXB0fG9wZW5zc2xfcHJpdmF0ZV9lbmNyeXB0fG9wZW5zc2xfcHVibGljX2RlY3J5cHR8b3BlbnNzbF9wdWJsaWNfZW5jcnlwdHxvcGVuc3NsX3JhbmRvbV9wc2V1ZG9fYnl0ZXN8b3BlbnNzbF9zZWFsfG9wZW5zc2xfc2lnbnxvcGVuc3NsX3ZlcmlmeXxvcGVuc3NsX3g1MDlfY2hlY2tfcHJpdmF0ZV9rZXl8b3BlbnNzbF94NTA5X2NoZWNrcHVycG9zZXxvcGVuc3NsX3g1MDlfZXhwb3J0fG9wZW5zc2xfeDUwOV9leHBvcnRfdG9fZmlsZXxvcGVuc3NsX3g1MDlfZnJlZXxvcGVuc3NsX3g1MDlfcGFyc2V8b3BlbnNzbF94NTA5X3JlYWR8b3JkfG91dGVyaXRlcmF0b3J8b3V0b2Zib3VuZHNleGNlcHRpb258b3V0b2ZyYW5nZWV4Y2VwdGlvbnxvdXRwdXRfYWRkX3Jld3JpdGVfdmFyfG91dHB1dF9yZXNldF9yZXdyaXRlX3ZhcnN8b3ZlcmZsb3dleGNlcHRpb258b3ZlcmxvYWR8b3ZlcnJpZGVfZnVuY3Rpb258b3ZyaW1vc19jbG9zZXxvdnJpbW9zX2NvbW1pdHxvdnJpbW9zX2Nvbm5lY3R8b3ZyaW1vc19jdXJzb3J8b3ZyaW1vc19leGVjfG92cmltb3NfZXhlY3V0ZXxvdnJpbW9zX2ZldGNoX2ludG98b3ZyaW1vc19mZXRjaF9yb3d8b3ZyaW1vc19maWVsZF9sZW58b3ZyaW1vc19maWVsZF9uYW1lfG92cmltb3NfZmllbGRfbnVtfG92cmltb3NfZmllbGRfdHlwZXxvdnJpbW9zX2ZyZWVfcmVzdWx0fG92cmltb3NfbG9uZ3JlYWRsZW58b3ZyaW1vc19udW1fZmllbGRzfG92cmltb3NfbnVtX3Jvd3N8b3ZyaW1vc19wcmVwYXJlfG92cmltb3NfcmVzdWx0fG92cmltb3NfcmVzdWx0X2FsbHxvdnJpbW9zX3JvbGxiYWNrfHBhY2t8cGFyZW50aXRlcmF0b3J8cGFyc2VfaW5pX2ZpbGV8cGFyc2VfaW5pX3N0cmluZ3xwYXJzZV9zdHJ8cGFyc2VfdXJsfHBhcnNla2l0X2NvbXBpbGVfZmlsZXxwYXJzZWtpdF9jb21waWxlX3N0cmluZ3xwYXJzZWtpdF9mdW5jX2FyZ2luZm98cGFzc3RocnV8cGF0aGluZm98cGNsb3NlfHBjbnRsX2FsYXJtfHBjbnRsX2V4ZWN8cGNudGxfZm9ya3xwY250bF9nZXRwcmlvcml0eXxwY250bF9zZXRwcmlvcml0eXxwY250bF9zaWduYWx8cGNudGxfc2lnbmFsX2Rpc3BhdGNofHBjbnRsX3NpZ3Byb2NtYXNrfHBjbnRsX3NpZ3RpbWVkd2FpdHxwY250bF9zaWd3YWl0aW5mb3xwY250bF93YWl0fHBjbnRsX3dhaXRwaWR8cGNudGxfd2V4aXRzdGF0dXN8cGNudGxfd2lmZXhpdGVkfHBjbnRsX3dpZnNpZ25hbGVkfHBjbnRsX3dpZnN0b3BwZWR8cGNudGxfd3N0b3BzaWd8cGNudGxfd3Rlcm1zaWd8cGRmX2FjdGl2YXRlX2l0ZW18cGRmX2FkZF9hbm5vdGF0aW9ufHBkZl9hZGRfYm9va21hcmt8cGRmX2FkZF9sYXVuY2hsaW5rfHBkZl9hZGRfbG9jYWxsaW5rfHBkZl9hZGRfbmFtZWRkZXN0fHBkZl9hZGRfbm90ZXxwZGZfYWRkX291dGxpbmV8cGRmX2FkZF9wZGZsaW5rfHBkZl9hZGRfdGFibGVfY2VsbHxwZGZfYWRkX3RleHRmbG93fHBkZl9hZGRfdGh1bWJuYWlsfHBkZl9hZGRfd2VibGlua3xwZGZfYXJjfHBkZl9hcmNufHBkZl9hdHRhY2hfZmlsZXxwZGZfYmVnaW5fZG9jdW1lbnR8cGRmX2JlZ2luX2ZvbnR8cGRmX2JlZ2luX2dseXBofHBkZl9iZWdpbl9pdGVtfHBkZl9iZWdpbl9sYXllcnxwZGZfYmVnaW5fcGFnZXxwZGZfYmVnaW5fcGFnZV9leHR8cGRmX2JlZ2luX3BhdHRlcm58cGRmX2JlZ2luX3RlbXBsYXRlfHBkZl9iZWdpbl90ZW1wbGF0ZV9leHR8cGRmX2NpcmNsZXxwZGZfY2xpcHxwZGZfY2xvc2V8cGRmX2Nsb3NlX2ltYWdlfHBkZl9jbG9zZV9wZGl8cGRmX2Nsb3NlX3BkaV9wYWdlfHBkZl9jbG9zZXBhdGh8cGRmX2Nsb3NlcGF0aF9maWxsX3N0cm9rZXxwZGZfY2xvc2VwYXRoX3N0cm9rZXxwZGZfY29uY2F0fHBkZl9jb250aW51ZV90ZXh0fHBkZl9jcmVhdGVfM2R2aWV3fHBkZl9jcmVhdGVfYWN0aW9ufHBkZl9jcmVhdGVfYW5ub3RhdGlvbnxwZGZfY3JlYXRlX2Jvb2ttYXJrfHBkZl9jcmVhdGVfZmllbGR8cGRmX2NyZWF0ZV9maWVsZGdyb3VwfHBkZl9jcmVhdGVfZ3N0YXRlfHBkZl9jcmVhdGVfcHZmfHBkZl9jcmVhdGVfdGV4dGZsb3d8cGRmX2N1cnZldG98cGRmX2RlZmluZV9sYXllcnxwZGZfZGVsZXRlfHBkZl9kZWxldGVfcHZmfHBkZl9kZWxldGVfdGFibGV8cGRmX2RlbGV0ZV90ZXh0Zmxvd3xwZGZfZW5jb2Rpbmdfc2V0X2NoYXJ8cGRmX2VuZF9kb2N1bWVudHxwZGZfZW5kX2ZvbnR8cGRmX2VuZF9nbHlwaHxwZGZfZW5kX2l0ZW18cGRmX2VuZF9sYXllcnxwZGZfZW5kX3BhZ2V8cGRmX2VuZF9wYWdlX2V4dHxwZGZfZW5kX3BhdHRlcm58cGRmX2VuZF90ZW1wbGF0ZXxwZGZfZW5kcGF0aHxwZGZfZmlsbHxwZGZfZmlsbF9pbWFnZWJsb2NrfHBkZl9maWxsX3BkZmJsb2NrfHBkZl9maWxsX3N0cm9rZXxwZGZfZmlsbF90ZXh0YmxvY2t8cGRmX2ZpbmRmb250fHBkZl9maXRfaW1hZ2V8cGRmX2ZpdF9wZGlfcGFnZXxwZGZfZml0X3RhYmxlfHBkZl9maXRfdGV4dGZsb3d8cGRmX2ZpdF90ZXh0bGluZXxwZGZfZ2V0X2FwaW5hbWV8cGRmX2dldF9idWZmZXJ8cGRmX2dldF9lcnJtc2d8cGRmX2dldF9lcnJudW18cGRmX2dldF9mb250fHBkZl9nZXRfZm9udG5hbWV8cGRmX2dldF9mb250c2l6ZXxwZGZfZ2V0X2ltYWdlX2hlaWdodHxwZGZfZ2V0X2ltYWdlX3dpZHRofHBkZl9nZXRfbWFqb3J2ZXJzaW9ufHBkZl9nZXRfbWlub3J2ZXJzaW9ufHBkZl9nZXRfcGFyYW1ldGVyfHBkZl9nZXRfcGRpX3BhcmFtZXRlcnxwZGZfZ2V0X3BkaV92YWx1ZXxwZGZfZ2V0X3ZhbHVlfHBkZl9pbmZvX2ZvbnR8cGRmX2luZm9fbWF0Y2hib3h8cGRmX2luZm9fdGFibGV8cGRmX2luZm9fdGV4dGZsb3d8cGRmX2luZm9fdGV4dGxpbmV8cGRmX2luaXRncmFwaGljc3xwZGZfbGluZXRvfHBkZl9sb2FkXzNkZGF0YXxwZGZfbG9hZF9mb250fHBkZl9sb2FkX2ljY3Byb2ZpbGV8cGRmX2xvYWRfaW1hZ2V8cGRmX21ha2VzcG90Y29sb3J8cGRmX21vdmV0b3xwZGZfbmV3fHBkZl9vcGVuX2NjaXR0fHBkZl9vcGVuX2ZpbGV8cGRmX29wZW5fZ2lmfHBkZl9vcGVuX2ltYWdlfHBkZl9vcGVuX2ltYWdlX2ZpbGV8cGRmX29wZW5fanBlZ3xwZGZfb3Blbl9tZW1vcnlfaW1hZ2V8cGRmX29wZW5fcGRpfHBkZl9vcGVuX3BkaV9kb2N1bWVudHxwZGZfb3Blbl9wZGlfcGFnZXxwZGZfb3Blbl90aWZmfHBkZl9wY29zX2dldF9udW1iZXJ8cGRmX3Bjb3NfZ2V0X3N0cmVhbXxwZGZfcGNvc19nZXRfc3RyaW5nfHBkZl9wbGFjZV9pbWFnZXxwZGZfcGxhY2VfcGRpX3BhZ2V8cGRmX3Byb2Nlc3NfcGRpfHBkZl9yZWN0fHBkZl9yZXN0b3JlfHBkZl9yZXN1bWVfcGFnZXxwZGZfcm90YXRlfHBkZl9zYXZlfHBkZl9zY2FsZXxwZGZfc2V0X2JvcmRlcl9jb2xvcnxwZGZfc2V0X2JvcmRlcl9kYXNofHBkZl9zZXRfYm9yZGVyX3N0eWxlfHBkZl9zZXRfY2hhcl9zcGFjaW5nfHBkZl9zZXRfZHVyYXRpb258cGRmX3NldF9nc3RhdGV8cGRmX3NldF9ob3Jpel9zY2FsaW5nfHBkZl9zZXRfaW5mb3xwZGZfc2V0X2luZm9fYXV0aG9yfHBkZl9zZXRfaW5mb19jcmVhdG9yfHBkZl9zZXRfaW5mb19rZXl3b3Jkc3xwZGZfc2V0X2luZm9fc3ViamVjdHxwZGZfc2V0X2luZm9fdGl0bGV8cGRmX3NldF9sYXllcl9kZXBlbmRlbmN5fHBkZl9zZXRfbGVhZGluZ3xwZGZfc2V0X3BhcmFtZXRlcnxwZGZfc2V0X3RleHRfbWF0cml4fHBkZl9zZXRfdGV4dF9wb3N8cGRmX3NldF90ZXh0X3JlbmRlcmluZ3xwZGZfc2V0X3RleHRfcmlzZXxwZGZfc2V0X3ZhbHVlfHBkZl9zZXRfd29yZF9zcGFjaW5nfHBkZl9zZXRjb2xvcnxwZGZfc2V0ZGFzaHxwZGZfc2V0ZGFzaHBhdHRlcm58cGRmX3NldGZsYXR8cGRmX3NldGZvbnR8cGRmX3NldGdyYXl8cGRmX3NldGdyYXlfZmlsbHxwZGZfc2V0Z3JheV9zdHJva2V8cGRmX3NldGxpbmVjYXB8cGRmX3NldGxpbmVqb2lufHBkZl9zZXRsaW5ld2lkdGh8cGRmX3NldG1hdHJpeHxwZGZfc2V0bWl0ZXJsaW1pdHxwZGZfc2V0cG9seWRhc2h8cGRmX3NldHJnYmNvbG9yfHBkZl9zZXRyZ2Jjb2xvcl9maWxsfHBkZl9zZXRyZ2Jjb2xvcl9zdHJva2V8cGRmX3NoYWRpbmd8cGRmX3NoYWRpbmdfcGF0dGVybnxwZGZfc2hmaWxsfHBkZl9zaG93fHBkZl9zaG93X2JveGVkfHBkZl9zaG93X3h5fHBkZl9za2V3fHBkZl9zdHJpbmd3aWR0aHxwZGZfc3Ryb2tlfHBkZl9zdXNwZW5kX3BhZ2V8cGRmX3RyYW5zbGF0ZXxwZGZfdXRmMTZfdG9fdXRmOHxwZGZfdXRmMzJfdG9fdXRmMTZ8cGRmX3V0ZjhfdG9fdXRmMTZ8cGRvfHBkb19jdWJyaWRfc2NoZW1hfHBkb19wZ3NxbGxvYmNyZWF0ZXxwZG9fcGdzcWxsb2JvcGVufHBkb19wZ3NxbGxvYnVubGlua3xwZG9fc3FsaXRlY3JlYXRlYWdncmVnYXRlfHBkb19zcWxpdGVjcmVhdGVmdW5jdGlvbnxwZG9leGNlcHRpb258cGRvc3RhdGVtZW50fHBmc29ja29wZW58cGdfYWZmZWN0ZWRfcm93c3xwZ19jYW5jZWxfcXVlcnl8cGdfY2xpZW50X2VuY29kaW5nfHBnX2Nsb3NlfHBnX2Nvbm5lY3R8cGdfY29ubmVjdGlvbl9idXN5fHBnX2Nvbm5lY3Rpb25fcmVzZXR8cGdfY29ubmVjdGlvbl9zdGF0dXN8cGdfY29udmVydHxwZ19jb3B5X2Zyb218cGdfY29weV90b3xwZ19kYm5hbWV8cGdfZGVsZXRlfHBnX2VuZF9jb3B5fHBnX2VzY2FwZV9ieXRlYXxwZ19lc2NhcGVfc3RyaW5nfHBnX2V4ZWN1dGV8cGdfZmV0Y2hfYWxsfHBnX2ZldGNoX2FsbF9jb2x1bW5zfHBnX2ZldGNoX2FycmF5fHBnX2ZldGNoX2Fzc29jfHBnX2ZldGNoX29iamVjdHxwZ19mZXRjaF9yZXN1bHR8cGdfZmV0Y2hfcm93fHBnX2ZpZWxkX2lzX251bGx8cGdfZmllbGRfbmFtZXxwZ19maWVsZF9udW18cGdfZmllbGRfcHJ0bGVufHBnX2ZpZWxkX3NpemV8cGdfZmllbGRfdGFibGV8cGdfZmllbGRfdHlwZXxwZ19maWVsZF90eXBlX29pZHxwZ19mcmVlX3Jlc3VsdHxwZ19nZXRfbm90aWZ5fHBnX2dldF9waWR8cGdfZ2V0X3Jlc3VsdHxwZ19ob3N0fHBnX2luc2VydHxwZ19sYXN0X2Vycm9yfHBnX2xhc3Rfbm90aWNlfHBnX2xhc3Rfb2lkfHBnX2xvX2Nsb3NlfHBnX2xvX2NyZWF0ZXxwZ19sb19leHBvcnR8cGdfbG9faW1wb3J0fHBnX2xvX29wZW58cGdfbG9fcmVhZHxwZ19sb19yZWFkX2FsbHxwZ19sb19zZWVrfHBnX2xvX3RlbGx8cGdfbG9fdW5saW5rfHBnX2xvX3dyaXRlfHBnX21ldGFfZGF0YXxwZ19udW1fZmllbGRzfHBnX251bV9yb3dzfHBnX29wdGlvbnN8cGdfcGFyYW1ldGVyX3N0YXR1c3xwZ19wY29ubmVjdHxwZ19waW5nfHBnX3BvcnR8cGdfcHJlcGFyZXxwZ19wdXRfbGluZXxwZ19xdWVyeXxwZ19xdWVyeV9wYXJhbXN8cGdfcmVzdWx0X2Vycm9yfHBnX3Jlc3VsdF9lcnJvcl9maWVsZHxwZ19yZXN1bHRfc2Vla3xwZ19yZXN1bHRfc3RhdHVzfHBnX3NlbGVjdHxwZ19zZW5kX2V4ZWN1dGV8cGdfc2VuZF9wcmVwYXJlfHBnX3NlbmRfcXVlcnl8cGdfc2VuZF9xdWVyeV9wYXJhbXN8cGdfc2V0X2NsaWVudF9lbmNvZGluZ3xwZ19zZXRfZXJyb3JfdmVyYm9zaXR5fHBnX3RyYWNlfHBnX3RyYW5zYWN0aW9uX3N0YXR1c3xwZ190dHl8cGdfdW5lc2NhcGVfYnl0ZWF8cGdfdW50cmFjZXxwZ191cGRhdGV8cGdfdmVyc2lvbnxwaHBfY2hlY2tfc3ludGF4fHBocF9pbmlfbG9hZGVkX2ZpbGV8cGhwX2luaV9zY2FubmVkX2ZpbGVzfHBocF9sb2dvX2d1aWR8cGhwX3NhcGlfbmFtZXxwaHBfc3RyaXBfd2hpdGVzcGFjZXxwaHBfdW5hbWV8cGhwY3JlZGl0c3xwaHBpbmZvfHBocHZlcnNpb258cGl8cG5nMndibXB8cG9wZW58cG9zfHBvc2l4X2FjY2Vzc3xwb3NpeF9jdGVybWlkfHBvc2l4X2Vycm5vfHBvc2l4X2dldF9sYXN0X2Vycm9yfHBvc2l4X2dldGN3ZHxwb3NpeF9nZXRlZ2lkfHBvc2l4X2dldGV1aWR8cG9zaXhfZ2V0Z2lkfHBvc2l4X2dldGdyZ2lkfHBvc2l4X2dldGdybmFtfHBvc2l4X2dldGdyb3Vwc3xwb3NpeF9nZXRsb2dpbnxwb3NpeF9nZXRwZ2lkfHBvc2l4X2dldHBncnB8cG9zaXhfZ2V0cGlkfHBvc2l4X2dldHBwaWR8cG9zaXhfZ2V0cHduYW18cG9zaXhfZ2V0cHd1aWR8cG9zaXhfZ2V0cmxpbWl0fHBvc2l4X2dldHNpZHxwb3NpeF9nZXR1aWR8cG9zaXhfaW5pdGdyb3Vwc3xwb3NpeF9pc2F0dHl8cG9zaXhfa2lsbHxwb3NpeF9ta2ZpZm98cG9zaXhfbWtub2R8cG9zaXhfc2V0ZWdpZHxwb3NpeF9zZXRldWlkfHBvc2l4X3NldGdpZHxwb3NpeF9zZXRwZ2lkfHBvc2l4X3NldHNpZHxwb3NpeF9zZXR1aWR8cG9zaXhfc3RyZXJyb3J8cG9zaXhfdGltZXN8cG9zaXhfdHR5bmFtZXxwb3NpeF91bmFtZXxwb3d8cHJlZ19maWx0ZXJ8cHJlZ19ncmVwfHByZWdfbGFzdF9lcnJvcnxwcmVnX21hdGNofHByZWdfbWF0Y2hfYWxsfHByZWdfcXVvdGV8cHJlZ19yZXBsYWNlfHByZWdfcmVwbGFjZV9jYWxsYmFja3xwcmVnX3NwbGl0fHByZXZ8cHJpbnR8cHJpbnRfcnxwcmludGVyX2Fib3J0fHByaW50ZXJfY2xvc2V8cHJpbnRlcl9jcmVhdGVfYnJ1c2h8cHJpbnRlcl9jcmVhdGVfZGN8cHJpbnRlcl9jcmVhdGVfZm9udHxwcmludGVyX2NyZWF0ZV9wZW58cHJpbnRlcl9kZWxldGVfYnJ1c2h8cHJpbnRlcl9kZWxldGVfZGN8cHJpbnRlcl9kZWxldGVfZm9udHxwcmludGVyX2RlbGV0ZV9wZW58cHJpbnRlcl9kcmF3X2JtcHxwcmludGVyX2RyYXdfY2hvcmR8cHJpbnRlcl9kcmF3X2VsaXBzZXxwcmludGVyX2RyYXdfbGluZXxwcmludGVyX2RyYXdfcGllfHByaW50ZXJfZHJhd19yZWN0YW5nbGV8cHJpbnRlcl9kcmF3X3JvdW5kcmVjdHxwcmludGVyX2RyYXdfdGV4dHxwcmludGVyX2VuZF9kb2N8cHJpbnRlcl9lbmRfcGFnZXxwcmludGVyX2dldF9vcHRpb258cHJpbnRlcl9saXN0fHByaW50ZXJfbG9naWNhbF9mb250aGVpZ2h0fHByaW50ZXJfb3BlbnxwcmludGVyX3NlbGVjdF9icnVzaHxwcmludGVyX3NlbGVjdF9mb250fHByaW50ZXJfc2VsZWN0X3BlbnxwcmludGVyX3NldF9vcHRpb258cHJpbnRlcl9zdGFydF9kb2N8cHJpbnRlcl9zdGFydF9wYWdlfHByaW50ZXJfd3JpdGV8cHJpbnRmfHByb2NfY2xvc2V8cHJvY19nZXRfc3RhdHVzfHByb2NfbmljZXxwcm9jX29wZW58cHJvY190ZXJtaW5hdGV8cHJvcGVydHlfZXhpc3RzfHBzX2FkZF9ib29rbWFya3xwc19hZGRfbGF1bmNobGlua3xwc19hZGRfbG9jYWxsaW5rfHBzX2FkZF9ub3RlfHBzX2FkZF9wZGZsaW5rfHBzX2FkZF93ZWJsaW5rfHBzX2FyY3xwc19hcmNufHBzX2JlZ2luX3BhZ2V8cHNfYmVnaW5fcGF0dGVybnxwc19iZWdpbl90ZW1wbGF0ZXxwc19jaXJjbGV8cHNfY2xpcHxwc19jbG9zZXxwc19jbG9zZV9pbWFnZXxwc19jbG9zZXBhdGh8cHNfY2xvc2VwYXRoX3N0cm9rZXxwc19jb250aW51ZV90ZXh0fHBzX2N1cnZldG98cHNfZGVsZXRlfHBzX2VuZF9wYWdlfHBzX2VuZF9wYXR0ZXJufHBzX2VuZF90ZW1wbGF0ZXxwc19maWxsfHBzX2ZpbGxfc3Ryb2tlfHBzX2ZpbmRmb250fHBzX2dldF9idWZmZXJ8cHNfZ2V0X3BhcmFtZXRlcnxwc19nZXRfdmFsdWV8cHNfaHlwaGVuYXRlfHBzX2luY2x1ZGVfZmlsZXxwc19saW5ldG98cHNfbWFrZXNwb3Rjb2xvcnxwc19tb3ZldG98cHNfbmV3fHBzX29wZW5fZmlsZXxwc19vcGVuX2ltYWdlfHBzX29wZW5faW1hZ2VfZmlsZXxwc19vcGVuX21lbW9yeV9pbWFnZXxwc19wbGFjZV9pbWFnZXxwc19yZWN0fHBzX3Jlc3RvcmV8cHNfcm90YXRlfHBzX3NhdmV8cHNfc2NhbGV8cHNfc2V0X2JvcmRlcl9jb2xvcnxwc19zZXRfYm9yZGVyX2Rhc2h8cHNfc2V0X2JvcmRlcl9zdHlsZXxwc19zZXRfaW5mb3xwc19zZXRfcGFyYW1ldGVyfHBzX3NldF90ZXh0X3Bvc3xwc19zZXRfdmFsdWV8cHNfc2V0Y29sb3J8cHNfc2V0ZGFzaHxwc19zZXRmbGF0fHBzX3NldGZvbnR8cHNfc2V0Z3JheXxwc19zZXRsaW5lY2FwfHBzX3NldGxpbmVqb2lufHBzX3NldGxpbmV3aWR0aHxwc19zZXRtaXRlcmxpbWl0fHBzX3NldG92ZXJwcmludG1vZGV8cHNfc2V0cG9seWRhc2h8cHNfc2hhZGluZ3xwc19zaGFkaW5nX3BhdHRlcm58cHNfc2hmaWxsfHBzX3Nob3d8cHNfc2hvdzJ8cHNfc2hvd19ib3hlZHxwc19zaG93X3h5fHBzX3Nob3dfeHkyfHBzX3N0cmluZ19nZW9tZXRyeXxwc19zdHJpbmd3aWR0aHxwc19zdHJva2V8cHNfc3ltYm9sfHBzX3N5bWJvbF9uYW1lfHBzX3N5bWJvbF93aWR0aHxwc190cmFuc2xhdGV8cHNwZWxsX2FkZF90b19wZXJzb25hbHxwc3BlbGxfYWRkX3RvX3Nlc3Npb258cHNwZWxsX2NoZWNrfHBzcGVsbF9jbGVhcl9zZXNzaW9ufHBzcGVsbF9jb25maWdfY3JlYXRlfHBzcGVsbF9jb25maWdfZGF0YV9kaXJ8cHNwZWxsX2NvbmZpZ19kaWN0X2Rpcnxwc3BlbGxfY29uZmlnX2lnbm9yZXxwc3BlbGxfY29uZmlnX21vZGV8cHNwZWxsX2NvbmZpZ19wZXJzb25hbHxwc3BlbGxfY29uZmlnX3JlcGx8cHNwZWxsX2NvbmZpZ19ydW50b2dldGhlcnxwc3BlbGxfY29uZmlnX3NhdmVfcmVwbHxwc3BlbGxfbmV3fHBzcGVsbF9uZXdfY29uZmlnfHBzcGVsbF9uZXdfcGVyc29uYWx8cHNwZWxsX3NhdmVfd29yZGxpc3R8cHNwZWxsX3N0b3JlX3JlcGxhY2VtZW50fHBzcGVsbF9zdWdnZXN0fHB1dGVudnxweF9jbG9zZXxweF9jcmVhdGVfZnB8cHhfZGF0ZTJzdHJpbmd8cHhfZGVsZXRlfHB4X2RlbGV0ZV9yZWNvcmR8cHhfZ2V0X2ZpZWxkfHB4X2dldF9pbmZvfHB4X2dldF9wYXJhbWV0ZXJ8cHhfZ2V0X3JlY29yZHxweF9nZXRfc2NoZW1hfHB4X2dldF92YWx1ZXxweF9pbnNlcnRfcmVjb3JkfHB4X25ld3xweF9udW1maWVsZHN8cHhfbnVtcmVjb3Jkc3xweF9vcGVuX2ZwfHB4X3B1dF9yZWNvcmR8cHhfcmV0cmlldmVfcmVjb3JkfHB4X3NldF9ibG9iX2ZpbGV8cHhfc2V0X3BhcmFtZXRlcnxweF9zZXRfdGFibGVuYW1lfHB4X3NldF90YXJnZXRlbmNvZGluZ3xweF9zZXRfdmFsdWV8cHhfdGltZXN0YW1wMnN0cmluZ3xweF91cGRhdGVfcmVjb3JkfHFkb21fZXJyb3J8cWRvbV90cmVlfHF1b3RlZF9wcmludGFibGVfZGVjb2RlfHF1b3RlZF9wcmludGFibGVfZW5jb2RlfHF1b3RlbWV0YXxyYWQyZGVnfHJhZGl1c19hY2N0X29wZW58cmFkaXVzX2FkZF9zZXJ2ZXJ8cmFkaXVzX2F1dGhfb3BlbnxyYWRpdXNfY2xvc2V8cmFkaXVzX2NvbmZpZ3xyYWRpdXNfY3JlYXRlX3JlcXVlc3R8cmFkaXVzX2N2dF9hZGRyfHJhZGl1c19jdnRfaW50fHJhZGl1c19jdnRfc3RyaW5nfHJhZGl1c19kZW1hbmdsZXxyYWRpdXNfZGVtYW5nbGVfbXBwZV9rZXl8cmFkaXVzX2dldF9hdHRyfHJhZGl1c19nZXRfdmVuZG9yX2F0dHJ8cmFkaXVzX3B1dF9hZGRyfHJhZGl1c19wdXRfYXR0cnxyYWRpdXNfcHV0X2ludHxyYWRpdXNfcHV0X3N0cmluZ3xyYWRpdXNfcHV0X3ZlbmRvcl9hZGRyfHJhZGl1c19wdXRfdmVuZG9yX2F0dHJ8cmFkaXVzX3B1dF92ZW5kb3JfaW50fHJhZGl1c19wdXRfdmVuZG9yX3N0cmluZ3xyYWRpdXNfcmVxdWVzdF9hdXRoZW50aWNhdG9yfHJhZGl1c19zZW5kX3JlcXVlc3R8cmFkaXVzX3NlcnZlcl9zZWNyZXR8cmFkaXVzX3N0cmVycm9yfHJhbmR8cmFuZ2V8cmFuZ2VleGNlcHRpb258cmFyX3dyYXBwZXJfY2FjaGVfc3RhdHN8cmFyYXJjaGl2ZXxyYXJlbnRyeXxyYXJleGNlcHRpb258cmF3dXJsZGVjb2RlfHJhd3VybGVuY29kZXxyZWFkX2V4aWZfZGF0YXxyZWFkZGlyfHJlYWRmaWxlfHJlYWRnemZpbGV8cmVhZGxpbmV8cmVhZGxpbmVfYWRkX2hpc3Rvcnl8cmVhZGxpbmVfY2FsbGJhY2tfaGFuZGxlcl9pbnN0YWxsfHJlYWRsaW5lX2NhbGxiYWNrX2hhbmRsZXJfcmVtb3ZlfHJlYWRsaW5lX2NhbGxiYWNrX3JlYWRfY2hhcnxyZWFkbGluZV9jbGVhcl9oaXN0b3J5fHJlYWRsaW5lX2NvbXBsZXRpb25fZnVuY3Rpb258cmVhZGxpbmVfaW5mb3xyZWFkbGluZV9saXN0X2hpc3Rvcnl8cmVhZGxpbmVfb25fbmV3X2xpbmV8cmVhZGxpbmVfcmVhZF9oaXN0b3J5fHJlYWRsaW5lX3JlZGlzcGxheXxyZWFkbGluZV93cml0ZV9oaXN0b3J5fHJlYWRsaW5rfHJlYWxwYXRofHJlYWxwYXRoX2NhY2hlX2dldHxyZWFscGF0aF9jYWNoZV9zaXplfHJlY29kZXxyZWNvZGVfZmlsZXxyZWNvZGVfc3RyaW5nfHJlY3Vyc2l2ZWFycmF5aXRlcmF0b3J8cmVjdXJzaXZlY2FjaGluZ2l0ZXJhdG9yfHJlY3Vyc2l2ZWNhbGxiYWNrZmlsdGVyaXRlcmF0b3J8cmVjdXJzaXZlZGlyZWN0b3J5aXRlcmF0b3J8cmVjdXJzaXZlZmlsdGVyaXRlcmF0b3J8cmVjdXJzaXZlaXRlcmF0b3J8cmVjdXJzaXZlaXRlcmF0b3JpdGVyYXRvcnxyZWN1cnNpdmVyZWdleGl0ZXJhdG9yfHJlY3Vyc2l2ZXRyZWVpdGVyYXRvcnxyZWZsZWN0aW9ufHJlZmxlY3Rpb25jbGFzc3xyZWZsZWN0aW9uZXhjZXB0aW9ufHJlZmxlY3Rpb25leHRlbnNpb258cmVmbGVjdGlvbmZ1bmN0aW9ufHJlZmxlY3Rpb25mdW5jdGlvbmFic3RyYWN0fHJlZmxlY3Rpb25tZXRob2R8cmVmbGVjdGlvbm9iamVjdHxyZWZsZWN0aW9ucGFyYW1ldGVyfHJlZmxlY3Rpb25wcm9wZXJ0eXxyZWZsZWN0b3J8cmVnZXhpdGVyYXRvcnxyZWdpc3Rlcl9zaHV0ZG93bl9mdW5jdGlvbnxyZWdpc3Rlcl90aWNrX2Z1bmN0aW9ufHJlbmFtZXxyZW5hbWVfZnVuY3Rpb258cmVxdWlyZXxyZXF1aXJlX29uY2V8cmVzZXR8cmVzZXRWYWx1ZXxyZXNvdXJjZWJ1bmRsZXxyZXN0b3JlX2Vycm9yX2hhbmRsZXJ8cmVzdG9yZV9leGNlcHRpb25faGFuZGxlcnxyZXN0b3JlX2luY2x1ZGVfcGF0aHxyZXR1cm58cmV3aW5kfHJld2luZGRpcnxybWRpcnxyb3VuZHxycG1fY2xvc2V8cnBtX2dldF90YWd8cnBtX2lzX3ZhbGlkfHJwbV9vcGVufHJwbV92ZXJzaW9ufHJyZF9jcmVhdGV8cnJkX2Vycm9yfHJyZF9mZXRjaHxycmRfZmlyc3R8cnJkX2dyYXBofHJyZF9pbmZvfHJyZF9sYXN0fHJyZF9sYXN0dXBkYXRlfHJyZF9yZXN0b3JlfHJyZF90dW5lfHJyZF91cGRhdGV8cnJkX3hwb3J0fHJyZGNyZWF0b3J8cnJkZ3JhcGh8cnJkdXBkYXRlcnxyc29ydHxydHJpbXxydW5raXRfY2xhc3NfYWRvcHR8cnVua2l0X2NsYXNzX2VtYW5jaXBhdGV8cnVua2l0X2NvbnN0YW50X2FkZHxydW5raXRfY29uc3RhbnRfcmVkZWZpbmV8cnVua2l0X2NvbnN0YW50X3JlbW92ZXxydW5raXRfZnVuY3Rpb25fYWRkfHJ1bmtpdF9mdW5jdGlvbl9jb3B5fHJ1bmtpdF9mdW5jdGlvbl9yZWRlZmluZXxydW5raXRfZnVuY3Rpb25fcmVtb3ZlfHJ1bmtpdF9mdW5jdGlvbl9yZW5hbWV8cnVua2l0X2ltcG9ydHxydW5raXRfbGludHxydW5raXRfbGludF9maWxlfHJ1bmtpdF9tZXRob2RfYWRkfHJ1bmtpdF9tZXRob2RfY29weXxydW5raXRfbWV0aG9kX3JlZGVmaW5lfHJ1bmtpdF9tZXRob2RfcmVtb3ZlfHJ1bmtpdF9tZXRob2RfcmVuYW1lfHJ1bmtpdF9yZXR1cm5fdmFsdWVfdXNlZHxydW5raXRfc2FuZGJveF9vdXRwdXRfaGFuZGxlcnxydW5raXRfc3VwZXJnbG9iYWxzfHJ1bnRpbWVleGNlcHRpb258c2FtY29ubmVjdGlvbl9jb21taXR8c2FtY29ubmVjdGlvbl9jb25uZWN0fHNhbWNvbm5lY3Rpb25fY29uc3RydWN0b3J8c2FtY29ubmVjdGlvbl9kaXNjb25uZWN0fHNhbWNvbm5lY3Rpb25fZXJybm98c2FtY29ubmVjdGlvbl9lcnJvcnxzYW1jb25uZWN0aW9uX2lzY29ubmVjdGVkfHNhbWNvbm5lY3Rpb25fcGVla3xzYW1jb25uZWN0aW9uX3BlZWthbGx8c2FtY29ubmVjdGlvbl9yZWNlaXZlfHNhbWNvbm5lY3Rpb25fcmVtb3ZlfHNhbWNvbm5lY3Rpb25fcm9sbGJhY2t8c2FtY29ubmVjdGlvbl9zZW5kfHNhbWNvbm5lY3Rpb25fc2V0RGVidWd8c2FtY29ubmVjdGlvbl9zdWJzY3JpYmV8c2FtY29ubmVjdGlvbl91bnN1YnNjcmliZXxzYW1tZXNzYWdlX2JvZHl8c2FtbWVzc2FnZV9jb25zdHJ1Y3RvcnxzYW1tZXNzYWdlX2hlYWRlcnxzY2FfY3JlYXRlZGF0YW9iamVjdHxzY2FfZ2V0c2VydmljZXxzY2FfbG9jYWxwcm94eV9jcmVhdGVkYXRhb2JqZWN0fHNjYV9zb2FwcHJveHlfY3JlYXRlZGF0YW9iamVjdHxzY2FuZGlyfHNkb19kYXNfY2hhbmdlc3VtbWFyeV9iZWdpbmxvZ2dpbmd8c2RvX2Rhc19jaGFuZ2VzdW1tYXJ5X2VuZGxvZ2dpbmd8c2RvX2Rhc19jaGFuZ2VzdW1tYXJ5X2dldGNoYW5nZWRkYXRhb2JqZWN0c3xzZG9fZGFzX2NoYW5nZXN1bW1hcnlfZ2V0Y2hhbmdldHlwZXxzZG9fZGFzX2NoYW5nZXN1bW1hcnlfZ2V0b2xkY29udGFpbmVyfHNkb19kYXNfY2hhbmdlc3VtbWFyeV9nZXRvbGR2YWx1ZXN8c2RvX2Rhc19jaGFuZ2VzdW1tYXJ5X2lzbG9nZ2luZ3xzZG9fZGFzX2RhdGFmYWN0b3J5X2FkZHByb3BlcnR5dG90eXBlfHNkb19kYXNfZGF0YWZhY3RvcnlfYWRkdHlwZXxzZG9fZGFzX2RhdGFmYWN0b3J5X2dldGRhdGFmYWN0b3J5fHNkb19kYXNfZGF0YW9iamVjdF9nZXRjaGFuZ2VzdW1tYXJ5fHNkb19kYXNfcmVsYXRpb25hbF9hcHBseWNoYW5nZXN8c2RvX2Rhc19yZWxhdGlvbmFsX2NvbnN0cnVjdHxzZG9fZGFzX3JlbGF0aW9uYWxfY3JlYXRlcm9vdGRhdGFvYmplY3R8c2RvX2Rhc19yZWxhdGlvbmFsX2V4ZWN1dGVwcmVwYXJlZHF1ZXJ5fHNkb19kYXNfcmVsYXRpb25hbF9leGVjdXRlcXVlcnl8c2RvX2Rhc19zZXR0aW5nX2dldGxpc3RpbmRleHxzZG9fZGFzX3NldHRpbmdfZ2V0cHJvcGVydHlpbmRleHxzZG9fZGFzX3NldHRpbmdfZ2V0cHJvcGVydHluYW1lfHNkb19kYXNfc2V0dGluZ19nZXR2YWx1ZXxzZG9fZGFzX3NldHRpbmdfaXNzZXR8c2RvX2Rhc194bWxfYWRkdHlwZXN8c2RvX2Rhc194bWxfY3JlYXRlfHNkb19kYXNfeG1sX2NyZWF0ZWRhdGFvYmplY3R8c2RvX2Rhc194bWxfY3JlYXRlZG9jdW1lbnR8c2RvX2Rhc194bWxfZG9jdW1lbnRfZ2V0cm9vdGRhdGFvYmplY3R8c2RvX2Rhc194bWxfZG9jdW1lbnRfZ2V0cm9vdGVsZW1lbnRuYW1lfHNkb19kYXNfeG1sX2RvY3VtZW50X2dldHJvb3RlbGVtZW50dXJpfHNkb19kYXNfeG1sX2RvY3VtZW50X3NldGVuY29kaW5nfHNkb19kYXNfeG1sX2RvY3VtZW50X3NldHhtbGRlY2xhcmF0aW9ufHNkb19kYXNfeG1sX2RvY3VtZW50X3NldHhtbHZlcnNpb258c2RvX2Rhc194bWxfbG9hZGZpbGV8c2RvX2Rhc194bWxfbG9hZHN0cmluZ3xzZG9fZGFzX3htbF9zYXZlZmlsZXxzZG9fZGFzX3htbF9zYXZlc3RyaW5nfHNkb19kYXRhZmFjdG9yeV9jcmVhdGV8c2RvX2RhdGFvYmplY3RfY2xlYXJ8c2RvX2RhdGFvYmplY3RfY3JlYXRlZGF0YW9iamVjdHxzZG9fZGF0YW9iamVjdF9nZXRjb250YWluZXJ8c2RvX2RhdGFvYmplY3RfZ2V0c2VxdWVuY2V8c2RvX2RhdGFvYmplY3RfZ2V0dHlwZW5hbWV8c2RvX2RhdGFvYmplY3RfZ2V0dHlwZW5hbWVzcGFjZXVyaXxzZG9fZXhjZXB0aW9uX2dldGNhdXNlfHNkb19saXN0X2luc2VydHxzZG9fbW9kZWxfcHJvcGVydHlfZ2V0Y29udGFpbmluZ3R5cGV8c2RvX21vZGVsX3Byb3BlcnR5X2dldGRlZmF1bHR8c2RvX21vZGVsX3Byb3BlcnR5X2dldG5hbWV8c2RvX21vZGVsX3Byb3BlcnR5X2dldHR5cGV8c2RvX21vZGVsX3Byb3BlcnR5X2lzY29udGFpbm1lbnR8c2RvX21vZGVsX3Byb3BlcnR5X2lzbWFueXxzZG9fbW9kZWxfcmVmbGVjdGlvbmRhdGFvYmplY3RfY29uc3RydWN0fHNkb19tb2RlbF9yZWZsZWN0aW9uZGF0YW9iamVjdF9leHBvcnR8c2RvX21vZGVsX3JlZmxlY3Rpb25kYXRhb2JqZWN0X2dldGNvbnRhaW5tZW50cHJvcGVydHl8c2RvX21vZGVsX3JlZmxlY3Rpb25kYXRhb2JqZWN0X2dldGluc3RhbmNlcHJvcGVydGllc3xzZG9fbW9kZWxfcmVmbGVjdGlvbmRhdGFvYmplY3RfZ2V0dHlwZXxzZG9fbW9kZWxfdHlwZV9nZXRiYXNldHlwZXxzZG9fbW9kZWxfdHlwZV9nZXRuYW1lfHNkb19tb2RlbF90eXBlX2dldG5hbWVzcGFjZXVyaXxzZG9fbW9kZWxfdHlwZV9nZXRwcm9wZXJ0aWVzfHNkb19tb2RlbF90eXBlX2dldHByb3BlcnR5fHNkb19tb2RlbF90eXBlX2lzYWJzdHJhY3R0eXBlfHNkb19tb2RlbF90eXBlX2lzZGF0YXR5cGV8c2RvX21vZGVsX3R5cGVfaXNpbnN0YW5jZXxzZG9fbW9kZWxfdHlwZV9pc29wZW50eXBlfHNkb19tb2RlbF90eXBlX2lzc2VxdWVuY2VkdHlwZXxzZG9fc2VxdWVuY2VfZ2V0cHJvcGVydHl8c2RvX3NlcXVlbmNlX2luc2VydHxzZG9fc2VxdWVuY2VfbW92ZXxzZWVrYWJsZWl0ZXJhdG9yfHNlbV9hY3F1aXJlfHNlbV9nZXR8c2VtX3JlbGVhc2V8c2VtX3JlbW92ZXxzZXJpYWxpemFibGV8c2VyaWFsaXplfHNlc3Npb25fY2FjaGVfZXhwaXJlfHNlc3Npb25fY2FjaGVfbGltaXRlcnxzZXNzaW9uX2NvbW1pdHxzZXNzaW9uX2RlY29kZXxzZXNzaW9uX2Rlc3Ryb3l8c2Vzc2lvbl9lbmNvZGV8c2Vzc2lvbl9nZXRfY29va2llX3BhcmFtc3xzZXNzaW9uX2lkfHNlc3Npb25faXNfcmVnaXN0ZXJlZHxzZXNzaW9uX21vZHVsZV9uYW1lfHNlc3Npb25fbmFtZXxzZXNzaW9uX3Bnc3FsX2FkZF9lcnJvcnxzZXNzaW9uX3Bnc3FsX2dldF9lcnJvcnxzZXNzaW9uX3Bnc3FsX2dldF9maWVsZHxzZXNzaW9uX3Bnc3FsX3Jlc2V0fHNlc3Npb25fcGdzcWxfc2V0X2ZpZWxkfHNlc3Npb25fcGdzcWxfc3RhdHVzfHNlc3Npb25fcmVnZW5lcmF0ZV9pZHxzZXNzaW9uX3JlZ2lzdGVyfHNlc3Npb25fc2F2ZV9wYXRofHNlc3Npb25fc2V0X2Nvb2tpZV9wYXJhbXN8c2Vzc2lvbl9zZXRfc2F2ZV9oYW5kbGVyfHNlc3Npb25fc3RhcnR8c2Vzc2lvbl91bnJlZ2lzdGVyfHNlc3Npb25fdW5zZXR8c2Vzc2lvbl93cml0ZV9jbG9zZXxzZXRDb3VudGVyQ2xhc3N8c2V0X2Vycm9yX2hhbmRsZXJ8c2V0X2V4Y2VwdGlvbl9oYW5kbGVyfHNldF9maWxlX2J1ZmZlcnxzZXRfaW5jbHVkZV9wYXRofHNldF9tYWdpY19xdW90ZXNfcnVudGltZXxzZXRfc29ja2V0X2Jsb2NraW5nfHNldF90aW1lX2xpbWl0fHNldGNvb2tpZXxzZXRsb2NhbGV8c2V0cHJvY3RpdGxlfHNldHJhd2Nvb2tpZXxzZXRzdGF0aWNwcm9wZXJ0eXZhbHVlfHNldHRocmVhZHRpdGxlfHNldHR5cGV8c2hhMXxzaGExX2ZpbGV8c2hlbGxfZXhlY3xzaG1fYXR0YWNofHNobV9kZXRhY2h8c2htX2dldF92YXJ8c2htX2hhc192YXJ8c2htX3B1dF92YXJ8c2htX3JlbW92ZXxzaG1fcmVtb3ZlX3ZhcnxzaG1vcF9jbG9zZXxzaG1vcF9kZWxldGV8c2htb3Bfb3BlbnxzaG1vcF9yZWFkfHNobW9wX3NpemV8c2htb3Bfd3JpdGV8c2hvd19zb3VyY2V8c2h1ZmZsZXxzaWduZXVybHBhaWVtZW50fHNpbWlsYXJfdGV4dHxzaW1wbGV4bWxfaW1wb3J0X2RvbXxzaW1wbGV4bWxfbG9hZF9maWxlfHNpbXBsZXhtbF9sb2FkX3N0cmluZ3xzaW1wbGV4bWxlbGVtZW50fHNpbXBsZXhtbGl0ZXJhdG9yfHNpbnxzaW5ofHNpemVvZnxzbGVlcHxzbm1wfHNubXAyX2dldHxzbm1wMl9nZXRuZXh0fHNubXAyX3JlYWxfd2Fsa3xzbm1wMl9zZXR8c25tcDJfd2Fsa3xzbm1wM19nZXR8c25tcDNfZ2V0bmV4dHxzbm1wM19yZWFsX3dhbGt8c25tcDNfc2V0fHNubXAzX3dhbGt8c25tcF9nZXRfcXVpY2tfcHJpbnR8c25tcF9nZXRfdmFsdWVyZXRyaWV2YWx8c25tcF9yZWFkX21pYnxzbm1wX3NldF9lbnVtX3ByaW50fHNubXBfc2V0X29pZF9udW1lcmljX3ByaW50fHNubXBfc2V0X29pZF9vdXRwdXRfZm9ybWF0fHNubXBfc2V0X3F1aWNrX3ByaW50fHNubXBfc2V0X3ZhbHVlcmV0cmlldmFsfHNubXBnZXR8c25tcGdldG5leHR8c25tcHJlYWx3YWxrfHNubXBzZXR8c25tcHdhbGt8c25tcHdhbGtvaWR8c29hcGNsaWVudHxzb2FwZmF1bHR8c29hcGhlYWRlcnxzb2FwcGFyYW18c29hcHNlcnZlcnxzb2FwdmFyfHNvY2tldF9hY2NlcHR8c29ja2V0X2JpbmR8c29ja2V0X2NsZWFyX2Vycm9yfHNvY2tldF9jbG9zZXxzb2NrZXRfY29ubmVjdHxzb2NrZXRfY3JlYXRlfHNvY2tldF9jcmVhdGVfbGlzdGVufHNvY2tldF9jcmVhdGVfcGFpcnxzb2NrZXRfZ2V0X29wdGlvbnxzb2NrZXRfZ2V0X3N0YXR1c3xzb2NrZXRfZ2V0cGVlcm5hbWV8c29ja2V0X2dldHNvY2tuYW1lfHNvY2tldF9sYXN0X2Vycm9yfHNvY2tldF9saXN0ZW58c29ja2V0X3JlYWR8c29ja2V0X3JlY3Z8c29ja2V0X3JlY3Zmcm9tfHNvY2tldF9zZWxlY3R8c29ja2V0X3NlbmR8c29ja2V0X3NlbmR0b3xzb2NrZXRfc2V0X2Jsb2NrfHNvY2tldF9zZXRfYmxvY2tpbmd8c29ja2V0X3NldF9ub25ibG9ja3xzb2NrZXRfc2V0X29wdGlvbnxzb2NrZXRfc2V0X3RpbWVvdXR8c29ja2V0X3NodXRkb3dufHNvY2tldF9zdHJlcnJvcnxzb2NrZXRfd3JpdGV8c29scl9nZXRfdmVyc2lvbnxzb2xyY2xpZW50fHNvbHJjbGllbnRleGNlcHRpb258c29scmRvY3VtZW50fHNvbHJkb2N1bWVudGZpZWxkfHNvbHJleGNlcHRpb258c29scmdlbmVyaWNyZXNwb25zZXxzb2xyaWxsZWdhbGFyZ3VtZW50ZXhjZXB0aW9ufHNvbHJpbGxlZ2Fsb3BlcmF0aW9uZXhjZXB0aW9ufHNvbHJpbnB1dGRvY3VtZW50fHNvbHJtb2RpZmlhYmxlcGFyYW1zfHNvbHJvYmplY3R8c29scnBhcmFtc3xzb2xycGluZ3Jlc3BvbnNlfHNvbHJxdWVyeXxzb2xycXVlcnlyZXNwb25zZXxzb2xycmVzcG9uc2V8c29scnVwZGF0ZXJlc3BvbnNlfHNvbHJ1dGlsc3xzb3J0fHNvdW5kZXh8c3BoaW54Y2xpZW50fHNwbF9hdXRvbG9hZHxzcGxfYXV0b2xvYWRfY2FsbHxzcGxfYXV0b2xvYWRfZXh0ZW5zaW9uc3xzcGxfYXV0b2xvYWRfZnVuY3Rpb25zfHNwbF9hdXRvbG9hZF9yZWdpc3RlcnxzcGxfYXV0b2xvYWRfdW5yZWdpc3RlcnxzcGxfY2xhc3Nlc3xzcGxfb2JqZWN0X2hhc2h8c3BsYm9vbHxzcGxkb3VibHlsaW5rZWRsaXN0fHNwbGVudW18c3BsZmlsZWluZm98c3BsZmlsZW9iamVjdHxzcGxmaXhlZGFycmF5fHNwbGZsb2F0fHNwbGhlYXB8c3BsaW50fHNwbGl0fHNwbGl0aXxzcGxtYXhoZWFwfHNwbG1pbmhlYXB8c3Bsb2JqZWN0c3RvcmFnZXxzcGxvYnNlcnZlcnxzcGxwcmlvcml0eXF1ZXVlfHNwbHF1ZXVlfHNwbHN0YWNrfHNwbHN0cmluZ3xzcGxzdWJqZWN0fHNwbHRlbXBmaWxlb2JqZWN0fHNwb29mY2hlY2tlcnxzcHJpbnRmfHNxbF9yZWdjYXNlfHNxbGl0ZTN8c3FsaXRlM3Jlc3VsdHxzcWxpdGUzc3RtdHxzcWxpdGVfYXJyYXlfcXVlcnl8c3FsaXRlX2J1c3lfdGltZW91dHxzcWxpdGVfY2hhbmdlc3xzcWxpdGVfY2xvc2V8c3FsaXRlX2NvbHVtbnxzcWxpdGVfY3JlYXRlX2FnZ3JlZ2F0ZXxzcWxpdGVfY3JlYXRlX2Z1bmN0aW9ufHNxbGl0ZV9jdXJyZW50fHNxbGl0ZV9lcnJvcl9zdHJpbmd8c3FsaXRlX2VzY2FwZV9zdHJpbmd8c3FsaXRlX2V4ZWN8c3FsaXRlX2ZhY3Rvcnl8c3FsaXRlX2ZldGNoX2FsbHxzcWxpdGVfZmV0Y2hfYXJyYXl8c3FsaXRlX2ZldGNoX2NvbHVtbl90eXBlc3xzcWxpdGVfZmV0Y2hfb2JqZWN0fHNxbGl0ZV9mZXRjaF9zaW5nbGV8c3FsaXRlX2ZldGNoX3N0cmluZ3xzcWxpdGVfZmllbGRfbmFtZXxzcWxpdGVfaGFzX21vcmV8c3FsaXRlX2hhc19wcmV2fHNxbGl0ZV9rZXl8c3FsaXRlX2xhc3RfZXJyb3J8c3FsaXRlX2xhc3RfaW5zZXJ0X3Jvd2lkfHNxbGl0ZV9saWJlbmNvZGluZ3xzcWxpdGVfbGlidmVyc2lvbnxzcWxpdGVfbmV4dHxzcWxpdGVfbnVtX2ZpZWxkc3xzcWxpdGVfbnVtX3Jvd3N8c3FsaXRlX29wZW58c3FsaXRlX3BvcGVufHNxbGl0ZV9wcmV2fHNxbGl0ZV9xdWVyeXxzcWxpdGVfcmV3aW5kfHNxbGl0ZV9zZWVrfHNxbGl0ZV9zaW5nbGVfcXVlcnl8c3FsaXRlX3VkZl9kZWNvZGVfYmluYXJ5fHNxbGl0ZV91ZGZfZW5jb2RlX2JpbmFyeXxzcWxpdGVfdW5idWZmZXJlZF9xdWVyeXxzcWxpdGVfdmFsaWR8c3FydHxzcmFuZHxzc2NhbmZ8c3NkZWVwX2Z1enp5X2NvbXBhcmV8c3NkZWVwX2Z1enp5X2hhc2h8c3NkZWVwX2Z1enp5X2hhc2hfZmlsZW5hbWV8c3NoMl9hdXRoX2hvc3RiYXNlZF9maWxlfHNzaDJfYXV0aF9ub25lfHNzaDJfYXV0aF9wYXNzd29yZHxzc2gyX2F1dGhfcHVia2V5X2ZpbGV8c3NoMl9jb25uZWN0fHNzaDJfZXhlY3xzc2gyX2ZldGNoX3N0cmVhbXxzc2gyX2ZpbmdlcnByaW50fHNzaDJfbWV0aG9kc19uZWdvdGlhdGVkfHNzaDJfcHVibGlja2V5X2FkZHxzc2gyX3B1YmxpY2tleV9pbml0fHNzaDJfcHVibGlja2V5X2xpc3R8c3NoMl9wdWJsaWNrZXlfcmVtb3ZlfHNzaDJfc2NwX3JlY3Z8c3NoMl9zY3Bfc2VuZHxzc2gyX3NmdHB8c3NoMl9zZnRwX2xzdGF0fHNzaDJfc2Z0cF9ta2Rpcnxzc2gyX3NmdHBfcmVhZGxpbmt8c3NoMl9zZnRwX3JlYWxwYXRofHNzaDJfc2Z0cF9yZW5hbWV8c3NoMl9zZnRwX3JtZGlyfHNzaDJfc2Z0cF9zdGF0fHNzaDJfc2Z0cF9zeW1saW5rfHNzaDJfc2Z0cF91bmxpbmt8c3NoMl9zaGVsbHxzc2gyX3R1bm5lbHxzdGF0fHN0YXRzX2Fic29sdXRlX2RldmlhdGlvbnxzdGF0c19jZGZfYmV0YXxzdGF0c19jZGZfYmlub21pYWx8c3RhdHNfY2RmX2NhdWNoeXxzdGF0c19jZGZfY2hpc3F1YXJlfHN0YXRzX2NkZl9leHBvbmVudGlhbHxzdGF0c19jZGZfZnxzdGF0c19jZGZfZ2FtbWF8c3RhdHNfY2RmX2xhcGxhY2V8c3RhdHNfY2RmX2xvZ2lzdGljfHN0YXRzX2NkZl9uZWdhdGl2ZV9iaW5vbWlhbHxzdGF0c19jZGZfbm9uY2VudHJhbF9jaGlzcXVhcmV8c3RhdHNfY2RmX25vbmNlbnRyYWxfZnxzdGF0c19jZGZfcG9pc3NvbnxzdGF0c19jZGZfdHxzdGF0c19jZGZfdW5pZm9ybXxzdGF0c19jZGZfd2VpYnVsbHxzdGF0c19jb3ZhcmlhbmNlfHN0YXRzX2Rlbl91bmlmb3JtfHN0YXRzX2RlbnNfYmV0YXxzdGF0c19kZW5zX2NhdWNoeXxzdGF0c19kZW5zX2NoaXNxdWFyZXxzdGF0c19kZW5zX2V4cG9uZW50aWFsfHN0YXRzX2RlbnNfZnxzdGF0c19kZW5zX2dhbW1hfHN0YXRzX2RlbnNfbGFwbGFjZXxzdGF0c19kZW5zX2xvZ2lzdGljfHN0YXRzX2RlbnNfbmVnYXRpdmVfYmlub21pYWx8c3RhdHNfZGVuc19ub3JtYWx8c3RhdHNfZGVuc19wbWZfYmlub21pYWx8c3RhdHNfZGVuc19wbWZfaHlwZXJnZW9tZXRyaWN8c3RhdHNfZGVuc19wbWZfcG9pc3NvbnxzdGF0c19kZW5zX3R8c3RhdHNfZGVuc193ZWlidWxsfHN0YXRzX2hhcm1vbmljX21lYW58c3RhdHNfa3VydG9zaXN8c3RhdHNfcmFuZF9nZW5fYmV0YXxzdGF0c19yYW5kX2dlbl9jaGlzcXVhcmV8c3RhdHNfcmFuZF9nZW5fZXhwb25lbnRpYWx8c3RhdHNfcmFuZF9nZW5fZnxzdGF0c19yYW5kX2dlbl9mdW5pZm9ybXxzdGF0c19yYW5kX2dlbl9nYW1tYXxzdGF0c19yYW5kX2dlbl9pYmlub21pYWx8c3RhdHNfcmFuZF9nZW5faWJpbm9taWFsX25lZ2F0aXZlfHN0YXRzX3JhbmRfZ2VuX2ludHxzdGF0c19yYW5kX2dlbl9pcG9pc3NvbnxzdGF0c19yYW5kX2dlbl9pdW5pZm9ybXxzdGF0c19yYW5kX2dlbl9ub25jZW5yYWxfY2hpc3F1YXJlfHN0YXRzX3JhbmRfZ2VuX25vbmNlbnRyYWxfZnxzdGF0c19yYW5kX2dlbl9ub25jZW50cmFsX3R8c3RhdHNfcmFuZF9nZW5fbm9ybWFsfHN0YXRzX3JhbmRfZ2VuX3R8c3RhdHNfcmFuZF9nZXRfc2VlZHN8c3RhdHNfcmFuZF9waHJhc2VfdG9fc2VlZHN8c3RhdHNfcmFuZF9yYW5mfHN0YXRzX3JhbmRfc2V0YWxsfHN0YXRzX3NrZXd8c3RhdHNfc3RhbmRhcmRfZGV2aWF0aW9ufHN0YXRzX3N0YXRfYmlub21pYWxfY29lZnxzdGF0c19zdGF0X2NvcnJlbGF0aW9ufHN0YXRzX3N0YXRfZ2VubmNofHN0YXRzX3N0YXRfaW5kZXBlbmRlbnRfdHxzdGF0c19zdGF0X2lubmVycHJvZHVjdHxzdGF0c19zdGF0X25vbmNlbnRyYWxfdHxzdGF0c19zdGF0X3BhaXJlZF90fHN0YXRzX3N0YXRfcGVyY2VudGlsZXxzdGF0c19zdGF0X3Bvd2Vyc3VtfHN0YXRzX3ZhcmlhbmNlfHN0b21wfHN0b21wX2Nvbm5lY3RfZXJyb3J8c3RvbXBfdmVyc2lvbnxzdG9tcGV4Y2VwdGlvbnxzdG9tcGZyYW1lfHN0cl9nZXRjc3Z8c3RyX2lyZXBsYWNlfHN0cl9wYWR8c3RyX3JlcGVhdHxzdHJfcmVwbGFjZXxzdHJfcm90MTN8c3RyX3NodWZmbGV8c3RyX3NwbGl0fHN0cl93b3JkX2NvdW50fHN0cmNhc2VjbXB8c3RyY2hyfHN0cmNtcHxzdHJjb2xsfHN0cmNzcG58c3RyZWFtX2J1Y2tldF9hcHBlbmR8c3RyZWFtX2J1Y2tldF9tYWtlX3dyaXRlYWJsZXxzdHJlYW1fYnVja2V0X25ld3xzdHJlYW1fYnVja2V0X3ByZXBlbmR8c3RyZWFtX2NvbnRleHRfY3JlYXRlfHN0cmVhbV9jb250ZXh0X2dldF9kZWZhdWx0fHN0cmVhbV9jb250ZXh0X2dldF9vcHRpb25zfHN0cmVhbV9jb250ZXh0X2dldF9wYXJhbXN8c3RyZWFtX2NvbnRleHRfc2V0X2RlZmF1bHR8c3RyZWFtX2NvbnRleHRfc2V0X29wdGlvbnxzdHJlYW1fY29udGV4dF9zZXRfcGFyYW1zfHN0cmVhbV9jb3B5X3RvX3N0cmVhbXxzdHJlYW1fZW5jb2Rpbmd8c3RyZWFtX2ZpbHRlcl9hcHBlbmR8c3RyZWFtX2ZpbHRlcl9wcmVwZW5kfHN0cmVhbV9maWx0ZXJfcmVnaXN0ZXJ8c3RyZWFtX2ZpbHRlcl9yZW1vdmV8c3RyZWFtX2dldF9jb250ZW50c3xzdHJlYW1fZ2V0X2ZpbHRlcnN8c3RyZWFtX2dldF9saW5lfHN0cmVhbV9nZXRfbWV0YV9kYXRhfHN0cmVhbV9nZXRfdHJhbnNwb3J0c3xzdHJlYW1fZ2V0X3dyYXBwZXJzfHN0cmVhbV9pc19sb2NhbHxzdHJlYW1fbm90aWZpY2F0aW9uX2NhbGxiYWNrfHN0cmVhbV9yZWdpc3Rlcl93cmFwcGVyfHN0cmVhbV9yZXNvbHZlX2luY2x1ZGVfcGF0aHxzdHJlYW1fc2VsZWN0fHN0cmVhbV9zZXRfYmxvY2tpbmd8c3RyZWFtX3NldF9yZWFkX2J1ZmZlcnxzdHJlYW1fc2V0X3RpbWVvdXR8c3RyZWFtX3NldF93cml0ZV9idWZmZXJ8c3RyZWFtX3NvY2tldF9hY2NlcHR8c3RyZWFtX3NvY2tldF9jbGllbnR8c3RyZWFtX3NvY2tldF9lbmFibGVfY3J5cHRvfHN0cmVhbV9zb2NrZXRfZ2V0X25hbWV8c3RyZWFtX3NvY2tldF9wYWlyfHN0cmVhbV9zb2NrZXRfcmVjdmZyb218c3RyZWFtX3NvY2tldF9zZW5kdG98c3RyZWFtX3NvY2tldF9zZXJ2ZXJ8c3RyZWFtX3NvY2tldF9zaHV0ZG93bnxzdHJlYW1fc3VwcG9ydHNfbG9ja3xzdHJlYW1fd3JhcHBlcl9yZWdpc3RlcnxzdHJlYW1fd3JhcHBlcl9yZXN0b3JlfHN0cmVhbV93cmFwcGVyX3VucmVnaXN0ZXJ8c3RyZWFtd3JhcHBlcnxzdHJmdGltZXxzdHJpcF90YWdzfHN0cmlwY3NsYXNoZXN8c3RyaXBvc3xzdHJpcHNsYXNoZXN8c3RyaXN0cnxzdHJsZW58c3RybmF0Y2FzZWNtcHxzdHJuYXRjbXB8c3RybmNhc2VjbXB8c3RybmNtcHxzdHJwYnJrfHN0cnBvc3xzdHJwdGltZXxzdHJyY2hyfHN0cnJldnxzdHJyaXBvc3xzdHJycG9zfHN0cnNwbnxzdHJzdHJ8c3RydG9rfHN0cnRvbG93ZXJ8c3RydG90aW1lfHN0cnRvdXBwZXJ8c3RydHJ8c3RydmFsfHN1YnN0cnxzdWJzdHJfY29tcGFyZXxzdWJzdHJfY291bnR8c3Vic3RyX3JlcGxhY2V8c3ZtfHN2bW1vZGVsfHN2bl9hZGR8c3ZuX2F1dGhfZ2V0X3BhcmFtZXRlcnxzdm5fYXV0aF9zZXRfcGFyYW1ldGVyfHN2bl9ibGFtZXxzdm5fY2F0fHN2bl9jaGVja291dHxzdm5fY2xlYW51cHxzdm5fY2xpZW50X3ZlcnNpb258c3ZuX2NvbW1pdHxzdm5fZGVsZXRlfHN2bl9kaWZmfHN2bl9leHBvcnR8c3ZuX2ZzX2Fib3J0X3R4bnxzdm5fZnNfYXBwbHlfdGV4dHxzdm5fZnNfYmVnaW5fdHhuMnxzdm5fZnNfY2hhbmdlX25vZGVfcHJvcHxzdm5fZnNfY2hlY2tfcGF0aHxzdm5fZnNfY29udGVudHNfY2hhbmdlZHxzdm5fZnNfY29weXxzdm5fZnNfZGVsZXRlfHN2bl9mc19kaXJfZW50cmllc3xzdm5fZnNfZmlsZV9jb250ZW50c3xzdm5fZnNfZmlsZV9sZW5ndGh8c3ZuX2ZzX2lzX2Rpcnxzdm5fZnNfaXNfZmlsZXxzdm5fZnNfbWFrZV9kaXJ8c3ZuX2ZzX21ha2VfZmlsZXxzdm5fZnNfbm9kZV9jcmVhdGVkX3Jldnxzdm5fZnNfbm9kZV9wcm9wfHN2bl9mc19wcm9wc19jaGFuZ2VkfHN2bl9mc19yZXZpc2lvbl9wcm9wfHN2bl9mc19yZXZpc2lvbl9yb290fHN2bl9mc190eG5fcm9vdHxzdm5fZnNfeW91bmdlc3RfcmV2fHN2bl9pbXBvcnR8c3ZuX2xvZ3xzdm5fbHN8c3ZuX21rZGlyfHN2bl9yZXBvc19jcmVhdGV8c3ZuX3JlcG9zX2ZzfHN2bl9yZXBvc19mc19iZWdpbl90eG5fZm9yX2NvbW1pdHxzdm5fcmVwb3NfZnNfY29tbWl0X3R4bnxzdm5fcmVwb3NfaG90Y29weXxzdm5fcmVwb3Nfb3Blbnxzdm5fcmVwb3NfcmVjb3Zlcnxzdm5fcmV2ZXJ0fHN2bl9zdGF0dXN8c3ZuX3VwZGF0ZXxzd2ZfYWN0aW9uZ2V0dXJsfHN3Zl9hY3Rpb25nb3RvZnJhbWV8c3dmX2FjdGlvbmdvdG9sYWJlbHxzd2ZfYWN0aW9ubmV4dGZyYW1lfHN3Zl9hY3Rpb25wbGF5fHN3Zl9hY3Rpb25wcmV2ZnJhbWV8c3dmX2FjdGlvbnNldHRhcmdldHxzd2ZfYWN0aW9uc3RvcHxzd2ZfYWN0aW9udG9nZ2xlcXVhbGl0eXxzd2ZfYWN0aW9ud2FpdGZvcmZyYW1lfHN3Zl9hZGRidXR0b25yZWNvcmR8c3dmX2FkZGNvbG9yfHN3Zl9jbG9zZWZpbGV8c3dmX2RlZmluZWJpdG1hcHxzd2ZfZGVmaW5lZm9udHxzd2ZfZGVmaW5lbGluZXxzd2ZfZGVmaW5lcG9seXxzd2ZfZGVmaW5lcmVjdHxzd2ZfZGVmaW5ldGV4dHxzd2ZfZW5kYnV0dG9ufHN3Zl9lbmRkb2FjdGlvbnxzd2ZfZW5kc2hhcGV8c3dmX2VuZHN5bWJvbHxzd2ZfZm9udHNpemV8c3dmX2ZvbnRzbGFudHxzd2ZfZm9udHRyYWNraW5nfHN3Zl9nZXRiaXRtYXBpbmZvfHN3Zl9nZXRmb250aW5mb3xzd2ZfZ2V0ZnJhbWV8c3dmX2xhYmVsZnJhbWV8c3dmX2xvb2thdHxzd2ZfbW9kaWZ5b2JqZWN0fHN3Zl9tdWxjb2xvcnxzd2ZfbmV4dGlkfHN3Zl9vbmNvbmRpdGlvbnxzd2Zfb3BlbmZpbGV8c3dmX29ydGhvfHN3Zl9vcnRobzJ8c3dmX3BlcnNwZWN0aXZlfHN3Zl9wbGFjZW9iamVjdHxzd2ZfcG9sYXJ2aWV3fHN3Zl9wb3BtYXRyaXh8c3dmX3Bvc3JvdW5kfHN3Zl9wdXNobWF0cml4fHN3Zl9yZW1vdmVvYmplY3R8c3dmX3JvdGF0ZXxzd2Zfc2NhbGV8c3dmX3NldGZvbnR8c3dmX3NldGZyYW1lfHN3Zl9zaGFwZWFyY3xzd2Zfc2hhcGVjdXJ2ZXRvfHN3Zl9zaGFwZWN1cnZldG8zfHN3Zl9zaGFwZWZpbGxiaXRtYXBjbGlwfHN3Zl9zaGFwZWZpbGxiaXRtYXB0aWxlfHN3Zl9zaGFwZWZpbGxvZmZ8c3dmX3NoYXBlZmlsbHNvbGlkfHN3Zl9zaGFwZWxpbmVzb2xpZHxzd2Zfc2hhcGVsaW5ldG98c3dmX3NoYXBlbW92ZXRvfHN3Zl9zaG93ZnJhbWV8c3dmX3N0YXJ0YnV0dG9ufHN3Zl9zdGFydGRvYWN0aW9ufHN3Zl9zdGFydHNoYXBlfHN3Zl9zdGFydHN5bWJvbHxzd2ZfdGV4dHdpZHRofHN3Zl90cmFuc2xhdGV8c3dmX3ZpZXdwb3J0fHN3ZmFjdGlvbnxzd2ZiaXRtYXB8c3dmYnV0dG9ufHN3ZmRpc3BsYXlpdGVtfHN3ZmZpbGx8c3dmZm9udHxzd2Zmb250Y2hhcnxzd2ZncmFkaWVudHxzd2Ztb3JwaHxzd2Ztb3ZpZXxzd2ZwcmVidWlsdGNsaXB8c3dmc2hhcGV8c3dmc291bmR8c3dmc291bmRpbnN0YW5jZXxzd2ZzcHJpdGV8c3dmdGV4dHxzd2Z0ZXh0ZmllbGR8c3dmdmlkZW9zdHJlYW18c3dpc2hfY29uc3RydWN0fHN3aXNoX2dldG1ldGFsaXN0fHN3aXNoX2dldHByb3BlcnR5bGlzdHxzd2lzaF9wcmVwYXJlfHN3aXNoX3F1ZXJ5fHN3aXNocmVzdWx0X2dldG1ldGFsaXN0fHN3aXNocmVzdWx0X3N0ZW18c3dpc2hyZXN1bHRzX2dldHBhcnNlZHdvcmRzfHN3aXNocmVzdWx0c19nZXRyZW1vdmVkc3RvcHdvcmRzfHN3aXNocmVzdWx0c19uZXh0cmVzdWx0fHN3aXNocmVzdWx0c19zZWVrcmVzdWx0fHN3aXNoc2VhcmNoX2V4ZWN1dGV8c3dpc2hzZWFyY2hfcmVzZXRsaW1pdHxzd2lzaHNlYXJjaF9zZXRsaW1pdHxzd2lzaHNlYXJjaF9zZXRwaHJhc2VkZWxpbWl0ZXJ8c3dpc2hzZWFyY2hfc2V0c29ydHxzd2lzaHNlYXJjaF9zZXRzdHJ1Y3R1cmV8c3liYXNlX2FmZmVjdGVkX3Jvd3N8c3liYXNlX2Nsb3NlfHN5YmFzZV9jb25uZWN0fHN5YmFzZV9kYXRhX3NlZWt8c3liYXNlX2RlYWRsb2NrX3JldHJ5X2NvdW50fHN5YmFzZV9mZXRjaF9hcnJheXxzeWJhc2VfZmV0Y2hfYXNzb2N8c3liYXNlX2ZldGNoX2ZpZWxkfHN5YmFzZV9mZXRjaF9vYmplY3R8c3liYXNlX2ZldGNoX3Jvd3xzeWJhc2VfZmllbGRfc2Vla3xzeWJhc2VfZnJlZV9yZXN1bHR8c3liYXNlX2dldF9sYXN0X21lc3NhZ2V8c3liYXNlX21pbl9jbGllbnRfc2V2ZXJpdHl8c3liYXNlX21pbl9lcnJvcl9zZXZlcml0eXxzeWJhc2VfbWluX21lc3NhZ2Vfc2V2ZXJpdHl8c3liYXNlX21pbl9zZXJ2ZXJfc2V2ZXJpdHl8c3liYXNlX251bV9maWVsZHN8c3liYXNlX251bV9yb3dzfHN5YmFzZV9wY29ubmVjdHxzeWJhc2VfcXVlcnl8c3liYXNlX3Jlc3VsdHxzeWJhc2Vfc2VsZWN0X2RifHN5YmFzZV9zZXRfbWVzc2FnZV9oYW5kbGVyfHN5YmFzZV91bmJ1ZmZlcmVkX3F1ZXJ5fHN5bWxpbmt8c3lzX2dldF90ZW1wX2RpcnxzeXNfZ2V0bG9hZGF2Z3xzeXNsb2d8c3lzdGVtfHRhZ3x0YW58dGFuaHx0Y3B3cmFwX2NoZWNrfHRlbXBuYW18dGV4dGRvbWFpbnx0aWR5fHRpZHlfYWNjZXNzX2NvdW50fHRpZHlfY29uZmlnX2NvdW50fHRpZHlfZGlhZ25vc2V8dGlkeV9lcnJvcl9jb3VudHx0aWR5X2dldF9lcnJvcl9idWZmZXJ8dGlkeV9nZXRfb3V0cHV0fHRpZHlfbG9hZF9jb25maWd8dGlkeV9yZXNldF9jb25maWd8dGlkeV9zYXZlX2NvbmZpZ3x0aWR5X3NldF9lbmNvZGluZ3x0aWR5X3NldG9wdHx0aWR5X3dhcm5pbmdfY291bnR8dGlkeW5vZGV8dGltZXx0aW1lX25hbm9zbGVlcHx0aW1lX3NsZWVwX3VudGlsfHRpbWV6b25lX2FiYnJldmlhdGlvbnNfbGlzdHx0aW1lem9uZV9pZGVudGlmaWVyc19saXN0fHRpbWV6b25lX2xvY2F0aW9uX2dldHx0aW1lem9uZV9uYW1lX2Zyb21fYWJicnx0aW1lem9uZV9uYW1lX2dldHx0aW1lem9uZV9vZmZzZXRfZ2V0fHRpbWV6b25lX29wZW58dGltZXpvbmVfdHJhbnNpdGlvbnNfZ2V0fHRpbWV6b25lX3ZlcnNpb25fZ2V0fHRtcGZpbGV8dG9rZW5fZ2V0X2FsbHx0b2tlbl9uYW1lfHRva3lvdHlyYW50fHRva3lvdHlyYW50cXVlcnl8dG9reW90eXJhbnR0YWJsZXx0b3N0cmluZ3x0b3N0cmluZ3x0b3VjaHx0cmFuc2xpdGVyYXRvcnx0cmF2ZXJzYWJsZXx0cmlnZ2VyX2Vycm9yfHRyaW18dWFzb3J0fHVjZmlyc3R8dWN3b3Jkc3x1ZG1fYWRkX3NlYXJjaF9saW1pdHx1ZG1fYWxsb2NfYWdlbnR8dWRtX2FsbG9jX2FnZW50X2FycmF5fHVkbV9hcGlfdmVyc2lvbnx1ZG1fY2F0X2xpc3R8dWRtX2NhdF9wYXRofHVkbV9jaGVja19jaGFyc2V0fHVkbV9jaGVja19zdG9yZWR8dWRtX2NsZWFyX3NlYXJjaF9saW1pdHN8dWRtX2Nsb3NlX3N0b3JlZHx1ZG1fY3JjMzJ8dWRtX2Vycm5vfHVkbV9lcnJvcnx1ZG1fZmluZHx1ZG1fZnJlZV9hZ2VudHx1ZG1fZnJlZV9pc3BlbGxfZGF0YXx1ZG1fZnJlZV9yZXN8dWRtX2dldF9kb2NfY291bnR8dWRtX2dldF9yZXNfZmllbGR8dWRtX2dldF9yZXNfcGFyYW18dWRtX2hhc2gzMnx1ZG1fbG9hZF9pc3BlbGxfZGF0YXx1ZG1fb3Blbl9zdG9yZWR8dWRtX3NldF9hZ2VudF9wYXJhbXx1a3NvcnR8dW1hc2t8dW5kZXJmbG93ZXhjZXB0aW9ufHVuZXhwZWN0ZWR2YWx1ZWV4Y2VwdGlvbnx1bmlxaWR8dW5peHRvamR8dW5saW5rfHVucGFja3x1bnJlZ2lzdGVyX3RpY2tfZnVuY3Rpb258dW5zZXJpYWxpemV8dW5zZXR8dXJsZGVjb2RlfHVybGVuY29kZXx1c2Vfc29hcF9lcnJvcl9oYW5kbGVyfHVzZXJfZXJyb3J8dXNsZWVwfHVzb3J0fHV0ZjhfZGVjb2RlfHV0ZjhfZW5jb2RlfHY4anN8djhqc2V4Y2VwdGlvbnx2YXJfZHVtcHx2YXJfZXhwb3J0fHZhcmlhbnR8dmFyaWFudF9hYnN8dmFyaWFudF9hZGR8dmFyaWFudF9hbmR8dmFyaWFudF9jYXN0fHZhcmlhbnRfY2F0fHZhcmlhbnRfY21wfHZhcmlhbnRfZGF0ZV9mcm9tX3RpbWVzdGFtcHx2YXJpYW50X2RhdGVfdG9fdGltZXN0YW1wfHZhcmlhbnRfZGl2fHZhcmlhbnRfZXF2fHZhcmlhbnRfZml4fHZhcmlhbnRfZ2V0X3R5cGV8dmFyaWFudF9pZGl2fHZhcmlhbnRfaW1wfHZhcmlhbnRfaW50fHZhcmlhbnRfbW9kfHZhcmlhbnRfbXVsfHZhcmlhbnRfbmVnfHZhcmlhbnRfbm90fHZhcmlhbnRfb3J8dmFyaWFudF9wb3d8dmFyaWFudF9yb3VuZHx2YXJpYW50X3NldHx2YXJpYW50X3NldF90eXBlfHZhcmlhbnRfc3VifHZhcmlhbnRfeG9yfHZlcnNpb25fY29tcGFyZXx2ZnByaW50Znx2aXJ0dWFsfHZwb3BtYWlsX2FkZF9hbGlhc19kb21haW58dnBvcG1haWxfYWRkX2FsaWFzX2RvbWFpbl9leHx2cG9wbWFpbF9hZGRfZG9tYWlufHZwb3BtYWlsX2FkZF9kb21haW5fZXh8dnBvcG1haWxfYWRkX3VzZXJ8dnBvcG1haWxfYWxpYXNfYWRkfHZwb3BtYWlsX2FsaWFzX2RlbHx2cG9wbWFpbF9hbGlhc19kZWxfZG9tYWlufHZwb3BtYWlsX2FsaWFzX2dldHx2cG9wbWFpbF9hbGlhc19nZXRfYWxsfHZwb3BtYWlsX2F1dGhfdXNlcnx2cG9wbWFpbF9kZWxfZG9tYWlufHZwb3BtYWlsX2RlbF9kb21haW5fZXh8dnBvcG1haWxfZGVsX3VzZXJ8dnBvcG1haWxfZXJyb3J8dnBvcG1haWxfcGFzc3dkfHZwb3BtYWlsX3NldF91c2VyX3F1b3RhfHZwcmludGZ8dnNwcmludGZ8dzMyYXBpX2RlZnR5cGV8dzMyYXBpX2luaXRfZHR5cGV8dzMyYXBpX2ludm9rZV9mdW5jdGlvbnx3MzJhcGlfcmVnaXN0ZXJfZnVuY3Rpb258dzMyYXBpX3NldF9jYWxsX21ldGhvZHx3ZGR4X2FkZF92YXJzfHdkZHhfZGVzZXJpYWxpemV8d2RkeF9wYWNrZXRfZW5kfHdkZHhfcGFja2V0X3N0YXJ0fHdkZHhfc2VyaWFsaXplX3ZhbHVlfHdkZHhfc2VyaWFsaXplX3ZhcnN8d2luMzJfY29udGludWVfc2VydmljZXx3aW4zMl9jcmVhdGVfc2VydmljZXx3aW4zMl9kZWxldGVfc2VydmljZXx3aW4zMl9nZXRfbGFzdF9jb250cm9sX21lc3NhZ2V8d2luMzJfcGF1c2Vfc2VydmljZXx3aW4zMl9wc19saXN0X3Byb2NzfHdpbjMyX3BzX3N0YXRfbWVtfHdpbjMyX3BzX3N0YXRfcHJvY3x3aW4zMl9xdWVyeV9zZXJ2aWNlX3N0YXR1c3x3aW4zMl9zZXRfc2VydmljZV9zdGF0dXN8d2luMzJfc3RhcnRfc2VydmljZXx3aW4zMl9zdGFydF9zZXJ2aWNlX2N0cmxfZGlzcGF0Y2hlcnx3aW4zMl9zdG9wX3NlcnZpY2V8d2luY2FjaGVfZmNhY2hlX2ZpbGVpbmZvfHdpbmNhY2hlX2ZjYWNoZV9tZW1pbmZvfHdpbmNhY2hlX2xvY2t8d2luY2FjaGVfb2NhY2hlX2ZpbGVpbmZvfHdpbmNhY2hlX29jYWNoZV9tZW1pbmZvfHdpbmNhY2hlX3JlZnJlc2hfaWZfY2hhbmdlZHx3aW5jYWNoZV9ycGxpc3RfZmlsZWluZm98d2luY2FjaGVfcnBsaXN0X21lbWluZm98d2luY2FjaGVfc2NhY2hlX2luZm98d2luY2FjaGVfc2NhY2hlX21lbWluZm98d2luY2FjaGVfdWNhY2hlX2FkZHx3aW5jYWNoZV91Y2FjaGVfY2FzfHdpbmNhY2hlX3VjYWNoZV9jbGVhcnx3aW5jYWNoZV91Y2FjaGVfZGVjfHdpbmNhY2hlX3VjYWNoZV9kZWxldGV8d2luY2FjaGVfdWNhY2hlX2V4aXN0c3x3aW5jYWNoZV91Y2FjaGVfZ2V0fHdpbmNhY2hlX3VjYWNoZV9pbmN8d2luY2FjaGVfdWNhY2hlX2luZm98d2luY2FjaGVfdWNhY2hlX21lbWluZm98d2luY2FjaGVfdWNhY2hlX3NldHx3aW5jYWNoZV91bmxvY2t8d29yZHdyYXB8eGF0dHJfZ2V0fHhhdHRyX2xpc3R8eGF0dHJfcmVtb3ZlfHhhdHRyX3NldHx4YXR0cl9zdXBwb3J0ZWR8eGRpZmZfZmlsZV9iZGlmZnx4ZGlmZl9maWxlX2JkaWZmX3NpemV8eGRpZmZfZmlsZV9icGF0Y2h8eGRpZmZfZmlsZV9kaWZmfHhkaWZmX2ZpbGVfZGlmZl9iaW5hcnl8eGRpZmZfZmlsZV9tZXJnZTN8eGRpZmZfZmlsZV9wYXRjaHx4ZGlmZl9maWxlX3BhdGNoX2JpbmFyeXx4ZGlmZl9maWxlX3JhYmRpZmZ8eGRpZmZfc3RyaW5nX2JkaWZmfHhkaWZmX3N0cmluZ19iZGlmZl9zaXplfHhkaWZmX3N0cmluZ19icGF0Y2h8eGRpZmZfc3RyaW5nX2RpZmZ8eGRpZmZfc3RyaW5nX2RpZmZfYmluYXJ5fHhkaWZmX3N0cmluZ19tZXJnZTN8eGRpZmZfc3RyaW5nX3BhdGNofHhkaWZmX3N0cmluZ19wYXRjaF9iaW5hcnl8eGRpZmZfc3RyaW5nX3JhYmRpZmZ8eGhwcm9mX2Rpc2FibGV8eGhwcm9mX2VuYWJsZXx4aHByb2Zfc2FtcGxlX2Rpc2FibGV8eGhwcm9mX3NhbXBsZV9lbmFibGV8eG1sX2Vycm9yX3N0cmluZ3x4bWxfZ2V0X2N1cnJlbnRfYnl0ZV9pbmRleHx4bWxfZ2V0X2N1cnJlbnRfY29sdW1uX251bWJlcnx4bWxfZ2V0X2N1cnJlbnRfbGluZV9udW1iZXJ8eG1sX2dldF9lcnJvcl9jb2RlfHhtbF9wYXJzZXx4bWxfcGFyc2VfaW50b19zdHJ1Y3R8eG1sX3BhcnNlcl9jcmVhdGV8eG1sX3BhcnNlcl9jcmVhdGVfbnN8eG1sX3BhcnNlcl9mcmVlfHhtbF9wYXJzZXJfZ2V0X29wdGlvbnx4bWxfcGFyc2VyX3NldF9vcHRpb258eG1sX3NldF9jaGFyYWN0ZXJfZGF0YV9oYW5kbGVyfHhtbF9zZXRfZGVmYXVsdF9oYW5kbGVyfHhtbF9zZXRfZWxlbWVudF9oYW5kbGVyfHhtbF9zZXRfZW5kX25hbWVzcGFjZV9kZWNsX2hhbmRsZXJ8eG1sX3NldF9leHRlcm5hbF9lbnRpdHlfcmVmX2hhbmRsZXJ8eG1sX3NldF9ub3RhdGlvbl9kZWNsX2hhbmRsZXJ8eG1sX3NldF9vYmplY3R8eG1sX3NldF9wcm9jZXNzaW5nX2luc3RydWN0aW9uX2hhbmRsZXJ8eG1sX3NldF9zdGFydF9uYW1lc3BhY2VfZGVjbF9oYW5kbGVyfHhtbF9zZXRfdW5wYXJzZWRfZW50aXR5X2RlY2xfaGFuZGxlcnx4bWxyZWFkZXJ8eG1scnBjX2RlY29kZXx4bWxycGNfZGVjb2RlX3JlcXVlc3R8eG1scnBjX2VuY29kZXx4bWxycGNfZW5jb2RlX3JlcXVlc3R8eG1scnBjX2dldF90eXBlfHhtbHJwY19pc19mYXVsdHx4bWxycGNfcGFyc2VfbWV0aG9kX2Rlc2NyaXB0aW9uc3x4bWxycGNfc2VydmVyX2FkZF9pbnRyb3NwZWN0aW9uX2RhdGF8eG1scnBjX3NlcnZlcl9jYWxsX21ldGhvZHx4bWxycGNfc2VydmVyX2NyZWF0ZXx4bWxycGNfc2VydmVyX2Rlc3Ryb3l8eG1scnBjX3NlcnZlcl9yZWdpc3Rlcl9pbnRyb3NwZWN0aW9uX2NhbGxiYWNrfHhtbHJwY19zZXJ2ZXJfcmVnaXN0ZXJfbWV0aG9kfHhtbHJwY19zZXRfdHlwZXx4bWx3cml0ZXJfZW5kX2F0dHJpYnV0ZXx4bWx3cml0ZXJfZW5kX2NkYXRhfHhtbHdyaXRlcl9lbmRfY29tbWVudHx4bWx3cml0ZXJfZW5kX2RvY3VtZW50fHhtbHdyaXRlcl9lbmRfZHRkfHhtbHdyaXRlcl9lbmRfZHRkX2F0dGxpc3R8eG1sd3JpdGVyX2VuZF9kdGRfZWxlbWVudHx4bWx3cml0ZXJfZW5kX2R0ZF9lbnRpdHl8eG1sd3JpdGVyX2VuZF9lbGVtZW50fHhtbHdyaXRlcl9lbmRfcGl8eG1sd3JpdGVyX2ZsdXNofHhtbHdyaXRlcl9mdWxsX2VuZF9lbGVtZW50fHhtbHdyaXRlcl9vcGVuX21lbW9yeXx4bWx3cml0ZXJfb3Blbl91cml8eG1sd3JpdGVyX291dHB1dF9tZW1vcnl8eG1sd3JpdGVyX3NldF9pbmRlbnR8eG1sd3JpdGVyX3NldF9pbmRlbnRfc3RyaW5nfHhtbHdyaXRlcl9zdGFydF9hdHRyaWJ1dGV8eG1sd3JpdGVyX3N0YXJ0X2F0dHJpYnV0ZV9uc3x4bWx3cml0ZXJfc3RhcnRfY2RhdGF8eG1sd3JpdGVyX3N0YXJ0X2NvbW1lbnR8eG1sd3JpdGVyX3N0YXJ0X2RvY3VtZW50fHhtbHdyaXRlcl9zdGFydF9kdGR8eG1sd3JpdGVyX3N0YXJ0X2R0ZF9hdHRsaXN0fHhtbHdyaXRlcl9zdGFydF9kdGRfZWxlbWVudHx4bWx3cml0ZXJfc3RhcnRfZHRkX2VudGl0eXx4bWx3cml0ZXJfc3RhcnRfZWxlbWVudHx4bWx3cml0ZXJfc3RhcnRfZWxlbWVudF9uc3x4bWx3cml0ZXJfc3RhcnRfcGl8eG1sd3JpdGVyX3RleHR8eG1sd3JpdGVyX3dyaXRlX2F0dHJpYnV0ZXx4bWx3cml0ZXJfd3JpdGVfYXR0cmlidXRlX25zfHhtbHdyaXRlcl93cml0ZV9jZGF0YXx4bWx3cml0ZXJfd3JpdGVfY29tbWVudHx4bWx3cml0ZXJfd3JpdGVfZHRkfHhtbHdyaXRlcl93cml0ZV9kdGRfYXR0bGlzdHx4bWx3cml0ZXJfd3JpdGVfZHRkX2VsZW1lbnR8eG1sd3JpdGVyX3dyaXRlX2R0ZF9lbnRpdHl8eG1sd3JpdGVyX3dyaXRlX2VsZW1lbnR8eG1sd3JpdGVyX3dyaXRlX2VsZW1lbnRfbnN8eG1sd3JpdGVyX3dyaXRlX3BpfHhtbHdyaXRlcl93cml0ZV9yYXd8eHBhdGhfZXZhbHx4cGF0aF9ldmFsX2V4cHJlc3Npb258eHBhdGhfbmV3X2NvbnRleHR8eHBhdGhfcmVnaXN0ZXJfbnN8eHBhdGhfcmVnaXN0ZXJfbnNfYXV0b3x4cHRyX2V2YWx8eHB0cl9uZXdfY29udGV4dHx4c2x0X2JhY2tlbmRfaW5mb3x4c2x0X2JhY2tlbmRfbmFtZXx4c2x0X2JhY2tlbmRfdmVyc2lvbnx4c2x0X2NyZWF0ZXx4c2x0X2Vycm5vfHhzbHRfZXJyb3J8eHNsdF9mcmVlfHhzbHRfZ2V0b3B0fHhzbHRfcHJvY2Vzc3x4c2x0X3NldF9iYXNlfHhzbHRfc2V0X2VuY29kaW5nfHhzbHRfc2V0X2Vycm9yX2hhbmRsZXJ8eHNsdF9zZXRfbG9nfHhzbHRfc2V0X29iamVjdHx4c2x0X3NldF9zYXhfaGFuZGxlcnx4c2x0X3NldF9zYXhfaGFuZGxlcnN8eHNsdF9zZXRfc2NoZW1lX2hhbmRsZXJ8eHNsdF9zZXRfc2NoZW1lX2hhbmRsZXJzfHhzbHRfc2V0b3B0fHhzbHRwcm9jZXNzb3J8eWFtbF9lbWl0fHlhbWxfZW1pdF9maWxlfHlhbWxfcGFyc2V8eWFtbF9wYXJzZV9maWxlfHlhbWxfcGFyc2VfdXJsfHlhel9hZGRpbmZvfHlhel9jY2xfY29uZnx5YXpfY2NsX3BhcnNlfHlhel9jbG9zZXx5YXpfY29ubmVjdHx5YXpfZGF0YWJhc2V8eWF6X2VsZW1lbnR8eWF6X2Vycm5vfHlhel9lcnJvcnx5YXpfZXN8eWF6X2VzX3Jlc3VsdHx5YXpfZ2V0X29wdGlvbnx5YXpfaGl0c3x5YXpfaXRlbW9yZGVyfHlhel9wcmVzZW50fHlhel9yYW5nZXx5YXpfcmVjb3JkfHlhel9zY2FufHlhel9zY2FuX3Jlc3VsdHx5YXpfc2NoZW1hfHlhel9zZWFyY2h8eWF6X3NldF9vcHRpb258eWF6X3NvcnR8eWF6X3N5bnRheHx5YXpfd2FpdHx5cF9hbGx8eXBfY2F0fHlwX2Vycl9zdHJpbmd8eXBfZXJybm98eXBfZmlyc3R8eXBfZ2V0X2RlZmF1bHRfZG9tYWlufHlwX21hc3Rlcnx5cF9tYXRjaHx5cF9uZXh0fHlwX29yZGVyfHplbmRfbG9nb19ndWlkfHplbmRfdGhyZWFkX2lkfHplbmRfdmVyc2lvbnx6aXBfY2xvc2V8emlwX2VudHJ5X2Nsb3NlfHppcF9lbnRyeV9jb21wcmVzc2Vkc2l6ZXx6aXBfZW50cnlfY29tcHJlc3Npb25tZXRob2R8emlwX2VudHJ5X2ZpbGVzaXplfHppcF9lbnRyeV9uYW1lfHppcF9lbnRyeV9vcGVufHppcF9lbnRyeV9yZWFkfHppcF9vcGVufHppcF9yZWFkfHppcGFyY2hpdmV8emlwYXJjaGl2ZV9hZGRlbXB0eWRpcnx6aXBhcmNoaXZlX2FkZGZpbGV8emlwYXJjaGl2ZV9hZGRmcm9tc3RyaW5nfHppcGFyY2hpdmVfY2xvc2V8emlwYXJjaGl2ZV9kZWxldGVpbmRleHx6aXBhcmNoaXZlX2RlbGV0ZW5hbWV8emlwYXJjaGl2ZV9leHRyYWN0dG98emlwYXJjaGl2ZV9nZXRhcmNoaXZlY29tbWVudHx6aXBhcmNoaXZlX2dldGNvbW1lbnRpbmRleHx6aXBhcmNoaXZlX2dldGNvbW1lbnRuYW1lfHppcGFyY2hpdmVfZ2V0ZnJvbWluZGV4fHppcGFyY2hpdmVfZ2V0ZnJvbW5hbWV8emlwYXJjaGl2ZV9nZXRuYW1laW5kZXh8emlwYXJjaGl2ZV9nZXRzdGF0dXNzdHJpbmd8emlwYXJjaGl2ZV9nZXRzdHJlYW18emlwYXJjaGl2ZV9sb2NhdGVuYW1lfHppcGFyY2hpdmVfb3Blbnx6aXBhcmNoaXZlX3JlbmFtZWluZGV4fHppcGFyY2hpdmVfcmVuYW1lbmFtZXx6aXBhcmNoaXZlX3NldENvbW1lbnROYW1lfHppcGFyY2hpdmVfc2V0YXJjaGl2ZWNvbW1lbnR8emlwYXJjaGl2ZV9zZXRjb21tZW50aW5kZXh8emlwYXJjaGl2ZV9zdGF0aW5kZXh8emlwYXJjaGl2ZV9zdGF0bmFtZXx6aXBhcmNoaXZlX3VuY2hhbmdlYWxsfHppcGFyY2hpdmVfdW5jaGFuZ2VhcmNoaXZlfHppcGFyY2hpdmVfdW5jaGFuZ2VpbmRleHx6aXBhcmNoaXZlX3VuY2hhbmdlbmFtZXx6bGliX2dldF9jb2RpbmdfdHlwZSIuc3BsaXQoInwiKSksbj1pLmFycmF5VG9NYXAoImFic3RyYWN0fGFuZHxhcnJheXxhc3xicmVha3xjYXNlfGNhdGNofGNsYXNzfGNsb25lfGNvbnN0fGNvbnRpbnVlfGRlY2xhcmV8ZGVmYXVsdHxkb3xlbHNlfGVsc2VpZnxlbmRkZWNsYXJlfGVuZGZvcnxlbmRmb3JlYWNofGVuZGlmfGVuZHN3aXRjaHxlbmR3aGlsZXxleHRlbmRzfGZpbmFsfGZvcnxmb3JlYWNofGZ1bmN0aW9ufGdsb2JhbHxnb3RvfGlmfGltcGxlbWVudHN8aW50ZXJmYWNlfGluc3RhbmNlb2Z8bmFtZXNwYWNlfG5ld3xvcnxwcml2YXRlfHByb3RlY3RlZHxwdWJsaWN8c3RhdGljfHN3aXRjaHx0aHJvd3x0cnl8dXNlfHZhcnx3aGlsZXx4b3IiLnNwbGl0KCJ8IikpLHI9aS5hcnJheVRvTWFwKCJkaWV8ZWNob3xlbXB0eXxleGl0fGV2YWx8aW5jbHVkZXxpbmNsdWRlX29uY2V8aXNzZXR8bGlzdHxyZXF1aXJlfHJlcXVpcmVfb25jZXxyZXR1cm58cHJpbnR8dW5zZXQiLnNwbGl0KCJ8IikpLG89aS5hcnJheVRvTWFwKCJ0cnVlfGZhbHNlfG51bGx8X19DTEFTU19ffF9fRElSX198X19GSUxFX198X19MSU5FX198X19NRVRIT0RfX3xfX0ZVTkNUSU9OX198X19OQU1FU1BBQ0VfXyIuc3BsaXQoInwiKSksdT1pLmFycmF5VG9NYXAoIiRHTE9CQUxTfCRfU0VSVkVSfCRfR0VUfCRfUE9TVHwkX0ZJTEVTfCRfUkVRVUVTVHwkX1NFU1NJT058JF9FTlZ8JF9DT09LSUV8JHBocF9lcnJvcm1zZ3wkSFRUUF9SQVdfUE9TVF9EQVRBfCRodHRwX3Jlc3BvbnNlX2hlYWRlcnwkYXJnY3wkYXJndiIuc3BsaXQoInwiKSksYT1pLmFycmF5VG9NYXAoImtleV9leGlzdHN8Y2Fpcm9fbWF0cml4X2NyZWF0ZV9zY2FsZXxjYWlyb19tYXRyaXhfY3JlYXRlX3RyYW5zbGF0ZXxjYWxsX3VzZXJfbWV0aG9kfGNhbGxfdXNlcl9tZXRob2RfYXJyYXl8Y29tX2FkZHJlZnxjb21fZ2V0fGNvbV9pbnZva2V8Y29tX2lzZW51bXxjb21fbG9hZHxjb21fcmVsZWFzZXxjb21fc2V0fGNvbm5lY3Rpb25fdGltZW91dHxjdWJyaWRfbG9hZF9mcm9tX2dsb3xjdWJyaWRfbmV3X2dsb3xjdWJyaWRfc2F2ZV90b19nbG98Y3VicmlkX3NlbmRfZ2xvfGRlZmluZV9zeXNsb2dfdmFyaWFibGVzfGRsfGVyZWd8ZXJlZ19yZXBsYWNlfGVyZWdpfGVyZWdpX3JlcGxhY2V8aHdfZG9jdW1lbnRhdHRyaWJ1dGVzfGh3X2RvY3VtZW50Ym9keXRhZ3xod19kb2N1bWVudHNpemV8aHdfb3V0cHV0ZG9jdW1lbnR8aW1hZ2VkYXNoZWRsaW5lfG1heGRiX2JpbmRfcGFyYW18bWF4ZGJfYmluZF9yZXN1bHR8bWF4ZGJfY2xpZW50X2VuY29kaW5nfG1heGRiX2Nsb3NlX2xvbmdfZGF0YXxtYXhkYl9leGVjdXRlfG1heGRiX2ZldGNofG1heGRiX2dldF9tZXRhZGF0YXxtYXhkYl9wYXJhbV9jb3VudHxtYXhkYl9zZW5kX2xvbmdfZGF0YXxtY3J5cHRfZWNifG1jcnlwdF9nZW5lcmljX2VuZHxtaW1lX2NvbnRlbnRfdHlwZXxteXNxbF9jcmVhdGVkYnxteXNxbF9kYm5hbWV8bXlzcWxfZGJfcXVlcnl8bXlzcWxfZHJvcF9kYnxteXNxbF9kcm9wZGJ8bXlzcWxfZXNjYXBlX3N0cmluZ3xteXNxbF9maWVsZGZsYWdzfG15c3FsX2ZpZWxkZmxhZ3N8bXlzcWxfZmllbGRuYW1lfG15c3FsX2ZpZWxkdGFibGV8bXlzcWxfZmllbGR0eXBlfG15c3FsX2ZyZWVyZXN1bHR8bXlzcWxfbGlzdGRic3xteXNxbF9saXN0X2ZpZWxkc3xteXNxbF9saXN0ZmllbGRzfG15c3FsX2xpc3RfdGFibGVzfG15c3FsX2xpc3R0YWJsZXN8bXlzcWxfbnVtZmllbGRzfG15c3FsX251bXJvd3N8bXlzcWxfc2VsZWN0ZGJ8bXlzcWxfdGFibGVuYW1lfG15c3FsaV9iaW5kX3BhcmFtfG15c3FsaV9iaW5kX3Jlc3VsdHxteXNxbGlfZGlzYWJsZV9yZWFkc19mcm9tX21hc3RlcnxteXNxbGlfZGlzYWJsZV9ycGxfcGFyc2V8bXlzcWxpX2VuYWJsZV9yZWFkc19mcm9tX21hc3RlcnxteXNxbGlfZW5hYmxlX3JwbF9wYXJzZXxteXNxbGlfZXhlY3V0ZXxteXNxbGlfZmV0Y2h8bXlzcWxpX2dldF9tZXRhZGF0YXxteXNxbGlfbWFzdGVyX3F1ZXJ5fG15c3FsaV9wYXJhbV9jb3VudHxteXNxbGlfcnBsX3BhcnNlX2VuYWJsZWR8bXlzcWxpX3JwbF9wcm9iZXxteXNxbGlfcnBsX3F1ZXJ5X3R5cGV8bXlzcWxpX3NlbmRfbG9uZ19kYXRhfG15c3FsaV9zZW5kX3F1ZXJ5fG15c3FsaV9zbGF2ZV9xdWVyeXxvY2liaW5kYnluYW1lfG9jaWNhbmNlbHxvY2ljbG9zZWxvYnxvY2ljb2xsYXBwZW5kfG9jaWNvbGxhc3NpZ258b2NpY29sbGFzc2lnbmVsZW18b2NpY29sbGdldGVsZW18b2NpY29sbG1heHxvY2ljb2xsc2l6ZXxvY2ljb2xsdHJpbXxvY2ljb2x1bW5pc251bGx8b2NpY29sdW1ubmFtZXxvY2ljb2x1bW5wcmVjaXNpb258b2NpY29sdW1uc2NhbGV8b2NpY29sdW1uc2l6ZXxvY2ljb2x1bW50eXBlfG9jaWNvbHVtbnR5cGVyYXd8b2NpY29tbWl0fG9jaWRlZmluZWJ5bmFtZXxvY2llcnJvcnxvY2lleGVjdXRlfG9jaWZldGNofG9jaWZldGNoaW50b3xvY2lmZXRjaHN0YXRlbWVudHxvY2lmcmVlY29sbGVjdGlvbnxvY2lmcmVlY3Vyc29yfG9jaWZyZWVkZXNjfG9jaWZyZWVzdGF0ZW1lbnR8b2NpaW50ZXJuYWxkZWJ1Z3xvY2lsb2FkbG9ifG9jaWxvZ29mZnxvY2lsb2dvbnxvY2luZXdjb2xsZWN0aW9ufG9jaW5ld2N1cnNvcnxvY2luZXdkZXNjcmlwdG9yfG9jaW5sb2dvbnxvY2ludW1jb2xzfG9jaXBhcnNlfG9jaXBsb2dvbnxvY2lyZXN1bHR8b2Npcm9sbGJhY2t8b2Npcm93Y291bnR8b2Npc2F2ZWxvYnxvY2lzYXZlbG9iZmlsZXxvY2lzZXJ2ZXJ2ZXJzaW9ufG9jaXNldHByZWZldGNofG9jaXN0YXRlbWVudHR5cGV8b2Npd3JpdGVsb2J0b2ZpbGV8b2Npd3JpdGV0ZW1wb3Jhcnlsb2J8UERGX2FkZF9hbm5vdGF0aW9ufFBERl9hZGRfYm9va21hcmt8UERGX2FkZF9sYXVuY2hsaW5rfFBERl9hZGRfbG9jYWxsaW5rfFBERl9hZGRfbm90ZXxQREZfYWRkX291dGxpbmV8UERGX2FkZF9wZGZsaW5rfFBERl9hZGRfd2VibGlua3xQREZfYXR0YWNoX2ZpbGV8UERGX2JlZ2luX3BhZ2V8UERGX2JlZ2luX3RlbXBsYXRlfFBERl9jbG9zZV9wZGl8UERGX2Nsb3NlfFBERl9maW5kZm9udHxQREZfZ2V0X2ZvbnR8UERGX2dldF9mb250bmFtZXxQREZfZ2V0X2ZvbnRzaXplfFBERl9nZXRfaW1hZ2VfaGVpZ2h0fFBERl9nZXRfaW1hZ2Vfd2lkdGh8UERGX2dldF9tYWpvcnZlcnNpb258UERGX2dldF9taW5vcnZlcnNpb258UERGX2dldF9wZGlfcGFyYW1ldGVyfFBERl9nZXRfcGRpX3ZhbHVlfFBERl9vcGVuX2NjaXR0fFBERl9vcGVuX2ZpbGV8UERGX29wZW5fZ2lmfFBERl9vcGVuX2ltYWdlX2ZpbGV8UERGX29wZW5faW1hZ2V8UERGX29wZW5fanBlZ3xQREZfb3Blbl9wZGl8UERGX29wZW5fdGlmZnxQREZfcGxhY2VfaW1hZ2V8UERGX3BsYWNlX3BkaV9wYWdlfFBERl9zZXRfYm9yZGVyX2NvbG9yfFBERl9zZXRfYm9yZGVyX2Rhc2h8UERGX3NldF9ib3JkZXJfc3R5bGV8UERGX3NldF9jaGFyX3NwYWNpbmd8UERGX3NldF9kdXJhdGlvbnxQREZfc2V0X2hvcml6X3NjYWxpbmd8UERGX3NldF9pbmZvX2F1dGhvcnxQREZfc2V0X2luZm9fY3JlYXRvcnxQREZfc2V0X2luZm9fa2V5d29yZHN8UERGX3NldF9pbmZvX3N1YmplY3R8UERGX3NldF9pbmZvX3RpdGxlfFBERl9zZXRfbGVhZGluZ3xQREZfc2V0X3RleHRfbWF0cml4fFBERl9zZXRfdGV4dF9yZW5kZXJpbmd8UERGX3NldF90ZXh0X3Jpc2V8UERGX3NldF93b3JkX3NwYWNpbmd8UERGX3NldGdyYXlfZmlsbHxQREZfc2V0Z3JheV9zdHJva2V8UERGX3NldGdyYXl8UERGX3NldHBvbHlkYXNofFBERl9zZXRyZ2Jjb2xvcl9maWxsfFBERl9zZXRyZ2Jjb2xvcl9zdHJva2V8UERGX3NldHJnYmNvbG9yfFBERl9zaG93X2JveGVkfHBocF9jaGVja19zeW50YXh8cHhfc2V0X3RhYmxlbmFtZXxweF9zZXRfdGFyZ2V0ZW5jb2Rpbmd8cnVua2l0X3NhbmRib3hfb3V0cHV0X2hhbmRsZXJ8c2Vzc2lvbl9pc19yZWdpc3RlcmVkfHNlc3Npb25fcmVnaXN0ZXJ8c2Vzc2lvbl91bnJlZ2lzdGVyc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lfG1hZ2ljX3F1b3Rlc19ydW50aW1lfHNldF9zb2NrZXRfYmxvY2tpbmd8c29ja2V0X3NldF9ibG9ja2luZ3xzZXRfc29ja2V0X3RpbWVvdXR8c29ja2V0X3NldF90aW1lb3V0fHNwbGl0fHNwbGl0aXxzcWxfcmVnY2FzZSIuc3BsaXQoInwiKSksZj1pLmFycmF5VG9NYXAoImNmdW5jdGlvbnxvbGRfZnVuY3Rpb24iLnNwbGl0KCJ8IikpLGw9aS5hcnJheVRvTWFwKFtdKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoic3VwcG9ydC5waHBfdGFnIixyZWdleDoiPFxcPyg/OnBocHxcXD0pIn0se3Rva2VuOiJzdXBwb3J0LnBocF90YWciLHJlZ2V4OiJcXD8+In0se3Rva2VuOiJjb21tZW50IixyZWdleDoiPFxcIS0tIixuZXh0OiJodG1sY29tbWVudCJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8c3R5bGUiLG5leHQ6ImNzcyJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvP1stX2EtekEtWjAtOTpdKyIsbmV4dDoiaHRtbHRhZyJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8IURPQ1RZUEUuKj8+In0se3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiokIn0se3Rva2VuOiJjb21tZW50IixyZWdleDoiIy4qJCJ9LGUuZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZy5yZWdleHAiLHJlZ2V4OiJbL10oPzooPzpcXFsoPzpcXFxcXXxbXlxcXV0pK1xcXSl8KD86XFxcXC98W15cXF0vXSkpKlsvXVtnaW15XSpcXHMqKD89WykuLDtdfCQpIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJyIsbmV4dDoicXN0cmluZyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IjBbeFhdWzAtOWEtZkEtRl0rXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlIixyZWdleDoiXFxiKD86REVGQVVMVF9JTkNMVURFX1BBVEh8RV8oPzpBTEx8Q08oPzpNUElMRV8oPzpFUlJPUnxXQVJOSU5HKXxSRV8oPzpFUlJPUnxXQVJOSU5HKSl8RVJST1J8Tk9USUNFfFBBUlNFfFNUUklDVHxVU0VSXyg/OkVSUk9SfE5PVElDRXxXQVJOSU5HKXxXQVJOSU5HKXxQKD86RUFSXyg/OkVYVEVOU0lPTl9ESVJ8SU5TVEFMTF9ESVIpfEhQXyg/OkJJTkRJUnxDT05GSUdfRklMRV8oPzpQQVRIfFNDQU5fRElSKXxEQVRBRElSfEUoPzpPTHxYVEVOU0lPTl9ESVIpfElOVF8oPzpNQVh8U0laRSl8TCg/OklCRElSfE9DQUxTVEFURURJUil8Tyg/OlN8VVRQVVRfSEFORExFUl8oPzpDT05UfEVORHxTVEFSVCkpfFBSRUZJWHxTKD86QVBJfEhMSUJfU1VGRklYfFlTQ09ORkRJUil8VkVSU0lPTikpfF9fQ09NUElMRVJfSEFMVF9PRkZTRVRfXylcXGIifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlIixyZWdleDoiXFxiKD86QSg/OkIoPzpEQVlfKD86MXwyfDN8NHw1fDZ8Nyl8TU9OXyg/OjEoPzowfDF8MnwpfDJ8M3w0fDV8Nnw3fDh8OSkpfExUX0RJR0lUU3xNX1NUUnxTU0VSVF8oPzpBQ1RJVkV8QkFJTHxDQUxMQkFDS3xRVUlFVF9FVkFMfFdBUk5JTkcpKXxDKD86QVNFXyg/OkxPV0VSfFVQUEVSKXxIQVJfTUFYfE8oPzpERVNFVHxOTkVDVElPTl8oPzpBQk9SVEVEfE5PUk1BTHxUSU1FT1VUKXxVTlRfKD86Tk9STUFMfFJFQ1VSU0lWRSkpfFIoPzpFRElUU18oPzpBTEx8RE9DU3xGVUxMUEFHRXxHKD86RU5FUkFMfFJPVVApfE1PRFVMRVN8UUF8U0FQSSl8TkNZU1RSfFlQVF8oPzpCTE9XRklTSHxFWFRfREVTfE1ENXxTKD86QUxUX0xFTkdUSHxURF9ERVMpKSl8VVJSRU5DWV9TWU1CT0wpfEQoPzpBWV8oPzoxfDJ8M3w0fDV8Nnw3KXxFQ0lNQUxfUE9JTlR8SVJFQ1RPUllfU0VQQVJBVE9SfF8oPzpGTVR8VF9GTVQpKXxFKD86TlRfKD86Q09NUEFUfE5PUVVPVEVTfFFVT1RFUyl8UkEoPzpfKD86RF8oPzpGTVR8VF9GTVQpfFRfRk1UfFlFQVIpfCl8WFRSXyg/OklGX0VYSVNUU3xPVkVSV1JJVEV8UFJFRklYXyg/OkFMTHxJKD86Rl9FWElTVFN8TlZBTElEKXxTQU1FKXxTS0lQKSl8RlJBQ19ESUdJVFN8R1JPVVBJTkd8SFRNTF8oPzpFTlRJVElFU3xTUEVDSUFMQ0hBUlMpfElOKD86Rk9fKD86QUxMfEMoPzpPTkZJR1VSQVRJT058UkVESVRTKXxFTlZJUk9OTUVOVHxHRU5FUkFMfExJQ0VOU0V8TU9EVUxFU3xWQVJJQUJMRVMpfElfKD86QUxMfFBFUkRJUnxTWVNURU18VVNFUil8VF8oPzpDVVJSX1NZTUJPTHxGUkFDX0RJR0lUUykpfEwoPzpDXyg/OkFMTHxDKD86T0xMQVRFfFRZUEUpfE0oPzpFU1NBR0VTfE9ORVRBUlkpfE5VTUVSSUN8VElNRSl8Tyg/OkNLXyg/OkVYfE5CfFNIfFVOKXxHXyg/OkEoPzpMRVJUfFVUSCg/OlBSSVZ8KSl8Qyg/Ok9OU3xSKD86SVR8T04pKXxEKD86QUVNT058RUJVRyl8RSg/Ok1FUkd8UlIpfElORk98S0VSTnxMKD86T0NBTCg/OjB8MXwyfDN8NHw1fDZ8Nyl8UFIpfE1BSUx8Tig/OkRFTEFZfEVXU3xPKD86VElDRXxXQUlUKSl8T0RFTEFZfFAoPzpFUlJPUnxJRCl8U1lTTE9HfFUoPzpTRVJ8VUNQKXxXQVJOSU5HKSkpfE0oPzpPTl8oPzoxKD86MHwxfDJ8KXwyfDN8NHw1fDZ8N3w4fDl8REVDSU1BTF9QT0lOVHxHUk9VUElOR3xUSE9VU0FORFNfU0VQKXxfKD86MV9QSXwyXyg/OlBJfFNRUlRQSSl8RXxMKD86Tig/OjEwfDIpfE9HKD86MTBFfDJFKSl8UEkoPzpfKD86Mnw0KXwpfFNRUlQoPzoxXzJ8MikpKXxOKD86RUdBVElWRV9TSUdOfE8oPzpFWFBSfFNUUil8Xyg/OkNTX1BSRUNFREVTfFMoPzpFUF9CWV9TUEFDRXxJR05fUE9TTikpKXxQKD86QVRIKD86SU5GT18oPzpCQVNFTkFNRXxESVJOQU1FfEVYVEVOU0lPTil8X1NFUEFSQVRPUil8TV9TVFJ8T1NJVElWRV9TSUdOfF8oPzpDU19QUkVDRURFU3xTKD86RVBfQllfU1BBQ0V8SUdOX1BPU04pKSl8UkFESVhDSEFSfFMoPzpFRUtfKD86Q1VSfEVORHxTRVQpfE9SVF8oPzpBU0N8REVTQ3xOVU1FUklDfFJFR1VMQVJ8U1RSSU5HKXxUUl9QQURfKD86Qk9USHxMRUZUfFJJR0hUKSl8VCg/OkhPVVMoPzpBTkRTX1NFUHxFUCl8X0ZNVCg/Ol9BTVBNfCkpfFlFUyg/OkVYUFJ8U1RSKXxTVEQoPzpJTnxPVVR8RVJSKSlcXGIifSx7dG9rZW46ZnVuY3Rpb24oZSl7cmV0dXJuIG4uaGFzT3duUHJvcGVydHkoZSk/ImtleXdvcmQiOm8uaGFzT3duUHJvcGVydHkoZSk/ImNvbnN0YW50Lmxhbmd1YWdlIjp1Lmhhc093blByb3BlcnR5KGUpPyJ2YXJpYWJsZS5sYW5ndWFnZSI6bC5oYXNPd25Qcm9wZXJ0eShlKT8iaW52YWxpZC5pbGxlZ2FsIjp0Lmhhc093blByb3BlcnR5KGUpPyJzdXBwb3J0LmZ1bmN0aW9uIjplPT0iZGVidWdnZXIiPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOmUubWF0Y2goL14oXCRbYS16QS1aXVthLXpBLVowLTlfXSp8c2VsZnxwYXJlbnQpJC8pPyJ2YXJpYWJsZSI6ImlkZW50aWZpZXIifSxyZWdleDoiW2EtekEtWl8kXVthLXpBLVowLTlfJF0qXFxiIn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiIXxcXCR8JXwmfFxcKnxcXC1cXC18XFwtfFxcK1xcK3xcXCt8fnw9PT18PT18PXwhPXwhPT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFxcfFxcfHxcXD9cXDp8XFwqPXwlPXxcXCs9fFxcLT18Jj18XFxePXxcXGIoPzppbnxpbnN0YW5jZW9mfG5ld3xkZWxldGV8dHlwZW9mfHZvaWQpIn0se3Rva2VuOiJscGFyZW4iLHJlZ2V4OiJbWyh7XSJ9LHt0b2tlbjoicnBhcmVuIixyZWdleDoiW1xcXSl9XSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4rIn1dLHFxc3RyaW5nOlt7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmVzY2FwZSIscmVnZXg6J1xcXFwoPzpbbnJ0dmVmXFxcXCIkXXxbMC03XXsxLDN9fHhbMC05QS1GYS1mXXsxLDJ9KSd9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDovXCRbXHdcZF0rKD86XFtbXHdcZF0rXF0pPy99LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuZXNjYXBlIixyZWdleDovXCRce1teIlx9XStcfT8vfSx7dG9rZW46InN0cmluZyIscmVnZXg6JyInLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIuKz8ifV0scXN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4OiJcXFxcWydcXFxcXSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJyIsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6Ii4rPyJ9XSxodG1sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/LS0+IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4rIn1dLGh0bWx0YWc6W3t0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI+IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlstX2EtekEtWjAtOTpdKyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIuKj8iJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInLio/JyJ9XSxjc3M6W3t0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8L3N0eWxlPiIsbmV4dDoiaHRtbHRhZyJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI+In0se3Rva2VuOiJ0ZXh0IixyZWdleDoiKD86bWVkaWF8dHlwZXxocmVmKSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonPSIuKj8iJ30se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJ7IixuZXh0OiJjc3NkZWNsYXJhdGlvbiJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IiNbQS1aYS16MC05LV8uXSsifSx7dG9rZW46InZhcmlhYmxlIixyZWdleDoiXFwuW0EtWmEtejAtOS1fLl0rIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IltBLVphLXowLTldKyJ9XSxjc3NkZWNsYXJhdGlvbjpbe3Rva2VuOiJzdXBwb3J0LnR5cGUiLHJlZ2V4OiJbLWEtekEtWl0rIixuZXh0OiJjc3N2YWx1ZSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoifSIsbmV4dDoiY3NzIn1dLGNzc3ZhbHVlOlt7dG9rZW46InRleHQiLHJlZ2V4OiI6In0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IiNbMC05YS16QS1aXSsifSx7dG9rZW46InRleHQiLHJlZ2V4OiJbLV8wLTlhLXpBLVpcIicgLCVdKyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IjsiLG5leHQ6ImNzc2RlY2xhcmF0aW9uIn1dfSx0aGlzLmVtYmVkUnVsZXMocywiZG9jLSIsW3MuZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtyLmluaGVyaXRzKHUsbyksdC5QaHBIaWdobGlnaHRSdWxlcz11fSksZGVmaW5lKCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMscz1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50LmRvYy50YWciLHJlZ2V4OiJAW1xcd1xcZF9dKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlRPRE8ifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiW15AXFwqXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiLiJ9XX19O3IuaW5oZXJpdHMocyxpKSxzLmdldFN0YXJ0UnVsZT1mdW5jdGlvbihlKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwvXFwqKD89XFwqKSIsbmV4dDplfX0scy5nZXRFbmRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXCpcXC8iLG5leHQ6ZX19LHQuRG9jQ29tbWVudEhpZ2hsaWdodFJ1bGVzPXN9KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxpPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQpe3JldHVybi9eXHMrJC8udGVzdChlKT8vXlxzKlx9Ly50ZXN0KHQpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRMaW5lKHQpLGk9bi5tYXRjaCgvXihccypcfSkvKTtpZighaSlyZXR1cm4gMDt2YXIgcz1pWzFdLmxlbmd0aCxvPWUuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnQsY29sdW1uOnN9KTtpZighb3x8by5yb3c9PXQpcmV0dXJuIDA7dmFyIHU9dGhpcy4kZ2V0SW5kZW50KGUuZ2V0TGluZShvLnJvdykpO2UucmVwbGFjZShuZXcgcih0LDAsdCxzLTEpLHUpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCgvXihccyspLyk7cmV0dXJuIHQ/dFsxXToiIn19KS5jYWxsKGkucHJvdG90eXBlKSx0Lk1hdGNoaW5nQnJhY2VPdXRkZW50PWl9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIscz1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09InsiKXt2YXIgcz1uLmdldFNlbGVjdGlvblJhbmdlKCksbz1yLmRvYy5nZXRUZXh0UmFuZ2Uocyk7cmV0dXJuIG8hPT0iIj97dGV4dDoieyIrbysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoaT09In0iKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJ9Iil7dmFyIGw9ci4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOnUuY29sdW1uKzEscm93OnUucm93fSk7aWYobCE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihpPT0iXG4iKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJ9Iil7dmFyIGM9ci5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dS5yb3csY29sdW1uOnUuY29sdW1uKzF9KTtpZighYylyZXR1cm4gbnVsbDt2YXIgaD10aGlzLmdldE5leHRMaW5lSW5kZW50KGUsYS5zdWJzdHJpbmcoMCxhLmxlbmd0aC0xKSxyLmdldFRhYlN0cmluZygpKSxwPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKGMucm93KSk7cmV0dXJue3RleHQ6IlxuIitoKyJcbiIrcCxzZWxlY3Rpb246WzEsaC5sZW5ndGgsMSxoLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSJ7Iil7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLmVuZC5jb2x1bW4saS5lbmQuY29sdW1uKzEpO2lmKHU9PSJ9IilyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSIoIil7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO3JldHVybiBvIT09IiI/e3RleHQ6IigiK28rIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGk9PSIpIil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0iKSIpe3ZhciBsPXIuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjp1LmNvbHVtbisxLHJvdzp1LnJvd30pO2lmKGwhPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcz09IigiKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09IikiKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0nIid8fGk9PSInIil7dmFyIHM9aSxvPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSx1PXIuZG9jLmdldFRleHRSYW5nZShvKTtpZih1IT09IiIpcmV0dXJue3RleHQ6cyt1K3Msc2VsZWN0aW9uOiExfTt2YXIgYT1uLmdldEN1cnNvclBvc2l0aW9uKCksZj1yLmRvYy5nZXRMaW5lKGEucm93KSxsPWYuc3Vic3RyaW5nKGEuY29sdW1uLTEsYS5jb2x1bW4pO2lmKGw9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGM9ci5nZXRUb2tlbnMoby5zdGFydC5yb3cpLGg9MCxwLGQ9LTE7Zm9yKHZhciB2PTA7djxjLmxlbmd0aDt2Kyspe3A9Y1t2XSxwLnR5cGU9PSJzdHJpbmciP2Q9LTE6ZDwwJiYoZD1wLnZhbHVlLmluZGV4T2YocykpO2lmKHAudmFsdWUubGVuZ3RoK2g+by5zdGFydC5jb2x1bW4pYnJlYWs7aCs9Y1t2XS52YWx1ZS5sZW5ndGh9aWYoIXB8fGQ8MCYmcC50eXBlIT09ImNvbW1lbnQiJiYocC50eXBlIT09InN0cmluZyJ8fG8uc3RhcnQuY29sdW1uIT09cC52YWx1ZS5sZW5ndGgraC0xJiZwLnZhbHVlLmxhc3RJbmRleE9mKHMpPT09cC52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6cytzLHNlbGVjdGlvbjpbMSwxXX07aWYocCYmcC50eXBlPT09InN0cmluZyIpe3ZhciBtPWYuc3Vic3RyaW5nKGEuY29sdW1uLGEuY29sdW1uKzEpO2lmKG09PXMpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJihzPT0nIid8fHM9PSInIikpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5zdGFydC5jb2x1bW4rMSxpLnN0YXJ0LmNvbHVtbisyKTtpZih1PT0nIicpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSl9O3IuaW5oZXJpdHMocyxpKSx0LkNzdHlsZUJlaGF2aW91cj1zfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxzPWUoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsbz10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtyLmluaGVyaXRzKG8scyksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pLHM9ci5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleDtpZihzWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soZSxzWzFdLG4sbyk7dmFyIHU9ZS5nZXRDb21tZW50Rm9sZFJhbmdlKG4sbytzWzBdLmxlbmd0aCk7cmV0dXJuIHUuZW5kLmNvbHVtbi09Mix1fWlmKHQhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIHM9ci5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihzKXt2YXIgbz1zLmluZGV4K3NbMF0ubGVuZ3RoO2lmKHNbMl0pe3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8pO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX12YXIgYT17cm93Om4sY29sdW1uOm99LGY9ZS4kZmluZE9wZW5pbmdCcmFja2V0KHNbMV0sYSk7aWYoIWYpcmV0dXJuO3JldHVybiBmLmNvbHVtbisrLGEuY29sdW1uLS0saS5mcm9tUG9pbnRzKGYsYSl9fX0uY2FsbChvLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2UsaT10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChyKT8ic3RhcnQiOnQ9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3Qocik/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT0vXFMvLHM9ZS5nZXRMaW5lKHQpLG89cy5zZWFyY2goaSk7aWYobz09LTEpcmV0dXJuO3ZhciB1PW58fHMubGVuZ3RoLGE9ZS5nZXRMZW5ndGgoKSxmPXQsbD10O3doaWxlKCsrdDxhKXt2YXIgYz1lLmdldExpbmUodCkuc2VhcmNoKGkpO2lmKGM9PS0xKWNvbnRpbnVlO2lmKGM8PW8pYnJlYWs7bD10fWlmKGw+Zil7dmFyIGg9ZS5nZXRMaW5lKGwpLmxlbmd0aDtyZXR1cm4gbmV3IHIoZix1LGwsaCl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oZSx0LG4saSxzKXt2YXIgbz17cm93Om4sY29sdW1uOmkrMX0sdT1lLiRmaW5kQ2xvc2luZ0JyYWNrZXQodCxvLHMpO2lmKCF1KXJldHVybjt2YXIgYT1lLmZvbGRXaWRnZXRzW3Uucm93XTtyZXR1cm4gYT09bnVsbCYmKGE9dGhpcy5nZXRGb2xkV2lkZ2V0KGUsdS5yb3cpKSxhPT0ic3RhcnQiJiZ1LnJvdz5vLnJvdyYmKHUucm93LS0sdS5jb2x1bW49ZS5nZXRMaW5lKHUucm93KS5sZW5ndGgpLHIuZnJvbVBvaW50cyhvLHUpfX0pLmNhbGwoaS5wcm90b3R5cGUpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-powershell.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9wb3dlcnNoZWxsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3Bvd2Vyc2hlbGxfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9wb3dlcnNoZWxsX2hpZ2hsaWdodF9ydWxlcyIpLlBvd2Vyc2hlbGxIaWdobGlnaHRSdWxlcyx1PWUoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGE9ZSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGY9ZSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGw9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyB1LHRoaXMuJGJlaGF2aW91cj1uZXcgYSx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgZn07ci5pbmhlcml0cyhsLGkpLGZ1bmN0aW9uKCl7dGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy4kZ2V0SW5kZW50KHQpLGk9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnModCxlKSxzPWkudG9rZW5zO2lmKHMubGVuZ3RoJiZzW3MubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gcjtpZihlPT0ic3RhcnQiKXt2YXIgbz10Lm1hdGNoKC9eLipbXHtcKFxbXVxzKiQvKTtvJiYocis9bil9cmV0dXJuIHJ9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQodCxuKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudCh0LG4pfSx0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbH19LmNhbGwobC5wcm90b3R5cGUpLHQuTW9kZT1sfSksZGVmaW5lKCJhY2UvbW9kZS9wb3dlcnNoZWxsX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsbz1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgiZnVuY3Rpb258aWZ8ZWxzZXxlbHNlaWZ8c3dpdGNofHdoaWxlfGRlZmF1bHR8Zm9yfGRvfHVudGlsfGJyZWFrfGNvbnRpbnVlfGZvcmVhY2h8cmV0dXJufGZpbHRlcnxpbnx0cmFwfHRocm93fHBhcmFtfGJlZ2lufHByb2Nlc3N8ZW5kIi5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgiR2V0LUFsaWFzfEltcG9ydC1BbGlhc3xOZXctQWxpYXN8U2V0LUFsaWFzfEdldC1BdXRoZW50aWNvZGVTaWduYXR1cmV8U2V0LUF1dGhlbnRpY29kZVNpZ25hdHVyZXxTZXQtTG9jYXRpb258R2V0LUNoaWxkSXRlbXxDbGVhci1JdGVtfEdldC1Db21tYW5kfE1lYXN1cmUtQ29tbWFuZHxUcmFjZS1Db21tYW5kfEFkZC1Db21wdXRlcnxDaGVja3BvaW50LUNvbXB1dGVyfFJlbW92ZS1Db21wdXRlcnxSZXN0YXJ0LUNvbXB1dGVyfFJlc3RvcmUtQ29tcHV0ZXJ8U3RvcC1Db21wdXRlcnxSZXNldC1Db21wdXRlck1hY2hpbmVQYXNzd29yZHxUZXN0LUNvbXB1dGVyU2VjdXJlQ2hhbm5lbHxBZGQtQ29udGVudHxHZXQtQ29udGVudHxTZXQtQ29udGVudHxDbGVhci1Db250ZW50fEdldC1Db21tYW5kfEludm9rZS1Db21tYW5kfEVuYWJsZS1Db21wdXRlclJlc3RvcmV8RGlzYWJsZS1Db21wdXRlclJlc3RvcmV8R2V0LUNvbXB1dGVyUmVzdG9yZVBvaW50fFRlc3QtQ29ubmVjdGlvbnxDb252ZXJ0RnJvbS1DU1Z8Q29udmVydFRvLUNTVnxDb252ZXJ0VG8tSHRtbHxDb252ZXJ0VG8tWG1sfENvbnZlcnRGcm9tLVNlY3VyZVN0cmluZ3xDb252ZXJ0VG8tU2VjdXJlU3RyaW5nfENvcHktSXRlbXxFeHBvcnQtQ291bnRlcnxHZXQtQ291bnRlcnxJbXBvcnQtQ291bnRlcnxHZXQtQ3JlZGVudGlhbHxHZXQtQ3VsdHVyZXxHZXQtQ2hpbGRJdGVtfEdldC1EYXRlfFNldC1EYXRlfFJlbW92ZS1JdGVtfENvbXBhcmUtT2JqZWN0fEdldC1FdmVudHxHZXQtV2luRXZlbnR8TmV3LUV2ZW50fFJlbW92ZS1FdmVudHxVbnJlZ2lzdGVyLUV2ZW50fFdhaXQtRXZlbnR8Q2xlYXItRXZlbnRMb2d8R2V0LUV2ZW50bG9nfExpbWl0LUV2ZW50TG9nfE5ldy1FdmVudGxvZ3xSZW1vdmUtRXZlbnRMb2d8U2hvdy1FdmVudExvZ3xXcml0ZS1FdmVudExvZ3xHZXQtRXZlbnRTdWJzY3JpYmVyfFJlZ2lzdGVyLUVuZ2luZUV2ZW50fFJlZ2lzdGVyLU9iamVjdEV2ZW50fFJlZ2lzdGVyLVdtaUV2ZW50fEdldC1FeGVjdXRpb25Qb2xpY3l8U2V0LUV4ZWN1dGlvblBvbGljeXxFeHBvcnQtQWxpYXN8RXhwb3J0LUNsaXhtbHxFeHBvcnQtQ29uc29sZXxFeHBvcnQtQ3N2fEZvckVhY2gtT2JqZWN0fEZvcm1hdC1DdXN0b218Rm9ybWF0LUxpc3R8Rm9ybWF0LVRhYmxlfEZvcm1hdC1XaWRlfEV4cG9ydC1Gb3JtYXREYXRhfEdldC1Gb3JtYXREYXRhfEdldC1JdGVtfEdldC1DaGlsZEl0ZW18R2V0LUhlbHB8QWRkLUhpc3Rvcnl8Q2xlYXItSGlzdG9yeXxHZXQtSGlzdG9yeXxJbnZva2UtSGlzdG9yeXxHZXQtSG9zdHxSZWFkLUhvc3R8V3JpdGUtSG9zdHxHZXQtSG90Rml4fEltcG9ydC1DbGl4bWx8SW1wb3J0LUNzdnxJbnZva2UtQ29tbWFuZHxJbnZva2UtRXhwcmVzc2lvbnxHZXQtSXRlbXxJbnZva2UtSXRlbXxOZXctSXRlbXxSZW1vdmUtSXRlbXxTZXQtSXRlbXxDbGVhci1JdGVtUHJvcGVydHl8Q29weS1JdGVtUHJvcGVydHl8R2V0LUl0ZW1Qcm9wZXJ0eXxNb3ZlLUl0ZW1Qcm9wZXJ0eXxOZXctSXRlbVByb3BlcnR5fFJlbW92ZS1JdGVtUHJvcGVydHl8UmVuYW1lLUl0ZW1Qcm9wZXJ0eXxTZXQtSXRlbVByb3BlcnR5fEdldC1Kb2J8UmVjZWl2ZS1Kb2J8UmVtb3ZlLUpvYnxTdGFydC1Kb2J8U3RvcC1Kb2J8V2FpdC1Kb2J8U3RvcC1Qcm9jZXNzfFVwZGF0ZS1MaXN0fEdldC1Mb2NhdGlvbnxQb3AtTG9jYXRpb258UHVzaC1Mb2NhdGlvbnxTZXQtTG9jYXRpb258U2VuZC1NYWlsTWVzc2FnZXxBZGQtTWVtYmVyfEdldC1NZW1iZXJ8TW92ZS1JdGVtfENvbXBhcmUtT2JqZWN0fEdyb3VwLU9iamVjdHxNZWFzdXJlLU9iamVjdHxOZXctT2JqZWN0fFNlbGVjdC1PYmplY3R8U29ydC1PYmplY3R8V2hlcmUtT2JqZWN0fE91dC1EZWZhdWx0fE91dC1GaWxlfE91dC1HcmlkVmlld3xPdXQtSG9zdHxPdXQtTnVsbHxPdXQtUHJpbnRlcnxPdXQtU3RyaW5nfENvbnZlcnQtUGF0aHxKb2luLVBhdGh8UmVzb2x2ZS1QYXRofFNwbGl0LVBhdGh8VGVzdC1QYXRofEdldC1QZnhjZXJ0aWZpY2F0ZXxQb3AtTG9jYXRpb258UHVzaC1Mb2NhdGlvbnxHZXQtUHJvY2Vzc3xTdGFydC1Qcm9jZXNzfFN0b3AtUHJvY2Vzc3xXYWl0LVByb2Nlc3N8RW5hYmxlLVBTQnJlYWtwb2ludHxEaXNhYmxlLVBTQnJlYWtwb2ludHxHZXQtUFNCcmVha3BvaW50fFNldC1QU0JyZWFrcG9pbnR8UmVtb3ZlLVBTQnJlYWtwb2ludHxHZXQtUFNEcml2ZXxOZXctUFNEcml2ZXxSZW1vdmUtUFNEcml2ZXxHZXQtUFNQcm92aWRlcnxTZXQtUFNkZWJ1Z3xFbnRlci1QU1Nlc3Npb258RXhpdC1QU1Nlc3Npb258RXhwb3J0LVBTU2Vzc2lvbnxHZXQtUFNTZXNzaW9ufEltcG9ydC1QU1Nlc3Npb258TmV3LVBTU2Vzc2lvbnxSZW1vdmUtUFNTZXNzaW9ufERpc2FibGUtUFNTZXNzaW9uQ29uZmlndXJhdGlvbnxFbmFibGUtUFNTZXNzaW9uQ29uZmlndXJhdGlvbnxHZXQtUFNTZXNzaW9uQ29uZmlndXJhdGlvbnxSZWdpc3Rlci1QU1Nlc3Npb25Db25maWd1cmF0aW9ufFNldC1QU1Nlc3Npb25Db25maWd1cmF0aW9ufFVucmVnaXN0ZXItUFNTZXNzaW9uQ29uZmlndXJhdGlvbnxOZXctUFNTZXNzaW9uT3B0aW9ufEFkZC1Qc1NuYXBJbnxHZXQtUHNTbmFwaW58UmVtb3ZlLVBTU25hcGlufEdldC1SYW5kb218UmVhZC1Ib3N0fFJlbW92ZS1JdGVtfFJlbmFtZS1JdGVtfFJlbmFtZS1JdGVtUHJvcGVydHl8U2VsZWN0LU9iamVjdHxTZWxlY3QtWE1MfFNlbmQtTWFpbE1lc3NhZ2V8R2V0LVNlcnZpY2V8TmV3LVNlcnZpY2V8UmVzdGFydC1TZXJ2aWNlfFJlc3VtZS1TZXJ2aWNlfFNldC1TZXJ2aWNlfFN0YXJ0LVNlcnZpY2V8U3RvcC1TZXJ2aWNlfFN1c3BlbmQtU2VydmljZXxTb3J0LU9iamVjdHxTdGFydC1TbGVlcHxDb252ZXJ0RnJvbS1TdHJpbmdEYXRhfFNlbGVjdC1TdHJpbmd8VGVlLU9iamVjdHxOZXctVGltZXNwYW58VHJhY2UtQ29tbWFuZHxHZXQtVHJhY2Vzb3VyY2V8U2V0LVRyYWNlc291cmNlfFN0YXJ0LVRyYW5zYWN0aW9ufENvbXBsZXRlLVRyYW5zYWN0aW9ufEdldC1UcmFuc2FjdGlvbnxVc2UtVHJhbnNhY3Rpb258VW5kby1UcmFuc2FjdGlvbnxTdGFydC1UcmFuc2NyaXB0fFN0b3AtVHJhbnNjcmlwdHxBZGQtVHlwZXxVcGRhdGUtVHlwZURhdGF8R2V0LVVpY3VsdHVyZXxHZXQtVW5pcXVlfFVwZGF0ZS1Gb3JtYXRkYXRhfFVwZGF0ZS1UeXBlZGF0YXxDbGVhci1WYXJpYWJsZXxHZXQtVmFyaWFibGV8TmV3LVZhcmlhYmxlfFJlbW92ZS1WYXJpYWJsZXxTZXQtVmFyaWFibGV8TmV3LVdlYlNlcnZpY2VQcm94eXxXaGVyZS1PYmplY3R8V3JpdGUtRGVidWd8V3JpdGUtRXJyb3J8V3JpdGUtSG9zdHxXcml0ZS1PdXRwdXR8V3JpdGUtUHJvZ3Jlc3N8V3JpdGUtVmVyYm9zZXxXcml0ZS1XYXJuaW5nfFNldC1XbWlJbnN0YW5jZXxJbnZva2UtV21pTWV0aG9kfEdldC1XbWlPYmplY3R8UmVtb3ZlLVdtaU9iamVjdHxDb25uZWN0LVdTTWFufERpc2Nvbm5lY3QtV1NNYW58VGVzdC1XU01hbnxJbnZva2UtV1NNYW5BY3Rpb258RGlzYWJsZS1XU01hbkNyZWRTU1B8RW5hYmxlLVdTTWFuQ3JlZFNTUHxHZXQtV1NNYW5DcmVkU1NQfE5ldy1XU01hbkluc3RhbmNlfEdldC1XU01hbkluc3RhbmNlfFNldC1XU01hbkluc3RhbmNlfFJlbW92ZS1XU01hbkluc3RhbmNlfFNldC1XU01hblF1aWNrQ29uZmlnfE5ldy1XU01hblNlc3Npb25PcHRpb24iLnNwbGl0KCJ8IikpLG49ImVxfG5lfGdlfGd0fGx0fGxlfGxpa2V8bm90bGlrZXxtYXRjaHxub3RtYXRjaHxyZXBsYWNlfGNvbnRhaW5zfG5vdGNvbnRhaW5zfGllcXxpbmV8aWdlfGlndHxpbGV8aWx0fGlsaWtlfGlub3RsaWtlfGltYXRjaHxpbm90bWF0Y2h8aXJlcGxhY2V8aWNvbnRhaW5zfGlub3Rjb250YWluc3xpc3xpc25vdHxhc3xhbmR8b3J8YmFuZHxib3J8bm90Ijt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IiMuKiQifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlsnXSg/Oig/OlxcXFwuKXwoPzpbXidcXFxcXSkpKj9bJ10ifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIwW3hYXVswLTlhLWZBLUZdK1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IlsrLV0/XFxkKyg/Oig/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPyk/XFxiIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDoiWyRdKD86W1R0XXJ1ZXxbRmZdYWxzZSlcXGIifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlIixyZWdleDoiWyRdW05uXXVsbFxcYiJ9LHt0b2tlbjoidmFyaWFibGUuaW5zdGFuY2UiLHJlZ2V4OiJbJF1bYS16QS1aXVthLXpBLVowLTlfXSpcXGIifSx7dG9rZW46ZnVuY3Rpb24obil7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkobik/ImtleXdvcmQiOnQuaGFzT3duUHJvcGVydHkobik/InN1cHBvcnQuZnVuY3Rpb24iOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRcXC1dKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcLSg/OiIrbisiKSJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IiZ8XFwqfFxcK3xcXC18XFw9fFxcKz18XFwtPSJ9LHt0b2tlbjoibHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InJwYXJlbiIscmVnZXg6IltcXF0pfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX19O3IuaW5oZXJpdHMobyxzKSx0LlBvd2Vyc2hlbGxIaWdobGlnaHRSdWxlcz1vfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXlxzKyQvLnRlc3QoZSk/L15ccypcfS8udGVzdCh0KTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0TGluZSh0KSxpPW4ubWF0Y2goL14oXHMqXH0pLyk7aWYoIWkpcmV0dXJuIDA7dmFyIHM9aVsxXS5sZW5ndGgsbz1lLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp0LGNvbHVtbjpzfSk7aWYoIW98fG8ucm93PT10KXJldHVybiAwO3ZhciB1PXRoaXMuJGdldEluZGVudChlLmdldExpbmUoby5yb3cpKTtlLnJlcGxhY2UobmV3IHIodCwwLHQscy0xKSx1KX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14oXHMrKS8pO3JldHVybiB0P3RbMV06IiJ9fSkuY2FsbChpLnByb3RvdHlwZSksdC5NYXRjaGluZ0JyYWNlT3V0ZGVudD1pfSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vYmVoYXZpb3VyIikuQmVoYXZpb3VyLHM9ZnVuY3Rpb24oKXt0aGlzLmFkZCgiYnJhY2VzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSJ7Iil7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO3JldHVybiBvIT09IiI/e3RleHQ6InsiK28rIn0iLHNlbGVjdGlvbjohMX06e3RleHQ6Int9IixzZWxlY3Rpb246WzEsMV19fWlmKGk9PSJ9Iil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0ifSIpe3ZhciBsPXIuJGZpbmRPcGVuaW5nQnJhY2tldCgifSIse2NvbHVtbjp1LmNvbHVtbisxLHJvdzp1LnJvd30pO2lmKGwhPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fWVsc2UgaWYoaT09IlxuIil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0ifSIpe3ZhciBjPXIuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnUucm93LGNvbHVtbjp1LmNvbHVtbisxfSk7aWYoIWMpcmV0dXJuIG51bGw7dmFyIGg9dGhpcy5nZXROZXh0TGluZUluZGVudChlLGEuc3Vic3RyaW5nKDAsYS5sZW5ndGgtMSksci5nZXRUYWJTdHJpbmcoKSkscD10aGlzLiRnZXRJbmRlbnQoci5kb2MuZ2V0TGluZShjLnJvdykpO3JldHVybnt0ZXh0OiJcbiIraCsiXG4iK3Asc2VsZWN0aW9uOlsxLGgubGVuZ3RoLDEsaC5sZW5ndGhdfX19fSksdGhpcy5hZGQoImJyYWNlcyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiZzPT0ieyIpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5lbmQuY29sdW1uLGkuZW5kLmNvbHVtbisxKTtpZih1PT0ifSIpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSksdGhpcy5hZGQoInBhcmVucyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iKCIpe3ZhciBzPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSxvPXIuZG9jLmdldFRleHRSYW5nZShzKTtyZXR1cm4gbyE9PSIiP3t0ZXh0OiIoIitvKyIpIixzZWxlY3Rpb246ITF9Ont0ZXh0OiIoKSIsc2VsZWN0aW9uOlsxLDFdfX1pZihpPT0iKSIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09IikiKXt2YXIgbD1yLiRmaW5kT3BlbmluZ0JyYWNrZXQoIikiLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihsIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgicGFyZW5zIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSIoIil7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLnN0YXJ0LmNvbHVtbisxLGkuc3RhcnQuY29sdW1uKzIpO2lmKHU9PSIpIilyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09JyInfHxpPT0iJyIpe3ZhciBzPWksbz1uLmdldFNlbGVjdGlvblJhbmdlKCksdT1yLmRvYy5nZXRUZXh0UmFuZ2Uobyk7aWYodSE9PSIiKXJldHVybnt0ZXh0OnMrdStzLHNlbGVjdGlvbjohMX07dmFyIGE9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGY9ci5kb2MuZ2V0TGluZShhLnJvdyksbD1mLnN1YnN0cmluZyhhLmNvbHVtbi0xLGEuY29sdW1uKTtpZihsPT0iXFwiKXJldHVybiBudWxsO3ZhciBjPXIuZ2V0VG9rZW5zKG8uc3RhcnQucm93KSxoPTAscCxkPS0xO2Zvcih2YXIgdj0wO3Y8Yy5sZW5ndGg7disrKXtwPWNbdl0scC50eXBlPT0ic3RyaW5nIj9kPS0xOmQ8MCYmKGQ9cC52YWx1ZS5pbmRleE9mKHMpKTtpZihwLnZhbHVlLmxlbmd0aCtoPm8uc3RhcnQuY29sdW1uKWJyZWFrO2grPWNbdl0udmFsdWUubGVuZ3RofWlmKCFwfHxkPDAmJnAudHlwZSE9PSJjb21tZW50IiYmKHAudHlwZSE9PSJzdHJpbmcifHxvLnN0YXJ0LmNvbHVtbiE9PXAudmFsdWUubGVuZ3RoK2gtMSYmcC52YWx1ZS5sYXN0SW5kZXhPZihzKT09PXAudmFsdWUubGVuZ3RoLTEpKXJldHVybnt0ZXh0OnMrcyxzZWxlY3Rpb246WzEsMV19O2lmKHAmJnAudHlwZT09PSJzdHJpbmciKXt2YXIgbT1mLnN1YnN0cmluZyhhLmNvbHVtbixhLmNvbHVtbisxKTtpZihtPT1zKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiYocz09JyInfHxzPT0iJyIpKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09JyInKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pfTtyLmluaGVyaXRzKHMsaSksdC5Dc3R5bGVCZWhhdmlvdXI9c30pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2Uscz1lKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLG89dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307ci5pbmhlcml0cyhvLHMpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9Lyhce3xcWylbXlx9XF1dKiR8XlxzKihcL1wqKS8sdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj0vXlteXFtce10qKFx9fFxdKXxeW1xzXCpdKihcKlwvKS8sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKSxzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXg7aWYoc1sxXSlyZXR1cm4gdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrKGUsc1sxXSxuLG8pO3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8rc1swXS5sZW5ndGgpO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX1pZih0IT09Im1hcmtiZWdpbmVuZCIpcmV0dXJuO3ZhciBzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RvcE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleCtzWzBdLmxlbmd0aDtpZihzWzJdKXt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9dmFyIGE9e3JvdzpuLGNvbHVtbjpvfSxmPWUuJGZpbmRPcGVuaW5nQnJhY2tldChzWzFdLGEpO2lmKCFmKXJldHVybjtyZXR1cm4gZi5jb2x1bW4rKyxhLmNvbHVtbi0tLGkuZnJvbVBvaW50cyhmLGEpfX19LmNhbGwoby5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGk9dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobik7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3Qocik/InN0YXJ0Ijp0PT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KHIpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihlLHQsbil7dmFyIGk9L1xTLyxzPWUuZ2V0TGluZSh0KSxvPXMuc2VhcmNoKGkpO2lmKG89PS0xKXJldHVybjt2YXIgdT1ufHxzLmxlbmd0aCxhPWUuZ2V0TGVuZ3RoKCksZj10LGw9dDt3aGlsZSgrK3Q8YSl7dmFyIGM9ZS5nZXRMaW5lKHQpLnNlYXJjaChpKTtpZihjPT0tMSljb250aW51ZTtpZihjPD1vKWJyZWFrO2w9dH1pZihsPmYpe3ZhciBoPWUuZ2V0TGluZShsKS5sZW5ndGg7cmV0dXJuIG5ldyByKGYsdSxsLGgpfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGUsdCxuLGkscyl7dmFyIG89e3JvdzpuLGNvbHVtbjppKzF9LHU9ZS4kZmluZENsb3NpbmdCcmFja2V0KHQsbyxzKTtpZighdSlyZXR1cm47dmFyIGE9ZS5mb2xkV2lkZ2V0c1t1LnJvd107cmV0dXJuIGE9PW51bGwmJihhPXRoaXMuZ2V0Rm9sZFdpZGdldChlLHUucm93KSksYT09InN0YXJ0IiYmdS5yb3c+by5yb3cmJih1LnJvdy0tLHUuY29sdW1uPWUuZ2V0TGluZSh1LnJvdykubGVuZ3RoKSxyLmZyb21Qb2ludHMobyx1KX19KS5jYWxsKGkucHJvdG90eXBlKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-python.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9weXRob24iLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvcHl0aG9uX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2ZvbGRpbmcvcHl0aG9uaWMiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4vcHl0aG9uX2hpZ2hsaWdodF9ydWxlcyIpLlB5dGhvbkhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9mb2xkaW5nL3B5dGhvbmljIikuRm9sZE1vZGUsYT1lKCIuLi9yYW5nZSIpLlJhbmdlLGY9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgdSgiXFw6Iil9O3IuaW5oZXJpdHMoZixpKSxmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPSEwLHM9L14oXHMqKSMvO2Zvcih2YXIgbz1uO288PXI7bysrKWlmKCFzLnRlc3QodC5nZXRMaW5lKG8pKSl7aT0hMTticmVha31pZihpKXt2YXIgdT1uZXcgYSgwLDAsMCwwKTtmb3IodmFyIG89bjtvPD1yO28rKyl7dmFyIGY9dC5nZXRMaW5lKG8pLGw9Zi5tYXRjaChzKTt1LnN0YXJ0LnJvdz1vLHUuZW5kLnJvdz1vLHUuZW5kLmNvbHVtbj1sWzBdLmxlbmd0aCx0LnJlcGxhY2UodSxsWzFdKX19ZWxzZSB0LmluZGVudFJvd3MobixyLCIjIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJGdldEluZGVudCh0KSxpPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKHQsZSkscz1pLnRva2VucztpZihzLmxlbmd0aCYmc1tzLmxlbmd0aC0xXS50eXBlPT0iY29tbWVudCIpcmV0dXJuIHI7aWYoZT09InN0YXJ0Iil7dmFyIG89dC5tYXRjaCgvXi4qW1x7XChcW1w6XVxzKiQvKTtvJiYocis9bil9cmV0dXJuIHJ9O3ZhciBlPXtwYXNzOjEsInJldHVybiI6MSxyYWlzZToxLCJicmVhayI6MSwiY29udGludWUiOjF9O3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKHQsbixyKXtpZihyIT09IlxyXG4iJiZyIT09IlxyIiYmciE9PSJcbiIpcmV0dXJuITE7dmFyIGk9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnMobi50cmltKCksdCkudG9rZW5zO2lmKCFpKXJldHVybiExO2RvIHZhciBzPWkucG9wKCk7d2hpbGUocyYmKHMudHlwZT09ImNvbW1lbnQifHxzLnR5cGU9PSJ0ZXh0IiYmcy52YWx1ZS5tYXRjaCgvXlxzKyQvKSkpO3JldHVybiBzP3MudHlwZT09ImtleXdvcmQiJiZlW3MudmFsdWVdOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXtuKz0xO3ZhciByPXRoaXMuJGdldEluZGVudCh0LmdldExpbmUobikpLGk9dC5nZXRUYWJTdHJpbmcoKTtyLnNsaWNlKC1pLmxlbmd0aCk9PWkmJnQucmVtb3ZlKG5ldyBhKG4sci5sZW5ndGgtaS5sZW5ndGgsbixyLmxlbmd0aCkpfX0uY2FsbChmLnByb3RvdHlwZSksdC5Nb2RlPWZ9KSxkZWZpbmUoImFjZS9tb2RlL3B5dGhvbl9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2xpYi9sYW5nIikscz1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLG89ZnVuY3Rpb24oKXt2YXIgZT1pLmFycmF5VG9NYXAoImFuZHxhc3xhc3NlcnR8YnJlYWt8Y2xhc3N8Y29udGludWV8ZGVmfGRlbHxlbGlmfGVsc2V8ZXhjZXB0fGV4ZWN8ZmluYWxseXxmb3J8ZnJvbXxnbG9iYWx8aWZ8aW1wb3J0fGlufGlzfGxhbWJkYXxub3R8b3J8cGFzc3xwcmludHxyYWlzZXxyZXR1cm58dHJ5fHdoaWxlfHdpdGh8eWllbGQiLnNwbGl0KCJ8IikpLHQ9aS5hcnJheVRvTWFwKCJUcnVlfEZhbHNlfE5vbmV8Tm90SW1wbGVtZW50ZWR8RWxsaXBzaXN8X19kZWJ1Z19fIi5zcGxpdCgifCIpKSxuPWkuYXJyYXlUb01hcCgiYWJzfGRpdm1vZHxpbnB1dHxvcGVufHN0YXRpY21ldGhvZHxhbGx8ZW51bWVyYXRlfGludHxvcmR8c3RyfGFueXxldmFsfGlzaW5zdGFuY2V8cG93fHN1bXxiYXNlc3RyaW5nfGV4ZWNmaWxlfGlzc3ViY2xhc3N8cHJpbnR8c3VwZXJ8YmluZmlsZXxpdGVyfHByb3BlcnR5fHR1cGxlfGJvb2x8ZmlsdGVyfGxlbnxyYW5nZXx0eXBlfGJ5dGVhcnJheXxmbG9hdHxsaXN0fHJhd19pbnB1dHx1bmljaHJ8Y2FsbGFibGV8Zm9ybWF0fGxvY2Fsc3xyZWR1Y2V8dW5pY29kZXxjaHJ8ZnJvemVuc2V0fGxvbmd8cmVsb2FkfHZhcnN8Y2xhc3NtZXRob2R8Z2V0YXR0cnxtYXB8cmVwcnx4cmFuZ2V8Y21wfGdsb2JhbHN8bWF4fHJldmVyc2VkfHppcHxjb21waWxlfGhhc2F0dHJ8bWVtb3J5dmlld3xyb3VuZHxfX2ltcG9ydF9ffGNvbXBsZXh8aGFzaHxtaW58c2V0fGFwcGx5fGRlbGF0dHJ8aGVscHxuZXh0fHNldGF0dHJ8YnVmZmVyfGRpY3R8aGV4fG9iamVjdHxzbGljZXxjb2VyY2V8ZGlyfGlkfG9jdHxzb3J0ZWR8aW50ZXJuIi5zcGxpdCgifCIpKSxyPWkuYXJyYXlUb01hcCgiIi5zcGxpdCgifCIpKSxzPSIoPzpyfHV8dXJ8UnxVfFVSfFVyfHVSKT8iLG89Iig/Oig/OlsxLTldXFxkKil8KD86MCkpIix1PSIoPzowW29PXT9bMC03XSspIixhPSIoPzowW3hYXVtcXGRBLUZhLWZdKykiLGY9Iig/OjBbYkJdWzAxXSspIixsPSIoPzoiK28rInwiK3UrInwiK2ErInwiK2YrIikiLGM9Iig/OltlRV1bKy1dP1xcZCspIixoPSIoPzpcXC5cXGQrKSIscD0iKD86XFxkKykiLGQ9Iig/Oig/OiIrcCsiPyIraCsiKXwoPzoiK3ArIlxcLikpIix2PSIoPzooPzoiK2QrInwiK3ArIikiK2MrIikiLG09Iig/OiIrdisifCIrZCsiKSI7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIjLiokIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OnMrJyJ7M30oPzpbXlxcXFxdfFxcXFwuKSo/InszfSd9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDpzKyciezN9LiokJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDpzKyciKD86W15cXFxcXXxcXFxcLikqPyInfSx7dG9rZW46InN0cmluZyIscmVnZXg6cysiJ3szfSg/OlteXFxcXF18XFxcXC4pKj8nezN9In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OnMrIid7M30uKiQiLG5leHQ6InFzdHJpbmcifSx7dG9rZW46InN0cmluZyIscmVnZXg6cysiJyg/OlteXFxcXF18XFxcXC4pKj8nIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiKD86IittKyJ8XFxkKylbakpdXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDptfSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OmwrIltsTF1cXGIifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OmwrIlxcYiJ9LHt0b2tlbjpmdW5jdGlvbihpKXtyZXR1cm4gZS5oYXNPd25Qcm9wZXJ0eShpKT8ia2V5d29yZCI6dC5oYXNPd25Qcm9wZXJ0eShpKT8iY29uc3RhbnQubGFuZ3VhZ2UiOnIuaGFzT3duUHJvcGVydHkoaSk/ImludmFsaWQuaWxsZWdhbCI6bi5oYXNPd25Qcm9wZXJ0eShpKT8ic3VwcG9ydC5mdW5jdGlvbiI6aT09ImRlYnVnZ2VyIj8iaW52YWxpZC5kZXByZWNhdGVkIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXCt8XFwtfFxcKnxcXCpcXCp8XFwvfFxcL1xcL3wlfDw8fD4+fCZ8XFx8fFxcXnx+fDx8Pnw8PXw9Pnw9PXwhPXw8Pnw9In0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJbXFxbXFwoXFx7XSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiW1xcXVxcKVxcfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLHFxc3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Jyg/OlteXFxcXF18XFxcXC4pKj8iezN9JyxuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV0scXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OiIoPzpbXlxcXFxdfFxcXFwuKSo/J3szfSIsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfX07ci5pbmhlcml0cyhvLHMpLHQuUHl0aG9uSGlnaGxpZ2h0UnVsZXM9b30pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9weXRob25pYyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxzPXQuRm9sZE1vZGU9ZnVuY3Rpb24oZSl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bmV3IFJlZ0V4cCgiKFtcXFt7XSkoPzpcXHMqKSR8KCIrZSsiKSg/OlxccyopKD86Iy4qKT8kIil9O3IuaW5oZXJpdHMocyxpKSxmdW5jdGlvbigpe3RoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobiksaT1yLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihpKXJldHVybiBpWzFdP3RoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhlLGlbMV0sbixpLmluZGV4KTppWzJdP3RoaXMuaW5kZW50YXRpb25CbG9jayhlLG4saS5pbmRleCtpWzJdLmxlbmd0aCk6dGhpcy5pbmRlbnRhdGlvbkJsb2NrKGUsbil9fS5jYWxsKHMucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxpPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KHIpPyJzdGFydCI6dD09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChyKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPS9cUy8scz1lLmdldExpbmUodCksbz1zLnNlYXJjaChpKTtpZihvPT0tMSlyZXR1cm47dmFyIHU9bnx8cy5sZW5ndGgsYT1lLmdldExlbmd0aCgpLGY9dCxsPXQ7d2hpbGUoKyt0PGEpe3ZhciBjPWUuZ2V0TGluZSh0KS5zZWFyY2goaSk7aWYoYz09LTEpY29udGludWU7aWYoYzw9bylicmVhaztsPXR9aWYobD5mKXt2YXIgaD1lLmdldExpbmUobCkubGVuZ3RoO3JldHVybiBuZXcgcihmLHUsbCxoKX19LHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jaz1mdW5jdGlvbihlLHQsbixpLHMpe3ZhciBvPXtyb3c6bixjb2x1bW46aSsxfSx1PWUuJGZpbmRDbG9zaW5nQnJhY2tldCh0LG8scyk7aWYoIXUpcmV0dXJuO3ZhciBhPWUuZm9sZFdpZGdldHNbdS5yb3ddO3JldHVybiBhPT1udWxsJiYoYT10aGlzLmdldEZvbGRXaWRnZXQoZSx1LnJvdykpLGE9PSJzdGFydCImJnUucm93Pm8ucm93JiYodS5yb3ctLSx1LmNvbHVtbj1lLmdldExpbmUodS5yb3cpLmxlbmd0aCksci5mcm9tUG9pbnRzKG8sdSl9fSkuY2FsbChpLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-ruby.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9ydWJ5IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3J1YnlfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9ydWJ5X2hpZ2hsaWdodF9ydWxlcyIpLlJ1YnlIaWdobGlnaHRSdWxlcyx1PWUoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGE9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxmPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBzKChuZXcgbykuZ2V0UnVsZXMoKSksdGhpcy4kb3V0ZGVudD1uZXcgdX07ci5pbmhlcml0cyhmLGkpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ITAscz0vXihccyopIy87Zm9yKHZhciBvPW47bzw9cjtvKyspaWYoIXMudGVzdCh0LmdldExpbmUobykpKXtpPSExO2JyZWFrfWlmKGkpe3ZhciB1PW5ldyBhKDAsMCwwLDApO2Zvcih2YXIgbz1uO288PXI7bysrKXt2YXIgZj10LmdldExpbmUobyksbD1mLm1hdGNoKHMpO3Uuc3RhcnQucm93PW8sdS5lbmQucm93PW8sdS5lbmQuY29sdW1uPWxbMF0ubGVuZ3RoLHQucmVwbGFjZSh1LGxbMV0pfX1lbHNlIHQuaW5kZW50Um93cyhuLHIsIiMiKX0sdGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy4kZ2V0SW5kZW50KHQpLGk9dGhpcy4kdG9rZW5pemVyLmdldExpbmVUb2tlbnModCxlKSxzPWkudG9rZW5zO2lmKHMubGVuZ3RoJiZzW3MubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gcjtpZihlPT0ic3RhcnQiKXt2YXIgbz10Lm1hdGNoKC9eLipbXHtcKFxbXVxzKiQvKTtvJiYocis9bil9cmV0dXJuIHJ9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy4kb3V0ZGVudC5jaGVja091dGRlbnQodCxuKX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7dGhpcy4kb3V0ZGVudC5hdXRvT3V0ZGVudCh0LG4pfX0uY2FsbChmLnByb3RvdHlwZSksdC5Nb2RlPWZ9KSxkZWZpbmUoImFjZS9tb2RlL3J1YnlfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi9saWIvbGFuZyIpLHM9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxvPWZ1bmN0aW9uKCl7dmFyIGU9aS5hcnJheVRvTWFwKCJhYm9ydHxBcnJheXxhc3NlcnR8YXNzZXJ0X2VxdWFsfGFzc2VydF9ub3RfZXF1YWx8YXNzZXJ0X3NhbWV8YXNzZXJ0X25vdF9zYW1lfGFzc2VydF9uaWx8YXNzZXJ0X25vdF9uaWx8YXNzZXJ0X21hdGNofGFzc2VydF9ub19tYXRjaHxhc3NlcnRfaW5fZGVsdGF8YXNzZXJ0X3Rocm93c3xhc3NlcnRfcmFpc2V8YXNzZXJ0X25vdGhpbmdfcmFpc2VkfGFzc2VydF9pbnN0YW5jZV9vZnxhc3NlcnRfa2luZF9vZnxhc3NlcnRfcmVzcG9uZF90b3xhc3NlcnRfb3BlcmF0b3J8YXNzZXJ0X3NlbmR8YXNzZXJ0X2RpZmZlcmVuY2V8YXNzZXJ0X25vX2RpZmZlcmVuY2V8YXNzZXJ0X3JlY29nbml6ZXN8YXNzZXJ0X2dlbmVyYXRlc3xhc3NlcnRfcmVzcG9uc2V8YXNzZXJ0X3JlZGlyZWN0ZWRfdG98YXNzZXJ0X3RlbXBsYXRlfGFzc2VydF9zZWxlY3R8YXNzZXJ0X3NlbGVjdF9lbWFpbHxhc3NlcnRfc2VsZWN0X3Jqc3xhc3NlcnRfc2VsZWN0X2VuY29kZWR8Y3NzX3NlbGVjdHxhdF9leGl0fGF0dHJ8YXR0cl93cml0ZXJ8YXR0cl9yZWFkZXJ8YXR0cl9hY2Nlc3NvcnxhdHRyX2FjY2Vzc2libGV8YXV0b2xvYWR8YmluZGluZ3xibG9ja19naXZlbj98Y2FsbGNjfGNhbGxlcnxjYXRjaHxjaG9tcHxjaG9tcCF8Y2hvcHxjaG9wIXxkZWZpbmVkP3xkZWxldGVfdmlhX3JlZGlyZWN0fGV2YWx8ZXhlY3xleGl0fGV4aXQhfGZhaWx8RmxvYXR8Zmx1bmt8Zm9sbG93X3JlZGlyZWN0IXxmb3JrfGZvcm1fZm9yfGZvcm1fdGFnfGZvcm1hdHxnZXRzfGdsb2JhbF92YXJpYWJsZXN8Z3N1Ynxnc3ViIXxnZXRfdmlhX3JlZGlyZWN0fGh8aG9zdCF8aHR0cHM/fGh0dHBzIXxpbmNsdWRlfEludGVnZXJ8bGFtYmRhfGxpbmtfdG98bGlua190b191bmxlc3NfY3VycmVudHxsaW5rX3RvX2Z1bmN0aW9ufGxpbmtfdG9fcmVtb3RlfGxvYWR8bG9jYWxfdmFyaWFibGVzfGxvb3B8b3BlbnxvcGVuX3Nlc3Npb258cHxwcmludHxwcmludGZ8cHJvY3xwdXRjfHB1dHN8cG9zdF92aWFfcmVkaXJlY3R8cHV0X3ZpYV9yZWRpcmVjdHxyYWlzZXxyYW5kfHJhd3xyZWFkbGluZXxyZWFkbGluZXN8cmVkaXJlY3Q/fHJlcXVlc3RfdmlhX3JlZGlyZWN0fHJlcXVpcmV8c2NhbnxzZWxlY3R8c2V0X3RyYWNlX2Z1bmN8c2xlZXB8c3BsaXR8c3ByaW50ZnxzcmFuZHxTdHJpbmd8c3R5bGVzaGVldF9saW5rX3RhZ3xzeXNjYWxsfHN5c3RlbXxzdWJ8c3ViIXx0ZXN0fHRocm93fHRyYWNlX3Zhcnx0cmFwfHVudHJhY2VfdmFyfGF0YW4yfGNvc3xleHB8ZnJleHB8bGRleHB8bG9nfGxvZzEwfHNpbnxzcXJ0fHRhbnxyZW5kZXJ8amF2YXNjcmlwdF9pbmNsdWRlX3RhZ3xjc3JmX21ldGFfdGFnfGxhYmVsX3RhZ3x0ZXh0X2ZpZWxkX3RhZ3xzdWJtaXRfdGFnfGNoZWNrX2JveF90YWd8Y29udGVudF90YWd8cmFkaW9fYnV0dG9uX3RhZ3x0ZXh0X2FyZWFfdGFnfHBhc3N3b3JkX2ZpZWxkX3RhZ3xoaWRkZW5fZmllbGRfdGFnfGZpZWxkc19mb3J8c2VsZWN0X3RhZ3xvcHRpb25zX2Zvcl9zZWxlY3R8b3B0aW9uc19mcm9tX2NvbGxlY3Rpb25fZm9yX3NlbGVjdHxjb2xsZWN0aW9uX3NlbGVjdHx0aW1lX3pvbmVfc2VsZWN0fHNlbGVjdF9kYXRlfHNlbGVjdF90aW1lfHNlbGVjdF9kYXRldGltZXxkYXRlX3NlbGVjdHx0aW1lX3NlbGVjdHxkYXRldGltZV9zZWxlY3R8c2VsZWN0X3llYXJ8c2VsZWN0X21vbnRofHNlbGVjdF9kYXl8c2VsZWN0X2hvdXJ8c2VsZWN0X21pbnV0ZXxzZWxlY3Rfc2Vjb25kfGZpbGVfZmllbGRfdGFnfGZpbGVfZmllbGR8cmVzcG9uZF90b3xza2lwX2JlZm9yZV9maWx0ZXJ8YXJvdW5kX2ZpbHRlcnxhZnRlcl9maWx0ZXJ8dmVyaWZ5fHByb3RlY3RfZnJvbV9mb3JnZXJ5fHJlc2N1ZV9mcm9tfGhlbHBlcl9tZXRob2R8cmVkaXJlY3RfdG98YmVmb3JlX2ZpbHRlcnxzZW5kX2RhdGF8c2VuZF9maWxlfHZhbGlkYXRlc19wcmVzZW5jZV9vZnx2YWxpZGF0ZXNfdW5pcXVlbmVzc19vZnx2YWxpZGF0ZXNfbGVuZ3RoX29mfHZhbGlkYXRlc19mb3JtYXRfb2Z8dmFsaWRhdGVzX2FjY2VwdGFuY2Vfb2Z8dmFsaWRhdGVzX2Fzc29jaWF0ZWR8dmFsaWRhdGVzX2V4Y2x1c2lvbl9vZnx2YWxpZGF0ZXNfaW5jbHVzaW9uX29mfHZhbGlkYXRlc19udW1lcmljYWxpdHlfb2Z8dmFsaWRhdGVzX3dpdGh8dmFsaWRhdGVzX2VhY2h8YXV0aGVudGljYXRlX29yX3JlcXVlc3Rfd2l0aF9odHRwX2Jhc2ljfGF1dGhlbnRpY2F0ZV9vcl9yZXF1ZXN0X3dpdGhfaHR0cF9kaWdlc3R8ZmlsdGVyX3BhcmFtZXRlcl9sb2dnaW5nfG1hdGNofGdldHxwb3N0fHJlc291cmNlc3xyZWRpcmVjdHxzY29wZXxhc3NlcnRfcm91dGluZ3x0cmFuc2xhdGV8bG9jYWxpemV8ZXh0cmFjdF9sb2NhbGVfZnJvbV90bGR8dHxsfGNhY2hlc19wYWdlfGV4cGlyZV9wYWdlfGNhY2hlc19hY3Rpb258ZXhwaXJlX2FjdGlvbnxjYWNoZXxleHBpcmVfZnJhZ21lbnR8ZXhwaXJlX2NhY2hlX2ZvcnxvYnNlcnZlfGNhY2hlX3N3ZWVwZXJ8aGFzX21hbnl8aGFzX29uZXxiZWxvbmdzX3RvfGhhc19hbmRfYmVsb25nc190b19tYW55Ii5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgiYWxpYXN8YW5kfEJFR0lOfGJlZ2lufGJyZWFrfGNhc2V8Y2xhc3N8ZGVmfGRlZmluZWR8ZG98ZWxzZXxlbHNpZnxFTkR8ZW5kfGVuc3VyZXxfX0ZJTEVfX3xmaW5hbGx5fGZvcnxnZW18aWZ8aW58X19MSU5FX198bW9kdWxlfG5leHR8bm90fG9yfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xyZWRvfHJlc2N1ZXxyZXRyeXxyZXR1cm58c3VwZXJ8dGhlbnx1bmRlZnx1bmxlc3N8dW50aWx8d2hlbnx3aGlsZXx5aWVsZCIuc3BsaXQoInwiKSksbj1pLmFycmF5VG9NYXAoInRydWV8VFJVRXxmYWxzZXxGQUxTRXxuaWx8TklMfEFSR0Z8QVJHVnxEQVRBfEVOVnxSVUJZX1BMQVRGT1JNfFJVQllfUkVMRUFTRV9EQVRFfFJVQllfVkVSU0lPTnxTVERFUlJ8U1RESU58U1RET1VUfFRPUExFVkVMX0JJTkRJTkciLnNwbGl0KCJ8IikpLHI9aS5hcnJheVRvTWFwKCIkREVCVUd8JGRlZm91dHwkRklMRU5BTUV8JExPQURfUEFUSHwkU0FGRXwkc3RkaW58JHN0ZG91dHwkc3RkZXJyfCRWRVJCT1NFfCQhfHJvb3RfdXJsfGZsYXNofHNlc3Npb258Y29va2llc3xwYXJhbXN8cmVxdWVzdHxyZXNwb25zZXxsb2dnZXIiLnNwbGl0KCJ8IikpO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiIy4qJCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Il49YmVnaW4kIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiWy9dKD86KD86XFxbKD86XFxcXF18W15cXF1dKStcXF0pfCg/OlxcXFwvfFteXFxdL10pKSpbL11cXHcqXFxzKig/PVspLiw7XXwkKSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonWyJdKD86KD86XFxcXC4pfCg/OlteIlxcXFxdKSkqP1siXSd9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiW2BdKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1tgXSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6Ijo6In0se3Rva2VuOiJ2YXJpYWJsZS5pbnN0YW5jY2UiLHJlZ2V4OiJAezEsMn0oPzpbYS16QS1aX118ZCkrIn0se3Rva2VuOiJ2YXJpYWJsZS5jbGFzcyIscmVnZXg6IltBLVpdKD86W2EtekEtWl9dfGQpKyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWzpdKD86W0EtWmEtel9dfFtAJF0oPz1bYS16QS1aMC05X10pKVthLXpBLVowLTlfXSpbIT0/XT8ifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIwW3hYXVswLTlhLWZBLUZdKD86WzAtOWEtZkEtRl18Xyg/PVswLTlhLWZBLUZdKSkqXFxiIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQoPzpcXGR8Xyg/PVxcZCkpKig/Oig/OlxcLlxcZCg/OlxcZHxfKD89XFxkKSkqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuYm9vbGVhbiIscmVnZXg6Iig/OnRydWV8ZmFsc2UpXFxiIn0se3Rva2VuOmZ1bmN0aW9uKGkpe3JldHVybiBpPT0ic2VsZiI/InZhcmlhYmxlLmxhbmd1YWdlIjp0Lmhhc093blByb3BlcnR5KGkpPyJrZXl3b3JkIjpuLmhhc093blByb3BlcnR5KGkpPyJjb25zdGFudC5sYW5ndWFnZSI6ci5oYXNPd25Qcm9wZXJ0eShpKT8idmFyaWFibGUubGFuZ3VhZ2UiOmUuaGFzT3duUHJvcGVydHkoaSk/InN1cHBvcnQuZnVuY3Rpb24iOmk9PSJkZWJ1Z2dlciI/ImludmFsaWQuZGVwcmVjYXRlZCI6ImlkZW50aWZpZXIifSxyZWdleDoiW2EtekEtWl8kXVthLXpBLVowLTlfJF0qXFxiIn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiIXxcXCR8JXwmfFxcKnxcXC1cXC18XFwtfFxcK1xcK3xcXCt8fnw9PT18PT18PXwhPXwhPT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFxcfFxcfHxcXD9cXDp8XFwqPXwlPXxcXCs9fFxcLT18Jj18XFxePXxcXGIoPzppbnxpbnN0YW5jZW9mfG5ld3xkZWxldGV8dHlwZW9mfHZvaWQpIn0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4OiJbWyh7XSJ9LHt0b2tlbjoicGFyZW4ucnBhcmVuIixyZWdleDoiW1xcXSl9XSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiXj1lbmQkIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfX07ci5pbmhlcml0cyhvLHMpLHQuUnVieUhpZ2hsaWdodFJ1bGVzPW99KSxkZWZpbmUoImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxpPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQpe3JldHVybi9eXHMrJC8udGVzdChlKT8vXlxzKlx9Ly50ZXN0KHQpOiExfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRMaW5lKHQpLGk9bi5tYXRjaCgvXihccypcfSkvKTtpZighaSlyZXR1cm4gMDt2YXIgcz1pWzFdLmxlbmd0aCxvPWUuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnQsY29sdW1uOnN9KTtpZighb3x8by5yb3c9PXQpcmV0dXJuIDA7dmFyIHU9dGhpcy4kZ2V0SW5kZW50KGUuZ2V0TGluZShvLnJvdykpO2UucmVwbGFjZShuZXcgcih0LDAsdCxzLTEpLHUpfSx0aGlzLiRnZXRJbmRlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCgvXihccyspLyk7cmV0dXJuIHQ/dFsxXToiIn19KS5jYWxsKGkucHJvdG90eXBlKSx0Lk1hdGNoaW5nQnJhY2VPdXRkZW50PWl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-scad.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9zY2FkIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3NjYWRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9zY2FkX2hpZ2hsaWdodF9ydWxlcyIpLnNjYWRIaWdobGlnaHRSdWxlcyx1PWUoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGE9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxmPWUoIi4vYmVoYXZpb3VyL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixsPWUoIi4vZm9sZGluZy9jc3R5bGUiKS5Gb2xkTW9kZSxjPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBzKChuZXcgbykuZ2V0UnVsZXMoKSksdGhpcy4kb3V0ZGVudD1uZXcgdSx0aGlzLiRiZWhhdmlvdXI9bmV3IGYsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGx9O3IuaW5oZXJpdHMoYyxpKSxmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPSEwLHM9L14oXHMqKVwvXC8vO2Zvcih2YXIgbz1uO288PXI7bysrKWlmKCFzLnRlc3QodC5nZXRMaW5lKG8pKSl7aT0hMTticmVha31pZihpKXt2YXIgdT1uZXcgYSgwLDAsMCwwKTtmb3IodmFyIG89bjtvPD1yO28rKyl7dmFyIGY9dC5nZXRMaW5lKG8pLGw9Zi5tYXRjaChzKTt1LnN0YXJ0LnJvdz1vLHUuZW5kLnJvdz1vLHUuZW5kLmNvbHVtbj1sWzBdLmxlbmd0aCx0LnJlcGxhY2UodSxsWzFdKX19ZWxzZSB0LmluZGVudFJvd3MobixyLCIvLyIpfSx0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRnZXRJbmRlbnQodCksaT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2Vucyh0LGUpLHM9aS50b2tlbnMsbz1pLnN0YXRlO2lmKHMubGVuZ3RoJiZzW3MubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gcjtpZihlPT0ic3RhcnQiKXt2YXIgdT10Lm1hdGNoKC9eLipbXHtcKFxbXVxzKiQvKTt1JiYocis9bil9ZWxzZSBpZihlPT0iZG9jLXN0YXJ0Iil7aWYobz09InN0YXJ0IilyZXR1cm4iIjt2YXIgdT10Lm1hdGNoKC9eXHMqKFwvPylcKi8pO3UmJih1WzFdJiYocis9IiAiKSxyKz0iKiAiKX1yZXR1cm4gcn0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudCh0LG4pfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KHQsbil9fS5jYWxsKGMucHJvdG90eXBlKSx0Lk1vZGU9Y30pLGRlZmluZSgiYWNlL21vZGUvc2NhZF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2xpYi9sYW5nIikscz1lKCIuL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIpLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcyxvPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsdT1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgibW9kdWxlfGlmfGVsc2V8Zm9yIi5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgiTlVMTCIuc3BsaXQoInwiKSk7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSxzLmdldFN0YXJ0UnVsZSgic3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXS4qXFxcXCQnLG5leHQ6InFxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10uKlxcXFwkIixuZXh0OiJxc3RyaW5nIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiMFt4WF1bMC05YS1mQS1GXStcXGIifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQiLHJlZ2V4OiI8W2EtekEtWjAtOS5dKz4ifSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiIoPzp1c2V8aW5jbHVkZSkifSx7dG9rZW46ZnVuY3Rpb24obil7cmV0dXJuIG49PSJ0aGlzIj8idmFyaWFibGUubGFuZ3VhZ2UiOmUuaGFzT3duUHJvcGVydHkobik/ImtleXdvcmQiOnQuaGFzT3duUHJvcGVydHkobik/ImNvbnN0YW50Lmxhbmd1YWdlIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiIhfFxcJHwlfCZ8XFwqfFxcLVxcLXxcXC18XFwrXFwrfFxcK3x+fD09fD18IT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFxcfFxcfHxcXD9cXDp8XFwqPXwlPXxcXCs9fFxcLT18Jj18XFxePXxcXGIoPzppbnxuZXd8ZGVsZXRlfHR5cGVvZnx2b2lkKSJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF0pfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OicoPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/IicsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqPyciLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0sdGhpcy5lbWJlZFJ1bGVzKHMsImRvYy0iLFtzLmdldEVuZFJ1bGUoInN0YXJ0IildKX07ci5pbmhlcml0cyh1LG8pLHQuc2NhZEhpZ2hsaWdodFJ1bGVzPXV9KSxkZWZpbmUoImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxzPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQuZG9jLnRhZyIscmVnZXg6IkBbXFx3XFxkX10rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiVE9ETyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJbXkBcXCpdKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiIuIn1dfX07ci5pbmhlcml0cyhzLGkpLHMuZ2V0U3RhcnRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCooPz1cXCopIixuZXh0OmV9fSxzLmdldEVuZFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcKlxcLyIsbmV4dDplfX0sdC5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXM9c30pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9yYW5nZSIpLlJhbmdlLGk9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuL15ccyskLy50ZXN0KGUpPy9eXHMqXH0vLnRlc3QodCk6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldExpbmUodCksaT1uLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFpKXJldHVybiAwO3ZhciBzPWlbMV0ubGVuZ3RoLG89ZS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dCxjb2x1bW46c30pO2lmKCFvfHxvLnJvdz09dClyZXR1cm4gMDt2YXIgdT10aGlzLiRnZXRJbmRlbnQoZS5nZXRMaW5lKG8ucm93KSk7ZS5yZXBsYWNlKG5ldyByKHQsMCx0LHMtMSksdSl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gdD90WzFdOiIifX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9aX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixzPWZ1bmN0aW9uKCl7dGhpcy5hZGQoImJyYWNlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0ieyIpe3ZhciBzPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSxvPXIuZG9jLmdldFRleHRSYW5nZShzKTtyZXR1cm4gbyE9PSIiP3t0ZXh0OiJ7IitvKyJ9IixzZWxlY3Rpb246ITF9Ont0ZXh0OiJ7fSIsc2VsZWN0aW9uOlsxLDFdfX1pZihpPT0ifSIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09In0iKXt2YXIgbD1yLiRmaW5kT3BlbmluZ0JyYWNrZXQoIn0iLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihsIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX1lbHNlIGlmKGk9PSJcbiIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09In0iKXt2YXIgYz1yLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp1LnJvdyxjb2x1bW46dS5jb2x1bW4rMX0pO2lmKCFjKXJldHVybiBudWxsO3ZhciBoPXRoaXMuZ2V0TmV4dExpbmVJbmRlbnQoZSxhLnN1YnN0cmluZygwLGEubGVuZ3RoLTEpLHIuZ2V0VGFiU3RyaW5nKCkpLHA9dGhpcy4kZ2V0SW5kZW50KHIuZG9jLmdldExpbmUoYy5yb3cpKTtyZXR1cm57dGV4dDoiXG4iK2grIlxuIitwLHNlbGVjdGlvbjpbMSxoLmxlbmd0aCwxLGgubGVuZ3RoXX19fX0pLHRoaXMuYWRkKCJicmFjZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcz09InsiKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuZW5kLmNvbHVtbixpLmVuZC5jb2x1bW4rMSk7aWYodT09In0iKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09IigiKXt2YXIgcz1uLmdldFNlbGVjdGlvblJhbmdlKCksbz1yLmRvYy5nZXRUZXh0UmFuZ2Uocyk7cmV0dXJuIG8hPT0iIj97dGV4dDoiKCIrbysiKSIsc2VsZWN0aW9uOiExfTp7dGV4dDoiKCkiLHNlbGVjdGlvbjpbMSwxXX19aWYoaT09IikiKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSIpIil7dmFyIGw9ci4kZmluZE9wZW5pbmdCcmFja2V0KCIpIix7Y29sdW1uOnUuY29sdW1uKzEscm93OnUucm93fSk7aWYobCE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInBhcmVucyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiZzPT0iKCIpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5zdGFydC5jb2x1bW4rMSxpLnN0YXJ0LmNvbHVtbisyKTtpZih1PT0iKSIpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSciJ3x8aT09IiciKXt2YXIgcz1pLG89bi5nZXRTZWxlY3Rpb25SYW5nZSgpLHU9ci5kb2MuZ2V0VGV4dFJhbmdlKG8pO2lmKHUhPT0iIilyZXR1cm57dGV4dDpzK3UrcyxzZWxlY3Rpb246ITF9O3ZhciBhPW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxmPXIuZG9jLmdldExpbmUoYS5yb3cpLGw9Zi5zdWJzdHJpbmcoYS5jb2x1bW4tMSxhLmNvbHVtbik7aWYobD09IlxcIilyZXR1cm4gbnVsbDt2YXIgYz1yLmdldFRva2VucyhvLnN0YXJ0LnJvdyksaD0wLHAsZD0tMTtmb3IodmFyIHY9MDt2PGMubGVuZ3RoO3YrKyl7cD1jW3ZdLHAudHlwZT09InN0cmluZyI/ZD0tMTpkPDAmJihkPXAudmFsdWUuaW5kZXhPZihzKSk7aWYocC52YWx1ZS5sZW5ndGgraD5vLnN0YXJ0LmNvbHVtbilicmVhaztoKz1jW3ZdLnZhbHVlLmxlbmd0aH1pZighcHx8ZDwwJiZwLnR5cGUhPT0iY29tbWVudCImJihwLnR5cGUhPT0ic3RyaW5nInx8by5zdGFydC5jb2x1bW4hPT1wLnZhbHVlLmxlbmd0aCtoLTEmJnAudmFsdWUubGFzdEluZGV4T2Yocyk9PT1wLnZhbHVlLmxlbmd0aC0xKSlyZXR1cm57dGV4dDpzK3Msc2VsZWN0aW9uOlsxLDFdfTtpZihwJiZwLnR5cGU9PT0ic3RyaW5nIil7dmFyIG09Zi5zdWJzdHJpbmcoYS5jb2x1bW4sYS5jb2x1bW4rMSk7aWYobT09cylyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmKHM9PSciJ3x8cz09IiciKSl7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLnN0YXJ0LmNvbHVtbisxLGkuc3RhcnQuY29sdW1uKzIpO2lmKHU9PSciJylyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KX07ci5pbmhlcml0cyhzLGkpLHQuQ3N0eWxlQmVoYXZpb3VyPXN9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLHM9ZSgiLi9mb2xkX21vZGUiKS5Gb2xkTW9kZSxvPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9O3IuaW5oZXJpdHMobyxzKSxmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPS8oXHt8XFspW15cfVxdXSokfF5ccyooXC9cKikvLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9L15bXlxbXHtdKihcfXxcXSl8Xltcc1wqXSooXCpcLykvLHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobikscz1yLm1hdGNoKHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyKTtpZihzKXt2YXIgbz1zLmluZGV4O2lmKHNbMV0pcmV0dXJuIHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jayhlLHNbMV0sbixvKTt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvK3NbMF0ubGVuZ3RoKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9aWYodCE9PSJtYXJrYmVnaW5lbmQiKXJldHVybjt2YXIgcz1yLm1hdGNoKHRoaXMuZm9sZGluZ1N0b3BNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXgrc1swXS5sZW5ndGg7aWYoc1syXSl7dmFyIHU9ZS5nZXRDb21tZW50Rm9sZFJhbmdlKG4sbyk7cmV0dXJuIHUuZW5kLmNvbHVtbi09Mix1fXZhciBhPXtyb3c6bixjb2x1bW46b30sZj1lLiRmaW5kT3BlbmluZ0JyYWNrZXQoc1sxXSxhKTtpZighZilyZXR1cm47cmV0dXJuIGYuY29sdW1uKyssYS5jb2x1bW4tLSxpLmZyb21Qb2ludHMoZixhKX19fS5jYWxsKG8ucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxpPXQuRm9sZE1vZGU9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuZm9sZGluZ1N0YXJ0TWFya2VyPW51bGwsdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj1udWxsLHRoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pO3JldHVybiB0aGlzLmZvbGRpbmdTdGFydE1hcmtlci50ZXN0KHIpPyJzdGFydCI6dD09Im1hcmtiZWdpbmVuZCImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXImJnRoaXMuZm9sZGluZ1N0b3BNYXJrZXIudGVzdChyKT8iZW5kIjoiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsfSx0aGlzLmluZGVudGF0aW9uQmxvY2s9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPS9cUy8scz1lLmdldExpbmUodCksbz1zLnNlYXJjaChpKTtpZihvPT0tMSlyZXR1cm47dmFyIHU9bnx8cy5sZW5ndGgsYT1lLmdldExlbmd0aCgpLGY9dCxsPXQ7d2hpbGUoKyt0PGEpe3ZhciBjPWUuZ2V0TGluZSh0KS5zZWFyY2goaSk7aWYoYz09LTEpY29udGludWU7aWYoYzw9bylicmVhaztsPXR9aWYobD5mKXt2YXIgaD1lLmdldExpbmUobCkubGVuZ3RoO3JldHVybiBuZXcgcihmLHUsbCxoKX19LHRoaXMub3BlbmluZ0JyYWNrZXRCbG9jaz1mdW5jdGlvbihlLHQsbixpLHMpe3ZhciBvPXtyb3c6bixjb2x1bW46aSsxfSx1PWUuJGZpbmRDbG9zaW5nQnJhY2tldCh0LG8scyk7aWYoIXUpcmV0dXJuO3ZhciBhPWUuZm9sZFdpZGdldHNbdS5yb3ddO3JldHVybiBhPT1udWxsJiYoYT10aGlzLmdldEZvbGRXaWRnZXQoZSx1LnJvdykpLGE9PSJzdGFydCImJnUucm93Pm8ucm93JiYodS5yb3ctLSx1LmNvbHVtbj1lLmdldExpbmUodS5yb3cpLmxlbmd0aCksci5mcm9tUG9pbnRzKG8sdSl9fSkuY2FsbChpLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-scala.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9zY2FsYSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvamF2YXNjcmlwdCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9zY2FsYV9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi9qYXZhc2NyaXB0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4vc2NhbGFfaGlnaGxpZ2h0X3J1bGVzIikuU2NhbGFIaWdobGlnaHRSdWxlcyx1PWZ1bmN0aW9uKCl7aS5jYWxsKHRoaXMpLHRoaXMuJHRva2VuaXplcj1uZXcgcygobmV3IG8pLmdldFJ1bGVzKCkpfTtyLmluaGVyaXRzKHUsaSksZnVuY3Rpb24oKXt0aGlzLmNyZWF0ZVdvcmtlcj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbH19LmNhbGwodS5wcm90b3R5cGUpLHQuTW9kZT11fSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9yYW5nZSIsImFjZS93b3JrZXIvd29ya2VyX2NsaWVudCIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIpLkphdmFTY3JpcHRIaWdobGlnaHRSdWxlcyx1PWUoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGE9ZSgiLi4vcmFuZ2UiKS5SYW5nZSxmPWUoIi4uL3dvcmtlci93b3JrZXJfY2xpZW50IikuV29ya2VyQ2xpZW50LGw9ZSgiLi9iZWhhdmlvdXIvY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLGM9ZSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGg9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyB1LHRoaXMuJGJlaGF2aW91cj1uZXcgbCx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgY307ci5pbmhlcml0cyhoLGkpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ITAscz0vXihccyopXC9cLy87Zm9yKHZhciBvPW47bzw9cjtvKyspaWYoIXMudGVzdCh0LmdldExpbmUobykpKXtpPSExO2JyZWFrfWlmKGkpe3ZhciB1PW5ldyBhKDAsMCwwLDApO2Zvcih2YXIgbz1uO288PXI7bysrKXt2YXIgZj10LmdldExpbmUobyksbD1mLm1hdGNoKHMpO3Uuc3RhcnQucm93PW8sdS5lbmQucm93PW8sdS5lbmQuY29sdW1uPWxbMF0ubGVuZ3RoLHQucmVwbGFjZSh1LGxbMV0pfX1lbHNlIHQuaW5kZW50Um93cyhuLHIsIi8vIil9LHRoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuJGdldEluZGVudCh0KSxpPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKHQsZSkscz1pLnRva2VucyxvPWkuc3RhdGU7aWYocy5sZW5ndGgmJnNbcy5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiByO2lmKGU9PSJzdGFydCJ8fGU9PSJyZWdleF9hbGxvd2VkIil7dmFyIHU9dC5tYXRjaCgvXi4qKD86XGJjYXNlXGIuKlw6fFtce1woXFtdKVxzKiQvKTt1JiYocis9bil9ZWxzZSBpZihlPT0iZG9jLXN0YXJ0Iil7aWYobz09InN0YXJ0Inx8ZT09InJlZ2V4X2FsbG93ZWQiKXJldHVybiIiO3ZhciB1PXQubWF0Y2goL15ccyooXC8/KVwqLyk7dSYmKHVbMV0mJihyKz0iICIpLHIrPSIqICIpfXJldHVybiByfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KHQsbil9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQodCxuKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGYoWyJhY2UiXSwiYWNlL21vZGUvamF2YXNjcmlwdF93b3JrZXIiLCJKYXZhU2NyaXB0V29ya2VyIik7cmV0dXJuIHQuYXR0YWNoVG9Eb2N1bWVudChlLmdldERvY3VtZW50KCkpLHQub24oImpzbGludCIsZnVuY3Rpb24odCl7dmFyIG49W107Zm9yKHZhciByPTA7cjx0LmRhdGEubGVuZ3RoO3IrKyl7dmFyIGk9dC5kYXRhW3JdO2kmJm4ucHVzaCh7cm93OmkubGluZS0xLGNvbHVtbjppLmNoYXJhY3Rlci0xLHRleHQ6aS5yZWFzb24sdHlwZToid2FybmluZyIsbGludDppfSl9ZS5zZXRBbm5vdGF0aW9ucyhuKX0pLHQub24oIm5hcmNpc3N1cyIsZnVuY3Rpb24odCl7ZS5zZXRBbm5vdGF0aW9ucyhbdC5kYXRhXSl9KSx0Lm9uKCJ0ZXJtaW5hdGUiLGZ1bmN0aW9uKCl7ZS5jbGVhckFubm90YXRpb25zKCl9KSx0fX0uY2FsbChoLnByb3RvdHlwZSksdC5Nb2RlPWh9KSxkZWZpbmUoImFjZS9tb2RlL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvdW5pY29kZSIsImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2xpYi9sYW5nIikscz1lKCIuLi91bmljb2RlIiksbz1lKCIuL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIpLkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcyx1PWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsYT1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgiQXJyYXl8Qm9vbGVhbnxEYXRlfEZ1bmN0aW9ufEl0ZXJhdG9yfE51bWJlcnxPYmplY3R8UmVnRXhwfFN0cmluZ3xQcm94eXxOYW1lc3BhY2V8UU5hbWV8WE1MfFhNTExpc3R8QXJyYXlCdWZmZXJ8RmxvYXQzMkFycmF5fEZsb2F0NjRBcnJheXxJbnQxNkFycmF5fEludDMyQXJyYXl8SW50OEFycmF5fFVpbnQxNkFycmF5fFVpbnQzMkFycmF5fFVpbnQ4QXJyYXl8VWludDhDbGFtcGVkQXJyYXl8RXJyb3J8RXZhbEVycm9yfEludGVybmFsRXJyb3J8UmFuZ2VFcnJvcnxSZWZlcmVuY2VFcnJvcnxTdG9wSXRlcmF0aW9ufFN5bnRheEVycm9yfFR5cGVFcnJvcnxVUklFcnJvcnxkZWNvZGVVUkl8ZGVjb2RlVVJJQ29tcG9uZW50fGVuY29kZVVSSXxlbmNvZGVVUklDb21wb25lbnR8ZXZhbHxpc0Zpbml0ZXxpc05hTnxwYXJzZUZsb2F0fHBhcnNlSW50fEpTT058TWF0aHx0aGlzfGFyZ3VtZW50c3xwcm90b3R5cGV8d2luZG93fGRvY3VtZW50Ii5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgiYnJlYWt8Y2FzZXxjYXRjaHxjb250aW51ZXxkZWZhdWx0fGRlbGV0ZXxkb3xlbHNlfGZpbmFsbHl8Zm9yfGZ1bmN0aW9ufGlmfGlufGluc3RhbmNlb2Z8bmV3fHJldHVybnxzd2l0Y2h8dGhyb3d8dHJ5fHR5cGVvZnxsZXR8dmFyfHdoaWxlfHdpdGh8Y29uc3R8eWllbGR8aW1wb3J0fGdldHxzZXQiLnNwbGl0KCJ8IikpLG49ImNhc2V8ZG98ZWxzZXxmaW5hbGx5fGlufGluc3RhbmNlb2Z8cmV0dXJufHRocm93fHRyeXx0eXBlb2Z8eWllbGQiLHI9aS5hcnJheVRvTWFwKCJfX3BhcmVudF9ffF9fY291bnRfX3xlc2NhcGV8dW5lc2NhcGV8d2l0aHxfX3Byb3RvX18iLnNwbGl0KCJ8IikpLHU9aS5hcnJheVRvTWFwKCJjb25zdHxsZXR8dmFyfGZ1bmN0aW9uIi5zcGxpdCgifCIpKSxhPWkuYXJyYXlUb01hcCgibnVsbHxJbmZpbml0eXxOYU58dW5kZWZpbmVkIi5zcGxpdCgifCIpKSxmPWkuYXJyYXlUb01hcCgiY2xhc3N8ZW51bXxleHRlbmRzfHN1cGVyfGV4cG9ydHxpbXBsZW1lbnRzfHByaXZhdGV8cHVibGljfGludGVyZmFjZXxwYWNrYWdlfHByb3RlY3RlZHxzdGF0aWMiLnNwbGl0KCJ8IikpLGw9IlsiK3MucGFja2FnZXMuTCsiXFwkX11bIitzLnBhY2thZ2VzLkwrcy5wYWNrYWdlcy5NbitzLnBhY2thZ2VzLk1jK3MucGFja2FnZXMuTmQrcy5wYWNrYWdlcy5QYysiXFwkX10qXFxiIixjPSJcXFxcKD86eFswLTlhLWZBLUZdezJ9fHVbMC05YS1mQS1GXXs0fXxbMC0yXVswLTddezAsMn18M1swLTZdWzAtN10/fDM3WzAtN10/fFs0LTddWzAtN10/fC4pIjt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6L1wvXC8uKiQvfSxvLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDovXC9cKi8sbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJyg/PS4pIixuZXh0OiJxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciKD89LiknLG5leHQ6InFxc3RyaW5nIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDovMFt4WF1bMC05YS1mQS1GXStcYi99LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6L1srLV0/XGQrKD86KD86XC5cZCopPyg/OltlRV1bKy1dP1xkKyk/KT9cYi99LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbiIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFwuKShwcm90b3R5cGUpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Il0scmVnZXg6IigiK2wrIikoXFwuKShwcm90b3R5cGUpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxcLikoIitsKyIpKFxccyopKD0pKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXC4pKCIrbCsiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKykoXFx3KykoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwidGV4dCIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoZnVuY3Rpb24pKFxccyspKCIrbCsiKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFxzKikoOikoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInRleHQiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoOikoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjoiY29uc3RhbnQubGFuZ3VhZ2UuYm9vbGVhbiIscmVnZXg6Lyg/OnRydWV8ZmFsc2UpXGIvfSx7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiIoPzoiK24rIilcXGIiLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iXSxyZWdleDovKFwuKShzKD86aCg/OmlmdHxvdyg/Ok1vZCg/OmVsZXNzRGlhbG9nfGFsRGlhbG9nKXxIZWxwKSl8Y3JvbGwoPzpYfEJ5KD86UGFnZXN8TGluZXMpP3xZfFRvKT98dCg/Om9wenp6enxyaWtlKXxpKD86bnx6ZVRvQ29udGVudHxkZWJhcnxnblRleHQpfG9ydHx1KD86cHxiKD86c3RyKD86aW5nKT8pPyl8cGxpKD86Y2V8dCl8ZSg/Om5kfHQoPzpSZSg/OnNpemFibGV8cXVlc3RIZWFkZXIpfE0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIbyg/OnRLZXlzfHVycyl8WWVhcnxDdXJzb3J8VGltZSg/Om91dCk/fEludGVydmFsfFpPcHRpb25zfERhdGV8VVRDKD86TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZWNvbmRzfEhvdXJzfERhdGV8RnVsbFllYXIpfEZ1bGxZZWFyfEFjdGl2ZSl8YXJjaCl8cXJ0fGxpY2V8YXZlUHJlZmVyZW5jZXN8bWFsbCl8aCg/Om9tZXxhbmRsZUV2ZW50KXxuYXZpZ2F0ZXxjKD86aGFyKD86Q29kZUF0fEF0KXxvKD86c3xuKD86Y2F0fHRleHR1YWx8ZmlybSl8bXBpbGUpfGVpbHxsZWFyKD86VGltZW91dHxJbnRlcnZhbCk/fGEoPzpwdHVyZUV2ZW50c3xsbCl8cmVhdGUoPzpTdHlsZVNoZWV0fFBvcHVwfEV2ZW50T2JqZWN0KSl8dCg/Om8oPzpHTVRTdHJpbmd8Uyg/OnRyaW5nfG91cmNlKXxVKD86VENTdHJpbmd8cHBlckNhc2UpfExvKD86Y2FsZVN0cmluZ3x3ZXJDYXNlKSl8ZXN0fGEoPzpufGludCg/OkVuYWJsZWQpPykpfGkoPzpzKD86TmFOfEZpbml0ZSl8bmRleE9mfHRhbGljcyl8ZCg/OmlzYWJsZUV4dGVybmFsQ2FwdHVyZXx1bXB8ZXRhY2hFdmVudCl8dSg/Om4oPzpzaGlmdHx0YWludHxlc2NhcGV8d2F0Y2gpfHBkYXRlQ29tbWFuZHMpfGooPzpvaW58YXZhRW5hYmxlZCl8cCg/Om8oPzpwfHcpfHVzaHxsdWdpbnMucmVmcmVzaHxhKD86ZGRpbmdzfHJzZSg/OkludHxGbG9hdCk/KXxyKD86aW50fG9tcHR8ZWZlcmVuY2UpKXxlKD86c2NhcGV8bmFibGVFeHRlcm5hbENhcHR1cmV8dmFsfGxlbWVudEZyb21Qb2ludHx4KD86cHxlYyg/OlNjcmlwdHxDb21tYW5kKT8pKXx2YWx1ZU9mfFVUQ3xxdWVyeUNvbW1hbmQoPzpTdGF0ZXxJbmRldGVybXxFbmFibGVkfFZhbHVlKXxmKD86aSg/Om5kfGxlKD86TW9kaWZpZWREYXRlfFNpemV8Q3JlYXRlZERhdGV8VXBkYXRlZERhdGUpfHhlZCl8byg/Om50KD86c2l6ZXxjb2xvcil8cndhcmQpfGxvb3J8cm9tQ2hhckNvZGUpfHdhdGNofGwoPzppbmt8byg/OmFkfGcpfGFzdEluZGV4T2YpfGEoPzpzaW58bmNob3J8Y29zfHQoPzp0YWNoRXZlbnR8b2J8YW4oPzoyKT8pfHBwbHl8bGVydHxiKD86c3xvcnQpKXxyKD86b3UoPzpuZHx0ZUV2ZW50cyl8ZSg/OnNpemUoPzpCeXxUbyl8Y2FsY3x0dXJuVmFsdWV8cGxhY2V8dmVyc2V8bCg/Om9hZHxlYXNlKD86Q2FwdHVyZXxFdmVudHMpKSl8YW5kb20pfGcoPzpvfGV0KD86UmVzcG9uc2VIZWFkZXJ8TSg/OmkoPzpudXRlc3xsbGlzZWNvbmRzKXxvbnRoKXxTZSg/OmNvbmRzfGxlY3Rpb24pfEhvdXJzfFllYXJ8VGltZSg/OnpvbmVPZmZzZXQpP3xEYSg/Onl8dGUpfFVUQyg/Ok0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIb3Vyc3xEYSg/Onl8dGUpfEZ1bGxZZWFyKXxGdWxsWWVhcnxBKD86dHRlbnRpb258bGxSZXNwb25zZUhlYWRlcnMpKSl8bSg/OmlufG92ZSg/OkIoPzp5fGVsb3cpfFRvKD86QWJzb2x1dGUpP3xBYm92ZSl8ZXJnZUF0dHJpYnV0ZXN8YSg/OnRjaHxyZ2luc3x4KSl8Yig/OnRvYXxpZ3xvKD86bGR8cmRlcldpZHRocyl8bGlua3xhY2spKVxiKD89XCgpL30se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uLmRvbSJdLHJlZ2V4Oi8oXC4pKHMoPzp1Yig/OnN0cmluZ0RhdGF8bWl0KXxwbGl0VGV4dHxlKD86dCg/Ok5hbWVkSXRlbXxBdHRyaWJ1dGUoPzpOb2RlKT8pfGxlY3QpKXxoYXMoPzpDaGlsZE5vZGVzfEZlYXR1cmUpfG5hbWVkSXRlbXxjKD86bCg/Omlja3xvKD86c2V8bmVOb2RlKSl8cmVhdGUoPzpDKD86b21tZW50fERBVEFTZWN0aW9ufGFwdGlvbil8VCg/OkhlYWR8ZXh0Tm9kZXxGb290KXxEb2N1bWVudEZyYWdtZW50fFByb2Nlc3NpbmdJbnN0cnVjdGlvbnxFKD86bnRpdHlSZWZlcmVuY2V8bGVtZW50KXxBdHRyaWJ1dGUpKXx0YWJJbmRleHxpKD86bnNlcnQoPzpSb3d8QmVmb3JlfENlbGx8RGF0YSl8dGVtKXxvcGVufGRlbGV0ZSg/OlJvd3xDKD86ZWxsfGFwdGlvbil8VCg/OkhlYWR8Rm9vdCl8RGF0YSl8Zm9jdXN8d3JpdGUoPzpsbik/fGEoPzpkZHxwcGVuZCg/OkNoaWxkfERhdGEpKXxyZSg/OnNldHxwbGFjZSg/OkNoaWxkfERhdGEpfG1vdmUoPzpOYW1lZEl0ZW18Q2hpbGR8QXR0cmlidXRlKD86Tm9kZSk/KT8pfGdldCg/Ok5hbWVkSXRlbXxFbGVtZW50KD86c0J5KD86TmFtZXxUYWdOYW1lKXxCeUlkKXxBdHRyaWJ1dGUoPzpOb2RlKT8pfGJsdXIpXGIoPz1cKCkvfSx7dG9rZW46WyJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuY29uc3RhbnQiXSxyZWdleDovKFwuKShzKD86eXN0ZW1MYW5ndWFnZXxjcig/OmlwdHN8b2xsYmFyc3xlZW4oPzpYfFl8VG9wfExlZnQpKXx0KD86eWxlKD86U2hlZXRzKT98YXR1cyg/OlRleHR8YmFyKT8pfGlibGluZyg/OkJlbG93fEFib3ZlKXxvdXJjZXx1ZmZpeGVzfGUoPzpjdXJpdHkoPzpQb2xpY3kpP3xsKD86ZWN0aW9ufGYpKSl8aCg/OmlzdG9yeXxvc3QoPzpuYW1lKT98YXMoPzpofEZvY3VzKSl8eXxYKD86TUxEb2N1bWVudHxTTERvY3VtZW50KXxuKD86ZXh0fGFtZSg/OnNwYWNlKD86c3xVUkkpfFByb3ApKXxNKD86SU5fVkFMVUV8QVhfVkFMVUUpfGMoPzpoYXJhY3RlclNldHxvKD86big/OnN0cnVjdG9yfHRyb2xsZXJzKXxva2llRW5hYmxlZHxsb3JEZXB0aHxtcCg/Om9uZW50c3xsZXRlKSl8dXJyZW50fHB1Q2xhc3N8bCg/OmkoPzpwKD86Ym9hcmREYXRhKT98ZW50SW5mb3JtYXRpb24pfG9zZWR8YXNzZXMpfGFsbGUoPzplfHIpfHJ5cHRvKXx0KD86byg/Om9sYmFyfHApfGV4dCg/OlRyYW5zZm9ybXxJbmRlbnR8RGVjb3JhdGlvbnxBbGlnbil8YWdzKXxTUVJUKD86MV8yfDIpfGkoPzpuKD86bmVyKD86SGVpZ2h0fFdpZHRoKXxwdXQpfGRzfGdub3JlQ2FzZSl8ekluZGV4fG8oPzpzY3B1fG4oPzpyZWFkeXN0YXRlY2hhbmdlfExpbmUpfHV0ZXIoPzpIZWlnaHR8V2lkdGgpfHAoPzpzUHJvZmlsZXxlbmVyKXxmZnNjcmVlbkJ1ZmZlcmluZyl8TkVHQVRJVkVfSU5GSU5JVFl8ZCg/OmkoPzpzcGxheXxhbG9nKD86SGVpZ2h0fFRvcHxXaWR0aHxMZWZ0fEFyZ3VtZW50cyl8cmVjdG9yaWVzKXxlKD86c2NyaXB0aW9ufGZhdWx0KD86U3RhdHVzfENoKD86ZWNrZWR8YXJzZXQpfFZpZXcpKSl8dSg/OnNlcig/OlByb2ZpbGV8TGFuZ3VhZ2V8QWdlbnQpfG4oPzppcXVlSUR8ZGVmaW5lZCl8cGRhdGVJbnRlcnZhbCl8X2NvbnRlbnR8cCg/Oml4ZWxEZXB0aHxvcnR8ZXJzb25hbGJhcnxrY3MxMXxsKD86dWdpbnN8YXRmb3JtKXxhKD86dGhuYW1lfGRkaW5nKD86UmlnaHR8Qm90dG9tfFRvcHxMZWZ0KXxyZW50KD86V2luZG93fExheWVyKT98Z2UoPzpYKD86T2Zmc2V0KT98WSg/Ok9mZnNldCk/KSl8cig/Om8oPzp0byg/OmNvbHx0eXBlKXxkdWN0KD86U3ViKT98bXB0ZXIpfGUoPzp2aW91c3xmaXgpKSl8ZSg/Om4oPzpjb2Rpbmd8YWJsZWRQbHVnaW4pfHgoPzp0ZXJuYWx8cGFuZG8pfG1iZWRzKXx2KD86aXNpYmlsaXR5fGVuZG9yKD86U3ViKT98TGlua2NvbG9yKXxVUkxVbmVuY29kZWR8UCg/Okl8T1NJVElWRV9JTkZJTklUWSl8Zig/OmlsZW5hbWV8byg/Om50KD86U2l6ZXxGYW1pbHl8V2VpZ2h0KXxybU5hbWUpfHJhbWUoPzpzfEVsZW1lbnQpfGdDb2xvcil8RXx3aGl0ZVNwYWNlfGwoPzppKD86c3RTdHlsZVR5cGV8big/OmVIZWlnaHR8a0NvbG9yKSl8byg/OmNhKD86dGlvbig/OmJhcik/fGxOYW1lKXx3c3JjKXxlKD86bmd0aHxmdCg/OkNvbnRleHQpPyl8YSg/OnN0KD86TSg/Om9kaWZpZWR8YXRjaCl8SW5kZXh8UGFyZW4pfHllcig/OnN8WCl8bmd1YWdlKSl8YSg/OnBwKD86TWlub3JWZXJzaW9ufE5hbWV8Q28oPzpkZU5hbWV8cmUpfFZlcnNpb24pfHZhaWwoPzpIZWlnaHR8VG9wfFdpZHRofExlZnQpfGxsfHIoPzppdHl8Z3VtZW50cyl8TGlua2NvbG9yfGJvdmUpfHIoPzppZ2h0KD86Q29udGV4dCk/fGUoPzpzcG9uc2UoPzpYTUx8VGV4dCl8YWR5U3RhdGUpKXxnbG9iYWx8eHxtKD86aW1lVHlwZXN8dWx0aWxpbmV8ZW51YmFyfGFyZ2luKD86UmlnaHR8Qm90dG9tfFRvcHxMZWZ0KSl8TCg/Ok4oPzoxMHwyKXxPRyg/OjEwRXwyRSkpfGIoPzpvKD86dHRvbXxyZGVyKD86V2lkdGh8UmlnaHRXaWR0aHxCb3R0b21XaWR0aHxTdHlsZXxDb2xvcnxUb3BXaWR0aHxMZWZ0V2lkdGgpKXx1ZmZlckRlcHRofGVsb3d8YWNrZ3JvdW5kKD86Q29sb3J8SW1hZ2UpKSlcYi99LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbi5maXJlYnVnIl0scmVnZXg6Lyhjb25zb2xlKShcLikod2FybnxpbmZvfGxvZ3xlcnJvcnx0aW1lfHRpbWVFbmR8YXNzZXJ0KVxiL30se3Rva2VuOmZ1bmN0aW9uKG4pe3JldHVybiBlLmhhc093blByb3BlcnR5KG4pPyJ2YXJpYWJsZS5sYW5ndWFnZSI6ci5oYXNPd25Qcm9wZXJ0eShuKT8iaW52YWxpZC5kZXByZWNhdGVkIjp1Lmhhc093blByb3BlcnR5KG4pPyJzdG9yYWdlLnR5cGUiOnQuaGFzT3duUHJvcGVydHkobik/ImtleXdvcmQiOmEuaGFzT3duUHJvcGVydHkobik/ImNvbnN0YW50Lmxhbmd1YWdlIjpmLmhhc093blByb3BlcnR5KG4pPyJpbnZhbGlkLmlsbGVnYWwiOm49PSJkZWJ1Z2dlciI/ImludmFsaWQuZGVwcmVjYXRlZCI6ImlkZW50aWZpZXIifSxyZWdleDpsfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4Oi8hfFwkfCV8JnxcKnxcLVwtfFwtfFwrXCt8XCt8fnw9PT18PT18PXwhPXwhPT18PD18Pj18PDw9fD4+PXw+Pj49fDw+fDx8PnwhfCYmfFx8XHx8XD9cOnxcKj18JT18XCs9fFwtPXwmPXxcXj18XGIoPzppbnxpbnN0YW5jZW9mfG5ld3xkZWxldGV8dHlwZW9mfHZvaWQpLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6L1w/fFw6fFwsfFw7fFwuLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwYXJlbi5scGFyZW4iLHJlZ2V4Oi9bXFsoe10vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6L1tcXSl9XS99LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6L1wvPT8vLG5leHQ6InJlZ2V4X2FsbG93ZWQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4Oi9eIyEuKiQvfSx7dG9rZW46InRleHQiLHJlZ2V4Oi9ccysvfV0scmVnZXhfYWxsb3dlZDpbby5nZXRTdGFydFJ1bGUoImRvYy1zdGFydCIpLHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKiIsbmV4dDoiY29tbWVudF9yZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiokIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiXFwvIixuZXh0OiJyZWdleCIsbWVyZ2U6ITB9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxyZWdleDpbe3Rva2VuOiJyZWdleHAua2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcXFwoPzp1W1xcZGEtZkEtRl17NH18eFtcXGRhLWZBLUZdezJ9fC4pIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiL1xcdyoiLG5leHQ6InN0YXJ0IixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiW15cXFxcL1xcW10rIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6IlxcWyIsbmV4dDoicmVnZXhfY2hhcmFjdGVyX2NsYXNzIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0scmVnZXhfY2hhcmFjdGVyX2NsYXNzOlt7dG9rZW46InJlZ2V4cC5rZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFxcXCg/OnVbXFxkYS1mQS1GXXs0fXx4W1xcZGEtZkEtRl17Mn18LikifSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiXSIsbmV4dDoicmVnZXgiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZy5yZWdleHAuY2hhcmFjaHRlcmNsYXNzIixyZWdleDoiW15cXFxcXFxdXSsiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxmdW5jdGlvbl9hcmd1bWVudHM6W3t0b2tlbjoidmFyaWFibGUucGFyYW1ldGVyIixyZWdleDpsfSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDoiWywgXSsiLG1lcmdlOiEwfSx7dG9rZW46InB1bmN0dWF0aW9uLm9wZXJhdG9yIixyZWdleDoiJCIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLGNvbW1lbnRfcmVnZXhfYWxsb3dlZDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixtZXJnZTohMCxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/XFwqXFwvIixtZXJnZTohMCxuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFxc3RyaW5nOlt7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmVzY2FwZSIscmVnZXg6Y30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbXiJcXFxcXSsnLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlxcXFwkIixuZXh0OiJxcXN0cmluZyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDonInwkJyxuZXh0OiJzdGFydCIsbWVyZ2U6ITB9XSxxc3RyaW5nOlt7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmVzY2FwZSIscmVnZXg6Y30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbXidcXFxcXSsiLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6IlxcXFwkIixuZXh0OiJxc3RyaW5nIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInfCQiLG5leHQ6InN0YXJ0IixtZXJnZTohMH1dfSx0aGlzLmVtYmVkUnVsZXMobywiZG9jLSIsW28uZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtyLmluaGVyaXRzKGEsdSksdC5KYXZhU2NyaXB0SGlnaGxpZ2h0UnVsZXM9YX0pLGRlZmluZSgiYWNlL21vZGUvZG9jX2NvbW1lbnRfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLHM9ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudC5kb2MudGFnIixyZWdleDoiQFtcXHdcXGRfXSsifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJUT0RPIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlteQFxcKl0rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6Ii4ifV19fTtyLmluaGVyaXRzKHMsaSkscy5nZXRTdGFydFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcL1xcKig/PVxcKikiLG5leHQ6ZX19LHMuZ2V0RW5kUnVsZT1mdW5jdGlvbihlKXtyZXR1cm57dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiXFwqXFwvIixuZXh0OmV9fSx0LkRvY0NvbW1lbnRIaWdobGlnaHRSdWxlcz1zfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXlxzKyQvLnRlc3QoZSk/L15ccypcfS8udGVzdCh0KTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0TGluZSh0KSxpPW4ubWF0Y2goL14oXHMqXH0pLyk7aWYoIWkpcmV0dXJuIDA7dmFyIHM9aVsxXS5sZW5ndGgsbz1lLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp0LGNvbHVtbjpzfSk7aWYoIW98fG8ucm93PT10KXJldHVybiAwO3ZhciB1PXRoaXMuJGdldEluZGVudChlLmdldExpbmUoby5yb3cpKTtlLnJlcGxhY2UobmV3IHIodCwwLHQscy0xKSx1KX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14oXHMrKS8pO3JldHVybiB0P3RbMV06IiJ9fSkuY2FsbChpLnByb3RvdHlwZSksdC5NYXRjaGluZ0JyYWNlT3V0ZGVudD1pfSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vYmVoYXZpb3VyIikuQmVoYXZpb3VyLHM9ZnVuY3Rpb24oKXt0aGlzLmFkZCgiYnJhY2VzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSJ7Iil7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO3JldHVybiBvIT09IiI/e3RleHQ6InsiK28rIn0iLHNlbGVjdGlvbjohMX06e3RleHQ6Int9IixzZWxlY3Rpb246WzEsMV19fWlmKGk9PSJ9Iil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0ifSIpe3ZhciBsPXIuJGZpbmRPcGVuaW5nQnJhY2tldCgifSIse2NvbHVtbjp1LmNvbHVtbisxLHJvdzp1LnJvd30pO2lmKGwhPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fWVsc2UgaWYoaT09IlxuIil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0ifSIpe3ZhciBjPXIuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnUucm93LGNvbHVtbjp1LmNvbHVtbisxfSk7aWYoIWMpcmV0dXJuIG51bGw7dmFyIGg9dGhpcy5nZXROZXh0TGluZUluZGVudChlLGEuc3Vic3RyaW5nKDAsYS5sZW5ndGgtMSksci5nZXRUYWJTdHJpbmcoKSkscD10aGlzLiRnZXRJbmRlbnQoci5kb2MuZ2V0TGluZShjLnJvdykpO3JldHVybnt0ZXh0OiJcbiIraCsiXG4iK3Asc2VsZWN0aW9uOlsxLGgubGVuZ3RoLDEsaC5sZW5ndGhdfX19fSksdGhpcy5hZGQoImJyYWNlcyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiZzPT0ieyIpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5lbmQuY29sdW1uLGkuZW5kLmNvbHVtbisxKTtpZih1PT0ifSIpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSksdGhpcy5hZGQoInBhcmVucyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iKCIpe3ZhciBzPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSxvPXIuZG9jLmdldFRleHRSYW5nZShzKTtyZXR1cm4gbyE9PSIiP3t0ZXh0OiIoIitvKyIpIixzZWxlY3Rpb246ITF9Ont0ZXh0OiIoKSIsc2VsZWN0aW9uOlsxLDFdfX1pZihpPT0iKSIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09IikiKXt2YXIgbD1yLiRmaW5kT3BlbmluZ0JyYWNrZXQoIikiLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihsIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgicGFyZW5zIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSIoIil7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLnN0YXJ0LmNvbHVtbisxLGkuc3RhcnQuY29sdW1uKzIpO2lmKHU9PSIpIilyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09JyInfHxpPT0iJyIpe3ZhciBzPWksbz1uLmdldFNlbGVjdGlvblJhbmdlKCksdT1yLmRvYy5nZXRUZXh0UmFuZ2Uobyk7aWYodSE9PSIiKXJldHVybnt0ZXh0OnMrdStzLHNlbGVjdGlvbjohMX07dmFyIGE9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGY9ci5kb2MuZ2V0TGluZShhLnJvdyksbD1mLnN1YnN0cmluZyhhLmNvbHVtbi0xLGEuY29sdW1uKTtpZihsPT0iXFwiKXJldHVybiBudWxsO3ZhciBjPXIuZ2V0VG9rZW5zKG8uc3RhcnQucm93KSxoPTAscCxkPS0xO2Zvcih2YXIgdj0wO3Y8Yy5sZW5ndGg7disrKXtwPWNbdl0scC50eXBlPT0ic3RyaW5nIj9kPS0xOmQ8MCYmKGQ9cC52YWx1ZS5pbmRleE9mKHMpKTtpZihwLnZhbHVlLmxlbmd0aCtoPm8uc3RhcnQuY29sdW1uKWJyZWFrO2grPWNbdl0udmFsdWUubGVuZ3RofWlmKCFwfHxkPDAmJnAudHlwZSE9PSJjb21tZW50IiYmKHAudHlwZSE9PSJzdHJpbmcifHxvLnN0YXJ0LmNvbHVtbiE9PXAudmFsdWUubGVuZ3RoK2gtMSYmcC52YWx1ZS5sYXN0SW5kZXhPZihzKT09PXAudmFsdWUubGVuZ3RoLTEpKXJldHVybnt0ZXh0OnMrcyxzZWxlY3Rpb246WzEsMV19O2lmKHAmJnAudHlwZT09PSJzdHJpbmciKXt2YXIgbT1mLnN1YnN0cmluZyhhLmNvbHVtbixhLmNvbHVtbisxKTtpZihtPT1zKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiYocz09JyInfHxzPT0iJyIpKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09JyInKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pfTtyLmluaGVyaXRzKHMsaSksdC5Dc3R5bGVCZWhhdmlvdXI9c30pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2Uscz1lKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLG89dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307ci5pbmhlcml0cyhvLHMpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9Lyhce3xcWylbXlx9XF1dKiR8XlxzKihcL1wqKS8sdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj0vXlteXFtce10qKFx9fFxdKXxeW1xzXCpdKihcKlwvKS8sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKSxzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXg7aWYoc1sxXSlyZXR1cm4gdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrKGUsc1sxXSxuLG8pO3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8rc1swXS5sZW5ndGgpO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX1pZih0IT09Im1hcmtiZWdpbmVuZCIpcmV0dXJuO3ZhciBzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RvcE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleCtzWzBdLmxlbmd0aDtpZihzWzJdKXt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9dmFyIGE9e3JvdzpuLGNvbHVtbjpvfSxmPWUuJGZpbmRPcGVuaW5nQnJhY2tldChzWzFdLGEpO2lmKCFmKXJldHVybjtyZXR1cm4gZi5jb2x1bW4rKyxhLmNvbHVtbi0tLGkuZnJvbVBvaW50cyhmLGEpfX19LmNhbGwoby5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGk9dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobik7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3Qocik/InN0YXJ0Ijp0PT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KHIpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihlLHQsbil7dmFyIGk9L1xTLyxzPWUuZ2V0TGluZSh0KSxvPXMuc2VhcmNoKGkpO2lmKG89PS0xKXJldHVybjt2YXIgdT1ufHxzLmxlbmd0aCxhPWUuZ2V0TGVuZ3RoKCksZj10LGw9dDt3aGlsZSgrK3Q8YSl7dmFyIGM9ZS5nZXRMaW5lKHQpLnNlYXJjaChpKTtpZihjPT0tMSljb250aW51ZTtpZihjPD1vKWJyZWFrO2w9dH1pZihsPmYpe3ZhciBoPWUuZ2V0TGluZShsKS5sZW5ndGg7cmV0dXJuIG5ldyByKGYsdSxsLGgpfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGUsdCxuLGkscyl7dmFyIG89e3JvdzpuLGNvbHVtbjppKzF9LHU9ZS4kZmluZENsb3NpbmdCcmFja2V0KHQsbyxzKTtpZighdSlyZXR1cm47dmFyIGE9ZS5mb2xkV2lkZ2V0c1t1LnJvd107cmV0dXJuIGE9PW51bGwmJihhPXRoaXMuZ2V0Rm9sZFdpZGdldChlLHUucm93KSksYT09InN0YXJ0IiYmdS5yb3c+by5yb3cmJih1LnJvdy0tLHUuY29sdW1uPWUuZ2V0TGluZSh1LnJvdykubGVuZ3RoKSxyLmZyb21Qb2ludHMobyx1KX19KS5jYWxsKGkucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvc2NhbGFfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi9saWIvbGFuZyIpLHM9ZSgiLi9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiKS5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXMsbz1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLHU9ZnVuY3Rpb24oKXt2YXIgZT1pLmFycmF5VG9NYXAoImNhc2V8ZGVmYXVsdHxkb3xlbHNlfGZvcnxpZnxtYXRjaHx3aGlsZXx0aHJvd3xyZXR1cm58dHJ5fGNhdGNofGZpbmFsbHl8eWllbGR8YWJzdHJhY3R8Y2xhc3N8ZGVmfGV4dGVuZHN8ZmluYWx8Zm9yU29tZXxpbXBsaWNpdHxpbXBsaWNpdHN8aW1wb3J0fGxhenl8bmV3fG9iamVjdHxvdmVycmlkZXxwYWNrYWdlfHByaXZhdGV8cHJvdGVjdGVkfHNlYWxlZHxzdXBlcnx0aGlzfHRyYWl0fHR5cGV8dmFsfHZhcnx3aXRoIi5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgidHJ1ZXxmYWxzZSIuc3BsaXQoInwiKSksbj1pLmFycmF5VG9NYXAoIkFic3RyYWN0TWV0aG9kRXJyb3J8QXNzZXJ0aW9uRXJyb3J8Q2xhc3NDaXJjdWxhcml0eUVycm9yfENsYXNzRm9ybWF0RXJyb3J8RGVwcmVjYXRlZHxFbnVtQ29uc3RhbnROb3RQcmVzZW50RXhjZXB0aW9ufEV4Y2VwdGlvbkluSW5pdGlhbGl6ZXJFcnJvcnxJbGxlZ2FsQWNjZXNzRXJyb3J8SWxsZWdhbFRocmVhZFN0YXRlRXhjZXB0aW9ufEluc3RhbnRpYXRpb25FcnJvcnxJbnRlcm5hbEVycm9yfE5lZ2F0aXZlQXJyYXlTaXplRXhjZXB0aW9ufE5vU3VjaEZpZWxkRXJyb3J8T3ZlcnJpZGV8UHJvY2Vzc3xQcm9jZXNzQnVpbGRlcnxTZWN1cml0eU1hbmFnZXJ8U3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbnxTdXBwcmVzc1dhcm5pbmdzfFR5cGVOb3RQcmVzZW50RXhjZXB0aW9ufFVua25vd25FcnJvcnxVbnNhdGlzZmllZExpbmtFcnJvcnxVbnN1cHBvcnRlZENsYXNzVmVyc2lvbkVycm9yfFZlcmlmeUVycm9yfEluc3RhbnRpYXRpb25FeGNlcHRpb258SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbnxBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb258Q2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb258Tm9TdWNoRmllbGRFeGNlcHRpb258SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9ufE51bWJlckZvcm1hdEV4Y2VwdGlvbnxTZWN1cml0eUV4Y2VwdGlvbnxWb2lkfEluaGVyaXRhYmxlVGhyZWFkTG9jYWx8SWxsZWdhbFN0YXRlRXhjZXB0aW9ufEludGVycnVwdGVkRXhjZXB0aW9ufE5vU3VjaE1ldGhvZEV4Y2VwdGlvbnxJbGxlZ2FsQWNjZXNzRXhjZXB0aW9ufFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9ufEVudW18U3RyaWN0TWF0aHxQYWNrYWdlfENvbXBpbGVyfFJlYWRhYmxlfFJ1bnRpbWV8U3RyaW5nQnVpbGRlcnxNYXRofEluY29tcGF0aWJsZUNsYXNzQ2hhbmdlRXJyb3J8Tm9TdWNoTWV0aG9kRXJyb3J8VGhyZWFkTG9jYWx8UnVudGltZVBlcm1pc3Npb258QXJpdGhtZXRpY0V4Y2VwdGlvbnxOdWxsUG9pbnRlckV4Y2VwdGlvbnxMb25nfEludGVnZXJ8U2hvcnR8Qnl0ZXxEb3VibGV8TnVtYmVyfEZsb2F0fENoYXJhY3RlcnxCb29sZWFufFN0YWNrVHJhY2VFbGVtZW50fEFwcGVuZGFibGV8U3RyaW5nQnVmZmVyfEl0ZXJhYmxlfFRocmVhZEdyb3VwfFJ1bm5hYmxlfFRocmVhZHxJbGxlZ2FsTW9uaXRvclN0YXRlRXhjZXB0aW9ufFN0YWNrT3ZlcmZsb3dFcnJvcnxPdXRPZk1lbW9yeUVycm9yfFZpcnR1YWxNYWNoaW5lRXJyb3J8QXJyYXlTdG9yZUV4Y2VwdGlvbnxDbGFzc0Nhc3RFeGNlcHRpb258TGlua2FnZUVycm9yfE5vQ2xhc3NEZWZGb3VuZEVycm9yfENsYXNzTm90Rm91bmRFeGNlcHRpb258UnVudGltZUV4Y2VwdGlvbnxFeGNlcHRpb258VGhyZWFkRGVhdGh8RXJyb3J8VGhyb3dhYmxlfFN5c3RlbXxDbGFzc0xvYWRlcnxDbG9uZWFibGV8Q2xhc3N8Q2hhclNlcXVlbmNlfENvbXBhcmFibGV8U3RyaW5nfE9iamVjdHxVbml0fEFueXxBbnlWYWx8QW55UmVmfE51bGx8U2NhbGFPYmplY3R8U2luZ2xldG9ufFNlcXxJdGVyYWJsZXxMaXN0fE9wdGlvbnxBcnJheXxDaGFyfEJ5dGV8U2hvcnR8SW50fExvbmd8Tm90aGluZyIuc3BsaXQoInwiKSkscj1pLmFycmF5VG9NYXAoIiIuc3BsaXQoInwiKSk7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXC9cXC8uKiQifSxzLmdldFN0YXJ0UnVsZSgiZG9jLXN0YXJ0Iikse3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmcucmVnZXhwIixyZWdleDoiWy9dKD86KD86XFxbKD86XFxcXF18W15cXF1dKStcXF0pfCg/OlxcXFwvfFteXFxdL10pKSpbL11cXHcqXFxzKig/PVspLiw7XXwkKSJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonIiIiJyxuZXh0OiJ0c3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciKD89LiknLG5leHQ6InN0cmluZyJ9LHt0b2tlbjoic3ltYm9sLmNvbnN0YW50IixyZWdleDoiJ1tcXHdcXGRfXSsifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiIwW3hYXVswLTlhLWZBLUZdK1xcYiJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6IlsrLV0/XFxkKyg/Oig/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPyk/XFxiIn0se3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5ib29sZWFuIixyZWdleDoiKD86dHJ1ZXxmYWxzZSlcXGIifSx7dG9rZW46ZnVuY3Rpb24oaSl7cmV0dXJuIGk9PSJ0aGlzIj8idmFyaWFibGUubGFuZ3VhZ2UiOmUuaGFzT3duUHJvcGVydHkoaSk/ImtleXdvcmQiOm4uaGFzT3duUHJvcGVydHkoaSk/InN1cHBvcnQuZnVuY3Rpb24iOnIuaGFzT3duUHJvcGVydHkoaSk/InN1cHBvcnQuZnVuY3Rpb24iOnQuaGFzT3duUHJvcGVydHkoaSk/ImNvbnN0YW50Lmxhbmd1YWdlIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiIhfFxcJHwlfCZ8XFwqfFxcLVxcLXxcXC18XFwrXFwrfFxcK3x+fD09PXw9PXw9fCE9fCE9PXw8PXw+PXw8PD18Pj49fD4+Pj18PD58PHw+fCF8JiZ8XFx8XFx8fFxcP1xcOnxcXCo9fCU9fFxcKz18XFwtPXwmPXxcXF49fFxcYig/OmlufGluc3RhbmNlb2Z8bmV3fGRlbGV0ZXx0eXBlb2Z8dm9pZCkifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IltbKHtdIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJbXFxdKX1dIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj9cXCpcXC8iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiLisifV0sc3RyaW5nOlt7dG9rZW46ImVzY2FwZSIscmVnZXg6J1xcXFwiJ30se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiciJyxuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nLmludmFsaWQiLHJlZ2V4OidbXiJcXFxcXSokJyxuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonW14iXFxcXF0rJyxtZXJnZTohMH1dLHRzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDonInszLDV9JyxuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLis/In1dfSx0aGlzLmVtYmVkUnVsZXMocywiZG9jLSIsW3MuZ2V0RW5kUnVsZSgic3RhcnQiKV0pfTtyLmluaGVyaXRzKHUsbyksdC5TY2FsYUhpZ2hsaWdodFJ1bGVzPXV9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-scss.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9zY3NzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3Njc3NfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4vdGV4dCIpLk1vZGUscz1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsbz1lKCIuL3Njc3NfaGlnaGxpZ2h0X3J1bGVzIikuU2Nzc0hpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9tYXRjaGluZ19icmFjZV9vdXRkZW50IikuTWF0Y2hpbmdCcmFjZU91dGRlbnQsYT1lKCIuL2ZvbGRpbmcvY3N0eWxlIikuRm9sZE1vZGUsZj1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgcygobmV3IG8pLmdldFJ1bGVzKCksImkiKSx0aGlzLiRvdXRkZW50PW5ldyB1LHRoaXMuZm9sZGluZ1J1bGVzPW5ldyBhfTtyLmluaGVyaXRzKGYsaSksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRnZXRJbmRlbnQodCksaT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2Vucyh0LGUpLnRva2VucztpZihpLmxlbmd0aCYmaVtpLmxlbmd0aC0xXS50eXBlPT0iY29tbWVudCIpcmV0dXJuIHI7dmFyIHM9dC5tYXRjaCgvXi4qXHtccyokLyk7cmV0dXJuIHMmJihyKz1uKSxyfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KHQsbil9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQodCxuKX19LmNhbGwoZi5wcm90b3R5cGUpLHQuTW9kZT1mfSksZGVmaW5lKCJhY2UvbW9kZS9zY3NzX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsbz1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcChmdW5jdGlvbigpe3ZhciBlPSItd2Via2l0LXwtbW96LXwtby18LW1zLXwtc3ZnLXwtcGllLXwta2h0bWwtIi5zcGxpdCgifCIpLHQ9ImFwcGVhcmFuY2V8YmFja2dyb3VuZC1jbGlwfGJhY2tncm91bmQtaW5saW5lLXBvbGljeXxiYWNrZ3JvdW5kLW9yaWdpbnxiYWNrZ3JvdW5kLXNpemV8YmluZGluZ3xib3JkZXItYm90dG9tLWNvbG9yc3xib3JkZXItbGVmdC1jb2xvcnN8Ym9yZGVyLXJpZ2h0LWNvbG9yc3xib3JkZXItdG9wLWNvbG9yc3xib3JkZXItZW5kfGJvcmRlci1lbmQtY29sb3J8Ym9yZGVyLWVuZC1zdHlsZXxib3JkZXItZW5kLXdpZHRofGJvcmRlci1pbWFnZXxib3JkZXItc3RhcnR8Ym9yZGVyLXN0YXJ0LWNvbG9yfGJvcmRlci1zdGFydC1zdHlsZXxib3JkZXItc3RhcnQtd2lkdGh8Ym94LWFsaWdufGJveC1kaXJlY3Rpb258Ym94LWZsZXh8Ym94LWZsZXhncm91cHxib3gtb3JkaW5hbC1ncm91cHxib3gtb3JpZW50fGJveC1wYWNrfGJveC1zaXppbmd8Y29sdW1uLWNvdW50fGNvbHVtbi1nYXB8Y29sdW1uLXdpZHRofGNvbHVtbi1ydWxlfGNvbHVtbi1ydWxlLXdpZHRofGNvbHVtbi1ydWxlLXN0eWxlfGNvbHVtbi1ydWxlLWNvbG9yfGZsb2F0LWVkZ2V8Zm9udC1mZWF0dXJlLXNldHRpbmdzfGZvbnQtbGFuZ3VhZ2Utb3ZlcnJpZGV8Zm9yY2UtYnJva2VuLWltYWdlLWljb258aW1hZ2UtcmVnaW9ufG1hcmdpbi1lbmR8bWFyZ2luLXN0YXJ0fG9wYWNpdHl8b3V0bGluZXxvdXRsaW5lLWNvbG9yfG91dGxpbmUtb2Zmc2V0fG91dGxpbmUtcmFkaXVzfG91dGxpbmUtcmFkaXVzLWJvdHRvbWxlZnR8b3V0bGluZS1yYWRpdXMtYm90dG9tcmlnaHR8b3V0bGluZS1yYWRpdXMtdG9wbGVmdHxvdXRsaW5lLXJhZGl1cy10b3ByaWdodHxvdXRsaW5lLXN0eWxlfG91dGxpbmUtd2lkdGh8cGFkZGluZy1lbmR8cGFkZGluZy1zdGFydHxzdGFjay1zaXppbmd8dGFiLXNpemV8dGV4dC1ibGlua3x0ZXh0LWRlY29yYXRpb24tY29sb3J8dGV4dC1kZWNvcmF0aW9uLWxpbmV8dGV4dC1kZWNvcmF0aW9uLXN0eWxlfHRyYW5zZm9ybXx0cmFuc2Zvcm0tb3JpZ2lufHRyYW5zaXRpb258dHJhbnNpdGlvbi1kZWxheXx0cmFuc2l0aW9uLWR1cmF0aW9ufHRyYW5zaXRpb24tcHJvcGVydHl8dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb258dXNlci1mb2N1c3x1c2VyLWlucHV0fHVzZXItbW9kaWZ5fHVzZXItc2VsZWN0fHdpbmRvdy1zaGFkb3d8Ym9yZGVyLXJhZGl1cyIuc3BsaXQoInwiKSxuPSJhemltdXRofGJhY2tncm91bmQtYXR0YWNobWVudHxiYWNrZ3JvdW5kLWNvbG9yfGJhY2tncm91bmQtaW1hZ2V8YmFja2dyb3VuZC1wb3NpdGlvbnxiYWNrZ3JvdW5kLXJlcGVhdHxiYWNrZ3JvdW5kfGJvcmRlci1ib3R0b20tY29sb3J8Ym9yZGVyLWJvdHRvbS1zdHlsZXxib3JkZXItYm90dG9tLXdpZHRofGJvcmRlci1ib3R0b218Ym9yZGVyLWNvbGxhcHNlfGJvcmRlci1jb2xvcnxib3JkZXItbGVmdC1jb2xvcnxib3JkZXItbGVmdC1zdHlsZXxib3JkZXItbGVmdC13aWR0aHxib3JkZXItbGVmdHxib3JkZXItcmlnaHQtY29sb3J8Ym9yZGVyLXJpZ2h0LXN0eWxlfGJvcmRlci1yaWdodC13aWR0aHxib3JkZXItcmlnaHR8Ym9yZGVyLXNwYWNpbmd8Ym9yZGVyLXN0eWxlfGJvcmRlci10b3AtY29sb3J8Ym9yZGVyLXRvcC1zdHlsZXxib3JkZXItdG9wLXdpZHRofGJvcmRlci10b3B8Ym9yZGVyLXdpZHRofGJvcmRlcnxib3R0b218Ym94LXNpemluZ3xjYXB0aW9uLXNpZGV8Y2xlYXJ8Y2xpcHxjb2xvcnxjb250ZW50fGNvdW50ZXItaW5jcmVtZW50fGNvdW50ZXItcmVzZXR8Y3VlLWFmdGVyfGN1ZS1iZWZvcmV8Y3VlfGN1cnNvcnxkaXJlY3Rpb258ZGlzcGxheXxlbGV2YXRpb258ZW1wdHktY2VsbHN8ZmxvYXR8Zm9udC1mYW1pbHl8Zm9udC1zaXplLWFkanVzdHxmb250LXNpemV8Zm9udC1zdHJldGNofGZvbnQtc3R5bGV8Zm9udC12YXJpYW50fGZvbnQtd2VpZ2h0fGZvbnR8aGVpZ2h0fGxlZnR8bGV0dGVyLXNwYWNpbmd8bGluZS1oZWlnaHR8bGlzdC1zdHlsZS1pbWFnZXxsaXN0LXN0eWxlLXBvc2l0aW9ufGxpc3Qtc3R5bGUtdHlwZXxsaXN0LXN0eWxlfG1hcmdpbi1ib3R0b218bWFyZ2luLWxlZnR8bWFyZ2luLXJpZ2h0fG1hcmdpbi10b3B8bWFya2VyLW9mZnNldHxtYXJnaW58bWFya3N8bWF4LWhlaWdodHxtYXgtd2lkdGh8bWluLWhlaWdodHxtaW4td2lkdGh8b3BhY2l0eXxvcnBoYW5zfG91dGxpbmUtY29sb3J8b3V0bGluZS1zdHlsZXxvdXRsaW5lLXdpZHRofG91dGxpbmV8b3ZlcmZsb3d8b3ZlcmZsb3cteHxvdmVyZmxvdy15fHBhZGRpbmctYm90dG9tfHBhZGRpbmctbGVmdHxwYWRkaW5nLXJpZ2h0fHBhZGRpbmctdG9wfHBhZGRpbmd8cGFnZS1icmVhay1hZnRlcnxwYWdlLWJyZWFrLWJlZm9yZXxwYWdlLWJyZWFrLWluc2lkZXxwYWdlfHBhdXNlLWFmdGVyfHBhdXNlLWJlZm9yZXxwYXVzZXxwaXRjaC1yYW5nZXxwaXRjaHxwbGF5LWR1cmluZ3xwb3NpdGlvbnxxdW90ZXN8cmljaG5lc3N8cmlnaHR8c2l6ZXxzcGVhay1oZWFkZXJ8c3BlYWstbnVtZXJhbHxzcGVhay1wdW5jdHVhdGlvbnxzcGVlY2gtcmF0ZXxzcGVha3xzdHJlc3N8dGFibGUtbGF5b3V0fHRleHQtYWxpZ258dGV4dC1kZWNvcmF0aW9ufHRleHQtaW5kZW50fHRleHQtc2hhZG93fHRleHQtdHJhbnNmb3JtfHRvcHx1bmljb2RlLWJpZGl8dmVydGljYWwtYWxpZ258dmlzaWJpbGl0eXx2b2ljZS1mYW1pbHl8dm9sdW1lfHdoaXRlLXNwYWNlfHdpZG93c3x3aWR0aHx3b3JkLXNwYWNpbmd8ei1pbmRleCIuc3BsaXQoInwiKSxyPVtdO2Zvcih2YXIgaT0wLHM9ZS5sZW5ndGg7aTxzO2krKylBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShyLChlW2ldK3Quam9pbigifCIrZVtpXSkpLnNwbGl0KCJ8IikpO3JldHVybiBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShyLHQpLEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHIsbikscn0oKSksdD1pLmFycmF5VG9NYXAoImhzbHxoc2xhfHJnYnxyZ2JhfHVybHxhdHRyfGNvdW50ZXJ8Y291bnRlcnN8YWJzfGFkanVzdF9jb2xvcnxhZGp1c3RfaHVlfGFscGhhfGpvaW58Ymx1ZXxjZWlsfGNoYW5nZV9jb2xvcnxjb21wYXJhYmxlfGNvbXBsZW1lbnR8ZGFya2VufGRlc2F0dXJhdGV8Zmxvb3J8Z3JheXNjYWxlfGdyZWVufGh1ZXxpZnxpbnZlcnR8am9pbnxsZW5ndGh8bGlnaHRlbnxsaWdodG5lc3N8bWl4fG50aHxvcGFjaWZ5fG9wYWNpdHl8cGVyY2VudGFnZXxxdW90ZXxyZWR8cm91bmR8c2F0dXJhdGV8c2F0dXJhdGlvbnxzY2FsZV9jb2xvcnx0cmFuc3BhcmVudGl6ZXx0eXBlX29mfHVuaXR8dW5pdGxlc3N8dW5xb3V0ZSIuc3BsaXQoInwiKSksbj1pLmFycmF5VG9NYXAoImFic29sdXRlfGFsbC1zY3JvbGx8YWx3YXlzfGFybWVuaWFufGF1dG98YmFzZWxpbmV8YmVsb3d8YmlkaS1vdmVycmlkZXxibG9ja3xib2xkfGJvbGRlcnxib3JkZXItYm94fGJvdGh8Ym90dG9tfGJyZWFrLWFsbHxicmVhay13b3JkfGNhcGl0YWxpemV8Y2VudGVyfGNoYXJ8Y2lyY2xlfGNqay1pZGVvZ3JhcGhpY3xjb2wtcmVzaXplfGNvbGxhcHNlfGNvbnRlbnQtYm94fGNyb3NzaGFpcnxkYXNoZWR8ZGVjaW1hbC1sZWFkaW5nLXplcm98ZGVjaW1hbHxkZWZhdWx0fGRpc2FibGVkfGRpc2N8ZGlzdHJpYnV0ZS1hbGwtbGluZXN8ZGlzdHJpYnV0ZS1sZXR0ZXJ8ZGlzdHJpYnV0ZS1zcGFjZXxkaXN0cmlidXRlfGRvdHRlZHxkb3VibGV8ZS1yZXNpemV8ZWxsaXBzaXN8Zml4ZWR8Z2VvcmdpYW58Z3Jvb3ZlfGhhbmR8aGVicmV3fGhlbHB8aGlkZGVufGhpcmFnYW5hLWlyb2hhfGhpcmFnYW5hfGhvcml6b250YWx8aWRlb2dyYXBoLWFscGhhfGlkZW9ncmFwaC1udW1lcmljfGlkZW9ncmFwaC1wYXJlbnRoZXNpc3xpZGVvZ3JhcGgtc3BhY2V8aW5hY3RpdmV8aW5oZXJpdHxpbmxpbmUtYmxvY2t8aW5saW5lfGluc2V0fGluc2lkZXxpbnRlci1pZGVvZ3JhcGh8aW50ZXItd29yZHxpdGFsaWN8anVzdGlmeXxrYXRha2FuYS1pcm9oYXxrYXRha2FuYXxrZWVwLWFsbHxsZWZ0fGxpZ2h0ZXJ8bGluZS1lZGdlfGxpbmUtdGhyb3VnaHxsaW5lfGxpc3QtaXRlbXxsb29zZXxsb3dlci1hbHBoYXxsb3dlci1ncmVla3xsb3dlci1sYXRpbnxsb3dlci1yb21hbnxsb3dlcmNhc2V8bHItdGJ8bHRyfG1lZGl1bXxtaWRkbGV8bW92ZXxuLXJlc2l6ZXxuZS1yZXNpemV8bmV3c3BhcGVyfG5vLWRyb3B8bm8tcmVwZWF0fG53LXJlc2l6ZXxub25lfG5vcm1hbHxub3QtYWxsb3dlZHxub3dyYXB8b2JsaXF1ZXxvdXRzZXR8b3V0c2lkZXxvdmVybGluZXxwb2ludGVyfHByb2dyZXNzfHJlbGF0aXZlfHJlcGVhdC14fHJlcGVhdC15fHJlcGVhdHxyaWdodHxyaWRnZXxyb3ctcmVzaXplfHJ0bHxzLXJlc2l6ZXxzY3JvbGx8c2UtcmVzaXplfHNlcGFyYXRlfHNtYWxsLWNhcHN8c29saWR8c3F1YXJlfHN0YXRpY3xzdHJpY3R8c3VwZXJ8c3ctcmVzaXplfHRhYmxlLWZvb3Rlci1ncm91cHx0YWJsZS1oZWFkZXItZ3JvdXB8dGItcmx8dGV4dC1ib3R0b218dGV4dC10b3B8dGV4dHx0aGlja3x0aGlufHRvcHx0cmFuc3BhcmVudHx1bmRlcmxpbmV8dXBwZXItYWxwaGF8dXBwZXItbGF0aW58dXBwZXItcm9tYW58dXBwZXJjYXNlfHZlcnRpY2FsLWlkZW9ncmFwaGljfHZlcnRpY2FsLXRleHR8dmlzaWJsZXx3LXJlc2l6ZXx3YWl0fHdoaXRlc3BhY2V8emVybyIuc3BsaXQoInwiKSkscj1pLmFycmF5VG9NYXAoImFxdWF8YmxhY2t8Ymx1ZXxmdWNoc2lhfGdyYXl8Z3JlZW58bGltZXxtYXJvb258bmF2eXxvbGl2ZXxvcmFuZ2V8cHVycGxlfHJlZHxzaWx2ZXJ8dGVhbHx3aGl0ZXx5ZWxsb3ciLnNwbGl0KCJ8IikpLHM9aS5hcnJheVRvTWFwKCJAbWl4aW58QGV4dGVuZHxAaW5jbHVkZXxAaW1wb3J0fEBtZWRpYXxAZGVidWd8QHdhcm58QGlmfEBmb3J8QGVhY2h8QHdoaWxlfEBlbHNlfEBmb250LWZhY2V8QC13ZWJraXQta2V5ZnJhbWVzfGlmfGFuZHwhZGVmYXVsdHxtb2R1bGV8ZGVmfGVuZHxkZWNsYXJlIi5zcGxpdCgifCIpKSxvPWkuYXJyYXlUb01hcCgiYXxhYmJyfGFjcm9ueW18YWRkcmVzc3xhcHBsZXR8YXJlYXxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJ8YmFzZXxiYXNlZm9udHxiZG98YmlnfGJsb2NrcXVvdGV8Ym9keXxicnxidXR0b258Y2FudmFzfGNhcHRpb258Y2VudGVyfGNpdGV8Y29kZXxjb2x8Y29sZ3JvdXB8Y29tbWFuZHxkYXRhbGlzdHxkZHxkZWx8ZGV0YWlsc3xkZm58ZGlyfGRpdnxkbHxkdHxlbXxlbWJlZHxmaWVsZHNldHxmaWdjYXB0aW9ufGZpZ3VyZXxmb250fGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fGgxfGgyfGgzfGg0fGg1fGg2fGhlYWR8aGVhZGVyfGhncm91cHxocnxodG1sfGl8aWZyYW1lfGltZ3xpbnB1dHxpbnN8a2V5Z2VufGtiZHxsYWJlbHxsZWdlbmR8bGl8bGlua3xtYXB8bWFya3xtZW51fG1ldGF8bWV0ZXJ8bmF2fG5vZnJhbWVzfG5vc2NyaXB0fG9iamVjdHxvbHxvcHRncm91cHxvcHRpb258b3V0cHV0fHB8cGFyYW18cHJlfHByb2dyZXNzfHF8cnB8cnR8cnVieXxzfHNhbXB8c2NyaXB0fHNlY3Rpb258c2VsZWN0fHNtYWxsfHNvdXJjZXxzcGFufHN0cmlrZXxzdHJvbmd8c3R5bGV8c3VifHN1bW1hcnl8c3VwfHRhYmxlfHRib2R5fHRkfHRleHRhcmVhfHRmb290fHRofHRoZWFkfHRpbWV8dGl0bGV8dHJ8dHR8dXx1bHx2YXJ8dmlkZW98d2JyfHhtcCIuc3BsaXQoInwiKSksdT0iXFwtPyg/Oig/OlswLTldKyl8KD86WzAtOV0qXFwuWzAtOV0rKSkiO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiXFwvXFwvLiokIn0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiXFwvXFwqIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OidbIl0oPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/WyJdJ30se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OidbIl0uKlxcXFwkJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiWyddKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqP1snXSJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiWyddLipcXFxcJCIsbmV4dDoicXN0cmluZyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6dSsiKD86ZW18ZXh8cHh8Y218bW18aW58cHR8cGN8ZGVnfHJhZHxncmFkfG1zfHN8aHp8a2h6fCUpIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiI1thLWYwLTldezZ9In0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiI1thLWYwLTldezN9In0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDp1fSx7dG9rZW46ZnVuY3Rpb24oaSl7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkoaS50b0xvd2VyQ2FzZSgpKT8ic3VwcG9ydC50eXBlIjpzLmhhc093blByb3BlcnR5KGkpPyJrZXl3b3JkIjpuLmhhc093blByb3BlcnR5KGkpPyJjb25zdGFudC5sYW5ndWFnZSI6dC5oYXNPd25Qcm9wZXJ0eShpKT8ic3VwcG9ydC5mdW5jdGlvbiI6ci5oYXNPd25Qcm9wZXJ0eShpLnRvTG93ZXJDYXNlKCkpPyJzdXBwb3J0LmNvbnN0YW50LmNvbG9yIjpvLmhhc093blByb3BlcnR5KGkudG9Mb3dlckNhc2UoKSk/InZhcmlhYmxlLmxhbmd1YWdlIjoidGV4dCJ9LHJlZ2V4OiJcXC0/W0BhLXpfXVtAYS16MC05X1xcLV0qIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlthLXpfXFwtJF1bYS16MC05X1xcLSRdKlxcYiJ9LHt0b2tlbjoidmFyaWFibGUubGFuZ3VhZ2UiLHJlZ2V4OiIjW2EtejAtOS1fXSsifSx7dG9rZW46InZhcmlhYmxlLmxhbmd1YWdlIixyZWdleDoiXFwuW2EtejAtOS1fXSsifSx7dG9rZW46InZhcmlhYmxlLmxhbmd1YWdlIixyZWdleDoiOlthLXowLTktX10rIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IlthLXowLTktX10rIn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiPHw+fDw9fD49fD09fCE9fC18JXwjfFxcK3xcXCR8XFwrfFxcKiJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF0pfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJzdHJpbmciLHJlZ2V4OicoPzooPzpcXFxcLil8KD86W14iXFxcXF0pKSo/IicsbmV4dDoic3RhcnQifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLHFzdHJpbmc6W3t0b2tlbjoic3RyaW5nIixyZWdleDoiKD86KD86XFxcXC4pfCg/OlteJ1xcXFxdKSkqPyciLG5leHQ6InN0YXJ0In0se3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX19O3IuaW5oZXJpdHMobyxzKSx0LlNjc3NIaWdobGlnaHRSdWxlcz1vfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXlxzKyQvLnRlc3QoZSk/L15ccypcfS8udGVzdCh0KTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0TGluZSh0KSxpPW4ubWF0Y2goL14oXHMqXH0pLyk7aWYoIWkpcmV0dXJuIDA7dmFyIHM9aVsxXS5sZW5ndGgsbz1lLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp0LGNvbHVtbjpzfSk7aWYoIW98fG8ucm93PT10KXJldHVybiAwO3ZhciB1PXRoaXMuJGdldEluZGVudChlLmdldExpbmUoby5yb3cpKTtlLnJlcGxhY2UobmV3IHIodCwwLHQscy0xKSx1KX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14oXHMrKS8pO3JldHVybiB0P3RbMV06IiJ9fSkuY2FsbChpLnByb3RvdHlwZSksdC5NYXRjaGluZ0JyYWNlT3V0ZGVudD1pfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxzPWUoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsbz10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTtyLmluaGVyaXRzKG8scyksZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj0vKFx7fFxbKVteXH1cXV0qJHxeXHMqKFwvXCopLyx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPS9eW15cW1x7XSooXH18XF0pfF5bXHNcKl0qKFwqXC8pLyx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRMaW5lKG4pLHM9ci5tYXRjaCh0aGlzLmZvbGRpbmdTdGFydE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleDtpZihzWzFdKXJldHVybiB0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2soZSxzWzFdLG4sbyk7dmFyIHU9ZS5nZXRDb21tZW50Rm9sZFJhbmdlKG4sbytzWzBdLmxlbmd0aCk7cmV0dXJuIHUuZW5kLmNvbHVtbi09Mix1fWlmKHQhPT0ibWFya2JlZ2luZW5kIilyZXR1cm47dmFyIHM9ci5tYXRjaCh0aGlzLmZvbGRpbmdTdG9wTWFya2VyKTtpZihzKXt2YXIgbz1zLmluZGV4K3NbMF0ubGVuZ3RoO2lmKHNbMl0pe3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8pO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX12YXIgYT17cm93Om4sY29sdW1uOm99LGY9ZS4kZmluZE9wZW5pbmdCcmFja2V0KHNbMV0sYSk7aWYoIWYpcmV0dXJuO3JldHVybiBmLmNvbHVtbisrLGEuY29sdW1uLS0saS5mcm9tUG9pbnRzKGYsYSl9fX0uY2FsbChvLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2UsaT10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChyKT8ic3RhcnQiOnQ9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3Qocik/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT0vXFMvLHM9ZS5nZXRMaW5lKHQpLG89cy5zZWFyY2goaSk7aWYobz09LTEpcmV0dXJuO3ZhciB1PW58fHMubGVuZ3RoLGE9ZS5nZXRMZW5ndGgoKSxmPXQsbD10O3doaWxlKCsrdDxhKXt2YXIgYz1lLmdldExpbmUodCkuc2VhcmNoKGkpO2lmKGM9PS0xKWNvbnRpbnVlO2lmKGM8PW8pYnJlYWs7bD10fWlmKGw+Zil7dmFyIGg9ZS5nZXRMaW5lKGwpLmxlbmd0aDtyZXR1cm4gbmV3IHIoZix1LGwsaCl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oZSx0LG4saSxzKXt2YXIgbz17cm93Om4sY29sdW1uOmkrMX0sdT1lLiRmaW5kQ2xvc2luZ0JyYWNrZXQodCxvLHMpO2lmKCF1KXJldHVybjt2YXIgYT1lLmZvbGRXaWRnZXRzW3Uucm93XTtyZXR1cm4gYT09bnVsbCYmKGE9dGhpcy5nZXRGb2xkV2lkZ2V0KGUsdS5yb3cpKSxhPT0ic3RhcnQiJiZ1LnJvdz5vLnJvdyYmKHUucm93LS0sdS5jb2x1bW49ZS5nZXRMaW5lKHUucm93KS5sZW5ndGgpLHIuZnJvbVBvaW50cyhvLHUpfX0pLmNhbGwoaS5wcm90b3R5cGUpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-sh.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9zaCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9zaF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4vc2hfaGlnaGxpZ2h0X3J1bGVzIikuU2hIaWdobGlnaHRSdWxlcyx1PWUoIi4uL3JhbmdlIikuUmFuZ2UsYT1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgcygobmV3IG8pLmdldFJ1bGVzKCkpfTtyLmluaGVyaXRzKGEsaSksZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT0hMCxzPS9eKFxzKikjLztmb3IodmFyIG89bjtvPD1yO28rKylpZighcy50ZXN0KHQuZ2V0TGluZShvKSkpe2k9ITE7YnJlYWt9aWYoaSl7dmFyIGE9bmV3IHUoMCwwLDAsMCk7Zm9yKHZhciBvPW47bzw9cjtvKyspe3ZhciBmPXQuZ2V0TGluZShvKSxsPWYubWF0Y2gocyk7YS5zdGFydC5yb3c9byxhLmVuZC5yb3c9byxhLmVuZC5jb2x1bW49bFswXS5sZW5ndGgsdC5yZXBsYWNlKGEsbFsxXSl9fWVsc2UgdC5pbmRlbnRSb3dzKG4sciwiIyIpfSx0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRnZXRJbmRlbnQodCksaT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2Vucyh0LGUpLHM9aS50b2tlbnM7aWYocy5sZW5ndGgmJnNbcy5sZW5ndGgtMV0udHlwZT09ImNvbW1lbnQiKXJldHVybiByO2lmKGU9PSJzdGFydCIpe3ZhciBvPXQubWF0Y2goL14uKltce1woXFtcOl1ccyokLyk7byYmKHIrPW4pfXJldHVybiByfTt2YXIgZT17cGFzczoxLCJyZXR1cm4iOjEscmFpc2U6MSwiYnJlYWsiOjEsImNvbnRpbnVlIjoxfTt0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbih0LG4scil7aWYociE9PSJcclxuIiYmciE9PSJcciImJnIhPT0iXG4iKXJldHVybiExO3ZhciBpPXRoaXMuJHRva2VuaXplci5nZXRMaW5lVG9rZW5zKG4udHJpbSgpLHQpLnRva2VucztpZighaSlyZXR1cm4hMTtkbyB2YXIgcz1pLnBvcCgpO3doaWxlKHMmJihzLnR5cGU9PSJjb21tZW50Inx8cy50eXBlPT0idGV4dCImJnMudmFsdWUubWF0Y2goL15ccyskLykpKTtyZXR1cm4gcz9zLnR5cGU9PSJrZXl3b3JkIiYmZVtzLnZhbHVlXTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7bis9MTt2YXIgcj10aGlzLiRnZXRJbmRlbnQodC5nZXRMaW5lKG4pKSxpPXQuZ2V0VGFiU3RyaW5nKCk7ci5zbGljZSgtaS5sZW5ndGgpPT1pJiZ0LnJlbW92ZShuZXcgdShuLHIubGVuZ3RoLWkubGVuZ3RoLG4sci5sZW5ndGgpKX19LmNhbGwoYS5wcm90b3R5cGUpLHQuTW9kZT1hfSksZGVmaW5lKCJhY2UvbW9kZS9zaF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2xpYi9sYW5nIikscz1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLG89ZnVuY3Rpb24oKXt2YXIgZT1pLmFycmF5VG9NYXAoIiF8e3x9fGNhc2V8ZG98ZG9uZXxlbGlmfGVsc2V8ZXNhY3xmaXxmb3J8aWZ8aW58dGhlbnx1bnRpbHx3aGlsZXwmfDt8ZXhwb3J0fGxvY2FsfHJlYWR8dHlwZXNldHx1bnNldHxlbGlmfHNlbGVjdHxzZXQiLnNwbGl0KCJ8IikpLHQ9aS5hcnJheVRvTWFwKCJbfF18YWxpYXN8Ymd8YmluZHxicmVha3xidWlsdGlufGNkfGNvbW1hbmR8Y29tcGdlbnxjb21wbGV0ZXxjb250aW51ZXxkaXJzfGRpc293bnxlY2hvfGVuYWJsZXxldmFsfGV4ZWN8ZXhpdHxmY3xmZ3xnZXRvcHRzfGhhc2h8aGVscHxoaXN0b3J5fGpvYnN8a2lsbHxsZXR8bG9nb3V0fHBvcGR8cHJpbnRmfHB1c2hkfHB3ZHxyZXR1cm58c2V0fHNoaWZ0fHNob3B0fHNvdXJjZXxzdXNwZW5kfHRlc3R8dGltZXN8dHJhcHx0eXBlfHVsaW1pdHx1bWFza3x1bmFsaWFzfHdhaXQiLnNwbGl0KCJ8IikpLG49Iig/Oig/OlsxLTldXFxkKil8KD86MCkpIixyPSIoPzpcXC5cXGQrKSIscz0iKD86XFxkKykiLG89Iig/Oig/OiIrcysiPyIrcisiKXwoPzoiK3MrIlxcLikpIix1PSIoPzooPzoiK28rInwiK3MrIikiKyIpIixhPSIoPzoiK3UrInwiK28rIikiLGY9Iig/OiYiK3MrIikiLGw9IlthLXpBLVpdW2EtekEtWjAtOV9dKiIsYz0iKD86KD86XFwkIitsKyIpfCg/OiIrbCsiPSkpIixoPSIoPzpcXCQoPzpTSExWTHxcXCR8XFwhfFxcPykpIixwPSIoPzoiK2wrIlxccypcXChcXCkpIjt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6IiMuKiQifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIoPzpbXlxcXFxdfFxcXFwuKSo/Iid9LHt0b2tlbjoidmFyaWFibGUubGFuZ3VhZ2UiLHJlZ2V4Omh9LHt0b2tlbjoidmFyaWFibGUiLHJlZ2V4OmN9LHt0b2tlbjoic3VwcG9ydC5mdW5jdGlvbiIscmVnZXg6cH0se3Rva2VuOiJzdXBwb3J0LmZ1bmN0aW9uIixyZWdleDpmfSx7dG9rZW46InN0cmluZyIscmVnZXg6IicoPzpbXlxcXFxdfFxcXFwuKSo/JyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6YX0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDpuKyJcXGIifSx7dG9rZW46ZnVuY3Rpb24obil7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkobik/ImtleXdvcmQiOnQuaGFzT3duUHJvcGVydHkobik/ImNvbnN0YW50Lmxhbmd1YWdlIjpuPT0iZGVidWdnZXIiPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcK3xcXC18XFwqfFxcKlxcKnxcXC98XFwvXFwvfH58PHw+fDw9fD0+fD18IT0ifSx7dG9rZW46InBhcmVuLmxwYXJlbiIscmVnZXg6IltcXFtcXChcXHtdIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4OiJbXFxdXFwpXFx9XSJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV19fTtyLmluaGVyaXRzKG8scyksdC5TaEhpZ2hsaWdodFJ1bGVzPW99KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-sql.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9zcWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvc3FsX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi9zcWxfaGlnaGxpZ2h0X3J1bGVzIikuU3FsSGlnaGxpZ2h0UnVsZXMsdT1lKCIuLi9yYW5nZSIpLlJhbmdlLGE9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKX07ci5pbmhlcml0cyhhLGkpLGZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDb21tZW50TGluZXM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ITAscz1bXSxvPS9eKFxzKiktLS87Zm9yKHZhciBhPW47YTw9cjthKyspaWYoIW8udGVzdCh0LmdldExpbmUoYSkpKXtpPSExO2JyZWFrfWlmKGkpe3ZhciBmPW5ldyB1KDAsMCwwLDApO2Zvcih2YXIgYT1uO2E8PXI7YSsrKXt2YXIgbD10LmdldExpbmUoYSksYz1sLm1hdGNoKG8pO2Yuc3RhcnQucm93PWEsZi5lbmQucm93PWEsZi5lbmQuY29sdW1uPWNbMF0ubGVuZ3RoLHQucmVwbGFjZShmLGNbMV0pfX1lbHNlIHQuaW5kZW50Um93cyhuLHIsIi0tIil9fS5jYWxsKGEucHJvdG90eXBlKSx0Lk1vZGU9YX0pLGRlZmluZSgiYWNlL21vZGUvc3FsX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vbGliL2xhbmciKSxzPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsbz1mdW5jdGlvbigpe3ZhciBlPWkuYXJyYXlUb01hcCgic2VsZWN0fGZyb218d2hlcmV8YW5kfG9yfGdyb3VwfGJ5fG9yZGVyfGxpbWl0fG9mZnNldHxoYXZpbmd8YXN8Y2FzZXx3aGVufGVsc2V8ZW5kfHR5cGV8bGVmdHxyaWdodHxqb2lufG9ufG91dGVyfGRlc2N8YXNjIi5zcGxpdCgifCIpKSx0PWkuYXJyYXlUb01hcCgidHJ1ZXxmYWxzZXxudWxsIi5zcGxpdCgifCIpKSxuPWkuYXJyYXlUb01hcCgiY291bnR8bWlufG1heHxhdmd8c3VtfHJhbmt8bm93fGNvYWxlc2NlIi5zcGxpdCgifCIpKTt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii0tLiokIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciLioiJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInLionIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ZnVuY3Rpb24ocil7cmV0dXJuIHI9ci50b0xvd2VyQ2FzZSgpLGUuaGFzT3duUHJvcGVydHkocik/ImtleXdvcmQiOnQuaGFzT3duUHJvcGVydHkocik/ImNvbnN0YW50Lmxhbmd1YWdlIjpuLmhhc093blByb3BlcnR5KHIpPyJzdXBwb3J0LmZ1bmN0aW9uIjoiaWRlbnRpZmllciJ9LHJlZ2V4OiJbYS16QS1aXyRdW2EtekEtWjAtOV8kXSpcXGIifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXCt8XFwtfFxcL3xcXC9cXC98JXw8QD58QD58PEB8JnxcXF58fnw8fD58PD18PT58PT18IT18PD58PSJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1xcKF0ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXCldIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9XX19O3IuaW5oZXJpdHMobyxzKSx0LlNxbEhpZ2hsaWdodFJ1bGVzPW99KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-svg.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS9zdmciLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3htbCIsImFjZS9tb2RlL2phdmFzY3JpcHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUvc3ZnX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2ZvbGRpbmcvbWl4ZWQiLCJhY2UvbW9kZS9mb2xkaW5nL3htbCIsImFjZS9tb2RlL2ZvbGRpbmcvY3N0eWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4veG1sIikuTW9kZSxzPWUoIi4vamF2YXNjcmlwdCIpLk1vZGUsbz1lKCIuLi90b2tlbml6ZXIiKS5Ub2tlbml6ZXIsdT1lKCIuL3N2Z19oaWdobGlnaHRfcnVsZXMiKS5TdmdIaWdobGlnaHRSdWxlcyxhPWUoIi4vZm9sZGluZy9taXhlZCIpLkZvbGRNb2RlLGY9ZSgiLi9mb2xkaW5nL3htbCIpLkZvbGRNb2RlLGw9ZSgiLi9mb2xkaW5nL2NzdHlsZSIpLkZvbGRNb2RlLGM9ZnVuY3Rpb24oKXtpLmNhbGwodGhpcyksdGhpcy5oaWdobGlnaHRlcj1uZXcgdSx0aGlzLiR0b2tlbml6ZXI9bmV3IG8odGhpcy5oaWdobGlnaHRlci5nZXRSdWxlcygpKSx0aGlzLiRlbWJlZHM9dGhpcy5oaWdobGlnaHRlci5nZXRFbWJlZHMoKSx0aGlzLmNyZWF0ZU1vZGVEZWxlZ2F0ZXMoeyJqcy0iOnN9KSx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgYShuZXcgZih7fSkseyJqcy0iOm5ldyBsfSl9O3IuaW5oZXJpdHMoYyxpKSxmdW5jdGlvbigpe3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRnZXRJbmRlbnQodCl9fS5jYWxsKGMucHJvdG90eXBlKSx0Lk1vZGU9Y30pLGRlZmluZSgiYWNlL21vZGUveG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3htbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS9iZWhhdmlvdXIveG1sIiwiYWNlL21vZGUvZm9sZGluZy94bWwiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4veG1sX2hpZ2hsaWdodF9ydWxlcyIpLlhtbEhpZ2hsaWdodFJ1bGVzLHU9ZSgiLi9iZWhhdmlvdXIveG1sIikuWG1sQmVoYXZpb3VyLGE9ZSgiLi9mb2xkaW5nL3htbCIpLkZvbGRNb2RlLGY9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLiRiZWhhdmlvdXI9bmV3IHUsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGF9O3IuaW5oZXJpdHMoZixpKSxmdW5jdGlvbigpe3RoaXMuZ2V0TmV4dExpbmVJbmRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRnZXRJbmRlbnQodCl9fS5jYWxsKGYucHJvdG90eXBlKSx0Lk1vZGU9Zn0pLGRlZmluZSgiYWNlL21vZGUveG1sX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUveG1sX3V0aWwiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3htbF91dGlsIikscz1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLG89ZnVuY3Rpb24oKXt0aGlzLiRydWxlcz17c3RhcnQ6W3t0b2tlbjoidGV4dCIscmVnZXg6IjxcXCFcXFtDREFUQVxcWyIsbmV4dDoiY2RhdGEifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXD8uKj9cXD8+In0se3Rva2VuOiJjb21tZW50IixtZXJnZTohMCxyZWdleDoiPFxcIS0tIixuZXh0OiJjb21tZW50In0se3Rva2VuOiJ4bWxfcGUiLHJlZ2V4OiI8XFwhLio/PiJ9LHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8XFwvPyIsbmV4dDoidGFnIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoiY29uc3RhbnQuY2hhcmFjdGVyLmVudGl0eSIscmVnZXg6Iig/OiYjWzAtOV0rOyl8KD86JiN4WzAtOWEtZkEtRl0rOyl8KD86JlthLXpBLVowLTlfOlxcLi1dKzspIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiW148XSsifV0sY2RhdGE6W3t0b2tlbjoidGV4dCIscmVnZXg6IlxcXVxcXT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6Iig/OlteXFxdXXxcXF0oPyFcXF0+KSkrIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qPy0tPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XX0saS50YWcodGhpcy4kcnVsZXMsInRhZyIsInN0YXJ0Iil9O3IuaW5oZXJpdHMobyxzKSx0LlhtbEhpZ2hsaWdodFJ1bGVzPW99KSxkZWZpbmUoImFjZS9tb2RlL3htbF91dGlsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuW3t0b2tlbjoic3RyaW5nIixyZWdleDonIi4qPyInfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6J1siXS4qJyxuZXh0OmUrIl9xcXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4qPycifSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IlsnXS4qIixuZXh0OmUrIl9xc3RyaW5nIn1dfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm5be3Rva2VuOiJzdHJpbmciLG1lcmdlOiEwLHJlZ2V4OiIuKj8iK2UsbmV4dDp0fSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfXQudGFnPWZ1bmN0aW9uKGUsdCxuLHMpe2VbdF09W3t0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46ZnVuY3Rpb24oZSl7cmV0dXJuIHMmJnNbZV0/Im1ldGEudGFnLnRhZy1uYW1lLiIrc1tlXToibWV0YS50YWcudGFnLW5hbWUifSxtZXJnZTohMCxyZWdleDoiWy1fYS16QS1aMC05Ol0rIixuZXh0OnQrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCJ9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6dCsiX2VtYmVkX2F0dHJpYnV0ZV9saXN0In1dLGVbdCsiX3FzdHJpbmciXT1pKCInIix0KyJfZW1iZWRfYXR0cmlidXRlX2xpc3QiKSxlW3QrIl9xcXN0cmluZyJdPWkoJyInLHQrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCIpLGVbdCsiX2VtYmVkX2F0dHJpYnV0ZV9saXN0Il09W3t0b2tlbjoibWV0YS50YWciLG1lcmdlOiEwLHJlZ2V4OiIvPz4iLG5leHQ6bn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiPSJ9LHt0b2tlbjoiZW50aXR5Lm90aGVyLmF0dHJpYnV0ZS1uYW1lIixyZWdleDoiWy1fYS16QS1aMC05Ol0rIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLmNvbmNhdChyKHQpKX19KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci94bWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLCJhY2UvdG9rZW5faXRlcmF0b3IiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gdShlLHQpe3ZhciBuPSEwLHI9ZS50eXBlLnNwbGl0KCIuIiksaT10LnNwbGl0KCIuIik7cmV0dXJuIGkuZm9yRWFjaChmdW5jdGlvbihlKXtpZihyLmluZGV4T2YoZSk9PS0xKXJldHVybiBuPSExLCExfSksbn12YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIscz1lKCIuL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixvPWUoIi4uLy4uL3Rva2VuX2l0ZXJhdG9yIikuVG9rZW5JdGVyYXRvcixhPWZ1bmN0aW9uKCl7dGhpcy5pbmhlcml0KHMsWyJzdHJpbmdfZHF1b3RlcyJdKSx0aGlzLmFkZCgiYXV0b2Nsb3NpbmciLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09Ij4iKXt2YXIgcz1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1uZXcgbyhyLHMucm93LHMuY29sdW1uKSxmPWEuZ2V0Q3VycmVudFRva2VuKCksbD0hMTtpZighZnx8IXUoZiwibWV0YS50YWciKSYmKCF1KGYsInRleHQiKXx8IWYudmFsdWUubWF0Y2goIi8iKSkpe2RvIGY9YS5zdGVwQmFja3dhcmQoKTt3aGlsZShmJiYodShmLCJzdHJpbmciKXx8dShmLCJrZXl3b3JkLm9wZXJhdG9yIil8fHUoZiwiZW50aXR5LmF0dHJpYnV0ZS1uYW1lIil8fHUoZiwidGV4dCIpKSl9ZWxzZSBsPSEwO2lmKCFmfHwhdShmLCJtZXRhLnRhZy1uYW1lIil8fGEuc3RlcEJhY2t3YXJkKCkudmFsdWUubWF0Y2goIi8iKSlyZXR1cm47dmFyIGM9Zi52YWx1ZTtpZihsKXZhciBjPWMuc3Vic3RyaW5nKDAscy5jb2x1bW4tZi5zdGFydCk7cmV0dXJue3RleHQ6Ij48LyIrYysiPiIsc2VsZWN0aW9uOlsxLDFdfX19KSx0aGlzLmFkZCgiYXV0b2luZGVudCIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iXG4iKXt2YXIgcz1uLmdldEN1cnNvclBvc2l0aW9uKCksbz1yLmRvYy5nZXRMaW5lKHMucm93KSx1PW8uc3Vic3RyaW5nKHMuY29sdW1uLHMuY29sdW1uKzIpO2lmKHU9PSI8LyIpe3ZhciBhPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKHMucm93KSkrci5nZXRUYWJTdHJpbmcoKSxmPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKHMucm93KSk7cmV0dXJue3RleHQ6IlxuIithKyJcbiIrZixzZWxlY3Rpb246WzEsYS5sZW5ndGgsMSxhLmxlbmd0aF19fX19KX07ci5pbmhlcml0cyhhLGkpLHQuWG1sQmVoYXZpb3VyPWF9KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi9iZWhhdmlvdXIiKS5CZWhhdmlvdXIscz1mdW5jdGlvbigpe3RoaXMuYWRkKCJicmFjZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09InsiKXt2YXIgcz1uLmdldFNlbGVjdGlvblJhbmdlKCksbz1yLmRvYy5nZXRUZXh0UmFuZ2Uocyk7cmV0dXJuIG8hPT0iIj97dGV4dDoieyIrbysifSIsc2VsZWN0aW9uOiExfTp7dGV4dDoie30iLHNlbGVjdGlvbjpbMSwxXX19aWYoaT09In0iKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJ9Iil7dmFyIGw9ci4kZmluZE9wZW5pbmdCcmFja2V0KCJ9Iix7Y29sdW1uOnUuY29sdW1uKzEscm93OnUucm93fSk7aWYobCE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19ZWxzZSBpZihpPT0iXG4iKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSJ9Iil7dmFyIGM9ci5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dS5yb3csY29sdW1uOnUuY29sdW1uKzF9KTtpZighYylyZXR1cm4gbnVsbDt2YXIgaD10aGlzLmdldE5leHRMaW5lSW5kZW50KGUsYS5zdWJzdHJpbmcoMCxhLmxlbmd0aC0xKSxyLmdldFRhYlN0cmluZygpKSxwPXRoaXMuJGdldEluZGVudChyLmRvYy5nZXRMaW5lKGMucm93KSk7cmV0dXJue3RleHQ6IlxuIitoKyJcbiIrcCxzZWxlY3Rpb246WzEsaC5sZW5ndGgsMSxoLmxlbmd0aF19fX19KSx0aGlzLmFkZCgiYnJhY2VzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSJ7Iil7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLmVuZC5jb2x1bW4saS5lbmQuY29sdW1uKzEpO2lmKHU9PSJ9IilyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KSx0aGlzLmFkZCgicGFyZW5zIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSIoIil7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO3JldHVybiBvIT09IiI/e3RleHQ6IigiK28rIikiLHNlbGVjdGlvbjohMX06e3RleHQ6IigpIixzZWxlY3Rpb246WzEsMV19fWlmKGk9PSIpIil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0iKSIpe3ZhciBsPXIuJGZpbmRPcGVuaW5nQnJhY2tldCgiKSIse2NvbHVtbjp1LmNvbHVtbisxLHJvdzp1LnJvd30pO2lmKGwhPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcz09IigiKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09IikiKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0nIid8fGk9PSInIil7dmFyIHM9aSxvPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSx1PXIuZG9jLmdldFRleHRSYW5nZShvKTtpZih1IT09IiIpcmV0dXJue3RleHQ6cyt1K3Msc2VsZWN0aW9uOiExfTt2YXIgYT1uLmdldEN1cnNvclBvc2l0aW9uKCksZj1yLmRvYy5nZXRMaW5lKGEucm93KSxsPWYuc3Vic3RyaW5nKGEuY29sdW1uLTEsYS5jb2x1bW4pO2lmKGw9PSJcXCIpcmV0dXJuIG51bGw7dmFyIGM9ci5nZXRUb2tlbnMoby5zdGFydC5yb3cpLGg9MCxwLGQ9LTE7Zm9yKHZhciB2PTA7djxjLmxlbmd0aDt2Kyspe3A9Y1t2XSxwLnR5cGU9PSJzdHJpbmciP2Q9LTE6ZDwwJiYoZD1wLnZhbHVlLmluZGV4T2YocykpO2lmKHAudmFsdWUubGVuZ3RoK2g+by5zdGFydC5jb2x1bW4pYnJlYWs7aCs9Y1t2XS52YWx1ZS5sZW5ndGh9aWYoIXB8fGQ8MCYmcC50eXBlIT09ImNvbW1lbnQiJiYocC50eXBlIT09InN0cmluZyJ8fG8uc3RhcnQuY29sdW1uIT09cC52YWx1ZS5sZW5ndGgraC0xJiZwLnZhbHVlLmxhc3RJbmRleE9mKHMpPT09cC52YWx1ZS5sZW5ndGgtMSkpcmV0dXJue3RleHQ6cytzLHNlbGVjdGlvbjpbMSwxXX07aWYocCYmcC50eXBlPT09InN0cmluZyIpe3ZhciBtPWYuc3Vic3RyaW5nKGEuY29sdW1uLGEuY29sdW1uKzEpO2lmKG09PXMpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJihzPT0nIid8fHM9PSInIikpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5zdGFydC5jb2x1bW4rMSxpLnN0YXJ0LmNvbHVtbisyKTtpZih1PT0nIicpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSl9O3IuaW5oZXJpdHMocyxpKSx0LkNzdHlsZUJlaGF2aW91cj1zfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL3htbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL3JhbmdlIiwiYWNlL21vZGUvZm9sZGluZy9mb2xkX21vZGUiLCJhY2UvdG9rZW5faXRlcmF0b3IiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vLi4vbGliL2xhbmciKSxzPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2Usbz1lKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLHU9ZSgiLi4vLi4vdG9rZW5faXRlcmF0b3IiKS5Ub2tlbkl0ZXJhdG9yLGE9dC5Gb2xkTW9kZT1mdW5jdGlvbihlKXtvLmNhbGwodGhpcyksdGhpcy52b2lkRWxlbWVudHM9ZXx8e319O3IuaW5oZXJpdHMoYSxvKSxmdW5jdGlvbigpe3RoaXMuZ2V0Rm9sZFdpZGdldD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmUoZSxuKTtyZXR1cm4gci5jbG9zaW5nP3Q9PSJtYXJrYmVnaW5lbmQiPyJlbmQiOiIiOiFyLnRhZ05hbWV8fHRoaXMudm9pZEVsZW1lbnRzW3IudGFnTmFtZS50b0xvd2VyQ2FzZSgpXT8iIjpyLnNlbGZDbG9zaW5nPyIiOnIudmFsdWUuaW5kZXhPZigiLyIrci50YWdOYW1lKSE9PS0xPyIiOiJzdGFydCJ9LHRoaXMuX2dldEZpcnN0VGFnSW5MaW5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5nZXRUb2tlbnModCkscj0iIjtmb3IodmFyIHM9MDtzPG4ubGVuZ3RoO3MrKyl7dmFyIG89bltzXTtvLnR5cGUuaW5kZXhPZigibWV0YS50YWciKT09PTA/cis9by52YWx1ZTpyKz1pLnN0cmluZ1JlcGVhdCgiICIsby52YWx1ZS5sZW5ndGgpfXJldHVybiB0aGlzLl9wYXJzZVRhZyhyKX0sdGhpcy50YWdSZT0vXihccyopKDw/KFwvPykoWy1fYS16QS1aMC05OiFdKilccyooXC8/KT4/KS8sdGhpcy5fcGFyc2VUYWc9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50YWdSZS5leGVjKGUpLG49dGhpcy50YWdSZS5sYXN0SW5kZXh8fDA7cmV0dXJuIHRoaXMudGFnUmUubGFzdEluZGV4PTAse3ZhbHVlOmUsbWF0Y2g6dD90WzJdOiIiLGNsb3Npbmc6dD8hIXRbM106ITEsc2VsZkNsb3Npbmc6dD8hIXRbNV18fHRbMl09PSIvPiI6ITEsdGFnTmFtZTp0P3RbNF06IiIsY29sdW1uOnRbMV0/bit0WzFdLmxlbmd0aDpufX0sdGhpcy5fcmVhZFRhZ0ZvcndhcmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRDdXJyZW50VG9rZW4oKTtpZighdClyZXR1cm4gbnVsbDt2YXIgbj0iIixyO2RvIGlmKHQudHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MCl7aWYoIXIpdmFyIHI9e3JvdzplLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjplLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpfTtuKz10LnZhbHVlO2lmKG4uaW5kZXhPZigiPiIpIT09LTEpe3ZhciBpPXRoaXMuX3BhcnNlVGFnKG4pO3JldHVybiBpLnN0YXJ0PXIsaS5lbmQ9e3JvdzplLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjplLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK3QudmFsdWUubGVuZ3RofSxlLnN0ZXBGb3J3YXJkKCksaX19d2hpbGUodD1lLnN0ZXBGb3J3YXJkKCkpO3JldHVybiBudWxsfSx0aGlzLl9yZWFkVGFnQmFja3dhcmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRDdXJyZW50VG9rZW4oKTtpZighdClyZXR1cm4gbnVsbDt2YXIgbj0iIixyO2RvIGlmKHQudHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MCl7cnx8KHI9e3JvdzplLmdldEN1cnJlbnRUb2tlblJvdygpLGNvbHVtbjplLmdldEN1cnJlbnRUb2tlbkNvbHVtbigpK3QudmFsdWUubGVuZ3RofSksbj10LnZhbHVlK247aWYobi5pbmRleE9mKCI8IikhPT0tMSl7dmFyIGk9dGhpcy5fcGFyc2VUYWcobik7cmV0dXJuIGkuZW5kPXIsaS5zdGFydD17cm93OmUuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmUuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCl9LGUuc3RlcEJhY2t3YXJkKCksaX19d2hpbGUodD1lLnN0ZXBCYWNrd2FyZCgpKTtyZXR1cm4gbnVsbH0sdGhpcy5fcG9wPWZ1bmN0aW9uKGUsdCl7d2hpbGUoZS5sZW5ndGgpe3ZhciBuPWVbZS5sZW5ndGgtMV07aWYoIXR8fG4udGFnTmFtZT09dC50YWdOYW1lKXJldHVybiBlLnBvcCgpO2lmKHRoaXMudm9pZEVsZW1lbnRzW3QudGFnTmFtZV0pcmV0dXJuO2lmKHRoaXMudm9pZEVsZW1lbnRzW24udGFnTmFtZV0pe2UucG9wKCk7Y29udGludWV9cmV0dXJuIG51bGx9fSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmUoZSxuKTtpZighci5tYXRjaClyZXR1cm4gbnVsbDt2YXIgaT1yLmNsb3Npbmd8fHIuc2VsZkNsb3Npbmcsbz1bXSxhO2lmKCFpKXt2YXIgZj1uZXcgdShlLG4sci5jb2x1bW4pLGw9e3JvdzpuLGNvbHVtbjpyLmNvbHVtbityLnRhZ05hbWUubGVuZ3RoKzJ9O3doaWxlKGE9dGhpcy5fcmVhZFRhZ0ZvcndhcmQoZikpe2lmKGEuc2VsZkNsb3Npbmcpe2lmKCFvLmxlbmd0aClyZXR1cm4gYS5zdGFydC5jb2x1bW4rPWEudGFnTmFtZS5sZW5ndGgrMixhLmVuZC5jb2x1bW4tPTIscy5mcm9tUG9pbnRzKGEuc3RhcnQsYS5lbmQpO2NvbnRpbnVlfWlmKGEuY2xvc2luZyl7dGhpcy5fcG9wKG8sYSk7aWYoby5sZW5ndGg9PTApcmV0dXJuIHMuZnJvbVBvaW50cyhsLGEuc3RhcnQpfWVsc2Ugby5wdXNoKGEpfX1lbHNle3ZhciBmPW5ldyB1KGUsbixyLmNvbHVtbityLm1hdGNoLmxlbmd0aCksYz17cm93Om4sY29sdW1uOnIuY29sdW1ufTt3aGlsZShhPXRoaXMuX3JlYWRUYWdCYWNrd2FyZChmKSl7aWYoYS5zZWxmQ2xvc2luZyl7aWYoIW8ubGVuZ3RoKXJldHVybiBhLnN0YXJ0LmNvbHVtbis9YS50YWdOYW1lLmxlbmd0aCsyLGEuZW5kLmNvbHVtbi09MixzLmZyb21Qb2ludHMoYS5zdGFydCxhLmVuZCk7Y29udGludWV9aWYoIWEuY2xvc2luZyl7dGhpcy5fcG9wKG8sYSk7aWYoby5sZW5ndGg9PTApcmV0dXJuIGEuc3RhcnQuY29sdW1uKz1hLnRhZ05hbWUubGVuZ3RoKzIscy5mcm9tUG9pbnRzKGEuc3RhcnQsYyl9ZWxzZSBvLnB1c2goYSl9fX19LmNhbGwoYS5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9yYW5nZSIpLlJhbmdlLGk9dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9bnVsbCx0aGlzLmZvbGRpbmdTdG9wTWFya2VyPW51bGwsdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmdldExpbmUobik7cmV0dXJuIHRoaXMuZm9sZGluZ1N0YXJ0TWFya2VyLnRlc3Qocik/InN0YXJ0Ijp0PT0ibWFya2JlZ2luZW5kIiYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlciYmdGhpcy5mb2xkaW5nU3RvcE1hcmtlci50ZXN0KHIpPyJlbmQiOiIifSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGx9LHRoaXMuaW5kZW50YXRpb25CbG9jaz1mdW5jdGlvbihlLHQsbil7dmFyIGk9L1xTLyxzPWUuZ2V0TGluZSh0KSxvPXMuc2VhcmNoKGkpO2lmKG89PS0xKXJldHVybjt2YXIgdT1ufHxzLmxlbmd0aCxhPWUuZ2V0TGVuZ3RoKCksZj10LGw9dDt3aGlsZSgrK3Q8YSl7dmFyIGM9ZS5nZXRMaW5lKHQpLnNlYXJjaChpKTtpZihjPT0tMSljb250aW51ZTtpZihjPD1vKWJyZWFrO2w9dH1pZihsPmYpe3ZhciBoPWUuZ2V0TGluZShsKS5sZW5ndGg7cmV0dXJuIG5ldyByKGYsdSxsLGgpfX0sdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrPWZ1bmN0aW9uKGUsdCxuLGkscyl7dmFyIG89e3JvdzpuLGNvbHVtbjppKzF9LHU9ZS4kZmluZENsb3NpbmdCcmFja2V0KHQsbyxzKTtpZighdSlyZXR1cm47dmFyIGE9ZS5mb2xkV2lkZ2V0c1t1LnJvd107cmV0dXJuIGE9PW51bGwmJihhPXRoaXMuZ2V0Rm9sZFdpZGdldChlLHUucm93KSksYT09InN0YXJ0IiYmdS5yb3c+by5yb3cmJih1LnJvdy0tLHUuY29sdW1uPWUuZ2V0TGluZSh1LnJvdykubGVuZ3RoKSxyLmZyb21Qb2ludHMobyx1KX19KS5jYWxsKGkucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dCIsImFjZS90b2tlbml6ZXIiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL21hdGNoaW5nX2JyYWNlX291dGRlbnQiLCJhY2UvcmFuZ2UiLCJhY2Uvd29ya2VyL3dvcmtlcl9jbGllbnQiLCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIiwiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0IikuTW9kZSxzPWUoIi4uL3Rva2VuaXplciIpLlRva2VuaXplcixvPWUoIi4vamF2YXNjcmlwdF9oaWdobGlnaHRfcnVsZXMiKS5KYXZhU2NyaXB0SGlnaGxpZ2h0UnVsZXMsdT1lKCIuL21hdGNoaW5nX2JyYWNlX291dGRlbnQiKS5NYXRjaGluZ0JyYWNlT3V0ZGVudCxhPWUoIi4uL3JhbmdlIikuUmFuZ2UsZj1lKCIuLi93b3JrZXIvd29ya2VyX2NsaWVudCIpLldvcmtlckNsaWVudCxsPWUoIi4vYmVoYXZpb3VyL2NzdHlsZSIpLkNzdHlsZUJlaGF2aW91cixjPWUoIi4vZm9sZGluZy9jc3R5bGUiKS5Gb2xkTW9kZSxoPWZ1bmN0aW9uKCl7dGhpcy4kdG9rZW5pemVyPW5ldyBzKChuZXcgbykuZ2V0UnVsZXMoKSksdGhpcy4kb3V0ZGVudD1uZXcgdSx0aGlzLiRiZWhhdmlvdXI9bmV3IGwsdGhpcy5mb2xkaW5nUnVsZXM9bmV3IGN9O3IuaW5oZXJpdHMoaCxpKSxmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ29tbWVudExpbmVzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPSEwLHM9L14oXHMqKVwvXC8vO2Zvcih2YXIgbz1uO288PXI7bysrKWlmKCFzLnRlc3QodC5nZXRMaW5lKG8pKSl7aT0hMTticmVha31pZihpKXt2YXIgdT1uZXcgYSgwLDAsMCwwKTtmb3IodmFyIG89bjtvPD1yO28rKyl7dmFyIGY9dC5nZXRMaW5lKG8pLGw9Zi5tYXRjaChzKTt1LnN0YXJ0LnJvdz1vLHUuZW5kLnJvdz1vLHUuZW5kLmNvbHVtbj1sWzBdLmxlbmd0aCx0LnJlcGxhY2UodSxsWzFdKX19ZWxzZSB0LmluZGVudFJvd3MobixyLCIvLyIpfSx0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRnZXRJbmRlbnQodCksaT10aGlzLiR0b2tlbml6ZXIuZ2V0TGluZVRva2Vucyh0LGUpLHM9aS50b2tlbnMsbz1pLnN0YXRlO2lmKHMubGVuZ3RoJiZzW3MubGVuZ3RoLTFdLnR5cGU9PSJjb21tZW50IilyZXR1cm4gcjtpZihlPT0ic3RhcnQifHxlPT0icmVnZXhfYWxsb3dlZCIpe3ZhciB1PXQubWF0Y2goL14uKig/OlxiY2FzZVxiLipcOnxbXHtcKFxbXSlccyokLyk7dSYmKHIrPW4pfWVsc2UgaWYoZT09ImRvYy1zdGFydCIpe2lmKG89PSJzdGFydCJ8fGU9PSJyZWdleF9hbGxvd2VkIilyZXR1cm4iIjt2YXIgdT10Lm1hdGNoKC9eXHMqKFwvPylcKi8pO3UmJih1WzFdJiYocis9IiAiKSxyKz0iKiAiKX1yZXR1cm4gcn0sdGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLiRvdXRkZW50LmNoZWNrT3V0ZGVudCh0LG4pfSx0aGlzLmF1dG9PdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXt0aGlzLiRvdXRkZW50LmF1dG9PdXRkZW50KHQsbil9LHRoaXMuY3JlYXRlV29ya2VyPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBmKFsiYWNlIl0sImFjZS9tb2RlL2phdmFzY3JpcHRfd29ya2VyIiwiSmF2YVNjcmlwdFdvcmtlciIpO3JldHVybiB0LmF0dGFjaFRvRG9jdW1lbnQoZS5nZXREb2N1bWVudCgpKSx0Lm9uKCJqc2xpbnQiLGZ1bmN0aW9uKHQpe3ZhciBuPVtdO2Zvcih2YXIgcj0wO3I8dC5kYXRhLmxlbmd0aDtyKyspe3ZhciBpPXQuZGF0YVtyXTtpJiZuLnB1c2goe3JvdzppLmxpbmUtMSxjb2x1bW46aS5jaGFyYWN0ZXItMSx0ZXh0OmkucmVhc29uLHR5cGU6Indhcm5pbmciLGxpbnQ6aX0pfWUuc2V0QW5ub3RhdGlvbnMobil9KSx0Lm9uKCJuYXJjaXNzdXMiLGZ1bmN0aW9uKHQpe2Uuc2V0QW5ub3RhdGlvbnMoW3QuZGF0YV0pfSksdC5vbigidGVybWluYXRlIixmdW5jdGlvbigpe2UuY2xlYXJBbm5vdGF0aW9ucygpfSksdH19LmNhbGwoaC5wcm90b3R5cGUpLHQuTW9kZT1ofSksZGVmaW5lKCJhY2UvbW9kZS9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9sYW5nIiwiYWNlL3VuaWNvZGUiLCJhY2UvbW9kZS9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi9saWIvbGFuZyIpLHM9ZSgiLi4vdW5pY29kZSIpLG89ZSgiLi9kb2NfY29tbWVudF9oaWdobGlnaHRfcnVsZXMiKS5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXMsdT1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLGE9ZnVuY3Rpb24oKXt2YXIgZT1pLmFycmF5VG9NYXAoIkFycmF5fEJvb2xlYW58RGF0ZXxGdW5jdGlvbnxJdGVyYXRvcnxOdW1iZXJ8T2JqZWN0fFJlZ0V4cHxTdHJpbmd8UHJveHl8TmFtZXNwYWNlfFFOYW1lfFhNTHxYTUxMaXN0fEFycmF5QnVmZmVyfEZsb2F0MzJBcnJheXxGbG9hdDY0QXJyYXl8SW50MTZBcnJheXxJbnQzMkFycmF5fEludDhBcnJheXxVaW50MTZBcnJheXxVaW50MzJBcnJheXxVaW50OEFycmF5fFVpbnQ4Q2xhbXBlZEFycmF5fEVycm9yfEV2YWxFcnJvcnxJbnRlcm5hbEVycm9yfFJhbmdlRXJyb3J8UmVmZXJlbmNlRXJyb3J8U3RvcEl0ZXJhdGlvbnxTeW50YXhFcnJvcnxUeXBlRXJyb3J8VVJJRXJyb3J8ZGVjb2RlVVJJfGRlY29kZVVSSUNvbXBvbmVudHxlbmNvZGVVUkl8ZW5jb2RlVVJJQ29tcG9uZW50fGV2YWx8aXNGaW5pdGV8aXNOYU58cGFyc2VGbG9hdHxwYXJzZUludHxKU09OfE1hdGh8dGhpc3xhcmd1bWVudHN8cHJvdG90eXBlfHdpbmRvd3xkb2N1bWVudCIuc3BsaXQoInwiKSksdD1pLmFycmF5VG9NYXAoImJyZWFrfGNhc2V8Y2F0Y2h8Y29udGludWV8ZGVmYXVsdHxkZWxldGV8ZG98ZWxzZXxmaW5hbGx5fGZvcnxmdW5jdGlvbnxpZnxpbnxpbnN0YW5jZW9mfG5ld3xyZXR1cm58c3dpdGNofHRocm93fHRyeXx0eXBlb2Z8bGV0fHZhcnx3aGlsZXx3aXRofGNvbnN0fHlpZWxkfGltcG9ydHxnZXR8c2V0Ii5zcGxpdCgifCIpKSxuPSJjYXNlfGRvfGVsc2V8ZmluYWxseXxpbnxpbnN0YW5jZW9mfHJldHVybnx0aHJvd3x0cnl8dHlwZW9mfHlpZWxkIixyPWkuYXJyYXlUb01hcCgiX19wYXJlbnRfX3xfX2NvdW50X198ZXNjYXBlfHVuZXNjYXBlfHdpdGh8X19wcm90b19fIi5zcGxpdCgifCIpKSx1PWkuYXJyYXlUb01hcCgiY29uc3R8bGV0fHZhcnxmdW5jdGlvbiIuc3BsaXQoInwiKSksYT1pLmFycmF5VG9NYXAoIm51bGx8SW5maW5pdHl8TmFOfHVuZGVmaW5lZCIuc3BsaXQoInwiKSksZj1pLmFycmF5VG9NYXAoImNsYXNzfGVudW18ZXh0ZW5kc3xzdXBlcnxleHBvcnR8aW1wbGVtZW50c3xwcml2YXRlfHB1YmxpY3xpbnRlcmZhY2V8cGFja2FnZXxwcm90ZWN0ZWR8c3RhdGljIi5zcGxpdCgifCIpKSxsPSJbIitzLnBhY2thZ2VzLkwrIlxcJF9dWyIrcy5wYWNrYWdlcy5MK3MucGFja2FnZXMuTW4rcy5wYWNrYWdlcy5NYytzLnBhY2thZ2VzLk5kK3MucGFja2FnZXMuUGMrIlxcJF9dKlxcYiIsYz0iXFxcXCg/OnhbMC05YS1mQS1GXXsyfXx1WzAtOWEtZkEtRl17NH18WzAtMl1bMC03XXswLDJ9fDNbMC02XVswLTddP3wzN1swLTddP3xbNC03XVswLTddP3wuKSI7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4Oi9cL1wvLiokL30sby5nZXRTdGFydFJ1bGUoImRvYy1zdGFydCIpLHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6L1wvXCovLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InN0cmluZyIscmVnZXg6IicoPz0uKSIsbmV4dDoicXN0cmluZyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonIig/PS4pJyxuZXh0OiJxcXN0cmluZyJ9LHt0b2tlbjoiY29uc3RhbnQubnVtZXJpYyIscmVnZXg6LzBbeFhdWzAtOWEtZkEtRl0rXGIvfSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4Oi9bKy1dP1xkKyg/Oig/OlwuXGQqKT8oPzpbZUVdWystXT9cZCspPyk/XGIvfSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24iLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsImVudGl0eS5uYW1lLmZ1bmN0aW9uIiwidGV4dCIsImtleXdvcmQub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxcLikocHJvdG90eXBlKShcXC4pKCIrbCsiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCJdLHJlZ2V4OiIoIitsKyIpKFxcLikocHJvdG90eXBlKShcXC4pKCIrbCsiKShcXHMqKSg9KShcXHMqKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsic3RvcmFnZS50eXBlIiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJrZXl3b3JkLm9wZXJhdG9yIiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKCIrbCsiKShcXC4pKCIrbCsiKShcXHMqKSg9KShcXHMqKShmdW5jdGlvbikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0Iiwia2V5d29yZC5vcGVyYXRvciIsInRleHQiLCJzdG9yYWdlLnR5cGUiLCJ0ZXh0IiwiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicGFyZW4ubHBhcmVuIl0scmVnZXg6IigiK2wrIikoXFwuKSgiK2wrIikoXFxzKikoPSkoXFxzKikoZnVuY3Rpb24pKFxccyspKFxcdyspKFxccyopKFxcKCkiLG5leHQ6ImZ1bmN0aW9uX2FyZ3VtZW50cyJ9LHt0b2tlbjpbInN0b3JhZ2UudHlwZSIsInRleHQiLCJlbnRpdHkubmFtZS5mdW5jdGlvbiIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKGZ1bmN0aW9uKShcXHMrKSgiK2wrIikoXFxzKikoXFwoKSIsbmV4dDoiZnVuY3Rpb25fYXJndW1lbnRzIn0se3Rva2VuOlsiZW50aXR5Lm5hbWUuZnVuY3Rpb24iLCJ0ZXh0IiwicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJ0ZXh0Iiwic3RvcmFnZS50eXBlIiwidGV4dCIsInBhcmVuLmxwYXJlbiJdLHJlZ2V4OiIoIitsKyIpKFxccyopKDopKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46WyJ0ZXh0IiwidGV4dCIsInN0b3JhZ2UudHlwZSIsInRleHQiLCJwYXJlbi5scGFyZW4iXSxyZWdleDoiKDopKFxccyopKGZ1bmN0aW9uKShcXHMqKShcXCgpIixuZXh0OiJmdW5jdGlvbl9hcmd1bWVudHMifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmJvb2xlYW4iLHJlZ2V4Oi8oPzp0cnVlfGZhbHNlKVxiL30se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiKD86IituKyIpXFxiIixuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmZ1bmN0aW9uIl0scmVnZXg6LyhcLikocyg/OmgoPzppZnR8b3coPzpNb2QoPzplbGVzc0RpYWxvZ3xhbERpYWxvZyl8SGVscCkpfGNyb2xsKD86WHxCeSg/OlBhZ2VzfExpbmVzKT98WXxUbyk/fHQoPzpvcHp6enp8cmlrZSl8aSg/Om58emVUb0NvbnRlbnR8ZGViYXJ8Z25UZXh0KXxvcnR8dSg/OnB8Yig/OnN0cig/OmluZyk/KT8pfHBsaSg/OmNlfHQpfGUoPzpuZHx0KD86UmUoPzpzaXphYmxlfHF1ZXN0SGVhZGVyKXxNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG8oPzp0S2V5c3x1cnMpfFllYXJ8Q3Vyc29yfFRpbWUoPzpvdXQpP3xJbnRlcnZhbHxaT3B0aW9uc3xEYXRlfFVUQyg/Ok0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2Vjb25kc3xIb3Vyc3xEYXRlfEZ1bGxZZWFyKXxGdWxsWWVhcnxBY3RpdmUpfGFyY2gpfHFydHxsaWNlfGF2ZVByZWZlcmVuY2VzfG1hbGwpfGgoPzpvbWV8YW5kbGVFdmVudCl8bmF2aWdhdGV8Yyg/Omhhcig/OkNvZGVBdHxBdCl8byg/OnN8big/OmNhdHx0ZXh0dWFsfGZpcm0pfG1waWxlKXxlaWx8bGVhcig/OlRpbWVvdXR8SW50ZXJ2YWwpP3xhKD86cHR1cmVFdmVudHN8bGwpfHJlYXRlKD86U3R5bGVTaGVldHxQb3B1cHxFdmVudE9iamVjdCkpfHQoPzpvKD86R01UU3RyaW5nfFMoPzp0cmluZ3xvdXJjZSl8VSg/OlRDU3RyaW5nfHBwZXJDYXNlKXxMbyg/OmNhbGVTdHJpbmd8d2VyQ2FzZSkpfGVzdHxhKD86bnxpbnQoPzpFbmFibGVkKT8pKXxpKD86cyg/Ok5hTnxGaW5pdGUpfG5kZXhPZnx0YWxpY3MpfGQoPzppc2FibGVFeHRlcm5hbENhcHR1cmV8dW1wfGV0YWNoRXZlbnQpfHUoPzpuKD86c2hpZnR8dGFpbnR8ZXNjYXBlfHdhdGNoKXxwZGF0ZUNvbW1hbmRzKXxqKD86b2lufGF2YUVuYWJsZWQpfHAoPzpvKD86cHx3KXx1c2h8bHVnaW5zLnJlZnJlc2h8YSg/OmRkaW5nc3xyc2UoPzpJbnR8RmxvYXQpPyl8cig/OmludHxvbXB0fGVmZXJlbmNlKSl8ZSg/OnNjYXBlfG5hYmxlRXh0ZXJuYWxDYXB0dXJlfHZhbHxsZW1lbnRGcm9tUG9pbnR8eCg/OnB8ZWMoPzpTY3JpcHR8Q29tbWFuZCk/KSl8dmFsdWVPZnxVVEN8cXVlcnlDb21tYW5kKD86U3RhdGV8SW5kZXRlcm18RW5hYmxlZHxWYWx1ZSl8Zig/OmkoPzpuZHxsZSg/Ok1vZGlmaWVkRGF0ZXxTaXplfENyZWF0ZWREYXRlfFVwZGF0ZWREYXRlKXx4ZWQpfG8oPzpudCg/OnNpemV8Y29sb3IpfHJ3YXJkKXxsb29yfHJvbUNoYXJDb2RlKXx3YXRjaHxsKD86aW5rfG8oPzphZHxnKXxhc3RJbmRleE9mKXxhKD86c2lufG5jaG9yfGNvc3x0KD86dGFjaEV2ZW50fG9ifGFuKD86Mik/KXxwcGx5fGxlcnR8Yig/OnN8b3J0KSl8cig/Om91KD86bmR8dGVFdmVudHMpfGUoPzpzaXplKD86Qnl8VG8pfGNhbGN8dHVyblZhbHVlfHBsYWNlfHZlcnNlfGwoPzpvYWR8ZWFzZSg/OkNhcHR1cmV8RXZlbnRzKSkpfGFuZG9tKXxnKD86b3xldCg/OlJlc3BvbnNlSGVhZGVyfE0oPzppKD86bnV0ZXN8bGxpc2Vjb25kcyl8b250aCl8U2UoPzpjb25kc3xsZWN0aW9uKXxIb3Vyc3xZZWFyfFRpbWUoPzp6b25lT2Zmc2V0KT98RGEoPzp5fHRlKXxVVEMoPzpNKD86aSg/Om51dGVzfGxsaXNlY29uZHMpfG9udGgpfFNlY29uZHN8SG91cnN8RGEoPzp5fHRlKXxGdWxsWWVhcil8RnVsbFllYXJ8QSg/OnR0ZW50aW9ufGxsUmVzcG9uc2VIZWFkZXJzKSkpfG0oPzppbnxvdmUoPzpCKD86eXxlbG93KXxUbyg/OkFic29sdXRlKT98QWJvdmUpfGVyZ2VBdHRyaWJ1dGVzfGEoPzp0Y2h8cmdpbnN8eCkpfGIoPzp0b2F8aWd8byg/OmxkfHJkZXJXaWR0aHMpfGxpbmt8YWNrKSlcYig/PVwoKS99LHt0b2tlbjpbInB1bmN0dWF0aW9uLm9wZXJhdG9yIiwic3VwcG9ydC5mdW5jdGlvbi5kb20iXSxyZWdleDovKFwuKShzKD86dWIoPzpzdHJpbmdEYXRhfG1pdCl8cGxpdFRleHR8ZSg/OnQoPzpOYW1lZEl0ZW18QXR0cmlidXRlKD86Tm9kZSk/KXxsZWN0KSl8aGFzKD86Q2hpbGROb2Rlc3xGZWF0dXJlKXxuYW1lZEl0ZW18Yyg/OmwoPzppY2t8byg/OnNlfG5lTm9kZSkpfHJlYXRlKD86Qyg/Om9tbWVudHxEQVRBU2VjdGlvbnxhcHRpb24pfFQoPzpIZWFkfGV4dE5vZGV8Rm9vdCl8RG9jdW1lbnRGcmFnbWVudHxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb258RSg/Om50aXR5UmVmZXJlbmNlfGxlbWVudCl8QXR0cmlidXRlKSl8dGFiSW5kZXh8aSg/Om5zZXJ0KD86Um93fEJlZm9yZXxDZWxsfERhdGEpfHRlbSl8b3BlbnxkZWxldGUoPzpSb3d8Qyg/OmVsbHxhcHRpb24pfFQoPzpIZWFkfEZvb3QpfERhdGEpfGZvY3VzfHdyaXRlKD86bG4pP3xhKD86ZGR8cHBlbmQoPzpDaGlsZHxEYXRhKSl8cmUoPzpzZXR8cGxhY2UoPzpDaGlsZHxEYXRhKXxtb3ZlKD86TmFtZWRJdGVtfENoaWxkfEF0dHJpYnV0ZSg/Ok5vZGUpPyk/KXxnZXQoPzpOYW1lZEl0ZW18RWxlbWVudCg/OnNCeSg/Ok5hbWV8VGFnTmFtZSl8QnlJZCl8QXR0cmlidXRlKD86Tm9kZSk/KXxibHVyKVxiKD89XCgpL30se3Rva2VuOlsicHVuY3R1YXRpb24ub3BlcmF0b3IiLCJzdXBwb3J0LmNvbnN0YW50Il0scmVnZXg6LyhcLikocyg/OnlzdGVtTGFuZ3VhZ2V8Y3IoPzppcHRzfG9sbGJhcnN8ZWVuKD86WHxZfFRvcHxMZWZ0KSl8dCg/OnlsZSg/OlNoZWV0cyk/fGF0dXMoPzpUZXh0fGJhcik/KXxpYmxpbmcoPzpCZWxvd3xBYm92ZSl8b3VyY2V8dWZmaXhlc3xlKD86Y3VyaXR5KD86UG9saWN5KT98bCg/OmVjdGlvbnxmKSkpfGgoPzppc3Rvcnl8b3N0KD86bmFtZSk/fGFzKD86aHxGb2N1cykpfHl8WCg/Ok1MRG9jdW1lbnR8U0xEb2N1bWVudCl8big/OmV4dHxhbWUoPzpzcGFjZSg/OnN8VVJJKXxQcm9wKSl8TSg/OklOX1ZBTFVFfEFYX1ZBTFVFKXxjKD86aGFyYWN0ZXJTZXR8byg/Om4oPzpzdHJ1Y3Rvcnx0cm9sbGVycyl8b2tpZUVuYWJsZWR8bG9yRGVwdGh8bXAoPzpvbmVudHN8bGV0ZSkpfHVycmVudHxwdUNsYXNzfGwoPzppKD86cCg/OmJvYXJkRGF0YSk/fGVudEluZm9ybWF0aW9uKXxvc2VkfGFzc2VzKXxhbGxlKD86ZXxyKXxyeXB0byl8dCg/Om8oPzpvbGJhcnxwKXxleHQoPzpUcmFuc2Zvcm18SW5kZW50fERlY29yYXRpb258QWxpZ24pfGFncyl8U1FSVCg/OjFfMnwyKXxpKD86big/Om5lcig/OkhlaWdodHxXaWR0aCl8cHV0KXxkc3xnbm9yZUNhc2UpfHpJbmRleHxvKD86c2NwdXxuKD86cmVhZHlzdGF0ZWNoYW5nZXxMaW5lKXx1dGVyKD86SGVpZ2h0fFdpZHRoKXxwKD86c1Byb2ZpbGV8ZW5lcil8ZmZzY3JlZW5CdWZmZXJpbmcpfE5FR0FUSVZFX0lORklOSVRZfGQoPzppKD86c3BsYXl8YWxvZyg/OkhlaWdodHxUb3B8V2lkdGh8TGVmdHxBcmd1bWVudHMpfHJlY3Rvcmllcyl8ZSg/OnNjcmlwdGlvbnxmYXVsdCg/OlN0YXR1c3xDaCg/OmVja2VkfGFyc2V0KXxWaWV3KSkpfHUoPzpzZXIoPzpQcm9maWxlfExhbmd1YWdlfEFnZW50KXxuKD86aXF1ZUlEfGRlZmluZWQpfHBkYXRlSW50ZXJ2YWwpfF9jb250ZW50fHAoPzppeGVsRGVwdGh8b3J0fGVyc29uYWxiYXJ8a2NzMTF8bCg/OnVnaW5zfGF0Zm9ybSl8YSg/OnRobmFtZXxkZGluZyg/OlJpZ2h0fEJvdHRvbXxUb3B8TGVmdCl8cmVudCg/OldpbmRvd3xMYXllcik/fGdlKD86WCg/Ok9mZnNldCk/fFkoPzpPZmZzZXQpPykpfHIoPzpvKD86dG8oPzpjb2x8dHlwZSl8ZHVjdCg/OlN1Yik/fG1wdGVyKXxlKD86dmlvdXN8Zml4KSkpfGUoPzpuKD86Y29kaW5nfGFibGVkUGx1Z2luKXx4KD86dGVybmFsfHBhbmRvKXxtYmVkcyl8dig/OmlzaWJpbGl0eXxlbmRvcig/OlN1Yik/fExpbmtjb2xvcil8VVJMVW5lbmNvZGVkfFAoPzpJfE9TSVRJVkVfSU5GSU5JVFkpfGYoPzppbGVuYW1lfG8oPzpudCg/OlNpemV8RmFtaWx5fFdlaWdodCl8cm1OYW1lKXxyYW1lKD86c3xFbGVtZW50KXxnQ29sb3IpfEV8d2hpdGVTcGFjZXxsKD86aSg/OnN0U3R5bGVUeXBlfG4oPzplSGVpZ2h0fGtDb2xvcikpfG8oPzpjYSg/OnRpb24oPzpiYXIpP3xsTmFtZSl8d3NyYyl8ZSg/Om5ndGh8ZnQoPzpDb250ZXh0KT8pfGEoPzpzdCg/Ok0oPzpvZGlmaWVkfGF0Y2gpfEluZGV4fFBhcmVuKXx5ZXIoPzpzfFgpfG5ndWFnZSkpfGEoPzpwcCg/Ok1pbm9yVmVyc2lvbnxOYW1lfENvKD86ZGVOYW1lfHJlKXxWZXJzaW9uKXx2YWlsKD86SGVpZ2h0fFRvcHxXaWR0aHxMZWZ0KXxsbHxyKD86aXR5fGd1bWVudHMpfExpbmtjb2xvcnxib3ZlKXxyKD86aWdodCg/OkNvbnRleHQpP3xlKD86c3BvbnNlKD86WE1MfFRleHQpfGFkeVN0YXRlKSl8Z2xvYmFsfHh8bSg/OmltZVR5cGVzfHVsdGlsaW5lfGVudWJhcnxhcmdpbig/OlJpZ2h0fEJvdHRvbXxUb3B8TGVmdCkpfEwoPzpOKD86MTB8Mil8T0coPzoxMEV8MkUpKXxiKD86byg/OnR0b218cmRlcig/OldpZHRofFJpZ2h0V2lkdGh8Qm90dG9tV2lkdGh8U3R5bGV8Q29sb3J8VG9wV2lkdGh8TGVmdFdpZHRoKSl8dWZmZXJEZXB0aHxlbG93fGFja2dyb3VuZCg/OkNvbG9yfEltYWdlKSkpXGIvfSx7dG9rZW46WyJzdG9yYWdlLnR5cGUiLCJwdW5jdHVhdGlvbi5vcGVyYXRvciIsInN1cHBvcnQuZnVuY3Rpb24uZmlyZWJ1ZyJdLHJlZ2V4Oi8oY29uc29sZSkoXC4pKHdhcm58aW5mb3xsb2d8ZXJyb3J8dGltZXx0aW1lRW5kfGFzc2VydClcYi99LHt0b2tlbjpmdW5jdGlvbihuKXtyZXR1cm4gZS5oYXNPd25Qcm9wZXJ0eShuKT8idmFyaWFibGUubGFuZ3VhZ2UiOnIuaGFzT3duUHJvcGVydHkobik/ImludmFsaWQuZGVwcmVjYXRlZCI6dS5oYXNPd25Qcm9wZXJ0eShuKT8ic3RvcmFnZS50eXBlIjp0Lmhhc093blByb3BlcnR5KG4pPyJrZXl3b3JkIjphLmhhc093blByb3BlcnR5KG4pPyJjb25zdGFudC5sYW5ndWFnZSI6Zi5oYXNPd25Qcm9wZXJ0eShuKT8iaW52YWxpZC5pbGxlZ2FsIjpuPT0iZGVidWdnZXIiPyJpbnZhbGlkLmRlcHJlY2F0ZWQiOiJpZGVudGlmaWVyIn0scmVnZXg6bH0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDovIXxcJHwlfCZ8XCp8XC1cLXxcLXxcK1wrfFwrfH58PT09fD09fD18IT18IT09fDw9fD49fDw8PXw+Pj18Pj4+PXw8Pnw8fD58IXwmJnxcfFx8fFw/XDp8XCo9fCU9fFwrPXxcLT18Jj18XF49fFxiKD86aW58aW5zdGFuY2VvZnxuZXd8ZGVsZXRlfHR5cGVvZnx2b2lkKS8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicHVuY3R1YXRpb24ub3BlcmF0b3IiLHJlZ2V4Oi9cP3xcOnxcLHxcO3xcLi8sbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDovW1xbKHtdLyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJwYXJlbi5ycGFyZW4iLHJlZ2V4Oi9bXF0pfV0vfSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4Oi9cLz0/LyxuZXh0OiJyZWdleF9hbGxvd2VkIn0se3Rva2VuOiJjb21tZW50IixyZWdleDovXiMhLiokL30se3Rva2VuOiJ0ZXh0IixyZWdleDovXHMrL31dLHJlZ2V4X2FsbG93ZWQ6W28uZ2V0U3RhcnRSdWxlKCJkb2Mtc3RhcnQiKSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCoiLG5leHQ6ImNvbW1lbnRfcmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qJCJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6IlxcLyIsbmV4dDoicmVnZXgiLG1lcmdlOiEwfSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0scmVnZXg6W3t0b2tlbjoicmVnZXhwLmtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiJcXFxcKD86dVtcXGRhLWZBLUZdezR9fHhbXFxkYS1mQS1GXXsyfXwuKSJ9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6Ii9cXHcqIixuZXh0OiJzdGFydCIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cCIscmVnZXg6IlteXFxcXC9cXFtdKyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nLnJlZ2V4cC5jaGFyYWNodGVyY2xhc3MiLHJlZ2V4OiJcXFsiLG5leHQ6InJlZ2V4X2NoYXJhY3Rlcl9jbGFzcyIsbWVyZ2U6ITB9LHt0b2tlbjoiZW1wdHkiLHJlZ2V4OiIiLG5leHQ6InN0YXJ0In1dLHJlZ2V4X2NoYXJhY3Rlcl9jbGFzczpbe3Rva2VuOiJyZWdleHAua2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcXFwoPzp1W1xcZGEtZkEtRl17NH18eFtcXGRhLWZBLUZdezJ9fC4pIn0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6Il0iLG5leHQ6InJlZ2V4IixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmcucmVnZXhwLmNoYXJhY2h0ZXJjbGFzcyIscmVnZXg6IlteXFxcXFxcXV0rIixtZXJnZTohMH0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDoic3RhcnQifV0sZnVuY3Rpb25fYXJndW1lbnRzOlt7dG9rZW46InZhcmlhYmxlLnBhcmFtZXRlciIscmVnZXg6bH0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IlssIF0rIixtZXJnZTohMH0se3Rva2VuOiJwdW5jdHVhdGlvbi5vcGVyYXRvciIscmVnZXg6IiQiLG1lcmdlOiEwfSx7dG9rZW46ImVtcHR5IixyZWdleDoiIixuZXh0OiJzdGFydCJ9XSxjb21tZW50X3JlZ2V4X2FsbG93ZWQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbWVyZ2U6ITAsbmV4dDoicmVnZXhfYWxsb3dlZCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dLGNvbW1lbnQ6W3t0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qP1xcKlxcLyIsbWVyZ2U6ITAsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiIuKyJ9XSxxcXN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4OmN9LHt0b2tlbjoic3RyaW5nIixyZWdleDonW14iXFxcXF0rJyxtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXFxcJCIsbmV4dDoicXFzdHJpbmciLG1lcmdlOiEwfSx7dG9rZW46InN0cmluZyIscmVnZXg6JyJ8JCcsbmV4dDoic3RhcnQiLG1lcmdlOiEwfV0scXN0cmluZzpbe3Rva2VuOiJjb25zdGFudC5sYW5ndWFnZS5lc2NhcGUiLHJlZ2V4OmN9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiW14nXFxcXF0rIixtZXJnZTohMH0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJcXFxcJCIsbmV4dDoicXN0cmluZyIsbWVyZ2U6ITB9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJ3wkIixuZXh0OiJzdGFydCIsbWVyZ2U6ITB9XX0sdGhpcy5lbWJlZFJ1bGVzKG8sImRvYy0iLFtvLmdldEVuZFJ1bGUoInN0YXJ0IildKX07ci5pbmhlcml0cyhhLHUpLHQuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzPWF9KSxkZWZpbmUoImFjZS9tb2RlL2RvY19jb21tZW50X2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxzPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQuZG9jLnRhZyIscmVnZXg6IkBbXFx3XFxkX10rIn0se3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxccysifSx7dG9rZW46ImNvbW1lbnQuZG9jIixtZXJnZTohMCxyZWdleDoiVE9ETyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJbXkBcXCpdKyJ9LHt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiIuIn1dfX07ci5pbmhlcml0cyhzLGkpLHMuZ2V0U3RhcnRSdWxlPWZ1bmN0aW9uKGUpe3JldHVybnt0b2tlbjoiY29tbWVudC5kb2MiLG1lcmdlOiEwLHJlZ2V4OiJcXC9cXCooPz1cXCopIixuZXh0OmV9fSxzLmdldEVuZFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJue3Rva2VuOiJjb21tZW50LmRvYyIsbWVyZ2U6ITAscmVnZXg6IlxcKlxcLyIsbmV4dDplfX0sdC5Eb2NDb21tZW50SGlnaGxpZ2h0UnVsZXM9c30pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9yYW5nZSIpLlJhbmdlLGk9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuL15ccyskLy50ZXN0KGUpPy9eXHMqXH0vLnRlc3QodCk6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldExpbmUodCksaT1uLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFpKXJldHVybiAwO3ZhciBzPWlbMV0ubGVuZ3RoLG89ZS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dCxjb2x1bW46c30pO2lmKCFvfHxvLnJvdz09dClyZXR1cm4gMDt2YXIgdT10aGlzLiRnZXRJbmRlbnQoZS5nZXRMaW5lKG8ucm93KSk7ZS5yZXBsYWNlKG5ldyByKHQsMCx0LHMtMSksdSl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gdD90WzFdOiIifX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9aX0pLGRlZmluZSgiYWNlL21vZGUvZm9sZGluZy9jc3R5bGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9yYW5nZSIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2Uscz1lKCIuL2ZvbGRfbW9kZSIpLkZvbGRNb2RlLG89dC5Gb2xkTW9kZT1mdW5jdGlvbigpe307ci5pbmhlcml0cyhvLHMpLGZ1bmN0aW9uKCl7dGhpcy5mb2xkaW5nU3RhcnRNYXJrZXI9Lyhce3xcWylbXlx9XF1dKiR8XlxzKihcL1wqKS8sdGhpcy5mb2xkaW5nU3RvcE1hcmtlcj0vXlteXFtce10qKFx9fFxdKXxeW1xzXCpdKihcKlwvKS8sdGhpcy5nZXRGb2xkV2lkZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKSxzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIpO2lmKHMpe3ZhciBvPXMuaW5kZXg7aWYoc1sxXSlyZXR1cm4gdGhpcy5vcGVuaW5nQnJhY2tldEJsb2NrKGUsc1sxXSxuLG8pO3ZhciB1PWUuZ2V0Q29tbWVudEZvbGRSYW5nZShuLG8rc1swXS5sZW5ndGgpO3JldHVybiB1LmVuZC5jb2x1bW4tPTIsdX1pZih0IT09Im1hcmtiZWdpbmVuZCIpcmV0dXJuO3ZhciBzPXIubWF0Y2godGhpcy5mb2xkaW5nU3RvcE1hcmtlcik7aWYocyl7dmFyIG89cy5pbmRleCtzWzBdLmxlbmd0aDtpZihzWzJdKXt2YXIgdT1lLmdldENvbW1lbnRGb2xkUmFuZ2UobixvKTtyZXR1cm4gdS5lbmQuY29sdW1uLT0yLHV9dmFyIGE9e3JvdzpuLGNvbHVtbjpvfSxmPWUuJGZpbmRPcGVuaW5nQnJhY2tldChzWzFdLGEpO2lmKCFmKXJldHVybjtyZXR1cm4gZi5jb2x1bW4rKyxhLmNvbHVtbi0tLGkuZnJvbVBvaW50cyhmLGEpfX19LmNhbGwoby5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbW9kZS9zdmdfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9qYXZhc2NyaXB0X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL3htbF9oaWdobGlnaHRfcnVsZXMiLCJhY2UvbW9kZS94bWxfdXRpbCJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL2phdmFzY3JpcHRfaGlnaGxpZ2h0X3J1bGVzIikuSmF2YVNjcmlwdEhpZ2hsaWdodFJ1bGVzLHM9ZSgiLi94bWxfaGlnaGxpZ2h0X3J1bGVzIikuWG1sSGlnaGxpZ2h0UnVsZXMsbz1lKCIuL3htbF91dGlsIiksdT1mdW5jdGlvbigpe3MuY2FsbCh0aGlzKSx0aGlzLiRydWxlcy5zdGFydC5zcGxpY2UoMywwLHt0b2tlbjoibWV0YS50YWciLHJlZ2V4OiI8KD89cypzY3JpcHQpIixuZXh0OiJzY3JpcHQifSksby50YWcodGhpcy4kcnVsZXMsInNjcmlwdCIsImpzLXN0YXJ0IiksdGhpcy5lbWJlZFJ1bGVzKGksImpzLSIsW3t0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcL1xcLy4qKD89PFxcL3NjcmlwdD4pIixuZXh0OiJ0YWcifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiPFxcLyg/PXNjcmlwdCkiLG5leHQ6InRhZyJ9XSl9O3IuaW5oZXJpdHModSxzKSx0LlN2Z0hpZ2hsaWdodFJ1bGVzPXV9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvbWl4ZWQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUscz10LkZvbGRNb2RlPWZ1bmN0aW9uKGUsdCl7dGhpcy5kZWZhdWx0TW9kZT1lLHRoaXMuc3ViTW9kZXM9dH07ci5pbmhlcml0cyhzLGkpLGZ1bmN0aW9uKCl7dGhpcy4kZ2V0TW9kZT1mdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gdGhpcy5zdWJNb2RlcylpZihlLmluZGV4T2YodCk9PT0wKXJldHVybiB0aGlzLnN1Yk1vZGVzW3RdO3JldHVybiBudWxsfSx0aGlzLiR0cnlNb2RlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRoaXMuJGdldE1vZGUoZSk7cmV0dXJuIGk/aS5nZXRGb2xkV2lkZ2V0KHQsbixyKToiIn0sdGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy4kdHJ5TW9kZShlLmdldFN0YXRlKG4tMSksZSx0LG4pfHx0aGlzLiR0cnlNb2RlKGUuZ2V0U3RhdGUobiksZSx0LG4pfHx0aGlzLmRlZmF1bHRNb2RlLmdldEZvbGRXaWRnZXQoZSx0LG4pfSx0aGlzLmdldEZvbGRXaWRnZXRSYW5nZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy4kZ2V0TW9kZShlLmdldFN0YXRlKG4tMSkpO2lmKCFyfHwhci5nZXRGb2xkV2lkZ2V0KGUsdCxuKSlyPXRoaXMuJGdldE1vZGUoZS5nZXRTdGF0ZShuKSk7aWYoIXJ8fCFyLmdldEZvbGRXaWRnZXQoZSx0LG4pKXI9dGhpcy5kZWZhdWx0TW9kZTtyZXR1cm4gci5nZXRGb2xkV2lkZ2V0UmFuZ2UoZSx0LG4pfX0uY2FsbChzLnByb3RvdHlwZSl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-text.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-textile.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS90ZXh0aWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3RleHRpbGVfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi90ZXh0aWxlX2hpZ2hsaWdodF9ydWxlcyIpLlRleHRpbGVIaWdobGlnaHRSdWxlcyx1PWUoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGE9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyB1fTtyLmluaGVyaXRzKGEsaSksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT09ImludGFnIj9uOiIifSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KHQsbil9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQodCxuKX19LmNhbGwoYS5wcm90b3R5cGUpLHQuTW9kZT1hfSksZGVmaW5lKCJhY2UvbW9kZS90ZXh0aWxlX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxzPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWF0Y2goL15oXGQkLyk/Im1hcmt1cC5oZWFkaW5nLiIrZS5jaGFyQXQoMSk6Im1hcmt1cC5oZWFkaW5nIn0scmVnZXg6ImgxfGgyfGgzfGg0fGg1fGg2fGJxfHB8YmN8cHJlIixuZXh0OiJibG9ja3RhZyJ9LHt0b2tlbjoia2V5d29yZCIscmVnZXg6IltcXCpdK3xbI10rIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiLisifV0sYmxvY2t0YWc6W3t0b2tlbjoia2V5d29yZCIscmVnZXg6IlxcLiAiLG5leHQ6InN0YXJ0In0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiXFwoIixuZXh0OiJibG9ja3RhZ3Byb3BlcnRpZXMifV0sYmxvY2t0YWdwcm9wZXJ0aWVzOlt7dG9rZW46ImtleXdvcmQiLHJlZ2V4OiJcXCkiLG5leHQ6ImJsb2NrdGFnIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbYS16QS1aMC05XFwtX10rIn0se3Rva2VuOiJrZXl3b3JkIixyZWdleDoiIyJ9XX19O3IuaW5oZXJpdHMocyxpKSx0LlRleHRpbGVIaWdobGlnaHRSdWxlcz1zfSksZGVmaW5lKCJhY2UvbW9kZS9tYXRjaGluZ19icmFjZV9vdXRkZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL3JhbmdlIikuUmFuZ2UsaT1mdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7dGhpcy5jaGVja091dGRlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4vXlxzKyQvLnRlc3QoZSk/L15ccypcfS8udGVzdCh0KTohMX0sdGhpcy5hdXRvT3V0ZGVudD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0TGluZSh0KSxpPW4ubWF0Y2goL14oXHMqXH0pLyk7aWYoIWkpcmV0dXJuIDA7dmFyIHM9aVsxXS5sZW5ndGgsbz1lLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp0LGNvbHVtbjpzfSk7aWYoIW98fG8ucm93PT10KXJldHVybiAwO3ZhciB1PXRoaXMuJGdldEluZGVudChlLmdldExpbmUoby5yb3cpKTtlLnJlcGxhY2UobmV3IHIodCwwLHQscy0xKSx1KX0sdGhpcy4kZ2V0SW5kZW50PWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14oXHMrKS8pO3JldHVybiB0P3RbMV06IiJ9fSkuY2FsbChpLnByb3RvdHlwZSksdC5NYXRjaGluZ0JyYWNlT3V0ZGVudD1pfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-xml.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS94bWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUveG1sX2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2JlaGF2aW91ci94bWwiLCJhY2UvbW9kZS9mb2xkaW5nL3htbCJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi94bWxfaGlnaGxpZ2h0X3J1bGVzIikuWG1sSGlnaGxpZ2h0UnVsZXMsdT1lKCIuL2JlaGF2aW91ci94bWwiKS5YbWxCZWhhdmlvdXIsYT1lKCIuL2ZvbGRpbmcveG1sIikuRm9sZE1vZGUsZj1mdW5jdGlvbigpe3RoaXMuJHRva2VuaXplcj1uZXcgcygobmV3IG8pLmdldFJ1bGVzKCkpLHRoaXMuJGJlaGF2aW91cj1uZXcgdSx0aGlzLmZvbGRpbmdSdWxlcz1uZXcgYX07ci5pbmhlcml0cyhmLGkpLGZ1bmN0aW9uKCl7dGhpcy5nZXROZXh0TGluZUluZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJGdldEluZGVudCh0KX19LmNhbGwoZi5wcm90b3R5cGUpLHQuTW9kZT1mfSksZGVmaW5lKCJhY2UvbW9kZS94bWxfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS94bWxfdXRpbCIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4veG1sX3V0aWwiKSxzPWUoIi4vdGV4dF9oaWdobGlnaHRfcnVsZXMiKS5UZXh0SGlnaGxpZ2h0UnVsZXMsbz1mdW5jdGlvbigpe3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJ0ZXh0IixyZWdleDoiPFxcIVxcW0NEQVRBXFxbIixuZXh0OiJjZGF0YSJ9LHt0b2tlbjoieG1sX3BlIixyZWdleDoiPFxcPy4qP1xcPz4ifSx7dG9rZW46ImNvbW1lbnQiLG1lcmdlOiEwLHJlZ2V4OiI8XFwhLS0iLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InhtbF9wZSIscmVnZXg6IjxcXCEuKj8+In0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IjxcXC8/IixuZXh0OiJ0YWcifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb25zdGFudC5jaGFyYWN0ZXIuZW50aXR5IixyZWdleDoiKD86JiNbMC05XSs7KXwoPzomI3hbMC05YS1mQS1GXSs7KXwoPzomW2EtekEtWjAtOV86XFwuLV0rOykifSx7dG9rZW46InRleHQiLHJlZ2V4OiJbXjxdKyJ9XSxjZGF0YTpbe3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxdXFxdPiIsbmV4dDoic3RhcnQifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiKD86W15cXF1dfFxcXSg/IVxcXT4pKSsifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/LS0+IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIsbWVyZ2U6ITAscmVnZXg6Ii4rIn1dfSxpLnRhZyh0aGlzLiRydWxlcywidGFnIiwic3RhcnQiKX07ci5pbmhlcml0cyhvLHMpLHQuWG1sSGlnaGxpZ2h0UnVsZXM9b30pLGRlZmluZSgiYWNlL21vZGUveG1sX3V0aWwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXtyZXR1cm5be3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciLio/Iid9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDonWyJdLionLG5leHQ6ZSsiX3Fxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInLio/JyJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiWyddLioiLG5leHQ6ZSsiX3FzdHJpbmcifV19ZnVuY3Rpb24gaShlLHQpe3JldHVyblt7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6Ii4qPyIrZSxuZXh0OnR9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV19dC50YWc9ZnVuY3Rpb24oZSx0LG4scyl7ZVt0XT1be3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjpmdW5jdGlvbihlKXtyZXR1cm4gcyYmc1tlXT8ibWV0YS50YWcudGFnLW5hbWUuIitzW2VdOiJtZXRhLnRhZy50YWctbmFtZSJ9LG1lcmdlOiEwLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsiLG5leHQ6dCsiX2VtYmVkX2F0dHJpYnV0ZV9saXN0In0se3Rva2VuOiJlbXB0eSIscmVnZXg6IiIsbmV4dDp0KyJfZW1iZWRfYXR0cmlidXRlX2xpc3QifV0sZVt0KyJfcXN0cmluZyJdPWkoIiciLHQrIl9lbWJlZF9hdHRyaWJ1dGVfbGlzdCIpLGVbdCsiX3Fxc3RyaW5nIl09aSgnIicsdCsiX2VtYmVkX2F0dHJpYnV0ZV9saXN0IiksZVt0KyJfZW1iZWRfYXR0cmlidXRlX2xpc3QiXT1be3Rva2VuOiJtZXRhLnRhZyIsbWVyZ2U6ITAscmVnZXg6Ii8/PiIsbmV4dDpufSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiI9In0se3Rva2VuOiJlbnRpdHkub3RoZXIuYXR0cmlidXRlLW5hbWUiLHJlZ2V4OiJbLV9hLXpBLVowLTk6XSsifSx7dG9rZW46ImNvbnN0YW50Lm51bWVyaWMiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifV0uY29uY2F0KHIodCkpfX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL3htbCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIiwiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsImFjZS90b2tlbl9pdGVyYXRvciJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiB1KGUsdCl7dmFyIG49ITAscj1lLnR5cGUuc3BsaXQoIi4iKSxpPXQuc3BsaXQoIi4iKTtyZXR1cm4gaS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKHIuaW5kZXhPZihlKT09LTEpcmV0dXJuIG49ITEsITF9KSxufXZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixzPWUoIi4vY3N0eWxlIikuQ3N0eWxlQmVoYXZpb3VyLG89ZSgiLi4vLi4vdG9rZW5faXRlcmF0b3IiKS5Ub2tlbkl0ZXJhdG9yLGE9ZnVuY3Rpb24oKXt0aGlzLmluaGVyaXQocyxbInN0cmluZ19kcXVvdGVzIl0pLHRoaXMuYWRkKCJhdXRvY2xvc2luZyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iPiIpe3ZhciBzPW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPW5ldyBvKHIscy5yb3cscy5jb2x1bW4pLGY9YS5nZXRDdXJyZW50VG9rZW4oKSxsPSExO2lmKCFmfHwhdShmLCJtZXRhLnRhZyIpJiYoIXUoZiwidGV4dCIpfHwhZi52YWx1ZS5tYXRjaCgiLyIpKSl7ZG8gZj1hLnN0ZXBCYWNrd2FyZCgpO3doaWxlKGYmJih1KGYsInN0cmluZyIpfHx1KGYsImtleXdvcmQub3BlcmF0b3IiKXx8dShmLCJlbnRpdHkuYXR0cmlidXRlLW5hbWUiKXx8dShmLCJ0ZXh0IikpKX1lbHNlIGw9ITA7aWYoIWZ8fCF1KGYsIm1ldGEudGFnLW5hbWUiKXx8YS5zdGVwQmFja3dhcmQoKS52YWx1ZS5tYXRjaCgiLyIpKXJldHVybjt2YXIgYz1mLnZhbHVlO2lmKGwpdmFyIGM9Yy5zdWJzdHJpbmcoMCxzLmNvbHVtbi1mLnN0YXJ0KTtyZXR1cm57dGV4dDoiPjwvIitjKyI+IixzZWxlY3Rpb246WzEsMV19fX0pLHRoaXMuYWRkKCJhdXRvaW5kZW50IiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSJcbiIpe3ZhciBzPW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxvPXIuZG9jLmdldExpbmUocy5yb3cpLHU9by5zdWJzdHJpbmcocy5jb2x1bW4scy5jb2x1bW4rMik7aWYodT09IjwvIil7dmFyIGE9dGhpcy4kZ2V0SW5kZW50KHIuZG9jLmdldExpbmUocy5yb3cpKStyLmdldFRhYlN0cmluZygpLGY9dGhpcy4kZ2V0SW5kZW50KHIuZG9jLmdldExpbmUocy5yb3cpKTtyZXR1cm57dGV4dDoiXG4iK2ErIlxuIitmLHNlbGVjdGlvbjpbMSxhLmxlbmd0aCwxLGEubGVuZ3RoXX19fX0pfTtyLmluaGVyaXRzKGEsaSksdC5YbWxCZWhhdmlvdXI9YX0pLGRlZmluZSgiYWNlL21vZGUvYmVoYXZpb3VyL2NzdHlsZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvYmVoYXZpb3VyIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL2xpYi9vb3AiKSxpPWUoIi4uL2JlaGF2aW91ciIpLkJlaGF2aW91cixzPWZ1bmN0aW9uKCl7dGhpcy5hZGQoImJyYWNlcyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0ieyIpe3ZhciBzPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSxvPXIuZG9jLmdldFRleHRSYW5nZShzKTtyZXR1cm4gbyE9PSIiP3t0ZXh0OiJ7IitvKyJ9IixzZWxlY3Rpb246ITF9Ont0ZXh0OiJ7fSIsc2VsZWN0aW9uOlsxLDFdfX1pZihpPT0ifSIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09In0iKXt2YXIgbD1yLiRmaW5kT3BlbmluZ0JyYWNrZXQoIn0iLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihsIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX1lbHNlIGlmKGk9PSJcbiIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09In0iKXt2YXIgYz1yLmZpbmRNYXRjaGluZ0JyYWNrZXQoe3Jvdzp1LnJvdyxjb2x1bW46dS5jb2x1bW4rMX0pO2lmKCFjKXJldHVybiBudWxsO3ZhciBoPXRoaXMuZ2V0TmV4dExpbmVJbmRlbnQoZSxhLnN1YnN0cmluZygwLGEubGVuZ3RoLTEpLHIuZ2V0VGFiU3RyaW5nKCkpLHA9dGhpcy4kZ2V0SW5kZW50KHIuZG9jLmdldExpbmUoYy5yb3cpKTtyZXR1cm57dGV4dDoiXG4iK2grIlxuIitwLHNlbGVjdGlvbjpbMSxoLmxlbmd0aCwxLGgubGVuZ3RoXX19fX0pLHRoaXMuYWRkKCJicmFjZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmcz09InsiKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuZW5kLmNvbHVtbixpLmVuZC5jb2x1bW4rMSk7aWYodT09In0iKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pLHRoaXMuYWRkKCJwYXJlbnMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09IigiKXt2YXIgcz1uLmdldFNlbGVjdGlvblJhbmdlKCksbz1yLmRvYy5nZXRUZXh0UmFuZ2Uocyk7cmV0dXJuIG8hPT0iIj97dGV4dDoiKCIrbysiKSIsc2VsZWN0aW9uOiExfTp7dGV4dDoiKCkiLHNlbGVjdGlvbjpbMSwxXX19aWYoaT09IikiKXt2YXIgdT1uLmdldEN1cnNvclBvc2l0aW9uKCksYT1yLmRvYy5nZXRMaW5lKHUucm93KSxmPWEuc3Vic3RyaW5nKHUuY29sdW1uLHUuY29sdW1uKzEpO2lmKGY9PSIpIil7dmFyIGw9ci4kZmluZE9wZW5pbmdCcmFja2V0KCIpIix7Y29sdW1uOnUuY29sdW1uKzEscm93OnUucm93fSk7aWYobCE9PW51bGwpcmV0dXJue3RleHQ6IiIsc2VsZWN0aW9uOlsxLDFdfX19fSksdGhpcy5hZGQoInBhcmVucyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiZzPT0iKCIpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5zdGFydC5jb2x1bW4rMSxpLnN0YXJ0LmNvbHVtbisyKTtpZih1PT0iKSIpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSksdGhpcy5hZGQoInN0cmluZ19kcXVvdGVzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSciJ3x8aT09IiciKXt2YXIgcz1pLG89bi5nZXRTZWxlY3Rpb25SYW5nZSgpLHU9ci5kb2MuZ2V0VGV4dFJhbmdlKG8pO2lmKHUhPT0iIilyZXR1cm57dGV4dDpzK3UrcyxzZWxlY3Rpb246ITF9O3ZhciBhPW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxmPXIuZG9jLmdldExpbmUoYS5yb3cpLGw9Zi5zdWJzdHJpbmcoYS5jb2x1bW4tMSxhLmNvbHVtbik7aWYobD09IlxcIilyZXR1cm4gbnVsbDt2YXIgYz1yLmdldFRva2VucyhvLnN0YXJ0LnJvdyksaD0wLHAsZD0tMTtmb3IodmFyIHY9MDt2PGMubGVuZ3RoO3YrKyl7cD1jW3ZdLHAudHlwZT09InN0cmluZyI/ZD0tMTpkPDAmJihkPXAudmFsdWUuaW5kZXhPZihzKSk7aWYocC52YWx1ZS5sZW5ndGgraD5vLnN0YXJ0LmNvbHVtbilicmVhaztoKz1jW3ZdLnZhbHVlLmxlbmd0aH1pZighcHx8ZDwwJiZwLnR5cGUhPT0iY29tbWVudCImJihwLnR5cGUhPT0ic3RyaW5nInx8by5zdGFydC5jb2x1bW4hPT1wLnZhbHVlLmxlbmd0aCtoLTEmJnAudmFsdWUubGFzdEluZGV4T2Yocyk9PT1wLnZhbHVlLmxlbmd0aC0xKSlyZXR1cm57dGV4dDpzK3Msc2VsZWN0aW9uOlsxLDFdfTtpZihwJiZwLnR5cGU9PT0ic3RyaW5nIil7dmFyIG09Zi5zdWJzdHJpbmcoYS5jb2x1bW4sYS5jb2x1bW4rMSk7aWYobT09cylyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJkZWxldGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1yLmRvYy5nZXRUZXh0UmFuZ2UoaSk7aWYoIWkuaXNNdWx0aUxpbmUoKSYmKHM9PSciJ3x8cz09IiciKSl7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLnN0YXJ0LmNvbHVtbisxLGkuc3RhcnQuY29sdW1uKzIpO2lmKHU9PSciJylyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KX07ci5pbmhlcml0cyhzLGkpLHQuQ3N0eWxlQmVoYXZpb3VyPXN9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcveG1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvcmFuZ2UiLCJhY2UvbW9kZS9mb2xkaW5nL2ZvbGRfbW9kZSIsImFjZS90b2tlbl9pdGVyYXRvciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi8uLi9saWIvb29wIiksaT1lKCIuLi8uLi9saWIvbGFuZyIpLHM9ZSgiLi4vLi4vcmFuZ2UiKS5SYW5nZSxvPWUoIi4vZm9sZF9tb2RlIikuRm9sZE1vZGUsdT1lKCIuLi8uLi90b2tlbl9pdGVyYXRvciIpLlRva2VuSXRlcmF0b3IsYT10LkZvbGRNb2RlPWZ1bmN0aW9uKGUpe28uY2FsbCh0aGlzKSx0aGlzLnZvaWRFbGVtZW50cz1lfHx7fX07ci5pbmhlcml0cyhhLG8pLGZ1bmN0aW9uKCl7dGhpcy5nZXRGb2xkV2lkZ2V0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9nZXRGaXJzdFRhZ0luTGluZShlLG4pO3JldHVybiByLmNsb3Npbmc/dD09Im1hcmtiZWdpbmVuZCI/ImVuZCI6IiI6IXIudGFnTmFtZXx8dGhpcy52b2lkRWxlbWVudHNbci50YWdOYW1lLnRvTG93ZXJDYXNlKCldPyIiOnIuc2VsZkNsb3Npbmc/IiI6ci52YWx1ZS5pbmRleE9mKCIvIityLnRhZ05hbWUpIT09LTE/IiI6InN0YXJ0In0sdGhpcy5fZ2V0Rmlyc3RUYWdJbkxpbmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldFRva2Vucyh0KSxyPSIiO2Zvcih2YXIgcz0wO3M8bi5sZW5ndGg7cysrKXt2YXIgbz1uW3NdO28udHlwZS5pbmRleE9mKCJtZXRhLnRhZyIpPT09MD9yKz1vLnZhbHVlOnIrPWkuc3RyaW5nUmVwZWF0KCIgIixvLnZhbHVlLmxlbmd0aCl9cmV0dXJuIHRoaXMuX3BhcnNlVGFnKHIpfSx0aGlzLnRhZ1JlPS9eKFxzKikoPD8oXC8/KShbLV9hLXpBLVowLTk6IV0qKVxzKihcLz8pPj8pLyx0aGlzLl9wYXJzZVRhZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnRhZ1JlLmV4ZWMoZSksbj10aGlzLnRhZ1JlLmxhc3RJbmRleHx8MDtyZXR1cm4gdGhpcy50YWdSZS5sYXN0SW5kZXg9MCx7dmFsdWU6ZSxtYXRjaDp0P3RbMl06IiIsY2xvc2luZzp0PyEhdFszXTohMSxzZWxmQ2xvc2luZzp0PyEhdFs1XXx8dFsyXT09Ii8+IjohMSx0YWdOYW1lOnQ/dFs0XToiIixjb2x1bW46dFsxXT9uK3RbMV0ubGVuZ3RoOm59fSx0aGlzLl9yZWFkVGFnRm9yd2FyZD1mdW5jdGlvbihlKXt2YXIgdD1lLmdldEN1cnJlbnRUb2tlbigpO2lmKCF0KXJldHVybiBudWxsO3ZhciBuPSIiLHI7ZG8gaWYodC50eXBlLmluZGV4T2YoIm1ldGEudGFnIik9PT0wKXtpZighcil2YXIgcj17cm93OmUuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmUuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCl9O24rPXQudmFsdWU7aWYobi5pbmRleE9mKCI+IikhPT0tMSl7dmFyIGk9dGhpcy5fcGFyc2VUYWcobik7cmV0dXJuIGkuc3RhcnQ9cixpLmVuZD17cm93OmUuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmUuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCkrdC52YWx1ZS5sZW5ndGh9LGUuc3RlcEZvcndhcmQoKSxpfX13aGlsZSh0PWUuc3RlcEZvcndhcmQoKSk7cmV0dXJuIG51bGx9LHRoaXMuX3JlYWRUYWdCYWNrd2FyZD1mdW5jdGlvbihlKXt2YXIgdD1lLmdldEN1cnJlbnRUb2tlbigpO2lmKCF0KXJldHVybiBudWxsO3ZhciBuPSIiLHI7ZG8gaWYodC50eXBlLmluZGV4T2YoIm1ldGEudGFnIik9PT0wKXtyfHwocj17cm93OmUuZ2V0Q3VycmVudFRva2VuUm93KCksY29sdW1uOmUuZ2V0Q3VycmVudFRva2VuQ29sdW1uKCkrdC52YWx1ZS5sZW5ndGh9KSxuPXQudmFsdWUrbjtpZihuLmluZGV4T2YoIjwiKSE9PS0xKXt2YXIgaT10aGlzLl9wYXJzZVRhZyhuKTtyZXR1cm4gaS5lbmQ9cixpLnN0YXJ0PXtyb3c6ZS5nZXRDdXJyZW50VG9rZW5Sb3coKSxjb2x1bW46ZS5nZXRDdXJyZW50VG9rZW5Db2x1bW4oKX0sZS5zdGVwQmFja3dhcmQoKSxpfX13aGlsZSh0PWUuc3RlcEJhY2t3YXJkKCkpO3JldHVybiBudWxsfSx0aGlzLl9wb3A9ZnVuY3Rpb24oZSx0KXt3aGlsZShlLmxlbmd0aCl7dmFyIG49ZVtlLmxlbmd0aC0xXTtpZighdHx8bi50YWdOYW1lPT10LnRhZ05hbWUpcmV0dXJuIGUucG9wKCk7aWYodGhpcy52b2lkRWxlbWVudHNbdC50YWdOYW1lXSlyZXR1cm47aWYodGhpcy52b2lkRWxlbWVudHNbbi50YWdOYW1lXSl7ZS5wb3AoKTtjb250aW51ZX1yZXR1cm4gbnVsbH19LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9nZXRGaXJzdFRhZ0luTGluZShlLG4pO2lmKCFyLm1hdGNoKXJldHVybiBudWxsO3ZhciBpPXIuY2xvc2luZ3x8ci5zZWxmQ2xvc2luZyxvPVtdLGE7aWYoIWkpe3ZhciBmPW5ldyB1KGUsbixyLmNvbHVtbiksbD17cm93Om4sY29sdW1uOnIuY29sdW1uK3IudGFnTmFtZS5sZW5ndGgrMn07d2hpbGUoYT10aGlzLl9yZWFkVGFnRm9yd2FyZChmKSl7aWYoYS5zZWxmQ2xvc2luZyl7aWYoIW8ubGVuZ3RoKXJldHVybiBhLnN0YXJ0LmNvbHVtbis9YS50YWdOYW1lLmxlbmd0aCsyLGEuZW5kLmNvbHVtbi09MixzLmZyb21Qb2ludHMoYS5zdGFydCxhLmVuZCk7Y29udGludWV9aWYoYS5jbG9zaW5nKXt0aGlzLl9wb3AobyxhKTtpZihvLmxlbmd0aD09MClyZXR1cm4gcy5mcm9tUG9pbnRzKGwsYS5zdGFydCl9ZWxzZSBvLnB1c2goYSl9fWVsc2V7dmFyIGY9bmV3IHUoZSxuLHIuY29sdW1uK3IubWF0Y2gubGVuZ3RoKSxjPXtyb3c6bixjb2x1bW46ci5jb2x1bW59O3doaWxlKGE9dGhpcy5fcmVhZFRhZ0JhY2t3YXJkKGYpKXtpZihhLnNlbGZDbG9zaW5nKXtpZighby5sZW5ndGgpcmV0dXJuIGEuc3RhcnQuY29sdW1uKz1hLnRhZ05hbWUubGVuZ3RoKzIsYS5lbmQuY29sdW1uLT0yLHMuZnJvbVBvaW50cyhhLnN0YXJ0LGEuZW5kKTtjb250aW51ZX1pZighYS5jbG9zaW5nKXt0aGlzLl9wb3AobyxhKTtpZihvLmxlbmd0aD09MClyZXR1cm4gYS5zdGFydC5jb2x1bW4rPWEudGFnTmFtZS5sZW5ndGgrMixzLmZyb21Qb2ludHMoYS5zdGFydCxjKX1lbHNlIG8ucHVzaChhKX19fX0uY2FsbChhLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9tb2RlL2ZvbGRpbmcvZm9sZF9tb2RlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL3JhbmdlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uLy4uL3JhbmdlIikuUmFuZ2UsaT10LkZvbGRNb2RlPWZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt0aGlzLmZvbGRpbmdTdGFydE1hcmtlcj1udWxsLHRoaXMuZm9sZGluZ1N0b3BNYXJrZXI9bnVsbCx0aGlzLmdldEZvbGRXaWRnZXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0TGluZShuKTtyZXR1cm4gdGhpcy5mb2xkaW5nU3RhcnRNYXJrZXIudGVzdChyKT8ic3RhcnQiOnQ9PSJtYXJrYmVnaW5lbmQiJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyJiZ0aGlzLmZvbGRpbmdTdG9wTWFya2VyLnRlc3Qocik/ImVuZCI6IiJ9LHRoaXMuZ2V0Rm9sZFdpZGdldFJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbH0sdGhpcy5pbmRlbnRhdGlvbkJsb2NrPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT0vXFMvLHM9ZS5nZXRMaW5lKHQpLG89cy5zZWFyY2goaSk7aWYobz09LTEpcmV0dXJuO3ZhciB1PW58fHMubGVuZ3RoLGE9ZS5nZXRMZW5ndGgoKSxmPXQsbD10O3doaWxlKCsrdDxhKXt2YXIgYz1lLmdldExpbmUodCkuc2VhcmNoKGkpO2lmKGM9PS0xKWNvbnRpbnVlO2lmKGM8PW8pYnJlYWs7bD10fWlmKGw+Zil7dmFyIGg9ZS5nZXRMaW5lKGwpLmxlbmd0aDtyZXR1cm4gbmV3IHIoZix1LGwsaCl9fSx0aGlzLm9wZW5pbmdCcmFja2V0QmxvY2s9ZnVuY3Rpb24oZSx0LG4saSxzKXt2YXIgbz17cm93Om4sY29sdW1uOmkrMX0sdT1lLiRmaW5kQ2xvc2luZ0JyYWNrZXQodCxvLHMpO2lmKCF1KXJldHVybjt2YXIgYT1lLmZvbGRXaWRnZXRzW3Uucm93XTtyZXR1cm4gYT09bnVsbCYmKGE9dGhpcy5nZXRGb2xkV2lkZ2V0KGUsdS5yb3cpKSxhPT0ic3RhcnQiJiZ1LnJvdz5vLnJvdyYmKHUucm93LS0sdS5jb2x1bW49ZS5nZXRMaW5lKHUucm93KS5sZW5ndGgpLHIuZnJvbVBvaW50cyhvLHUpfX0pLmNhbGwoaS5wcm90b3R5cGUpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-xquery.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS94cXVlcnkiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2Uvd29ya2VyL3dvcmtlcl9jbGllbnQiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL3RleHQiLCJhY2UvdG9rZW5pemVyIiwiYWNlL21vZGUveHF1ZXJ5X2hpZ2hsaWdodF9ydWxlcyIsImFjZS9tb2RlL2JlaGF2aW91ci94cXVlcnkiLCJhY2UvcmFuZ2UiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vd29ya2VyL3dvcmtlcl9jbGllbnQiKS5Xb3JrZXJDbGllbnQsaT1lKCIuLi9saWIvb29wIikscz1lKCIuL3RleHQiKS5Nb2RlLG89ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLHU9ZSgiLi94cXVlcnlfaGlnaGxpZ2h0X3J1bGVzIikuWFF1ZXJ5SGlnaGxpZ2h0UnVsZXMsYT1lKCIuL2JlaGF2aW91ci94cXVlcnkiKS5YUXVlcnlCZWhhdmlvdXIsZj1lKCIuLi9yYW5nZSIpLlJhbmdlLGw9ZnVuY3Rpb24oZSl7dGhpcy4kdG9rZW5pemVyPW5ldyBvKChuZXcgdSkuZ2V0UnVsZXMoKSksdGhpcy4kYmVoYXZpb3VyPW5ldyBhKGUpfTtpLmluaGVyaXRzKGwscyksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRnZXRJbmRlbnQodCksaT10Lm1hdGNoKC9ccyooPzp0aGVufGVsc2V8cmV0dXJufFt7XChdfDxcdys+KVxzKiQvKTtyZXR1cm4gaSYmKHIrPW4pLHJ9LHRoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4vXlxzKyQvLnRlc3QodCk/L15ccypbXH1cKV0vLnRlc3Qobik6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQuZ2V0TGluZShuKSxpPXIubWF0Y2goL14oXHMqW1x9XCldKS8pO2lmKCFpKXJldHVybiAwO3ZhciBzPWlbMV0ubGVuZ3RoLG89dC5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6bixjb2x1bW46c30pO2lmKCFvfHxvLnJvdz09bilyZXR1cm4gMDt2YXIgdT10aGlzLiRnZXRJbmRlbnQodC5nZXRMaW5lKG8ucm93KSk7dC5yZXBsYWNlKG5ldyBmKG4sMCxuLHMtMSksdSl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gdD90WzFdOiIifSx0aGlzLnRvZ2dsZUNvbW1lbnRMaW5lcz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxzLG89ITAsdT0vXlxzKlwoOiguKik6XCkvO2ZvcihpPW47aTw9cjtpKyspaWYoIXUudGVzdCh0LmdldExpbmUoaSkpKXtvPSExO2JyZWFrfXZhciBhPW5ldyBmKDAsMCwwLDApO2ZvcihpPW47aTw9cjtpKyspcz10LmdldExpbmUoaSksYS5zdGFydC5yb3c9aSxhLmVuZC5yb3c9aSxhLmVuZC5jb2x1bW49cy5sZW5ndGgsdC5yZXBsYWNlKGEsbz9zLm1hdGNoKHUpWzFdOiIoOiIrcysiOikiKX0sdGhpcy5jcmVhdGVXb3JrZXI9ZnVuY3Rpb24oZSl7dGhpcy4kZGVsdGFzPVtdO3ZhciB0PW5ldyByKFsiYWNlIl0sImFjZS9tb2RlL3hxdWVyeV93b3JrZXIiLCJYUXVlcnlXb3JrZXIiKSxuPXRoaXM7cmV0dXJuIGUuZ2V0RG9jdW1lbnQoKS5vbigiY2hhbmdlIixmdW5jdGlvbihlKXtuLiRkZWx0YXMucHVzaChlLmRhdGEpfSksdC5hdHRhY2hUb0RvY3VtZW50KGUuZ2V0RG9jdW1lbnQoKSksdC5vbigic3RhcnQiLGZ1bmN0aW9uKGUpe24uJGRlbHRhcz1bXX0pLHQub24oImVycm9yIixmdW5jdGlvbih0KXtlLnNldEFubm90YXRpb25zKFt0LmRhdGFdKX0pLHQub24oIm9rIixmdW5jdGlvbih0KXtlLmNsZWFyQW5ub3RhdGlvbnMoKX0pLHQub24oImhpZ2hsaWdodCIsZnVuY3Rpb24odCl7dmFyIHI9MCxpPWUuZ2V0TGVuZ3RoKCktMSxzPXQuZGF0YS5saW5lcyxvPXQuZGF0YS5zdGF0ZXM7Zm9yKHZhciB1PTA7dTxuLiRkZWx0YXMubGVuZ3RoO3UrKyl7dmFyIGE9bi4kZGVsdGFzW3VdO2lmKGEuYWN0aW9uPT09Imluc2VydExpbmVzIil7dmFyIGY9YS5saW5lcy5sZW5ndGg7Zm9yKHZhciB1PTA7dTxmO3UrKylzLnNwbGljZShhLnJhbmdlLnN0YXJ0LnJvdyt1LDAsdW5kZWZpbmVkKSxvLnNwbGljZShhLnJhbmdlLnN0YXJ0LnJvdyt1LDAsdW5kZWZpbmVkKX1lbHNlIGlmKGEuYWN0aW9uPT09Imluc2VydFRleHQiKWUuZ2V0RG9jdW1lbnQoKS5pc05ld0xpbmUoYS50ZXh0KT8ocy5zcGxpY2UoYS5yYW5nZS5lbmQucm93LDAsdW5kZWZpbmVkKSxvLnNwbGljZShhLnJhbmdlLmVuZC5yb3csMCx1bmRlZmluZWQpKTooc1thLnJhbmdlLnN0YXJ0LnJvd109dW5kZWZpbmVkLG9bYS5yYW5nZS5zdGFydC5yb3ddPXVuZGVmaW5lZCk7ZWxzZSBpZihhLmFjdGlvbj09PSJyZW1vdmVMaW5lcyIpe3ZhciBsPWEubGluZXMubGVuZ3RoO3Muc3BsaWNlKGEucmFuZ2Uuc3RhcnQucm93LGwpLG8uc3BsaWNlKGEucmFuZ2Uuc3RhcnQucm93LGwpfWVsc2UgYS5hY3Rpb249PT0icmVtb3ZlVGV4dCImJihlLmdldERvY3VtZW50KCkuaXNOZXdMaW5lKGEudGV4dCk/KHNbYS5yYW5nZS5zdGFydC5yb3ddPXVuZGVmaW5lZCxzLnNwbGljZShhLnJhbmdlLmVuZC5yb3csMSksb1thLnJhbmdlLnN0YXJ0LnJvd109dW5kZWZpbmVkLG8uc3BsaWNlKGEucmFuZ2UuZW5kLnJvdywxKSk6KHNbYS5yYW5nZS5zdGFydC5yb3ddPXVuZGVmaW5lZCxvW2EucmFuZ2Uuc3RhcnQucm93XT11bmRlZmluZWQpKX1lLmJnVG9rZW5pemVyLmxpbmVzPXMsZS5iZ1Rva2VuaXplci5zdGF0ZXM9byxlLmJnVG9rZW5pemVyLmZpcmVVcGRhdGVFdmVudChyLGkpfSksdH19LmNhbGwobC5wcm90b3R5cGUpLHQuTW9kZT1sfSksZGVmaW5lKCJhY2UvbW9kZS94cXVlcnlfaGlnaGxpZ2h0X3J1bGVzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2xhbmciLCJhY2UvbW9kZS90ZXh0X2hpZ2hsaWdodF9ydWxlcyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi9saWIvbGFuZyIpLHM9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxvPWZ1bmN0aW9uKCl7dmFyIGU9aS5hcnJheVRvTWFwKCJhZnRlcnxhbmNlc3RvcnxhbmNlc3Rvci1vci1zZWxmfGFuZHxhc3xhc2NlbmRpbmd8YXR0cmlidXRlfGJlZm9yZXxjYXNlfGNhc3R8Y2FzdGFibGV8Y2hpbGR8Y29sbGF0aW9ufGNvbW1lbnR8Y29weXxjb3VudHxkZWNsYXJlfGRlZmF1bHR8ZGVsZXRlfGRlc2NlbmRhbnR8ZGVzY2VuZGFudC1vci1zZWxmfGRlc2NlbmRpbmd8ZGl2fGRvY3VtZW50fGRvY3VtZW50LW5vZGV8ZWxlbWVudHxlbHNlfGVtcHR5fGVtcHR5LXNlcXVlbmNlfGVuZHxlcXxldmVyeXxleGNlcHR8Zmlyc3R8Zm9sbG93aW5nfGZvbGxvd2luZy1zaWJsaW5nfGZvcnxmdW5jdGlvbnxnZXxncm91cHxndHxpZGl2fGlmfGltcG9ydHxpbnNlcnR8aW5zdGFuY2V8aW50ZXJzZWN0fGludG98aXN8aXRlbXxsYXN0fGxlfGxldHxsdHxtb2R8bW9kaWZ5fG1vZHVsZXxuYW1lc3BhY2V8bmFtZXNwYWNlLW5vZGV8bmV8bm9kZXxvbmx5fG9yfG9yZGVyfG9yZGVyZWR8cGFyZW50fHByZWNlZGluZ3xwcmVjZWRpbmctc2libGluZ3xwcm9jZXNzaW5nLWluc3RydWN0aW9ufHJlbmFtZXxyZXBsYWNlfHJldHVybnxzYXRpc2ZpZXN8c2NoZW1hLWF0dHJpYnV0ZXxzY2hlbWEtZWxlbWVudHxzZWxmfHNvbWV8c3RhYmxlfHN0YXJ0fHN3aXRjaHx0ZXh0fHRvfHRyZWF0fHRyeXx0eXBlc3dpdGNofHVuaW9ufHVub3JkZXJlZHx2YWxpZGF0ZXx3aGVyZXx3aXRofHhxdWVyeXxjb250YWluc3xwYXJhZ3JhcGhzfHNlbnRlbmNlc3x0aW1lc3x3b3Jkc3xieXxjb2xsZWN0aW9ucmV0dXJufHZhcmlhYmxlfHZlcnNpb258b3B0aW9ufHdoZW58ZW5jb2Rpbmd8dG9zd2l0Y2h8Y2F0Y2h8dHVtYmxpbmd8c2xpZGluZ3x3aW5kb3d8YXR8dXNpbmd8c3RlbW1pbmd8Y29sbGVjdGlvbnxzY2hlbWF8d2hpbGV8b258bm9kZXN8aW5kZXh8ZXh0ZXJuYWx8dGhlbnxpbnx1cGRhdGluZ3x2YWx1ZXxvZnxjb250YWluc2JyZWFrfGxvb3B8Y29udGludWV8ZXhpdHxyZXR1cm5pbmciLnNwbGl0KCJ8IikpO3RoaXMuJHJ1bGVzPXtzdGFydDpbe3Rva2VuOiJ0ZXh0IixyZWdleDoiPFxcIVxcW0NEQVRBXFxbIixuZXh0OiJjZGF0YSJ9LHt0b2tlbjoieG1sX3BlIixyZWdleDoiPFxcPy4qP1xcPz4ifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiI8XFwhLS0iLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXCg6IixuZXh0OiJjb21tZW50In0se3Rva2VuOiJ0ZXh0IixyZWdleDoiPFxcLz8iLG5leHQ6InRhZyJ9LHt0b2tlbjoiY29uc3RhbnQiLHJlZ2V4OiJbKy1dP1xcZCsoPzooPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pP1xcYiJ9LHt0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJcXCRbYS16QS1aX11bYS16QS1aMC05X1xcLTpdKlxcYiJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonIi4qPyInfSx7dG9rZW46InN0cmluZyIscmVnZXg6IicuKj8nIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoic3VwcG9ydC5mdW5jdGlvbiIscmVnZXg6Ilxcd1tcXHcrX1xcLTpdKyg/PVxcKCkifSx7dG9rZW46ZnVuY3Rpb24odCl7cmV0dXJuIGVbdF0/ImtleXdvcmQiOiJpZGVudGlmaWVyIn0scmVnZXg6IlthLXpBLVpfJF1bYS16QS1aMC05XyRdKlxcYiJ9LHt0b2tlbjoia2V5d29yZC5vcGVyYXRvciIscmVnZXg6IlxcKnw9fDx8PnxcXC18XFwrIn0se3Rva2VuOiJscGFyZW4iLHJlZ2V4OiJbWyh7XSJ9LHt0b2tlbjoicnBhcmVuIixyZWdleDoiW1xcXSl9XSJ9XSx0YWc6W3t0b2tlbjoidGV4dCIscmVnZXg6Ij4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJtZXRhLnRhZyIscmVnZXg6IlstX2EtekEtWjAtOTpdKyJ9LHt0b2tlbjoidGV4dCIscmVnZXg6IlxccysifSx7dG9rZW46InN0cmluZyIscmVnZXg6JyIuKj8iJ30se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiInLio/JyJ9XSxjZGF0YTpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiXFxdXFxdPiIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJjb21tZW50IixyZWdleDoiKD86W15cXF1dfFxcXSg/IVxcXT4pKSsifV0sY29tbWVudDpbe3Rva2VuOiJjb21tZW50IixyZWdleDoiLio/LS0+IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4qOlxcKSIsbmV4dDoic3RhcnQifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKyJ9XX19O3IuaW5oZXJpdHMobyxzKSx0LlhRdWVyeUhpZ2hsaWdodFJ1bGVzPW99KSxkZWZpbmUoImFjZS9tb2RlL2JlaGF2aW91ci94cXVlcnkiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9tb2RlL2JlaGF2aW91ciIsImFjZS9tb2RlL2JlaGF2aW91ci9jc3R5bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vYmVoYXZpb3VyIikuQmVoYXZpb3VyLHM9ZSgiLi9jc3R5bGUiKS5Dc3R5bGVCZWhhdmlvdXIsbz1mdW5jdGlvbihlKXt0aGlzLmluaGVyaXQocyxbImJyYWNlcyIsInBhcmVucyIsInN0cmluZ19kcXVvdGVzIl0pLHRoaXMucGFyZW50PWUsdGhpcy5hZGQoImJyYWNrZXRzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSJcbiIpe3ZhciBzPW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxvPXIuZG9jLmdldExpbmUocy5yb3cpLHU9by5zdWJzdHJpbmcocy5jb2x1bW4scy5jb2x1bW4rMik7aWYodT09IjwvIil7dmFyIGE9dGhpcy4kZ2V0SW5kZW50KHIuZG9jLmdldExpbmUocy5yb3cpKStyLmdldFRhYlN0cmluZygpLGY9dGhpcy4kZ2V0SW5kZW50KHIuZG9jLmdldExpbmUocy5yb3cpKTtyZXR1cm57dGV4dDoiXG4iK2ErIlxuIitmLHNlbGVjdGlvbjpbMSxhLmxlbmd0aCwxLGEubGVuZ3RoXX19fXJldHVybiExfSksdGhpcy5hZGQoInNsYXNoIiwiaW5zZXJ0aW9uIixmdW5jdGlvbih0LG4scixpLHMpe2lmKHM9PSIvIil7dmFyIG89ci5nZXRDdXJzb3JQb3NpdGlvbigpLHU9aS5kb2MuZ2V0TGluZShvLnJvdyk7aWYoby5jb2x1bW4+MCYmdS5jaGFyQXQoby5jb2x1bW4tMSk9PSI8Iil7dT11LnN1YnN0cmluZygwLG8uY29sdW1uKSsiLyIrdS5zdWJzdHJpbmcoby5jb2x1bW4pO3ZhciBhPWkuZG9jLmdldEFsbExpbmVzKCk7YVtvLnJvd109dSxlLmV4ZWMoImNsb3NlVGFnIixhLmpvaW4oaS5kb2MuZ2V0TmV3TGluZUNoYXJhY3RlcigpKSxvLnJvdyl9fXJldHVybiExfSl9O3IuaW5oZXJpdHMobyxpKSx0LlhRdWVyeUJlaGF2aW91cj1vfSksZGVmaW5lKCJhY2UvbW9kZS9iZWhhdmlvdXIvY3N0eWxlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS9iZWhhdmlvdXIiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vLi4vbGliL29vcCIpLGk9ZSgiLi4vYmVoYXZpb3VyIikuQmVoYXZpb3VyLHM9ZnVuY3Rpb24oKXt0aGlzLmFkZCgiYnJhY2VzIiwiaW5zZXJ0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe2lmKGk9PSJ7Iil7dmFyIHM9bi5nZXRTZWxlY3Rpb25SYW5nZSgpLG89ci5kb2MuZ2V0VGV4dFJhbmdlKHMpO3JldHVybiBvIT09IiI/e3RleHQ6InsiK28rIn0iLHNlbGVjdGlvbjohMX06e3RleHQ6Int9IixzZWxlY3Rpb246WzEsMV19fWlmKGk9PSJ9Iil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0ifSIpe3ZhciBsPXIuJGZpbmRPcGVuaW5nQnJhY2tldCgifSIse2NvbHVtbjp1LmNvbHVtbisxLHJvdzp1LnJvd30pO2lmKGwhPT1udWxsKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fWVsc2UgaWYoaT09IlxuIil7dmFyIHU9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGE9ci5kb2MuZ2V0TGluZSh1LnJvdyksZj1hLnN1YnN0cmluZyh1LmNvbHVtbix1LmNvbHVtbisxKTtpZihmPT0ifSIpe3ZhciBjPXIuZmluZE1hdGNoaW5nQnJhY2tldCh7cm93OnUucm93LGNvbHVtbjp1LmNvbHVtbisxfSk7aWYoIWMpcmV0dXJuIG51bGw7dmFyIGg9dGhpcy5nZXROZXh0TGluZUluZGVudChlLGEuc3Vic3RyaW5nKDAsYS5sZW5ndGgtMSksci5nZXRUYWJTdHJpbmcoKSkscD10aGlzLiRnZXRJbmRlbnQoci5kb2MuZ2V0TGluZShjLnJvdykpO3JldHVybnt0ZXh0OiJcbiIraCsiXG4iK3Asc2VsZWN0aW9uOlsxLGgubGVuZ3RoLDEsaC5sZW5ndGhdfX19fSksdGhpcy5hZGQoImJyYWNlcyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiZzPT0ieyIpe3ZhciBvPXIuZG9jLmdldExpbmUoaS5zdGFydC5yb3cpLHU9by5zdWJzdHJpbmcoaS5lbmQuY29sdW1uLGkuZW5kLmNvbHVtbisxKTtpZih1PT0ifSIpcmV0dXJuIGkuZW5kLmNvbHVtbisrLGl9fSksdGhpcy5hZGQoInBhcmVucyIsImluc2VydGlvbiIsZnVuY3Rpb24oZSx0LG4scixpKXtpZihpPT0iKCIpe3ZhciBzPW4uZ2V0U2VsZWN0aW9uUmFuZ2UoKSxvPXIuZG9jLmdldFRleHRSYW5nZShzKTtyZXR1cm4gbyE9PSIiP3t0ZXh0OiIoIitvKyIpIixzZWxlY3Rpb246ITF9Ont0ZXh0OiIoKSIsc2VsZWN0aW9uOlsxLDFdfX1pZihpPT0iKSIpe3ZhciB1PW4uZ2V0Q3Vyc29yUG9zaXRpb24oKSxhPXIuZG9jLmdldExpbmUodS5yb3cpLGY9YS5zdWJzdHJpbmcodS5jb2x1bW4sdS5jb2x1bW4rMSk7aWYoZj09IikiKXt2YXIgbD1yLiRmaW5kT3BlbmluZ0JyYWNrZXQoIikiLHtjb2x1bW46dS5jb2x1bW4rMSxyb3c6dS5yb3d9KTtpZihsIT09bnVsbClyZXR1cm57dGV4dDoiIixzZWxlY3Rpb246WzEsMV19fX19KSx0aGlzLmFkZCgicGFyZW5zIiwiZGVsZXRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9ci5kb2MuZ2V0VGV4dFJhbmdlKGkpO2lmKCFpLmlzTXVsdGlMaW5lKCkmJnM9PSIoIil7dmFyIG89ci5kb2MuZ2V0TGluZShpLnN0YXJ0LnJvdyksdT1vLnN1YnN0cmluZyhpLnN0YXJ0LmNvbHVtbisxLGkuc3RhcnQuY29sdW1uKzIpO2lmKHU9PSIpIilyZXR1cm4gaS5lbmQuY29sdW1uKyssaX19KSx0aGlzLmFkZCgic3RyaW5nX2RxdW90ZXMiLCJpbnNlcnRpb24iLGZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoaT09JyInfHxpPT0iJyIpe3ZhciBzPWksbz1uLmdldFNlbGVjdGlvblJhbmdlKCksdT1yLmRvYy5nZXRUZXh0UmFuZ2Uobyk7aWYodSE9PSIiKXJldHVybnt0ZXh0OnMrdStzLHNlbGVjdGlvbjohMX07dmFyIGE9bi5nZXRDdXJzb3JQb3NpdGlvbigpLGY9ci5kb2MuZ2V0TGluZShhLnJvdyksbD1mLnN1YnN0cmluZyhhLmNvbHVtbi0xLGEuY29sdW1uKTtpZihsPT0iXFwiKXJldHVybiBudWxsO3ZhciBjPXIuZ2V0VG9rZW5zKG8uc3RhcnQucm93KSxoPTAscCxkPS0xO2Zvcih2YXIgdj0wO3Y8Yy5sZW5ndGg7disrKXtwPWNbdl0scC50eXBlPT0ic3RyaW5nIj9kPS0xOmQ8MCYmKGQ9cC52YWx1ZS5pbmRleE9mKHMpKTtpZihwLnZhbHVlLmxlbmd0aCtoPm8uc3RhcnQuY29sdW1uKWJyZWFrO2grPWNbdl0udmFsdWUubGVuZ3RofWlmKCFwfHxkPDAmJnAudHlwZSE9PSJjb21tZW50IiYmKHAudHlwZSE9PSJzdHJpbmcifHxvLnN0YXJ0LmNvbHVtbiE9PXAudmFsdWUubGVuZ3RoK2gtMSYmcC52YWx1ZS5sYXN0SW5kZXhPZihzKT09PXAudmFsdWUubGVuZ3RoLTEpKXJldHVybnt0ZXh0OnMrcyxzZWxlY3Rpb246WzEsMV19O2lmKHAmJnAudHlwZT09PSJzdHJpbmciKXt2YXIgbT1mLnN1YnN0cmluZyhhLmNvbHVtbixhLmNvbHVtbisxKTtpZihtPT1zKXJldHVybnt0ZXh0OiIiLHNlbGVjdGlvbjpbMSwxXX19fX0pLHRoaXMuYWRkKCJzdHJpbmdfZHF1b3RlcyIsImRlbGV0aW9uIixmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXIuZG9jLmdldFRleHRSYW5nZShpKTtpZighaS5pc011bHRpTGluZSgpJiYocz09JyInfHxzPT0iJyIpKXt2YXIgbz1yLmRvYy5nZXRMaW5lKGkuc3RhcnQucm93KSx1PW8uc3Vic3RyaW5nKGkuc3RhcnQuY29sdW1uKzEsaS5zdGFydC5jb2x1bW4rMik7aWYodT09JyInKXJldHVybiBpLmVuZC5jb2x1bW4rKyxpfX0pfTtyLmluaGVyaXRzKHMsaSksdC5Dc3R5bGVCZWhhdmlvdXI9c30p]]></data>
	</file>
	<file>
	  <filename>/ace/src/mode-yaml.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvbW9kZS95YW1sIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbW9kZS90ZXh0IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3lhbWxfaGlnaGxpZ2h0X3J1bGVzIiwiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuL3RleHQiKS5Nb2RlLHM9ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLG89ZSgiLi95YW1sX2hpZ2hsaWdodF9ydWxlcyIpLllhbWxIaWdobGlnaHRSdWxlcyx1PWUoIi4vbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIpLk1hdGNoaW5nQnJhY2VPdXRkZW50LGE9ZnVuY3Rpb24oKXt0aGlzLiR0b2tlbml6ZXI9bmV3IHMoKG5ldyBvKS5nZXRSdWxlcygpKSx0aGlzLiRvdXRkZW50PW5ldyB1fTtyLmluaGVyaXRzKGEsaSksZnVuY3Rpb24oKXt0aGlzLmdldE5leHRMaW5lSW5kZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRnZXRJbmRlbnQodCk7aWYoZT09InN0YXJ0Iil7dmFyIGk9dC5tYXRjaCgvXi4qW1x7XChcW11ccyokLyk7aSYmKHIrPW4pfXJldHVybiByfSx0aGlzLmNoZWNrT3V0ZGVudD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuJG91dGRlbnQuY2hlY2tPdXRkZW50KHQsbil9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuJG91dGRlbnQuYXV0b091dGRlbnQodCxuKX19LmNhbGwoYS5wcm90b3R5cGUpLHQuTW9kZT1hfSksZGVmaW5lKCJhY2UvbW9kZS95YW1sX2hpZ2hsaWdodF9ydWxlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi90ZXh0X2hpZ2hsaWdodF9ydWxlcyIpLlRleHRIaWdobGlnaHRSdWxlcyxzPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIjLiokIn0se3Rva2VuOiJjb21tZW50IixyZWdleDoiXi0tLSJ9LHt0b2tlbjoidmFyaWFibGUiLHJlZ2V4OiJbJlxcKl1bYS16QS1aMC05LV9dKyJ9LHt0b2tlbjpbImlkZW50aWZpZXIiLCJ0ZXh0Il0scmVnZXg6IihcXHcrXFxzKjopKFxcdyopIn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiPDxcXHcqOlxcdyoifSx7dG9rZW46ImtleXdvcmQub3BlcmF0b3IiLHJlZ2V4OiItXFxzKig/PVt7XSkifSx7dG9rZW46InN0cmluZyIscmVnZXg6J1siXSg/Oig/OlxcXFwuKXwoPzpbXiJcXFxcXSkpKj9bIl0nfSx7dG9rZW46InN0cmluZyIsbWVyZ2U6ITAscmVnZXg6IltcXHw+XVxcdyoiLG5leHQ6InFxc3RyaW5nIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiJbJ10oPzooPzpcXFxcLil8KD86W14nXFxcXF0pKSo/WyddIn0se3Rva2VuOiJjb25zdGFudC5udW1lcmljIixyZWdleDoiWystXT9cXGQrKD86KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KT9cXGIifSx7dG9rZW46ImNvbnN0YW50Lmxhbmd1YWdlLmJvb2xlYW4iLHJlZ2V4OiIoPzp0cnVlfGZhbHNlfHllc3xubylcXGIifSx7dG9rZW46ImludmFsaWQuaWxsZWdhbCIscmVnZXg6IlxcL1xcLy4qJCJ9LHt0b2tlbjoicGFyZW4ubHBhcmVuIixyZWdleDoiW1soe10ifSx7dG9rZW46InBhcmVuLnJwYXJlbiIscmVnZXg6IltcXF0pfV0ifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn1dLHFxc3RyaW5nOlt7dG9rZW46InN0cmluZyIscmVnZXg6Iig/PSg/Oig/OlxcXFwuKXwoPzpbXjpdKSkqPzopIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoic3RyaW5nIixtZXJnZTohMCxyZWdleDoiLisifV19fTtyLmluaGVyaXRzKHMsaSksdC5ZYW1sSGlnaGxpZ2h0UnVsZXM9c30pLGRlZmluZSgiYWNlL21vZGUvbWF0Y2hpbmdfYnJhY2Vfb3V0ZGVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9yYW5nZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9yYW5nZSIpLlJhbmdlLGk9ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe3RoaXMuY2hlY2tPdXRkZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuL15ccyskLy50ZXN0KGUpPy9eXHMqXH0vLnRlc3QodCk6ITF9LHRoaXMuYXV0b091dGRlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldExpbmUodCksaT1uLm1hdGNoKC9eKFxzKlx9KS8pO2lmKCFpKXJldHVybiAwO3ZhciBzPWlbMV0ubGVuZ3RoLG89ZS5maW5kTWF0Y2hpbmdCcmFja2V0KHtyb3c6dCxjb2x1bW46c30pO2lmKCFvfHxvLnJvdz09dClyZXR1cm4gMDt2YXIgdT10aGlzLiRnZXRJbmRlbnQoZS5nZXRMaW5lKG8ucm93KSk7ZS5yZXBsYWNlKG5ldyByKHQsMCx0LHMtMSksdSl9LHRoaXMuJGdldEluZGVudD1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eKFxzKykvKTtyZXR1cm4gdD90WzFdOiIifX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuTWF0Y2hpbmdCcmFjZU91dGRlbnQ9aX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-chrome.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvY2hyb21lIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9kb20iXSxmdW5jdGlvbihlLHQsbil7dC5jc3NDbGFzcz0iYWNlLWNocm9tZSIsdC5jc3NUZXh0PSIuYWNlLWNocm9tZSAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtY2hyb21lIC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLWNocm9tZSAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjZWJlYmViOyAgY29sb3I6ICMzMzM7ICBvdmVyZmxvdyA6IGhpZGRlbjt9LmFjZS1jaHJvbWUgLmFjZV9wcmludF9tYXJnaW4geyAgd2lkdGg6IDFweDsgIGJhY2tncm91bmQ6ICNlOGU4ZTg7fS5hY2UtY2hyb21lIC5hY2VfdGV4dC1sYXllciB7fS5hY2UtY2hyb21lIC5hY2VfY3Vyc29yIHsgIGJvcmRlci1sZWZ0OiAycHggc29saWQgYmxhY2s7fS5hY2UtY2hyb21lIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazt9LmFjZS1jaHJvbWUgLmFjZV9saW5lIC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7fS5hY2UtY2hyb21lIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9idWlsZGluIHsgIGNvbG9yOiByZ2IoODgsIDcyLCAyNDYpO30uYWNlLWNocm9tZSAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6IHJnYig4OCwgOTIsIDI0Nik7fS5hY2UtY2hyb21lIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9saWJyYXJ5IHsgIGNvbG9yOiByZ2IoNiwgMTUwLCAxNCk7fS5hY2UtY2hyb21lIC5hY2VfbGluZSAuYWNlX2ludmFsaWQgeyAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1MywgMCwgMCk7ICBjb2xvcjogd2hpdGU7fS5hY2UtY2hyb21lIC5hY2VfbGluZSAuYWNlX2ZvbGQge30uYWNlLWNocm9tZSAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV9mdW5jdGlvbiB7ICBjb2xvcjogcmdiKDYwLCA3NiwgMTE0KTt9LmFjZS1jaHJvbWUgLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6IHJnYig2LCAxNTAsIDE0KTt9LmFjZS1jaHJvbWUgLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfdHlwZSwuYWNlLWNocm9tZSAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV9jbGFzcyB7ICBjb2xvcjogcmdiKDEwOSwgMTIxLCAyMjIpO30uYWNlLWNocm9tZSAuYWNlX3ZhcmlhYmxlLmFjZV9wYXJhbWV0ZXIgeyAgZm9udC1zdHlsZTppdGFsaWM7Y29sb3I6I0ZEOTcxRjt9LmFjZS1jaHJvbWUgLmFjZV9saW5lIC5hY2Vfa2V5d29yZC5hY2Vfb3BlcmF0b3IgeyAgY29sb3I6IHJnYigxMDQsIDExOCwgMTM1KTt9LmFjZS1jaHJvbWUgLmFjZV9saW5lIC5hY2VfY29tbWVudCB7ICBjb2xvcjogIzIzNmUyNDt9LmFjZS1jaHJvbWUgLmFjZV9saW5lIC5hY2VfY29tbWVudC5hY2VfZG9jIHsgIGNvbG9yOiAjMjM2ZTI0O30uYWNlLWNocm9tZSAuYWNlX2xpbmUgLmFjZV9jb21tZW50LmFjZV9kb2MuYWNlX3RhZyB7ICBjb2xvcjogIzIzNmUyNDt9LmFjZS1jaHJvbWUgLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6IHJnYigwLCAwLCAyMDUpO30uYWNlLWNocm9tZSAuYWNlX2xpbmUgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjogcmdiKDQ5LCAxMzIsIDE0OSk7fS5hY2UtY2hyb21lIC5hY2VfbGluZSAuYWNlX3htbF9wZSB7ICBjb2xvcjogcmdiKDEwNCwgMTA0LCA5MSk7fS5hY2UtY2hyb21lIC5hY2VfZW50aXR5LmFjZV9uYW1lLmFjZV9mdW5jdGlvbiB7ICBjb2xvcjogIzAwMDBBMjt9LmFjZS1jaHJvbWUgLmFjZV9tYXJrdXAuYWNlX21hcmt1cGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fS5hY2UtY2hyb21lIC5hY2VfbWFya3VwLmFjZV9oZWFkaW5nIHsgIGNvbG9yOiByZ2IoMTIsIDcsIDI1NSk7fS5hY2UtY2hyb21lIC5hY2VfbWFya3VwLmFjZV9saXN0IHsgIGNvbG9yOnJnYigxODUsIDYsIDE0NCk7fS5hY2UtY2hyb21lIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6IHJnYigxODEsIDIxMywgMjU1KTt9LmFjZS1jaHJvbWUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigyNTIsIDI1NSwgMCk7fS5hY2UtY2hyb21lIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RhY2sgeyAgYmFja2dyb3VuZDogcmdiKDE2NCwgMjI5LCAxMDEpO30uYWNlLWNocm9tZSAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQgeyAgbWFyZ2luOiAtMXB4IDAgMCAtMXB4OyAgYm9yZGVyOiAxcHggc29saWQgcmdiKDE5MiwgMTkyLCAxOTIpO30uYWNlLWNocm9tZSAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wNyk7fS5hY2UtY2hyb21lIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBiYWNrZ3JvdW5kOiByZ2IoMjUwLCAyNTAsIDI1NSk7ICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjAwLCAyMDAsIDI1MCk7fS5hY2UtY2hyb21lIC5hY2Vfc3RvcmFnZSwuYWNlLWNocm9tZSAuYWNlX2xpbmUgLmFjZV9rZXl3b3JkLC5hY2UtY2hyb21lIC5hY2VfbWV0YS5hY2VfdGFnIHsgIGNvbG9yOiByZ2IoMTQ3LCAxNSwgMTI4KTt9LmFjZS1jaHJvbWUgLmFjZV9zdHJpbmcuYWNlX3JlZ2V4IHsgIGNvbG9yOiByZ2IoMjU1LCAwLCAwKX0uYWNlLWNocm9tZSAuYWNlX2xpbmUgLmFjZV9zdHJpbmd7ICBjb2xvcjogIzFBMUFBNjt9LmFjZS1jaHJvbWUgLmFjZV9lbnRpdHkuYWNlX290aGVyLmFjZV9hdHRyaWJ1dGUtbmFtZXsgIGNvbG9yOiAjOTk0NDA5O30iO3ZhciByPWUoIi4uL2xpYi9kb20iKTtyLmltcG9ydENzc1N0cmluZyh0LmNzc1RleHQsdC5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-clouds.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvY2xvdWRzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9kb20iXSxmdW5jdGlvbihlLHQsbil7dC5pc0Rhcms9ITEsdC5jc3NDbGFzcz0iYWNlLWNsb3VkcyIsdC5jc3NUZXh0PSIuYWNlLWNsb3VkcyAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtY2xvdWRzIC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLWNsb3VkcyAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjZWJlYmViOyAgY29sb3I6ICMzMzM7fS5hY2UtY2xvdWRzIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLWNsb3VkcyAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7fS5hY2UtY2xvdWRzIC5hY2VfdGV4dC1sYXllciB7ICBjb2xvcjogIzAwMDAwMDt9LmFjZS1jbG91ZHMgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMDAwMDAwO30uYWNlLWNsb3VkcyAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzAwMDAwMDt9LmFjZS1jbG91ZHMgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogI0JERDVGQzt9LmFjZS1jbG91ZHMubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggI0ZGRkZGRjsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1jbG91ZHMgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigyNTUsIDI1NSwgMCk7fS5hY2UtY2xvdWRzIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCAjQkZCRkJGO30uYWNlLWNsb3VkcyAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6ICNGRkZCRDE7fS5hY2UtY2xvdWRzIC5hY2VfZ3V0dGVyX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQtY29sb3IgOiAjZGNkY2RjO30uYWNlLWNsb3VkcyAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYm9yZGVyOiAxcHggc29saWQgI0JERDVGQzt9LmFjZS1jbG91ZHMgLmFjZV9pbnZpc2libGUgeyAgY29sb3I6ICNCRkJGQkY7fS5hY2UtY2xvdWRzIC5hY2Vfa2V5d29yZCwgLmFjZS1jbG91ZHMgLmFjZV9tZXRhIHsgIGNvbG9yOiNBRjk1NkY7fS5hY2UtY2xvdWRzIC5hY2Vfa2V5d29yZC5hY2Vfb3BlcmF0b3IgeyAgY29sb3I6IzQ4NDg0ODt9LmFjZS1jbG91ZHMgLmFjZV9jb25zdGFudC5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6IzM5OTQ2QTt9LmFjZS1jbG91ZHMgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7ICBjb2xvcjojNDZBNjA5O30uYWNlLWNsb3VkcyAuYWNlX2ludmFsaWQgeyAgYmFja2dyb3VuZC1jb2xvcjojRkYwMDJBO30uYWNlLWNsb3VkcyAuYWNlX2ZvbGQgeyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUY5NTZGOyAgICBib3JkZXItY29sb3I6ICMwMDAwMDA7fS5hY2UtY2xvdWRzIC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6I0M1MjcyNzt9LmFjZS1jbG91ZHMgLmFjZV9zdG9yYWdlIHsgIGNvbG9yOiNDNTI3Mjc7fS5hY2UtY2xvdWRzIC5hY2Vfc3RyaW5nIHsgIGNvbG9yOiM1RDkwQ0Q7fS5hY2UtY2xvdWRzIC5hY2VfY29tbWVudCB7ICBjb2xvcjojQkNDOEJBO30uYWNlLWNsb3VkcyAuYWNlX2VudGl0eS5hY2Vfb3RoZXIuYWNlX2F0dHJpYnV0ZS1uYW1lIHsgIGNvbG9yOiM2MDYwNjA7fS5hY2UtY2xvdWRzIC5hY2VfbWFya3VwLmFjZV91bmRlcmxpbmUgeyAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30iO3ZhciByPWUoIi4uL2xpYi9kb20iKTtyLmltcG9ydENzc1N0cmluZyh0LmNzc1RleHQsdC5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-clouds_midnight.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvY2xvdWRzX21pZG5pZ2h0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9kb20iXSxmdW5jdGlvbihlLHQsbil7dC5pc0Rhcms9ITAsdC5jc3NDbGFzcz0iYWNlLWNsb3Vkcy1taWRuaWdodCIsdC5jc3NUZXh0PSIuYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjMjMyMzIzOyAgY29sb3I6ICM5MjkyOTI7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjMjMyMzIzO30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICMxOTE5MTk7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2VfdGV4dC1sYXllciB7ICBjb2xvcjogIzkyOTI5Mjt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjN0RBNURDO30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzdEQTVEQzt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogIzAwMDAwMDt9LmFjZS1jbG91ZHMtbWlkbmlnaHQubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzE5MTkxOTsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigxMDIsIDgyLCAwKTt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9icmFja2V0IHsgIG1hcmdpbjogLTFweCAwIDAgLTFweDsgIGJvcmRlcjogMXB4IHNvbGlkICNCRkJGQkY7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogcmdiYSgyMTUsIDIxNSwgMjE1LCAwLjAzMSk7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2VfZ3V0dGVyX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjE1LCAyMTUsIDIxNSwgMC4wMzEpO30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYm9yZGVyOiAxcHggc29saWQgIzAwMDAwMDt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9pbnZpc2libGUgeyAgY29sb3I6ICNCRkJGQkY7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2Vfa2V5d29yZCwgLmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9tZXRhIHsgIGNvbG9yOiM5MjdDNUQ7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2Vfa2V5d29yZC5hY2Vfb3BlcmF0b3IgeyAgY29sb3I6IzRCNEI0Qjt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9jb25zdGFudC5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6IzM5OTQ2QTt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7ICBjb2xvcjojNDZBNjA5O30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX2ludmFsaWQgeyAgY29sb3I6I0ZGRkZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNFOTJFMkU7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICM5MjdDNUQ7ICAgIGJvcmRlci1jb2xvcjogIzkyOTI5Mjt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9zdXBwb3J0LmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojRTkyRTJFO30uYWNlLWNsb3Vkcy1taWRuaWdodCAuYWNlX3N0b3JhZ2UgeyAgY29sb3I6I0U5MkUyRTt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9zdHJpbmcgeyAgY29sb3I6IzVEOTBDRDt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9jb21tZW50IHsgIGNvbG9yOiMzQzQwM0I7fS5hY2UtY2xvdWRzLW1pZG5pZ2h0IC5hY2VfZW50aXR5LmFjZV9vdGhlci5hY2VfYXR0cmlidXRlLW5hbWUgeyAgY29sb3I6IzYwNjA2MDt9LmFjZS1jbG91ZHMtbWlkbmlnaHQgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSI7dmFyIHI9ZSgiLi4vbGliL2RvbSIpO3IuaW1wb3J0Q3NzU3RyaW5nKHQuY3NzVGV4dCx0LmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-cobalt.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvY29iYWx0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9kb20iXSxmdW5jdGlvbihlLHQsbil7dC5pc0Rhcms9ITAsdC5jc3NDbGFzcz0iYWNlLWNvYmFsdCIsdC5jc3NUZXh0PSIuYWNlLWNvYmFsdCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtY29iYWx0IC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLWNvYmFsdCAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjMDExZTNhOyAgY29sb3I6ICNmZmY7fS5hY2UtY29iYWx0IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjMDExZTNhO30uYWNlLWNvYmFsdCAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICMwMDIyNDA7fS5hY2UtY29iYWx0IC5hY2VfdGV4dC1sYXllciB7ICBjb2xvcjogI0ZGRkZGRjt9LmFjZS1jb2JhbHQgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRkZGRkZGO30uYWNlLWNvYmFsdCAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0ZGRkZGRjt9LmFjZS1jb2JhbHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogcmdiYSgxNzksIDEwMSwgNTcsIDAuNzUpO30uYWNlLWNvYmFsdC5tdWx0aXNlbGVjdCAuYWNlX3NlbGVjdGlvbi5zdGFydCB7ICBib3gtc2hhZG93OiAwIDAgM3B4IDBweCAjMDAyMjQwOyAgYm9yZGVyLXJhZGl1czogMnB4O30uYWNlLWNvYmFsdCAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEyNywgMTExLCAxOSk7fS5hY2UtY29iYWx0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO30uYWNlLWNvYmFsdCAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4zNSk7fS5hY2UtY29iYWx0IC5hY2VfZ3V0dGVyX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQtY29sb3IgOiByZ2JhKDAsIDAsIDAsIDAuMzUpO30uYWNlLWNvYmFsdCAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNzksIDEwMSwgNTcsIDAuNzUpO30uYWNlLWNvYmFsdCAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTt9LmFjZS1jb2JhbHQgLmFjZV9rZXl3b3JkLCAuYWNlLWNvYmFsdCAuYWNlX21ldGEgeyAgY29sb3I6I0ZGOUQwMDt9LmFjZS1jb2JhbHQgLmFjZV9jb25zdGFudCwgLmFjZS1jb2JhbHQgLmFjZV9jb25zdGFudC5hY2Vfb3RoZXIgeyAgY29sb3I6I0ZGNjI4Qzt9LmFjZS1jb2JhbHQgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLCAgeyAgY29sb3I6I0ZGNjI4Qzt9LmFjZS1jb2JhbHQgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLmFjZV9lc2NhcGUsICB7ICBjb2xvcjojRkY2MjhDO30uYWNlLWNvYmFsdCAuYWNlX2ludmFsaWQgeyAgY29sb3I6I0Y4RjhGODtiYWNrZ3JvdW5kLWNvbG9yOiM4MDBGMDA7fS5hY2UtY29iYWx0IC5hY2Vfc3VwcG9ydCB7ICBjb2xvcjojODBGRkJCO30uYWNlLWNvYmFsdCAuYWNlX3N1cHBvcnQuYWNlX2NvbnN0YW50IHsgIGNvbG9yOiNFQjkzOUE7fS5hY2UtY29iYWx0IC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICNGRjlEMDA7ICAgIGJvcmRlci1jb2xvcjogI0ZGRkZGRjt9LmFjZS1jb2JhbHQgLmFjZV9zdXBwb3J0LmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojRkZCMDU0O30uYWNlLWNvYmFsdCAuYWNlX3N0b3JhZ2UgeyAgY29sb3I6I0ZGRUU4MDt9LmFjZS1jb2JhbHQgLmFjZV9zdHJpbmcuYWNlX3JlZ2V4cCB7ICBjb2xvcjojODBGRkMyO30uYWNlLWNvYmFsdCAuYWNlX2NvbW1lbnQgeyAgZm9udC1zdHlsZTppdGFsaWM7Y29sb3I6IzAwODhGRjt9LmFjZS1jb2JhbHQgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjojQ0NDQ0NDO30uYWNlLWNvYmFsdCAuYWNlX3ZhcmlhYmxlLmFjZV9sYW5ndWFnZSB7ICBjb2xvcjojRkY4MEUxO30uYWNlLWNvYmFsdCAuYWNlX21ldGEuYWNlX3RhZyB7ICBjb2xvcjojOUVGRkZGO30uYWNlLWNvYmFsdCAuYWNlX21hcmt1cC5hY2VfdW5kZXJsaW5lIHsgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9LmFjZS1jb2JhbHQgLmFjZV9tYXJrdXAuYWNlX2hlYWRpbmcgeyAgY29sb3I6I0M4RTRGRDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDEyMjE7fS5hY2UtY29iYWx0IC5hY2VfbWFya3VwLmFjZV9saXN0IHsgIGJhY2tncm91bmQtY29sb3I6IzEzMEQyNjt9Ijt2YXIgcj1lKCIuLi9saWIvZG9tIik7ci5pbXBvcnRDc3NTdHJpbmcodC5jc3NUZXh0LHQuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-crimson_editor.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvY3JpbXNvbl9lZGl0b3IiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmlzRGFyaz0hMSx0LmNzc1RleHQ9Ii5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9lZGl0b3IgeyAgYm9yZGVyOiAycHggc29saWQgcmdiKDE1OSwgMTU5LCAxNTkpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfZ3V0dGVyIHsgIGJhY2tncm91bmQ6ICNlYmViZWI7ICBjb2xvcjogIzMzMzsgIG92ZXJmbG93IDogaGlkZGVuO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfZ3V0dGVyLWxheWVyIHsgIHdpZHRoOiAxMDAlOyAgdGV4dC1hbGlnbjogcmlnaHQ7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9wcmludF9tYXJnaW4geyAgd2lkdGg6IDFweDsgIGJhY2tncm91bmQ6ICNlOGU4ZTg7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV90ZXh0LWxheWVyIHsgIGNvbG9yOiByZ2IoNjQsIDY0LCA2NCk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCBibGFjazt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2VfaWRlbnRpZmllciB7ICBjb2xvcjogYmxhY2s7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2Vfa2V5d29yZCB7ICBjb2xvcjogYmx1ZTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfYnVpbGRpbiB7ICBjb2xvcjogcmdiKDg4LCA3MiwgMjQ2KTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6IHJnYigyNTUsIDE1NiwgMCk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX2xpYnJhcnkgeyAgY29sb3I6IHJnYig2LCAxNTAsIDE0KTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2xpbmUgLmFjZV9pbnZhbGlkIHsgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOyAgY29sb3I6IHJnYigyMjQsIDAsIDApO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbGluZSAuYWNlX2ZvbGQge30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbGluZSAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiByZ2IoMTkyLCAwLCAwKTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV9jb25zdGFudCB7ICBjb2xvcjogcmdiKDYsIDE1MCwgMTQpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbGluZSAuYWNlX3N1cHBvcnQuYWNlX3R5cGUsLmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV9jbGFzcyB7ICBjb2xvcjogcmdiKDEwOSwgMTIxLCAyMjIpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbGluZSAuYWNlX2tleXdvcmQuYWNlX29wZXJhdG9yIHsgIGNvbG9yOiByZ2IoNDksIDEzMiwgMTQ5KTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2xpbmUgLmFjZV9zdHJpbmcgeyAgY29sb3I6IHJnYigxMjgsIDAsIDEyOCk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2VfY29tbWVudCB7ICBjb2xvcjogcmdiKDc2LCAxMzYsIDEwNyk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2VfY29tbWVudC5hY2VfZG9jIHsgIGNvbG9yOiByZ2IoMCwgMTAyLCAyNTUpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbGluZSAuYWNlX2NvbW1lbnQuYWNlX2RvYy5hY2VfdGFnIHsgIGNvbG9yOiByZ2IoMTI4LCAxNTksIDE5MSk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6IHJnYigwLCAwLCA2NCk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9saW5lIC5hY2VfdmFyaWFibGUgeyAgY29sb3I6IHJnYigwLCA2NCwgMTI4KTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX2xpbmUgLmFjZV94bWxfcGUgeyAgY29sb3I6IHJnYigxMDQsIDEwNCwgOTEpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6IHJnYigxODEsIDIxMywgMjU1KTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDI1MiwgMjU1LCAwKTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0YWNrIHsgIGJhY2tncm91bmQ6IHJnYigxNjQsIDIyOSwgMTAxKTt9LmFjZS1jcmltc29uLWVkaXRvciAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQgeyAgbWFyZ2luOiAtMXB4IDAgMCAtMXB4OyAgYm9yZGVyOiAxcHggc29saWQgcmdiKDE5MiwgMTkyLCAxOTIpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogcmdiKDIzMiwgMjQyLCAyNTQpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfZ3V0dGVyX2FjdGl2ZV9saW5lIHsgICAgYmFja2dyb3VuZC1jb2xvciA6ICNkY2RjZGM7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9tZXRhLmFjZV90YWcgeyAgY29sb3I6cmdiKDI4LCAyLCAyNTUpO30uYWNlLWNyaW1zb24tZWRpdG9yIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBiYWNrZ3JvdW5kOiByZ2IoMjUwLCAyNTAsIDI1NSk7ICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjAwLCAyMDAsIDI1MCk7fS5hY2UtY3JpbXNvbi1lZGl0b3IgLmFjZV9zdHJpbmcuYWNlX3JlZ2V4IHsgIGNvbG9yOiByZ2IoMTkyLCAwLCAxOTIpO30iLHQuY3NzQ2xhc3M9ImFjZS1jcmltc29uLWVkaXRvciI7dmFyIHI9ZSgiLi4vbGliL2RvbSIpO3IuaW1wb3J0Q3NzU3RyaW5nKHQuY3NzVGV4dCx0LmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-dawn.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvZGF3biIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZG9tIl0sZnVuY3Rpb24oZSx0LG4pe3QuaXNEYXJrPSExLHQuY3NzQ2xhc3M9ImFjZS1kYXduIix0LmNzc1RleHQ9Ii5hY2UtZGF3biAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtZGF3biAuYWNlX2VkaXRvci5hY2VfZm9jdXMgeyAgYm9yZGVyOiAycHggc29saWQgIzMyN2ZiZDt9LmFjZS1kYXduIC5hY2VfZ3V0dGVyIHsgIGJhY2tncm91bmQ6ICNlYmViZWI7ICBjb2xvcjogIzMzMzt9LmFjZS1kYXduIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLWRhd24gLmFjZV9zY3JvbGxlciB7ICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjlGOUY5O30uYWNlLWRhd24gLmFjZV90ZXh0LWxheWVyIHsgIGNvbG9yOiAjMDgwODA4O30uYWNlLWRhd24gLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMDAwMDAwO30uYWNlLWRhd24gLmFjZV9jdXJzb3IuYWNlX292ZXJ3cml0ZSB7ICBib3JkZXItbGVmdDogMHB4OyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwMDAwMDA7fS5hY2UtZGF3biAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGlvbiB7ICBiYWNrZ3JvdW5kOiByZ2JhKDM5LCA5NSwgMjU1LCAwLjMwKTt9LmFjZS1kYXduLm11bHRpc2VsZWN0IC5hY2Vfc2VsZWN0aW9uLnN0YXJ0IHsgIGJveC1zaGFkb3c6IDAgMCAzcHggMHB4ICNGOUY5Rjk7ICBib3JkZXItcmFkaXVzOiAycHg7fS5hY2UtZGF3biAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDI1NSwgMjU1LCAwKTt9LmFjZS1kYXduIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDc1LCA3NSwgMTI2LCAwLjUwKTt9LmFjZS1kYXduIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogcmdiYSgzNiwgOTksIDE4MCwgMC4xMik7fS5hY2UtZGF3biAuYWNlX2d1dHRlcl9hY3RpdmVfbGluZSB7ICBiYWNrZ3JvdW5kLWNvbG9yIDogI2RjZGNkYzt9LmFjZS1kYXduIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDM5LCA5NSwgMjU1LCAwLjMwKTt9LmFjZS1kYXduIC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiByZ2JhKDc1LCA3NSwgMTI2LCAwLjUwKTt9LmFjZS1kYXduIC5hY2Vfa2V5d29yZCwgLmFjZS1kYXduIC5hY2VfbWV0YSB7ICBjb2xvcjojNzk0OTM4O30uYWNlLWRhd24gLmFjZV9jb25zdGFudCwgLmFjZS1kYXduIC5hY2VfY29uc3RhbnQuYWNlX290aGVyIHsgIGNvbG9yOiM4MTFGMjQ7fS5hY2UtZGF3biAuYWNlX2NvbnN0YW50LmFjZV9jaGFyYWN0ZXIsICB7ICBjb2xvcjojODExRjI0O30uYWNlLWRhd24gLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLmFjZV9lc2NhcGUsICB7ICBjb2xvcjojODExRjI0O30uYWNlLWRhd24gLmFjZV9pbnZhbGlkLmFjZV9pbGxlZ2FsIHsgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Zm9udC1zdHlsZTppdGFsaWM7Y29sb3I6I0Y4RjhGODtiYWNrZ3JvdW5kLWNvbG9yOiNCNTJBMUQ7fS5hY2UtZGF3biAuYWNlX2ludmFsaWQuYWNlX2RlcHJlY2F0ZWQgeyAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtmb250LXN0eWxlOml0YWxpYztjb2xvcjojQjUyQTFEO30uYWNlLWRhd24gLmFjZV9zdXBwb3J0IHsgIGNvbG9yOiM2OTFDOTc7fS5hY2UtZGF3biAuYWNlX3N1cHBvcnQuYWNlX2NvbnN0YW50IHsgIGNvbG9yOiNCNDM3MUY7fS5hY2UtZGF3biAuYWNlX2ZvbGQgeyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzk0OTM4OyAgICBib3JkZXItY29sb3I6ICMwODA4MDg7fS5hY2UtZGF3biAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiM2OTNBMTc7fS5hY2UtZGF3biAuYWNlX3N0b3JhZ2UgeyAgZm9udC1zdHlsZTppdGFsaWM7Y29sb3I6I0E3MUQ1RDt9LmFjZS1kYXduIC5hY2Vfc3RyaW5nIHsgIGNvbG9yOiMwQjYxMjU7fS5hY2UtZGF3biAuYWNlX3N0cmluZy5hY2VfcmVnZXhwIHsgIGNvbG9yOiNDRjU2Mjg7fS5hY2UtZGF3biAuYWNlX2NvbW1lbnQgeyAgZm9udC1zdHlsZTppdGFsaWM7Y29sb3I6IzVBNTI1Rjt9LmFjZS1kYXduIC5hY2VfdmFyaWFibGUgeyAgY29sb3I6IzIzNEE5Nzt9LmFjZS1kYXduIC5hY2VfbWFya3VwLmFjZV91bmRlcmxpbmUgeyAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30uYWNlLWRhd24gLmFjZV9tYXJrdXAuYWNlX2hlYWRpbmcgeyAgY29sb3I6IzE5MzU2RDt9LmFjZS1kYXduIC5hY2VfbWFya3VwLmFjZV9saXN0IHsgIGNvbG9yOiM2OTNBMTc7fSI7dmFyIHI9ZSgiLi4vbGliL2RvbSIpO3IuaW1wb3J0Q3NzU3RyaW5nKHQuY3NzVGV4dCx0LmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-dreamweaver.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvZHJlYW13ZWF2ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmlzRGFyaz0hMSx0LmNzc0NsYXNzPSJhY2UtZHJlYW13ZWF2ZXIiLHQuY3NzVGV4dD0iLmFjZS1kcmVhbXdlYXZlciAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2U4ZThlODsgIGNvbG9yOiAjMzMzO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICMwMEY7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV90ZXh0LWxheWVyIHt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2N1cnNvciB7ICBib3JkZXItbGVmdDogMnB4IHNvbGlkIGJsYWNrO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazt9ICAgICAgICAuYWNlLWRyZWFtd2VhdmVyIC5hY2VfbGluZSAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbGluZSAuYWNlX3N0b3JhZ2UsLmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV9rZXl3b3JkIHsgIGNvbG9yOiBibHVlO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9idWlsZGluIHsgIGNvbG9yOiByZ2IoODgsIDcyLCAyNDYpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9sYW5ndWFnZSB7ICBjb2xvcjogcmdiKDg4LCA5MiwgMjQ2KTt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfbGlicmFyeSB7ICBjb2xvcjogcmdiKDYsIDE1MCwgMTQpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbGluZSAuYWNlX2ludmFsaWQgeyAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1MywgMCwgMCk7ICBjb2xvcjogd2hpdGU7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6IHJnYig2MCwgNzYsIDExNCk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6IHJnYig2LCAxNTAsIDE0KTt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV90eXBlLC5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfY2xhc3MgeyAgY29sb3I6ICMwMDk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfcGhwX3RhZyB7ICBjb2xvcjogI2YwMDt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV9rZXl3b3JkLmFjZV9vcGVyYXRvciB7ICBjb2xvcjogcmdiKDEwNCwgMTE4LCAxMzUpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbGluZSAuYWNlX3N0cmluZyB7ICBjb2xvcjogIzAwRjt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV9jb21tZW50IHsgIGNvbG9yOiByZ2IoNzYsIDEzNiwgMTA3KTt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV9jb21tZW50LmFjZV9kb2MgeyAgY29sb3I6IHJnYigwLCAxMDIsIDI1NSk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9saW5lIC5hY2VfY29tbWVudC5hY2VfZG9jLmFjZV90YWcgeyAgY29sb3I6IHJnYigxMjgsIDE1OSwgMTkxKTt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7ICBjb2xvcjogcmdiKDAsIDAsIDIwNSk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9saW5lIC5hY2VfdmFyaWFibGUgeyAgY29sb3I6ICMwNkZ9LmFjZS1kcmVhbXdlYXZlciAuYWNlX2xpbmUgLmFjZV94bWxfcGUgeyAgY29sb3I6IHJnYigxMDQsIDEwNCwgOTEpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfZW50aXR5LmFjZV9uYW1lLmFjZV9mdW5jdGlvbiB7ICBjb2xvcjogIzAwRjt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX21hcmt1cC5hY2VfbWFya3VwaW5lIHsgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX21hcmt1cC5hY2VfaGVhZGluZyB7ICBjb2xvcjogcmdiKDEyLCA3LCAyNTUpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbWFya3VwLmFjZV9saXN0IHsgIGNvbG9yOnJnYigxODUsIDYsIDE0NCk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogcmdiKDE4MSwgMjEzLCAyNTUpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RlcCB7ICBiYWNrZ3JvdW5kOiByZ2IoMjUyLCAyNTUsIDApO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RhY2sgeyAgYmFja2dyb3VuZDogcmdiKDE2NCwgMjI5LCAxMDEpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMTkyLCAxOTIsIDE5Mik7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9hY3RpdmVfbGluZSB7ICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDcpO30uYWNlLWRyZWFtd2VhdmVyIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBiYWNrZ3JvdW5kOiByZ2IoMjUwLCAyNTAsIDI1NSk7ICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjAwLCAyMDAsIDI1MCk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9tZXRhLmFjZV90YWcgeyAgY29sb3I6IzAwOTt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX21ldGEuYWNlX3RhZy5hY2VfYW5jaG9yIHsgIGNvbG9yOiMwNjA7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9tZXRhLmFjZV90YWcuYWNlX2Zvcm0geyAgY29sb3I6I0Y5MDt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX21ldGEuYWNlX3RhZy5hY2VfaW1hZ2UgeyAgY29sb3I6IzkwOTt9LmFjZS1kcmVhbXdlYXZlciAuYWNlX21ldGEuYWNlX3RhZy5hY2Vfc2NyaXB0IHsgIGNvbG9yOiM5MDA7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9tZXRhLmFjZV90YWcuYWNlX3N0eWxlIHsgIGNvbG9yOiM5MDk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9tZXRhLmFjZV90YWcuYWNlX3RhYmxlIHsgIGNvbG9yOiMwOTk7fS5hY2UtZHJlYW13ZWF2ZXIgLmFjZV9zdHJpbmcuYWNlX3JlZ2V4IHsgIGNvbG9yOiByZ2IoMjU1LCAwLCAwKX0iO3ZhciByPWUoIi4uL2xpYi9kb20iKTtyLmltcG9ydENzc1N0cmluZyh0LmNzc1RleHQsdC5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-eclipse.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvZWNsaXBzZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZG9tIl0sZnVuY3Rpb24oZSx0LG4pe3QuaXNEYXJrPSExLHQuY3NzVGV4dD0iLmFjZS1lY2xpcHNlIC5hY2VfZWRpdG9yIHsgIGJvcmRlcjogMnB4IHNvbGlkIHJnYigxNTksIDE1OSwgMTU5KTt9LmFjZS1lY2xpcHNlIC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLWVjbGlwc2UgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2ViZWJlYjsgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYigxNTksIDE1OSwgMTU5KTsgIGNvbG9yOiByZ2IoMTM2LCAxMzYsIDEzNik7fS5hY2UtZWNsaXBzZSAuYWNlX3ByaW50X21hcmdpbiB7ICB3aWR0aDogMXB4OyAgYmFja2dyb3VuZDogI2ViZWJlYjt9LmFjZS1lY2xpcHNlIC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYig2MCwgNzYsIDExNCk7fS5hY2UtZWNsaXBzZSAuYWNlX3RleHQtbGF5ZXIge30uYWNlLWVjbGlwc2UgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCBibGFjazt9LmFjZS1lY2xpcHNlIC5hY2VfbGluZSAuYWNlX3N0b3JhZ2UsLmFjZS1lY2xpcHNlIC5hY2VfbGluZSAuYWNlX2tleXdvcmQsLmFjZS1lY2xpcHNlIC5hY2VfbGluZSAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiByZ2IoMTI3LCAwLCA4NSk7fS5hY2UtZWNsaXBzZSAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfYnVpbGRpbiB7ICBjb2xvcjogcmdiKDg4LCA3MiwgMjQ2KTt9LmFjZS1lY2xpcHNlIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9saWJyYXJ5IHsgIGNvbG9yOiByZ2IoNiwgMTUwLCAxNCk7fS5hY2UtZWNsaXBzZSAuYWNlX2xpbmUgLmFjZV9mdW5jdGlvbiB7ICBjb2xvcjogcmdiKDYwLCA3NiwgMTE0KTt9LmFjZS1lY2xpcHNlIC5hY2VfbGluZSAuYWNlX3N0cmluZyB7ICBjb2xvcjogcmdiKDQyLCAwLCAyNTUpO30uYWNlLWVjbGlwc2UgLmFjZV9saW5lIC5hY2VfY29tbWVudCB7ICBjb2xvcjogcmdiKDYzLCAxMjcsIDk1KTt9LmFjZS1lY2xpcHNlIC5hY2VfbGluZSAuYWNlX2NvbW1lbnQuYWNlX2RvYyB7ICBjb2xvcjogcmdiKDYzLCA5NSwgMTkxKTt9LmFjZS1lY2xpcHNlIC5hY2VfbGluZSAuYWNlX2NvbW1lbnQuYWNlX2RvYy5hY2VfdGFnIHsgIGNvbG9yOiByZ2IoMTI3LCAxNTksIDE5MSk7fS5hY2UtZWNsaXBzZSAuYWNlX2xpbmUgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7fS5hY2UtZWNsaXBzZSAuYWNlX2xpbmUgLmFjZV90YWcgeyAgY29sb3I6IHJnYig2MywgMTI3LCAxMjcpO30uYWNlLWVjbGlwc2UgLmFjZV9saW5lIC5hY2VfdHlwZSB7ICBjb2xvcjogcmdiKDEyNywgMCwgMTI3KTt9LmFjZS1lY2xpcHNlIC5hY2VfbGluZSAuYWNlX3htbF9wZSB7ICBjb2xvcjogcmdiKDEwNCwgMTA0LCA5MSk7fS5hY2UtZWNsaXBzZSAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGlvbiB7ICBiYWNrZ3JvdW5kOiByZ2IoMTgxLCAyMTMsIDI1NSk7fS5hY2UtZWNsaXBzZSAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQgeyAgbWFyZ2luOiAtMXB4IDAgMCAtMXB4OyAgYm9yZGVyOiAxcHggc29saWQgcmdiKDE5MiwgMTkyLCAxOTIpO30uYWNlLWVjbGlwc2UgLmFjZV9saW5lIC5hY2VfbWV0YS5hY2VfdGFnIHsgIGNvbG9yOnJnYig2MywgMTI3LCAxMjcpO30uYWNlLWVjbGlwc2UgLmFjZV9lbnRpdHkuYWNlX290aGVyLmFjZV9hdHRyaWJ1dGUtbmFtZSB7ICBjb2xvcjpyZ2IoMTI3LCAwLCAxMjcpO30uYWNlLWVjbGlwc2UgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigyNTUsIDI1NSwgMCk7fS5hY2UtZWNsaXBzZSAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6IHJnYigyMzIsIDI0MiwgMjU0KTt9Iix0LmNzc0NsYXNzPSJhY2UtZWNsaXBzZSI7dmFyIHI9ZSgiLi4vbGliL2RvbSIpO3IuaW1wb3J0Q3NzU3RyaW5nKHQuY3NzVGV4dCx0LmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-github.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvZ2l0aHViIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9kb20iXSxmdW5jdGlvbihlLHQsbil7dC5pc0Rhcms9ITEsdC5jc3NDbGFzcz0iYWNlLWdpdGh1YiIsdC5jc3NUZXh0PSIvKiBDU1Mgc3R5bGUgY29udGVudCBmcm9tIGdpdGh1YidzIGRlZmF1bHQgcHlnbWVudHMgaGlnaGxpZ2h0ZXIgdGVtcGxhdGUuICAgQ3Vyc29yIGFuZCBzZWxlY3Rpb24gc3R5bGVzIGZyb20gdGV4dG1hdGUuY3NzLiAqLy5hY2UtZ2l0aHViIC5hY2VfZWRpdG9yIHsgIGNvbG9yOiAjMzMzOyAgYmFja2dyb3VuZC1jb2xvcjogI0Y4RjhGODsgIGJvcmRlcjogMXB4IHNvbGlkICNDQ0M7ICBmb250OiAxM3B4ICdCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8nLCBDb3VyaWVyLCBtb25vc3BhY2UgIWltcG9ydGFudDsgIGxpbmUtaGVpZ2h0OiAxOXB4ICFpbXBvcnRhbnQ7ICBvdmVyZmxvdzogYXV0bzsgIHBhZGRpbmc6IDZweCAxMHB4OyAgYm9yZGVyLXJhZGl1czogM3B4OyAgcG9zaXRpb246IHJlbGF0aXZlOyAgbWFyZ2luLWJvdHRvbTogMTVweDt9LmFjZS1naXRodWIgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2U4ZThlODsgIGNvbG9yOiAjQUFBO30uYWNlLWdpdGh1YiAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQ6ICNmZmY7fS5hY2UtZ2l0aHViIC5hY2Vfa2V5d29yZCB7ICBmb250LXdlaWdodDogYm9sZDt9LmFjZS1naXRodWIgLmFjZV9zdHJpbmcgeyAgY29sb3I6ICNEMTQ7fS5hY2UtZ2l0aHViIC5hY2VfdmFyaWFibGUuYWNlX2NsYXNzIHsgIGNvbG9yOiB0ZWFsO30uYWNlLWdpdGh1YiAuYWNlX2NvbnN0YW50LmFjZV9udW1lcmljIHsgIGNvbG9yOiAjMDk5O30uYWNlLWdpdGh1YiAuYWNlX2NvbnN0YW50LmFjZV9idWlsZGluIHsgIGNvbG9yOiAjMDA4NkIzO30uYWNlLWdpdGh1YiAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiAjMDA4NkIzO30uYWNlLWdpdGh1YiAuYWNlX2NvbW1lbnQgeyAgY29sb3I6ICM5OTg7ICBmb250LXN0eWxlOiBpdGFsaWM7fS5hY2UtZ2l0aHViIC5hY2VfdmFyaWFibGUuYWNlX2xhbmd1YWdlICB7ICBjb2xvcjogIzAwODZCMzt9LmFjZS1naXRodWIgLmFjZV9wYXJlbiB7ICBmb250LXdlaWdodDogYm9sZDt9LmFjZS1naXRodWIgLmFjZV9ib29sZWFuIHsgIGZvbnQtd2VpZ2h0OiBib2xkO30uYWNlLWdpdGh1YiAuYWNlX3N0cmluZy5hY2VfcmVnZXhwIHsgIGNvbG9yOiAjMDA5OTI2OyAgZm9udC13ZWlnaHQ6IG5vcm1hbDt9LmFjZS1naXRodWIgLmFjZV92YXJpYWJsZS5hY2VfaW5zdGFuY2NlIHsgIGNvbG9yOiB0ZWFsO30uYWNlLWdpdGh1YiAuYWNlX2NvbnN0YW50LmFjZV9sYW5ndWFnZSB7ICBmb250LXdlaWdodDogYm9sZDt9LmFjZS1naXRodWIgLmFjZV90ZXh0LWxheWVyIHt9LmFjZS1naXRodWIgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCBibGFjazt9LmFjZS1naXRodWIgLmFjZV9jdXJzb3IuYWNlX292ZXJ3cml0ZSB7ICBib3JkZXItbGVmdDogMHB4OyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrO30uYWNlLWdpdGh1YiAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6IHJnYigyNTUsIDI1NSwgMjA0KTt9LmFjZS1naXRodWIgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogcmdiKDE4MSwgMjEzLCAyNTUpO30uYWNlLWdpdGh1Yi5tdWx0aXNlbGVjdCAuYWNlX3NlbGVjdGlvbi5zdGFydCB7ICBib3gtc2hhZG93OiAwIDAgM3B4IDBweCB3aGl0ZTsgIGJvcmRlci1yYWRpdXM6IDJweDt9LyogYm9sZCBrZXl3b3JkcyBjYXVzZSBjdXJzb3IgaXNzdWVzIGZvciBzb21lIGZvbnRzICovLyogdGhpcyBkaXNhYmxlcyBib2xkIHN0eWxlIGZvciBlZGl0b3IgYW5kIGtlZXBzIGZvciBzdGF0aWMgaGlnaGxpZ2h0ZXIgKi8uYWNlLWdpdGh1Yi5hY2VfZWRpdG9yIC5hY2VfbGluZSA+IHNwYW4geyAgICBmb250LXdlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7fS5hY2UtZ2l0aHViIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RlcCB7ICBiYWNrZ3JvdW5kOiByZ2IoMjUyLCAyNTUsIDApO30uYWNlLWdpdGh1YiAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0YWNrIHsgIGJhY2tncm91bmQ6IHJnYigxNjQsIDIyOSwgMTAxKTt9LmFjZS1naXRodWIgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9icmFja2V0IHsgIG1hcmdpbjogLTFweCAwIDAgLTFweDsgIGJvcmRlcjogMXB4IHNvbGlkIHJnYigxOTIsIDE5MiwgMTkyKTt9LmFjZS1naXRodWIgLmFjZV9ndXR0ZXJfYWN0aXZlX2xpbmV7ICAgIGJhY2tncm91bmQtY29sb3IgOiByZ2JhKDAsIDAsIDAsIDAuMDcpO30uYWNlLWdpdGh1YiAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYmFja2dyb3VuZDogcmdiKDI1MCwgMjUwLCAyNTUpOyAgYm9yZGVyOiAxcHggc29saWQgcmdiKDIwMCwgMjAwLCAyNTApO30uYWNlLWdpdGh1YiAuYWNlX3ByaW50X21hcmdpbiB7ICB3aWR0aDogMXB4OyAgYmFja2dyb3VuZDogI2U4ZThlODt9Ijt2YXIgcj1lKCIuLi9saWIvZG9tIik7ci5pbXBvcnRDc3NTdHJpbmcodC5jc3NUZXh0LHQuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-idle_fingers.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvaWRsZV9maW5nZXJzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9kb20iXSxmdW5jdGlvbihlLHQsbil7dC5pc0Rhcms9ITAsdC5jc3NDbGFzcz0iYWNlLWlkbGUtZmluZ2VycyIsdC5jc3NUZXh0PSIuYWNlLWlkbGUtZmluZ2VycyAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtaWRsZS1maW5nZXJzIC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjM2IzYjNiOyAgY29sb3I6ICNmZmY7fS5hY2UtaWRsZS1maW5nZXJzIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjM2IzYjNiO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICMzMjMyMzI7fS5hY2UtaWRsZS1maW5nZXJzIC5hY2VfdGV4dC1sYXllciB7ICBjb2xvcjogI0ZGRkZGRjt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjOTFGRjAwO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzkxRkYwMDt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogcmdiYSg5MCwgMTAwLCAxMjYsIDAuODgpO30uYWNlLWlkbGUtZmluZ2Vycy5tdWx0aXNlbGVjdCAuYWNlX3NlbGVjdGlvbi5zdGFydCB7ICBib3gtc2hhZG93OiAwIDAgM3B4IDBweCAjMzIzMjMyOyAgYm9yZGVyLXJhZGl1czogMnB4O30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQgeyAgbWFyZ2luOiAtMXB4IDAgMCAtMXB4OyAgYm9yZGVyOiAxcHggc29saWQgIzQwNDA0MDt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9hY3RpdmVfbGluZSB7ICBiYWNrZ3JvdW5kOiAjMzUzNjM3O30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX2d1dHRlcl9hY3RpdmVfbGluZSB7ICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzUzNjM3O30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg5MCwgMTAwLCAxMjYsIDAuODgpO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogIzQwNDA0MDt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9rZXl3b3JkLCAuYWNlLWlkbGUtZmluZ2VycyAuYWNlX21ldGEgeyAgY29sb3I6I0NDNzgzMzt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9jb25zdGFudCwgLmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9jb25zdGFudC5hY2Vfb3RoZXIgeyAgY29sb3I6IzZDOTlCQjt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLCAgeyAgY29sb3I6IzZDOTlCQjt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLmFjZV9lc2NhcGUsICB7ICBjb2xvcjojNkM5OUJCO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX2ludmFsaWQgeyAgY29sb3I6I0ZGRkZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNGRjAwMDA7fS5hY2UtaWRsZS1maW5nZXJzIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6IzZDOTlCQjt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogI0NDNzgzMzsgICAgYm9yZGVyLWNvbG9yOiAjRkZGRkZGO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiNCODM0MjY7fS5hY2UtaWRsZS1maW5nZXJzIC5hY2VfdmFyaWFibGUuYWNlX3BhcmFtZXRlciB7ICBmb250LXN0eWxlOml0YWxpYzt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9zdHJpbmcgeyAgY29sb3I6I0E1QzI2MTt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9zdHJpbmcuYWNlX3JlZ2V4cCB7ICBjb2xvcjojQ0NDQzMzO30uYWNlLWlkbGUtZmluZ2VycyAuYWNlX2NvbW1lbnQgeyAgZm9udC1zdHlsZTppdGFsaWM7Y29sb3I6I0JDOTQ1ODt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9tZXRhLmFjZV90YWcgeyAgY29sb3I6I0ZGRTVCQjt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9lbnRpdHkuYWNlX25hbWUgeyAgY29sb3I6I0ZGQzY2RDt9LmFjZS1pZGxlLWZpbmdlcnMgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fS5hY2UtaWRsZS1maW5nZXJzIC5hY2VfY29sbGFiLmFjZV91c2VyMSB7ICBjb2xvcjojMzIzMjMyO2JhY2tncm91bmQtY29sb3I6I0ZGRjk4MDt9Ijt2YXIgcj1lKCIuLi9saWIvZG9tIik7ci5pbXBvcnRDc3NTdHJpbmcodC5jc3NUZXh0LHQuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-kr_theme.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUva3JfdGhlbWUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmlzRGFyaz0hMCx0LmNzc0NsYXNzPSJhY2Uta3ItdGhlbWUiLHQuY3NzVGV4dD0iLmFjZS1rci10aGVtZSAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2Uta3ItdGhlbWUgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2Uta3ItdGhlbWUgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogIzFjMTkxNzsgIGNvbG9yOiAjRkNGRkUwO30uYWNlLWtyLXRoZW1lIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjMWMxOTE3O30uYWNlLWtyLXRoZW1lIC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzBCMEEwOTt9LmFjZS1rci10aGVtZSAuYWNlX3RleHQtbGF5ZXIgeyAgY29sb3I6ICNGQ0ZGRTA7fS5hY2Uta3ItdGhlbWUgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRkY5OTAwO30uYWNlLWtyLXRoZW1lIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRkY5OTAwO30uYWNlLWtyLXRoZW1lIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6IHJnYmEoMTcwLCAwLCAyNTUsIDAuNDUpO30uYWNlLWtyLXRoZW1lLm11bHRpc2VsZWN0IC5hY2Vfc2VsZWN0aW9uLnN0YXJ0IHsgIGJveC1zaGFkb3c6IDAgMCAzcHggMHB4ICMwQjBBMDk7ICBib3JkZXItcmFkaXVzOiAycHg7fS5hY2Uta3ItdGhlbWUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigxMDIsIDgyLCAwKTt9LmFjZS1rci10aGVtZSAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQgeyAgbWFyZ2luOiAtMXB4IDAgMCAtMXB4OyAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDE3NywgMTExLCAwLjMyKTt9LmFjZS1rci10aGVtZSAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6ICMzODQwM0Q7fS5hY2Uta3ItdGhlbWUgLmFjZV9ndXR0ZXJfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZC1jb2xvciA6ICMzODQwM0Q7fS5hY2Uta3ItdGhlbWUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTcwLCAwLCAyNTUsIDAuNDUpO30uYWNlLWtyLXRoZW1lIC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiByZ2JhKDI1NSwgMTc3LCAxMTEsIDAuMzIpO30uYWNlLWtyLXRoZW1lIC5hY2Vfa2V5d29yZCwgLmFjZS1rci10aGVtZSAuYWNlX21ldGEgeyAgY29sb3I6Izk0OUM4Qjt9LmFjZS1rci10aGVtZSAuYWNlX2NvbnN0YW50LCAuYWNlLWtyLXRoZW1lIC5hY2VfY29uc3RhbnQuYWNlX290aGVyIHsgIGNvbG9yOnJnYmEoMjEwLCAxMTcsIDI0LCAwLjc2KTt9LmFjZS1rci10aGVtZSAuYWNlX2NvbnN0YW50LmFjZV9jaGFyYWN0ZXIsICB7ICBjb2xvcjpyZ2JhKDIxMCwgMTE3LCAyNCwgMC43Nik7fS5hY2Uta3ItdGhlbWUgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLmFjZV9lc2NhcGUsICB7ICBjb2xvcjpyZ2JhKDIxMCwgMTE3LCAyNCwgMC43Nik7fS5hY2Uta3ItdGhlbWUgLmFjZV9pbnZhbGlkIHsgIGNvbG9yOiNGOEY4Rjg7YmFja2dyb3VuZC1jb2xvcjojQTQxMzAwO30uYWNlLWtyLXRoZW1lIC5hY2Vfc3VwcG9ydCB7ICBjb2xvcjojOUZDMjhBO30uYWNlLWtyLXRoZW1lIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6I0MyN0U2Njt9LmFjZS1rci10aGVtZSAuYWNlX2ZvbGQgeyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTQ5QzhCOyAgICBib3JkZXItY29sb3I6ICNGQ0ZGRTA7fS5hY2Uta3ItdGhlbWUgLmFjZV9zdXBwb3J0LmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojODU4NzNBO30uYWNlLWtyLXRoZW1lIC5hY2Vfc3RvcmFnZSB7ICBjb2xvcjojRkZFRTgwO30uYWNlLWtyLXRoZW1lIC5hY2Vfc3RyaW5nLmFjZV9yZWdleHAgeyAgY29sb3I6cmdiYSgxMjUsIDI1NSwgMTkyLCAwLjY1KTt9LmFjZS1rci10aGVtZSAuYWNlX2NvbW1lbnQgeyAgZm9udC1zdHlsZTppdGFsaWM7Y29sb3I6IzcwNkQ1Qjt9LmFjZS1rci10aGVtZSAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiNEMUE3OTY7fS5hY2Uta3ItdGhlbWUgLmFjZV92YXJpYWJsZS5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6I0ZGODBFMTt9LmFjZS1rci10aGVtZSAuYWNlX21ldGEuYWNlX3RhZyB7ICBjb2xvcjojQkFCRDlDO30uYWNlLWtyLXRoZW1lIC5hY2VfbWFya3VwLmFjZV91bmRlcmxpbmUgeyAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30uYWNlLWtyLXRoZW1lIC5hY2VfbWFya3VwLmFjZV9saXN0IHsgIGJhY2tncm91bmQtY29sb3I6IzBGMDA0MDt9Ijt2YXIgcj1lKCIuLi9saWIvZG9tIik7ci5pbXBvcnRDc3NTdHJpbmcodC5jc3NUZXh0LHQuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-merbivore.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvbWVyYml2b3JlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9kb20iXSxmdW5jdGlvbihlLHQsbil7dC5pc0Rhcms9ITAsdC5jc3NDbGFzcz0iYWNlLW1lcmJpdm9yZSIsdC5jc3NUZXh0PSIuYWNlLW1lcmJpdm9yZSAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtbWVyYml2b3JlIC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLW1lcmJpdm9yZSAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjMjAyMDIwOyAgY29sb3I6ICNFNkUxREM7fS5hY2UtbWVyYml2b3JlIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLW1lcmJpdm9yZSAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICMxNjE2MTY7fS5hY2UtbWVyYml2b3JlIC5hY2VfdGV4dC1sYXllciB7ICBjb2xvcjogI0U2RTFEQzt9LmFjZS1tZXJiaXZvcmUgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRkZGRkZGO30uYWNlLW1lcmJpdm9yZSAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0ZGRkZGRjt9LmFjZS1tZXJiaXZvcmUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogIzQ1NDU0NTt9LmFjZS1tZXJiaXZvcmUubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzE2MTYxNjsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1tZXJiaXZvcmUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigxMDIsIDgyLCAwKTt9LmFjZS1tZXJiaXZvcmUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9icmFja2V0IHsgIG1hcmdpbjogLTFweCAwIDAgLTFweDsgIGJvcmRlcjogMXB4IHNvbGlkICM0MDQwNDA7fS5hY2UtbWVyYml2b3JlIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogIzMzMzQzNTt9LmFjZS1tZXJiaXZvcmUgLmFjZV9ndXR0ZXJfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZC1jb2xvciA6ICMzMzM0MzU7fS5hY2UtbWVyYml2b3JlIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBib3JkZXI6IDFweCBzb2xpZCAjNDU0NTQ1O30uYWNlLW1lcmJpdm9yZSAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogIzQwNDA0MDt9LmFjZS1tZXJiaXZvcmUgLmFjZV9rZXl3b3JkLCAuYWNlLW1lcmJpdm9yZSAuYWNlX21ldGEgeyAgY29sb3I6I0ZDNkYwOTt9LmFjZS1tZXJiaXZvcmUgLmFjZV9jb25zdGFudCwgLmFjZS1tZXJiaXZvcmUgLmFjZV9jb25zdGFudC5hY2Vfb3RoZXIgeyAgY29sb3I6IzFFREFGQjt9LmFjZS1tZXJiaXZvcmUgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLCAgeyAgY29sb3I6IzFFREFGQjt9LmFjZS1tZXJiaXZvcmUgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLmFjZV9lc2NhcGUsICB7ICBjb2xvcjojMUVEQUZCO30uYWNlLW1lcmJpdm9yZSAuYWNlX2NvbnN0YW50LmFjZV9sYW5ndWFnZSB7ICBjb2xvcjojRkRDMjUxO30uYWNlLW1lcmJpdm9yZSAuYWNlX2NvbnN0YW50LmFjZV9saWJyYXJ5IHsgIGNvbG9yOiM4REZGMEE7fS5hY2UtbWVyYml2b3JlIC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6IzU4QzU1NDt9LmFjZS1tZXJiaXZvcmUgLmFjZV9pbnZhbGlkIHsgIGNvbG9yOiNGRkZGRkY7YmFja2dyb3VuZC1jb2xvcjojOTkwMDAwO30uYWNlLW1lcmJpdm9yZSAuYWNlX3N1cHBvcnQuYWNlX2NvbnN0YW50IHsgIGNvbG9yOiM4REZGMEE7fS5hY2UtbWVyYml2b3JlIC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICNGQzZGMDk7ICAgIGJvcmRlci1jb2xvcjogI0U2RTFEQzt9LmFjZS1tZXJiaXZvcmUgLmFjZV9zdXBwb3J0LmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojRkM2RjA5O30uYWNlLW1lcmJpdm9yZSAuYWNlX3N0b3JhZ2UgeyAgY29sb3I6I0ZDNkYwOTt9LmFjZS1tZXJiaXZvcmUgLmFjZV9zdHJpbmcgeyAgY29sb3I6IzhERkYwQTt9LmFjZS1tZXJiaXZvcmUgLmFjZV9jb21tZW50IHsgIGZvbnQtc3R5bGU6aXRhbGljO2NvbG9yOiNBRDJFQTQ7fS5hY2UtbWVyYml2b3JlIC5hY2VfbWV0YS5hY2VfdGFnIHsgIGNvbG9yOiNGQzZGMDk7fS5hY2UtbWVyYml2b3JlIC5hY2VfZW50aXR5LmFjZV9vdGhlci5hY2VfYXR0cmlidXRlLW5hbWUgeyAgY29sb3I6I0ZGRkY4OTt9LmFjZS1tZXJiaXZvcmUgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSI7dmFyIHI9ZSgiLi4vbGliL2RvbSIpO3IuaW1wb3J0Q3NzU3RyaW5nKHQuY3NzVGV4dCx0LmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-merbivore_soft.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvbWVyYml2b3JlX3NvZnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmlzRGFyaz0hMCx0LmNzc0NsYXNzPSJhY2UtbWVyYml2b3JlLXNvZnQiLHQuY3NzVGV4dD0iLmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogIzI2MjQyNDsgIGNvbG9yOiAjRTZFMURDO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjMjYyNDI0O30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzFDMUMxQzt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX3RleHQtbGF5ZXIgeyAgY29sb3I6ICNFNkUxREM7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRkZGRkZGO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRkZGRkZGO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6ICM0OTQ5NDk7fS5hY2UtbWVyYml2b3JlLXNvZnQubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzFDMUMxQzsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCAjNDA0MDQwO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogIzMzMzQzNTt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX2d1dHRlcl9hY3RpdmVfbGluZSB7ICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzNDM1O30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBib3JkZXI6IDFweCBzb2xpZCAjNDk0OTQ5O30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiAjNDA0MDQwO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2Vfa2V5d29yZCwgLmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX21ldGEgeyAgY29sb3I6I0ZDODAzQTt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX2NvbnN0YW50LCAuYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfY29uc3RhbnQuYWNlX290aGVyIHsgIGNvbG9yOiM2OEMxRDg7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLCAgeyAgY29sb3I6IzY4QzFEODt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX2NvbnN0YW50LmFjZV9jaGFyYWN0ZXIuYWNlX2VzY2FwZSwgIHsgIGNvbG9yOiM2OEMxRDg7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9jb25zdGFudC5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6I0UxQzU4Mjt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX2NvbnN0YW50LmFjZV9saWJyYXJ5IHsgIGNvbG9yOiM4RUM2NUY7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7ICBjb2xvcjojN0ZDNTc4O30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfaW52YWxpZCB7ICBjb2xvcjojRkZGRkZGO2JhY2tncm91bmQtY29sb3I6I0ZFMzgzODt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX2ludmFsaWQuYWNlX2RlcHJlY2F0ZWQgeyAgY29sb3I6I0ZGRkZGRjtiYWNrZ3JvdW5kLWNvbG9yOiNGRTM4Mzg7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9zdXBwb3J0LmFjZV9jb25zdGFudCB7ICBjb2xvcjojOEVDNjVGO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICNGQzgwM0E7ICAgIGJvcmRlci1jb2xvcjogI0U2RTFEQzt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX3N0b3JhZ2UgeyAgY29sb3I6I0ZDODAzQTt9LmFjZS1tZXJiaXZvcmUtc29mdCAuYWNlX3N0cmluZyB7ICBjb2xvcjojOEVDNjVGO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfY29tbWVudCB7ICBmb250LXN0eWxlOml0YWxpYztjb2xvcjojQUM0QkI4O30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfbWV0YSB7ICBmb250LXN0eWxlOml0YWxpYztjb2xvcjojQUM0QkI4O30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfbWV0YS5hY2VfdGFnIHsgIGNvbG9yOiNGQzgwM0E7fS5hY2UtbWVyYml2b3JlLXNvZnQgLmFjZV9lbnRpdHkuYWNlX290aGVyLmFjZV9hdHRyaWJ1dGUtbmFtZSB7ICBjb2xvcjojRUFGMUEzO30uYWNlLW1lcmJpdm9yZS1zb2Z0IC5hY2VfbWFya3VwLmFjZV91bmRlcmxpbmUgeyAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30iO3ZhciByPWUoIi4uL2xpYi9kb20iKTtyLmltcG9ydENzc1N0cmluZyh0LmNzc1RleHQsdC5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-monokai.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvbW9ub2thaSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZG9tIl0sZnVuY3Rpb24oZSx0LG4pe3QuaXNEYXJrPSEwLHQuY3NzQ2xhc3M9ImFjZS1tb25va2FpIix0LmNzc1RleHQ9Ii5hY2UtbW9ub2thaSAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtbW9ub2thaSAuYWNlX2VkaXRvci5hY2VfZm9jdXMgeyAgYm9yZGVyOiAycHggc29saWQgIzMyN2ZiZDt9LmFjZS1tb25va2FpIC5hY2VfZ3V0dGVyIHsgIGJhY2tncm91bmQ6ICMyZjMxMjk7ICBjb2xvcjogI2YxZjFmMTt9LmFjZS1tb25va2FpIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLW1vbm9rYWkgLmFjZV9zY3JvbGxlciB7ICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjcyODIyO30uYWNlLW1vbm9rYWkgLmFjZV90ZXh0LWxheWVyIHsgIGNvbG9yOiAjRjhGOEYyO30uYWNlLW1vbm9rYWkgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRjhGOEYwO30uYWNlLW1vbm9rYWkgLmFjZV9jdXJzb3IuYWNlX292ZXJ3cml0ZSB7ICBib3JkZXItbGVmdDogMHB4OyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGOEY4RjA7fS5hY2UtbW9ub2thaSAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGlvbiB7ICBiYWNrZ3JvdW5kOiAjNDk0ODNFO30uYWNlLW1vbm9rYWkubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzI3MjgyMjsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1tb25va2FpIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RlcCB7ICBiYWNrZ3JvdW5kOiByZ2IoMTAyLCA4MiwgMCk7fS5hY2UtbW9ub2thaSAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQgeyAgbWFyZ2luOiAtMXB4IDAgMCAtMXB4OyAgYm9yZGVyOiAxcHggc29saWQgIzQ5NDgzRTt9LmFjZS1tb25va2FpIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogIzQ5NDgzRTt9LmFjZS1tb25va2FpIC5hY2VfZ3V0dGVyX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQtY29sb3I6ICMxOTE5MTY7fS5hY2UtbW9ub2thaSAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYm9yZGVyOiAxcHggc29saWQgIzQ5NDgzRTt9LmFjZS1tb25va2FpIC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiAjNDk0ODNFO30uYWNlLW1vbm9rYWkgLmFjZV9rZXl3b3JkLCAuYWNlLW1vbm9rYWkgLmFjZV9tZXRhIHsgIGNvbG9yOiNGOTI2NzI7fS5hY2UtbW9ub2thaSAuYWNlX2NvbnN0YW50LmFjZV9sYW5ndWFnZSB7ICBjb2xvcjojQUU4MUZGO30uYWNlLW1vbm9rYWkgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7ICBjb2xvcjojQUU4MUZGO30uYWNlLW1vbm9rYWkgLmFjZV9jb25zdGFudC5hY2Vfb3RoZXIgeyAgY29sb3I6I0FFODFGRjt9LmFjZS1tb25va2FpIC5hY2VfaW52YWxpZCB7ICBjb2xvcjojRjhGOEYwO2JhY2tncm91bmQtY29sb3I6I0Y5MjY3Mjt9LmFjZS1tb25va2FpIC5hY2VfaW52YWxpZC5hY2VfZGVwcmVjYXRlZCB7ICBjb2xvcjojRjhGOEYwO2JhY2tncm91bmQtY29sb3I6I0FFODFGRjt9LmFjZS1tb25va2FpIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6IzY2RDlFRjt9LmFjZS1tb25va2FpIC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICNBNkUyMkU7ICAgIGJvcmRlci1jb2xvcjogI0Y4RjhGMjt9LmFjZS1tb25va2FpIC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6IzY2RDlFRjt9LmFjZS1tb25va2FpIC5hY2Vfc3RvcmFnZSB7ICBjb2xvcjojRjkyNjcyO30uYWNlLW1vbm9rYWkgLmFjZV9zdG9yYWdlLmFjZV90eXBlLCAgLmFjZS1tb25va2FpIC5hY2Vfc3VwcG9ydC5hY2VfdHlwZXsgIGZvbnQtc3R5bGU6aXRhbGljO2NvbG9yOiM2NkQ5RUY7fS5hY2UtbW9ub2thaSAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiNBNkUyMkU7fS5hY2UtbW9ub2thaSAuYWNlX3ZhcmlhYmxlLmFjZV9wYXJhbWV0ZXIgeyAgZm9udC1zdHlsZTppdGFsaWM7Y29sb3I6I0ZEOTcxRjt9LmFjZS1tb25va2FpIC5hY2Vfc3RyaW5nIHsgIGNvbG9yOiNFNkRCNzQ7fS5hY2UtbW9ub2thaSAuYWNlX2NvbW1lbnQgeyAgY29sb3I6Izc1NzE1RTt9LmFjZS1tb25va2FpIC5hY2VfZW50aXR5LmFjZV9vdGhlci5hY2VfYXR0cmlidXRlLW5hbWUgeyAgY29sb3I6I0E2RTIyRTt9LmFjZS1tb25va2FpIC5hY2VfZW50aXR5LmFjZV9uYW1lLmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojQTZFMjJFO30uYWNlLW1vbm9rYWkgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSI7dmFyIHI9ZSgiLi4vbGliL2RvbSIpO3IuaW1wb3J0Q3NzU3RyaW5nKHQuY3NzVGV4dCx0LmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-mono_industrial.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvbW9ub19pbmR1c3RyaWFsIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9kb20iXSxmdW5jdGlvbihlLHQsbil7dC5pc0Rhcms9ITAsdC5jc3NDbGFzcz0iYWNlLW1vbm8taW5kdXN0cmlhbCIsdC5jc3NUZXh0PSIuYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjMWQyNTIxOyAgY29sb3I6ICNmZmY7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICMyMjJDMjg7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfdGV4dC1sYXllciB7ICBjb2xvcjogI0ZGRkZGRjt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRkZGRkZGO30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0ZGRkZGRjt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogcmdiYSgxNDUsIDE1MywgMTQ4LCAwLjQwKTt9LmFjZS1tb25vLWluZHVzdHJpYWwubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzIyMkMyODsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigxMDIsIDgyLCAwKTt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9icmFja2V0IHsgIG1hcmdpbjogLTFweCAwIDAgLTFweDsgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTAyLCAxMDgsIDEwNCwgMC41MCk7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogcmdiYSgxMiwgMTMsIDEyLCAwLjI1KTt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9ndXR0ZXJfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMiwgMTMsIDEyLCAwLjI1KTt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTQ1LCAxNTMsIDE0OCwgMC40MCk7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiByZ2JhKDEwMiwgMTA4LCAxMDQsIDAuNTApO30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2tleXdvcmQsIC5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfbWV0YSB7ICBjb2xvcjojQTM5RTY0O30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2tleXdvcmQuYWNlX29wZXJhdG9yIHsgIGNvbG9yOiNBOEIzQUI7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfY29uc3RhbnQsIC5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfY29uc3RhbnQuYWNlX290aGVyIHsgIGNvbG9yOiNFOTg4MDA7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfY29uc3RhbnQuYWNlX2NoYXJhY3RlciwgIHsgIGNvbG9yOiNFOTg4MDA7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfY29uc3RhbnQuYWNlX2NoYXJhY3Rlci5hY2VfZXNjYXBlLCAgeyAgY29sb3I6I0U5ODgwMDt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9jb25zdGFudC5hY2VfbnVtZXJpYyB7ICBjb2xvcjojRTk4ODAwO30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2ludmFsaWQgeyAgY29sb3I6I0ZGRkZGRjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTUzLCAwLCAwLCAwLjY4KTt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9zdXBwb3J0LmFjZV9jb25zdGFudCB7ICBjb2xvcjojQzg3NTAwO30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2ZvbGQgeyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQThCM0FCOyAgICBib3JkZXItY29sb3I6ICNGRkZGRkY7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6IzU4OEU2MDt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9zdG9yYWdlIHsgIGNvbG9yOiNDMjNCMDA7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfdmFyaWFibGUgeyAgY29sb3I6I0E4QjNBQjt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV92YXJpYWJsZS5hY2VfcGFyYW1ldGVyIHsgIGNvbG9yOiM2NDhCRDI7fS5hY2UtbW9uby1pbmR1c3RyaWFsIC5hY2VfY29tbWVudCB7ICBjb2xvcjojNjY2QzY4O2JhY2tncm91bmQtY29sb3I6IzE1MUMxOTt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV92YXJpYWJsZS5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6IzY0OEJEMjt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9lbnRpdHkuYWNlX290aGVyLmFjZV9hdHRyaWJ1dGUtbmFtZSB7ICBjb2xvcjojOTA5OTkzO30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2VudGl0eS5hY2VfbmFtZSB7ICBjb2xvcjojNTc3OEI2O30uYWNlLW1vbm8taW5kdXN0cmlhbCAuYWNlX2VudGl0eS5hY2VfbmFtZS5hY2VfZnVuY3Rpb24geyAgY29sb3I6I0E4QjNBQjt9LmFjZS1tb25vLWluZHVzdHJpYWwgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSI7dmFyIHI9ZSgiLi4vbGliL2RvbSIpO3IuaW1wb3J0Q3NzU3RyaW5nKHQuY3NzVGV4dCx0LmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-pastel_on_dark.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvcGFzdGVsX29uX2RhcmsiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmlzRGFyaz0hMCx0LmNzc0NsYXNzPSJhY2UtcGFzdGVsLW9uLWRhcmsiLHQuY3NzVGV4dD0iLmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogIzM1MzAzMDsgIGNvbG9yOiAjOEY5MzhGO30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjMzUzMDMwO30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzJDMjgyODt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX3RleHQtbGF5ZXIgeyAgY29sb3I6ICM4RjkzOEY7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjQTdBN0E3O30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQTdBN0E3O30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6IHJnYmEoMjIxLCAyNDAsIDI1NSwgMC4yMCk7fS5hY2UtcGFzdGVsLW9uLWRhcmsubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzJDMjgyODsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpO30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAzMSk7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9ndXR0ZXJfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAzMSk7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjIxLCAyNDAsIDI1NSwgMC4yMCk7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9pbnZpc2libGUgeyAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9rZXl3b3JkLCAuYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfbWV0YSB7ICBjb2xvcjojNzU3YUQ4O30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2Vfa2V5d29yZC5hY2Vfb3BlcmF0b3IgeyAgY29sb3I6Izc5Nzg3ODt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX2NvbnN0YW50LCAuYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfY29uc3RhbnQuYWNlX290aGVyIHsgIGNvbG9yOiM0RkI3QzU7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLCAgeyAgY29sb3I6IzRGQjdDNTt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX2NvbnN0YW50LmFjZV9jaGFyYWN0ZXIuYWNlX2VzY2FwZSwgIHsgIGNvbG9yOiM0RkI3QzU7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9jb25zdGFudC5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6I0RFOEUzMDt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX2NvbnN0YW50LmFjZV9udW1lcmljIHsgIGNvbG9yOiNDQ0NDQ0M7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9pbnZhbGlkIHsgIGNvbG9yOiNGOEY4Rjg7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDg2LCA0NSwgODYsIDAuNzUpO30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfaW52YWxpZC5hY2VfaWxsZWdhbCB7ICBjb2xvcjojRjhGOEY4O2JhY2tncm91bmQtY29sb3I6cmdiYSg4NiwgNDUsIDg2LCAwLjc1KTt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX2ludmFsaWQuYWNlX2RlcHJlY2F0ZWQgeyAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtmb250LXN0eWxlOml0YWxpYztjb2xvcjojRDJBOEExO30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICM3NTdhRDg7ICAgIGJvcmRlci1jb2xvcjogIzhGOTM4Rjt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiNBRUIyRjg7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9zdHJpbmcgeyAgY29sb3I6IzY2QTk2ODt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX3N0cmluZy5hY2VfcmVnZXhwIHsgIGNvbG9yOiNFOUMwNjI7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV9jb21tZW50IHsgIGNvbG9yOiNBNkM2RkY7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjojQkVCRjU1O30uYWNlLXBhc3RlbC1vbi1kYXJrIC5hY2VfdmFyaWFibGUuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiNDMUMxNDQ7fS5hY2UtcGFzdGVsLW9uLWRhcmsgLmFjZV94bWxfcGUgeyAgY29sb3I6IzQ5NDk0OTt9LmFjZS1wYXN0ZWwtb24tZGFyayAuYWNlX21hcmt1cC5hY2VfdW5kZXJsaW5lIHsgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9Ijt2YXIgcj1lKCIuLi9saWIvZG9tIik7ci5pbXBvcnRDc3NTdHJpbmcodC5jc3NUZXh0LHQuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-solarized_dark.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvc29sYXJpemVkX2RhcmsiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmlzRGFyaz0hMCx0LmNzc0NsYXNzPSJhY2Utc29sYXJpemVkLWRhcmsiLHQuY3NzVGV4dD0iLmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogIzAxMzEzZjsgIGNvbG9yOiAjZDBlZGY3O30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzAwMkIzNjt9LmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX3RleHQtbGF5ZXIgeyAgY29sb3I6ICM5M0ExQTE7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRDMwMTAyO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRDMwMTAyO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6ICMwNzM2NDI7fS5hY2Utc29sYXJpemVkLWRhcmsubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzAwMkIzNjsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE0NywgMTYxLCAxNjEsIDAuNTApO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogIzA3MzY0Mjt9LmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX2d1dHRlcl9hY3RpdmVfbGluZSB7ICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGQzNDQwO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBib3JkZXI6IDFweCBzb2xpZCAjMDczNjQyO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiByZ2JhKDE0NywgMTYxLCAxNjEsIDAuNTApO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2Vfa2V5d29yZCwgLmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX21ldGEgeyAgY29sb3I6Izg1OTkwMDt9LmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX2NvbnN0YW50LmFjZV9sYW5ndWFnZSB7ICBjb2xvcjojQjU4OTAwO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6I0QzMzY4Mjt9LmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX2NvbnN0YW50LmFjZV9vdGhlciB7ICBjb2xvcjojQ0I0QjE2O30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICMyNjhCRDI7ICAgIGJvcmRlci1jb2xvcjogIzkzQTFBMTt9LmFjZS1zb2xhcml6ZWQtZGFyayAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiMyNjhCRDI7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9zdG9yYWdlIHsgIGNvbG9yOiM5M0ExQTE7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjojMjY4QkQyO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2Vfc3RyaW5nIHsgIGNvbG9yOiMyQUExOTg7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9zdHJpbmcuYWNlX3JlZ2V4cCB7ICBjb2xvcjojRDMwMTAyO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfY29tbWVudCB7ICBmb250LXN0eWxlOml0YWxpYztjb2xvcjojNjU3QjgzO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfdmFyaWFibGUuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiMyNjhCRDI7fS5hY2Utc29sYXJpemVkLWRhcmsgLmFjZV9lbnRpdHkuYWNlX290aGVyLmFjZV9hdHRyaWJ1dGUtbmFtZSB7ICBjb2xvcjojOTNBMUExO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfZW50aXR5LmFjZV9uYW1lLmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojMjY4QkQyO30uYWNlLXNvbGFyaXplZC1kYXJrIC5hY2VfbWFya3VwLmFjZV91bmRlcmxpbmUgeyAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30iO3ZhciByPWUoIi4uL2xpYi9kb20iKTtyLmltcG9ydENzc1N0cmluZyh0LmNzc1RleHQsdC5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-solarized_light.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvc29sYXJpemVkX2xpZ2h0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9kb20iXSxmdW5jdGlvbihlLHQsbil7dC5pc0Rhcms9ITEsdC5jc3NDbGFzcz0iYWNlLXNvbGFyaXplZC1saWdodCIsdC5jc3NUZXh0PSIuYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjZmJmMWQzOyAgY29sb3I6ICMzMzM7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICNGREY2RTM7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfdGV4dC1sYXllciB7ICBjb2xvcjogIzU4NkU3NTt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMDAwMDAwO30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzAwMDAwMDt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogIzA3MzY0Mjt9LmFjZS1zb2xhcml6ZWQtbGlnaHQubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggI0ZERjZFMzsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigyNTUsIDI1NSwgMCk7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE0NywgMTYxLCAxNjEsIDAuNTApO30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6ICNFRUU4RDU7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfZ3V0dGVyX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQtY29sb3IgOiAjZGNkY2RjO30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYm9yZGVyOiAxcHggc29saWQgIzA3MzY0Mjt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9pbnZpc2libGUgeyAgY29sb3I6IHJnYmEoMTQ3LCAxNjEsIDE2MSwgMC41MCk7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2Vfa2V5d29yZCwgLmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9tZXRhIHsgIGNvbG9yOiM4NTk5MDA7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfY29uc3RhbnQuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiNCNTg5MDA7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6I0QzMzY4Mjt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9jb25zdGFudC5hY2Vfb3RoZXIgeyAgY29sb3I6I0NCNEIxNjt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogIzI2OEJEMjsgICAgYm9yZGVyLWNvbG9yOiAjNTg2RTc1O30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiMyNjhCRDI7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2Vfc3RvcmFnZSB7ICBjb2xvcjojMDczNjQyO30uYWNlLXNvbGFyaXplZC1saWdodCAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiMyNjhCRDI7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2Vfc3RyaW5nIHsgIGNvbG9yOiMyQUExOTg7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2Vfc3RyaW5nLmFjZV9yZWdleHAgeyAgY29sb3I6I0QzMDEwMjt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9jb21tZW50IHsgIGNvbG9yOiM5M0ExQTE7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfdmFyaWFibGUuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiMyNjhCRDI7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfZW50aXR5LmFjZV9vdGhlci5hY2VfYXR0cmlidXRlLW5hbWUgeyAgY29sb3I6IzkzQTFBMTt9LmFjZS1zb2xhcml6ZWQtbGlnaHQgLmFjZV9lbnRpdHkuYWNlX25hbWUuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiMyNjhCRDI7fS5hY2Utc29sYXJpemVkLWxpZ2h0IC5hY2VfbWFya3VwLmFjZV91bmRlcmxpbmUgeyAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30iO3ZhciByPWUoIi4uL2xpYi9kb20iKTtyLmltcG9ydENzc1N0cmluZyh0LmNzc1RleHQsdC5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-textmate.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdGV4dG1hdGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmlzRGFyaz0hMSx0LmNzc0NsYXNzPSJhY2UtdG0iLHQuY3NzVGV4dD0iLmFjZS10bSAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdG0gLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtdG0gLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2YwZjBmMDsgIGNvbG9yOiAjMzMzO30uYWNlLXRtIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZThlOGU4O30uYWNlLXRtIC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICM2QjcyRTY7fS5hY2UtdG0gLmFjZV90ZXh0LWxheWVyIHt9LmFjZS10bSAuYWNlX2N1cnNvciB7ICBib3JkZXItbGVmdDogMnB4IHNvbGlkIGJsYWNrO30uYWNlLXRtIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazt9ICAgICAgICAuYWNlLXRtIC5hY2VfbGluZSAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpO30uYWNlLXRtIC5hY2VfbGluZSAuYWNlX3N0b3JhZ2UsLmFjZS10bSAuYWNlX2xpbmUgLmFjZV9rZXl3b3JkIHsgIGNvbG9yOiBibHVlO30uYWNlLXRtIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50IHsgIGNvbG9yOiByZ2IoMTk3LCA2LCAxMSk7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX2J1aWxkaW4geyAgY29sb3I6IHJnYig4OCwgNzIsIDI0Nik7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiByZ2IoODgsIDkyLCAyNDYpO30uYWNlLXRtIC5hY2VfbGluZSAuYWNlX2NvbnN0YW50LmFjZV9saWJyYXJ5IHsgIGNvbG9yOiByZ2IoNiwgMTUwLCAxNCk7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2VfaW52YWxpZCB7ICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMCwgMCwgMC4xKTsgIGNvbG9yOiByZWQ7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6IHJnYig2MCwgNzYsIDExNCk7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6IHJnYig2LCAxNTAsIDE0KTt9LmFjZS10bSAuYWNlX2xpbmUgLmFjZV9zdXBwb3J0LmFjZV90eXBlLC5hY2UtdG0gLmFjZV9saW5lIC5hY2Vfc3VwcG9ydC5hY2VfY2xhc3MgeyAgY29sb3I6IHJnYigxMDksIDEyMSwgMjIyKTt9LmFjZS10bSAuYWNlX2xpbmUgLmFjZV9rZXl3b3JkLmFjZV9vcGVyYXRvciB7ICBjb2xvcjogcmdiKDEwNCwgMTE4LCAxMzUpO30uYWNlLXRtIC5hY2VfbGluZSAuYWNlX3N0cmluZyB7ICBjb2xvcjogcmdiKDMsIDEwNiwgNyk7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29tbWVudCB7ICBjb2xvcjogcmdiKDc2LCAxMzYsIDEwNyk7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29tbWVudC5hY2VfZG9jIHsgIGNvbG9yOiByZ2IoMCwgMTAyLCAyNTUpO30uYWNlLXRtIC5hY2VfbGluZSAuYWNlX2NvbW1lbnQuYWNlX2RvYy5hY2VfdGFnIHsgIGNvbG9yOiByZ2IoMTI4LCAxNTksIDE5MSk7fS5hY2UtdG0gLmFjZV9saW5lIC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6IHJnYigwLCAwLCAyMDUpO30uYWNlLXRtIC5hY2VfbGluZSAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiByZ2IoNDksIDEzMiwgMTQ5KTt9LmFjZS10bSAuYWNlX2xpbmUgLmFjZV94bWxfcGUgeyAgY29sb3I6IHJnYigxMDQsIDEwNCwgOTEpO30uYWNlLXRtIC5hY2VfZW50aXR5LmFjZV9uYW1lLmFjZV9mdW5jdGlvbiB7ICBjb2xvcjogIzAwMDBBMjt9LmFjZS10bSAuYWNlX21hcmt1cC5hY2VfbWFya3VwaW5lIHsgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9LmFjZS10bSAuYWNlX21hcmt1cC5hY2VfaGVhZGluZyB7ICBjb2xvcjogcmdiKDEyLCA3LCAyNTUpO30uYWNlLXRtIC5hY2VfbWFya3VwLmFjZV9saXN0IHsgIGNvbG9yOnJnYigxODUsIDYsIDE0NCk7fS5hY2UtdG0gLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogcmdiKDE4MSwgMjEzLCAyNTUpO30uYWNlLXRtLm11bHRpc2VsZWN0IC5hY2Vfc2VsZWN0aW9uLnN0YXJ0IHsgIGJveC1zaGFkb3c6IDAgMCAzcHggMHB4IHdoaXRlOyAgYm9yZGVyLXJhZGl1czogMnB4O30uYWNlLXRtIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RlcCB7ICBiYWNrZ3JvdW5kOiByZ2IoMjUyLCAyNTUsIDApO30uYWNlLXRtIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RhY2sgeyAgYmFja2dyb3VuZDogcmdiKDE2NCwgMjI5LCAxMDEpO30uYWNlLXRtIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMTkyLCAxOTIsIDE5Mik7fS5hY2UtdG0gLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9hY3RpdmVfbGluZSB7ICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDcpO30uYWNlLXRtIC5hY2VfZ3V0dGVyX2FjdGl2ZV9saW5lIHsgICAgYmFja2dyb3VuZC1jb2xvciA6ICNkY2RjZGM7fS5hY2UtdG0gLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJhY2tncm91bmQ6IHJnYigyNTAsIDI1MCwgMjU1KTsgIGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDAsIDIwMCwgMjUwKTt9LmFjZS10bSAuYWNlX21ldGEuYWNlX3RhZyB7ICBjb2xvcjpyZ2IoMCwgNTAsIDE5OCk7fS5hY2UtdG0gLmFjZV9zdHJpbmcuYWNlX3JlZ2V4IHsgIGNvbG9yOiByZ2IoMjU1LCAwLCAwKX0iO3ZhciByPWUoIi4uL2xpYi9kb20iKTtyLmltcG9ydENzc1N0cmluZyh0LmNzc1RleHQsdC5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-tomorrow.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdG9tb3Jyb3ciLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmlzRGFyaz0hMSx0LmNzc0NsYXNzPSJhY2UtdG9tb3Jyb3ciLHQuY3NzVGV4dD0iLmFjZS10b21vcnJvdyAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdG9tb3Jyb3cgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtdG9tb3Jyb3cgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogI2Y2ZjZmNjsgIGNvbG9yOiAjNEQ0RDRDO30uYWNlLXRvbW9ycm93IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjZjZmNmY2O30uYWNlLXRvbW9ycm93IC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjt9LmFjZS10b21vcnJvdyAuYWNlX3RleHQtbGF5ZXIgeyAgY29sb3I6ICM0RDRENEM7fS5hY2UtdG9tb3Jyb3cgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjQUVBRkFEO30uYWNlLXRvbW9ycm93IC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQUVBRkFEO30uYWNlLXRvbW9ycm93IC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6ICNENkQ2RDY7fS5hY2UtdG9tb3Jyb3cubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggI0ZGRkZGRjsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS10b21vcnJvdyAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDI1NSwgMjU1LCAwKTt9LmFjZS10b21vcnJvdyAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQgeyAgbWFyZ2luOiAtMXB4IDAgMCAtMXB4OyAgYm9yZGVyOiAxcHggc29saWQgI0QxRDFEMTt9LmFjZS10b21vcnJvdyAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6ICNFRkVGRUY7fS5hY2UtdG9tb3Jyb3cgLmFjZV9ndXR0ZXJfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZC1jb2xvciA6ICNkY2RjZGM7fS5hY2UtdG9tb3Jyb3cgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkICNENkQ2RDY7fS5hY2UtdG9tb3Jyb3cgLmFjZV9pbnZpc2libGUgeyAgY29sb3I6ICNEMUQxRDE7fS5hY2UtdG9tb3Jyb3cgLmFjZV9rZXl3b3JkLCAuYWNlLXRvbW9ycm93IC5hY2VfbWV0YSB7ICBjb2xvcjojODk1OUE4O30uYWNlLXRvbW9ycm93IC5hY2Vfa2V5d29yZC5hY2Vfb3BlcmF0b3IgeyAgY29sb3I6IzNFOTk5Rjt9LmFjZS10b21vcnJvdyAuYWNlX2NvbnN0YW50LmFjZV9sYW5ndWFnZSB7ICBjb2xvcjojRjU4NzFGO30uYWNlLXRvbW9ycm93IC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6I0Y1ODcxRjt9LmFjZS10b21vcnJvdyAuYWNlX2NvbnN0YW50LmFjZV9vdGhlciB7ICBjb2xvcjojNjY2OTY5O30uYWNlLXRvbW9ycm93IC5hY2VfaW52YWxpZCB7ICBjb2xvcjojRkZGRkZGO2JhY2tncm91bmQtY29sb3I6I0M4MjgyOTt9LmFjZS10b21vcnJvdyAuYWNlX2ludmFsaWQuYWNlX2RlcHJlY2F0ZWQgeyAgY29sb3I6I0ZGRkZGRjtiYWNrZ3JvdW5kLWNvbG9yOiM4OTU5QTg7fS5hY2UtdG9tb3Jyb3cgLmFjZV9zdXBwb3J0LmFjZV9jb25zdGFudCB7ICBjb2xvcjojRjU4NzFGO30uYWNlLXRvbW9ycm93IC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICM0MjcxQUU7ICAgIGJvcmRlci1jb2xvcjogIzRENEQ0Qzt9LmFjZS10b21vcnJvdyAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiM0MjcxQUU7fS5hY2UtdG9tb3Jyb3cgLmFjZV9zdG9yYWdlIHsgIGNvbG9yOiM4OTU5QTg7fS5hY2UtdG9tb3Jyb3cgLmFjZV9zdG9yYWdlLmFjZV90eXBlLCAgLmFjZS10b21vcnJvdyAuYWNlX3N1cHBvcnQuYWNlX3R5cGV7ICBjb2xvcjojODk1OUE4O30uYWNlLXRvbW9ycm93IC5hY2VfdmFyaWFibGUgeyAgY29sb3I6IzQyNzFBRTt9LmFjZS10b21vcnJvdyAuYWNlX3ZhcmlhYmxlLmFjZV9wYXJhbWV0ZXIgeyAgY29sb3I6I0Y1ODcxRjt9LmFjZS10b21vcnJvdyAuYWNlX3N0cmluZyB7ICBjb2xvcjojNzE4QzAwO30uYWNlLXRvbW9ycm93IC5hY2Vfc3RyaW5nLmFjZV9yZWdleHAgeyAgY29sb3I6I0M4MjgyOTt9LmFjZS10b21vcnJvdyAuYWNlX2NvbW1lbnQgeyAgY29sb3I6IzhFOTA4Qzt9LmFjZS10b21vcnJvdyAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiNDODI4Mjk7fS5hY2UtdG9tb3Jyb3cgLmFjZV9tZXRhLmFjZV90YWcgeyAgY29sb3I6I0M4MjgyOTt9LmFjZS10b21vcnJvdyAuYWNlX2VudGl0eS5hY2Vfb3RoZXIuYWNlX2F0dHJpYnV0ZS1uYW1lIHsgIGNvbG9yOiNDODI4Mjk7fS5hY2UtdG9tb3Jyb3cgLmFjZV9lbnRpdHkuYWNlX25hbWUuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiM0MjcxQUU7fS5hY2UtdG9tb3Jyb3cgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fS5hY2UtdG9tb3Jyb3cgLmFjZV9tYXJrdXAuYWNlX2hlYWRpbmcgeyAgY29sb3I6IzcxOEMwMDt9Ijt2YXIgcj1lKCIuLi9saWIvZG9tIik7ci5pbXBvcnRDc3NTdHJpbmcodC5jc3NUZXh0LHQuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-tomorrow_night.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdG9tb3Jyb3dfbmlnaHQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmlzRGFyaz0hMCx0LmNzc0NsYXNzPSJhY2UtdG9tb3Jyb3ctbmlnaHQiLHQuY3NzVGV4dD0iLmFjZS10b21vcnJvdy1uaWdodCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogIzI1MjgyYzsgIGNvbG9yOiAjQzVDOEM2O30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjMjUyODJjO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzFEMUYyMTt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX3RleHQtbGF5ZXIgeyAgY29sb3I6ICNDNUM4QzY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjQUVBRkFEO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQUVBRkFEO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6ICMzNzNCNDE7fS5hY2UtdG9tb3Jyb3ctbmlnaHQubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzFEMUYyMTsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCAjNEI0RTU1O30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogIzI4MkEyRTt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX2d1dHRlcl9hY3RpdmVfbGluZSB7ICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjgyQTJFO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBib3JkZXI6IDFweCBzb2xpZCAjMzczQjQxO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiAjNEI0RTU1O30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2Vfa2V5d29yZCwgLmFjZS10b21vcnJvdy1uaWdodCAuYWNlX21ldGEgeyAgY29sb3I6I0IyOTRCQjt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX2tleXdvcmQuYWNlX29wZXJhdG9yIHsgIGNvbG9yOiM4QUJFQjc7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9jb25zdGFudC5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6I0RFOTM1Rjt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX2NvbnN0YW50LmFjZV9udW1lcmljIHsgIGNvbG9yOiNERTkzNUY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9jb25zdGFudC5hY2Vfb3RoZXIgeyAgY29sb3I6I0NFRDFDRjt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX2ludmFsaWQgeyAgY29sb3I6I0NFRDJDRjtiYWNrZ3JvdW5kLWNvbG9yOiNERjVGNUY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9pbnZhbGlkLmFjZV9kZXByZWNhdGVkIHsgIGNvbG9yOiNDRUQyQ0Y7YmFja2dyb3VuZC1jb2xvcjojQjc5OEJGO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6I0RFOTM1Rjt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX2ZvbGQgeyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFBMkJFOyAgICBib3JkZXItY29sb3I6ICNDNUM4QzY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9zdXBwb3J0LmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojODFBMkJFO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2Vfc3RvcmFnZSB7ICBjb2xvcjojQjI5NEJCO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2Vfc3RvcmFnZS5hY2VfdHlwZSwgIC5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9zdXBwb3J0LmFjZV90eXBleyAgY29sb3I6I0IyOTRCQjt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiM4MUEyQkU7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV92YXJpYWJsZS5hY2VfcGFyYW1ldGVyIHsgIGNvbG9yOiNERTkzNUY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9zdHJpbmcgeyAgY29sb3I6I0I1QkQ2ODt9LmFjZS10b21vcnJvdy1uaWdodCAuYWNlX3N0cmluZy5hY2VfcmVnZXhwIHsgIGNvbG9yOiNDQzY2NjY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9jb21tZW50IHsgIGNvbG9yOiM5Njk4OTY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjojQ0M2NjY2O30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfbWV0YS5hY2VfdGFnIHsgIGNvbG9yOiNDQzY2NjY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQgLmFjZV9lbnRpdHkuYWNlX290aGVyLmFjZV9hdHRyaWJ1dGUtbmFtZSB7ICBjb2xvcjojQ0M2NjY2O30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfZW50aXR5LmFjZV9uYW1lLmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojODFBMkJFO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfbWFya3VwLmFjZV91bmRlcmxpbmUgeyAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30uYWNlLXRvbW9ycm93LW5pZ2h0IC5hY2VfbWFya3VwLmFjZV9oZWFkaW5nIHsgIGNvbG9yOiNCNUJENjg7fSI7dmFyIHI9ZSgiLi4vbGliL2RvbSIpO3IuaW1wb3J0Q3NzU3RyaW5nKHQuY3NzVGV4dCx0LmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-tomorrow_night_blue.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdG9tb3Jyb3dfbmlnaHRfYmx1ZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvZG9tIl0sZnVuY3Rpb24oZSx0LG4pe3QuaXNEYXJrPSEwLHQuY3NzQ2xhc3M9ImFjZS10b21vcnJvdy1uaWdodC1ibHVlIix0LmNzc1RleHQ9Ii5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX2VkaXRvci5hY2VfZm9jdXMgeyAgYm9yZGVyOiAycHggc29saWQgIzMyN2ZiZDt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfZ3V0dGVyIHsgIGJhY2tncm91bmQ6ICMwMDIwNGI7ICBjb2xvcjogIzczODhiNTt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjMDAyMDRiO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9zY3JvbGxlciB7ICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAyNDUxO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV90ZXh0LWxheWVyIHsgIGNvbG9yOiAjRkZGRkZGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRkZGRkZGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9jdXJzb3IuYWNlX292ZXJ3cml0ZSB7ICBib3JkZXItbGVmdDogMHB4OyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGRkZGRkY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGlvbiB7ICBiYWNrZ3JvdW5kOiAjMDAzRjhFO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzAwMjQ1MTsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc3RlcCB7ICBiYWNrZ3JvdW5kOiByZ2IoMTI3LCAxMTEsIDE5KTt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCAjNDA0RjdEO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9hY3RpdmVfbGluZSB7ICBiYWNrZ3JvdW5kOiAjMDAzNDZFO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9ndXR0ZXJfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZC1jb2xvcjogIzAyMjA0MDt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBib3JkZXI6IDFweCBzb2xpZCAjMDAzRjhFO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9pbnZpc2libGUgeyAgY29sb3I6ICM0MDRGN0Q7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX2tleXdvcmQsIC5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX21ldGEgeyAgY29sb3I6I0VCQkJGRjt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2Vfa2V5d29yZC5hY2Vfb3BlcmF0b3IgeyAgY29sb3I6Izk5RkZGRjt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfY29uc3RhbnQuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiNGRkM1OEY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX2NvbnN0YW50LmFjZV9udW1lcmljIHsgIGNvbG9yOiNGRkM1OEY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX2NvbnN0YW50LmFjZV9vdGhlciB7ICBjb2xvcjojRkZGRkZGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9pbnZhbGlkIHsgIGNvbG9yOiNGRkZGRkY7YmFja2dyb3VuZC1jb2xvcjojRjk5REE1O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9pbnZhbGlkLmFjZV9kZXByZWNhdGVkIHsgIGNvbG9yOiNGRkZGRkY7YmFja2dyb3VuZC1jb2xvcjojRUJCQkZGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9zdXBwb3J0LmFjZV9jb25zdGFudCB7ICBjb2xvcjojRkZDNThGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogI0JCREFGRjsgICAgYm9yZGVyLWNvbG9yOiAjRkZGRkZGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9zdXBwb3J0LmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojQkJEQUZGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9zdG9yYWdlIHsgIGNvbG9yOiNFQkJCRkY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX3N0b3JhZ2UuYWNlX3R5cGUsICAuYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9zdXBwb3J0LmFjZV90eXBleyAgY29sb3I6I0VCQkJGRjt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfdmFyaWFibGUgeyAgY29sb3I6I0JCREFGRjt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfdmFyaWFibGUuYWNlX3BhcmFtZXRlciB7ICBjb2xvcjojRkZDNThGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9zdHJpbmcgeyAgY29sb3I6I0QxRjFBOTt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2Vfc3RyaW5nLmFjZV9yZWdleHAgeyAgY29sb3I6I0ZGOURBNDt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfY29tbWVudCB7ICBjb2xvcjojNzI4NUI3O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjojRkY5REE0O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9tZXRhLmFjZV90YWcgeyAgY29sb3I6I0ZGOURBNDt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfZW50aXR5LmFjZV9vdGhlci5hY2VfYXR0cmlidXRlLW5hbWUgeyAgY29sb3I6I0ZGOURBNDt9LmFjZS10b21vcnJvdy1uaWdodC1ibHVlIC5hY2VfZW50aXR5LmFjZV9uYW1lLmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojQkJEQUZGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJsdWUgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYmx1ZSAuYWNlX21hcmt1cC5hY2VfaGVhZGluZyB7ICBjb2xvcjojRDFGMUE5O30iO3ZhciByPWUoIi4uL2xpYi9kb20iKTtyLmltcG9ydENzc1N0cmluZyh0LmNzc1RleHQsdC5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-tomorrow_night_bright.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdG9tb3Jyb3dfbmlnaHRfYnJpZ2h0IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9kb20iXSxmdW5jdGlvbihlLHQsbil7dC5pc0Rhcms9ITAsdC5jc3NDbGFzcz0iYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCIsdC5jc3NUZXh0PSIuYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfZWRpdG9yLmFjZV9mb2N1cyB7ICBib3JkZXI6IDJweCBzb2xpZCAjMzI3ZmJkO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX2d1dHRlciB7ICBiYWNrZ3JvdW5kOiAjMWExYTFhOyAgY29sb3I6ICNERURFREU7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjMWExYTFhO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfdGV4dC1sYXllciB7ICBjb2xvcjogI0RFREVERTt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjOUY5RjlGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzlGOUY5Rjt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3Rpb24geyAgYmFja2dyb3VuZDogIzQyNDI0Mjt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzAwMDAwMDsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigxMDIsIDgyLCAwKTt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9icmFja2V0IHsgIG1hcmdpbjogLTFweCAwIDAgLTFweDsgIGJvcmRlcjogMXB4IHNvbGlkICMzNDM0MzQ7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogIzJBMkEyQTt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9ndXR0ZXJfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZC1jb2xvcjogIzJBMkEyQTt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkICM0MjQyNDI7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiAjMzQzNDM0O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX2tleXdvcmQsIC5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfbWV0YSB7ICBjb2xvcjojQzM5N0Q4O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX2tleXdvcmQuYWNlX29wZXJhdG9yIHsgIGNvbG9yOiM3MEMwQjE7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfY29uc3RhbnQuYWNlX2xhbmd1YWdlIHsgIGNvbG9yOiNFNzhDNDU7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6I0U3OEM0NTt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9jb25zdGFudC5hY2Vfb3RoZXIgeyAgY29sb3I6I0VFRUVFRTt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9pbnZhbGlkIHsgIGNvbG9yOiNDRUQyQ0Y7YmFja2dyb3VuZC1jb2xvcjojREY1RjVGO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX2ludmFsaWQuYWNlX2RlcHJlY2F0ZWQgeyAgY29sb3I6I0NFRDJDRjtiYWNrZ3JvdW5kLWNvbG9yOiNCNzk4QkY7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6I0U3OEM0NTt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogIzdBQTZEQTsgICAgYm9yZGVyLWNvbG9yOiAjREVERURFO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiM3QUE2REE7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2Vfc3RvcmFnZSB7ICBjb2xvcjojQzM5N0Q4O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3N0b3JhZ2UuYWNlX3R5cGUsICAuYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3N1cHBvcnQuYWNlX3R5cGV7ICBjb2xvcjojQzM5N0Q4O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiM3QUE2REE7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfdmFyaWFibGUuYWNlX3BhcmFtZXRlciB7ICBjb2xvcjojRTc4QzQ1O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3N0cmluZyB7ICBjb2xvcjojQjlDQTRBO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3N0cmluZy5hY2VfcmVnZXhwIHsgIGNvbG9yOiNENTRFNTM7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfY29tbWVudCB7ICBjb2xvcjojOTY5ODk2O30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiNENTRFNTM7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfbWV0YS5hY2VfdGFnIHsgIGNvbG9yOiNENTRFNTM7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfZW50aXR5LmFjZV9vdGhlci5hY2VfYXR0cmlidXRlLW5hbWUgeyAgY29sb3I6I0Q1NEU1Mzt9LmFjZS10b21vcnJvdy1uaWdodC1icmlnaHQgLmFjZV9lbnRpdHkuYWNlX25hbWUuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiM3QUE2REE7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtYnJpZ2h0IC5hY2VfbWFya3VwLmFjZV91bmRlcmxpbmUgeyAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30uYWNlLXRvbW9ycm93LW5pZ2h0LWJyaWdodCAuYWNlX21hcmt1cC5hY2VfaGVhZGluZyB7ICBjb2xvcjojQjlDQTRBO30iO3ZhciByPWUoIi4uL2xpYi9kb20iKTtyLmltcG9ydENzc1N0cmluZyh0LmNzc1RleHQsdC5jc3NDbGFzcyl9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-tomorrow_night_eighties.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdG9tb3Jyb3dfbmlnaHRfZWlnaHRpZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmlzRGFyaz0hMCx0LmNzc0NsYXNzPSJhY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMiLHQuY3NzVGV4dD0iLmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogIzI3MjcyNzsgIGNvbG9yOiAjQ0NDO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjMjcyNzI3O30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzJEMkQyRDt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX3RleHQtbGF5ZXIgeyAgY29sb3I6ICNDQ0NDQ0M7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjQ0NDQ0NDO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQ0NDQ0NDO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6ICM1MTUxNTE7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzJEMkQyRDsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCAjNkE2QTZBO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogIzM5MzkzOTt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX2d1dHRlcl9hY3RpdmVfbGluZSB7ICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzkzOTM5O30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0ZWRfd29yZCB7ICBib3JkZXI6IDFweCBzb2xpZCAjNTE1MTUxO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2VfaW52aXNpYmxlIHsgIGNvbG9yOiAjNkE2QTZBO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2Vfa2V5d29yZCwgLmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX21ldGEgeyAgY29sb3I6I0NDOTlDQzt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX2tleXdvcmQuYWNlX29wZXJhdG9yIHsgIGNvbG9yOiM2NkNDQ0M7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9jb25zdGFudC5hY2VfbGFuZ3VhZ2UgeyAgY29sb3I6I0Y5OTE1Nzt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX2NvbnN0YW50LmFjZV9udW1lcmljIHsgIGNvbG9yOiNGOTkxNTc7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9jb25zdGFudC5hY2Vfb3RoZXIgeyAgY29sb3I6I0NDQ0NDQzt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX2ludmFsaWQgeyAgY29sb3I6I0NEQ0RDRDtiYWNrZ3JvdW5kLWNvbG9yOiNGMjc3N0E7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9pbnZhbGlkLmFjZV9kZXByZWNhdGVkIHsgIGNvbG9yOiNDRENEQ0Q7YmFja2dyb3VuZC1jb2xvcjojQ0M5OUNDO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2Vfc3VwcG9ydC5hY2VfY29uc3RhbnQgeyAgY29sb3I6I0Y5OTE1Nzt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX2ZvbGQgeyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY5OUNDOyAgICBib3JkZXItY29sb3I6ICNDQ0NDQ0M7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9zdXBwb3J0LmFjZV9mdW5jdGlvbiB7ICBjb2xvcjojNjY5OUNDO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2Vfc3RvcmFnZSB7ICBjb2xvcjojQ0M5OUNDO30uYWNlLXRvbW9ycm93LW5pZ2h0LWVpZ2h0aWVzIC5hY2Vfc3RvcmFnZS5hY2VfdHlwZSwgIC5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9zdXBwb3J0LmFjZV90eXBleyAgY29sb3I6I0NDOTlDQzt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiM2Njk5Q0M7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV92YXJpYWJsZS5hY2VfcGFyYW1ldGVyIHsgIGNvbG9yOiNGOTkxNTc7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9zdHJpbmcgeyAgY29sb3I6Izk5Q0M5OTt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX2NvbW1lbnQgeyAgY29sb3I6Izk5OTk5OTt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiNGMjc3N0E7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9tZXRhLmFjZV90YWcgeyAgY29sb3I6I0YyNzc3QTt9LmFjZS10b21vcnJvdy1uaWdodC1laWdodGllcyAuYWNlX2VudGl0eS5hY2Vfb3RoZXIuYWNlX2F0dHJpYnV0ZS1uYW1lIHsgIGNvbG9yOiNGMjc3N0E7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9lbnRpdHkuYWNlX25hbWUuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiM2Njk5Q0M7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fS5hY2UtdG9tb3Jyb3ctbmlnaHQtZWlnaHRpZXMgLmFjZV9tYXJrdXAuYWNlX2hlYWRpbmcgeyAgY29sb3I6Izk5Q0M5OTt9Ijt2YXIgcj1lKCIuLi9saWIvZG9tIik7ci5pbXBvcnRDc3NTdHJpbmcodC5jc3NUZXh0LHQuY3NzQ2xhc3MpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-twilight.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdHdpbGlnaHQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmlzRGFyaz0hMCx0LmNzc0NsYXNzPSJhY2UtdHdpbGlnaHQiLHQuY3NzVGV4dD0iLmFjZS10d2lsaWdodCAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdHdpbGlnaHQgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtdHdpbGlnaHQgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogIzIzMjMyMzsgIGNvbG9yOiAjRjhGOEY4O30uYWNlLXR3aWxpZ2h0IC5hY2VfcHJpbnRfbWFyZ2luIHsgIHdpZHRoOiAxcHg7ICBiYWNrZ3JvdW5kOiAjMjMyMzIzO30uYWNlLXR3aWxpZ2h0IC5hY2Vfc2Nyb2xsZXIgeyAgYmFja2dyb3VuZC1jb2xvcjogIzE0MTQxNDt9LmFjZS10d2lsaWdodCAuYWNlX3RleHQtbGF5ZXIgeyAgY29sb3I6ICNGOEY4Rjg7fS5hY2UtdHdpbGlnaHQgLmFjZV9jdXJzb3IgeyAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjQTdBN0E3O30uYWNlLXR3aWxpZ2h0IC5hY2VfY3Vyc29yLmFjZV9vdmVyd3JpdGUgeyAgYm9yZGVyLWxlZnQ6IDBweDsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQTdBN0E3O30uYWNlLXR3aWxpZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2Vfc2VsZWN0aW9uIHsgIGJhY2tncm91bmQ6IHJnYmEoMjIxLCAyNDAsIDI1NSwgMC4yMCk7fS5hY2UtdHdpbGlnaHQubXVsdGlzZWxlY3QgLmFjZV9zZWxlY3Rpb24uc3RhcnQgeyAgYm94LXNoYWRvdzogMCAwIDNweCAwcHggIzE0MTQxNDsgIGJvcmRlci1yYWRpdXM6IDJweDt9LmFjZS10d2lsaWdodCAuYWNlX21hcmtlci1sYXllciAuYWNlX3N0ZXAgeyAgYmFja2dyb3VuZDogcmdiKDEwMiwgODIsIDApO30uYWNlLXR3aWxpZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYnJhY2tldCB7ICBtYXJnaW46IC0xcHggMCAwIC0xcHg7ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpO30uYWNlLXR3aWxpZ2h0IC5hY2VfbWFya2VyLWxheWVyIC5hY2VfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAzMSk7fS5hY2UtdHdpbGlnaHQgLmFjZV9ndXR0ZXJfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAzMSk7fS5hY2UtdHdpbGlnaHQgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zZWxlY3RlZF93b3JkIHsgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjIxLCAyNDAsIDI1NSwgMC4yMCk7fS5hY2UtdHdpbGlnaHQgLmFjZV9pbnZpc2libGUgeyAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7fS5hY2UtdHdpbGlnaHQgLmFjZV9rZXl3b3JkLCAuYWNlLXR3aWxpZ2h0IC5hY2VfbWV0YSB7ICBjb2xvcjojQ0RBODY5O30uYWNlLXR3aWxpZ2h0IC5hY2VfY29uc3RhbnQsIC5hY2UtdHdpbGlnaHQgLmFjZV9jb25zdGFudC5hY2Vfb3RoZXIgeyAgY29sb3I6I0NGNkE0Qzt9LmFjZS10d2lsaWdodCAuYWNlX2NvbnN0YW50LmFjZV9jaGFyYWN0ZXIsICB7ICBjb2xvcjojQ0Y2QTRDO30uYWNlLXR3aWxpZ2h0IC5hY2VfY29uc3RhbnQuYWNlX2NoYXJhY3Rlci5hY2VfZXNjYXBlLCAgeyAgY29sb3I6I0NGNkE0Qzt9LmFjZS10d2lsaWdodCAuYWNlX2ludmFsaWQuYWNlX2lsbGVnYWwgeyAgY29sb3I6I0Y4RjhGODtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoODYsIDQ1LCA4NiwgMC43NSk7fS5hY2UtdHdpbGlnaHQgLmFjZV9pbnZhbGlkLmFjZV9kZXByZWNhdGVkIHsgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Zm9udC1zdHlsZTppdGFsaWM7Y29sb3I6I0QyQThBMTt9LmFjZS10d2lsaWdodCAuYWNlX3N1cHBvcnQgeyAgY29sb3I6IzlCODU5RDt9LmFjZS10d2lsaWdodCAuYWNlX3N1cHBvcnQuYWNlX2NvbnN0YW50IHsgIGNvbG9yOiNDRjZBNEM7fS5hY2UtdHdpbGlnaHQgLmFjZV9mb2xkIHsgICAgYmFja2dyb3VuZC1jb2xvcjogI0FDODg1QjsgICAgYm9yZGVyLWNvbG9yOiAjRjhGOEY4O30uYWNlLXR3aWxpZ2h0IC5hY2Vfc3VwcG9ydC5hY2VfZnVuY3Rpb24geyAgY29sb3I6I0RBRDA4NTt9LmFjZS10d2lsaWdodCAuYWNlX3N0b3JhZ2UgeyAgY29sb3I6I0Y5RUU5ODt9LmFjZS10d2lsaWdodCAuYWNlX3ZhcmlhYmxlIHsgIGNvbG9yOiNBQzg4NUI7fS5hY2UtdHdpbGlnaHQgLmFjZV9zdHJpbmcgeyAgY29sb3I6IzhGOUQ2QTt9LmFjZS10d2lsaWdodCAuYWNlX3N0cmluZy5hY2VfcmVnZXhwIHsgIGNvbG9yOiNFOUMwNjI7fS5hY2UtdHdpbGlnaHQgLmFjZV9jb21tZW50IHsgIGZvbnQtc3R5bGU6aXRhbGljO2NvbG9yOiM1RjVBNjA7fS5hY2UtdHdpbGlnaHQgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjojNzU4N0E2O30uYWNlLXR3aWxpZ2h0IC5hY2VfeG1sX3BlIHsgIGNvbG9yOiM0OTQ5NDk7fS5hY2UtdHdpbGlnaHQgLmFjZV9tZXRhLmFjZV90YWcgeyAgY29sb3I6I0FDODg1Qjt9LmFjZS10d2lsaWdodCAuYWNlX2VudGl0eS5hY2VfbmFtZS5hY2VfZnVuY3Rpb24geyAgY29sb3I6I0FDODg1Qjt9LmFjZS10d2lsaWdodCAuYWNlX21hcmt1cC5hY2VfdW5kZXJsaW5lIHsgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9LmFjZS10d2lsaWdodCAuYWNlX21hcmt1cC5hY2VfaGVhZGluZyB7ICBjb2xvcjojQ0Y2QTRDO30uYWNlLXR3aWxpZ2h0IC5hY2VfbWFya3VwLmFjZV9saXN0IHsgIGNvbG9yOiNGOUVFOTg7fSI7dmFyIHI9ZSgiLi4vbGliL2RvbSIpO3IuaW1wb3J0Q3NzU3RyaW5nKHQuY3NzVGV4dCx0LmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/theme-vibrant_ink.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGVmaW5lKCJhY2UvdGhlbWUvdmlicmFudF9pbmsiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2RvbSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmlzRGFyaz0hMCx0LmNzc0NsYXNzPSJhY2UtdmlicmFudC1pbmsiLHQuY3NzVGV4dD0iLmFjZS12aWJyYW50LWluayAuYWNlX2VkaXRvciB7ICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMTU5LCAxNTksIDE1OSk7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9lZGl0b3IuYWNlX2ZvY3VzIHsgIGJvcmRlcjogMnB4IHNvbGlkICMzMjdmYmQ7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9ndXR0ZXIgeyAgYmFja2dyb3VuZDogIzFhMWExYTsgIGNvbG9yOiB3aGl0ZTt9LmFjZS12aWJyYW50LWluayAuYWNlX3ByaW50X21hcmdpbiB7ICB3aWR0aDogMXB4OyAgYmFja2dyb3VuZDogIzFhMWExYTt9LmFjZS12aWJyYW50LWluayAuYWNlX3Njcm9sbGVyIHsgIGJhY2tncm91bmQtY29sb3I6ICMwRjBGMEY7fS5hY2UtdmlicmFudC1pbmsgLmFjZV90ZXh0LWxheWVyIHsgIGNvbG9yOiAjRkZGRkZGO30uYWNlLXZpYnJhbnQtaW5rIC5hY2VfY3Vyc29yIHsgIGJvcmRlci1sZWZ0OiAycHggc29saWQgI0ZGRkZGRjt9LmFjZS12aWJyYW50LWluayAuYWNlX2N1cnNvci5hY2Vfb3ZlcndyaXRlIHsgIGJvcmRlci1sZWZ0OiAwcHg7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0ZGRkZGRjt9LmFjZS12aWJyYW50LWluayAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGlvbiB7ICBiYWNrZ3JvdW5kOiAjNjY5OUNDO30uYWNlLXZpYnJhbnQtaW5rLm11bHRpc2VsZWN0IC5hY2Vfc2VsZWN0aW9uLnN0YXJ0IHsgIGJveC1zaGFkb3c6IDAgMCAzcHggMHB4ICMwRjBGMEY7ICBib3JkZXItcmFkaXVzOiAycHg7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9zdGVwIHsgIGJhY2tncm91bmQ6IHJnYigxMDIsIDgyLCAwKTt9LmFjZS12aWJyYW50LWluayAuYWNlX21hcmtlci1sYXllciAuYWNlX2JyYWNrZXQgeyAgbWFyZ2luOiAtMXB4IDAgMCAtMXB4OyAgYm9yZGVyOiAxcHggc29saWQgIzQwNDA0MDt9LmFjZS12aWJyYW50LWluayAuYWNlX21hcmtlci1sYXllciAuYWNlX2FjdGl2ZV9saW5lIHsgIGJhY2tncm91bmQ6ICMzMzMzMzM7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9ndXR0ZXJfYWN0aXZlX2xpbmUgeyAgYmFja2dyb3VuZC1jb2xvcjogIzMzMzMzMzt9LmFjZS12aWJyYW50LWluayAuYWNlX21hcmtlci1sYXllciAuYWNlX3NlbGVjdGVkX3dvcmQgeyAgYm9yZGVyOiAxcHggc29saWQgIzY2OTlDQzt9LmFjZS12aWJyYW50LWluayAuYWNlX2ludmlzaWJsZSB7ICBjb2xvcjogIzQwNDA0MDt9LmFjZS12aWJyYW50LWluayAuYWNlX2tleXdvcmQsIC5hY2UtdmlicmFudC1pbmsgLmFjZV9tZXRhIHsgIGNvbG9yOiNGRjY2MDA7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9jb25zdGFudCwgLmFjZS12aWJyYW50LWluayAuYWNlX2NvbnN0YW50LmFjZV9vdGhlciB7ICBjb2xvcjojMzM5OTk5O30uYWNlLXZpYnJhbnQtaW5rIC5hY2VfY29uc3RhbnQuYWNlX2NoYXJhY3RlciwgIHsgIGNvbG9yOiMzMzk5OTk7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9jb25zdGFudC5hY2VfY2hhcmFjdGVyLmFjZV9lc2NhcGUsICB7ICBjb2xvcjojMzM5OTk5O30uYWNlLXZpYnJhbnQtaW5rIC5hY2VfY29uc3RhbnQuYWNlX251bWVyaWMgeyAgY29sb3I6Izk5Q0M5OTt9LmFjZS12aWJyYW50LWluayAuYWNlX2ludmFsaWQgeyAgY29sb3I6I0NDRkYzMztiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDA7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9pbnZhbGlkLmFjZV9kZXByZWNhdGVkIHsgIGNvbG9yOiNDQ0ZGMzM7YmFja2dyb3VuZC1jb2xvcjojMDAwMDAwO30uYWNlLXZpYnJhbnQtaW5rIC5hY2VfZm9sZCB7ICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkNDMDA7ICAgIGJvcmRlci1jb2xvcjogI0ZGRkZGRjt9LmFjZS12aWJyYW50LWluayAuYWNlX3N1cHBvcnQuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiNGRkNDMDA7fS5hY2UtdmlicmFudC1pbmsgLmFjZV92YXJpYWJsZSB7ICBjb2xvcjojRkZDQzAwO30uYWNlLXZpYnJhbnQtaW5rIC5hY2VfdmFyaWFibGUuYWNlX3BhcmFtZXRlciB7ICBmb250LXN0eWxlOml0YWxpYzt9LmFjZS12aWJyYW50LWluayAuYWNlX3N0cmluZyB7ICBjb2xvcjojNjZGRjAwO30uYWNlLXZpYnJhbnQtaW5rIC5hY2Vfc3RyaW5nLmFjZV9yZWdleHAgeyAgY29sb3I6IzQ0QjRDQzt9LmFjZS12aWJyYW50LWluayAuYWNlX2NvbW1lbnQgeyAgY29sb3I6Izk5MzNDQzt9LmFjZS12aWJyYW50LWluayAuYWNlX2VudGl0eS5hY2Vfb3RoZXIuYWNlX2F0dHJpYnV0ZS1uYW1lIHsgIGZvbnQtc3R5bGU6aXRhbGljO2NvbG9yOiM5OUNDOTk7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9lbnRpdHkuYWNlX25hbWUuYWNlX2Z1bmN0aW9uIHsgIGNvbG9yOiNGRkNDMDA7fS5hY2UtdmlicmFudC1pbmsgLmFjZV9tYXJrdXAuYWNlX3VuZGVybGluZSB7ICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSI7dmFyIHI9ZSgiLi4vbGliL2RvbSIpO3IuaW1wb3J0Q3NzU3RyaW5nKHQuY3NzVGV4dCx0LmNzc0NsYXNzKX0p]]></data>
	</file>
	<file>
	  <filename>/ace/src/worker-coffee.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Im5vIHVzZSBzdHJpY3QiO2Z1bmN0aW9uIGluaXRCYXNlVXJscyhlKXtyZXF1aXJlLnRsbnM9ZX1mdW5jdGlvbiBpbml0U2VuZGVyKCl7dmFyIGU9cmVxdWlyZShudWxsLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsdD1yZXF1aXJlKG51bGwsImFjZS9saWIvb29wIiksbj1mdW5jdGlvbigpe307cmV0dXJuIGZ1bmN0aW9uKCl7dC5pbXBsZW1lbnQodGhpcyxlKSx0aGlzLmNhbGxiYWNrPWZ1bmN0aW9uKGUsdCl7cG9zdE1lc3NhZ2Uoe3R5cGU6ImNhbGwiLGlkOnQsZGF0YTplfSl9LHRoaXMuZW1pdD1mdW5jdGlvbihlLHQpe3Bvc3RNZXNzYWdlKHt0eXBlOiJldmVudCIsbmFtZTplLGRhdGE6dH0pfX0uY2FsbChuLnByb3RvdHlwZSksbmV3IG59dmFyIGNvbnNvbGU9e2xvZzpmdW5jdGlvbihlKXtwb3N0TWVzc2FnZSh7dHlwZToibG9nIixkYXRhOmV9KX19LHdpbmRvdz17Y29uc29sZTpjb25zb2xlfSxub3JtYWxpemVNb2R1bGU9ZnVuY3Rpb24oZSx0KXtpZih0LmluZGV4T2YoIiEiKSE9PS0xKXt2YXIgbj10LnNwbGl0KCIhIik7cmV0dXJuIG5vcm1hbGl6ZU1vZHVsZShlLG5bMF0pKyIhIitub3JtYWxpemVNb2R1bGUoZSxuWzFdKX1pZih0LmNoYXJBdCgwKT09Ii4iKXt2YXIgcj1lLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpLHQ9cisiLyIrdDt3aGlsZSh0LmluZGV4T2YoIi4iKSE9PS0xJiZpIT10KXZhciBpPXQsdD10LnJlcGxhY2UoL1wvXC5cLy8sIi8iKS5yZXBsYWNlKC9bXlwvXStcL1wuXC5cLy8sIiIpfXJldHVybiB0fSxyZXF1aXJlPWZ1bmN0aW9uKGUsdCl7dmFyIHQ9bm9ybWFsaXplTW9kdWxlKGUsdCksbj1yZXF1aXJlLm1vZHVsZXNbdF07aWYobilyZXR1cm4gbi5pbml0aWFsaXplZHx8KG4uZXhwb3J0cz1uLmZhY3RvcnkoKS5leHBvcnRzLG4uaW5pdGlhbGl6ZWQ9ITApLG4uZXhwb3J0czt2YXIgcj10LnNwbGl0KCIvIik7clswXT1yZXF1aXJlLnRsbnNbclswXV18fHJbMF07dmFyIGk9ci5qb2luKCIvIikrIi5qcyI7cmV0dXJuIHJlcXVpcmUuaWQ9dCxpbXBvcnRTY3JpcHRzKGkpLHJlcXVpcmUoZSx0KX07cmVxdWlyZS5tb2R1bGVzPXt9LHJlcXVpcmUudGxucz17fTt2YXIgZGVmaW5lPWZ1bmN0aW9uKGUsdCxuKXthcmd1bWVudHMubGVuZ3RoPT0yP249dDphcmd1bWVudHMubGVuZ3RoPT0xJiYobj1lLGU9cmVxdWlyZS5pZCk7aWYoZS5pbmRleE9mKCJ0ZXh0ISIpPT09MClyZXR1cm47dmFyIHI9ZnVuY3Rpb24odCxuKXtyZXR1cm4gcmVxdWlyZShlLHQsbil9O3JlcXVpcmUubW9kdWxlc1tlXT17ZmFjdG9yeTpmdW5jdGlvbigpe3ZhciBlPXtleHBvcnRzOnt9fSx0PW4ocixlLmV4cG9ydHMsZSk7cmV0dXJuIHQmJihlLmV4cG9ydHM9dCksZX19fSxtYWluLHNlbmRlcjtvbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhO2lmKHQuY29tbWFuZCltYWluW3QuY29tbWFuZF0uYXBwbHkobWFpbix0LmFyZ3MpO2Vsc2UgaWYodC5pbml0KXtpbml0QmFzZVVybHModC50bG5zKSxyZXF1aXJlKG51bGwsImFjZS9saWIvZml4b2xkYnJvd3NlcnMiKSxzZW5kZXI9aW5pdFNlbmRlcigpO3ZhciBuPXJlcXVpcmUobnVsbCx0Lm1vZHVsZSlbdC5jbGFzc25hbWVdO21haW49bmV3IG4oc2VuZGVyKX1lbHNlIHQuZXZlbnQmJnNlbmRlciYmc2VuZGVyLl9lbWl0KHQuZXZlbnQsdC5kYXRhKX0sZGVmaW5lKCJhY2UvbGliL2ZpeG9sZGJyb3dzZXJzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9yZWdleHAiLCJhY2UvbGliL2VzNS1zaGltIl0sZnVuY3Rpb24oZSx0LG4pe2UoIi4vcmVnZXhwIiksZSgiLi9lczUtc2hpbSIpfSksZGVmaW5lKCJhY2UvbGliL3JlZ2V4cCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBvKGUpe3JldHVybihlLmdsb2JhbD8iZyI6IiIpKyhlLmlnbm9yZUNhc2U/ImkiOiIiKSsoZS5tdWx0aWxpbmU/Im0iOiIiKSsoZS5leHRlbmRlZD8ieCI6IiIpKyhlLnN0aWNreT8ieSI6IiIpfWZ1bmN0aW9uIHUoZSx0LG4pe2lmKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKXJldHVybiBlLmluZGV4T2YodCxuKTtmb3IodmFyIHI9bnx8MDtyPGUubGVuZ3RoO3IrKylpZihlW3JdPT09dClyZXR1cm4gcjtyZXR1cm4tMX12YXIgcj17ZXhlYzpSZWdFeHAucHJvdG90eXBlLmV4ZWMsdGVzdDpSZWdFeHAucHJvdG90eXBlLnRlc3QsbWF0Y2g6U3RyaW5nLnByb3RvdHlwZS5tYXRjaCxyZXBsYWNlOlN0cmluZy5wcm90b3R5cGUucmVwbGFjZSxzcGxpdDpTdHJpbmcucHJvdG90eXBlLnNwbGl0fSxpPXIuZXhlYy5jYWxsKC8oKT8/LywiIilbMV09PT11bmRlZmluZWQscz1mdW5jdGlvbigpe3ZhciBlPS9eL2c7cmV0dXJuIHIudGVzdC5jYWxsKGUsIiIpLCFlLmxhc3RJbmRleH0oKTtpZihzJiZpKXJldHVybjtSZWdFeHAucHJvdG90eXBlLmV4ZWM9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5leGVjLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuLGE7aWYodHlwZW9mIGU9PSJzdHJpbmciJiZ0KXshaSYmdC5sZW5ndGg+MSYmdSh0LCIiKT4tMSYmKGE9UmVnRXhwKHRoaXMuc291cmNlLHIucmVwbGFjZS5jYWxsKG8odGhpcyksImciLCIiKSksci5yZXBsYWNlLmNhbGwoZS5zbGljZSh0LmluZGV4KSxhLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoLTI7ZSsrKWFyZ3VtZW50c1tlXT09PXVuZGVmaW5lZCYmKHRbZV09dW5kZWZpbmVkKX0pKTtpZih0aGlzLl94cmVnZXhwJiZ0aGlzLl94cmVnZXhwLmNhcHR1cmVOYW1lcylmb3IodmFyIGY9MTtmPHQubGVuZ3RoO2YrKyluPXRoaXMuX3hyZWdleHAuY2FwdHVyZU5hbWVzW2YtMV0sbiYmKHRbbl09dFtmXSk7IXMmJnRoaXMuZ2xvYmFsJiYhdFswXS5sZW5ndGgmJnRoaXMubGFzdEluZGV4PnQuaW5kZXgmJnRoaXMubGFzdEluZGV4LS19cmV0dXJuIHR9LHN8fChSZWdFeHAucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5leGVjLmNhbGwodGhpcyxlKTtyZXR1cm4gdCYmdGhpcy5nbG9iYWwmJiF0WzBdLmxlbmd0aCYmdGhpcy5sYXN0SW5kZXg+dC5pbmRleCYmdGhpcy5sYXN0SW5kZXgtLSwhIXR9KX0pLGRlZmluZSgiYWNlL2xpYi9lczUtc2hpbSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiB2KGUpe3RyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNlbnRpbmVsIix7fSksInNlbnRpbmVsImluIGV9Y2F0Y2godCl7fX1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7aWYodHlwZW9mIG4hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgcj1vLmNhbGwoYXJndW1lbnRzLDEpLGk9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgaSl7dmFyIGU9ZnVuY3Rpb24oKXt9O2UucHJvdG90eXBlPW4ucHJvdG90eXBlO3ZhciBzPW5ldyBlLHU9bi5hcHBseShzLHIuY29uY2F0KG8uY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIHUhPT1udWxsJiZPYmplY3QodSk9PT11P3U6c31yZXR1cm4gbi5hcHBseSh0LHIuY29uY2F0KG8uY2FsbChhcmd1bWVudHMpKSl9O3JldHVybiBpfSk7dmFyIHI9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsaT1BcnJheS5wcm90b3R5cGUscz1PYmplY3QucHJvdG90eXBlLG89aS5zbGljZSx1PXIuYmluZChzLnRvU3RyaW5nKSxhPXIuYmluZChzLmhhc093blByb3BlcnR5KSxmLGwsYyxoLHA7aWYocD1hKHMsIl9fZGVmaW5lR2V0dGVyX18iKSlmPXIuYmluZChzLl9fZGVmaW5lR2V0dGVyX18pLGw9ci5iaW5kKHMuX19kZWZpbmVTZXR0ZXJfXyksYz1yLmJpbmQocy5fX2xvb2t1cEdldHRlcl9fKSxoPXIuYmluZChzLl9fbG9va3VwU2V0dGVyX18pO0FycmF5LmlzQXJyYXl8fChBcnJheS5pc0FycmF5PWZ1bmN0aW9uKHQpe3JldHVybiB1KHQpPT0iW29iamVjdCBBcnJheV0ifSksQXJyYXkucHJvdG90eXBlLmZvckVhY2h8fChBcnJheS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9YXJndW1lbnRzWzFdLGk9MCxzPW4ubGVuZ3RoPj4+MDtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7d2hpbGUoaTxzKWkgaW4gbiYmdC5jYWxsKHIsbltpXSxpLG4pLGkrK30pLEFycmF5LnByb3RvdHlwZS5tYXB8fChBcnJheS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKHQpe3ZhciBuPV8odGhpcykscj1uLmxlbmd0aD4+PjAsaT1BcnJheShyKSxzPWFyZ3VtZW50c1sxXTtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBvPTA7bzxyO28rKylvIGluIG4mJihpW29dPXQuY2FsbChzLG5bb10sbyxuKSk7cmV0dXJuIGl9KSxBcnJheS5wcm90b3R5cGUuZmlsdGVyfHwoQXJyYXkucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wLGk9W10scz1hcmd1bWVudHNbMV07aWYodSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgbz0wO288cjtvKyspbyBpbiBuJiZ0LmNhbGwocyxuW29dLG8sbikmJmkucHVzaChuW29dKTtyZXR1cm4gaX0pLEFycmF5LnByb3RvdHlwZS5ldmVyeXx8KEFycmF5LnByb3RvdHlwZS5ldmVyeT1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wLGk9YXJndW1lbnRzWzFdO2lmKHUodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtmb3IodmFyIHM9MDtzPHI7cysrKWlmKHMgaW4gbiYmIXQuY2FsbChpLG5bc10scyxuKSlyZXR1cm4hMTtyZXR1cm4hMH0pLEFycmF5LnByb3RvdHlwZS5zb21lfHwoQXJyYXkucHJvdG90eXBlLnNvbWU9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MCxpPWFyZ3VtZW50c1sxXTtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBzPTA7czxyO3MrKylpZihzIGluIG4mJnQuY2FsbChpLG5bc10scyxuKSlyZXR1cm4hMDtyZXR1cm4hMX0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2V8fChBcnJheS5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKHQpe3ZhciBuPV8odGhpcykscj1uLmxlbmd0aD4+PjA7aWYodSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2lmKCFyJiZhcmd1bWVudHMubGVuZ3RoPT0xKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGk9MCxzO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpcz1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihpIGluIG4pe3M9bltpKytdO2JyZWFrfWlmKCsraT49cil0aHJvdyBuZXcgVHlwZUVycm9yfXdoaWxlKCEwKTtmb3IoO2k8cjtpKyspaSBpbiBuJiYocz10LmNhbGwodm9pZCAwLHMsbltpXSxpLG4pKTtyZXR1cm4gc30pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodHx8KEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodD1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wO2lmKHUodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtpZighciYmYXJndW1lbnRzLmxlbmd0aD09MSl0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBpLHM9ci0xO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpaT1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihzIGluIG4pe2k9bltzLS1dO2JyZWFrfWlmKC0tczwwKXRocm93IG5ldyBUeXBlRXJyb3J9d2hpbGUoITApO2RvIHMgaW4gdGhpcyYmKGk9dC5jYWxsKHZvaWQgMCxpLG5bc10scyxuKSk7d2hpbGUocy0tKTtyZXR1cm4gaX0pLEFycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MDtpZighcilyZXR1cm4tMTt2YXIgaT0wO2FyZ3VtZW50cy5sZW5ndGg+MSYmKGk9Tyhhcmd1bWVudHNbMV0pKSxpPWk+PTA/aTpNYXRoLm1heCgwLHIraSk7Zm9yKDtpPHI7aSsrKWlmKGkgaW4gbiYmbltpXT09PXQpcmV0dXJuIGk7cmV0dXJuLTF9KSxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Z8fChBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MDtpZighcilyZXR1cm4tMTt2YXIgaT1yLTE7YXJndW1lbnRzLmxlbmd0aD4xJiYoaT1NYXRoLm1pbihpLE8oYXJndW1lbnRzWzFdKSkpLGk9aT49MD9pOnItTWF0aC5hYnMoaSk7Zm9yKDtpPj0wO2ktLSlpZihpIGluIG4mJnQ9PT1uW2ldKXJldHVybiBpO3JldHVybi0xfSksT2JqZWN0LmdldFByb3RvdHlwZU9mfHwoT2JqZWN0LmdldFByb3RvdHlwZU9mPWZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8KHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6cyl9KTtpZighT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcil7dmFyIGQ9Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgY2FsbGVkIG9uIGEgbm9uLW9iamVjdDogIjtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWZ1bmN0aW9uKHQsbil7aWYodHlwZW9mIHQhPSJvYmplY3QiJiZ0eXBlb2YgdCE9ImZ1bmN0aW9uInx8dD09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihkK3QpO2lmKCFhKHQsbikpcmV0dXJuO3ZhciByLGksbztyPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07aWYocCl7dmFyIHU9dC5fX3Byb3RvX187dC5fX3Byb3RvX189czt2YXIgaT1jKHQsbiksbz1oKHQsbik7dC5fX3Byb3RvX189dTtpZihpfHxvKXJldHVybiBpJiYoci5nZXQ9aSksbyYmKHIuc2V0PW8pLHJ9cmV0dXJuIHIudmFsdWU9dFtuXSxyfX1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KX0pLE9iamVjdC5jcmVhdGV8fChPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKHQsbil7dmFyIHI7aWYodD09PW51bGwpcj17X19wcm90b19fOm51bGx9O2Vsc2V7aWYodHlwZW9mIHQhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoInR5cGVvZiBwcm90b3R5cGVbIit0eXBlb2YgdCsiXSAhPSAnb2JqZWN0JyIpO3ZhciBpPWZ1bmN0aW9uKCl7fTtpLnByb3RvdHlwZT10LHI9bmV3IGksci5fX3Byb3RvX189dH1yZXR1cm4gbiE9PXZvaWQgMCYmT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocixuKSxyfSk7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KXt2YXIgbT12KHt9KSxnPXR5cGVvZiBkb2N1bWVudD09InVuZGVmaW5lZCJ8fHYoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2lmKCFtfHwhZyl2YXIgeT1PYmplY3QuZGVmaW5lUHJvcGVydHl9aWYoIU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8eSl7dmFyIGI9IlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0OiAiLHc9Ik9iamVjdC5kZWZpbmVQcm9wZXJ0eSBjYWxsZWQgb24gbm9uLW9iamVjdDogIixFPSJnZXR0ZXJzICYgc2V0dGVycyBjYW4gbm90IGJlIGRlZmluZWQgb24gdGhpcyBqYXZhc2NyaXB0IGVuZ2luZSI7T2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKHQsbixyKXtpZih0eXBlb2YgdCE9Im9iamVjdCImJnR5cGVvZiB0IT0iZnVuY3Rpb24ifHx0PT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKHcrdCk7aWYodHlwZW9mIHIhPSJvYmplY3QiJiZ0eXBlb2YgciE9ImZ1bmN0aW9uInx8cj09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihiK3IpO2lmKHkpdHJ5e3JldHVybiB5LmNhbGwoT2JqZWN0LHQsbixyKX1jYXRjaChpKXt9aWYoYShyLCJ2YWx1ZSIpKWlmKHAmJihjKHQsbil8fGgodCxuKSkpe3ZhciBvPXQuX19wcm90b19fO3QuX19wcm90b19fPXMsZGVsZXRlIHRbbl0sdFtuXT1yLnZhbHVlLHQuX19wcm90b19fPW99ZWxzZSB0W25dPXIudmFsdWU7ZWxzZXtpZighcCl0aHJvdyBuZXcgVHlwZUVycm9yKEUpO2EociwiZ2V0IikmJmYodCxuLHIuZ2V0KSxhKHIsInNldCIpJiZsKHQsbixyLnNldCl9cmV0dXJuIHR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzfHwoT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24odCxuKXtmb3IodmFyIHIgaW4gbilhKG4scikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIsbltyXSk7cmV0dXJuIHR9KSxPYmplY3Quc2VhbHx8KE9iamVjdC5zZWFsPWZ1bmN0aW9uKHQpe3JldHVybiB0fSksT2JqZWN0LmZyZWV6ZXx8KE9iamVjdC5mcmVlemU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KTt0cnl7T2JqZWN0LmZyZWV6ZShmdW5jdGlvbigpe30pfWNhdGNoKFMpe09iamVjdC5mcmVlemU9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uOnQobil9fShPYmplY3QuZnJlZXplKX1PYmplY3QucHJldmVudEV4dGVuc2lvbnN8fChPYmplY3QucHJldmVudEV4dGVuc2lvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KSxPYmplY3QuaXNTZWFsZWR8fChPYmplY3QuaXNTZWFsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuITF9KSxPYmplY3QuaXNGcm96ZW58fChPYmplY3QuaXNGcm96ZW49ZnVuY3Rpb24odCl7cmV0dXJuITF9KSxPYmplY3QuaXNFeHRlbnNpYmxlfHwoT2JqZWN0LmlzRXh0ZW5zaWJsZT1mdW5jdGlvbih0KXtpZihPYmplY3QodCk9PT10KXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIG49IiI7d2hpbGUoYSh0LG4pKW4rPSI/Ijt0W25dPSEwO3ZhciByPWEodCxuKTtyZXR1cm4gZGVsZXRlIHRbbl0scn0pO2lmKCFPYmplY3Qua2V5cyl7dmFyIHg9ITAsVD1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLE49VC5sZW5ndGg7Zm9yKHZhciBDIGlue3RvU3RyaW5nOm51bGx9KXg9ITE7T2JqZWN0LmtleXM9ZnVuY3Rpb24gRChlKXtpZih0eXBlb2YgZSE9Im9iamVjdCImJnR5cGVvZiBlIT0iZnVuY3Rpb24ifHxlPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIEQ9W107Zm9yKHZhciB0IGluIGUpYShlLHQpJiZELnB1c2godCk7aWYoeClmb3IodmFyIG49MCxyPU47bjxyO24rKyl7dmFyIGk9VFtuXTthKGUsaSkmJkQucHVzaChpKX1yZXR1cm4gRH19aWYoIURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nfHwobmV3IERhdGUoLTYyMTk4NzU1MmU1KSkudG9JU09TdHJpbmcoKS5pbmRleE9mKCItMDAwMDAxIik9PT0tMSlEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3ZhciB0LG4scixpO2lmKCFpc0Zpbml0ZSh0aGlzKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcjt0PVt0aGlzLmdldFVUQ01vbnRoKCkrMSx0aGlzLmdldFVUQ0RhdGUoKSx0aGlzLmdldFVUQ0hvdXJzKCksdGhpcy5nZXRVVENNaW51dGVzKCksdGhpcy5nZXRVVENTZWNvbmRzKCldLGk9dGhpcy5nZXRVVENGdWxsWWVhcigpLGk9KGk8MD8iLSI6aT45OTk5PyIrIjoiIikrKCIwMDAwMCIrTWF0aC5hYnMoaSkpLnNsaWNlKDA8PWkmJmk8PTk5OTk/LTQ6LTYpLG49dC5sZW5ndGg7d2hpbGUobi0tKXI9dFtuXSxyPDEwJiYodFtuXT0iMCIrcik7cmV0dXJuIGkrIi0iK3Quc2xpY2UoMCwyKS5qb2luKCItIikrIlQiK3Quc2xpY2UoMikuam9pbigiOiIpKyIuIisoIjAwMCIrdGhpcy5nZXRVVENNaWxsaXNlY29uZHMoKSkuc2xpY2UoLTMpKyJaIn07RGF0ZS5ub3d8fChEYXRlLm5vdz1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksRGF0ZS5wcm90b3R5cGUudG9KU09OfHwoRGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0aGlzLnRvSVNPU3RyaW5nIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKX0pLERhdGUucGFyc2UoIisyNzU3NjAtMDktMTNUMDA6MDA6MDAuMDAwWiIpIT09ODY0ZTEzJiYoRGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbiBpKHQsbixyLHMsbyx1LGEpe3ZhciBmPWFyZ3VtZW50cy5sZW5ndGg7aWYodGhpcyBpbnN0YW5jZW9mIGUpe3ZhciBsPWY9PTEmJlN0cmluZyh0KT09PXQ/bmV3IGUoaS5wYXJzZSh0KSk6Zj49Nz9uZXcgZSh0LG4scixzLG8sdSxhKTpmPj02P25ldyBlKHQsbixyLHMsbyx1KTpmPj01P25ldyBlKHQsbixyLHMsbyk6Zj49ND9uZXcgZSh0LG4scixzKTpmPj0zP25ldyBlKHQsbixyKTpmPj0yP25ldyBlKHQsbik6Zj49MT9uZXcgZSh0KTpuZXcgZTtyZXR1cm4gbC5jb25zdHJ1Y3Rvcj1pLGx9cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxuPW5ldyBSZWdFeHAoIl4oXFxkezR9fFsrLV1cXGR7Nn0pKD86LShcXGR7Mn0pKD86LShcXGR7Mn0pKD86VChcXGR7Mn0pOihcXGR7Mn0pKD86OihcXGR7Mn0pKD86XFwuKFxcZHszfSkpPyk/KD86WnwoPzooWy0rXSkoXFxkezJ9KTooXFxkezJ9KSkpPyk/KT8pPyQiKTtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl07cmV0dXJuIHQubm93PWUubm93LHQuVVRDPWUuVVRDLHQucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wYXJzZT1mdW5jdGlvbihyKXt2YXIgaT1uLmV4ZWMocik7aWYoaSl7aS5zaGlmdCgpO2Zvcih2YXIgcz0xO3M8NztzKyspaVtzXT0rKGlbc118fChzPDM/MTowKSkscz09MSYmaVtzXS0tO3ZhciBvPStpLnBvcCgpLHU9K2kucG9wKCksYT1pLnBvcCgpLGY9MDtpZihhKXtpZih1PjIzfHxvPjU5KXJldHVybiBOYU47Zj0odSo2MCtvKSo2ZTQqKGE9PSIrIj8tMToxKX12YXIgbD0raVswXTtyZXR1cm4gMDw9bCYmbDw9OTk/KGlbMF09bCs0MDAsZS5VVEMuYXBwbHkodGhpcyxpKStmLTEyNjIyNzgwOGU1KTplLlVUQy5hcHBseSh0aGlzLGkpK2Z9cmV0dXJuIGUucGFyc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0fShEYXRlKSk7dmFyIGs9IglcbgtcZlxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI577u/IjtpZighU3RyaW5nLnByb3RvdHlwZS50cmltfHxrLnRyaW0oKSl7az0iWyIraysiXSI7dmFyIEw9bmV3IFJlZ0V4cCgiXiIraytrKyIqIiksQT1uZXcgUmVnRXhwKGsraysiKiQiKTtTdHJpbmcucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMpLnJlcGxhY2UoTCwiIikucmVwbGFjZShBLCIiKX19dmFyIE89ZnVuY3Rpb24oZSl7cmV0dXJuIGU9K2UsZSE9PWU/ZT0wOmUhPT0wJiZlIT09MS8wJiZlIT09LTEvMCYmKGU9KGU+MHx8LTEpKk1hdGguZmxvb3IoTWF0aC5hYnMoZSkpKSxlfSxNPSJhIlswXSE9ImEiLF89ZnVuY3Rpb24oZSl7aWYoZT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yO3JldHVybiBNJiZ0eXBlb2YgZT09InN0cmluZyImJmU/ZS5zcGxpdCgiIik6T2JqZWN0KGUpfX0pLGRlZmluZSgiYWNlL2xpYi9ldmVudF9lbWl0dGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt9O3IuX2VtaXQ9ci5fZGlzcGF0Y2hFdmVudD1mdW5jdGlvbihlLHQpe3RoaXMuX2V2ZW50UmVnaXN0cnk9dGhpcy5fZXZlbnRSZWdpc3RyeXx8e30sdGhpcy5fZGVmYXVsdEhhbmRsZXJzPXRoaXMuX2RlZmF1bHRIYW5kbGVyc3x8e307dmFyIG49dGhpcy5fZXZlbnRSZWdpc3RyeVtlXXx8W10scj10aGlzLl9kZWZhdWx0SGFuZGxlcnNbZV07aWYoIW4ubGVuZ3RoJiYhcilyZXR1cm47dD10fHx7fSx0LnR5cGU9ZSx0LnN0b3BQcm9wYWdhdGlvbnx8KHQuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7dGhpcy5wcm9wYWdhdGlvblN0b3BwZWQ9ITB9KSx0LnByZXZlbnREZWZhdWx0fHwodC5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMH0pO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXtuW2ldKHQpO2lmKHQucHJvcGFnYXRpb25TdG9wcGVkKWJyZWFrfWlmKHImJiF0LmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuIHIodCl9LHIuc2V0RGVmYXVsdEhhbmRsZXI9ZnVuY3Rpb24oZSx0KXt0aGlzLl9kZWZhdWx0SGFuZGxlcnM9dGhpcy5fZGVmYXVsdEhhbmRsZXJzfHx7fTtpZih0aGlzLl9kZWZhdWx0SGFuZGxlcnNbZV0pdGhyb3cgbmV3IEVycm9yKCJUaGUgZGVmYXVsdCBoYW5kbGVyIGZvciAnIitlKyInIGlzIGFscmVhZHkgc2V0Iik7dGhpcy5fZGVmYXVsdEhhbmRsZXJzW2VdPXR9LHIub249ci5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fTt2YXIgbj10aGlzLl9ldmVudFJlZ2lzdHJ5W2VdO2lmKCFuKXZhciBuPXRoaXMuX2V2ZW50UmVnaXN0cnlbZV09W107bi5pbmRleE9mKHQpPT0tMSYmbi5wdXNoKHQpfSxyLnJlbW92ZUxpc3RlbmVyPXIucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3RoaXMuX2V2ZW50UmVnaXN0cnk9dGhpcy5fZXZlbnRSZWdpc3RyeXx8e307dmFyIG49dGhpcy5fZXZlbnRSZWdpc3RyeVtlXTtpZighbilyZXR1cm47dmFyIHI9bi5pbmRleE9mKHQpO3IhPT0tMSYmbi5zcGxpY2UociwxKX0sci5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7dGhpcy5fZXZlbnRSZWdpc3RyeSYmKHRoaXMuX2V2ZW50UmVnaXN0cnlbZV09W10pfSx0LkV2ZW50RW1pdHRlcj1yfSksZGVmaW5lKCJhY2UvbGliL29vcCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmluaGVyaXRzPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt9O3JldHVybiBmdW5jdGlvbih0LG4pe2UucHJvdG90eXBlPW4ucHJvdG90eXBlLHQuc3VwZXJfPW4ucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyBlLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9fSgpLHQubWl4aW49ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl19LHQuaW1wbGVtZW50PWZ1bmN0aW9uKGUsbil7dC5taXhpbihlLG4pfX0pLGRlZmluZSgiYWNlL21vZGUvY29mZmVlX3dvcmtlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3dvcmtlci9taXJyb3IiLCJhY2UvbW9kZS9jb2ZmZWUvY29mZmVlLXNjcmlwdCJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi93b3JrZXIvbWlycm9yIikuTWlycm9yLHM9ZSgiLi4vbW9kZS9jb2ZmZWUvY29mZmVlLXNjcmlwdCIpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKCl7fTt2YXIgbz10Lldvcmtlcj1mdW5jdGlvbihlKXtpLmNhbGwodGhpcyxlKSx0aGlzLnNldFRpbWVvdXQoMjAwKX07ci5pbmhlcml0cyhvLGkpLGZ1bmN0aW9uKCl7dGhpcy5vblVwZGF0ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZG9jLmdldFZhbHVlKCk7dHJ5e3MucGFyc2UoZSl9Y2F0Y2godCl7dmFyIG49dC5tZXNzYWdlLm1hdGNoKC9QYXJzZSBlcnJvciBvbiBsaW5lIChcZCspOiAoLiopLyk7aWYobil7dGhpcy5zZW5kZXIuZW1pdCgiZXJyb3IiLHtyb3c6cGFyc2VJbnQoblsxXSwxMCktMSxjb2x1bW46bnVsbCx0ZXh0Om5bMl0sdHlwZToiZXJyb3IifSk7cmV0dXJufWlmKHQgaW5zdGFuY2VvZiBTeW50YXhFcnJvcil7dmFyIG49dC5tZXNzYWdlLm1hdGNoKC8gb24gbGluZSAoXGQrKS8pO24mJnRoaXMuc2VuZGVyLmVtaXQoImVycm9yIix7cm93OnBhcnNlSW50KG5bMV0sMTApLTEsY29sdW1uOm51bGwsdGV4dDp0Lm1lc3NhZ2UucmVwbGFjZShuWzBdLCIiKSx0eXBlOiJlcnJvciJ9KX1yZXR1cm59dGhpcy5zZW5kZXIuZW1pdCgib2siKX19LmNhbGwoby5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2Uvd29ya2VyL21pcnJvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9kb2N1bWVudCIsImFjZS9saWIvbGFuZyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9kb2N1bWVudCIpLkRvY3VtZW50LGk9ZSgiLi4vbGliL2xhbmciKSxzPXQuTWlycm9yPWZ1bmN0aW9uKGUpe3RoaXMuc2VuZGVyPWU7dmFyIHQ9dGhpcy5kb2M9bmV3IHIoIiIpLG49dGhpcy5kZWZlcnJlZFVwZGF0ZT1pLmRlZmVycmVkQ2FsbCh0aGlzLm9uVXBkYXRlLmJpbmQodGhpcykpLHM9dGhpcztlLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKGUpe3QuYXBwbHlEZWx0YXMoW2UuZGF0YV0pLG4uc2NoZWR1bGUocy4kdGltZW91dCl9KX07KGZ1bmN0aW9uKCl7dGhpcy4kdGltZW91dD01MDAsdGhpcy5zZXRUaW1lb3V0PWZ1bmN0aW9uKGUpe3RoaXMuJHRpbWVvdXQ9ZX0sdGhpcy5zZXRWYWx1ZT1mdW5jdGlvbihlKXt0aGlzLmRvYy5zZXRWYWx1ZShlKSx0aGlzLmRlZmVycmVkVXBkYXRlLnNjaGVkdWxlKHRoaXMuJHRpbWVvdXQpfSx0aGlzLmdldFZhbHVlPWZ1bmN0aW9uKGUpe3RoaXMuc2VuZGVyLmNhbGxiYWNrKHRoaXMuZG9jLmdldFZhbHVlKCksZSl9LHRoaXMub25VcGRhdGU9ZnVuY3Rpb24oKXt9fSkuY2FsbChzLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9kb2N1bWVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIiwiYWNlL3JhbmdlIiwiYWNlL2FuY2hvciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL2xpYi9vb3AiKSxpPWUoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIscz1lKCIuL3JhbmdlIikuUmFuZ2Usbz1lKCIuL2FuY2hvciIpLkFuY2hvcix1PWZ1bmN0aW9uKGUpe3RoaXMuJGxpbmVzPVtdLGUubGVuZ3RoPT0wP3RoaXMuJGxpbmVzPVsiIl06QXJyYXkuaXNBcnJheShlKT90aGlzLmluc2VydExpbmVzKDAsZSk6dGhpcy5pbnNlcnQoe3JvdzowLGNvbHVtbjowfSxlKX07KGZ1bmN0aW9uKCl7ci5pbXBsZW1lbnQodGhpcyxpKSx0aGlzLnNldFZhbHVlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0TGVuZ3RoKCk7dGhpcy5yZW1vdmUobmV3IHMoMCwwLHQsdGhpcy5nZXRMaW5lKHQtMSkubGVuZ3RoKSksdGhpcy5pbnNlcnQoe3JvdzowLGNvbHVtbjowfSxlKX0sdGhpcy5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEFsbExpbmVzKCkuam9pbih0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSl9LHRoaXMuY3JlYXRlQW5jaG9yPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBvKHRoaXMsZSx0KX0sImFhYSIuc3BsaXQoL2EvKS5sZW5ndGg9PTA/dGhpcy4kc3BsaXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpLnNwbGl0KCJcbiIpfTp0aGlzLiRzcGxpdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgvXHJcbnxccnxcbi8pfSx0aGlzLiRkZXRlY3ROZXdMaW5lPWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14uKj8oXHJcbnxccnxcbikvbSk7dD90aGlzLiRhdXRvTmV3TGluZT10WzFdOnRoaXMuJGF1dG9OZXdMaW5lPSJcbiJ9LHRoaXMuZ2V0TmV3TGluZUNoYXJhY3Rlcj1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLiRuZXdMaW5lTW9kZSl7Y2FzZSJ3aW5kb3dzIjpyZXR1cm4iXHJcbiI7Y2FzZSJ1bml4IjpyZXR1cm4iXG4iO2Nhc2UiYXV0byI6cmV0dXJuIHRoaXMuJGF1dG9OZXdMaW5lfX0sdGhpcy4kYXV0b05ld0xpbmU9IlxuIix0aGlzLiRuZXdMaW5lTW9kZT0iYXV0byIsdGhpcy5zZXROZXdMaW5lTW9kZT1mdW5jdGlvbihlKXtpZih0aGlzLiRuZXdMaW5lTW9kZT09PWUpcmV0dXJuO3RoaXMuJG5ld0xpbmVNb2RlPWV9LHRoaXMuZ2V0TmV3TGluZU1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kbmV3TGluZU1vZGV9LHRoaXMuaXNOZXdMaW5lPWZ1bmN0aW9uKGUpe3JldHVybiBlPT0iXHJcbiJ8fGU9PSJcciJ8fGU9PSJcbiJ9LHRoaXMuZ2V0TGluZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy4kbGluZXNbZV18fCIifSx0aGlzLmdldExpbmVzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuJGxpbmVzLnNsaWNlKGUsdCsxKX0sdGhpcy5nZXRBbGxMaW5lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExpbmVzKDAsdGhpcy5nZXRMZW5ndGgoKSl9LHRoaXMuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGxpbmVzLmxlbmd0aH0sdGhpcy5nZXRUZXh0UmFuZ2U9ZnVuY3Rpb24oZSl7aWYoZS5zdGFydC5yb3c9PWUuZW5kLnJvdylyZXR1cm4gdGhpcy4kbGluZXNbZS5zdGFydC5yb3ddLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbixlLmVuZC5jb2x1bW4pO3ZhciB0PXRoaXMuZ2V0TGluZXMoZS5zdGFydC5yb3crMSxlLmVuZC5yb3ctMSk7cmV0dXJuIHQudW5zaGlmdCgodGhpcy4kbGluZXNbZS5zdGFydC5yb3ddfHwiIikuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKSksdC5wdXNoKCh0aGlzLiRsaW5lc1tlLmVuZC5yb3ddfHwiIikuc3Vic3RyaW5nKDAsZS5lbmQuY29sdW1uKSksdC5qb2luKHRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpKX0sdGhpcy4kY2xpcFBvc2l0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0TGVuZ3RoKCk7cmV0dXJuIGUucm93Pj10JiYoZS5yb3c9TWF0aC5tYXgoMCx0LTEpLGUuY29sdW1uPXRoaXMuZ2V0TGluZSh0LTEpLmxlbmd0aCksZX0sdGhpcy5pbnNlcnQ9ZnVuY3Rpb24oZSx0KXtpZighdHx8dC5sZW5ndGg9PT0wKXJldHVybiBlO2U9dGhpcy4kY2xpcFBvc2l0aW9uKGUpLHRoaXMuZ2V0TGVuZ3RoKCk8PTEmJnRoaXMuJGRldGVjdE5ld0xpbmUodCk7dmFyIG49dGhpcy4kc3BsaXQodCkscj1uLnNwbGljZSgwLDEpWzBdLGk9bi5sZW5ndGg9PTA/bnVsbDpuLnNwbGljZShuLmxlbmd0aC0xLDEpWzBdO3JldHVybiBlPXRoaXMuaW5zZXJ0SW5MaW5lKGUsciksaSE9PW51bGwmJihlPXRoaXMuaW5zZXJ0TmV3TGluZShlKSxlPXRoaXMuaW5zZXJ0TGluZXMoZS5yb3csbiksZT10aGlzLmluc2VydEluTGluZShlLGl8fCIiKSksZX0sdGhpcy5pbnNlcnRMaW5lcz1mdW5jdGlvbihlLHQpe2lmKHQubGVuZ3RoPT0wKXJldHVybntyb3c6ZSxjb2x1bW46MH07aWYodC5sZW5ndGg+NjU1MzUpe3ZhciBuPXRoaXMuaW5zZXJ0TGluZXMoZSx0LnNsaWNlKDY1NTM1KSk7dD10LnNsaWNlKDAsNjU1MzUpfXZhciByPVtlLDBdO3IucHVzaC5hcHBseShyLHQpLHRoaXMuJGxpbmVzLnNwbGljZS5hcHBseSh0aGlzLiRsaW5lcyxyKTt2YXIgaT1uZXcgcyhlLDAsZSt0Lmxlbmd0aCwwKSxvPXthY3Rpb246Imluc2VydExpbmVzIixyYW5nZTppLGxpbmVzOnR9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOm99KSxufHxpLmVuZH0sdGhpcy5pbnNlcnROZXdMaW5lPWZ1bmN0aW9uKGUpe2U9dGhpcy4kY2xpcFBvc2l0aW9uKGUpO3ZhciB0PXRoaXMuJGxpbmVzW2Uucm93XXx8IiI7dGhpcy4kbGluZXNbZS5yb3ddPXQuc3Vic3RyaW5nKDAsZS5jb2x1bW4pLHRoaXMuJGxpbmVzLnNwbGljZShlLnJvdysxLDAsdC5zdWJzdHJpbmcoZS5jb2x1bW4sdC5sZW5ndGgpKTt2YXIgbj17cm93OmUucm93KzEsY29sdW1uOjB9LHI9e2FjdGlvbjoiaW5zZXJ0VGV4dCIscmFuZ2U6cy5mcm9tUG9pbnRzKGUsbiksdGV4dDp0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKX07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6cn0pLG59LHRoaXMuaW5zZXJ0SW5MaW5lPWZ1bmN0aW9uKGUsdCl7aWYodC5sZW5ndGg9PTApcmV0dXJuIGU7dmFyIG49dGhpcy4kbGluZXNbZS5yb3ddfHwiIjt0aGlzLiRsaW5lc1tlLnJvd109bi5zdWJzdHJpbmcoMCxlLmNvbHVtbikrdCtuLnN1YnN0cmluZyhlLmNvbHVtbik7dmFyIHI9e3JvdzplLnJvdyxjb2x1bW46ZS5jb2x1bW4rdC5sZW5ndGh9LGk9e2FjdGlvbjoiaW5zZXJ0VGV4dCIscmFuZ2U6cy5mcm9tUG9pbnRzKGUsciksdGV4dDp0fTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTppfSkscn0sdGhpcy5yZW1vdmU9ZnVuY3Rpb24oZSl7ZS5zdGFydD10aGlzLiRjbGlwUG9zaXRpb24oZS5zdGFydCksZS5lbmQ9dGhpcy4kY2xpcFBvc2l0aW9uKGUuZW5kKTtpZihlLmlzRW1wdHkoKSlyZXR1cm4gZS5zdGFydDt2YXIgdD1lLnN0YXJ0LnJvdyxuPWUuZW5kLnJvdztpZihlLmlzTXVsdGlMaW5lKCkpe3ZhciByPWUuc3RhcnQuY29sdW1uPT0wP3Q6dCsxLGk9bi0xO2UuZW5kLmNvbHVtbj4wJiZ0aGlzLnJlbW92ZUluTGluZShuLDAsZS5lbmQuY29sdW1uKSxpPj1yJiZ0aGlzLnJlbW92ZUxpbmVzKHIsaSksciE9dCYmKHRoaXMucmVtb3ZlSW5MaW5lKHQsZS5zdGFydC5jb2x1bW4sdGhpcy5nZXRMaW5lKHQpLmxlbmd0aCksdGhpcy5yZW1vdmVOZXdMaW5lKGUuc3RhcnQucm93KSl9ZWxzZSB0aGlzLnJlbW92ZUluTGluZSh0LGUuc3RhcnQuY29sdW1uLGUuZW5kLmNvbHVtbik7cmV0dXJuIGUuc3RhcnR9LHRoaXMucmVtb3ZlSW5MaW5lPWZ1bmN0aW9uKGUsdCxuKXtpZih0PT1uKXJldHVybjt2YXIgcj1uZXcgcyhlLHQsZSxuKSxpPXRoaXMuZ2V0TGluZShlKSxvPWkuc3Vic3RyaW5nKHQsbiksdT1pLnN1YnN0cmluZygwLHQpK2kuc3Vic3RyaW5nKG4saS5sZW5ndGgpO3RoaXMuJGxpbmVzLnNwbGljZShlLDEsdSk7dmFyIGE9e2FjdGlvbjoicmVtb3ZlVGV4dCIscmFuZ2U6cix0ZXh0Om99O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOmF9KSxyLnN0YXJ0fSx0aGlzLnJlbW92ZUxpbmVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IHMoZSwwLHQrMSwwKSxyPXRoaXMuJGxpbmVzLnNwbGljZShlLHQtZSsxKSxpPXthY3Rpb246InJlbW92ZUxpbmVzIixyYW5nZTpuLG5sOnRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpLGxpbmVzOnJ9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOml9KSxyfSx0aGlzLnJlbW92ZU5ld0xpbmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRMaW5lKGUpLG49dGhpcy5nZXRMaW5lKGUrMSkscj1uZXcgcyhlLHQubGVuZ3RoLGUrMSwwKSxpPXQrbjt0aGlzLiRsaW5lcy5zcGxpY2UoZSwyLGkpO3ZhciBvPXthY3Rpb246InJlbW92ZVRleHQiLHJhbmdlOnIsdGV4dDp0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKX07dGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTpvfSl9LHRoaXMucmVwbGFjZT1mdW5jdGlvbihlLHQpe2lmKHQubGVuZ3RoPT0wJiZlLmlzRW1wdHkoKSlyZXR1cm4gZS5zdGFydDtpZih0PT10aGlzLmdldFRleHRSYW5nZShlKSlyZXR1cm4gZS5lbmQ7dGhpcy5yZW1vdmUoZSk7aWYodCl2YXIgbj10aGlzLmluc2VydChlLnN0YXJ0LHQpO2Vsc2Ugbj1lLnN0YXJ0O3JldHVybiBufSx0aGlzLmFwcGx5RGVsdGFzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgbj1lW3RdLHI9cy5mcm9tUG9pbnRzKG4ucmFuZ2Uuc3RhcnQsbi5yYW5nZS5lbmQpO24uYWN0aW9uPT0iaW5zZXJ0TGluZXMiP3RoaXMuaW5zZXJ0TGluZXMoci5zdGFydC5yb3csbi5saW5lcyk6bi5hY3Rpb249PSJpbnNlcnRUZXh0Ij90aGlzLmluc2VydChyLnN0YXJ0LG4udGV4dCk6bi5hY3Rpb249PSJyZW1vdmVMaW5lcyI/dGhpcy5yZW1vdmVMaW5lcyhyLnN0YXJ0LnJvdyxyLmVuZC5yb3ctMSk6bi5hY3Rpb249PSJyZW1vdmVUZXh0IiYmdGhpcy5yZW1vdmUocil9fSx0aGlzLnJldmVydERlbHRhcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGgtMTt0Pj0wO3QtLSl7dmFyIG49ZVt0XSxyPXMuZnJvbVBvaW50cyhuLnJhbmdlLnN0YXJ0LG4ucmFuZ2UuZW5kKTtuLmFjdGlvbj09Imluc2VydExpbmVzIj90aGlzLnJlbW92ZUxpbmVzKHIuc3RhcnQucm93LHIuZW5kLnJvdy0xKTpuLmFjdGlvbj09Imluc2VydFRleHQiP3RoaXMucmVtb3ZlKHIpOm4uYWN0aW9uPT0icmVtb3ZlTGluZXMiP3RoaXMuaW5zZXJ0TGluZXMoci5zdGFydC5yb3csbi5saW5lcyk6bi5hY3Rpb249PSJyZW1vdmVUZXh0IiYmdGhpcy5pbnNlcnQoci5zdGFydCxuLnRleHQpfX19KS5jYWxsKHUucHJvdG90eXBlKSx0LkRvY3VtZW50PXV9KSxkZWZpbmUoImFjZS9yYW5nZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1mdW5jdGlvbihlLHQsbixyKXt0aGlzLnN0YXJ0PXtyb3c6ZSxjb2x1bW46dH0sdGhpcy5lbmQ9e3JvdzpuLGNvbHVtbjpyfX07KGZ1bmN0aW9uKCl7dGhpcy5pc0VxdWFsPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09ZS5zdGFydC5yb3cmJnRoaXMuZW5kLnJvdz09ZS5lbmQucm93JiZ0aGlzLnN0YXJ0LmNvbHVtbj09ZS5zdGFydC5jb2x1bW4mJnRoaXMuZW5kLmNvbHVtbj09ZS5lbmQuY29sdW1ufSx0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlJhbmdlOiBbIit0aGlzLnN0YXJ0LnJvdysiLyIrdGhpcy5zdGFydC5jb2x1bW4rIl0gLT4gWyIrdGhpcy5lbmQucm93KyIvIit0aGlzLmVuZC5jb2x1bW4rIl0ifSx0aGlzLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuY29tcGFyZShlLHQpPT0wfSx0aGlzLmNvbXBhcmVSYW5nZT1mdW5jdGlvbihlKXt2YXIgdCxuPWUuZW5kLHI9ZS5zdGFydDtyZXR1cm4gdD10aGlzLmNvbXBhcmUobi5yb3csbi5jb2x1bW4pLHQ9PTE/KHQ9dGhpcy5jb21wYXJlKHIucm93LHIuY29sdW1uKSx0PT0xPzI6dD09MD8xOjApOnQ9PS0xPy0yOih0PXRoaXMuY29tcGFyZShyLnJvdyxyLmNvbHVtbiksdD09LTE/LTE6dD09MT80MjowKX0sdGhpcy5jb21wYXJlUG9pbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29tcGFyZShlLnJvdyxlLmNvbHVtbil9LHRoaXMuY29udGFpbnNSYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb21wYXJlUG9pbnQoZS5zdGFydCk9PTAmJnRoaXMuY29tcGFyZVBvaW50KGUuZW5kKT09MH0sdGhpcy5pbnRlcnNlY3RzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY29tcGFyZVJhbmdlKGUpO3JldHVybiB0PT0tMXx8dD09MHx8dD09MX0sdGhpcy5pc0VuZD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmVuZC5yb3c9PWUmJnRoaXMuZW5kLmNvbHVtbj09dH0sdGhpcy5pc1N0YXJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuc3RhcnQucm93PT1lJiZ0aGlzLnN0YXJ0LmNvbHVtbj09dH0sdGhpcy5zZXRTdGFydD1mdW5jdGlvbihlLHQpe3R5cGVvZiBlPT0ib2JqZWN0Ij8odGhpcy5zdGFydC5jb2x1bW49ZS5jb2x1bW4sdGhpcy5zdGFydC5yb3c9ZS5yb3cpOih0aGlzLnN0YXJ0LnJvdz1lLHRoaXMuc3RhcnQuY29sdW1uPXQpfSx0aGlzLnNldEVuZD1mdW5jdGlvbihlLHQpe3R5cGVvZiBlPT0ib2JqZWN0Ij8odGhpcy5lbmQuY29sdW1uPWUuY29sdW1uLHRoaXMuZW5kLnJvdz1lLnJvdyk6KHRoaXMuZW5kLnJvdz1lLHRoaXMuZW5kLmNvbHVtbj10KX0sdGhpcy5pbnNpZGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jb21wYXJlKGUsdCk9PTA/dGhpcy5pc0VuZChlLHQpfHx0aGlzLmlzU3RhcnQoZSx0KT8hMTohMDohMX0sdGhpcy5pbnNpZGVTdGFydD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNvbXBhcmUoZSx0KT09MD90aGlzLmlzRW5kKGUsdCk/ITE6ITA6ITF9LHRoaXMuaW5zaWRlRW5kPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuY29tcGFyZShlLHQpPT0wP3RoaXMuaXNTdGFydChlLHQpPyExOiEwOiExfSx0aGlzLmNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hdGhpcy5pc011bHRpTGluZSgpJiZlPT09dGhpcy5zdGFydC5yb3c/dDx0aGlzLnN0YXJ0LmNvbHVtbj8tMTp0PnRoaXMuZW5kLmNvbHVtbj8xOjA6ZTx0aGlzLnN0YXJ0LnJvdz8tMTplPnRoaXMuZW5kLnJvdz8xOnRoaXMuc3RhcnQucm93PT09ZT90Pj10aGlzLnN0YXJ0LmNvbHVtbj8wOi0xOnRoaXMuZW5kLnJvdz09PWU/dDw9dGhpcy5lbmQuY29sdW1uPzA6MTowfSx0aGlzLmNvbXBhcmVTdGFydD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09ZSYmdGhpcy5zdGFydC5jb2x1bW49PXQ/LTE6dGhpcy5jb21wYXJlKGUsdCl9LHRoaXMuY29tcGFyZUVuZD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmVuZC5yb3c9PWUmJnRoaXMuZW5kLmNvbHVtbj09dD8xOnRoaXMuY29tcGFyZShlLHQpfSx0aGlzLmNvbXBhcmVJbnNpZGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lbmQucm93PT1lJiZ0aGlzLmVuZC5jb2x1bW49PXQ/MTp0aGlzLnN0YXJ0LnJvdz09ZSYmdGhpcy5zdGFydC5jb2x1bW49PXQ/LTE6dGhpcy5jb21wYXJlKGUsdCl9LHRoaXMuY2xpcFJvd3M9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLmVuZC5yb3c+dCl2YXIgbj17cm93OnQrMSxjb2x1bW46MH07aWYodGhpcy5zdGFydC5yb3c+dCl2YXIgaT17cm93OnQrMSxjb2x1bW46MH07aWYodGhpcy5zdGFydC5yb3c8ZSl2YXIgaT17cm93OmUsY29sdW1uOjB9O2lmKHRoaXMuZW5kLnJvdzxlKXZhciBuPXtyb3c6ZSxjb2x1bW46MH07cmV0dXJuIHIuZnJvbVBvaW50cyhpfHx0aGlzLnN0YXJ0LG58fHRoaXMuZW5kKX0sdGhpcy5leHRlbmQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNvbXBhcmUoZSx0KTtpZihuPT0wKXJldHVybiB0aGlzO2lmKG49PS0xKXZhciBpPXtyb3c6ZSxjb2x1bW46dH07ZWxzZSB2YXIgcz17cm93OmUsY29sdW1uOnR9O3JldHVybiByLmZyb21Qb2ludHMoaXx8dGhpcy5zdGFydCxzfHx0aGlzLmVuZCl9LHRoaXMuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09dGhpcy5lbmQucm93JiZ0aGlzLnN0YXJ0LmNvbHVtbj09dGhpcy5lbmQuY29sdW1ufSx0aGlzLmlzTXVsdGlMaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnQucm93IT09dGhpcy5lbmQucm93fSx0aGlzLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIHIuZnJvbVBvaW50cyh0aGlzLnN0YXJ0LHRoaXMuZW5kKX0sdGhpcy5jb2xsYXBzZVJvd3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmQuY29sdW1uPT0wP25ldyByKHRoaXMuc3RhcnQucm93LDAsTWF0aC5tYXgodGhpcy5zdGFydC5yb3csdGhpcy5lbmQucm93LTEpLDApOm5ldyByKHRoaXMuc3RhcnQucm93LDAsdGhpcy5lbmQucm93LDApfSx0aGlzLnRvU2NyZWVuUmFuZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24odGhpcy5zdGFydCksbj1lLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLmVuZCk7cmV0dXJuIG5ldyByKHQucm93LHQuY29sdW1uLG4ucm93LG4uY29sdW1uKX19KS5jYWxsKHIucHJvdG90eXBlKSxyLmZyb21Qb2ludHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHIoZS5yb3csZS5jb2x1bW4sdC5yb3csdC5jb2x1bW4pfSx0LlJhbmdlPXJ9KSxkZWZpbmUoImFjZS9hbmNob3IiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvZXZlbnRfZW1pdHRlciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL2xpYi9vb3AiKSxpPWUoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIscz10LkFuY2hvcj1mdW5jdGlvbihlLHQsbil7dGhpcy5kb2N1bWVudD1lLHR5cGVvZiBuPT0idW5kZWZpbmVkIj90aGlzLnNldFBvc2l0aW9uKHQucm93LHQuY29sdW1uKTp0aGlzLnNldFBvc2l0aW9uKHQsbiksdGhpcy4kb25DaGFuZ2U9dGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpLGUub24oImNoYW5nZSIsdGhpcy4kb25DaGFuZ2UpfTsoZnVuY3Rpb24oKXtyLmltcGxlbWVudCh0aGlzLGkpLHRoaXMuZ2V0UG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudCh0aGlzLnJvdyx0aGlzLmNvbHVtbil9LHRoaXMuZ2V0RG9jdW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb2N1bWVudH0sdGhpcy5vbkNoYW5nZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGEsbj10LnJhbmdlO2lmKG4uc3RhcnQucm93PT1uLmVuZC5yb3cmJm4uc3RhcnQucm93IT10aGlzLnJvdylyZXR1cm47aWYobi5zdGFydC5yb3c+dGhpcy5yb3cpcmV0dXJuO2lmKG4uc3RhcnQucm93PT10aGlzLnJvdyYmbi5zdGFydC5jb2x1bW4+dGhpcy5jb2x1bW4pcmV0dXJuO3ZhciByPXRoaXMucm93LGk9dGhpcy5jb2x1bW47dC5hY3Rpb249PT0iaW5zZXJ0VGV4dCI/bi5zdGFydC5yb3c9PT1yJiZuLnN0YXJ0LmNvbHVtbjw9aT9uLnN0YXJ0LnJvdz09PW4uZW5kLnJvdz9pKz1uLmVuZC5jb2x1bW4tbi5zdGFydC5jb2x1bW46KGktPW4uc3RhcnQuY29sdW1uLHIrPW4uZW5kLnJvdy1uLnN0YXJ0LnJvdyk6bi5zdGFydC5yb3chPT1uLmVuZC5yb3cmJm4uc3RhcnQucm93PHImJihyKz1uLmVuZC5yb3ctbi5zdGFydC5yb3cpOnQuYWN0aW9uPT09Imluc2VydExpbmVzIj9uLnN0YXJ0LnJvdzw9ciYmKHIrPW4uZW5kLnJvdy1uLnN0YXJ0LnJvdyk6dC5hY3Rpb249PSJyZW1vdmVUZXh0Ij9uLnN0YXJ0LnJvdz09ciYmbi5zdGFydC5jb2x1bW48aT9uLmVuZC5jb2x1bW4+PWk/aT1uLnN0YXJ0LmNvbHVtbjppPU1hdGgubWF4KDAsaS0obi5lbmQuY29sdW1uLW4uc3RhcnQuY29sdW1uKSk6bi5zdGFydC5yb3chPT1uLmVuZC5yb3cmJm4uc3RhcnQucm93PHI/KG4uZW5kLnJvdz09ciYmKGk9TWF0aC5tYXgoMCxpLW4uZW5kLmNvbHVtbikrbi5zdGFydC5jb2x1bW4pLHItPW4uZW5kLnJvdy1uLnN0YXJ0LnJvdyk6bi5lbmQucm93PT1yJiYoci09bi5lbmQucm93LW4uc3RhcnQucm93LGk9TWF0aC5tYXgoMCxpLW4uZW5kLmNvbHVtbikrbi5zdGFydC5jb2x1bW4pOnQuYWN0aW9uPT0icmVtb3ZlTGluZXMiJiZuLnN0YXJ0LnJvdzw9ciYmKG4uZW5kLnJvdzw9cj9yLT1uLmVuZC5yb3ctbi5zdGFydC5yb3c6KHI9bi5zdGFydC5yb3csaT0wKSksdGhpcy5zZXRQb3NpdGlvbihyLGksITApfSx0aGlzLnNldFBvc2l0aW9uPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtuP3I9e3JvdzplLGNvbHVtbjp0fTpyPXRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQoZSx0KTtpZih0aGlzLnJvdz09ci5yb3cmJnRoaXMuY29sdW1uPT1yLmNvbHVtbilyZXR1cm47dmFyIGk9e3Jvdzp0aGlzLnJvdyxjb2x1bW46dGhpcy5jb2x1bW59O3RoaXMucm93PXIucm93LHRoaXMuY29sdW1uPXIuY29sdW1uLHRoaXMuX2VtaXQoImNoYW5nZSIse29sZDppLHZhbHVlOnJ9KX0sdGhpcy5kZXRhY2g9ZnVuY3Rpb24oKXt0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy4kb25DaGFuZ2UpfSx0aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49e307cmV0dXJuIGU+PXRoaXMuZG9jdW1lbnQuZ2V0TGVuZ3RoKCk/KG4ucm93PU1hdGgubWF4KDAsdGhpcy5kb2N1bWVudC5nZXRMZW5ndGgoKS0xKSxuLmNvbHVtbj10aGlzLmRvY3VtZW50LmdldExpbmUobi5yb3cpLmxlbmd0aCk6ZTwwPyhuLnJvdz0wLG4uY29sdW1uPTApOihuLnJvdz1lLG4uY29sdW1uPU1hdGgubWluKHRoaXMuZG9jdW1lbnQuZ2V0TGluZShuLnJvdykubGVuZ3RoLE1hdGgubWF4KDAsdCkpKSx0PDAmJihuLmNvbHVtbj0wKSxufX0pLmNhbGwocy5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbGliL2xhbmciLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7dC5zdHJpbmdSZXZlcnNlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIil9LHQuc3RyaW5nUmVwZWF0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuKG5ldyBBcnJheSh0KzEpKS5qb2luKGUpfTt2YXIgcj0vXlxzXHMqLyxpPS9cc1xzKiQvO3Quc3RyaW5nVHJpbUxlZnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShyLCIiKX0sdC5zdHJpbmdUcmltUmlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShpLCIiKX0sdC5jb3B5T2JqZWN0PWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXTtyZXR1cm4gdH0sdC5jb3B5QXJyYXk9ZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWVbbl0mJnR5cGVvZiBlW25dPT0ib2JqZWN0Ij90W25dPXRoaXMuY29weU9iamVjdChlW25dKTp0W25dPWVbbl07cmV0dXJuIHR9LHQuZGVlcENvcHk9ZnVuY3Rpb24oZSl7aWYodHlwZW9mIGUhPSJvYmplY3QiKXJldHVybiBlO3ZhciB0PWUuY29uc3RydWN0b3IoKTtmb3IodmFyIG4gaW4gZSl0eXBlb2YgZVtuXT09Im9iamVjdCI/dFtuXT10aGlzLmRlZXBDb3B5KGVbbl0pOnRbbl09ZVtuXTtyZXR1cm4gdH0sdC5hcnJheVRvTWFwPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXRbZVtuXV09MTtyZXR1cm4gdH0sdC5hcnJheVJlbW92ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248PWUubGVuZ3RoO24rKyl0PT09ZVtuXSYmZS5zcGxpY2UobiwxKX0sdC5lc2NhcGVSZWdFeHA9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvKFsuKis/XiR7fSgpfFtcXVwvXFxdKS9nLCJcXCQxIil9LHQuZ2V0TWF0Y2hPZmZzZXRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49W107cmV0dXJuIGUucmVwbGFjZSh0LGZ1bmN0aW9uKGUpe24ucHVzaCh7b2Zmc2V0OmFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTJdLGxlbmd0aDplLmxlbmd0aH0pfSksbn0sdC5kZWZlcnJlZENhbGw9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbCxuPWZ1bmN0aW9uKCl7dD1udWxsLGUoKX0scj1mdW5jdGlvbihlKXtyZXR1cm4gci5jYW5jZWwoKSx0PXNldFRpbWVvdXQobixlfHwwKSxyfTtyZXR1cm4gci5zY2hlZHVsZT1yLHIuY2FsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbmNlbCgpLGUoKSxyfSxyLmNhbmNlbD1mdW5jdGlvbigpe3JldHVybiBjbGVhclRpbWVvdXQodCksdD1udWxsLHJ9LHJ9fSksZGVmaW5lKCJhY2UvbW9kZS9jb2ZmZWUvY29mZmVlLXNjcmlwdCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9tb2RlL2NvZmZlZS9sZXhlciIsImFjZS9tb2RlL2NvZmZlZS9wYXJzZXIiLCJhY2UvbW9kZS9jb2ZmZWUvbm9kZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9sZXhlciIpLkxleGVyLGk9ZSgiLi9wYXJzZXIiKSxzPW5ldyByO2kubGV4ZXI9e2xleDpmdW5jdGlvbigpe3ZhciBlLHQ7cmV0dXJuIHQ9dGhpcy50b2tlbnNbdGhpcy5wb3MrK118fFsiIl0sZT10WzBdLHRoaXMueXl0ZXh0PXRbMV0sdGhpcy55eWxpbmVubz10WzJdLGV9LHNldElucHV0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRva2Vucz1lLHRoaXMucG9zPTB9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXtyZXR1cm4iIn19LGkueXk9ZSgiLi9ub2RlcyIpLHQucGFyc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGkucGFyc2Uocy50b2tlbml6ZShlKSl9fSksZGVmaW5lKCJhY2UvbW9kZS9jb2ZmZWUvbGV4ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbW9kZS9jb2ZmZWUvcmV3cml0ZXIiLCJhY2UvbW9kZS9jb2ZmZWUvaGVscGVycyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLHMsbyx1LGEsZixsLGMsaCxwLGQsdixtLGcseSxiLHcsRSxTLHgsVCxOLEMsayxMLEEsTyxNLF8sRCxQLEgsQixqLEYsSSxxLFIsVSx6LFcsWCxWLCQsSixLLFEsRz1bXS5pbmRleE9mfHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPXRoaXMubGVuZ3RoO3Q8bjt0KyspaWYodCBpbiB0aGlzJiZ0aGlzW3RdPT09ZSlyZXR1cm4gdDtyZXR1cm4tMX07Sz1lKCIuL3Jld3JpdGVyIiksaj1LLlJld3JpdGVyLGI9Sy5JTlZFUlNFUyxRPWUoIi4vaGVscGVycyIpLFg9US5jb3VudCxKPVEuc3RhcnRzLFc9US5jb21wYWN0LCQ9US5sYXN0LHQuTGV4ZXI9Qz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9cmV0dXJuIGUubmFtZT0iTGV4ZXIiLGUucHJvdG90eXBlLnRva2VuaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG4scjt0PT1udWxsJiYodD17fSksei50ZXN0KGUpJiYoZT0iXG4iK2UpLGU9ZS5yZXBsYWNlKC9cci9nLCIiKS5yZXBsYWNlKFIsIiIpLHRoaXMuY29kZT1lLHRoaXMubGluZT10LmxpbmV8fDAsdGhpcy5pbmRlbnQ9MCx0aGlzLmluZGVidD0wLHRoaXMub3V0ZGVidD0wLHRoaXMuaW5kZW50cz1bXSx0aGlzLmVuZHM9W10sdGhpcy50b2tlbnM9W10sbj0wO3doaWxlKHRoaXMuY2h1bms9ZS5zbGljZShuKSluKz10aGlzLmlkZW50aWZpZXJUb2tlbigpfHx0aGlzLmNvbW1lbnRUb2tlbigpfHx0aGlzLndoaXRlc3BhY2VUb2tlbigpfHx0aGlzLmxpbmVUb2tlbigpfHx0aGlzLmhlcmVkb2NUb2tlbigpfHx0aGlzLnN0cmluZ1Rva2VuKCl8fHRoaXMubnVtYmVyVG9rZW4oKXx8dGhpcy5yZWdleFRva2VuKCl8fHRoaXMuanNUb2tlbigpfHx0aGlzLmxpdGVyYWxUb2tlbigpO3JldHVybiB0aGlzLmNsb3NlSW5kZW50YXRpb24oKSwocj10aGlzLmVuZHMucG9wKCkpJiZ0aGlzLmVycm9yKCJtaXNzaW5nICIrciksdC5yZXdyaXRlPT09ITE/dGhpcy50b2tlbnM6KG5ldyBqKS5yZXdyaXRlKHRoaXMudG9rZW5zKX0sZS5wcm90b3R5cGUuaWRlbnRpZmllclRva2VuPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaSxzLGYsbCxjO3JldHVybihpPWcuZXhlYyh0aGlzLmNodW5rKSk/KHI9aVswXSxuPWlbMV0sZT1pWzJdLG49PT0ib3duIiYmdGhpcy50YWcoKT09PSJGT1IiPyh0aGlzLnRva2VuKCJPV04iLG4pLG4ubGVuZ3RoKToodD1lfHwocz0kKHRoaXMudG9rZW5zKSkmJigobD1zWzBdKT09PSIuInx8bD09PSI/LiJ8fGw9PT0iOjoifHwhcy5zcGFjZWQmJnNbMF09PT0iQCIpLGY9IklERU5USUZJRVIiLCF0JiYoRy5jYWxsKFMsbik+PTB8fEcuY2FsbChhLG4pPj0wKSYmKGY9bi50b1VwcGVyQ2FzZSgpLGY9PT0iV0hFTiImJihjPXRoaXMudGFnKCksRy5jYWxsKHgsYyk+PTApP2Y9IkxFQURJTkdfV0hFTiI6Zj09PSJGT1IiP3RoaXMuc2VlbkZvcj0hMDpmPT09IlVOTEVTUyI/Zj0iSUYiOkcuY2FsbChVLGYpPj0wP2Y9IlVOQVJZIjpHLmNhbGwoSCxmKT49MCYmKGYhPT0iSU5TVEFOQ0VPRiImJnRoaXMuc2VlbkZvcj8oZj0iRk9SIitmLHRoaXMuc2VlbkZvcj0hMSk6KGY9IlJFTEFUSU9OIix0aGlzLnZhbHVlKCk9PT0iISImJih0aGlzLnRva2Vucy5wb3AoKSxuPSIhIituKSkpKSxHLmNhbGwoRSxuKT49MCYmKHQ/KGY9IklERU5USUZJRVIiLG49bmV3IFN0cmluZyhuKSxuLnJlc2VydmVkPSEwKTpHLmNhbGwoQixuKT49MCYmdGhpcy5lcnJvcigncmVzZXJ2ZWQgd29yZCAiJytuKyciJykpLHR8fChHLmNhbGwobyxuKT49MCYmKG49dVtuXSksZj1mdW5jdGlvbigpe3N3aXRjaChuKXtjYXNlIiEiOnJldHVybiJVTkFSWSI7Y2FzZSI9PSI6Y2FzZSIhPSI6cmV0dXJuIkNPTVBBUkUiO2Nhc2UiJiYiOmNhc2UifHwiOnJldHVybiJMT0dJQyI7Y2FzZSJ0cnVlIjpjYXNlImZhbHNlIjpjYXNlIm51bGwiOmNhc2UidW5kZWZpbmVkIjpyZXR1cm4iQk9PTCI7Y2FzZSJicmVhayI6Y2FzZSJjb250aW51ZSI6cmV0dXJuIlNUQVRFTUVOVCI7ZGVmYXVsdDpyZXR1cm4gZn19KCkpLHRoaXMudG9rZW4oZixuKSxlJiZ0aGlzLnRva2VuKCI6IiwiOiIpLHIubGVuZ3RoKSk6MH0sZS5wcm90b3R5cGUubnVtYmVyVG9rZW49ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixpO2lmKCEobj1fLmV4ZWModGhpcy5jaHVuaykpKXJldHVybiAwO3I9blswXSwvRS8udGVzdChyKT90aGlzLmVycm9yKCJleHBvbmVudGlhbCBub3RhdGlvbiAnIityKyInIG11c3QgYmUgaW5kaWNhdGVkIHdpdGggYSBsb3dlcmNhc2UgJ2UnIik6L1tCT1hdLy50ZXN0KHIpP3RoaXMuZXJyb3IoInJhZGl4IHByZWZpeCAnIityKyInIG11c3QgYmUgbG93ZXJjYXNlIik6L14wWzg5XS8udGVzdChyKT90aGlzLmVycm9yKCJkZWNpbWFsIGxpdGVyYWwgJyIrcisiJyBtdXN0IG5vdCBiZSBwcmVmaXhlZCB3aXRoICcwJyIpOi9eMFswLTddLy50ZXN0KHIpJiZ0aGlzLmVycm9yKCJvY3RhbCBsaXRlcmFsICciK3IrIicgbXVzdCBiZSBwcmVmaXhlZCB3aXRoICcwbyciKSx0PXIubGVuZ3RoO2lmKGk9LzBvKFswLTddKykvLmV4ZWMocikpcj1wYXJzZUludChpWzFdLDgpLnRvU3RyaW5nKCk7aWYoZT0vMGIoWzAxXSspLy5leGVjKHIpKXI9cGFyc2VJbnQoZVsxXSwyKS50b1N0cmluZygpO3JldHVybiB0aGlzLnRva2VuKCJOVU1CRVIiLHIpLHR9LGUucHJvdG90eXBlLnN0cmluZ1Rva2VuPWZ1bmN0aW9uKCl7dmFyIGUsdCxuO3N3aXRjaCh0aGlzLmNodW5rLmNoYXJBdCgwKSl7Y2FzZSInIjppZighKGU9SS5leGVjKHRoaXMuY2h1bmspKSlyZXR1cm4gMDt0aGlzLnRva2VuKCJTVFJJTkciLChuPWVbMF0pLnJlcGxhY2UoTCwiXFxcbiIpKTticmVhaztjYXNlJyInOmlmKCEobj10aGlzLmJhbGFuY2VkU3RyaW5nKHRoaXMuY2h1bmssJyInKSkpcmV0dXJuIDA7MDxuLmluZGV4T2YoIiN7IiwxKT90aGlzLmludGVycG9sYXRlU3RyaW5nKG4uc2xpY2UoMSwtMSkpOnRoaXMudG9rZW4oIlNUUklORyIsdGhpcy5lc2NhcGVMaW5lcyhuKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gMH1yZXR1cm4odD0vXig/OlxcLnxbXlxcXSkqXFxbMC03XS8udGVzdChuKSkmJnRoaXMuZXJyb3IoIm9jdGFsIGVzY2FwZSBzZXF1ZW5jZXMgIituKyIgYXJlIG5vdCBhbGxvd2VkIiksdGhpcy5saW5lKz1YKG4sIlxuIiksbi5sZW5ndGh9LGUucHJvdG90eXBlLmhlcmVkb2NUb2tlbj1mdW5jdGlvbigpe3ZhciBlLHQsbixyO3JldHVybihuPWguZXhlYyh0aGlzLmNodW5rKSk/KHQ9blswXSxyPXQuY2hhckF0KDApLGU9dGhpcy5zYW5pdGl6ZUhlcmVkb2MoblsyXSx7cXVvdGU6cixpbmRlbnQ6bnVsbH0pLHI9PT0nIicmJjA8PWUuaW5kZXhPZigiI3siKT90aGlzLmludGVycG9sYXRlU3RyaW5nKGUse2hlcmVkb2M6ITB9KTp0aGlzLnRva2VuKCJTVFJJTkciLHRoaXMubWFrZVN0cmluZyhlLHIsITApKSx0aGlzLmxpbmUrPVgodCwiXG4iKSx0Lmxlbmd0aCk6MH0sZS5wcm90b3R5cGUuY29tbWVudFRva2VuPWZ1bmN0aW9uKCl7dmFyIGUsdCxuO3JldHVybihuPXRoaXMuY2h1bmsubWF0Y2goZikpPyhlPW5bMF0sdD1uWzFdLHQmJnRoaXMudG9rZW4oIkhFUkVDT01NRU5UIix0aGlzLnNhbml0aXplSGVyZWRvYyh0LHtoZXJlY29tbWVudDohMCxpbmRlbnQ6QXJyYXkodGhpcy5pbmRlbnQrMSkuam9pbigiICIpfSkpLHRoaXMubGluZSs9WChlLCJcbiIpLGUubGVuZ3RoKTowfSxlLnByb3RvdHlwZS5qc1Rva2VuPWZ1bmN0aW9uKCl7dmFyIGUsdDtyZXR1cm4gdGhpcy5jaHVuay5jaGFyQXQoMCkhPT0iYCJ8fCEoZT13LmV4ZWModGhpcy5jaHVuaykpPzA6KHRoaXMudG9rZW4oIkpTIiwodD1lWzBdKS5zbGljZSgxLC0xKSksdC5sZW5ndGgpfSxlLnByb3RvdHlwZS5yZWdleFRva2VuPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaSxzLG87cmV0dXJuIHRoaXMuY2h1bmsuY2hhckF0KDApIT09Ii8iPzA6KG49di5leGVjKHRoaXMuY2h1bmspKT8odD10aGlzLmhlcmVnZXhUb2tlbihuKSx0aGlzLmxpbmUrPVgoblswXSwiXG4iKSx0KToocj0kKHRoaXMudG9rZW5zKSxyJiYocz1yWzBdLEcuY2FsbChyLnNwYWNlZD9POk0scyk+PTApPzA6KG49UC5leGVjKHRoaXMuY2h1bmspKT8obz1uLG49b1swXSxpPW9bMV0sZT1vWzJdLGkuc2xpY2UoMCwyKT09PSIvKiImJnRoaXMuZXJyb3IoInJlZ3VsYXIgZXhwcmVzc2lvbnMgY2Fubm90IGJlZ2luIHdpdGggYCpgIiksaT09PSIvLyImJihpPSIvKD86KS8iKSx0aGlzLnRva2VuKCJSRUdFWCIsIiIraStlKSxuLmxlbmd0aCk6MCl9LGUucHJvdG90eXBlLmhlcmVnZXhUb2tlbj1mdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxzLG8sdSxhLGYsbCxjLGgscDtyPWVbMF0sdD1lWzFdLG49ZVsyXTtpZigwPnQuaW5kZXhPZigiI3siKSlyZXR1cm4gaT10LnJlcGxhY2UobSwiIikucmVwbGFjZSgvXC8vZywiXFwvIiksaS5tYXRjaCgvXlwqLykmJnRoaXMuZXJyb3IoInJlZ3VsYXIgZXhwcmVzc2lvbnMgY2Fubm90IGJlZ2luIHdpdGggYCpgIiksdGhpcy50b2tlbigiUkVHRVgiLCIvIisoaXx8Iig/OikiKSsiLyIrbiksci5sZW5ndGg7dGhpcy50b2tlbigiSURFTlRJRklFUiIsIlJlZ0V4cCIpLHRoaXMudG9rZW5zLnB1c2goWyJDQUxMX1NUQVJUIiwiKCJdKSxvPVtdLGw9dGhpcy5pbnRlcnBvbGF0ZVN0cmluZyh0LHtyZWdleDohMH0pO2ZvcihhPTAsZj1sLmxlbmd0aDthPGY7YSsrKXtjPWxbYV0scz1jWzBdLHU9Y1sxXTtpZihzPT09IlRPS0VOUyIpby5wdXNoLmFwcGx5KG8sdSk7ZWxzZXtpZighKHU9dS5yZXBsYWNlKG0sIiIpKSljb250aW51ZTt1PXUucmVwbGFjZSgvXFwvZywiXFxcXCIpLG8ucHVzaChbIlNUUklORyIsdGhpcy5tYWtlU3RyaW5nKHUsJyInLCEwKV0pfW8ucHVzaChbIisiLCIrIl0pfXJldHVybiBvLnBvcCgpLCgoaD1vWzBdKSE9bnVsbD9oWzBdOnZvaWQgMCkhPT0iU1RSSU5HIiYmdGhpcy50b2tlbnMucHVzaChbIlNUUklORyIsJyIiJ10sWyIrIiwiKyJdKSwocD10aGlzLnRva2VucykucHVzaC5hcHBseShwLG8pLG4mJnRoaXMudG9rZW5zLnB1c2goWyIsIiwiLCJdLFsiU1RSSU5HIiwnIicrbisnIiddKSx0aGlzLnRva2VuKCIpIiwiKSIpLHIubGVuZ3RofSxlLnByb3RvdHlwZS5saW5lVG9rZW49ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixpLHM7aWYoIShuPUEuZXhlYyh0aGlzLmNodW5rKSkpcmV0dXJuIDA7dD1uWzBdLHRoaXMubGluZSs9WCh0LCJcbiIpLHRoaXMuc2VlbkZvcj0hMSxpPSQodGhpcy50b2tlbnMsMSkscz10Lmxlbmd0aC0xLXQubGFzdEluZGV4T2YoIlxuIikscj10aGlzLnVuZmluaXNoZWQoKTtpZihzLXRoaXMuaW5kZWJ0PT09dGhpcy5pbmRlbnQpcmV0dXJuIHI/dGhpcy5zdXBwcmVzc05ld2xpbmVzKCk6dGhpcy5uZXdsaW5lVG9rZW4oKSx0Lmxlbmd0aDtpZihzPnRoaXMuaW5kZW50KXtpZihyKXJldHVybiB0aGlzLmluZGVidD1zLXRoaXMuaW5kZW50LHRoaXMuc3VwcHJlc3NOZXdsaW5lcygpLHQubGVuZ3RoO2U9cy10aGlzLmluZGVudCt0aGlzLm91dGRlYnQsdGhpcy50b2tlbigiSU5ERU5UIixlKSx0aGlzLmluZGVudHMucHVzaChlKSx0aGlzLmVuZHMucHVzaCgiT1VUREVOVCIpLHRoaXMub3V0ZGVidD10aGlzLmluZGVidD0wfWVsc2UgdGhpcy5pbmRlYnQ9MCx0aGlzLm91dGRlbnRUb2tlbih0aGlzLmluZGVudC1zLHIpO3JldHVybiB0aGlzLmluZGVudD1zLHQubGVuZ3RofSxlLnByb3RvdHlwZS5vdXRkZW50VG9rZW49ZnVuY3Rpb24oZSx0KXt2YXIgbixyO3doaWxlKGU+MClyPXRoaXMuaW5kZW50cy5sZW5ndGgtMSx0aGlzLmluZGVudHNbcl09PT12b2lkIDA/ZT0wOnRoaXMuaW5kZW50c1tyXT09PXRoaXMub3V0ZGVidD8oZS09dGhpcy5vdXRkZWJ0LHRoaXMub3V0ZGVidD0wKTp0aGlzLmluZGVudHNbcl08dGhpcy5vdXRkZWJ0Pyh0aGlzLm91dGRlYnQtPXRoaXMuaW5kZW50c1tyXSxlLT10aGlzLmluZGVudHNbcl0pOihuPXRoaXMuaW5kZW50cy5wb3AoKS10aGlzLm91dGRlYnQsZS09bix0aGlzLm91dGRlYnQ9MCx0aGlzLnBhaXIoIk9VVERFTlQiKSx0aGlzLnRva2VuKCJPVVRERU5UIixuKSk7biYmKHRoaXMub3V0ZGVidC09ZSk7d2hpbGUodGhpcy52YWx1ZSgpPT09IjsiKXRoaXMudG9rZW5zLnBvcCgpO3JldHVybiB0aGlzLnRhZygpIT09IlRFUk1JTkFUT1IiJiYhdCYmdGhpcy50b2tlbigiVEVSTUlOQVRPUiIsIlxuIiksdGhpc30sZS5wcm90b3R5cGUud2hpdGVzcGFjZVRva2VuPWZ1bmN0aW9uKCl7dmFyIGUsdCxuO3JldHVybiEoZT16LmV4ZWModGhpcy5jaHVuaykpJiYhKHQ9dGhpcy5jaHVuay5jaGFyQXQoMCk9PT0iXG4iKT8wOihuPSQodGhpcy50b2tlbnMpLG4mJihuW2U/InNwYWNlZCI6Im5ld0xpbmUiXT0hMCksZT9lWzBdLmxlbmd0aDowKX0sZS5wcm90b3R5cGUubmV3bGluZVRva2VuPWZ1bmN0aW9uKCl7d2hpbGUodGhpcy52YWx1ZSgpPT09IjsiKXRoaXMudG9rZW5zLnBvcCgpO3JldHVybiB0aGlzLnRhZygpIT09IlRFUk1JTkFUT1IiJiZ0aGlzLnRva2VuKCJURVJNSU5BVE9SIiwiXG4iKSx0aGlzfSxlLnByb3RvdHlwZS5zdXBwcmVzc05ld2xpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWUoKT09PSJcXCImJnRoaXMudG9rZW5zLnBvcCgpLHRoaXN9LGUucHJvdG90eXBlLmxpdGVyYWxUb2tlbj1mdW5jdGlvbigpe3ZhciBlLHQsbixyLG8sdSxhLGY7KGU9RC5leGVjKHRoaXMuY2h1bmspKT8ocj1lWzBdLHMudGVzdChyKSYmdGhpcy50YWdQYXJhbWV0ZXJzKCkpOnI9dGhpcy5jaHVuay5jaGFyQXQoMCksbj1yLHQ9JCh0aGlzLnRva2Vucyk7aWYocj09PSI9IiYmdCl7IXRbMV0ucmVzZXJ2ZWQmJihvPXRbMV0sRy5jYWxsKEUsbyk+PTApJiZ0aGlzLmVycm9yKCdyZXNlcnZlZCB3b3JkICInK3RoaXMudmFsdWUoKSsiXCIgY2FuJ3QgYmUgYXNzaWduZWQiKTtpZigodT10WzFdKT09PSJ8fCJ8fHU9PT0iJiYiKXJldHVybiB0WzBdPSJDT01QT1VORF9BU1NJR04iLHRbMV0rPSI9IixyLmxlbmd0aH1pZihyPT09IjsiKXRoaXMuc2VlbkZvcj0hMSxuPSJURVJNSU5BVE9SIjtlbHNlIGlmKEcuY2FsbChrLHIpPj0wKW49Ik1BVEgiO2Vsc2UgaWYoRy5jYWxsKGwscik+PTApbj0iQ09NUEFSRSI7ZWxzZSBpZihHLmNhbGwoYyxyKT49MCluPSJDT01QT1VORF9BU1NJR04iO2Vsc2UgaWYoRy5jYWxsKFUscik+PTApbj0iVU5BUlkiO2Vsc2UgaWYoRy5jYWxsKEYscik+PTApbj0iU0hJRlQiO2Vsc2UgaWYoRy5jYWxsKE4scik+PTB8fHI9PT0iPyImJih0IT1udWxsP3Quc3BhY2VkOnZvaWQgMCkpbj0iTE9HSUMiO2Vsc2UgaWYodCYmIXQuc3BhY2VkKWlmKHI9PT0iKCImJihhPXRbMF0sRy5jYWxsKGksYSk+PTApKXRbMF09PT0iPyImJih0WzBdPSJGVU5DX0VYSVNUIiksbj0iQ0FMTF9TVEFSVCI7ZWxzZSBpZihyPT09IlsiJiYoZj10WzBdLEcuY2FsbCh5LGYpPj0wKSl7bj0iSU5ERVhfU1RBUlQiO3N3aXRjaCh0WzBdKXtjYXNlIj8iOnRbMF09IklOREVYX1NPQUsifX1zd2l0Y2gocil7Y2FzZSIoIjpjYXNlInsiOmNhc2UiWyI6dGhpcy5lbmRzLnB1c2goYltyXSk7YnJlYWs7Y2FzZSIpIjpjYXNlIn0iOmNhc2UiXSI6dGhpcy5wYWlyKHIpfXJldHVybiB0aGlzLnRva2VuKG4sciksci5sZW5ndGh9LGUucHJvdG90eXBlLnNhbml0aXplSGVyZWRvYz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxzLG87aT10LmluZGVudCxyPXQuaGVyZWNvbW1lbnQ7aWYocil7cC50ZXN0KGUpJiZ0aGlzLmVycm9yKCdibG9jayBjb21tZW50IGNhbm5vdCBjb250YWluICIqLyIsIHN0YXJ0aW5nJyk7aWYoZS5pbmRleE9mKCJcbiIpPD0wKXJldHVybiBlfWVsc2Ugd2hpbGUocz1kLmV4ZWMoZSkpe249c1sxXTtpZihpPT09bnVsbHx8MDwobz1uLmxlbmd0aCkmJm88aS5sZW5ndGgpaT1ufXJldHVybiBpJiYoZT1lLnJlcGxhY2UoUmVnRXhwKCJcXG4iK2ksImciKSwiXG4iKSkscnx8KGU9ZS5yZXBsYWNlKC9eXG4vLCIiKSksZX0sZS5wcm90b3R5cGUudGFnUGFyYW1ldGVycz1mdW5jdGlvbigpe3ZhciBlLHQsbixyO2lmKHRoaXMudGFnKCkhPT0iKSIpcmV0dXJuIHRoaXM7dD1bXSxyPXRoaXMudG9rZW5zLGU9ci5sZW5ndGgsclstLWVdWzBdPSJQQVJBTV9FTkQiO3doaWxlKG49clstLWVdKXN3aXRjaChuWzBdKXtjYXNlIikiOnQucHVzaChuKTticmVhaztjYXNlIigiOmNhc2UiQ0FMTF9TVEFSVCI6aWYoIXQubGVuZ3RoKXJldHVybiBuWzBdPT09IigiPyhuWzBdPSJQQVJBTV9TVEFSVCIsdGhpcyk6dGhpczt0LnBvcCgpfXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS5jbG9zZUluZGVudGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3V0ZGVudFRva2VuKHRoaXMuaW5kZW50KX0sZS5wcm90b3R5cGUuYmFsYW5jZWRTdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGkscyxvLHUsYSxmO249MCx1PVt0XTtmb3Iocj1hPTEsZj1lLmxlbmd0aDsxPD1mP2E8ZjphPmY7cj0xPD1mPysrYTotLWEpe2lmKG4pey0tbjtjb250aW51ZX1zd2l0Y2goaT1lLmNoYXJBdChyKSl7Y2FzZSJcXCI6KytuO2NvbnRpbnVlO2Nhc2UgdDp1LnBvcCgpO2lmKCF1Lmxlbmd0aClyZXR1cm4gZS5zbGljZSgwLHIrMXx8OWU5KTt0PXVbdS5sZW5ndGgtMV07Y29udGludWV9dCE9PSJ9Inx8aSE9PSciJyYmaSE9PSInIj90PT09In0iJiZpPT09Ii8iJiYocz12LmV4ZWMoZS5zbGljZShyKSl8fFAuZXhlYyhlLnNsaWNlKHIpKSk/bis9c1swXS5sZW5ndGgtMTp0PT09In0iJiZpPT09InsiP3UucHVzaCh0PSJ9Iik6dD09PSciJyYmbz09PSIjIiYmaT09PSJ7IiYmdS5wdXNoKHQ9In0iKTp1LnB1c2godD1pKSxvPWl9cmV0dXJuIHRoaXMuZXJyb3IoIm1pc3NpbmcgIit1LnBvcCgpKyIsIHN0YXJ0aW5nIil9LGUucHJvdG90eXBlLmludGVycG9sYXRlU3RyaW5nPWZ1bmN0aW9uKHQsbil7dmFyIHIsaSxzLG8sdSxhLGYsbCxjLGgscCxkLHYsbSxnLHksYix3O249PW51bGwmJihuPXt9KSxpPW4uaGVyZWRvYyxoPW4ucmVnZXgsZD1bXSxjPTAscz0tMTt3aGlsZShmPXQuY2hhckF0KHMrPTEpKXtpZihmPT09IlxcIil7cys9MTtjb250aW51ZX1pZihmIT09IiMifHx0LmNoYXJBdChzKzEpIT09InsifHwhKHI9dGhpcy5iYWxhbmNlZFN0cmluZyh0LnNsaWNlKHMrMSksIn0iKSkpY29udGludWU7YzxzJiZkLnB1c2goWyJORU9TVFJJTkciLHQuc2xpY2UoYyxzKV0pLG89ci5zbGljZSgxLC0xKTtpZihvLmxlbmd0aCl7bD0obmV3IGUpLnRva2VuaXplKG8se2xpbmU6dGhpcy5saW5lLHJld3JpdGU6ITF9KSxsLnBvcCgpLCgoeT1sWzBdKSE9bnVsbD95WzBdOnZvaWQgMCk9PT0iVEVSTUlOQVRPUiImJmwuc2hpZnQoKTtpZihhPWwubGVuZ3RoKWE+MSYmKGwudW5zaGlmdChbIigiLCIoIix0aGlzLmxpbmVdKSxsLnB1c2goWyIpIiwiKSIsdGhpcy5saW5lXSkpLGQucHVzaChbIlRPS0VOUyIsbF0pfXMrPXIubGVuZ3RoLGM9cysxfXM+YyYmYzx0Lmxlbmd0aCYmZC5wdXNoKFsiTkVPU1RSSU5HIix0LnNsaWNlKGMpXSk7aWYoaClyZXR1cm4gZDtpZighZC5sZW5ndGgpcmV0dXJuIHRoaXMudG9rZW4oIlNUUklORyIsJyIiJyk7ZFswXVswXSE9PSJORU9TVFJJTkciJiZkLnVuc2hpZnQoWyIiLCIiXSksKHU9ZC5sZW5ndGg+MSkmJnRoaXMudG9rZW4oIigiLCIoIik7Zm9yKHM9bT0wLGc9ZC5sZW5ndGg7bTxnO3M9KyttKWI9ZFtzXSxwPWJbMF0sdj1iWzFdLHMmJnRoaXMudG9rZW4oIisiLCIrIikscD09PSJUT0tFTlMiPyh3PXRoaXMudG9rZW5zKS5wdXNoLmFwcGx5KHcsdik6dGhpcy50b2tlbigiU1RSSU5HIix0aGlzLm1ha2VTdHJpbmcodiwnIicsaSkpO3JldHVybiB1JiZ0aGlzLnRva2VuKCIpIiwiKSIpLGR9LGUucHJvdG90eXBlLnBhaXI9ZnVuY3Rpb24oZSl7dmFyIHQsbjtyZXR1cm4gZSE9PShuPSQodGhpcy5lbmRzKSk/KCJPVVRERU5UIiE9PW4mJnRoaXMuZXJyb3IoInVubWF0Y2hlZCAiK2UpLHRoaXMuaW5kZW50LT10PSQodGhpcy5pbmRlbnRzKSx0aGlzLm91dGRlbnRUb2tlbih0LCEwKSx0aGlzLnBhaXIoZSkpOnRoaXMuZW5kcy5wb3AoKX0sZS5wcm90b3R5cGUudG9rZW49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy50b2tlbnMucHVzaChbZSx0LHRoaXMubGluZV0pfSxlLnByb3RvdHlwZS50YWc9ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4obj0kKHRoaXMudG9rZW5zLGUpKSYmKHQ/blswXT10Om5bMF0pfSxlLnByb3RvdHlwZS52YWx1ZT1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybihuPSQodGhpcy50b2tlbnMsZSkpJiYodD9uWzFdPXQ6blsxXSl9LGUucHJvdG90eXBlLnVuZmluaXNoZWQ9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gVC50ZXN0KHRoaXMuY2h1bmspfHwoZT10aGlzLnRhZygpKT09PSJcXCJ8fGU9PT0iLiJ8fGU9PT0iPy4ifHxlPT09IlVOQVJZInx8ZT09PSJNQVRIInx8ZT09PSIrInx8ZT09PSItInx8ZT09PSJTSElGVCJ8fGU9PT0iUkVMQVRJT04ifHxlPT09IkNPTVBBUkUifHxlPT09IkxPR0lDInx8ZT09PSJUSFJPVyJ8fGU9PT0iRVhURU5EUyJ9LGUucHJvdG90eXBlLmVzY2FwZUxpbmVzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucmVwbGFjZShMLHQ/IlxcbiI6IiIpfSxlLnByb3RvdHlwZS5tYWtlU3RyaW5nPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT8oZT1lLnJlcGxhY2UoL1xcKFtcc1xTXSkvZyxmdW5jdGlvbihlLG4pe3JldHVybiBuPT09IlxuInx8bj09PXQ/bjplfSksZT1lLnJlcGxhY2UoUmVnRXhwKCIiK3QsImciKSwiXFwkJiIpLHQrdGhpcy5lc2NhcGVMaW5lcyhlLG4pK3QpOnQrdH0sZS5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24oZSl7dGhyb3cgU3ludGF4RXJyb3IoIiIrZSsiIG9uIGxpbmUgIisodGhpcy5saW5lKzEpKX0sZX0oKSxTPVsidHJ1ZSIsImZhbHNlIiwibnVsbCIsInRoaXMiLCJuZXciLCJkZWxldGUiLCJ0eXBlb2YiLCJpbiIsImluc3RhbmNlb2YiLCJyZXR1cm4iLCJ0aHJvdyIsImJyZWFrIiwiY29udGludWUiLCJkZWJ1Z2dlciIsImlmIiwiZWxzZSIsInN3aXRjaCIsImZvciIsIndoaWxlIiwiZG8iLCJ0cnkiLCJjYXRjaCIsImZpbmFsbHkiLCJjbGFzcyIsImV4dGVuZHMiLCJzdXBlciJdLGE9WyJ1bmRlZmluZWQiLCJ0aGVuIiwidW5sZXNzIiwidW50aWwiLCJsb29wIiwib2YiLCJieSIsIndoZW4iXSx1PXthbmQ6IiYmIixvcjoifHwiLGlzOiI9PSIsaXNudDoiIT0iLG5vdDoiISIseWVzOiJ0cnVlIixubzoiZmFsc2UiLG9uOiJ0cnVlIixvZmY6ImZhbHNlIn0sbz1mdW5jdGlvbigpe3ZhciBlO2U9W107Zm9yKFYgaW4gdSllLnB1c2goVik7cmV0dXJuIGV9KCksYT1hLmNvbmNhdChvKSxCPVsiY2FzZSIsImRlZmF1bHQiLCJmdW5jdGlvbiIsInZhciIsInZvaWQiLCJ3aXRoIiwiY29uc3QiLCJsZXQiLCJlbnVtIiwiZXhwb3J0IiwiaW1wb3J0IiwibmF0aXZlIiwiX19oYXNQcm9wIiwiX19leHRlbmRzIiwiX19zbGljZSIsIl9fYmluZCIsIl9faW5kZXhPZiIsImltcGxlbWVudHMiLCJpbnRlcmZhY2UiLCJsZXQiLCJwYWNrYWdlIiwicHJpdmF0ZSIsInByb3RlY3RlZCIsInB1YmxpYyIsInN0YXRpYyIsInlpZWxkIl0scT1bImFyZ3VtZW50cyIsImV2YWwiXSxFPVMuY29uY2F0KEIpLmNvbmNhdChxKSx0LlJFU0VSVkVEPUIuY29uY2F0KFMpLmNvbmNhdChhKS5jb25jYXQocSksdC5TVFJJQ1RfUFJPU0NSSUJFRD1xLGc9L14oWyRBLVphLXpfXHg3Zi1cdWZmZmZdWyRcd1x4N2YtXHVmZmZmXSopKFteXG5cU10qOig/ITopKT8vLF89L14wYlswMV0rfF4wb1swLTddK3xeMHhbXGRhLWZdK3xeXGQqXC4/XGQrKD86ZVsrLV0/XGQrKT8vaSxoPS9eKCIiInwnJycpKFtcc1xTXSo/KSg/OlxuW15cblxTXSopP1wxLyxEPS9eKD86Wy09XT58Wy0rKlwvJTw+JnxeIT89XT18Pj4+PT98KFstKzpdKVwxfChbJnw8Pl0pXDI9P3xcP1wufFwuezIsM30pLyx6PS9eW15cblxTXSsvLGY9L14jIyMoW14jXVtcc1xTXSo/KSg/OiMjI1teXG5cU10qfCg/OiMjIyk/JCl8Xig/OlxzKiMoPyEjI1teI10pLiopKy8scz0vXlstPV0+LyxBPS9eKD86XG5bXlxuXFNdKikrLyxJPS9eJ1teXFwnXSooPzpcXC5bXlxcJ10qKSonLyx3PS9eYFteXFxgXSooPzpcXC5bXlxcYF0qKSpgLyxQPS9eKFwvKD8hW1xzPV0pW15bXC9cblxcXSooPzooPzpcXFtcc1xTXXxcW1teXF1cblxcXSooPzpcXFtcc1xTXVteXF1cblxcXSopKl0pW15bXC9cblxcXSopKlwvKShbaW1neV17MCw0fSkoPyFcdykvLHY9L15cL3szfShbXHNcU10rPylcL3szfShbaW1neV17MCw0fSkoPyFcdykvLG09L1xzKyg/OiMuKik/L2csTD0vXG4vZyxkPS9cbisoW15cblxTXSopL2cscD0vXCpcLy8sVD0vXlxzKig/Oix8XD8/XC4oPyFbLlxkXSl8OjopLyxSPS9ccyskLyxjPVsiLT0iLCIrPSIsIi89IiwiKj0iLCIlPSIsInx8PSIsIiYmPSIsIj89IiwiPDw9IiwiPj49IiwiPj4+PSIsIiY9IiwiXj0iLCJ8PSJdLFU9WyIhIiwifiIsIk5FVyIsIlRZUEVPRiIsIkRFTEVURSIsIkRPIl0sTj1bIiYmIiwifHwiLCImIiwifCIsIl4iXSxGPVsiPDwiLCI+PiIsIj4+PiJdLGw9WyI9PSIsIiE9IiwiPCIsIj4iLCI8PSIsIj49Il0saz1bIioiLCIvIiwiJSJdLEg9WyJJTiIsIk9GIiwiSU5TVEFOQ0VPRiJdLHI9WyJUUlVFIiwiRkFMU0UiLCJOVUxMIiwiVU5ERUZJTkVEIl0sTz1bIk5VTUJFUiIsIlJFR0VYIiwiQk9PTCIsIisrIiwiLS0iLCJdIl0sTT1PLmNvbmNhdCgiKSIsIn0iLCJUSElTIiwiSURFTlRJRklFUiIsIlNUUklORyIpLGk9WyJJREVOVElGSUVSIiwiU1RSSU5HIiwiUkVHRVgiLCIpIiwiXSIsIn0iLCI/IiwiOjoiLCJAIiwiVEhJUyIsIlNVUEVSIl0seT1pLmNvbmNhdCgiTlVNQkVSIiwiQk9PTCIpLHg9WyJJTkRFTlQiLCJPVVRERU5UIiwiVEVSTUlOQVRPUiJdfSksZGVmaW5lKCJhY2UvbW9kZS9jb2ZmZWUvcmV3cml0ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxzLG8sdSxhLGYsbCxjLGgscCxkLHYsbSxnLHksYix3LEU9W10uaW5kZXhPZnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj10aGlzLmxlbmd0aDt0PG47dCsrKWlmKHQgaW4gdGhpcyYmdGhpc1t0XT09PWUpcmV0dXJuIHQ7cmV0dXJuLTF9LFM9W10uc2xpY2U7dC5SZXdyaXRlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9cmV0dXJuIGUubmFtZT0iUmV3cml0ZXIiLGUucHJvdG90eXBlLnJld3JpdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudG9rZW5zPWUsdGhpcy5yZW1vdmVMZWFkaW5nTmV3bGluZXMoKSx0aGlzLnJlbW92ZU1pZEV4cHJlc3Npb25OZXdsaW5lcygpLHRoaXMuY2xvc2VPcGVuQ2FsbHMoKSx0aGlzLmNsb3NlT3BlbkluZGV4ZXMoKSx0aGlzLmFkZEltcGxpY2l0SW5kZW50YXRpb24oKSx0aGlzLnRhZ1Bvc3RmaXhDb25kaXRpb25hbHMoKSx0aGlzLmFkZEltcGxpY2l0QnJhY2VzKCksdGhpcy5hZGRJbXBsaWNpdFBhcmVudGhlc2VzKCksdGhpcy50b2tlbnN9LGUucHJvdG90eXBlLnNjYW5Ub2tlbnM9ZnVuY3Rpb24oZSl7dmFyIHQsbixyO3I9dGhpcy50b2tlbnMsdD0wO3doaWxlKG49clt0XSl0Kz1lLmNhbGwodGhpcyxuLHQscik7cmV0dXJuITB9LGUucHJvdG90eXBlLmRldGVjdEVuZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSx1LGEsZjt1PXRoaXMudG9rZW5zLHI9MDt3aGlsZShpPXVbZV0pe2lmKHI9PT0wJiZ0LmNhbGwodGhpcyxpLGUpKXJldHVybiBuLmNhbGwodGhpcyxpLGUpO2lmKCFpfHxyPDApcmV0dXJuIG4uY2FsbCh0aGlzLGksZS0xKTtpZihhPWlbMF0sRS5jYWxsKG8sYSk+PTApcis9MTtlbHNlIGlmKGY9aVswXSxFLmNhbGwocyxmKT49MClyLT0xO2UrPTF9cmV0dXJuIGUtMX0sZS5wcm90b3R5cGUucmVtb3ZlTGVhZGluZ05ld2xpbmVzPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaTtpPXRoaXMudG9rZW5zO2ZvcihlPW49MCxyPWkubGVuZ3RoO248cjtlPSsrbil7dD1pW2VdWzBdO2lmKHQhPT0iVEVSTUlOQVRPUiIpYnJlYWt9aWYoZSlyZXR1cm4gdGhpcy50b2tlbnMuc3BsaWNlKDAsZSl9LGUucHJvdG90eXBlLnJlbW92ZU1pZEV4cHJlc3Npb25OZXdsaW5lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNjYW5Ub2tlbnMoZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiBlWzBdPT09IlRFUk1JTkFUT1IiJiYocj10aGlzLnRhZyh0KzEpLEUuY2FsbChpLHIpPj0wKT8obi5zcGxpY2UodCwxKSwwKToxfSl9LGUucHJvdG90eXBlLmNsb3NlT3BlbkNhbGxzPWZ1bmN0aW9uKCl7dmFyIGUsdDtyZXR1cm4gdD1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybihuPWVbMF0pPT09IikifHxuPT09IkNBTExfRU5EInx8ZVswXT09PSJPVVRERU5UIiYmdGhpcy50YWcodC0xKT09PSIpIn0sZT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnRva2Vuc1tlWzBdPT09Ik9VVERFTlQiP3QtMTp0XVswXT0iQ0FMTF9FTkQifSx0aGlzLnNjYW5Ub2tlbnMoZnVuY3Rpb24obixyKXtyZXR1cm4gblswXT09PSJDQUxMX1NUQVJUIiYmdGhpcy5kZXRlY3RFbmQocisxLHQsZSksMX0pfSxlLnByb3RvdHlwZS5jbG9zZU9wZW5JbmRleGVzPWZ1bmN0aW9uKCl7dmFyIGUsdDtyZXR1cm4gdD1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybihuPWVbMF0pPT09Il0ifHxuPT09IklOREVYX0VORCJ9LGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVswXT0iSU5ERVhfRU5EIn0sdGhpcy5zY2FuVG9rZW5zKGZ1bmN0aW9uKG4scil7cmV0dXJuIG5bMF09PT0iSU5ERVhfU1RBUlQiJiZ0aGlzLmRldGVjdEVuZChyKzEsdCxlKSwxfSl9LGUucHJvdG90eXBlLmFkZEltcGxpY2l0QnJhY2VzPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaSx1LGE7cmV0dXJuIHI9W10saT1udWxsLGE9bnVsbCxuPSEwLHU9MCx0PWZ1bmN0aW9uKGUsdCl7dmFyIHIsaSxzLG8sdSxsO3JldHVybiB1PXRoaXMudG9rZW5zLnNsaWNlKHQrMSx0KzMrMXx8OWU5KSxyPXVbMF0sbz11WzFdLHM9dVsyXSwiSEVSRUNPTU1FTlQiPT09KHIhPW51bGw/clswXTp2b2lkIDApPyExOihpPWVbMF0sRS5jYWxsKHAsaSk+PTAmJihuPSExKSwoaT09PSJURVJNSU5BVE9SInx8aT09PSJPVVRERU5UInx8RS5jYWxsKGYsaSk+PTAmJm4pJiYoIWEmJnRoaXMudGFnKHQtMSkhPT0iLCJ8fChvIT1udWxsP29bMF06dm9pZCAwKSE9PSI6IiYmKChyIT1udWxsP3JbMF06dm9pZCAwKSE9PSJAInx8KHMhPW51bGw/c1swXTp2b2lkIDApIT09IjoiKSl8fGk9PT0iLCImJnImJihsPXJbMF0pIT09IklERU5USUZJRVIiJiZsIT09Ik5VTUJFUiImJmwhPT0iU1RSSU5HIiYmbCE9PSJAIiYmbCE9PSJURVJNSU5BVE9SIiYmbCE9PSJPVVRERU5UIil9LGU9ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gbj10aGlzLmdlbmVyYXRlKCJ9IiwifSIsZVsyXSksdGhpcy50b2tlbnMuc3BsaWNlKHQsMCxuKX0sdGhpcy5zY2FuVG9rZW5zKGZ1bmN0aW9uKHUsZixsKXt2YXIgYyxoLGQsdixtLGcseSxiO2lmKHk9dj11WzBdLEUuY2FsbChvLHkpPj0wKXJldHVybiByLnB1c2goW3Y9PT0iSU5ERU5UIiYmdGhpcy50YWcoZi0xKT09PSJ7Ij8ieyI6dixmXSksMTtpZihFLmNhbGwocyx2KT49MClyZXR1cm4gaT1yLnBvcCgpLDE7aWYodiE9PSI6Inx8KGM9dGhpcy50YWcoZi0yKSkhPT0iOiImJigoYj1yW3IubGVuZ3RoLTFdKSE9bnVsbD9iWzBdOnZvaWQgMCk9PT0ieyIpcmV0dXJuIDE7bj0hMCxyLnB1c2goWyJ7Il0pLGg9Yz09PSJAIj9mLTI6Zi0xO3doaWxlKHRoaXMudGFnKGgtMik9PT0iSEVSRUNPTU1FTlQiKWgtPTI7cmV0dXJuIGQ9dGhpcy50YWcoaC0xKSxhPSFkfHxFLmNhbGwocCxkKT49MCxnPW5ldyBTdHJpbmcoInsiKSxnLmdlbmVyYXRlZD0hMCxtPXRoaXMuZ2VuZXJhdGUoInsiLGcsdVsyXSksbC5zcGxpY2UoaCwwLG0pLHRoaXMuZGV0ZWN0RW5kKGYrMix0LGUpLDJ9KX0sZS5wcm90b3R5cGUuYWRkSW1wbGljaXRQYXJlbnRoZXNlcz1mdW5jdGlvbigpe3ZhciBlLHQsbixyLGk7cmV0dXJuIG49aT1yPSExLHQ9ZnVuY3Rpb24oZSx0KXt2YXIgbixzLG8sYTtzPWVbMF07aWYoIWkmJmUuZnJvbVRoZW4pcmV0dXJuITA7aWYocz09PSJJRiJ8fHM9PT0iRUxTRSJ8fHM9PT0iQ0FUQ0gifHxzPT09Ii0+Inx8cz09PSI9PiJ8fHM9PT0iQ0xBU1MiKWk9ITA7aWYocz09PSJJRiJ8fHM9PT0iRUxTRSJ8fHM9PT0iU1dJVENIInx8cz09PSJUUlkifHxzPT09Ij0iKXI9ITA7cmV0dXJuIHMhPT0iLiImJnMhPT0iPy4iJiZzIT09Ijo6Inx8dGhpcy50YWcodC0xKSE9PSJPVVRERU5UIj8hZS5nZW5lcmF0ZWQmJnRoaXMudGFnKHQtMSkhPT0iLCImJihFLmNhbGwoZixzKT49MHx8cz09PSJJTkRFTlQiJiYhcikmJihzIT09IklOREVOVCJ8fChvPXRoaXMudGFnKHQtMikpIT09IkNMQVNTIiYmbyE9PSJFWFRFTkRTIiYmKGE9dGhpcy50YWcodC0xKSxFLmNhbGwodSxhKTwwKSYmKCEobj10aGlzLnRva2Vuc1t0KzFdKXx8IW4uZ2VuZXJhdGVkfHxuWzBdIT09InsiKSk6ITB9LGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy50b2tlbnMuc3BsaWNlKHQsMCx0aGlzLmdlbmVyYXRlKCJDQUxMX0VORCIsIikiLGVbMl0pKX0sdGhpcy5zY2FuVG9rZW5zKGZ1bmN0aW9uKHMsbyx1KXt2YXIgZixoLGQsdixtLGcseSxiO209c1swXTtpZihtPT09IkNMQVNTInx8bT09PSJJRiJ8fG09PT0iRk9SInx8bT09PSJXSElMRSIpbj0hMDtyZXR1cm4gZz11LnNsaWNlKG8tMSxvKzErMXx8OWU5KSx2PWdbMF0saD1nWzFdLGQ9Z1syXSxmPSFuJiZtPT09IklOREVOVCImJmQmJmQuZ2VuZXJhdGVkJiZkWzBdPT09InsiJiZ2JiYoeT12WzBdLEUuY2FsbChsLHkpPj0wKSxpPSExLHI9ITEsRS5jYWxsKHAsbSk+PTAmJihuPSExKSx2JiYhdi5zcGFjZWQmJm09PT0iPyImJihzLmNhbGw9ITApLHMuZnJvbVRoZW4/MTpmfHwodiE9bnVsbD92LnNwYWNlZDp2b2lkIDApJiYodi5jYWxsfHwoYj12WzBdLEUuY2FsbChsLGIpPj0wKSkmJihFLmNhbGwoYSxtKT49MHx8IXMuc3BhY2VkJiYhcy5uZXdMaW5lJiZFLmNhbGwoYyxtKT49MCk/KHUuc3BsaWNlKG8sMCx0aGlzLmdlbmVyYXRlKCJDQUxMX1NUQVJUIiwiKCIsc1syXSkpLHRoaXMuZGV0ZWN0RW5kKG8rMSx0LGUpLHZbMF09PT0iPyImJih2WzBdPSJGVU5DX0VYSVNUIiksMik6MX0pfSxlLnByb3RvdHlwZS5hZGRJbXBsaWNpdEluZGVudGF0aW9uPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaTtyZXR1cm4gaT1uPXI9bnVsbCx0PWZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIGVbMV0hPT0iOyImJihuPWVbMF0sRS5jYWxsKGQsbik+PTApJiYoZVswXSE9PSJFTFNFInx8aT09PSJJRiJ8fGk9PT0iVEhFTiIpfSxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMudG9rZW5zLnNwbGljZSh0aGlzLnRhZyh0LTEpPT09IiwiP3QtMTp0LDAscil9LHRoaXMuc2NhblRva2VucyhmdW5jdGlvbihzLG8sdSl7dmFyIGEsZixsO3JldHVybiBhPXNbMF0sYT09PSJURVJNSU5BVE9SIiYmdGhpcy50YWcobysxKT09PSJUSEVOIj8odS5zcGxpY2UobywxKSwwKTphPT09IkVMU0UiJiZ0aGlzLnRhZyhvLTEpIT09Ik9VVERFTlQiPyh1LnNwbGljZS5hcHBseSh1LFtvLDBdLmNvbmNhdChTLmNhbGwodGhpcy5pbmRlbnRhdGlvbihzKSkpKSwyKTphIT09IkNBVENIInx8KGY9dGhpcy50YWcobysyKSkhPT0iT1VUREVOVCImJmYhPT0iVEVSTUlOQVRPUiImJmYhPT0iRklOQUxMWSI/RS5jYWxsKHYsYSk+PTAmJnRoaXMudGFnKG8rMSkhPT0iSU5ERU5UIiYmKGEhPT0iRUxTRSJ8fHRoaXMudGFnKG8rMSkhPT0iSUYiKT8oaT1hLGw9dGhpcy5pbmRlbnRhdGlvbihzLCEwKSxuPWxbMF0scj1sWzFdLGk9PT0iVEhFTiImJihuLmZyb21UaGVuPSEwKSx1LnNwbGljZShvKzEsMCxuKSx0aGlzLmRldGVjdEVuZChvKzIsdCxlKSxhPT09IlRIRU4iJiZ1LnNwbGljZShvLDEpLDEpOjE6KHUuc3BsaWNlLmFwcGx5KHUsW28rMiwwXS5jb25jYXQoUy5jYWxsKHRoaXMuaW5kZW50YXRpb24ocykpKSksNCl9KX0sZS5wcm90b3R5cGUudGFnUG9zdGZpeENvbmRpdGlvbmFscz1mdW5jdGlvbigpe3ZhciBlLHQsbjtyZXR1cm4gbj1udWxsLHQ9ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4obj1lWzBdKT09PSJURVJNSU5BVE9SInx8bj09PSJJTkRFTlQifSxlPWZ1bmN0aW9uKGUsdCl7aWYoZVswXSE9PSJJTkRFTlQifHxlLmdlbmVyYXRlZCYmIWUuZnJvbVRoZW4pcmV0dXJuIG5bMF09IlBPU1RfIituWzBdfSx0aGlzLnNjYW5Ub2tlbnMoZnVuY3Rpb24ocixpKXtyZXR1cm4gclswXSE9PSJJRiI/MToobj1yLHRoaXMuZGV0ZWN0RW5kKGkrMSx0LGUpLDEpfSl9LGUucHJvdG90eXBlLmluZGVudGF0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIG4scjtyZXR1cm4gdD09bnVsbCYmKHQ9ITEpLG49WyJJTkRFTlQiLDIsZVsyXV0scj1bIk9VVERFTlQiLDIsZVsyXV0sdCYmKG4uZ2VuZXJhdGVkPXIuZ2VuZXJhdGVkPSEwKSxbbixyXX0sZS5wcm90b3R5cGUuZ2VuZXJhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiByPVtlLHQsbl0sci5nZW5lcmF0ZWQ9ITAscn0sZS5wcm90b3R5cGUudGFnPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybih0PXRoaXMudG9rZW5zW2VdKSE9bnVsbD90WzBdOnZvaWQgMH0sZX0oKSxyPVtbIigiLCIpIl0sWyJbIiwiXSJdLFsieyIsIn0iXSxbIklOREVOVCIsIk9VVERFTlQiXSxbIkNBTExfU1RBUlQiLCJDQUxMX0VORCJdLFsiUEFSQU1fU1RBUlQiLCJQQVJBTV9FTkQiXSxbIklOREVYX1NUQVJUIiwiSU5ERVhfRU5EIl1dLHQuSU5WRVJTRVM9aD17fSxvPVtdLHM9W107Zm9yKHk9MCxiPXIubGVuZ3RoO3k8Yjt5Kyspdz1yW3ldLG09d1swXSxnPXdbMV0sby5wdXNoKGhbZ109bSkscy5wdXNoKGhbbV09Zyk7aT1bIkNBVENIIiwiV0hFTiIsIkVMU0UiLCJGSU5BTExZIl0uY29uY2F0KHMpLGw9WyJJREVOVElGSUVSIiwiU1VQRVIiLCIpIiwiQ0FMTF9FTkQiLCJdIiwiSU5ERVhfRU5EIiwiQCIsIlRISVMiXSxhPVsiSURFTlRJRklFUiIsIk5VTUJFUiIsIlNUUklORyIsIkpTIiwiUkVHRVgiLCJORVciLCJQQVJBTV9TVEFSVCIsIkNMQVNTIiwiSUYiLCJUUlkiLCJTV0lUQ0giLCJUSElTIiwiQk9PTCIsIlVOQVJZIiwiU1VQRVIiLCJAIiwiLT4iLCI9PiIsIlsiLCIoIiwieyIsIi0tIiwiKysiXSxjPVsiKyIsIi0iXSx1PVsiLT4iLCI9PiIsInsiLCJbIiwiLCJdLGY9WyJQT1NUX0lGIiwiRk9SIiwiV0hJTEUiLCJVTlRJTCIsIldIRU4iLCJCWSIsIkxPT1AiLCJURVJNSU5BVE9SIl0sdj1bIkVMU0UiLCItPiIsIj0+IiwiVFJZIiwiRklOQUxMWSIsIlRIRU4iXSxkPVsiVEVSTUlOQVRPUiIsIkNBVENIIiwiRklOQUxMWSIsIkVMU0UiLCJPVVRERU5UIiwiTEVBRElOR19XSEVOIl0scD1bIlRFUk1JTkFUT1IiLCJJTkRFTlQiLCJPVVRERU5UIl19KSxkZWZpbmUoImFjZS9tb2RlL2NvZmZlZS9oZWxwZXJzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7dC5zdGFydHM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PT09ZS5zdWJzdHIobix0Lmxlbmd0aCl9LHQuZW5kcz1mdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIHI9dC5sZW5ndGgsdD09PWUuc3Vic3RyKGUubGVuZ3RoLXItKG58fDApLHIpfSx0LmNvbXBhY3Q9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk7aT1bXTtmb3Iobj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0PWVbbl0sdCYmaS5wdXNoKHQpO3JldHVybiBpfSx0LmNvdW50PWZ1bmN0aW9uKGUsdCl7dmFyIG4scjtuPXI9MDtpZighdC5sZW5ndGgpcmV0dXJuIDEvMDt3aGlsZShyPTErZS5pbmRleE9mKHQscikpbisrO3JldHVybiBufSx0Lm1lcmdlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIocih7fSxlKSx0KX0scj10LmV4dGVuZD1mdW5jdGlvbihlLHQpe3ZhciBuLHI7Zm9yKG4gaW4gdClyPXRbbl0sZVtuXT1yO3JldHVybiBlfSx0LmZsYXR0ZW49aT1mdW5jdGlvbihlKXt2YXIgdCxuLHIscztuPVtdO2ZvcihyPTAscz1lLmxlbmd0aDtyPHM7cisrKXQ9ZVtyXSx0IGluc3RhbmNlb2YgQXJyYXk/bj1uLmNvbmNhdChpKHQpKTpuLnB1c2godCk7cmV0dXJuIG59LHQuZGVsPWZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIG49ZVt0XSxkZWxldGUgZVt0XSxufSx0Lmxhc3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVtlLmxlbmd0aC0odHx8MCktMV19fSksZGVmaW5lKCJhY2UvbW9kZS9jb2ZmZWUvcGFyc2VyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3VuZGVmaW5lZDt2YXIgcj17dHJhY2U6ZnVuY3Rpb24oKXt9LHl5Ont9LHN5bWJvbHNfOntlcnJvcjoyLFJvb3Q6MyxCb2R5OjQsQmxvY2s6NSxURVJNSU5BVE9SOjYsTGluZTo3LEV4cHJlc3Npb246OCxTdGF0ZW1lbnQ6OSxSZXR1cm46MTAsQ29tbWVudDoxMSxTVEFURU1FTlQ6MTIsVmFsdWU6MTMsSW52b2NhdGlvbjoxNCxDb2RlOjE1LE9wZXJhdGlvbjoxNixBc3NpZ246MTcsSWY6MTgsVHJ5OjE5LFdoaWxlOjIwLEZvcjoyMSxTd2l0Y2g6MjIsQ2xhc3M6MjMsVGhyb3c6MjQsSU5ERU5UOjI1LE9VVERFTlQ6MjYsSWRlbnRpZmllcjoyNyxJREVOVElGSUVSOjI4LEFscGhhTnVtZXJpYzoyOSxOVU1CRVI6MzAsU1RSSU5HOjMxLExpdGVyYWw6MzIsSlM6MzMsUkVHRVg6MzQsREVCVUdHRVI6MzUsQk9PTDozNixBc3NpZ25hYmxlOjM3LCI9IjozOCxBc3NpZ25PYmo6MzksT2JqQXNzaWduYWJsZTo0MCwiOiI6NDEsVGhpc1Byb3BlcnR5OjQyLFJFVFVSTjo0MyxIRVJFQ09NTUVOVDo0NCxQQVJBTV9TVEFSVDo0NSxQYXJhbUxpc3Q6NDYsUEFSQU1fRU5EOjQ3LEZ1bmNHbHlwaDo0OCwiLT4iOjQ5LCI9PiI6NTAsT3B0Q29tbWE6NTEsIiwiOjUyLFBhcmFtOjUzLFBhcmFtVmFyOjU0LCIuLi4iOjU1LEFycmF5OjU2LE9iamVjdDo1NyxTcGxhdDo1OCxTaW1wbGVBc3NpZ25hYmxlOjU5LEFjY2Vzc29yOjYwLFBhcmVudGhldGljYWw6NjEsUmFuZ2U6NjIsVGhpczo2MywiLiI6NjQsIj8uIjo2NSwiOjoiOjY2LEluZGV4OjY3LElOREVYX1NUQVJUOjY4LEluZGV4VmFsdWU6NjksSU5ERVhfRU5EOjcwLElOREVYX1NPQUs6NzEsU2xpY2U6NzIsInsiOjczLEFzc2lnbkxpc3Q6NzQsIn0iOjc1LENMQVNTOjc2LEVYVEVORFM6NzcsT3B0RnVuY0V4aXN0Ojc4LEFyZ3VtZW50czo3OSxTVVBFUjo4MCxGVU5DX0VYSVNUOjgxLENBTExfU1RBUlQ6ODIsQ0FMTF9FTkQ6ODMsQXJnTGlzdDo4NCxUSElTOjg1LCJAIjo4NiwiWyI6ODcsIl0iOjg4LFJhbmdlRG90czo4OSwiLi4iOjkwLEFyZzo5MSxTaW1wbGVBcmdzOjkyLFRSWTo5MyxDYXRjaDo5NCxGSU5BTExZOjk1LENBVENIOjk2LFRIUk9XOjk3LCIoIjo5OCwiKSI6OTksV2hpbGVTb3VyY2U6MTAwLFdISUxFOjEwMSxXSEVOOjEwMixVTlRJTDoxMDMsTG9vcDoxMDQsTE9PUDoxMDUsRm9yQm9keToxMDYsRk9SOjEwNyxGb3JTdGFydDoxMDgsRm9yU291cmNlOjEwOSxGb3JWYXJpYWJsZXM6MTEwLE9XTjoxMTEsRm9yVmFsdWU6MTEyLEZPUklOOjExMyxGT1JPRjoxMTQsQlk6MTE1LFNXSVRDSDoxMTYsV2hlbnM6MTE3LEVMU0U6MTE4LFdoZW46MTE5LExFQURJTkdfV0hFTjoxMjAsSWZCbG9jazoxMjEsSUY6MTIyLFBPU1RfSUY6MTIzLFVOQVJZOjEyNCwiLSI6MTI1LCIrIjoxMjYsIi0tIjoxMjcsIisrIjoxMjgsIj8iOjEyOSxNQVRIOjEzMCxTSElGVDoxMzEsQ09NUEFSRToxMzIsTE9HSUM6MTMzLFJFTEFUSU9OOjEzNCxDT01QT1VORF9BU1NJR046MTM1LCRhY2NlcHQ6MCwkZW5kOjF9LHRlcm1pbmFsc186ezI6ImVycm9yIiw2OiJURVJNSU5BVE9SIiwxMjoiU1RBVEVNRU5UIiwyNToiSU5ERU5UIiwyNjoiT1VUREVOVCIsMjg6IklERU5USUZJRVIiLDMwOiJOVU1CRVIiLDMxOiJTVFJJTkciLDMzOiJKUyIsMzQ6IlJFR0VYIiwzNToiREVCVUdHRVIiLDM2OiJCT09MIiwzODoiPSIsNDE6IjoiLDQzOiJSRVRVUk4iLDQ0OiJIRVJFQ09NTUVOVCIsNDU6IlBBUkFNX1NUQVJUIiw0NzoiUEFSQU1fRU5EIiw0OToiLT4iLDUwOiI9PiIsNTI6IiwiLDU1OiIuLi4iLDY0OiIuIiw2NToiPy4iLDY2OiI6OiIsNjg6IklOREVYX1NUQVJUIiw3MDoiSU5ERVhfRU5EIiw3MToiSU5ERVhfU09BSyIsNzM6InsiLDc1OiJ9Iiw3NjoiQ0xBU1MiLDc3OiJFWFRFTkRTIiw4MDoiU1VQRVIiLDgxOiJGVU5DX0VYSVNUIiw4MjoiQ0FMTF9TVEFSVCIsODM6IkNBTExfRU5EIiw4NToiVEhJUyIsODY6IkAiLDg3OiJbIiw4ODoiXSIsOTA6Ii4uIiw5MzoiVFJZIiw5NToiRklOQUxMWSIsOTY6IkNBVENIIiw5NzoiVEhST1ciLDk4OiIoIiw5OToiKSIsMTAxOiJXSElMRSIsMTAyOiJXSEVOIiwxMDM6IlVOVElMIiwxMDU6IkxPT1AiLDEwNzoiRk9SIiwxMTE6Ik9XTiIsMTEzOiJGT1JJTiIsMTE0OiJGT1JPRiIsMTE1OiJCWSIsMTE2OiJTV0lUQ0giLDExODoiRUxTRSIsMTIwOiJMRUFESU5HX1dIRU4iLDEyMjoiSUYiLDEyMzoiUE9TVF9JRiIsMTI0OiJVTkFSWSIsMTI1OiItIiwxMjY6IisiLDEyNzoiLS0iLDEyODoiKysiLDEyOToiPyIsMTMwOiJNQVRIIiwxMzE6IlNISUZUIiwxMzI6IkNPTVBBUkUiLDEzMzoiTE9HSUMiLDEzNDoiUkVMQVRJT04iLDEzNToiQ09NUE9VTkRfQVNTSUdOIn0scHJvZHVjdGlvbnNfOlswLFszLDBdLFszLDFdLFszLDJdLFs0LDFdLFs0LDNdLFs0LDJdLFs3LDFdLFs3LDFdLFs5LDFdLFs5LDFdLFs5LDFdLFs4LDFdLFs4LDFdLFs4LDFdLFs4LDFdLFs4LDFdLFs4LDFdLFs4LDFdLFs4LDFdLFs4LDFdLFs4LDFdLFs4LDFdLFs4LDFdLFs1LDJdLFs1LDNdLFsyNywxXSxbMjksMV0sWzI5LDFdLFszMiwxXSxbMzIsMV0sWzMyLDFdLFszMiwxXSxbMzIsMV0sWzE3LDNdLFsxNyw0XSxbMTcsNV0sWzM5LDFdLFszOSwzXSxbMzksNV0sWzM5LDFdLFs0MCwxXSxbNDAsMV0sWzQwLDFdLFsxMCwyXSxbMTAsMV0sWzExLDFdLFsxNSw1XSxbMTUsMl0sWzQ4LDFdLFs0OCwxXSxbNTEsMF0sWzUxLDFdLFs0NiwwXSxbNDYsMV0sWzQ2LDNdLFs1MywxXSxbNTMsMl0sWzUzLDNdLFs1NCwxXSxbNTQsMV0sWzU0LDFdLFs1NCwxXSxbNTgsMl0sWzU5LDFdLFs1OSwyXSxbNTksMl0sWzU5LDFdLFszNywxXSxbMzcsMV0sWzM3LDFdLFsxMywxXSxbMTMsMV0sWzEzLDFdLFsxMywxXSxbMTMsMV0sWzYwLDJdLFs2MCwyXSxbNjAsMl0sWzYwLDFdLFs2MCwxXSxbNjcsM10sWzY3LDJdLFs2OSwxXSxbNjksMV0sWzU3LDRdLFs3NCwwXSxbNzQsMV0sWzc0LDNdLFs3NCw0XSxbNzQsNl0sWzIzLDFdLFsyMywyXSxbMjMsM10sWzIzLDRdLFsyMywyXSxbMjMsM10sWzIzLDRdLFsyMyw1XSxbMTQsM10sWzE0LDNdLFsxNCwxXSxbMTQsMl0sWzc4LDBdLFs3OCwxXSxbNzksMl0sWzc5LDRdLFs2MywxXSxbNjMsMV0sWzQyLDJdLFs1NiwyXSxbNTYsNF0sWzg5LDFdLFs4OSwxXSxbNjIsNV0sWzcyLDNdLFs3MiwyXSxbNzIsMl0sWzcyLDFdLFs4NCwxXSxbODQsM10sWzg0LDRdLFs4NCw0XSxbODQsNl0sWzkxLDFdLFs5MSwxXSxbOTIsMV0sWzkyLDNdLFsxOSwyXSxbMTksM10sWzE5LDRdLFsxOSw1XSxbOTQsM10sWzI0LDJdLFs2MSwzXSxbNjEsNV0sWzEwMCwyXSxbMTAwLDRdLFsxMDAsMl0sWzEwMCw0XSxbMjAsMl0sWzIwLDJdLFsyMCwyXSxbMjAsMV0sWzEwNCwyXSxbMTA0LDJdLFsyMSwyXSxbMjEsMl0sWzIxLDJdLFsxMDYsMl0sWzEwNiwyXSxbMTA4LDJdLFsxMDgsM10sWzExMiwxXSxbMTEyLDFdLFsxMTIsMV0sWzExMCwxXSxbMTEwLDNdLFsxMDksMl0sWzEwOSwyXSxbMTA5LDRdLFsxMDksNF0sWzEwOSw0XSxbMTA5LDZdLFsxMDksNl0sWzIyLDVdLFsyMiw3XSxbMjIsNF0sWzIyLDZdLFsxMTcsMV0sWzExNywyXSxbMTE5LDNdLFsxMTksNF0sWzEyMSwzXSxbMTIxLDVdLFsxOCwxXSxbMTgsM10sWzE4LDNdLFsxOCwzXSxbMTYsMl0sWzE2LDJdLFsxNiwyXSxbMTYsMl0sWzE2LDJdLFsxNiwyXSxbMTYsMl0sWzE2LDJdLFsxNiwzXSxbMTYsM10sWzE2LDNdLFsxNiwzXSxbMTYsM10sWzE2LDNdLFsxNiwzXSxbMTYsM10sWzE2LDVdLFsxNiwzXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih0LG4scixpLHMsbyx1KXt2YXIgYT1vLmxlbmd0aC0xO3N3aXRjaChzKXtjYXNlIDE6cmV0dXJuIHRoaXMuJD1uZXcgaS5CbG9jaztjYXNlIDI6cmV0dXJuIHRoaXMuJD1vW2FdO2Nhc2UgMzpyZXR1cm4gdGhpcy4kPW9bYS0xXTtjYXNlIDQ6dGhpcy4kPWkuQmxvY2sud3JhcChbb1thXV0pO2JyZWFrO2Nhc2UgNTp0aGlzLiQ9b1thLTJdLnB1c2gob1thXSk7YnJlYWs7Y2FzZSA2OnRoaXMuJD1vW2EtMV07YnJlYWs7Y2FzZSA3OnRoaXMuJD1vW2FdO2JyZWFrO2Nhc2UgODp0aGlzLiQ9b1thXTticmVhaztjYXNlIDk6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSAxMDp0aGlzLiQ9b1thXTticmVhaztjYXNlIDExOnRoaXMuJD1uZXcgaS5MaXRlcmFsKG9bYV0pO2JyZWFrO2Nhc2UgMTI6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSAxMzp0aGlzLiQ9b1thXTticmVhaztjYXNlIDE0OnRoaXMuJD1vW2FdO2JyZWFrO2Nhc2UgMTU6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSAxNjp0aGlzLiQ9b1thXTticmVhaztjYXNlIDE3OnRoaXMuJD1vW2FdO2JyZWFrO2Nhc2UgMTg6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSAxOTp0aGlzLiQ9b1thXTticmVhaztjYXNlIDIwOnRoaXMuJD1vW2FdO2JyZWFrO2Nhc2UgMjE6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSAyMjp0aGlzLiQ9b1thXTticmVhaztjYXNlIDIzOnRoaXMuJD1vW2FdO2JyZWFrO2Nhc2UgMjQ6dGhpcy4kPW5ldyBpLkJsb2NrO2JyZWFrO2Nhc2UgMjU6dGhpcy4kPW9bYS0xXTticmVhaztjYXNlIDI2OnRoaXMuJD1uZXcgaS5MaXRlcmFsKG9bYV0pO2JyZWFrO2Nhc2UgMjc6dGhpcy4kPW5ldyBpLkxpdGVyYWwob1thXSk7YnJlYWs7Y2FzZSAyODp0aGlzLiQ9bmV3IGkuTGl0ZXJhbChvW2FdKTticmVhaztjYXNlIDI5OnRoaXMuJD1vW2FdO2JyZWFrO2Nhc2UgMzA6dGhpcy4kPW5ldyBpLkxpdGVyYWwob1thXSk7YnJlYWs7Y2FzZSAzMTp0aGlzLiQ9bmV3IGkuTGl0ZXJhbChvW2FdKTticmVhaztjYXNlIDMyOnRoaXMuJD1uZXcgaS5MaXRlcmFsKG9bYV0pO2JyZWFrO2Nhc2UgMzM6dGhpcy4kPWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIGU9bmV3IGkuTGl0ZXJhbChvW2FdKSxvW2FdPT09InVuZGVmaW5lZCImJihlLmlzVW5kZWZpbmVkPSEwKSxlfSgpO2JyZWFrO2Nhc2UgMzQ6dGhpcy4kPW5ldyBpLkFzc2lnbihvW2EtMl0sb1thXSk7YnJlYWs7Y2FzZSAzNTp0aGlzLiQ9bmV3IGkuQXNzaWduKG9bYS0zXSxvW2FdKTticmVhaztjYXNlIDM2OnRoaXMuJD1uZXcgaS5Bc3NpZ24ob1thLTRdLG9bYS0xXSk7YnJlYWs7Y2FzZSAzNzp0aGlzLiQ9bmV3IGkuVmFsdWUob1thXSk7YnJlYWs7Y2FzZSAzODp0aGlzLiQ9bmV3IGkuQXNzaWduKG5ldyBpLlZhbHVlKG9bYS0yXSksb1thXSwib2JqZWN0Iik7YnJlYWs7Y2FzZSAzOTp0aGlzLiQ9bmV3IGkuQXNzaWduKG5ldyBpLlZhbHVlKG9bYS00XSksb1thLTFdLCJvYmplY3QiKTticmVhaztjYXNlIDQwOnRoaXMuJD1vW2FdO2JyZWFrO2Nhc2UgNDE6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSA0Mjp0aGlzLiQ9b1thXTticmVhaztjYXNlIDQzOnRoaXMuJD1vW2FdO2JyZWFrO2Nhc2UgNDQ6dGhpcy4kPW5ldyBpLlJldHVybihvW2FdKTticmVhaztjYXNlIDQ1OnRoaXMuJD1uZXcgaS5SZXR1cm47YnJlYWs7Y2FzZSA0Njp0aGlzLiQ9bmV3IGkuQ29tbWVudChvW2FdKTticmVhaztjYXNlIDQ3OnRoaXMuJD1uZXcgaS5Db2RlKG9bYS0zXSxvW2FdLG9bYS0xXSk7YnJlYWs7Y2FzZSA0ODp0aGlzLiQ9bmV3IGkuQ29kZShbXSxvW2FdLG9bYS0xXSk7YnJlYWs7Y2FzZSA0OTp0aGlzLiQ9ImZ1bmMiO2JyZWFrO2Nhc2UgNTA6dGhpcy4kPSJib3VuZGZ1bmMiO2JyZWFrO2Nhc2UgNTE6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSA1Mjp0aGlzLiQ9b1thXTticmVhaztjYXNlIDUzOnRoaXMuJD1bXTticmVhaztjYXNlIDU0OnRoaXMuJD1bb1thXV07YnJlYWs7Y2FzZSA1NTp0aGlzLiQ9b1thLTJdLmNvbmNhdChvW2FdKTticmVhaztjYXNlIDU2OnRoaXMuJD1uZXcgaS5QYXJhbShvW2FdKTticmVhaztjYXNlIDU3OnRoaXMuJD1uZXcgaS5QYXJhbShvW2EtMV0sbnVsbCwhMCk7YnJlYWs7Y2FzZSA1ODp0aGlzLiQ9bmV3IGkuUGFyYW0ob1thLTJdLG9bYV0pO2JyZWFrO2Nhc2UgNTk6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSA2MDp0aGlzLiQ9b1thXTticmVhaztjYXNlIDYxOnRoaXMuJD1vW2FdO2JyZWFrO2Nhc2UgNjI6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSA2Mzp0aGlzLiQ9bmV3IGkuU3BsYXQob1thLTFdKTticmVhaztjYXNlIDY0OnRoaXMuJD1uZXcgaS5WYWx1ZShvW2FdKTticmVhaztjYXNlIDY1OnRoaXMuJD1vW2EtMV0uYWRkKG9bYV0pO2JyZWFrO2Nhc2UgNjY6dGhpcy4kPW5ldyBpLlZhbHVlKG9bYS0xXSxbXS5jb25jYXQob1thXSkpO2JyZWFrO2Nhc2UgNjc6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSA2ODp0aGlzLiQ9b1thXTticmVhaztjYXNlIDY5OnRoaXMuJD1uZXcgaS5WYWx1ZShvW2FdKTticmVhaztjYXNlIDcwOnRoaXMuJD1uZXcgaS5WYWx1ZShvW2FdKTticmVhaztjYXNlIDcxOnRoaXMuJD1vW2FdO2JyZWFrO2Nhc2UgNzI6dGhpcy4kPW5ldyBpLlZhbHVlKG9bYV0pO2JyZWFrO2Nhc2UgNzM6dGhpcy4kPW5ldyBpLlZhbHVlKG9bYV0pO2JyZWFrO2Nhc2UgNzQ6dGhpcy4kPW5ldyBpLlZhbHVlKG9bYV0pO2JyZWFrO2Nhc2UgNzU6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSA3Njp0aGlzLiQ9bmV3IGkuQWNjZXNzKG9bYV0pO2JyZWFrO2Nhc2UgNzc6dGhpcy4kPW5ldyBpLkFjY2VzcyhvW2FdLCJzb2FrIik7YnJlYWs7Y2FzZSA3ODp0aGlzLiQ9W25ldyBpLkFjY2VzcyhuZXcgaS5MaXRlcmFsKCJwcm90b3R5cGUiKSksbmV3IGkuQWNjZXNzKG9bYV0pXTticmVhaztjYXNlIDc5OnRoaXMuJD1uZXcgaS5BY2Nlc3MobmV3IGkuTGl0ZXJhbCgicHJvdG90eXBlIikpO2JyZWFrO2Nhc2UgODA6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSA4MTp0aGlzLiQ9b1thLTFdO2JyZWFrO2Nhc2UgODI6dGhpcy4kPWkuZXh0ZW5kKG9bYV0se3NvYWs6ITB9KTticmVhaztjYXNlIDgzOnRoaXMuJD1uZXcgaS5JbmRleChvW2FdKTticmVhaztjYXNlIDg0OnRoaXMuJD1uZXcgaS5TbGljZShvW2FdKTticmVhaztjYXNlIDg1OnRoaXMuJD1uZXcgaS5PYmoob1thLTJdLG9bYS0zXS5nZW5lcmF0ZWQpO2JyZWFrO2Nhc2UgODY6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgODc6dGhpcy4kPVtvW2FdXTticmVhaztjYXNlIDg4OnRoaXMuJD1vW2EtMl0uY29uY2F0KG9bYV0pO2JyZWFrO2Nhc2UgODk6dGhpcy4kPW9bYS0zXS5jb25jYXQob1thXSk7YnJlYWs7Y2FzZSA5MDp0aGlzLiQ9b1thLTVdLmNvbmNhdChvW2EtMl0pO2JyZWFrO2Nhc2UgOTE6dGhpcy4kPW5ldyBpLkNsYXNzO2JyZWFrO2Nhc2UgOTI6dGhpcy4kPW5ldyBpLkNsYXNzKG51bGwsbnVsbCxvW2FdKTticmVhaztjYXNlIDkzOnRoaXMuJD1uZXcgaS5DbGFzcyhudWxsLG9bYV0pO2JyZWFrO2Nhc2UgOTQ6dGhpcy4kPW5ldyBpLkNsYXNzKG51bGwsb1thLTFdLG9bYV0pO2JyZWFrO2Nhc2UgOTU6dGhpcy4kPW5ldyBpLkNsYXNzKG9bYV0pO2JyZWFrO2Nhc2UgOTY6dGhpcy4kPW5ldyBpLkNsYXNzKG9bYS0xXSxudWxsLG9bYV0pO2JyZWFrO2Nhc2UgOTc6dGhpcy4kPW5ldyBpLkNsYXNzKG9bYS0yXSxvW2FdKTticmVhaztjYXNlIDk4OnRoaXMuJD1uZXcgaS5DbGFzcyhvW2EtM10sb1thLTFdLG9bYV0pO2JyZWFrO2Nhc2UgOTk6dGhpcy4kPW5ldyBpLkNhbGwob1thLTJdLG9bYV0sb1thLTFdKTticmVhaztjYXNlIDEwMDp0aGlzLiQ9bmV3IGkuQ2FsbChvW2EtMl0sb1thXSxvW2EtMV0pO2JyZWFrO2Nhc2UgMTAxOnRoaXMuJD1uZXcgaS5DYWxsKCJzdXBlciIsW25ldyBpLlNwbGF0KG5ldyBpLkxpdGVyYWwoImFyZ3VtZW50cyIpKV0pO2JyZWFrO2Nhc2UgMTAyOnRoaXMuJD1uZXcgaS5DYWxsKCJzdXBlciIsb1thXSk7YnJlYWs7Y2FzZSAxMDM6dGhpcy4kPSExO2JyZWFrO2Nhc2UgMTA0OnRoaXMuJD0hMDticmVhaztjYXNlIDEwNTp0aGlzLiQ9W107YnJlYWs7Y2FzZSAxMDY6dGhpcy4kPW9bYS0yXTticmVhaztjYXNlIDEwNzp0aGlzLiQ9bmV3IGkuVmFsdWUobmV3IGkuTGl0ZXJhbCgidGhpcyIpKTticmVhaztjYXNlIDEwODp0aGlzLiQ9bmV3IGkuVmFsdWUobmV3IGkuTGl0ZXJhbCgidGhpcyIpKTticmVhaztjYXNlIDEwOTp0aGlzLiQ9bmV3IGkuVmFsdWUobmV3IGkuTGl0ZXJhbCgidGhpcyIpLFtuZXcgaS5BY2Nlc3Mob1thXSldLCJ0aGlzIik7YnJlYWs7Y2FzZSAxMTA6dGhpcy4kPW5ldyBpLkFycihbXSk7YnJlYWs7Y2FzZSAxMTE6dGhpcy4kPW5ldyBpLkFycihvW2EtMl0pO2JyZWFrO2Nhc2UgMTEyOnRoaXMuJD0iaW5jbHVzaXZlIjticmVhaztjYXNlIDExMzp0aGlzLiQ9ImV4Y2x1c2l2ZSI7YnJlYWs7Y2FzZSAxMTQ6dGhpcy4kPW5ldyBpLlJhbmdlKG9bYS0zXSxvW2EtMV0sb1thLTJdKTticmVhaztjYXNlIDExNTp0aGlzLiQ9bmV3IGkuUmFuZ2Uob1thLTJdLG9bYV0sb1thLTFdKTticmVhaztjYXNlIDExNjp0aGlzLiQ9bmV3IGkuUmFuZ2Uob1thLTFdLG51bGwsb1thXSk7YnJlYWs7Y2FzZSAxMTc6dGhpcy4kPW5ldyBpLlJhbmdlKG51bGwsb1thXSxvW2EtMV0pO2JyZWFrO2Nhc2UgMTE4OnRoaXMuJD1uZXcgaS5SYW5nZShudWxsLG51bGwsb1thXSk7YnJlYWs7Y2FzZSAxMTk6dGhpcy4kPVtvW2FdXTticmVhaztjYXNlIDEyMDp0aGlzLiQ9b1thLTJdLmNvbmNhdChvW2FdKTticmVhaztjYXNlIDEyMTp0aGlzLiQ9b1thLTNdLmNvbmNhdChvW2FdKTticmVhaztjYXNlIDEyMjp0aGlzLiQ9b1thLTJdO2JyZWFrO2Nhc2UgMTIzOnRoaXMuJD1vW2EtNV0uY29uY2F0KG9bYS0yXSk7YnJlYWs7Y2FzZSAxMjQ6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSAxMjU6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSAxMjY6dGhpcy4kPW9bYV07YnJlYWs7Y2FzZSAxMjc6dGhpcy4kPVtdLmNvbmNhdChvW2EtMl0sb1thXSk7YnJlYWs7Y2FzZSAxMjg6dGhpcy4kPW5ldyBpLlRyeShvW2FdKTticmVhaztjYXNlIDEyOTp0aGlzLiQ9bmV3IGkuVHJ5KG9bYS0xXSxvW2FdWzBdLG9bYV1bMV0pO2JyZWFrO2Nhc2UgMTMwOnRoaXMuJD1uZXcgaS5Ucnkob1thLTJdLG51bGwsbnVsbCxvW2FdKTticmVhaztjYXNlIDEzMTp0aGlzLiQ9bmV3IGkuVHJ5KG9bYS0zXSxvW2EtMl1bMF0sb1thLTJdWzFdLG9bYV0pO2JyZWFrO2Nhc2UgMTMyOnRoaXMuJD1bb1thLTFdLG9bYV1dO2JyZWFrO2Nhc2UgMTMzOnRoaXMuJD1uZXcgaS5UaHJvdyhvW2FdKTticmVhaztjYXNlIDEzNDp0aGlzLiQ9bmV3IGkuUGFyZW5zKG9bYS0xXSk7YnJlYWs7Y2FzZSAxMzU6dGhpcy4kPW5ldyBpLlBhcmVucyhvW2EtMl0pO2JyZWFrO2Nhc2UgMTM2OnRoaXMuJD1uZXcgaS5XaGlsZShvW2FdKTticmVhaztjYXNlIDEzNzp0aGlzLiQ9bmV3IGkuV2hpbGUob1thLTJdLHtndWFyZDpvW2FdfSk7YnJlYWs7Y2FzZSAxMzg6dGhpcy4kPW5ldyBpLldoaWxlKG9bYV0se2ludmVydDohMH0pO2JyZWFrO2Nhc2UgMTM5OnRoaXMuJD1uZXcgaS5XaGlsZShvW2EtMl0se2ludmVydDohMCxndWFyZDpvW2FdfSk7YnJlYWs7Y2FzZSAxNDA6dGhpcy4kPW9bYS0xXS5hZGRCb2R5KG9bYV0pO2JyZWFrO2Nhc2UgMTQxOnRoaXMuJD1vW2FdLmFkZEJvZHkoaS5CbG9jay53cmFwKFtvW2EtMV1dKSk7YnJlYWs7Y2FzZSAxNDI6dGhpcy4kPW9bYV0uYWRkQm9keShpLkJsb2NrLndyYXAoW29bYS0xXV0pKTticmVhaztjYXNlIDE0Mzp0aGlzLiQ9b1thXTticmVhaztjYXNlIDE0NDp0aGlzLiQ9KG5ldyBpLldoaWxlKG5ldyBpLkxpdGVyYWwoInRydWUiKSkpLmFkZEJvZHkob1thXSk7YnJlYWs7Y2FzZSAxNDU6dGhpcy4kPShuZXcgaS5XaGlsZShuZXcgaS5MaXRlcmFsKCJ0cnVlIikpKS5hZGRCb2R5KGkuQmxvY2sud3JhcChbb1thXV0pKTticmVhaztjYXNlIDE0Njp0aGlzLiQ9bmV3IGkuRm9yKG9bYS0xXSxvW2FdKTticmVhaztjYXNlIDE0Nzp0aGlzLiQ9bmV3IGkuRm9yKG9bYS0xXSxvW2FdKTticmVhaztjYXNlIDE0ODp0aGlzLiQ9bmV3IGkuRm9yKG9bYV0sb1thLTFdKTticmVhaztjYXNlIDE0OTp0aGlzLiQ9e3NvdXJjZTpuZXcgaS5WYWx1ZShvW2FdKX07YnJlYWs7Y2FzZSAxNTA6dGhpcy4kPWZ1bmN0aW9uKCl7cmV0dXJuIG9bYV0ub3duPW9bYS0xXS5vd24sb1thXS5uYW1lPW9bYS0xXVswXSxvW2FdLmluZGV4PW9bYS0xXVsxXSxvW2FdfSgpO2JyZWFrO2Nhc2UgMTUxOnRoaXMuJD1vW2FdO2JyZWFrO2Nhc2UgMTUyOnRoaXMuJD1mdW5jdGlvbigpe3JldHVybiBvW2FdLm93bj0hMCxvW2FdfSgpO2JyZWFrO2Nhc2UgMTUzOnRoaXMuJD1vW2FdO2JyZWFrO2Nhc2UgMTU0OnRoaXMuJD1uZXcgaS5WYWx1ZShvW2FdKTticmVhaztjYXNlIDE1NTp0aGlzLiQ9bmV3IGkuVmFsdWUob1thXSk7YnJlYWs7Y2FzZSAxNTY6dGhpcy4kPVtvW2FdXTticmVhaztjYXNlIDE1Nzp0aGlzLiQ9W29bYS0yXSxvW2FdXTticmVhaztjYXNlIDE1ODp0aGlzLiQ9e3NvdXJjZTpvW2FdfTticmVhaztjYXNlIDE1OTp0aGlzLiQ9e3NvdXJjZTpvW2FdLG9iamVjdDohMH07YnJlYWs7Y2FzZSAxNjA6dGhpcy4kPXtzb3VyY2U6b1thLTJdLGd1YXJkOm9bYV19O2JyZWFrO2Nhc2UgMTYxOnRoaXMuJD17c291cmNlOm9bYS0yXSxndWFyZDpvW2FdLG9iamVjdDohMH07YnJlYWs7Y2FzZSAxNjI6dGhpcy4kPXtzb3VyY2U6b1thLTJdLHN0ZXA6b1thXX07YnJlYWs7Y2FzZSAxNjM6dGhpcy4kPXtzb3VyY2U6b1thLTRdLGd1YXJkOm9bYS0yXSxzdGVwOm9bYV19O2JyZWFrO2Nhc2UgMTY0OnRoaXMuJD17c291cmNlOm9bYS00XSxzdGVwOm9bYS0yXSxndWFyZDpvW2FdfTticmVhaztjYXNlIDE2NTp0aGlzLiQ9bmV3IGkuU3dpdGNoKG9bYS0zXSxvW2EtMV0pO2JyZWFrO2Nhc2UgMTY2OnRoaXMuJD1uZXcgaS5Td2l0Y2gob1thLTVdLG9bYS0zXSxvW2EtMV0pO2JyZWFrO2Nhc2UgMTY3OnRoaXMuJD1uZXcgaS5Td2l0Y2gobnVsbCxvW2EtMV0pO2JyZWFrO2Nhc2UgMTY4OnRoaXMuJD1uZXcgaS5Td2l0Y2gobnVsbCxvW2EtM10sb1thLTFdKTticmVhaztjYXNlIDE2OTp0aGlzLiQ9b1thXTticmVhaztjYXNlIDE3MDp0aGlzLiQ9b1thLTFdLmNvbmNhdChvW2FdKTticmVhaztjYXNlIDE3MTp0aGlzLiQ9W1tvW2EtMV0sb1thXV1dO2JyZWFrO2Nhc2UgMTcyOnRoaXMuJD1bW29bYS0yXSxvW2EtMV1dXTticmVhaztjYXNlIDE3Mzp0aGlzLiQ9bmV3IGkuSWYob1thLTFdLG9bYV0se3R5cGU6b1thLTJdfSk7YnJlYWs7Y2FzZSAxNzQ6dGhpcy4kPW9bYS00XS5hZGRFbHNlKG5ldyBpLklmKG9bYS0xXSxvW2FdLHt0eXBlOm9bYS0yXX0pKTticmVhaztjYXNlIDE3NTp0aGlzLiQ9b1thXTticmVhaztjYXNlIDE3Njp0aGlzLiQ9b1thLTJdLmFkZEVsc2Uob1thXSk7YnJlYWs7Y2FzZSAxNzc6dGhpcy4kPW5ldyBpLklmKG9bYV0saS5CbG9jay53cmFwKFtvW2EtMl1dKSx7dHlwZTpvW2EtMV0sc3RhdGVtZW50OiEwfSk7YnJlYWs7Y2FzZSAxNzg6dGhpcy4kPW5ldyBpLklmKG9bYV0saS5CbG9jay53cmFwKFtvW2EtMl1dKSx7dHlwZTpvW2EtMV0sc3RhdGVtZW50OiEwfSk7YnJlYWs7Y2FzZSAxNzk6dGhpcy4kPW5ldyBpLk9wKG9bYS0xXSxvW2FdKTticmVhaztjYXNlIDE4MDp0aGlzLiQ9bmV3IGkuT3AoIi0iLG9bYV0pO2JyZWFrO2Nhc2UgMTgxOnRoaXMuJD1uZXcgaS5PcCgiKyIsb1thXSk7YnJlYWs7Y2FzZSAxODI6dGhpcy4kPW5ldyBpLk9wKCItLSIsb1thXSk7YnJlYWs7Y2FzZSAxODM6dGhpcy4kPW5ldyBpLk9wKCIrKyIsb1thXSk7YnJlYWs7Y2FzZSAxODQ6dGhpcy4kPW5ldyBpLk9wKCItLSIsb1thLTFdLG51bGwsITApO2JyZWFrO2Nhc2UgMTg1OnRoaXMuJD1uZXcgaS5PcCgiKysiLG9bYS0xXSxudWxsLCEwKTticmVhaztjYXNlIDE4Njp0aGlzLiQ9bmV3IGkuRXhpc3RlbmNlKG9bYS0xXSk7YnJlYWs7Y2FzZSAxODc6dGhpcy4kPW5ldyBpLk9wKCIrIixvW2EtMl0sb1thXSk7YnJlYWs7Y2FzZSAxODg6dGhpcy4kPW5ldyBpLk9wKCItIixvW2EtMl0sb1thXSk7YnJlYWs7Y2FzZSAxODk6dGhpcy4kPW5ldyBpLk9wKG9bYS0xXSxvW2EtMl0sb1thXSk7YnJlYWs7Y2FzZSAxOTA6dGhpcy4kPW5ldyBpLk9wKG9bYS0xXSxvW2EtMl0sb1thXSk7YnJlYWs7Y2FzZSAxOTE6dGhpcy4kPW5ldyBpLk9wKG9bYS0xXSxvW2EtMl0sb1thXSk7YnJlYWs7Y2FzZSAxOTI6dGhpcy4kPW5ldyBpLk9wKG9bYS0xXSxvW2EtMl0sb1thXSk7YnJlYWs7Y2FzZSAxOTM6dGhpcy4kPWZ1bmN0aW9uKCl7cmV0dXJuIG9bYS0xXS5jaGFyQXQoMCk9PT0iISI/KG5ldyBpLk9wKG9bYS0xXS5zbGljZSgxKSxvW2EtMl0sb1thXSkpLmludmVydCgpOm5ldyBpLk9wKG9bYS0xXSxvW2EtMl0sb1thXSl9KCk7YnJlYWs7Y2FzZSAxOTQ6dGhpcy4kPW5ldyBpLkFzc2lnbihvW2EtMl0sb1thXSxvW2EtMV0pO2JyZWFrO2Nhc2UgMTk1OnRoaXMuJD1uZXcgaS5Bc3NpZ24ob1thLTRdLG9bYS0xXSxvW2EtM10pO2JyZWFrO2Nhc2UgMTk2OnRoaXMuJD1uZXcgaS5FeHRlbmRzKG9bYS0yXSxvW2FdKX19LHRhYmxlOlt7MTpbMiwxXSwzOjEsNDoyLDU6Myw3OjQsODo2LDk6NywxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI1OlsxLDVdLDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbM119LHsxOlsyLDJdLDY6WzEsNzJdfSx7NjpbMSw3M119LHsxOlsyLDRdLDY6WzIsNF0sMjY6WzIsNF0sOTk6WzIsNF19LHs0Ojc1LDc6NCw4OjYsOTo3LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjY6WzEsNzRdLDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiw3XSw2OlsyLDddLDI2OlsyLDddLDk5OlsyLDddLDEwMDo4NSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDEyMzpbMSw4NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MTpbMiw4XSw2OlsyLDhdLDI2OlsyLDhdLDk5OlsyLDhdLDEwMDo4OCwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA2Ojg5LDEwNzpbMSw2Nl0sMTA4OjY3LDEyMzpbMSw4N119LHsxOlsyLDEyXSw2OlsyLDEyXSwyNTpbMiwxMl0sMjY6WzIsMTJdLDQ3OlsyLDEyXSw1MjpbMiwxMl0sNTU6WzIsMTJdLDYwOjkxLDY0OlsxLDkzXSw2NTpbMSw5NF0sNjY6WzEsOTVdLDY3Ojk2LDY4OlsxLDk3XSw3MDpbMiwxMl0sNzE6WzEsOThdLDc1OlsyLDEyXSw3ODo5MCw4MTpbMSw5Ml0sODI6WzIsMTAzXSw4MzpbMiwxMl0sODg6WzIsMTJdLDkwOlsyLDEyXSw5OTpbMiwxMl0sMTAxOlsyLDEyXSwxMDI6WzIsMTJdLDEwMzpbMiwxMl0sMTA3OlsyLDEyXSwxMTU6WzIsMTJdLDEyMzpbMiwxMl0sMTI1OlsyLDEyXSwxMjY6WzIsMTJdLDEyOTpbMiwxMl0sMTMwOlsyLDEyXSwxMzE6WzIsMTJdLDEzMjpbMiwxMl0sMTMzOlsyLDEyXSwxMzQ6WzIsMTJdfSx7MTpbMiwxM10sNjpbMiwxM10sMjU6WzIsMTNdLDI2OlsyLDEzXSw0NzpbMiwxM10sNTI6WzIsMTNdLDU1OlsyLDEzXSw2MDoxMDAsNjQ6WzEsOTNdLDY1OlsxLDk0XSw2NjpbMSw5NV0sNjc6OTYsNjg6WzEsOTddLDcwOlsyLDEzXSw3MTpbMSw5OF0sNzU6WzIsMTNdLDc4Ojk5LDgxOlsxLDkyXSw4MjpbMiwxMDNdLDgzOlsyLDEzXSw4ODpbMiwxM10sOTA6WzIsMTNdLDk5OlsyLDEzXSwxMDE6WzIsMTNdLDEwMjpbMiwxM10sMTAzOlsyLDEzXSwxMDc6WzIsMTNdLDExNTpbMiwxM10sMTIzOlsyLDEzXSwxMjU6WzIsMTNdLDEyNjpbMiwxM10sMTI5OlsyLDEzXSwxMzA6WzIsMTNdLDEzMTpbMiwxM10sMTMyOlsyLDEzXSwxMzM6WzIsMTNdLDEzNDpbMiwxM119LHsxOlsyLDE0XSw2OlsyLDE0XSwyNTpbMiwxNF0sMjY6WzIsMTRdLDQ3OlsyLDE0XSw1MjpbMiwxNF0sNTU6WzIsMTRdLDcwOlsyLDE0XSw3NTpbMiwxNF0sODM6WzIsMTRdLDg4OlsyLDE0XSw5MDpbMiwxNF0sOTk6WzIsMTRdLDEwMTpbMiwxNF0sMTAyOlsyLDE0XSwxMDM6WzIsMTRdLDEwNzpbMiwxNF0sMTE1OlsyLDE0XSwxMjM6WzIsMTRdLDEyNTpbMiwxNF0sMTI2OlsyLDE0XSwxMjk6WzIsMTRdLDEzMDpbMiwxNF0sMTMxOlsyLDE0XSwxMzI6WzIsMTRdLDEzMzpbMiwxNF0sMTM0OlsyLDE0XX0sezE6WzIsMTVdLDY6WzIsMTVdLDI1OlsyLDE1XSwyNjpbMiwxNV0sNDc6WzIsMTVdLDUyOlsyLDE1XSw1NTpbMiwxNV0sNzA6WzIsMTVdLDc1OlsyLDE1XSw4MzpbMiwxNV0sODg6WzIsMTVdLDkwOlsyLDE1XSw5OTpbMiwxNV0sMTAxOlsyLDE1XSwxMDI6WzIsMTVdLDEwMzpbMiwxNV0sMTA3OlsyLDE1XSwxMTU6WzIsMTVdLDEyMzpbMiwxNV0sMTI1OlsyLDE1XSwxMjY6WzIsMTVdLDEyOTpbMiwxNV0sMTMwOlsyLDE1XSwxMzE6WzIsMTVdLDEzMjpbMiwxNV0sMTMzOlsyLDE1XSwxMzQ6WzIsMTVdfSx7MTpbMiwxNl0sNjpbMiwxNl0sMjU6WzIsMTZdLDI2OlsyLDE2XSw0NzpbMiwxNl0sNTI6WzIsMTZdLDU1OlsyLDE2XSw3MDpbMiwxNl0sNzU6WzIsMTZdLDgzOlsyLDE2XSw4ODpbMiwxNl0sOTA6WzIsMTZdLDk5OlsyLDE2XSwxMDE6WzIsMTZdLDEwMjpbMiwxNl0sMTAzOlsyLDE2XSwxMDc6WzIsMTZdLDExNTpbMiwxNl0sMTIzOlsyLDE2XSwxMjU6WzIsMTZdLDEyNjpbMiwxNl0sMTI5OlsyLDE2XSwxMzA6WzIsMTZdLDEzMTpbMiwxNl0sMTMyOlsyLDE2XSwxMzM6WzIsMTZdLDEzNDpbMiwxNl19LHsxOlsyLDE3XSw2OlsyLDE3XSwyNTpbMiwxN10sMjY6WzIsMTddLDQ3OlsyLDE3XSw1MjpbMiwxN10sNTU6WzIsMTddLDcwOlsyLDE3XSw3NTpbMiwxN10sODM6WzIsMTddLDg4OlsyLDE3XSw5MDpbMiwxN10sOTk6WzIsMTddLDEwMTpbMiwxN10sMTAyOlsyLDE3XSwxMDM6WzIsMTddLDEwNzpbMiwxN10sMTE1OlsyLDE3XSwxMjM6WzIsMTddLDEyNTpbMiwxN10sMTI2OlsyLDE3XSwxMjk6WzIsMTddLDEzMDpbMiwxN10sMTMxOlsyLDE3XSwxMzI6WzIsMTddLDEzMzpbMiwxN10sMTM0OlsyLDE3XX0sezE6WzIsMThdLDY6WzIsMThdLDI1OlsyLDE4XSwyNjpbMiwxOF0sNDc6WzIsMThdLDUyOlsyLDE4XSw1NTpbMiwxOF0sNzA6WzIsMThdLDc1OlsyLDE4XSw4MzpbMiwxOF0sODg6WzIsMThdLDkwOlsyLDE4XSw5OTpbMiwxOF0sMTAxOlsyLDE4XSwxMDI6WzIsMThdLDEwMzpbMiwxOF0sMTA3OlsyLDE4XSwxMTU6WzIsMThdLDEyMzpbMiwxOF0sMTI1OlsyLDE4XSwxMjY6WzIsMThdLDEyOTpbMiwxOF0sMTMwOlsyLDE4XSwxMzE6WzIsMThdLDEzMjpbMiwxOF0sMTMzOlsyLDE4XSwxMzQ6WzIsMThdfSx7MTpbMiwxOV0sNjpbMiwxOV0sMjU6WzIsMTldLDI2OlsyLDE5XSw0NzpbMiwxOV0sNTI6WzIsMTldLDU1OlsyLDE5XSw3MDpbMiwxOV0sNzU6WzIsMTldLDgzOlsyLDE5XSw4ODpbMiwxOV0sOTA6WzIsMTldLDk5OlsyLDE5XSwxMDE6WzIsMTldLDEwMjpbMiwxOV0sMTAzOlsyLDE5XSwxMDc6WzIsMTldLDExNTpbMiwxOV0sMTIzOlsyLDE5XSwxMjU6WzIsMTldLDEyNjpbMiwxOV0sMTI5OlsyLDE5XSwxMzA6WzIsMTldLDEzMTpbMiwxOV0sMTMyOlsyLDE5XSwxMzM6WzIsMTldLDEzNDpbMiwxOV19LHsxOlsyLDIwXSw2OlsyLDIwXSwyNTpbMiwyMF0sMjY6WzIsMjBdLDQ3OlsyLDIwXSw1MjpbMiwyMF0sNTU6WzIsMjBdLDcwOlsyLDIwXSw3NTpbMiwyMF0sODM6WzIsMjBdLDg4OlsyLDIwXSw5MDpbMiwyMF0sOTk6WzIsMjBdLDEwMTpbMiwyMF0sMTAyOlsyLDIwXSwxMDM6WzIsMjBdLDEwNzpbMiwyMF0sMTE1OlsyLDIwXSwxMjM6WzIsMjBdLDEyNTpbMiwyMF0sMTI2OlsyLDIwXSwxMjk6WzIsMjBdLDEzMDpbMiwyMF0sMTMxOlsyLDIwXSwxMzI6WzIsMjBdLDEzMzpbMiwyMF0sMTM0OlsyLDIwXX0sezE6WzIsMjFdLDY6WzIsMjFdLDI1OlsyLDIxXSwyNjpbMiwyMV0sNDc6WzIsMjFdLDUyOlsyLDIxXSw1NTpbMiwyMV0sNzA6WzIsMjFdLDc1OlsyLDIxXSw4MzpbMiwyMV0sODg6WzIsMjFdLDkwOlsyLDIxXSw5OTpbMiwyMV0sMTAxOlsyLDIxXSwxMDI6WzIsMjFdLDEwMzpbMiwyMV0sMTA3OlsyLDIxXSwxMTU6WzIsMjFdLDEyMzpbMiwyMV0sMTI1OlsyLDIxXSwxMjY6WzIsMjFdLDEyOTpbMiwyMV0sMTMwOlsyLDIxXSwxMzE6WzIsMjFdLDEzMjpbMiwyMV0sMTMzOlsyLDIxXSwxMzQ6WzIsMjFdfSx7MTpbMiwyMl0sNjpbMiwyMl0sMjU6WzIsMjJdLDI2OlsyLDIyXSw0NzpbMiwyMl0sNTI6WzIsMjJdLDU1OlsyLDIyXSw3MDpbMiwyMl0sNzU6WzIsMjJdLDgzOlsyLDIyXSw4ODpbMiwyMl0sOTA6WzIsMjJdLDk5OlsyLDIyXSwxMDE6WzIsMjJdLDEwMjpbMiwyMl0sMTAzOlsyLDIyXSwxMDc6WzIsMjJdLDExNTpbMiwyMl0sMTIzOlsyLDIyXSwxMjU6WzIsMjJdLDEyNjpbMiwyMl0sMTI5OlsyLDIyXSwxMzA6WzIsMjJdLDEzMTpbMiwyMl0sMTMyOlsyLDIyXSwxMzM6WzIsMjJdLDEzNDpbMiwyMl19LHsxOlsyLDIzXSw2OlsyLDIzXSwyNTpbMiwyM10sMjY6WzIsMjNdLDQ3OlsyLDIzXSw1MjpbMiwyM10sNTU6WzIsMjNdLDcwOlsyLDIzXSw3NTpbMiwyM10sODM6WzIsMjNdLDg4OlsyLDIzXSw5MDpbMiwyM10sOTk6WzIsMjNdLDEwMTpbMiwyM10sMTAyOlsyLDIzXSwxMDM6WzIsMjNdLDEwNzpbMiwyM10sMTE1OlsyLDIzXSwxMjM6WzIsMjNdLDEyNTpbMiwyM10sMTI2OlsyLDIzXSwxMjk6WzIsMjNdLDEzMDpbMiwyM10sMTMxOlsyLDIzXSwxMzI6WzIsMjNdLDEzMzpbMiwyM10sMTM0OlsyLDIzXX0sezE6WzIsOV0sNjpbMiw5XSwyNjpbMiw5XSw5OTpbMiw5XSwxMDE6WzIsOV0sMTAzOlsyLDldLDEwNzpbMiw5XSwxMjM6WzIsOV19LHsxOlsyLDEwXSw2OlsyLDEwXSwyNjpbMiwxMF0sOTk6WzIsMTBdLDEwMTpbMiwxMF0sMTAzOlsyLDEwXSwxMDc6WzIsMTBdLDEyMzpbMiwxMF19LHsxOlsyLDExXSw2OlsyLDExXSwyNjpbMiwxMV0sOTk6WzIsMTFdLDEwMTpbMiwxMV0sMTAzOlsyLDExXSwxMDc6WzIsMTFdLDEyMzpbMiwxMV19LHsxOlsyLDcxXSw2OlsyLDcxXSwyNTpbMiw3MV0sMjY6WzIsNzFdLDM4OlsxLDEwMV0sNDc6WzIsNzFdLDUyOlsyLDcxXSw1NTpbMiw3MV0sNjQ6WzIsNzFdLDY1OlsyLDcxXSw2NjpbMiw3MV0sNjg6WzIsNzFdLDcwOlsyLDcxXSw3MTpbMiw3MV0sNzU6WzIsNzFdLDgxOlsyLDcxXSw4MjpbMiw3MV0sODM6WzIsNzFdLDg4OlsyLDcxXSw5MDpbMiw3MV0sOTk6WzIsNzFdLDEwMTpbMiw3MV0sMTAyOlsyLDcxXSwxMDM6WzIsNzFdLDEwNzpbMiw3MV0sMTE1OlsyLDcxXSwxMjM6WzIsNzFdLDEyNTpbMiw3MV0sMTI2OlsyLDcxXSwxMjk6WzIsNzFdLDEzMDpbMiw3MV0sMTMxOlsyLDcxXSwxMzI6WzIsNzFdLDEzMzpbMiw3MV0sMTM0OlsyLDcxXX0sezE6WzIsNzJdLDY6WzIsNzJdLDI1OlsyLDcyXSwyNjpbMiw3Ml0sNDc6WzIsNzJdLDUyOlsyLDcyXSw1NTpbMiw3Ml0sNjQ6WzIsNzJdLDY1OlsyLDcyXSw2NjpbMiw3Ml0sNjg6WzIsNzJdLDcwOlsyLDcyXSw3MTpbMiw3Ml0sNzU6WzIsNzJdLDgxOlsyLDcyXSw4MjpbMiw3Ml0sODM6WzIsNzJdLDg4OlsyLDcyXSw5MDpbMiw3Ml0sOTk6WzIsNzJdLDEwMTpbMiw3Ml0sMTAyOlsyLDcyXSwxMDM6WzIsNzJdLDEwNzpbMiw3Ml0sMTE1OlsyLDcyXSwxMjM6WzIsNzJdLDEyNTpbMiw3Ml0sMTI2OlsyLDcyXSwxMjk6WzIsNzJdLDEzMDpbMiw3Ml0sMTMxOlsyLDcyXSwxMzI6WzIsNzJdLDEzMzpbMiw3Ml0sMTM0OlsyLDcyXX0sezE6WzIsNzNdLDY6WzIsNzNdLDI1OlsyLDczXSwyNjpbMiw3M10sNDc6WzIsNzNdLDUyOlsyLDczXSw1NTpbMiw3M10sNjQ6WzIsNzNdLDY1OlsyLDczXSw2NjpbMiw3M10sNjg6WzIsNzNdLDcwOlsyLDczXSw3MTpbMiw3M10sNzU6WzIsNzNdLDgxOlsyLDczXSw4MjpbMiw3M10sODM6WzIsNzNdLDg4OlsyLDczXSw5MDpbMiw3M10sOTk6WzIsNzNdLDEwMTpbMiw3M10sMTAyOlsyLDczXSwxMDM6WzIsNzNdLDEwNzpbMiw3M10sMTE1OlsyLDczXSwxMjM6WzIsNzNdLDEyNTpbMiw3M10sMTI2OlsyLDczXSwxMjk6WzIsNzNdLDEzMDpbMiw3M10sMTMxOlsyLDczXSwxMzI6WzIsNzNdLDEzMzpbMiw3M10sMTM0OlsyLDczXX0sezE6WzIsNzRdLDY6WzIsNzRdLDI1OlsyLDc0XSwyNjpbMiw3NF0sNDc6WzIsNzRdLDUyOlsyLDc0XSw1NTpbMiw3NF0sNjQ6WzIsNzRdLDY1OlsyLDc0XSw2NjpbMiw3NF0sNjg6WzIsNzRdLDcwOlsyLDc0XSw3MTpbMiw3NF0sNzU6WzIsNzRdLDgxOlsyLDc0XSw4MjpbMiw3NF0sODM6WzIsNzRdLDg4OlsyLDc0XSw5MDpbMiw3NF0sOTk6WzIsNzRdLDEwMTpbMiw3NF0sMTAyOlsyLDc0XSwxMDM6WzIsNzRdLDEwNzpbMiw3NF0sMTE1OlsyLDc0XSwxMjM6WzIsNzRdLDEyNTpbMiw3NF0sMTI2OlsyLDc0XSwxMjk6WzIsNzRdLDEzMDpbMiw3NF0sMTMxOlsyLDc0XSwxMzI6WzIsNzRdLDEzMzpbMiw3NF0sMTM0OlsyLDc0XX0sezE6WzIsNzVdLDY6WzIsNzVdLDI1OlsyLDc1XSwyNjpbMiw3NV0sNDc6WzIsNzVdLDUyOlsyLDc1XSw1NTpbMiw3NV0sNjQ6WzIsNzVdLDY1OlsyLDc1XSw2NjpbMiw3NV0sNjg6WzIsNzVdLDcwOlsyLDc1XSw3MTpbMiw3NV0sNzU6WzIsNzVdLDgxOlsyLDc1XSw4MjpbMiw3NV0sODM6WzIsNzVdLDg4OlsyLDc1XSw5MDpbMiw3NV0sOTk6WzIsNzVdLDEwMTpbMiw3NV0sMTAyOlsyLDc1XSwxMDM6WzIsNzVdLDEwNzpbMiw3NV0sMTE1OlsyLDc1XSwxMjM6WzIsNzVdLDEyNTpbMiw3NV0sMTI2OlsyLDc1XSwxMjk6WzIsNzVdLDEzMDpbMiw3NV0sMTMxOlsyLDc1XSwxMzI6WzIsNzVdLDEzMzpbMiw3NV0sMTM0OlsyLDc1XX0sezE6WzIsMTAxXSw2OlsyLDEwMV0sMjU6WzIsMTAxXSwyNjpbMiwxMDFdLDQ3OlsyLDEwMV0sNTI6WzIsMTAxXSw1NTpbMiwxMDFdLDY0OlsyLDEwMV0sNjU6WzIsMTAxXSw2NjpbMiwxMDFdLDY4OlsyLDEwMV0sNzA6WzIsMTAxXSw3MTpbMiwxMDFdLDc1OlsyLDEwMV0sNzk6MTAyLDgxOlsyLDEwMV0sODI6WzEsMTAzXSw4MzpbMiwxMDFdLDg4OlsyLDEwMV0sOTA6WzIsMTAxXSw5OTpbMiwxMDFdLDEwMTpbMiwxMDFdLDEwMjpbMiwxMDFdLDEwMzpbMiwxMDFdLDEwNzpbMiwxMDFdLDExNTpbMiwxMDFdLDEyMzpbMiwxMDFdLDEyNTpbMiwxMDFdLDEyNjpbMiwxMDFdLDEyOTpbMiwxMDFdLDEzMDpbMiwxMDFdLDEzMTpbMiwxMDFdLDEzMjpbMiwxMDFdLDEzMzpbMiwxMDFdLDEzNDpbMiwxMDFdfSx7Mjc6MTA3LDI4OlsxLDcxXSw0MjoxMDgsNDY6MTA0LDQ3OlsyLDUzXSw1MjpbMiw1M10sNTM6MTA1LDU0OjEwNiw1NjoxMDksNTc6MTEwLDczOlsxLDY4XSw4NjpbMSwxMTFdLDg3OlsxLDExMl19LHs1OjExMywyNTpbMSw1XX0sezg6MTE0LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjExNiw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7ODoxMTcsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezEzOjExOSwxNDoxMjAsMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjEyMSw0Mjo2MSw1Njo0Nyw1Nzo0OCw1OToxMTgsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5ODpbMSw1NF19LHsxMzoxMTksMTQ6MTIwLDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoxMjEsNDI6NjEsNTY6NDcsNTc6NDgsNTk6MTIyLDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTg6WzEsNTRdfSx7MTpbMiw2OF0sNjpbMiw2OF0sMjU6WzIsNjhdLDI2OlsyLDY4XSwzODpbMiw2OF0sNDc6WzIsNjhdLDUyOlsyLDY4XSw1NTpbMiw2OF0sNjQ6WzIsNjhdLDY1OlsyLDY4XSw2NjpbMiw2OF0sNjg6WzIsNjhdLDcwOlsyLDY4XSw3MTpbMiw2OF0sNzU6WzIsNjhdLDc3OlsxLDEyNl0sODE6WzIsNjhdLDgyOlsyLDY4XSw4MzpbMiw2OF0sODg6WzIsNjhdLDkwOlsyLDY4XSw5OTpbMiw2OF0sMTAxOlsyLDY4XSwxMDI6WzIsNjhdLDEwMzpbMiw2OF0sMTA3OlsyLDY4XSwxMTU6WzIsNjhdLDEyMzpbMiw2OF0sMTI1OlsyLDY4XSwxMjY6WzIsNjhdLDEyNzpbMSwxMjNdLDEyODpbMSwxMjRdLDEyOTpbMiw2OF0sMTMwOlsyLDY4XSwxMzE6WzIsNjhdLDEzMjpbMiw2OF0sMTMzOlsyLDY4XSwxMzQ6WzIsNjhdLDEzNTpbMSwxMjVdfSx7MTpbMiwxNzVdLDY6WzIsMTc1XSwyNTpbMiwxNzVdLDI2OlsyLDE3NV0sNDc6WzIsMTc1XSw1MjpbMiwxNzVdLDU1OlsyLDE3NV0sNzA6WzIsMTc1XSw3NTpbMiwxNzVdLDgzOlsyLDE3NV0sODg6WzIsMTc1XSw5MDpbMiwxNzVdLDk5OlsyLDE3NV0sMTAxOlsyLDE3NV0sMTAyOlsyLDE3NV0sMTAzOlsyLDE3NV0sMTA3OlsyLDE3NV0sMTE1OlsyLDE3NV0sMTE4OlsxLDEyN10sMTIzOlsyLDE3NV0sMTI1OlsyLDE3NV0sMTI2OlsyLDE3NV0sMTI5OlsyLDE3NV0sMTMwOlsyLDE3NV0sMTMxOlsyLDE3NV0sMTMyOlsyLDE3NV0sMTMzOlsyLDE3NV0sMTM0OlsyLDE3NV19LHs1OjEyOCwyNTpbMSw1XX0sezU6MTI5LDI1OlsxLDVdfSx7MTpbMiwxNDNdLDY6WzIsMTQzXSwyNTpbMiwxNDNdLDI2OlsyLDE0M10sNDc6WzIsMTQzXSw1MjpbMiwxNDNdLDU1OlsyLDE0M10sNzA6WzIsMTQzXSw3NTpbMiwxNDNdLDgzOlsyLDE0M10sODg6WzIsMTQzXSw5MDpbMiwxNDNdLDk5OlsyLDE0M10sMTAxOlsyLDE0M10sMTAyOlsyLDE0M10sMTAzOlsyLDE0M10sMTA3OlsyLDE0M10sMTE1OlsyLDE0M10sMTIzOlsyLDE0M10sMTI1OlsyLDE0M10sMTI2OlsyLDE0M10sMTI5OlsyLDE0M10sMTMwOlsyLDE0M10sMTMxOlsyLDE0M10sMTMyOlsyLDE0M10sMTMzOlsyLDE0M10sMTM0OlsyLDE0M119LHs1OjEzMCwyNTpbMSw1XX0sezg6MTMxLDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjU6WzEsMTMyXSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsOTFdLDU6MTMzLDY6WzIsOTFdLDEzOjExOSwxNDoxMjAsMjU6WzEsNV0sMjY6WzIsOTFdLDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoxMjEsNDI6NjEsNDc6WzIsOTFdLDUyOlsyLDkxXSw1NTpbMiw5MV0sNTY6NDcsNTc6NDgsNTk6MTM1LDYxOjI1LDYyOjI2LDYzOjI3LDcwOlsyLDkxXSw3MzpbMSw2OF0sNzU6WzIsOTFdLDc3OlsxLDEzNF0sODA6WzEsMjhdLDgzOlsyLDkxXSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw4ODpbMiw5MV0sOTA6WzIsOTFdLDk4OlsxLDU0XSw5OTpbMiw5MV0sMTAxOlsyLDkxXSwxMDI6WzIsOTFdLDEwMzpbMiw5MV0sMTA3OlsyLDkxXSwxMTU6WzIsOTFdLDEyMzpbMiw5MV0sMTI1OlsyLDkxXSwxMjY6WzIsOTFdLDEyOTpbMiw5MV0sMTMwOlsyLDkxXSwxMzE6WzIsOTFdLDEzMjpbMiw5MV0sMTMzOlsyLDkxXSwxMzQ6WzIsOTFdfSx7ODoxMzYsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsNDVdLDY6WzIsNDVdLDg6MTM3LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjY6WzIsNDVdLDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDk5OlsyLDQ1XSwxMDA6MzksMTAxOlsyLDQ1XSwxMDM6WzIsNDVdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzIsNDVdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyMzpbMiw0NV0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiw0Nl0sNjpbMiw0Nl0sMjU6WzIsNDZdLDI2OlsyLDQ2XSw1MjpbMiw0Nl0sNzU6WzIsNDZdLDk5OlsyLDQ2XSwxMDE6WzIsNDZdLDEwMzpbMiw0Nl0sMTA3OlsyLDQ2XSwxMjM6WzIsNDZdfSx7MTpbMiw2OV0sNjpbMiw2OV0sMjU6WzIsNjldLDI2OlsyLDY5XSwzODpbMiw2OV0sNDc6WzIsNjldLDUyOlsyLDY5XSw1NTpbMiw2OV0sNjQ6WzIsNjldLDY1OlsyLDY5XSw2NjpbMiw2OV0sNjg6WzIsNjldLDcwOlsyLDY5XSw3MTpbMiw2OV0sNzU6WzIsNjldLDgxOlsyLDY5XSw4MjpbMiw2OV0sODM6WzIsNjldLDg4OlsyLDY5XSw5MDpbMiw2OV0sOTk6WzIsNjldLDEwMTpbMiw2OV0sMTAyOlsyLDY5XSwxMDM6WzIsNjldLDEwNzpbMiw2OV0sMTE1OlsyLDY5XSwxMjM6WzIsNjldLDEyNTpbMiw2OV0sMTI2OlsyLDY5XSwxMjk6WzIsNjldLDEzMDpbMiw2OV0sMTMxOlsyLDY5XSwxMzI6WzIsNjldLDEzMzpbMiw2OV0sMTM0OlsyLDY5XX0sezE6WzIsNzBdLDY6WzIsNzBdLDI1OlsyLDcwXSwyNjpbMiw3MF0sMzg6WzIsNzBdLDQ3OlsyLDcwXSw1MjpbMiw3MF0sNTU6WzIsNzBdLDY0OlsyLDcwXSw2NTpbMiw3MF0sNjY6WzIsNzBdLDY4OlsyLDcwXSw3MDpbMiw3MF0sNzE6WzIsNzBdLDc1OlsyLDcwXSw4MTpbMiw3MF0sODI6WzIsNzBdLDgzOlsyLDcwXSw4ODpbMiw3MF0sOTA6WzIsNzBdLDk5OlsyLDcwXSwxMDE6WzIsNzBdLDEwMjpbMiw3MF0sMTAzOlsyLDcwXSwxMDc6WzIsNzBdLDExNTpbMiw3MF0sMTIzOlsyLDcwXSwxMjU6WzIsNzBdLDEyNjpbMiw3MF0sMTI5OlsyLDcwXSwxMzA6WzIsNzBdLDEzMTpbMiw3MF0sMTMyOlsyLDcwXSwxMzM6WzIsNzBdLDEzNDpbMiw3MF19LHsxOlsyLDI5XSw2OlsyLDI5XSwyNTpbMiwyOV0sMjY6WzIsMjldLDQ3OlsyLDI5XSw1MjpbMiwyOV0sNTU6WzIsMjldLDY0OlsyLDI5XSw2NTpbMiwyOV0sNjY6WzIsMjldLDY4OlsyLDI5XSw3MDpbMiwyOV0sNzE6WzIsMjldLDc1OlsyLDI5XSw4MTpbMiwyOV0sODI6WzIsMjldLDgzOlsyLDI5XSw4ODpbMiwyOV0sOTA6WzIsMjldLDk5OlsyLDI5XSwxMDE6WzIsMjldLDEwMjpbMiwyOV0sMTAzOlsyLDI5XSwxMDc6WzIsMjldLDExNTpbMiwyOV0sMTIzOlsyLDI5XSwxMjU6WzIsMjldLDEyNjpbMiwyOV0sMTI5OlsyLDI5XSwxMzA6WzIsMjldLDEzMTpbMiwyOV0sMTMyOlsyLDI5XSwxMzM6WzIsMjldLDEzNDpbMiwyOV19LHsxOlsyLDMwXSw2OlsyLDMwXSwyNTpbMiwzMF0sMjY6WzIsMzBdLDQ3OlsyLDMwXSw1MjpbMiwzMF0sNTU6WzIsMzBdLDY0OlsyLDMwXSw2NTpbMiwzMF0sNjY6WzIsMzBdLDY4OlsyLDMwXSw3MDpbMiwzMF0sNzE6WzIsMzBdLDc1OlsyLDMwXSw4MTpbMiwzMF0sODI6WzIsMzBdLDgzOlsyLDMwXSw4ODpbMiwzMF0sOTA6WzIsMzBdLDk5OlsyLDMwXSwxMDE6WzIsMzBdLDEwMjpbMiwzMF0sMTAzOlsyLDMwXSwxMDc6WzIsMzBdLDExNTpbMiwzMF0sMTIzOlsyLDMwXSwxMjU6WzIsMzBdLDEyNjpbMiwzMF0sMTI5OlsyLDMwXSwxMzA6WzIsMzBdLDEzMTpbMiwzMF0sMTMyOlsyLDMwXSwxMzM6WzIsMzBdLDEzNDpbMiwzMF19LHsxOlsyLDMxXSw2OlsyLDMxXSwyNTpbMiwzMV0sMjY6WzIsMzFdLDQ3OlsyLDMxXSw1MjpbMiwzMV0sNTU6WzIsMzFdLDY0OlsyLDMxXSw2NTpbMiwzMV0sNjY6WzIsMzFdLDY4OlsyLDMxXSw3MDpbMiwzMV0sNzE6WzIsMzFdLDc1OlsyLDMxXSw4MTpbMiwzMV0sODI6WzIsMzFdLDgzOlsyLDMxXSw4ODpbMiwzMV0sOTA6WzIsMzFdLDk5OlsyLDMxXSwxMDE6WzIsMzFdLDEwMjpbMiwzMV0sMTAzOlsyLDMxXSwxMDc6WzIsMzFdLDExNTpbMiwzMV0sMTIzOlsyLDMxXSwxMjU6WzIsMzFdLDEyNjpbMiwzMV0sMTI5OlsyLDMxXSwxMzA6WzIsMzFdLDEzMTpbMiwzMV0sMTMyOlsyLDMxXSwxMzM6WzIsMzFdLDEzNDpbMiwzMV19LHsxOlsyLDMyXSw2OlsyLDMyXSwyNTpbMiwzMl0sMjY6WzIsMzJdLDQ3OlsyLDMyXSw1MjpbMiwzMl0sNTU6WzIsMzJdLDY0OlsyLDMyXSw2NTpbMiwzMl0sNjY6WzIsMzJdLDY4OlsyLDMyXSw3MDpbMiwzMl0sNzE6WzIsMzJdLDc1OlsyLDMyXSw4MTpbMiwzMl0sODI6WzIsMzJdLDgzOlsyLDMyXSw4ODpbMiwzMl0sOTA6WzIsMzJdLDk5OlsyLDMyXSwxMDE6WzIsMzJdLDEwMjpbMiwzMl0sMTAzOlsyLDMyXSwxMDc6WzIsMzJdLDExNTpbMiwzMl0sMTIzOlsyLDMyXSwxMjU6WzIsMzJdLDEyNjpbMiwzMl0sMTI5OlsyLDMyXSwxMzA6WzIsMzJdLDEzMTpbMiwzMl0sMTMyOlsyLDMyXSwxMzM6WzIsMzJdLDEzNDpbMiwzMl19LHsxOlsyLDMzXSw2OlsyLDMzXSwyNTpbMiwzM10sMjY6WzIsMzNdLDQ3OlsyLDMzXSw1MjpbMiwzM10sNTU6WzIsMzNdLDY0OlsyLDMzXSw2NTpbMiwzM10sNjY6WzIsMzNdLDY4OlsyLDMzXSw3MDpbMiwzM10sNzE6WzIsMzNdLDc1OlsyLDMzXSw4MTpbMiwzM10sODI6WzIsMzNdLDgzOlsyLDMzXSw4ODpbMiwzM10sOTA6WzIsMzNdLDk5OlsyLDMzXSwxMDE6WzIsMzNdLDEwMjpbMiwzM10sMTAzOlsyLDMzXSwxMDc6WzIsMzNdLDExNTpbMiwzM10sMTIzOlsyLDMzXSwxMjU6WzIsMzNdLDEyNjpbMiwzM10sMTI5OlsyLDMzXSwxMzA6WzIsMzNdLDEzMTpbMiwzM10sMTMyOlsyLDMzXSwxMzM6WzIsMzNdLDEzNDpbMiwzM119LHs0OjEzOCw3OjQsODo2LDk6NywxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI1OlsxLDEzOV0sMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjE0MCw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI1OlsxLDE0NF0sMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTg6MTQ1LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg0OjE0Miw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw4ODpbMSwxNDFdLDkxOjE0Myw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsMTA3XSw2OlsyLDEwN10sMjU6WzIsMTA3XSwyNjpbMiwxMDddLDQ3OlsyLDEwN10sNTI6WzIsMTA3XSw1NTpbMiwxMDddLDY0OlsyLDEwN10sNjU6WzIsMTA3XSw2NjpbMiwxMDddLDY4OlsyLDEwN10sNzA6WzIsMTA3XSw3MTpbMiwxMDddLDc1OlsyLDEwN10sODE6WzIsMTA3XSw4MjpbMiwxMDddLDgzOlsyLDEwN10sODg6WzIsMTA3XSw5MDpbMiwxMDddLDk5OlsyLDEwN10sMTAxOlsyLDEwN10sMTAyOlsyLDEwN10sMTAzOlsyLDEwN10sMTA3OlsyLDEwN10sMTE1OlsyLDEwN10sMTIzOlsyLDEwN10sMTI1OlsyLDEwN10sMTI2OlsyLDEwN10sMTI5OlsyLDEwN10sMTMwOlsyLDEwN10sMTMxOlsyLDEwN10sMTMyOlsyLDEwN10sMTMzOlsyLDEwN10sMTM0OlsyLDEwN119LHsxOlsyLDEwOF0sNjpbMiwxMDhdLDI1OlsyLDEwOF0sMjY6WzIsMTA4XSwyNzoxNDYsMjg6WzEsNzFdLDQ3OlsyLDEwOF0sNTI6WzIsMTA4XSw1NTpbMiwxMDhdLDY0OlsyLDEwOF0sNjU6WzIsMTA4XSw2NjpbMiwxMDhdLDY4OlsyLDEwOF0sNzA6WzIsMTA4XSw3MTpbMiwxMDhdLDc1OlsyLDEwOF0sODE6WzIsMTA4XSw4MjpbMiwxMDhdLDgzOlsyLDEwOF0sODg6WzIsMTA4XSw5MDpbMiwxMDhdLDk5OlsyLDEwOF0sMTAxOlsyLDEwOF0sMTAyOlsyLDEwOF0sMTAzOlsyLDEwOF0sMTA3OlsyLDEwOF0sMTE1OlsyLDEwOF0sMTIzOlsyLDEwOF0sMTI1OlsyLDEwOF0sMTI2OlsyLDEwOF0sMTI5OlsyLDEwOF0sMTMwOlsyLDEwOF0sMTMxOlsyLDEwOF0sMTMyOlsyLDEwOF0sMTMzOlsyLDEwOF0sMTM0OlsyLDEwOF19LHsyNTpbMiw0OV19LHsyNTpbMiw1MF19LHsxOlsyLDY0XSw2OlsyLDY0XSwyNTpbMiw2NF0sMjY6WzIsNjRdLDM4OlsyLDY0XSw0NzpbMiw2NF0sNTI6WzIsNjRdLDU1OlsyLDY0XSw2NDpbMiw2NF0sNjU6WzIsNjRdLDY2OlsyLDY0XSw2ODpbMiw2NF0sNzA6WzIsNjRdLDcxOlsyLDY0XSw3NTpbMiw2NF0sNzc6WzIsNjRdLDgxOlsyLDY0XSw4MjpbMiw2NF0sODM6WzIsNjRdLDg4OlsyLDY0XSw5MDpbMiw2NF0sOTk6WzIsNjRdLDEwMTpbMiw2NF0sMTAyOlsyLDY0XSwxMDM6WzIsNjRdLDEwNzpbMiw2NF0sMTE1OlsyLDY0XSwxMjM6WzIsNjRdLDEyNTpbMiw2NF0sMTI2OlsyLDY0XSwxMjc6WzIsNjRdLDEyODpbMiw2NF0sMTI5OlsyLDY0XSwxMzA6WzIsNjRdLDEzMTpbMiw2NF0sMTMyOlsyLDY0XSwxMzM6WzIsNjRdLDEzNDpbMiw2NF0sMTM1OlsyLDY0XX0sezE6WzIsNjddLDY6WzIsNjddLDI1OlsyLDY3XSwyNjpbMiw2N10sMzg6WzIsNjddLDQ3OlsyLDY3XSw1MjpbMiw2N10sNTU6WzIsNjddLDY0OlsyLDY3XSw2NTpbMiw2N10sNjY6WzIsNjddLDY4OlsyLDY3XSw3MDpbMiw2N10sNzE6WzIsNjddLDc1OlsyLDY3XSw3NzpbMiw2N10sODE6WzIsNjddLDgyOlsyLDY3XSw4MzpbMiw2N10sODg6WzIsNjddLDkwOlsyLDY3XSw5OTpbMiw2N10sMTAxOlsyLDY3XSwxMDI6WzIsNjddLDEwMzpbMiw2N10sMTA3OlsyLDY3XSwxMTU6WzIsNjddLDEyMzpbMiw2N10sMTI1OlsyLDY3XSwxMjY6WzIsNjddLDEyNzpbMiw2N10sMTI4OlsyLDY3XSwxMjk6WzIsNjddLDEzMDpbMiw2N10sMTMxOlsyLDY3XSwxMzI6WzIsNjddLDEzMzpbMiw2N10sMTM0OlsyLDY3XSwxMzU6WzIsNjddfSx7ODoxNDcsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezg6MTQ4LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjE0OSw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7NToxNTAsODoxNTEsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNTpbMSw1XSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezI3OjE1NiwyODpbMSw3MV0sNTY6MTU3LDU3OjE1OCw2MjoxNTIsNzM6WzEsNjhdLDg3OlsxLDU1XSwxMTA6MTUzLDExMTpbMSwxNTRdLDExMjoxNTV9LHsxMDk6MTU5LDExMzpbMSwxNjBdLDExNDpbMSwxNjFdfSx7NjpbMiw4Nl0sMTE6MTY1LDI1OlsyLDg2XSwyNzoxNjYsMjg6WzEsNzFdLDI5OjE2NywzMDpbMSw2OV0sMzE6WzEsNzBdLDM5OjE2Myw0MDoxNjQsNDI6MTY4LDQ0OlsxLDQ2XSw1MjpbMiw4Nl0sNzQ6MTYyLDc1OlsyLDg2XSw4NjpbMSwxMTFdfSx7MTpbMiwyN10sNjpbMiwyN10sMjU6WzIsMjddLDI2OlsyLDI3XSw0MTpbMiwyN10sNDc6WzIsMjddLDUyOlsyLDI3XSw1NTpbMiwyN10sNjQ6WzIsMjddLDY1OlsyLDI3XSw2NjpbMiwyN10sNjg6WzIsMjddLDcwOlsyLDI3XSw3MTpbMiwyN10sNzU6WzIsMjddLDgxOlsyLDI3XSw4MjpbMiwyN10sODM6WzIsMjddLDg4OlsyLDI3XSw5MDpbMiwyN10sOTk6WzIsMjddLDEwMTpbMiwyN10sMTAyOlsyLDI3XSwxMDM6WzIsMjddLDEwNzpbMiwyN10sMTE1OlsyLDI3XSwxMjM6WzIsMjddLDEyNTpbMiwyN10sMTI2OlsyLDI3XSwxMjk6WzIsMjddLDEzMDpbMiwyN10sMTMxOlsyLDI3XSwxMzI6WzIsMjddLDEzMzpbMiwyN10sMTM0OlsyLDI3XX0sezE6WzIsMjhdLDY6WzIsMjhdLDI1OlsyLDI4XSwyNjpbMiwyOF0sNDE6WzIsMjhdLDQ3OlsyLDI4XSw1MjpbMiwyOF0sNTU6WzIsMjhdLDY0OlsyLDI4XSw2NTpbMiwyOF0sNjY6WzIsMjhdLDY4OlsyLDI4XSw3MDpbMiwyOF0sNzE6WzIsMjhdLDc1OlsyLDI4XSw4MTpbMiwyOF0sODI6WzIsMjhdLDgzOlsyLDI4XSw4ODpbMiwyOF0sOTA6WzIsMjhdLDk5OlsyLDI4XSwxMDE6WzIsMjhdLDEwMjpbMiwyOF0sMTAzOlsyLDI4XSwxMDc6WzIsMjhdLDExNTpbMiwyOF0sMTIzOlsyLDI4XSwxMjU6WzIsMjhdLDEyNjpbMiwyOF0sMTI5OlsyLDI4XSwxMzA6WzIsMjhdLDEzMTpbMiwyOF0sMTMyOlsyLDI4XSwxMzM6WzIsMjhdLDEzNDpbMiwyOF19LHsxOlsyLDI2XSw2OlsyLDI2XSwyNTpbMiwyNl0sMjY6WzIsMjZdLDM4OlsyLDI2XSw0MTpbMiwyNl0sNDc6WzIsMjZdLDUyOlsyLDI2XSw1NTpbMiwyNl0sNjQ6WzIsMjZdLDY1OlsyLDI2XSw2NjpbMiwyNl0sNjg6WzIsMjZdLDcwOlsyLDI2XSw3MTpbMiwyNl0sNzU6WzIsMjZdLDc3OlsyLDI2XSw4MTpbMiwyNl0sODI6WzIsMjZdLDgzOlsyLDI2XSw4ODpbMiwyNl0sOTA6WzIsMjZdLDk5OlsyLDI2XSwxMDE6WzIsMjZdLDEwMjpbMiwyNl0sMTAzOlsyLDI2XSwxMDc6WzIsMjZdLDExMzpbMiwyNl0sMTE0OlsyLDI2XSwxMTU6WzIsMjZdLDEyMzpbMiwyNl0sMTI1OlsyLDI2XSwxMjY6WzIsMjZdLDEyNzpbMiwyNl0sMTI4OlsyLDI2XSwxMjk6WzIsMjZdLDEzMDpbMiwyNl0sMTMxOlsyLDI2XSwxMzI6WzIsMjZdLDEzMzpbMiwyNl0sMTM0OlsyLDI2XSwxMzU6WzIsMjZdfSx7MTpbMiw2XSw2OlsyLDZdLDc6MTY5LDg6Niw5OjcsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNjpbMiw2XSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSw5OTpbMiw2XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsM119LHsxOlsyLDI0XSw2OlsyLDI0XSwyNTpbMiwyNF0sMjY6WzIsMjRdLDQ3OlsyLDI0XSw1MjpbMiwyNF0sNTU6WzIsMjRdLDcwOlsyLDI0XSw3NTpbMiwyNF0sODM6WzIsMjRdLDg4OlsyLDI0XSw5MDpbMiwyNF0sOTU6WzIsMjRdLDk2OlsyLDI0XSw5OTpbMiwyNF0sMTAxOlsyLDI0XSwxMDI6WzIsMjRdLDEwMzpbMiwyNF0sMTA3OlsyLDI0XSwxMTU6WzIsMjRdLDExODpbMiwyNF0sMTIwOlsyLDI0XSwxMjM6WzIsMjRdLDEyNTpbMiwyNF0sMTI2OlsyLDI0XSwxMjk6WzIsMjRdLDEzMDpbMiwyNF0sMTMxOlsyLDI0XSwxMzI6WzIsMjRdLDEzMzpbMiwyNF0sMTM0OlsyLDI0XX0sezY6WzEsNzJdLDI2OlsxLDE3MF19LHsxOlsyLDE4Nl0sNjpbMiwxODZdLDI1OlsyLDE4Nl0sMjY6WzIsMTg2XSw0NzpbMiwxODZdLDUyOlsyLDE4Nl0sNTU6WzIsMTg2XSw3MDpbMiwxODZdLDc1OlsyLDE4Nl0sODM6WzIsMTg2XSw4ODpbMiwxODZdLDkwOlsyLDE4Nl0sOTk6WzIsMTg2XSwxMDE6WzIsMTg2XSwxMDI6WzIsMTg2XSwxMDM6WzIsMTg2XSwxMDc6WzIsMTg2XSwxMTU6WzIsMTg2XSwxMjM6WzIsMTg2XSwxMjU6WzIsMTg2XSwxMjY6WzIsMTg2XSwxMjk6WzIsMTg2XSwxMzA6WzIsMTg2XSwxMzE6WzIsMTg2XSwxMzI6WzIsMTg2XSwxMzM6WzIsMTg2XSwxMzQ6WzIsMTg2XX0sezg6MTcxLDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjE3Miw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7ODoxNzMsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezg6MTc0LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjE3NSw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7ODoxNzYsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezg6MTc3LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjE3OCw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiwxNDJdLDY6WzIsMTQyXSwyNTpbMiwxNDJdLDI2OlsyLDE0Ml0sNDc6WzIsMTQyXSw1MjpbMiwxNDJdLDU1OlsyLDE0Ml0sNzA6WzIsMTQyXSw3NTpbMiwxNDJdLDgzOlsyLDE0Ml0sODg6WzIsMTQyXSw5MDpbMiwxNDJdLDk5OlsyLDE0Ml0sMTAxOlsyLDE0Ml0sMTAyOlsyLDE0Ml0sMTAzOlsyLDE0Ml0sMTA3OlsyLDE0Ml0sMTE1OlsyLDE0Ml0sMTIzOlsyLDE0Ml0sMTI1OlsyLDE0Ml0sMTI2OlsyLDE0Ml0sMTI5OlsyLDE0Ml0sMTMwOlsyLDE0Ml0sMTMxOlsyLDE0Ml0sMTMyOlsyLDE0Ml0sMTMzOlsyLDE0Ml0sMTM0OlsyLDE0Ml19LHsxOlsyLDE0N10sNjpbMiwxNDddLDI1OlsyLDE0N10sMjY6WzIsMTQ3XSw0NzpbMiwxNDddLDUyOlsyLDE0N10sNTU6WzIsMTQ3XSw3MDpbMiwxNDddLDc1OlsyLDE0N10sODM6WzIsMTQ3XSw4ODpbMiwxNDddLDkwOlsyLDE0N10sOTk6WzIsMTQ3XSwxMDE6WzIsMTQ3XSwxMDI6WzIsMTQ3XSwxMDM6WzIsMTQ3XSwxMDc6WzIsMTQ3XSwxMTU6WzIsMTQ3XSwxMjM6WzIsMTQ3XSwxMjU6WzIsMTQ3XSwxMjY6WzIsMTQ3XSwxMjk6WzIsMTQ3XSwxMzA6WzIsMTQ3XSwxMzE6WzIsMTQ3XSwxMzI6WzIsMTQ3XSwxMzM6WzIsMTQ3XSwxMzQ6WzIsMTQ3XX0sezg6MTc5LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHsxOlsyLDE0MV0sNjpbMiwxNDFdLDI1OlsyLDE0MV0sMjY6WzIsMTQxXSw0NzpbMiwxNDFdLDUyOlsyLDE0MV0sNTU6WzIsMTQxXSw3MDpbMiwxNDFdLDc1OlsyLDE0MV0sODM6WzIsMTQxXSw4ODpbMiwxNDFdLDkwOlsyLDE0MV0sOTk6WzIsMTQxXSwxMDE6WzIsMTQxXSwxMDI6WzIsMTQxXSwxMDM6WzIsMTQxXSwxMDc6WzIsMTQxXSwxMTU6WzIsMTQxXSwxMjM6WzIsMTQxXSwxMjU6WzIsMTQxXSwxMjY6WzIsMTQxXSwxMjk6WzIsMTQxXSwxMzA6WzIsMTQxXSwxMzE6WzIsMTQxXSwxMzI6WzIsMTQxXSwxMzM6WzIsMTQxXSwxMzQ6WzIsMTQxXX0sezE6WzIsMTQ2XSw2OlsyLDE0Nl0sMjU6WzIsMTQ2XSwyNjpbMiwxNDZdLDQ3OlsyLDE0Nl0sNTI6WzIsMTQ2XSw1NTpbMiwxNDZdLDcwOlsyLDE0Nl0sNzU6WzIsMTQ2XSw4MzpbMiwxNDZdLDg4OlsyLDE0Nl0sOTA6WzIsMTQ2XSw5OTpbMiwxNDZdLDEwMTpbMiwxNDZdLDEwMjpbMiwxNDZdLDEwMzpbMiwxNDZdLDEwNzpbMiwxNDZdLDExNTpbMiwxNDZdLDEyMzpbMiwxNDZdLDEyNTpbMiwxNDZdLDEyNjpbMiwxNDZdLDEyOTpbMiwxNDZdLDEzMDpbMiwxNDZdLDEzMTpbMiwxNDZdLDEzMjpbMiwxNDZdLDEzMzpbMiwxNDZdLDEzNDpbMiwxNDZdfSx7Nzk6MTgwLDgyOlsxLDEwM119LHsxOlsyLDY1XSw2OlsyLDY1XSwyNTpbMiw2NV0sMjY6WzIsNjVdLDM4OlsyLDY1XSw0NzpbMiw2NV0sNTI6WzIsNjVdLDU1OlsyLDY1XSw2NDpbMiw2NV0sNjU6WzIsNjVdLDY2OlsyLDY1XSw2ODpbMiw2NV0sNzA6WzIsNjVdLDcxOlsyLDY1XSw3NTpbMiw2NV0sNzc6WzIsNjVdLDgxOlsyLDY1XSw4MjpbMiw2NV0sODM6WzIsNjVdLDg4OlsyLDY1XSw5MDpbMiw2NV0sOTk6WzIsNjVdLDEwMTpbMiw2NV0sMTAyOlsyLDY1XSwxMDM6WzIsNjVdLDEwNzpbMiw2NV0sMTE1OlsyLDY1XSwxMjM6WzIsNjVdLDEyNTpbMiw2NV0sMTI2OlsyLDY1XSwxMjc6WzIsNjVdLDEyODpbMiw2NV0sMTI5OlsyLDY1XSwxMzA6WzIsNjVdLDEzMTpbMiw2NV0sMTMyOlsyLDY1XSwxMzM6WzIsNjVdLDEzNDpbMiw2NV0sMTM1OlsyLDY1XX0sezgyOlsyLDEwNF19LHsyNzoxODEsMjg6WzEsNzFdfSx7Mjc6MTgyLDI4OlsxLDcxXX0sezE6WzIsNzldLDY6WzIsNzldLDI1OlsyLDc5XSwyNjpbMiw3OV0sMjc6MTgzLDI4OlsxLDcxXSwzODpbMiw3OV0sNDc6WzIsNzldLDUyOlsyLDc5XSw1NTpbMiw3OV0sNjQ6WzIsNzldLDY1OlsyLDc5XSw2NjpbMiw3OV0sNjg6WzIsNzldLDcwOlsyLDc5XSw3MTpbMiw3OV0sNzU6WzIsNzldLDc3OlsyLDc5XSw4MTpbMiw3OV0sODI6WzIsNzldLDgzOlsyLDc5XSw4ODpbMiw3OV0sOTA6WzIsNzldLDk5OlsyLDc5XSwxMDE6WzIsNzldLDEwMjpbMiw3OV0sMTAzOlsyLDc5XSwxMDc6WzIsNzldLDExNTpbMiw3OV0sMTIzOlsyLDc5XSwxMjU6WzIsNzldLDEyNjpbMiw3OV0sMTI3OlsyLDc5XSwxMjg6WzIsNzldLDEyOTpbMiw3OV0sMTMwOlsyLDc5XSwxMzE6WzIsNzldLDEzMjpbMiw3OV0sMTMzOlsyLDc5XSwxMzQ6WzIsNzldLDEzNTpbMiw3OV19LHsxOlsyLDgwXSw2OlsyLDgwXSwyNTpbMiw4MF0sMjY6WzIsODBdLDM4OlsyLDgwXSw0NzpbMiw4MF0sNTI6WzIsODBdLDU1OlsyLDgwXSw2NDpbMiw4MF0sNjU6WzIsODBdLDY2OlsyLDgwXSw2ODpbMiw4MF0sNzA6WzIsODBdLDcxOlsyLDgwXSw3NTpbMiw4MF0sNzc6WzIsODBdLDgxOlsyLDgwXSw4MjpbMiw4MF0sODM6WzIsODBdLDg4OlsyLDgwXSw5MDpbMiw4MF0sOTk6WzIsODBdLDEwMTpbMiw4MF0sMTAyOlsyLDgwXSwxMDM6WzIsODBdLDEwNzpbMiw4MF0sMTE1OlsyLDgwXSwxMjM6WzIsODBdLDEyNTpbMiw4MF0sMTI2OlsyLDgwXSwxMjc6WzIsODBdLDEyODpbMiw4MF0sMTI5OlsyLDgwXSwxMzA6WzIsODBdLDEzMTpbMiw4MF0sMTMyOlsyLDgwXSwxMzM6WzIsODBdLDEzNDpbMiw4MF0sMTM1OlsyLDgwXX0sezg6MTg1LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTU6WzEsMTg5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw2OToxODQsNzI6MTg2LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDg5OjE4Nyw5MDpbMSwxODhdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7Njc6MTkwLDY4OlsxLDk3XSw3MTpbMSw5OF19LHs3OToxOTEsODI6WzEsMTAzXX0sezE6WzIsNjZdLDY6WzIsNjZdLDI1OlsyLDY2XSwyNjpbMiw2Nl0sMzg6WzIsNjZdLDQ3OlsyLDY2XSw1MjpbMiw2Nl0sNTU6WzIsNjZdLDY0OlsyLDY2XSw2NTpbMiw2Nl0sNjY6WzIsNjZdLDY4OlsyLDY2XSw3MDpbMiw2Nl0sNzE6WzIsNjZdLDc1OlsyLDY2XSw3NzpbMiw2Nl0sODE6WzIsNjZdLDgyOlsyLDY2XSw4MzpbMiw2Nl0sODg6WzIsNjZdLDkwOlsyLDY2XSw5OTpbMiw2Nl0sMTAxOlsyLDY2XSwxMDI6WzIsNjZdLDEwMzpbMiw2Nl0sMTA3OlsyLDY2XSwxMTU6WzIsNjZdLDEyMzpbMiw2Nl0sMTI1OlsyLDY2XSwxMjY6WzIsNjZdLDEyNzpbMiw2Nl0sMTI4OlsyLDY2XSwxMjk6WzIsNjZdLDEzMDpbMiw2Nl0sMTMxOlsyLDY2XSwxMzI6WzIsNjZdLDEzMzpbMiw2Nl0sMTM0OlsyLDY2XSwxMzU6WzIsNjZdfSx7NjpbMSwxOTNdLDg6MTkyLDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjU6WzEsMTk0XSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsMTAyXSw2OlsyLDEwMl0sMjU6WzIsMTAyXSwyNjpbMiwxMDJdLDQ3OlsyLDEwMl0sNTI6WzIsMTAyXSw1NTpbMiwxMDJdLDY0OlsyLDEwMl0sNjU6WzIsMTAyXSw2NjpbMiwxMDJdLDY4OlsyLDEwMl0sNzA6WzIsMTAyXSw3MTpbMiwxMDJdLDc1OlsyLDEwMl0sODE6WzIsMTAyXSw4MjpbMiwxMDJdLDgzOlsyLDEwMl0sODg6WzIsMTAyXSw5MDpbMiwxMDJdLDk5OlsyLDEwMl0sMTAxOlsyLDEwMl0sMTAyOlsyLDEwMl0sMTAzOlsyLDEwMl0sMTA3OlsyLDEwMl0sMTE1OlsyLDEwMl0sMTIzOlsyLDEwMl0sMTI1OlsyLDEwMl0sMTI2OlsyLDEwMl0sMTI5OlsyLDEwMl0sMTMwOlsyLDEwMl0sMTMxOlsyLDEwMl0sMTMyOlsyLDEwMl0sMTMzOlsyLDEwMl0sMTM0OlsyLDEwMl19LHs4OjE5Nyw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI1OlsxLDE0NF0sMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTg6MTQ1LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDgzOlsxLDE5NV0sODQ6MTk2LDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkxOjE0Myw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezQ3OlsxLDE5OF0sNTI6WzEsMTk5XX0sezQ3OlsyLDU0XSw1MjpbMiw1NF19LHszODpbMSwyMDFdLDQ3OlsyLDU2XSw1MjpbMiw1Nl0sNTU6WzEsMjAwXX0sezM4OlsyLDU5XSw0NzpbMiw1OV0sNTI6WzIsNTldLDU1OlsyLDU5XX0sezM4OlsyLDYwXSw0NzpbMiw2MF0sNTI6WzIsNjBdLDU1OlsyLDYwXX0sezM4OlsyLDYxXSw0NzpbMiw2MV0sNTI6WzIsNjFdLDU1OlsyLDYxXX0sezM4OlsyLDYyXSw0NzpbMiw2Ml0sNTI6WzIsNjJdLDU1OlsyLDYyXX0sezI3OjE0NiwyODpbMSw3MV19LHs4OjE5Nyw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI1OlsxLDE0NF0sMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTg6MTQ1LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg0OjE0Miw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw4ODpbMSwxNDFdLDkxOjE0Myw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsNDhdLDY6WzIsNDhdLDI1OlsyLDQ4XSwyNjpbMiw0OF0sNDc6WzIsNDhdLDUyOlsyLDQ4XSw1NTpbMiw0OF0sNzA6WzIsNDhdLDc1OlsyLDQ4XSw4MzpbMiw0OF0sODg6WzIsNDhdLDkwOlsyLDQ4XSw5OTpbMiw0OF0sMTAxOlsyLDQ4XSwxMDI6WzIsNDhdLDEwMzpbMiw0OF0sMTA3OlsyLDQ4XSwxMTU6WzIsNDhdLDEyMzpbMiw0OF0sMTI1OlsyLDQ4XSwxMjY6WzIsNDhdLDEyOTpbMiw0OF0sMTMwOlsyLDQ4XSwxMzE6WzIsNDhdLDEzMjpbMiw0OF0sMTMzOlsyLDQ4XSwxMzQ6WzIsNDhdfSx7MTpbMiwxNzldLDY6WzIsMTc5XSwyNTpbMiwxNzldLDI2OlsyLDE3OV0sNDc6WzIsMTc5XSw1MjpbMiwxNzldLDU1OlsyLDE3OV0sNzA6WzIsMTc5XSw3NTpbMiwxNzldLDgzOlsyLDE3OV0sODg6WzIsMTc5XSw5MDpbMiwxNzldLDk5OlsyLDE3OV0sMTAwOjg1LDEwMTpbMiwxNzldLDEwMjpbMiwxNzldLDEwMzpbMiwxNzldLDEwNjo4NiwxMDc6WzIsMTc5XSwxMDg6NjcsMTE1OlsyLDE3OV0sMTIzOlsyLDE3OV0sMTI1OlsyLDE3OV0sMTI2OlsyLDE3OV0sMTI5OlsxLDc2XSwxMzA6WzIsMTc5XSwxMzE6WzIsMTc5XSwxMzI6WzIsMTc5XSwxMzM6WzIsMTc5XSwxMzQ6WzIsMTc5XX0sezEwMDo4OCwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA2Ojg5LDEwNzpbMSw2Nl0sMTA4OjY3LDEyMzpbMSw4N119LHsxOlsyLDE4MF0sNjpbMiwxODBdLDI1OlsyLDE4MF0sMjY6WzIsMTgwXSw0NzpbMiwxODBdLDUyOlsyLDE4MF0sNTU6WzIsMTgwXSw3MDpbMiwxODBdLDc1OlsyLDE4MF0sODM6WzIsMTgwXSw4ODpbMiwxODBdLDkwOlsyLDE4MF0sOTk6WzIsMTgwXSwxMDA6ODUsMTAxOlsyLDE4MF0sMTAyOlsyLDE4MF0sMTAzOlsyLDE4MF0sMTA2Ojg2LDEwNzpbMiwxODBdLDEwODo2NywxMTU6WzIsMTgwXSwxMjM6WzIsMTgwXSwxMjU6WzIsMTgwXSwxMjY6WzIsMTgwXSwxMjk6WzEsNzZdLDEzMDpbMiwxODBdLDEzMTpbMiwxODBdLDEzMjpbMiwxODBdLDEzMzpbMiwxODBdLDEzNDpbMiwxODBdfSx7MTpbMiwxODFdLDY6WzIsMTgxXSwyNTpbMiwxODFdLDI2OlsyLDE4MV0sNDc6WzIsMTgxXSw1MjpbMiwxODFdLDU1OlsyLDE4MV0sNzA6WzIsMTgxXSw3NTpbMiwxODFdLDgzOlsyLDE4MV0sODg6WzIsMTgxXSw5MDpbMiwxODFdLDk5OlsyLDE4MV0sMTAwOjg1LDEwMTpbMiwxODFdLDEwMjpbMiwxODFdLDEwMzpbMiwxODFdLDEwNjo4NiwxMDc6WzIsMTgxXSwxMDg6NjcsMTE1OlsyLDE4MV0sMTIzOlsyLDE4MV0sMTI1OlsyLDE4MV0sMTI2OlsyLDE4MV0sMTI5OlsxLDc2XSwxMzA6WzIsMTgxXSwxMzE6WzIsMTgxXSwxMzI6WzIsMTgxXSwxMzM6WzIsMTgxXSwxMzQ6WzIsMTgxXX0sezE6WzIsMTgyXSw2OlsyLDE4Ml0sMjU6WzIsMTgyXSwyNjpbMiwxODJdLDQ3OlsyLDE4Ml0sNTI6WzIsMTgyXSw1NTpbMiwxODJdLDY0OlsyLDY4XSw2NTpbMiw2OF0sNjY6WzIsNjhdLDY4OlsyLDY4XSw3MDpbMiwxODJdLDcxOlsyLDY4XSw3NTpbMiwxODJdLDgxOlsyLDY4XSw4MjpbMiw2OF0sODM6WzIsMTgyXSw4ODpbMiwxODJdLDkwOlsyLDE4Ml0sOTk6WzIsMTgyXSwxMDE6WzIsMTgyXSwxMDI6WzIsMTgyXSwxMDM6WzIsMTgyXSwxMDc6WzIsMTgyXSwxMTU6WzIsMTgyXSwxMjM6WzIsMTgyXSwxMjU6WzIsMTgyXSwxMjY6WzIsMTgyXSwxMjk6WzIsMTgyXSwxMzA6WzIsMTgyXSwxMzE6WzIsMTgyXSwxMzI6WzIsMTgyXSwxMzM6WzIsMTgyXSwxMzQ6WzIsMTgyXX0sezYwOjkxLDY0OlsxLDkzXSw2NTpbMSw5NF0sNjY6WzEsOTVdLDY3Ojk2LDY4OlsxLDk3XSw3MTpbMSw5OF0sNzg6OTAsODE6WzEsOTJdLDgyOlsyLDEwM119LHs2MDoxMDAsNjQ6WzEsOTNdLDY1OlsxLDk0XSw2NjpbMSw5NV0sNjc6OTYsNjg6WzEsOTddLDcxOlsxLDk4XSw3ODo5OSw4MTpbMSw5Ml0sODI6WzIsMTAzXX0sezY0OlsyLDcxXSw2NTpbMiw3MV0sNjY6WzIsNzFdLDY4OlsyLDcxXSw3MTpbMiw3MV0sODE6WzIsNzFdLDgyOlsyLDcxXX0sezE6WzIsMTgzXSw2OlsyLDE4M10sMjU6WzIsMTgzXSwyNjpbMiwxODNdLDQ3OlsyLDE4M10sNTI6WzIsMTgzXSw1NTpbMiwxODNdLDY0OlsyLDY4XSw2NTpbMiw2OF0sNjY6WzIsNjhdLDY4OlsyLDY4XSw3MDpbMiwxODNdLDcxOlsyLDY4XSw3NTpbMiwxODNdLDgxOlsyLDY4XSw4MjpbMiw2OF0sODM6WzIsMTgzXSw4ODpbMiwxODNdLDkwOlsyLDE4M10sOTk6WzIsMTgzXSwxMDE6WzIsMTgzXSwxMDI6WzIsMTgzXSwxMDM6WzIsMTgzXSwxMDc6WzIsMTgzXSwxMTU6WzIsMTgzXSwxMjM6WzIsMTgzXSwxMjU6WzIsMTgzXSwxMjY6WzIsMTgzXSwxMjk6WzIsMTgzXSwxMzA6WzIsMTgzXSwxMzE6WzIsMTgzXSwxMzI6WzIsMTgzXSwxMzM6WzIsMTgzXSwxMzQ6WzIsMTgzXX0sezE6WzIsMTg0XSw2OlsyLDE4NF0sMjU6WzIsMTg0XSwyNjpbMiwxODRdLDQ3OlsyLDE4NF0sNTI6WzIsMTg0XSw1NTpbMiwxODRdLDcwOlsyLDE4NF0sNzU6WzIsMTg0XSw4MzpbMiwxODRdLDg4OlsyLDE4NF0sOTA6WzIsMTg0XSw5OTpbMiwxODRdLDEwMTpbMiwxODRdLDEwMjpbMiwxODRdLDEwMzpbMiwxODRdLDEwNzpbMiwxODRdLDExNTpbMiwxODRdLDEyMzpbMiwxODRdLDEyNTpbMiwxODRdLDEyNjpbMiwxODRdLDEyOTpbMiwxODRdLDEzMDpbMiwxODRdLDEzMTpbMiwxODRdLDEzMjpbMiwxODRdLDEzMzpbMiwxODRdLDEzNDpbMiwxODRdfSx7MTpbMiwxODVdLDY6WzIsMTg1XSwyNTpbMiwxODVdLDI2OlsyLDE4NV0sNDc6WzIsMTg1XSw1MjpbMiwxODVdLDU1OlsyLDE4NV0sNzA6WzIsMTg1XSw3NTpbMiwxODVdLDgzOlsyLDE4NV0sODg6WzIsMTg1XSw5MDpbMiwxODVdLDk5OlsyLDE4NV0sMTAxOlsyLDE4NV0sMTAyOlsyLDE4NV0sMTAzOlsyLDE4NV0sMTA3OlsyLDE4NV0sMTE1OlsyLDE4NV0sMTIzOlsyLDE4NV0sMTI1OlsyLDE4NV0sMTI2OlsyLDE4NV0sMTI5OlsyLDE4NV0sMTMwOlsyLDE4NV0sMTMxOlsyLDE4NV0sMTMyOlsyLDE4NV0sMTMzOlsyLDE4NV0sMTM0OlsyLDE4NV19LHs4OjIwMiw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI1OlsxLDIwM10sMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjIwNCw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7NToyMDUsMjU6WzEsNV0sMTIyOlsxLDIwNl19LHsxOlsyLDEyOF0sNjpbMiwxMjhdLDI1OlsyLDEyOF0sMjY6WzIsMTI4XSw0NzpbMiwxMjhdLDUyOlsyLDEyOF0sNTU6WzIsMTI4XSw3MDpbMiwxMjhdLDc1OlsyLDEyOF0sODM6WzIsMTI4XSw4ODpbMiwxMjhdLDkwOlsyLDEyOF0sOTQ6MjA3LDk1OlsxLDIwOF0sOTY6WzEsMjA5XSw5OTpbMiwxMjhdLDEwMTpbMiwxMjhdLDEwMjpbMiwxMjhdLDEwMzpbMiwxMjhdLDEwNzpbMiwxMjhdLDExNTpbMiwxMjhdLDEyMzpbMiwxMjhdLDEyNTpbMiwxMjhdLDEyNjpbMiwxMjhdLDEyOTpbMiwxMjhdLDEzMDpbMiwxMjhdLDEzMTpbMiwxMjhdLDEzMjpbMiwxMjhdLDEzMzpbMiwxMjhdLDEzNDpbMiwxMjhdfSx7MTpbMiwxNDBdLDY6WzIsMTQwXSwyNTpbMiwxNDBdLDI2OlsyLDE0MF0sNDc6WzIsMTQwXSw1MjpbMiwxNDBdLDU1OlsyLDE0MF0sNzA6WzIsMTQwXSw3NTpbMiwxNDBdLDgzOlsyLDE0MF0sODg6WzIsMTQwXSw5MDpbMiwxNDBdLDk5OlsyLDE0MF0sMTAxOlsyLDE0MF0sMTAyOlsyLDE0MF0sMTAzOlsyLDE0MF0sMTA3OlsyLDE0MF0sMTE1OlsyLDE0MF0sMTIzOlsyLDE0MF0sMTI1OlsyLDE0MF0sMTI2OlsyLDE0MF0sMTI5OlsyLDE0MF0sMTMwOlsyLDE0MF0sMTMxOlsyLDE0MF0sMTMyOlsyLDE0MF0sMTMzOlsyLDE0MF0sMTM0OlsyLDE0MF19LHsxOlsyLDE0OF0sNjpbMiwxNDhdLDI1OlsyLDE0OF0sMjY6WzIsMTQ4XSw0NzpbMiwxNDhdLDUyOlsyLDE0OF0sNTU6WzIsMTQ4XSw3MDpbMiwxNDhdLDc1OlsyLDE0OF0sODM6WzIsMTQ4XSw4ODpbMiwxNDhdLDkwOlsyLDE0OF0sOTk6WzIsMTQ4XSwxMDE6WzIsMTQ4XSwxMDI6WzIsMTQ4XSwxMDM6WzIsMTQ4XSwxMDc6WzIsMTQ4XSwxMTU6WzIsMTQ4XSwxMjM6WzIsMTQ4XSwxMjU6WzIsMTQ4XSwxMjY6WzIsMTQ4XSwxMjk6WzIsMTQ4XSwxMzA6WzIsMTQ4XSwxMzE6WzIsMTQ4XSwxMzI6WzIsMTQ4XSwxMzM6WzIsMTQ4XSwxMzQ6WzIsMTQ4XX0sezI1OlsxLDIxMF0sMTAwOjg1LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDY6ODYsMTA3OlsxLDY2XSwxMDg6NjcsMTIzOlsxLDg0XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsxMTc6MjExLDExOToyMTIsMTIwOlsxLDIxM119LHsxOlsyLDkyXSw2OlsyLDkyXSwyNTpbMiw5Ml0sMjY6WzIsOTJdLDQ3OlsyLDkyXSw1MjpbMiw5Ml0sNTU6WzIsOTJdLDcwOlsyLDkyXSw3NTpbMiw5Ml0sODM6WzIsOTJdLDg4OlsyLDkyXSw5MDpbMiw5Ml0sOTk6WzIsOTJdLDEwMTpbMiw5Ml0sMTAyOlsyLDkyXSwxMDM6WzIsOTJdLDEwNzpbMiw5Ml0sMTE1OlsyLDkyXSwxMjM6WzIsOTJdLDEyNTpbMiw5Ml0sMTI2OlsyLDkyXSwxMjk6WzIsOTJdLDEzMDpbMiw5Ml0sMTMxOlsyLDkyXSwxMzI6WzIsOTJdLDEzMzpbMiw5Ml0sMTM0OlsyLDkyXX0sezg6MjE0LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHsxOlsyLDk1XSw1OjIxNSw2OlsyLDk1XSwyNTpbMSw1XSwyNjpbMiw5NV0sNDc6WzIsOTVdLDUyOlsyLDk1XSw1NTpbMiw5NV0sNjQ6WzIsNjhdLDY1OlsyLDY4XSw2NjpbMiw2OF0sNjg6WzIsNjhdLDcwOlsyLDk1XSw3MTpbMiw2OF0sNzU6WzIsOTVdLDc3OlsxLDIxNl0sODE6WzIsNjhdLDgyOlsyLDY4XSw4MzpbMiw5NV0sODg6WzIsOTVdLDkwOlsyLDk1XSw5OTpbMiw5NV0sMTAxOlsyLDk1XSwxMDI6WzIsOTVdLDEwMzpbMiw5NV0sMTA3OlsyLDk1XSwxMTU6WzIsOTVdLDEyMzpbMiw5NV0sMTI1OlsyLDk1XSwxMjY6WzIsOTVdLDEyOTpbMiw5NV0sMTMwOlsyLDk1XSwxMzE6WzIsOTVdLDEzMjpbMiw5NV0sMTMzOlsyLDk1XSwxMzQ6WzIsOTVdfSx7MTpbMiwxMzNdLDY6WzIsMTMzXSwyNTpbMiwxMzNdLDI2OlsyLDEzM10sNDc6WzIsMTMzXSw1MjpbMiwxMzNdLDU1OlsyLDEzM10sNzA6WzIsMTMzXSw3NTpbMiwxMzNdLDgzOlsyLDEzM10sODg6WzIsMTMzXSw5MDpbMiwxMzNdLDk5OlsyLDEzM10sMTAwOjg1LDEwMTpbMiwxMzNdLDEwMjpbMiwxMzNdLDEwMzpbMiwxMzNdLDEwNjo4NiwxMDc6WzIsMTMzXSwxMDg6NjcsMTE1OlsyLDEzM10sMTIzOlsyLDEzM10sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MTpbMiw0NF0sNjpbMiw0NF0sMjY6WzIsNDRdLDk5OlsyLDQ0XSwxMDA6ODUsMTAxOlsyLDQ0XSwxMDM6WzIsNDRdLDEwNjo4NiwxMDc6WzIsNDRdLDEwODo2NywxMjM6WzIsNDRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezY6WzEsNzJdLDk5OlsxLDIxN119LHs0OjIxOCw3OjQsODo2LDk6NywxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7NjpbMiwxMjRdLDI1OlsyLDEyNF0sNTI6WzIsMTI0XSw1NTpbMSwyMjBdLDg4OlsyLDEyNF0sODk6MjE5LDkwOlsxLDE4OF0sMTAwOjg1LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDY6ODYsMTA3OlsxLDY2XSwxMDg6NjcsMTIzOlsxLDg0XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsxOlsyLDExMF0sNjpbMiwxMTBdLDI1OlsyLDExMF0sMjY6WzIsMTEwXSwzODpbMiwxMTBdLDQ3OlsyLDExMF0sNTI6WzIsMTEwXSw1NTpbMiwxMTBdLDY0OlsyLDExMF0sNjU6WzIsMTEwXSw2NjpbMiwxMTBdLDY4OlsyLDExMF0sNzA6WzIsMTEwXSw3MTpbMiwxMTBdLDc1OlsyLDExMF0sODE6WzIsMTEwXSw4MjpbMiwxMTBdLDgzOlsyLDExMF0sODg6WzIsMTEwXSw5MDpbMiwxMTBdLDk5OlsyLDExMF0sMTAxOlsyLDExMF0sMTAyOlsyLDExMF0sMTAzOlsyLDExMF0sMTA3OlsyLDExMF0sMTEzOlsyLDExMF0sMTE0OlsyLDExMF0sMTE1OlsyLDExMF0sMTIzOlsyLDExMF0sMTI1OlsyLDExMF0sMTI2OlsyLDExMF0sMTI5OlsyLDExMF0sMTMwOlsyLDExMF0sMTMxOlsyLDExMF0sMTMyOlsyLDExMF0sMTMzOlsyLDExMF0sMTM0OlsyLDExMF19LHs2OlsyLDUxXSwyNTpbMiw1MV0sNTE6MjIxLDUyOlsxLDIyMl0sODg6WzIsNTFdfSx7NjpbMiwxMTldLDI1OlsyLDExOV0sMjY6WzIsMTE5XSw1MjpbMiwxMTldLDgzOlsyLDExOV0sODg6WzIsMTE5XX0sezg6MTk3LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjU6WzEsMTQ0XSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1ODoxNDUsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODQ6MjIzLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkxOjE0Myw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezY6WzIsMTI1XSwyNTpbMiwxMjVdLDI2OlsyLDEyNV0sNTI6WzIsMTI1XSw4MzpbMiwxMjVdLDg4OlsyLDEyNV19LHsxOlsyLDEwOV0sNjpbMiwxMDldLDI1OlsyLDEwOV0sMjY6WzIsMTA5XSwzODpbMiwxMDldLDQxOlsyLDEwOV0sNDc6WzIsMTA5XSw1MjpbMiwxMDldLDU1OlsyLDEwOV0sNjQ6WzIsMTA5XSw2NTpbMiwxMDldLDY2OlsyLDEwOV0sNjg6WzIsMTA5XSw3MDpbMiwxMDldLDcxOlsyLDEwOV0sNzU6WzIsMTA5XSw3NzpbMiwxMDldLDgxOlsyLDEwOV0sODI6WzIsMTA5XSw4MzpbMiwxMDldLDg4OlsyLDEwOV0sOTA6WzIsMTA5XSw5OTpbMiwxMDldLDEwMTpbMiwxMDldLDEwMjpbMiwxMDldLDEwMzpbMiwxMDldLDEwNzpbMiwxMDldLDExNTpbMiwxMDldLDEyMzpbMiwxMDldLDEyNTpbMiwxMDldLDEyNjpbMiwxMDldLDEyNzpbMiwxMDldLDEyODpbMiwxMDldLDEyOTpbMiwxMDldLDEzMDpbMiwxMDldLDEzMTpbMiwxMDldLDEzMjpbMiwxMDldLDEzMzpbMiwxMDldLDEzNDpbMiwxMDldLDEzNTpbMiwxMDldfSx7NToyMjQsMjU6WzEsNV0sMTAwOjg1LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDY6ODYsMTA3OlsxLDY2XSwxMDg6NjcsMTIzOlsxLDg0XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsxOlsyLDEzNl0sNjpbMiwxMzZdLDI1OlsyLDEzNl0sMjY6WzIsMTM2XSw0NzpbMiwxMzZdLDUyOlsyLDEzNl0sNTU6WzIsMTM2XSw3MDpbMiwxMzZdLDc1OlsyLDEzNl0sODM6WzIsMTM2XSw4ODpbMiwxMzZdLDkwOlsyLDEzNl0sOTk6WzIsMTM2XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDI6WzEsMjI1XSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMTU6WzIsMTM2XSwxMjM6WzIsMTM2XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsxOlsyLDEzOF0sNjpbMiwxMzhdLDI1OlsyLDEzOF0sMjY6WzIsMTM4XSw0NzpbMiwxMzhdLDUyOlsyLDEzOF0sNTU6WzIsMTM4XSw3MDpbMiwxMzhdLDc1OlsyLDEzOF0sODM6WzIsMTM4XSw4ODpbMiwxMzhdLDkwOlsyLDEzOF0sOTk6WzIsMTM4XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDI6WzEsMjI2XSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMTU6WzIsMTM4XSwxMjM6WzIsMTM4XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsxOlsyLDE0NF0sNjpbMiwxNDRdLDI1OlsyLDE0NF0sMjY6WzIsMTQ0XSw0NzpbMiwxNDRdLDUyOlsyLDE0NF0sNTU6WzIsMTQ0XSw3MDpbMiwxNDRdLDc1OlsyLDE0NF0sODM6WzIsMTQ0XSw4ODpbMiwxNDRdLDkwOlsyLDE0NF0sOTk6WzIsMTQ0XSwxMDE6WzIsMTQ0XSwxMDI6WzIsMTQ0XSwxMDM6WzIsMTQ0XSwxMDc6WzIsMTQ0XSwxMTU6WzIsMTQ0XSwxMjM6WzIsMTQ0XSwxMjU6WzIsMTQ0XSwxMjY6WzIsMTQ0XSwxMjk6WzIsMTQ0XSwxMzA6WzIsMTQ0XSwxMzE6WzIsMTQ0XSwxMzI6WzIsMTQ0XSwxMzM6WzIsMTQ0XSwxMzQ6WzIsMTQ0XX0sezE6WzIsMTQ1XSw2OlsyLDE0NV0sMjU6WzIsMTQ1XSwyNjpbMiwxNDVdLDQ3OlsyLDE0NV0sNTI6WzIsMTQ1XSw1NTpbMiwxNDVdLDcwOlsyLDE0NV0sNzU6WzIsMTQ1XSw4MzpbMiwxNDVdLDg4OlsyLDE0NV0sOTA6WzIsMTQ1XSw5OTpbMiwxNDVdLDEwMDo4NSwxMDE6WzEsNjNdLDEwMjpbMiwxNDVdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDExNTpbMiwxNDVdLDEyMzpbMiwxNDVdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsMTQ5XSw2OlsyLDE0OV0sMjU6WzIsMTQ5XSwyNjpbMiwxNDldLDQ3OlsyLDE0OV0sNTI6WzIsMTQ5XSw1NTpbMiwxNDldLDcwOlsyLDE0OV0sNzU6WzIsMTQ5XSw4MzpbMiwxNDldLDg4OlsyLDE0OV0sOTA6WzIsMTQ5XSw5OTpbMiwxNDldLDEwMTpbMiwxNDldLDEwMjpbMiwxNDldLDEwMzpbMiwxNDldLDEwNzpbMiwxNDldLDExNTpbMiwxNDldLDEyMzpbMiwxNDldLDEyNTpbMiwxNDldLDEyNjpbMiwxNDldLDEyOTpbMiwxNDldLDEzMDpbMiwxNDldLDEzMTpbMiwxNDldLDEzMjpbMiwxNDldLDEzMzpbMiwxNDldLDEzNDpbMiwxNDldfSx7MTEzOlsyLDE1MV0sMTE0OlsyLDE1MV19LHsyNzoxNTYsMjg6WzEsNzFdLDU2OjE1Nyw1NzoxNTgsNzM6WzEsNjhdLDg3OlsxLDExMl0sMTEwOjIyNywxMTI6MTU1fSx7NTI6WzEsMjI4XSwxMTM6WzIsMTU2XSwxMTQ6WzIsMTU2XX0sezUyOlsyLDE1M10sMTEzOlsyLDE1M10sMTE0OlsyLDE1M119LHs1MjpbMiwxNTRdLDExMzpbMiwxNTRdLDExNDpbMiwxNTRdfSx7NTI6WzIsMTU1XSwxMTM6WzIsMTU1XSwxMTQ6WzIsMTU1XX0sezE6WzIsMTUwXSw2OlsyLDE1MF0sMjU6WzIsMTUwXSwyNjpbMiwxNTBdLDQ3OlsyLDE1MF0sNTI6WzIsMTUwXSw1NTpbMiwxNTBdLDcwOlsyLDE1MF0sNzU6WzIsMTUwXSw4MzpbMiwxNTBdLDg4OlsyLDE1MF0sOTA6WzIsMTUwXSw5OTpbMiwxNTBdLDEwMTpbMiwxNTBdLDEwMjpbMiwxNTBdLDEwMzpbMiwxNTBdLDEwNzpbMiwxNTBdLDExNTpbMiwxNTBdLDEyMzpbMiwxNTBdLDEyNTpbMiwxNTBdLDEyNjpbMiwxNTBdLDEyOTpbMiwxNTBdLDEzMDpbMiwxNTBdLDEzMTpbMiwxNTBdLDEzMjpbMiwxNTBdLDEzMzpbMiwxNTBdLDEzNDpbMiwxNTBdfSx7ODoyMjksOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezg6MjMwLDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs2OlsyLDUxXSwyNTpbMiw1MV0sNTE6MjMxLDUyOlsxLDIzMl0sNzU6WzIsNTFdfSx7NjpbMiw4N10sMjU6WzIsODddLDI2OlsyLDg3XSw1MjpbMiw4N10sNzU6WzIsODddfSx7NjpbMiwzN10sMjU6WzIsMzddLDI2OlsyLDM3XSw0MTpbMSwyMzNdLDUyOlsyLDM3XSw3NTpbMiwzN119LHs2OlsyLDQwXSwyNTpbMiw0MF0sMjY6WzIsNDBdLDUyOlsyLDQwXSw3NTpbMiw0MF19LHs2OlsyLDQxXSwyNTpbMiw0MV0sMjY6WzIsNDFdLDQxOlsyLDQxXSw1MjpbMiw0MV0sNzU6WzIsNDFdfSx7NjpbMiw0Ml0sMjU6WzIsNDJdLDI2OlsyLDQyXSw0MTpbMiw0Ml0sNTI6WzIsNDJdLDc1OlsyLDQyXX0sezY6WzIsNDNdLDI1OlsyLDQzXSwyNjpbMiw0M10sNDE6WzIsNDNdLDUyOlsyLDQzXSw3NTpbMiw0M119LHsxOlsyLDVdLDY6WzIsNV0sMjY6WzIsNV0sOTk6WzIsNV19LHsxOlsyLDI1XSw2OlsyLDI1XSwyNTpbMiwyNV0sMjY6WzIsMjVdLDQ3OlsyLDI1XSw1MjpbMiwyNV0sNTU6WzIsMjVdLDcwOlsyLDI1XSw3NTpbMiwyNV0sODM6WzIsMjVdLDg4OlsyLDI1XSw5MDpbMiwyNV0sOTU6WzIsMjVdLDk2OlsyLDI1XSw5OTpbMiwyNV0sMTAxOlsyLDI1XSwxMDI6WzIsMjVdLDEwMzpbMiwyNV0sMTA3OlsyLDI1XSwxMTU6WzIsMjVdLDExODpbMiwyNV0sMTIwOlsyLDI1XSwxMjM6WzIsMjVdLDEyNTpbMiwyNV0sMTI2OlsyLDI1XSwxMjk6WzIsMjVdLDEzMDpbMiwyNV0sMTMxOlsyLDI1XSwxMzI6WzIsMjVdLDEzMzpbMiwyNV0sMTM0OlsyLDI1XX0sezE6WzIsMTg3XSw2OlsyLDE4N10sMjU6WzIsMTg3XSwyNjpbMiwxODddLDQ3OlsyLDE4N10sNTI6WzIsMTg3XSw1NTpbMiwxODddLDcwOlsyLDE4N10sNzU6WzIsMTg3XSw4MzpbMiwxODddLDg4OlsyLDE4N10sOTA6WzIsMTg3XSw5OTpbMiwxODddLDEwMDo4NSwxMDE6WzIsMTg3XSwxMDI6WzIsMTg3XSwxMDM6WzIsMTg3XSwxMDY6ODYsMTA3OlsyLDE4N10sMTA4OjY3LDExNTpbMiwxODddLDEyMzpbMiwxODddLDEyNTpbMiwxODddLDEyNjpbMiwxODddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzIsMTg3XSwxMzI6WzIsMTg3XSwxMzM6WzIsMTg3XSwxMzQ6WzIsMTg3XX0sezE6WzIsMTg4XSw2OlsyLDE4OF0sMjU6WzIsMTg4XSwyNjpbMiwxODhdLDQ3OlsyLDE4OF0sNTI6WzIsMTg4XSw1NTpbMiwxODhdLDcwOlsyLDE4OF0sNzU6WzIsMTg4XSw4MzpbMiwxODhdLDg4OlsyLDE4OF0sOTA6WzIsMTg4XSw5OTpbMiwxODhdLDEwMDo4NSwxMDE6WzIsMTg4XSwxMDI6WzIsMTg4XSwxMDM6WzIsMTg4XSwxMDY6ODYsMTA3OlsyLDE4OF0sMTA4OjY3LDExNTpbMiwxODhdLDEyMzpbMiwxODhdLDEyNTpbMiwxODhdLDEyNjpbMiwxODhdLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzIsMTg4XSwxMzI6WzIsMTg4XSwxMzM6WzIsMTg4XSwxMzQ6WzIsMTg4XX0sezE6WzIsMTg5XSw2OlsyLDE4OV0sMjU6WzIsMTg5XSwyNjpbMiwxODldLDQ3OlsyLDE4OV0sNTI6WzIsMTg5XSw1NTpbMiwxODldLDcwOlsyLDE4OV0sNzU6WzIsMTg5XSw4MzpbMiwxODldLDg4OlsyLDE4OV0sOTA6WzIsMTg5XSw5OTpbMiwxODldLDEwMDo4NSwxMDE6WzIsMTg5XSwxMDI6WzIsMTg5XSwxMDM6WzIsMTg5XSwxMDY6ODYsMTA3OlsyLDE4OV0sMTA4OjY3LDExNTpbMiwxODldLDEyMzpbMiwxODldLDEyNTpbMiwxODldLDEyNjpbMiwxODldLDEyOTpbMSw3Nl0sMTMwOlsyLDE4OV0sMTMxOlsyLDE4OV0sMTMyOlsyLDE4OV0sMTMzOlsyLDE4OV0sMTM0OlsyLDE4OV19LHsxOlsyLDE5MF0sNjpbMiwxOTBdLDI1OlsyLDE5MF0sMjY6WzIsMTkwXSw0NzpbMiwxOTBdLDUyOlsyLDE5MF0sNTU6WzIsMTkwXSw3MDpbMiwxOTBdLDc1OlsyLDE5MF0sODM6WzIsMTkwXSw4ODpbMiwxOTBdLDkwOlsyLDE5MF0sOTk6WzIsMTkwXSwxMDA6ODUsMTAxOlsyLDE5MF0sMTAyOlsyLDE5MF0sMTAzOlsyLDE5MF0sMTA2Ojg2LDEwNzpbMiwxOTBdLDEwODo2NywxMTU6WzIsMTkwXSwxMjM6WzIsMTkwXSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMiwxOTBdLDEzMjpbMiwxOTBdLDEzMzpbMiwxOTBdLDEzNDpbMiwxOTBdfSx7MTpbMiwxOTFdLDY6WzIsMTkxXSwyNTpbMiwxOTFdLDI2OlsyLDE5MV0sNDc6WzIsMTkxXSw1MjpbMiwxOTFdLDU1OlsyLDE5MV0sNzA6WzIsMTkxXSw3NTpbMiwxOTFdLDgzOlsyLDE5MV0sODg6WzIsMTkxXSw5MDpbMiwxOTFdLDk5OlsyLDE5MV0sMTAwOjg1LDEwMTpbMiwxOTFdLDEwMjpbMiwxOTFdLDEwMzpbMiwxOTFdLDEwNjo4NiwxMDc6WzIsMTkxXSwxMDg6NjcsMTE1OlsyLDE5MV0sMTIzOlsyLDE5MV0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMiwxOTFdLDEzMzpbMiwxOTFdLDEzNDpbMSw4M119LHsxOlsyLDE5Ml0sNjpbMiwxOTJdLDI1OlsyLDE5Ml0sMjY6WzIsMTkyXSw0NzpbMiwxOTJdLDUyOlsyLDE5Ml0sNTU6WzIsMTkyXSw3MDpbMiwxOTJdLDc1OlsyLDE5Ml0sODM6WzIsMTkyXSw4ODpbMiwxOTJdLDkwOlsyLDE5Ml0sOTk6WzIsMTkyXSwxMDA6ODUsMTAxOlsyLDE5Ml0sMTAyOlsyLDE5Ml0sMTAzOlsyLDE5Ml0sMTA2Ojg2LDEwNzpbMiwxOTJdLDEwODo2NywxMTU6WzIsMTkyXSwxMjM6WzIsMTkyXSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzIsMTkyXSwxMzQ6WzEsODNdfSx7MTpbMiwxOTNdLDY6WzIsMTkzXSwyNTpbMiwxOTNdLDI2OlsyLDE5M10sNDc6WzIsMTkzXSw1MjpbMiwxOTNdLDU1OlsyLDE5M10sNzA6WzIsMTkzXSw3NTpbMiwxOTNdLDgzOlsyLDE5M10sODg6WzIsMTkzXSw5MDpbMiwxOTNdLDk5OlsyLDE5M10sMTAwOjg1LDEwMTpbMiwxOTNdLDEwMjpbMiwxOTNdLDEwMzpbMiwxOTNdLDEwNjo4NiwxMDc6WzIsMTkzXSwxMDg6NjcsMTE1OlsyLDE5M10sMTIzOlsyLDE5M10sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMiwxOTNdLDEzMzpbMiwxOTNdLDEzNDpbMiwxOTNdfSx7MTpbMiwxNzhdLDY6WzIsMTc4XSwyNTpbMiwxNzhdLDI2OlsyLDE3OF0sNDc6WzIsMTc4XSw1MjpbMiwxNzhdLDU1OlsyLDE3OF0sNzA6WzIsMTc4XSw3NTpbMiwxNzhdLDgzOlsyLDE3OF0sODg6WzIsMTc4XSw5MDpbMiwxNzhdLDk5OlsyLDE3OF0sMTAwOjg1LDEwMTpbMSw2M10sMTAyOlsyLDE3OF0sMTAzOlsxLDY0XSwxMDY6ODYsMTA3OlsxLDY2XSwxMDg6NjcsMTE1OlsyLDE3OF0sMTIzOlsxLDg0XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsxOlsyLDE3N10sNjpbMiwxNzddLDI1OlsyLDE3N10sMjY6WzIsMTc3XSw0NzpbMiwxNzddLDUyOlsyLDE3N10sNTU6WzIsMTc3XSw3MDpbMiwxNzddLDc1OlsyLDE3N10sODM6WzIsMTc3XSw4ODpbMiwxNzddLDkwOlsyLDE3N10sOTk6WzIsMTc3XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDI6WzIsMTc3XSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMTU6WzIsMTc3XSwxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsOTldLDY6WzIsOTldLDI1OlsyLDk5XSwyNjpbMiw5OV0sNDc6WzIsOTldLDUyOlsyLDk5XSw1NTpbMiw5OV0sNjQ6WzIsOTldLDY1OlsyLDk5XSw2NjpbMiw5OV0sNjg6WzIsOTldLDcwOlsyLDk5XSw3MTpbMiw5OV0sNzU6WzIsOTldLDgxOlsyLDk5XSw4MjpbMiw5OV0sODM6WzIsOTldLDg4OlsyLDk5XSw5MDpbMiw5OV0sOTk6WzIsOTldLDEwMTpbMiw5OV0sMTAyOlsyLDk5XSwxMDM6WzIsOTldLDEwNzpbMiw5OV0sMTE1OlsyLDk5XSwxMjM6WzIsOTldLDEyNTpbMiw5OV0sMTI2OlsyLDk5XSwxMjk6WzIsOTldLDEzMDpbMiw5OV0sMTMxOlsyLDk5XSwxMzI6WzIsOTldLDEzMzpbMiw5OV0sMTM0OlsyLDk5XX0sezE6WzIsNzZdLDY6WzIsNzZdLDI1OlsyLDc2XSwyNjpbMiw3Nl0sMzg6WzIsNzZdLDQ3OlsyLDc2XSw1MjpbMiw3Nl0sNTU6WzIsNzZdLDY0OlsyLDc2XSw2NTpbMiw3Nl0sNjY6WzIsNzZdLDY4OlsyLDc2XSw3MDpbMiw3Nl0sNzE6WzIsNzZdLDc1OlsyLDc2XSw3NzpbMiw3Nl0sODE6WzIsNzZdLDgyOlsyLDc2XSw4MzpbMiw3Nl0sODg6WzIsNzZdLDkwOlsyLDc2XSw5OTpbMiw3Nl0sMTAxOlsyLDc2XSwxMDI6WzIsNzZdLDEwMzpbMiw3Nl0sMTA3OlsyLDc2XSwxMTU6WzIsNzZdLDEyMzpbMiw3Nl0sMTI1OlsyLDc2XSwxMjY6WzIsNzZdLDEyNzpbMiw3Nl0sMTI4OlsyLDc2XSwxMjk6WzIsNzZdLDEzMDpbMiw3Nl0sMTMxOlsyLDc2XSwxMzI6WzIsNzZdLDEzMzpbMiw3Nl0sMTM0OlsyLDc2XSwxMzU6WzIsNzZdfSx7MTpbMiw3N10sNjpbMiw3N10sMjU6WzIsNzddLDI2OlsyLDc3XSwzODpbMiw3N10sNDc6WzIsNzddLDUyOlsyLDc3XSw1NTpbMiw3N10sNjQ6WzIsNzddLDY1OlsyLDc3XSw2NjpbMiw3N10sNjg6WzIsNzddLDcwOlsyLDc3XSw3MTpbMiw3N10sNzU6WzIsNzddLDc3OlsyLDc3XSw4MTpbMiw3N10sODI6WzIsNzddLDgzOlsyLDc3XSw4ODpbMiw3N10sOTA6WzIsNzddLDk5OlsyLDc3XSwxMDE6WzIsNzddLDEwMjpbMiw3N10sMTAzOlsyLDc3XSwxMDc6WzIsNzddLDExNTpbMiw3N10sMTIzOlsyLDc3XSwxMjU6WzIsNzddLDEyNjpbMiw3N10sMTI3OlsyLDc3XSwxMjg6WzIsNzddLDEyOTpbMiw3N10sMTMwOlsyLDc3XSwxMzE6WzIsNzddLDEzMjpbMiw3N10sMTMzOlsyLDc3XSwxMzQ6WzIsNzddLDEzNTpbMiw3N119LHsxOlsyLDc4XSw2OlsyLDc4XSwyNTpbMiw3OF0sMjY6WzIsNzhdLDM4OlsyLDc4XSw0NzpbMiw3OF0sNTI6WzIsNzhdLDU1OlsyLDc4XSw2NDpbMiw3OF0sNjU6WzIsNzhdLDY2OlsyLDc4XSw2ODpbMiw3OF0sNzA6WzIsNzhdLDcxOlsyLDc4XSw3NTpbMiw3OF0sNzc6WzIsNzhdLDgxOlsyLDc4XSw4MjpbMiw3OF0sODM6WzIsNzhdLDg4OlsyLDc4XSw5MDpbMiw3OF0sOTk6WzIsNzhdLDEwMTpbMiw3OF0sMTAyOlsyLDc4XSwxMDM6WzIsNzhdLDEwNzpbMiw3OF0sMTE1OlsyLDc4XSwxMjM6WzIsNzhdLDEyNTpbMiw3OF0sMTI2OlsyLDc4XSwxMjc6WzIsNzhdLDEyODpbMiw3OF0sMTI5OlsyLDc4XSwxMzA6WzIsNzhdLDEzMTpbMiw3OF0sMTMyOlsyLDc4XSwxMzM6WzIsNzhdLDEzNDpbMiw3OF0sMTM1OlsyLDc4XX0sezcwOlsxLDIzNF19LHs1NTpbMSwxODldLDcwOlsyLDgzXSw4OToyMzUsOTA6WzEsMTg4XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezcwOlsyLDg0XX0sezg6MjM2LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzA6WzIsMTE4XSw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezEyOlsyLDExMl0sMjg6WzIsMTEyXSwzMDpbMiwxMTJdLDMxOlsyLDExMl0sMzM6WzIsMTEyXSwzNDpbMiwxMTJdLDM1OlsyLDExMl0sMzY6WzIsMTEyXSw0MzpbMiwxMTJdLDQ0OlsyLDExMl0sNDU6WzIsMTEyXSw0OTpbMiwxMTJdLDUwOlsyLDExMl0sNzA6WzIsMTEyXSw3MzpbMiwxMTJdLDc2OlsyLDExMl0sODA6WzIsMTEyXSw4NTpbMiwxMTJdLDg2OlsyLDExMl0sODc6WzIsMTEyXSw5MzpbMiwxMTJdLDk3OlsyLDExMl0sOTg6WzIsMTEyXSwxMDE6WzIsMTEyXSwxMDM6WzIsMTEyXSwxMDU6WzIsMTEyXSwxMDc6WzIsMTEyXSwxMTY6WzIsMTEyXSwxMjI6WzIsMTEyXSwxMjQ6WzIsMTEyXSwxMjU6WzIsMTEyXSwxMjY6WzIsMTEyXSwxMjc6WzIsMTEyXSwxMjg6WzIsMTEyXX0sezEyOlsyLDExM10sMjg6WzIsMTEzXSwzMDpbMiwxMTNdLDMxOlsyLDExM10sMzM6WzIsMTEzXSwzNDpbMiwxMTNdLDM1OlsyLDExM10sMzY6WzIsMTEzXSw0MzpbMiwxMTNdLDQ0OlsyLDExM10sNDU6WzIsMTEzXSw0OTpbMiwxMTNdLDUwOlsyLDExM10sNzA6WzIsMTEzXSw3MzpbMiwxMTNdLDc2OlsyLDExM10sODA6WzIsMTEzXSw4NTpbMiwxMTNdLDg2OlsyLDExM10sODc6WzIsMTEzXSw5MzpbMiwxMTNdLDk3OlsyLDExM10sOTg6WzIsMTEzXSwxMDE6WzIsMTEzXSwxMDM6WzIsMTEzXSwxMDU6WzIsMTEzXSwxMDc6WzIsMTEzXSwxMTY6WzIsMTEzXSwxMjI6WzIsMTEzXSwxMjQ6WzIsMTEzXSwxMjU6WzIsMTEzXSwxMjY6WzIsMTEzXSwxMjc6WzIsMTEzXSwxMjg6WzIsMTEzXX0sezE6WzIsODJdLDY6WzIsODJdLDI1OlsyLDgyXSwyNjpbMiw4Ml0sMzg6WzIsODJdLDQ3OlsyLDgyXSw1MjpbMiw4Ml0sNTU6WzIsODJdLDY0OlsyLDgyXSw2NTpbMiw4Ml0sNjY6WzIsODJdLDY4OlsyLDgyXSw3MDpbMiw4Ml0sNzE6WzIsODJdLDc1OlsyLDgyXSw3NzpbMiw4Ml0sODE6WzIsODJdLDgyOlsyLDgyXSw4MzpbMiw4Ml0sODg6WzIsODJdLDkwOlsyLDgyXSw5OTpbMiw4Ml0sMTAxOlsyLDgyXSwxMDI6WzIsODJdLDEwMzpbMiw4Ml0sMTA3OlsyLDgyXSwxMTU6WzIsODJdLDEyMzpbMiw4Ml0sMTI1OlsyLDgyXSwxMjY6WzIsODJdLDEyNzpbMiw4Ml0sMTI4OlsyLDgyXSwxMjk6WzIsODJdLDEzMDpbMiw4Ml0sMTMxOlsyLDgyXSwxMzI6WzIsODJdLDEzMzpbMiw4Ml0sMTM0OlsyLDgyXSwxMzU6WzIsODJdfSx7MTpbMiwxMDBdLDY6WzIsMTAwXSwyNTpbMiwxMDBdLDI2OlsyLDEwMF0sNDc6WzIsMTAwXSw1MjpbMiwxMDBdLDU1OlsyLDEwMF0sNjQ6WzIsMTAwXSw2NTpbMiwxMDBdLDY2OlsyLDEwMF0sNjg6WzIsMTAwXSw3MDpbMiwxMDBdLDcxOlsyLDEwMF0sNzU6WzIsMTAwXSw4MTpbMiwxMDBdLDgyOlsyLDEwMF0sODM6WzIsMTAwXSw4ODpbMiwxMDBdLDkwOlsyLDEwMF0sOTk6WzIsMTAwXSwxMDE6WzIsMTAwXSwxMDI6WzIsMTAwXSwxMDM6WzIsMTAwXSwxMDc6WzIsMTAwXSwxMTU6WzIsMTAwXSwxMjM6WzIsMTAwXSwxMjU6WzIsMTAwXSwxMjY6WzIsMTAwXSwxMjk6WzIsMTAwXSwxMzA6WzIsMTAwXSwxMzE6WzIsMTAwXSwxMzI6WzIsMTAwXSwxMzM6WzIsMTAwXSwxMzQ6WzIsMTAwXX0sezE6WzIsMzRdLDY6WzIsMzRdLDI1OlsyLDM0XSwyNjpbMiwzNF0sNDc6WzIsMzRdLDUyOlsyLDM0XSw1NTpbMiwzNF0sNzA6WzIsMzRdLDc1OlsyLDM0XSw4MzpbMiwzNF0sODg6WzIsMzRdLDkwOlsyLDM0XSw5OTpbMiwzNF0sMTAwOjg1LDEwMTpbMiwzNF0sMTAyOlsyLDM0XSwxMDM6WzIsMzRdLDEwNjo4NiwxMDc6WzIsMzRdLDEwODo2NywxMTU6WzIsMzRdLDEyMzpbMiwzNF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7ODoyMzcsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezg6MjM4LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHsxOlsyLDEwNV0sNjpbMiwxMDVdLDI1OlsyLDEwNV0sMjY6WzIsMTA1XSw0NzpbMiwxMDVdLDUyOlsyLDEwNV0sNTU6WzIsMTA1XSw2NDpbMiwxMDVdLDY1OlsyLDEwNV0sNjY6WzIsMTA1XSw2ODpbMiwxMDVdLDcwOlsyLDEwNV0sNzE6WzIsMTA1XSw3NTpbMiwxMDVdLDgxOlsyLDEwNV0sODI6WzIsMTA1XSw4MzpbMiwxMDVdLDg4OlsyLDEwNV0sOTA6WzIsMTA1XSw5OTpbMiwxMDVdLDEwMTpbMiwxMDVdLDEwMjpbMiwxMDVdLDEwMzpbMiwxMDVdLDEwNzpbMiwxMDVdLDExNTpbMiwxMDVdLDEyMzpbMiwxMDVdLDEyNTpbMiwxMDVdLDEyNjpbMiwxMDVdLDEyOTpbMiwxMDVdLDEzMDpbMiwxMDVdLDEzMTpbMiwxMDVdLDEzMjpbMiwxMDVdLDEzMzpbMiwxMDVdLDEzNDpbMiwxMDVdfSx7NjpbMiw1MV0sMjU6WzIsNTFdLDUxOjIzOSw1MjpbMSwyMjJdLDgzOlsyLDUxXX0sezY6WzIsMTI0XSwyNTpbMiwxMjRdLDI2OlsyLDEyNF0sNTI6WzIsMTI0XSw1NTpbMSwyNDBdLDgzOlsyLDEyNF0sODg6WzIsMTI0XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezQ4OjI0MSw0OTpbMSw1OF0sNTA6WzEsNTldfSx7Mjc6MTA3LDI4OlsxLDcxXSw0MjoxMDgsNTM6MjQyLDU0OjEwNiw1NjoxMDksNTc6MTEwLDczOlsxLDY4XSw4NjpbMSwxMTFdLDg3OlsxLDExMl19LHs0NzpbMiw1N10sNTI6WzIsNTddfSx7ODoyNDMsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsMTk0XSw2OlsyLDE5NF0sMjU6WzIsMTk0XSwyNjpbMiwxOTRdLDQ3OlsyLDE5NF0sNTI6WzIsMTk0XSw1NTpbMiwxOTRdLDcwOlsyLDE5NF0sNzU6WzIsMTk0XSw4MzpbMiwxOTRdLDg4OlsyLDE5NF0sOTA6WzIsMTk0XSw5OTpbMiwxOTRdLDEwMDo4NSwxMDE6WzIsMTk0XSwxMDI6WzIsMTk0XSwxMDM6WzIsMTk0XSwxMDY6ODYsMTA3OlsyLDE5NF0sMTA4OjY3LDExNTpbMiwxOTRdLDEyMzpbMiwxOTRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezg6MjQ0LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHsxOlsyLDE5Nl0sNjpbMiwxOTZdLDI1OlsyLDE5Nl0sMjY6WzIsMTk2XSw0NzpbMiwxOTZdLDUyOlsyLDE5Nl0sNTU6WzIsMTk2XSw3MDpbMiwxOTZdLDc1OlsyLDE5Nl0sODM6WzIsMTk2XSw4ODpbMiwxOTZdLDkwOlsyLDE5Nl0sOTk6WzIsMTk2XSwxMDA6ODUsMTAxOlsyLDE5Nl0sMTAyOlsyLDE5Nl0sMTAzOlsyLDE5Nl0sMTA2Ojg2LDEwNzpbMiwxOTZdLDEwODo2NywxMTU6WzIsMTk2XSwxMjM6WzIsMTk2XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsxOlsyLDE3Nl0sNjpbMiwxNzZdLDI1OlsyLDE3Nl0sMjY6WzIsMTc2XSw0NzpbMiwxNzZdLDUyOlsyLDE3Nl0sNTU6WzIsMTc2XSw3MDpbMiwxNzZdLDc1OlsyLDE3Nl0sODM6WzIsMTc2XSw4ODpbMiwxNzZdLDkwOlsyLDE3Nl0sOTk6WzIsMTc2XSwxMDE6WzIsMTc2XSwxMDI6WzIsMTc2XSwxMDM6WzIsMTc2XSwxMDc6WzIsMTc2XSwxMTU6WzIsMTc2XSwxMjM6WzIsMTc2XSwxMjU6WzIsMTc2XSwxMjY6WzIsMTc2XSwxMjk6WzIsMTc2XSwxMzA6WzIsMTc2XSwxMzE6WzIsMTc2XSwxMzI6WzIsMTc2XSwxMzM6WzIsMTc2XSwxMzQ6WzIsMTc2XX0sezg6MjQ1LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHsxOlsyLDEyOV0sNjpbMiwxMjldLDI1OlsyLDEyOV0sMjY6WzIsMTI5XSw0NzpbMiwxMjldLDUyOlsyLDEyOV0sNTU6WzIsMTI5XSw3MDpbMiwxMjldLDc1OlsyLDEyOV0sODM6WzIsMTI5XSw4ODpbMiwxMjldLDkwOlsyLDEyOV0sOTU6WzEsMjQ2XSw5OTpbMiwxMjldLDEwMTpbMiwxMjldLDEwMjpbMiwxMjldLDEwMzpbMiwxMjldLDEwNzpbMiwxMjldLDExNTpbMiwxMjldLDEyMzpbMiwxMjldLDEyNTpbMiwxMjldLDEyNjpbMiwxMjldLDEyOTpbMiwxMjldLDEzMDpbMiwxMjldLDEzMTpbMiwxMjldLDEzMjpbMiwxMjldLDEzMzpbMiwxMjldLDEzNDpbMiwxMjldfSx7NToyNDcsMjU6WzEsNV19LHsyNzoyNDgsMjg6WzEsNzFdfSx7MTE3OjI0OSwxMTk6MjEyLDEyMDpbMSwyMTNdfSx7MjY6WzEsMjUwXSwxMTg6WzEsMjUxXSwxMTk6MjUyLDEyMDpbMSwyMTNdfSx7MjY6WzIsMTY5XSwxMTg6WzIsMTY5XSwxMjA6WzIsMTY5XX0sezg6MjU0LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTI6MjUzLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiw5M10sNToyNTUsNjpbMiw5M10sMjU6WzEsNV0sMjY6WzIsOTNdLDQ3OlsyLDkzXSw1MjpbMiw5M10sNTU6WzIsOTNdLDcwOlsyLDkzXSw3NTpbMiw5M10sODM6WzIsOTNdLDg4OlsyLDkzXSw5MDpbMiw5M10sOTk6WzIsOTNdLDEwMDo4NSwxMDE6WzEsNjNdLDEwMjpbMiw5M10sMTAzOlsxLDY0XSwxMDY6ODYsMTA3OlsxLDY2XSwxMDg6NjcsMTE1OlsyLDkzXSwxMjM6WzIsOTNdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsOTZdLDY6WzIsOTZdLDI1OlsyLDk2XSwyNjpbMiw5Nl0sNDc6WzIsOTZdLDUyOlsyLDk2XSw1NTpbMiw5Nl0sNzA6WzIsOTZdLDc1OlsyLDk2XSw4MzpbMiw5Nl0sODg6WzIsOTZdLDkwOlsyLDk2XSw5OTpbMiw5Nl0sMTAxOlsyLDk2XSwxMDI6WzIsOTZdLDEwMzpbMiw5Nl0sMTA3OlsyLDk2XSwxMTU6WzIsOTZdLDEyMzpbMiw5Nl0sMTI1OlsyLDk2XSwxMjY6WzIsOTZdLDEyOTpbMiw5Nl0sMTMwOlsyLDk2XSwxMzE6WzIsOTZdLDEzMjpbMiw5Nl0sMTMzOlsyLDk2XSwxMzQ6WzIsOTZdfSx7ODoyNTYsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsMTM0XSw2OlsyLDEzNF0sMjU6WzIsMTM0XSwyNjpbMiwxMzRdLDQ3OlsyLDEzNF0sNTI6WzIsMTM0XSw1NTpbMiwxMzRdLDY0OlsyLDEzNF0sNjU6WzIsMTM0XSw2NjpbMiwxMzRdLDY4OlsyLDEzNF0sNzA6WzIsMTM0XSw3MTpbMiwxMzRdLDc1OlsyLDEzNF0sODE6WzIsMTM0XSw4MjpbMiwxMzRdLDgzOlsyLDEzNF0sODg6WzIsMTM0XSw5MDpbMiwxMzRdLDk5OlsyLDEzNF0sMTAxOlsyLDEzNF0sMTAyOlsyLDEzNF0sMTAzOlsyLDEzNF0sMTA3OlsyLDEzNF0sMTE1OlsyLDEzNF0sMTIzOlsyLDEzNF0sMTI1OlsyLDEzNF0sMTI2OlsyLDEzNF0sMTI5OlsyLDEzNF0sMTMwOlsyLDEzNF0sMTMxOlsyLDEzNF0sMTMyOlsyLDEzNF0sMTMzOlsyLDEzNF0sMTM0OlsyLDEzNF19LHs2OlsxLDcyXSwyNjpbMSwyNTddfSx7ODoyNTgsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezY6WzIsNjNdLDEyOlsyLDExM10sMjU6WzIsNjNdLDI4OlsyLDExM10sMzA6WzIsMTEzXSwzMTpbMiwxMTNdLDMzOlsyLDExM10sMzQ6WzIsMTEzXSwzNTpbMiwxMTNdLDM2OlsyLDExM10sNDM6WzIsMTEzXSw0NDpbMiwxMTNdLDQ1OlsyLDExM10sNDk6WzIsMTEzXSw1MDpbMiwxMTNdLDUyOlsyLDYzXSw3MzpbMiwxMTNdLDc2OlsyLDExM10sODA6WzIsMTEzXSw4NTpbMiwxMTNdLDg2OlsyLDExM10sODc6WzIsMTEzXSw4ODpbMiw2M10sOTM6WzIsMTEzXSw5NzpbMiwxMTNdLDk4OlsyLDExM10sMTAxOlsyLDExM10sMTAzOlsyLDExM10sMTA1OlsyLDExM10sMTA3OlsyLDExM10sMTE2OlsyLDExM10sMTIyOlsyLDExM10sMTI0OlsyLDExM10sMTI1OlsyLDExM10sMTI2OlsyLDExM10sMTI3OlsyLDExM10sMTI4OlsyLDExM119LHs2OlsxLDI2MF0sMjU6WzEsMjYxXSw4ODpbMSwyNTldfSx7NjpbMiw1Ml0sODoxOTcsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNTpbMiw1Ml0sMjY6WzIsNTJdLDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU4OjE0NSw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4MzpbMiw1Ml0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sODg6WzIsNTJdLDkxOjI2Miw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezY6WzIsNTFdLDI1OlsyLDUxXSwyNjpbMiw1MV0sNTE6MjYzLDUyOlsxLDIyMl19LHsxOlsyLDE3M10sNjpbMiwxNzNdLDI1OlsyLDE3M10sMjY6WzIsMTczXSw0NzpbMiwxNzNdLDUyOlsyLDE3M10sNTU6WzIsMTczXSw3MDpbMiwxNzNdLDc1OlsyLDE3M10sODM6WzIsMTczXSw4ODpbMiwxNzNdLDkwOlsyLDE3M10sOTk6WzIsMTczXSwxMDE6WzIsMTczXSwxMDI6WzIsMTczXSwxMDM6WzIsMTczXSwxMDc6WzIsMTczXSwxMTU6WzIsMTczXSwxMTg6WzIsMTczXSwxMjM6WzIsMTczXSwxMjU6WzIsMTczXSwxMjY6WzIsMTczXSwxMjk6WzIsMTczXSwxMzA6WzIsMTczXSwxMzE6WzIsMTczXSwxMzI6WzIsMTczXSwxMzM6WzIsMTczXSwxMzQ6WzIsMTczXX0sezg6MjY0LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjI2NSw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTEzOlsyLDE1Ml0sMTE0OlsyLDE1Ml19LHsyNzoxNTYsMjg6WzEsNzFdLDU2OjE1Nyw1NzoxNTgsNzM6WzEsNjhdLDg3OlsxLDExMl0sMTEyOjI2Nn0sezE6WzIsMTU4XSw2OlsyLDE1OF0sMjU6WzIsMTU4XSwyNjpbMiwxNThdLDQ3OlsyLDE1OF0sNTI6WzIsMTU4XSw1NTpbMiwxNThdLDcwOlsyLDE1OF0sNzU6WzIsMTU4XSw4MzpbMiwxNThdLDg4OlsyLDE1OF0sOTA6WzIsMTU4XSw5OTpbMiwxNThdLDEwMDo4NSwxMDE6WzIsMTU4XSwxMDI6WzEsMjY3XSwxMDM6WzIsMTU4XSwxMDY6ODYsMTA3OlsyLDE1OF0sMTA4OjY3LDExNTpbMSwyNjhdLDEyMzpbMiwxNThdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsMTU5XSw2OlsyLDE1OV0sMjU6WzIsMTU5XSwyNjpbMiwxNTldLDQ3OlsyLDE1OV0sNTI6WzIsMTU5XSw1NTpbMiwxNTldLDcwOlsyLDE1OV0sNzU6WzIsMTU5XSw4MzpbMiwxNTldLDg4OlsyLDE1OV0sOTA6WzIsMTU5XSw5OTpbMiwxNTldLDEwMDo4NSwxMDE6WzIsMTU5XSwxMDI6WzEsMjY5XSwxMDM6WzIsMTU5XSwxMDY6ODYsMTA3OlsyLDE1OV0sMTA4OjY3LDExNTpbMiwxNTldLDEyMzpbMiwxNTldLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezY6WzEsMjcxXSwyNTpbMSwyNzJdLDc1OlsxLDI3MF19LHs2OlsyLDUyXSwxMToxNjUsMjU6WzIsNTJdLDI2OlsyLDUyXSwyNzoxNjYsMjg6WzEsNzFdLDI5OjE2NywzMDpbMSw2OV0sMzE6WzEsNzBdLDM5OjI3Myw0MDoxNjQsNDI6MTY4LDQ0OlsxLDQ2XSw3NTpbMiw1Ml0sODY6WzEsMTExXX0sezg6Mjc0LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjU6WzEsMjc1XSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsODFdLDY6WzIsODFdLDI1OlsyLDgxXSwyNjpbMiw4MV0sMzg6WzIsODFdLDQ3OlsyLDgxXSw1MjpbMiw4MV0sNTU6WzIsODFdLDY0OlsyLDgxXSw2NTpbMiw4MV0sNjY6WzIsODFdLDY4OlsyLDgxXSw3MDpbMiw4MV0sNzE6WzIsODFdLDc1OlsyLDgxXSw3NzpbMiw4MV0sODE6WzIsODFdLDgyOlsyLDgxXSw4MzpbMiw4MV0sODg6WzIsODFdLDkwOlsyLDgxXSw5OTpbMiw4MV0sMTAxOlsyLDgxXSwxMDI6WzIsODFdLDEwMzpbMiw4MV0sMTA3OlsyLDgxXSwxMTU6WzIsODFdLDEyMzpbMiw4MV0sMTI1OlsyLDgxXSwxMjY6WzIsODFdLDEyNzpbMiw4MV0sMTI4OlsyLDgxXSwxMjk6WzIsODFdLDEzMDpbMiw4MV0sMTMxOlsyLDgxXSwxMzI6WzIsODFdLDEzMzpbMiw4MV0sMTM0OlsyLDgxXSwxMzU6WzIsODFdfSx7ODoyNzYsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MDpbMiwxMTZdLDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7NzA6WzIsMTE3XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsMzVdLDY6WzIsMzVdLDI1OlsyLDM1XSwyNjpbMiwzNV0sNDc6WzIsMzVdLDUyOlsyLDM1XSw1NTpbMiwzNV0sNzA6WzIsMzVdLDc1OlsyLDM1XSw4MzpbMiwzNV0sODg6WzIsMzVdLDkwOlsyLDM1XSw5OTpbMiwzNV0sMTAwOjg1LDEwMTpbMiwzNV0sMTAyOlsyLDM1XSwxMDM6WzIsMzVdLDEwNjo4NiwxMDc6WzIsMzVdLDEwODo2NywxMTU6WzIsMzVdLDEyMzpbMiwzNV0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MjY6WzEsMjc3XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezY6WzEsMjYwXSwyNTpbMSwyNjFdLDgzOlsxLDI3OF19LHs2OlsyLDYzXSwyNTpbMiw2M10sMjY6WzIsNjNdLDUyOlsyLDYzXSw4MzpbMiw2M10sODg6WzIsNjNdfSx7NToyNzksMjU6WzEsNV19LHs0NzpbMiw1NV0sNTI6WzIsNTVdfSx7NDc6WzIsNThdLDUyOlsyLDU4XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezI2OlsxLDI4MF0sMTAwOjg1LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDY6ODYsMTA3OlsxLDY2XSwxMDg6NjcsMTIzOlsxLDg0XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHs1OjI4MSwyNTpbMSw1XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezU6MjgyLDI1OlsxLDVdfSx7MTpbMiwxMzBdLDY6WzIsMTMwXSwyNTpbMiwxMzBdLDI2OlsyLDEzMF0sNDc6WzIsMTMwXSw1MjpbMiwxMzBdLDU1OlsyLDEzMF0sNzA6WzIsMTMwXSw3NTpbMiwxMzBdLDgzOlsyLDEzMF0sODg6WzIsMTMwXSw5MDpbMiwxMzBdLDk5OlsyLDEzMF0sMTAxOlsyLDEzMF0sMTAyOlsyLDEzMF0sMTAzOlsyLDEzMF0sMTA3OlsyLDEzMF0sMTE1OlsyLDEzMF0sMTIzOlsyLDEzMF0sMTI1OlsyLDEzMF0sMTI2OlsyLDEzMF0sMTI5OlsyLDEzMF0sMTMwOlsyLDEzMF0sMTMxOlsyLDEzMF0sMTMyOlsyLDEzMF0sMTMzOlsyLDEzMF0sMTM0OlsyLDEzMF19LHs1OjI4MywyNTpbMSw1XX0sezI2OlsxLDI4NF0sMTE4OlsxLDI4NV0sMTE5OjI1MiwxMjA6WzEsMjEzXX0sezE6WzIsMTY3XSw2OlsyLDE2N10sMjU6WzIsMTY3XSwyNjpbMiwxNjddLDQ3OlsyLDE2N10sNTI6WzIsMTY3XSw1NTpbMiwxNjddLDcwOlsyLDE2N10sNzU6WzIsMTY3XSw4MzpbMiwxNjddLDg4OlsyLDE2N10sOTA6WzIsMTY3XSw5OTpbMiwxNjddLDEwMTpbMiwxNjddLDEwMjpbMiwxNjddLDEwMzpbMiwxNjddLDEwNzpbMiwxNjddLDExNTpbMiwxNjddLDEyMzpbMiwxNjddLDEyNTpbMiwxNjddLDEyNjpbMiwxNjddLDEyOTpbMiwxNjddLDEzMDpbMiwxNjddLDEzMTpbMiwxNjddLDEzMjpbMiwxNjddLDEzMzpbMiwxNjddLDEzNDpbMiwxNjddfSx7NToyODYsMjU6WzEsNV19LHsyNjpbMiwxNzBdLDExODpbMiwxNzBdLDEyMDpbMiwxNzBdfSx7NToyODcsMjU6WzEsNV0sNTI6WzEsMjg4XX0sezI1OlsyLDEyNl0sNTI6WzIsMTI2XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsOTRdLDY6WzIsOTRdLDI1OlsyLDk0XSwyNjpbMiw5NF0sNDc6WzIsOTRdLDUyOlsyLDk0XSw1NTpbMiw5NF0sNzA6WzIsOTRdLDc1OlsyLDk0XSw4MzpbMiw5NF0sODg6WzIsOTRdLDkwOlsyLDk0XSw5OTpbMiw5NF0sMTAxOlsyLDk0XSwxMDI6WzIsOTRdLDEwMzpbMiw5NF0sMTA3OlsyLDk0XSwxMTU6WzIsOTRdLDEyMzpbMiw5NF0sMTI1OlsyLDk0XSwxMjY6WzIsOTRdLDEyOTpbMiw5NF0sMTMwOlsyLDk0XSwxMzE6WzIsOTRdLDEzMjpbMiw5NF0sMTMzOlsyLDk0XSwxMzQ6WzIsOTRdfSx7MTpbMiw5N10sNToyODksNjpbMiw5N10sMjU6WzEsNV0sMjY6WzIsOTddLDQ3OlsyLDk3XSw1MjpbMiw5N10sNTU6WzIsOTddLDcwOlsyLDk3XSw3NTpbMiw5N10sODM6WzIsOTddLDg4OlsyLDk3XSw5MDpbMiw5N10sOTk6WzIsOTddLDEwMDo4NSwxMDE6WzEsNjNdLDEwMjpbMiw5N10sMTAzOlsxLDY0XSwxMDY6ODYsMTA3OlsxLDY2XSwxMDg6NjcsMTE1OlsyLDk3XSwxMjM6WzIsOTddLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezk5OlsxLDI5MF19LHs4ODpbMSwyOTFdLDEwMDo4NSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDEyMzpbMSw4NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MTpbMiwxMTFdLDY6WzIsMTExXSwyNTpbMiwxMTFdLDI2OlsyLDExMV0sMzg6WzIsMTExXSw0NzpbMiwxMTFdLDUyOlsyLDExMV0sNTU6WzIsMTExXSw2NDpbMiwxMTFdLDY1OlsyLDExMV0sNjY6WzIsMTExXSw2ODpbMiwxMTFdLDcwOlsyLDExMV0sNzE6WzIsMTExXSw3NTpbMiwxMTFdLDgxOlsyLDExMV0sODI6WzIsMTExXSw4MzpbMiwxMTFdLDg4OlsyLDExMV0sOTA6WzIsMTExXSw5OTpbMiwxMTFdLDEwMTpbMiwxMTFdLDEwMjpbMiwxMTFdLDEwMzpbMiwxMTFdLDEwNzpbMiwxMTFdLDExMzpbMiwxMTFdLDExNDpbMiwxMTFdLDExNTpbMiwxMTFdLDEyMzpbMiwxMTFdLDEyNTpbMiwxMTFdLDEyNjpbMiwxMTFdLDEyOTpbMiwxMTFdLDEzMDpbMiwxMTFdLDEzMTpbMiwxMTFdLDEzMjpbMiwxMTFdLDEzMzpbMiwxMTFdLDEzNDpbMiwxMTFdfSx7ODoxOTcsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1ODoxNDUsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTE6MjkyLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7ODoxOTcsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNTpbMSwxNDRdLDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU4OjE0NSw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NDoyOTMsODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTE6MTQzLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7NjpbMiwxMjBdLDI1OlsyLDEyMF0sMjY6WzIsMTIwXSw1MjpbMiwxMjBdLDgzOlsyLDEyMF0sODg6WzIsMTIwXX0sezY6WzEsMjYwXSwyNTpbMSwyNjFdLDI2OlsxLDI5NF19LHsxOlsyLDEzN10sNjpbMiwxMzddLDI1OlsyLDEzN10sMjY6WzIsMTM3XSw0NzpbMiwxMzddLDUyOlsyLDEzN10sNTU6WzIsMTM3XSw3MDpbMiwxMzddLDc1OlsyLDEzN10sODM6WzIsMTM3XSw4ODpbMiwxMzddLDkwOlsyLDEzN10sOTk6WzIsMTM3XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDI6WzIsMTM3XSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMTU6WzIsMTM3XSwxMjM6WzIsMTM3XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsxOlsyLDEzOV0sNjpbMiwxMzldLDI1OlsyLDEzOV0sMjY6WzIsMTM5XSw0NzpbMiwxMzldLDUyOlsyLDEzOV0sNTU6WzIsMTM5XSw3MDpbMiwxMzldLDc1OlsyLDEzOV0sODM6WzIsMTM5XSw4ODpbMiwxMzldLDkwOlsyLDEzOV0sOTk6WzIsMTM5XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDI6WzIsMTM5XSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMTU6WzIsMTM5XSwxMjM6WzIsMTM5XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsxMTM6WzIsMTU3XSwxMTQ6WzIsMTU3XX0sezg6Mjk1LDk6MTE1LDEwOjIwLDExOjIxLDEyOlsxLDIyXSwxMzo4LDE0OjksMTU6MTAsMTY6MTEsMTc6MTIsMTg6MTMsMTk6MTQsMjA6MTUsMjE6MTYsMjI6MTcsMjM6MTgsMjQ6MTksMjc6NjAsMjg6WzEsNzFdLDI5OjQ5LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzI6MjQsMzM6WzEsNTBdLDM0OlsxLDUxXSwzNTpbMSw1Ml0sMzY6WzEsNTNdLDM3OjIzLDQyOjYxLDQzOlsxLDQ1XSw0NDpbMSw0Nl0sNDU6WzEsMjldLDQ4OjMwLDQ5OlsxLDU4XSw1MDpbMSw1OV0sNTY6NDcsNTc6NDgsNTk6MzYsNjE6MjUsNjI6MjYsNjM6MjcsNzM6WzEsNjhdLDc2OlsxLDQzXSw4MDpbMSwyOF0sODU6WzEsNTZdLDg2OlsxLDU3XSw4NzpbMSw1NV0sOTM6WzEsMzhdLDk3OlsxLDQ0XSw5ODpbMSw1NF0sMTAwOjM5LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDQ6NDAsMTA1OlsxLDY1XSwxMDY6NDEsMTA3OlsxLDY2XSwxMDg6NjcsMTE2OlsxLDQyXSwxMjE6MzcsMTIyOlsxLDYyXSwxMjQ6WzEsMzFdLDEyNTpbMSwzMl0sMTI2OlsxLDMzXSwxMjc6WzEsMzRdLDEyODpbMSwzNV19LHs4OjI5Niw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7ODoyOTcsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezE6WzIsODVdLDY6WzIsODVdLDI1OlsyLDg1XSwyNjpbMiw4NV0sMzg6WzIsODVdLDQ3OlsyLDg1XSw1MjpbMiw4NV0sNTU6WzIsODVdLDY0OlsyLDg1XSw2NTpbMiw4NV0sNjY6WzIsODVdLDY4OlsyLDg1XSw3MDpbMiw4NV0sNzE6WzIsODVdLDc1OlsyLDg1XSw4MTpbMiw4NV0sODI6WzIsODVdLDgzOlsyLDg1XSw4ODpbMiw4NV0sOTA6WzIsODVdLDk5OlsyLDg1XSwxMDE6WzIsODVdLDEwMjpbMiw4NV0sMTAzOlsyLDg1XSwxMDc6WzIsODVdLDExMzpbMiw4NV0sMTE0OlsyLDg1XSwxMTU6WzIsODVdLDEyMzpbMiw4NV0sMTI1OlsyLDg1XSwxMjY6WzIsODVdLDEyOTpbMiw4NV0sMTMwOlsyLDg1XSwxMzE6WzIsODVdLDEzMjpbMiw4NV0sMTMzOlsyLDg1XSwxMzQ6WzIsODVdfSx7MTE6MTY1LDI3OjE2NiwyODpbMSw3MV0sMjk6MTY3LDMwOlsxLDY5XSwzMTpbMSw3MF0sMzk6Mjk4LDQwOjE2NCw0MjoxNjgsNDQ6WzEsNDZdLDg2OlsxLDExMV19LHs2OlsyLDg2XSwxMToxNjUsMjU6WzIsODZdLDI2OlsyLDg2XSwyNzoxNjYsMjg6WzEsNzFdLDI5OjE2NywzMDpbMSw2OV0sMzE6WzEsNzBdLDM5OjE2Myw0MDoxNjQsNDI6MTY4LDQ0OlsxLDQ2XSw1MjpbMiw4Nl0sNzQ6Mjk5LDg2OlsxLDExMV19LHs2OlsyLDg4XSwyNTpbMiw4OF0sMjY6WzIsODhdLDUyOlsyLDg4XSw3NTpbMiw4OF19LHs2OlsyLDM4XSwyNTpbMiwzOF0sMjY6WzIsMzhdLDUyOlsyLDM4XSw3NTpbMiwzOF0sMTAwOjg1LDEwMTpbMSw2M10sMTAzOlsxLDY0XSwxMDY6ODYsMTA3OlsxLDY2XSwxMDg6NjcsMTIzOlsxLDg0XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHs4OjMwMCw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7NzA6WzIsMTE1XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsMzZdLDY6WzIsMzZdLDI1OlsyLDM2XSwyNjpbMiwzNl0sNDc6WzIsMzZdLDUyOlsyLDM2XSw1NTpbMiwzNl0sNzA6WzIsMzZdLDc1OlsyLDM2XSw4MzpbMiwzNl0sODg6WzIsMzZdLDkwOlsyLDM2XSw5OTpbMiwzNl0sMTAxOlsyLDM2XSwxMDI6WzIsMzZdLDEwMzpbMiwzNl0sMTA3OlsyLDM2XSwxMTU6WzIsMzZdLDEyMzpbMiwzNl0sMTI1OlsyLDM2XSwxMjY6WzIsMzZdLDEyOTpbMiwzNl0sMTMwOlsyLDM2XSwxMzE6WzIsMzZdLDEzMjpbMiwzNl0sMTMzOlsyLDM2XSwxMzQ6WzIsMzZdfSx7MTpbMiwxMDZdLDY6WzIsMTA2XSwyNTpbMiwxMDZdLDI2OlsyLDEwNl0sNDc6WzIsMTA2XSw1MjpbMiwxMDZdLDU1OlsyLDEwNl0sNjQ6WzIsMTA2XSw2NTpbMiwxMDZdLDY2OlsyLDEwNl0sNjg6WzIsMTA2XSw3MDpbMiwxMDZdLDcxOlsyLDEwNl0sNzU6WzIsMTA2XSw4MTpbMiwxMDZdLDgyOlsyLDEwNl0sODM6WzIsMTA2XSw4ODpbMiwxMDZdLDkwOlsyLDEwNl0sOTk6WzIsMTA2XSwxMDE6WzIsMTA2XSwxMDI6WzIsMTA2XSwxMDM6WzIsMTA2XSwxMDc6WzIsMTA2XSwxMTU6WzIsMTA2XSwxMjM6WzIsMTA2XSwxMjU6WzIsMTA2XSwxMjY6WzIsMTA2XSwxMjk6WzIsMTA2XSwxMzA6WzIsMTA2XSwxMzE6WzIsMTA2XSwxMzI6WzIsMTA2XSwxMzM6WzIsMTA2XSwxMzQ6WzIsMTA2XX0sezE6WzIsNDddLDY6WzIsNDddLDI1OlsyLDQ3XSwyNjpbMiw0N10sNDc6WzIsNDddLDUyOlsyLDQ3XSw1NTpbMiw0N10sNzA6WzIsNDddLDc1OlsyLDQ3XSw4MzpbMiw0N10sODg6WzIsNDddLDkwOlsyLDQ3XSw5OTpbMiw0N10sMTAxOlsyLDQ3XSwxMDI6WzIsNDddLDEwMzpbMiw0N10sMTA3OlsyLDQ3XSwxMTU6WzIsNDddLDEyMzpbMiw0N10sMTI1OlsyLDQ3XSwxMjY6WzIsNDddLDEyOTpbMiw0N10sMTMwOlsyLDQ3XSwxMzE6WzIsNDddLDEzMjpbMiw0N10sMTMzOlsyLDQ3XSwxMzQ6WzIsNDddfSx7MTpbMiwxOTVdLDY6WzIsMTk1XSwyNTpbMiwxOTVdLDI2OlsyLDE5NV0sNDc6WzIsMTk1XSw1MjpbMiwxOTVdLDU1OlsyLDE5NV0sNzA6WzIsMTk1XSw3NTpbMiwxOTVdLDgzOlsyLDE5NV0sODg6WzIsMTk1XSw5MDpbMiwxOTVdLDk5OlsyLDE5NV0sMTAxOlsyLDE5NV0sMTAyOlsyLDE5NV0sMTAzOlsyLDE5NV0sMTA3OlsyLDE5NV0sMTE1OlsyLDE5NV0sMTIzOlsyLDE5NV0sMTI1OlsyLDE5NV0sMTI2OlsyLDE5NV0sMTI5OlsyLDE5NV0sMTMwOlsyLDE5NV0sMTMxOlsyLDE5NV0sMTMyOlsyLDE5NV0sMTMzOlsyLDE5NV0sMTM0OlsyLDE5NV19LHsxOlsyLDE3NF0sNjpbMiwxNzRdLDI1OlsyLDE3NF0sMjY6WzIsMTc0XSw0NzpbMiwxNzRdLDUyOlsyLDE3NF0sNTU6WzIsMTc0XSw3MDpbMiwxNzRdLDc1OlsyLDE3NF0sODM6WzIsMTc0XSw4ODpbMiwxNzRdLDkwOlsyLDE3NF0sOTk6WzIsMTc0XSwxMDE6WzIsMTc0XSwxMDI6WzIsMTc0XSwxMDM6WzIsMTc0XSwxMDc6WzIsMTc0XSwxMTU6WzIsMTc0XSwxMTg6WzIsMTc0XSwxMjM6WzIsMTc0XSwxMjU6WzIsMTc0XSwxMjY6WzIsMTc0XSwxMjk6WzIsMTc0XSwxMzA6WzIsMTc0XSwxMzE6WzIsMTc0XSwxMzI6WzIsMTc0XSwxMzM6WzIsMTc0XSwxMzQ6WzIsMTc0XX0sezE6WzIsMTMxXSw2OlsyLDEzMV0sMjU6WzIsMTMxXSwyNjpbMiwxMzFdLDQ3OlsyLDEzMV0sNTI6WzIsMTMxXSw1NTpbMiwxMzFdLDcwOlsyLDEzMV0sNzU6WzIsMTMxXSw4MzpbMiwxMzFdLDg4OlsyLDEzMV0sOTA6WzIsMTMxXSw5OTpbMiwxMzFdLDEwMTpbMiwxMzFdLDEwMjpbMiwxMzFdLDEwMzpbMiwxMzFdLDEwNzpbMiwxMzFdLDExNTpbMiwxMzFdLDEyMzpbMiwxMzFdLDEyNTpbMiwxMzFdLDEyNjpbMiwxMzFdLDEyOTpbMiwxMzFdLDEzMDpbMiwxMzFdLDEzMTpbMiwxMzFdLDEzMjpbMiwxMzFdLDEzMzpbMiwxMzFdLDEzNDpbMiwxMzFdfSx7MTpbMiwxMzJdLDY6WzIsMTMyXSwyNTpbMiwxMzJdLDI2OlsyLDEzMl0sNDc6WzIsMTMyXSw1MjpbMiwxMzJdLDU1OlsyLDEzMl0sNzA6WzIsMTMyXSw3NTpbMiwxMzJdLDgzOlsyLDEzMl0sODg6WzIsMTMyXSw5MDpbMiwxMzJdLDk1OlsyLDEzMl0sOTk6WzIsMTMyXSwxMDE6WzIsMTMyXSwxMDI6WzIsMTMyXSwxMDM6WzIsMTMyXSwxMDc6WzIsMTMyXSwxMTU6WzIsMTMyXSwxMjM6WzIsMTMyXSwxMjU6WzIsMTMyXSwxMjY6WzIsMTMyXSwxMjk6WzIsMTMyXSwxMzA6WzIsMTMyXSwxMzE6WzIsMTMyXSwxMzI6WzIsMTMyXSwxMzM6WzIsMTMyXSwxMzQ6WzIsMTMyXX0sezE6WzIsMTY1XSw2OlsyLDE2NV0sMjU6WzIsMTY1XSwyNjpbMiwxNjVdLDQ3OlsyLDE2NV0sNTI6WzIsMTY1XSw1NTpbMiwxNjVdLDcwOlsyLDE2NV0sNzU6WzIsMTY1XSw4MzpbMiwxNjVdLDg4OlsyLDE2NV0sOTA6WzIsMTY1XSw5OTpbMiwxNjVdLDEwMTpbMiwxNjVdLDEwMjpbMiwxNjVdLDEwMzpbMiwxNjVdLDEwNzpbMiwxNjVdLDExNTpbMiwxNjVdLDEyMzpbMiwxNjVdLDEyNTpbMiwxNjVdLDEyNjpbMiwxNjVdLDEyOTpbMiwxNjVdLDEzMDpbMiwxNjVdLDEzMTpbMiwxNjVdLDEzMjpbMiwxNjVdLDEzMzpbMiwxNjVdLDEzNDpbMiwxNjVdfSx7NTozMDEsMjU6WzEsNV19LHsyNjpbMSwzMDJdfSx7NjpbMSwzMDNdLDI2OlsyLDE3MV0sMTE4OlsyLDE3MV0sMTIwOlsyLDE3MV19LHs4OjMwNCw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7MTpbMiw5OF0sNjpbMiw5OF0sMjU6WzIsOThdLDI2OlsyLDk4XSw0NzpbMiw5OF0sNTI6WzIsOThdLDU1OlsyLDk4XSw3MDpbMiw5OF0sNzU6WzIsOThdLDgzOlsyLDk4XSw4ODpbMiw5OF0sOTA6WzIsOThdLDk5OlsyLDk4XSwxMDE6WzIsOThdLDEwMjpbMiw5OF0sMTAzOlsyLDk4XSwxMDc6WzIsOThdLDExNTpbMiw5OF0sMTIzOlsyLDk4XSwxMjU6WzIsOThdLDEyNjpbMiw5OF0sMTI5OlsyLDk4XSwxMzA6WzIsOThdLDEzMTpbMiw5OF0sMTMyOlsyLDk4XSwxMzM6WzIsOThdLDEzNDpbMiw5OF19LHsxOlsyLDEzNV0sNjpbMiwxMzVdLDI1OlsyLDEzNV0sMjY6WzIsMTM1XSw0NzpbMiwxMzVdLDUyOlsyLDEzNV0sNTU6WzIsMTM1XSw2NDpbMiwxMzVdLDY1OlsyLDEzNV0sNjY6WzIsMTM1XSw2ODpbMiwxMzVdLDcwOlsyLDEzNV0sNzE6WzIsMTM1XSw3NTpbMiwxMzVdLDgxOlsyLDEzNV0sODI6WzIsMTM1XSw4MzpbMiwxMzVdLDg4OlsyLDEzNV0sOTA6WzIsMTM1XSw5OTpbMiwxMzVdLDEwMTpbMiwxMzVdLDEwMjpbMiwxMzVdLDEwMzpbMiwxMzVdLDEwNzpbMiwxMzVdLDExNTpbMiwxMzVdLDEyMzpbMiwxMzVdLDEyNTpbMiwxMzVdLDEyNjpbMiwxMzVdLDEyOTpbMiwxMzVdLDEzMDpbMiwxMzVdLDEzMTpbMiwxMzVdLDEzMjpbMiwxMzVdLDEzMzpbMiwxMzVdLDEzNDpbMiwxMzVdfSx7MTpbMiwxMTRdLDY6WzIsMTE0XSwyNTpbMiwxMTRdLDI2OlsyLDExNF0sNDc6WzIsMTE0XSw1MjpbMiwxMTRdLDU1OlsyLDExNF0sNjQ6WzIsMTE0XSw2NTpbMiwxMTRdLDY2OlsyLDExNF0sNjg6WzIsMTE0XSw3MDpbMiwxMTRdLDcxOlsyLDExNF0sNzU6WzIsMTE0XSw4MTpbMiwxMTRdLDgyOlsyLDExNF0sODM6WzIsMTE0XSw4ODpbMiwxMTRdLDkwOlsyLDExNF0sOTk6WzIsMTE0XSwxMDE6WzIsMTE0XSwxMDI6WzIsMTE0XSwxMDM6WzIsMTE0XSwxMDc6WzIsMTE0XSwxMTU6WzIsMTE0XSwxMjM6WzIsMTE0XSwxMjU6WzIsMTE0XSwxMjY6WzIsMTE0XSwxMjk6WzIsMTE0XSwxMzA6WzIsMTE0XSwxMzE6WzIsMTE0XSwxMzI6WzIsMTE0XSwxMzM6WzIsMTE0XSwxMzQ6WzIsMTE0XX0sezY6WzIsMTIxXSwyNTpbMiwxMjFdLDI2OlsyLDEyMV0sNTI6WzIsMTIxXSw4MzpbMiwxMjFdLDg4OlsyLDEyMV19LHs2OlsyLDUxXSwyNTpbMiw1MV0sMjY6WzIsNTFdLDUxOjMwNSw1MjpbMSwyMjJdfSx7NjpbMiwxMjJdLDI1OlsyLDEyMl0sMjY6WzIsMTIyXSw1MjpbMiwxMjJdLDgzOlsyLDEyMl0sODg6WzIsMTIyXX0sezE6WzIsMTYwXSw2OlsyLDE2MF0sMjU6WzIsMTYwXSwyNjpbMiwxNjBdLDQ3OlsyLDE2MF0sNTI6WzIsMTYwXSw1NTpbMiwxNjBdLDcwOlsyLDE2MF0sNzU6WzIsMTYwXSw4MzpbMiwxNjBdLDg4OlsyLDE2MF0sOTA6WzIsMTYwXSw5OTpbMiwxNjBdLDEwMDo4NSwxMDE6WzIsMTYwXSwxMDI6WzIsMTYwXSwxMDM6WzIsMTYwXSwxMDY6ODYsMTA3OlsyLDE2MF0sMTA4OjY3LDExNTpbMSwzMDZdLDEyMzpbMiwxNjBdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsMTYyXSw2OlsyLDE2Ml0sMjU6WzIsMTYyXSwyNjpbMiwxNjJdLDQ3OlsyLDE2Ml0sNTI6WzIsMTYyXSw1NTpbMiwxNjJdLDcwOlsyLDE2Ml0sNzU6WzIsMTYyXSw4MzpbMiwxNjJdLDg4OlsyLDE2Ml0sOTA6WzIsMTYyXSw5OTpbMiwxNjJdLDEwMDo4NSwxMDE6WzIsMTYyXSwxMDI6WzEsMzA3XSwxMDM6WzIsMTYyXSwxMDY6ODYsMTA3OlsyLDE2Ml0sMTA4OjY3LDExNTpbMiwxNjJdLDEyMzpbMiwxNjJdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezE6WzIsMTYxXSw2OlsyLDE2MV0sMjU6WzIsMTYxXSwyNjpbMiwxNjFdLDQ3OlsyLDE2MV0sNTI6WzIsMTYxXSw1NTpbMiwxNjFdLDcwOlsyLDE2MV0sNzU6WzIsMTYxXSw4MzpbMiwxNjFdLDg4OlsyLDE2MV0sOTA6WzIsMTYxXSw5OTpbMiwxNjFdLDEwMDo4NSwxMDE6WzIsMTYxXSwxMDI6WzIsMTYxXSwxMDM6WzIsMTYxXSwxMDY6ODYsMTA3OlsyLDE2MV0sMTA4OjY3LDExNTpbMiwxNjFdLDEyMzpbMiwxNjFdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezY6WzIsODldLDI1OlsyLDg5XSwyNjpbMiw4OV0sNTI6WzIsODldLDc1OlsyLDg5XX0sezY6WzIsNTFdLDI1OlsyLDUxXSwyNjpbMiw1MV0sNTE6MzA4LDUyOlsxLDIzMl19LHsyNjpbMSwzMDldLDEwMDo4NSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA2Ojg2LDEwNzpbMSw2Nl0sMTA4OjY3LDEyMzpbMSw4NF0sMTI1OlsxLDc4XSwxMjY6WzEsNzddLDEyOTpbMSw3Nl0sMTMwOlsxLDc5XSwxMzE6WzEsODBdLDEzMjpbMSw4MV0sMTMzOlsxLDgyXSwxMzQ6WzEsODNdfSx7MjY6WzEsMzEwXX0sezE6WzIsMTY4XSw2OlsyLDE2OF0sMjU6WzIsMTY4XSwyNjpbMiwxNjhdLDQ3OlsyLDE2OF0sNTI6WzIsMTY4XSw1NTpbMiwxNjhdLDcwOlsyLDE2OF0sNzU6WzIsMTY4XSw4MzpbMiwxNjhdLDg4OlsyLDE2OF0sOTA6WzIsMTY4XSw5OTpbMiwxNjhdLDEwMTpbMiwxNjhdLDEwMjpbMiwxNjhdLDEwMzpbMiwxNjhdLDEwNzpbMiwxNjhdLDExNTpbMiwxNjhdLDEyMzpbMiwxNjhdLDEyNTpbMiwxNjhdLDEyNjpbMiwxNjhdLDEyOTpbMiwxNjhdLDEzMDpbMiwxNjhdLDEzMTpbMiwxNjhdLDEzMjpbMiwxNjhdLDEzMzpbMiwxNjhdLDEzNDpbMiwxNjhdfSx7MjY6WzIsMTcyXSwxMTg6WzIsMTcyXSwxMjA6WzIsMTcyXX0sezI1OlsyLDEyN10sNTI6WzIsMTI3XSwxMDA6ODUsMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNjo4NiwxMDc6WzEsNjZdLDEwODo2NywxMjM6WzEsODRdLDEyNTpbMSw3OF0sMTI2OlsxLDc3XSwxMjk6WzEsNzZdLDEzMDpbMSw3OV0sMTMxOlsxLDgwXSwxMzI6WzEsODFdLDEzMzpbMSw4Ml0sMTM0OlsxLDgzXX0sezY6WzEsMjYwXSwyNTpbMSwyNjFdLDI2OlsxLDMxMV19LHs4OjMxMiw5OjExNSwxMDoyMCwxMToyMSwxMjpbMSwyMl0sMTM6OCwxNDo5LDE1OjEwLDE2OjExLDE3OjEyLDE4OjEzLDE5OjE0LDIwOjE1LDIxOjE2LDIyOjE3LDIzOjE4LDI0OjE5LDI3OjYwLDI4OlsxLDcxXSwyOTo0OSwzMDpbMSw2OV0sMzE6WzEsNzBdLDMyOjI0LDMzOlsxLDUwXSwzNDpbMSw1MV0sMzU6WzEsNTJdLDM2OlsxLDUzXSwzNzoyMyw0Mjo2MSw0MzpbMSw0NV0sNDQ6WzEsNDZdLDQ1OlsxLDI5XSw0ODozMCw0OTpbMSw1OF0sNTA6WzEsNTldLDU2OjQ3LDU3OjQ4LDU5OjM2LDYxOjI1LDYyOjI2LDYzOjI3LDczOlsxLDY4XSw3NjpbMSw0M10sODA6WzEsMjhdLDg1OlsxLDU2XSw4NjpbMSw1N10sODc6WzEsNTVdLDkzOlsxLDM4XSw5NzpbMSw0NF0sOTg6WzEsNTRdLDEwMDozOSwxMDE6WzEsNjNdLDEwMzpbMSw2NF0sMTA0OjQwLDEwNTpbMSw2NV0sMTA2OjQxLDEwNzpbMSw2Nl0sMTA4OjY3LDExNjpbMSw0Ml0sMTIxOjM3LDEyMjpbMSw2Ml0sMTI0OlsxLDMxXSwxMjU6WzEsMzJdLDEyNjpbMSwzM10sMTI3OlsxLDM0XSwxMjg6WzEsMzVdfSx7ODozMTMsOToxMTUsMTA6MjAsMTE6MjEsMTI6WzEsMjJdLDEzOjgsMTQ6OSwxNToxMCwxNjoxMSwxNzoxMiwxODoxMywxOToxNCwyMDoxNSwyMToxNiwyMjoxNywyMzoxOCwyNDoxOSwyNzo2MCwyODpbMSw3MV0sMjk6NDksMzA6WzEsNjldLDMxOlsxLDcwXSwzMjoyNCwzMzpbMSw1MF0sMzQ6WzEsNTFdLDM1OlsxLDUyXSwzNjpbMSw1M10sMzc6MjMsNDI6NjEsNDM6WzEsNDVdLDQ0OlsxLDQ2XSw0NTpbMSwyOV0sNDg6MzAsNDk6WzEsNThdLDUwOlsxLDU5XSw1Njo0Nyw1Nzo0OCw1OTozNiw2MToyNSw2MjoyNiw2MzoyNyw3MzpbMSw2OF0sNzY6WzEsNDNdLDgwOlsxLDI4XSw4NTpbMSw1Nl0sODY6WzEsNTddLDg3OlsxLDU1XSw5MzpbMSwzOF0sOTc6WzEsNDRdLDk4OlsxLDU0XSwxMDA6MzksMTAxOlsxLDYzXSwxMDM6WzEsNjRdLDEwNDo0MCwxMDU6WzEsNjVdLDEwNjo0MSwxMDc6WzEsNjZdLDEwODo2NywxMTY6WzEsNDJdLDEyMTozNywxMjI6WzEsNjJdLDEyNDpbMSwzMV0sMTI1OlsxLDMyXSwxMjY6WzEsMzNdLDEyNzpbMSwzNF0sMTI4OlsxLDM1XX0sezY6WzEsMjcxXSwyNTpbMSwyNzJdLDI2OlsxLDMxNF19LHs2OlsyLDM5XSwyNTpbMiwzOV0sMjY6WzIsMzldLDUyOlsyLDM5XSw3NTpbMiwzOV19LHsxOlsyLDE2Nl0sNjpbMiwxNjZdLDI1OlsyLDE2Nl0sMjY6WzIsMTY2XSw0NzpbMiwxNjZdLDUyOlsyLDE2Nl0sNTU6WzIsMTY2XSw3MDpbMiwxNjZdLDc1OlsyLDE2Nl0sODM6WzIsMTY2XSw4ODpbMiwxNjZdLDkwOlsyLDE2Nl0sOTk6WzIsMTY2XSwxMDE6WzIsMTY2XSwxMDI6WzIsMTY2XSwxMDM6WzIsMTY2XSwxMDc6WzIsMTY2XSwxMTU6WzIsMTY2XSwxMjM6WzIsMTY2XSwxMjU6WzIsMTY2XSwxMjY6WzIsMTY2XSwxMjk6WzIsMTY2XSwxMzA6WzIsMTY2XSwxMzE6WzIsMTY2XSwxMzI6WzIsMTY2XSwxMzM6WzIsMTY2XSwxMzQ6WzIsMTY2XX0sezY6WzIsMTIzXSwyNTpbMiwxMjNdLDI2OlsyLDEyM10sNTI6WzIsMTIzXSw4MzpbMiwxMjNdLDg4OlsyLDEyM119LHsxOlsyLDE2M10sNjpbMiwxNjNdLDI1OlsyLDE2M10sMjY6WzIsMTYzXSw0NzpbMiwxNjNdLDUyOlsyLDE2M10sNTU6WzIsMTYzXSw3MDpbMiwxNjNdLDc1OlsyLDE2M10sODM6WzIsMTYzXSw4ODpbMiwxNjNdLDkwOlsyLDE2M10sOTk6WzIsMTYzXSwxMDA6ODUsMTAxOlsyLDE2M10sMTAyOlsyLDE2M10sMTAzOlsyLDE2M10sMTA2Ojg2LDEwNzpbMiwxNjNdLDEwODo2NywxMTU6WzIsMTYzXSwxMjM6WzIsMTYzXSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHsxOlsyLDE2NF0sNjpbMiwxNjRdLDI1OlsyLDE2NF0sMjY6WzIsMTY0XSw0NzpbMiwxNjRdLDUyOlsyLDE2NF0sNTU6WzIsMTY0XSw3MDpbMiwxNjRdLDc1OlsyLDE2NF0sODM6WzIsMTY0XSw4ODpbMiwxNjRdLDkwOlsyLDE2NF0sOTk6WzIsMTY0XSwxMDA6ODUsMTAxOlsyLDE2NF0sMTAyOlsyLDE2NF0sMTAzOlsyLDE2NF0sMTA2Ojg2LDEwNzpbMiwxNjRdLDEwODo2NywxMTU6WzIsMTY0XSwxMjM6WzIsMTY0XSwxMjU6WzEsNzhdLDEyNjpbMSw3N10sMTI5OlsxLDc2XSwxMzA6WzEsNzldLDEzMTpbMSw4MF0sMTMyOlsxLDgxXSwxMzM6WzEsODJdLDEzNDpbMSw4M119LHs2OlsyLDkwXSwyNTpbMiw5MF0sMjY6WzIsOTBdLDUyOlsyLDkwXSw3NTpbMiw5MF19XSxkZWZhdWx0QWN0aW9uczp7NTg6WzIsNDldLDU5OlsyLDUwXSw3MzpbMiwzXSw5MjpbMiwxMDRdLDE4NjpbMiw4NF19LHBhcnNlRXJyb3I6ZnVuY3Rpb24odCxuKXt0aHJvdyBuZXcgRXJyb3IodCl9LHBhcnNlOmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGQoZSl7ci5sZW5ndGg9ci5sZW5ndGgtMiplLGkubGVuZ3RoPWkubGVuZ3RoLWUscy5sZW5ndGg9cy5sZW5ndGgtZX1mdW5jdGlvbiB2KCl7dmFyIGU7cmV0dXJuIGU9bi5sZXhlci5sZXgoKXx8MSx0eXBlb2YgZSE9Im51bWJlciImJihlPW4uc3ltYm9sc19bZV18fGUpLGV9dmFyIG49dGhpcyxyPVswXSxpPVtudWxsXSxzPVtdLG89dGhpcy50YWJsZSx1PSIiLGE9MCxmPTAsbD0wLGM9MixoPTE7dGhpcy5sZXhlci5zZXRJbnB1dCh0KSx0aGlzLmxleGVyLnl5PXRoaXMueXksdGhpcy55eS5sZXhlcj10aGlzLmxleGVyLHR5cGVvZiB0aGlzLmxleGVyLnl5bGxvYz09InVuZGVmaW5lZCImJih0aGlzLmxleGVyLnl5bGxvYz17fSk7dmFyIHA9dGhpcy5sZXhlci55eWxsb2M7cy5wdXNoKHApLHR5cGVvZiB0aGlzLnl5LnBhcnNlRXJyb3I9PSJmdW5jdGlvbiImJih0aGlzLnBhcnNlRXJyb3I9dGhpcy55eS5wYXJzZUVycm9yKTt2YXIgbSxnLHksYix3LEUsUz17fSx4LFQsTixDO2Zvcig7Oyl7eT1yW3IubGVuZ3RoLTFdLHRoaXMuZGVmYXVsdEFjdGlvbnNbeV0/Yj10aGlzLmRlZmF1bHRBY3Rpb25zW3ldOihtPT1udWxsJiYobT12KCkpLGI9b1t5XSYmb1t5XVttXSk7aWYodHlwZW9mIGI9PSJ1bmRlZmluZWQifHwhYi5sZW5ndGh8fCFiWzBdKWlmKCFsKXtDPVtdO2Zvcih4IGluIG9beV0pdGhpcy50ZXJtaW5hbHNfW3hdJiZ4PjImJkMucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW3hdKyInIik7dmFyIGs9IiI7dGhpcy5sZXhlci5zaG93UG9zaXRpb24/az0iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhhKzEpKyI6XG4iK3RoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKCkrIlxuRXhwZWN0aW5nICIrQy5qb2luKCIsICIpKyIsIGdvdCAnIit0aGlzLnRlcm1pbmFsc19bbV0rIiciOms9IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYSsxKSsiOiBVbmV4cGVjdGVkICIrKG09PTE/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bbV18fG0pKyInIiksdGhpcy5wYXJzZUVycm9yKGsse3RleHQ6dGhpcy5sZXhlci5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bbV18fG0sbGluZTp0aGlzLmxleGVyLnl5bGluZW5vLGxvYzpwLGV4cGVjdGVkOkN9KX1pZihiWzBdaW5zdGFuY2VvZiBBcnJheSYmYi5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK3krIiwgdG9rZW46ICIrbSk7c3dpdGNoKGJbMF0pe2Nhc2UgMTpyLnB1c2gobSksaS5wdXNoKHRoaXMubGV4ZXIueXl0ZXh0KSxzLnB1c2godGhpcy5sZXhlci55eWxsb2MpLHIucHVzaChiWzFdKSxtPW51bGwsZz8obT1nLGc9bnVsbCk6KGY9dGhpcy5sZXhlci55eWxlbmcsdT10aGlzLmxleGVyLnl5dGV4dCxhPXRoaXMubGV4ZXIueXlsaW5lbm8scD10aGlzLmxleGVyLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOlQ9dGhpcy5wcm9kdWN0aW9uc19bYlsxXV1bMV0sUy4kPWlbaS5sZW5ndGgtVF0sUy5fJD17Zmlyc3RfbGluZTpzW3MubGVuZ3RoLShUfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6c1tzLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOnNbcy5sZW5ndGgtKFR8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46c1tzLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sRT10aGlzLnBlcmZvcm1BY3Rpb24uY2FsbChTLHUsZixhLHRoaXMueXksYlsxXSxpLHMpO2lmKHR5cGVvZiBFIT0idW5kZWZpbmVkIilyZXR1cm4gRTtUJiYocj1yLnNsaWNlKDAsLTEqVCoyKSxpPWkuc2xpY2UoMCwtMSpUKSxzPXMuc2xpY2UoMCwtMSpUKSksci5wdXNoKHRoaXMucHJvZHVjdGlvbnNfW2JbMV1dWzBdKSxpLnB1c2goUy4kKSxzLnB1c2goUy5fJCksTj1vW3Jbci5sZW5ndGgtMl1dW3Jbci5sZW5ndGgtMV1dLHIucHVzaChOKTticmVhaztjYXNlIDM6cmV0dXJuITB9fXJldHVybiEwfX07bi5leHBvcnRzPXJ9KSxkZWZpbmUoImFjZS9tb2RlL2NvZmZlZS9ub2RlcyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9tb2RlL2NvZmZlZS9zY29wZSIsImFjZS9tb2RlL2NvZmZlZS9sZXhlciIsImFjZS9tb2RlL2NvZmZlZS9oZWxwZXJzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByLGkscyxvLHUsYSxmLGwsYyxoLHAsZCx2LG0sZyx5LGIsdyxFLFMseCxULE4sQyxrLEwsQSxPLE0sXyxELFAsSCxCLGosRixJLHEsUixVLHosVyxYLFYsJCxKLEssUSxHLFksWixldCx0dCxudCxydCxpdCxzdCxvdCx1dCxhdCxmdCxsdCxjdCxodD17fS5oYXNPd25Qcm9wZXJ0eSxwdD1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9Zm9yKHZhciBuIGluIHQpaHQuY2FsbCh0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gci5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5wcm90b3R5cGU9bmV3IHIsZS5fX3N1cGVyX189dC5wcm90b3R5cGUsZX0sZHQ9W10uaW5kZXhPZnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj10aGlzLmxlbmd0aDt0PG47dCsrKWlmKHQgaW4gdGhpcyYmdGhpc1t0XT09PWUpcmV0dXJuIHQ7cmV0dXJuLTF9O1I9ZSgiLi9zY29wZSIpLlNjb3BlLGx0PWUoIi4vbGV4ZXIiKSxCPWx0LlJFU0VSVkVELHE9bHQuU1RSSUNUX1BST1NDUklCRUQsY3Q9ZSgiLi9oZWxwZXJzIiksWj1jdC5jb21wYWN0LHJ0PWN0LmZsYXR0ZW4sbnQ9Y3QuZXh0ZW5kLHN0PWN0Lm1lcmdlLGV0PWN0LmRlbCx1dD1jdC5zdGFydHMsdHQ9Y3QuZW5kcyxpdD1jdC5sYXN0LHQuZXh0ZW5kPW50LFk9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sTT1mdW5jdGlvbigpe3JldHVybiExfSxWPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LE89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGVkPSF0aGlzLm5lZ2F0ZWQsdGhpc30sdC5CYXNlPW89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLm5hbWU9IkJhc2UiLGUucHJvdG90eXBlLmNvbXBpbGU9ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gZT1udCh7fSxlKSx0JiYoZS5sZXZlbD10KSxuPXRoaXMudW5mb2xkU29hayhlKXx8dGhpcyxuLnRhYj1lLmluZGVudCxlLmxldmVsPT09a3x8IW4uaXNTdGF0ZW1lbnQoZSk/bi5jb21waWxlTm9kZShlKTpuLmNvbXBpbGVDbG9zdXJlKGUpfSxlLnByb3RvdHlwZS5jb21waWxlQ2xvc3VyZT1mdW5jdGlvbihlKXtpZih0aGlzLmp1bXBzKCkpdGhyb3cgU3ludGF4RXJyb3IoImNhbm5vdCB1c2UgYSBwdXJlIHN0YXRlbWVudCBpbiBhbiBleHByZXNzaW9uLiIpO3JldHVybiBlLnNoYXJlZFNjb3BlPSEwLGwud3JhcCh0aGlzKS5jb21waWxlTm9kZShlKX0sZS5wcm90b3R5cGUuY2FjaGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7cmV0dXJuIHRoaXMuaXNDb21wbGV4KCk/KHI9bmV3IEwobnx8ZS5zY29wZS5mcmVlVmFyaWFibGUoInJlZiIpKSxpPW5ldyBzKHIsdGhpcyksdD9baS5jb21waWxlKGUsdCksci52YWx1ZV06W2kscl0pOihyPXQ/dGhpcy5jb21waWxlKGUsdCk6dGhpcyxbcixyXSl9LGUucHJvdG90eXBlLmNvbXBpbGVMb29wUmVmZXJlbmNlPWZ1bmN0aW9uKGUsdCl7dmFyIG4scjtyZXR1cm4gbj1yPXRoaXMuY29tcGlsZShlLFQpLC1JbmZpbml0eTwrbiYmK248SW5maW5pdHl8fG0udGVzdChuKSYmZS5zY29wZS5jaGVjayhuLCEwKXx8KG49IiIrKHI9ZS5zY29wZS5mcmVlVmFyaWFibGUodCkpKyIgPSAiK24pLFtuLHJdfSxlLnByb3RvdHlwZS5tYWtlUmV0dXJuPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0PXRoaXMudW53cmFwQWxsKCksZT9uZXcgYShuZXcgTCgiIitlKyIucHVzaCIpLFt0XSk6bmV3IEYodCl9LGUucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0PSExLHRoaXMudHJhdmVyc2VDaGlsZHJlbighMSxmdW5jdGlvbihuKXtpZihlKG4pKXJldHVybiB0PSEwLCExfSksdH0sZS5wcm90b3R5cGUuY29udGFpbnNUeXBlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgZXx8dGhpcy5jb250YWlucyhmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGV9KX0sZS5wcm90b3R5cGUubGFzdE5vbkNvbW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ7dD1lLmxlbmd0aDt3aGlsZSh0LS0paWYoIShlW3RdaW5zdGFuY2VvZiBoKSlyZXR1cm4gZVt0XTtyZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gZT09bnVsbCYmKGU9IiIpLHQ9PW51bGwmJih0PXRoaXMuY29uc3RydWN0b3IubmFtZSksbj0iXG4iK2UrdCx0aGlzLnNvYWsmJihuKz0iPyIpLHRoaXMuZWFjaENoaWxkKGZ1bmN0aW9uKHQpe3JldHVybiBuKz10LnRvU3RyaW5nKGUrWCl9KSxufSxlLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGkscyxvLHUsYTtpZighdGhpcy5jaGlsZHJlbilyZXR1cm4gdGhpczt1PXRoaXMuY2hpbGRyZW47Zm9yKHI9MCxzPXUubGVuZ3RoO3I8cztyKyspe3Q9dVtyXTtpZih0aGlzW3RdKXthPXJ0KFt0aGlzW3RdXSk7Zm9yKGk9MCxvPWEubGVuZ3RoO2k8bztpKyspe249YVtpXTtpZihlKG4pPT09ITEpcmV0dXJuIHRoaXN9fX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUudHJhdmVyc2VDaGlsZHJlbj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmVhY2hDaGlsZChmdW5jdGlvbihuKXtyZXR1cm4gdChuKT09PSExPyExOm4udHJhdmVyc2VDaGlsZHJlbihlLHQpfSl9LGUucHJvdG90eXBlLmludmVydD1mdW5jdGlvbigpe3JldHVybiBuZXcgRCgiISIsdGhpcyl9LGUucHJvdG90eXBlLnVud3JhcEFsbD1mdW5jdGlvbigpe3ZhciBlO2U9dGhpczt3aGlsZShlIT09KGU9ZS51bndyYXAoKSkpY29udGludWU7cmV0dXJuIGV9LGUucHJvdG90eXBlLmNoaWxkcmVuPVtdLGUucHJvdG90eXBlLmlzU3RhdGVtZW50PU0sZS5wcm90b3R5cGUuanVtcHM9TSxlLnByb3RvdHlwZS5pc0NvbXBsZXg9WSxlLnByb3RvdHlwZS5pc0NoYWluYWJsZT1NLGUucHJvdG90eXBlLmlzQXNzaWduYWJsZT1NLGUucHJvdG90eXBlLnVud3JhcD1WLGUucHJvdG90eXBlLnVuZm9sZFNvYWs9TSxlLnByb3RvdHlwZS5hc3NpZ25zPU0sZX0oKSx0LkJsb2NrPXU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLmV4cHJlc3Npb25zPVoocnQoZXx8W10pKX1yZXR1cm4gcHQodCxlKSx0Lm5hbWU9IkJsb2NrIix0LnByb3RvdHlwZS5jaGlsZHJlbj1bImV4cHJlc3Npb25zIl0sdC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5leHByZXNzaW9ucy5wdXNoKGUpLHRoaXN9LHQucHJvdG90eXBlLnBvcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmV4cHJlc3Npb25zLnBvcCgpfSx0LnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmV4cHJlc3Npb25zLnVuc2hpZnQoZSksdGhpc30sdC5wcm90b3R5cGUudW53cmFwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXhwcmVzc2lvbnMubGVuZ3RoPT09MT90aGlzLmV4cHJlc3Npb25zWzBdOnRoaXN9LHQucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5leHByZXNzaW9ucy5sZW5ndGh9LHQucHJvdG90eXBlLmlzU3RhdGVtZW50PWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpO2k9dGhpcy5leHByZXNzaW9ucztmb3Iobj0wLHI9aS5sZW5ndGg7bjxyO24rKyl7dD1pW25dO2lmKHQuaXNTdGF0ZW1lbnQoZSkpcmV0dXJuITB9cmV0dXJuITF9LHQucHJvdG90eXBlLmp1bXBzPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpO2k9dGhpcy5leHByZXNzaW9ucztmb3Iobj0wLHI9aS5sZW5ndGg7bjxyO24rKyl7dD1pW25dO2lmKHQuanVtcHMoZSkpcmV0dXJuIHR9fSx0LnByb3RvdHlwZS5tYWtlUmV0dXJuPWZ1bmN0aW9uKGUpe3ZhciB0LG47bj10aGlzLmV4cHJlc3Npb25zLmxlbmd0aDt3aGlsZShuLS0pe3Q9dGhpcy5leHByZXNzaW9uc1tuXTtpZighKHQgaW5zdGFuY2VvZiBoKSl7dGhpcy5leHByZXNzaW9uc1tuXT10Lm1ha2VSZXR1cm4oZSksdCBpbnN0YW5jZW9mIEYmJiF0LmV4cHJlc3Npb24mJnRoaXMuZXhwcmVzc2lvbnMuc3BsaWNlKG4sMSk7YnJlYWt9fXJldHVybiB0aGlzfSx0LnByb3RvdHlwZS5jb21waWxlPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGU9PW51bGwmJihlPXt9KSxlLnNjb3BlP3QuX19zdXBlcl9fLmNvbXBpbGUuY2FsbCh0aGlzLGUsbik6dGhpcy5jb21waWxlUm9vdChlKX0sdC5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oZSl7dmFyIG4scixpLHMsbyx1LGE7dGhpcy50YWI9ZS5pbmRlbnQscz1lLmxldmVsPT09ayxyPVtdLGE9dGhpcy5leHByZXNzaW9ucztmb3Iobz0wLHU9YS5sZW5ndGg7bzx1O28rKylpPWFbb10saT1pLnVud3JhcEFsbCgpLGk9aS51bmZvbGRTb2FrKGUpfHxpLGkgaW5zdGFuY2VvZiB0P3IucHVzaChpLmNvbXBpbGVOb2RlKGUpKTpzPyhpLmZyb250PSEwLG49aS5jb21waWxlKGUpLGkuaXNTdGF0ZW1lbnQoZSl8fChuPSIiK3RoaXMudGFiK24rIjsiLGkgaW5zdGFuY2VvZiBMJiYobj0iIituKyJcbiIpKSxyLnB1c2gobikpOnIucHVzaChpLmNvbXBpbGUoZSxUKSk7cmV0dXJuIHM/dGhpcy5zcGFjZWQ/IlxuIityLmpvaW4oIlxuXG4iKSsiXG4iOnIuam9pbigiXG4iKToobj1yLmpvaW4oIiwgIil8fCJ2b2lkIDAiLHIubGVuZ3RoPjEmJmUubGV2ZWw+PVQ/IigiK24rIikiOm4pfSx0LnByb3RvdHlwZS5jb21waWxlUm9vdD1mdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxzLG87cmV0dXJuIGUuaW5kZW50PWUuYmFyZT8iIjpYLGUuc2NvcGU9bmV3IFIobnVsbCx0aGlzLG51bGwpLGUubGV2ZWw9ayx0aGlzLnNwYWNlZD0hMCxpPSIiLGUuYmFyZXx8KHM9ZnVuY3Rpb24oKXt2YXIgZSx0LGkscztpPXRoaXMuZXhwcmVzc2lvbnMscz1bXTtmb3Iocj1lPTAsdD1pLmxlbmd0aDtlPHQ7cj0rK2Upe249aVtyXTtpZighKG4udW53cmFwKClpbnN0YW5jZW9mIGgpKWJyZWFrO3MucHVzaChuKX1yZXR1cm4gc30uY2FsbCh0aGlzKSxvPXRoaXMuZXhwcmVzc2lvbnMuc2xpY2Uocy5sZW5ndGgpLHRoaXMuZXhwcmVzc2lvbnM9cyxzLmxlbmd0aCYmKGk9IiIrdGhpcy5jb21waWxlTm9kZShzdChlLHtpbmRlbnQ6IiJ9KSkrIlxuIiksdGhpcy5leHByZXNzaW9ucz1vKSx0PXRoaXMuY29tcGlsZVdpdGhEZWNsYXJhdGlvbnMoZSksZS5iYXJlP3Q6IiIraSsiKGZ1bmN0aW9uKCkge1xuIit0KyJcbn0pLmNhbGwodGhpcyk7XG4ifSx0LnByb3RvdHlwZS5jb21waWxlV2l0aERlY2xhcmF0aW9ucz1mdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxzLG8sdSxhLGYsbCxjLHAsZCx2O249bz0iIixwPXRoaXMuZXhwcmVzc2lvbnM7Zm9yKHM9bD0wLGM9cC5sZW5ndGg7bDxjO3M9KytsKXtpPXBbc10saT1pLnVud3JhcCgpO2lmKCEoaSBpbnN0YW5jZW9mIGh8fGkgaW5zdGFuY2VvZiBMKSlicmVha31lPXN0KGUse2xldmVsOmt9KSxzJiYodT10aGlzLmV4cHJlc3Npb25zLnNwbGljZShzLDllOSksZD1bdGhpcy5zcGFjZWQsITFdLGY9ZFswXSx0aGlzLnNwYWNlZD1kWzFdLHY9W3RoaXMuY29tcGlsZU5vZGUoZSksZl0sbj12WzBdLHRoaXMuc3BhY2VkPXZbMV0sdGhpcy5leHByZXNzaW9ucz11KSxvPXRoaXMuY29tcGlsZU5vZGUoZSksYT1lLnNjb3BlO2lmKGEuZXhwcmVzc2lvbnM9PT10aGlzKXtyPWUuc2NvcGUuaGFzRGVjbGFyYXRpb25zKCksdD1hLmhhc0Fzc2lnbm1lbnRzO2lmKHJ8fHQpcyYmKG4rPSJcbiIpLG4rPSIiK3RoaXMudGFiKyJ2YXIgIixyJiYobis9YS5kZWNsYXJlZFZhcmlhYmxlcygpLmpvaW4oIiwgIikpLHQmJihyJiYobis9IixcbiIrKHRoaXMudGFiK1gpKSxuKz1hLmFzc2lnbmVkVmFyaWFibGVzKCkuam9pbigiLFxuIisodGhpcy50YWIrWCkpKSxuKz0iO1xuIn1yZXR1cm4gbitvfSx0LndyYXA9ZnVuY3Rpb24oZSl7cmV0dXJuIGUubGVuZ3RoPT09MSYmZVswXWluc3RhbmNlb2YgdD9lWzBdOm5ldyB0KGUpfSx0fShvKSx0LkxpdGVyYWw9TD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3RoaXMudmFsdWU9ZX1yZXR1cm4gcHQodCxlKSx0Lm5hbWU9IkxpdGVyYWwiLHQucHJvdG90eXBlLm1ha2VSZXR1cm49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1N0YXRlbWVudCgpP3RoaXM6dC5fX3N1cGVyX18ubWFrZVJldHVybi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHQucHJvdG90eXBlLmlzQXNzaWduYWJsZT1mdW5jdGlvbigpe3JldHVybiBtLnRlc3QodGhpcy52YWx1ZSl9LHQucHJvdG90eXBlLmlzU3RhdGVtZW50PWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuKGU9dGhpcy52YWx1ZSk9PT0iYnJlYWsifHxlPT09ImNvbnRpbnVlInx8ZT09PSJkZWJ1Z2dlciJ9LHQucHJvdG90eXBlLmlzQ29tcGxleD1NLHQucHJvdG90eXBlLmFzc2lnbnM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10aGlzLnZhbHVlfSx0LnByb3RvdHlwZS5qdW1wcz1mdW5jdGlvbihlKXtpZih0aGlzLnZhbHVlPT09ImJyZWFrIiYmISgoZSE9bnVsbD9lLmxvb3A6dm9pZCAwKXx8KGUhPW51bGw/ZS5ibG9jazp2b2lkIDApKSlyZXR1cm4gdGhpcztpZih0aGlzLnZhbHVlPT09ImNvbnRpbnVlIiYmKGUhPW51bGw/IWUubG9vcDohdm9pZCAwKSlyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oZSl7dmFyIHQsbjtyZXR1cm4gdD10aGlzLmlzVW5kZWZpbmVkP2UubGV2ZWw+PVM/Iih2b2lkIDApIjoidm9pZCAwIjp0aGlzLnZhbHVlPT09InRoaXMiPygobj1lLnNjb3BlLm1ldGhvZCkhPW51bGw/bi5ib3VuZDp2b2lkIDApP2Uuc2NvcGUubWV0aG9kLmNvbnRleHQ6dGhpcy52YWx1ZTp0aGlzLnZhbHVlLnJlc2VydmVkPyciJyt0aGlzLnZhbHVlKyciJzp0aGlzLnZhbHVlLHRoaXMuaXNTdGF0ZW1lbnQoKT8iIit0aGlzLnRhYit0KyI7Ijp0fSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybicgIicrdGhpcy52YWx1ZSsnIid9LHR9KG8pLHQuUmV0dXJuPUY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXtlJiYhZS51bndyYXAoKS5pc1VuZGVmaW5lZCYmKHRoaXMuZXhwcmVzc2lvbj1lKX1yZXR1cm4gcHQodCxlKSx0Lm5hbWU9IlJldHVybiIsdC5wcm90b3R5cGUuY2hpbGRyZW49WyJleHByZXNzaW9uIl0sdC5wcm90b3R5cGUuaXNTdGF0ZW1lbnQ9WSx0LnByb3RvdHlwZS5tYWtlUmV0dXJuPVYsdC5wcm90b3R5cGUuanVtcHM9Vix0LnByb3RvdHlwZS5jb21waWxlPWZ1bmN0aW9uKGUsbil7dmFyIHIsaTtyZXR1cm4gcj0oaT10aGlzLmV4cHJlc3Npb24pIT1udWxsP2kubWFrZVJldHVybigpOnZvaWQgMCwhcnx8ciBpbnN0YW5jZW9mIHQ/dC5fX3N1cGVyX18uY29tcGlsZS5jYWxsKHRoaXMsZSxuKTpyLmNvbXBpbGUoZSxuKX0sdC5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGFiKygicmV0dXJuIitbdGhpcy5leHByZXNzaW9uPyIgIit0aGlzLmV4cHJlc3Npb24uY29tcGlsZShlLEMpOnZvaWQgMF0rIjsiKX0sdH0obyksdC5WYWx1ZT1RPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSxuLHIpe3JldHVybiFuJiZlIGluc3RhbmNlb2YgdD9lOih0aGlzLmJhc2U9ZSx0aGlzLnByb3BlcnRpZXM9bnx8W10sciYmKHRoaXNbcl09ITApLHRoaXMpfXJldHVybiBwdCh0LGUpLHQubmFtZT0iVmFsdWUiLHQucHJvdG90eXBlLmNoaWxkcmVuPVsiYmFzZSIsInByb3BlcnRpZXMiXSx0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJvcGVydGllcz10aGlzLnByb3BlcnRpZXMuY29uY2F0KGUpLHRoaXN9LHQucHJvdG90eXBlLmhhc1Byb3BlcnRpZXM9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucHJvcGVydGllcy5sZW5ndGh9LHQucHJvdG90eXBlLmlzQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aCYmdGhpcy5iYXNlIGluc3RhbmNlb2YgaX0sdC5wcm90b3R5cGUuaXNDb21wbGV4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFzUHJvcGVydGllcygpfHx0aGlzLmJhc2UuaXNDb21wbGV4KCl9LHQucHJvdG90eXBlLmlzQXNzaWduYWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc1Byb3BlcnRpZXMoKXx8dGhpcy5iYXNlLmlzQXNzaWduYWJsZSgpfSx0LnByb3RvdHlwZS5pc1NpbXBsZU51bWJlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJhc2UgaW5zdGFuY2VvZiBMJiZJLnRlc3QodGhpcy5iYXNlLnZhbHVlKX0sdC5wcm90b3R5cGUuaXNTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iYXNlIGluc3RhbmNlb2YgTCYmeS50ZXN0KHRoaXMuYmFzZS52YWx1ZSl9LHQucHJvdG90eXBlLmlzQXRvbWljPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI7cj10aGlzLnByb3BlcnRpZXMuY29uY2F0KHRoaXMuYmFzZSk7Zm9yKHQ9MCxuPXIubGVuZ3RoO3Q8bjt0Kyspe2U9clt0XTtpZihlLnNvYWt8fGUgaW5zdGFuY2VvZiBhKXJldHVybiExfXJldHVybiEwfSx0LnByb3RvdHlwZS5pc1N0YXRlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4hdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aCYmdGhpcy5iYXNlLmlzU3RhdGVtZW50KGUpfSx0LnByb3RvdHlwZS5hc3NpZ25zPWZ1bmN0aW9uKGUpe3JldHVybiF0aGlzLnByb3BlcnRpZXMubGVuZ3RoJiZ0aGlzLmJhc2UuYXNzaWducyhlKX0sdC5wcm90b3R5cGUuanVtcHM9ZnVuY3Rpb24oZSl7cmV0dXJuIXRoaXMucHJvcGVydGllcy5sZW5ndGgmJnRoaXMuYmFzZS5qdW1wcyhlKX0sdC5wcm90b3R5cGUuaXNPYmplY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJvcGVydGllcy5sZW5ndGg/ITE6dGhpcy5iYXNlIGluc3RhbmNlb2YgXyYmKCFlfHx0aGlzLmJhc2UuZ2VuZXJhdGVkKX0sdC5wcm90b3R5cGUuaXNTcGxpY2U9ZnVuY3Rpb24oKXtyZXR1cm4gaXQodGhpcy5wcm9wZXJ0aWVzKWluc3RhbmNlb2YgVX0sdC5wcm90b3R5cGUudW53cmFwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcGVydGllcy5sZW5ndGg/dGhpczp0aGlzLmJhc2V9LHQucHJvdG90eXBlLmNhY2hlUmVmZXJlbmNlPWZ1bmN0aW9uKGUpe3ZhciBuLHIsaSxvO3JldHVybiBpPWl0KHRoaXMucHJvcGVydGllcyksdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aDwyJiYhdGhpcy5iYXNlLmlzQ29tcGxleCgpJiYoaSE9bnVsbD8haS5pc0NvbXBsZXgoKTohdm9pZCAwKT9bdGhpcyx0aGlzXToobj1uZXcgdCh0aGlzLmJhc2UsdGhpcy5wcm9wZXJ0aWVzLnNsaWNlKDAsLTEpKSxuLmlzQ29tcGxleCgpJiYocj1uZXcgTChlLnNjb3BlLmZyZWVWYXJpYWJsZSgiYmFzZSIpKSxuPW5ldyB0KG5ldyBIKG5ldyBzKHIsbikpKSksaT8oaS5pc0NvbXBsZXgoKSYmKG89bmV3IEwoZS5zY29wZS5mcmVlVmFyaWFibGUoIm5hbWUiKSksaT1uZXcgRShuZXcgcyhvLGkuaW5kZXgpKSxvPW5ldyBFKG8pKSxbbi5hZGQoaSksbmV3IHQocnx8bi5iYXNlLFtvfHxpXSldKTpbbixyXSl9LHQucHJvdG90eXBlLmNvbXBpbGVOb2RlPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLHM7dGhpcy5iYXNlLmZyb250PXRoaXMuZnJvbnQscj10aGlzLnByb3BlcnRpZXMsdD10aGlzLmJhc2UuY29tcGlsZShlLHIubGVuZ3RoP1M6bnVsbCksKHRoaXMuYmFzZSBpbnN0YW5jZW9mIEh8fHIubGVuZ3RoKSYmSS50ZXN0KHQpJiYodD0iIit0KyIuIik7Zm9yKGk9MCxzPXIubGVuZ3RoO2k8cztpKyspbj1yW2ldLHQrPW4uY29tcGlsZShlKTtyZXR1cm4gdH0sdC5wcm90b3R5cGUudW5mb2xkU29haz1mdW5jdGlvbihlKXt2YXIgbixyPXRoaXM7cmV0dXJuIHRoaXMudW5mb2xkZWRTb2FrIT1udWxsP3RoaXMudW5mb2xkZWRTb2FrOihuPWZ1bmN0aW9uKCl7dmFyIG4saSxvLHUsYSxmLGwsYyxoO2lmKG89ci5iYXNlLnVuZm9sZFNvYWsoZSkpcmV0dXJuIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KG8uYm9keS5wcm9wZXJ0aWVzLHIucHJvcGVydGllcyksbztoPXIucHJvcGVydGllcztmb3IoaT1sPTAsYz1oLmxlbmd0aDtsPGM7aT0rK2wpe3U9aFtpXTtpZighdS5zb2FrKWNvbnRpbnVlO3JldHVybiB1LnNvYWs9ITEsbj1uZXcgdChyLmJhc2Usci5wcm9wZXJ0aWVzLnNsaWNlKDAsaSkpLGY9bmV3IHQoci5iYXNlLHIucHJvcGVydGllcy5zbGljZShpKSksbi5pc0NvbXBsZXgoKSYmKGE9bmV3IEwoZS5zY29wZS5mcmVlVmFyaWFibGUoInJlZiIpKSxuPW5ldyBIKG5ldyBzKGEsbikpLGYuYmFzZT1hKSxuZXcgYihuZXcgcChuKSxmLHtzb2FrOiEwfSl9cmV0dXJuIG51bGx9KCksdGhpcy51bmZvbGRlZFNvYWs9bnx8ITEpfSx0fShvKSx0LkNvbW1lbnQ9aD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3RoaXMuY29tbWVudD1lfXJldHVybiBwdCh0LGUpLHQubmFtZT0iQ29tbWVudCIsdC5wcm90b3R5cGUuaXNTdGF0ZW1lbnQ9WSx0LnByb3RvdHlwZS5tYWtlUmV0dXJuPVYsdC5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gbj0iLyoiK290KHRoaXMuY29tbWVudCx0aGlzLnRhYikrKCJcbiIrdGhpcy50YWIrIiovXG4iKSwodHx8ZS5sZXZlbCk9PT1rJiYobj1lLmluZGVudCtuKSxufSx0fShvKSx0LkNhbGw9YT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCxuKXt0aGlzLmFyZ3M9dCE9bnVsbD90OltdLHRoaXMuc29haz1uLHRoaXMuaXNOZXc9ITEsdGhpcy5pc1N1cGVyPWU9PT0ic3VwZXIiLHRoaXMudmFyaWFibGU9dGhpcy5pc1N1cGVyP251bGw6ZX1yZXR1cm4gcHQodCxlKSx0Lm5hbWU9IkNhbGwiLHQucHJvdG90eXBlLmNoaWxkcmVuPVsidmFyaWFibGUiLCJhcmdzIl0sdC5wcm90b3R5cGUubmV3SW5zdGFuY2U9ZnVuY3Rpb24oKXt2YXIgZSxuO3JldHVybiBlPSgobj10aGlzLnZhcmlhYmxlKSE9bnVsbD9uLmJhc2U6dm9pZCAwKXx8dGhpcy52YXJpYWJsZSxlIGluc3RhbmNlb2YgdCYmIWUuaXNOZXc/ZS5uZXdJbnN0YW5jZSgpOnRoaXMuaXNOZXc9ITAsdGhpc30sdC5wcm90b3R5cGUuc3VwZXJSZWZlcmVuY2U9ZnVuY3Rpb24oZSl7dmFyIHQsbixpO249ZS5zY29wZS5tZXRob2Q7aWYoIW4pdGhyb3cgU3ludGF4RXJyb3IoImNhbm5vdCBjYWxsIHN1cGVyIG91dHNpZGUgb2YgYSBmdW5jdGlvbi4iKTtpPW4ubmFtZTtpZihpPT1udWxsKXRocm93IFN5bnRheEVycm9yKCJjYW5ub3QgY2FsbCBzdXBlciBvbiBhbiBhbm9ueW1vdXMgZnVuY3Rpb24uIik7cmV0dXJuIG4ua2xhc3M/KHQ9W25ldyByKG5ldyBMKCJfX3N1cGVyX18iKSldLG5bInN0YXRpYyJdJiZ0LnB1c2gobmV3IHIobmV3IEwoImNvbnN0cnVjdG9yIikpKSx0LnB1c2gobmV3IHIobmV3IEwoaSkpKSwobmV3IFEobmV3IEwobi5rbGFzcyksdCkpLmNvbXBpbGUoZSkpOiIiK2krIi5fX3N1cGVyX18uY29uc3RydWN0b3IifSx0LnByb3RvdHlwZS51bmZvbGRTb2FrPWZ1bmN0aW9uKGUpe3ZhciBuLHIsaSxzLG8sdSxhLGYsbDtpZih0aGlzLnNvYWspe2lmKHRoaXMudmFyaWFibGUpe2lmKHI9YXQoZSx0aGlzLCJ2YXJpYWJsZSIpKXJldHVybiByO2Y9KG5ldyBRKHRoaXMudmFyaWFibGUpKS5jYWNoZVJlZmVyZW5jZShlKSxpPWZbMF0sbz1mWzFdfWVsc2UgaT1uZXcgTCh0aGlzLnN1cGVyUmVmZXJlbmNlKGUpKSxvPW5ldyBRKGkpO3JldHVybiBvPW5ldyB0KG8sdGhpcy5hcmdzKSxvLmlzTmV3PXRoaXMuaXNOZXcsaT1uZXcgTCgidHlwZW9mICIraS5jb21waWxlKGUpKycgPT09ICJmdW5jdGlvbiInKSxuZXcgYihpLG5ldyBRKG8pLHtzb2FrOiEwfSl9bj10aGlzLHM9W107Zm9yKDs7KXtpZihuLnZhcmlhYmxlIGluc3RhbmNlb2YgdCl7cy5wdXNoKG4pLG49bi52YXJpYWJsZTtjb250aW51ZX1pZighKG4udmFyaWFibGUgaW5zdGFuY2VvZiBRKSlicmVhaztzLnB1c2gobik7aWYoISgobj1uLnZhcmlhYmxlLmJhc2UpaW5zdGFuY2VvZiB0KSlicmVha31sPXMucmV2ZXJzZSgpO2Zvcih1PTAsYT1sLmxlbmd0aDt1PGE7dSsrKW49bFt1XSxyJiYobi52YXJpYWJsZSBpbnN0YW5jZW9mIHQ/bi52YXJpYWJsZT1yOm4udmFyaWFibGUuYmFzZT1yKSxyPWF0KGUsbiwidmFyaWFibGUiKTtyZXR1cm4gcn0sdC5wcm90b3R5cGUuZmlsdGVySW1wbGljaXRPYmplY3RzPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG8sdSxhLGYsbCxjO249W107Zm9yKHU9MCxmPWUubGVuZ3RoO3U8Zjt1Kyspe3Q9ZVt1XTtpZighKCh0eXBlb2YgdC5pc09iamVjdD09ImZ1bmN0aW9uIj90LmlzT2JqZWN0KCk6dm9pZCAwKSYmdC5iYXNlLmdlbmVyYXRlZCkpe24ucHVzaCh0KTtjb250aW51ZX1yPW51bGwsYz10LmJhc2UucHJvcGVydGllcztmb3IoYT0wLGw9Yy5sZW5ndGg7YTxsO2ErKylpPWNbYV0saSBpbnN0YW5jZW9mIHN8fGkgaW5zdGFuY2VvZiBoPyhyfHxuLnB1c2gocj1uZXcgXyhvPVtdLCEwKSksby5wdXNoKGkpKToobi5wdXNoKGkpLHI9bnVsbCl9cmV0dXJuIG59LHQucHJvdG90eXBlLmNvbXBpbGVOb2RlPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpO3JldHVybihpPXRoaXMudmFyaWFibGUpIT1udWxsJiYoaS5mcm9udD10aGlzLmZyb250KSwocj16LmNvbXBpbGVTcGxhdHRlZEFycmF5KGUsdGhpcy5hcmdzLCEwKSk/dGhpcy5jb21waWxlU3BsYXQoZSxyKToobj10aGlzLmZpbHRlckltcGxpY2l0T2JqZWN0cyh0aGlzLmFyZ3MpLG49ZnVuY3Rpb24oKXt2YXIgcixpLHM7cz1bXTtmb3Iocj0wLGk9bi5sZW5ndGg7cjxpO3IrKyl0PW5bcl0scy5wdXNoKHQuY29tcGlsZShlLFQpKTtyZXR1cm4gc30oKS5qb2luKCIsICIpLHRoaXMuaXNTdXBlcj90aGlzLnN1cGVyUmVmZXJlbmNlKGUpKygiLmNhbGwodGhpcyIrKG4mJiIsICIrbikrIikiKToodGhpcy5pc05ldz8ibmV3ICI6IiIpK3RoaXMudmFyaWFibGUuY29tcGlsZShlLFMpKygiKCIrbisiKSIpKX0sdC5wcm90b3R5cGUuY29tcGlsZVN1cGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIiIrdGhpcy5zdXBlclJlZmVyZW5jZSh0KSsiLmNhbGwodGhpcyIrKGUubGVuZ3RoPyIsICI6IiIpK2UrIikifSx0LnByb3RvdHlwZS5jb21waWxlU3BsYXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGkscyxvO3JldHVybiB0aGlzLmlzU3VwZXI/IiIrdGhpcy5zdXBlclJlZmVyZW5jZShlKSsiLmFwcGx5KHRoaXMsICIrdCsiKSI6dGhpcy5pc05ldz8oaT10aGlzLnRhYitYLCIoZnVuY3Rpb24oZnVuYywgYXJncywgY3Rvcikge1xuIitpKyJjdG9yLnByb3RvdHlwZSA9IGZ1bmMucHJvdG90eXBlO1xuIitpKyJ2YXIgY2hpbGQgPSBuZXcgY3RvciwgcmVzdWx0ID0gZnVuYy5hcHBseShjaGlsZCwgYXJncyksIHQgPSB0eXBlb2YgcmVzdWx0O1xuIitpKydyZXR1cm4gdCA9PSAib2JqZWN0IiB8fCB0ID09ICJmdW5jdGlvbiIgPyByZXN1bHQgfHwgY2hpbGQgOiBjaGlsZDtcbicrdGhpcy50YWIrIn0pKCIrdGhpcy52YXJpYWJsZS5jb21waWxlKGUsVCkrIiwgIit0KyIsIGZ1bmN0aW9uKCl7fSkiKToobj1uZXcgUSh0aGlzLnZhcmlhYmxlKSwocz1uLnByb3BlcnRpZXMucG9wKCkpJiZuLmlzQ29tcGxleCgpPyhvPWUuc2NvcGUuZnJlZVZhcmlhYmxlKCJyZWYiKSxyPSIoIitvKyIgPSAiK24uY29tcGlsZShlLFQpKyIpIitzLmNvbXBpbGUoZSkpOihyPW4uY29tcGlsZShlLFMpLEkudGVzdChyKSYmKHI9IigiK3IrIikiKSxzPyhvPXIscis9cy5jb21waWxlKGUpKTpvPSJudWxsIiksIiIrcisiLmFwcGx5KCIrbysiLCAiK3QrIikiKX0sdH0obyksdC5FeHRlbmRzPWQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe3RoaXMuY2hpbGQ9ZSx0aGlzLnBhcmVudD10fXJldHVybiBwdCh0LGUpLHQubmFtZT0iRXh0ZW5kcyIsdC5wcm90b3R5cGUuY2hpbGRyZW49WyJjaGlsZCIsInBhcmVudCJdLHQucHJvdG90eXBlLmNvbXBpbGU9ZnVuY3Rpb24oZSl7cmV0dXJuKG5ldyBhKG5ldyBRKG5ldyBMKGZ0KCJleHRlbmRzIikpKSxbdGhpcy5jaGlsZCx0aGlzLnBhcmVudF0pKS5jb21waWxlKGUpfSx0fShvKSx0LkFjY2Vzcz1yPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLm5hbWU9ZSx0aGlzLm5hbWUuYXNLZXk9ITAsdGhpcy5zb2FrPXQ9PT0ic29hayJ9cmV0dXJuIHB0KHQsZSksdC5uYW1lPSJBY2Nlc3MiLHQucHJvdG90eXBlLmNoaWxkcmVuPVsibmFtZSJdLHQucHJvdG90eXBlLmNvbXBpbGU9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHQ9dGhpcy5uYW1lLmNvbXBpbGUoZSksbS50ZXN0KHQpPyIuIit0OiJbIit0KyJdIn0sdC5wcm90b3R5cGUuaXNDb21wbGV4PU0sdH0obyksdC5JbmRleD1FPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dGhpcy5pbmRleD1lfXJldHVybiBwdCh0LGUpLHQubmFtZT0iSW5kZXgiLHQucHJvdG90eXBlLmNoaWxkcmVuPVsiaW5kZXgiXSx0LnByb3RvdHlwZS5jb21waWxlPWZ1bmN0aW9uKGUpe3JldHVybiJbIit0aGlzLmluZGV4LmNvbXBpbGUoZSxDKSsiXSJ9LHQucHJvdG90eXBlLmlzQ29tcGxleD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmluZGV4LmlzQ29tcGxleCgpfSx0fShvKSx0LlJhbmdlPWo9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQsbil7dGhpcy5mcm9tPWUsdGhpcy50bz10LHRoaXMuZXhjbHVzaXZlPW49PT0iZXhjbHVzaXZlIix0aGlzLmVxdWFscz10aGlzLmV4Y2x1c2l2ZT8iIjoiPSJ9cmV0dXJuIHB0KHQsZSksdC5uYW1lPSJSYW5nZSIsdC5wcm90b3R5cGUuY2hpbGRyZW49WyJmcm9tIiwidG8iXSx0LnByb3RvdHlwZS5jb21waWxlVmFyaWFibGVzPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLHM7ZT1zdChlLHt0b3A6ITB9KSxuPXRoaXMuZnJvbS5jYWNoZShlLFQpLHRoaXMuZnJvbUM9blswXSx0aGlzLmZyb21WYXI9blsxXSxyPXRoaXMudG8uY2FjaGUoZSxUKSx0aGlzLnRvQz1yWzBdLHRoaXMudG9WYXI9clsxXTtpZih0PWV0KGUsInN0ZXAiKSlpPXQuY2FjaGUoZSxUKSx0aGlzLnN0ZXA9aVswXSx0aGlzLnN0ZXBWYXI9aVsxXTtzPVt0aGlzLmZyb21WYXIubWF0Y2goSSksdGhpcy50b1Zhci5tYXRjaChJKV0sdGhpcy5mcm9tTnVtPXNbMF0sdGhpcy50b051bT1zWzFdO2lmKHRoaXMuc3RlcFZhcilyZXR1cm4gdGhpcy5zdGVwTnVtPXRoaXMuc3RlcFZhci5tYXRjaChJKX0sdC5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGkscyxvLHUsYSxmLGwsYyxoLHAsZDtyZXR1cm4gdGhpcy5mcm9tVmFyfHx0aGlzLmNvbXBpbGVWYXJpYWJsZXMoZSksZS5pbmRleD8odT10aGlzLmZyb21OdW0mJnRoaXMudG9OdW0scz1ldChlLCJpbmRleCIpLG89ZXQoZSwibmFtZSIpLGY9byYmbyE9PXMsaD0iIitzKyIgPSAiK3RoaXMuZnJvbUMsdGhpcy50b0MhPT10aGlzLnRvVmFyJiYoaCs9IiwgIit0aGlzLnRvQyksdGhpcy5zdGVwIT09dGhpcy5zdGVwVmFyJiYoaCs9IiwgIit0aGlzLnN0ZXApLHA9WyIiK3MrIiA8Iit0aGlzLmVxdWFscywiIitzKyIgPiIrdGhpcy5lcXVhbHNdLGE9cFswXSxpPXBbMV0sbj10aGlzLnN0ZXBOdW0/K3RoaXMuc3RlcE51bT4wPyIiK2ErIiAiK3RoaXMudG9WYXI6IiIraSsiICIrdGhpcy50b1Zhcjp1PyhkPVsrdGhpcy5mcm9tTnVtLCt0aGlzLnRvTnVtXSxyPWRbMF0sYz1kWzFdLGQscjw9Yz8iIithKyIgIitjOiIiK2krIiAiK2MpOih0PSIiK3RoaXMuZnJvbVZhcisiIDw9ICIrdGhpcy50b1ZhciwiIit0KyIgPyAiK2ErIiAiK3RoaXMudG9WYXIrIiA6ICIraSsiICIrdGhpcy50b1ZhciksbD10aGlzLnN0ZXBWYXI/IiIrcysiICs9ICIrdGhpcy5zdGVwVmFyOnU/Zj9yPD1jPyIrKyIrczoiLS0iK3M6cjw9Yz8iIitzKyIrKyI6IiIrcysiLS0iOmY/IiIrdCsiID8gKysiK3MrIiA6IC0tIitzOiIiK3QrIiA/ICIrcysiKysgOiAiK3MrIi0tIixmJiYoaD0iIitvKyIgPSAiK2gpLGYmJihsPSIiK28rIiA9ICIrbCksIiIraCsiOyAiK24rIjsgIitsKTp0aGlzLmNvbXBpbGVBcnJheShlKX0sdC5wcm90b3R5cGUuY29tcGlsZUFycmF5PWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLHMsbyx1LGEsZixsLGMsaCxwLGQsdjtpZih0aGlzLmZyb21OdW0mJnRoaXMudG9OdW0mJk1hdGguYWJzKHRoaXMuZnJvbU51bS10aGlzLnRvTnVtKTw9MjApcmV0dXJuIGY9ZnVuY3Rpb24oKXt2PVtdO2Zvcih2YXIgZT1wPSt0aGlzLmZyb21OdW0sdD0rdGhpcy50b051bTtwPD10P2U8PXQ6ZT49dDtwPD10P2UrKzplLS0pdi5wdXNoKGUpO3JldHVybiB2fS5hcHBseSh0aGlzKSx0aGlzLmV4Y2x1c2l2ZSYmZi5wb3AoKSwiWyIrZi5qb2luKCIsICIpKyJdIjtvPXRoaXMudGFiK1gscz1lLnNjb3BlLmZyZWVWYXJpYWJsZSgiaSIpLGw9ZS5zY29wZS5mcmVlVmFyaWFibGUoInJlc3VsdHMiKSxhPSJcbiIrbytsKyIgPSBbXTsiLHRoaXMuZnJvbU51bSYmdGhpcy50b051bT8oZS5pbmRleD1zLG49dGhpcy5jb21waWxlTm9kZShlKSk6KGM9IiIrcysiID0gIit0aGlzLmZyb21DKyh0aGlzLnRvQyE9PXRoaXMudG9WYXI/IiwgIit0aGlzLnRvQzoiIikscj0iIit0aGlzLmZyb21WYXIrIiA8PSAiK3RoaXMudG9WYXIsbj0idmFyICIrYysiOyAiK3IrIiA/ICIrcysiIDwiK3RoaXMuZXF1YWxzKyIgIit0aGlzLnRvVmFyKyIgOiAiK3MrIiA+Iit0aGlzLmVxdWFscysiICIrdGhpcy50b1ZhcisiOyAiK3IrIiA/ICIrcysiKysgOiAiK3MrIi0tIiksdT0ieyAiK2wrIi5wdXNoKCIrcysiKTsgfVxuIitvKyJyZXR1cm4gIitsKyI7XG4iK2UuaW5kZW50LGk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPW51bGw/ZS5jb250YWlucyhmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEwmJmUudmFsdWU9PT0iYXJndW1lbnRzIiYmIWUuYXNLZXl9KTp2b2lkIDB9O2lmKGkodGhpcy5mcm9tKXx8aSh0aGlzLnRvKSl0PSIsIGFyZ3VtZW50cyI7cmV0dXJuIihmdW5jdGlvbigpIHsiK2ErIlxuIitvKyJmb3IgKCIrbisiKSIrdSsifSkuYXBwbHkodGhpcyIrKHQhPW51bGw/dDoiIikrIikifSx0fShvKSx0LlNsaWNlPVU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLnJhbmdlPWUsdC5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKX1yZXR1cm4gcHQodCxlKSx0Lm5hbWU9IlNsaWNlIix0LnByb3RvdHlwZS5jaGlsZHJlbj1bInJhbmdlIl0sdC5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGkscyxvO3JldHVybiBvPXRoaXMucmFuZ2UsaT1vLnRvLG49by5mcm9tLHI9biYmbi5jb21waWxlKGUsQyl8fCIwIix0PWkmJmkuY29tcGlsZShlLEMpLGkmJighIXRoaXMucmFuZ2UuZXhjbHVzaXZlfHwrdCE9PS0xKSYmKHM9IiwgIisodGhpcy5yYW5nZS5leGNsdXNpdmU/dDpJLnRlc3QodCk/IiIrKCt0KzEpOih0PWkuY29tcGlsZShlLFMpLCIiK3QrIiArIDEgfHwgOWU5IikpKSwiLnNsaWNlKCIrcisoc3x8IiIpKyIpIn0sdH0obyksdC5PYmo9Xz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7dGhpcy5nZW5lcmF0ZWQ9dCE9bnVsbD90OiExLHRoaXMub2JqZWN0cz10aGlzLnByb3BlcnRpZXM9ZXx8W119cmV0dXJuIHB0KHQsZSksdC5uYW1lPSJPYmoiLHQucHJvdG90eXBlLmNoaWxkcmVuPVsicHJvcGVydGllcyJdLHQucHJvdG90eXBlLmNvbXBpbGVOb2RlPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG8sdSxhLGYsbCxjLHAsZCx2LG0sZyx5O3A9dGhpcy5wcm9wZXJ0aWVzLGM9W10seT10aGlzLnByb3BlcnRpZXM7Zm9yKGQ9MCxtPXkubGVuZ3RoO2Q8bTtkKyspe2Y9eVtkXSxmLmlzQ29tcGxleCgpJiYoZj1mLnZhcmlhYmxlKTtpZihmIT1udWxsKXtsPWYudW53cmFwQWxsKCkudmFsdWUudG9TdHJpbmcoKTtpZihkdC5jYWxsKGMsbCk+PTApdGhyb3cgU3ludGF4RXJyb3IoJ211bHRpcGxlIG9iamVjdCBsaXRlcmFsIHByb3BlcnRpZXMgbmFtZWQgIicrbCsnIicpO2MucHVzaChsKX19aWYoIXAubGVuZ3RoKXJldHVybiB0aGlzLmZyb250PyIoe30pIjoie30iO2lmKHRoaXMuZ2VuZXJhdGVkKWZvcih2PTAsZz1wLmxlbmd0aDt2PGc7disrKXt1PXBbdl07aWYodSBpbnN0YW5jZW9mIFEpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgaGF2ZSBhbiBpbXBsaWNpdCB2YWx1ZSBpbiBhbiBpbXBsaWNpdCBvYmplY3QiKX1yZXR1cm4gbj1lLmluZGVudCs9WCxvPXRoaXMubGFzdE5vbkNvbW1lbnQodGhpcy5wcm9wZXJ0aWVzKSxwPWZ1bmN0aW9uKCl7dmFyIHUsYSxsO2w9W107Zm9yKHQ9dT0wLGE9cC5sZW5ndGg7dTxhO3Q9Kyt1KWY9cFt0XSxpPXQ9PT1wLmxlbmd0aC0xPyIiOmY9PT1vfHxmIGluc3RhbmNlb2YgaD8iXG4iOiIsXG4iLHI9ZiBpbnN0YW5jZW9mIGg/IiI6bixmIGluc3RhbmNlb2YgUSYmZlsidGhpcyJdJiYoZj1uZXcgcyhmLnByb3BlcnRpZXNbMF0ubmFtZSxmLCJvYmplY3QiKSksZiBpbnN0YW5jZW9mIGh8fChmIGluc3RhbmNlb2Ygc3x8KGY9bmV3IHMoZixmLCJvYmplY3QiKSksKGYudmFyaWFibGUuYmFzZXx8Zi52YXJpYWJsZSkuYXNLZXk9ITApLGwucHVzaChyK2YuY29tcGlsZShlLGspK2kpO3JldHVybiBsfSgpLHA9cC5qb2luKCIiKSxhPSJ7IisocCYmIlxuIitwKyJcbiIrdGhpcy50YWIpKyJ9Iix0aGlzLmZyb250PyIoIithKyIpIjphfSx0LnByb3RvdHlwZS5hc3NpZ25zPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpO2k9dGhpcy5wcm9wZXJ0aWVzO2ZvcihuPTAscj1pLmxlbmd0aDtuPHI7bisrKXt0PWlbbl07aWYodC5hc3NpZ25zKGUpKXJldHVybiEwfXJldHVybiExfSx0fShvKSx0LkFycj1pPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dGhpcy5vYmplY3RzPWV8fFtdfXJldHVybiBwdCh0LGUpLHQubmFtZT0iQXJyIix0LnByb3RvdHlwZS5jaGlsZHJlbj1bIm9iamVjdHMiXSx0LnByb3RvdHlwZS5maWx0ZXJJbXBsaWNpdE9iamVjdHM9YS5wcm90b3R5cGUuZmlsdGVySW1wbGljaXRPYmplY3RzLHQucHJvdG90eXBlLmNvbXBpbGVOb2RlPWZ1bmN0aW9uKGUpe3ZhciB0LG4scjtyZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aD8oZS5pbmRlbnQrPVgscj10aGlzLmZpbHRlckltcGxpY2l0T2JqZWN0cyh0aGlzLm9iamVjdHMpLCh0PXouY29tcGlsZVNwbGF0dGVkQXJyYXkoZSxyKSk/dDoodD1mdW5jdGlvbigpe3ZhciB0LGkscztzPVtdO2Zvcih0PTAsaT1yLmxlbmd0aDt0PGk7dCsrKW49clt0XSxzLnB1c2gobi5jb21waWxlKGUsVCkpO3JldHVybiBzfSgpLmpvaW4oIiwgIiksdC5pbmRleE9mKCJcbiIpPj0wPyJbXG4iK2UuaW5kZW50K3QrIlxuIit0aGlzLnRhYisiXSI6IlsiK3QrIl0iKSk6IltdIn0sdC5wcm90b3R5cGUuYXNzaWducz1mdW5jdGlvbihlKXt2YXIgdCxuLHIsaTtpPXRoaXMub2JqZWN0cztmb3Iobj0wLHI9aS5sZW5ndGg7bjxyO24rKyl7dD1pW25dO2lmKHQuYXNzaWducyhlKSlyZXR1cm4hMH1yZXR1cm4hMX0sdH0obyksdC5DbGFzcz1mPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0LG4pe3RoaXMudmFyaWFibGU9ZSx0aGlzLnBhcmVudD10LHRoaXMuYm9keT1uIT1udWxsP246bmV3IHUsdGhpcy5ib3VuZEZ1bmNzPVtdLHRoaXMuYm9keS5jbGFzc0JvZHk9ITB9cmV0dXJuIHB0KHQsZSksdC5uYW1lPSJDbGFzcyIsdC5wcm90b3R5cGUuY2hpbGRyZW49WyJ2YXJpYWJsZSIsInBhcmVudCIsImJvZHkiXSx0LnByb3RvdHlwZS5kZXRlcm1pbmVOYW1lPWZ1bmN0aW9uKCl7dmFyIGUsdDtpZighdGhpcy52YXJpYWJsZSlyZXR1cm4gbnVsbDtlPSh0PWl0KHRoaXMudmFyaWFibGUucHJvcGVydGllcykpP3QgaW5zdGFuY2VvZiByJiZ0Lm5hbWUudmFsdWU6dGhpcy52YXJpYWJsZS5iYXNlLnZhbHVlO2lmKGR0LmNhbGwocSxlKT49MCl0aHJvdyBTeW50YXhFcnJvcigidmFyaWFibGUgbmFtZSBtYXkgbm90IGJlICIrZSk7cmV0dXJuIGUmJihlPW0udGVzdChlKSYmZSl9LHQucHJvdG90eXBlLnNldENvbnRleHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYm9keS50cmF2ZXJzZUNoaWxkcmVuKCExLGZ1bmN0aW9uKHQpe2lmKHQuY2xhc3NCb2R5KXJldHVybiExO2lmKHQgaW5zdGFuY2VvZiBMJiZ0LnZhbHVlPT09InRoaXMiKXJldHVybiB0LnZhbHVlPWU7aWYodCBpbnN0YW5jZW9mIGMpe3Qua2xhc3M9ZTtpZih0LmJvdW5kKXJldHVybiB0LmNvbnRleHQ9ZX19KX0sdC5wcm90b3R5cGUuYWRkQm91bmRGdW5jdGlvbnM9ZnVuY3Rpb24oZSl7dmFyIHQsbixpLHMsbyx1O2lmKHRoaXMuYm91bmRGdW5jcy5sZW5ndGgpe289dGhpcy5ib3VuZEZ1bmNzLHU9W107Zm9yKGk9MCxzPW8ubGVuZ3RoO2k8cztpKyspdD1vW2ldLG49KG5ldyBRKG5ldyBMKCJ0aGlzIiksW25ldyByKHQpXSkpLmNvbXBpbGUoZSksdS5wdXNoKHRoaXMuY3Rvci5ib2R5LnVuc2hpZnQobmV3IEwoIiIrbisiID0gIitmdCgiYmluZCIpKyIoIituKyIsIHRoaXMpIikpKTtyZXR1cm4gdX19LHQucHJvdG90eXBlLmFkZFByb3BlcnRpZXM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLG8sdSxhLGY7cmV0dXJuIGY9ZS5iYXNlLnByb3BlcnRpZXMuc2xpY2UoMCksdT1mdW5jdGlvbigpe3ZhciBlO2U9W107d2hpbGUoaT1mLnNoaWZ0KCkpe2lmKGkgaW5zdGFuY2VvZiBzKXtvPWkudmFyaWFibGUuYmFzZSxkZWxldGUgaS5jb250ZXh0LGE9aS52YWx1ZTtpZihvLnZhbHVlPT09ImNvbnN0cnVjdG9yIil7aWYodGhpcy5jdG9yKXRocm93IG5ldyBFcnJvcigiY2Fubm90IGRlZmluZSBtb3JlIHRoYW4gb25lIGNvbnN0cnVjdG9yIGluIGEgY2xhc3MiKTtpZihhLmJvdW5kKXRocm93IG5ldyBFcnJvcigiY2Fubm90IGRlZmluZSBhIGNvbnN0cnVjdG9yIGFzIGEgYm91bmQgZnVuY3Rpb24iKTthIGluc3RhbmNlb2YgYz9pPXRoaXMuY3Rvcj1hOih0aGlzLmV4dGVybmFsQ3Rvcj1uLnNjb3BlLmZyZWVWYXJpYWJsZSgiY2xhc3MiKSxpPW5ldyBzKG5ldyBMKHRoaXMuZXh0ZXJuYWxDdG9yKSxhKSl9ZWxzZSBpLnZhcmlhYmxlWyJ0aGlzIl0/KGFbInN0YXRpYyJdPSEwLGEuYm91bmQmJihhLmNvbnRleHQ9dCkpOihpLnZhcmlhYmxlPW5ldyBRKG5ldyBMKHQpLFtuZXcgcihuZXcgTCgicHJvdG90eXBlIikpLG5ldyByKG8pXSksYSBpbnN0YW5jZW9mIGMmJmEuYm91bmQmJih0aGlzLmJvdW5kRnVuY3MucHVzaChvKSxhLmJvdW5kPSExKSl9ZS5wdXNoKGkpfXJldHVybiBlfS5jYWxsKHRoaXMpLFoodSl9LHQucHJvdG90eXBlLndhbGtCb2R5PWZ1bmN0aW9uKGUsbil7dmFyIHI9dGhpcztyZXR1cm4gdGhpcy50cmF2ZXJzZUNoaWxkcmVuKCExLGZ1bmN0aW9uKGkpe3ZhciBzLG8sYSxmLGwsYztpZihpIGluc3RhbmNlb2YgdClyZXR1cm4hMTtpZihpIGluc3RhbmNlb2YgdSl7Yz1zPWkuZXhwcmVzc2lvbnM7Zm9yKG89Zj0wLGw9Yy5sZW5ndGg7ZjxsO289KytmKWE9Y1tvXSxhIGluc3RhbmNlb2YgUSYmYS5pc09iamVjdCghMCkmJihzW29dPXIuYWRkUHJvcGVydGllcyhhLGUsbikpO3JldHVybiBpLmV4cHJlc3Npb25zPXM9cnQocyl9fSl9LHQucHJvdG90eXBlLmhvaXN0RGlyZWN0aXZlUHJvbG9ndWU9ZnVuY3Rpb24oKXt2YXIgZSx0LG47dD0wLGU9dGhpcy5ib2R5LmV4cHJlc3Npb25zO3doaWxlKChuPWVbdF0pJiZuIGluc3RhbmNlb2YgaHx8biBpbnN0YW5jZW9mIFEmJm4uaXNTdHJpbmcoKSkrK3Q7cmV0dXJuIHRoaXMuZGlyZWN0aXZlcz1lLnNwbGljZSgwLHQpfSx0LnByb3RvdHlwZS5lbnN1cmVDb25zdHJ1Y3Rvcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jdG9yfHwodGhpcy5jdG9yPW5ldyBjLHRoaXMucGFyZW50JiZ0aGlzLmN0b3IuYm9keS5wdXNoKG5ldyBMKCIiK2UrIi5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKSIpKSx0aGlzLmV4dGVybmFsQ3RvciYmdGhpcy5jdG9yLmJvZHkucHVzaChuZXcgTCgiIit0aGlzLmV4dGVybmFsQ3RvcisiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykiKSksdGhpcy5jdG9yLmJvZHkubWFrZVJldHVybigpLHRoaXMuYm9keS5leHByZXNzaW9ucy51bnNoaWZ0KHRoaXMuY3RvcikpLHRoaXMuY3Rvci5jdG9yPXRoaXMuY3Rvci5uYW1lPWUsdGhpcy5jdG9yLmtsYXNzPW51bGwsdGhpcy5jdG9yLm5vUmV0dXJuPSEwfSx0LnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihlKXt2YXIgdCxuLGksbyx1LGEsZjtyZXR1cm4gbj10aGlzLmRldGVybWluZU5hbWUoKSx1PW58fCJfQ2xhc3MiLHUucmVzZXJ2ZWQmJih1PSJfIit1KSxvPW5ldyBMKHUpLHRoaXMuaG9pc3REaXJlY3RpdmVQcm9sb2d1ZSgpLHRoaXMuc2V0Q29udGV4dCh1KSx0aGlzLndhbGtCb2R5KHUsZSksdGhpcy5lbnN1cmVDb25zdHJ1Y3Rvcih1KSx0aGlzLmJvZHkuc3BhY2VkPSEwLHRoaXMuY3RvciBpbnN0YW5jZW9mIGN8fHRoaXMuYm9keS5leHByZXNzaW9ucy51bnNoaWZ0KHRoaXMuY3RvciksbiYmdGhpcy5ib2R5LmV4cHJlc3Npb25zLnVuc2hpZnQobmV3IHMobmV3IFEobmV3IEwodSksW25ldyByKG5ldyBMKCJuYW1lIikpXSksbmV3IEwoIiciK3UrIiciKSkpLHRoaXMuYm9keS5leHByZXNzaW9ucy5wdXNoKG8pLChmPXRoaXMuYm9keS5leHByZXNzaW9ucykudW5zaGlmdC5hcHBseShmLHRoaXMuZGlyZWN0aXZlcyksdGhpcy5hZGRCb3VuZEZ1bmN0aW9ucyhlKSx0PWwud3JhcCh0aGlzLmJvZHkpLHRoaXMucGFyZW50JiYodGhpcy5zdXBlckNsYXNzPW5ldyBMKGUuc2NvcGUuZnJlZVZhcmlhYmxlKCJzdXBlciIsITEpKSx0aGlzLmJvZHkuZXhwcmVzc2lvbnMudW5zaGlmdChuZXcgZChvLHRoaXMuc3VwZXJDbGFzcykpLHQuYXJncy5wdXNoKHRoaXMucGFyZW50KSxhPXQudmFyaWFibGUucGFyYW1zfHx0LnZhcmlhYmxlLmJhc2UucGFyYW1zLGEucHVzaChuZXcgUCh0aGlzLnN1cGVyQ2xhc3MpKSksaT1uZXcgSCh0LCEwKSx0aGlzLnZhcmlhYmxlJiYoaT1uZXcgcyh0aGlzLnZhcmlhYmxlLGkpKSxpLmNvbXBpbGUoZSl9LHR9KG8pLHQuQXNzaWduPXM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQsbixyKXt2YXIgaSxzLG87dGhpcy52YXJpYWJsZT1lLHRoaXMudmFsdWU9dCx0aGlzLmNvbnRleHQ9bix0aGlzLnBhcmFtPXImJnIucGFyYW0sdGhpcy5zdWJwYXR0ZXJuPXImJnIuc3VicGF0dGVybixpPShvPXM9dGhpcy52YXJpYWJsZS51bndyYXBBbGwoKS52YWx1ZSxkdC5jYWxsKHEsbyk+PTApO2lmKGkmJnRoaXMuY29udGV4dCE9PSJvYmplY3QiKXRocm93IFN5bnRheEVycm9yKCd2YXJpYWJsZSBuYW1lIG1heSBub3QgYmUgIicrcysnIicpfXJldHVybiBwdCh0LGUpLHQubmFtZT0iQXNzaWduIix0LnByb3RvdHlwZS5jaGlsZHJlbj1bInZhcmlhYmxlIiwidmFsdWUiXSx0LnByb3RvdHlwZS5pc1N0YXRlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4oZSE9bnVsbD9lLmxldmVsOnZvaWQgMCk9PT1rJiZ0aGlzLmNvbnRleHQhPW51bGwmJmR0LmNhbGwodGhpcy5jb250ZXh0LCI/Iik+PTB9LHQucHJvdG90eXBlLmFzc2lnbnM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXNbdGhpcy5jb250ZXh0PT09Im9iamVjdCI/InZhbHVlIjoidmFyaWFibGUiXS5hc3NpZ25zKGUpfSx0LnByb3RvdHlwZS51bmZvbGRTb2FrPWZ1bmN0aW9uKGUpe3JldHVybiBhdChlLHRoaXMsInZhcmlhYmxlIil9LHQucHJvdG90eXBlLmNvbXBpbGVOb2RlPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLHMsbyx1LGEsZjtpZih0PXRoaXMudmFyaWFibGUgaW5zdGFuY2VvZiBRKXtpZih0aGlzLnZhcmlhYmxlLmlzQXJyYXkoKXx8dGhpcy52YXJpYWJsZS5pc09iamVjdCgpKXJldHVybiB0aGlzLmNvbXBpbGVQYXR0ZXJuTWF0Y2goZSk7aWYodGhpcy52YXJpYWJsZS5pc1NwbGljZSgpKXJldHVybiB0aGlzLmNvbXBpbGVTcGxpY2UoZSk7aWYoKG89dGhpcy5jb250ZXh0KT09PSJ8fD0ifHxvPT09IiYmPSJ8fG89PT0iPz0iKXJldHVybiB0aGlzLmNvbXBpbGVDb25kaXRpb25hbChlKX1yPXRoaXMudmFyaWFibGUuY29tcGlsZShlLFQpO2lmKCF0aGlzLmNvbnRleHQpe2lmKCEocz10aGlzLnZhcmlhYmxlLnVud3JhcEFsbCgpKS5pc0Fzc2lnbmFibGUoKSl0aHJvdyBTeW50YXhFcnJvcignIicrdGhpcy52YXJpYWJsZS5jb21waWxlKGUpKyciIGNhbm5vdCBiZSBhc3NpZ25lZC4nKTtpZih0eXBlb2Ygcy5oYXNQcm9wZXJ0aWVzPT0iZnVuY3Rpb24iPyFzLmhhc1Byb3BlcnRpZXMoKTohdm9pZCAwKXRoaXMucGFyYW0/ZS5zY29wZS5hZGQociwidmFyIik6ZS5zY29wZS5maW5kKHIpfXJldHVybiB0aGlzLnZhbHVlIGluc3RhbmNlb2YgYyYmKG49QS5leGVjKHIpKSYmKG5bMV0mJih0aGlzLnZhbHVlLmtsYXNzPW5bMV0pLHRoaXMudmFsdWUubmFtZT0odT0oYT0oZj1uWzJdKSE9bnVsbD9mOm5bM10pIT1udWxsP2E6bls0XSkhPW51bGw/dTpuWzVdKSxpPXRoaXMudmFsdWUuY29tcGlsZShlLFQpLHRoaXMuY29udGV4dD09PSJvYmplY3QiPyIiK3IrIjogIitpOihpPXIrKCIgIisodGhpcy5jb250ZXh0fHwiPSIpKyIgIikraSxlLmxldmVsPD1UP2k6IigiK2krIikiKX0sdC5wcm90b3R5cGUuY29tcGlsZVBhdHRlcm5NYXRjaD1mdW5jdGlvbihlKXt2YXIgbixpLHMsbyx1LGEsZixsLGMsaCxwLGQsdixnLHksYix3LFMseCxDLEEsTyxNLF8sRCxQLGo7eT1lLmxldmVsPT09ayx3PXRoaXMudmFsdWUsaD10aGlzLnZhcmlhYmxlLmJhc2Uub2JqZWN0cztpZighKHA9aC5sZW5ndGgpKXJldHVybiBzPXcuY29tcGlsZShlKSxlLmxldmVsPj1OPyIoIitzKyIpIjpzO2E9dGhpcy52YXJpYWJsZS5pc09iamVjdCgpO2lmKHkmJnA9PT0xJiYhKChjPWhbMF0paW5zdGFuY2VvZiB6KSl7YyBpbnN0YW5jZW9mIHQ/KEE9YyxPPUEudmFyaWFibGUsdT1PLmJhc2UsYz1BLnZhbHVlKTpjLmJhc2UgaW5zdGFuY2VvZiBIPyhNPShuZXcgUShjLnVud3JhcEFsbCgpKSkuY2FjaGVSZWZlcmVuY2UoZSksYz1NWzBdLHU9TVsxXSk6dT1hP2NbInRoaXMiXT9jLnByb3BlcnRpZXNbMF0ubmFtZTpjOm5ldyBMKDApLG49bS50ZXN0KHUudW53cmFwKCkudmFsdWV8fDApLHc9bmV3IFEodyksdy5wcm9wZXJ0aWVzLnB1c2gobmV3KG4/cjpFKSh1KSk7aWYoXz1jLnVud3JhcCgpLnZhbHVlLGR0LmNhbGwoQixfKT49MCl0aHJvdyBuZXcgU3ludGF4RXJyb3IoImFzc2lnbm1lbnQgdG8gYSByZXNlcnZlZCB3b3JkOiAiK2MuY29tcGlsZShlKSsiID0gIit3LmNvbXBpbGUoZSkpO3JldHVybihuZXcgdChjLHcsbnVsbCx7cGFyYW06dGhpcy5wYXJhbX0pKS5jb21waWxlKGUsayl9Uz13LmNvbXBpbGUoZSxUKSxpPVtdLGc9ITE7aWYoIW0udGVzdChTKXx8dGhpcy52YXJpYWJsZS5hc3NpZ25zKFMpKWkucHVzaCgiIisoZD1lLnNjb3BlLmZyZWVWYXJpYWJsZSgicmVmIikpKyIgPSAiK1MpLFM9ZDtmb3Iobz14PTAsQz1oLmxlbmd0aDt4PEM7bz0rK3gpe2M9aFtvXSx1PW8sYSYmKGMgaW5zdGFuY2VvZiB0PyhEPWMsUD1ELnZhcmlhYmxlLHU9UC5iYXNlLGM9RC52YWx1ZSk6Yy5iYXNlIGluc3RhbmNlb2YgSD8oaj0obmV3IFEoYy51bndyYXBBbGwoKSkpLmNhY2hlUmVmZXJlbmNlKGUpLGM9alswXSx1PWpbMV0pOnU9Y1sidGhpcyJdP2MucHJvcGVydGllc1swXS5uYW1lOmMpO2lmKCFnJiZjIGluc3RhbmNlb2YgeilsPWMubmFtZS51bndyYXAoKS52YWx1ZSxjPWMudW53cmFwKCksYj0iIitwKyIgPD0gIitTKyIubGVuZ3RoID8gIitmdCgic2xpY2UiKSsiLmNhbGwoIitTKyIsICIrbywodj1wLW8tMSk/KGY9ZS5zY29wZS5mcmVlVmFyaWFibGUoImkiKSxiKz0iLCAiK2YrIiA9ICIrUysiLmxlbmd0aCAtICIrdisiKSA6ICgiK2YrIiA9ICIrbysiLCBbXSkiKTpiKz0iKSA6IFtdIixiPW5ldyBMKGIpLGc9IiIrZisiKysiO2Vsc2V7bD1jLnVud3JhcCgpLnZhbHVlO2lmKGMgaW5zdGFuY2VvZiB6KXRocm93IGM9Yy5uYW1lLmNvbXBpbGUoZSksbmV3IFN5bnRheEVycm9yKCJtdWx0aXBsZSBzcGxhdHMgYXJlIGRpc2FsbG93ZWQgaW4gYW4gYXNzaWdubWVudDogIitjKyIuLi4iKTt0eXBlb2YgdT09Im51bWJlciI/KHU9bmV3IEwoZ3x8dSksbj0hMSk6bj1hJiZtLnRlc3QodS51bndyYXAoKS52YWx1ZXx8MCksYj1uZXcgUShuZXcgTChTKSxbbmV3KG4/cjpFKSh1KV0pfWlmKGwhPW51bGwmJmR0LmNhbGwoQixsKT49MCl0aHJvdyBuZXcgU3ludGF4RXJyb3IoImFzc2lnbm1lbnQgdG8gYSByZXNlcnZlZCB3b3JkOiAiK2MuY29tcGlsZShlKSsiID0gIitiLmNvbXBpbGUoZSkpO2kucHVzaCgobmV3IHQoYyxiLG51bGwse3BhcmFtOnRoaXMucGFyYW0sc3VicGF0dGVybjohMH0pKS5jb21waWxlKGUsVCkpfXJldHVybiF5JiYhdGhpcy5zdWJwYXR0ZXJuJiZpLnB1c2goUykscz1pLmpvaW4oIiwgIiksZS5sZXZlbDxUP3M6IigiK3MrIikifSx0LnByb3RvdHlwZS5jb21waWxlQ29uZGl0aW9uYWw9ZnVuY3Rpb24oZSl7dmFyIG4scixpO2k9dGhpcy52YXJpYWJsZS5jYWNoZVJlZmVyZW5jZShlKSxuPWlbMF0scj1pWzFdO2lmKG4uYmFzZSBpbnN0YW5jZW9mIEwmJm4uYmFzZS52YWx1ZSE9PSJ0aGlzIiYmIWUuc2NvcGUuY2hlY2sobi5iYXNlLnZhbHVlKSl0aHJvdyBuZXcgRXJyb3IoJ3RoZSB2YXJpYWJsZSAiJytuLmJhc2UudmFsdWUrIlwiIGNhbid0IGJlIGFzc2lnbmVkIHdpdGggIit0aGlzLmNvbnRleHQrIiBiZWNhdXNlIGl0IGhhcyBub3QgYmVlbiBkZWZpbmVkLiIpO3JldHVybiBkdC5jYWxsKHRoaXMuY29udGV4dCwiPyIpPj0wJiYoZS5pc0V4aXN0ZW50aWFsRXF1YWxzPSEwKSwobmV3IEQodGhpcy5jb250ZXh0LnNsaWNlKDAsLTEpLG4sbmV3IHQocix0aGlzLnZhbHVlLCI9IikpKS5jb21waWxlKGUpfSx0LnByb3RvdHlwZS5jb21waWxlU3BsaWNlPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLHMsbyx1LGEsZixsLGMsaDtyZXR1cm4gbD10aGlzLnZhcmlhYmxlLnByb3BlcnRpZXMucG9wKCkucmFuZ2Uscj1sLmZyb20sdT1sLnRvLG49bC5leGNsdXNpdmUsbz10aGlzLnZhcmlhYmxlLmNvbXBpbGUoZSksYz0ociE9bnVsbD9yLmNhY2hlKGUsTik6dm9pZCAwKXx8WyIwIiwiMCJdLGk9Y1swXSxzPWNbMV0sdT8ociE9bnVsbD9yLmlzU2ltcGxlTnVtYmVyKCk6dm9pZCAwKSYmdS5pc1NpbXBsZU51bWJlcigpPyh1PSt1LmNvbXBpbGUoZSktICtzLG58fCh1Kz0xKSk6KHU9dS5jb21waWxlKGUsUykrIiAtICIrcyxufHwodSs9IiArIDEiKSk6dT0iOWU5IixoPXRoaXMudmFsdWUuY2FjaGUoZSxUKSxhPWhbMF0sZj1oWzFdLHQ9IltdLnNwbGljZS5hcHBseSgiK28rIiwgWyIraSsiLCAiK3UrIl0uY29uY2F0KCIrYSsiKSksICIrZixlLmxldmVsPms/IigiK3QrIikiOnR9LHR9KG8pLHQuQ29kZT1jPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0LG4pe3RoaXMucGFyYW1zPWV8fFtdLHRoaXMuYm9keT10fHxuZXcgdSx0aGlzLmJvdW5kPW49PT0iYm91bmRmdW5jIix0aGlzLmJvdW5kJiYodGhpcy5jb250ZXh0PSJfdGhpcyIpfXJldHVybiBwdCh0LGUpLHQubmFtZT0iQ29kZSIsdC5wcm90b3R5cGUuY2hpbGRyZW49WyJwYXJhbXMiLCJib2R5Il0sdC5wcm90b3R5cGUuaXNTdGF0ZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuY3Rvcn0sdC5wcm90b3R5cGUuanVtcHM9TSx0LnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyx1LGEsZixsLGMsaCxwLGQsdixtLGcseSx3LEUseCxULE4sQyxrLEEsTyxNLF8sUCxILEIsaixGLEk7ZS5zY29wZT1uZXcgUihlLnNjb3BlLHRoaXMuYm9keSx0aGlzKSxlLnNjb3BlLnNoYXJlZD1ldChlLCJzaGFyZWRTY29wZSIpLGUuaW5kZW50Kz1YLGRlbGV0ZSBlLmJhcmUsZGVsZXRlIGUuaXNFeGlzdGVudGlhbEVxdWFscyxjPVtdLG49W10sXz10aGlzLnBhcmFtTmFtZXMoKTtmb3IoZz0wLHg9Xy5sZW5ndGg7Zzx4O2crKylhPV9bZ10sZS5zY29wZS5jaGVjayhhKXx8ZS5zY29wZS5wYXJhbWV0ZXIoYSk7UD10aGlzLnBhcmFtcztmb3IoeT0wLFQ9UC5sZW5ndGg7eTxUO3krKyl7bD1QW3ldO2lmKCFsLnNwbGF0KWNvbnRpbnVlO0g9dGhpcy5wYXJhbXM7Zm9yKHc9MCxOPUgubGVuZ3RoO3c8Tjt3KyspZj1IW3ddLGYubmFtZS52YWx1ZSYmZS5zY29wZS5hZGQoZi5uYW1lLnZhbHVlLCJ2YXIiLCEwKTtwPW5ldyBzKG5ldyBRKG5ldyBpKGZ1bmN0aW9uKCl7dmFyIHQsbixyLGk7cj10aGlzLnBhcmFtcyxpPVtdO2Zvcih0PTAsbj1yLmxlbmd0aDt0PG47dCsrKWY9clt0XSxpLnB1c2goZi5hc1JlZmVyZW5jZShlKSk7cmV0dXJuIGl9LmNhbGwodGhpcykpKSxuZXcgUShuZXcgTCgiYXJndW1lbnRzIikpKTticmVha31CPXRoaXMucGFyYW1zO2ZvcihFPTAsQz1CLmxlbmd0aDtFPEM7RSsrKWw9QltFXSxsLmlzQ29tcGxleCgpPyh2PWg9bC5hc1JlZmVyZW5jZShlKSxsLnZhbHVlJiYodj1uZXcgRCgiPyIsaCxsLnZhbHVlKSksbi5wdXNoKG5ldyBzKG5ldyBRKGwubmFtZSksdiwiPSIse3BhcmFtOiEwfSkpKTooaD1sLGwudmFsdWUmJih1PW5ldyBMKGgubmFtZS52YWx1ZSsiID09IG51bGwiKSx2PW5ldyBzKG5ldyBRKGwubmFtZSksbC52YWx1ZSwiPSIpLG4ucHVzaChuZXcgYih1LHYpKSkpLHB8fGMucHVzaChoKTttPXRoaXMuYm9keS5pc0VtcHR5KCkscCYmbi51bnNoaWZ0KHApLG4ubGVuZ3RoJiYoaj10aGlzLmJvZHkuZXhwcmVzc2lvbnMpLnVuc2hpZnQuYXBwbHkoaixuKTtmb3Iocj1PPTAsaz1jLmxlbmd0aDtPPGs7cj0rK08pZj1jW3JdLGUuc2NvcGUucGFyYW1ldGVyKGNbcl09Zi5jb21waWxlKGUpKTtkPVtdLEY9dGhpcy5wYXJhbU5hbWVzKCk7Zm9yKE09MCxBPUYubGVuZ3RoO008QTtNKyspe2E9RltNXTtpZihkdC5jYWxsKGQsYSk+PTApdGhyb3cgU3ludGF4RXJyb3IoIm11bHRpcGxlIHBhcmFtZXRlcnMgbmFtZWQgJyIrYSsiJyIpO2QucHVzaChhKX1yZXR1cm4hbSYmIXRoaXMubm9SZXR1cm4mJnRoaXMuYm9keS5tYWtlUmV0dXJuKCksdGhpcy5ib3VuZCYmKCgoST1lLnNjb3BlLnBhcmVudC5tZXRob2QpIT1udWxsP0kuYm91bmQ6dm9pZCAwKT90aGlzLmJvdW5kPXRoaXMuY29udGV4dD1lLnNjb3BlLnBhcmVudC5tZXRob2QuY29udGV4dDp0aGlzWyJzdGF0aWMiXXx8ZS5zY29wZS5wYXJlbnQuYXNzaWduKCJfdGhpcyIsInRoaXMiKSksbz1lLmluZGVudCx0PSJmdW5jdGlvbiIsdGhpcy5jdG9yJiYodCs9IiAiK3RoaXMubmFtZSksdCs9IigiK2Muam9pbigiLCAiKSsiKSB7Iix0aGlzLmJvZHkuaXNFbXB0eSgpfHwodCs9IlxuIit0aGlzLmJvZHkuY29tcGlsZVdpdGhEZWNsYXJhdGlvbnMoZSkrIlxuIit0aGlzLnRhYiksdCs9In0iLHRoaXMuY3Rvcj90aGlzLnRhYit0OnRoaXMuZnJvbnR8fGUubGV2ZWw+PVM/IigiK3QrIikiOnR9LHQucHJvdG90eXBlLnBhcmFtTmFtZXM9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixpO2U9W10saT10aGlzLnBhcmFtcztmb3Iobj0wLHI9aS5sZW5ndGg7bjxyO24rKyl0PWlbbl0sZS5wdXNoLmFwcGx5KGUsdC5uYW1lcygpKTtyZXR1cm4gZX0sdC5wcm90b3R5cGUudHJhdmVyc2VDaGlsZHJlbj1mdW5jdGlvbihlLG4pe2lmKGUpcmV0dXJuIHQuX19zdXBlcl9fLnRyYXZlcnNlQ2hpbGRyZW4uY2FsbCh0aGlzLGUsbil9LHR9KG8pLHQuUGFyYW09UD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCxuKXt2YXIgcjt0aGlzLm5hbWU9ZSx0aGlzLnZhbHVlPXQsdGhpcy5zcGxhdD1uO2lmKHI9ZT10aGlzLm5hbWUudW53cmFwQWxsKCkudmFsdWUsZHQuY2FsbChxLHIpPj0wKXRocm93IFN5bnRheEVycm9yKCdwYXJhbWV0ZXIgbmFtZSAiJytlKyciIGlzIG5vdCBhbGxvd2VkJyl9cmV0dXJuIHB0KHQsZSksdC5uYW1lPSJQYXJhbSIsdC5wcm90b3R5cGUuY2hpbGRyZW49WyJuYW1lIiwidmFsdWUiXSx0LnByb3RvdHlwZS5jb21waWxlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm5hbWUuY29tcGlsZShlLFQpfSx0LnByb3RvdHlwZS5hc1JlZmVyZW5jZT1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gdGhpcy5yZWZlcmVuY2U/dGhpcy5yZWZlcmVuY2U6KHQ9dGhpcy5uYW1lLHRbInRoaXMiXT8odD10LnByb3BlcnRpZXNbMF0ubmFtZSx0LnZhbHVlLnJlc2VydmVkJiYodD1uZXcgTChlLnNjb3BlLmZyZWVWYXJpYWJsZSh0LnZhbHVlKSkpKTp0LmlzQ29tcGxleCgpJiYodD1uZXcgTChlLnNjb3BlLmZyZWVWYXJpYWJsZSgiYXJnIikpKSx0PW5ldyBRKHQpLHRoaXMuc3BsYXQmJih0PW5ldyB6KHQpKSx0aGlzLnJlZmVyZW5jZT10KX0sdC5wcm90b3R5cGUuaXNDb21wbGV4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZS5pc0NvbXBsZXgoKX0sdC5wcm90b3R5cGUubmFtZXM9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbyx1O2U9PW51bGwmJihlPXRoaXMubmFtZSksdD1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gdD1lLnByb3BlcnRpZXNbMF0ubmFtZS52YWx1ZSx0LnJlc2VydmVkP1tdOlt0XX07aWYoZSBpbnN0YW5jZW9mIEwpcmV0dXJuW2UudmFsdWVdO2lmKGUgaW5zdGFuY2VvZiBRKXJldHVybiB0KGUpO249W10sdT1lLm9iamVjdHM7Zm9yKGk9MCxvPXUubGVuZ3RoO2k8bztpKyspcj11W2ldLHIgaW5zdGFuY2VvZiBzP24ucHVzaChyLnZhcmlhYmxlLmJhc2UudmFsdWUpOnIuaXNBcnJheSgpfHxyLmlzT2JqZWN0KCk/bi5wdXNoLmFwcGx5KG4sdGhpcy5uYW1lcyhyLmJhc2UpKTpyWyJ0aGlzIl0/bi5wdXNoLmFwcGx5KG4sdChyKSk6bi5wdXNoKHIuYmFzZS52YWx1ZSk7cmV0dXJuIG59LHR9KG8pLHQuU3BsYXQ9ej1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3RoaXMubmFtZT1lLmNvbXBpbGU/ZTpuZXcgTChlKX1yZXR1cm4gcHQodCxlKSx0Lm5hbWU9IlNwbGF0Iix0LnByb3RvdHlwZS5jaGlsZHJlbj1bIm5hbWUiXSx0LnByb3RvdHlwZS5pc0Fzc2lnbmFibGU9WSx0LnByb3RvdHlwZS5hc3NpZ25zPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm5hbWUuYXNzaWducyhlKX0sdC5wcm90b3R5cGUuY29tcGlsZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbmRleCE9bnVsbD90aGlzLmNvbXBpbGVQYXJhbShlKTp0aGlzLm5hbWUuY29tcGlsZShlKX0sdC5wcm90b3R5cGUudW53cmFwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZX0sdC5jb21waWxlU3BsYXR0ZWRBcnJheT1mdW5jdGlvbihlLG4scil7dmFyIGkscyxvLHUsYSxmLGwsYzthPS0xO3doaWxlKChmPW5bKythXSkmJiEoZiBpbnN0YW5jZW9mIHQpKWNvbnRpbnVlO2lmKGE+PW4ubGVuZ3RoKXJldHVybiIiO2lmKG4ubGVuZ3RoPT09MSlyZXR1cm4gbz1uWzBdLmNvbXBpbGUoZSxUKSxyP286IiIrZnQoInNsaWNlIikrIi5jYWxsKCIrbysiKSI7aT1uLnNsaWNlKGEpO2Zvcih1PWw9MCxjPWkubGVuZ3RoO2w8Yzt1PSsrbClmPWlbdV0sbz1mLmNvbXBpbGUoZSxUKSxpW3VdPWYgaW5zdGFuY2VvZiB0PyIiK2Z0KCJzbGljZSIpKyIuY2FsbCgiK28rIikiOiJbIitvKyJdIjtyZXR1cm4gYT09PTA/aVswXSsoIi5jb25jYXQoIitpLnNsaWNlKDEpLmpvaW4oIiwgIikrIikiKToocz1mdW5jdGlvbigpe3ZhciB0LHIsaSxzO2k9bi5zbGljZSgwLGEpLHM9W107Zm9yKHQ9MCxyPWkubGVuZ3RoO3Q8cjt0KyspZj1pW3RdLHMucHVzaChmLmNvbXBpbGUoZSxUKSk7cmV0dXJuIHN9KCksIlsiK3Muam9pbigiLCAiKSsiXS5jb25jYXQoIitpLmpvaW4oIiwgIikrIikiKX0sdH0obyksdC5XaGlsZT1HPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLmNvbmRpdGlvbj0odCE9bnVsbD90LmludmVydDp2b2lkIDApP2UuaW52ZXJ0KCk6ZSx0aGlzLmd1YXJkPXQhPW51bGw/dC5ndWFyZDp2b2lkIDB9cmV0dXJuIHB0KHQsZSksdC5uYW1lPSJXaGlsZSIsdC5wcm90b3R5cGUuY2hpbGRyZW49WyJjb25kaXRpb24iLCJndWFyZCIsImJvZHkiXSx0LnByb3RvdHlwZS5pc1N0YXRlbWVudD1ZLHQucHJvdG90eXBlLm1ha2VSZXR1cm49ZnVuY3Rpb24oZSl7cmV0dXJuIGU/dC5fX3N1cGVyX18ubWFrZVJldHVybi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6KHRoaXMucmV0dXJucz0hdGhpcy5qdW1wcyh7bG9vcDohMH0pLHRoaXMpfSx0LnByb3RvdHlwZS5hZGRCb2R5PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmJvZHk9ZSx0aGlzfSx0LnByb3RvdHlwZS5qdW1wcz1mdW5jdGlvbigpe3ZhciBlLHQsbixyO2U9dGhpcy5ib2R5LmV4cHJlc3Npb25zO2lmKCFlLmxlbmd0aClyZXR1cm4hMTtmb3Iobj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl7dD1lW25dO2lmKHQuanVtcHMoe2xvb3A6ITB9KSlyZXR1cm4gdH1yZXR1cm4hMX0sdC5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk7cmV0dXJuIGUuaW5kZW50Kz1YLGk9IiIsdD10aGlzLmJvZHksdC5pc0VtcHR5KCk/dD0iIjoodGhpcy5yZXR1cm5zJiYodC5tYWtlUmV0dXJuKHI9ZS5zY29wZS5mcmVlVmFyaWFibGUoInJlc3VsdHMiKSksaT0iIit0aGlzLnRhYityKyIgPSBbXTtcbiIpLHRoaXMuZ3VhcmQmJih0LmV4cHJlc3Npb25zLmxlbmd0aD4xP3QuZXhwcmVzc2lvbnMudW5zaGlmdChuZXcgYigobmV3IEgodGhpcy5ndWFyZCkpLmludmVydCgpLG5ldyBMKCJjb250aW51ZSIpKSk6dGhpcy5ndWFyZCYmKHQ9dS53cmFwKFtuZXcgYih0aGlzLmd1YXJkLHQpXSkpKSx0PSJcbiIrdC5jb21waWxlKGUsaykrIlxuIit0aGlzLnRhYiksbj1pK3RoaXMudGFiKygid2hpbGUgKCIrdGhpcy5jb25kaXRpb24uY29tcGlsZShlLEMpKyIpIHsiK3QrIn0iKSx0aGlzLnJldHVybnMmJihuKz0iXG4iK3RoaXMudGFiKyJyZXR1cm4gIityKyI7Iiksbn0sdH0obyksdC5PcD1EPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIoZSxuLHIsaSl7aWYoZT09PSJpbiIpcmV0dXJuIG5ldyB3KG4scik7aWYoZT09PSJkbyIpcmV0dXJuIHRoaXMuZ2VuZXJhdGVEbyhuKTtpZihlPT09Im5ldyIpe2lmKG4gaW5zdGFuY2VvZiBhJiYhblsiZG8iXSYmIW4uaXNOZXcpcmV0dXJuIG4ubmV3SW5zdGFuY2UoKTtpZihuIGluc3RhbmNlb2YgYyYmbi5ib3VuZHx8blsiZG8iXSluPW5ldyBIKG4pfXJldHVybiB0aGlzLm9wZXJhdG9yPXRbZV18fGUsdGhpcy5maXJzdD1uLHRoaXMuc2Vjb25kPXIsdGhpcy5mbGlwPSEhaSx0aGlzfXZhciB0LG47cmV0dXJuIHB0KHIsZSksci5uYW1lPSJPcCIsdD17Ij09IjoiPT09IiwiIT0iOiIhPT0iLG9mOiJpbiJ9LG49eyIhPT0iOiI9PT0iLCI9PT0iOiIhPT0ifSxyLnByb3RvdHlwZS5jaGlsZHJlbj1bImZpcnN0Iiwic2Vjb25kIl0sci5wcm90b3R5cGUuaXNTaW1wbGVOdW1iZXI9TSxyLnByb3RvdHlwZS5pc1VuYXJ5PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuc2Vjb25kfSxyLnByb3RvdHlwZS5pc0NvbXBsZXg9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4hdGhpcy5pc1VuYXJ5KCl8fChlPXRoaXMub3BlcmF0b3IpIT09IisiJiZlIT09Ii0ifHx0aGlzLmZpcnN0LmlzQ29tcGxleCgpfSxyLnByb3RvdHlwZS5pc0NoYWluYWJsZT1mdW5jdGlvbigpe3ZhciBlO3JldHVybihlPXRoaXMub3BlcmF0b3IpPT09IjwifHxlPT09Ij4ifHxlPT09Ij49Inx8ZT09PSI8PSJ8fGU9PT0iPT09Inx8ZT09PSIhPT0ifSxyLnByb3RvdHlwZS5pbnZlcnQ9ZnVuY3Rpb24oKXt2YXIgZSx0LGkscyxvO2lmKHRoaXMuaXNDaGFpbmFibGUoKSYmdGhpcy5maXJzdC5pc0NoYWluYWJsZSgpKXtlPSEwLHQ9dGhpczt3aGlsZSh0JiZ0Lm9wZXJhdG9yKWUmJihlPXQub3BlcmF0b3IgaW4gbiksdD10LmZpcnN0O2lmKCFlKXJldHVybihuZXcgSCh0aGlzKSkuaW52ZXJ0KCk7dD10aGlzO3doaWxlKHQmJnQub3BlcmF0b3IpdC5pbnZlcnQ9IXQuaW52ZXJ0LHQub3BlcmF0b3I9blt0Lm9wZXJhdG9yXSx0PXQuZmlyc3Q7cmV0dXJuIHRoaXN9cmV0dXJuKHM9blt0aGlzLm9wZXJhdG9yXSk/KHRoaXMub3BlcmF0b3I9cyx0aGlzLmZpcnN0LnVud3JhcCgpaW5zdGFuY2VvZiByJiZ0aGlzLmZpcnN0LmludmVydCgpLHRoaXMpOnRoaXMuc2Vjb25kPyhuZXcgSCh0aGlzKSkuaW52ZXJ0KCk6dGhpcy5vcGVyYXRvcj09PSIhIiYmKGk9dGhpcy5maXJzdC51bndyYXAoKSlpbnN0YW5jZW9mIHImJigobz1pLm9wZXJhdG9yKT09PSIhInx8bz09PSJpbiJ8fG89PT0iaW5zdGFuY2VvZiIpP2k6bmV3IHIoIiEiLHRoaXMpfSxyLnByb3RvdHlwZS51bmZvbGRTb2FrPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybigodD10aGlzLm9wZXJhdG9yKT09PSIrKyJ8fHQ9PT0iLS0ifHx0PT09ImRlbGV0ZSIpJiZhdChlLHRoaXMsImZpcnN0Iil9LHIucHJvdG90eXBlLmdlbmVyYXRlRG89ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbyx1LGYsbDtpPVtdLG49ZSBpbnN0YW5jZW9mIHMmJihvPWUudmFsdWUudW53cmFwKCkpaW5zdGFuY2VvZiBjP286ZSxsPW4ucGFyYW1zfHxbXTtmb3IodT0wLGY9bC5sZW5ndGg7dTxmO3UrKylyPWxbdV0sci52YWx1ZT8oaS5wdXNoKHIudmFsdWUpLGRlbGV0ZSByLnZhbHVlKTppLnB1c2gocik7cmV0dXJuIHQ9bmV3IGEoZSxpKSx0WyJkbyJdPSEwLHR9LHIucHJvdG90eXBlLmNvbXBpbGVOb2RlPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpO249dGhpcy5pc0NoYWluYWJsZSgpJiZ0aGlzLmZpcnN0LmlzQ2hhaW5hYmxlKCksbnx8KHRoaXMuZmlyc3QuZnJvbnQ9dGhpcy5mcm9udCk7aWYodGhpcy5vcGVyYXRvcj09PSJkZWxldGUiJiZlLnNjb3BlLmNoZWNrKHRoaXMuZmlyc3QudW53cmFwQWxsKCkudmFsdWUpKXRocm93IFN5bnRheEVycm9yKCJkZWxldGUgb3BlcmFuZCBtYXkgbm90IGJlIGFyZ3VtZW50IG9yIHZhciIpO2lmKCgocj10aGlzLm9wZXJhdG9yKT09PSItLSJ8fHI9PT0iKysiKSYmKGk9dGhpcy5maXJzdC51bndyYXBBbGwoKS52YWx1ZSxkdC5jYWxsKHEsaSk+PTApKXRocm93IFN5bnRheEVycm9yKCJwcmVmaXggaW5jcmVtZW50L2RlY3JlbWVudCBtYXkgbm90IGhhdmUgZXZhbCBvciBhcmd1bWVudHMgb3BlcmFuZCIpO3JldHVybiB0aGlzLmlzVW5hcnkoKT90aGlzLmNvbXBpbGVVbmFyeShlKTpuP3RoaXMuY29tcGlsZUNoYWluKGUpOnRoaXMub3BlcmF0b3I9PT0iPyI/dGhpcy5jb21waWxlRXhpc3RlbmNlKGUpOih0PXRoaXMuZmlyc3QuY29tcGlsZShlLE4pKyIgIit0aGlzLm9wZXJhdG9yKyIgIit0aGlzLnNlY29uZC5jb21waWxlKGUsTiksZS5sZXZlbDw9Tj90OiIoIit0KyIpIil9LHIucHJvdG90eXBlLmNvbXBpbGVDaGFpbj1mdW5jdGlvbihlKXt2YXIgdCxuLHIsaTtyZXR1cm4gaT10aGlzLmZpcnN0LnNlY29uZC5jYWNoZShlKSx0aGlzLmZpcnN0LnNlY29uZD1pWzBdLHI9aVsxXSxuPXRoaXMuZmlyc3QuY29tcGlsZShlLE4pLHQ9IiIrbisiICIrKHRoaXMuaW52ZXJ0PyImJiI6Inx8IikrIiAiK3IuY29tcGlsZShlKSsiICIrdGhpcy5vcGVyYXRvcisiICIrdGhpcy5zZWNvbmQuY29tcGlsZShlLE4pLCIoIit0KyIpIn0sci5wcm90b3R5cGUuY29tcGlsZUV4aXN0ZW5jZT1mdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiB0aGlzLmZpcnN0LmlzQ29tcGxleCgpJiZlLmxldmVsPms/KG49bmV3IEwoZS5zY29wZS5mcmVlVmFyaWFibGUoInJlZiIpKSx0PW5ldyBIKG5ldyBzKG4sdGhpcy5maXJzdCkpKToodD10aGlzLmZpcnN0LG49dCksKG5ldyBiKG5ldyBwKHQpLG4se3R5cGU6ImlmIn0pKS5hZGRFbHNlKHRoaXMuc2Vjb25kKS5jb21waWxlKGUpfSxyLnByb3RvdHlwZS5jb21waWxlVW5hcnk9ZnVuY3Rpb24oZSl7dmFyIHQsbixpO2lmKGUubGV2ZWw+PVMpcmV0dXJuKG5ldyBIKHRoaXMpKS5jb21waWxlKGUpO249W3Q9dGhpcy5vcGVyYXRvcl0saT10PT09IisifHx0PT09Ii0iLCh0PT09Im5ldyJ8fHQ9PT0idHlwZW9mInx8dD09PSJkZWxldGUifHxpJiZ0aGlzLmZpcnN0IGluc3RhbmNlb2YgciYmdGhpcy5maXJzdC5vcGVyYXRvcj09PXQpJiZuLnB1c2goIiAiKTtpZihpJiZ0aGlzLmZpcnN0IGluc3RhbmNlb2Ygcnx8dD09PSJuZXciJiZ0aGlzLmZpcnN0LmlzU3RhdGVtZW50KGUpKXRoaXMuZmlyc3Q9bmV3IEgodGhpcy5maXJzdCk7cmV0dXJuIG4ucHVzaCh0aGlzLmZpcnN0LmNvbXBpbGUoZSxOKSksdGhpcy5mbGlwJiZuLnJldmVyc2UoKSxuLmpvaW4oIiIpfSxyLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gci5fX3N1cGVyX18udG9TdHJpbmcuY2FsbCh0aGlzLGUsdGhpcy5jb25zdHJ1Y3Rvci5uYW1lKyIgIit0aGlzLm9wZXJhdG9yKX0scn0obyksdC5Jbj13PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLm9iamVjdD1lLHRoaXMuYXJyYXk9dH1yZXR1cm4gcHQodCxlKSx0Lm5hbWU9IkluIix0LnByb3RvdHlwZS5jaGlsZHJlbj1bIm9iamVjdCIsImFycmF5Il0sdC5wcm90b3R5cGUuaW52ZXJ0PU8sdC5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGkscztpZih0aGlzLmFycmF5IGluc3RhbmNlb2YgUSYmdGhpcy5hcnJheS5pc0FycmF5KCkpe3M9dGhpcy5hcnJheS5iYXNlLm9iamVjdHM7Zm9yKHI9MCxpPXMubGVuZ3RoO3I8aTtyKyspe249c1tyXTtpZihuIGluc3RhbmNlb2Ygeil7dD0hMDticmVha31jb250aW51ZX1pZighdClyZXR1cm4gdGhpcy5jb21waWxlT3JUZXN0KGUpfXJldHVybiB0aGlzLmNvbXBpbGVMb29wVGVzdChlKX0sdC5wcm90b3R5cGUuY29tcGlsZU9yVGVzdD1mdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxzLG8sdSxhLGY7cmV0dXJuIHRoaXMuYXJyYXkuYmFzZS5vYmplY3RzLmxlbmd0aD09PTA/IiIrISF0aGlzLm5lZ2F0ZWQ6KGE9dGhpcy5vYmplY3QuY2FjaGUoZSxOKSxvPWFbMF0scz1hWzFdLGY9dGhpcy5uZWdhdGVkP1siICE9PSAiLCIgJiYgIl06WyIgPT09ICIsIiB8fCAiXSx0PWZbMF0sbj1mWzFdLHU9ZnVuY3Rpb24oKXt2YXIgbix1LGEsZjthPXRoaXMuYXJyYXkuYmFzZS5vYmplY3RzLGY9W107Zm9yKHI9bj0wLHU9YS5sZW5ndGg7bjx1O3I9KytuKWk9YVtyXSxmLnB1c2goKHI/czpvKSt0K2kuY29tcGlsZShlLFMpKTtyZXR1cm4gZn0uY2FsbCh0aGlzKSx1PXUuam9pbihuKSxlLmxldmVsPE4/dToiKCIrdSsiKSIpfSx0LnByb3RvdHlwZS5jb21waWxlTG9vcFRlc3Q9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk7cmV0dXJuIGk9dGhpcy5vYmplY3QuY2FjaGUoZSxUKSxyPWlbMF0sbj1pWzFdLHQ9ZnQoImluZGV4T2YiKSsoIi5jYWxsKCIrdGhpcy5hcnJheS5jb21waWxlKGUsVCkrIiwgIituKyIpICIpKyh0aGlzLm5lZ2F0ZWQ/IjwgMCI6Ij49IDAiKSxyPT09bj90Oih0PXIrIiwgIit0LGUubGV2ZWw8VD90OiIoIit0KyIpIil9LHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiB0Ll9fc3VwZXJfXy50b1N0cmluZy5jYWxsKHRoaXMsZSx0aGlzLmNvbnN0cnVjdG9yLm5hbWUrKHRoaXMubmVnYXRlZD8iISI6IiIpKX0sdH0obyksdC5Ucnk9Sj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCxuLHIpe3RoaXMuYXR0ZW1wdD1lLHRoaXMuZXJyb3I9dCx0aGlzLnJlY292ZXJ5PW4sdGhpcy5lbnN1cmU9cn1yZXR1cm4gcHQodCxlKSx0Lm5hbWU9IlRyeSIsdC5wcm90b3R5cGUuY2hpbGRyZW49WyJhdHRlbXB0IiwicmVjb3ZlcnkiLCJlbnN1cmUiXSx0LnByb3RvdHlwZS5pc1N0YXRlbWVudD1ZLHQucHJvdG90eXBlLmp1bXBzPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0aGlzLmF0dGVtcHQuanVtcHMoZSl8fCgodD10aGlzLnJlY292ZXJ5KSE9bnVsbD90Lmp1bXBzKGUpOnZvaWQgMCl9LHQucHJvdG90eXBlLm1ha2VSZXR1cm49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYXR0ZW1wdCYmKHRoaXMuYXR0ZW1wdD10aGlzLmF0dGVtcHQubWFrZVJldHVybihlKSksdGhpcy5yZWNvdmVyeSYmKHRoaXMucmVjb3Zlcnk9dGhpcy5yZWNvdmVyeS5tYWtlUmV0dXJuKGUpKSx0aGlzfSx0LnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihlKXt2YXIgdCxuLHIsaTtyZXR1cm4gZS5pbmRlbnQrPVgscj10aGlzLmVycm9yPyIgKCIrdGhpcy5lcnJvci5jb21waWxlKGUpKyIpICI6IiAiLGk9dGhpcy5hdHRlbXB0LmNvbXBpbGUoZSxrKSx0PWZ1bmN0aW9uKCl7dmFyIHQ7aWYodGhpcy5yZWNvdmVyeSl7aWYodD10aGlzLmVycm9yLnZhbHVlLGR0LmNhbGwocSx0KT49MCl0aHJvdyBTeW50YXhFcnJvcignY2F0Y2ggdmFyaWFibGUgbWF5IG5vdCBiZSAiJyt0aGlzLmVycm9yLnZhbHVlKyciJyk7cmV0dXJuIGUuc2NvcGUuY2hlY2sodGhpcy5lcnJvci52YWx1ZSl8fGUuc2NvcGUuYWRkKHRoaXMuZXJyb3IudmFsdWUsInBhcmFtIiksIiBjYXRjaCIrcisie1xuIit0aGlzLnJlY292ZXJ5LmNvbXBpbGUoZSxrKSsiXG4iK3RoaXMudGFiKyJ9In1pZighdGhpcy5lbnN1cmUmJiF0aGlzLnJlY292ZXJ5KXJldHVybiIgY2F0Y2ggKF9lcnJvcikge30ifS5jYWxsKHRoaXMpLG49dGhpcy5lbnN1cmU/IiBmaW5hbGx5IHtcbiIrdGhpcy5lbnN1cmUuY29tcGlsZShlLGspKyJcbiIrdGhpcy50YWIrIn0iOiIiLCIiK3RoaXMudGFiKyJ0cnkge1xuIitpKyJcbiIrdGhpcy50YWIrIn0iKyh0fHwiIikrbn0sdH0obyksdC5UaHJvdz0kPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dGhpcy5leHByZXNzaW9uPWV9cmV0dXJuIHB0KHQsZSksdC5uYW1lPSJUaHJvdyIsdC5wcm90b3R5cGUuY2hpbGRyZW49WyJleHByZXNzaW9uIl0sdC5wcm90b3R5cGUuaXNTdGF0ZW1lbnQ9WSx0LnByb3RvdHlwZS5qdW1wcz1NLHQucHJvdG90eXBlLm1ha2VSZXR1cm49Vix0LnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50YWIrKCJ0aHJvdyAiK3RoaXMuZXhwcmVzc2lvbi5jb21waWxlKGUpKyI7Iil9LHR9KG8pLHQuRXhpc3RlbmNlPXA9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLmV4cHJlc3Npb249ZX1yZXR1cm4gcHQodCxlKSx0Lm5hbWU9IkV4aXN0ZW5jZSIsdC5wcm90b3R5cGUuY2hpbGRyZW49WyJleHByZXNzaW9uIl0sdC5wcm90b3R5cGUuaW52ZXJ0PU8sdC5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk7cmV0dXJuIHRoaXMuZXhwcmVzc2lvbi5mcm9udD10aGlzLmZyb250LHI9dGhpcy5leHByZXNzaW9uLmNvbXBpbGUoZSxOKSxtLnRlc3QocikmJiFlLnNjb3BlLmNoZWNrKHIpPyhpPXRoaXMubmVnYXRlZD9bIj09PSIsInx8Il06WyIhPT0iLCImJiJdLHQ9aVswXSxuPWlbMV0scj0idHlwZW9mICIrcisiICIrdCsnICJ1bmRlZmluZWQiICcrbisiICIrcisiICIrdCsiIG51bGwiKTpyPSIiK3IrIiAiKyh0aGlzLm5lZ2F0ZWQ/Ij09IjoiIT0iKSsiIG51bGwiLGUubGV2ZWw8PXg/cjoiKCIrcisiKSJ9LHR9KG8pLHQuUGFyZW5zPUg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLmJvZHk9ZX1yZXR1cm4gcHQodCxlKSx0Lm5hbWU9IlBhcmVucyIsdC5wcm90b3R5cGUuY2hpbGRyZW49WyJib2R5Il0sdC5wcm90b3R5cGUudW53cmFwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYm9keX0sdC5wcm90b3R5cGUuaXNDb21wbGV4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYm9keS5pc0NvbXBsZXgoKX0sdC5wcm90b3R5cGUuY29tcGlsZU5vZGU9ZnVuY3Rpb24oZSl7dmFyIHQsbixyO3JldHVybiByPXRoaXMuYm9keS51bndyYXAoKSxyIGluc3RhbmNlb2YgUSYmci5pc0F0b21pYygpPyhyLmZyb250PXRoaXMuZnJvbnQsci5jb21waWxlKGUpKToobj1yLmNvbXBpbGUoZSxDKSx0PWUubGV2ZWw8TiYmKHIgaW5zdGFuY2VvZiBEfHxyIGluc3RhbmNlb2YgYXx8ciBpbnN0YW5jZW9mIHYmJnIucmV0dXJucyksdD9uOiIoIituKyIpIil9LHR9KG8pLHQuRm9yPXY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe3ZhciBuO3RoaXMuc291cmNlPXQuc291cmNlLHRoaXMuZ3VhcmQ9dC5ndWFyZCx0aGlzLnN0ZXA9dC5zdGVwLHRoaXMubmFtZT10Lm5hbWUsdGhpcy5pbmRleD10LmluZGV4LHRoaXMuYm9keT11LndyYXAoW2VdKSx0aGlzLm93bj0hIXQub3duLHRoaXMub2JqZWN0PSEhdC5vYmplY3QsdGhpcy5vYmplY3QmJihuPVt0aGlzLmluZGV4LHRoaXMubmFtZV0sdGhpcy5uYW1lPW5bMF0sdGhpcy5pbmRleD1uWzFdKTtpZih0aGlzLmluZGV4IGluc3RhbmNlb2YgUSl0aHJvdyBTeW50YXhFcnJvcigiaW5kZXggY2Fubm90IGJlIGEgcGF0dGVybiBtYXRjaGluZyBleHByZXNzaW9uIik7dGhpcy5yYW5nZT10aGlzLnNvdXJjZSBpbnN0YW5jZW9mIFEmJnRoaXMuc291cmNlLmJhc2UgaW5zdGFuY2VvZiBqJiYhdGhpcy5zb3VyY2UucHJvcGVydGllcy5sZW5ndGgsdGhpcy5wYXR0ZXJuPXRoaXMubmFtZSBpbnN0YW5jZW9mIFE7aWYodGhpcy5yYW5nZSYmdGhpcy5pbmRleCl0aHJvdyBTeW50YXhFcnJvcigiaW5kZXhlcyBkbyBub3QgYXBwbHkgdG8gcmFuZ2UgbG9vcHMiKTtpZih0aGlzLnJhbmdlJiZ0aGlzLnBhdHRlcm4pdGhyb3cgU3ludGF4RXJyb3IoImNhbm5vdCBwYXR0ZXJuIG1hdGNoIG92ZXIgcmFuZ2UgbG9vcHMiKTt0aGlzLnJldHVybnM9ITF9cmV0dXJuIHB0KHQsZSksdC5uYW1lPSJGb3IiLHQucHJvdG90eXBlLmNoaWxkcmVuPVsiYm9keSIsInNvdXJjZSIsImd1YXJkIiwic3RlcCJdLHQucHJvdG90eXBlLmNvbXBpbGVOb2RlPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG8sYSxmLGwsYyxoLHAsZCx2LGcseSx3LEUsUyx4LEMsQSxPLE0sXyxEO3JldHVybiB0PXUud3JhcChbdGhpcy5ib2R5XSkscD0oRD1pdCh0LmV4cHJlc3Npb25zKSkhPW51bGw/RC5qdW1wcygpOnZvaWQgMCxwJiZwIGluc3RhbmNlb2YgRiYmKHRoaXMucmV0dXJucz0hMSksQz10aGlzLnJhbmdlP3RoaXMuc291cmNlLmJhc2U6dGhpcy5zb3VyY2UseD1lLnNjb3BlLHY9dGhpcy5uYW1lJiZ0aGlzLm5hbWUuY29tcGlsZShlLFQpLGY9dGhpcy5pbmRleCYmdGhpcy5pbmRleC5jb21waWxlKGUsVCksdiYmIXRoaXMucGF0dGVybiYmeC5maW5kKHYse2ltbWVkaWF0ZTohMH0pLGYmJnguZmluZChmLHtpbW1lZGlhdGU6ITB9KSx0aGlzLnJldHVybnMmJihTPXguZnJlZVZhcmlhYmxlKCJyZXN1bHRzIikpLGw9dGhpcy5vYmplY3QmJmZ8fHguZnJlZVZhcmlhYmxlKCJpIiksYz10aGlzLnJhbmdlJiZ2fHxmfHxsLGg9YyE9PWw/IiIrYysiID0gIjoiIix0aGlzLnN0ZXAmJiF0aGlzLnJhbmdlJiYoTz14LmZyZWVWYXJpYWJsZSgic3RlcCIpKSx0aGlzLnBhdHRlcm4mJih2PWwpLF89IiIsbz0iIixuPSIiLGE9dGhpcy50YWIrWCx0aGlzLnJhbmdlP3I9Qy5jb21waWxlKHN0KGUse2luZGV4OmwsbmFtZTp2LHN0ZXA6dGhpcy5zdGVwfSkpOihNPXRoaXMuc291cmNlLmNvbXBpbGUoZSxUKSwodnx8dGhpcy5vd24pJiYhbS50ZXN0KE0pJiYobj0iIit0aGlzLnRhYisoeT14LmZyZWVWYXJpYWJsZSgicmVmIikpKyIgPSAiK00rIjtcbiIsTT15KSx2JiYhdGhpcy5wYXR0ZXJuJiYoZz0iIit2KyIgPSAiK00rIlsiK2MrIl0iKSx0aGlzLm9iamVjdHx8KGQ9eC5mcmVlVmFyaWFibGUoImxlbiIpLGk9IiIraCtsKyIgPSAwLCAiK2QrIiA9ICIrTSsiLmxlbmd0aCIsdGhpcy5zdGVwJiYoaSs9IiwgIitPKyIgPSAiK3RoaXMuc3RlcC5jb21waWxlKGUsTikpLEE9IiIraCsodGhpcy5zdGVwPyIiK2wrIiArPSAiK086YyE9PWw/IisrIitsOiIiK2wrIisrIikscj0iIitpKyI7ICIrbCsiIDwgIitkKyI7ICIrQSkpLHRoaXMucmV0dXJucyYmKHc9IiIrdGhpcy50YWIrUysiID0gW107XG4iLEU9IlxuIit0aGlzLnRhYisicmV0dXJuICIrUysiOyIsdC5tYWtlUmV0dXJuKFMpKSx0aGlzLmd1YXJkJiYodC5leHByZXNzaW9ucy5sZW5ndGg+MT90LmV4cHJlc3Npb25zLnVuc2hpZnQobmV3IGIoKG5ldyBIKHRoaXMuZ3VhcmQpKS5pbnZlcnQoKSxuZXcgTCgiY29udGludWUiKSkpOnRoaXMuZ3VhcmQmJih0PXUud3JhcChbbmV3IGIodGhpcy5ndWFyZCx0KV0pKSksdGhpcy5wYXR0ZXJuJiZ0LmV4cHJlc3Npb25zLnVuc2hpZnQobmV3IHModGhpcy5uYW1lLG5ldyBMKCIiK00rIlsiK2MrIl0iKSkpLG4rPXRoaXMucGx1Y2tEaXJlY3RDYWxsKGUsdCksZyYmKF89IlxuIithK2crIjsiKSx0aGlzLm9iamVjdCYmKHI9IiIrYysiIGluICIrTSx0aGlzLm93biYmKG89IlxuIithKyJpZiAoISIrZnQoImhhc1Byb3AiKSsiLmNhbGwoIitNKyIsICIrYysiKSkgY29udGludWU7IikpLHQ9dC5jb21waWxlKHN0KGUse2luZGVudDphfSksayksdCYmKHQ9IlxuIit0KyJcbiIpLCIiK24rKHd8fCIiKSt0aGlzLnRhYisiZm9yICgiK3IrIikgeyIrbytfK3QrdGhpcy50YWIrIn0iKyhFfHwiIil9LHQucHJvdG90eXBlLnBsdWNrRGlyZWN0Q2FsbD1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvLHUsZixsLGgscCxkLHYsbSxnLHksYjtyPSIiLGQ9dC5leHByZXNzaW9ucztmb3IodT1oPTAscD1kLmxlbmd0aDtoPHA7dT0rK2gpe2k9ZFt1XSxpPWkudW53cmFwQWxsKCk7aWYoIShpIGluc3RhbmNlb2YgYSkpY29udGludWU7bD1pLnZhcmlhYmxlLnVud3JhcEFsbCgpO2lmKCEobCBpbnN0YW5jZW9mIGN8fGwgaW5zdGFuY2VvZiBRJiYoKHY9bC5iYXNlKSE9bnVsbD92LnVud3JhcEFsbCgpOnZvaWQgMClpbnN0YW5jZW9mIGMmJmwucHJvcGVydGllcy5sZW5ndGg9PT0xJiYoKG09KGc9bC5wcm9wZXJ0aWVzWzBdLm5hbWUpIT1udWxsP2cudmFsdWU6dm9pZCAwKT09PSJjYWxsInx8bT09PSJhcHBseSIpKSljb250aW51ZTtvPSgoeT1sLmJhc2UpIT1udWxsP3kudW53cmFwQWxsKCk6dm9pZCAwKXx8bCxmPW5ldyBMKGUuc2NvcGUuZnJlZVZhcmlhYmxlKCJmbiIpKSxuPW5ldyBRKGYpLGwuYmFzZSYmKGI9W24sbF0sbC5iYXNlPWJbMF0sbj1iWzFdKSx0LmV4cHJlc3Npb25zW3VdPW5ldyBhKG4saS5hcmdzKSxyKz10aGlzLnRhYisobmV3IHMoZixvKSkuY29tcGlsZShlLGspKyI7XG4ifXJldHVybiByfSx0fShHKSx0LlN3aXRjaD1XPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0LG4pe3RoaXMuc3ViamVjdD1lLHRoaXMuY2FzZXM9dCx0aGlzLm90aGVyd2lzZT1ufXJldHVybiBwdCh0LGUpLHQubmFtZT0iU3dpdGNoIix0LnByb3RvdHlwZS5jaGlsZHJlbj1bInN1YmplY3QiLCJjYXNlcyIsIm90aGVyd2lzZSJdLHQucHJvdG90eXBlLmlzU3RhdGVtZW50PVksdC5wcm90b3R5cGUuanVtcHM9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGkscyxvLHU7ZT09bnVsbCYmKGU9e2Jsb2NrOiEwfSkscz10aGlzLmNhc2VzO2ZvcihyPTAsaT1zLmxlbmd0aDtyPGk7cisrKXtvPXNbcl0sbj1vWzBdLHQ9b1sxXTtpZih0Lmp1bXBzKGUpKXJldHVybiB0fXJldHVybih1PXRoaXMub3RoZXJ3aXNlKSE9bnVsbD91Lmp1bXBzKGUpOnZvaWQgMH0sdC5wcm90b3R5cGUubWFrZVJldHVybj1mdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxzO2k9dGhpcy5jYXNlcztmb3Iobj0wLHI9aS5sZW5ndGg7bjxyO24rKyl0PWlbbl0sdFsxXS5tYWtlUmV0dXJuKGUpO3JldHVybiBlJiYodGhpcy5vdGhlcndpc2V8fCh0aGlzLm90aGVyd2lzZT1uZXcgdShbbmV3IEwoInZvaWQgMCIpXSkpKSwocz10aGlzLm90aGVyd2lzZSkhPW51bGwmJnMubWFrZVJldHVybihlKSx0aGlzfSx0LnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxzLG8sdSxhLGYsbCxjLGgscCxkLHYsbSxnO2E9ZS5pbmRlbnQrWCxmPWUuaW5kZW50PWErWCxyPXRoaXMudGFiKygic3dpdGNoICgiKygoKGQ9dGhpcy5zdWJqZWN0KSE9bnVsbD9kLmNvbXBpbGUoZSxDKTp2b2lkIDApfHwhMSkrIikge1xuIiksdj10aGlzLmNhc2VzO2Zvcih1PWw9MCxoPXYubGVuZ3RoO2w8aDt1PSsrbCl7bT12W3VdLHM9bVswXSx0PW1bMV0sZz1ydChbc10pO2ZvcihjPTAscD1nLmxlbmd0aDtjPHA7YysrKWk9Z1tjXSx0aGlzLnN1YmplY3R8fChpPWkuaW52ZXJ0KCkpLHIrPWErKCJjYXNlICIraS5jb21waWxlKGUsQykrIjpcbiIpO2lmKG49dC5jb21waWxlKGUsaykpcis9bisiXG4iO2lmKHU9PT10aGlzLmNhc2VzLmxlbmd0aC0xJiYhdGhpcy5vdGhlcndpc2UpYnJlYWs7bz10aGlzLmxhc3ROb25Db21tZW50KHQuZXhwcmVzc2lvbnMpO2lmKG8gaW5zdGFuY2VvZiBGfHxvIGluc3RhbmNlb2YgTCYmby5qdW1wcygpJiZvLnZhbHVlIT09ImRlYnVnZ2VyIiljb250aW51ZTtyKz1mKyJicmVhaztcbiJ9cmV0dXJuIHRoaXMub3RoZXJ3aXNlJiZ0aGlzLm90aGVyd2lzZS5leHByZXNzaW9ucy5sZW5ndGgmJihyKz1hKygiZGVmYXVsdDpcbiIrdGhpcy5vdGhlcndpc2UuY29tcGlsZShlLGspKyJcbiIpKSxyK3RoaXMudGFiKyJ9In0sdH0obyksdC5JZj1iPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0LG4pe3RoaXMuYm9keT10LG49PW51bGwmJihuPXt9KSx0aGlzLmNvbmRpdGlvbj1uLnR5cGU9PT0idW5sZXNzIj9lLmludmVydCgpOmUsdGhpcy5lbHNlQm9keT1udWxsLHRoaXMuaXNDaGFpbj0hMSx0aGlzLnNvYWs9bi5zb2FrfXJldHVybiBwdCh0LGUpLHQubmFtZT0iSWYiLHQucHJvdG90eXBlLmNoaWxkcmVuPVsiY29uZGl0aW9uIiwiYm9keSIsImVsc2VCb2R5Il0sdC5wcm90b3R5cGUuYm9keU5vZGU9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4oZT10aGlzLmJvZHkpIT1udWxsP2UudW53cmFwKCk6dm9pZCAwfSx0LnByb3RvdHlwZS5lbHNlQm9keU5vZGU9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4oZT10aGlzLmVsc2VCb2R5KSE9bnVsbD9lLnVud3JhcCgpOnZvaWQgMH0sdC5wcm90b3R5cGUuYWRkRWxzZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pc0NoYWluP3RoaXMuZWxzZUJvZHlOb2RlKCkuYWRkRWxzZShlKToodGhpcy5pc0NoYWluPWUgaW5zdGFuY2VvZiB0LHRoaXMuZWxzZUJvZHk9dGhpcy5lbnN1cmVCbG9jayhlKSksdGhpc30sdC5wcm90b3R5cGUuaXNTdGF0ZW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuKGUhPW51bGw/ZS5sZXZlbDp2b2lkIDApPT09a3x8dGhpcy5ib2R5Tm9kZSgpLmlzU3RhdGVtZW50KGUpfHwoKHQ9dGhpcy5lbHNlQm9keU5vZGUoKSkhPW51bGw/dC5pc1N0YXRlbWVudChlKTp2b2lkIDApfSx0LnByb3RvdHlwZS5qdW1wcz1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gdGhpcy5ib2R5Lmp1bXBzKGUpfHwoKHQ9dGhpcy5lbHNlQm9keSkhPW51bGw/dC5qdW1wcyhlKTp2b2lkIDApfSx0LnByb3RvdHlwZS5jb21waWxlTm9kZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pc1N0YXRlbWVudChlKT90aGlzLmNvbXBpbGVTdGF0ZW1lbnQoZSk6dGhpcy5jb21waWxlRXhwcmVzc2lvbihlKX0sdC5wcm90b3R5cGUubWFrZVJldHVybj1mdW5jdGlvbihlKXtyZXR1cm4gZSYmKHRoaXMuZWxzZUJvZHl8fCh0aGlzLmVsc2VCb2R5PW5ldyB1KFtuZXcgTCgidm9pZCAwIildKSkpLHRoaXMuYm9keSYmKHRoaXMuYm9keT1uZXcgdShbdGhpcy5ib2R5Lm1ha2VSZXR1cm4oZSldKSksdGhpcy5lbHNlQm9keSYmKHRoaXMuZWxzZUJvZHk9bmV3IHUoW3RoaXMuZWxzZUJvZHkubWFrZVJldHVybihlKV0pKSx0aGlzfSx0LnByb3RvdHlwZS5lbnN1cmVCbG9jaz1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHU/ZTpuZXcgdShbZV0pfSx0LnByb3RvdHlwZS5jb21waWxlU3RhdGVtZW50PWZ1bmN0aW9uKGUpe3ZhciBuLHIsaSxzLG8sdSxhO3JldHVybiBpPWV0KGUsImNoYWluQ2hpbGQiKSxvPWV0KGUsImlzRXhpc3RlbnRpYWxFcXVhbHMiKSxvPyhuZXcgdCh0aGlzLmNvbmRpdGlvbi5pbnZlcnQoKSx0aGlzLmVsc2VCb2R5Tm9kZSgpLHt0eXBlOiJpZiJ9KSkuY29tcGlsZShlKToocz10aGlzLmNvbmRpdGlvbi5jb21waWxlKGUsQyksZS5pbmRlbnQrPVgsbj10aGlzLmVuc3VyZUJsb2NrKHRoaXMuYm9keSkscj1uLmNvbXBpbGUoZSksMT09PSgoYT1uLmV4cHJlc3Npb25zKSE9bnVsbD9hLmxlbmd0aDp2b2lkIDApJiYhdGhpcy5lbHNlQm9keSYmIWkmJnImJnMmJi0xPT09ci5pbmRleE9mKCJcbiIpJiY4MD5zLmxlbmd0aCtyLmxlbmd0aD8iIit0aGlzLnRhYisiaWYgKCIrcysiKSAiK3IucmVwbGFjZSgvXlxzKy8sIiIpOihyJiYocj0iXG4iK3IrIlxuIit0aGlzLnRhYiksdT0iaWYgKCIrcysiKSB7IityKyJ9IixpfHwodT10aGlzLnRhYit1KSx0aGlzLmVsc2VCb2R5P3UrIiBlbHNlICIrKHRoaXMuaXNDaGFpbj8oZS5pbmRlbnQ9dGhpcy50YWIsZS5jaGFpbkNoaWxkPSEwLHRoaXMuZWxzZUJvZHkudW53cmFwKCkuY29tcGlsZShlLGspKToie1xuIit0aGlzLmVsc2VCb2R5LmNvbXBpbGUoZSxrKSsiXG4iK3RoaXMudGFiKyJ9Iik6dSkpfSx0LnByb3RvdHlwZS5jb21waWxlRXhwcmVzc2lvbj1mdW5jdGlvbihlKXt2YXIgdCxuLHIsaTtyZXR1cm4gaT10aGlzLmNvbmRpdGlvbi5jb21waWxlKGUseCksbj10aGlzLmJvZHlOb2RlKCkuY29tcGlsZShlLFQpLHQ9dGhpcy5lbHNlQm9keU5vZGUoKT90aGlzLmVsc2VCb2R5Tm9kZSgpLmNvbXBpbGUoZSxUKToidm9pZCAwIixyPSIiK2krIiA/ICIrbisiIDogIit0LGUubGV2ZWw+PXg/IigiK3IrIikiOnJ9LHQucHJvdG90eXBlLnVuZm9sZFNvYWs9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zb2FrJiZ0aGlzfSx0fShvKSxsPXt3cmFwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzLG8sZixsO2lmKGUuanVtcHMoKSlyZXR1cm4gZTtvPW5ldyBjKFtdLHUud3JhcChbZV0pKSxpPVtdO2lmKChmPWUuY29udGFpbnModGhpcy5saXRlcmFsQXJncykpfHxlLmNvbnRhaW5zKHRoaXMubGl0ZXJhbFRoaXMpKWw9bmV3IEwoZj8iYXBwbHkiOiJjYWxsIiksaT1bbmV3IEwoInRoaXMiKV0sZiYmaS5wdXNoKG5ldyBMKCJhcmd1bWVudHMiKSksbz1uZXcgUShvLFtuZXcgcihsKV0pO3JldHVybiBvLm5vUmV0dXJuPW4scz1uZXcgYShvLGkpLHQ/dS53cmFwKFtzXSk6c30sbGl0ZXJhbEFyZ3M6ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBMJiZlLnZhbHVlPT09ImFyZ3VtZW50cyImJiFlLmFzS2V5fSxsaXRlcmFsVGhpczpmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEwmJmUudmFsdWU9PT0idGhpcyImJiFlLmFzS2V5fHxlIGluc3RhbmNlb2YgYyYmZS5ib3VuZH19LGF0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZighKHI9dFtuXS51bmZvbGRTb2FrKGUpKSlyZXR1cm47cmV0dXJuIHRbbl09ci5ib2R5LHIuYm9keT1uZXcgUSh0KSxyfSxLPXsiZXh0ZW5kcyI6ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24oY2hpbGQsIHBhcmVudCkgeyBmb3IgKHZhciBrZXkgaW4gcGFyZW50KSB7IGlmICgiK2Z0KCJoYXNQcm9wIikrIi5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yOyBjaGlsZC5fX3N1cGVyX18gPSBwYXJlbnQucHJvdG90eXBlOyByZXR1cm4gY2hpbGQ7IH0ifSxiaW5kOmZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uKGZuLCBtZSl7IHJldHVybiBmdW5jdGlvbigpeyByZXR1cm4gZm4uYXBwbHkobWUsIGFyZ3VtZW50cyk7IH07IH0ifSxpbmRleE9mOmZ1bmN0aW9uKCl7cmV0dXJuIltdLmluZGV4T2YgfHwgZnVuY3Rpb24oaXRlbSkgeyBmb3IgKHZhciBpID0gMCwgbCA9IHRoaXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7IGlmIChpIGluIHRoaXMgJiYgdGhpc1tpXSA9PT0gaXRlbSkgcmV0dXJuIGk7IH0gcmV0dXJuIC0xOyB9In0saGFzUHJvcDpmdW5jdGlvbigpe3JldHVybiJ7fS5oYXNPd25Qcm9wZXJ0eSJ9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIltdLnNsaWNlIn19LGs9MSxDPTIsVD0zLHg9NCxOPTUsUz02LFg9IiAgIixnPSJbJEEtWmEtel9cXHg3Zi1cXHVmZmZmXVskXFx3XFx4N2YtXFx1ZmZmZl0qIixtPVJlZ0V4cCgiXiIrZysiJCIpLEk9L15bKy1dP1xkKyQvLEE9UmVnRXhwKCJeKD86KCIrZysiKVxcLnByb3RvdHlwZSg/OlxcLigiK2crIil8XFxbKFwiKD86W15cXFxcXCJcXHJcXG5dfFxcXFwuKSpcInwnKD86W15cXFxcJ1xcclxcbl18XFxcXC4pKicpXFxdfFxcWygweFtcXGRhLWZBLUZdK3xcXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxdKSl8KCIrZysiKSQiKSx5PS9eWyciXS8sZnQ9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHQ9Il9fIitlLFIucm9vdC5hc3NpZ24odCxLW2VdKCkpLHR9LG90PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9ZS5yZXBsYWNlKC9cbi9nLCIkJiIrdCksZS5yZXBsYWNlKC9ccyskLywiIil9fSksZGVmaW5lKCJhY2UvbW9kZS9jb2ZmZWUvc2NvcGUiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbW9kZS9jb2ZmZWUvaGVscGVycyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLHMsbztvPWUoIi4vaGVscGVycyIpLGk9by5leHRlbmQscz1vLmxhc3QsdC5TY29wZT1yPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4scil7dGhpcy5wYXJlbnQ9dCx0aGlzLmV4cHJlc3Npb25zPW4sdGhpcy5tZXRob2Q9cix0aGlzLnZhcmlhYmxlcz1be25hbWU6ImFyZ3VtZW50cyIsdHlwZToiYXJndW1lbnRzIn1dLHRoaXMucG9zaXRpb25zPXt9LHRoaXMucGFyZW50fHwoZS5yb290PXRoaXMpfXJldHVybiBlLm5hbWU9IlNjb3BlIixlLnJvb3Q9bnVsbCxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLnNoYXJlZCYmIW4/dGhpcy5wYXJlbnQuYWRkKGUsdCxuKTpPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5wb3NpdGlvbnMsZSk/dGhpcy52YXJpYWJsZXNbdGhpcy5wb3NpdGlvbnNbZV1dLnR5cGU9dDp0aGlzLnBvc2l0aW9uc1tlXT10aGlzLnZhcmlhYmxlcy5wdXNoKHtuYW1lOmUsdHlwZTp0fSktMX0sZS5wcm90b3R5cGUuZmluZD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNoZWNrKGUsdCk/ITA6KHRoaXMuYWRkKGUsInZhciIpLCExKX0sZS5wcm90b3R5cGUucGFyYW1ldGVyPWZ1bmN0aW9uKGUpe2lmKHRoaXMuc2hhcmVkJiZ0aGlzLnBhcmVudC5jaGVjayhlLCEwKSlyZXR1cm47cmV0dXJuIHRoaXMuYWRkKGUsInBhcmFtIil9LGUucHJvdG90eXBlLmNoZWNrPWZ1bmN0aW9uKGUsdCl7dmFyIG4scjtyZXR1cm4gbj0hIXRoaXMudHlwZShlKSxufHx0P246KHI9dGhpcy5wYXJlbnQpIT1udWxsPyEhci5jaGVjayhlKTohIXZvaWQgMH0sZS5wcm90b3R5cGUudGVtcG9yYXJ5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGVuZ3RoPjE/Il8iK2UrKHQ+MT90LTE6IiIpOiJfIisodCtwYXJzZUludChlLDM2KSkudG9TdHJpbmcoMzYpLnJlcGxhY2UoL1xkL2csImEiKX0sZS5wcm90b3R5cGUudHlwZT1mdW5jdGlvbihlKXt2YXIgdCxuLHIsaTtpPXRoaXMudmFyaWFibGVzO2ZvcihuPTAscj1pLmxlbmd0aDtuPHI7bisrKXt0PWlbbl07aWYodC5uYW1lPT09ZSlyZXR1cm4gdC50eXBlfXJldHVybiBudWxsfSxlLnByb3RvdHlwZS5mcmVlVmFyaWFibGU9ZnVuY3Rpb24oZSx0KXt2YXIgbixyO3Q9PW51bGwmJih0PSEwKSxuPTA7d2hpbGUodGhpcy5jaGVjayhyPXRoaXMudGVtcG9yYXJ5KGUsbikpKW4rKztyZXR1cm4gdCYmdGhpcy5hZGQociwidmFyIiwhMCkscn0sZS5wcm90b3R5cGUuYXNzaWduPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuYWRkKGUse3ZhbHVlOnQsYXNzaWduZWQ6ITB9LCEwKSx0aGlzLmhhc0Fzc2lnbm1lbnRzPSEwfSxlLnByb3RvdHlwZS5oYXNEZWNsYXJhdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuZGVjbGFyZWRWYXJpYWJsZXMoKS5sZW5ndGh9LGUucHJvdG90eXBlLmRlY2xhcmVkVmFyaWFibGVzPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaSxzO2U9W10sdD1bXSxzPXRoaXMudmFyaWFibGVzO2ZvcihyPTAsaT1zLmxlbmd0aDtyPGk7cisrKW49c1tyXSxuLnR5cGU9PT0idmFyIiYmKG4ubmFtZS5jaGFyQXQoMCk9PT0iXyI/dDplKS5wdXNoKG4ubmFtZSk7cmV0dXJuIGUuc29ydCgpLmNvbmNhdCh0LnNvcnQoKSl9LGUucHJvdG90eXBlLmFzc2lnbmVkVmFyaWFibGVzPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaTtyPXRoaXMudmFyaWFibGVzLGk9W107Zm9yKHQ9MCxuPXIubGVuZ3RoO3Q8bjt0KyspZT1yW3RdLGUudHlwZS5hc3NpZ25lZCYmaS5wdXNoKCIiK2UubmFtZSsiID0gIitlLnR5cGUudmFsdWUpO3JldHVybiBpfSxlfSgpfSk=]]></data>
	</file>
	<file>
	  <filename>/ace/src/worker-css.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Im5vIHVzZSBzdHJpY3QiO2Z1bmN0aW9uIGluaXRCYXNlVXJscyhlKXtyZXF1aXJlLnRsbnM9ZX1mdW5jdGlvbiBpbml0U2VuZGVyKCl7dmFyIGU9cmVxdWlyZShudWxsLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsdD1yZXF1aXJlKG51bGwsImFjZS9saWIvb29wIiksbj1mdW5jdGlvbigpe307cmV0dXJuIGZ1bmN0aW9uKCl7dC5pbXBsZW1lbnQodGhpcyxlKSx0aGlzLmNhbGxiYWNrPWZ1bmN0aW9uKGUsdCl7cG9zdE1lc3NhZ2Uoe3R5cGU6ImNhbGwiLGlkOnQsZGF0YTplfSl9LHRoaXMuZW1pdD1mdW5jdGlvbihlLHQpe3Bvc3RNZXNzYWdlKHt0eXBlOiJldmVudCIsbmFtZTplLGRhdGE6dH0pfX0uY2FsbChuLnByb3RvdHlwZSksbmV3IG59dmFyIGNvbnNvbGU9e2xvZzpmdW5jdGlvbihlKXtwb3N0TWVzc2FnZSh7dHlwZToibG9nIixkYXRhOmV9KX19LHdpbmRvdz17Y29uc29sZTpjb25zb2xlfSxub3JtYWxpemVNb2R1bGU9ZnVuY3Rpb24oZSx0KXtpZih0LmluZGV4T2YoIiEiKSE9PS0xKXt2YXIgbj10LnNwbGl0KCIhIik7cmV0dXJuIG5vcm1hbGl6ZU1vZHVsZShlLG5bMF0pKyIhIitub3JtYWxpemVNb2R1bGUoZSxuWzFdKX1pZih0LmNoYXJBdCgwKT09Ii4iKXt2YXIgcj1lLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpLHQ9cisiLyIrdDt3aGlsZSh0LmluZGV4T2YoIi4iKSE9PS0xJiZpIT10KXZhciBpPXQsdD10LnJlcGxhY2UoL1wvXC5cLy8sIi8iKS5yZXBsYWNlKC9bXlwvXStcL1wuXC5cLy8sIiIpfXJldHVybiB0fSxyZXF1aXJlPWZ1bmN0aW9uKGUsdCl7dmFyIHQ9bm9ybWFsaXplTW9kdWxlKGUsdCksbj1yZXF1aXJlLm1vZHVsZXNbdF07aWYobilyZXR1cm4gbi5pbml0aWFsaXplZHx8KG4uZXhwb3J0cz1uLmZhY3RvcnkoKS5leHBvcnRzLG4uaW5pdGlhbGl6ZWQ9ITApLG4uZXhwb3J0czt2YXIgcj10LnNwbGl0KCIvIik7clswXT1yZXF1aXJlLnRsbnNbclswXV18fHJbMF07dmFyIGk9ci5qb2luKCIvIikrIi5qcyI7cmV0dXJuIHJlcXVpcmUuaWQ9dCxpbXBvcnRTY3JpcHRzKGkpLHJlcXVpcmUoZSx0KX07cmVxdWlyZS5tb2R1bGVzPXt9LHJlcXVpcmUudGxucz17fTt2YXIgZGVmaW5lPWZ1bmN0aW9uKGUsdCxuKXthcmd1bWVudHMubGVuZ3RoPT0yP249dDphcmd1bWVudHMubGVuZ3RoPT0xJiYobj1lLGU9cmVxdWlyZS5pZCk7aWYoZS5pbmRleE9mKCJ0ZXh0ISIpPT09MClyZXR1cm47dmFyIHI9ZnVuY3Rpb24odCxuKXtyZXR1cm4gcmVxdWlyZShlLHQsbil9O3JlcXVpcmUubW9kdWxlc1tlXT17ZmFjdG9yeTpmdW5jdGlvbigpe3ZhciBlPXtleHBvcnRzOnt9fSx0PW4ocixlLmV4cG9ydHMsZSk7cmV0dXJuIHQmJihlLmV4cG9ydHM9dCksZX19fSxtYWluLHNlbmRlcjtvbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhO2lmKHQuY29tbWFuZCltYWluW3QuY29tbWFuZF0uYXBwbHkobWFpbix0LmFyZ3MpO2Vsc2UgaWYodC5pbml0KXtpbml0QmFzZVVybHModC50bG5zKSxyZXF1aXJlKG51bGwsImFjZS9saWIvZml4b2xkYnJvd3NlcnMiKSxzZW5kZXI9aW5pdFNlbmRlcigpO3ZhciBuPXJlcXVpcmUobnVsbCx0Lm1vZHVsZSlbdC5jbGFzc25hbWVdO21haW49bmV3IG4oc2VuZGVyKX1lbHNlIHQuZXZlbnQmJnNlbmRlciYmc2VuZGVyLl9lbWl0KHQuZXZlbnQsdC5kYXRhKX0sZGVmaW5lKCJhY2UvbGliL2ZpeG9sZGJyb3dzZXJzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9yZWdleHAiLCJhY2UvbGliL2VzNS1zaGltIl0sZnVuY3Rpb24oZSx0LG4pe2UoIi4vcmVnZXhwIiksZSgiLi9lczUtc2hpbSIpfSksZGVmaW5lKCJhY2UvbGliL3JlZ2V4cCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBvKGUpe3JldHVybihlLmdsb2JhbD8iZyI6IiIpKyhlLmlnbm9yZUNhc2U/ImkiOiIiKSsoZS5tdWx0aWxpbmU/Im0iOiIiKSsoZS5leHRlbmRlZD8ieCI6IiIpKyhlLnN0aWNreT8ieSI6IiIpfWZ1bmN0aW9uIHUoZSx0LG4pe2lmKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKXJldHVybiBlLmluZGV4T2YodCxuKTtmb3IodmFyIHI9bnx8MDtyPGUubGVuZ3RoO3IrKylpZihlW3JdPT09dClyZXR1cm4gcjtyZXR1cm4tMX12YXIgcj17ZXhlYzpSZWdFeHAucHJvdG90eXBlLmV4ZWMsdGVzdDpSZWdFeHAucHJvdG90eXBlLnRlc3QsbWF0Y2g6U3RyaW5nLnByb3RvdHlwZS5tYXRjaCxyZXBsYWNlOlN0cmluZy5wcm90b3R5cGUucmVwbGFjZSxzcGxpdDpTdHJpbmcucHJvdG90eXBlLnNwbGl0fSxpPXIuZXhlYy5jYWxsKC8oKT8/LywiIilbMV09PT11bmRlZmluZWQscz1mdW5jdGlvbigpe3ZhciBlPS9eL2c7cmV0dXJuIHIudGVzdC5jYWxsKGUsIiIpLCFlLmxhc3RJbmRleH0oKTtpZihzJiZpKXJldHVybjtSZWdFeHAucHJvdG90eXBlLmV4ZWM9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5leGVjLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuLGE7aWYodHlwZW9mIGU9PSJzdHJpbmciJiZ0KXshaSYmdC5sZW5ndGg+MSYmdSh0LCIiKT4tMSYmKGE9UmVnRXhwKHRoaXMuc291cmNlLHIucmVwbGFjZS5jYWxsKG8odGhpcyksImciLCIiKSksci5yZXBsYWNlLmNhbGwoZS5zbGljZSh0LmluZGV4KSxhLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoLTI7ZSsrKWFyZ3VtZW50c1tlXT09PXVuZGVmaW5lZCYmKHRbZV09dW5kZWZpbmVkKX0pKTtpZih0aGlzLl94cmVnZXhwJiZ0aGlzLl94cmVnZXhwLmNhcHR1cmVOYW1lcylmb3IodmFyIGY9MTtmPHQubGVuZ3RoO2YrKyluPXRoaXMuX3hyZWdleHAuY2FwdHVyZU5hbWVzW2YtMV0sbiYmKHRbbl09dFtmXSk7IXMmJnRoaXMuZ2xvYmFsJiYhdFswXS5sZW5ndGgmJnRoaXMubGFzdEluZGV4PnQuaW5kZXgmJnRoaXMubGFzdEluZGV4LS19cmV0dXJuIHR9LHN8fChSZWdFeHAucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5leGVjLmNhbGwodGhpcyxlKTtyZXR1cm4gdCYmdGhpcy5nbG9iYWwmJiF0WzBdLmxlbmd0aCYmdGhpcy5sYXN0SW5kZXg+dC5pbmRleCYmdGhpcy5sYXN0SW5kZXgtLSwhIXR9KX0pLGRlZmluZSgiYWNlL2xpYi9lczUtc2hpbSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiB2KGUpe3RyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNlbnRpbmVsIix7fSksInNlbnRpbmVsImluIGV9Y2F0Y2godCl7fX1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7aWYodHlwZW9mIG4hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgcj1vLmNhbGwoYXJndW1lbnRzLDEpLGk9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgaSl7dmFyIGU9ZnVuY3Rpb24oKXt9O2UucHJvdG90eXBlPW4ucHJvdG90eXBlO3ZhciBzPW5ldyBlLHU9bi5hcHBseShzLHIuY29uY2F0KG8uY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIHUhPT1udWxsJiZPYmplY3QodSk9PT11P3U6c31yZXR1cm4gbi5hcHBseSh0LHIuY29uY2F0KG8uY2FsbChhcmd1bWVudHMpKSl9O3JldHVybiBpfSk7dmFyIHI9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsaT1BcnJheS5wcm90b3R5cGUscz1PYmplY3QucHJvdG90eXBlLG89aS5zbGljZSx1PXIuYmluZChzLnRvU3RyaW5nKSxhPXIuYmluZChzLmhhc093blByb3BlcnR5KSxmLGwsYyxoLHA7aWYocD1hKHMsIl9fZGVmaW5lR2V0dGVyX18iKSlmPXIuYmluZChzLl9fZGVmaW5lR2V0dGVyX18pLGw9ci5iaW5kKHMuX19kZWZpbmVTZXR0ZXJfXyksYz1yLmJpbmQocy5fX2xvb2t1cEdldHRlcl9fKSxoPXIuYmluZChzLl9fbG9va3VwU2V0dGVyX18pO0FycmF5LmlzQXJyYXl8fChBcnJheS5pc0FycmF5PWZ1bmN0aW9uKHQpe3JldHVybiB1KHQpPT0iW29iamVjdCBBcnJheV0ifSksQXJyYXkucHJvdG90eXBlLmZvckVhY2h8fChBcnJheS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9YXJndW1lbnRzWzFdLGk9MCxzPW4ubGVuZ3RoPj4+MDtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7d2hpbGUoaTxzKWkgaW4gbiYmdC5jYWxsKHIsbltpXSxpLG4pLGkrK30pLEFycmF5LnByb3RvdHlwZS5tYXB8fChBcnJheS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKHQpe3ZhciBuPV8odGhpcykscj1uLmxlbmd0aD4+PjAsaT1BcnJheShyKSxzPWFyZ3VtZW50c1sxXTtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBvPTA7bzxyO28rKylvIGluIG4mJihpW29dPXQuY2FsbChzLG5bb10sbyxuKSk7cmV0dXJuIGl9KSxBcnJheS5wcm90b3R5cGUuZmlsdGVyfHwoQXJyYXkucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wLGk9W10scz1hcmd1bWVudHNbMV07aWYodSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgbz0wO288cjtvKyspbyBpbiBuJiZ0LmNhbGwocyxuW29dLG8sbikmJmkucHVzaChuW29dKTtyZXR1cm4gaX0pLEFycmF5LnByb3RvdHlwZS5ldmVyeXx8KEFycmF5LnByb3RvdHlwZS5ldmVyeT1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wLGk9YXJndW1lbnRzWzFdO2lmKHUodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtmb3IodmFyIHM9MDtzPHI7cysrKWlmKHMgaW4gbiYmIXQuY2FsbChpLG5bc10scyxuKSlyZXR1cm4hMTtyZXR1cm4hMH0pLEFycmF5LnByb3RvdHlwZS5zb21lfHwoQXJyYXkucHJvdG90eXBlLnNvbWU9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MCxpPWFyZ3VtZW50c1sxXTtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBzPTA7czxyO3MrKylpZihzIGluIG4mJnQuY2FsbChpLG5bc10scyxuKSlyZXR1cm4hMDtyZXR1cm4hMX0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2V8fChBcnJheS5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKHQpe3ZhciBuPV8odGhpcykscj1uLmxlbmd0aD4+PjA7aWYodSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2lmKCFyJiZhcmd1bWVudHMubGVuZ3RoPT0xKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGk9MCxzO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpcz1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihpIGluIG4pe3M9bltpKytdO2JyZWFrfWlmKCsraT49cil0aHJvdyBuZXcgVHlwZUVycm9yfXdoaWxlKCEwKTtmb3IoO2k8cjtpKyspaSBpbiBuJiYocz10LmNhbGwodm9pZCAwLHMsbltpXSxpLG4pKTtyZXR1cm4gc30pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodHx8KEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodD1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wO2lmKHUodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtpZighciYmYXJndW1lbnRzLmxlbmd0aD09MSl0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBpLHM9ci0xO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpaT1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihzIGluIG4pe2k9bltzLS1dO2JyZWFrfWlmKC0tczwwKXRocm93IG5ldyBUeXBlRXJyb3J9d2hpbGUoITApO2RvIHMgaW4gdGhpcyYmKGk9dC5jYWxsKHZvaWQgMCxpLG5bc10scyxuKSk7d2hpbGUocy0tKTtyZXR1cm4gaX0pLEFycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MDtpZighcilyZXR1cm4tMTt2YXIgaT0wO2FyZ3VtZW50cy5sZW5ndGg+MSYmKGk9Tyhhcmd1bWVudHNbMV0pKSxpPWk+PTA/aTpNYXRoLm1heCgwLHIraSk7Zm9yKDtpPHI7aSsrKWlmKGkgaW4gbiYmbltpXT09PXQpcmV0dXJuIGk7cmV0dXJuLTF9KSxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Z8fChBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MDtpZighcilyZXR1cm4tMTt2YXIgaT1yLTE7YXJndW1lbnRzLmxlbmd0aD4xJiYoaT1NYXRoLm1pbihpLE8oYXJndW1lbnRzWzFdKSkpLGk9aT49MD9pOnItTWF0aC5hYnMoaSk7Zm9yKDtpPj0wO2ktLSlpZihpIGluIG4mJnQ9PT1uW2ldKXJldHVybiBpO3JldHVybi0xfSksT2JqZWN0LmdldFByb3RvdHlwZU9mfHwoT2JqZWN0LmdldFByb3RvdHlwZU9mPWZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8KHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6cyl9KTtpZighT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcil7dmFyIGQ9Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgY2FsbGVkIG9uIGEgbm9uLW9iamVjdDogIjtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWZ1bmN0aW9uKHQsbil7aWYodHlwZW9mIHQhPSJvYmplY3QiJiZ0eXBlb2YgdCE9ImZ1bmN0aW9uInx8dD09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihkK3QpO2lmKCFhKHQsbikpcmV0dXJuO3ZhciByLGksbztyPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07aWYocCl7dmFyIHU9dC5fX3Byb3RvX187dC5fX3Byb3RvX189czt2YXIgaT1jKHQsbiksbz1oKHQsbik7dC5fX3Byb3RvX189dTtpZihpfHxvKXJldHVybiBpJiYoci5nZXQ9aSksbyYmKHIuc2V0PW8pLHJ9cmV0dXJuIHIudmFsdWU9dFtuXSxyfX1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KX0pLE9iamVjdC5jcmVhdGV8fChPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKHQsbil7dmFyIHI7aWYodD09PW51bGwpcj17X19wcm90b19fOm51bGx9O2Vsc2V7aWYodHlwZW9mIHQhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoInR5cGVvZiBwcm90b3R5cGVbIit0eXBlb2YgdCsiXSAhPSAnb2JqZWN0JyIpO3ZhciBpPWZ1bmN0aW9uKCl7fTtpLnByb3RvdHlwZT10LHI9bmV3IGksci5fX3Byb3RvX189dH1yZXR1cm4gbiE9PXZvaWQgMCYmT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocixuKSxyfSk7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KXt2YXIgbT12KHt9KSxnPXR5cGVvZiBkb2N1bWVudD09InVuZGVmaW5lZCJ8fHYoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2lmKCFtfHwhZyl2YXIgeT1PYmplY3QuZGVmaW5lUHJvcGVydHl9aWYoIU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8eSl7dmFyIGI9IlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0OiAiLHc9Ik9iamVjdC5kZWZpbmVQcm9wZXJ0eSBjYWxsZWQgb24gbm9uLW9iamVjdDogIixFPSJnZXR0ZXJzICYgc2V0dGVycyBjYW4gbm90IGJlIGRlZmluZWQgb24gdGhpcyBqYXZhc2NyaXB0IGVuZ2luZSI7T2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKHQsbixyKXtpZih0eXBlb2YgdCE9Im9iamVjdCImJnR5cGVvZiB0IT0iZnVuY3Rpb24ifHx0PT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKHcrdCk7aWYodHlwZW9mIHIhPSJvYmplY3QiJiZ0eXBlb2YgciE9ImZ1bmN0aW9uInx8cj09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihiK3IpO2lmKHkpdHJ5e3JldHVybiB5LmNhbGwoT2JqZWN0LHQsbixyKX1jYXRjaChpKXt9aWYoYShyLCJ2YWx1ZSIpKWlmKHAmJihjKHQsbil8fGgodCxuKSkpe3ZhciBvPXQuX19wcm90b19fO3QuX19wcm90b19fPXMsZGVsZXRlIHRbbl0sdFtuXT1yLnZhbHVlLHQuX19wcm90b19fPW99ZWxzZSB0W25dPXIudmFsdWU7ZWxzZXtpZighcCl0aHJvdyBuZXcgVHlwZUVycm9yKEUpO2EociwiZ2V0IikmJmYodCxuLHIuZ2V0KSxhKHIsInNldCIpJiZsKHQsbixyLnNldCl9cmV0dXJuIHR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzfHwoT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24odCxuKXtmb3IodmFyIHIgaW4gbilhKG4scikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIsbltyXSk7cmV0dXJuIHR9KSxPYmplY3Quc2VhbHx8KE9iamVjdC5zZWFsPWZ1bmN0aW9uKHQpe3JldHVybiB0fSksT2JqZWN0LmZyZWV6ZXx8KE9iamVjdC5mcmVlemU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KTt0cnl7T2JqZWN0LmZyZWV6ZShmdW5jdGlvbigpe30pfWNhdGNoKFMpe09iamVjdC5mcmVlemU9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uOnQobil9fShPYmplY3QuZnJlZXplKX1PYmplY3QucHJldmVudEV4dGVuc2lvbnN8fChPYmplY3QucHJldmVudEV4dGVuc2lvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KSxPYmplY3QuaXNTZWFsZWR8fChPYmplY3QuaXNTZWFsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuITF9KSxPYmplY3QuaXNGcm96ZW58fChPYmplY3QuaXNGcm96ZW49ZnVuY3Rpb24odCl7cmV0dXJuITF9KSxPYmplY3QuaXNFeHRlbnNpYmxlfHwoT2JqZWN0LmlzRXh0ZW5zaWJsZT1mdW5jdGlvbih0KXtpZihPYmplY3QodCk9PT10KXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIG49IiI7d2hpbGUoYSh0LG4pKW4rPSI/Ijt0W25dPSEwO3ZhciByPWEodCxuKTtyZXR1cm4gZGVsZXRlIHRbbl0scn0pO2lmKCFPYmplY3Qua2V5cyl7dmFyIHg9ITAsVD1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLE49VC5sZW5ndGg7Zm9yKHZhciBDIGlue3RvU3RyaW5nOm51bGx9KXg9ITE7T2JqZWN0LmtleXM9ZnVuY3Rpb24gRChlKXtpZih0eXBlb2YgZSE9Im9iamVjdCImJnR5cGVvZiBlIT0iZnVuY3Rpb24ifHxlPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIEQ9W107Zm9yKHZhciB0IGluIGUpYShlLHQpJiZELnB1c2godCk7aWYoeClmb3IodmFyIG49MCxyPU47bjxyO24rKyl7dmFyIGk9VFtuXTthKGUsaSkmJkQucHVzaChpKX1yZXR1cm4gRH19aWYoIURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nfHwobmV3IERhdGUoLTYyMTk4NzU1MmU1KSkudG9JU09TdHJpbmcoKS5pbmRleE9mKCItMDAwMDAxIik9PT0tMSlEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3ZhciB0LG4scixpO2lmKCFpc0Zpbml0ZSh0aGlzKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcjt0PVt0aGlzLmdldFVUQ01vbnRoKCkrMSx0aGlzLmdldFVUQ0RhdGUoKSx0aGlzLmdldFVUQ0hvdXJzKCksdGhpcy5nZXRVVENNaW51dGVzKCksdGhpcy5nZXRVVENTZWNvbmRzKCldLGk9dGhpcy5nZXRVVENGdWxsWWVhcigpLGk9KGk8MD8iLSI6aT45OTk5PyIrIjoiIikrKCIwMDAwMCIrTWF0aC5hYnMoaSkpLnNsaWNlKDA8PWkmJmk8PTk5OTk/LTQ6LTYpLG49dC5sZW5ndGg7d2hpbGUobi0tKXI9dFtuXSxyPDEwJiYodFtuXT0iMCIrcik7cmV0dXJuIGkrIi0iK3Quc2xpY2UoMCwyKS5qb2luKCItIikrIlQiK3Quc2xpY2UoMikuam9pbigiOiIpKyIuIisoIjAwMCIrdGhpcy5nZXRVVENNaWxsaXNlY29uZHMoKSkuc2xpY2UoLTMpKyJaIn07RGF0ZS5ub3d8fChEYXRlLm5vdz1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksRGF0ZS5wcm90b3R5cGUudG9KU09OfHwoRGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0aGlzLnRvSVNPU3RyaW5nIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKX0pLERhdGUucGFyc2UoIisyNzU3NjAtMDktMTNUMDA6MDA6MDAuMDAwWiIpIT09ODY0ZTEzJiYoRGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbiBpKHQsbixyLHMsbyx1LGEpe3ZhciBmPWFyZ3VtZW50cy5sZW5ndGg7aWYodGhpcyBpbnN0YW5jZW9mIGUpe3ZhciBsPWY9PTEmJlN0cmluZyh0KT09PXQ/bmV3IGUoaS5wYXJzZSh0KSk6Zj49Nz9uZXcgZSh0LG4scixzLG8sdSxhKTpmPj02P25ldyBlKHQsbixyLHMsbyx1KTpmPj01P25ldyBlKHQsbixyLHMsbyk6Zj49ND9uZXcgZSh0LG4scixzKTpmPj0zP25ldyBlKHQsbixyKTpmPj0yP25ldyBlKHQsbik6Zj49MT9uZXcgZSh0KTpuZXcgZTtyZXR1cm4gbC5jb25zdHJ1Y3Rvcj1pLGx9cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxuPW5ldyBSZWdFeHAoIl4oXFxkezR9fFsrLV1cXGR7Nn0pKD86LShcXGR7Mn0pKD86LShcXGR7Mn0pKD86VChcXGR7Mn0pOihcXGR7Mn0pKD86OihcXGR7Mn0pKD86XFwuKFxcZHszfSkpPyk/KD86WnwoPzooWy0rXSkoXFxkezJ9KTooXFxkezJ9KSkpPyk/KT8pPyQiKTtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl07cmV0dXJuIHQubm93PWUubm93LHQuVVRDPWUuVVRDLHQucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wYXJzZT1mdW5jdGlvbihyKXt2YXIgaT1uLmV4ZWMocik7aWYoaSl7aS5zaGlmdCgpO2Zvcih2YXIgcz0xO3M8NztzKyspaVtzXT0rKGlbc118fChzPDM/MTowKSkscz09MSYmaVtzXS0tO3ZhciBvPStpLnBvcCgpLHU9K2kucG9wKCksYT1pLnBvcCgpLGY9MDtpZihhKXtpZih1PjIzfHxvPjU5KXJldHVybiBOYU47Zj0odSo2MCtvKSo2ZTQqKGE9PSIrIj8tMToxKX12YXIgbD0raVswXTtyZXR1cm4gMDw9bCYmbDw9OTk/KGlbMF09bCs0MDAsZS5VVEMuYXBwbHkodGhpcyxpKStmLTEyNjIyNzgwOGU1KTplLlVUQy5hcHBseSh0aGlzLGkpK2Z9cmV0dXJuIGUucGFyc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0fShEYXRlKSk7dmFyIGs9IglcbgtcZlxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI577u/IjtpZighU3RyaW5nLnByb3RvdHlwZS50cmltfHxrLnRyaW0oKSl7az0iWyIraysiXSI7dmFyIEw9bmV3IFJlZ0V4cCgiXiIraytrKyIqIiksQT1uZXcgUmVnRXhwKGsraysiKiQiKTtTdHJpbmcucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMpLnJlcGxhY2UoTCwiIikucmVwbGFjZShBLCIiKX19dmFyIE89ZnVuY3Rpb24oZSl7cmV0dXJuIGU9K2UsZSE9PWU/ZT0wOmUhPT0wJiZlIT09MS8wJiZlIT09LTEvMCYmKGU9KGU+MHx8LTEpKk1hdGguZmxvb3IoTWF0aC5hYnMoZSkpKSxlfSxNPSJhIlswXSE9ImEiLF89ZnVuY3Rpb24oZSl7aWYoZT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yO3JldHVybiBNJiZ0eXBlb2YgZT09InN0cmluZyImJmU/ZS5zcGxpdCgiIik6T2JqZWN0KGUpfX0pLGRlZmluZSgiYWNlL2xpYi9ldmVudF9lbWl0dGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt9O3IuX2VtaXQ9ci5fZGlzcGF0Y2hFdmVudD1mdW5jdGlvbihlLHQpe3RoaXMuX2V2ZW50UmVnaXN0cnk9dGhpcy5fZXZlbnRSZWdpc3RyeXx8e30sdGhpcy5fZGVmYXVsdEhhbmRsZXJzPXRoaXMuX2RlZmF1bHRIYW5kbGVyc3x8e307dmFyIG49dGhpcy5fZXZlbnRSZWdpc3RyeVtlXXx8W10scj10aGlzLl9kZWZhdWx0SGFuZGxlcnNbZV07aWYoIW4ubGVuZ3RoJiYhcilyZXR1cm47dD10fHx7fSx0LnR5cGU9ZSx0LnN0b3BQcm9wYWdhdGlvbnx8KHQuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7dGhpcy5wcm9wYWdhdGlvblN0b3BwZWQ9ITB9KSx0LnByZXZlbnREZWZhdWx0fHwodC5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMH0pO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXtuW2ldKHQpO2lmKHQucHJvcGFnYXRpb25TdG9wcGVkKWJyZWFrfWlmKHImJiF0LmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuIHIodCl9LHIuc2V0RGVmYXVsdEhhbmRsZXI9ZnVuY3Rpb24oZSx0KXt0aGlzLl9kZWZhdWx0SGFuZGxlcnM9dGhpcy5fZGVmYXVsdEhhbmRsZXJzfHx7fTtpZih0aGlzLl9kZWZhdWx0SGFuZGxlcnNbZV0pdGhyb3cgbmV3IEVycm9yKCJUaGUgZGVmYXVsdCBoYW5kbGVyIGZvciAnIitlKyInIGlzIGFscmVhZHkgc2V0Iik7dGhpcy5fZGVmYXVsdEhhbmRsZXJzW2VdPXR9LHIub249ci5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fTt2YXIgbj10aGlzLl9ldmVudFJlZ2lzdHJ5W2VdO2lmKCFuKXZhciBuPXRoaXMuX2V2ZW50UmVnaXN0cnlbZV09W107bi5pbmRleE9mKHQpPT0tMSYmbi5wdXNoKHQpfSxyLnJlbW92ZUxpc3RlbmVyPXIucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3RoaXMuX2V2ZW50UmVnaXN0cnk9dGhpcy5fZXZlbnRSZWdpc3RyeXx8e307dmFyIG49dGhpcy5fZXZlbnRSZWdpc3RyeVtlXTtpZighbilyZXR1cm47dmFyIHI9bi5pbmRleE9mKHQpO3IhPT0tMSYmbi5zcGxpY2UociwxKX0sci5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7dGhpcy5fZXZlbnRSZWdpc3RyeSYmKHRoaXMuX2V2ZW50UmVnaXN0cnlbZV09W10pfSx0LkV2ZW50RW1pdHRlcj1yfSksZGVmaW5lKCJhY2UvbGliL29vcCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmluaGVyaXRzPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt9O3JldHVybiBmdW5jdGlvbih0LG4pe2UucHJvdG90eXBlPW4ucHJvdG90eXBlLHQuc3VwZXJfPW4ucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyBlLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9fSgpLHQubWl4aW49ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl19LHQuaW1wbGVtZW50PWZ1bmN0aW9uKGUsbil7dC5taXhpbihlLG4pfX0pLGRlZmluZSgiYWNlL21vZGUvY3NzX3dvcmtlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3dvcmtlci9taXJyb3IiLCJhY2UvbW9kZS9jc3MvY3NzbGludCJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi93b3JrZXIvbWlycm9yIikuTWlycm9yLHM9ZSgiLi9jc3MvY3NzbGludCIpLkNTU0xpbnQsbz10Lldvcmtlcj1mdW5jdGlvbihlKXtpLmNhbGwodGhpcyxlKSx0aGlzLnNldFRpbWVvdXQoMjAwKX07ci5pbmhlcml0cyhvLGkpLGZ1bmN0aW9uKCl7dGhpcy5vblVwZGF0ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZG9jLmdldFZhbHVlKCksdD1zLnZlcmlmeShlKTt0aGlzLnNlbmRlci5lbWl0KCJjc3NsaW50Iix0Lm1lc3NhZ2VzLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZGVsZXRlIGUucnVsZSxlfSkpfX0uY2FsbChvLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS93b3JrZXIvbWlycm9yIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2RvY3VtZW50IiwiYWNlL2xpYi9sYW5nIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2RvY3VtZW50IikuRG9jdW1lbnQsaT1lKCIuLi9saWIvbGFuZyIpLHM9dC5NaXJyb3I9ZnVuY3Rpb24oZSl7dGhpcy5zZW5kZXI9ZTt2YXIgdD10aGlzLmRvYz1uZXcgcigiIiksbj10aGlzLmRlZmVycmVkVXBkYXRlPWkuZGVmZXJyZWRDYWxsKHRoaXMub25VcGRhdGUuYmluZCh0aGlzKSkscz10aGlzO2Uub24oImNoYW5nZSIsZnVuY3Rpb24oZSl7dC5hcHBseURlbHRhcyhbZS5kYXRhXSksbi5zY2hlZHVsZShzLiR0aW1lb3V0KX0pfTsoZnVuY3Rpb24oKXt0aGlzLiR0aW1lb3V0PTUwMCx0aGlzLnNldFRpbWVvdXQ9ZnVuY3Rpb24oZSl7dGhpcy4kdGltZW91dD1lfSx0aGlzLnNldFZhbHVlPWZ1bmN0aW9uKGUpe3RoaXMuZG9jLnNldFZhbHVlKGUpLHRoaXMuZGVmZXJyZWRVcGRhdGUuc2NoZWR1bGUodGhpcy4kdGltZW91dCl9LHRoaXMuZ2V0VmFsdWU9ZnVuY3Rpb24oZSl7dGhpcy5zZW5kZXIuY2FsbGJhY2sodGhpcy5kb2MuZ2V0VmFsdWUoKSxlKX0sdGhpcy5vblVwZGF0ZT1mdW5jdGlvbigpe319KS5jYWxsKHMucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL2RvY3VtZW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiLCJhY2UvcmFuZ2UiLCJhY2UvYW5jaG9yIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4vbGliL29vcCIpLGk9ZSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixzPWUoIi4vcmFuZ2UiKS5SYW5nZSxvPWUoIi4vYW5jaG9yIikuQW5jaG9yLHU9ZnVuY3Rpb24oZSl7dGhpcy4kbGluZXM9W10sZS5sZW5ndGg9PTA/dGhpcy4kbGluZXM9WyIiXTpBcnJheS5pc0FycmF5KGUpP3RoaXMuaW5zZXJ0TGluZXMoMCxlKTp0aGlzLmluc2VydCh7cm93OjAsY29sdW1uOjB9LGUpfTsoZnVuY3Rpb24oKXtyLmltcGxlbWVudCh0aGlzLGkpLHRoaXMuc2V0VmFsdWU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRMZW5ndGgoKTt0aGlzLnJlbW92ZShuZXcgcygwLDAsdCx0aGlzLmdldExpbmUodC0xKS5sZW5ndGgpKSx0aGlzLmluc2VydCh7cm93OjAsY29sdW1uOjB9LGUpfSx0aGlzLmdldFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QWxsTGluZXMoKS5qb2luKHRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpKX0sdGhpcy5jcmVhdGVBbmNob3I9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IG8odGhpcyxlLHQpfSwiYWFhIi5zcGxpdCgvYS8pLmxlbmd0aD09MD90aGlzLiRzcGxpdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9cclxufFxyL2csIlxuIikuc3BsaXQoIlxuIil9OnRoaXMuJHNwbGl0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KC9cclxufFxyfFxuLyl9LHRoaXMuJGRldGVjdE5ld0xpbmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCgvXi4qPyhcclxufFxyfFxuKS9tKTt0P3RoaXMuJGF1dG9OZXdMaW5lPXRbMV06dGhpcy4kYXV0b05ld0xpbmU9IlxuIn0sdGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyPWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuJG5ld0xpbmVNb2RlKXtjYXNlIndpbmRvd3MiOnJldHVybiJcclxuIjtjYXNlInVuaXgiOnJldHVybiJcbiI7Y2FzZSJhdXRvIjpyZXR1cm4gdGhpcy4kYXV0b05ld0xpbmV9fSx0aGlzLiRhdXRvTmV3TGluZT0iXG4iLHRoaXMuJG5ld0xpbmVNb2RlPSJhdXRvIix0aGlzLnNldE5ld0xpbmVNb2RlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuJG5ld0xpbmVNb2RlPT09ZSlyZXR1cm47dGhpcy4kbmV3TGluZU1vZGU9ZX0sdGhpcy5nZXROZXdMaW5lTW9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRuZXdMaW5lTW9kZX0sdGhpcy5pc05ld0xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PSJcclxuInx8ZT09IlxyInx8ZT09IlxuIn0sdGhpcy5nZXRMaW5lPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiRsaW5lc1tlXXx8IiJ9LHRoaXMuZ2V0TGluZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy4kbGluZXMuc2xpY2UoZSx0KzEpfSx0aGlzLmdldEFsbExpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TGluZXMoMCx0aGlzLmdldExlbmd0aCgpKX0sdGhpcy5nZXRMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kbGluZXMubGVuZ3RofSx0aGlzLmdldFRleHRSYW5nZT1mdW5jdGlvbihlKXtpZihlLnN0YXJ0LnJvdz09ZS5lbmQucm93KXJldHVybiB0aGlzLiRsaW5lc1tlLnN0YXJ0LnJvd10uc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uLGUuZW5kLmNvbHVtbik7dmFyIHQ9dGhpcy5nZXRMaW5lcyhlLnN0YXJ0LnJvdysxLGUuZW5kLnJvdy0xKTtyZXR1cm4gdC51bnNoaWZ0KCh0aGlzLiRsaW5lc1tlLnN0YXJ0LnJvd118fCIiKS5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4pKSx0LnB1c2goKHRoaXMuJGxpbmVzW2UuZW5kLnJvd118fCIiKS5zdWJzdHJpbmcoMCxlLmVuZC5jb2x1bW4pKSx0LmpvaW4odGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCkpfSx0aGlzLiRjbGlwUG9zaXRpb249ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRMZW5ndGgoKTtyZXR1cm4gZS5yb3c+PXQmJihlLnJvdz1NYXRoLm1heCgwLHQtMSksZS5jb2x1bW49dGhpcy5nZXRMaW5lKHQtMSkubGVuZ3RoKSxlfSx0aGlzLmluc2VydD1mdW5jdGlvbihlLHQpe2lmKCF0fHx0Lmxlbmd0aD09PTApcmV0dXJuIGU7ZT10aGlzLiRjbGlwUG9zaXRpb24oZSksdGhpcy5nZXRMZW5ndGgoKTw9MSYmdGhpcy4kZGV0ZWN0TmV3TGluZSh0KTt2YXIgbj10aGlzLiRzcGxpdCh0KSxyPW4uc3BsaWNlKDAsMSlbMF0saT1uLmxlbmd0aD09MD9udWxsOm4uc3BsaWNlKG4ubGVuZ3RoLTEsMSlbMF07cmV0dXJuIGU9dGhpcy5pbnNlcnRJbkxpbmUoZSxyKSxpIT09bnVsbCYmKGU9dGhpcy5pbnNlcnROZXdMaW5lKGUpLGU9dGhpcy5pbnNlcnRMaW5lcyhlLnJvdyxuKSxlPXRoaXMuaW5zZXJ0SW5MaW5lKGUsaXx8IiIpKSxlfSx0aGlzLmluc2VydExpbmVzPWZ1bmN0aW9uKGUsdCl7aWYodC5sZW5ndGg9PTApcmV0dXJue3JvdzplLGNvbHVtbjowfTtpZih0Lmxlbmd0aD42NTUzNSl7dmFyIG49dGhpcy5pbnNlcnRMaW5lcyhlLHQuc2xpY2UoNjU1MzUpKTt0PXQuc2xpY2UoMCw2NTUzNSl9dmFyIHI9W2UsMF07ci5wdXNoLmFwcGx5KHIsdCksdGhpcy4kbGluZXMuc3BsaWNlLmFwcGx5KHRoaXMuJGxpbmVzLHIpO3ZhciBpPW5ldyBzKGUsMCxlK3QubGVuZ3RoLDApLG89e2FjdGlvbjoiaW5zZXJ0TGluZXMiLHJhbmdlOmksbGluZXM6dH07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6b30pLG58fGkuZW5kfSx0aGlzLmluc2VydE5ld0xpbmU9ZnVuY3Rpb24oZSl7ZT10aGlzLiRjbGlwUG9zaXRpb24oZSk7dmFyIHQ9dGhpcy4kbGluZXNbZS5yb3ddfHwiIjt0aGlzLiRsaW5lc1tlLnJvd109dC5zdWJzdHJpbmcoMCxlLmNvbHVtbiksdGhpcy4kbGluZXMuc3BsaWNlKGUucm93KzEsMCx0LnN1YnN0cmluZyhlLmNvbHVtbix0Lmxlbmd0aCkpO3ZhciBuPXtyb3c6ZS5yb3crMSxjb2x1bW46MH0scj17YWN0aW9uOiJpbnNlcnRUZXh0IixyYW5nZTpzLmZyb21Qb2ludHMoZSxuKSx0ZXh0OnRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpfTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTpyfSksbn0sdGhpcy5pbnNlcnRJbkxpbmU9ZnVuY3Rpb24oZSx0KXtpZih0Lmxlbmd0aD09MClyZXR1cm4gZTt2YXIgbj10aGlzLiRsaW5lc1tlLnJvd118fCIiO3RoaXMuJGxpbmVzW2Uucm93XT1uLnN1YnN0cmluZygwLGUuY29sdW1uKSt0K24uc3Vic3RyaW5nKGUuY29sdW1uKTt2YXIgcj17cm93OmUucm93LGNvbHVtbjplLmNvbHVtbit0Lmxlbmd0aH0saT17YWN0aW9uOiJpbnNlcnRUZXh0IixyYW5nZTpzLmZyb21Qb2ludHMoZSxyKSx0ZXh0OnR9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOml9KSxyfSx0aGlzLnJlbW92ZT1mdW5jdGlvbihlKXtlLnN0YXJ0PXRoaXMuJGNsaXBQb3NpdGlvbihlLnN0YXJ0KSxlLmVuZD10aGlzLiRjbGlwUG9zaXRpb24oZS5lbmQpO2lmKGUuaXNFbXB0eSgpKXJldHVybiBlLnN0YXJ0O3ZhciB0PWUuc3RhcnQucm93LG49ZS5lbmQucm93O2lmKGUuaXNNdWx0aUxpbmUoKSl7dmFyIHI9ZS5zdGFydC5jb2x1bW49PTA/dDp0KzEsaT1uLTE7ZS5lbmQuY29sdW1uPjAmJnRoaXMucmVtb3ZlSW5MaW5lKG4sMCxlLmVuZC5jb2x1bW4pLGk+PXImJnRoaXMucmVtb3ZlTGluZXMocixpKSxyIT10JiYodGhpcy5yZW1vdmVJbkxpbmUodCxlLnN0YXJ0LmNvbHVtbix0aGlzLmdldExpbmUodCkubGVuZ3RoKSx0aGlzLnJlbW92ZU5ld0xpbmUoZS5zdGFydC5yb3cpKX1lbHNlIHRoaXMucmVtb3ZlSW5MaW5lKHQsZS5zdGFydC5jb2x1bW4sZS5lbmQuY29sdW1uKTtyZXR1cm4gZS5zdGFydH0sdGhpcy5yZW1vdmVJbkxpbmU9ZnVuY3Rpb24oZSx0LG4pe2lmKHQ9PW4pcmV0dXJuO3ZhciByPW5ldyBzKGUsdCxlLG4pLGk9dGhpcy5nZXRMaW5lKGUpLG89aS5zdWJzdHJpbmcodCxuKSx1PWkuc3Vic3RyaW5nKDAsdCkraS5zdWJzdHJpbmcobixpLmxlbmd0aCk7dGhpcy4kbGluZXMuc3BsaWNlKGUsMSx1KTt2YXIgYT17YWN0aW9uOiJyZW1vdmVUZXh0IixyYW5nZTpyLHRleHQ6b307cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6YX0pLHIuc3RhcnR9LHRoaXMucmVtb3ZlTGluZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgcyhlLDAsdCsxLDApLHI9dGhpcy4kbGluZXMuc3BsaWNlKGUsdC1lKzEpLGk9e2FjdGlvbjoicmVtb3ZlTGluZXMiLHJhbmdlOm4sbmw6dGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCksbGluZXM6cn07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6aX0pLHJ9LHRoaXMucmVtb3ZlTmV3TGluZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldExpbmUoZSksbj10aGlzLmdldExpbmUoZSsxKSxyPW5ldyBzKGUsdC5sZW5ndGgsZSsxLDApLGk9dCtuO3RoaXMuJGxpbmVzLnNwbGljZShlLDIsaSk7dmFyIG89e2FjdGlvbjoicmVtb3ZlVGV4dCIscmFuZ2U6cix0ZXh0OnRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpfTt0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOm99KX0sdGhpcy5yZXBsYWNlPWZ1bmN0aW9uKGUsdCl7aWYodC5sZW5ndGg9PTAmJmUuaXNFbXB0eSgpKXJldHVybiBlLnN0YXJ0O2lmKHQ9PXRoaXMuZ2V0VGV4dFJhbmdlKGUpKXJldHVybiBlLmVuZDt0aGlzLnJlbW92ZShlKTtpZih0KXZhciBuPXRoaXMuaW5zZXJ0KGUuc3RhcnQsdCk7ZWxzZSBuPWUuc3RhcnQ7cmV0dXJuIG59LHRoaXMuYXBwbHlEZWx0YXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspe3ZhciBuPWVbdF0scj1zLmZyb21Qb2ludHMobi5yYW5nZS5zdGFydCxuLnJhbmdlLmVuZCk7bi5hY3Rpb249PSJpbnNlcnRMaW5lcyI/dGhpcy5pbnNlcnRMaW5lcyhyLnN0YXJ0LnJvdyxuLmxpbmVzKTpuLmFjdGlvbj09Imluc2VydFRleHQiP3RoaXMuaW5zZXJ0KHIuc3RhcnQsbi50ZXh0KTpuLmFjdGlvbj09InJlbW92ZUxpbmVzIj90aGlzLnJlbW92ZUxpbmVzKHIuc3RhcnQucm93LHIuZW5kLnJvdy0xKTpuLmFjdGlvbj09InJlbW92ZVRleHQiJiZ0aGlzLnJlbW92ZShyKX19LHRoaXMucmV2ZXJ0RGVsdGFzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmxlbmd0aC0xO3Q+PTA7dC0tKXt2YXIgbj1lW3RdLHI9cy5mcm9tUG9pbnRzKG4ucmFuZ2Uuc3RhcnQsbi5yYW5nZS5lbmQpO24uYWN0aW9uPT0iaW5zZXJ0TGluZXMiP3RoaXMucmVtb3ZlTGluZXMoci5zdGFydC5yb3csci5lbmQucm93LTEpOm4uYWN0aW9uPT0iaW5zZXJ0VGV4dCI/dGhpcy5yZW1vdmUocik6bi5hY3Rpb249PSJyZW1vdmVMaW5lcyI/dGhpcy5pbnNlcnRMaW5lcyhyLnN0YXJ0LnJvdyxuLmxpbmVzKTpuLmFjdGlvbj09InJlbW92ZVRleHQiJiZ0aGlzLmluc2VydChyLnN0YXJ0LG4udGV4dCl9fX0pLmNhbGwodS5wcm90b3R5cGUpLHQuRG9jdW1lbnQ9dX0pLGRlZmluZSgiYWNlL3JhbmdlIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMuc3RhcnQ9e3JvdzplLGNvbHVtbjp0fSx0aGlzLmVuZD17cm93Om4sY29sdW1uOnJ9fTsoZnVuY3Rpb24oKXt0aGlzLmlzRXF1YWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc3RhcnQucm93PT1lLnN0YXJ0LnJvdyYmdGhpcy5lbmQucm93PT1lLmVuZC5yb3cmJnRoaXMuc3RhcnQuY29sdW1uPT1lLnN0YXJ0LmNvbHVtbiYmdGhpcy5lbmQuY29sdW1uPT1lLmVuZC5jb2x1bW59LHRoaXMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iUmFuZ2U6IFsiK3RoaXMuc3RhcnQucm93KyIvIit0aGlzLnN0YXJ0LmNvbHVtbisiXSAtPiBbIit0aGlzLmVuZC5yb3crIi8iK3RoaXMuZW5kLmNvbHVtbisiXSJ9LHRoaXMuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jb21wYXJlKGUsdCk9PTB9LHRoaXMuY29tcGFyZVJhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5lbmQscj1lLnN0YXJ0O3JldHVybiB0PXRoaXMuY29tcGFyZShuLnJvdyxuLmNvbHVtbiksdD09MT8odD10aGlzLmNvbXBhcmUoci5yb3csci5jb2x1bW4pLHQ9PTE/Mjp0PT0wPzE6MCk6dD09LTE/LTI6KHQ9dGhpcy5jb21wYXJlKHIucm93LHIuY29sdW1uKSx0PT0tMT8tMTp0PT0xPzQyOjApfSx0aGlzLmNvbXBhcmVQb2ludD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb21wYXJlKGUucm93LGUuY29sdW1uKX0sdGhpcy5jb250YWluc1JhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNvbXBhcmVQb2ludChlLnN0YXJ0KT09MCYmdGhpcy5jb21wYXJlUG9pbnQoZS5lbmQpPT0wfSx0aGlzLmludGVyc2VjdHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5jb21wYXJlUmFuZ2UoZSk7cmV0dXJuIHQ9PS0xfHx0PT0wfHx0PT0xfSx0aGlzLmlzRW5kPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZW5kLnJvdz09ZSYmdGhpcy5lbmQuY29sdW1uPT10fSx0aGlzLmlzU3RhcnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PWUmJnRoaXMuc3RhcnQuY29sdW1uPT10fSx0aGlzLnNldFN0YXJ0PWZ1bmN0aW9uKGUsdCl7dHlwZW9mIGU9PSJvYmplY3QiPyh0aGlzLnN0YXJ0LmNvbHVtbj1lLmNvbHVtbix0aGlzLnN0YXJ0LnJvdz1lLnJvdyk6KHRoaXMuc3RhcnQucm93PWUsdGhpcy5zdGFydC5jb2x1bW49dCl9LHRoaXMuc2V0RW5kPWZ1bmN0aW9uKGUsdCl7dHlwZW9mIGU9PSJvYmplY3QiPyh0aGlzLmVuZC5jb2x1bW49ZS5jb2x1bW4sdGhpcy5lbmQucm93PWUucm93KToodGhpcy5lbmQucm93PWUsdGhpcy5lbmQuY29sdW1uPXQpfSx0aGlzLmluc2lkZT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNvbXBhcmUoZSx0KT09MD90aGlzLmlzRW5kKGUsdCl8fHRoaXMuaXNTdGFydChlLHQpPyExOiEwOiExfSx0aGlzLmluc2lkZVN0YXJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuY29tcGFyZShlLHQpPT0wP3RoaXMuaXNFbmQoZSx0KT8hMTohMDohMX0sdGhpcy5pbnNpZGVFbmQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jb21wYXJlKGUsdCk9PTA/dGhpcy5pc1N0YXJ0KGUsdCk/ITE6ITA6ITF9LHRoaXMuY29tcGFyZT1mdW5jdGlvbihlLHQpe3JldHVybiF0aGlzLmlzTXVsdGlMaW5lKCkmJmU9PT10aGlzLnN0YXJ0LnJvdz90PHRoaXMuc3RhcnQuY29sdW1uPy0xOnQ+dGhpcy5lbmQuY29sdW1uPzE6MDplPHRoaXMuc3RhcnQucm93Py0xOmU+dGhpcy5lbmQucm93PzE6dGhpcy5zdGFydC5yb3c9PT1lP3Q+PXRoaXMuc3RhcnQuY29sdW1uPzA6LTE6dGhpcy5lbmQucm93PT09ZT90PD10aGlzLmVuZC5jb2x1bW4/MDoxOjB9LHRoaXMuY29tcGFyZVN0YXJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuc3RhcnQucm93PT1lJiZ0aGlzLnN0YXJ0LmNvbHVtbj09dD8tMTp0aGlzLmNvbXBhcmUoZSx0KX0sdGhpcy5jb21wYXJlRW5kPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZW5kLnJvdz09ZSYmdGhpcy5lbmQuY29sdW1uPT10PzE6dGhpcy5jb21wYXJlKGUsdCl9LHRoaXMuY29tcGFyZUluc2lkZT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmVuZC5yb3c9PWUmJnRoaXMuZW5kLmNvbHVtbj09dD8xOnRoaXMuc3RhcnQucm93PT1lJiZ0aGlzLnN0YXJ0LmNvbHVtbj09dD8tMTp0aGlzLmNvbXBhcmUoZSx0KX0sdGhpcy5jbGlwUm93cz1mdW5jdGlvbihlLHQpe2lmKHRoaXMuZW5kLnJvdz50KXZhciBuPXtyb3c6dCsxLGNvbHVtbjowfTtpZih0aGlzLnN0YXJ0LnJvdz50KXZhciBpPXtyb3c6dCsxLGNvbHVtbjowfTtpZih0aGlzLnN0YXJ0LnJvdzxlKXZhciBpPXtyb3c6ZSxjb2x1bW46MH07aWYodGhpcy5lbmQucm93PGUpdmFyIG49e3JvdzplLGNvbHVtbjowfTtyZXR1cm4gci5mcm9tUG9pbnRzKGl8fHRoaXMuc3RhcnQsbnx8dGhpcy5lbmQpfSx0aGlzLmV4dGVuZD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuY29tcGFyZShlLHQpO2lmKG49PTApcmV0dXJuIHRoaXM7aWYobj09LTEpdmFyIGk9e3JvdzplLGNvbHVtbjp0fTtlbHNlIHZhciBzPXtyb3c6ZSxjb2x1bW46dH07cmV0dXJuIHIuZnJvbVBvaW50cyhpfHx0aGlzLnN0YXJ0LHN8fHRoaXMuZW5kKX0sdGhpcy5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnQucm93PT10aGlzLmVuZC5yb3cmJnRoaXMuc3RhcnQuY29sdW1uPT10aGlzLmVuZC5jb2x1bW59LHRoaXMuaXNNdWx0aUxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydC5yb3chPT10aGlzLmVuZC5yb3d9LHRoaXMuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gci5mcm9tUG9pbnRzKHRoaXMuc3RhcnQsdGhpcy5lbmQpfSx0aGlzLmNvbGxhcHNlUm93cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZC5jb2x1bW49PTA/bmV3IHIodGhpcy5zdGFydC5yb3csMCxNYXRoLm1heCh0aGlzLnN0YXJ0LnJvdyx0aGlzLmVuZC5yb3ctMSksMCk6bmV3IHIodGhpcy5zdGFydC5yb3csMCx0aGlzLmVuZC5yb3csMCl9LHRoaXMudG9TY3JlZW5SYW5nZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLnN0YXJ0KSxuPWUuZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKHRoaXMuZW5kKTtyZXR1cm4gbmV3IHIodC5yb3csdC5jb2x1bW4sbi5yb3csbi5jb2x1bW4pfX0pLmNhbGwoci5wcm90b3R5cGUpLHIuZnJvbVBvaW50cz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgcihlLnJvdyxlLmNvbHVtbix0LnJvdyx0LmNvbHVtbil9LHQuUmFuZ2U9cn0pLGRlZmluZSgiYWNlL2FuY2hvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4vbGliL29vcCIpLGk9ZSgiLi9saWIvZXZlbnRfZW1pdHRlciIpLkV2ZW50RW1pdHRlcixzPXQuQW5jaG9yPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLmRvY3VtZW50PWUsdHlwZW9mIG49PSJ1bmRlZmluZWQiP3RoaXMuc2V0UG9zaXRpb24odC5yb3csdC5jb2x1bW4pOnRoaXMuc2V0UG9zaXRpb24odCxuKSx0aGlzLiRvbkNoYW5nZT10aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyksZS5vbigiY2hhbmdlIix0aGlzLiRvbkNoYW5nZSl9OyhmdW5jdGlvbigpe3IuaW1wbGVtZW50KHRoaXMsaSksdGhpcy5nZXRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50KHRoaXMucm93LHRoaXMuY29sdW1uKX0sdGhpcy5nZXREb2N1bWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvY3VtZW50fSx0aGlzLm9uQ2hhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YSxuPXQucmFuZ2U7aWYobi5zdGFydC5yb3c9PW4uZW5kLnJvdyYmbi5zdGFydC5yb3chPXRoaXMucm93KXJldHVybjtpZihuLnN0YXJ0LnJvdz50aGlzLnJvdylyZXR1cm47aWYobi5zdGFydC5yb3c9PXRoaXMucm93JiZuLnN0YXJ0LmNvbHVtbj50aGlzLmNvbHVtbilyZXR1cm47dmFyIHI9dGhpcy5yb3csaT10aGlzLmNvbHVtbjt0LmFjdGlvbj09PSJpbnNlcnRUZXh0Ij9uLnN0YXJ0LnJvdz09PXImJm4uc3RhcnQuY29sdW1uPD1pP24uc3RhcnQucm93PT09bi5lbmQucm93P2krPW4uZW5kLmNvbHVtbi1uLnN0YXJ0LmNvbHVtbjooaS09bi5zdGFydC5jb2x1bW4scis9bi5lbmQucm93LW4uc3RhcnQucm93KTpuLnN0YXJ0LnJvdyE9PW4uZW5kLnJvdyYmbi5zdGFydC5yb3c8ciYmKHIrPW4uZW5kLnJvdy1uLnN0YXJ0LnJvdyk6dC5hY3Rpb249PT0iaW5zZXJ0TGluZXMiP24uc3RhcnQucm93PD1yJiYocis9bi5lbmQucm93LW4uc3RhcnQucm93KTp0LmFjdGlvbj09InJlbW92ZVRleHQiP24uc3RhcnQucm93PT1yJiZuLnN0YXJ0LmNvbHVtbjxpP24uZW5kLmNvbHVtbj49aT9pPW4uc3RhcnQuY29sdW1uOmk9TWF0aC5tYXgoMCxpLShuLmVuZC5jb2x1bW4tbi5zdGFydC5jb2x1bW4pKTpuLnN0YXJ0LnJvdyE9PW4uZW5kLnJvdyYmbi5zdGFydC5yb3c8cj8obi5lbmQucm93PT1yJiYoaT1NYXRoLm1heCgwLGktbi5lbmQuY29sdW1uKStuLnN0YXJ0LmNvbHVtbiksci09bi5lbmQucm93LW4uc3RhcnQucm93KTpuLmVuZC5yb3c9PXImJihyLT1uLmVuZC5yb3ctbi5zdGFydC5yb3csaT1NYXRoLm1heCgwLGktbi5lbmQuY29sdW1uKStuLnN0YXJ0LmNvbHVtbik6dC5hY3Rpb249PSJyZW1vdmVMaW5lcyImJm4uc3RhcnQucm93PD1yJiYobi5lbmQucm93PD1yP3ItPW4uZW5kLnJvdy1uLnN0YXJ0LnJvdzoocj1uLnN0YXJ0LnJvdyxpPTApKSx0aGlzLnNldFBvc2l0aW9uKHIsaSwhMCl9LHRoaXMuc2V0UG9zaXRpb249ZnVuY3Rpb24oZSx0LG4pe3ZhciByO24/cj17cm93OmUsY29sdW1uOnR9OnI9dGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudChlLHQpO2lmKHRoaXMucm93PT1yLnJvdyYmdGhpcy5jb2x1bW49PXIuY29sdW1uKXJldHVybjt2YXIgaT17cm93OnRoaXMucm93LGNvbHVtbjp0aGlzLmNvbHVtbn07dGhpcy5yb3c9ci5yb3csdGhpcy5jb2x1bW49ci5jb2x1bW4sdGhpcy5fZW1pdCgiY2hhbmdlIix7b2xkOmksdmFsdWU6cn0pfSx0aGlzLmRldGFjaD1mdW5jdGlvbigpe3RoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2hhbmdlIix0aGlzLiRvbkNoYW5nZSl9LHRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtyZXR1cm4gZT49dGhpcy5kb2N1bWVudC5nZXRMZW5ndGgoKT8obi5yb3c9TWF0aC5tYXgoMCx0aGlzLmRvY3VtZW50LmdldExlbmd0aCgpLTEpLG4uY29sdW1uPXRoaXMuZG9jdW1lbnQuZ2V0TGluZShuLnJvdykubGVuZ3RoKTplPDA/KG4ucm93PTAsbi5jb2x1bW49MCk6KG4ucm93PWUsbi5jb2x1bW49TWF0aC5taW4odGhpcy5kb2N1bWVudC5nZXRMaW5lKG4ucm93KS5sZW5ndGgsTWF0aC5tYXgoMCx0KSkpLHQ8MCYmKG4uY29sdW1uPTApLG59fSkuY2FsbChzLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9saWIvbGFuZyIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXt0LnN0cmluZ1JldmVyc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3BsaXQoIiIpLnJldmVyc2UoKS5qb2luKCIiKX0sdC5zdHJpbmdSZXBlYXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4obmV3IEFycmF5KHQrMSkpLmpvaW4oZSl9O3ZhciByPS9eXHNccyovLGk9L1xzXHMqJC87dC5zdHJpbmdUcmltTGVmdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKHIsIiIpfSx0LnN0cmluZ1RyaW1SaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGksIiIpfSx0LmNvcHlPYmplY3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9e307Zm9yKHZhciBuIGluIGUpdFtuXT1lW25dO3JldHVybiB0fSx0LmNvcHlBcnJheT1mdW5jdGlvbihlKXt2YXIgdD1bXTtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspZVtuXSYmdHlwZW9mIGVbbl09PSJvYmplY3QiP3Rbbl09dGhpcy5jb3B5T2JqZWN0KGVbbl0pOnRbbl09ZVtuXTtyZXR1cm4gdH0sdC5kZWVwQ29weT1mdW5jdGlvbihlKXtpZih0eXBlb2YgZSE9Im9iamVjdCIpcmV0dXJuIGU7dmFyIHQ9ZS5jb25zdHJ1Y3RvcigpO2Zvcih2YXIgbiBpbiBlKXR5cGVvZiBlW25dPT0ib2JqZWN0Ij90W25dPXRoaXMuZGVlcENvcHkoZVtuXSk6dFtuXT1lW25dO3JldHVybiB0fSx0LmFycmF5VG9NYXA9ZnVuY3Rpb24oZSl7dmFyIHQ9e307Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspdFtlW25dXT0xO3JldHVybiB0fSx0LmFycmF5UmVtb3ZlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjw9ZS5sZW5ndGg7bisrKXQ9PT1lW25dJiZlLnNwbGljZShuLDEpfSx0LmVzY2FwZVJlZ0V4cD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC8oWy4qKz9eJHt9KCl8W1xdXC9cXF0pL2csIlxcJDEiKX0sdC5nZXRNYXRjaE9mZnNldHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXTtyZXR1cm4gZS5yZXBsYWNlKHQsZnVuY3Rpb24oZSl7bi5wdXNoKHtvZmZzZXQ6YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMl0sbGVuZ3RoOmUubGVuZ3RofSl9KSxufSx0LmRlZmVycmVkQ2FsbD1mdW5jdGlvbihlKXt2YXIgdD1udWxsLG49ZnVuY3Rpb24oKXt0PW51bGwsZSgpfSxyPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbmNlbCgpLHQ9c2V0VGltZW91dChuLGV8fDApLHJ9O3JldHVybiByLnNjaGVkdWxlPXIsci5jYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FuY2VsKCksZSgpLHJ9LHIuY2FuY2VsPWZ1bmN0aW9uKCl7cmV0dXJuIGNsZWFyVGltZW91dCh0KSx0PW51bGwscn0scn19KSxkZWZpbmUoImFjZS9tb2RlL2Nzcy9jc3NsaW50IixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24ocmVxdWlyZSxleHBvcnRzLG1vZHVsZSl7ZnVuY3Rpb24gUmVwb3J0ZXIoZSx0KXt0aGlzLm1lc3NhZ2VzPVtdLHRoaXMuc3RhdHM9W10sdGhpcy5saW5lcz1lLHRoaXMucnVsZXNldD10fXZhciBwYXJzZXJsaWI9e307KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuX2xpc3RlbmVycz17fX1mdW5jdGlvbiB0KGUpe3RoaXMuX2lucHV0PWUucmVwbGFjZSgvXG5ccj8vZywiXG4iKSx0aGlzLl9saW5lPTEsdGhpcy5fY29sPTEsdGhpcy5fY3Vyc29yPTB9ZnVuY3Rpb24gbihlLHQsbil7dGhpcy5jb2w9bix0aGlzLmxpbmU9dCx0aGlzLm1lc3NhZ2U9ZX1mdW5jdGlvbiByKGUsdCxuLHIpe3RoaXMuY29sPW4sdGhpcy5saW5lPXQsdGhpcy50ZXh0PWUsdGhpcy50eXBlPXJ9ZnVuY3Rpb24gaShlLG4pe3RoaXMuX3JlYWRlcj1lP25ldyB0KGUudG9TdHJpbmcoKSk6bnVsbCx0aGlzLl90b2tlbj1udWxsLHRoaXMuX3Rva2VuRGF0YT1uLHRoaXMuX2x0PVtdLHRoaXMuX2x0SW5kZXg9MCx0aGlzLl9sdEluZGV4Q2FjaGU9W119ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmUsYWRkTGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXt0aGlzLl9saXN0ZW5lcnNbZV18fCh0aGlzLl9saXN0ZW5lcnNbZV09W10pLHRoaXMuX2xpc3RlbmVyc1tlXS5wdXNoKHQpfSxmaXJlOmZ1bmN0aW9uKGUpe3R5cGVvZiBlPT0ic3RyaW5nIiYmKGU9e3R5cGU6ZX0pLHR5cGVvZiBlLnRhcmdldCE9InVuZGVmaW5lZCImJihlLnRhcmdldD10aGlzKTtpZih0eXBlb2YgZS50eXBlPT0idW5kZWZpbmVkIil0aHJvdyBuZXcgRXJyb3IoIkV2ZW50IG9iamVjdCBtaXNzaW5nICd0eXBlJyBwcm9wZXJ0eS4iKTtpZih0aGlzLl9saXN0ZW5lcnNbZS50eXBlXSl7dmFyIHQ9dGhpcy5fbGlzdGVuZXJzW2UudHlwZV0uY29uY2F0KCk7Zm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7bisrKXRbbl0uY2FsbCh0aGlzLGUpfX0scmVtb3ZlTGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXtpZih0aGlzLl9saXN0ZW5lcnNbZV0pe3ZhciBuPXRoaXMuX2xpc3RlbmVyc1tlXTtmb3IodmFyIHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspaWYobltyXT09PXQpe24uc3BsaWNlKHIsMSk7YnJlYWt9fX19LHQucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp0LGdldENvbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb2x9LGdldExpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGluZX0sZW9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2N1cnNvcj09dGhpcy5faW5wdXQubGVuZ3RofSxwZWVrOmZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7cmV0dXJuIGU9dHlwZW9mIGU9PSJ1bmRlZmluZWQiPzE6ZSx0aGlzLl9jdXJzb3I8dGhpcy5faW5wdXQubGVuZ3RoJiYodD10aGlzLl9pbnB1dC5jaGFyQXQodGhpcy5fY3Vyc29yK2UtMSkpLHR9LHJlYWQ6ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3JldHVybiB0aGlzLl9jdXJzb3I8dGhpcy5faW5wdXQubGVuZ3RoJiYodGhpcy5faW5wdXQuY2hhckF0KHRoaXMuX2N1cnNvcik9PSJcbiI/KHRoaXMuX2xpbmUrKyx0aGlzLl9jb2w9MSk6dGhpcy5fY29sKyssZT10aGlzLl9pbnB1dC5jaGFyQXQodGhpcy5fY3Vyc29yKyspKSxlfSxtYXJrOmZ1bmN0aW9uKCl7dGhpcy5fYm9va21hcms9e2N1cnNvcjp0aGlzLl9jdXJzb3IsbGluZTp0aGlzLl9saW5lLGNvbDp0aGlzLl9jb2x9fSxyZXNldDpmdW5jdGlvbigpe3RoaXMuX2Jvb2ttYXJrJiYodGhpcy5fY3Vyc29yPXRoaXMuX2Jvb2ttYXJrLmN1cnNvcix0aGlzLl9saW5lPXRoaXMuX2Jvb2ttYXJrLmxpbmUsdGhpcy5fY29sPXRoaXMuX2Jvb2ttYXJrLmNvbCxkZWxldGUgdGhpcy5fYm9va21hcmspfSxyZWFkVG86ZnVuY3Rpb24oZSl7dmFyIHQ9IiIsbjt3aGlsZSh0Lmxlbmd0aDxlLmxlbmd0aHx8dC5sYXN0SW5kZXhPZihlKSE9dC5sZW5ndGgtZS5sZW5ndGgpe249dGhpcy5yZWFkKCk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCAiJytlKyciIGF0IGxpbmUgJyt0aGlzLl9saW5lKyIsIGNvbCAiK3RoaXMuX2NvbCsiLiIpO3QrPW59cmV0dXJuIHR9LHJlYWRXaGlsZTpmdW5jdGlvbihlKXt2YXIgdD0iIixuPXRoaXMucmVhZCgpO3doaWxlKG4hPT1udWxsJiZlKG4pKXQrPW4sbj10aGlzLnJlYWQoKTtyZXR1cm4gdH0scmVhZE1hdGNoOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2lucHV0LnN1YnN0cmluZyh0aGlzLl9jdXJzb3IpLG49bnVsbDtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciP3QuaW5kZXhPZihlKT09PTAmJihuPXRoaXMucmVhZENvdW50KGUubGVuZ3RoKSk6ZSBpbnN0YW5jZW9mIFJlZ0V4cCYmZS50ZXN0KHQpJiYobj10aGlzLnJlYWRDb3VudChSZWdFeHAubGFzdE1hdGNoLmxlbmd0aCkpLG59LHJlYWRDb3VudDpmdW5jdGlvbihlKXt2YXIgdD0iIjt3aGlsZShlLS0pdCs9dGhpcy5yZWFkKCk7cmV0dXJuIHR9fSxuLnByb3RvdHlwZT1uZXcgRXJyb3Isci5mcm9tVG9rZW49ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyByKGUudmFsdWUsZS5zdGFydExpbmUsZS5zdGFydENvbCl9LHIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpyLHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHR9fSxpLmNyZWF0ZVRva2VuRGF0YT1mdW5jdGlvbihlKXt2YXIgdD1bXSxuPXt9LHI9ZS5jb25jYXQoW10pLGk9MCxzPXIubGVuZ3RoKzE7ci5VTktOT1dOPS0xLHIudW5zaGlmdCh7bmFtZToiRU9GIn0pO2Zvcig7aTxzO2krKyl0LnB1c2gocltpXS5uYW1lKSxyW3JbaV0ubmFtZV09aSxyW2ldLnRleHQmJihuW3JbaV0udGV4dF09aSk7cmV0dXJuIHIubmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0sci50eXBlPWZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfSxyfSxpLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aSxtYXRjaDpmdW5jdGlvbihlLHQpe2UgaW5zdGFuY2VvZiBBcnJheXx8KGU9W2VdKTt2YXIgbj10aGlzLmdldCh0KSxyPTAsaT1lLmxlbmd0aDt3aGlsZShyPGkpaWYobj09ZVtyKytdKXJldHVybiEwO3JldHVybiB0aGlzLnVuZ2V0KCksITF9LG11c3RNYXRjaDpmdW5jdGlvbihlLHQpe3ZhciByO2UgaW5zdGFuY2VvZiBBcnJheXx8KGU9W2VdKTtpZighdGhpcy5tYXRjaC5hcHBseSh0aGlzLGFyZ3VtZW50cykpdGhyb3cgcj10aGlzLkxUKDEpLG5ldyBuKCJFeHBlY3RlZCAiK3RoaXMuX3Rva2VuRGF0YVtlWzBdXS5uYW1lKyIgYXQgbGluZSAiK3Iuc3RhcnRMaW5lKyIsIGNvbCAiK3Iuc3RhcnRDb2wrIi4iLHIuc3RhcnRMaW5lLHIuc3RhcnRDb2wpfSxhZHZhbmNlOmZ1bmN0aW9uKGUsdCl7d2hpbGUodGhpcy5MQSgwKSE9PTAmJiF0aGlzLm1hdGNoKGUsdCkpdGhpcy5nZXQoKTtyZXR1cm4gdGhpcy5MQSgwKX0sZ2V0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3Rva2VuRGF0YSxuPXRoaXMuX3JlYWRlcixyLGk9MCxzPXQubGVuZ3RoLG89ITEsdSxhO2lmKHRoaXMuX2x0Lmxlbmd0aCYmdGhpcy5fbHRJbmRleD49MCYmdGhpcy5fbHRJbmRleDx0aGlzLl9sdC5sZW5ndGgpe2krKyx0aGlzLl90b2tlbj10aGlzLl9sdFt0aGlzLl9sdEluZGV4KytdLGE9dFt0aGlzLl90b2tlbi50eXBlXTt3aGlsZShhLmNoYW5uZWwhPT11bmRlZmluZWQmJmUhPT1hLmNoYW5uZWwmJnRoaXMuX2x0SW5kZXg8dGhpcy5fbHQubGVuZ3RoKXRoaXMuX3Rva2VuPXRoaXMuX2x0W3RoaXMuX2x0SW5kZXgrK10sYT10W3RoaXMuX3Rva2VuLnR5cGVdLGkrKztpZigoYS5jaGFubmVsPT09dW5kZWZpbmVkfHxlPT09YS5jaGFubmVsKSYmdGhpcy5fbHRJbmRleDw9dGhpcy5fbHQubGVuZ3RoKXJldHVybiB0aGlzLl9sdEluZGV4Q2FjaGUucHVzaChpKSx0aGlzLl90b2tlbi50eXBlfXJldHVybiB1PXRoaXMuX2dldFRva2VuKCksdS50eXBlPi0xJiYhdFt1LnR5cGVdLmhpZGUmJih1LmNoYW5uZWw9dFt1LnR5cGVdLmNoYW5uZWwsdGhpcy5fdG9rZW49dSx0aGlzLl9sdC5wdXNoKHUpLHRoaXMuX2x0SW5kZXhDYWNoZS5wdXNoKHRoaXMuX2x0Lmxlbmd0aC10aGlzLl9sdEluZGV4K2kpLHRoaXMuX2x0Lmxlbmd0aD41JiZ0aGlzLl9sdC5zaGlmdCgpLHRoaXMuX2x0SW5kZXhDYWNoZS5sZW5ndGg+NSYmdGhpcy5fbHRJbmRleENhY2hlLnNoaWZ0KCksdGhpcy5fbHRJbmRleD10aGlzLl9sdC5sZW5ndGgpLGE9dFt1LnR5cGVdLGEmJihhLmhpZGV8fGEuY2hhbm5lbCE9PXVuZGVmaW5lZCYmZSE9PWEuY2hhbm5lbCk/dGhpcy5nZXQoZSk6dS50eXBlfSxMQTpmdW5jdGlvbihlKXt2YXIgdD1lLG47aWYoZT4wKXtpZihlPjUpdGhyb3cgbmV3IEVycm9yKCJUb28gbXVjaCBsb29rYWhlYWQuIik7d2hpbGUodCluPXRoaXMuZ2V0KCksdC0tO3doaWxlKHQ8ZSl0aGlzLnVuZ2V0KCksdCsrfWVsc2UgaWYoZTwwKXtpZighdGhpcy5fbHRbdGhpcy5fbHRJbmRleCtlXSl0aHJvdyBuZXcgRXJyb3IoIlRvbyBtdWNoIGxvb2tiZWhpbmQuIik7bj10aGlzLl9sdFt0aGlzLl9sdEluZGV4K2VdLnR5cGV9ZWxzZSBuPXRoaXMuX3Rva2VuLnR5cGU7cmV0dXJuIG59LExUOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLkxBKGUpLHRoaXMuX2x0W3RoaXMuX2x0SW5kZXgrZS0xXX0scGVlazpmdW5jdGlvbigpe3JldHVybiB0aGlzLkxBKDEpfSx0b2tlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90b2tlbn0sdG9rZW5OYW1lOmZ1bmN0aW9uKGUpe3JldHVybiBlPDB8fGU+dGhpcy5fdG9rZW5EYXRhLmxlbmd0aD8iVU5LTk9XTl9UT0tFTiI6dGhpcy5fdG9rZW5EYXRhW2VdLm5hbWV9LHRva2VuVHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fdG9rZW5EYXRhW2VdfHwtMX0sdW5nZXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fbHRJbmRleENhY2hlLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRvbyBtdWNoIGxvb2thaGVhZC4iKTt0aGlzLl9sdEluZGV4LT10aGlzLl9sdEluZGV4Q2FjaGUucG9wKCksdGhpcy5fdG9rZW49dGhpcy5fbHRbdGhpcy5fbHRJbmRleC0xXX19LHBhcnNlcmxpYi51dGlsPXtTdHJpbmdSZWFkZXI6dCxTeW50YXhFcnJvcjpuLFN5bnRheFVuaXQ6cixFdmVudFRhcmdldDplLFRva2VuU3RyZWFtQmFzZTppfX0pKCksZnVuY3Rpb24oKXtmdW5jdGlvbiBDb21iaW5hdG9yKGUsdCxuKXtTeW50YXhVbml0LmNhbGwodGhpcyxlLHQsbixQYXJzZXIuQ09NQklOQVRPUl9UWVBFKSx0aGlzLnR5cGU9InVua25vd24iLC9eXHMrJC8udGVzdChlKT90aGlzLnR5cGU9ImRlc2NlbmRhbnQiOmU9PSI+Ij90aGlzLnR5cGU9ImNoaWxkIjplPT0iKyI/dGhpcy50eXBlPSJhZGphY2VudC1zaWJsaW5nIjplPT0ifiImJih0aGlzLnR5cGU9InNpYmxpbmciKX1mdW5jdGlvbiBNZWRpYUZlYXR1cmUoZSx0KXtTeW50YXhVbml0LmNhbGwodGhpcywiKCIrZSsodCE9PW51bGw/IjoiK3Q6IiIpKyIpIixlLnN0YXJ0TGluZSxlLnN0YXJ0Q29sLFBhcnNlci5NRURJQV9GRUFUVVJFX1RZUEUpLHRoaXMubmFtZT1lLHRoaXMudmFsdWU9dH1mdW5jdGlvbiBNZWRpYVF1ZXJ5KGUsdCxuLHIsaSl7U3ludGF4VW5pdC5jYWxsKHRoaXMsKGU/ZSsiICI6IiIpKyh0P3QrIiAiOiIiKStuLmpvaW4oIiBhbmQgIikscixpLFBhcnNlci5NRURJQV9RVUVSWV9UWVBFKSx0aGlzLm1vZGlmaWVyPWUsdGhpcy5tZWRpYVR5cGU9dCx0aGlzLmZlYXR1cmVzPW59ZnVuY3Rpb24gUGFyc2VyKGUpe0V2ZW50VGFyZ2V0LmNhbGwodGhpcyksdGhpcy5vcHRpb25zPWV8fHt9LHRoaXMuX3Rva2VuU3RyZWFtPW51bGx9ZnVuY3Rpb24gUHJvcGVydHlOYW1lKGUsdCxuLHIpe1N5bnRheFVuaXQuY2FsbCh0aGlzLGUsbixyLFBhcnNlci5QUk9QRVJUWV9OQU1FX1RZUEUpLHRoaXMuaGFjaz10fWZ1bmN0aW9uIFByb3BlcnR5VmFsdWUoZSx0LG4pe1N5bnRheFVuaXQuY2FsbCh0aGlzLGUuam9pbigiICIpLHQsbixQYXJzZXIuUFJPUEVSVFlfVkFMVUVfVFlQRSksdGhpcy5wYXJ0cz1lfWZ1bmN0aW9uIFByb3BlcnR5VmFsdWVJdGVyYXRvcihlKXt0aGlzLl9pPTAsdGhpcy5fcGFydHM9ZS5wYXJ0cyx0aGlzLl9tYXJrcz1bXSx0aGlzLnZhbHVlPWV9ZnVuY3Rpb24gUHJvcGVydHlWYWx1ZVBhcnQodGV4dCxsaW5lLGNvbCl7U3ludGF4VW5pdC5jYWxsKHRoaXMsdGV4dCxsaW5lLGNvbCxQYXJzZXIuUFJPUEVSVFlfVkFMVUVfUEFSVF9UWVBFKSx0aGlzLnR5cGU9InVua25vd24iO3ZhciB0ZW1wO2lmKC9eKFsrXC1dP1tcZFwuXSspKFthLXpdKykkL2kudGVzdCh0ZXh0KSl7dGhpcy50eXBlPSJkaW1lbnNpb24iLHRoaXMudmFsdWU9K1JlZ0V4cC4kMSx0aGlzLnVuaXRzPVJlZ0V4cC4kMjtzd2l0Y2godGhpcy51bml0cy50b0xvd2VyQ2FzZSgpKXtjYXNlImVtIjpjYXNlInJlbSI6Y2FzZSJleCI6Y2FzZSJweCI6Y2FzZSJjbSI6Y2FzZSJtbSI6Y2FzZSJpbiI6Y2FzZSJwdCI6Y2FzZSJwYyI6Y2FzZSJjaCI6dGhpcy50eXBlPSJsZW5ndGgiO2JyZWFrO2Nhc2UiZGVnIjpjYXNlInJhZCI6Y2FzZSJncmFkIjp0aGlzLnR5cGU9ImFuZ2xlIjticmVhaztjYXNlIm1zIjpjYXNlInMiOnRoaXMudHlwZT0idGltZSI7YnJlYWs7Y2FzZSJoeiI6Y2FzZSJraHoiOnRoaXMudHlwZT0iZnJlcXVlbmN5IjticmVhaztjYXNlImRwaSI6Y2FzZSJkcGNtIjp0aGlzLnR5cGU9InJlc29sdXRpb24ifX1lbHNlL14oWytcLV0/W1xkXC5dKyklJC9pLnRlc3QodGV4dCk/KHRoaXMudHlwZT0icGVyY2VudGFnZSIsdGhpcy52YWx1ZT0rUmVnRXhwLiQxKTovXihbK1wtXT9bXGRcLl0rKSUkL2kudGVzdCh0ZXh0KT8odGhpcy50eXBlPSJwZXJjZW50YWdlIix0aGlzLnZhbHVlPStSZWdFeHAuJDEpOi9eKFsrXC1dP1xkKykkL2kudGVzdCh0ZXh0KT8odGhpcy50eXBlPSJpbnRlZ2VyIix0aGlzLnZhbHVlPStSZWdFeHAuJDEpOi9eKFsrXC1dP1tcZFwuXSspJC9pLnRlc3QodGV4dCk/KHRoaXMudHlwZT0ibnVtYmVyIix0aGlzLnZhbHVlPStSZWdFeHAuJDEpOi9eIyhbYS1mMC05XXszLDZ9KS9pLnRlc3QodGV4dCk/KHRoaXMudHlwZT0iY29sb3IiLHRlbXA9UmVnRXhwLiQxLHRlbXAubGVuZ3RoPT0zPyh0aGlzLnJlZD1wYXJzZUludCh0ZW1wLmNoYXJBdCgwKSt0ZW1wLmNoYXJBdCgwKSwxNiksdGhpcy5ncmVlbj1wYXJzZUludCh0ZW1wLmNoYXJBdCgxKSt0ZW1wLmNoYXJBdCgxKSwxNiksdGhpcy5ibHVlPXBhcnNlSW50KHRlbXAuY2hhckF0KDIpK3RlbXAuY2hhckF0KDIpLDE2KSk6KHRoaXMucmVkPXBhcnNlSW50KHRlbXAuc3Vic3RyaW5nKDAsMiksMTYpLHRoaXMuZ3JlZW49cGFyc2VJbnQodGVtcC5zdWJzdHJpbmcoMiw0KSwxNiksdGhpcy5ibHVlPXBhcnNlSW50KHRlbXAuc3Vic3RyaW5nKDQsNiksMTYpKSk6L15yZ2JcKFxzKihcZCspXHMqLFxzKihcZCspXHMqLFxzKihcZCspXHMqXCkvaS50ZXN0KHRleHQpPyh0aGlzLnR5cGU9ImNvbG9yIix0aGlzLnJlZD0rUmVnRXhwLiQxLHRoaXMuZ3JlZW49K1JlZ0V4cC4kMix0aGlzLmJsdWU9K1JlZ0V4cC4kMyk6L15yZ2JcKFxzKihcZCspJVxzKixccyooXGQrKSVccyosXHMqKFxkKyklXHMqXCkvaS50ZXN0KHRleHQpPyh0aGlzLnR5cGU9ImNvbG9yIix0aGlzLnJlZD0rUmVnRXhwLiQxKjI1NS8xMDAsdGhpcy5ncmVlbj0rUmVnRXhwLiQyKjI1NS8xMDAsdGhpcy5ibHVlPStSZWdFeHAuJDMqMjU1LzEwMCk6L15yZ2JhXChccyooXGQrKVxzKixccyooXGQrKVxzKixccyooXGQrKVxzKixccyooW1xkXC5dKylccypcKS9pLnRlc3QodGV4dCk/KHRoaXMudHlwZT0iY29sb3IiLHRoaXMucmVkPStSZWdFeHAuJDEsdGhpcy5ncmVlbj0rUmVnRXhwLiQyLHRoaXMuYmx1ZT0rUmVnRXhwLiQzLHRoaXMuYWxwaGE9K1JlZ0V4cC4kNCk6L15yZ2JhXChccyooXGQrKSVccyosXHMqKFxkKyklXHMqLFxzKihcZCspJVxzKixccyooW1xkXC5dKylccypcKS9pLnRlc3QodGV4dCk/KHRoaXMudHlwZT0iY29sb3IiLHRoaXMucmVkPStSZWdFeHAuJDEqMjU1LzEwMCx0aGlzLmdyZWVuPStSZWdFeHAuJDIqMjU1LzEwMCx0aGlzLmJsdWU9K1JlZ0V4cC4kMyoyNTUvMTAwLHRoaXMuYWxwaGE9K1JlZ0V4cC4kNCk6L15oc2xcKFxzKihcZCspXHMqLFxzKihcZCspJVxzKixccyooXGQrKSVccypcKS9pLnRlc3QodGV4dCk/KHRoaXMudHlwZT0iY29sb3IiLHRoaXMuaHVlPStSZWdFeHAuJDEsdGhpcy5zYXR1cmF0aW9uPStSZWdFeHAuJDIvMTAwLHRoaXMubGlnaHRuZXNzPStSZWdFeHAuJDMvMTAwKTovXmhzbGFcKFxzKihcZCspXHMqLFxzKihcZCspJVxzKixccyooXGQrKSVccyosXHMqKFtcZFwuXSspXHMqXCkvaS50ZXN0KHRleHQpPyh0aGlzLnR5cGU9ImNvbG9yIix0aGlzLmh1ZT0rUmVnRXhwLiQxLHRoaXMuc2F0dXJhdGlvbj0rUmVnRXhwLiQyLzEwMCx0aGlzLmxpZ2h0bmVzcz0rUmVnRXhwLiQzLzEwMCx0aGlzLmFscGhhPStSZWdFeHAuJDQpOi9edXJsXChbIiddPyhbXlwpIiddKylbIiddP1wpL2kudGVzdCh0ZXh0KT8odGhpcy50eXBlPSJ1cmkiLHRoaXMudXJpPVJlZ0V4cC4kMSk6L14oW15cKF0rKVwoL2kudGVzdCh0ZXh0KT8odGhpcy50eXBlPSJmdW5jdGlvbiIsdGhpcy5uYW1lPVJlZ0V4cC4kMSx0aGlzLnZhbHVlPXRleHQpOi9eWyInXVteIiddKlsiJ10vLnRlc3QodGV4dCk/KHRoaXMudHlwZT0ic3RyaW5nIix0aGlzLnZhbHVlPWV2YWwodGV4dCkpOkNvbG9yc1t0ZXh0LnRvTG93ZXJDYXNlKCldPyh0aGlzLnR5cGU9ImNvbG9yIix0ZW1wPUNvbG9yc1t0ZXh0LnRvTG93ZXJDYXNlKCldLnN1YnN0cmluZygxKSx0aGlzLnJlZD1wYXJzZUludCh0ZW1wLnN1YnN0cmluZygwLDIpLDE2KSx0aGlzLmdyZWVuPXBhcnNlSW50KHRlbXAuc3Vic3RyaW5nKDIsNCksMTYpLHRoaXMuYmx1ZT1wYXJzZUludCh0ZW1wLnN1YnN0cmluZyg0LDYpLDE2KSk6L15bXCxcL10kLy50ZXN0KHRleHQpPyh0aGlzLnR5cGU9Im9wZXJhdG9yIix0aGlzLnZhbHVlPXRleHQpOi9eW2EtelwtXHUwMDgwLVx1RkZGRl1bYS16MC05XC1cdTAwODAtXHVGRkZGXSokL2kudGVzdCh0ZXh0KSYmKHRoaXMudHlwZT0iaWRlbnRpZmllciIsdGhpcy52YWx1ZT10ZXh0KX1mdW5jdGlvbiBTZWxlY3RvcihlLHQsbil7U3ludGF4VW5pdC5jYWxsKHRoaXMsZS5qb2luKCIgIiksdCxuLFBhcnNlci5TRUxFQ1RPUl9UWVBFKSx0aGlzLnBhcnRzPWUsdGhpcy5zcGVjaWZpY2l0eT1TcGVjaWZpY2l0eS5jYWxjdWxhdGUodGhpcyl9ZnVuY3Rpb24gU2VsZWN0b3JQYXJ0KGUsdCxuLHIsaSl7U3ludGF4VW5pdC5jYWxsKHRoaXMsbixyLGksUGFyc2VyLlNFTEVDVE9SX1BBUlRfVFlQRSksdGhpcy5lbGVtZW50TmFtZT1lLHRoaXMubW9kaWZpZXJzPXR9ZnVuY3Rpb24gU2VsZWN0b3JTdWJQYXJ0KGUsdCxuLHIpe1N5bnRheFVuaXQuY2FsbCh0aGlzLGUsbixyLFBhcnNlci5TRUxFQ1RPUl9TVUJfUEFSVF9UWVBFKSx0aGlzLnR5cGU9dCx0aGlzLmFyZ3M9W119ZnVuY3Rpb24gU3BlY2lmaWNpdHkoZSx0LG4scil7dGhpcy5hPWUsdGhpcy5iPXQsdGhpcy5jPW4sdGhpcy5kPXJ9ZnVuY3Rpb24gaXNIZXhEaWdpdChlKXtyZXR1cm4gZSE9PW51bGwmJmgudGVzdChlKX1mdW5jdGlvbiBpc0RpZ2l0KGUpe3JldHVybiBlIT09bnVsbCYmL1xkLy50ZXN0KGUpfWZ1bmN0aW9uIGlzV2hpdGVzcGFjZShlKXtyZXR1cm4gZSE9PW51bGwmJi9ccy8udGVzdChlKX1mdW5jdGlvbiBpc05ld0xpbmUoZSl7cmV0dXJuIGUhPT1udWxsJiZubC50ZXN0KGUpfWZ1bmN0aW9uIGlzTmFtZVN0YXJ0KGUpe3JldHVybiBlIT09bnVsbCYmL1thLXpfXHUwMDgwLVx1RkZGRlxcXS9pLnRlc3QoZSl9ZnVuY3Rpb24gaXNOYW1lQ2hhcihlKXtyZXR1cm4gZSE9PW51bGwmJihpc05hbWVTdGFydChlKXx8L1swLTlcLVxcXS8udGVzdChlKSl9ZnVuY3Rpb24gaXNJZGVudFN0YXJ0KGUpe3JldHVybiBlIT09bnVsbCYmKGlzTmFtZVN0YXJ0KGUpfHwvXC1cXC8udGVzdChlKSl9ZnVuY3Rpb24gbWl4KGUsdCl7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmKGVbbl09dFtuXSk7cmV0dXJuIGV9ZnVuY3Rpb24gVG9rZW5TdHJlYW0oZSl7VG9rZW5TdHJlYW1CYXNlLmNhbGwodGhpcyxlLFRva2Vucyl9ZnVuY3Rpb24gVmFsaWRhdGlvbkVycm9yKGUsdCxuKXt0aGlzLmNvbD1uLHRoaXMubGluZT10LHRoaXMubWVzc2FnZT1lfXZhciBFdmVudFRhcmdldD1wYXJzZXJsaWIudXRpbC5FdmVudFRhcmdldCxUb2tlblN0cmVhbUJhc2U9cGFyc2VybGliLnV0aWwuVG9rZW5TdHJlYW1CYXNlLFN0cmluZ1JlYWRlcj1wYXJzZXJsaWIudXRpbC5TdHJpbmdSZWFkZXIsU3ludGF4RXJyb3I9cGFyc2VybGliLnV0aWwuU3ludGF4RXJyb3IsU3ludGF4VW5pdD1wYXJzZXJsaWIudXRpbC5TeW50YXhVbml0LENvbG9ycz17YWxpY2VibHVlOiIjZjBmOGZmIixhbnRpcXVld2hpdGU6IiNmYWViZDciLGFxdWE6IiMwMGZmZmYiLGFxdWFtYXJpbmU6IiM3ZmZmZDQiLGF6dXJlOiIjZjBmZmZmIixiZWlnZToiI2Y1ZjVkYyIsYmlzcXVlOiIjZmZlNGM0IixibGFjazoiIzAwMDAwMCIsYmxhbmNoZWRhbG1vbmQ6IiNmZmViY2QiLGJsdWU6IiMwMDAwZmYiLGJsdWV2aW9sZXQ6IiM4YTJiZTIiLGJyb3duOiIjYTUyYTJhIixidXJseXdvb2Q6IiNkZWI4ODciLGNhZGV0Ymx1ZToiIzVmOWVhMCIsY2hhcnRyZXVzZToiIzdmZmYwMCIsY2hvY29sYXRlOiIjZDI2OTFlIixjb3JhbDoiI2ZmN2Y1MCIsY29ybmZsb3dlcmJsdWU6IiM2NDk1ZWQiLGNvcm5zaWxrOiIjZmZmOGRjIixjcmltc29uOiIjZGMxNDNjIixjeWFuOiIjMDBmZmZmIixkYXJrYmx1ZToiIzAwMDA4YiIsZGFya2N5YW46IiMwMDhiOGIiLGRhcmtnb2xkZW5yb2Q6IiNiODg2MGIiLGRhcmtncmF5OiIjYTlhOWE5IixkYXJrZ3JlZW46IiMwMDY0MDAiLGRhcmtraGFraToiI2JkYjc2YiIsZGFya21hZ2VudGE6IiM4YjAwOGIiLGRhcmtvbGl2ZWdyZWVuOiIjNTU2YjJmIixkYXJrb3JhbmdlOiIjZmY4YzAwIixkYXJrb3JjaGlkOiIjOTkzMmNjIixkYXJrcmVkOiIjOGIwMDAwIixkYXJrc2FsbW9uOiIjZTk5NjdhIixkYXJrc2VhZ3JlZW46IiM4ZmJjOGYiLGRhcmtzbGF0ZWJsdWU6IiM0ODNkOGIiLGRhcmtzbGF0ZWdyYXk6IiMyZjRmNGYiLGRhcmt0dXJxdW9pc2U6IiMwMGNlZDEiLGRhcmt2aW9sZXQ6IiM5NDAwZDMiLGRlZXBwaW5rOiIjZmYxNDkzIixkZWVwc2t5Ymx1ZToiIzAwYmZmZiIsZGltZ3JheToiIzY5Njk2OSIsZG9kZ2VyYmx1ZToiIzFlOTBmZiIsZmlyZWJyaWNrOiIjYjIyMjIyIixmbG9yYWx3aGl0ZToiI2ZmZmFmMCIsZm9yZXN0Z3JlZW46IiMyMjhiMjIiLGZ1Y2hzaWE6IiNmZjAwZmYiLGdhaW5zYm9ybzoiI2RjZGNkYyIsZ2hvc3R3aGl0ZToiI2Y4ZjhmZiIsZ29sZDoiI2ZmZDcwMCIsZ29sZGVucm9kOiIjZGFhNTIwIixncmF5OiIjODA4MDgwIixncmVlbjoiIzAwODAwMCIsZ3JlZW55ZWxsb3c6IiNhZGZmMmYiLGhvbmV5ZGV3OiIjZjBmZmYwIixob3RwaW5rOiIjZmY2OWI0IixpbmRpYW5yZWQ6IiNjZDVjNWMiLGluZGlnbzoiIzRiMDA4MiIsaXZvcnk6IiNmZmZmZjAiLGtoYWtpOiIjZjBlNjhjIixsYXZlbmRlcjoiI2U2ZTZmYSIsbGF2ZW5kZXJibHVzaDoiI2ZmZjBmNSIsbGF3bmdyZWVuOiIjN2NmYzAwIixsZW1vbmNoaWZmb246IiNmZmZhY2QiLGxpZ2h0Ymx1ZToiI2FkZDhlNiIsbGlnaHRjb3JhbDoiI2YwODA4MCIsbGlnaHRjeWFuOiIjZTBmZmZmIixsaWdodGdvbGRlbnJvZHllbGxvdzoiI2ZhZmFkMiIsbGlnaHRncmF5OiIjZDNkM2QzIixsaWdodGdyZWVuOiIjOTBlZTkwIixsaWdodHBpbms6IiNmZmI2YzEiLGxpZ2h0c2FsbW9uOiIjZmZhMDdhIixsaWdodHNlYWdyZWVuOiIjMjBiMmFhIixsaWdodHNreWJsdWU6IiM4N2NlZmEiLGxpZ2h0c2xhdGVncmF5OiIjNzc4ODk5IixsaWdodHN0ZWVsYmx1ZToiI2IwYzRkZSIsbGlnaHR5ZWxsb3c6IiNmZmZmZTAiLGxpbWU6IiMwMGZmMDAiLGxpbWVncmVlbjoiIzMyY2QzMiIsbGluZW46IiNmYWYwZTYiLG1hZ2VudGE6IiNmZjAwZmYiLG1hcm9vbjoiIzgwMDAwMCIsbWVkaXVtYXF1YW1hcmluZToiIzY2Y2RhYSIsbWVkaXVtYmx1ZToiIzAwMDBjZCIsbWVkaXVtb3JjaGlkOiIjYmE1NWQzIixtZWRpdW1wdXJwbGU6IiM5MzcwZDgiLG1lZGl1bXNlYWdyZWVuOiIjM2NiMzcxIixtZWRpdW1zbGF0ZWJsdWU6IiM3YjY4ZWUiLG1lZGl1bXNwcmluZ2dyZWVuOiIjMDBmYTlhIixtZWRpdW10dXJxdW9pc2U6IiM0OGQxY2MiLG1lZGl1bXZpb2xldHJlZDoiI2M3MTU4NSIsbWlkbmlnaHRibHVlOiIjMTkxOTcwIixtaW50Y3JlYW06IiNmNWZmZmEiLG1pc3R5cm9zZToiI2ZmZTRlMSIsbW9jY2FzaW46IiNmZmU0YjUiLG5hdmFqb3doaXRlOiIjZmZkZWFkIixuYXZ5OiIjMDAwMDgwIixvbGRsYWNlOiIjZmRmNWU2IixvbGl2ZToiIzgwODAwMCIsb2xpdmVkcmFiOiIjNmI4ZTIzIixvcmFuZ2U6IiNmZmE1MDAiLG9yYW5nZXJlZDoiI2ZmNDUwMCIsb3JjaGlkOiIjZGE3MGQ2IixwYWxlZ29sZGVucm9kOiIjZWVlOGFhIixwYWxlZ3JlZW46IiM5OGZiOTgiLHBhbGV0dXJxdW9pc2U6IiNhZmVlZWUiLHBhbGV2aW9sZXRyZWQ6IiNkODcwOTMiLHBhcGF5YXdoaXA6IiNmZmVmZDUiLHBlYWNocHVmZjoiI2ZmZGFiOSIscGVydToiI2NkODUzZiIscGluazoiI2ZmYzBjYiIscGx1bToiI2RkYTBkZCIscG93ZGVyYmx1ZToiI2IwZTBlNiIscHVycGxlOiIjODAwMDgwIixyZWQ6IiNmZjAwMDAiLHJvc3licm93bjoiI2JjOGY4ZiIscm95YWxibHVlOiIjNDE2OWUxIixzYWRkbGVicm93bjoiIzhiNDUxMyIsc2FsbW9uOiIjZmE4MDcyIixzYW5keWJyb3duOiIjZjRhNDYwIixzZWFncmVlbjoiIzJlOGI1NyIsc2Vhc2hlbGw6IiNmZmY1ZWUiLHNpZW5uYToiI2EwNTIyZCIsc2lsdmVyOiIjYzBjMGMwIixza3libHVlOiIjODdjZWViIixzbGF0ZWJsdWU6IiM2YTVhY2QiLHNsYXRlZ3JheToiIzcwODA5MCIsc25vdzoiI2ZmZmFmYSIsc3ByaW5nZ3JlZW46IiMwMGZmN2YiLHN0ZWVsYmx1ZToiIzQ2ODJiNCIsdGFuOiIjZDJiNDhjIix0ZWFsOiIjMDA4MDgwIix0aGlzdGxlOiIjZDhiZmQ4Iix0b21hdG86IiNmZjYzNDciLHR1cnF1b2lzZToiIzQwZTBkMCIsdmlvbGV0OiIjZWU4MmVlIix3aGVhdDoiI2Y1ZGViMyIsd2hpdGU6IiNmZmZmZmYiLHdoaXRlc21va2U6IiNmNWY1ZjUiLHllbGxvdzoiI2ZmZmYwMCIseWVsbG93Z3JlZW46IiM5YWNkMzIifTtDb21iaW5hdG9yLnByb3RvdHlwZT1uZXcgU3ludGF4VW5pdCxDb21iaW5hdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1Db21iaW5hdG9yLE1lZGlhRmVhdHVyZS5wcm90b3R5cGU9bmV3IFN5bnRheFVuaXQsTWVkaWFGZWF0dXJlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1NZWRpYUZlYXR1cmUsTWVkaWFRdWVyeS5wcm90b3R5cGU9bmV3IFN5bnRheFVuaXQsTWVkaWFRdWVyeS5wcm90b3R5cGUuY29uc3RydWN0b3I9TWVkaWFRdWVyeSxQYXJzZXIuREVGQVVMVF9UWVBFPTAsUGFyc2VyLkNPTUJJTkFUT1JfVFlQRT0xLFBhcnNlci5NRURJQV9GRUFUVVJFX1RZUEU9MixQYXJzZXIuTUVESUFfUVVFUllfVFlQRT0zLFBhcnNlci5QUk9QRVJUWV9OQU1FX1RZUEU9NCxQYXJzZXIuUFJPUEVSVFlfVkFMVUVfVFlQRT01LFBhcnNlci5QUk9QRVJUWV9WQUxVRV9QQVJUX1RZUEU9NixQYXJzZXIuU0VMRUNUT1JfVFlQRT03LFBhcnNlci5TRUxFQ1RPUl9QQVJUX1RZUEU9OCxQYXJzZXIuU0VMRUNUT1JfU1VCX1BBUlRfVFlQRT05LFBhcnNlci5wcm90b3R5cGU9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgRXZlbnRUYXJnZXQsdCxuPXtjb25zdHJ1Y3RvcjpQYXJzZXIsREVGQVVMVF9UWVBFOjAsQ09NQklOQVRPUl9UWVBFOjEsTUVESUFfRkVBVFVSRV9UWVBFOjIsTUVESUFfUVVFUllfVFlQRTozLFBST1BFUlRZX05BTUVfVFlQRTo0LFBST1BFUlRZX1ZBTFVFX1RZUEU6NSxQUk9QRVJUWV9WQUxVRV9QQVJUX1RZUEU6NixTRUxFQ1RPUl9UWVBFOjcsU0VMRUNUT1JfUEFSVF9UWVBFOjgsU0VMRUNUT1JfU1VCX1BBUlRfVFlQRTo5LF9zdHlsZXNoZWV0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdG9rZW5TdHJlYW0sdD1udWxsLG4scixpO3RoaXMuZmlyZSgic3RhcnRzdHlsZXNoZWV0IiksdGhpcy5fY2hhcnNldCgpLHRoaXMuX3NraXBDcnVmdCgpO3doaWxlKGUucGVlaygpPT1Ub2tlbnMuSU1QT1JUX1NZTSl0aGlzLl9pbXBvcnQoKSx0aGlzLl9za2lwQ3J1ZnQoKTt3aGlsZShlLnBlZWsoKT09VG9rZW5zLk5BTUVTUEFDRV9TWU0pdGhpcy5fbmFtZXNwYWNlKCksdGhpcy5fc2tpcENydWZ0KCk7aT1lLnBlZWsoKTt3aGlsZShpPlRva2Vucy5FT0Ype3RyeXtzd2l0Y2goaSl7Y2FzZSBUb2tlbnMuTUVESUFfU1lNOnRoaXMuX21lZGlhKCksdGhpcy5fc2tpcENydWZ0KCk7YnJlYWs7Y2FzZSBUb2tlbnMuUEFHRV9TWU06dGhpcy5fcGFnZSgpLHRoaXMuX3NraXBDcnVmdCgpO2JyZWFrO2Nhc2UgVG9rZW5zLkZPTlRfRkFDRV9TWU06dGhpcy5fZm9udF9mYWNlKCksdGhpcy5fc2tpcENydWZ0KCk7YnJlYWs7Y2FzZSBUb2tlbnMuS0VZRlJBTUVTX1NZTTp0aGlzLl9rZXlmcmFtZXMoKSx0aGlzLl9za2lwQ3J1ZnQoKTticmVhaztjYXNlIFRva2Vucy5VTktOT1dOX1NZTTplLmdldCgpO2lmKCEhdGhpcy5vcHRpb25zLnN0cmljdCl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIlVua25vd24gQCBydWxlLiIsZS5MVCgwKS5zdGFydExpbmUsZS5MVCgwKS5zdGFydENvbCk7dGhpcy5maXJlKHt0eXBlOiJlcnJvciIsZXJyb3I6bnVsbCxtZXNzYWdlOiJVbmtub3duIEAgcnVsZTogIitlLkxUKDApLnZhbHVlKyIuIixsaW5lOmUuTFQoMCkuc3RhcnRMaW5lLGNvbDplLkxUKDApLnN0YXJ0Q29sfSksbj0wO3doaWxlKGUuYWR2YW5jZShbVG9rZW5zLkxCUkFDRSxUb2tlbnMuUkJSQUNFXSk9PVRva2Vucy5MQlJBQ0UpbisrO3doaWxlKG4pZS5hZHZhbmNlKFtUb2tlbnMuUkJSQUNFXSksbi0tO2JyZWFrO2Nhc2UgVG9rZW5zLlM6dGhpcy5fcmVhZFdoaXRlc3BhY2UoKTticmVhaztkZWZhdWx0OmlmKCF0aGlzLl9ydWxlc2V0KCkpc3dpdGNoKGkpe2Nhc2UgVG9rZW5zLkNIQVJTRVRfU1lNOnRocm93IHI9ZS5MVCgxKSx0aGlzLl9jaGFyc2V0KCExKSxuZXcgU3ludGF4RXJyb3IoIkBjaGFyc2V0IG5vdCBhbGxvd2VkIGhlcmUuIixyLnN0YXJ0TGluZSxyLnN0YXJ0Q29sKTtjYXNlIFRva2Vucy5JTVBPUlRfU1lNOnRocm93IHI9ZS5MVCgxKSx0aGlzLl9pbXBvcnQoITEpLG5ldyBTeW50YXhFcnJvcigiQGltcG9ydCBub3QgYWxsb3dlZCBoZXJlLiIsci5zdGFydExpbmUsci5zdGFydENvbCk7Y2FzZSBUb2tlbnMuTkFNRVNQQUNFX1NZTTp0aHJvdyByPWUuTFQoMSksdGhpcy5fbmFtZXNwYWNlKCExKSxuZXcgU3ludGF4RXJyb3IoIkBuYW1lc3BhY2Ugbm90IGFsbG93ZWQgaGVyZS4iLHIuc3RhcnRMaW5lLHIuc3RhcnRDb2wpO2RlZmF1bHQ6ZS5nZXQoKSx0aGlzLl91bmV4cGVjdGVkVG9rZW4oZS50b2tlbigpKX19fWNhdGNoKHMpe2lmKCEocyBpbnN0YW5jZW9mIFN5bnRheEVycm9yJiYhdGhpcy5vcHRpb25zLnN0cmljdCkpdGhyb3cgczt0aGlzLmZpcmUoe3R5cGU6ImVycm9yIixlcnJvcjpzLG1lc3NhZ2U6cy5tZXNzYWdlLGxpbmU6cy5saW5lLGNvbDpzLmNvbH0pfWk9ZS5wZWVrKCl9aSE9VG9rZW5zLkVPRiYmdGhpcy5fdW5leHBlY3RlZFRva2VuKGUudG9rZW4oKSksdGhpcy5maXJlKCJlbmRzdHlsZXNoZWV0Iil9LF9jaGFyc2V0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3Rva2VuU3RyZWFtLG4scixpLHM7dC5tYXRjaChUb2tlbnMuQ0hBUlNFVF9TWU0pJiYoaT10LnRva2VuKCkuc3RhcnRMaW5lLHM9dC50b2tlbigpLnN0YXJ0Q29sLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksdC5tdXN0TWF0Y2goVG9rZW5zLlNUUklORykscj10LnRva2VuKCksbj1yLnZhbHVlLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksdC5tdXN0TWF0Y2goVG9rZW5zLlNFTUlDT0xPTiksZSE9PSExJiZ0aGlzLmZpcmUoe3R5cGU6ImNoYXJzZXQiLGNoYXJzZXQ6bixsaW5lOmksY29sOnN9KSl9LF9pbXBvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fdG9rZW5TdHJlYW0sbixyLGkscz1bXTt0Lm11c3RNYXRjaChUb2tlbnMuSU1QT1JUX1NZTSksaT10LnRva2VuKCksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSx0Lm11c3RNYXRjaChbVG9rZW5zLlNUUklORyxUb2tlbnMuVVJJXSkscj10LnRva2VuKCkudmFsdWUucmVwbGFjZSgvKD86dXJsXCgpP1siJ10oW14iJ10rKVsiJ11cKT8vLCIkMSIpLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCkscz10aGlzLl9tZWRpYV9xdWVyeV9saXN0KCksdC5tdXN0TWF0Y2goVG9rZW5zLlNFTUlDT0xPTiksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxlIT09ITEmJnRoaXMuZmlyZSh7dHlwZToiaW1wb3J0Iix1cmk6cixtZWRpYTpzLGxpbmU6aS5zdGFydExpbmUsY29sOmkuc3RhcnRDb2x9KX0sX25hbWVzcGFjZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl90b2tlblN0cmVhbSxuLHIsaSxzO3QubXVzdE1hdGNoKFRva2Vucy5OQU1FU1BBQ0VfU1lNKSxuPXQudG9rZW4oKS5zdGFydExpbmUscj10LnRva2VuKCkuc3RhcnRDb2wsdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSx0Lm1hdGNoKFRva2Vucy5JREVOVCkmJihpPXQudG9rZW4oKS52YWx1ZSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpKSx0Lm11c3RNYXRjaChbVG9rZW5zLlNUUklORyxUb2tlbnMuVVJJXSkscz10LnRva2VuKCkudmFsdWUucmVwbGFjZSgvKD86dXJsXCgpP1siJ10oW14iJ10rKVsiJ11cKT8vLCIkMSIpLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksdC5tdXN0TWF0Y2goVG9rZW5zLlNFTUlDT0xPTiksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxlIT09ITEmJnRoaXMuZmlyZSh7dHlwZToibmFtZXNwYWNlIixwcmVmaXg6aSx1cmk6cyxsaW5lOm4sY29sOnJ9KX0sX21lZGlhOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdG9rZW5TdHJlYW0sdCxuLHI7ZS5tdXN0TWF0Y2goVG9rZW5zLk1FRElBX1NZTSksdD1lLnRva2VuKCkuc3RhcnRMaW5lLG49ZS50b2tlbigpLnN0YXJ0Q29sLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCkscj10aGlzLl9tZWRpYV9xdWVyeV9saXN0KCksZS5tdXN0TWF0Y2goVG9rZW5zLkxCUkFDRSksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSx0aGlzLmZpcmUoe3R5cGU6InN0YXJ0bWVkaWEiLG1lZGlhOnIsbGluZTp0LGNvbDpufSk7Zm9yKDs7KWlmKGUucGVlaygpPT1Ub2tlbnMuUEFHRV9TWU0pdGhpcy5fcGFnZSgpO2Vsc2UgaWYoIXRoaXMuX3J1bGVzZXQoKSlicmVhaztlLm11c3RNYXRjaChUb2tlbnMuUkJSQUNFKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLHRoaXMuZmlyZSh7dHlwZToiZW5kbWVkaWEiLG1lZGlhOnIsbGluZTp0LGNvbDpufSl9LF9tZWRpYV9xdWVyeV9saXN0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdG9rZW5TdHJlYW0sdD1bXTt0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLChlLnBlZWsoKT09VG9rZW5zLklERU5UfHxlLnBlZWsoKT09VG9rZW5zLkxQQVJFTikmJnQucHVzaCh0aGlzLl9tZWRpYV9xdWVyeSgpKTt3aGlsZShlLm1hdGNoKFRva2Vucy5DT01NQSkpdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSx0LnB1c2godGhpcy5fbWVkaWFfcXVlcnkoKSk7cmV0dXJuIHR9LF9tZWRpYV9xdWVyeTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtLHQ9bnVsbCxuPW51bGwscj1udWxsLGk9W107ZS5tYXRjaChUb2tlbnMuSURFTlQpJiYobj1lLnRva2VuKCkudmFsdWUudG9Mb3dlckNhc2UoKSxuIT0ib25seSImJm4hPSJub3QiPyhlLnVuZ2V0KCksbj1udWxsKTpyPWUudG9rZW4oKSksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxlLnBlZWsoKT09VG9rZW5zLklERU5UPyh0PXRoaXMuX21lZGlhX3R5cGUoKSxyPT09bnVsbCYmKHI9ZS50b2tlbigpKSk6ZS5wZWVrKCk9PVRva2Vucy5MUEFSRU4mJihyPT09bnVsbCYmKHI9ZS5MVCgxKSksaS5wdXNoKHRoaXMuX21lZGlhX2V4cHJlc3Npb24oKSkpO2lmKHQ9PT1udWxsJiZpLmxlbmd0aD09PTApcmV0dXJuIG51bGw7dGhpcy5fcmVhZFdoaXRlc3BhY2UoKTt3aGlsZShlLm1hdGNoKFRva2Vucy5JREVOVCkpZS50b2tlbigpLnZhbHVlLnRvTG93ZXJDYXNlKCkhPSJhbmQiJiZ0aGlzLl91bmV4cGVjdGVkVG9rZW4oZS50b2tlbigpKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGkucHVzaCh0aGlzLl9tZWRpYV9leHByZXNzaW9uKCkpO3JldHVybiBuZXcgTWVkaWFRdWVyeShuLHQsaSxyLnN0YXJ0TGluZSxyLnN0YXJ0Q29sKX0sX21lZGlhX3R5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWVkaWFfZmVhdHVyZSgpfSxfbWVkaWFfZXhwcmVzc2lvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtLHQ9bnVsbCxuLHI9bnVsbDtyZXR1cm4gZS5tdXN0TWF0Y2goVG9rZW5zLkxQQVJFTiksdD10aGlzLl9tZWRpYV9mZWF0dXJlKCksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxlLm1hdGNoKFRva2Vucy5DT0xPTikmJih0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLG49ZS5MVCgxKSxyPXRoaXMuX2V4cHJlc3Npb24oKSksZS5tdXN0TWF0Y2goVG9rZW5zLlJQQVJFTiksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxuZXcgTWVkaWFGZWF0dXJlKHQscj9uZXcgU3ludGF4VW5pdChyLG4uc3RhcnRMaW5lLG4uc3RhcnRDb2wpOm51bGwpfSxfbWVkaWFfZmVhdHVyZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtO3JldHVybiBlLm11c3RNYXRjaChUb2tlbnMuSURFTlQpLFN5bnRheFVuaXQuZnJvbVRva2VuKGUudG9rZW4oKSl9LF9wYWdlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdG9rZW5TdHJlYW0sdCxuLHI9bnVsbCxpPW51bGw7ZS5tdXN0TWF0Y2goVG9rZW5zLlBBR0VfU1lNKSx0PWUudG9rZW4oKS5zdGFydExpbmUsbj1lLnRva2VuKCkuc3RhcnRDb2wsdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxlLm1hdGNoKFRva2Vucy5JREVOVCkmJihyPWUudG9rZW4oKS52YWx1ZSxyLnRvTG93ZXJDYXNlKCk9PT0iYXV0byImJnRoaXMuX3VuZXhwZWN0ZWRUb2tlbihlLnRva2VuKCkpKSxlLnBlZWsoKT09VG9rZW5zLkNPTE9OJiYoaT10aGlzLl9wc2V1ZG9fcGFnZSgpKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLHRoaXMuZmlyZSh7dHlwZToic3RhcnRwYWdlIixpZDpyLHBzZXVkbzppLGxpbmU6dCxjb2w6bn0pLHRoaXMuX3JlYWREZWNsYXJhdGlvbnMoITAsITApLHRoaXMuZmlyZSh7dHlwZToiZW5kcGFnZSIsaWQ6cixwc2V1ZG86aSxsaW5lOnQsY29sOm59KX0sX21hcmdpbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtLHQsbixyPXRoaXMuX21hcmdpbl9zeW0oKTtyZXR1cm4gcj8odD1lLnRva2VuKCkuc3RhcnRMaW5lLG49ZS50b2tlbigpLnN0YXJ0Q29sLHRoaXMuZmlyZSh7dHlwZToic3RhcnRwYWdlbWFyZ2luIixtYXJnaW46cixsaW5lOnQsY29sOm59KSx0aGlzLl9yZWFkRGVjbGFyYXRpb25zKCEwKSx0aGlzLmZpcmUoe3R5cGU6ImVuZHBhZ2VtYXJnaW4iLG1hcmdpbjpyLGxpbmU6dCxjb2w6bn0pLCEwKTohMX0sX21hcmdpbl9zeW06ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90b2tlblN0cmVhbTtyZXR1cm4gZS5tYXRjaChbVG9rZW5zLlRPUExFRlRDT1JORVJfU1lNLFRva2Vucy5UT1BMRUZUX1NZTSxUb2tlbnMuVE9QQ0VOVEVSX1NZTSxUb2tlbnMuVE9QUklHSFRfU1lNLFRva2Vucy5UT1BSSUdIVENPUk5FUl9TWU0sVG9rZW5zLkJPVFRPTUxFRlRDT1JORVJfU1lNLFRva2Vucy5CT1RUT01MRUZUX1NZTSxUb2tlbnMuQk9UVE9NQ0VOVEVSX1NZTSxUb2tlbnMuQk9UVE9NUklHSFRfU1lNLFRva2Vucy5CT1RUT01SSUdIVENPUk5FUl9TWU0sVG9rZW5zLkxFRlRUT1BfU1lNLFRva2Vucy5MRUZUTUlERExFX1NZTSxUb2tlbnMuTEVGVEJPVFRPTV9TWU0sVG9rZW5zLlJJR0hUVE9QX1NZTSxUb2tlbnMuUklHSFRNSURETEVfU1lNLFRva2Vucy5SSUdIVEJPVFRPTV9TWU1dKT9TeW50YXhVbml0LmZyb21Ub2tlbihlLnRva2VuKCkpOm51bGx9LF9wc2V1ZG9fcGFnZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtO3JldHVybiBlLm11c3RNYXRjaChUb2tlbnMuQ09MT04pLGUubXVzdE1hdGNoKFRva2Vucy5JREVOVCksZS50b2tlbigpLnZhbHVlfSxfZm9udF9mYWNlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdG9rZW5TdHJlYW0sdCxuO2UubXVzdE1hdGNoKFRva2Vucy5GT05UX0ZBQ0VfU1lNKSx0PWUudG9rZW4oKS5zdGFydExpbmUsbj1lLnRva2VuKCkuc3RhcnRDb2wsdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSx0aGlzLmZpcmUoe3R5cGU6InN0YXJ0Zm9udGZhY2UiLGxpbmU6dCxjb2w6bn0pLHRoaXMuX3JlYWREZWNsYXJhdGlvbnMoITApLHRoaXMuZmlyZSh7dHlwZToiZW5kZm9udGZhY2UiLGxpbmU6dCxjb2w6bn0pfSxfb3BlcmF0b3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90b2tlblN0cmVhbSx0PW51bGw7cmV0dXJuIGUubWF0Y2goW1Rva2Vucy5TTEFTSCxUb2tlbnMuQ09NTUFdKSYmKHQ9ZS50b2tlbigpLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCkpLHQ/UHJvcGVydHlWYWx1ZVBhcnQuZnJvbVRva2VuKHQpOm51bGx9LF9jb21iaW5hdG9yOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdG9rZW5TdHJlYW0sdD1udWxsLG47cmV0dXJuIGUubWF0Y2goW1Rva2Vucy5QTFVTLFRva2Vucy5HUkVBVEVSLFRva2Vucy5USUxERV0pJiYobj1lLnRva2VuKCksdD1uZXcgQ29tYmluYXRvcihuLnZhbHVlLG4uc3RhcnRMaW5lLG4uc3RhcnRDb2wpLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCkpLHR9LF91bmFyeV9vcGVyYXRvcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtO3JldHVybiBlLm1hdGNoKFtUb2tlbnMuTUlOVVMsVG9rZW5zLlBMVVNdKT9lLnRva2VuKCkudmFsdWU6bnVsbH0sX3Byb3BlcnR5OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdG9rZW5TdHJlYW0sdD1udWxsLG49bnVsbCxyLGkscyxvO3JldHVybiBlLnBlZWsoKT09VG9rZW5zLlNUQVImJnRoaXMub3B0aW9ucy5zdGFySGFjayYmKGUuZ2V0KCksaT1lLnRva2VuKCksbj1pLnZhbHVlLHM9aS5zdGFydExpbmUsbz1pLnN0YXJ0Q29sKSxlLm1hdGNoKFRva2Vucy5JREVOVCkmJihpPWUudG9rZW4oKSxyPWkudmFsdWUsci5jaGFyQXQoMCk9PSJfIiYmdGhpcy5vcHRpb25zLnVuZGVyc2NvcmVIYWNrJiYobj0iXyIscj1yLnN1YnN0cmluZygxKSksdD1uZXcgUHJvcGVydHlOYW1lKHIsbixzfHxpLnN0YXJ0TGluZSxvfHxpLnN0YXJ0Q29sKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpKSx0fSxfcnVsZXNldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtLHQsbjt0cnl7bj10aGlzLl9zZWxlY3RvcnNfZ3JvdXAoKX1jYXRjaChyKXtpZihyIGluc3RhbmNlb2YgU3ludGF4RXJyb3ImJiF0aGlzLm9wdGlvbnMuc3RyaWN0KXt0aGlzLmZpcmUoe3R5cGU6ImVycm9yIixlcnJvcjpyLG1lc3NhZ2U6ci5tZXNzYWdlLGxpbmU6ci5saW5lLGNvbDpyLmNvbH0pLHQ9ZS5hZHZhbmNlKFtUb2tlbnMuUkJSQUNFXSk7aWYodCE9VG9rZW5zLlJCUkFDRSl0aHJvdyByO3JldHVybiEwfXRocm93IHJ9cmV0dXJuIG4mJih0aGlzLmZpcmUoe3R5cGU6InN0YXJ0cnVsZSIsc2VsZWN0b3JzOm4sbGluZTpuWzBdLmxpbmUsY29sOm5bMF0uY29sfSksdGhpcy5fcmVhZERlY2xhcmF0aW9ucyghMCksdGhpcy5maXJlKHt0eXBlOiJlbmRydWxlIixzZWxlY3RvcnM6bixsaW5lOm5bMF0ubGluZSxjb2w6blswXS5jb2x9KSksbn0sX3NlbGVjdG9yc19ncm91cDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtLHQ9W10sbjtuPXRoaXMuX3NlbGVjdG9yKCk7aWYobiE9PW51bGwpe3QucHVzaChuKTt3aGlsZShlLm1hdGNoKFRva2Vucy5DT01NQSkpdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxuPXRoaXMuX3NlbGVjdG9yKCksbiE9PW51bGw/dC5wdXNoKG4pOnRoaXMuX3VuZXhwZWN0ZWRUb2tlbihlLkxUKDEpKX1yZXR1cm4gdC5sZW5ndGg/dDpudWxsfSxfc2VsZWN0b3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90b2tlblN0cmVhbSx0PVtdLG49bnVsbCxyPW51bGwsaT1udWxsO249dGhpcy5fc2ltcGxlX3NlbGVjdG9yX3NlcXVlbmNlKCk7aWYobj09PW51bGwpcmV0dXJuIG51bGw7dC5wdXNoKG4pO2Rve3I9dGhpcy5fY29tYmluYXRvcigpO2lmKHIhPT1udWxsKXQucHVzaChyKSxuPXRoaXMuX3NpbXBsZV9zZWxlY3Rvcl9zZXF1ZW5jZSgpLG49PT1udWxsP3RoaXMuX3VuZXhwZWN0ZWRUb2tlbih0aGlzLkxUKDEpKTp0LnB1c2gobik7ZWxzZXtpZighdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSlicmVhaztpPW5ldyBDb21iaW5hdG9yKGUudG9rZW4oKS52YWx1ZSxlLnRva2VuKCkuc3RhcnRMaW5lLGUudG9rZW4oKS5zdGFydENvbCkscj10aGlzLl9jb21iaW5hdG9yKCksbj10aGlzLl9zaW1wbGVfc2VsZWN0b3Jfc2VxdWVuY2UoKSxuPT09bnVsbD9yIT09bnVsbCYmdGhpcy5fdW5leHBlY3RlZFRva2VuKGUuTFQoMSkpOihyIT09bnVsbD90LnB1c2gocik6dC5wdXNoKGkpLHQucHVzaChuKSl9fXdoaWxlKCEwKTtyZXR1cm4gbmV3IFNlbGVjdG9yKHQsdFswXS5saW5lLHRbMF0uY29sKX0sX3NpbXBsZV9zZWxlY3Rvcl9zZXF1ZW5jZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtLHQ9bnVsbCxuPVtdLHI9IiIsaT1bZnVuY3Rpb24oKXtyZXR1cm4gZS5tYXRjaChUb2tlbnMuSEFTSCk/bmV3IFNlbGVjdG9yU3ViUGFydChlLnRva2VuKCkudmFsdWUsImlkIixlLnRva2VuKCkuc3RhcnRMaW5lLGUudG9rZW4oKS5zdGFydENvbCk6bnVsbH0sdGhpcy5fY2xhc3MsdGhpcy5fYXR0cmliLHRoaXMuX3BzZXVkbyx0aGlzLl9uZWdhdGlvbl0scz0wLG89aS5sZW5ndGgsdT1udWxsLGE9ITEsZixsO2Y9ZS5MVCgxKS5zdGFydExpbmUsbD1lLkxUKDEpLnN0YXJ0Q29sLHQ9dGhpcy5fdHlwZV9zZWxlY3RvcigpLHR8fCh0PXRoaXMuX3VuaXZlcnNhbCgpKSx0IT09bnVsbCYmKHIrPXQpO2Zvcig7Oyl7aWYoZS5wZWVrKCk9PT1Ub2tlbnMuUylicmVhazt3aGlsZShzPG8mJnU9PT1udWxsKXU9aVtzKytdLmNhbGwodGhpcyk7aWYodT09PW51bGwpe2lmKHI9PT0iIilyZXR1cm4gbnVsbDticmVha31zPTAsbi5wdXNoKHUpLHIrPXUudG9TdHJpbmcoKSx1PW51bGx9cmV0dXJuIHIhPT0iIj9uZXcgU2VsZWN0b3JQYXJ0KHQsbixyLGYsbCk6bnVsbH0sX3R5cGVfc2VsZWN0b3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90b2tlblN0cmVhbSx0PXRoaXMuX25hbWVzcGFjZV9wcmVmaXgoKSxuPXRoaXMuX2VsZW1lbnRfbmFtZSgpO3JldHVybiBuPyh0JiYobi50ZXh0PXQrbi50ZXh0LG4uY29sLT10Lmxlbmd0aCksbik6KHQmJihlLnVuZ2V0KCksdC5sZW5ndGg+MSYmZS51bmdldCgpKSxudWxsKX0sX2NsYXNzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdG9rZW5TdHJlYW0sdDtyZXR1cm4gZS5tYXRjaChUb2tlbnMuRE9UKT8oZS5tdXN0TWF0Y2goVG9rZW5zLklERU5UKSx0PWUudG9rZW4oKSxuZXcgU2VsZWN0b3JTdWJQYXJ0KCIuIit0LnZhbHVlLCJjbGFzcyIsdC5zdGFydExpbmUsdC5zdGFydENvbC0xKSk6bnVsbH0sX2VsZW1lbnRfbmFtZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtLHQ7cmV0dXJuIGUubWF0Y2goVG9rZW5zLklERU5UKT8odD1lLnRva2VuKCksbmV3IFNlbGVjdG9yU3ViUGFydCh0LnZhbHVlLCJlbGVtZW50TmFtZSIsdC5zdGFydExpbmUsdC5zdGFydENvbCkpOm51bGx9LF9uYW1lc3BhY2VfcHJlZml4OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdG9rZW5TdHJlYW0sdD0iIjtpZihlLkxBKDEpPT09VG9rZW5zLlBJUEV8fGUuTEEoMik9PT1Ub2tlbnMuUElQRSllLm1hdGNoKFtUb2tlbnMuSURFTlQsVG9rZW5zLlNUQVJdKSYmKHQrPWUudG9rZW4oKS52YWx1ZSksZS5tdXN0TWF0Y2goVG9rZW5zLlBJUEUpLHQrPSJ8IjtyZXR1cm4gdC5sZW5ndGg/dDpudWxsfSxfdW5pdmVyc2FsOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdG9rZW5TdHJlYW0sdD0iIixuO3JldHVybiBuPXRoaXMuX25hbWVzcGFjZV9wcmVmaXgoKSxuJiYodCs9biksZS5tYXRjaChUb2tlbnMuU1RBUikmJih0Kz0iKiIpLHQubGVuZ3RoP3Q6bnVsbH0sX2F0dHJpYjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtLHQ9bnVsbCxuLHI7cmV0dXJuIGUubWF0Y2goVG9rZW5zLkxCUkFDS0VUKT8ocj1lLnRva2VuKCksdD1yLnZhbHVlLHQrPXRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksbj10aGlzLl9uYW1lc3BhY2VfcHJlZml4KCksbiYmKHQrPW4pLGUubXVzdE1hdGNoKFRva2Vucy5JREVOVCksdCs9ZS50b2tlbigpLnZhbHVlLHQrPXRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksZS5tYXRjaChbVG9rZW5zLlBSRUZJWE1BVENILFRva2Vucy5TVUZGSVhNQVRDSCxUb2tlbnMuU1VCU1RSSU5HTUFUQ0gsVG9rZW5zLkVRVUFMUyxUb2tlbnMuSU5DTFVERVMsVG9rZW5zLkRBU0hNQVRDSF0pJiYodCs9ZS50b2tlbigpLnZhbHVlLHQrPXRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksZS5tdXN0TWF0Y2goW1Rva2Vucy5JREVOVCxUb2tlbnMuU1RSSU5HXSksdCs9ZS50b2tlbigpLnZhbHVlLHQrPXRoaXMuX3JlYWRXaGl0ZXNwYWNlKCkpLGUubXVzdE1hdGNoKFRva2Vucy5SQlJBQ0tFVCksbmV3IFNlbGVjdG9yU3ViUGFydCh0KyJdIiwiYXR0cmlidXRlIixyLnN0YXJ0TGluZSxyLnN0YXJ0Q29sKSk6bnVsbH0sX3BzZXVkbzpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtLHQ9bnVsbCxuPSI6IixyLGk7cmV0dXJuIGUubWF0Y2goVG9rZW5zLkNPTE9OKSYmKGUubWF0Y2goVG9rZW5zLkNPTE9OKSYmKG4rPSI6IiksZS5tYXRjaChUb2tlbnMuSURFTlQpPyh0PWUudG9rZW4oKS52YWx1ZSxyPWUudG9rZW4oKS5zdGFydExpbmUsaT1lLnRva2VuKCkuc3RhcnRDb2wtbi5sZW5ndGgpOmUucGVlaygpPT1Ub2tlbnMuRlVOQ1RJT04mJihyPWUuTFQoMSkuc3RhcnRMaW5lLGk9ZS5MVCgxKS5zdGFydENvbC1uLmxlbmd0aCx0PXRoaXMuX2Z1bmN0aW9uYWxfcHNldWRvKCkpLHQmJih0PW5ldyBTZWxlY3RvclN1YlBhcnQobit0LCJwc2V1ZG8iLHIsaSkpKSx0fSxfZnVuY3Rpb25hbF9wc2V1ZG86ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90b2tlblN0cmVhbSx0PW51bGw7cmV0dXJuIGUubWF0Y2goVG9rZW5zLkZVTkNUSU9OKSYmKHQ9ZS50b2tlbigpLnZhbHVlLHQrPXRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksdCs9dGhpcy5fZXhwcmVzc2lvbigpLGUubXVzdE1hdGNoKFRva2Vucy5SUEFSRU4pLHQrPSIpIiksdH0sX2V4cHJlc3Npb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90b2tlblN0cmVhbSx0PSIiO3doaWxlKGUubWF0Y2goW1Rva2Vucy5QTFVTLFRva2Vucy5NSU5VUyxUb2tlbnMuRElNRU5TSU9OLFRva2Vucy5OVU1CRVIsVG9rZW5zLlNUUklORyxUb2tlbnMuSURFTlQsVG9rZW5zLkxFTkdUSCxUb2tlbnMuRlJFUSxUb2tlbnMuQU5HTEUsVG9rZW5zLlRJTUUsVG9rZW5zLlJFU09MVVRJT05dKSl0Kz1lLnRva2VuKCkudmFsdWUsdCs9dGhpcy5fcmVhZFdoaXRlc3BhY2UoKTtyZXR1cm4gdC5sZW5ndGg/dDpudWxsfSxfbmVnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90b2tlblN0cmVhbSx0LG4scj0iIixpLHM9bnVsbDtyZXR1cm4gZS5tYXRjaChUb2tlbnMuTk9UKSYmKHI9ZS50b2tlbigpLnZhbHVlLHQ9ZS50b2tlbigpLnN0YXJ0TGluZSxuPWUudG9rZW4oKS5zdGFydENvbCxyKz10aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGk9dGhpcy5fbmVnYXRpb25fYXJnKCkscis9aSxyKz10aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGUubWF0Y2goVG9rZW5zLlJQQVJFTikscis9ZS50b2tlbigpLnZhbHVlLHM9bmV3IFNlbGVjdG9yU3ViUGFydChyLCJub3QiLHQsbikscy5hcmdzLnB1c2goaSkpLHN9LF9uZWdhdGlvbl9hcmc6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90b2tlblN0cmVhbSx0PVt0aGlzLl90eXBlX3NlbGVjdG9yLHRoaXMuX3VuaXZlcnNhbCxmdW5jdGlvbigpe3JldHVybiBlLm1hdGNoKFRva2Vucy5IQVNIKT9uZXcgU2VsZWN0b3JTdWJQYXJ0KGUudG9rZW4oKS52YWx1ZSwiaWQiLGUudG9rZW4oKS5zdGFydExpbmUsZS50b2tlbigpLnN0YXJ0Q29sKTpudWxsfSx0aGlzLl9jbGFzcyx0aGlzLl9hdHRyaWIsdGhpcy5fcHNldWRvXSxuPW51bGwscj0wLGk9dC5sZW5ndGgscyxvLHUsYTtvPWUuTFQoMSkuc3RhcnRMaW5lLHU9ZS5MVCgxKS5zdGFydENvbDt3aGlsZShyPGkmJm49PT1udWxsKW49dFtyXS5jYWxsKHRoaXMpLHIrKztyZXR1cm4gbj09PW51bGwmJnRoaXMuX3VuZXhwZWN0ZWRUb2tlbihlLkxUKDEpKSxuLnR5cGU9PSJlbGVtZW50TmFtZSI/YT1uZXcgU2VsZWN0b3JQYXJ0KG4sW10sbi50b1N0cmluZygpLG8sdSk6YT1uZXcgU2VsZWN0b3JQYXJ0KG51bGwsW25dLG4udG9TdHJpbmcoKSxvLHUpLGF9LF9kZWNsYXJhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtLHQ9bnVsbCxuPW51bGwscj1udWxsLGk9bnVsbCxzPW51bGw7dD10aGlzLl9wcm9wZXJ0eSgpO2lmKHQhPT1udWxsKXtlLm11c3RNYXRjaChUb2tlbnMuQ09MT04pLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksbj10aGlzLl9leHByKCksKCFufHxuLmxlbmd0aD09PTApJiZ0aGlzLl91bmV4cGVjdGVkVG9rZW4oZS5MVCgxKSkscj10aGlzLl9wcmlvKCk7dHJ5e3RoaXMuX3ZhbGlkYXRlUHJvcGVydHkodCxuKX1jYXRjaChvKXtzPW99cmV0dXJuIHRoaXMuZmlyZSh7dHlwZToicHJvcGVydHkiLHByb3BlcnR5OnQsdmFsdWU6bixpbXBvcnRhbnQ6cixsaW5lOnQubGluZSxjb2w6dC5jb2wsaW52YWxpZDpzfSksITB9cmV0dXJuITF9LF9wcmlvOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdG9rZW5TdHJlYW0sdD1lLm1hdGNoKFRva2Vucy5JTVBPUlRBTlRfU1lNKTtyZXR1cm4gdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSx0fSxfZXhwcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtLHQ9W10sbj1udWxsLHI9bnVsbDtuPXRoaXMuX3Rlcm0oKTtpZihuIT09bnVsbCl7dC5wdXNoKG4pO2Rve3I9dGhpcy5fb3BlcmF0b3IoKSxyJiZ0LnB1c2gociksbj10aGlzLl90ZXJtKCk7aWYobj09PW51bGwpYnJlYWs7dC5wdXNoKG4pfXdoaWxlKCEwKX1yZXR1cm4gdC5sZW5ndGg+MD9uZXcgUHJvcGVydHlWYWx1ZSh0LHRbMF0ubGluZSx0WzBdLmNvbCk6bnVsbH0sX3Rlcm06ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90b2tlblN0cmVhbSx0PW51bGwsbj1udWxsLHIsaSxzO3JldHVybiB0PXRoaXMuX3VuYXJ5X29wZXJhdG9yKCksdCE9PW51bGwmJihpPWUudG9rZW4oKS5zdGFydExpbmUscz1lLnRva2VuKCkuc3RhcnRDb2wpLGUucGVlaygpPT1Ub2tlbnMuSUVfRlVOQ1RJT04mJnRoaXMub3B0aW9ucy5pZUZpbHRlcnM/KG49dGhpcy5faWVfZnVuY3Rpb24oKSx0PT09bnVsbCYmKGk9ZS50b2tlbigpLnN0YXJ0TGluZSxzPWUudG9rZW4oKS5zdGFydENvbCkpOmUubWF0Y2goW1Rva2Vucy5OVU1CRVIsVG9rZW5zLlBFUkNFTlRBR0UsVG9rZW5zLkxFTkdUSCxUb2tlbnMuQU5HTEUsVG9rZW5zLlRJTUUsVG9rZW5zLkZSRVEsVG9rZW5zLlNUUklORyxUb2tlbnMuSURFTlQsVG9rZW5zLlVSSSxUb2tlbnMuVU5JQ09ERV9SQU5HRV0pPyhuPWUudG9rZW4oKS52YWx1ZSx0PT09bnVsbCYmKGk9ZS50b2tlbigpLnN0YXJ0TGluZSxzPWUudG9rZW4oKS5zdGFydENvbCksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSk6KHI9dGhpcy5faGV4Y29sb3IoKSxyPT09bnVsbD8odD09PW51bGwmJihpPWUuTFQoMSkuc3RhcnRMaW5lLHM9ZS5MVCgxKS5zdGFydENvbCksbj09PW51bGwmJihlLkxBKDMpPT1Ub2tlbnMuRVFVQUxTJiZ0aGlzLm9wdGlvbnMuaWVGaWx0ZXJzP249dGhpcy5faWVfZnVuY3Rpb24oKTpuPXRoaXMuX2Z1bmN0aW9uKCkpKToobj1yLnZhbHVlLHQ9PT1udWxsJiYoaT1yLnN0YXJ0TGluZSxzPXIuc3RhcnRDb2wpKSksbiE9PW51bGw/bmV3IFByb3BlcnR5VmFsdWVQYXJ0KHQhPT1udWxsP3QrbjpuLGkscyk6bnVsbH0sX2Z1bmN0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdG9rZW5TdHJlYW0sdD1udWxsLG49bnVsbCxyO2lmKGUubWF0Y2goVG9rZW5zLkZVTkNUSU9OKSl7dD1lLnRva2VuKCkudmFsdWUsdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxuPXRoaXMuX2V4cHIoKSx0Kz1uO2lmKHRoaXMub3B0aW9ucy5pZUZpbHRlcnMmJmUucGVlaygpPT1Ub2tlbnMuRVFVQUxTKWRve3RoaXMuX3JlYWRXaGl0ZXNwYWNlKCkmJih0Kz1lLnRva2VuKCkudmFsdWUpLGUuTEEoMCk9PVRva2Vucy5DT01NQSYmKHQrPWUudG9rZW4oKS52YWx1ZSksZS5tYXRjaChUb2tlbnMuSURFTlQpLHQrPWUudG9rZW4oKS52YWx1ZSxlLm1hdGNoKFRva2Vucy5FUVVBTFMpLHQrPWUudG9rZW4oKS52YWx1ZSxyPWUucGVlaygpO3doaWxlKHIhPVRva2Vucy5DT01NQSYmciE9VG9rZW5zLlMmJnIhPVRva2Vucy5SUEFSRU4pZS5nZXQoKSx0Kz1lLnRva2VuKCkudmFsdWUscj1lLnBlZWsoKX13aGlsZShlLm1hdGNoKFtUb2tlbnMuQ09NTUEsVG9rZW5zLlNdKSk7ZS5tYXRjaChUb2tlbnMuUlBBUkVOKSx0Kz0iKSIsdGhpcy5fcmVhZFdoaXRlc3BhY2UoKX1yZXR1cm4gdH0sX2llX2Z1bmN0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdG9rZW5TdHJlYW0sdD1udWxsLG49bnVsbCxyO2lmKGUubWF0Y2goW1Rva2Vucy5JRV9GVU5DVElPTixUb2tlbnMuRlVOQ1RJT05dKSl7dD1lLnRva2VuKCkudmFsdWU7ZG97dGhpcy5fcmVhZFdoaXRlc3BhY2UoKSYmKHQrPWUudG9rZW4oKS52YWx1ZSksZS5MQSgwKT09VG9rZW5zLkNPTU1BJiYodCs9ZS50b2tlbigpLnZhbHVlKSxlLm1hdGNoKFRva2Vucy5JREVOVCksdCs9ZS50b2tlbigpLnZhbHVlLGUubWF0Y2goVG9rZW5zLkVRVUFMUyksdCs9ZS50b2tlbigpLnZhbHVlLHI9ZS5wZWVrKCk7d2hpbGUociE9VG9rZW5zLkNPTU1BJiZyIT1Ub2tlbnMuUyYmciE9VG9rZW5zLlJQQVJFTillLmdldCgpLHQrPWUudG9rZW4oKS52YWx1ZSxyPWUucGVlaygpfXdoaWxlKGUubWF0Y2goW1Rva2Vucy5DT01NQSxUb2tlbnMuU10pKTtlLm1hdGNoKFRva2Vucy5SUEFSRU4pLHQrPSIpIix0aGlzLl9yZWFkV2hpdGVzcGFjZSgpfXJldHVybiB0fSxfaGV4Y29sb3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90b2tlblN0cmVhbSx0PW51bGwsbjtpZihlLm1hdGNoKFRva2Vucy5IQVNIKSl7dD1lLnRva2VuKCksbj10LnZhbHVlO2lmKCEvI1thLWYwLTldezMsNn0vaS50ZXN0KG4pKXRocm93IG5ldyBTeW50YXhFcnJvcigiRXhwZWN0ZWQgYSBoZXggY29sb3IgYnV0IGZvdW5kICciK24rIicgYXQgbGluZSAiK3Quc3RhcnRMaW5lKyIsIGNvbCAiK3Quc3RhcnRDb2wrIi4iLHQuc3RhcnRMaW5lLHQuc3RhcnRDb2wpO3RoaXMuX3JlYWRXaGl0ZXNwYWNlKCl9cmV0dXJuIHR9LF9rZXlmcmFtZXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90b2tlblN0cmVhbSx0LG4scjtlLm11c3RNYXRjaChUb2tlbnMuS0VZRlJBTUVTX1NZTSksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxyPXRoaXMuX2tleWZyYW1lX25hbWUoKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLGUubXVzdE1hdGNoKFRva2Vucy5MQlJBQ0UpLHRoaXMuZmlyZSh7dHlwZToic3RhcnRrZXlmcmFtZXMiLG5hbWU6cixsaW5lOnIubGluZSxjb2w6ci5jb2x9KSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpLG49ZS5wZWVrKCk7d2hpbGUobj09VG9rZW5zLklERU5UfHxuPT1Ub2tlbnMuUEVSQ0VOVEFHRSl0aGlzLl9rZXlmcmFtZV9ydWxlKCksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxuPWUucGVlaygpO3RoaXMuZmlyZSh7dHlwZToiZW5ka2V5ZnJhbWVzIixuYW1lOnIsbGluZTpyLmxpbmUsY29sOnIuY29sfSksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxlLm11c3RNYXRjaChUb2tlbnMuUkJSQUNFKX0sX2tleWZyYW1lX25hbWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90b2tlblN0cmVhbSx0O3JldHVybiBlLm11c3RNYXRjaChbVG9rZW5zLklERU5ULFRva2Vucy5TVFJJTkddKSxTeW50YXhVbml0LmZyb21Ub2tlbihlLnRva2VuKCkpfSxfa2V5ZnJhbWVfcnVsZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtLHQsbj10aGlzLl9rZXlfbGlzdCgpO3RoaXMuZmlyZSh7dHlwZToic3RhcnRrZXlmcmFtZXJ1bGUiLGtleXM6bixsaW5lOm5bMF0ubGluZSxjb2w6blswXS5jb2x9KSx0aGlzLl9yZWFkRGVjbGFyYXRpb25zKCEwKSx0aGlzLmZpcmUoe3R5cGU6ImVuZGtleWZyYW1lcnVsZSIsa2V5czpuLGxpbmU6blswXS5saW5lLGNvbDpuWzBdLmNvbH0pfSxfa2V5X2xpc3Q6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90b2tlblN0cmVhbSx0LG4scj1bXTtyLnB1c2godGhpcy5fa2V5KCkpLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCk7d2hpbGUoZS5tYXRjaChUb2tlbnMuQ09NTUEpKXRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksci5wdXNoKHRoaXMuX2tleSgpKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpO3JldHVybiByfSxfa2V5OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdG9rZW5TdHJlYW0sdDtpZihlLm1hdGNoKFRva2Vucy5QRVJDRU5UQUdFKSlyZXR1cm4gU3ludGF4VW5pdC5mcm9tVG9rZW4oZS50b2tlbigpKTtpZihlLm1hdGNoKFRva2Vucy5JREVOVCkpe3Q9ZS50b2tlbigpO2lmKC9mcm9tfHRvL2kudGVzdCh0LnZhbHVlKSlyZXR1cm4gU3ludGF4VW5pdC5mcm9tVG9rZW4odCk7ZS51bmdldCgpfXRoaXMuX3VuZXhwZWN0ZWRUb2tlbihlLkxUKDEpKX0sX3NraXBDcnVmdDpmdW5jdGlvbigpe3doaWxlKHRoaXMuX3Rva2VuU3RyZWFtLm1hdGNoKFtUb2tlbnMuUyxUb2tlbnMuQ0RPLFRva2Vucy5DRENdKSk7fSxfcmVhZERlY2xhcmF0aW9uczpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX3Rva2VuU3RyZWFtLHI7dGhpcy5fcmVhZFdoaXRlc3BhY2UoKSxlJiZuLm11c3RNYXRjaChUb2tlbnMuTEJSQUNFKSx0aGlzLl9yZWFkV2hpdGVzcGFjZSgpO3RyeXtmb3IoOzspe2lmKCEobi5tYXRjaChUb2tlbnMuU0VNSUNPTE9OKXx8dCYmdGhpcy5fbWFyZ2luKCkpKXtpZighdGhpcy5fZGVjbGFyYXRpb24oKSlicmVhaztpZighbi5tYXRjaChUb2tlbnMuU0VNSUNPTE9OKSlicmVha310aGlzLl9yZWFkV2hpdGVzcGFjZSgpfW4ubXVzdE1hdGNoKFRva2Vucy5SQlJBQ0UpLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2YgU3ludGF4RXJyb3ImJiF0aGlzLm9wdGlvbnMuc3RyaWN0KSl0aHJvdyBpO3RoaXMuZmlyZSh7dHlwZToiZXJyb3IiLGVycm9yOmksbWVzc2FnZTppLm1lc3NhZ2UsbGluZTppLmxpbmUsY29sOmkuY29sfSkscj1uLmFkdmFuY2UoW1Rva2Vucy5TRU1JQ09MT04sVG9rZW5zLlJCUkFDRV0pO2lmKHI9PVRva2Vucy5TRU1JQ09MT04pdGhpcy5fcmVhZERlY2xhcmF0aW9ucyghMSx0KTtlbHNlIGlmKHIhPVRva2Vucy5SQlJBQ0UpdGhyb3cgaX19LF9yZWFkV2hpdGVzcGFjZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3Rva2VuU3RyZWFtLHQ9IiI7d2hpbGUoZS5tYXRjaChUb2tlbnMuUykpdCs9ZS50b2tlbigpLnZhbHVlO3JldHVybiB0fSxfdW5leHBlY3RlZFRva2VuOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBTeW50YXhFcnJvcigiVW5leHBlY3RlZCB0b2tlbiAnIitlLnZhbHVlKyInIGF0IGxpbmUgIitlLnN0YXJ0TGluZSsiLCBjb2wgIitlLnN0YXJ0Q29sKyIuIixlLnN0YXJ0TGluZSxlLnN0YXJ0Q29sKX0sX3ZlcmlmeUVuZDpmdW5jdGlvbigpe3RoaXMuX3Rva2VuU3RyZWFtLkxBKDEpIT1Ub2tlbnMuRU9GJiZ0aGlzLl91bmV4cGVjdGVkVG9rZW4odGhpcy5fdG9rZW5TdHJlYW0uTFQoMSkpfSxfdmFsaWRhdGVQcm9wZXJ0eTpmdW5jdGlvbihlLHQpe1ZhbGlkYXRpb24udmFsaWRhdGUoZSx0KX0scGFyc2U6ZnVuY3Rpb24oZSl7dGhpcy5fdG9rZW5TdHJlYW09bmV3IFRva2VuU3RyZWFtKGUsVG9rZW5zKSx0aGlzLl9zdHlsZXNoZWV0KCl9LHBhcnNlU3R5bGVTaGVldDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wYXJzZShlKX0scGFyc2VNZWRpYVF1ZXJ5OmZ1bmN0aW9uKGUpe3RoaXMuX3Rva2VuU3RyZWFtPW5ldyBUb2tlblN0cmVhbShlLFRva2Vucyk7dmFyIHQ9dGhpcy5fbWVkaWFfcXVlcnkoKTtyZXR1cm4gdGhpcy5fdmVyaWZ5RW5kKCksdH0scGFyc2VQcm9wZXJ0eVZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuX3Rva2VuU3RyZWFtPW5ldyBUb2tlblN0cmVhbShlLFRva2VucyksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKTt2YXIgdD10aGlzLl9leHByKCk7cmV0dXJuIHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksdGhpcy5fdmVyaWZ5RW5kKCksdH0scGFyc2VSdWxlOmZ1bmN0aW9uKGUpe3RoaXMuX3Rva2VuU3RyZWFtPW5ldyBUb2tlblN0cmVhbShlLFRva2VucyksdGhpcy5fcmVhZFdoaXRlc3BhY2UoKTt2YXIgdD10aGlzLl9ydWxlc2V0KCk7cmV0dXJuIHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCksdGhpcy5fdmVyaWZ5RW5kKCksdH0scGFyc2VTZWxlY3RvcjpmdW5jdGlvbihlKXt0aGlzLl90b2tlblN0cmVhbT1uZXcgVG9rZW5TdHJlYW0oZSxUb2tlbnMpLHRoaXMuX3JlYWRXaGl0ZXNwYWNlKCk7dmFyIHQ9dGhpcy5fc2VsZWN0b3IoKTtyZXR1cm4gdGhpcy5fcmVhZFdoaXRlc3BhY2UoKSx0aGlzLl92ZXJpZnlFbmQoKSx0fSxwYXJzZVN0eWxlQXR0cmlidXRlOmZ1bmN0aW9uKGUpe2UrPSJ9Iix0aGlzLl90b2tlblN0cmVhbT1uZXcgVG9rZW5TdHJlYW0oZSxUb2tlbnMpLHRoaXMuX3JlYWREZWNsYXJhdGlvbnMoKX19O2Zvcih0IGluIG4pbi5oYXNPd25Qcm9wZXJ0eSh0KSYmKGVbdF09blt0XSk7cmV0dXJuIGV9KCk7dmFyIFByb3BlcnRpZXM9eyJhbGlnbm1lbnQtYWRqdXN0IjoiYXV0byB8IGJhc2VsaW5lIHwgYmVmb3JlLWVkZ2UgfCB0ZXh0LWJlZm9yZS1lZGdlIHwgbWlkZGxlIHwgY2VudHJhbCB8IGFmdGVyLWVkZ2UgfCB0ZXh0LWFmdGVyLWVkZ2UgfCBpZGVvZ3JhcGhpYyB8IGFscGhhYmV0aWMgfCBoYW5naW5nIHwgbWF0aGVtYXRpY2FsIHwgPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4iLCJhbGlnbm1lbnQtYmFzZWxpbmUiOiJiYXNlbGluZSB8IHVzZS1zY3JpcHQgfCBiZWZvcmUtZWRnZSB8IHRleHQtYmVmb3JlLWVkZ2UgfCBhZnRlci1lZGdlIHwgdGV4dC1hZnRlci1lZGdlIHwgY2VudHJhbCB8IG1pZGRsZSB8IGlkZW9ncmFwaGljIHwgYWxwaGFiZXRpYyB8IGhhbmdpbmcgfCBtYXRoZW1hdGljYWwiLGFuaW1hdGlvbjoxLCJhbmltYXRpb24tZGVsYXkiOnttdWx0aToiPHRpbWU+Iixjb21tYTohMH0sImFuaW1hdGlvbi1kaXJlY3Rpb24iOnttdWx0aToibm9ybWFsIHwgYWx0ZXJuYXRlIixjb21tYTohMH0sImFuaW1hdGlvbi1kdXJhdGlvbiI6e211bHRpOiI8dGltZT4iLGNvbW1hOiEwfSwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCI6e211bHRpOiI8bnVtYmVyPiB8IGluZmluaXRlIixjb21tYTohMH0sImFuaW1hdGlvbi1uYW1lIjp7bXVsdGk6Im5vbmUgfCA8aWRlbnQ+Iixjb21tYTohMH0sImFuaW1hdGlvbi1wbGF5LXN0YXRlIjp7bXVsdGk6InJ1bm5pbmcgfCBwYXVzZWQiLGNvbW1hOiEwfSwiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiI6MSwiLW1vei1hbmltYXRpb24tZGVsYXkiOnttdWx0aToiPHRpbWU+Iixjb21tYTohMH0sIi1tb3otYW5pbWF0aW9uLWRpcmVjdGlvbiI6e211bHRpOiJub3JtYWwgfCBhbHRlcm5hdGUiLGNvbW1hOiEwfSwiLW1vei1hbmltYXRpb24tZHVyYXRpb24iOnttdWx0aToiPHRpbWU+Iixjb21tYTohMH0sIi1tb3otYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCI6e211bHRpOiI8bnVtYmVyPiB8IGluZmluaXRlIixjb21tYTohMH0sIi1tb3otYW5pbWF0aW9uLW5hbWUiOnttdWx0aToibm9uZSB8IDxpZGVudD4iLGNvbW1hOiEwfSwiLW1vei1hbmltYXRpb24tcGxheS1zdGF0ZSI6e211bHRpOiJydW5uaW5nIHwgcGF1c2VkIixjb21tYTohMH0sIi1tcy1hbmltYXRpb24tZGVsYXkiOnttdWx0aToiPHRpbWU+Iixjb21tYTohMH0sIi1tcy1hbmltYXRpb24tZGlyZWN0aW9uIjp7bXVsdGk6Im5vcm1hbCB8IGFsdGVybmF0ZSIsY29tbWE6ITB9LCItbXMtYW5pbWF0aW9uLWR1cmF0aW9uIjp7bXVsdGk6Ijx0aW1lPiIsY29tbWE6ITB9LCItbXMtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCI6e211bHRpOiI8bnVtYmVyPiB8IGluZmluaXRlIixjb21tYTohMH0sIi1tcy1hbmltYXRpb24tbmFtZSI6e211bHRpOiJub25lIHwgPGlkZW50PiIsY29tbWE6ITB9LCItbXMtYW5pbWF0aW9uLXBsYXktc3RhdGUiOnttdWx0aToicnVubmluZyB8IHBhdXNlZCIsY29tbWE6ITB9LCItd2Via2l0LWFuaW1hdGlvbi1kZWxheSI6e211bHRpOiI8dGltZT4iLGNvbW1hOiEwfSwiLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uIjp7bXVsdGk6Im5vcm1hbCB8IGFsdGVybmF0ZSIsY29tbWE6ITB9LCItd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbiI6e211bHRpOiI8dGltZT4iLGNvbW1hOiEwfSwiLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50Ijp7bXVsdGk6IjxudW1iZXI+IHwgaW5maW5pdGUiLGNvbW1hOiEwfSwiLXdlYmtpdC1hbmltYXRpb24tbmFtZSI6e211bHRpOiJub25lIHwgPGlkZW50PiIsY29tbWE6ITB9LCItd2Via2l0LWFuaW1hdGlvbi1wbGF5LXN0YXRlIjp7bXVsdGk6InJ1bm5pbmcgfCBwYXVzZWQiLGNvbW1hOiEwfSwiLW8tYW5pbWF0aW9uLWRlbGF5Ijp7bXVsdGk6Ijx0aW1lPiIsY29tbWE6ITB9LCItby1hbmltYXRpb24tZGlyZWN0aW9uIjp7bXVsdGk6Im5vcm1hbCB8IGFsdGVybmF0ZSIsY29tbWE6ITB9LCItby1hbmltYXRpb24tZHVyYXRpb24iOnttdWx0aToiPHRpbWU+Iixjb21tYTohMH0sIi1vLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiOnttdWx0aToiPG51bWJlcj4gfCBpbmZpbml0ZSIsY29tbWE6ITB9LCItby1hbmltYXRpb24tbmFtZSI6e211bHRpOiJub25lIHwgPGlkZW50PiIsY29tbWE6ITB9LCItby1hbmltYXRpb24tcGxheS1zdGF0ZSI6e211bHRpOiJydW5uaW5nIHwgcGF1c2VkIixjb21tYTohMH0sYXBwZWFyYW5jZToiaWNvbiB8IHdpbmRvdyB8IGRlc2t0b3AgfCB3b3Jrc3BhY2UgfCBkb2N1bWVudCB8IHRvb2x0aXAgfCBkaWFsb2cgfCBidXR0b24gfCBwdXNoLWJ1dHRvbiB8IGh5cGVybGluayB8IHJhZGlvLWJ1dHRvbiB8IGNoZWNrYm94IHwgbWVudS1pdGVtIHwgdGFiIHwgbWVudSB8IG1lbnViYXIgfCBwdWxsLWRvd24tbWVudSB8IHBvcC11cC1tZW51IHwgbGlzdC1tZW51IHwgcmFkaW8tZ3JvdXAgfCBjaGVja2JveC1ncm91cCB8IG91dGxpbmUtdHJlZSB8IHJhbmdlIHwgZmllbGQgfCBjb21iby1ib3ggfCBzaWduYXR1cmUgfCBwYXNzd29yZCB8IG5vcm1hbCB8IGluaGVyaXQiLGF6aW11dGg6ZnVuY3Rpb24oZSl7dmFyIHQ9IjxhbmdsZT4gfCBsZWZ0d2FyZHMgfCByaWdodHdhcmRzIHwgaW5oZXJpdCIsbj0ibGVmdC1zaWRlIHwgZmFyLWxlZnQgfCBsZWZ0IHwgY2VudGVyLWxlZnQgfCBjZW50ZXIgfCBjZW50ZXItcmlnaHQgfCByaWdodCB8IGZhci1yaWdodCB8IHJpZ2h0LXNpZGUiLHI9ITEsaT0hMSxzO1ZhbGlkYXRpb25UeXBlcy5pc0FueShlLHQpfHwoVmFsaWRhdGlvblR5cGVzLmlzQW55KGUsImJlaGluZCIpJiYocj0hMCxpPSEwKSxWYWxpZGF0aW9uVHlwZXMuaXNBbnkoZSxuKSYmKGk9ITAscnx8VmFsaWRhdGlvblR5cGVzLmlzQW55KGUsImJlaGluZCIpKSk7aWYoZS5oYXNOZXh0KCkpdGhyb3cgcz1lLm5leHQoKSxpP25ldyBWYWxpZGF0aW9uRXJyb3IoIkV4cGVjdGVkIGVuZCBvZiB2YWx1ZSBidXQgZm91bmQgJyIrcysiJy4iLHMubGluZSxzLmNvbCk6bmV3IFZhbGlkYXRpb25FcnJvcigiRXhwZWN0ZWQgKDwnYXppbXV0aCc+KSBidXQgZm91bmQgJyIrcysiJy4iLHMubGluZSxzLmNvbCl9LCJiYWNrZmFjZS12aXNpYmlsaXR5IjoidmlzaWJsZSB8IGhpZGRlbiIsYmFja2dyb3VuZDoxLCJiYWNrZ3JvdW5kLWF0dGFjaG1lbnQiOnttdWx0aToiPGF0dGFjaG1lbnQ+Iixjb21tYTohMH0sImJhY2tncm91bmQtY2xpcCI6e211bHRpOiI8Ym94PiIsY29tbWE6ITB9LCJiYWNrZ3JvdW5kLWNvbG9yIjoiPGNvbG9yPiB8IGluaGVyaXQiLCJiYWNrZ3JvdW5kLWltYWdlIjp7bXVsdGk6IjxiZy1pbWFnZT4iLGNvbW1hOiEwfSwiYmFja2dyb3VuZC1vcmlnaW4iOnttdWx0aToiPGJveD4iLGNvbW1hOiEwfSwiYmFja2dyb3VuZC1wb3NpdGlvbiI6e211bHRpOiI8YmctcG9zaXRpb24+Iixjb21tYTohMH0sImJhY2tncm91bmQtcmVwZWF0Ijp7bXVsdGk6IjxyZXBlYXQtc3R5bGU+In0sImJhY2tncm91bmQtc2l6ZSI6e211bHRpOiI8Ymctc2l6ZT4iLGNvbW1hOiEwfSwiYmFzZWxpbmUtc2hpZnQiOiJiYXNlbGluZSB8IHN1YiB8IHN1cGVyIHwgPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4iLGJpbmRpbmc6MSxibGVlZDoiPGxlbmd0aD4iLCJib29rbWFyay1sYWJlbCI6Ijxjb250ZW50PiB8IDxhdHRyPiB8IDxzdHJpbmc+IiwiYm9va21hcmstbGV2ZWwiOiJub25lIHwgPGludGVnZXI+IiwiYm9va21hcmstc3RhdGUiOiJvcGVuIHwgY2xvc2VkIiwiYm9va21hcmstdGFyZ2V0Ijoibm9uZSB8IDx1cmk+IHwgPGF0dHI+Iixib3JkZXI6Ijxib3JkZXItd2lkdGg+IHx8IDxib3JkZXItc3R5bGU+IHx8IDxjb2xvcj4iLCJib3JkZXItYm90dG9tIjoiPGJvcmRlci13aWR0aD4gfHwgPGJvcmRlci1zdHlsZT4gfHwgPGNvbG9yPiIsImJvcmRlci1ib3R0b20tY29sb3IiOiI8Y29sb3I+IiwiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyI6Ijx4LW9uZS1yYWRpdXM+IiwiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiOiI8eC1vbmUtcmFkaXVzPiIsImJvcmRlci1ib3R0b20tc3R5bGUiOiI8Ym9yZGVyLXN0eWxlPiIsImJvcmRlci1ib3R0b20td2lkdGgiOiI8Ym9yZGVyLXdpZHRoPiIsImJvcmRlci1jb2xsYXBzZSI6ImNvbGxhcHNlIHwgc2VwYXJhdGUgfCBpbmhlcml0IiwiYm9yZGVyLWNvbG9yIjp7bXVsdGk6Ijxjb2xvcj4gfCBpbmhlcml0IixtYXg6NH0sImJvcmRlci1pbWFnZSI6MSwiYm9yZGVyLWltYWdlLW91dHNldCI6e211bHRpOiI8bGVuZ3RoPiB8IDxudW1iZXI+IixtYXg6NH0sImJvcmRlci1pbWFnZS1yZXBlYXQiOnttdWx0aToic3RyZXRjaCB8IHJlcGVhdCB8IHJvdW5kIixtYXg6Mn0sImJvcmRlci1pbWFnZS1zbGljZSI6ZnVuY3Rpb24oZSl7dmFyIHQ9ITEsbj0iPG51bWJlcj4gfCA8cGVyY2VudGFnZT4iLHI9ITEsaT0wLHM9NCxvO1ZhbGlkYXRpb25UeXBlcy5pc0FueShlLCJmaWxsIikmJihyPSEwLHQ9ITApO3doaWxlKGUuaGFzTmV4dCgpJiZpPHMpe3Q9VmFsaWRhdGlvblR5cGVzLmlzQW55KGUsbik7aWYoIXQpYnJlYWs7aSsrfXI/dD0hMDpWYWxpZGF0aW9uVHlwZXMuaXNBbnkoZSwiZmlsbCIpO2lmKGUuaGFzTmV4dCgpKXRocm93IG89ZS5uZXh0KCksdD9uZXcgVmFsaWRhdGlvbkVycm9yKCJFeHBlY3RlZCBlbmQgb2YgdmFsdWUgYnV0IGZvdW5kICciK28rIicuIixvLmxpbmUsby5jb2wpOm5ldyBWYWxpZGF0aW9uRXJyb3IoIkV4cGVjdGVkIChbPG51bWJlcj4gfCA8cGVyY2VudGFnZT5dezEsNH0gJiYgZmlsbD8pIGJ1dCBmb3VuZCAnIitvKyInLiIsby5saW5lLG8uY29sKX0sImJvcmRlci1pbWFnZS1zb3VyY2UiOiI8aW1hZ2U+IHwgbm9uZSIsImJvcmRlci1pbWFnZS13aWR0aCI6e211bHRpOiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IDxudW1iZXI+IHwgYXV0byIsbWF4OjR9LCJib3JkZXItbGVmdCI6Ijxib3JkZXItd2lkdGg+IHx8IDxib3JkZXItc3R5bGU+IHx8IDxjb2xvcj4iLCJib3JkZXItbGVmdC1jb2xvciI6Ijxjb2xvcj4gfCBpbmhlcml0IiwiYm9yZGVyLWxlZnQtc3R5bGUiOiI8Ym9yZGVyLXN0eWxlPiIsImJvcmRlci1sZWZ0LXdpZHRoIjoiPGJvcmRlci13aWR0aD4iLCJib3JkZXItcmFkaXVzIjpmdW5jdGlvbihlKXt2YXIgdD0hMSxuPSI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiIscj0hMSxpPSExLHM9MCxvPTgsdTt3aGlsZShlLmhhc05leHQoKSYmczxvKXt0PVZhbGlkYXRpb25UeXBlcy5pc0FueShlLG4pO2lmKCF0KXtpZighKGUucGVlaygpPT0iLyImJnM+MSYmIXIpKWJyZWFrO3I9ITAsbz1zKzUsZS5uZXh0KCl9cysrfWlmKGUuaGFzTmV4dCgpKXRocm93IHU9ZS5uZXh0KCksdD9uZXcgVmFsaWRhdGlvbkVycm9yKCJFeHBlY3RlZCBlbmQgb2YgdmFsdWUgYnV0IGZvdW5kICciK3UrIicuIix1LmxpbmUsdS5jb2wpOm5ldyBWYWxpZGF0aW9uRXJyb3IoIkV4cGVjdGVkICg8J2JvcmRlci1yYWRpdXMnPikgYnV0IGZvdW5kICciK3UrIicuIix1LmxpbmUsdS5jb2wpfSwiYm9yZGVyLXJpZ2h0IjoiPGJvcmRlci13aWR0aD4gfHwgPGJvcmRlci1zdHlsZT4gfHwgPGNvbG9yPiIsImJvcmRlci1yaWdodC1jb2xvciI6Ijxjb2xvcj4gfCBpbmhlcml0IiwiYm9yZGVyLXJpZ2h0LXN0eWxlIjoiPGJvcmRlci1zdHlsZT4iLCJib3JkZXItcmlnaHQtd2lkdGgiOiI8Ym9yZGVyLXdpZHRoPiIsImJvcmRlci1zcGFjaW5nIjp7bXVsdGk6IjxsZW5ndGg+IHwgaW5oZXJpdCIsbWF4OjJ9LCJib3JkZXItc3R5bGUiOnttdWx0aToiPGJvcmRlci1zdHlsZT4iLG1heDo0fSwiYm9yZGVyLXRvcCI6Ijxib3JkZXItd2lkdGg+IHx8IDxib3JkZXItc3R5bGU+IHx8IDxjb2xvcj4iLCJib3JkZXItdG9wLWNvbG9yIjoiPGNvbG9yPiB8IGluaGVyaXQiLCJib3JkZXItdG9wLWxlZnQtcmFkaXVzIjoiPHgtb25lLXJhZGl1cz4iLCJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyI6Ijx4LW9uZS1yYWRpdXM+IiwiYm9yZGVyLXRvcC1zdHlsZSI6Ijxib3JkZXItc3R5bGU+IiwiYm9yZGVyLXRvcC13aWR0aCI6Ijxib3JkZXItd2lkdGg+IiwiYm9yZGVyLXdpZHRoIjp7bXVsdGk6Ijxib3JkZXItd2lkdGg+IixtYXg6NH0sYm90dG9tOiI8bWFyZ2luLXdpZHRoPiB8IGluaGVyaXQiLCJib3gtYWxpZ24iOiJzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaCIsImJveC1kZWNvcmF0aW9uLWJyZWFrIjoic2xpY2UgfGNsb25lIiwiYm94LWRpcmVjdGlvbiI6Im5vcm1hbCB8IHJldmVyc2UgfCBpbmhlcml0IiwiYm94LWZsZXgiOiI8bnVtYmVyPiIsImJveC1mbGV4LWdyb3VwIjoiPGludGVnZXI+IiwiYm94LWxpbmVzIjoic2luZ2xlIHwgbXVsdGlwbGUiLCJib3gtb3JkaW5hbC1ncm91cCI6IjxpbnRlZ2VyPiIsImJveC1vcmllbnQiOiJob3Jpem9udGFsIHwgdmVydGljYWwgfCBpbmxpbmUtYXhpcyB8IGJsb2NrLWF4aXMgfCBpbmhlcml0IiwiYm94LXBhY2siOiJzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkiLCJib3gtc2hhZG93IjpmdW5jdGlvbihlKXt2YXIgdD0hMSxuO2lmKCFWYWxpZGF0aW9uVHlwZXMuaXNBbnkoZSwibm9uZSIpKVZhbGlkYXRpb24ubXVsdGlQcm9wZXJ0eSgiPHNoYWRvdz4iLGUsITAsSW5maW5pdHkpO2Vsc2UgaWYoZS5oYXNOZXh0KCkpdGhyb3cgbj1lLm5leHQoKSxuZXcgVmFsaWRhdGlvbkVycm9yKCJFeHBlY3RlZCBlbmQgb2YgdmFsdWUgYnV0IGZvdW5kICciK24rIicuIixuLmxpbmUsbi5jb2wpfSwiYm94LXNpemluZyI6ImNvbnRlbnQtYm94IHwgYm9yZGVyLWJveCB8IGluaGVyaXQiLCJicmVhay1hZnRlciI6ImF1dG8gfCBhbHdheXMgfCBhdm9pZCB8IGxlZnQgfCByaWdodCB8IHBhZ2UgfCBjb2x1bW4gfCBhdm9pZC1wYWdlIHwgYXZvaWQtY29sdW1uIiwiYnJlYWstYmVmb3JlIjoiYXV0byB8IGFsd2F5cyB8IGF2b2lkIHwgbGVmdCB8IHJpZ2h0IHwgcGFnZSB8IGNvbHVtbiB8IGF2b2lkLXBhZ2UgfCBhdm9pZC1jb2x1bW4iLCJicmVhay1pbnNpZGUiOiJhdXRvIHwgYXZvaWQgfCBhdm9pZC1wYWdlIHwgYXZvaWQtY29sdW1uIiwiY2FwdGlvbi1zaWRlIjoidG9wIHwgYm90dG9tIHwgaW5oZXJpdCIsY2xlYXI6Im5vbmUgfCByaWdodCB8IGxlZnQgfCBib3RoIHwgaW5oZXJpdCIsY2xpcDoxLGNvbG9yOiI8Y29sb3I+IHwgaW5oZXJpdCIsImNvbG9yLXByb2ZpbGUiOjEsImNvbHVtbi1jb3VudCI6IjxpbnRlZ2VyPiB8IGF1dG8iLCJjb2x1bW4tZmlsbCI6ImF1dG8gfCBiYWxhbmNlIiwiY29sdW1uLWdhcCI6IjxsZW5ndGg+IHwgbm9ybWFsIiwiY29sdW1uLXJ1bGUiOiI8Ym9yZGVyLXdpZHRoPiB8fCA8Ym9yZGVyLXN0eWxlPiB8fCA8Y29sb3I+IiwiY29sdW1uLXJ1bGUtY29sb3IiOiI8Y29sb3I+IiwiY29sdW1uLXJ1bGUtc3R5bGUiOiI8Ym9yZGVyLXN0eWxlPiIsImNvbHVtbi1ydWxlLXdpZHRoIjoiPGJvcmRlci13aWR0aD4iLCJjb2x1bW4tc3BhbiI6Im5vbmUgfCBhbGwiLCJjb2x1bW4td2lkdGgiOiI8bGVuZ3RoPiB8IGF1dG8iLGNvbHVtbnM6MSxjb250ZW50OjEsImNvdW50ZXItaW5jcmVtZW50IjoxLCJjb3VudGVyLXJlc2V0IjoxLGNyb3A6IjxzaGFwZT4gfCBhdXRvIixjdWU6ImN1ZS1hZnRlciB8IGN1ZS1iZWZvcmUgfCBpbmhlcml0IiwiY3VlLWFmdGVyIjoxLCJjdWUtYmVmb3JlIjoxLGN1cnNvcjoxLGRpcmVjdGlvbjoibHRyIHwgcnRsIHwgaW5oZXJpdCIsZGlzcGxheToiaW5saW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0gfCBpbmxpbmUtYmxvY2sgfCB0YWJsZSB8IGlubGluZS10YWJsZSB8IHRhYmxlLXJvdy1ncm91cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8IHRhYmxlLWZvb3Rlci1ncm91cCB8IHRhYmxlLXJvdyB8IHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8IHRhYmxlLWNlbGwgfCB0YWJsZS1jYXB0aW9uIHwgYm94IHwgaW5saW5lLWJveCB8IGdyaWQgfCBpbmxpbmUtZ3JpZCB8IG5vbmUgfCBpbmhlcml0IiwiZG9taW5hbnQtYmFzZWxpbmUiOjEsImRyb3AtaW5pdGlhbC1hZnRlci1hZGp1c3QiOiJjZW50cmFsIHwgbWlkZGxlIHwgYWZ0ZXItZWRnZSB8IHRleHQtYWZ0ZXItZWRnZSB8IGlkZW9ncmFwaGljIHwgYWxwaGFiZXRpYyB8IG1hdGhlbWF0aWNhbCB8IDxwZXJjZW50YWdlPiB8IDxsZW5ndGg+IiwiZHJvcC1pbml0aWFsLWFmdGVyLWFsaWduIjoiYmFzZWxpbmUgfCB1c2Utc2NyaXB0IHwgYmVmb3JlLWVkZ2UgfCB0ZXh0LWJlZm9yZS1lZGdlIHwgYWZ0ZXItZWRnZSB8IHRleHQtYWZ0ZXItZWRnZSB8IGNlbnRyYWwgfCBtaWRkbGUgfCBpZGVvZ3JhcGhpYyB8IGFscGhhYmV0aWMgfCBoYW5naW5nIHwgbWF0aGVtYXRpY2FsIiwiZHJvcC1pbml0aWFsLWJlZm9yZS1hZGp1c3QiOiJiZWZvcmUtZWRnZSB8IHRleHQtYmVmb3JlLWVkZ2UgfCBjZW50cmFsIHwgbWlkZGxlIHwgaGFuZ2luZyB8IG1hdGhlbWF0aWNhbCB8IDxwZXJjZW50YWdlPiB8IDxsZW5ndGg+IiwiZHJvcC1pbml0aWFsLWJlZm9yZS1hbGlnbiI6ImNhcHMtaGVpZ2h0IHwgYmFzZWxpbmUgfCB1c2Utc2NyaXB0IHwgYmVmb3JlLWVkZ2UgfCB0ZXh0LWJlZm9yZS1lZGdlIHwgYWZ0ZXItZWRnZSB8IHRleHQtYWZ0ZXItZWRnZSB8IGNlbnRyYWwgfCBtaWRkbGUgfCBpZGVvZ3JhcGhpYyB8IGFscGhhYmV0aWMgfCBoYW5naW5nIHwgbWF0aGVtYXRpY2FsIiwiZHJvcC1pbml0aWFsLXNpemUiOiJhdXRvIHwgbGluZSB8IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IiwiZHJvcC1pbml0aWFsLXZhbHVlIjoiaW5pdGlhbCB8IDxpbnRlZ2VyPiIsZWxldmF0aW9uOiI8YW5nbGU+IHwgYmVsb3cgfCBsZXZlbCB8IGFib3ZlIHwgaGlnaGVyIHwgbG93ZXIgfCBpbmhlcml0IiwiZW1wdHktY2VsbHMiOiJzaG93IHwgaGlkZSB8IGluaGVyaXQiLGZpbHRlcjoxLGZpdDoiZmlsbCB8IGhpZGRlbiB8IG1lZXQgfCBzbGljZSIsImZpdC1wb3NpdGlvbiI6MSwiZmxvYXQiOiJsZWZ0IHwgcmlnaHQgfCBub25lIHwgaW5oZXJpdCIsImZsb2F0LW9mZnNldCI6MSxmb250OjEsImZvbnQtZmFtaWx5IjoxLCJmb250LXNpemUiOiI8YWJzb2x1dGUtc2l6ZT4gfCA8cmVsYXRpdmUtc2l6ZT4gfCA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVyaXQiLCJmb250LXNpemUtYWRqdXN0IjoiPG51bWJlcj4gfCBub25lIHwgaW5oZXJpdCIsImZvbnQtc3RyZXRjaCI6Im5vcm1hbCB8IHVsdHJhLWNvbmRlbnNlZCB8IGV4dHJhLWNvbmRlbnNlZCB8IGNvbmRlbnNlZCB8IHNlbWktY29uZGVuc2VkIHwgc2VtaS1leHBhbmRlZCB8IGV4cGFuZGVkIHwgZXh0cmEtZXhwYW5kZWQgfCB1bHRyYS1leHBhbmRlZCB8IGluaGVyaXQiLCJmb250LXN0eWxlIjoibm9ybWFsIHwgaXRhbGljIHwgb2JsaXF1ZSB8IGluaGVyaXQiLCJmb250LXZhcmlhbnQiOiJub3JtYWwgfCBzbWFsbC1jYXBzIHwgaW5oZXJpdCIsImZvbnQtd2VpZ2h0Ijoibm9ybWFsIHwgYm9sZCB8IGJvbGRlciB8IGxpZ2h0ZXIgfCAxMDAgfCAyMDAgfCAzMDAgfCA0MDAgfCA1MDAgfCA2MDAgfCA3MDAgfCA4MDAgfCA5MDAgfCBpbmhlcml0IiwiZ3JpZC1jZWxsLXN0YWNraW5nIjoiY29sdW1ucyB8IHJvd3MgfCBsYXllciIsImdyaWQtY29sdW1uIjoxLCJncmlkLWNvbHVtbnMiOjEsImdyaWQtY29sdW1uLWFsaWduIjoic3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBzdHJldGNoIiwiZ3JpZC1jb2x1bW4tc2l6aW5nIjoxLCJncmlkLWNvbHVtbi1zcGFuIjoiPGludGVnZXI+IiwiZ3JpZC1mbG93Ijoibm9uZSB8IHJvd3MgfCBjb2x1bW5zIiwiZ3JpZC1sYXllciI6IjxpbnRlZ2VyPiIsImdyaWQtcm93IjoxLCJncmlkLXJvd3MiOjEsImdyaWQtcm93LWFsaWduIjoic3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBzdHJldGNoIiwiZ3JpZC1yb3ctc3BhbiI6IjxpbnRlZ2VyPiIsImdyaWQtcm93LXNpemluZyI6MSwiaGFuZ2luZy1wdW5jdHVhdGlvbiI6MSxoZWlnaHQ6IjxtYXJnaW4td2lkdGg+IHwgaW5oZXJpdCIsImh5cGhlbmF0ZS1hZnRlciI6IjxpbnRlZ2VyPiB8IGF1dG8iLCJoeXBoZW5hdGUtYmVmb3JlIjoiPGludGVnZXI+IHwgYXV0byIsImh5cGhlbmF0ZS1jaGFyYWN0ZXIiOiI8c3RyaW5nPiB8IGF1dG8iLCJoeXBoZW5hdGUtbGluZXMiOiJuby1saW1pdCB8IDxpbnRlZ2VyPiIsImh5cGhlbmF0ZS1yZXNvdXJjZSI6MSxoeXBoZW5zOiJub25lIHwgbWFudWFsIHwgYXV0byIsaWNvbjoxLCJpbWFnZS1vcmllbnRhdGlvbiI6ImFuZ2xlIHwgYXV0byIsImltYWdlLXJlbmRlcmluZyI6MSwiaW1hZ2UtcmVzb2x1dGlvbiI6MSwiaW5saW5lLWJveC1hbGlnbiI6ImluaXRpYWwgfCBsYXN0IHwgPGludGVnZXI+IixsZWZ0OiI8bWFyZ2luLXdpZHRoPiB8IGluaGVyaXQiLCJsZXR0ZXItc3BhY2luZyI6IjxsZW5ndGg+IHwgbm9ybWFsIHwgaW5oZXJpdCIsImxpbmUtaGVpZ2h0IjoiPG51bWJlcj4gfCA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IG5vcm1hbCB8IGluaGVyaXQiLCJsaW5lLWJyZWFrIjoiYXV0byB8IGxvb3NlIHwgbm9ybWFsIHwgc3RyaWN0IiwibGluZS1zdGFja2luZyI6MSwibGluZS1zdGFja2luZy1ydWJ5IjoiZXhjbHVkZS1ydWJ5IHwgaW5jbHVkZS1ydWJ5IiwibGluZS1zdGFja2luZy1zaGlmdCI6ImNvbnNpZGVyLXNoaWZ0cyB8IGRpc3JlZ2FyZC1zaGlmdHMiLCJsaW5lLXN0YWNraW5nLXN0cmF0ZWd5IjoiaW5saW5lLWxpbmUtaGVpZ2h0IHwgYmxvY2stbGluZS1oZWlnaHQgfCBtYXgtaGVpZ2h0IHwgZ3JpZC1oZWlnaHQiLCJsaXN0LXN0eWxlIjoxLCJsaXN0LXN0eWxlLWltYWdlIjoiPHVyaT4gfCBub25lIHwgaW5oZXJpdCIsImxpc3Qtc3R5bGUtcG9zaXRpb24iOiJpbnNpZGUgfCBvdXRzaWRlIHwgaW5oZXJpdCIsImxpc3Qtc3R5bGUtdHlwZSI6ImRpc2MgfCBjaXJjbGUgfCBzcXVhcmUgfCBkZWNpbWFsIHwgZGVjaW1hbC1sZWFkaW5nLXplcm8gfCBsb3dlci1yb21hbiB8IHVwcGVyLXJvbWFuIHwgbG93ZXItZ3JlZWsgfCBsb3dlci1sYXRpbiB8IHVwcGVyLWxhdGluIHwgYXJtZW5pYW4gfCBnZW9yZ2lhbiB8IGxvd2VyLWFscGhhIHwgdXBwZXItYWxwaGEgfCBub25lIHwgaW5oZXJpdCIsbWFyZ2luOnttdWx0aToiPG1hcmdpbi13aWR0aD4gfCBpbmhlcml0IixtYXg6NH0sIm1hcmdpbi1ib3R0b20iOiI8bWFyZ2luLXdpZHRoPiB8IGluaGVyaXQiLCJtYXJnaW4tbGVmdCI6IjxtYXJnaW4td2lkdGg+IHwgaW5oZXJpdCIsIm1hcmdpbi1yaWdodCI6IjxtYXJnaW4td2lkdGg+IHwgaW5oZXJpdCIsIm1hcmdpbi10b3AiOiI8bWFyZ2luLXdpZHRoPiB8IGluaGVyaXQiLG1hcms6MSwibWFyay1hZnRlciI6MSwibWFyay1iZWZvcmUiOjEsbWFya3M6MSwibWFycXVlZS1kaXJlY3Rpb24iOjEsIm1hcnF1ZWUtcGxheS1jb3VudCI6MSwibWFycXVlZS1zcGVlZCI6MSwibWFycXVlZS1zdHlsZSI6MSwibWF4LWhlaWdodCI6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgbm9uZSB8IGluaGVyaXQiLCJtYXgtd2lkdGgiOiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IG5vbmUgfCBpbmhlcml0IiwibWluLWhlaWdodCI6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgaW5oZXJpdCIsIm1pbi13aWR0aCI6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgaW5oZXJpdCIsIm1vdmUtdG8iOjEsIm5hdi1kb3duIjoxLCJuYXYtaW5kZXgiOjEsIm5hdi1sZWZ0IjoxLCJuYXYtcmlnaHQiOjEsIm5hdi11cCI6MSxvcGFjaXR5OiI8bnVtYmVyPiB8IGluaGVyaXQiLG9ycGhhbnM6IjxpbnRlZ2VyPiB8IGluaGVyaXQiLG91dGxpbmU6MSwib3V0bGluZS1jb2xvciI6Ijxjb2xvcj4gfCBpbnZlcnQgfCBpbmhlcml0Iiwib3V0bGluZS1vZmZzZXQiOjEsIm91dGxpbmUtc3R5bGUiOiI8Ym9yZGVyLXN0eWxlPiB8IGluaGVyaXQiLCJvdXRsaW5lLXdpZHRoIjoiPGJvcmRlci13aWR0aD4gfCBpbmhlcml0IixvdmVyZmxvdzoidmlzaWJsZSB8IGhpZGRlbiB8IHNjcm9sbCB8IGF1dG8gfCBpbmhlcml0Iiwib3ZlcmZsb3ctc3R5bGUiOjEsIm92ZXJmbG93LXgiOjEsIm92ZXJmbG93LXkiOjEscGFkZGluZzp7bXVsdGk6IjxwYWRkaW5nLXdpZHRoPiB8IGluaGVyaXQiLG1heDo0fSwicGFkZGluZy1ib3R0b20iOiI8cGFkZGluZy13aWR0aD4gfCBpbmhlcml0IiwicGFkZGluZy1sZWZ0IjoiPHBhZGRpbmctd2lkdGg+IHwgaW5oZXJpdCIsInBhZGRpbmctcmlnaHQiOiI8cGFkZGluZy13aWR0aD4gfCBpbmhlcml0IiwicGFkZGluZy10b3AiOiI8cGFkZGluZy13aWR0aD4gfCBpbmhlcml0IixwYWdlOjEsInBhZ2UtYnJlYWstYWZ0ZXIiOiJhdXRvIHwgYWx3YXlzIHwgYXZvaWQgfCBsZWZ0IHwgcmlnaHQgfCBpbmhlcml0IiwicGFnZS1icmVhay1iZWZvcmUiOiJhdXRvIHwgYWx3YXlzIHwgYXZvaWQgfCBsZWZ0IHwgcmlnaHQgfCBpbmhlcml0IiwicGFnZS1icmVhay1pbnNpZGUiOiJhdXRvIHwgYXZvaWQgfCBpbmhlcml0IiwicGFnZS1wb2xpY3kiOjEscGF1c2U6MSwicGF1c2UtYWZ0ZXIiOjEsInBhdXNlLWJlZm9yZSI6MSxwZXJzcGVjdGl2ZToxLCJwZXJzcGVjdGl2ZS1vcmlnaW4iOjEscGhvbmVtZXM6MSxwaXRjaDoxLCJwaXRjaC1yYW5nZSI6MSwicGxheS1kdXJpbmciOjEscG9zaXRpb246InN0YXRpYyB8IHJlbGF0aXZlIHwgYWJzb2x1dGUgfCBmaXhlZCB8IGluaGVyaXQiLCJwcmVzZW50YXRpb24tbGV2ZWwiOjEsInB1bmN0dWF0aW9uLXRyaW0iOjEscXVvdGVzOjEsInJlbmRlcmluZy1pbnRlbnQiOjEscmVzaXplOjEscmVzdDoxLCJyZXN0LWFmdGVyIjoxLCJyZXN0LWJlZm9yZSI6MSxyaWNobmVzczoxLHJpZ2h0OiI8bWFyZ2luLXdpZHRoPiB8IGluaGVyaXQiLHJvdGF0aW9uOjEsInJvdGF0aW9uLXBvaW50IjoxLCJydWJ5LWFsaWduIjoxLCJydWJ5LW92ZXJoYW5nIjoxLCJydWJ5LXBvc2l0aW9uIjoxLCJydWJ5LXNwYW4iOjEsc2l6ZToxLHNwZWFrOiJub3JtYWwgfCBub25lIHwgc3BlbGwtb3V0IHwgaW5oZXJpdCIsInNwZWFrLWhlYWRlciI6Im9uY2UgfCBhbHdheXMgfCBpbmhlcml0Iiwic3BlYWstbnVtZXJhbCI6ImRpZ2l0cyB8IGNvbnRpbnVvdXMgfCBpbmhlcml0Iiwic3BlYWstcHVuY3R1YXRpb24iOiJjb2RlIHwgbm9uZSB8IGluaGVyaXQiLCJzcGVlY2gtcmF0ZSI6MSxzcmM6MSxzdHJlc3M6MSwic3RyaW5nLXNldCI6MSwidGFibGUtbGF5b3V0IjoiYXV0byB8IGZpeGVkIHwgaW5oZXJpdCIsInRhYi1zaXplIjoiPGludGVnZXI+IHwgPGxlbmd0aD4iLHRhcmdldDoxLCJ0YXJnZXQtbmFtZSI6MSwidGFyZ2V0LW5ldyI6MSwidGFyZ2V0LXBvc2l0aW9uIjoxLCJ0ZXh0LWFsaWduIjoibGVmdCB8IHJpZ2h0IHwgY2VudGVyIHwganVzdGlmeSB8IGluaGVyaXQiLCJ0ZXh0LWFsaWduLWxhc3QiOjEsInRleHQtZGVjb3JhdGlvbiI6MSwidGV4dC1lbXBoYXNpcyI6MSwidGV4dC1oZWlnaHQiOjEsInRleHQtaW5kZW50IjoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0IiwidGV4dC1qdXN0aWZ5IjoiYXV0byB8IG5vbmUgfCBpbnRlci13b3JkIHwgaW50ZXItaWRlb2dyYXBoIHwgaW50ZXItY2x1c3RlciB8IGRpc3RyaWJ1dGUgfCBrYXNoaWRhIiwidGV4dC1vdXRsaW5lIjoxLCJ0ZXh0LW92ZXJmbG93IjoxLCJ0ZXh0LXNoYWRvdyI6MSwidGV4dC10cmFuc2Zvcm0iOiJjYXBpdGFsaXplIHwgdXBwZXJjYXNlIHwgbG93ZXJjYXNlIHwgbm9uZSB8IGluaGVyaXQiLCJ0ZXh0LXdyYXAiOiJub3JtYWwgfCBub25lIHwgYXZvaWQiLHRvcDoiPG1hcmdpbi13aWR0aD4gfCBpbmhlcml0Iix0cmFuc2Zvcm06MSwidHJhbnNmb3JtLW9yaWdpbiI6MSwidHJhbnNmb3JtLXN0eWxlIjoxLHRyYW5zaXRpb246MSwidHJhbnNpdGlvbi1kZWxheSI6MSwidHJhbnNpdGlvbi1kdXJhdGlvbiI6MSwidHJhbnNpdGlvbi1wcm9wZXJ0eSI6MSwidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iOjEsInVuaWNvZGUtYmlkaSI6Im5vcm1hbCB8IGVtYmVkIHwgYmlkaS1vdmVycmlkZSB8IGluaGVyaXQiLCJ1c2VyLW1vZGlmeSI6InJlYWQtb25seSB8IHJlYWQtd3JpdGUgfCB3cml0ZS1vbmx5IHwgaW5oZXJpdCIsInVzZXItc2VsZWN0Ijoibm9uZSB8IHRleHQgfCB0b2dnbGUgfCBlbGVtZW50IHwgZWxlbWVudHMgfCBhbGwgfCBpbmhlcml0IiwidmVydGljYWwtYWxpZ24iOiI8cGVyY2VudGFnZT4gfCA8bGVuZ3RoPiB8IGJhc2VsaW5lIHwgc3ViIHwgc3VwZXIgfCB0b3AgfCB0ZXh0LXRvcCB8IG1pZGRsZSB8IGJvdHRvbSB8IHRleHQtYm90dG9tIHwgaW5oZXJpdCIsdmlzaWJpbGl0eToidmlzaWJsZSB8IGhpZGRlbiB8IGNvbGxhcHNlIHwgaW5oZXJpdCIsInZvaWNlLWJhbGFuY2UiOjEsInZvaWNlLWR1cmF0aW9uIjoxLCJ2b2ljZS1mYW1pbHkiOjEsInZvaWNlLXBpdGNoIjoxLCJ2b2ljZS1waXRjaC1yYW5nZSI6MSwidm9pY2UtcmF0ZSI6MSwidm9pY2Utc3RyZXNzIjoxLCJ2b2ljZS12b2x1bWUiOjEsdm9sdW1lOjEsIndoaXRlLXNwYWNlIjoibm9ybWFsIHwgcHJlIHwgbm93cmFwIHwgcHJlLXdyYXAgfCBwcmUtbGluZSB8IGluaGVyaXQiLCJ3aGl0ZS1zcGFjZS1jb2xsYXBzZSI6MSx3aWRvd3M6IjxpbnRlZ2VyPiB8IGluaGVyaXQiLHdpZHRoOiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8gfCBpbmhlcml0Iiwid29yZC1icmVhayI6Im5vcm1hbCB8IGtlZXAtYWxsIHwgYnJlYWstYWxsIiwid29yZC1zcGFjaW5nIjoiPGxlbmd0aD4gfCBub3JtYWwgfCBpbmhlcml0Iiwid29yZC13cmFwIjoxLCJ6LWluZGV4IjoiPGludGVnZXI+IHwgYXV0byB8IGluaGVyaXQiLHpvb206IjxudW1iZXI+IHwgPHBlcmNlbnRhZ2U+IHwgbm9ybWFsIn07UHJvcGVydHlOYW1lLnByb3RvdHlwZT1uZXcgU3ludGF4VW5pdCxQcm9wZXJ0eU5hbWUucHJvdG90eXBlLmNvbnN0cnVjdG9yPVByb3BlcnR5TmFtZSxQcm9wZXJ0eU5hbWUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuaGFjaz90aGlzLmhhY2s6IiIpK3RoaXMudGV4dH0sUHJvcGVydHlWYWx1ZS5wcm90b3R5cGU9bmV3IFN5bnRheFVuaXQsUHJvcGVydHlWYWx1ZS5wcm90b3R5cGUuY29uc3RydWN0b3I9UHJvcGVydHlWYWx1ZSxQcm9wZXJ0eVZhbHVlSXRlcmF0b3IucHJvdG90eXBlLmNvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnRzLmxlbmd0aH0sUHJvcGVydHlWYWx1ZUl0ZXJhdG9yLnByb3RvdHlwZS5pc0ZpcnN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2k9PT0wfSxQcm9wZXJ0eVZhbHVlSXRlcmF0b3IucHJvdG90eXBlLmhhc05leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faTx0aGlzLl9wYXJ0cy5sZW5ndGh9LFByb3BlcnR5VmFsdWVJdGVyYXRvci5wcm90b3R5cGUubWFyaz1mdW5jdGlvbigpe3RoaXMuX21hcmtzLnB1c2godGhpcy5faSl9LFByb3BlcnR5VmFsdWVJdGVyYXRvci5wcm90b3R5cGUucGVlaz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5oYXNOZXh0KCk/dGhpcy5fcGFydHNbdGhpcy5faSsoZXx8MCldOm51bGx9LFByb3BlcnR5VmFsdWVJdGVyYXRvci5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc05leHQoKT90aGlzLl9wYXJ0c1t0aGlzLl9pKytdOm51bGx9LFByb3BlcnR5VmFsdWVJdGVyYXRvci5wcm90b3R5cGUucHJldmlvdXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faT4wP3RoaXMuX3BhcnRzWy0tdGhpcy5faV06bnVsbH0sUHJvcGVydHlWYWx1ZUl0ZXJhdG9yLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKCl7dGhpcy5fbWFya3MubGVuZ3RoJiYodGhpcy5faT10aGlzLl9tYXJrcy5wb3AoKSl9LFByb3BlcnR5VmFsdWVQYXJ0LnByb3RvdHlwZT1uZXcgU3ludGF4VW5pdCxQcm9wZXJ0eVZhbHVlUGFydC5wcm90b3R5cGUuY29uc3RydWN0b3I9UHJvcGVydHlWYWx1ZVBhcnQsUHJvcGVydHlWYWx1ZVBhcnQuZnJvbVRva2VuPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvcGVydHlWYWx1ZVBhcnQoZS52YWx1ZSxlLnN0YXJ0TGluZSxlLnN0YXJ0Q29sKX07dmFyIFBzZXVkb3M9eyI6Zmlyc3QtbGV0dGVyIjoxLCI6Zmlyc3QtbGluZSI6MSwiOmJlZm9yZSI6MSwiOmFmdGVyIjoxfTtQc2V1ZG9zLkVMRU1FTlQ9MSxQc2V1ZG9zLkNMQVNTPTIsUHNldWRvcy5pc0VsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5kZXhPZigiOjoiKT09PTB8fFBzZXVkb3NbZS50b0xvd2VyQ2FzZSgpXT09UHNldWRvcy5FTEVNRU5UfSxTZWxlY3Rvci5wcm90b3R5cGU9bmV3IFN5bnRheFVuaXQsU2VsZWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPVNlbGVjdG9yLFNlbGVjdG9yUGFydC5wcm90b3R5cGU9bmV3IFN5bnRheFVuaXQsU2VsZWN0b3JQYXJ0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1TZWxlY3RvclBhcnQsU2VsZWN0b3JTdWJQYXJ0LnByb3RvdHlwZT1uZXcgU3ludGF4VW5pdCxTZWxlY3RvclN1YlBhcnQucHJvdG90eXBlLmNvbnN0cnVjdG9yPVNlbGVjdG9yU3ViUGFydCxTcGVjaWZpY2l0eS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlNwZWNpZmljaXR5LGNvbXBhcmU6ZnVuY3Rpb24oZSl7dmFyIHQ9WyJhIiwiYiIsImMiLCJkIl0sbixyO2ZvcihuPTAscj10Lmxlbmd0aDtuPHI7bisrKXtpZih0aGlzW3Rbbl1dPGVbdFtuXV0pcmV0dXJuLTE7aWYodGhpc1t0W25dXT5lW3Rbbl1dKXJldHVybiAxfXJldHVybiAwfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYSoxZTMrdGhpcy5iKjEwMCt0aGlzLmMqMTArdGhpcy5kfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmErIiwiK3RoaXMuYisiLCIrdGhpcy5jKyIsIit0aGlzLmR9fSxTcGVjaWZpY2l0eS5jYWxjdWxhdGU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdShlKXt2YXIgdCxuLHIsYSxmPWUuZWxlbWVudE5hbWU/ZS5lbGVtZW50TmFtZS50ZXh0OiIiLGw7ZiYmZi5jaGFyQXQoZi5sZW5ndGgtMSkhPSIqIiYmbysrO2Zvcih0PTAscj1lLm1vZGlmaWVycy5sZW5ndGg7dDxyO3QrKyl7bD1lLm1vZGlmaWVyc1t0XTtzd2l0Y2gobC50eXBlKXtjYXNlImNsYXNzIjpjYXNlImF0dHJpYnV0ZSI6cysrO2JyZWFrO2Nhc2UiaWQiOmkrKzticmVhaztjYXNlInBzZXVkbyI6UHNldWRvcy5pc0VsZW1lbnQobC50ZXh0KT9vKys6cysrO2JyZWFrO2Nhc2Uibm90Ijpmb3Iobj0wLGE9bC5hcmdzLmxlbmd0aDtuPGE7bisrKXUobC5hcmdzW25dKX19fXZhciB0LG4scixpPTAscz0wLG89MDtmb3IodD0wLG49ZS5wYXJ0cy5sZW5ndGg7dDxuO3QrKylyPWUucGFydHNbdF0sciBpbnN0YW5jZW9mIFNlbGVjdG9yUGFydCYmdShyKTtyZXR1cm4gbmV3IFNwZWNpZmljaXR5KDAsaSxzLG8pfTt2YXIgaD0vXlswLTlhLWZBLUZdJC8sbm9uYXNjaWk9L15bXHUwMDgwLVx1RkZGRl0kLyxubD0vXG58XHJcbnxccnxcZi87VG9rZW5TdHJlYW0ucHJvdG90eXBlPW1peChuZXcgVG9rZW5TdHJlYW1CYXNlLHtfZ2V0VG9rZW46ZnVuY3Rpb24oZSl7dmFyIHQsbj10aGlzLl9yZWFkZXIscj1udWxsLGk9bi5nZXRMaW5lKCkscz1uLmdldENvbCgpO3Q9bi5yZWFkKCk7d2hpbGUodCl7c3dpdGNoKHQpe2Nhc2UiLyI6bi5wZWVrKCk9PSIqIj9yPXRoaXMuY29tbWVudFRva2VuKHQsaSxzKTpyPXRoaXMuY2hhclRva2VuKHQsaSxzKTticmVhaztjYXNlInwiOmNhc2UifiI6Y2FzZSJeIjpjYXNlIiQiOmNhc2UiKiI6bi5wZWVrKCk9PSI9Ij9yPXRoaXMuY29tcGFyaXNvblRva2VuKHQsaSxzKTpyPXRoaXMuY2hhclRva2VuKHQsaSxzKTticmVhaztjYXNlJyInOmNhc2UiJyI6cj10aGlzLnN0cmluZ1Rva2VuKHQsaSxzKTticmVhaztjYXNlIiMiOmlzTmFtZUNoYXIobi5wZWVrKCkpP3I9dGhpcy5oYXNoVG9rZW4odCxpLHMpOnI9dGhpcy5jaGFyVG9rZW4odCxpLHMpO2JyZWFrO2Nhc2UiLiI6aXNEaWdpdChuLnBlZWsoKSk/cj10aGlzLm51bWJlclRva2VuKHQsaSxzKTpyPXRoaXMuY2hhclRva2VuKHQsaSxzKTticmVhaztjYXNlIi0iOm4ucGVlaygpPT0iLSI/cj10aGlzLmh0bWxDb21tZW50RW5kVG9rZW4odCxpLHMpOmlzTmFtZVN0YXJ0KG4ucGVlaygpKT9yPXRoaXMuaWRlbnRPckZ1bmN0aW9uVG9rZW4odCxpLHMpOnI9dGhpcy5jaGFyVG9rZW4odCxpLHMpO2JyZWFrO2Nhc2UiISI6cj10aGlzLmltcG9ydGFudFRva2VuKHQsaSxzKTticmVhaztjYXNlIkAiOnI9dGhpcy5hdFJ1bGVUb2tlbih0LGkscyk7YnJlYWs7Y2FzZSI6IjpyPXRoaXMubm90VG9rZW4odCxpLHMpO2JyZWFrO2Nhc2UiPCI6cj10aGlzLmh0bWxDb21tZW50U3RhcnRUb2tlbih0LGkscyk7YnJlYWs7Y2FzZSJVIjpjYXNlInUiOmlmKG4ucGVlaygpPT0iKyIpe3I9dGhpcy51bmljb2RlUmFuZ2VUb2tlbih0LGkscyk7YnJlYWt9O2RlZmF1bHQ6aXNEaWdpdCh0KT9yPXRoaXMubnVtYmVyVG9rZW4odCxpLHMpOmlzV2hpdGVzcGFjZSh0KT9yPXRoaXMud2hpdGVzcGFjZVRva2VuKHQsaSxzKTppc0lkZW50U3RhcnQodCk/cj10aGlzLmlkZW50T3JGdW5jdGlvblRva2VuKHQsaSxzKTpyPXRoaXMuY2hhclRva2VuKHQsaSxzKX1icmVha31yZXR1cm4hciYmdD09PW51bGwmJihyPXRoaXMuY3JlYXRlVG9rZW4oVG9rZW5zLkVPRixudWxsLGkscykpLHJ9LGNyZWF0ZVRva2VuOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIHM9dGhpcy5fcmVhZGVyO3JldHVybiBpPWl8fHt9LHt2YWx1ZTp0LHR5cGU6ZSxjaGFubmVsOmkuY2hhbm5lbCxoaWRlOmkuaGlkZXx8ITEsc3RhcnRMaW5lOm4sc3RhcnRDb2w6cixlbmRMaW5lOnMuZ2V0TGluZSgpLGVuZENvbDpzLmdldENvbCgpfX0sYXRSdWxlVG9rZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUsaT10aGlzLl9yZWFkZXIscz1Ub2tlbnMuQ0hBUixvPSExLHUsYTtpLm1hcmsoKSx1PXRoaXMucmVhZE5hbWUoKSxyPWUrdSxzPVRva2Vucy50eXBlKHIudG9Mb3dlckNhc2UoKSk7aWYocz09VG9rZW5zLkNIQVJ8fHM9PVRva2Vucy5VTktOT1dOKXIubGVuZ3RoPjE/cz1Ub2tlbnMuVU5LTk9XTl9TWU06KHM9VG9rZW5zLkNIQVIscj1lLGkucmVzZXQoKSk7cmV0dXJuIHRoaXMuY3JlYXRlVG9rZW4ocyxyLHQsbil9LGNoYXJUb2tlbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9VG9rZW5zLnR5cGUoZSk7cmV0dXJuIHI9PS0xJiYocj1Ub2tlbnMuQ0hBUiksdGhpcy5jcmVhdGVUb2tlbihyLGUsdCxuKX0sY29tbWVudFRva2VuOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9yZWFkZXIsaT10aGlzLnJlYWRDb21tZW50KGUpO3JldHVybiB0aGlzLmNyZWF0ZVRva2VuKFRva2Vucy5DT01NRU5ULGksdCxuKX0sY29tcGFyaXNvblRva2VuOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9yZWFkZXIsaT1lK3IucmVhZCgpLHM9VG9rZW5zLnR5cGUoaSl8fFRva2Vucy5DSEFSO3JldHVybiB0aGlzLmNyZWF0ZVRva2VuKHMsaSx0LG4pfSxoYXNoVG9rZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3JlYWRlcixpPXRoaXMucmVhZE5hbWUoZSk7cmV0dXJuIHRoaXMuY3JlYXRlVG9rZW4oVG9rZW5zLkhBU0gsaSx0LG4pfSxodG1sQ29tbWVudFN0YXJ0VG9rZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3JlYWRlcixpPWU7cmV0dXJuIHIubWFyaygpLGkrPXIucmVhZENvdW50KDMpLGk9PSI8IS0tIj90aGlzLmNyZWF0ZVRva2VuKFRva2Vucy5DRE8saSx0LG4pOihyLnJlc2V0KCksdGhpcy5jaGFyVG9rZW4oZSx0LG4pKX0saHRtbENvbW1lbnRFbmRUb2tlbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fcmVhZGVyLGk9ZTtyZXR1cm4gci5tYXJrKCksaSs9ci5yZWFkQ291bnQoMiksaT09Ii0tPiI/dGhpcy5jcmVhdGVUb2tlbihUb2tlbnMuQ0RDLGksdCxuKTooci5yZXNldCgpLHRoaXMuY2hhclRva2VuKGUsdCxuKSl9LGlkZW50T3JGdW5jdGlvblRva2VuOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9yZWFkZXIsaT10aGlzLnJlYWROYW1lKGUpLHM9VG9rZW5zLklERU5UO3JldHVybiByLnBlZWsoKT09IigiPyhpKz1yLnJlYWQoKSxpLnRvTG93ZXJDYXNlKCk9PSJ1cmwoIj8ocz1Ub2tlbnMuVVJJLGk9dGhpcy5yZWFkVVJJKGkpLGkudG9Mb3dlckNhc2UoKT09InVybCgiJiYocz1Ub2tlbnMuRlVOQ1RJT04pKTpzPVRva2Vucy5GVU5DVElPTik6ci5wZWVrKCk9PSI6IiYmaS50b0xvd2VyQ2FzZSgpPT0icHJvZ2lkIiYmKGkrPXIucmVhZFRvKCIoIikscz1Ub2tlbnMuSUVfRlVOQ1RJT04pLHRoaXMuY3JlYXRlVG9rZW4ocyxpLHQsbil9LGltcG9ydGFudFRva2VuOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9yZWFkZXIsaT1lLHM9VG9rZW5zLkNIQVIsbyx1O3IubWFyaygpLHU9ci5yZWFkKCk7d2hpbGUodSl7aWYodT09Ii8iKXtpZihyLnBlZWsoKSE9IioiKWJyZWFrO289dGhpcy5yZWFkQ29tbWVudCh1KTtpZihvPT09IiIpYnJlYWt9ZWxzZXtpZighaXNXaGl0ZXNwYWNlKHUpKXtpZigvaS9pLnRlc3QodSkpe289ci5yZWFkQ291bnQoOCksL21wb3J0YW50L2kudGVzdChvKSYmKGkrPXUrbyxzPVRva2Vucy5JTVBPUlRBTlRfU1lNKTticmVha31icmVha31pKz11K3RoaXMucmVhZFdoaXRlc3BhY2UoKX11PXIucmVhZCgpfXJldHVybiBzPT1Ub2tlbnMuQ0hBUj8oci5yZXNldCgpLHRoaXMuY2hhclRva2VuKGUsdCxuKSk6dGhpcy5jcmVhdGVUb2tlbihzLGksdCxuKX0sbm90VG9rZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3JlYWRlcixpPWU7cmV0dXJuIHIubWFyaygpLGkrPXIucmVhZENvdW50KDQpLGkudG9Mb3dlckNhc2UoKT09Ijpub3QoIj90aGlzLmNyZWF0ZVRva2VuKFRva2Vucy5OT1QsaSx0LG4pOihyLnJlc2V0KCksdGhpcy5jaGFyVG9rZW4oZSx0LG4pKX0sbnVtYmVyVG9rZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3JlYWRlcixpPXRoaXMucmVhZE51bWJlcihlKSxzLG89VG9rZW5zLk5VTUJFUix1PXIucGVlaygpO3JldHVybiBpc0lkZW50U3RhcnQodSk/KHM9dGhpcy5yZWFkTmFtZShyLnJlYWQoKSksaSs9cywvXmVtJHxeZXgkfF5weCR8XmdkJHxecmVtJHxednckfF52aCR8XnZtJHxeY2gkfF5jbSR8Xm1tJHxeaW4kfF5wdCR8XnBjJC9pLnRlc3Qocyk/bz1Ub2tlbnMuTEVOR1RIOi9eZGVnfF5yYWQkfF5ncmFkJC9pLnRlc3Qocyk/bz1Ub2tlbnMuQU5HTEU6L15tcyR8XnMkL2kudGVzdChzKT9vPVRva2Vucy5USU1FOi9eaHokfF5raHokL2kudGVzdChzKT9vPVRva2Vucy5GUkVROi9eZHBpJHxeZHBjbSQvaS50ZXN0KHMpP289VG9rZW5zLlJFU09MVVRJT046bz1Ub2tlbnMuRElNRU5TSU9OKTp1PT0iJSImJihpKz1yLnJlYWQoKSxvPVRva2Vucy5QRVJDRU5UQUdFKSx0aGlzLmNyZWF0ZVRva2VuKG8saSx0LG4pfSxzdHJpbmdUb2tlbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSxpPWUscz10aGlzLl9yZWFkZXIsbz1lLHU9VG9rZW5zLlNUUklORyxhPXMucmVhZCgpO3doaWxlKGEpe2krPWE7aWYoYT09ciYmbyE9IlxcIilicmVhaztpZihpc05ld0xpbmUocy5wZWVrKCkpJiZhIT0iXFwiKXt1PVRva2Vucy5JTlZBTElEO2JyZWFrfW89YSxhPXMucmVhZCgpfXJldHVybiBhPT09bnVsbCYmKHU9VG9rZW5zLklOVkFMSUQpLHRoaXMuY3JlYXRlVG9rZW4odSxpLHQsbil9LHVuaWNvZGVSYW5nZVRva2VuOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9yZWFkZXIsaT1lLHMsbz1Ub2tlbnMuQ0hBUjtyZXR1cm4gci5wZWVrKCk9PSIrIiYmKHIubWFyaygpLGkrPXIucmVhZCgpLGkrPXRoaXMucmVhZFVuaWNvZGVSYW5nZVBhcnQoITApLGkubGVuZ3RoPT0yP3IucmVzZXQoKToobz1Ub2tlbnMuVU5JQ09ERV9SQU5HRSxpLmluZGV4T2YoIj8iKT09LTEmJnIucGVlaygpPT0iLSImJihyLm1hcmsoKSxzPXIucmVhZCgpLHMrPXRoaXMucmVhZFVuaWNvZGVSYW5nZVBhcnQoITEpLHMubGVuZ3RoPT0xP3IucmVzZXQoKTppKz1zKSkpLHRoaXMuY3JlYXRlVG9rZW4obyxpLHQsbil9LHdoaXRlc3BhY2VUb2tlbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fcmVhZGVyLGk9ZSt0aGlzLnJlYWRXaGl0ZXNwYWNlKCk7cmV0dXJuIHRoaXMuY3JlYXRlVG9rZW4oVG9rZW5zLlMsaSx0LG4pfSxyZWFkVW5pY29kZVJhbmdlUGFydDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZWFkZXIsbj0iIixyPXQucGVlaygpO3doaWxlKGlzSGV4RGlnaXQocikmJm4ubGVuZ3RoPDYpdC5yZWFkKCksbis9cixyPXQucGVlaygpO2lmKGUpd2hpbGUocj09Ij8iJiZuLmxlbmd0aDw2KXQucmVhZCgpLG4rPXIscj10LnBlZWsoKTtyZXR1cm4gbn0scmVhZFdoaXRlc3BhY2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9yZWFkZXIsdD0iIixuPWUucGVlaygpO3doaWxlKGlzV2hpdGVzcGFjZShuKSllLnJlYWQoKSx0Kz1uLG49ZS5wZWVrKCk7cmV0dXJuIHR9LHJlYWROdW1iZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVhZGVyLG49ZSxyPWU9PSIuIixpPXQucGVlaygpO3doaWxlKGkpe2lmKGlzRGlnaXQoaSkpbis9dC5yZWFkKCk7ZWxzZXtpZihpIT0iLiIpYnJlYWs7aWYocilicmVhaztyPSEwLG4rPXQucmVhZCgpfWk9dC5wZWVrKCl9cmV0dXJuIG59LHJlYWRTdHJpbmc6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9yZWFkZXIsdD1lLnJlYWQoKSxuPXQscj10LGk9ZS5wZWVrKCk7d2hpbGUoaSl7aT1lLnJlYWQoKSxuKz1pO2lmKGk9PXQmJnIhPSJcXCIpYnJlYWs7aWYoaXNOZXdMaW5lKGUucGVlaygpKSYmaSE9IlxcIil7bj0iIjticmVha31yPWksaT1lLnBlZWsoKX1yZXR1cm4gaT09PW51bGwmJihuPSIiKSxufSxyZWFkVVJJOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlYWRlcixuPWUscj0iIixpPXQucGVlaygpO3QubWFyaygpO3doaWxlKGkmJmlzV2hpdGVzcGFjZShpKSl0LnJlYWQoKSxpPXQucGVlaygpO2k9PSInInx8aT09JyInP3I9dGhpcy5yZWFkU3RyaW5nKCk6cj10aGlzLnJlYWRVUkwoKSxpPXQucGVlaygpO3doaWxlKGkmJmlzV2hpdGVzcGFjZShpKSl0LnJlYWQoKSxpPXQucGVlaygpO3JldHVybiByPT09IiJ8fGkhPSIpIj8obj1lLHQucmVzZXQoKSk6bis9cit0LnJlYWQoKSxufSxyZWFkVVJMOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fcmVhZGVyLHQ9IiIsbj1lLnBlZWsoKTt3aGlsZSgvXlshIyQlJlxcKi1+XSQvLnRlc3QobikpdCs9ZS5yZWFkKCksbj1lLnBlZWsoKTtyZXR1cm4gdH0scmVhZE5hbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVhZGVyLG49ZXx8IiIscj10LnBlZWsoKTtmb3IoOzspaWYocj09IlxcIiluKz10aGlzLnJlYWRFc2NhcGUodC5yZWFkKCkpLHI9dC5wZWVrKCk7ZWxzZXtpZighcnx8IWlzTmFtZUNoYXIocikpYnJlYWs7bis9dC5yZWFkKCkscj10LnBlZWsoKX1yZXR1cm4gbn0scmVhZEVzY2FwZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZWFkZXIsbj1lfHwiIixyPTAsaT10LnBlZWsoKTtpZihpc0hleERpZ2l0KGkpKWRvIG4rPXQucmVhZCgpLGk9dC5wZWVrKCk7d2hpbGUoaSYmaXNIZXhEaWdpdChpKSYmKytyPDYpO3JldHVybiBuLmxlbmd0aD09MyYmL1xzLy50ZXN0KGkpfHxuLmxlbmd0aD09N3x8bi5sZW5ndGg9PTE/dC5yZWFkKCk6aT0iIixuK2l9LHJlYWRDb21tZW50OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlYWRlcixuPWV8fCIiLHI9dC5yZWFkKCk7aWYocj09IioiKXt3aGlsZShyKXtuKz1yO2lmKG4ubGVuZ3RoPjImJnI9PSIqIiYmdC5wZWVrKCk9PSIvIil7bis9dC5yZWFkKCk7YnJlYWt9cj10LnJlYWQoKX1yZXR1cm4gbn1yZXR1cm4iIn19KTt2YXIgVG9rZW5zPVt7bmFtZToiQ0RPIn0se25hbWU6IkNEQyJ9LHtuYW1lOiJTIix3aGl0ZXNwYWNlOiEwfSx7bmFtZToiQ09NTUVOVCIsY29tbWVudDohMCxoaWRlOiEwLGNoYW5uZWw6ImNvbW1lbnQifSx7bmFtZToiSU5DTFVERVMiLHRleHQ6In49In0se25hbWU6IkRBU0hNQVRDSCIsdGV4dDoifD0ifSx7bmFtZToiUFJFRklYTUFUQ0giLHRleHQ6Il49In0se25hbWU6IlNVRkZJWE1BVENIIix0ZXh0OiIkPSJ9LHtuYW1lOiJTVUJTVFJJTkdNQVRDSCIsdGV4dDoiKj0ifSx7bmFtZToiU1RSSU5HIn0se25hbWU6IklERU5UIn0se25hbWU6IkhBU0gifSx7bmFtZToiSU1QT1JUX1NZTSIsdGV4dDoiQGltcG9ydCJ9LHtuYW1lOiJQQUdFX1NZTSIsdGV4dDoiQHBhZ2UifSx7bmFtZToiTUVESUFfU1lNIix0ZXh0OiJAbWVkaWEifSx7bmFtZToiRk9OVF9GQUNFX1NZTSIsdGV4dDoiQGZvbnQtZmFjZSJ9LHtuYW1lOiJDSEFSU0VUX1NZTSIsdGV4dDoiQGNoYXJzZXQifSx7bmFtZToiTkFNRVNQQUNFX1NZTSIsdGV4dDoiQG5hbWVzcGFjZSJ9LHtuYW1lOiJVTktOT1dOX1NZTSJ9LHtuYW1lOiJLRVlGUkFNRVNfU1lNIix0ZXh0OlsiQGtleWZyYW1lcyIsIkAtd2Via2l0LWtleWZyYW1lcyIsIkAtbW96LWtleWZyYW1lcyIsIkAtbXMta2V5ZnJhbWVzIl19LHtuYW1lOiJJTVBPUlRBTlRfU1lNIn0se25hbWU6IkxFTkdUSCJ9LHtuYW1lOiJBTkdMRSJ9LHtuYW1lOiJUSU1FIn0se25hbWU6IkZSRVEifSx7bmFtZToiRElNRU5TSU9OIn0se25hbWU6IlBFUkNFTlRBR0UifSx7bmFtZToiTlVNQkVSIn0se25hbWU6IlVSSSJ9LHtuYW1lOiJGVU5DVElPTiJ9LHtuYW1lOiJVTklDT0RFX1JBTkdFIn0se25hbWU6IklOVkFMSUQifSx7bmFtZToiUExVUyIsdGV4dDoiKyJ9LHtuYW1lOiJHUkVBVEVSIix0ZXh0OiI+In0se25hbWU6IkNPTU1BIix0ZXh0OiIsIn0se25hbWU6IlRJTERFIix0ZXh0OiJ+In0se25hbWU6Ik5PVCJ9LHtuYW1lOiJUT1BMRUZUQ09STkVSX1NZTSIsdGV4dDoiQHRvcC1sZWZ0LWNvcm5lciJ9LHtuYW1lOiJUT1BMRUZUX1NZTSIsdGV4dDoiQHRvcC1sZWZ0In0se25hbWU6IlRPUENFTlRFUl9TWU0iLHRleHQ6IkB0b3AtY2VudGVyIn0se25hbWU6IlRPUFJJR0hUX1NZTSIsdGV4dDoiQHRvcC1yaWdodCJ9LHtuYW1lOiJUT1BSSUdIVENPUk5FUl9TWU0iLHRleHQ6IkB0b3AtcmlnaHQtY29ybmVyIn0se25hbWU6IkJPVFRPTUxFRlRDT1JORVJfU1lNIix0ZXh0OiJAYm90dG9tLWxlZnQtY29ybmVyIn0se25hbWU6IkJPVFRPTUxFRlRfU1lNIix0ZXh0OiJAYm90dG9tLWxlZnQifSx7bmFtZToiQk9UVE9NQ0VOVEVSX1NZTSIsdGV4dDoiQGJvdHRvbS1jZW50ZXIifSx7bmFtZToiQk9UVE9NUklHSFRfU1lNIix0ZXh0OiJAYm90dG9tLXJpZ2h0In0se25hbWU6IkJPVFRPTVJJR0hUQ09STkVSX1NZTSIsdGV4dDoiQGJvdHRvbS1yaWdodC1jb3JuZXIifSx7bmFtZToiTEVGVFRPUF9TWU0iLHRleHQ6IkBsZWZ0LXRvcCJ9LHtuYW1lOiJMRUZUTUlERExFX1NZTSIsdGV4dDoiQGxlZnQtbWlkZGxlIn0se25hbWU6IkxFRlRCT1RUT01fU1lNIix0ZXh0OiJAbGVmdC1ib3R0b20ifSx7bmFtZToiUklHSFRUT1BfU1lNIix0ZXh0OiJAcmlnaHQtdG9wIn0se25hbWU6IlJJR0hUTUlERExFX1NZTSIsdGV4dDoiQHJpZ2h0LW1pZGRsZSJ9LHtuYW1lOiJSSUdIVEJPVFRPTV9TWU0iLHRleHQ6IkByaWdodC1ib3R0b20ifSx7bmFtZToiUkVTT0xVVElPTiIsc3RhdGU6Im1lZGlhIn0se25hbWU6IklFX0ZVTkNUSU9OIn0se25hbWU6IkNIQVIifSx7bmFtZToiUElQRSIsdGV4dDoifCJ9LHtuYW1lOiJTTEFTSCIsdGV4dDoiLyJ9LHtuYW1lOiJNSU5VUyIsdGV4dDoiLSJ9LHtuYW1lOiJTVEFSIix0ZXh0OiIqIn0se25hbWU6IkxCUkFDRSIsdGV4dDoieyJ9LHtuYW1lOiJSQlJBQ0UiLHRleHQ6In0ifSx7bmFtZToiTEJSQUNLRVQiLHRleHQ6IlsifSx7bmFtZToiUkJSQUNLRVQiLHRleHQ6Il0ifSx7bmFtZToiRVFVQUxTIix0ZXh0OiI9In0se25hbWU6IkNPTE9OIix0ZXh0OiI6In0se25hbWU6IlNFTUlDT0xPTiIsdGV4dDoiOyJ9LHtuYW1lOiJMUEFSRU4iLHRleHQ6IigifSx7bmFtZToiUlBBUkVOIix0ZXh0OiIpIn0se25hbWU6IkRPVCIsdGV4dDoiLiJ9XTsoZnVuY3Rpb24oKXt2YXIgZT1bXSx0PXt9O1Rva2Vucy5VTktOT1dOPS0xLFRva2Vucy51bnNoaWZ0KHtuYW1lOiJFT0YifSk7Zm9yKHZhciBuPTAscj1Ub2tlbnMubGVuZ3RoO248cjtuKyspe2UucHVzaChUb2tlbnNbbl0ubmFtZSksVG9rZW5zW1Rva2Vuc1tuXS5uYW1lXT1uO2lmKFRva2Vuc1tuXS50ZXh0KWlmKFRva2Vuc1tuXS50ZXh0IGluc3RhbmNlb2YgQXJyYXkpZm9yKHZhciBpPTA7aTxUb2tlbnNbbl0udGV4dC5sZW5ndGg7aSsrKXRbVG9rZW5zW25dLnRleHRbaV1dPW47ZWxzZSB0W1Rva2Vuc1tuXS50ZXh0XT1ufVRva2Vucy5uYW1lPWZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSxUb2tlbnMudHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gdFtlXXx8LTF9fSkoKTt2YXIgVmFsaWRhdGlvbj17dmFsaWRhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSxyPXQucGFydHMsaT1uZXcgUHJvcGVydHlWYWx1ZUl0ZXJhdG9yKHQpLHM9UHJvcGVydGllc1tuXSxvLHUsYSxmLGwsYyxoLHAsZCx2LG07aWYoIXMpe2lmKG4uaW5kZXhPZigiLSIpIT09MCl0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCJVbmtub3duIHByb3BlcnR5ICciK2UrIicuIixlLmxpbmUsZS5jb2wpfWVsc2UgdHlwZW9mIHMhPSJudW1iZXIiJiYodHlwZW9mIHM9PSJzdHJpbmciP3MuaW5kZXhPZigifHwiKT4tMT90aGlzLmdyb3VwUHJvcGVydHkocyxpKTp0aGlzLnNpbmdsZVByb3BlcnR5KHMsaSwxKTpzLm11bHRpP3RoaXMubXVsdGlQcm9wZXJ0eShzLm11bHRpLGkscy5jb21tYSxzLm1heHx8SW5maW5pdHkpOnR5cGVvZiBzPT0iZnVuY3Rpb24iJiZzKGkpKX0sc2luZ2xlUHJvcGVydHk6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ITEscz10LnZhbHVlLG89MCx1O3doaWxlKHQuaGFzTmV4dCgpJiZvPG4pe2k9VmFsaWRhdGlvblR5cGVzLmlzQW55KHQsZSk7aWYoIWkpYnJlYWs7bysrfWlmKCFpKXRocm93IHQuaGFzTmV4dCgpJiYhdC5pc0ZpcnN0KCk/KHU9dC5wZWVrKCksbmV3IFZhbGlkYXRpb25FcnJvcigiRXhwZWN0ZWQgZW5kIG9mIHZhbHVlIGJ1dCBmb3VuZCAnIit1KyInLiIsdS5saW5lLHUuY29sKSk6bmV3IFZhbGlkYXRpb25FcnJvcigiRXhwZWN0ZWQgKCIrZSsiKSBidXQgZm91bmQgJyIrcysiJy4iLHMubGluZSxzLmNvbCk7aWYodC5oYXNOZXh0KCkpdGhyb3cgdT10Lm5leHQoKSxuZXcgVmFsaWRhdGlvbkVycm9yKCJFeHBlY3RlZCBlbmQgb2YgdmFsdWUgYnV0IGZvdW5kICciK3UrIicuIix1LmxpbmUsdS5jb2wpfSxtdWx0aVByb3BlcnR5OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPSExLHM9dC52YWx1ZSxvPTAsdT0hMSxhO3doaWxlKHQuaGFzTmV4dCgpJiYhaSYmbzxyKXtpZighVmFsaWRhdGlvblR5cGVzLmlzQW55KHQsZSkpYnJlYWs7bysrO2lmKCF0Lmhhc05leHQoKSlpPSEwO2Vsc2UgaWYobil7aWYodC5wZWVrKCkhPSIsIilicmVhazthPXQubmV4dCgpfX1pZighaSl0aHJvdyB0Lmhhc05leHQoKSYmIXQuaXNGaXJzdCgpPyhhPXQucGVlaygpLG5ldyBWYWxpZGF0aW9uRXJyb3IoIkV4cGVjdGVkIGVuZCBvZiB2YWx1ZSBidXQgZm91bmQgJyIrYSsiJy4iLGEubGluZSxhLmNvbCkpOihhPXQucHJldmlvdXMoKSxuJiZhPT0iLCI/bmV3IFZhbGlkYXRpb25FcnJvcigiRXhwZWN0ZWQgZW5kIG9mIHZhbHVlIGJ1dCBmb3VuZCAnIithKyInLiIsYS5saW5lLGEuY29sKTpuZXcgVmFsaWRhdGlvbkVycm9yKCJFeHBlY3RlZCAoIitlKyIpIGJ1dCBmb3VuZCAnIitzKyInLiIscy5saW5lLHMuY29sKSk7aWYodC5oYXNOZXh0KCkpdGhyb3cgYT10Lm5leHQoKSxuZXcgVmFsaWRhdGlvbkVycm9yKCJFeHBlY3RlZCBlbmQgb2YgdmFsdWUgYnV0IGZvdW5kICciK2ErIicuIixhLmxpbmUsYS5jb2wpfSxncm91cFByb3BlcnR5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0hMSxpPXQudmFsdWUscz1lLnNwbGl0KCJ8fCIpLmxlbmd0aCxvPXtjb3VudDowfSx1PSExLGEsZjt3aGlsZSh0Lmhhc05leHQoKSYmIXIpe2E9VmFsaWRhdGlvblR5cGVzLmlzQW55T2ZHcm91cCh0LGUpO2lmKCFhKWJyZWFrO2lmKG9bYV0pYnJlYWs7b1thXT0xLG8uY291bnQrKyx1PSEwO2lmKG8uY291bnQ9PXN8fCF0Lmhhc05leHQoKSlyPSEwfWlmKCFyKXRocm93IHUmJnQuaGFzTmV4dCgpPyhmPXQucGVlaygpLG5ldyBWYWxpZGF0aW9uRXJyb3IoIkV4cGVjdGVkIGVuZCBvZiB2YWx1ZSBidXQgZm91bmQgJyIrZisiJy4iLGYubGluZSxmLmNvbCkpOm5ldyBWYWxpZGF0aW9uRXJyb3IoIkV4cGVjdGVkICgiK2UrIikgYnV0IGZvdW5kICciK2krIicuIixpLmxpbmUsaS5jb2wpO2lmKHQuaGFzTmV4dCgpKXRocm93IGY9dC5uZXh0KCksbmV3IFZhbGlkYXRpb25FcnJvcigiRXhwZWN0ZWQgZW5kIG9mIHZhbHVlIGJ1dCBmb3VuZCAnIitmKyInLiIsZi5saW5lLGYuY29sKX19O1ZhbGlkYXRpb25FcnJvci5wcm90b3R5cGU9bmV3IEVycm9yO3ZhciBWYWxpZGF0aW9uVHlwZXM9e2lzTGl0ZXJhbDpmdW5jdGlvbihlLHQpe3ZhciBuPWUudGV4dC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkscj10LnNwbGl0KCIgfCAiKSxpLHMsbz0hMTtmb3IoaT0wLHM9ci5sZW5ndGg7aTxzJiYhbztpKyspbj09cltpXSYmKG89ITApO3JldHVybiBvfSxpc1NpbXBsZTpmdW5jdGlvbihlKXtyZXR1cm4hIXRoaXMuc2ltcGxlW2VdfSxpc0NvbXBsZXg6ZnVuY3Rpb24oZSl7cmV0dXJuISF0aGlzLmNvbXBsZXhbZV19LGlzQW55OmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5zcGxpdCgiIHwgIikscixpLHM9ITE7Zm9yKHI9MCxpPW4ubGVuZ3RoO3I8aSYmIXMmJmUuaGFzTmV4dCgpO3IrKylzPXRoaXMuaXNUeXBlKGUsbltyXSk7cmV0dXJuIHN9LGlzQW55T2ZHcm91cDpmdW5jdGlvbihlLHQpe3ZhciBuPXQuc3BsaXQoIiB8fCAiKSxyLGkscz0hMTtmb3Iocj0wLGk9bi5sZW5ndGg7cjxpJiYhcztyKyspcz10aGlzLmlzVHlwZShlLG5bcl0pO3JldHVybiBzP25bci0xXTohMX0saXNUeXBlOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5wZWVrKCkscj0hMTtyZXR1cm4gdC5jaGFyQXQoMCkhPSI8Ij8ocj10aGlzLmlzTGl0ZXJhbChuLHQpLHImJmUubmV4dCgpKTp0aGlzLnNpbXBsZVt0XT8ocj10aGlzLnNpbXBsZVt0XShuKSxyJiZlLm5leHQoKSk6cj10aGlzLmNvbXBsZXhbdF0oZSkscn0sc2ltcGxlOnsiPGFic29sdXRlLXNpemU+IjpmdW5jdGlvbihlKXtyZXR1cm4gVmFsaWRhdGlvblR5cGVzLmlzTGl0ZXJhbChlLCJ4eC1zbWFsbCB8IHgtc21hbGwgfCBzbWFsbCB8IG1lZGl1bSB8IGxhcmdlIHwgeC1sYXJnZSB8IHh4LWxhcmdlIil9LCI8YXR0YWNobWVudD4iOmZ1bmN0aW9uKGUpe3JldHVybiBWYWxpZGF0aW9uVHlwZXMuaXNMaXRlcmFsKGUsInNjcm9sbCB8IGZpeGVkIHwgbG9jYWwiKX0sIjxhdHRyPiI6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09ImZ1bmN0aW9uIiYmZS5uYW1lPT0iYXR0ciJ9LCI8YmctaW1hZ2U+IjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpc1siPGltYWdlPiJdKGUpfHx0aGlzWyI8Z3JhZGllbnQ+Il0oZSl8fGU9PSJub25lIn0sIjxncmFkaWVudD4iOmZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PSJmdW5jdGlvbiImJi9eKD86XC0oPzptc3xtb3p8b3x3ZWJraXQpXC0pPyg/OnJlcGVhdGluZ1wtKT8oPzpyYWRpYWx8bGluZWFyKVwtZ3JhZGllbnQvaS50ZXN0KGUpfSwiPGJveD4iOmZ1bmN0aW9uKGUpe3JldHVybiBWYWxpZGF0aW9uVHlwZXMuaXNMaXRlcmFsKGUsInBhZGRpbmctYm94IHwgYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94Iil9LCI8Y29udGVudD4iOmZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PSJmdW5jdGlvbiImJmUubmFtZT09ImNvbnRlbnQifSwiPHJlbGF0aXZlLXNpemU+IjpmdW5jdGlvbihlKXtyZXR1cm4gVmFsaWRhdGlvblR5cGVzLmlzTGl0ZXJhbChlLCJzbWFsbGVyIHwgbGFyZ2VyIil9LCI8aWRlbnQ+IjpmdW5jdGlvbihlKXtyZXR1cm4gZS50eXBlPT0iaWRlbnRpZmllciJ9LCI8bGVuZ3RoPiI6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09Imxlbmd0aCJ8fGUudHlwZT09Im51bWJlciJ8fGUudHlwZT09ImludGVnZXIifHxlPT0iMCJ9LCI8Y29sb3I+IjpmdW5jdGlvbihlKXtyZXR1cm4gZS50eXBlPT0iY29sb3IifHxlPT0idHJhbnNwYXJlbnQifSwiPG51bWJlcj4iOmZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PSJudW1iZXIifHx0aGlzWyI8aW50ZWdlcj4iXShlKX0sIjxpbnRlZ2VyPiI6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09ImludGVnZXIifSwiPGxpbmU+IjpmdW5jdGlvbihlKXtyZXR1cm4gZS50eXBlPT0iaW50ZWdlciJ9LCI8YW5nbGU+IjpmdW5jdGlvbihlKXtyZXR1cm4gZS50eXBlPT0iYW5nbGUifSwiPHVyaT4iOmZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PSJ1cmkifSwiPGltYWdlPiI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXNbIjx1cmk+Il0oZSl9LCI8cGVyY2VudGFnZT4iOmZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PSJwZXJjZW50YWdlInx8ZT09IjAifSwiPGJvcmRlci13aWR0aD4iOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzWyI8bGVuZ3RoPiJdKGUpfHxWYWxpZGF0aW9uVHlwZXMuaXNMaXRlcmFsKGUsInRoaW4gfCBtZWRpdW0gfCB0aGljayIpfSwiPGJvcmRlci1zdHlsZT4iOmZ1bmN0aW9uKGUpe3JldHVybiBWYWxpZGF0aW9uVHlwZXMuaXNMaXRlcmFsKGUsIm5vbmUgfCBoaWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfCBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdlIHwgaW5zZXQgfCBvdXRzZXQiKX0sIjxtYXJnaW4td2lkdGg+IjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpc1siPGxlbmd0aD4iXShlKXx8dGhpc1siPHBlcmNlbnRhZ2U+Il0oZSl8fFZhbGlkYXRpb25UeXBlcy5pc0xpdGVyYWwoZSwiYXV0byIpfSwiPHBhZGRpbmctd2lkdGg+IjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpc1siPGxlbmd0aD4iXShlKXx8dGhpc1siPHBlcmNlbnRhZ2U+Il0oZSl9LCI8c2hhcGU+IjpmdW5jdGlvbihlKXtyZXR1cm4gZS50eXBlPT0iZnVuY3Rpb24iJiYoZS5uYW1lPT0icmVjdCJ8fGUubmFtZT09Imluc2V0LXJlY3QiKX0sIjx0aW1lPiI6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09InRpbWUifX0sY29tcGxleDp7IjxiZy1wb3NpdGlvbj4iOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj0hMSxyPSI8cGVyY2VudGFnZT4gfCA8bGVuZ3RoPiIsaT0ibGVmdCB8IGNlbnRlciB8IHJpZ2h0IixzPSJ0b3AgfCBjZW50ZXIgfCBib3R0b20iLG8sdSxhO3JldHVybiBWYWxpZGF0aW9uVHlwZXMuaXNBbnkoZSwidG9wIHwgYm90dG9tIik/bj0hMDpWYWxpZGF0aW9uVHlwZXMuaXNBbnkoZSxyKT9lLmhhc05leHQoKSYmKG49VmFsaWRhdGlvblR5cGVzLmlzQW55KGUscisiIHwgIitzKSk6VmFsaWRhdGlvblR5cGVzLmlzQW55KGUsaSkmJmUuaGFzTmV4dCgpJiYoVmFsaWRhdGlvblR5cGVzLmlzQW55KGUscyk/KG49ITAsVmFsaWRhdGlvblR5cGVzLmlzQW55KGUscikpOlZhbGlkYXRpb25UeXBlcy5pc0FueShlLHIpJiYoVmFsaWRhdGlvblR5cGVzLmlzQW55KGUscykmJlZhbGlkYXRpb25UeXBlcy5pc0FueShlLHIpLG49ITApKSxufSwiPGJnLXNpemU+IjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49ITEscj0iPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4gfCBhdXRvIixpLHMsbztyZXR1cm4gVmFsaWRhdGlvblR5cGVzLmlzQW55KGUsImNvdmVyIHwgY29udGFpbiIpP249ITA6VmFsaWRhdGlvblR5cGVzLmlzQW55KGUscikmJihuPSEwLFZhbGlkYXRpb25UeXBlcy5pc0FueShlLHIpKSxufSwiPHJlcGVhdC1zdHlsZT4iOmZ1bmN0aW9uKGUpe3ZhciB0PSExLG49InJlcGVhdCB8IHNwYWNlIHwgcm91bmQgfCBuby1yZXBlYXQiLHI7cmV0dXJuIGUuaGFzTmV4dCgpJiYocj1lLm5leHQoKSxWYWxpZGF0aW9uVHlwZXMuaXNMaXRlcmFsKHIsInJlcGVhdC14IHwgcmVwZWF0LXkiKT90PSEwOlZhbGlkYXRpb25UeXBlcy5pc0xpdGVyYWwocixuKSYmKHQ9ITAsZS5oYXNOZXh0KCkmJlZhbGlkYXRpb25UeXBlcy5pc0xpdGVyYWwoZS5wZWVrKCksbikmJmUubmV4dCgpKSksdH0sIjxzaGFkb3c+IjpmdW5jdGlvbihlKXt2YXIgdD0hMSxuPTAscj0hMSxpPSExLHM7aWYoZS5oYXNOZXh0KCkpe1ZhbGlkYXRpb25UeXBlcy5pc0FueShlLCJpbnNldCIpJiYocj0hMCksVmFsaWRhdGlvblR5cGVzLmlzQW55KGUsIjxjb2xvcj4iKSYmKGk9ITApO3doaWxlKFZhbGlkYXRpb25UeXBlcy5pc0FueShlLCI8bGVuZ3RoPiIpJiZuPDQpbisrO2UuaGFzTmV4dCgpJiYoaXx8VmFsaWRhdGlvblR5cGVzLmlzQW55KGUsIjxjb2xvcj4iKSxyfHxWYWxpZGF0aW9uVHlwZXMuaXNBbnkoZSwiaW5zZXQiKSksdD1uPj0yJiZuPD00fXJldHVybiB0fSwiPHgtb25lLXJhZGl1cz4iOmZ1bmN0aW9uKGUpe3ZhciB0PSExLG49MCxyPSI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiIsaTtyZXR1cm4gVmFsaWRhdGlvblR5cGVzLmlzQW55KGUscikmJih0PSEwLFZhbGlkYXRpb25UeXBlcy5pc0FueShlLHIpKSx0fX19O3BhcnNlcmxpYi5jc3M9e0NvbG9yczpDb2xvcnMsQ29tYmluYXRvcjpDb21iaW5hdG9yLFBhcnNlcjpQYXJzZXIsUHJvcGVydHlOYW1lOlByb3BlcnR5TmFtZSxQcm9wZXJ0eVZhbHVlOlByb3BlcnR5VmFsdWUsUHJvcGVydHlWYWx1ZVBhcnQ6UHJvcGVydHlWYWx1ZVBhcnQsTWVkaWFGZWF0dXJlOk1lZGlhRmVhdHVyZSxNZWRpYVF1ZXJ5Ok1lZGlhUXVlcnksU2VsZWN0b3I6U2VsZWN0b3IsU2VsZWN0b3JQYXJ0OlNlbGVjdG9yUGFydCxTZWxlY3RvclN1YlBhcnQ6U2VsZWN0b3JTdWJQYXJ0LFNwZWNpZmljaXR5OlNwZWNpZmljaXR5LFRva2VuU3RyZWFtOlRva2VuU3RyZWFtLFRva2VuczpUb2tlbnMsVmFsaWRhdGlvbkVycm9yOlZhbGlkYXRpb25FcnJvcn19KCk7dmFyIENTU0xpbnQ9ZnVuY3Rpb24oKXt2YXIgZT1bXSx0PVtdLG49bmV3IHBhcnNlcmxpYi51dGlsLkV2ZW50VGFyZ2V0O3JldHVybiBuLnZlcnNpb249IjAuOS43IixuLmFkZFJ1bGU9ZnVuY3Rpb24odCl7ZS5wdXNoKHQpLGVbdC5pZF09dH0sbi5jbGVhclJ1bGVzPWZ1bmN0aW9uKCl7ZT1bXX0sbi5nZXRSdWxlcz1mdW5jdGlvbigpe3JldHVybltdLmNvbmNhdChlKS5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaWQ+dC5pZD8xOjB9KX0sbi5hZGRGb3JtYXR0ZXI9ZnVuY3Rpb24oZSl7dFtlLmlkXT1lfSxuLmdldEZvcm1hdHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0sbi5mb3JtYXQ9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dGhpcy5nZXRGb3JtYXR0ZXIobikscz1udWxsO3JldHVybiBpJiYocz1pLnN0YXJ0Rm9ybWF0KCkscys9aS5mb3JtYXRSZXN1bHRzKGUsdCxyfHx7fSkscys9aS5lbmRGb3JtYXQoKSksc30sbi5oYXNGb3JtYXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoZSl9LG4udmVyaWZ5PWZ1bmN0aW9uKHQsbil7dmFyIHI9MCxpPWUubGVuZ3RoLHMsbyx1LGE9bmV3IHBhcnNlcmxpYi5jc3MuUGFyc2VyKHtzdGFySGFjazohMCxpZUZpbHRlcnM6ITAsdW5kZXJzY29yZUhhY2s6ITAsc3RyaWN0OiExfSk7bz10LnJlcGxhY2UoL1xuXHI/L2csIiRzcGxpdCQiKS5zcGxpdCgiJHNwbGl0JCIpO2lmKCFuKXtuPXt9O3doaWxlKHI8aSluW2VbcisrXS5pZF09MX1zPW5ldyBSZXBvcnRlcihvLG4pLG4uZXJyb3JzPTI7Zm9yKHIgaW4gbiluLmhhc093blByb3BlcnR5KHIpJiZlW3JdJiZlW3JdLmluaXQoYSxzKTt0cnl7YS5wYXJzZSh0KX1jYXRjaChmKXtzLmVycm9yKCJGYXRhbCBlcnJvciwgY2Fubm90IGNvbnRpbnVlOiAiK2YubWVzc2FnZSxmLmxpbmUsZi5jb2wse30pfXJldHVybiB1PXttZXNzYWdlczpzLm1lc3NhZ2VzLHN0YXRzOnMuc3RhdHN9LHUubWVzc2FnZXMuc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLnJvbGx1cCYmIXQucm9sbHVwPzE6IWUucm9sbHVwJiZ0LnJvbGx1cD8tMTplLmxpbmUtdC5saW5lfSksdX0sbn0oKTtSZXBvcnRlci5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlJlcG9ydGVyLGVycm9yOmZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMubWVzc2FnZXMucHVzaCh7dHlwZToiZXJyb3IiLGxpbmU6dCxjb2w6bixtZXNzYWdlOmUsZXZpZGVuY2U6dGhpcy5saW5lc1t0LTFdLHJ1bGU6cnx8e319KX0sd2FybjpmdW5jdGlvbihlLHQsbixyKXt0aGlzLnJlcG9ydChlLHQsbixyKX0scmVwb3J0OmZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMubWVzc2FnZXMucHVzaCh7dHlwZTp0aGlzLnJ1bGVzZXRbci5pZF09PTI/ImVycm9yIjoid2FybmluZyIsbGluZTp0LGNvbDpuLG1lc3NhZ2U6ZSxldmlkZW5jZTp0aGlzLmxpbmVzW3QtMV0scnVsZTpyfSl9LGluZm86ZnVuY3Rpb24oZSx0LG4scil7dGhpcy5tZXNzYWdlcy5wdXNoKHt0eXBlOiJpbmZvIixsaW5lOnQsY29sOm4sbWVzc2FnZTplLGV2aWRlbmNlOnRoaXMubGluZXNbdC0xXSxydWxlOnJ9KX0scm9sbHVwRXJyb3I6ZnVuY3Rpb24oZSx0KXt0aGlzLm1lc3NhZ2VzLnB1c2goe3R5cGU6ImVycm9yIixyb2xsdXA6ITAsbWVzc2FnZTplLHJ1bGU6dH0pfSxyb2xsdXBXYXJuOmZ1bmN0aW9uKGUsdCl7dGhpcy5tZXNzYWdlcy5wdXNoKHt0eXBlOiJ3YXJuaW5nIixyb2xsdXA6ITAsbWVzc2FnZTplLHJ1bGU6dH0pfSxzdGF0OmZ1bmN0aW9uKGUsdCl7dGhpcy5zdGF0c1tlXT10fX0sQ1NTTGludC5fUmVwb3J0ZXI9UmVwb3J0ZXIsQ1NTTGludC5VdGlsPXttaXg6ZnVuY3Rpb24oZSx0KXt2YXIgbjtmb3IobiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJihlW25dPXRbbl0pO3JldHVybiBufSxpbmRleE9mOmZ1bmN0aW9uKGUsdCl7aWYoZS5pbmRleE9mKXJldHVybiBlLmluZGV4T2YodCk7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfSxmb3JFYWNoOmZ1bmN0aW9uKGUsdCl7aWYoZS5mb3JFYWNoKXJldHVybiBlLmZvckVhY2godCk7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXQoZVtuXSxuLGUpfX0sQ1NTTGludC5hZGRSdWxlKHtpZDoiYWRqb2luaW5nLWNsYXNzZXMiLG5hbWU6IkRpc2FsbG93IGFkam9pbmluZyBjbGFzc2VzIixkZXNjOiJEb24ndCB1c2UgYWRqb2luaW5nIGNsYXNzZXMuIixicm93c2VyczoiSUU2Iixpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztlLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLGZ1bmN0aW9uKHIpe3ZhciBpPXIuc2VsZWN0b3JzLHMsbyx1LGEsZixsLGM7Zm9yKGY9MDtmPGkubGVuZ3RoO2YrKyl7cz1pW2ZdO2ZvcihsPTA7bDxzLnBhcnRzLmxlbmd0aDtsKyspe289cy5wYXJ0c1tsXTtpZihvLnR5cGU9PWUuU0VMRUNUT1JfUEFSVF9UWVBFKXthPTA7Zm9yKGM9MDtjPG8ubW9kaWZpZXJzLmxlbmd0aDtjKyspdT1vLm1vZGlmaWVyc1tjXSx1LnR5cGU9PSJjbGFzcyImJmErKyxhPjEmJnQucmVwb3J0KCJEb24ndCB1c2UgYWRqb2luaW5nIGNsYXNzZXMuIixvLmxpbmUsby5jb2wsbil9fX19KX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJib3gtbW9kZWwiLG5hbWU6IkJld2FyZSBvZiBicm9rZW4gYm94IHNpemUiLGRlc2M6IkRvbid0IHVzZSB3aWR0aCBvciBoZWlnaHQgd2hlbiB1c2luZyBwYWRkaW5nIG9yIGJvcmRlci4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBvKCl7cz17fX1mdW5jdGlvbiB1KCl7dmFyIGU7aWYocy5oZWlnaHQpZm9yKGUgaW4gaSlpLmhhc093blByb3BlcnR5KGUpJiZzW2VdJiYoZSE9InBhZGRpbmcifHxzW2VdLnZhbHVlLnBhcnRzLmxlbmd0aCE9PTJ8fHNbZV0udmFsdWUucGFydHNbMF0udmFsdWUhPT0wKSYmdC5yZXBvcnQoIlVzaW5nIGhlaWdodCB3aXRoICIrZSsiIGNhbiBzb21ldGltZXMgbWFrZSBlbGVtZW50cyBsYXJnZXIgdGhhbiB5b3UgZXhwZWN0LiIsc1tlXS5saW5lLHNbZV0uY29sLG4pO2lmKHMud2lkdGgpZm9yKGUgaW4gcilyLmhhc093blByb3BlcnR5KGUpJiZzW2VdJiYoZSE9InBhZGRpbmcifHxzW2VdLnZhbHVlLnBhcnRzLmxlbmd0aCE9PTJ8fHNbZV0udmFsdWUucGFydHNbMV0udmFsdWUhPT0wKSYmdC5yZXBvcnQoIlVzaW5nIHdpZHRoIHdpdGggIitlKyIgY2FuIHNvbWV0aW1lcyBtYWtlIGVsZW1lbnRzIGxhcmdlciB0aGFuIHlvdSBleHBlY3QuIixzW2VdLmxpbmUsc1tlXS5jb2wsbil9dmFyIG49dGhpcyxyPXtib3JkZXI6MSwiYm9yZGVyLWxlZnQiOjEsImJvcmRlci1yaWdodCI6MSxwYWRkaW5nOjEsInBhZGRpbmctbGVmdCI6MSwicGFkZGluZy1yaWdodCI6MX0saT17Ym9yZGVyOjEsImJvcmRlci1ib3R0b20iOjEsImJvcmRlci10b3AiOjEscGFkZGluZzoxLCJwYWRkaW5nLWJvdHRvbSI6MSwicGFkZGluZy10b3AiOjF9LHM7ZS5hZGRMaXN0ZW5lcigic3RhcnRydWxlIixvKSxlLmFkZExpc3RlbmVyKCJzdGFydGZvbnRmYWNlIixvKSxlLmFkZExpc3RlbmVyKCJzdGFydHBhZ2UiLG8pLGUuYWRkTGlzdGVuZXIoInN0YXJ0cGFnZW1hcmdpbiIsbyksZS5hZGRMaXN0ZW5lcigic3RhcnRrZXlmcmFtZXJ1bGUiLG8pLGUuYWRkTGlzdGVuZXIoInByb3BlcnR5IixmdW5jdGlvbihlKXt2YXIgdD1lLnByb3BlcnR5LnRleHQudG9Mb3dlckNhc2UoKTtpZihpW3RdfHxyW3RdKSEvXjBcUyokLy50ZXN0KGUudmFsdWUpJiYodCE9ImJvcmRlciJ8fGUudmFsdWUhPSJub25lIikmJihzW3RdPXtsaW5lOmUucHJvcGVydHkubGluZSxjb2w6ZS5wcm9wZXJ0eS5jb2wsdmFsdWU6ZS52YWx1ZX0pO2Vsc2UgaWYodD09IndpZHRoInx8dD09ImhlaWdodCIpc1t0XT0xfSksZS5hZGRMaXN0ZW5lcigiZW5kcnVsZSIsdSksZS5hZGRMaXN0ZW5lcigiZW5kZm9udGZhY2UiLHUpLGUuYWRkTGlzdGVuZXIoImVuZHBhZ2UiLHUpLGUuYWRkTGlzdGVuZXIoImVuZHBhZ2VtYXJnaW4iLHUpLGUuYWRkTGlzdGVuZXIoImVuZGtleWZyYW1lcnVsZSIsdSl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoiYm94LXNpemluZyIsbmFtZToiRGlzYWxsb3cgdXNlIG9mIGJveC1zaXppbmciLGRlc2M6IlRoZSBib3gtc2l6aW5nIHByb3BlcnRpZXMgaXNuJ3Qgc3VwcG9ydGVkIGluIElFNiBhbmQgSUU3LiIsYnJvd3NlcnM6IklFNiwgSUU3Iix0YWdzOlsiQ29tcGF0aWJpbGl0eSJdLGluaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2UuYWRkTGlzdGVuZXIoInByb3BlcnR5IixmdW5jdGlvbihlKXt2YXIgcj1lLnByb3BlcnR5LnRleHQudG9Mb3dlckNhc2UoKTtyPT0iYm94LXNpemluZyImJnQucmVwb3J0KCJUaGUgYm94LXNpemluZyBwcm9wZXJ0eSBpc24ndCBzdXBwb3J0ZWQgaW4gSUU2IGFuZCBJRTcuIixlLmxpbmUsZS5jb2wsbil9KX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJjb21wYXRpYmxlLXZlbmRvci1wcmVmaXhlcyIsbmFtZToiUmVxdWlyZSBjb21wYXRpYmxlIHZlbmRvciBwcmVmaXhlcyIsZGVzYzoiSW5jbHVkZSBhbGwgY29tcGF0aWJsZSB2ZW5kb3IgcHJlZml4ZXMgdG8gcmVhY2ggYSB3aWRlciByYW5nZSBvZiB1c2Vycy4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHIsaSxzLG8sdSxhLGYsbD1BcnJheS5wcm90b3R5cGUucHVzaCxjPVtdO3I9e2FuaW1hdGlvbjoid2Via2l0IG1veiBtcyIsImFuaW1hdGlvbi1kZWxheSI6IndlYmtpdCBtb3ogbXMiLCJhbmltYXRpb24tZGlyZWN0aW9uIjoid2Via2l0IG1veiBtcyIsImFuaW1hdGlvbi1kdXJhdGlvbiI6IndlYmtpdCBtb3ogbXMiLCJhbmltYXRpb24tZmlsbC1tb2RlIjoid2Via2l0IG1veiBtcyIsImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiOiJ3ZWJraXQgbW96IG1zIiwiYW5pbWF0aW9uLW5hbWUiOiJ3ZWJraXQgbW96IG1zIiwiYW5pbWF0aW9uLXBsYXktc3RhdGUiOiJ3ZWJraXQgbW96IG1zIiwiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiI6IndlYmtpdCBtb3ogbXMiLGFwcGVhcmFuY2U6IndlYmtpdCBtb3oiLCJib3JkZXItZW5kIjoid2Via2l0IG1veiIsImJvcmRlci1lbmQtY29sb3IiOiJ3ZWJraXQgbW96IiwiYm9yZGVyLWVuZC1zdHlsZSI6IndlYmtpdCBtb3oiLCJib3JkZXItZW5kLXdpZHRoIjoid2Via2l0IG1veiIsImJvcmRlci1pbWFnZSI6IndlYmtpdCBtb3ogbyIsImJvcmRlci1yYWRpdXMiOiJ3ZWJraXQgbW96IiwiYm9yZGVyLXN0YXJ0Ijoid2Via2l0IG1veiIsImJvcmRlci1zdGFydC1jb2xvciI6IndlYmtpdCBtb3oiLCJib3JkZXItc3RhcnQtc3R5bGUiOiJ3ZWJraXQgbW96IiwiYm9yZGVyLXN0YXJ0LXdpZHRoIjoid2Via2l0IG1veiIsImJveC1hbGlnbiI6IndlYmtpdCBtb3ogbXMiLCJib3gtZGlyZWN0aW9uIjoid2Via2l0IG1veiBtcyIsImJveC1mbGV4Ijoid2Via2l0IG1veiBtcyIsImJveC1saW5lcyI6IndlYmtpdCBtcyIsImJveC1vcmRpbmFsLWdyb3VwIjoid2Via2l0IG1veiBtcyIsImJveC1vcmllbnQiOiJ3ZWJraXQgbW96IG1zIiwiYm94LXBhY2siOiJ3ZWJraXQgbW96IG1zIiwiYm94LXNpemluZyI6IndlYmtpdCBtb3oiLCJib3gtc2hhZG93Ijoid2Via2l0IG1veiIsImNvbHVtbi1jb3VudCI6IndlYmtpdCBtb3ogbXMiLCJjb2x1bW4tZ2FwIjoid2Via2l0IG1veiBtcyIsImNvbHVtbi1ydWxlIjoid2Via2l0IG1veiBtcyIsImNvbHVtbi1ydWxlLWNvbG9yIjoid2Via2l0IG1veiBtcyIsImNvbHVtbi1ydWxlLXN0eWxlIjoid2Via2l0IG1veiBtcyIsImNvbHVtbi1ydWxlLXdpZHRoIjoid2Via2l0IG1veiBtcyIsImNvbHVtbi13aWR0aCI6IndlYmtpdCBtb3ogbXMiLGh5cGhlbnM6ImVwdWIgbW96IiwibGluZS1icmVhayI6IndlYmtpdCBtcyIsIm1hcmdpbi1lbmQiOiJ3ZWJraXQgbW96IiwibWFyZ2luLXN0YXJ0Ijoid2Via2l0IG1veiIsIm1hcnF1ZWUtc3BlZWQiOiJ3ZWJraXQgd2FwIiwibWFycXVlZS1zdHlsZSI6IndlYmtpdCB3YXAiLCJwYWRkaW5nLWVuZCI6IndlYmtpdCBtb3oiLCJwYWRkaW5nLXN0YXJ0Ijoid2Via2l0IG1veiIsInRhYi1zaXplIjoibW96IG8iLCJ0ZXh0LXNpemUtYWRqdXN0Ijoid2Via2l0IG1zIix0cmFuc2Zvcm06IndlYmtpdCBtb3ogbXMgbyIsInRyYW5zZm9ybS1vcmlnaW4iOiJ3ZWJraXQgbW96IG1zIG8iLHRyYW5zaXRpb246IndlYmtpdCBtb3ogbyBtcyIsInRyYW5zaXRpb24tZGVsYXkiOiJ3ZWJraXQgbW96IG8gbXMiLCJ0cmFuc2l0aW9uLWR1cmF0aW9uIjoid2Via2l0IG1veiBvIG1zIiwidHJhbnNpdGlvbi1wcm9wZXJ0eSI6IndlYmtpdCBtb3ogbyBtcyIsInRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIjoid2Via2l0IG1veiBvIG1zIiwidXNlci1tb2RpZnkiOiJ3ZWJraXQgbW96IiwidXNlci1zZWxlY3QiOiJ3ZWJraXQgbW96IG1zIiwid29yZC1icmVhayI6ImVwdWIgbXMiLCJ3cml0aW5nLW1vZGUiOiJlcHViIG1zIn07Zm9yKHMgaW4gcilpZihyLmhhc093blByb3BlcnR5KHMpKXtvPVtdLHU9cltzXS5zcGxpdCgiICIpO2ZvcihhPTAsZj11Lmxlbmd0aDthPGY7YSsrKW8ucHVzaCgiLSIrdVthXSsiLSIrcyk7cltzXT1vLGwuYXBwbHkoYyxvKX1lLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLGZ1bmN0aW9uKCl7aT1bXX0pLGUuYWRkTGlzdGVuZXIoInByb3BlcnR5IixmdW5jdGlvbihlKXt2YXIgdD1lLnByb3BlcnR5O0NTU0xpbnQuVXRpbC5pbmRleE9mKGMsdC50ZXh0KT4tMSYmaS5wdXNoKHQpfSksZS5hZGRMaXN0ZW5lcigiZW5kcnVsZSIsZnVuY3Rpb24oZSl7aWYoIWkubGVuZ3RoKXJldHVybjt2YXIgcz17fSxvLHUsYSxmLGwsYyxoLHAsZCx2O2ZvcihvPTAsdT1pLmxlbmd0aDtvPHU7bysrKXthPWlbb107Zm9yKGYgaW4gcilyLmhhc093blByb3BlcnR5KGYpJiYobD1yW2ZdLENTU0xpbnQuVXRpbC5pbmRleE9mKGwsYS50ZXh0KT4tMSYmKHNbZl18fChzW2ZdPXtmdWxsOmwuc2xpY2UoMCksYWN0dWFsOltdLGFjdHVhbE5vZGVzOltdfSksQ1NTTGludC5VdGlsLmluZGV4T2Yoc1tmXS5hY3R1YWwsYS50ZXh0KT09PS0xJiYoc1tmXS5hY3R1YWwucHVzaChhLnRleHQpLHNbZl0uYWN0dWFsTm9kZXMucHVzaChhKSkpKX1mb3IoZiBpbiBzKWlmKHMuaGFzT3duUHJvcGVydHkoZikpe2M9c1tmXSxoPWMuZnVsbCxwPWMuYWN0dWFsO2lmKGgubGVuZ3RoPnAubGVuZ3RoKWZvcihvPTAsdT1oLmxlbmd0aDtvPHU7bysrKWQ9aFtvXSxDU1NMaW50LlV0aWwuaW5kZXhPZihwLGQpPT09LTEmJih2PXAubGVuZ3RoPT09MT9wWzBdOnAubGVuZ3RoPT0yP3Auam9pbigiIGFuZCAiKTpwLmpvaW4oIiwgIiksdC5yZXBvcnQoIlRoZSBwcm9wZXJ0eSAiK2QrIiBpcyBjb21wYXRpYmxlIHdpdGggIit2KyIgYW5kIHNob3VsZCBiZSBpbmNsdWRlZCBhcyB3ZWxsLiIsYy5hY3R1YWxOb2Rlc1swXS5saW5lLGMuYWN0dWFsTm9kZXNbMF0uY29sLG4pKX19KX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJkaXNwbGF5LXByb3BlcnR5LWdyb3VwaW5nIixuYW1lOiJSZXF1aXJlIHByb3BlcnRpZXMgYXBwcm9wcmlhdGUgZm9yIGRpc3BsYXkiLGRlc2M6IkNlcnRhaW4gcHJvcGVydGllcyBzaG91bGRuJ3QgYmUgdXNlZCB3aXRoIGNlcnRhaW4gZGlzcGxheSBwcm9wZXJ0eSB2YWx1ZXMuIixicm93c2VyczoiQWxsIixpbml0OmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcyhlLHMsbyl7aVtlXSYmKHR5cGVvZiByW2VdIT0ic3RyaW5nInx8aVtlXS52YWx1ZS50b0xvd2VyQ2FzZSgpIT1yW2VdKSYmdC5yZXBvcnQob3x8ZSsiIGNhbid0IGJlIHVzZWQgd2l0aCBkaXNwbGF5OiAiK3MrIi4iLGlbZV0ubGluZSxpW2VdLmNvbCxuKX1mdW5jdGlvbiBvKCl7aT17fX1mdW5jdGlvbiB1KCl7dmFyIGU9aS5kaXNwbGF5P2kuZGlzcGxheS52YWx1ZTpudWxsO2lmKGUpc3dpdGNoKGUpe2Nhc2UiaW5saW5lIjpzKCJoZWlnaHQiLGUpLHMoIndpZHRoIixlKSxzKCJtYXJnaW4iLGUpLHMoIm1hcmdpbi10b3AiLGUpLHMoIm1hcmdpbi1ib3R0b20iLGUpLHMoImZsb2F0IixlLCJkaXNwbGF5OmlubGluZSBoYXMgbm8gZWZmZWN0IG9uIGZsb2F0ZWQgZWxlbWVudHMgKGJ1dCBtYXkgYmUgdXNlZCB0byBmaXggdGhlIElFNiBkb3VibGUtbWFyZ2luIGJ1ZykuIik7YnJlYWs7Y2FzZSJibG9jayI6cygidmVydGljYWwtYWxpZ24iLGUpO2JyZWFrO2Nhc2UiaW5saW5lLWJsb2NrIjpzKCJmbG9hdCIsZSk7YnJlYWs7ZGVmYXVsdDplLmluZGV4T2YoInRhYmxlLSIpPT09MCYmKHMoIm1hcmdpbiIsZSkscygibWFyZ2luLWxlZnQiLGUpLHMoIm1hcmdpbi1yaWdodCIsZSkscygibWFyZ2luLXRvcCIsZSkscygibWFyZ2luLWJvdHRvbSIsZSkscygiZmxvYXQiLGUpKX19dmFyIG49dGhpcyxyPXtkaXNwbGF5OjEsImZsb2F0Ijoibm9uZSIsaGVpZ2h0OjEsd2lkdGg6MSxtYXJnaW46MSwibWFyZ2luLWxlZnQiOjEsIm1hcmdpbi1yaWdodCI6MSwibWFyZ2luLWJvdHRvbSI6MSwibWFyZ2luLXRvcCI6MSxwYWRkaW5nOjEsInBhZGRpbmctbGVmdCI6MSwicGFkZGluZy1yaWdodCI6MSwicGFkZGluZy1ib3R0b20iOjEsInBhZGRpbmctdG9wIjoxLCJ2ZXJ0aWNhbC1hbGlnbiI6MX0saTtlLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLG8pLGUuYWRkTGlzdGVuZXIoInN0YXJ0Zm9udGZhY2UiLG8pLGUuYWRkTGlzdGVuZXIoInN0YXJ0a2V5ZnJhbWVydWxlIixvKSxlLmFkZExpc3RlbmVyKCJzdGFydHBhZ2VtYXJnaW4iLG8pLGUuYWRkTGlzdGVuZXIoInN0YXJ0cGFnZSIsbyksZS5hZGRMaXN0ZW5lcigicHJvcGVydHkiLGZ1bmN0aW9uKGUpe3ZhciB0PWUucHJvcGVydHkudGV4dC50b0xvd2VyQ2FzZSgpO3JbdF0mJihpW3RdPXt2YWx1ZTplLnZhbHVlLnRleHQsbGluZTplLnByb3BlcnR5LmxpbmUsY29sOmUucHJvcGVydHkuY29sfSl9KSxlLmFkZExpc3RlbmVyKCJlbmRydWxlIix1KSxlLmFkZExpc3RlbmVyKCJlbmRmb250ZmFjZSIsdSksZS5hZGRMaXN0ZW5lcigiZW5ka2V5ZnJhbWVydWxlIix1KSxlLmFkZExpc3RlbmVyKCJlbmRwYWdlbWFyZ2luIix1KSxlLmFkZExpc3RlbmVyKCJlbmRwYWdlIix1KX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJkdXBsaWNhdGUtYmFja2dyb3VuZC1pbWFnZXMiLG5hbWU6IkRpc2FsbG93IGR1cGxpY2F0ZSBiYWNrZ3JvdW5kIGltYWdlcyIsZGVzYzoiRXZlcnkgYmFja2dyb3VuZC1pbWFnZSBzaG91bGQgYmUgdW5pcXVlLiBVc2UgYSBjb21tb24gY2xhc3MgZm9yIGUuZy4gc3ByaXRlcy4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9e307ZS5hZGRMaXN0ZW5lcigicHJvcGVydHkiLGZ1bmN0aW9uKGUpe3ZhciBpPWUucHJvcGVydHkudGV4dCxzPWUudmFsdWUsbyx1O2lmKGkubWF0Y2goL2JhY2tncm91bmQvaSkpZm9yKG89MCx1PXMucGFydHMubGVuZ3RoO288dTtvKyspcy5wYXJ0c1tvXS50eXBlPT0idXJpIiYmKHR5cGVvZiByW3MucGFydHNbb10udXJpXT09InVuZGVmaW5lZCI/cltzLnBhcnRzW29dLnVyaV09ZTp0LnJlcG9ydCgiQmFja2dyb3VuZCBpbWFnZSAnIitzLnBhcnRzW29dLnVyaSsiJyB3YXMgdXNlZCBtdWx0aXBsZSB0aW1lcywgZmlyc3QgZGVjbGFyZWQgYXQgbGluZSAiK3Jbcy5wYXJ0c1tvXS51cmldLmxpbmUrIiwgY29sICIrcltzLnBhcnRzW29dLnVyaV0uY29sKyIuIixlLmxpbmUsZS5jb2wsbikpfSl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoiZHVwbGljYXRlLXByb3BlcnRpZXMiLG5hbWU6IkRpc2FsbG93IGR1cGxpY2F0ZSBwcm9wZXJ0aWVzIixkZXNjOiJEdXBsaWNhdGUgcHJvcGVydGllcyBtdXN0IGFwcGVhciBvbmUgYWZ0ZXIgdGhlIG90aGVyLiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIHMoZSl7cj17fX12YXIgbj10aGlzLHIsaTtlLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLHMpLGUuYWRkTGlzdGVuZXIoInN0YXJ0Zm9udGZhY2UiLHMpLGUuYWRkTGlzdGVuZXIoInN0YXJ0cGFnZSIscyksZS5hZGRMaXN0ZW5lcigic3RhcnRwYWdlbWFyZ2luIixzKSxlLmFkZExpc3RlbmVyKCJzdGFydGtleWZyYW1lcnVsZSIscyksZS5hZGRMaXN0ZW5lcigicHJvcGVydHkiLGZ1bmN0aW9uKGUpe3ZhciBzPWUucHJvcGVydHksbz1zLnRleHQudG9Mb3dlckNhc2UoKTtyW29dJiYoaSE9b3x8cltvXT09ZS52YWx1ZS50ZXh0KSYmdC5yZXBvcnQoIkR1cGxpY2F0ZSBwcm9wZXJ0eSAnIitlLnByb3BlcnR5KyInIGZvdW5kLiIsZS5saW5lLGUuY29sLG4pLHJbb109ZS52YWx1ZS50ZXh0LGk9b30pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6ImVtcHR5LXJ1bGVzIixuYW1lOiJEaXNhbGxvdyBlbXB0eSBydWxlcyIsZGVzYzoiUnVsZXMgd2l0aG91dCBhbnkgcHJvcGVydGllcyBzcGVjaWZpZWQgc2hvdWxkIGJlIHJlbW92ZWQuIixicm93c2VyczoiQWxsIixpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPTA7ZS5hZGRMaXN0ZW5lcigic3RhcnRydWxlIixmdW5jdGlvbigpe3I9MH0pLGUuYWRkTGlzdGVuZXIoInByb3BlcnR5IixmdW5jdGlvbigpe3IrK30pLGUuYWRkTGlzdGVuZXIoImVuZHJ1bGUiLGZ1bmN0aW9uKGUpe3ZhciBpPWUuc2VsZWN0b3JzO3I9PT0wJiZ0LnJlcG9ydCgiUnVsZSBpcyBlbXB0eS4iLGlbMF0ubGluZSxpWzBdLmNvbCxuKX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6ImVycm9ycyIsbmFtZToiUGFyc2luZyBFcnJvcnMiLGRlc2M6IlRoaXMgcnVsZSBsb29rcyBmb3IgcmVjb3ZlcmFibGUgc3ludGF4IGVycm9ycy4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2UuYWRkTGlzdGVuZXIoImVycm9yIixmdW5jdGlvbihlKXt0LmVycm9yKGUubWVzc2FnZSxlLmxpbmUsZS5jb2wsbil9KX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJmYWxsYmFjay1jb2xvcnMiLG5hbWU6IlJlcXVpcmUgZmFsbGJhY2sgY29sb3JzIixkZXNjOiJGb3Igb2xkZXIgYnJvd3NlcnMgdGhhdCBkb24ndCBzdXBwb3J0IFJHQkEsIEhTTCwgb3IgSFNMQSwgcHJvdmlkZSBhIGZhbGxiYWNrIGNvbG9yLiIsYnJvd3NlcnM6IklFNixJRTcsSUU4Iixpbml0OmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbyhlKXtzPXt9LHI9bnVsbH12YXIgbj10aGlzLHIsaT17Y29sb3I6MSxiYWNrZ3JvdW5kOjEsImJhY2tncm91bmQtY29sb3IiOjF9LHM7ZS5hZGRMaXN0ZW5lcigic3RhcnRydWxlIixvKSxlLmFkZExpc3RlbmVyKCJzdGFydGZvbnRmYWNlIixvKSxlLmFkZExpc3RlbmVyKCJzdGFydHBhZ2UiLG8pLGUuYWRkTGlzdGVuZXIoInN0YXJ0cGFnZW1hcmdpbiIsbyksZS5hZGRMaXN0ZW5lcigic3RhcnRrZXlmcmFtZXJ1bGUiLG8pLGUuYWRkTGlzdGVuZXIoInByb3BlcnR5IixmdW5jdGlvbihlKXt2YXIgcz1lLnByb3BlcnR5LG89cy50ZXh0LnRvTG93ZXJDYXNlKCksdT1lLnZhbHVlLnBhcnRzLGE9MCxmPSIiLGw9dS5sZW5ndGg7aWYoaVtvXSl3aGlsZShhPGwpdVthXS50eXBlPT0iY29sb3IiJiYoImFscGhhImluIHVbYV18fCJodWUiaW4gdVthXT8oLyhbXlwpXSspXCgvLnRlc3QodVthXSkmJihmPVJlZ0V4cC4kMS50b1VwcGVyQ2FzZSgpKSwoIXJ8fHIucHJvcGVydHkudGV4dC50b0xvd2VyQ2FzZSgpIT1vfHxyLmNvbG9yVHlwZSE9ImNvbXBhdCIpJiZ0LnJlcG9ydCgiRmFsbGJhY2sgIitvKyIgKGhleCBvciBSR0IpIHNob3VsZCBwcmVjZWRlICIrZisiICIrbysiLiIsZS5saW5lLGUuY29sLG4pKTplLmNvbG9yVHlwZT0iY29tcGF0IiksYSsrO3I9ZX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6ImZsb2F0cyIsbmFtZToiRGlzYWxsb3cgdG9vIG1hbnkgZmxvYXRzIixkZXNjOiJUaGlzIHJ1bGUgdGVzdHMgaWYgdGhlIGZsb2F0IHByb3BlcnR5IGlzIHVzZWQgdG9vIG1hbnkgdGltZXMiLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9MDtlLmFkZExpc3RlbmVyKCJwcm9wZXJ0eSIsZnVuY3Rpb24oZSl7ZS5wcm9wZXJ0eS50ZXh0LnRvTG93ZXJDYXNlKCk9PSJmbG9hdCImJmUudmFsdWUudGV4dC50b0xvd2VyQ2FzZSgpIT0ibm9uZSImJnIrK30pLGUuYWRkTGlzdGVuZXIoImVuZHN0eWxlc2hlZXQiLGZ1bmN0aW9uKCl7dC5zdGF0KCJmbG9hdHMiLHIpLHI+PTEwJiZ0LnJvbGx1cFdhcm4oIlRvbyBtYW55IGZsb2F0cyAoIityKyIpLCB5b3UncmUgcHJvYmFibHkgdXNpbmcgdGhlbSBmb3IgbGF5b3V0LiBDb25zaWRlciB1c2luZyBhIGdyaWQgc3lzdGVtIGluc3RlYWQuIixuKX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6ImZvbnQtZmFjZXMiLG5hbWU6IkRvbid0IHVzZSB0b28gbWFueSB3ZWIgZm9udHMiLGRlc2M6IlRvbyBtYW55IGRpZmZlcmVudCB3ZWIgZm9udHMgaW4gdGhlIHNhbWUgc3R5bGVzaGVldC4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9MDtlLmFkZExpc3RlbmVyKCJzdGFydGZvbnRmYWNlIixmdW5jdGlvbigpe3IrK30pLGUuYWRkTGlzdGVuZXIoImVuZHN0eWxlc2hlZXQiLGZ1bmN0aW9uKCl7cj41JiZ0LnJvbGx1cFdhcm4oIlRvbyBtYW55IEBmb250LWZhY2UgZGVjbGFyYXRpb25zICgiK3IrIikuIixuKX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6ImZvbnQtc2l6ZXMiLG5hbWU6IkRpc2FsbG93IHRvbyBtYW55IGZvbnQgc2l6ZXMiLGRlc2M6IkNoZWNrcyB0aGUgbnVtYmVyIG9mIGZvbnQtc2l6ZSBkZWNsYXJhdGlvbnMuIixicm93c2VyczoiQWxsIixpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPTA7ZS5hZGRMaXN0ZW5lcigicHJvcGVydHkiLGZ1bmN0aW9uKGUpe2UucHJvcGVydHk9PSJmb250LXNpemUiJiZyKyt9KSxlLmFkZExpc3RlbmVyKCJlbmRzdHlsZXNoZWV0IixmdW5jdGlvbigpe3Quc3RhdCgiZm9udC1zaXplcyIscikscj49MTAmJnQucm9sbHVwV2FybigiVG9vIG1hbnkgZm9udC1zaXplIGRlY2xhcmF0aW9ucyAoIityKyIpLCBhYnN0cmFjdGlvbiBuZWVkZWQuIixuKX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6ImdyYWRpZW50cyIsbmFtZToiUmVxdWlyZSBhbGwgZ3JhZGllbnQgZGVmaW5pdGlvbnMiLGRlc2M6IldoZW4gdXNpbmcgYSB2ZW5kb3ItcHJlZml4ZWQgZ3JhZGllbnQsIG1ha2Ugc3VyZSB0byB1c2UgdGhlbSBhbGwuIixicm93c2VyczoiQWxsIixpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyO2UuYWRkTGlzdGVuZXIoInN0YXJ0cnVsZSIsZnVuY3Rpb24oKXtyPXttb3o6MCx3ZWJraXQ6MCxvbGRXZWJraXQ6MCxtczowLG86MH19KSxlLmFkZExpc3RlbmVyKCJwcm9wZXJ0eSIsZnVuY3Rpb24oZSl7L1wtKG1venxtc3xvfHdlYmtpdCkoPzpcLSg/OmxpbmVhcnxyYWRpYWwpKVwtZ3JhZGllbnQvaS50ZXN0KGUudmFsdWUpP3JbUmVnRXhwLiQxXT0xOi9cLXdlYmtpdFwtZ3JhZGllbnQvaS50ZXN0KGUudmFsdWUpJiYoci5vbGRXZWJraXQ9MSl9KSxlLmFkZExpc3RlbmVyKCJlbmRydWxlIixmdW5jdGlvbihlKXt2YXIgaT1bXTtyLm1venx8aS5wdXNoKCJGaXJlZm94IDMuNisiKSxyLndlYmtpdHx8aS5wdXNoKCJXZWJraXQgKFNhZmFyaSA1KywgQ2hyb21lKSIpLHIub2xkV2Via2l0fHxpLnB1c2goIk9sZCBXZWJraXQgKFNhZmFyaSA0KywgQ2hyb21lKSIpLHIubXN8fGkucHVzaCgiSW50ZXJuZXQgRXhwbG9yZXIgMTArIiksci5vfHxpLnB1c2goIk9wZXJhIDExLjErIiksaS5sZW5ndGgmJmkubGVuZ3RoPDUmJnQucmVwb3J0KCJNaXNzaW5nIHZlbmRvci1wcmVmaXhlZCBDU1MgZ3JhZGllbnRzIGZvciAiK2kuam9pbigiLCAiKSsiLiIsZS5zZWxlY3RvcnNbMF0ubGluZSxlLnNlbGVjdG9yc1swXS5jb2wsbil9KX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJpZHMiLG5hbWU6IkRpc2FsbG93IElEcyBpbiBzZWxlY3RvcnMiLGRlc2M6IlNlbGVjdG9ycyBzaG91bGQgbm90IGNvbnRhaW4gSURzLiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7ZS5hZGRMaXN0ZW5lcigic3RhcnRydWxlIixmdW5jdGlvbihyKXt2YXIgaT1yLnNlbGVjdG9ycyxzLG8sdSxhLGYsbCxjO2ZvcihmPTA7ZjxpLmxlbmd0aDtmKyspe3M9aVtmXSxhPTA7Zm9yKGw9MDtsPHMucGFydHMubGVuZ3RoO2wrKyl7bz1zLnBhcnRzW2xdO2lmKG8udHlwZT09ZS5TRUxFQ1RPUl9QQVJUX1RZUEUpZm9yKGM9MDtjPG8ubW9kaWZpZXJzLmxlbmd0aDtjKyspdT1vLm1vZGlmaWVyc1tjXSx1LnR5cGU9PSJpZCImJmErK31hPT0xP3QucmVwb3J0KCJEb24ndCB1c2UgSURzIGluIHNlbGVjdG9ycy4iLHMubGluZSxzLmNvbCxuKTphPjEmJnQucmVwb3J0KGErIiBJRHMgaW4gdGhlIHNlbGVjdG9yLCByZWFsbHk/IixzLmxpbmUscy5jb2wsbil9fSl9fSksQ1NTTGludC5hZGRSdWxlKHtpZDoiaW1wb3J0IixuYW1lOiJEaXNhbGxvdyBAaW1wb3J0IixkZXNjOiJEb24ndCB1c2UgQGltcG9ydCwgdXNlIDxsaW5rPiBpbnN0ZWFkLiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7ZS5hZGRMaXN0ZW5lcigiaW1wb3J0IixmdW5jdGlvbihlKXt0LnJlcG9ydCgiQGltcG9ydCBwcmV2ZW50cyBwYXJhbGxlbCBkb3dubG9hZHMsIHVzZSA8bGluaz4gaW5zdGVhZC4iLGUubGluZSxlLmNvbCxuKX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6ImltcG9ydGFudCIsbmFtZToiRGlzYWxsb3cgIWltcG9ydGFudCIsZGVzYzoiQmUgY2FyZWZ1bCB3aGVuIHVzaW5nICFpbXBvcnRhbnQgZGVjbGFyYXRpb24iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9MDtlLmFkZExpc3RlbmVyKCJwcm9wZXJ0eSIsZnVuY3Rpb24oZSl7ZS5pbXBvcnRhbnQ9PT0hMCYmKHIrKyx0LnJlcG9ydCgiVXNlIG9mICFpbXBvcnRhbnQiLGUubGluZSxlLmNvbCxuKSl9KSxlLmFkZExpc3RlbmVyKCJlbmRzdHlsZXNoZWV0IixmdW5jdGlvbigpe3Quc3RhdCgiaW1wb3J0YW50IixyKSxyPj0xMCYmdC5yb2xsdXBXYXJuKCJUb28gbWFueSAhaW1wb3J0YW50IGRlY2xhcmF0aW9ucyAoIityKyIpLCB0cnkgdG8gdXNlIGxlc3MgdGhhbiAxMCB0byBhdm9pZCBzcGVjaWZpdHkgaXNzdWVzLiIsbil9KX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJrbm93bi1wcm9wZXJ0aWVzIixuYW1lOiJSZXF1aXJlIHVzZSBvZiBrbm93biBwcm9wZXJ0aWVzIixkZXNjOiJQcm9wZXJ0aWVzIHNob3VsZCBiZSBrbm93biAobGlzdGVkIGluIENTUyBzcGVjaWZpY2F0aW9uKSBvciBiZSBhIHZlbmRvci1wcmVmaXhlZCBwcm9wZXJ0eS4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9eyJhbGlnbm1lbnQtYWRqdXN0IjoxLCJhbGlnbm1lbnQtYmFzZWxpbmUiOjEsYW5pbWF0aW9uOjEsImFuaW1hdGlvbi1kZWxheSI6MSwiYW5pbWF0aW9uLWRpcmVjdGlvbiI6MSwiYW5pbWF0aW9uLWR1cmF0aW9uIjoxLCJhbmltYXRpb24tZmlsbC1tb2RlIjoxLCJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50IjoxLCJhbmltYXRpb24tbmFtZSI6MSwiYW5pbWF0aW9uLXBsYXktc3RhdGUiOjEsImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24iOjEsYXBwZWFyYW5jZToxLGF6aW11dGg6MSwiYmFja2ZhY2UtdmlzaWJpbGl0eSI6MSxiYWNrZ3JvdW5kOjEsImJhY2tncm91bmQtYXR0YWNobWVudCI6MSwiYmFja2dyb3VuZC1icmVhayI6MSwiYmFja2dyb3VuZC1jbGlwIjoxLCJiYWNrZ3JvdW5kLWNvbG9yIjoxLCJiYWNrZ3JvdW5kLWltYWdlIjoxLCJiYWNrZ3JvdW5kLW9yaWdpbiI6MSwiYmFja2dyb3VuZC1wb3NpdGlvbiI6MSwiYmFja2dyb3VuZC1yZXBlYXQiOjEsImJhY2tncm91bmQtc2l6ZSI6MSwiYmFzZWxpbmUtc2hpZnQiOjEsYmluZGluZzoxLGJsZWVkOjEsImJvb2ttYXJrLWxhYmVsIjoxLCJib29rbWFyay1sZXZlbCI6MSwiYm9va21hcmstc3RhdGUiOjEsImJvb2ttYXJrLXRhcmdldCI6MSxib3JkZXI6MSwiYm9yZGVyLWJvdHRvbSI6MSwiYm9yZGVyLWJvdHRvbS1jb2xvciI6MSwiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyI6MSwiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiOjEsImJvcmRlci1ib3R0b20tc3R5bGUiOjEsImJvcmRlci1ib3R0b20td2lkdGgiOjEsImJvcmRlci1jb2xsYXBzZSI6MSwiYm9yZGVyLWNvbG9yIjoxLCJib3JkZXItaW1hZ2UiOjEsImJvcmRlci1pbWFnZS1vdXRzZXQiOjEsImJvcmRlci1pbWFnZS1yZXBlYXQiOjEsImJvcmRlci1pbWFnZS1zbGljZSI6MSwiYm9yZGVyLWltYWdlLXNvdXJjZSI6MSwiYm9yZGVyLWltYWdlLXdpZHRoIjoxLCJib3JkZXItbGVmdCI6MSwiYm9yZGVyLWxlZnQtY29sb3IiOjEsImJvcmRlci1sZWZ0LXN0eWxlIjoxLCJib3JkZXItbGVmdC13aWR0aCI6MSwiYm9yZGVyLXJhZGl1cyI6MSwiYm9yZGVyLXJpZ2h0IjoxLCJib3JkZXItcmlnaHQtY29sb3IiOjEsImJvcmRlci1yaWdodC1zdHlsZSI6MSwiYm9yZGVyLXJpZ2h0LXdpZHRoIjoxLCJib3JkZXItc3BhY2luZyI6MSwiYm9yZGVyLXN0eWxlIjoxLCJib3JkZXItdG9wIjoxLCJib3JkZXItdG9wLWNvbG9yIjoxLCJib3JkZXItdG9wLWxlZnQtcmFkaXVzIjoxLCJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyI6MSwiYm9yZGVyLXRvcC1zdHlsZSI6MSwiYm9yZGVyLXRvcC13aWR0aCI6MSwiYm9yZGVyLXdpZHRoIjoxLGJvdHRvbToxLCJib3gtYWxpZ24iOjEsImJveC1kZWNvcmF0aW9uLWJyZWFrIjoxLCJib3gtZGlyZWN0aW9uIjoxLCJib3gtZmxleCI6MSwiYm94LWZsZXgtZ3JvdXAiOjEsImJveC1saW5lcyI6MSwiYm94LW9yZGluYWwtZ3JvdXAiOjEsImJveC1vcmllbnQiOjEsImJveC1wYWNrIjoxLCJib3gtc2hhZG93IjoxLCJib3gtc2l6aW5nIjoxLCJicmVhay1hZnRlciI6MSwiYnJlYWstYmVmb3JlIjoxLCJicmVhay1pbnNpZGUiOjEsImNhcHRpb24tc2lkZSI6MSxjbGVhcjoxLGNsaXA6MSxjb2xvcjoxLCJjb2xvci1wcm9maWxlIjoxLCJjb2x1bW4tY291bnQiOjEsImNvbHVtbi1maWxsIjoxLCJjb2x1bW4tZ2FwIjoxLCJjb2x1bW4tcnVsZSI6MSwiY29sdW1uLXJ1bGUtY29sb3IiOjEsImNvbHVtbi1ydWxlLXN0eWxlIjoxLCJjb2x1bW4tcnVsZS13aWR0aCI6MSwiY29sdW1uLXNwYW4iOjEsImNvbHVtbi13aWR0aCI6MSxjb2x1bW5zOjEsY29udGVudDoxLCJjb3VudGVyLWluY3JlbWVudCI6MSwiY291bnRlci1yZXNldCI6MSxjcm9wOjEsY3VlOjEsImN1ZS1hZnRlciI6MSwiY3VlLWJlZm9yZSI6MSxjdXJzb3I6MSxkaXJlY3Rpb246MSxkaXNwbGF5OjEsImRvbWluYW50LWJhc2VsaW5lIjoxLCJkcm9wLWluaXRpYWwtYWZ0ZXItYWRqdXN0IjoxLCJkcm9wLWluaXRpYWwtYWZ0ZXItYWxpZ24iOjEsImRyb3AtaW5pdGlhbC1iZWZvcmUtYWRqdXN0IjoxLCJkcm9wLWluaXRpYWwtYmVmb3JlLWFsaWduIjoxLCJkcm9wLWluaXRpYWwtc2l6ZSI6MSwiZHJvcC1pbml0aWFsLXZhbHVlIjoxLGVsZXZhdGlvbjoxLCJlbXB0eS1jZWxscyI6MSxmaXQ6MSwiZml0LXBvc2l0aW9uIjoxLCJmbG9hdCI6MSwiZmxvYXQtb2Zmc2V0IjoxLGZvbnQ6MSwiZm9udC1mYW1pbHkiOjEsImZvbnQtc2l6ZSI6MSwiZm9udC1zaXplLWFkanVzdCI6MSwiZm9udC1zdHJldGNoIjoxLCJmb250LXN0eWxlIjoxLCJmb250LXZhcmlhbnQiOjEsImZvbnQtd2VpZ2h0IjoxLCJncmlkLWNvbHVtbnMiOjEsImdyaWQtcm93cyI6MSwiaGFuZ2luZy1wdW5jdHVhdGlvbiI6MSxoZWlnaHQ6MSwiaHlwaGVuYXRlLWFmdGVyIjoxLCJoeXBoZW5hdGUtYmVmb3JlIjoxLCJoeXBoZW5hdGUtY2hhcmFjdGVyIjoxLCJoeXBoZW5hdGUtbGluZXMiOjEsImh5cGhlbmF0ZS1yZXNvdXJjZSI6MSxoeXBoZW5zOjEsaWNvbjoxLCJpbWFnZS1vcmllbnRhdGlvbiI6MSwiaW1hZ2UtcmVuZGVyaW5nIjoxLCJpbWFnZS1yZXNvbHV0aW9uIjoxLCJpbmxpbmUtYm94LWFsaWduIjoxLGxlZnQ6MSwibGV0dGVyLXNwYWNpbmciOjEsImxpbmUtaGVpZ2h0IjoxLCJsaW5lLXN0YWNraW5nIjoxLCJsaW5lLXN0YWNraW5nLXJ1YnkiOjEsImxpbmUtc3RhY2tpbmctc2hpZnQiOjEsImxpbmUtc3RhY2tpbmctc3RyYXRlZ3kiOjEsImxpc3Qtc3R5bGUiOjEsImxpc3Qtc3R5bGUtaW1hZ2UiOjEsImxpc3Qtc3R5bGUtcG9zaXRpb24iOjEsImxpc3Qtc3R5bGUtdHlwZSI6MSxtYXJnaW46MSwibWFyZ2luLWJvdHRvbSI6MSwibWFyZ2luLWxlZnQiOjEsIm1hcmdpbi1yaWdodCI6MSwibWFyZ2luLXRvcCI6MSxtYXJrOjEsIm1hcmstYWZ0ZXIiOjEsIm1hcmstYmVmb3JlIjoxLG1hcmtzOjEsIm1hcnF1ZWUtZGlyZWN0aW9uIjoxLCJtYXJxdWVlLXBsYXktY291bnQiOjEsIm1hcnF1ZWUtc3BlZWQiOjEsIm1hcnF1ZWUtc3R5bGUiOjEsIm1heC1oZWlnaHQiOjEsIm1heC13aWR0aCI6MSwibWluLWhlaWdodCI6MSwibWluLXdpZHRoIjoxLCJtb3ZlLXRvIjoxLCJuYXYtZG93biI6MSwibmF2LWluZGV4IjoxLCJuYXYtbGVmdCI6MSwibmF2LXJpZ2h0IjoxLCJuYXYtdXAiOjEsb3BhY2l0eToxLG9ycGhhbnM6MSxvdXRsaW5lOjEsIm91dGxpbmUtY29sb3IiOjEsIm91dGxpbmUtb2Zmc2V0IjoxLCJvdXRsaW5lLXN0eWxlIjoxLCJvdXRsaW5lLXdpZHRoIjoxLG92ZXJmbG93OjEsIm92ZXJmbG93LXN0eWxlIjoxLCJvdmVyZmxvdy14IjoxLCJvdmVyZmxvdy15IjoxLHBhZGRpbmc6MSwicGFkZGluZy1ib3R0b20iOjEsInBhZGRpbmctbGVmdCI6MSwicGFkZGluZy1yaWdodCI6MSwicGFkZGluZy10b3AiOjEscGFnZToxLCJwYWdlLWJyZWFrLWFmdGVyIjoxLCJwYWdlLWJyZWFrLWJlZm9yZSI6MSwicGFnZS1icmVhay1pbnNpZGUiOjEsInBhZ2UtcG9saWN5IjoxLHBhdXNlOjEsInBhdXNlLWFmdGVyIjoxLCJwYXVzZS1iZWZvcmUiOjEscGVyc3BlY3RpdmU6MSwicGVyc3BlY3RpdmUtb3JpZ2luIjoxLHBob25lbWVzOjEscGl0Y2g6MSwicGl0Y2gtcmFuZ2UiOjEsInBsYXktZHVyaW5nIjoxLHBvc2l0aW9uOjEsInByZXNlbnRhdGlvbi1sZXZlbCI6MSwicHVuY3R1YXRpb24tdHJpbSI6MSxxdW90ZXM6MSwicmVuZGVyaW5nLWludGVudCI6MSxyZXNpemU6MSxyZXN0OjEsInJlc3QtYWZ0ZXIiOjEsInJlc3QtYmVmb3JlIjoxLHJpY2huZXNzOjEscmlnaHQ6MSxyb3RhdGlvbjoxLCJyb3RhdGlvbi1wb2ludCI6MSwicnVieS1hbGlnbiI6MSwicnVieS1vdmVyaGFuZyI6MSwicnVieS1wb3NpdGlvbiI6MSwicnVieS1zcGFuIjoxLHNpemU6MSxzcGVhazoxLCJzcGVhay1oZWFkZXIiOjEsInNwZWFrLW51bWVyYWwiOjEsInNwZWFrLXB1bmN0dWF0aW9uIjoxLCJzcGVlY2gtcmF0ZSI6MSxzdHJlc3M6MSwic3RyaW5nLXNldCI6MSwidGFibGUtbGF5b3V0IjoxLHRhcmdldDoxLCJ0YXJnZXQtbmFtZSI6MSwidGFyZ2V0LW5ldyI6MSwidGFyZ2V0LXBvc2l0aW9uIjoxLCJ0ZXh0LWFsaWduIjoxLCJ0ZXh0LWFsaWduLWxhc3QiOjEsInRleHQtZGVjb3JhdGlvbiI6MSwidGV4dC1lbXBoYXNpcyI6MSwidGV4dC1oZWlnaHQiOjEsInRleHQtaW5kZW50IjoxLCJ0ZXh0LWp1c3RpZnkiOjEsInRleHQtb3V0bGluZSI6MSwidGV4dC1zaGFkb3ciOjEsInRleHQtdHJhbnNmb3JtIjoxLCJ0ZXh0LXdyYXAiOjEsdG9wOjEsdHJhbnNmb3JtOjEsInRyYW5zZm9ybS1vcmlnaW4iOjEsInRyYW5zZm9ybS1zdHlsZSI6MSx0cmFuc2l0aW9uOjEsInRyYW5zaXRpb24tZGVsYXkiOjEsInRyYW5zaXRpb24tZHVyYXRpb24iOjEsInRyYW5zaXRpb24tcHJvcGVydHkiOjEsInRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIjoxLCJ1bmljb2RlLWJpZGkiOjEsInVzZXItbW9kaWZ5IjoxLCJ1c2VyLXNlbGVjdCI6MSwidmVydGljYWwtYWxpZ24iOjEsdmlzaWJpbGl0eToxLCJ2b2ljZS1iYWxhbmNlIjoxLCJ2b2ljZS1kdXJhdGlvbiI6MSwidm9pY2UtZmFtaWx5IjoxLCJ2b2ljZS1waXRjaCI6MSwidm9pY2UtcGl0Y2gtcmFuZ2UiOjEsInZvaWNlLXJhdGUiOjEsInZvaWNlLXN0cmVzcyI6MSwidm9pY2Utdm9sdW1lIjoxLHZvbHVtZToxLCJ3aGl0ZS1zcGFjZSI6MSwid2hpdGUtc3BhY2UtY29sbGFwc2UiOjEsd2lkb3dzOjEsd2lkdGg6MSwid29yZC1icmVhayI6MSwid29yZC1zcGFjaW5nIjoxLCJ3b3JkLXdyYXAiOjEsInotaW5kZXgiOjEsZmlsdGVyOjEsem9vbToxLHNyYzoxfTtlLmFkZExpc3RlbmVyKCJwcm9wZXJ0eSIsZnVuY3Rpb24oZSl7dmFyIHI9ZS5wcm9wZXJ0eS50ZXh0LnRvTG93ZXJDYXNlKCk7ZS5pbnZhbGlkJiZ0LnJlcG9ydChlLmludmFsaWQubWVzc2FnZSxlLmxpbmUsZS5jb2wsbil9KX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJvdXRsaW5lLW5vbmUiLG5hbWU6IkRpc2FsbG93IG91dGxpbmU6IG5vbmUiLGRlc2M6IlVzZSBvZiBvdXRsaW5lOiBub25lIG9yIG91dGxpbmU6IDAgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gOmZvY3VzIHJ1bGVzLiIsYnJvd3NlcnM6IkFsbCIsdGFnczpbIkFjY2Vzc2liaWxpdHkiXSxpbml0OmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gaShlKXtlLnNlbGVjdG9ycz9yPXtsaW5lOmUubGluZSxjb2w6ZS5jb2wsc2VsZWN0b3JzOmUuc2VsZWN0b3JzLHByb3BDb3VudDowLG91dGxpbmU6ITF9OnI9bnVsbH1mdW5jdGlvbiBzKGUpe3ImJnIub3V0bGluZSYmKHIuc2VsZWN0b3JzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKCI6Zm9jdXMiKT09LTE/dC5yZXBvcnQoIk91dGxpbmVzIHNob3VsZCBvbmx5IGJlIG1vZGlmaWVkIHVzaW5nIDpmb2N1cy4iLHIubGluZSxyLmNvbCxuKTpyLnByb3BDb3VudD09MSYmdC5yZXBvcnQoIk91dGxpbmVzIHNob3VsZG4ndCBiZSBoaWRkZW4gdW5sZXNzIG90aGVyIHZpc3VhbCBjaGFuZ2VzIGFyZSBtYWRlLiIsci5saW5lLHIuY29sLG4pKX12YXIgbj10aGlzLHI7ZS5hZGRMaXN0ZW5lcigic3RhcnRydWxlIixpKSxlLmFkZExpc3RlbmVyKCJzdGFydGZvbnRmYWNlIixpKSxlLmFkZExpc3RlbmVyKCJzdGFydHBhZ2UiLGkpLGUuYWRkTGlzdGVuZXIoInN0YXJ0cGFnZW1hcmdpbiIsaSksZS5hZGRMaXN0ZW5lcigic3RhcnRrZXlmcmFtZXJ1bGUiLGkpLGUuYWRkTGlzdGVuZXIoInByb3BlcnR5IixmdW5jdGlvbihlKXt2YXIgdD1lLnByb3BlcnR5LnRleHQudG9Mb3dlckNhc2UoKSxuPWUudmFsdWU7ciYmKHIucHJvcENvdW50KyssdD09Im91dGxpbmUiJiYobj09Im5vbmUifHxuPT0iMCIpJiYoci5vdXRsaW5lPSEwKSl9KSxlLmFkZExpc3RlbmVyKCJlbmRydWxlIixzKSxlLmFkZExpc3RlbmVyKCJlbmRmb250ZmFjZSIscyksZS5hZGRMaXN0ZW5lcigiZW5kcGFnZSIscyksZS5hZGRMaXN0ZW5lcigiZW5kcGFnZW1hcmdpbiIscyksZS5hZGRMaXN0ZW5lcigiZW5ka2V5ZnJhbWVydWxlIixzKX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJvdmVycXVhbGlmaWVkLWVsZW1lbnRzIixuYW1lOiJEaXNhbGxvdyBvdmVycXVhbGlmaWVkIGVsZW1lbnRzIixkZXNjOiJEb24ndCB1c2UgY2xhc3NlcyBvciBJRHMgd2l0aCBlbGVtZW50cyAoYS5mb28gb3IgYSNmb28pLiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj17fTtlLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLGZ1bmN0aW9uKGkpe3ZhciBzPWkuc2VsZWN0b3JzLG8sdSxhLGYsbCxjO2ZvcihmPTA7ZjxzLmxlbmd0aDtmKyspe289c1tmXTtmb3IobD0wO2w8by5wYXJ0cy5sZW5ndGg7bCsrKXt1PW8ucGFydHNbbF07aWYodS50eXBlPT1lLlNFTEVDVE9SX1BBUlRfVFlQRSlmb3IoYz0wO2M8dS5tb2RpZmllcnMubGVuZ3RoO2MrKylhPXUubW9kaWZpZXJzW2NdLHUuZWxlbWVudE5hbWUmJmEudHlwZT09ImlkIj90LnJlcG9ydCgiRWxlbWVudCAoIit1KyIpIGlzIG92ZXJxdWFsaWZpZWQsIGp1c3QgdXNlICIrYSsiIHdpdGhvdXQgZWxlbWVudCBuYW1lLiIsdS5saW5lLHUuY29sLG4pOmEudHlwZT09ImNsYXNzIiYmKHJbYV18fChyW2FdPVtdKSxyW2FdLnB1c2goe21vZGlmaWVyOmEscGFydDp1fSkpfX19KSxlLmFkZExpc3RlbmVyKCJlbmRzdHlsZXNoZWV0IixmdW5jdGlvbigpe3ZhciBlO2ZvcihlIGluIHIpci5oYXNPd25Qcm9wZXJ0eShlKSYmcltlXS5sZW5ndGg9PTEmJnJbZV1bMF0ucGFydC5lbGVtZW50TmFtZSYmdC5yZXBvcnQoIkVsZW1lbnQgKCIrcltlXVswXS5wYXJ0KyIpIGlzIG92ZXJxdWFsaWZpZWQsIGp1c3QgdXNlICIrcltlXVswXS5tb2RpZmllcisiIHdpdGhvdXQgZWxlbWVudCBuYW1lLiIscltlXVswXS5wYXJ0LmxpbmUscltlXVswXS5wYXJ0LmNvbCxuKX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6InF1YWxpZmllZC1oZWFkaW5ncyIsbmFtZToiRGlzYWxsb3cgcXVhbGlmaWVkIGhlYWRpbmdzIixkZXNjOiJIZWFkaW5ncyBzaG91bGQgbm90IGJlIHF1YWxpZmllZCAobmFtZXNwYWNlZCkuIixicm93c2VyczoiQWxsIixpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztlLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLGZ1bmN0aW9uKHIpe3ZhciBpPXIuc2VsZWN0b3JzLHMsbyx1LGE7Zm9yKHU9MDt1PGkubGVuZ3RoO3UrKyl7cz1pW3VdO2ZvcihhPTA7YTxzLnBhcnRzLmxlbmd0aDthKyspbz1zLnBhcnRzW2FdLG8udHlwZT09ZS5TRUxFQ1RPUl9QQVJUX1RZUEUmJm8uZWxlbWVudE5hbWUmJi9oWzEtNl0vLnRlc3Qoby5lbGVtZW50TmFtZS50b1N0cmluZygpKSYmYT4wJiZ0LnJlcG9ydCgiSGVhZGluZyAoIitvLmVsZW1lbnROYW1lKyIpIHNob3VsZCBub3QgYmUgcXVhbGlmaWVkLiIsby5saW5lLG8uY29sLG4pfX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6InJlZ2V4LXNlbGVjdG9ycyIsbmFtZToiRGlzYWxsb3cgc2VsZWN0b3JzIHRoYXQgbG9vayBsaWtlIHJlZ2V4cyIsZGVzYzoiU2VsZWN0b3JzIHRoYXQgbG9vayBsaWtlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYXJlIHNsb3cgYW5kIHNob3VsZCBiZSBhdm9pZGVkLiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7ZS5hZGRMaXN0ZW5lcigic3RhcnRydWxlIixmdW5jdGlvbihyKXt2YXIgaT1yLnNlbGVjdG9ycyxzLG8sdSxhLGYsbDtmb3IoYT0wO2E8aS5sZW5ndGg7YSsrKXtzPWlbYV07Zm9yKGY9MDtmPHMucGFydHMubGVuZ3RoO2YrKyl7bz1zLnBhcnRzW2ZdO2lmKG8udHlwZT09ZS5TRUxFQ1RPUl9QQVJUX1RZUEUpZm9yKGw9MDtsPG8ubW9kaWZpZXJzLmxlbmd0aDtsKyspdT1vLm1vZGlmaWVyc1tsXSx1LnR5cGU9PSJhdHRyaWJ1dGUiJiYvKFtcflx8XF5cJFwqXT0pLy50ZXN0KHUpJiZ0LnJlcG9ydCgiQXR0cmlidXRlIHNlbGVjdG9ycyB3aXRoICIrUmVnRXhwLiQxKyIgYXJlIHNsb3chIix1LmxpbmUsdS5jb2wsbil9fX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6InJ1bGVzLWNvdW50IixuYW1lOiJSdWxlcyBDb3VudCIsZGVzYzoiVHJhY2sgaG93IG1hbnkgcnVsZXMgdGhlcmUgYXJlLiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj0wO2UuYWRkTGlzdGVuZXIoInN0YXJ0cnVsZSIsZnVuY3Rpb24oKXtyKyt9KSxlLmFkZExpc3RlbmVyKCJlbmRzdHlsZXNoZWV0IixmdW5jdGlvbigpe3Quc3RhdCgicnVsZS1jb3VudCIscil9KX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJzaG9ydGhhbmQiLG5hbWU6IlJlcXVpcmUgc2hvcnRoYW5kIHByb3BlcnRpZXMiLGRlc2M6IlVzZSBzaG9ydGhhbmQgcHJvcGVydGllcyB3aGVyZSBwb3NzaWJsZS4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBmKGUpe3U9e319ZnVuY3Rpb24gbChlKXt2YXIgcixpLHMsbztmb3IociBpbiBhKWlmKGEuaGFzT3duUHJvcGVydHkocikpe289MDtmb3IoaT0wLHM9YVtyXS5sZW5ndGg7aTxzO2krKylvKz11W2Fbcl1baV1dPzE6MDtvPT1hW3JdLmxlbmd0aCYmdC5yZXBvcnQoIlRoZSBwcm9wZXJ0aWVzICIrYVtyXS5qb2luKCIsICIpKyIgY2FuIGJlIHJlcGxhY2VkIGJ5ICIrcisiLiIsZS5saW5lLGUuY29sLG4pfX12YXIgbj10aGlzLHIsaSxzLG89e30sdSxhPXttYXJnaW46WyJtYXJnaW4tdG9wIiwibWFyZ2luLWJvdHRvbSIsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLXJpZ2h0Il0scGFkZGluZzpbInBhZGRpbmctdG9wIiwicGFkZGluZy1ib3R0b20iLCJwYWRkaW5nLWxlZnQiLCJwYWRkaW5nLXJpZ2h0Il19O2ZvcihyIGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShyKSlmb3IoaT0wLHM9YVtyXS5sZW5ndGg7aTxzO2krKylvW2Fbcl1baV1dPXI7ZS5hZGRMaXN0ZW5lcigic3RhcnRydWxlIixmKSxlLmFkZExpc3RlbmVyKCJzdGFydGZvbnRmYWNlIixmKSxlLmFkZExpc3RlbmVyKCJwcm9wZXJ0eSIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wcm9wZXJ0eS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksbj1lLnZhbHVlLnBhcnRzWzBdLnZhbHVlO29bdF0mJih1W3RdPTEpfSksZS5hZGRMaXN0ZW5lcigiZW5kcnVsZSIsbCksZS5hZGRMaXN0ZW5lcigiZW5kZm9udGZhY2UiLGwpfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6InRleHQtaW5kZW50IixuYW1lOiJEaXNhbGxvdyBuZWdhdGl2ZSB0ZXh0LWluZGVudCIsZGVzYzoiQ2hlY2tzIGZvciB0ZXh0IGluZGVudCBsZXNzIHRoYW4gLTk5cHgiLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBpKGUpe3I9ITF9ZnVuY3Rpb24gcyhlKXtyJiZ0LnJlcG9ydCgiTmVnYXRpdmUgdGV4dC1pbmRlbnQgZG9lc24ndCB3b3JrIHdlbGwgd2l0aCBSVEwuIElmIHlvdSB1c2UgdGV4dC1pbmRlbnQgZm9yIGltYWdlIHJlcGxhY2VtZW50IGV4cGxpY2l0bHkgc2V0IGRpcmVjdGlvbiBmb3IgdGhhdCBpdGVtIHRvIGx0ci4iLHIubGluZSxyLmNvbCxuKX12YXIgbj10aGlzLHI9ITE7ZS5hZGRMaXN0ZW5lcigic3RhcnRydWxlIixpKSxlLmFkZExpc3RlbmVyKCJzdGFydGZvbnRmYWNlIixpKSxlLmFkZExpc3RlbmVyKCJwcm9wZXJ0eSIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wcm9wZXJ0eS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksbj1lLnZhbHVlO3Q9PSJ0ZXh0LWluZGVudCImJm4ucGFydHNbMF0udmFsdWU8LTk5P3I9ZS5wcm9wZXJ0eTp0PT0iZGlyZWN0aW9uIiYmbj09Imx0ciImJihyPSExKX0pLGUuYWRkTGlzdGVuZXIoImVuZHJ1bGUiLHMpLGUuYWRkTGlzdGVuZXIoImVuZGZvbnRmYWNlIixzKX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJ1bmlxdWUtaGVhZGluZ3MiLG5hbWU6IkhlYWRpbmdzIHNob3VsZCBvbmx5IGJlIGRlZmluZWQgb25jZSIsZGVzYzoiSGVhZGluZ3Mgc2hvdWxkIGJlIGRlZmluZWQgb25seSBvbmNlLiIsYnJvd3NlcnM6IkFsbCIsaW5pdDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj17aDE6MCxoMjowLGgzOjAsaDQ6MCxoNTowLGg2OjB9O2UuYWRkTGlzdGVuZXIoInN0YXJ0cnVsZSIsZnVuY3Rpb24oZSl7dmFyIGk9ZS5zZWxlY3RvcnMscyxvLHUsYSxmO2ZvcihhPTA7YTxpLmxlbmd0aDthKyspe3M9aVthXSxvPXMucGFydHNbcy5wYXJ0cy5sZW5ndGgtMV07aWYoby5lbGVtZW50TmFtZSYmLyhoWzEtNl0pL2kudGVzdChvLmVsZW1lbnROYW1lLnRvU3RyaW5nKCkpKXtmb3IoZj0wO2Y8by5tb2RpZmllcnMubGVuZ3RoO2YrKylpZihvLm1vZGlmaWVyc1tmXS50eXBlPT0icHNldWRvIil7dT0hMDticmVha311fHwocltSZWdFeHAuJDFdKysscltSZWdFeHAuJDFdPjEmJnQucmVwb3J0KCJIZWFkaW5nICgiK28uZWxlbWVudE5hbWUrIikgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkLiIsby5saW5lLG8uY29sLG4pKX19fSksZS5hZGRMaXN0ZW5lcigiZW5kc3R5bGVzaGVldCIsZnVuY3Rpb24oZSl7dmFyIGkscz1bXTtmb3IoaSBpbiByKXIuaGFzT3duUHJvcGVydHkoaSkmJnJbaV0+MSYmcy5wdXNoKHJbaV0rIiAiK2krInMiKTtzLmxlbmd0aCYmdC5yb2xsdXBXYXJuKCJZb3UgaGF2ZSAiK3Muam9pbigiLCAiKSsiIGRlZmluZWQgaW4gdGhpcyBzdHlsZXNoZWV0LiIsbil9KX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJ1bml2ZXJzYWwtc2VsZWN0b3IiLG5hbWU6IkRpc2FsbG93IHVuaXZlcnNhbCBzZWxlY3RvciIsZGVzYzoiVGhlIHVuaXZlcnNhbCBzZWxlY3RvciAoKikgaXMga25vd24gdG8gYmUgc2xvdy4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2UuYWRkTGlzdGVuZXIoInN0YXJ0cnVsZSIsZnVuY3Rpb24oZSl7dmFyIHI9ZS5zZWxlY3RvcnMsaSxzLG8sdSxhLGY7Zm9yKHU9MDt1PHIubGVuZ3RoO3UrKylpPXJbdV0scz1pLnBhcnRzW2kucGFydHMubGVuZ3RoLTFdLHMuZWxlbWVudE5hbWU9PSIqIiYmdC5yZXBvcnQobi5kZXNjLHMubGluZSxzLmNvbCxuKX0pfX0pLENTU0xpbnQuYWRkUnVsZSh7aWQ6InVucXVhbGlmaWVkLWF0dHJpYnV0ZXMiLG5hbWU6IkRpc2FsbG93IHVucXVhbGlmaWVkIGF0dHJpYnV0ZSBzZWxlY3RvcnMiLGRlc2M6IlVucXVhbGlmaWVkIGF0dHJpYnV0ZSBzZWxlY3RvcnMgYXJlIGtub3duIHRvIGJlIHNsb3cuIixicm93c2VyczoiQWxsIixpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztlLmFkZExpc3RlbmVyKCJzdGFydHJ1bGUiLGZ1bmN0aW9uKHIpe3ZhciBpPXIuc2VsZWN0b3JzLHMsbyx1LGEsZixsO2ZvcihhPTA7YTxpLmxlbmd0aDthKyspe3M9aVthXSxvPXMucGFydHNbcy5wYXJ0cy5sZW5ndGgtMV07aWYoby50eXBlPT1lLlNFTEVDVE9SX1BBUlRfVFlQRSlmb3IobD0wO2w8by5tb2RpZmllcnMubGVuZ3RoO2wrKyl1PW8ubW9kaWZpZXJzW2xdLHUudHlwZT09ImF0dHJpYnV0ZSImJighby5lbGVtZW50TmFtZXx8by5lbGVtZW50TmFtZT09IioiKSYmdC5yZXBvcnQobi5kZXNjLG8ubGluZSxvLmNvbCxuKX19KX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJ2ZW5kb3ItcHJlZml4IixuYW1lOiJSZXF1aXJlIHN0YW5kYXJkIHByb3BlcnR5IHdpdGggdmVuZG9yIHByZWZpeCIsZGVzYzoiV2hlbiB1c2luZyBhIHZlbmRvci1wcmVmaXhlZCBwcm9wZXJ0eSwgbWFrZSBzdXJlIHRvIGluY2x1ZGUgdGhlIHN0YW5kYXJkIG9uZS4iLGJyb3dzZXJzOiJBbGwiLGluaXQ6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBvKCl7cj17fSxpPTF9ZnVuY3Rpb24gdShlKXt2YXIgaSxvLHUsYSxmLGwsYz1bXTtmb3IoaSBpbiByKXNbaV0mJmMucHVzaCh7YWN0dWFsOmksbmVlZGVkOnNbaV19KTtmb3Iobz0wLHU9Yy5sZW5ndGg7bzx1O28rKylmPWNbb10ubmVlZGVkLGw9Y1tvXS5hY3R1YWwscltmXT9yW2ZdWzBdLnBvczxyW2xdWzBdLnBvcyYmdC5yZXBvcnQoIlN0YW5kYXJkIHByb3BlcnR5ICciK2YrIicgc2hvdWxkIGNvbWUgYWZ0ZXIgdmVuZG9yLXByZWZpeGVkIHByb3BlcnR5ICciK2wrIicuIixyW2xdWzBdLm5hbWUubGluZSxyW2xdWzBdLm5hbWUuY29sLG4pOnQucmVwb3J0KCJNaXNzaW5nIHN0YW5kYXJkIHByb3BlcnR5ICciK2YrIicgdG8gZ28gYWxvbmcgd2l0aCAnIitsKyInLiIscltsXVswXS5uYW1lLmxpbmUscltsXVswXS5uYW1lLmNvbCxuKX12YXIgbj10aGlzLHIsaSxzPXsiLXdlYmtpdC1ib3JkZXItcmFkaXVzIjoiYm9yZGVyLXJhZGl1cyIsIi13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyI6ImJvcmRlci10b3AtbGVmdC1yYWRpdXMiLCItd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzIjoiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiLCItd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMiOiJib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIiwiLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyI6ImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIiwiLW8tYm9yZGVyLXJhZGl1cyI6ImJvcmRlci1yYWRpdXMiLCItby1ib3JkZXItdG9wLWxlZnQtcmFkaXVzIjoiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsIi1vLWJvcmRlci10b3AtcmlnaHQtcmFkaXVzIjoiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiLCItby1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIjoiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsIi1vLWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIjoiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiLCItbW96LWJvcmRlci1yYWRpdXMiOiJib3JkZXItcmFkaXVzIiwiLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQiOiJib3JkZXItdG9wLWxlZnQtcmFkaXVzIiwiLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0IjoiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiLCItbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdCI6ImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMiLCItbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQiOiJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyIsIi1tb3otY29sdW1uLWNvdW50IjoiY29sdW1uLWNvdW50IiwiLXdlYmtpdC1jb2x1bW4tY291bnQiOiJjb2x1bW4tY291bnQiLCItbW96LWNvbHVtbi1nYXAiOiJjb2x1bW4tZ2FwIiwiLXdlYmtpdC1jb2x1bW4tZ2FwIjoiY29sdW1uLWdhcCIsIi1tb3otY29sdW1uLXJ1bGUiOiJjb2x1bW4tcnVsZSIsIi13ZWJraXQtY29sdW1uLXJ1bGUiOiJjb2x1bW4tcnVsZSIsIi1tb3otY29sdW1uLXJ1bGUtc3R5bGUiOiJjb2x1bW4tcnVsZS1zdHlsZSIsIi13ZWJraXQtY29sdW1uLXJ1bGUtc3R5bGUiOiJjb2x1bW4tcnVsZS1zdHlsZSIsIi1tb3otY29sdW1uLXJ1bGUtY29sb3IiOiJjb2x1bW4tcnVsZS1jb2xvciIsIi13ZWJraXQtY29sdW1uLXJ1bGUtY29sb3IiOiJjb2x1bW4tcnVsZS1jb2xvciIsIi1tb3otY29sdW1uLXJ1bGUtd2lkdGgiOiJjb2x1bW4tcnVsZS13aWR0aCIsIi13ZWJraXQtY29sdW1uLXJ1bGUtd2lkdGgiOiJjb2x1bW4tcnVsZS13aWR0aCIsIi1tb3otY29sdW1uLXdpZHRoIjoiY29sdW1uLXdpZHRoIiwiLXdlYmtpdC1jb2x1bW4td2lkdGgiOiJjb2x1bW4td2lkdGgiLCItd2Via2l0LWNvbHVtbi1zcGFuIjoiY29sdW1uLXNwYW4iLCItd2Via2l0LWNvbHVtbnMiOiJjb2x1bW5zIiwiLW1vei1ib3gtc2hhZG93IjoiYm94LXNoYWRvdyIsIi13ZWJraXQtYm94LXNoYWRvdyI6ImJveC1zaGFkb3ciLCItbW96LXRyYW5zZm9ybSI6InRyYW5zZm9ybSIsIi13ZWJraXQtdHJhbnNmb3JtIjoidHJhbnNmb3JtIiwiLW8tdHJhbnNmb3JtIjoidHJhbnNmb3JtIiwiLW1zLXRyYW5zZm9ybSI6InRyYW5zZm9ybSIsIi1tb3otdHJhbnNmb3JtLW9yaWdpbiI6InRyYW5zZm9ybS1vcmlnaW4iLCItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4iOiJ0cmFuc2Zvcm0tb3JpZ2luIiwiLW8tdHJhbnNmb3JtLW9yaWdpbiI6InRyYW5zZm9ybS1vcmlnaW4iLCItbXMtdHJhbnNmb3JtLW9yaWdpbiI6InRyYW5zZm9ybS1vcmlnaW4iLCItbW96LWJveC1zaXppbmciOiJib3gtc2l6aW5nIiwiLXdlYmtpdC1ib3gtc2l6aW5nIjoiYm94LXNpemluZyIsIi1tb3otdXNlci1zZWxlY3QiOiJ1c2VyLXNlbGVjdCIsIi1raHRtbC11c2VyLXNlbGVjdCI6InVzZXItc2VsZWN0IiwiLXdlYmtpdC11c2VyLXNlbGVjdCI6InVzZXItc2VsZWN0In07ZS5hZGRMaXN0ZW5lcigic3RhcnRydWxlIixvKSxlLmFkZExpc3RlbmVyKCJzdGFydGZvbnRmYWNlIixvKSxlLmFkZExpc3RlbmVyKCJzdGFydHBhZ2UiLG8pLGUuYWRkTGlzdGVuZXIoInN0YXJ0cGFnZW1hcmdpbiIsbyksZS5hZGRMaXN0ZW5lcigic3RhcnRrZXlmcmFtZXJ1bGUiLG8pLGUuYWRkTGlzdGVuZXIoInByb3BlcnR5IixmdW5jdGlvbihlKXt2YXIgdD1lLnByb3BlcnR5LnRleHQudG9Mb3dlckNhc2UoKTtyW3RdfHwoclt0XT1bXSksclt0XS5wdXNoKHtuYW1lOmUucHJvcGVydHksdmFsdWU6ZS52YWx1ZSxwb3M6aSsrfSl9KSxlLmFkZExpc3RlbmVyKCJlbmRydWxlIix1KSxlLmFkZExpc3RlbmVyKCJlbmRmb250ZmFjZSIsdSksZS5hZGRMaXN0ZW5lcigiZW5kcGFnZSIsdSksZS5hZGRMaXN0ZW5lcigiZW5kcGFnZW1hcmdpbiIsdSksZS5hZGRMaXN0ZW5lcigiZW5ka2V5ZnJhbWVydWxlIix1KX19KSxDU1NMaW50LmFkZFJ1bGUoe2lkOiJ6ZXJvLXVuaXRzIixuYW1lOiJEaXNhbGxvdyB1bml0cyBmb3IgMCB2YWx1ZXMiLGRlc2M6IllvdSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgdW5pdHMgd2hlbiBhIHZhbHVlIGlzIDAuIixicm93c2VyczoiQWxsIixpbml0OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztlLmFkZExpc3RlbmVyKCJwcm9wZXJ0eSIsZnVuY3Rpb24oZSl7dmFyIHI9ZS52YWx1ZS5wYXJ0cyxpPTAscz1yLmxlbmd0aDt3aGlsZShpPHMpKHJbaV0udW5pdHN8fHJbaV0udHlwZT09InBlcmNlbnRhZ2UiKSYmcltpXS52YWx1ZT09PTAmJnJbaV0udHlwZSE9InRpbWUiJiZ0LnJlcG9ydCgiVmFsdWVzIG9mIDAgc2hvdWxkbid0IGhhdmUgdW5pdHMgc3BlY2lmaWVkLiIscltpXS5saW5lLHJbaV0uY29sLG4pLGkrK30pfX0pLENTU0xpbnQuYWRkRm9ybWF0dGVyKHtpZDoiY2hlY2tzdHlsZS14bWwiLG5hbWU6IkNoZWNrc3R5bGUgWE1MIGZvcm1hdCIsc3RhcnRGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4nPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48Y2hlY2tzdHlsZT4nfSxlbmRGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4iPC9jaGVja3N0eWxlPiJ9LGZvcm1hdFJlc3VsdHM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUubWVzc2FnZXMsaT1bXSxzPWZ1bmN0aW9uKGUpe3JldHVybiEhZSYmIm5hbWUiaW4gZT8ibmV0LmNzc2xpbnQuIitlLm5hbWUucmVwbGFjZSgvXHMvZywiIik6IiJ9LG89ZnVuY3Rpb24oZSl7cmV0dXJuIWV8fGUuY29uc3RydWN0b3IhPT1TdHJpbmc/IiI6ZS5yZXBsYWNlKC9cIi9nLCInIikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iil9O3JldHVybiByLmxlbmd0aD4wJiYoaS5wdXNoKCc8ZmlsZSBuYW1lPSInK3QrJyI+JyksQ1NTTGludC5VdGlsLmZvckVhY2gocixmdW5jdGlvbihlLHQpe2Uucm9sbHVwfHxpLnB1c2goJzxlcnJvciBsaW5lPSInK2UubGluZSsnIiBjb2x1bW49IicrZS5jb2wrJyIgc2V2ZXJpdHk9IicrZS50eXBlKyciJysnIG1lc3NhZ2U9IicrbyhlLm1lc3NhZ2UpKyciIHNvdXJjZT0iJytzKGUucnVsZSkrJyIvPicpfSksaS5wdXNoKCI8L2ZpbGU+IikpLGkuam9pbigiIil9fSksQ1NTTGludC5hZGRGb3JtYXR0ZXIoe2lkOiJjb21wYWN0IixuYW1lOiJDb21wYWN0LCAncG9yY2VsYWluJyBmb3JtYXQiLHN0YXJ0Rm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGVuZEZvcm1hdDpmdW5jdGlvbigpe3JldHVybiIifSxmb3JtYXRSZXN1bHRzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLm1lc3NhZ2VzLGk9IiI7bj1ufHx7fTt2YXIgcz1mdW5jdGlvbihlKXtyZXR1cm4gZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpfTtyZXR1cm4gci5sZW5ndGg9PT0wP24ucXVpZXQ/IiI6dCsiOiBMaW50IEZyZWUhIjooQ1NTTGludC5VdGlsLmZvckVhY2gocixmdW5jdGlvbihlLG4pe2Uucm9sbHVwP2krPXQrIjogIitzKGUudHlwZSkrIiAtICIrZS5tZXNzYWdlKyJcbiI6aSs9dCsiOiAiKyJsaW5lICIrZS5saW5lKyIsIGNvbCAiK2UuY29sKyIsICIrcyhlLnR5cGUpKyIgLSAiK2UubWVzc2FnZSsiXG4ifSksaSl9fSksQ1NTTGludC5hZGRGb3JtYXR0ZXIoe2lkOiJjc3NsaW50LXhtbCIsbmFtZToiQ1NTTGludCBYTUwgZm9ybWF0IixzdGFydEZvcm1hdDpmdW5jdGlvbigpe3JldHVybic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pjxjc3NsaW50Pid9LGVuZEZvcm1hdDpmdW5jdGlvbigpe3JldHVybiI8L2Nzc2xpbnQ+In0sZm9ybWF0UmVzdWx0czpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5tZXNzYWdlcyxpPVtdLHM9ZnVuY3Rpb24oZSl7cmV0dXJuIWV8fGUuY29uc3RydWN0b3IhPT1TdHJpbmc/IiI6ZS5yZXBsYWNlKC9cIi9nLCInIikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iil9O3JldHVybiByLmxlbmd0aD4wJiYoaS5wdXNoKCc8ZmlsZSBuYW1lPSInK3QrJyI+JyksQ1NTTGludC5VdGlsLmZvckVhY2gocixmdW5jdGlvbihlLHQpe2Uucm9sbHVwP2kucHVzaCgnPGlzc3VlIHNldmVyaXR5PSInK2UudHlwZSsnIiByZWFzb249IicrcyhlLm1lc3NhZ2UpKyciIGV2aWRlbmNlPSInK3MoZS5ldmlkZW5jZSkrJyIvPicpOmkucHVzaCgnPGlzc3VlIGxpbmU9IicrZS5saW5lKyciIGNoYXI9IicrZS5jb2wrJyIgc2V2ZXJpdHk9IicrZS50eXBlKyciJysnIHJlYXNvbj0iJytzKGUubWVzc2FnZSkrJyIgZXZpZGVuY2U9IicrcyhlLmV2aWRlbmNlKSsnIi8+Jyl9KSxpLnB1c2goIjwvZmlsZT4iKSksaS5qb2luKCIiKX19KSxDU1NMaW50LmFkZEZvcm1hdHRlcih7aWQ6ImxpbnQteG1sIixuYW1lOiJMaW50IFhNTCBmb3JtYXQiLHN0YXJ0Rm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+PGxpbnQ+J30sZW5kRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIjwvbGludD4ifSxmb3JtYXRSZXN1bHRzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLm1lc3NhZ2VzLGk9W10scz1mdW5jdGlvbihlKXtyZXR1cm4hZXx8ZS5jb25zdHJ1Y3RvciE9PVN0cmluZz8iIjplLnJlcGxhY2UoL1wiL2csIiciKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX07cmV0dXJuIHIubGVuZ3RoPjAmJihpLnB1c2goJzxmaWxlIG5hbWU9IicrdCsnIj4nKSxDU1NMaW50LlV0aWwuZm9yRWFjaChyLGZ1bmN0aW9uKGUsdCl7ZS5yb2xsdXA/aS5wdXNoKCc8aXNzdWUgc2V2ZXJpdHk9IicrZS50eXBlKyciIHJlYXNvbj0iJytzKGUubWVzc2FnZSkrJyIgZXZpZGVuY2U9IicrcyhlLmV2aWRlbmNlKSsnIi8+Jyk6aS5wdXNoKCc8aXNzdWUgbGluZT0iJytlLmxpbmUrJyIgY2hhcj0iJytlLmNvbCsnIiBzZXZlcml0eT0iJytlLnR5cGUrJyInKycgcmVhc29uPSInK3MoZS5tZXNzYWdlKSsnIiBldmlkZW5jZT0iJytzKGUuZXZpZGVuY2UpKyciLz4nKX0pLGkucHVzaCgiPC9maWxlPiIpKSxpLmpvaW4oIiIpfX0pLENTU0xpbnQuYWRkRm9ybWF0dGVyKHtpZDoidGV4dCIsbmFtZToiUGxhaW4gVGV4dCIsc3RhcnRGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4iIn0sZW5kRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGZvcm1hdFJlc3VsdHM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUubWVzc2FnZXMsaT0iIjtuPW58fHt9O2lmKHIubGVuZ3RoPT09MClyZXR1cm4gbi5xdWlldD8iIjoiXG5cbmNzc2xpbnQ6IE5vIGVycm9ycyBpbiAiK3QrIi4iO2k9IlxuXG5jc3NsaW50OiBUaGVyZSBhcmUgIityLmxlbmd0aCsiIHByb2JsZW1zIGluICIrdCsiLiI7dmFyIHM9dC5sYXN0SW5kZXhPZigiLyIpLG89dDtyZXR1cm4gcz09PS0xJiYocz10Lmxhc3RJbmRleE9mKCJcXCIpKSxzPi0xJiYobz10LnN1YnN0cmluZyhzKzEpKSxDU1NMaW50LlV0aWwuZm9yRWFjaChyLGZ1bmN0aW9uKGUsdCl7aT1pKyJcblxuIitvLGUucm9sbHVwPyhpKz0iXG4iKyh0KzEpKyI6ICIrZS50eXBlLGkrPSJcbiIrZS5tZXNzYWdlKTooaSs9IlxuIisodCsxKSsiOiAiK2UudHlwZSsiIGF0IGxpbmUgIitlLmxpbmUrIiwgY29sICIrZS5jb2wsaSs9IlxuIitlLm1lc3NhZ2UsaSs9IlxuIitlLmV2aWRlbmNlKX0pLGl9fSksZXhwb3J0cy5DU1NMaW50PUNTU0xpbnR9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/worker-javascript.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Im5vIHVzZSBzdHJpY3QiO2Z1bmN0aW9uIGluaXRCYXNlVXJscyhlKXtyZXF1aXJlLnRsbnM9ZX1mdW5jdGlvbiBpbml0U2VuZGVyKCl7dmFyIGU9cmVxdWlyZShudWxsLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsdD1yZXF1aXJlKG51bGwsImFjZS9saWIvb29wIiksbj1mdW5jdGlvbigpe307cmV0dXJuIGZ1bmN0aW9uKCl7dC5pbXBsZW1lbnQodGhpcyxlKSx0aGlzLmNhbGxiYWNrPWZ1bmN0aW9uKGUsdCl7cG9zdE1lc3NhZ2Uoe3R5cGU6ImNhbGwiLGlkOnQsZGF0YTplfSl9LHRoaXMuZW1pdD1mdW5jdGlvbihlLHQpe3Bvc3RNZXNzYWdlKHt0eXBlOiJldmVudCIsbmFtZTplLGRhdGE6dH0pfX0uY2FsbChuLnByb3RvdHlwZSksbmV3IG59dmFyIGNvbnNvbGU9e2xvZzpmdW5jdGlvbihlKXtwb3N0TWVzc2FnZSh7dHlwZToibG9nIixkYXRhOmV9KX19LHdpbmRvdz17Y29uc29sZTpjb25zb2xlfSxub3JtYWxpemVNb2R1bGU9ZnVuY3Rpb24oZSx0KXtpZih0LmluZGV4T2YoIiEiKSE9PS0xKXt2YXIgbj10LnNwbGl0KCIhIik7cmV0dXJuIG5vcm1hbGl6ZU1vZHVsZShlLG5bMF0pKyIhIitub3JtYWxpemVNb2R1bGUoZSxuWzFdKX1pZih0LmNoYXJBdCgwKT09Ii4iKXt2YXIgcj1lLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpLHQ9cisiLyIrdDt3aGlsZSh0LmluZGV4T2YoIi4iKSE9PS0xJiZpIT10KXZhciBpPXQsdD10LnJlcGxhY2UoL1wvXC5cLy8sIi8iKS5yZXBsYWNlKC9bXlwvXStcL1wuXC5cLy8sIiIpfXJldHVybiB0fSxyZXF1aXJlPWZ1bmN0aW9uKGUsdCl7dmFyIHQ9bm9ybWFsaXplTW9kdWxlKGUsdCksbj1yZXF1aXJlLm1vZHVsZXNbdF07aWYobilyZXR1cm4gbi5pbml0aWFsaXplZHx8KG4uZXhwb3J0cz1uLmZhY3RvcnkoKS5leHBvcnRzLG4uaW5pdGlhbGl6ZWQ9ITApLG4uZXhwb3J0czt2YXIgcj10LnNwbGl0KCIvIik7clswXT1yZXF1aXJlLnRsbnNbclswXV18fHJbMF07dmFyIGk9ci5qb2luKCIvIikrIi5qcyI7cmV0dXJuIHJlcXVpcmUuaWQ9dCxpbXBvcnRTY3JpcHRzKGkpLHJlcXVpcmUoZSx0KX07cmVxdWlyZS5tb2R1bGVzPXt9LHJlcXVpcmUudGxucz17fTt2YXIgZGVmaW5lPWZ1bmN0aW9uKGUsdCxuKXthcmd1bWVudHMubGVuZ3RoPT0yP249dDphcmd1bWVudHMubGVuZ3RoPT0xJiYobj1lLGU9cmVxdWlyZS5pZCk7aWYoZS5pbmRleE9mKCJ0ZXh0ISIpPT09MClyZXR1cm47dmFyIHI9ZnVuY3Rpb24odCxuKXtyZXR1cm4gcmVxdWlyZShlLHQsbil9O3JlcXVpcmUubW9kdWxlc1tlXT17ZmFjdG9yeTpmdW5jdGlvbigpe3ZhciBlPXtleHBvcnRzOnt9fSx0PW4ocixlLmV4cG9ydHMsZSk7cmV0dXJuIHQmJihlLmV4cG9ydHM9dCksZX19fSxtYWluLHNlbmRlcjtvbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhO2lmKHQuY29tbWFuZCltYWluW3QuY29tbWFuZF0uYXBwbHkobWFpbix0LmFyZ3MpO2Vsc2UgaWYodC5pbml0KXtpbml0QmFzZVVybHModC50bG5zKSxyZXF1aXJlKG51bGwsImFjZS9saWIvZml4b2xkYnJvd3NlcnMiKSxzZW5kZXI9aW5pdFNlbmRlcigpO3ZhciBuPXJlcXVpcmUobnVsbCx0Lm1vZHVsZSlbdC5jbGFzc25hbWVdO21haW49bmV3IG4oc2VuZGVyKX1lbHNlIHQuZXZlbnQmJnNlbmRlciYmc2VuZGVyLl9lbWl0KHQuZXZlbnQsdC5kYXRhKX0sZGVmaW5lKCJhY2UvbGliL2ZpeG9sZGJyb3dzZXJzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9yZWdleHAiLCJhY2UvbGliL2VzNS1zaGltIl0sZnVuY3Rpb24oZSx0LG4pe2UoIi4vcmVnZXhwIiksZSgiLi9lczUtc2hpbSIpfSksZGVmaW5lKCJhY2UvbGliL3JlZ2V4cCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBvKGUpe3JldHVybihlLmdsb2JhbD8iZyI6IiIpKyhlLmlnbm9yZUNhc2U/ImkiOiIiKSsoZS5tdWx0aWxpbmU/Im0iOiIiKSsoZS5leHRlbmRlZD8ieCI6IiIpKyhlLnN0aWNreT8ieSI6IiIpfWZ1bmN0aW9uIHUoZSx0LG4pe2lmKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKXJldHVybiBlLmluZGV4T2YodCxuKTtmb3IodmFyIHI9bnx8MDtyPGUubGVuZ3RoO3IrKylpZihlW3JdPT09dClyZXR1cm4gcjtyZXR1cm4tMX12YXIgcj17ZXhlYzpSZWdFeHAucHJvdG90eXBlLmV4ZWMsdGVzdDpSZWdFeHAucHJvdG90eXBlLnRlc3QsbWF0Y2g6U3RyaW5nLnByb3RvdHlwZS5tYXRjaCxyZXBsYWNlOlN0cmluZy5wcm90b3R5cGUucmVwbGFjZSxzcGxpdDpTdHJpbmcucHJvdG90eXBlLnNwbGl0fSxpPXIuZXhlYy5jYWxsKC8oKT8/LywiIilbMV09PT11bmRlZmluZWQscz1mdW5jdGlvbigpe3ZhciBlPS9eL2c7cmV0dXJuIHIudGVzdC5jYWxsKGUsIiIpLCFlLmxhc3RJbmRleH0oKTtpZihzJiZpKXJldHVybjtSZWdFeHAucHJvdG90eXBlLmV4ZWM9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5leGVjLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuLGE7aWYodHlwZW9mIGU9PSJzdHJpbmciJiZ0KXshaSYmdC5sZW5ndGg+MSYmdSh0LCIiKT4tMSYmKGE9UmVnRXhwKHRoaXMuc291cmNlLHIucmVwbGFjZS5jYWxsKG8odGhpcyksImciLCIiKSksci5yZXBsYWNlLmNhbGwoZS5zbGljZSh0LmluZGV4KSxhLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoLTI7ZSsrKWFyZ3VtZW50c1tlXT09PXVuZGVmaW5lZCYmKHRbZV09dW5kZWZpbmVkKX0pKTtpZih0aGlzLl94cmVnZXhwJiZ0aGlzLl94cmVnZXhwLmNhcHR1cmVOYW1lcylmb3IodmFyIGY9MTtmPHQubGVuZ3RoO2YrKyluPXRoaXMuX3hyZWdleHAuY2FwdHVyZU5hbWVzW2YtMV0sbiYmKHRbbl09dFtmXSk7IXMmJnRoaXMuZ2xvYmFsJiYhdFswXS5sZW5ndGgmJnRoaXMubGFzdEluZGV4PnQuaW5kZXgmJnRoaXMubGFzdEluZGV4LS19cmV0dXJuIHR9LHN8fChSZWdFeHAucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5leGVjLmNhbGwodGhpcyxlKTtyZXR1cm4gdCYmdGhpcy5nbG9iYWwmJiF0WzBdLmxlbmd0aCYmdGhpcy5sYXN0SW5kZXg+dC5pbmRleCYmdGhpcy5sYXN0SW5kZXgtLSwhIXR9KX0pLGRlZmluZSgiYWNlL2xpYi9lczUtc2hpbSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiB2KGUpe3RyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNlbnRpbmVsIix7fSksInNlbnRpbmVsImluIGV9Y2F0Y2godCl7fX1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7aWYodHlwZW9mIG4hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgcj1vLmNhbGwoYXJndW1lbnRzLDEpLGk9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgaSl7dmFyIGU9ZnVuY3Rpb24oKXt9O2UucHJvdG90eXBlPW4ucHJvdG90eXBlO3ZhciBzPW5ldyBlLHU9bi5hcHBseShzLHIuY29uY2F0KG8uY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIHUhPT1udWxsJiZPYmplY3QodSk9PT11P3U6c31yZXR1cm4gbi5hcHBseSh0LHIuY29uY2F0KG8uY2FsbChhcmd1bWVudHMpKSl9O3JldHVybiBpfSk7dmFyIHI9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsaT1BcnJheS5wcm90b3R5cGUscz1PYmplY3QucHJvdG90eXBlLG89aS5zbGljZSx1PXIuYmluZChzLnRvU3RyaW5nKSxhPXIuYmluZChzLmhhc093blByb3BlcnR5KSxmLGwsYyxoLHA7aWYocD1hKHMsIl9fZGVmaW5lR2V0dGVyX18iKSlmPXIuYmluZChzLl9fZGVmaW5lR2V0dGVyX18pLGw9ci5iaW5kKHMuX19kZWZpbmVTZXR0ZXJfXyksYz1yLmJpbmQocy5fX2xvb2t1cEdldHRlcl9fKSxoPXIuYmluZChzLl9fbG9va3VwU2V0dGVyX18pO0FycmF5LmlzQXJyYXl8fChBcnJheS5pc0FycmF5PWZ1bmN0aW9uKHQpe3JldHVybiB1KHQpPT0iW29iamVjdCBBcnJheV0ifSksQXJyYXkucHJvdG90eXBlLmZvckVhY2h8fChBcnJheS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9YXJndW1lbnRzWzFdLGk9MCxzPW4ubGVuZ3RoPj4+MDtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7d2hpbGUoaTxzKWkgaW4gbiYmdC5jYWxsKHIsbltpXSxpLG4pLGkrK30pLEFycmF5LnByb3RvdHlwZS5tYXB8fChBcnJheS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKHQpe3ZhciBuPV8odGhpcykscj1uLmxlbmd0aD4+PjAsaT1BcnJheShyKSxzPWFyZ3VtZW50c1sxXTtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBvPTA7bzxyO28rKylvIGluIG4mJihpW29dPXQuY2FsbChzLG5bb10sbyxuKSk7cmV0dXJuIGl9KSxBcnJheS5wcm90b3R5cGUuZmlsdGVyfHwoQXJyYXkucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wLGk9W10scz1hcmd1bWVudHNbMV07aWYodSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgbz0wO288cjtvKyspbyBpbiBuJiZ0LmNhbGwocyxuW29dLG8sbikmJmkucHVzaChuW29dKTtyZXR1cm4gaX0pLEFycmF5LnByb3RvdHlwZS5ldmVyeXx8KEFycmF5LnByb3RvdHlwZS5ldmVyeT1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wLGk9YXJndW1lbnRzWzFdO2lmKHUodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtmb3IodmFyIHM9MDtzPHI7cysrKWlmKHMgaW4gbiYmIXQuY2FsbChpLG5bc10scyxuKSlyZXR1cm4hMTtyZXR1cm4hMH0pLEFycmF5LnByb3RvdHlwZS5zb21lfHwoQXJyYXkucHJvdG90eXBlLnNvbWU9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MCxpPWFyZ3VtZW50c1sxXTtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBzPTA7czxyO3MrKylpZihzIGluIG4mJnQuY2FsbChpLG5bc10scyxuKSlyZXR1cm4hMDtyZXR1cm4hMX0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2V8fChBcnJheS5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKHQpe3ZhciBuPV8odGhpcykscj1uLmxlbmd0aD4+PjA7aWYodSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2lmKCFyJiZhcmd1bWVudHMubGVuZ3RoPT0xKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGk9MCxzO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpcz1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihpIGluIG4pe3M9bltpKytdO2JyZWFrfWlmKCsraT49cil0aHJvdyBuZXcgVHlwZUVycm9yfXdoaWxlKCEwKTtmb3IoO2k8cjtpKyspaSBpbiBuJiYocz10LmNhbGwodm9pZCAwLHMsbltpXSxpLG4pKTtyZXR1cm4gc30pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodHx8KEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodD1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wO2lmKHUodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtpZighciYmYXJndW1lbnRzLmxlbmd0aD09MSl0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBpLHM9ci0xO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpaT1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihzIGluIG4pe2k9bltzLS1dO2JyZWFrfWlmKC0tczwwKXRocm93IG5ldyBUeXBlRXJyb3J9d2hpbGUoITApO2RvIHMgaW4gdGhpcyYmKGk9dC5jYWxsKHZvaWQgMCxpLG5bc10scyxuKSk7d2hpbGUocy0tKTtyZXR1cm4gaX0pLEFycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MDtpZighcilyZXR1cm4tMTt2YXIgaT0wO2FyZ3VtZW50cy5sZW5ndGg+MSYmKGk9Tyhhcmd1bWVudHNbMV0pKSxpPWk+PTA/aTpNYXRoLm1heCgwLHIraSk7Zm9yKDtpPHI7aSsrKWlmKGkgaW4gbiYmbltpXT09PXQpcmV0dXJuIGk7cmV0dXJuLTF9KSxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Z8fChBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MDtpZighcilyZXR1cm4tMTt2YXIgaT1yLTE7YXJndW1lbnRzLmxlbmd0aD4xJiYoaT1NYXRoLm1pbihpLE8oYXJndW1lbnRzWzFdKSkpLGk9aT49MD9pOnItTWF0aC5hYnMoaSk7Zm9yKDtpPj0wO2ktLSlpZihpIGluIG4mJnQ9PT1uW2ldKXJldHVybiBpO3JldHVybi0xfSksT2JqZWN0LmdldFByb3RvdHlwZU9mfHwoT2JqZWN0LmdldFByb3RvdHlwZU9mPWZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8KHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6cyl9KTtpZighT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcil7dmFyIGQ9Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgY2FsbGVkIG9uIGEgbm9uLW9iamVjdDogIjtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWZ1bmN0aW9uKHQsbil7aWYodHlwZW9mIHQhPSJvYmplY3QiJiZ0eXBlb2YgdCE9ImZ1bmN0aW9uInx8dD09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihkK3QpO2lmKCFhKHQsbikpcmV0dXJuO3ZhciByLGksbztyPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07aWYocCl7dmFyIHU9dC5fX3Byb3RvX187dC5fX3Byb3RvX189czt2YXIgaT1jKHQsbiksbz1oKHQsbik7dC5fX3Byb3RvX189dTtpZihpfHxvKXJldHVybiBpJiYoci5nZXQ9aSksbyYmKHIuc2V0PW8pLHJ9cmV0dXJuIHIudmFsdWU9dFtuXSxyfX1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KX0pLE9iamVjdC5jcmVhdGV8fChPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKHQsbil7dmFyIHI7aWYodD09PW51bGwpcj17X19wcm90b19fOm51bGx9O2Vsc2V7aWYodHlwZW9mIHQhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoInR5cGVvZiBwcm90b3R5cGVbIit0eXBlb2YgdCsiXSAhPSAnb2JqZWN0JyIpO3ZhciBpPWZ1bmN0aW9uKCl7fTtpLnByb3RvdHlwZT10LHI9bmV3IGksci5fX3Byb3RvX189dH1yZXR1cm4gbiE9PXZvaWQgMCYmT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocixuKSxyfSk7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KXt2YXIgbT12KHt9KSxnPXR5cGVvZiBkb2N1bWVudD09InVuZGVmaW5lZCJ8fHYoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2lmKCFtfHwhZyl2YXIgeT1PYmplY3QuZGVmaW5lUHJvcGVydHl9aWYoIU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8eSl7dmFyIGI9IlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0OiAiLHc9Ik9iamVjdC5kZWZpbmVQcm9wZXJ0eSBjYWxsZWQgb24gbm9uLW9iamVjdDogIixFPSJnZXR0ZXJzICYgc2V0dGVycyBjYW4gbm90IGJlIGRlZmluZWQgb24gdGhpcyBqYXZhc2NyaXB0IGVuZ2luZSI7T2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKHQsbixyKXtpZih0eXBlb2YgdCE9Im9iamVjdCImJnR5cGVvZiB0IT0iZnVuY3Rpb24ifHx0PT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKHcrdCk7aWYodHlwZW9mIHIhPSJvYmplY3QiJiZ0eXBlb2YgciE9ImZ1bmN0aW9uInx8cj09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihiK3IpO2lmKHkpdHJ5e3JldHVybiB5LmNhbGwoT2JqZWN0LHQsbixyKX1jYXRjaChpKXt9aWYoYShyLCJ2YWx1ZSIpKWlmKHAmJihjKHQsbil8fGgodCxuKSkpe3ZhciBvPXQuX19wcm90b19fO3QuX19wcm90b19fPXMsZGVsZXRlIHRbbl0sdFtuXT1yLnZhbHVlLHQuX19wcm90b19fPW99ZWxzZSB0W25dPXIudmFsdWU7ZWxzZXtpZighcCl0aHJvdyBuZXcgVHlwZUVycm9yKEUpO2EociwiZ2V0IikmJmYodCxuLHIuZ2V0KSxhKHIsInNldCIpJiZsKHQsbixyLnNldCl9cmV0dXJuIHR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzfHwoT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24odCxuKXtmb3IodmFyIHIgaW4gbilhKG4scikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIsbltyXSk7cmV0dXJuIHR9KSxPYmplY3Quc2VhbHx8KE9iamVjdC5zZWFsPWZ1bmN0aW9uKHQpe3JldHVybiB0fSksT2JqZWN0LmZyZWV6ZXx8KE9iamVjdC5mcmVlemU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KTt0cnl7T2JqZWN0LmZyZWV6ZShmdW5jdGlvbigpe30pfWNhdGNoKFMpe09iamVjdC5mcmVlemU9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uOnQobil9fShPYmplY3QuZnJlZXplKX1PYmplY3QucHJldmVudEV4dGVuc2lvbnN8fChPYmplY3QucHJldmVudEV4dGVuc2lvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KSxPYmplY3QuaXNTZWFsZWR8fChPYmplY3QuaXNTZWFsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuITF9KSxPYmplY3QuaXNGcm96ZW58fChPYmplY3QuaXNGcm96ZW49ZnVuY3Rpb24odCl7cmV0dXJuITF9KSxPYmplY3QuaXNFeHRlbnNpYmxlfHwoT2JqZWN0LmlzRXh0ZW5zaWJsZT1mdW5jdGlvbih0KXtpZihPYmplY3QodCk9PT10KXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIG49IiI7d2hpbGUoYSh0LG4pKW4rPSI/Ijt0W25dPSEwO3ZhciByPWEodCxuKTtyZXR1cm4gZGVsZXRlIHRbbl0scn0pO2lmKCFPYmplY3Qua2V5cyl7dmFyIHg9ITAsVD1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLE49VC5sZW5ndGg7Zm9yKHZhciBDIGlue3RvU3RyaW5nOm51bGx9KXg9ITE7T2JqZWN0LmtleXM9ZnVuY3Rpb24gRChlKXtpZih0eXBlb2YgZSE9Im9iamVjdCImJnR5cGVvZiBlIT0iZnVuY3Rpb24ifHxlPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIEQ9W107Zm9yKHZhciB0IGluIGUpYShlLHQpJiZELnB1c2godCk7aWYoeClmb3IodmFyIG49MCxyPU47bjxyO24rKyl7dmFyIGk9VFtuXTthKGUsaSkmJkQucHVzaChpKX1yZXR1cm4gRH19aWYoIURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nfHwobmV3IERhdGUoLTYyMTk4NzU1MmU1KSkudG9JU09TdHJpbmcoKS5pbmRleE9mKCItMDAwMDAxIik9PT0tMSlEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3ZhciB0LG4scixpO2lmKCFpc0Zpbml0ZSh0aGlzKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcjt0PVt0aGlzLmdldFVUQ01vbnRoKCkrMSx0aGlzLmdldFVUQ0RhdGUoKSx0aGlzLmdldFVUQ0hvdXJzKCksdGhpcy5nZXRVVENNaW51dGVzKCksdGhpcy5nZXRVVENTZWNvbmRzKCldLGk9dGhpcy5nZXRVVENGdWxsWWVhcigpLGk9KGk8MD8iLSI6aT45OTk5PyIrIjoiIikrKCIwMDAwMCIrTWF0aC5hYnMoaSkpLnNsaWNlKDA8PWkmJmk8PTk5OTk/LTQ6LTYpLG49dC5sZW5ndGg7d2hpbGUobi0tKXI9dFtuXSxyPDEwJiYodFtuXT0iMCIrcik7cmV0dXJuIGkrIi0iK3Quc2xpY2UoMCwyKS5qb2luKCItIikrIlQiK3Quc2xpY2UoMikuam9pbigiOiIpKyIuIisoIjAwMCIrdGhpcy5nZXRVVENNaWxsaXNlY29uZHMoKSkuc2xpY2UoLTMpKyJaIn07RGF0ZS5ub3d8fChEYXRlLm5vdz1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksRGF0ZS5wcm90b3R5cGUudG9KU09OfHwoRGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0aGlzLnRvSVNPU3RyaW5nIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKX0pLERhdGUucGFyc2UoIisyNzU3NjAtMDktMTNUMDA6MDA6MDAuMDAwWiIpIT09ODY0ZTEzJiYoRGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbiBpKHQsbixyLHMsbyx1LGEpe3ZhciBmPWFyZ3VtZW50cy5sZW5ndGg7aWYodGhpcyBpbnN0YW5jZW9mIGUpe3ZhciBsPWY9PTEmJlN0cmluZyh0KT09PXQ/bmV3IGUoaS5wYXJzZSh0KSk6Zj49Nz9uZXcgZSh0LG4scixzLG8sdSxhKTpmPj02P25ldyBlKHQsbixyLHMsbyx1KTpmPj01P25ldyBlKHQsbixyLHMsbyk6Zj49ND9uZXcgZSh0LG4scixzKTpmPj0zP25ldyBlKHQsbixyKTpmPj0yP25ldyBlKHQsbik6Zj49MT9uZXcgZSh0KTpuZXcgZTtyZXR1cm4gbC5jb25zdHJ1Y3Rvcj1pLGx9cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxuPW5ldyBSZWdFeHAoIl4oXFxkezR9fFsrLV1cXGR7Nn0pKD86LShcXGR7Mn0pKD86LShcXGR7Mn0pKD86VChcXGR7Mn0pOihcXGR7Mn0pKD86OihcXGR7Mn0pKD86XFwuKFxcZHszfSkpPyk/KD86WnwoPzooWy0rXSkoXFxkezJ9KTooXFxkezJ9KSkpPyk/KT8pPyQiKTtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl07cmV0dXJuIHQubm93PWUubm93LHQuVVRDPWUuVVRDLHQucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wYXJzZT1mdW5jdGlvbihyKXt2YXIgaT1uLmV4ZWMocik7aWYoaSl7aS5zaGlmdCgpO2Zvcih2YXIgcz0xO3M8NztzKyspaVtzXT0rKGlbc118fChzPDM/MTowKSkscz09MSYmaVtzXS0tO3ZhciBvPStpLnBvcCgpLHU9K2kucG9wKCksYT1pLnBvcCgpLGY9MDtpZihhKXtpZih1PjIzfHxvPjU5KXJldHVybiBOYU47Zj0odSo2MCtvKSo2ZTQqKGE9PSIrIj8tMToxKX12YXIgbD0raVswXTtyZXR1cm4gMDw9bCYmbDw9OTk/KGlbMF09bCs0MDAsZS5VVEMuYXBwbHkodGhpcyxpKStmLTEyNjIyNzgwOGU1KTplLlVUQy5hcHBseSh0aGlzLGkpK2Z9cmV0dXJuIGUucGFyc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0fShEYXRlKSk7dmFyIGs9IglcbgtcZlxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI577u/IjtpZighU3RyaW5nLnByb3RvdHlwZS50cmltfHxrLnRyaW0oKSl7az0iWyIraysiXSI7dmFyIEw9bmV3IFJlZ0V4cCgiXiIraytrKyIqIiksQT1uZXcgUmVnRXhwKGsraysiKiQiKTtTdHJpbmcucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMpLnJlcGxhY2UoTCwiIikucmVwbGFjZShBLCIiKX19dmFyIE89ZnVuY3Rpb24oZSl7cmV0dXJuIGU9K2UsZSE9PWU/ZT0wOmUhPT0wJiZlIT09MS8wJiZlIT09LTEvMCYmKGU9KGU+MHx8LTEpKk1hdGguZmxvb3IoTWF0aC5hYnMoZSkpKSxlfSxNPSJhIlswXSE9ImEiLF89ZnVuY3Rpb24oZSl7aWYoZT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yO3JldHVybiBNJiZ0eXBlb2YgZT09InN0cmluZyImJmU/ZS5zcGxpdCgiIik6T2JqZWN0KGUpfX0pLGRlZmluZSgiYWNlL2xpYi9ldmVudF9lbWl0dGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt9O3IuX2VtaXQ9ci5fZGlzcGF0Y2hFdmVudD1mdW5jdGlvbihlLHQpe3RoaXMuX2V2ZW50UmVnaXN0cnk9dGhpcy5fZXZlbnRSZWdpc3RyeXx8e30sdGhpcy5fZGVmYXVsdEhhbmRsZXJzPXRoaXMuX2RlZmF1bHRIYW5kbGVyc3x8e307dmFyIG49dGhpcy5fZXZlbnRSZWdpc3RyeVtlXXx8W10scj10aGlzLl9kZWZhdWx0SGFuZGxlcnNbZV07aWYoIW4ubGVuZ3RoJiYhcilyZXR1cm47dD10fHx7fSx0LnR5cGU9ZSx0LnN0b3BQcm9wYWdhdGlvbnx8KHQuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7dGhpcy5wcm9wYWdhdGlvblN0b3BwZWQ9ITB9KSx0LnByZXZlbnREZWZhdWx0fHwodC5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMH0pO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXtuW2ldKHQpO2lmKHQucHJvcGFnYXRpb25TdG9wcGVkKWJyZWFrfWlmKHImJiF0LmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuIHIodCl9LHIuc2V0RGVmYXVsdEhhbmRsZXI9ZnVuY3Rpb24oZSx0KXt0aGlzLl9kZWZhdWx0SGFuZGxlcnM9dGhpcy5fZGVmYXVsdEhhbmRsZXJzfHx7fTtpZih0aGlzLl9kZWZhdWx0SGFuZGxlcnNbZV0pdGhyb3cgbmV3IEVycm9yKCJUaGUgZGVmYXVsdCBoYW5kbGVyIGZvciAnIitlKyInIGlzIGFscmVhZHkgc2V0Iik7dGhpcy5fZGVmYXVsdEhhbmRsZXJzW2VdPXR9LHIub249ci5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fTt2YXIgbj10aGlzLl9ldmVudFJlZ2lzdHJ5W2VdO2lmKCFuKXZhciBuPXRoaXMuX2V2ZW50UmVnaXN0cnlbZV09W107bi5pbmRleE9mKHQpPT0tMSYmbi5wdXNoKHQpfSxyLnJlbW92ZUxpc3RlbmVyPXIucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3RoaXMuX2V2ZW50UmVnaXN0cnk9dGhpcy5fZXZlbnRSZWdpc3RyeXx8e307dmFyIG49dGhpcy5fZXZlbnRSZWdpc3RyeVtlXTtpZighbilyZXR1cm47dmFyIHI9bi5pbmRleE9mKHQpO3IhPT0tMSYmbi5zcGxpY2UociwxKX0sci5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7dGhpcy5fZXZlbnRSZWdpc3RyeSYmKHRoaXMuX2V2ZW50UmVnaXN0cnlbZV09W10pfSx0LkV2ZW50RW1pdHRlcj1yfSksZGVmaW5lKCJhY2UvbGliL29vcCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmluaGVyaXRzPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt9O3JldHVybiBmdW5jdGlvbih0LG4pe2UucHJvdG90eXBlPW4ucHJvdG90eXBlLHQuc3VwZXJfPW4ucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyBlLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9fSgpLHQubWl4aW49ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl19LHQuaW1wbGVtZW50PWZ1bmN0aW9uKGUsbil7dC5taXhpbihlLG4pfX0pLGRlZmluZSgiYWNlL21vZGUvamF2YXNjcmlwdF93b3JrZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS93b3JrZXIvbWlycm9yIiwiYWNlL3dvcmtlci9qc2hpbnQiLCJhY2UvbmFyY2lzc3VzL3BhcnNlciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9saWIvb29wIiksaT1lKCIuLi93b3JrZXIvbWlycm9yIikuTWlycm9yLHM9ZSgiLi4vd29ya2VyL2pzaGludCIpLkpTSElOVCxvPWUoIi4uL25hcmNpc3N1cy9wYXJzZXIiKSx1PXQuSmF2YVNjcmlwdFdvcmtlcj1mdW5jdGlvbihlKXtpLmNhbGwodGhpcyxlKSx0aGlzLnNldFRpbWVvdXQoNTAwKX07ci5pbmhlcml0cyh1LGkpLGZ1bmN0aW9uKCl7dGhpcy5vblVwZGF0ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZG9jLmdldFZhbHVlKCk7ZT1lLnJlcGxhY2UoL14jIS4qXG4vLCJcbiIpO3RyeXtvLnBhcnNlKGUpfWNhdGNoKHQpe3ZhciBuPXQubWVzc2FnZS5zcGxpdCgiOiIpLHI9bi5wb3AoKS50cmltKCksaT1wYXJzZUludChuLnBvcCgpLnRyaW0oKSktMTt0aGlzLnNlbmRlci5lbWl0KCJuYXJjaXNzdXMiLHtyb3c6aSxjb2x1bW46bnVsbCx0ZXh0OnIsdHlwZToiZXJyb3IifSk7cmV0dXJufWZpbmFsbHl7fXMoZSx7dW5kZWY6ITEsb25ldmFyOiExLHBhc3NmYWlsOiExfSksdGhpcy5zZW5kZXIuZW1pdCgianNsaW50IixzLmVycm9ycyl9fS5jYWxsKHUucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL3dvcmtlci9taXJyb3IiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvZG9jdW1lbnQiLCJhY2UvbGliL2xhbmciXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vZG9jdW1lbnQiKS5Eb2N1bWVudCxpPWUoIi4uL2xpYi9sYW5nIikscz10Lk1pcnJvcj1mdW5jdGlvbihlKXt0aGlzLnNlbmRlcj1lO3ZhciB0PXRoaXMuZG9jPW5ldyByKCIiKSxuPXRoaXMuZGVmZXJyZWRVcGRhdGU9aS5kZWZlcnJlZENhbGwodGhpcy5vblVwZGF0ZS5iaW5kKHRoaXMpKSxzPXRoaXM7ZS5vbigiY2hhbmdlIixmdW5jdGlvbihlKXt0LmFwcGx5RGVsdGFzKFtlLmRhdGFdKSxuLnNjaGVkdWxlKHMuJHRpbWVvdXQpfSl9OyhmdW5jdGlvbigpe3RoaXMuJHRpbWVvdXQ9NTAwLHRoaXMuc2V0VGltZW91dD1mdW5jdGlvbihlKXt0aGlzLiR0aW1lb3V0PWV9LHRoaXMuc2V0VmFsdWU9ZnVuY3Rpb24oZSl7dGhpcy5kb2Muc2V0VmFsdWUoZSksdGhpcy5kZWZlcnJlZFVwZGF0ZS5zY2hlZHVsZSh0aGlzLiR0aW1lb3V0KX0sdGhpcy5nZXRWYWx1ZT1mdW5jdGlvbihlKXt0aGlzLnNlbmRlci5jYWxsYmFjayh0aGlzLmRvYy5nZXRWYWx1ZSgpLGUpfSx0aGlzLm9uVXBkYXRlPWZ1bmN0aW9uKCl7fX0pLmNhbGwocy5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvZG9jdW1lbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvZXZlbnRfZW1pdHRlciIsImFjZS9yYW5nZSIsImFjZS9hbmNob3IiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9saWIvb29wIiksaT1lKCIuL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLHM9ZSgiLi9yYW5nZSIpLlJhbmdlLG89ZSgiLi9hbmNob3IiKS5BbmNob3IsdT1mdW5jdGlvbihlKXt0aGlzLiRsaW5lcz1bXSxlLmxlbmd0aD09MD90aGlzLiRsaW5lcz1bIiJdOkFycmF5LmlzQXJyYXkoZSk/dGhpcy5pbnNlcnRMaW5lcygwLGUpOnRoaXMuaW5zZXJ0KHtyb3c6MCxjb2x1bW46MH0sZSl9OyhmdW5jdGlvbigpe3IuaW1wbGVtZW50KHRoaXMsaSksdGhpcy5zZXRWYWx1ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldExlbmd0aCgpO3RoaXMucmVtb3ZlKG5ldyBzKDAsMCx0LHRoaXMuZ2V0TGluZSh0LTEpLmxlbmd0aCkpLHRoaXMuaW5zZXJ0KHtyb3c6MCxjb2x1bW46MH0sZSl9LHRoaXMuZ2V0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRBbGxMaW5lcygpLmpvaW4odGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCkpfSx0aGlzLmNyZWF0ZUFuY2hvcj1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgbyh0aGlzLGUsdCl9LCJhYWEiLnNwbGl0KC9hLykubGVuZ3RoPT0wP3RoaXMuJHNwbGl0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1xyXG58XHIvZywiXG4iKS5zcGxpdCgiXG4iKX06dGhpcy4kc3BsaXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3BsaXQoL1xyXG58XHJ8XG4vKX0sdGhpcy4kZGV0ZWN0TmV3TGluZT1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eLio/KFxyXG58XHJ8XG4pL20pO3Q/dGhpcy4kYXV0b05ld0xpbmU9dFsxXTp0aGlzLiRhdXRvTmV3TGluZT0iXG4ifSx0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXI9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy4kbmV3TGluZU1vZGUpe2Nhc2Uid2luZG93cyI6cmV0dXJuIlxyXG4iO2Nhc2UidW5peCI6cmV0dXJuIlxuIjtjYXNlImF1dG8iOnJldHVybiB0aGlzLiRhdXRvTmV3TGluZX19LHRoaXMuJGF1dG9OZXdMaW5lPSJcbiIsdGhpcy4kbmV3TGluZU1vZGU9ImF1dG8iLHRoaXMuc2V0TmV3TGluZU1vZGU9ZnVuY3Rpb24oZSl7aWYodGhpcy4kbmV3TGluZU1vZGU9PT1lKXJldHVybjt0aGlzLiRuZXdMaW5lTW9kZT1lfSx0aGlzLmdldE5ld0xpbmVNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJG5ld0xpbmVNb2RlfSx0aGlzLmlzTmV3TGluZT1mdW5jdGlvbihlKXtyZXR1cm4gZT09IlxyXG4ifHxlPT0iXHIifHxlPT0iXG4ifSx0aGlzLmdldExpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuJGxpbmVzW2VdfHwiIn0sdGhpcy5nZXRMaW5lcz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLiRsaW5lcy5zbGljZShlLHQrMSl9LHRoaXMuZ2V0QWxsTGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRMaW5lcygwLHRoaXMuZ2V0TGVuZ3RoKCkpfSx0aGlzLmdldExlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRsaW5lcy5sZW5ndGh9LHRoaXMuZ2V0VGV4dFJhbmdlPWZ1bmN0aW9uKGUpe2lmKGUuc3RhcnQucm93PT1lLmVuZC5yb3cpcmV0dXJuIHRoaXMuJGxpbmVzW2Uuc3RhcnQucm93XS5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4sZS5lbmQuY29sdW1uKTt2YXIgdD10aGlzLmdldExpbmVzKGUuc3RhcnQucm93KzEsZS5lbmQucm93LTEpO3JldHVybiB0LnVuc2hpZnQoKHRoaXMuJGxpbmVzW2Uuc3RhcnQucm93XXx8IiIpLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbikpLHQucHVzaCgodGhpcy4kbGluZXNbZS5lbmQucm93XXx8IiIpLnN1YnN0cmluZygwLGUuZW5kLmNvbHVtbikpLHQuam9pbih0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSl9LHRoaXMuJGNsaXBQb3NpdGlvbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldExlbmd0aCgpO3JldHVybiBlLnJvdz49dCYmKGUucm93PU1hdGgubWF4KDAsdC0xKSxlLmNvbHVtbj10aGlzLmdldExpbmUodC0xKS5sZW5ndGgpLGV9LHRoaXMuaW5zZXJ0PWZ1bmN0aW9uKGUsdCl7aWYoIXR8fHQubGVuZ3RoPT09MClyZXR1cm4gZTtlPXRoaXMuJGNsaXBQb3NpdGlvbihlKSx0aGlzLmdldExlbmd0aCgpPD0xJiZ0aGlzLiRkZXRlY3ROZXdMaW5lKHQpO3ZhciBuPXRoaXMuJHNwbGl0KHQpLHI9bi5zcGxpY2UoMCwxKVswXSxpPW4ubGVuZ3RoPT0wP251bGw6bi5zcGxpY2Uobi5sZW5ndGgtMSwxKVswXTtyZXR1cm4gZT10aGlzLmluc2VydEluTGluZShlLHIpLGkhPT1udWxsJiYoZT10aGlzLmluc2VydE5ld0xpbmUoZSksZT10aGlzLmluc2VydExpbmVzKGUucm93LG4pLGU9dGhpcy5pbnNlcnRJbkxpbmUoZSxpfHwiIikpLGV9LHRoaXMuaW5zZXJ0TGluZXM9ZnVuY3Rpb24oZSx0KXtpZih0Lmxlbmd0aD09MClyZXR1cm57cm93OmUsY29sdW1uOjB9O2lmKHQubGVuZ3RoPjY1NTM1KXt2YXIgbj10aGlzLmluc2VydExpbmVzKGUsdC5zbGljZSg2NTUzNSkpO3Q9dC5zbGljZSgwLDY1NTM1KX12YXIgcj1bZSwwXTtyLnB1c2guYXBwbHkocix0KSx0aGlzLiRsaW5lcy5zcGxpY2UuYXBwbHkodGhpcy4kbGluZXMscik7dmFyIGk9bmV3IHMoZSwwLGUrdC5sZW5ndGgsMCksbz17YWN0aW9uOiJpbnNlcnRMaW5lcyIscmFuZ2U6aSxsaW5lczp0fTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTpvfSksbnx8aS5lbmR9LHRoaXMuaW5zZXJ0TmV3TGluZT1mdW5jdGlvbihlKXtlPXRoaXMuJGNsaXBQb3NpdGlvbihlKTt2YXIgdD10aGlzLiRsaW5lc1tlLnJvd118fCIiO3RoaXMuJGxpbmVzW2Uucm93XT10LnN1YnN0cmluZygwLGUuY29sdW1uKSx0aGlzLiRsaW5lcy5zcGxpY2UoZS5yb3crMSwwLHQuc3Vic3RyaW5nKGUuY29sdW1uLHQubGVuZ3RoKSk7dmFyIG49e3JvdzplLnJvdysxLGNvbHVtbjowfSxyPXthY3Rpb246Imluc2VydFRleHQiLHJhbmdlOnMuZnJvbVBvaW50cyhlLG4pLHRleHQ6dGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCl9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOnJ9KSxufSx0aGlzLmluc2VydEluTGluZT1mdW5jdGlvbihlLHQpe2lmKHQubGVuZ3RoPT0wKXJldHVybiBlO3ZhciBuPXRoaXMuJGxpbmVzW2Uucm93XXx8IiI7dGhpcy4kbGluZXNbZS5yb3ddPW4uc3Vic3RyaW5nKDAsZS5jb2x1bW4pK3Qrbi5zdWJzdHJpbmcoZS5jb2x1bW4pO3ZhciByPXtyb3c6ZS5yb3csY29sdW1uOmUuY29sdW1uK3QubGVuZ3RofSxpPXthY3Rpb246Imluc2VydFRleHQiLHJhbmdlOnMuZnJvbVBvaW50cyhlLHIpLHRleHQ6dH07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6aX0pLHJ9LHRoaXMucmVtb3ZlPWZ1bmN0aW9uKGUpe2Uuc3RhcnQ9dGhpcy4kY2xpcFBvc2l0aW9uKGUuc3RhcnQpLGUuZW5kPXRoaXMuJGNsaXBQb3NpdGlvbihlLmVuZCk7aWYoZS5pc0VtcHR5KCkpcmV0dXJuIGUuc3RhcnQ7dmFyIHQ9ZS5zdGFydC5yb3csbj1lLmVuZC5yb3c7aWYoZS5pc011bHRpTGluZSgpKXt2YXIgcj1lLnN0YXJ0LmNvbHVtbj09MD90OnQrMSxpPW4tMTtlLmVuZC5jb2x1bW4+MCYmdGhpcy5yZW1vdmVJbkxpbmUobiwwLGUuZW5kLmNvbHVtbiksaT49ciYmdGhpcy5yZW1vdmVMaW5lcyhyLGkpLHIhPXQmJih0aGlzLnJlbW92ZUluTGluZSh0LGUuc3RhcnQuY29sdW1uLHRoaXMuZ2V0TGluZSh0KS5sZW5ndGgpLHRoaXMucmVtb3ZlTmV3TGluZShlLnN0YXJ0LnJvdykpfWVsc2UgdGhpcy5yZW1vdmVJbkxpbmUodCxlLnN0YXJ0LmNvbHVtbixlLmVuZC5jb2x1bW4pO3JldHVybiBlLnN0YXJ0fSx0aGlzLnJlbW92ZUluTGluZT1mdW5jdGlvbihlLHQsbil7aWYodD09bilyZXR1cm47dmFyIHI9bmV3IHMoZSx0LGUsbiksaT10aGlzLmdldExpbmUoZSksbz1pLnN1YnN0cmluZyh0LG4pLHU9aS5zdWJzdHJpbmcoMCx0KStpLnN1YnN0cmluZyhuLGkubGVuZ3RoKTt0aGlzLiRsaW5lcy5zcGxpY2UoZSwxLHUpO3ZhciBhPXthY3Rpb246InJlbW92ZVRleHQiLHJhbmdlOnIsdGV4dDpvfTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTphfSksci5zdGFydH0sdGhpcy5yZW1vdmVMaW5lcz1mdW5jdGlvbihlLHQpe3ZhciBuPW5ldyBzKGUsMCx0KzEsMCkscj10aGlzLiRsaW5lcy5zcGxpY2UoZSx0LWUrMSksaT17YWN0aW9uOiJyZW1vdmVMaW5lcyIscmFuZ2U6bixubDp0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSxsaW5lczpyfTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTppfSkscn0sdGhpcy5yZW1vdmVOZXdMaW5lPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0TGluZShlKSxuPXRoaXMuZ2V0TGluZShlKzEpLHI9bmV3IHMoZSx0Lmxlbmd0aCxlKzEsMCksaT10K247dGhpcy4kbGluZXMuc3BsaWNlKGUsMixpKTt2YXIgbz17YWN0aW9uOiJyZW1vdmVUZXh0IixyYW5nZTpyLHRleHQ6dGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCl9O3RoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6b30pfSx0aGlzLnJlcGxhY2U9ZnVuY3Rpb24oZSx0KXtpZih0Lmxlbmd0aD09MCYmZS5pc0VtcHR5KCkpcmV0dXJuIGUuc3RhcnQ7aWYodD09dGhpcy5nZXRUZXh0UmFuZ2UoZSkpcmV0dXJuIGUuZW5kO3RoaXMucmVtb3ZlKGUpO2lmKHQpdmFyIG49dGhpcy5pbnNlcnQoZS5zdGFydCx0KTtlbHNlIG49ZS5zdGFydDtyZXR1cm4gbn0sdGhpcy5hcHBseURlbHRhcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG49ZVt0XSxyPXMuZnJvbVBvaW50cyhuLnJhbmdlLnN0YXJ0LG4ucmFuZ2UuZW5kKTtuLmFjdGlvbj09Imluc2VydExpbmVzIj90aGlzLmluc2VydExpbmVzKHIuc3RhcnQucm93LG4ubGluZXMpOm4uYWN0aW9uPT0iaW5zZXJ0VGV4dCI/dGhpcy5pbnNlcnQoci5zdGFydCxuLnRleHQpOm4uYWN0aW9uPT0icmVtb3ZlTGluZXMiP3RoaXMucmVtb3ZlTGluZXMoci5zdGFydC5yb3csci5lbmQucm93LTEpOm4uYWN0aW9uPT0icmVtb3ZlVGV4dCImJnRoaXMucmVtb3ZlKHIpfX0sdGhpcy5yZXZlcnREZWx0YXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUubGVuZ3RoLTE7dD49MDt0LS0pe3ZhciBuPWVbdF0scj1zLmZyb21Qb2ludHMobi5yYW5nZS5zdGFydCxuLnJhbmdlLmVuZCk7bi5hY3Rpb249PSJpbnNlcnRMaW5lcyI/dGhpcy5yZW1vdmVMaW5lcyhyLnN0YXJ0LnJvdyxyLmVuZC5yb3ctMSk6bi5hY3Rpb249PSJpbnNlcnRUZXh0Ij90aGlzLnJlbW92ZShyKTpuLmFjdGlvbj09InJlbW92ZUxpbmVzIj90aGlzLmluc2VydExpbmVzKHIuc3RhcnQucm93LG4ubGluZXMpOm4uYWN0aW9uPT0icmVtb3ZlVGV4dCImJnRoaXMuaW5zZXJ0KHIuc3RhcnQsbi50ZXh0KX19fSkuY2FsbCh1LnByb3RvdHlwZSksdC5Eb2N1bWVudD11fSksZGVmaW5lKCJhY2UvcmFuZ2UiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZnVuY3Rpb24oZSx0LG4scil7dGhpcy5zdGFydD17cm93OmUsY29sdW1uOnR9LHRoaXMuZW5kPXtyb3c6bixjb2x1bW46cn19OyhmdW5jdGlvbigpe3RoaXMuaXNFcXVhbD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PWUuc3RhcnQucm93JiZ0aGlzLmVuZC5yb3c9PWUuZW5kLnJvdyYmdGhpcy5zdGFydC5jb2x1bW49PWUuc3RhcnQuY29sdW1uJiZ0aGlzLmVuZC5jb2x1bW49PWUuZW5kLmNvbHVtbn0sdGhpcy50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJSYW5nZTogWyIrdGhpcy5zdGFydC5yb3crIi8iK3RoaXMuc3RhcnQuY29sdW1uKyJdIC0+IFsiK3RoaXMuZW5kLnJvdysiLyIrdGhpcy5lbmQuY29sdW1uKyJdIn0sdGhpcy5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNvbXBhcmUoZSx0KT09MH0sdGhpcy5jb21wYXJlUmFuZ2U9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLmVuZCxyPWUuc3RhcnQ7cmV0dXJuIHQ9dGhpcy5jb21wYXJlKG4ucm93LG4uY29sdW1uKSx0PT0xPyh0PXRoaXMuY29tcGFyZShyLnJvdyxyLmNvbHVtbiksdD09MT8yOnQ9PTA/MTowKTp0PT0tMT8tMjoodD10aGlzLmNvbXBhcmUoci5yb3csci5jb2x1bW4pLHQ9PS0xPy0xOnQ9PTE/NDI6MCl9LHRoaXMuY29tcGFyZVBvaW50PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNvbXBhcmUoZS5yb3csZS5jb2x1bW4pfSx0aGlzLmNvbnRhaW5zUmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29tcGFyZVBvaW50KGUuc3RhcnQpPT0wJiZ0aGlzLmNvbXBhcmVQb2ludChlLmVuZCk9PTB9LHRoaXMuaW50ZXJzZWN0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNvbXBhcmVSYW5nZShlKTtyZXR1cm4gdD09LTF8fHQ9PTB8fHQ9PTF9LHRoaXMuaXNFbmQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lbmQucm93PT1lJiZ0aGlzLmVuZC5jb2x1bW49PXR9LHRoaXMuaXNTdGFydD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09ZSYmdGhpcy5zdGFydC5jb2x1bW49PXR9LHRoaXMuc2V0U3RhcnQ9ZnVuY3Rpb24oZSx0KXt0eXBlb2YgZT09Im9iamVjdCI/KHRoaXMuc3RhcnQuY29sdW1uPWUuY29sdW1uLHRoaXMuc3RhcnQucm93PWUucm93KToodGhpcy5zdGFydC5yb3c9ZSx0aGlzLnN0YXJ0LmNvbHVtbj10KX0sdGhpcy5zZXRFbmQ9ZnVuY3Rpb24oZSx0KXt0eXBlb2YgZT09Im9iamVjdCI/KHRoaXMuZW5kLmNvbHVtbj1lLmNvbHVtbix0aGlzLmVuZC5yb3c9ZS5yb3cpOih0aGlzLmVuZC5yb3c9ZSx0aGlzLmVuZC5jb2x1bW49dCl9LHRoaXMuaW5zaWRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuY29tcGFyZShlLHQpPT0wP3RoaXMuaXNFbmQoZSx0KXx8dGhpcy5pc1N0YXJ0KGUsdCk/ITE6ITA6ITF9LHRoaXMuaW5zaWRlU3RhcnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jb21wYXJlKGUsdCk9PTA/dGhpcy5pc0VuZChlLHQpPyExOiEwOiExfSx0aGlzLmluc2lkZUVuZD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNvbXBhcmUoZSx0KT09MD90aGlzLmlzU3RhcnQoZSx0KT8hMTohMDohMX0sdGhpcy5jb21wYXJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIXRoaXMuaXNNdWx0aUxpbmUoKSYmZT09PXRoaXMuc3RhcnQucm93P3Q8dGhpcy5zdGFydC5jb2x1bW4/LTE6dD50aGlzLmVuZC5jb2x1bW4/MTowOmU8dGhpcy5zdGFydC5yb3c/LTE6ZT50aGlzLmVuZC5yb3c/MTp0aGlzLnN0YXJ0LnJvdz09PWU/dD49dGhpcy5zdGFydC5jb2x1bW4/MDotMTp0aGlzLmVuZC5yb3c9PT1lP3Q8PXRoaXMuZW5kLmNvbHVtbj8wOjE6MH0sdGhpcy5jb21wYXJlU3RhcnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PWUmJnRoaXMuc3RhcnQuY29sdW1uPT10Py0xOnRoaXMuY29tcGFyZShlLHQpfSx0aGlzLmNvbXBhcmVFbmQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lbmQucm93PT1lJiZ0aGlzLmVuZC5jb2x1bW49PXQ/MTp0aGlzLmNvbXBhcmUoZSx0KX0sdGhpcy5jb21wYXJlSW5zaWRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZW5kLnJvdz09ZSYmdGhpcy5lbmQuY29sdW1uPT10PzE6dGhpcy5zdGFydC5yb3c9PWUmJnRoaXMuc3RhcnQuY29sdW1uPT10Py0xOnRoaXMuY29tcGFyZShlLHQpfSx0aGlzLmNsaXBSb3dzPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5lbmQucm93PnQpdmFyIG49e3Jvdzp0KzEsY29sdW1uOjB9O2lmKHRoaXMuc3RhcnQucm93PnQpdmFyIGk9e3Jvdzp0KzEsY29sdW1uOjB9O2lmKHRoaXMuc3RhcnQucm93PGUpdmFyIGk9e3JvdzplLGNvbHVtbjowfTtpZih0aGlzLmVuZC5yb3c8ZSl2YXIgbj17cm93OmUsY29sdW1uOjB9O3JldHVybiByLmZyb21Qb2ludHMoaXx8dGhpcy5zdGFydCxufHx0aGlzLmVuZCl9LHRoaXMuZXh0ZW5kPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5jb21wYXJlKGUsdCk7aWYobj09MClyZXR1cm4gdGhpcztpZihuPT0tMSl2YXIgaT17cm93OmUsY29sdW1uOnR9O2Vsc2UgdmFyIHM9e3JvdzplLGNvbHVtbjp0fTtyZXR1cm4gci5mcm9tUG9pbnRzKGl8fHRoaXMuc3RhcnQsc3x8dGhpcy5lbmQpfSx0aGlzLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PXRoaXMuZW5kLnJvdyYmdGhpcy5zdGFydC5jb2x1bW49PXRoaXMuZW5kLmNvbHVtbn0sdGhpcy5pc011bHRpTGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0LnJvdyE9PXRoaXMuZW5kLnJvd30sdGhpcy5jbG9uZT1mdW5jdGlvbigpe3JldHVybiByLmZyb21Qb2ludHModGhpcy5zdGFydCx0aGlzLmVuZCl9LHRoaXMuY29sbGFwc2VSb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5kLmNvbHVtbj09MD9uZXcgcih0aGlzLnN0YXJ0LnJvdywwLE1hdGgubWF4KHRoaXMuc3RhcnQucm93LHRoaXMuZW5kLnJvdy0xKSwwKTpuZXcgcih0aGlzLnN0YXJ0LnJvdywwLHRoaXMuZW5kLnJvdywwKX0sdGhpcy50b1NjcmVlblJhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKHRoaXMuc3RhcnQpLG49ZS5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24odGhpcy5lbmQpO3JldHVybiBuZXcgcih0LnJvdyx0LmNvbHVtbixuLnJvdyxuLmNvbHVtbil9fSkuY2FsbChyLnByb3RvdHlwZSksci5mcm9tUG9pbnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyByKGUucm93LGUuY29sdW1uLHQucm93LHQuY29sdW1uKX0sdC5SYW5nZT1yfSksZGVmaW5lKCJhY2UvYW5jaG9yIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9saWIvb29wIiksaT1lKCIuL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLHM9dC5BbmNob3I9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuZG9jdW1lbnQ9ZSx0eXBlb2Ygbj09InVuZGVmaW5lZCI/dGhpcy5zZXRQb3NpdGlvbih0LnJvdyx0LmNvbHVtbik6dGhpcy5zZXRQb3NpdGlvbih0LG4pLHRoaXMuJG9uQ2hhbmdlPXRoaXMub25DaGFuZ2UuYmluZCh0aGlzKSxlLm9uKCJjaGFuZ2UiLHRoaXMuJG9uQ2hhbmdlKX07KGZ1bmN0aW9uKCl7ci5pbXBsZW1lbnQodGhpcyxpKSx0aGlzLmdldFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQodGhpcy5yb3csdGhpcy5jb2x1bW4pfSx0aGlzLmdldERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jdW1lbnR9LHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhLG49dC5yYW5nZTtpZihuLnN0YXJ0LnJvdz09bi5lbmQucm93JiZuLnN0YXJ0LnJvdyE9dGhpcy5yb3cpcmV0dXJuO2lmKG4uc3RhcnQucm93PnRoaXMucm93KXJldHVybjtpZihuLnN0YXJ0LnJvdz09dGhpcy5yb3cmJm4uc3RhcnQuY29sdW1uPnRoaXMuY29sdW1uKXJldHVybjt2YXIgcj10aGlzLnJvdyxpPXRoaXMuY29sdW1uO3QuYWN0aW9uPT09Imluc2VydFRleHQiP24uc3RhcnQucm93PT09ciYmbi5zdGFydC5jb2x1bW48PWk/bi5zdGFydC5yb3c9PT1uLmVuZC5yb3c/aSs9bi5lbmQuY29sdW1uLW4uc3RhcnQuY29sdW1uOihpLT1uLnN0YXJ0LmNvbHVtbixyKz1uLmVuZC5yb3ctbi5zdGFydC5yb3cpOm4uc3RhcnQucm93IT09bi5lbmQucm93JiZuLnN0YXJ0LnJvdzxyJiYocis9bi5lbmQucm93LW4uc3RhcnQucm93KTp0LmFjdGlvbj09PSJpbnNlcnRMaW5lcyI/bi5zdGFydC5yb3c8PXImJihyKz1uLmVuZC5yb3ctbi5zdGFydC5yb3cpOnQuYWN0aW9uPT0icmVtb3ZlVGV4dCI/bi5zdGFydC5yb3c9PXImJm4uc3RhcnQuY29sdW1uPGk/bi5lbmQuY29sdW1uPj1pP2k9bi5zdGFydC5jb2x1bW46aT1NYXRoLm1heCgwLGktKG4uZW5kLmNvbHVtbi1uLnN0YXJ0LmNvbHVtbikpOm4uc3RhcnQucm93IT09bi5lbmQucm93JiZuLnN0YXJ0LnJvdzxyPyhuLmVuZC5yb3c9PXImJihpPU1hdGgubWF4KDAsaS1uLmVuZC5jb2x1bW4pK24uc3RhcnQuY29sdW1uKSxyLT1uLmVuZC5yb3ctbi5zdGFydC5yb3cpOm4uZW5kLnJvdz09ciYmKHItPW4uZW5kLnJvdy1uLnN0YXJ0LnJvdyxpPU1hdGgubWF4KDAsaS1uLmVuZC5jb2x1bW4pK24uc3RhcnQuY29sdW1uKTp0LmFjdGlvbj09InJlbW92ZUxpbmVzIiYmbi5zdGFydC5yb3c8PXImJihuLmVuZC5yb3c8PXI/ci09bi5lbmQucm93LW4uc3RhcnQucm93OihyPW4uc3RhcnQucm93LGk9MCkpLHRoaXMuc2V0UG9zaXRpb24ocixpLCEwKX0sdGhpcy5zZXRQb3NpdGlvbj1mdW5jdGlvbihlLHQsbil7dmFyIHI7bj9yPXtyb3c6ZSxjb2x1bW46dH06cj10aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50KGUsdCk7aWYodGhpcy5yb3c9PXIucm93JiZ0aGlzLmNvbHVtbj09ci5jb2x1bW4pcmV0dXJuO3ZhciBpPXtyb3c6dGhpcy5yb3csY29sdW1uOnRoaXMuY29sdW1ufTt0aGlzLnJvdz1yLnJvdyx0aGlzLmNvbHVtbj1yLmNvbHVtbix0aGlzLl9lbWl0KCJjaGFuZ2UiLHtvbGQ6aSx2YWx1ZTpyfSl9LHRoaXMuZGV0YWNoPWZ1bmN0aW9uKCl7dGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHRoaXMuJG9uQ2hhbmdlKX0sdGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudD1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O3JldHVybiBlPj10aGlzLmRvY3VtZW50LmdldExlbmd0aCgpPyhuLnJvdz1NYXRoLm1heCgwLHRoaXMuZG9jdW1lbnQuZ2V0TGVuZ3RoKCktMSksbi5jb2x1bW49dGhpcy5kb2N1bWVudC5nZXRMaW5lKG4ucm93KS5sZW5ndGgpOmU8MD8obi5yb3c9MCxuLmNvbHVtbj0wKToobi5yb3c9ZSxuLmNvbHVtbj1NYXRoLm1pbih0aGlzLmRvY3VtZW50LmdldExpbmUobi5yb3cpLmxlbmd0aCxNYXRoLm1heCgwLHQpKSksdDwwJiYobi5jb2x1bW49MCksbn19KS5jYWxsKHMucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL2xpYi9sYW5nIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3Quc3RyaW5nUmV2ZXJzZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpfSx0LnN0cmluZ1JlcGVhdD1mdW5jdGlvbihlLHQpe3JldHVybihuZXcgQXJyYXkodCsxKSkuam9pbihlKX07dmFyIHI9L15cc1xzKi8saT0vXHNccyokLzt0LnN0cmluZ1RyaW1MZWZ0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UociwiIil9LHQuc3RyaW5nVHJpbVJpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoaSwiIil9LHQuY29weU9iamVjdD1mdW5jdGlvbihlKXt2YXIgdD17fTtmb3IodmFyIG4gaW4gZSl0W25dPWVbbl07cmV0dXJuIHR9LHQuY29weUFycmF5PWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyllW25dJiZ0eXBlb2YgZVtuXT09Im9iamVjdCI/dFtuXT10aGlzLmNvcHlPYmplY3QoZVtuXSk6dFtuXT1lW25dO3JldHVybiB0fSx0LmRlZXBDb3B5PWZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBlIT0ib2JqZWN0IilyZXR1cm4gZTt2YXIgdD1lLmNvbnN0cnVjdG9yKCk7Zm9yKHZhciBuIGluIGUpdHlwZW9mIGVbbl09PSJvYmplY3QiP3Rbbl09dGhpcy5kZWVwQ29weShlW25dKTp0W25dPWVbbl07cmV0dXJuIHR9LHQuYXJyYXlUb01hcD1mdW5jdGlvbihlKXt2YXIgdD17fTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0W2Vbbl1dPTE7cmV0dXJuIHR9LHQuYXJyYXlSZW1vdmU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPD1lLmxlbmd0aDtuKyspdD09PWVbbl0mJmUuc3BsaWNlKG4sMSl9LHQuZXNjYXBlUmVnRXhwPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbLiorP14ke30oKXxbXF1cL1xcXSkvZywiXFwkMSIpfSx0LmdldE1hdGNoT2Zmc2V0cz1mdW5jdGlvbihlLHQpe3ZhciBuPVtdO3JldHVybiBlLnJlcGxhY2UodCxmdW5jdGlvbihlKXtuLnB1c2goe29mZnNldDphcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0yXSxsZW5ndGg6ZS5sZW5ndGh9KX0pLG59LHQuZGVmZXJyZWRDYWxsPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGwsbj1mdW5jdGlvbigpe3Q9bnVsbCxlKCl9LHI9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY2FuY2VsKCksdD1zZXRUaW1lb3V0KG4sZXx8MCkscn07cmV0dXJuIHIuc2NoZWR1bGU9cixyLmNhbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW5jZWwoKSxlKCkscn0sci5jYW5jZWw9ZnVuY3Rpb24oKXtyZXR1cm4gY2xlYXJUaW1lb3V0KHQpLHQ9bnVsbCxyfSxyfX0pLGRlZmluZSgiYWNlL3dvcmtlci9qc2hpbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0dCgpe31mdW5jdGlvbiBudChlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX1mdW5jdGlvbiBydChlLHQpe2lbZV09PT11bmRlZmluZWQmJm5bZV09PT11bmRlZmluZWQmJmF0KCJCYWQgb3B0aW9uOiAnIitlKyInLiIsdCl9ZnVuY3Rpb24gaXQoZSx0KXt2YXIgbjtmb3IobiBpbiB0KW50KHQsbikmJihlW25dPXRbbl0pfWZ1bmN0aW9uIHN0KCl7ay5jb3VjaCYmaXQoTCxvKSxrLnJoaW5vJiZpdChMLF8pLGsucHJvdG90eXBlanMmJml0KEwsTSksay5ub2RlJiYoaXQoTCxOKSxrLmdsb2JhbHN0cmljdD0hMCksay5kZXZlbCYmaXQoTCx1KSxrLmRvam8mJml0KEwsYSksay5icm93c2VyJiZpdChMLHMpLGsubm9uc3RhbmRhcmQmJml0KEwsQiksay5qcXVlcnkmJml0KEwseSksay5tb290b29scyYmaXQoTCx4KSxrLndzaCYmaXQoTCxYKSxrLmVzbmV4dCYmeigpLGsuZ2xvYmFsc3RyaWN0JiZrLnN0cmljdCE9PSExJiYoay5zdHJpY3Q9ITApfWZ1bmN0aW9uIG90KGUsdCxuKXt2YXIgcj1NYXRoLmZsb29yKHQvYi5sZW5ndGgqMTAwKTt0aHJvd3tuYW1lOiJKU0hpbnRFcnJvciIsbGluZTp0LGNoYXJhY3RlcjpuLG1lc3NhZ2U6ZSsiICgiK3IrIiUgc2Nhbm5lZCkuIixyYXc6ZX19ZnVuY3Rpb24gdXQoZSx0LG4saSl7cmV0dXJuIHIudW5kZWZzLnB1c2goW2UsdCxuLGldKX1mdW5jdGlvbiBhdChlLHQsbixpLHMsbyl7dmFyIHUsYSxmO3JldHVybiB0PXR8fFQsdC5pZD09PSIoZW5kKSImJih0PVIpLGE9dC5saW5lfHwwLHU9dC5mcm9tfHwwLGY9e2lkOiIoZXJyb3IpIixyYXc6ZSxldmlkZW5jZTpiW2EtMV18fCIiLGxpbmU6YSxjaGFyYWN0ZXI6dSxhOm4sYjppLGM6cyxkOm99LGYucmVhc29uPWUuc3VwcGxhbnQoZiksci5lcnJvcnMucHVzaChmKSxrLnBhc3NmYWlsJiZvdCgiU3RvcHBpbmcuICIsYSx1KSxXKz0xLFc+PWsubWF4ZXJyJiZvdCgiVG9vIG1hbnkgZXJyb3JzLiIsYSx1KSxmfWZ1bmN0aW9uIGZ0KGUsdCxuLHIsaSxzLG8pe3JldHVybiBhdChlLHtsaW5lOnQsZnJvbTpufSxyLGkscyxvKX1mdW5jdGlvbiBsdChlLHQsbixyLGkscyl7dmFyIG89YXQoZSx0LG4scixpLHMpfWZ1bmN0aW9uIGN0KGUsdCxuLHIsaSxzLG8pe3JldHVybiBsdChlLHtsaW5lOnQsZnJvbTpufSxyLGkscyxvKX1mdW5jdGlvbiBwdChlLHQpe2U9PT0iaGFzT3duUHJvcGVydHkiJiZhdCgiJ2hhc093blByb3BlcnR5JyBpcyBhIHJlYWxseSBiYWQgbmFtZS4iKSxudChsLGUpJiYhbFsiKGdsb2JhbCkiXSYmKGxbZV09PT0hMD9rLmxhdGVkZWYmJmF0KCIne2F9JyB3YXMgdXNlZCBiZWZvcmUgaXQgd2FzIGRlZmluZWQuIixULGUpOiFrLnNoYWRvdyYmdCE9PSJleGNlcHRpb24iJiZhdCgiJ3thfScgaXMgYWxyZWFkeSBkZWZpbmVkLiIsVCxlKSksbFtlXT10LGxbIihnbG9iYWwpIl0/KHBbZV09bCxudChkLGUpJiYoay5sYXRlZGVmJiZhdCgiJ3thfScgd2FzIHVzZWQgYmVmb3JlIGl0IHdhcyBkZWZpbmVkLiIsVCxlKSxkZWxldGUgZFtlXSkpOkRbZV09bH1mdW5jdGlvbiBkdCgpe3ZhciBlLHQscixpPVQudmFsdWUscyxvO3N3aXRjaChpKXtjYXNlIiovIjpsdCgiVW5iZWd1biBjb21tZW50LiIpO2JyZWFrO2Nhc2UiLyptZW1iZXJzIjpjYXNlIi8qbWVtYmVyIjppPSIvKm1lbWJlcnMiLFN8fChTPXt9KSx0PVM7YnJlYWs7Y2FzZSIvKmpzaGludCI6Y2FzZSIvKmpzbGludCI6dD1rLHI9bjticmVhaztjYXNlIi8qZ2xvYmFsIjp0PUw7YnJlYWs7ZGVmYXVsdDpsdCgiV2hhdD8iKX1zPWh0LnRva2VuKCk7ZTpmb3IoOzspe2Zvcig7Oyl7aWYocy50eXBlPT09InNwZWNpYWwiJiZzLnZhbHVlPT09IiovIilicmVhayBlO2lmKHMuaWQhPT0iKGVuZGxpbmUpIiYmcy5pZCE9PSIsIilicmVhaztzPWh0LnRva2VuKCl9cy50eXBlIT09IihzdHJpbmcpIiYmcy50eXBlIT09IihpZGVudGlmaWVyKSImJmkhPT0iLyptZW1iZXJzIiYmbHQoIkJhZCBvcHRpb24uIixzKSxvPWh0LnRva2VuKCksby5pZD09PSI6Ij8obz1odC50b2tlbigpLHQ9PT1TJiZsdCgiRXhwZWN0ZWQgJ3thfScgYW5kIGluc3RlYWQgc2F3ICd7Yn0nLiIscywiKi8iLCI6IiksaT09PSIvKmpzaGludCImJnJ0KHMudmFsdWUscykscy52YWx1ZSE9PSJpbmRlbnQifHxpIT09Ii8qanNoaW50IiYmaSE9PSIvKmpzbGludCI/cy52YWx1ZSE9PSJtYXhlcnIifHxpIT09Ii8qanNoaW50IiYmaSE9PSIvKmpzbGludCI/cy52YWx1ZSE9PSJtYXhsZW4ifHxpIT09Ii8qanNoaW50IiYmaSE9PSIvKmpzbGludCI/cy52YWx1ZT09PSJ2YWxpZHRoaXMiP2xbIihnbG9iYWwpIl0/bHQoIk9wdGlvbiAndmFsaWR0aGlzJyBjYW4ndCBiZSB1c2VkIGluIGEgZ2xvYmFsIHNjb3BlLiIpOm8udmFsdWU9PT0idHJ1ZSJ8fG8udmFsdWU9PT0iZmFsc2UiP3Rbcy52YWx1ZV09by52YWx1ZT09PSJ0cnVlIjpsdCgiQmFkIG9wdGlvbiB2YWx1ZS4iLG8pOm8udmFsdWU9PT0idHJ1ZSI/dFtzLnZhbHVlXT0hMDpvLnZhbHVlPT09ImZhbHNlIj90W3MudmFsdWVdPSExOmx0KCJCYWQgb3B0aW9uIHZhbHVlLiIsbyk6KGU9K28udmFsdWUsKHR5cGVvZiBlIT0ibnVtYmVyInx8IWlzRmluaXRlKGUpfHxlPD0wfHxNYXRoLmZsb29yKGUpIT09ZSkmJmx0KCJFeHBlY3RlZCBhIHNtYWxsIGludGVnZXIgYW5kIGluc3RlYWQgc2F3ICd7YX0nLiIsbyxvLnZhbHVlKSx0Lm1heGxlbj1lKTooZT0rby52YWx1ZSwodHlwZW9mIGUhPSJudW1iZXIifHwhaXNGaW5pdGUoZSl8fGU8PTB8fE1hdGguZmxvb3IoZSkhPT1lKSYmbHQoIkV4cGVjdGVkIGEgc21hbGwgaW50ZWdlciBhbmQgaW5zdGVhZCBzYXcgJ3thfScuIixvLG8udmFsdWUpLHQubWF4ZXJyPWUpOihlPStvLnZhbHVlLCh0eXBlb2YgZSE9Im51bWJlciJ8fCFpc0Zpbml0ZShlKXx8ZTw9MHx8TWF0aC5mbG9vcihlKSE9PWUpJiZsdCgiRXhwZWN0ZWQgYSBzbWFsbCBpbnRlZ2VyIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLG8sby52YWx1ZSksdC53aGl0ZT0hMCx0LmluZGVudD1lKSxzPWh0LnRva2VuKCkpOigoaT09PSIvKmpzaGludCJ8fGk9PT0iLypqc2xpbnQiKSYmbHQoIk1pc3Npbmcgb3B0aW9uIHZhbHVlLiIscyksdFtzLnZhbHVlXT0hMSxzPW8pfXImJnN0KCl9ZnVuY3Rpb24gdnQoZSl7dmFyIHQ9ZXx8MCxuPTAscjt3aGlsZShuPD10KXI9d1tuXSxyfHwocj13W25dPWh0LnRva2VuKCkpLG4rPTE7cmV0dXJuIHJ9ZnVuY3Rpb24gbXQodCxuKXtzd2l0Y2goUi5pZCl7Y2FzZSIobnVtYmVyKSI6VC5pZD09PSIuIiYmYXQoIkEgZG90IGZvbGxvd2luZyBhIG51bWJlciBjYW4gYmUgY29uZnVzZWQgd2l0aCBhIGRlY2ltYWwgcG9pbnQuIixSKTticmVhaztjYXNlIi0iOihULmlkPT09Ii0ifHxULmlkPT09Ii0tIikmJmF0KCJDb25mdXNpbmcgbWludXNzZXMuIik7YnJlYWs7Y2FzZSIrIjooVC5pZD09PSIrInx8VC5pZD09PSIrKyIpJiZhdCgiQ29uZnVzaW5nIHBsdXNzZXMuIil9aWYoUi50eXBlPT09IihzdHJpbmcpInx8Ui5pZGVudGlmaWVyKWU9Ui52YWx1ZTt0JiZULmlkIT09dCYmKG4/VC5pZD09PSIoZW5kKSI/YXQoIlVubWF0Y2hlZCAne2F9Jy4iLG4sbi5pZCk6YXQoIkV4cGVjdGVkICd7YX0nIHRvIG1hdGNoICd7Yn0nIGZyb20gbGluZSB7Y30gYW5kIGluc3RlYWQgc2F3ICd7ZH0nLiIsVCx0LG4uaWQsbi5saW5lLFQudmFsdWUpOihULnR5cGUhPT0iKGlkZW50aWZpZXIpInx8VC52YWx1ZSE9PXQpJiZhdCgiRXhwZWN0ZWQgJ3thfScgYW5kIGluc3RlYWQgc2F3ICd7Yn0nLiIsVCx0LFQudmFsdWUpKSxPPVIsUj1UO2Zvcig7Oyl7VD13LnNoaWZ0KCl8fGh0LnRva2VuKCk7aWYoVC5pZD09PSIoZW5kKSJ8fFQuaWQ9PT0iKGVycm9yKSIpcmV0dXJuO2lmKFQudHlwZT09PSJzcGVjaWFsIilkdCgpO2Vsc2UgaWYoVC5pZCE9PSIoZW5kbGluZSkiKWJyZWFrfX1mdW5jdGlvbiBndCh0LG4pe3ZhciByLGk9ITEscz0hMTtULmlkPT09IihlbmQpIiYmbHQoIlVuZXhwZWN0ZWQgZWFybHkgZW5kIG9mIHByb2dyYW0uIixSKSxtdCgpLG4mJihlPSJhbm9ueW1vdXMiLGxbIih2ZXJiKSJdPVIudmFsdWUpO2lmKG49PT0hMCYmUi5mdWQpcj1SLmZ1ZCgpO2Vsc2V7aWYoUi5udWQpcj1SLm51ZCgpO2Vsc2V7aWYoVC50eXBlPT09IihudW1iZXIpIiYmUi5pZD09PSIuIilyZXR1cm4gYXQoIkEgbGVhZGluZyBkZWNpbWFsIHBvaW50IGNhbiBiZSBjb25mdXNlZCB3aXRoIGEgZG90OiAnLnthfScuIixSLFQudmFsdWUpLG10KCksUjtsdCgiRXhwZWN0ZWQgYW4gaWRlbnRpZmllciBhbmQgaW5zdGVhZCBzYXcgJ3thfScuIixSLFIuaWQpfXdoaWxlKHQ8VC5sYnApaT1SLnZhbHVlPT09IkFycmF5IixzPVIudmFsdWU9PT0iT2JqZWN0IixtdCgpLGkmJlIuaWQ9PT0iKCImJlQuaWQ9PT0iKSImJmF0KCJVc2UgdGhlIGFycmF5IGxpdGVyYWwgbm90YXRpb24gW10uIixSKSxzJiZSLmlkPT09IigiJiZULmlkPT09IikiJiZhdCgiVXNlIHRoZSBvYmplY3QgbGl0ZXJhbCBub3RhdGlvbiB7fS4iLFIpLFIubGVkP3I9Ui5sZWQocik6bHQoIkV4cGVjdGVkIGFuIG9wZXJhdG9yIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLFIsUi5pZCl9cmV0dXJuIHJ9ZnVuY3Rpb24geXQoZSx0KXtlPWV8fFIsdD10fHxULGsud2hpdGUmJmUuY2hhcmFjdGVyIT09dC5mcm9tJiZlLmxpbmU9PT10LmxpbmUmJihlLmZyb20rPWUuY2hhcmFjdGVyLWUuZnJvbSxhdCgiVW5leHBlY3RlZCBzcGFjZSBhZnRlciAne2F9Jy4iLGUsZS52YWx1ZSkpfWZ1bmN0aW9uIGJ0KGUsdCl7ZT1lfHxSLHQ9dHx8VCxrLndoaXRlJiYoZS5jaGFyYWN0ZXIhPT10LmZyb218fGUubGluZSE9PXQubGluZSkmJmF0KCJVbmV4cGVjdGVkIHNwYWNlIGJlZm9yZSAne2F9Jy4iLHQsdC52YWx1ZSl9ZnVuY3Rpb24gd3QoZSx0KXtlPWV8fFIsdD10fHxULGsud2hpdGUmJiFlLmNvbW1lbnQmJmUubGluZT09PXQubGluZSYmeXQoZSx0KX1mdW5jdGlvbiBFdChlLHQpe2sud2hpdGUmJihlPWV8fFIsdD10fHxULGUubGluZT09PXQubGluZSYmZS5jaGFyYWN0ZXI9PT10LmZyb20mJihlLmZyb20rPWUuY2hhcmFjdGVyLWUuZnJvbSxhdCgiTWlzc2luZyBzcGFjZSBhZnRlciAne2F9Jy4iLGUsZS52YWx1ZSkpKX1mdW5jdGlvbiBTdChlLHQpe2U9ZXx8Uix0PXR8fFQsIWsubGF4YnJlYWsmJmUubGluZSE9PXQubGluZT9hdCgiQmFkIGxpbmUgYnJlYWtpbmcgYmVmb3JlICd7YX0nLiIsdCx0LmlkKTprLndoaXRlJiYoZT1lfHxSLHQ9dHx8VCxlLmNoYXJhY3Rlcj09PXQuZnJvbSYmKGUuZnJvbSs9ZS5jaGFyYWN0ZXItZS5mcm9tLGF0KCJNaXNzaW5nIHNwYWNlIGFmdGVyICd7YX0nLiIsZSxlLnZhbHVlKSkpfWZ1bmN0aW9uIHh0KGUpe3ZhciB0O2sud2hpdGUmJlQuaWQhPT0iKGVuZCkiJiYodD1tKyhlfHwwKSxULmZyb20hPT10JiZhdCgiRXhwZWN0ZWQgJ3thfScgdG8gaGF2ZSBhbiBpbmRlbnRhdGlvbiBhdCB7Yn0gaW5zdGVhZCBhdCB7Y30uIixULFQudmFsdWUsdCxULmZyb20pKX1mdW5jdGlvbiBUdChlKXtlPWV8fFIsZS5saW5lIT09VC5saW5lJiZhdCgiTGluZSBicmVha2luZyBlcnJvciAne2F9Jy4iLGUsZS52YWx1ZSl9ZnVuY3Rpb24gTnQoKXtSLmxpbmUhPT1ULmxpbmU/ay5sYXhjb21tYXx8KE50LmZpcnN0JiYoYXQoIkNvbW1hIHdhcm5pbmdzIGNhbiBiZSB0dXJuZWQgb2ZmIHdpdGggJ2xheGNvbW1hJyIpLE50LmZpcnN0PSExKSxhdCgiQmFkIGxpbmUgYnJlYWtpbmcgYmVmb3JlICd7YX0nLiIsUixULmlkKSk6IVIuY29tbWVudCYmUi5jaGFyYWN0ZXIhPT1ULmZyb20mJmsud2hpdGUmJihSLmZyb20rPVIuY2hhcmFjdGVyLVIuZnJvbSxhdCgiVW5leHBlY3RlZCBzcGFjZSBhZnRlciAne2F9Jy4iLFIsUi52YWx1ZSkpLG10KCIsIiksRXQoUixUKX1mdW5jdGlvbiBDdChlLHQpe3ZhciBuPUlbZV07aWYoIW58fHR5cGVvZiBuIT0ib2JqZWN0IilJW2VdPW49e2lkOmUsbGJwOnQsdmFsdWU6ZX07cmV0dXJuIG59ZnVuY3Rpb24ga3QoZSl7cmV0dXJuIEN0KGUsMCl9ZnVuY3Rpb24gTHQoZSx0KXt2YXIgbj1rdChlKTtyZXR1cm4gbi5pZGVudGlmaWVyPW4ucmVzZXJ2ZWQ9ITAsbi5mdWQ9dCxufWZ1bmN0aW9uIEF0KGUsdCl7dmFyIG49THQoZSx0KTtyZXR1cm4gbi5ibG9jaz0hMCxufWZ1bmN0aW9uIE90KGUpe3ZhciB0PWUuaWQuY2hhckF0KDApO2lmKHQ+PSJhIiYmdDw9InoifHx0Pj0iQSImJnQ8PSJaIillLmlkZW50aWZpZXI9ZS5yZXNlcnZlZD0hMDtyZXR1cm4gZX1mdW5jdGlvbiBNdChlLHQpe3ZhciBuPUN0KGUsMTUwKTtyZXR1cm4gT3Qobiksbi5udWQ9dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dDpmdW5jdGlvbigpe3RoaXMucmlnaHQ9Z3QoMTUwKSx0aGlzLmFyaXR5PSJ1bmFyeSI7aWYodGhpcy5pZD09PSIrKyJ8fHRoaXMuaWQ9PT0iLS0iKWsucGx1c3BsdXM/YXQoIlVuZXhwZWN0ZWQgdXNlIG9mICd7YX0nLiIsdGhpcyx0aGlzLmlkKTooIXRoaXMucmlnaHQuaWRlbnRpZmllcnx8dGhpcy5yaWdodC5yZXNlcnZlZCkmJnRoaXMucmlnaHQuaWQhPT0iLiImJnRoaXMucmlnaHQuaWQhPT0iWyImJmF0KCJCYWQgb3BlcmFuZC4iLHRoaXMpO3JldHVybiB0aGlzfSxufWZ1bmN0aW9uIF90KGUsdCl7dmFyIG49a3QoZSk7cmV0dXJuIG4udHlwZT1lLG4ubnVkPXQsbn1mdW5jdGlvbiBEdChlLHQpe3ZhciBuPV90KGUsdCk7cmV0dXJuIG4uaWRlbnRpZmllcj1uLnJlc2VydmVkPSEwLG59ZnVuY3Rpb24gUHQoZSx0KXtyZXR1cm4gRHQoZSxmdW5jdGlvbigpe3JldHVybiB0eXBlb2YgdD09ImZ1bmN0aW9uIiYmdCh0aGlzKSx0aGlzfSl9ZnVuY3Rpb24gSHQoZSx0LG4scil7dmFyIGk9Q3QoZSxuKTtyZXR1cm4gT3QoaSksaS5sZWQ9ZnVuY3Rpb24oaSl7cmV0dXJuIHJ8fChTdChPLFIpLEV0KFIsVCkpLGU9PT0iaW4iJiZpLmlkPT09IiEiJiZhdCgiQ29uZnVzaW5nIHVzZSBvZiAne2F9Jy4iLGksIiEiKSx0eXBlb2YgdD09ImZ1bmN0aW9uIj90KGksdGhpcyk6KHRoaXMubGVmdD1pLHRoaXMucmlnaHQ9Z3QobiksdGhpcyl9LGl9ZnVuY3Rpb24gQnQoZSx0KXt2YXIgbj1DdChlLDEwMCk7cmV0dXJuIG4ubGVkPWZ1bmN0aW9uKGUpe1N0KE8sUiksRXQoUixUKTt2YXIgbj1ndCgxMDApO3JldHVybiBlJiZlLmlkPT09Ik5hTiJ8fG4mJm4uaWQ9PT0iTmFOIj9hdCgiVXNlIHRoZSBpc05hTiBmdW5jdGlvbiB0byBjb21wYXJlIHdpdGggTmFOLiIsdGhpcyk6dCYmdC5hcHBseSh0aGlzLFtlLG5dKSxlLmlkPT09IiEiJiZhdCgiQ29uZnVzaW5nIHVzZSBvZiAne2F9Jy4iLGUsIiEiKSxuLmlkPT09IiEiJiZhdCgiQ29uZnVzaW5nIHVzZSBvZiAne2F9Jy4iLG4sIiEiKSx0aGlzLmxlZnQ9ZSx0aGlzLnJpZ2h0PW4sdGhpc30sbn1mdW5jdGlvbiBqdChlKXtyZXR1cm4gZSYmKGUudHlwZT09PSIobnVtYmVyKSImJitlLnZhbHVlPT09MHx8ZS50eXBlPT09IihzdHJpbmcpIiYmZS52YWx1ZT09PSIifHxlLnR5cGU9PT0ibnVsbCImJiFrLmVxbnVsbHx8ZS50eXBlPT09InRydWUifHxlLnR5cGU9PT0iZmFsc2UifHxlLnR5cGU9PT0idW5kZWZpbmVkIil9ZnVuY3Rpb24gRnQoZSx0KXtyZXR1cm4gQ3QoZSwyMCkuZXhwcz0hMCxIdChlLGZ1bmN0aW9uKGUsdCl7dmFyIG47dC5sZWZ0PWUsTFtlLnZhbHVlXT09PSExJiZEW2UudmFsdWVdWyIoZ2xvYmFsKSJdPT09ITA/YXQoIlJlYWQgb25seS4iLGUpOmVbImZ1bmN0aW9uIl0mJmF0KCIne2F9JyBpcyBhIGZ1bmN0aW9uLiIsZSxlLnZhbHVlKTtpZihlKXtrLmVzbmV4dCYmbFtlLnZhbHVlXT09PSJjb25zdCImJmF0KCJBdHRlbXB0aW5nIHRvIG92ZXJyaWRlICd7YX0nIHdoaWNoIGlzIGEgY29uc3RhbnQiLGUsZS52YWx1ZSk7aWYoZS5pZD09PSIuInx8ZS5pZD09PSJbIilyZXR1cm4oIWUubGVmdHx8ZS5sZWZ0LnZhbHVlPT09ImFyZ3VtZW50cyIpJiZhdCgiQmFkIGFzc2lnbm1lbnQuIix0KSx0LnJpZ2h0PWd0KDE5KSx0O2lmKGUuaWRlbnRpZmllciYmIWUucmVzZXJ2ZWQpcmV0dXJuIGxbZS52YWx1ZV09PT0iZXhjZXB0aW9uIiYmYXQoIkRvIG5vdCBhc3NpZ24gdG8gdGhlIGV4Y2VwdGlvbiBwYXJhbWV0ZXIuIixlKSx0LnJpZ2h0PWd0KDE5KSx0O2U9PT1JWyJmdW5jdGlvbiJdJiZhdCgiRXhwZWN0ZWQgYW4gaWRlbnRpZmllciBpbiBhbiBhc3NpZ25tZW50IGFuZCBpbnN0ZWFkIHNhdyBhIGZ1bmN0aW9uIGludm9jYXRpb24uIixSKX1sdCgiQmFkIGFzc2lnbm1lbnQuIix0KX0sMjApfWZ1bmN0aW9uIEl0KGUsdCxuKXt2YXIgcj1DdChlLG4pO3JldHVybiBPdChyKSxyLmxlZD10eXBlb2YgdD09ImZ1bmN0aW9uIj90OmZ1bmN0aW9uKGUpe3JldHVybiBrLmJpdHdpc2UmJmF0KCJVbmV4cGVjdGVkIHVzZSBvZiAne2F9Jy4iLHRoaXMsdGhpcy5pZCksdGhpcy5sZWZ0PWUsdGhpcy5yaWdodD1ndChuKSx0aGlzfSxyfWZ1bmN0aW9uIHF0KGUpe3JldHVybiBDdChlLDIwKS5leHBzPSEwLEh0KGUsZnVuY3Rpb24oZSx0KXtrLmJpdHdpc2UmJmF0KCJVbmV4cGVjdGVkIHVzZSBvZiAne2F9Jy4iLHQsdC5pZCksRXQoTyxSKSxFdChSLFQpO2lmKGUpcmV0dXJuIGUuaWQ9PT0iLiJ8fGUuaWQ9PT0iWyJ8fGUuaWRlbnRpZmllciYmIWUucmVzZXJ2ZWQ/KGd0KDE5KSx0KTooZT09PUlbImZ1bmN0aW9uIl0mJmF0KCJFeHBlY3RlZCBhbiBpZGVudGlmaWVyIGluIGFuIGFzc2lnbm1lbnQsIGFuZCBpbnN0ZWFkIHNhdyBhIGZ1bmN0aW9uIGludm9jYXRpb24uIixSKSx0KTtsdCgiQmFkIGFzc2lnbm1lbnQuIix0KX0sMjApfWZ1bmN0aW9uIFJ0KGUsdCl7dmFyIG49Q3QoZSwxNTApO3JldHVybiBuLmxlZD1mdW5jdGlvbihlKXtyZXR1cm4gay5wbHVzcGx1cz9hdCgiVW5leHBlY3RlZCB1c2Ugb2YgJ3thfScuIix0aGlzLHRoaXMuaWQpOighZS5pZGVudGlmaWVyfHxlLnJlc2VydmVkKSYmZS5pZCE9PSIuIiYmZS5pZCE9PSJbIiYmYXQoIkJhZCBvcGVyYW5kLiIsdGhpcyksdGhpcy5sZWZ0PWUsdGhpc30sbn1mdW5jdGlvbiBVdChlKXtpZihULmlkZW50aWZpZXIpcmV0dXJuIG10KCksUi5yZXNlcnZlZCYmIWsuZXM1JiYoIWV8fFIudmFsdWUhPT0idW5kZWZpbmVkIikmJmF0KCJFeHBlY3RlZCBhbiBpZGVudGlmaWVyIGFuZCBpbnN0ZWFkIHNhdyAne2F9JyAoYSByZXNlcnZlZCB3b3JkKS4iLFIsUi5pZCksUi52YWx1ZX1mdW5jdGlvbiB6dChlKXt2YXIgdD1VdChlKTtpZih0KXJldHVybiB0O1IuaWQ9PT0iZnVuY3Rpb24iJiZULmlkPT09IigiP2F0KCJNaXNzaW5nIG5hbWUgaW4gZnVuY3Rpb24gZGVjbGFyYXRpb24uIik6bHQoIkV4cGVjdGVkIGFuIGlkZW50aWZpZXIgYW5kIGluc3RlYWQgc2F3ICd7YX0nLiIsVCxULnZhbHVlKX1mdW5jdGlvbiBXdChlKXt2YXIgdD0wLG47aWYoVC5pZCE9PSI7Inx8QylyZXR1cm47Zm9yKDs7KXtuPXZ0KHQpO2lmKG4ucmVhY2gpcmV0dXJuO2lmKG4uaWQhPT0iKGVuZGxpbmUpIil7aWYobi5pZD09PSJmdW5jdGlvbiIpe2lmKCFrLmxhdGVkZWYpYnJlYWs7YXQoIklubmVyIGZ1bmN0aW9ucyBzaG91bGQgYmUgbGlzdGVkIGF0IHRoZSB0b3Agb2YgdGhlIG91dGVyIGZ1bmN0aW9uLiIsbik7YnJlYWt9YXQoIlVucmVhY2hhYmxlICd7YX0nIGFmdGVyICd7Yn0nLiIsbixuLnZhbHVlLGUpO2JyZWFrfXQrPTF9fWZ1bmN0aW9uIFh0KGUpe3ZhciB0PW0sbixyPUQsaT1UO2lmKGkuaWQ9PT0iOyIpe210KCI7Iik7cmV0dXJufWkuaWRlbnRpZmllciYmIWkucmVzZXJ2ZWQmJnZ0KCkuaWQ9PT0iOiImJihtdCgpLG10KCI6IiksRD1PYmplY3QuY3JlYXRlKHIpLHB0KGkudmFsdWUsImxhYmVsIiksVC5sYWJlbGxlZHx8YXQoIkxhYmVsICd7YX0nIG9uIHtifSBzdGF0ZW1lbnQuIixULGkudmFsdWUsVC52YWx1ZSksWi50ZXN0KGkudmFsdWUrIjoiKSYmYXQoIkxhYmVsICd7YX0nIGxvb2tzIGxpa2UgYSBqYXZhc2NyaXB0IHVybC4iLGksaS52YWx1ZSksVC5sYWJlbD1pLnZhbHVlLGk9VCksZXx8eHQoKSxuPWd0KDAsITApO2lmKCFpLmJsb2NrKXshay5leHByJiYoIW58fCFuLmV4cHMpP2F0KCJFeHBlY3RlZCBhbiBhc3NpZ25tZW50IG9yIGZ1bmN0aW9uIGNhbGwgYW5kIGluc3RlYWQgc2F3IGFuIGV4cHJlc3Npb24uIixSKTprLm5vbmV3JiZuLmlkPT09IigiJiZuLmxlZnQuaWQ9PT0ibmV3IiYmYXQoIkRvIG5vdCB1c2UgJ25ldycgZm9yIHNpZGUgZWZmZWN0cy4iKTtpZihULmlkPT09IiwiKXJldHVybiBOdCgpO1QuaWQhPT0iOyI/ay5hc2l8fCghay5sYXN0c2VtaWN8fFQuaWQhPT0ifSJ8fFQubGluZSE9PVIubGluZSkmJmZ0KCJNaXNzaW5nIHNlbWljb2xvbi4iLFIubGluZSxSLmNoYXJhY3Rlcik6KHl0KFIsVCksbXQoIjsiKSxFdChSLFQpKX1yZXR1cm4gbT10LEQ9cixufWZ1bmN0aW9uIFZ0KGUpe3ZhciB0PVtdLG4scjt3aGlsZSghVC5yZWFjaCYmVC5pZCE9PSIoZW5kKSIpVC5pZD09PSI7Ij8ocj12dCgpLCghcnx8ci5pZCE9PSIoIikmJmF0KCJVbm5lY2Vzc2FyeSBzZW1pY29sb24uIiksbXQoIjsiKSk6dC5wdXNoKFh0KGU9PT1ULmxpbmUpKTtyZXR1cm4gdH1mdW5jdGlvbiAkdCgpe3ZhciBlLHQsbjtmb3IoOzspe2lmKFQuaWQ9PT0iKHN0cmluZykiKXt0PXZ0KDApO2lmKHQuaWQ9PT0iKGVuZGxpbmUpIil7ZT0xO2RvIG49dnQoZSksZSs9MTt3aGlsZShuLmlkPT09IihlbmRsaW5lKSIpO2lmKG4uaWQhPT0iOyIpe2lmKG4uaWQhPT0iKHN0cmluZykiJiZuLmlkIT09IihudW1iZXIpIiYmbi5pZCE9PSIocmVnZXhwKSImJm4uaWRlbnRpZmllciE9PSEwJiZuLmlkIT09In0iKWJyZWFrO2F0KCJNaXNzaW5nIHNlbWljb2xvbi4iLFQpfWVsc2UgdD1ufWVsc2UgaWYodC5pZD09PSJ9IilhdCgiTWlzc2luZyBzZW1pY29sb24uIix0KTtlbHNlIGlmKHQuaWQhPT0iOyIpYnJlYWs7eHQoKSxtdCgpLEZbUi52YWx1ZV0mJmF0KCdVbm5lY2Vzc2FyeSBkaXJlY3RpdmUgInthfSIuJyxSLFIudmFsdWUpLFIudmFsdWU9PT0idXNlIHN0cmljdCImJihrLm5ld2NhcD0hMCxrLnVuZGVmPSEwKSxGW1IudmFsdWVdPSEwLHQuaWQ9PT0iOyImJm10KCI7Iik7Y29udGludWV9YnJlYWt9fWZ1bmN0aW9uIEp0KGUsdCxuKXt2YXIgcixpPXYscz1tLG8sdT1ELGEsZixjO3Y9ZTtpZighZXx8IWsuZnVuY3Njb3BlKUQ9T2JqZWN0LmNyZWF0ZShEKTtFdChSLFQpLGE9VDtpZihULmlkPT09InsiKXttdCgieyIpLGY9Ui5saW5lO2lmKFQuaWQhPT0ifSIpe20rPWsuaW5kZW50O3doaWxlKCFlJiZULmZyb20+bSltKz1rLmluZGVudDtpZihuKXtvPXt9O2ZvcihjIGluIEYpbnQoRixjKSYmKG9bY109RltjXSk7JHQoKSxrLnN0cmljdCYmbFsiKGNvbnRleHQpIl1bIihnbG9iYWwpIl0mJiFvWyJ1c2Ugc3RyaWN0Il0mJiFGWyJ1c2Ugc3RyaWN0Il0mJmF0KCdNaXNzaW5nICJ1c2Ugc3RyaWN0IiBzdGF0ZW1lbnQuJyl9cj1WdChmKSxuJiYoRj1vKSxtLT1rLmluZGVudCxmIT09VC5saW5lJiZ4dCgpfWVsc2UgZiE9PVQubGluZSYmeHQoKTttdCgifSIsYSksbT1zfWVsc2UgZT8oKCF0fHxrLmN1cmx5KSYmYXQoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLFQsInsiLFQudmFsdWUpLEM9ITAsbSs9ay5pbmRlbnQscj1bWHQoVC5saW5lPT09Ui5saW5lKV0sbS09ay5pbmRlbnQsQz0hMSk6bHQoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLFQsInsiLFQudmFsdWUpO2xbIih2ZXJiKSJdPW51bGw7aWYoIWV8fCFrLmZ1bmNzY29wZSlEPXU7cmV0dXJuIHY9aSxlJiZrLm5vZW1wdHkmJighcnx8ci5sZW5ndGg9PT0wKSYmYXQoIkVtcHR5IGJsb2NrLiIpLHJ9ZnVuY3Rpb24gS3QoZSl7UyYmdHlwZW9mIFNbZV0hPSJib29sZWFuIiYmYXQoIlVuZXhwZWN0ZWQgLyptZW1iZXIgJ3thfScuIixSLGUpLHR5cGVvZiBFW2VdPT0ibnVtYmVyIj9FW2VdKz0xOkVbZV09MX1mdW5jdGlvbiBRdChlKXt2YXIgdD1lLnZhbHVlLG49ZS5saW5lLHI9ZFt0XTt0eXBlb2Ygcj09ImZ1bmN0aW9uIiYmKHI9ITEpLHI/cltyLmxlbmd0aC0xXSE9PW4mJnIucHVzaChuKToocj1bbl0sZFt0XT1yKX1mdW5jdGlvbiBHdCgpe3ZhciBlPVV0KCEwKTtyZXR1cm4gZXx8KFQuaWQ9PT0iKHN0cmluZykiPyhlPVQudmFsdWUsbXQoKSk6VC5pZD09PSIobnVtYmVyKSImJihlPVQudmFsdWUudG9TdHJpbmcoKSxtdCgpKSksZX1mdW5jdGlvbiBZdCgpe3ZhciBlLHQ9VCxuPVtdO210KCIoIiksd3QoKTtpZihULmlkPT09IikiKXttdCgiKSIpO3JldHVybn1mb3IoOzspe2U9enQoITApLG4ucHVzaChlKSxwdChlLCJwYXJhbWV0ZXIiKTtpZihULmlkIT09IiwiKXJldHVybiBtdCgiKSIsdCksd3QoTyxSKSxuO050KCl9fWZ1bmN0aW9uIFp0KHQsbil7dmFyIHIsaT1rLHM9RDtyZXR1cm4gaz1PYmplY3QuY3JlYXRlKGspLEQ9T2JqZWN0LmNyZWF0ZShEKSxsPXsiKG5hbWUpIjp0fHwnIicrZSsnIicsIihsaW5lKSI6VC5saW5lLCIoY29udGV4dCkiOmwsIihicmVha2FnZSkiOjAsIihsb29wYWdlKSI6MCwiKHNjb3BlKSI6RCwiKHN0YXRlbWVudCkiOm59LHI9bCxSLmZ1bmN0PWwsaC5wdXNoKGwpLHQmJnB0KHQsImZ1bmN0aW9uIiksbFsiKHBhcmFtcykiXT1ZdCgpLEp0KCExLCExLCEwKSxEPXMsaz1pLGxbIihsYXN0KSJdPVIubGluZSxsPWxbIihjb250ZXh0KSJdLHJ9ZnVuY3Rpb24gdG4oKXtmdW5jdGlvbiBlKCl7dmFyIGU9e30sdD1UO210KCJ7Iik7aWYoVC5pZCE9PSJ9Iilmb3IoOzspe2lmKFQuaWQ9PT0iKGVuZCkiKWx0KCJNaXNzaW5nICd9JyB0byBtYXRjaCAneycgZnJvbSBsaW5lIHthfS4iLFQsdC5saW5lKTtlbHNle2lmKFQuaWQ9PT0ifSIpe2F0KCJVbmV4cGVjdGVkIGNvbW1hLiIsUik7YnJlYWt9VC5pZD09PSIsIj9sdCgiVW5leHBlY3RlZCBjb21tYS4iLFQpOlQuaWQhPT0iKHN0cmluZykiJiZhdCgiRXhwZWN0ZWQgYSBzdHJpbmcgYW5kIGluc3RlYWQgc2F3IHthfS4iLFQsVC52YWx1ZSl9ZVtULnZhbHVlXT09PSEwP2F0KCJEdXBsaWNhdGUga2V5ICd7YX0nLiIsVCxULnZhbHVlKTpULnZhbHVlPT09Il9fcHJvdG9fXyImJiFrLnByb3RvfHxULnZhbHVlPT09Il9faXRlcmF0b3JfXyImJiFrLml0ZXJhdG9yP2F0KCJUaGUgJ3thfScga2V5IG1heSBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy4iLFQsVC52YWx1ZSk6ZVtULnZhbHVlXT0hMCxtdCgpLG10KCI6IiksdG4oKTtpZihULmlkIT09IiwiKWJyZWFrO210KCIsIil9bXQoIn0iKX1mdW5jdGlvbiB0KCl7dmFyIGU9VDttdCgiWyIpO2lmKFQuaWQhPT0iXSIpZm9yKDs7KXtpZihULmlkPT09IihlbmQpIilsdCgiTWlzc2luZyAnXScgdG8gbWF0Y2ggJ1snIGZyb20gbGluZSB7YX0uIixULGUubGluZSk7ZWxzZXtpZihULmlkPT09Il0iKXthdCgiVW5leHBlY3RlZCBjb21tYS4iLFIpO2JyZWFrfVQuaWQ9PT0iLCImJmx0KCJVbmV4cGVjdGVkIGNvbW1hLiIsVCl9dG4oKTtpZihULmlkIT09IiwiKWJyZWFrO210KCIsIil9bXQoIl0iKX1zd2l0Y2goVC5pZCl7Y2FzZSJ7IjplKCk7YnJlYWs7Y2FzZSJbIjp0KCk7YnJlYWs7Y2FzZSJ0cnVlIjpjYXNlImZhbHNlIjpjYXNlIm51bGwiOmNhc2UiKG51bWJlcikiOmNhc2UiKHN0cmluZykiOm10KCk7YnJlYWs7Y2FzZSItIjptdCgiLSIpLFIuY2hhcmFjdGVyIT09VC5mcm9tJiZhdCgiVW5leHBlY3RlZCBzcGFjZSBhZnRlciAnLScuIixSKSx5dChSLFQpLG10KCIobnVtYmVyKSIpO2JyZWFrO2RlZmF1bHQ6bHQoIkV4cGVjdGVkIGEgSlNPTiB2YWx1ZS4iLFQpfX12YXIgZSx0PXsiPCI6ITAsIjw9IjohMCwiPT0iOiEwLCI9PT0iOiEwLCIhPT0iOiEwLCIhPSI6ITAsIj4iOiEwLCI+PSI6ITAsIisiOiEwLCItIjohMCwiKiI6ITAsIi8iOiEwLCIlIjohMH0sbj17YXNpOiEwLGJpdHdpc2U6ITAsYm9zczohMCxicm93c2VyOiEwLGNvdWNoOiEwLGN1cmx5OiEwLGRlYnVnOiEwLGRldmVsOiEwLGRvam86ITAsZXFlcWVxOiEwLGVxbnVsbDohMCxlczU6ITAsZXNuZXh0OiEwLGV2aWw6ITAsZXhwcjohMCxmb3JpbjohMCxmdW5jc2NvcGU6ITAsZ2xvYmFsc3RyaWN0OiEwLGltbWVkOiEwLGl0ZXJhdG9yOiEwLGpxdWVyeTohMCxsYXN0c2VtaWM6ITAsbGF0ZWRlZjohMCxsYXhicmVhazohMCxsYXhjb21tYTohMCxsb29wZnVuYzohMCxtb290b29sczohMCxtdWx0aXN0cjohMCxuZXdjYXA6ITAsbm9hcmc6ITAsbm9kZTohMCxub2VtcHR5OiEwLG5vbmV3OiEwLG5vbnN0YW5kYXJkOiEwLG5vbWVuOiEwLG9uZXZhcjohMCxvbmVjYXNlOiEwLHBhc3NmYWlsOiEwLHBsdXNwbHVzOiEwLHByb3RvOiEwLHByb3RvdHlwZWpzOiEwLHJlZ2V4ZGFzaDohMCxyZWdleHA6ITAscmhpbm86ITAsdW5kZWY6ITAsc2NyaXB0dXJsOiEwLHNoYWRvdzohMCxzbWFydHRhYnM6ITAsc3RyaWN0OiEwLHN1YjohMCxzdXBlcm5ldzohMCx0cmFpbGluZzohMCx2YWxpZHRoaXM6ITAsd2l0aHN0bXQ6ITAsd2hpdGU6ITAsd3NoOiEwfSxpPXttYXhsZW46ITEsaW5kZW50OiExLG1heGVycjohMSxwcmVkZWY6ITF9LHM9e0FycmF5QnVmZmVyOiExLEFycmF5QnVmZmVyVmlldzohMSxBdWRpbzohMSxhZGRFdmVudExpc3RlbmVyOiExLGFwcGxpY2F0aW9uQ2FjaGU6ITEsYXRvYjohMSxibHVyOiExLGJ0b2E6ITEsY2xlYXJJbnRlcnZhbDohMSxjbGVhclRpbWVvdXQ6ITEsY2xvc2U6ITEsY2xvc2VkOiExLERhdGFWaWV3OiExLERPTVBhcnNlcjohMSxkZWZhdWx0U3RhdHVzOiExLGRvY3VtZW50OiExLGV2ZW50OiExLEZpbGVSZWFkZXI6ITEsRmxvYXQzMkFycmF5OiExLEZsb2F0NjRBcnJheTohMSxGb3JtRGF0YTohMSxmb2N1czohMSxmcmFtZXM6ITEsZ2V0Q29tcHV0ZWRTdHlsZTohMSxIVE1MRWxlbWVudDohMSxIVE1MQW5jaG9yRWxlbWVudDohMSxIVE1MQmFzZUVsZW1lbnQ6ITEsSFRNTEJsb2NrcXVvdGVFbGVtZW50OiExLEhUTUxCb2R5RWxlbWVudDohMSxIVE1MQlJFbGVtZW50OiExLEhUTUxCdXR0b25FbGVtZW50OiExLEhUTUxDYW52YXNFbGVtZW50OiExLEhUTUxEaXJlY3RvcnlFbGVtZW50OiExLEhUTUxEaXZFbGVtZW50OiExLEhUTUxETGlzdEVsZW1lbnQ6ITEsSFRNTEZpZWxkU2V0RWxlbWVudDohMSxIVE1MRm9udEVsZW1lbnQ6ITEsSFRNTEZvcm1FbGVtZW50OiExLEhUTUxGcmFtZUVsZW1lbnQ6ITEsSFRNTEZyYW1lU2V0RWxlbWVudDohMSxIVE1MSGVhZEVsZW1lbnQ6ITEsSFRNTEhlYWRpbmdFbGVtZW50OiExLEhUTUxIUkVsZW1lbnQ6ITEsSFRNTEh0bWxFbGVtZW50OiExLEhUTUxJRnJhbWVFbGVtZW50OiExLEhUTUxJbWFnZUVsZW1lbnQ6ITEsSFRNTElucHV0RWxlbWVudDohMSxIVE1MSXNJbmRleEVsZW1lbnQ6ITEsSFRNTExhYmVsRWxlbWVudDohMSxIVE1MTGF5ZXJFbGVtZW50OiExLEhUTUxMZWdlbmRFbGVtZW50OiExLEhUTUxMSUVsZW1lbnQ6ITEsSFRNTExpbmtFbGVtZW50OiExLEhUTUxNYXBFbGVtZW50OiExLEhUTUxNZW51RWxlbWVudDohMSxIVE1MTWV0YUVsZW1lbnQ6ITEsSFRNTE1vZEVsZW1lbnQ6ITEsSFRNTE9iamVjdEVsZW1lbnQ6ITEsSFRNTE9MaXN0RWxlbWVudDohMSxIVE1MT3B0R3JvdXBFbGVtZW50OiExLEhUTUxPcHRpb25FbGVtZW50OiExLEhUTUxQYXJhZ3JhcGhFbGVtZW50OiExLEhUTUxQYXJhbUVsZW1lbnQ6ITEsSFRNTFByZUVsZW1lbnQ6ITEsSFRNTFF1b3RlRWxlbWVudDohMSxIVE1MU2NyaXB0RWxlbWVudDohMSxIVE1MU2VsZWN0RWxlbWVudDohMSxIVE1MU3R5bGVFbGVtZW50OiExLEhUTUxUYWJsZUNhcHRpb25FbGVtZW50OiExLEhUTUxUYWJsZUNlbGxFbGVtZW50OiExLEhUTUxUYWJsZUNvbEVsZW1lbnQ6ITEsSFRNTFRhYmxlRWxlbWVudDohMSxIVE1MVGFibGVSb3dFbGVtZW50OiExLEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OiExLEhUTUxUZXh0QXJlYUVsZW1lbnQ6ITEsSFRNTFRpdGxlRWxlbWVudDohMSxIVE1MVUxpc3RFbGVtZW50OiExLEhUTUxWaWRlb0VsZW1lbnQ6ITEsaGlzdG9yeTohMSxJbnQxNkFycmF5OiExLEludDMyQXJyYXk6ITEsSW50OEFycmF5OiExLEltYWdlOiExLGxlbmd0aDohMSxsb2NhbFN0b3JhZ2U6ITEsbG9jYXRpb246ITEsTWVzc2FnZUNoYW5uZWw6ITEsTWVzc2FnZUV2ZW50OiExLE1lc3NhZ2VQb3J0OiExLG1vdmVCeTohMSxtb3ZlVG86ITEsbmFtZTohMSxuYXZpZ2F0b3I6ITEsb25iZWZvcmV1bmxvYWQ6ITAsb25ibHVyOiEwLG9uZXJyb3I6ITAsb25mb2N1czohMCxvbmxvYWQ6ITAsb25yZXNpemU6ITAsb251bmxvYWQ6ITAsb3BlbjohMSxvcGVuRGF0YWJhc2U6ITEsb3BlbmVyOiExLE9wdGlvbjohMSxwYXJlbnQ6ITEscHJpbnQ6ITEscmVtb3ZlRXZlbnRMaXN0ZW5lcjohMSxyZXNpemVCeTohMSxyZXNpemVUbzohMSxzY3JlZW46ITEsc2Nyb2xsOiExLHNjcm9sbEJ5OiExLHNjcm9sbFRvOiExLHNlc3Npb25TdG9yYWdlOiExLHNldEludGVydmFsOiExLHNldFRpbWVvdXQ6ITEsU2hhcmVkV29ya2VyOiExLHN0YXR1czohMSx0b3A6ITEsVWludDE2QXJyYXk6ITEsVWludDMyQXJyYXk6ITEsVWludDhBcnJheTohMSxXZWJTb2NrZXQ6ITEsd2luZG93OiExLFdvcmtlcjohMSxYTUxIdHRwUmVxdWVzdDohMSxYTUxTZXJpYWxpemVyOiExLFhQYXRoRXZhbHVhdG9yOiExLFhQYXRoRXhjZXB0aW9uOiExLFhQYXRoRXhwcmVzc2lvbjohMSxYUGF0aE5hbWVzcGFjZTohMSxYUGF0aE5TUmVzb2x2ZXI6ITEsWFBhdGhSZXN1bHQ6ITF9LG89e3JlcXVpcmU6ITEscmVzcG9uZDohMSxnZXRSb3c6ITEsZW1pdDohMSxzZW5kOiExLHN0YXJ0OiExLHN1bTohMSxsb2c6ITEsZXhwb3J0czohMSxtb2R1bGU6ITEscHJvdmlkZXM6ITF9LHU9e2FsZXJ0OiExLGNvbmZpcm06ITEsY29uc29sZTohMSxEZWJ1ZzohMSxvcGVyYTohMSxwcm9tcHQ6ITF9LGE9e2Rvam86ITEsZGlqaXQ6ITEsZG9qb3g6ITEsZGVmaW5lOiExLHJlcXVpcmU6ITF9LGY9eyJcYiI6IlxcYiIsIgkiOiJcXHQiLCJcbiI6IlxcbiIsIlxmIjoiXFxmIiwiXHIiOiJcXHIiLCciJzonXFwiJywiLyI6IlxcLyIsIlxcIjoiXFxcXCJ9LGwsYz1bImNsb3N1cmUiLCJleGNlcHRpb24iLCJnbG9iYWwiLCJsYWJlbCIsIm91dGVyIiwidW51c2VkIiwidmFyIl0saCxwLGQsdixtLGcseT17JDohMSxqUXVlcnk6ITF9LGIsdyxFLFMseD17JDohMSwkJDohMSxBc3NldHM6ITEsQnJvd3NlcjohMSxDaGFpbjohMSxDbGFzczohMSxDb2xvcjohMSxDb29raWU6ITEsQ29yZTohMSxEb2N1bWVudDohMSxEb21SZWFkeTohMSxET01SZWFkeTohMSxEcmFnOiExLEVsZW1lbnQ6ITEsRWxlbWVudHM6ITEsRXZlbnQ6ITEsRXZlbnRzOiExLEZ4OiExLEdyb3VwOiExLEhhc2g6ITEsSHRtbFRhYmxlOiExLElmcmFtZTohMSxJZnJhbWVTaGltOiExLElucHV0VmFsaWRhdG9yOiExLGluc3RhbmNlT2Y6ITEsS2V5Ym9hcmQ6ITEsTG9jYWxlOiExLE1hc2s6ITEsTW9vVG9vbHM6ITEsTmF0aXZlOiExLE9wdGlvbnM6ITEsT3ZlclRleHQ6ITEsUmVxdWVzdDohMSxTY3JvbGxlcjohMSxTbGljazohMSxTbGlkZXI6ITEsU29ydGFibGVzOiExLFNwaW5uZXI6ITEsU3dpZmY6ITEsVGlwczohMSxUeXBlOiExLHR5cGVPZjohMSxVUkk6ITEsV2luZG93OiExfSxULE49e19fZmlsZW5hbWU6ITEsX19kaXJuYW1lOiExLEJ1ZmZlcjohMSxjb25zb2xlOiExLGV4cG9ydHM6ITEsR0xPQkFMOiExLGdsb2JhbDohMSxtb2R1bGU6ITEscHJvY2VzczohMSxyZXF1aXJlOiExLHNldFRpbWVvdXQ6ITEsY2xlYXJUaW1lb3V0OiExLHNldEludGVydmFsOiExLGNsZWFySW50ZXJ2YWw6ITF9LEMsayxMLEEsTyxNPXskOiExLCQkOiExLCRBOiExLCRGOiExLCRIOiExLCRSOiExLCRicmVhazohMSwkY29udGludWU6ITEsJHc6ITEsQWJzdHJhY3Q6ITEsQWpheDohMSxDbGFzczohMSxFbnVtZXJhYmxlOiExLEVsZW1lbnQ6ITEsRXZlbnQ6ITEsRmllbGQ6ITEsRm9ybTohMSxIYXNoOiExLEluc2VydGlvbjohMSxPYmplY3RSYW5nZTohMSxQZXJpb2RpY2FsRXhlY3V0ZXI6ITEsUG9zaXRpb246ITEsUHJvdG90eXBlOiExLFNlbGVjdG9yOiExLFRlbXBsYXRlOiExLFRvZ2dsZTohMSxUcnk6ITEsQXV0b2NvbXBsZXRlcjohMSxCdWlsZGVyOiExLENvbnRyb2w6ITEsRHJhZ2dhYmxlOiExLERyYWdnYWJsZXM6ITEsRHJvcHBhYmxlczohMSxFZmZlY3Q6ITEsU29ydGFibGU6ITEsU29ydGFibGVPYnNlcnZlcjohMSxTb3VuZDohMSxTY3JpcHRhY3Vsb3VzOiExfSxfPXtkZWZpbmVDbGFzczohMSxkZXNlcmlhbGl6ZTohMSxnYzohMSxoZWxwOiExLGltcG9ydFBhY2thZ2U6ITEsamF2YTohMSxsb2FkOiExLGxvYWRDbGFzczohMSxwcmludDohMSxxdWl0OiExLHJlYWRGaWxlOiExLHJlYWRVcmw6ITEscnVuQ29tbWFuZDohMSxzZWFsOiExLHNlcmlhbGl6ZTohMSxzcGF3bjohMSxzeW5jOiExLHRvaW50MzI6ITEsdmVyc2lvbjohMX0sRCxQLEg9e0FycmF5OiExLEJvb2xlYW46ITEsRGF0ZTohMSxkZWNvZGVVUkk6ITEsZGVjb2RlVVJJQ29tcG9uZW50OiExLGVuY29kZVVSSTohMSxlbmNvZGVVUklDb21wb25lbnQ6ITEsRXJyb3I6ITEsZXZhbDohMSxFdmFsRXJyb3I6ITEsRnVuY3Rpb246ITEsaGFzT3duUHJvcGVydHk6ITEsaXNGaW5pdGU6ITEsaXNOYU46ITEsSlNPTjohMSxNYXRoOiExLE51bWJlcjohMSxPYmplY3Q6ITEscGFyc2VJbnQ6ITEscGFyc2VGbG9hdDohMSxSYW5nZUVycm9yOiExLFJlZmVyZW5jZUVycm9yOiExLFJlZ0V4cDohMSxTdHJpbmc6ITEsU3ludGF4RXJyb3I6ITEsVHlwZUVycm9yOiExLFVSSUVycm9yOiExfSxCPXtlc2NhcGU6ITEsdW5lc2NhcGU6ITF9LGo9e0U6ITAsTE4yOiEwLExOMTA6ITAsTE9HMkU6ITAsTE9HMTBFOiEwLE1BWF9WQUxVRTohMCxNSU5fVkFMVUU6ITAsTkVHQVRJVkVfSU5GSU5JVFk6ITAsUEk6ITAsUE9TSVRJVkVfSU5GSU5JVFk6ITAsU1FSVDFfMjohMCxTUVJUMjohMH0sRixJPXt9LHEsUixVLHosVyxYPXtBY3RpdmVYT2JqZWN0OiEwLEVudW1lcmF0b3I6ITAsR2V0T2JqZWN0OiEwLFNjcmlwdEVuZ2luZTohMCxTY3JpcHRFbmdpbmVCdWlsZFZlcnNpb246ITAsU2NyaXB0RW5naW5lTWFqb3JWZXJzaW9uOiEwLFNjcmlwdEVuZ2luZU1pbm9yVmVyc2lvbjohMCxWQkFycmF5OiEwLFdTSDohMCxXU2NyaXB0OiEwLFhEb21haW5SZXF1ZXN0OiEwfSxWLCQsSixLLFEsRyxZLFosZXQ7KGZ1bmN0aW9uKCl7Vj0vQGNjfDxcLz98c2NyaXB0fFxdXHMqXF18PFxzKiF8Jmx0L2ksJD0vW1x1MDAwMC1cdTAwMWZcdTAwN2YtXHUwMDlmXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdLyxKPS9eXHMqKFsoKXt9XFsuLDo7JyJ+XD9cXSNAXXw9PT89P3xcLyhcKihqc2hpbnR8anNsaW50fG1lbWJlcnM/fGdsb2JhbCk/fD18XC8pP3xcKltcLz1dP3xcKyg/Oj18XCsrKT98LSg/Oj18LSspP3wlPT98JlsmPV0/fFx8W3w9XT98Pj4/Pj89P3w8KFtcLz0hXXxcIShcW3wtLSk/fDw9Pyk/fFxePT98XCE9Pz0/fFthLXpBLVpfJF1bYS16QS1aMC05XyRdKnxbMC05XSsoW3hYXVswLTlhLWZBLUZdK3xcLlswLTldKik/KFtlRV1bK1wtXT9bMC05XSspPykvLEs9L1tcdTAwMDAtXHUwMDFmJjwiXC9cXFx1MDA3Zi1cdTAwOWZcdTAwYWRcdTA2MDAtXHUwNjA0XHUwNzBmXHUxN2I0XHUxN2I1XHUyMDBjLVx1MjAwZlx1MjAyOC1cdTIwMmZcdTIwNjAtXHUyMDZmXHVmZWZmXHVmZmYwLVx1ZmZmZl0vLFE9L1tcdTAwMDAtXHUwMDFmJjwiXC9cXFx1MDA3Zi1cdTAwOWZcdTAwYWRcdTA2MDAtXHUwNjA0XHUwNzBmXHUxN2I0XHUxN2I1XHUyMDBjLVx1MjAwZlx1MjAyOC1cdTIwMmZcdTIwNjAtXHUyMDZmXHVmZWZmXHVmZmYwLVx1ZmZmZl0vZyxHPS9cKlwvfFwvXCovLFk9L14oW2EtekEtWl8kXVthLXpBLVowLTlfJF0qKSQvLFo9L14oPzpqYXZhc2NyaXB0fGpzY3JpcHR8ZWNtYXNjcmlwdHx2YnNjcmlwdHxtb2NoYXxsaXZlc2NyaXB0KVxzKjovaSxldD0vXlxzKlwvXCpccypmYWxsc1xzdGhyb3VnaFxzKlwqXC9ccyokL30pKCksdHlwZW9mIEFycmF5LmlzQXJyYXkhPSJmdW5jdGlvbiImJihBcnJheS5pc0FycmF5PWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGUpPT09IltvYmplY3QgQXJyYXldIn0pLHR5cGVvZiBPYmplY3QuY3JlYXRlIT0iZnVuY3Rpb24iJiYoT2JqZWN0LmNyZWF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdHQucHJvdG90eXBlPWUsbmV3IHR0fSksdHlwZW9mIE9iamVjdC5rZXlzIT0iZnVuY3Rpb24iJiYoT2JqZWN0LmtleXM9ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbjtmb3IobiBpbiBlKW50KGUsbikmJnQucHVzaChuKTtyZXR1cm4gdH0pLHR5cGVvZiBTdHJpbmcucHJvdG90eXBlLmVudGl0eWlmeSE9ImZ1bmN0aW9uIiYmKFN0cmluZy5wcm90b3R5cGUuZW50aXR5aWZ5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfSksdHlwZW9mIFN0cmluZy5wcm90b3R5cGUuaXNBbHBoYSE9ImZ1bmN0aW9uIiYmKFN0cmluZy5wcm90b3R5cGUuaXNBbHBoYT1mdW5jdGlvbigpe3JldHVybiB0aGlzPj0iYSImJnRoaXM8PSJ677+/Inx8dGhpcz49IkEiJiZ0aGlzPD0iWu+/vyJ9KSx0eXBlb2YgU3RyaW5nLnByb3RvdHlwZS5pc0RpZ2l0IT0iZnVuY3Rpb24iJiYoU3RyaW5nLnByb3RvdHlwZS5pc0RpZ2l0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM+PSIwIiYmdGhpczw9IjkifSksdHlwZW9mIFN0cmluZy5wcm90b3R5cGUuc3VwcGxhbnQhPSJmdW5jdGlvbiImJihTdHJpbmcucHJvdG90eXBlLnN1cHBsYW50PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlcGxhY2UoL1x7KFtee31dKilcfS9nLGZ1bmN0aW9uKHQsbil7dmFyIHI9ZVtuXTtyZXR1cm4gdHlwZW9mIHI9PSJzdHJpbmcifHx0eXBlb2Ygcj09Im51bWJlciI/cjp0fSl9KSx0eXBlb2YgU3RyaW5nLnByb3RvdHlwZS5uYW1lIT0iZnVuY3Rpb24iJiYoU3RyaW5nLnByb3RvdHlwZS5uYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIFkudGVzdCh0aGlzKT90aGlzOksudGVzdCh0aGlzKT8nIicrdGhpcy5yZXBsYWNlKFEsZnVuY3Rpb24oZSl7dmFyIHQ9ZltlXTtyZXR1cm4gdD90OiJcXHUiKygiMDAwMCIrZS5jaGFyQ29kZUF0KCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCl9KSsnIic6JyInK3RoaXMrJyInfSk7dmFyIGh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcygpe3ZhciBlLG47cmV0dXJuIHI+PWIubGVuZ3RoPyExOih0PTEsaT1iW3JdLHIrPTEsay5zbWFydHRhYnM/ZT1pLnNlYXJjaCgvIFx0Lyk6ZT1pLnNlYXJjaCgvIFx0fFx0IC8pLGU+PTAmJmZ0KCJNaXhlZCBzcGFjZXMgYW5kIHRhYnMuIixyLGUrMSksaT1pLnJlcGxhY2UoL1x0L2cscSksZT1pLnNlYXJjaCgkKSxlPj0wJiZmdCgiVW5zYWZlIGNoYXJhY3Rlci4iLHIsZSksay5tYXhsZW4mJmsubWF4bGVuPGkubGVuZ3RoJiZmdCgiTGluZSB0b28gbG9uZy4iLHIsaS5sZW5ndGgpLG49ay50cmFpbGluZyYmaS5tYXRjaCgvXiguKj8pXHMrJC8pLG4mJiEvXlxzKyQvLnRlc3QoaSkmJmZ0KCJUcmFpbGluZyB3aGl0ZXNwYWNlLiIscixuWzFdLmxlbmd0aCsxKSwhMCl9ZnVuY3Rpb24gbyhlLGkpe3ZhciBzLG87cmV0dXJuIGU9PT0iKGNvbG9yKSJ8fGU9PT0iKHJhbmdlKSI/bz17dHlwZTplfTplPT09IihwdW5jdHVhdG9yKSJ8fGU9PT0iKGlkZW50aWZpZXIpIiYmbnQoSSxpKT9vPUlbaV18fElbIihlcnJvcikiXTpvPUlbZV0sbz1PYmplY3QuY3JlYXRlKG8pLChlPT09IihzdHJpbmcpInx8ZT09PSIocmFuZ2UpIikmJiFrLnNjcmlwdHVybCYmWi50ZXN0KGkpJiZmdCgiU2NyaXB0IFVSTC4iLHIsbiksZT09PSIoaWRlbnRpZmllcikiJiYoby5pZGVudGlmaWVyPSEwLGk9PT0iX19wcm90b19fIiYmIWsucHJvdG8/ZnQoIlRoZSAne2F9JyBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLiIscixuLGkpOmk9PT0iX19pdGVyYXRvcl9fIiYmIWsuaXRlcmF0b3I/ZnQoIid7YX0nIGlzIG9ubHkgYXZhaWxhYmxlIGluIEphdmFTY3JpcHQgMS43LiIscixuLGkpOmsubm9tZW4mJihpLmNoYXJBdCgwKT09PSJfInx8aS5jaGFyQXQoaS5sZW5ndGgtMSk9PT0iXyIpJiYoIWsubm9kZXx8Ui5pZD09PSIuInx8aSE9PSJfX2Rpcm5hbWUiJiZpIT09Il9fZmlsZW5hbWUiKSYmZnQoIlVuZXhwZWN0ZWQge2F9IGluICd7Yn0nLiIscixuLCJkYW5nbGluZyAnXyciLGkpKSxvLnZhbHVlPWksby5saW5lPXIsby5jaGFyYWN0ZXI9dCxvLmZyb209bixzPW8uaWQscyE9PSIoZW5kbGluZSkiJiYoQT1zJiYoIigsPTpbISZ8P3t9OyIuaW5kZXhPZihzLmNoYXJBdChzLmxlbmd0aC0xKSk+PTB8fHM9PT0icmV0dXJuInx8cz09PSJjYXNlIikpLG99dmFyIHQsbixyLGk7cmV0dXJue2luaXQ6ZnVuY3Rpb24oZSl7dHlwZW9mIGU9PSJzdHJpbmciP2I9ZS5yZXBsYWNlKC9cclxuL2csIlxuIikucmVwbGFjZSgvXHIvZywiXG4iKS5zcGxpdCgiXG4iKTpiPWUsYlswXSYmYlswXS5zdWJzdHIoMCwyKT09PSIjISImJihiWzBdPSIiKSxyPTAscygpLG49MX0scmFuZ2U6ZnVuY3Rpb24oZSxzKXt2YXIgdSxhPSIiO249dCxpLmNoYXJBdCgwKSE9PWUmJmN0KCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIixyLHQsZSxpLmNoYXJBdCgwKSk7Zm9yKDs7KXtpPWkuc2xpY2UoMSksdCs9MSx1PWkuY2hhckF0KDApO3N3aXRjaCh1KXtjYXNlIiI6Y3QoIk1pc3NpbmcgJ3thfScuIixyLHQsdSk7YnJlYWs7Y2FzZSBzOnJldHVybiBpPWkuc2xpY2UoMSksdCs9MSxvKCIocmFuZ2UpIixhKTtjYXNlIlxcIjpmdCgiVW5leHBlY3RlZCAne2F9Jy4iLHIsdCx1KX1hKz11fX0sdG9rZW46ZnVuY3Rpb24oKXtmdW5jdGlvbiBFKGUpe3ZhciByPWUuZXhlYyhpKSxzO2lmKHIpcmV0dXJuIHA9clswXS5sZW5ndGgscz1yWzFdLHU9cy5jaGFyQXQoMCksaT1pLnN1YnN0cihwKSxuPXQrcC1zLmxlbmd0aCx0Kz1wLHN9ZnVuY3Rpb24gUyhlKXtmdW5jdGlvbiBjKGUpe3ZhciBuPXBhcnNlSW50KGkuc3Vic3RyKGErMSxlKSwxNik7YSs9ZSxuPj0zMiYmbjw9MTI2JiZuIT09MzQmJm4hPT05MiYmbiE9PTM5JiZmdCgiVW5uZWNlc3NhcnkgZXNjYXBlbWVudC4iLHIsdCksdCs9ZSx1PVN0cmluZy5mcm9tQ2hhckNvZGUobil9dmFyIHUsYSxmPSIiLGw9ITE7ZyYmZSE9PSciJyYmZnQoIlN0cmluZ3MgbXVzdCB1c2UgZG91YmxlcXVvdGUuIixyLHQpLGE9MDtlOmZvcig7Oyl7d2hpbGUoYT49aS5sZW5ndGgpe2E9MDt2YXIgaD1yLHA9bjtpZighcygpKXtjdCgiVW5jbG9zZWQgc3RyaW5nLiIsaCxwKTticmVhayBlfWw/bD0hMTpmdCgiVW5jbG9zZWQgc3RyaW5nLiIsaCxwKX11PWkuY2hhckF0KGEpO2lmKHU9PT1lKXJldHVybiB0Kz0xLGk9aS5zdWJzdHIoYSsxKSxvKCIoc3RyaW5nKSIsZixlKTtpZih1PCIgIil7aWYodT09PSJcbiJ8fHU9PT0iXHIiKWJyZWFrO2Z0KCJDb250cm9sIGNoYXJhY3RlciBpbiBzdHJpbmc6IHthfS4iLHIsdCthLGkuc2xpY2UoMCxhKSl9ZWxzZSBpZih1PT09IlxcIil7YSs9MSx0Kz0xLHU9aS5jaGFyQXQoYSksdz1pLmNoYXJBdChhKzEpO3N3aXRjaCh1KXtjYXNlIlxcIjpjYXNlJyInOmNhc2UiLyI6YnJlYWs7Y2FzZSInIjpnJiZmdCgiQXZvaWQgXFwnLiIscix0KTticmVhaztjYXNlImIiOnU9IlxiIjticmVhaztjYXNlImYiOnU9IlxmIjticmVhaztjYXNlIm4iOnU9IlxuIjticmVhaztjYXNlInIiOnU9IlxyIjticmVhaztjYXNlInQiOnU9IgkiO2JyZWFrO2Nhc2UiMCI6dT0iXDAiLHc+PTAmJnc8PTcmJkZbInVzZSBzdHJpY3QiXSYmZnQoIk9jdGFsIGxpdGVyYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZS4iLHIsdCk7YnJlYWs7Y2FzZSJ1IjpjKDQpO2JyZWFrO2Nhc2UidiI6ZyYmZnQoIkF2b2lkIFxcdi4iLHIsdCksdT0iCyI7YnJlYWs7Y2FzZSJ4IjpnJiZmdCgiQXZvaWQgXFx4LS4iLHIsdCksYygyKTticmVhaztjYXNlIiI6bD0hMDtpZihrLm11bHRpc3RyKXtnJiZmdCgiQXZvaWQgRU9MIGVzY2FwZW1lbnQuIixyLHQpLHU9IiIsdC09MTticmVha31mdCgiQmFkIGVzY2FwZW1lbnQgb2YgRU9MLiBVc2Ugb3B0aW9uIG11bHRpc3RyIGlmIG5lZWRlZC4iLHIsdCk7YnJlYWs7ZGVmYXVsdDpmdCgiQmFkIGVzY2FwZW1lbnQuIixyLHQpfX1mKz11LHQrPTEsYSs9MX19dmFyIGUsdSxhLGYsbCxjLGgscCxkLHYsbSx5LGIsdztmb3IoOzspe2lmKCFpKXJldHVybiBvKHMoKT8iKGVuZGxpbmUpIjoiKGVuZCkiLCIiKTttPUUoSik7aWYoIW0pe209IiIsdT0iIjt3aGlsZShpJiZpPCIhIilpPWkuc3Vic3RyKDEpO2kmJihjdCgiVW5leHBlY3RlZCAne2F9Jy4iLHIsdCxpLnN1YnN0cigwLDEpKSxpPSIiKX1lbHNle2lmKHUuaXNBbHBoYSgpfHx1PT09Il8ifHx1PT09IiQiKXJldHVybiBvKCIoaWRlbnRpZmllcikiLG0pO2lmKHUuaXNEaWdpdCgpKXJldHVybiBpc0Zpbml0ZShOdW1iZXIobSkpfHxmdCgiQmFkIG51bWJlciAne2F9Jy4iLHIsdCxtKSxpLnN1YnN0cigwLDEpLmlzQWxwaGEoKSYmZnQoIk1pc3Npbmcgc3BhY2UgYWZ0ZXIgJ3thfScuIixyLHQsbSksdT09PSIwIiYmKGY9bS5zdWJzdHIoMSwxKSxmLmlzRGlnaXQoKT9SLmlkIT09Ii4iJiZmdCgiRG9uJ3QgdXNlIGV4dHJhIGxlYWRpbmcgemVyb3MgJ3thfScuIixyLHQsbSk6ZyYmKGY9PT0ieCJ8fGY9PT0iWCIpJiZmdCgiQXZvaWQgMHgtLiAne2F9Jy4iLHIsdCxtKSksbS5zdWJzdHIobS5sZW5ndGgtMSk9PT0iLiImJmZ0KCJBIHRyYWlsaW5nIGRlY2ltYWwgcG9pbnQgY2FuIGJlIGNvbmZ1c2VkIHdpdGggYSBkb3QgJ3thfScuIixyLHQsbSksbygiKG51bWJlcikiLG0pO3N3aXRjaChtKXtjYXNlJyInOmNhc2UiJyI6cmV0dXJuIFMobSk7Y2FzZSIvLyI6aT0iIixSLmNvbW1lbnQ9ITA7YnJlYWs7Y2FzZSIvKiI6Zm9yKDs7KXtoPWkuc2VhcmNoKEcpO2lmKGg+PTApYnJlYWs7cygpfHxjdCgiVW5jbG9zZWQgY29tbWVudC4iLHIsdCl9dCs9aCsyLGkuc3Vic3RyKGgsMSk9PT0iLyImJmN0KCJOZXN0ZWQgY29tbWVudC4iLHIsdCksaT1pLnN1YnN0cihoKzIpLFIuY29tbWVudD0hMDticmVhaztjYXNlIi8qbWVtYmVycyI6Y2FzZSIvKm1lbWJlciI6Y2FzZSIvKmpzaGludCI6Y2FzZSIvKmpzbGludCI6Y2FzZSIvKmdsb2JhbCI6Y2FzZSIqLyI6cmV0dXJue3ZhbHVlOm0sdHlwZToic3BlY2lhbCIsbGluZTpyLGNoYXJhY3Rlcjp0LGZyb206bn07Y2FzZSIiOmJyZWFrO2Nhc2UiLyI6Ui5pZD09PSIvPSImJmN0KCJBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFsIGNhbiBiZSBjb25mdXNlZCB3aXRoICcvPScuIixyLG4pO2lmKEEpe2w9MCxhPTAscD0wO2Zvcig7Oyl7ZT0hMCx1PWkuY2hhckF0KHApLHArPTE7c3dpdGNoKHUpe2Nhc2UiIjpyZXR1cm4gY3QoIlVuY2xvc2VkIHJlZ3VsYXIgZXhwcmVzc2lvbi4iLHIsbiksb3QoIlN0b3BwaW5nLiIscixuKTtjYXNlIi8iOmw+MCYmZnQoInthfSB1bnRlcm1pbmF0ZWQgcmVndWxhciBleHByZXNzaW9uIGdyb3VwKHMpLiIscixuK3AsbCksdT1pLnN1YnN0cigwLHAtMSksdj17ZzohMCxpOiEwLG06ITB9O3doaWxlKHZbaS5jaGFyQXQocCldPT09ITApdltpLmNoYXJBdChwKV09ITEscCs9MTtyZXR1cm4gdCs9cCxpPWkuc3Vic3RyKHApLHY9aS5jaGFyQXQoMCksKHY9PT0iLyJ8fHY9PT0iKiIpJiZjdCgiQ29uZnVzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbi4iLHIsbiksbygiKHJlZ2V4cCkiLHUpO2Nhc2UiXFwiOnU9aS5jaGFyQXQocCksdTwiICI/ZnQoIlVuZXhwZWN0ZWQgY29udHJvbCBjaGFyYWN0ZXIgaW4gcmVndWxhciBleHByZXNzaW9uLiIscixuK3ApOnU9PT0iPCImJmZ0KCJVbmV4cGVjdGVkIGVzY2FwZWQgY2hhcmFjdGVyICd7YX0nIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4iLHIsbitwLHUpLHArPTE7YnJlYWs7Y2FzZSIoIjpsKz0xLGU9ITE7aWYoaS5jaGFyQXQocCk9PT0iPyIpe3ArPTE7c3dpdGNoKGkuY2hhckF0KHApKXtjYXNlIjoiOmNhc2UiPSI6Y2FzZSIhIjpwKz0xO2JyZWFrO2RlZmF1bHQ6ZnQoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLHIsbitwLCI6IixpLmNoYXJBdChwKSl9fWVsc2UgYSs9MTticmVhaztjYXNlInwiOmU9ITE7YnJlYWs7Y2FzZSIpIjpsPT09MD9mdCgiVW5lc2NhcGVkICd7YX0nLiIscixuK3AsIikiKTpsLT0xO2JyZWFrO2Nhc2UiICI6dj0xO3doaWxlKGkuY2hhckF0KHApPT09IiAiKXArPTEsdis9MTt2PjEmJmZ0KCJTcGFjZXMgYXJlIGhhcmQgdG8gY291bnQuIFVzZSB7e2F9fS4iLHIsbitwLHYpO2JyZWFrO2Nhc2UiWyI6dT1pLmNoYXJBdChwKSx1PT09Il4iJiYocCs9MSxrLnJlZ2V4cD9mdCgiSW5zZWN1cmUgJ3thfScuIixyLG4rcCx1KTppLmNoYXJBdChwKT09PSJdIiYmY3QoIlVuZXNjYXBlZCAne2F9Jy4iLHIsbitwLCJeIikpLHU9PT0iXSImJmZ0KCJFbXB0eSBjbGFzcy4iLHIsbitwLTEpLHk9ITEsYj0hMTtlOmRve3U9aS5jaGFyQXQocCkscCs9MTtzd2l0Y2godSl7Y2FzZSJbIjpjYXNlIl4iOmZ0KCJVbmVzY2FwZWQgJ3thfScuIixyLG4rcCx1KSxiP2I9ITE6eT0hMDticmVhaztjYXNlIi0iOnkmJiFiPyh5PSExLGI9ITApOmI/Yj0hMTppLmNoYXJBdChwKT09PSJdIj9iPSEwOihrLnJlZ2V4ZGFzaCE9PShwPT09Mnx8cD09PTMmJmkuY2hhckF0KDEpPT09Il4iKSYmZnQoIlVuZXNjYXBlZCAne2F9Jy4iLHIsbitwLTEsIi0iKSx5PSEwKTticmVhaztjYXNlIl0iOmImJiFrLnJlZ2V4ZGFzaCYmZnQoIlVuZXNjYXBlZCAne2F9Jy4iLHIsbitwLTEsIi0iKTticmVhayBlO2Nhc2UiXFwiOnU9aS5jaGFyQXQocCksdTwiICI/ZnQoIlVuZXhwZWN0ZWQgY29udHJvbCBjaGFyYWN0ZXIgaW4gcmVndWxhciBleHByZXNzaW9uLiIscixuK3ApOnU9PT0iPCImJmZ0KCJVbmV4cGVjdGVkIGVzY2FwZWQgY2hhcmFjdGVyICd7YX0nIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4iLHIsbitwLHUpLHArPTEsL1t3c2RdL2kudGVzdCh1KT8oYiYmKGZ0KCJVbmVzY2FwZWQgJ3thfScuIixyLG4rcCwiLSIpLGI9ITEpLHk9ITEpOmI/Yj0hMTp5PSEwO2JyZWFrO2Nhc2UiLyI6ZnQoIlVuZXNjYXBlZCAne2F9Jy4iLHIsbitwLTEsIi8iKSxiP2I9ITE6eT0hMDticmVhaztjYXNlIjwiOmI/Yj0hMTp5PSEwO2JyZWFrO2RlZmF1bHQ6Yj9iPSExOnk9ITB9fXdoaWxlKHUpO2JyZWFrO2Nhc2UiLiI6ay5yZWdleHAmJmZ0KCJJbnNlY3VyZSAne2F9Jy4iLHIsbitwLHUpO2JyZWFrO2Nhc2UiXSI6Y2FzZSI/IjpjYXNlInsiOmNhc2UifSI6Y2FzZSIrIjpjYXNlIioiOmZ0KCJVbmVzY2FwZWQgJ3thfScuIixyLG4rcCx1KX1pZihlKXN3aXRjaChpLmNoYXJBdChwKSl7Y2FzZSI/IjpjYXNlIisiOmNhc2UiKiI6cCs9MSxpLmNoYXJBdChwKT09PSI/IiYmKHArPTEpO2JyZWFrO2Nhc2UieyI6cCs9MSx1PWkuY2hhckF0KHApLCh1PCIwInx8dT4iOSIpJiZmdCgiRXhwZWN0ZWQgYSBudW1iZXIgYW5kIGluc3RlYWQgc2F3ICd7YX0nLiIscixuK3AsdSkscCs9MSxkPSt1O2Zvcig7Oyl7dT1pLmNoYXJBdChwKTtpZih1PCIwInx8dT4iOSIpYnJlYWs7cCs9MSxkPSt1K2QqMTB9Yz1kO2lmKHU9PT0iLCIpe3ArPTEsYz1JbmZpbml0eSx1PWkuY2hhckF0KHApO2lmKHU+PSIwIiYmdTw9IjkiKXtwKz0xLGM9K3U7Zm9yKDs7KXt1PWkuY2hhckF0KHApO2lmKHU8IjAifHx1PiI5IilicmVhaztwKz0xLGM9K3UrYyoxMH19fWkuY2hhckF0KHApIT09In0iP2Z0KCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIixyLG4rcCwifSIsdSk6cCs9MSxpLmNoYXJBdChwKT09PSI/IiYmKHArPTEpLGQ+YyYmZnQoIid7YX0nIHNob3VsZCBub3QgYmUgZ3JlYXRlciB0aGFuICd7Yn0nLiIscixuK3AsZCxjKX19cmV0dXJuIHU9aS5zdWJzdHIoMCxwLTEpLHQrPXAsaT1pLnN1YnN0cihwKSxvKCIocmVnZXhwKSIsdSl9cmV0dXJuIG8oIihwdW5jdHVhdG9yKSIsbSk7Y2FzZSIjIjpyZXR1cm4gbygiKHB1bmN0dWF0b3IpIixtKTtkZWZhdWx0OnJldHVybiBvKCIocHVuY3R1YXRvcikiLG0pfX19fX19KCk7X3QoIihudW1iZXIpIixmdW5jdGlvbigpe3JldHVybiB0aGlzfSksX3QoIihzdHJpbmcpIixmdW5jdGlvbigpe3JldHVybiB0aGlzfSksSVsiKGlkZW50aWZpZXIpIl09e3R5cGU6IihpZGVudGlmaWVyKSIsbGJwOjAsaWRlbnRpZmllcjohMCxudWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnZhbHVlLG49RFt0XSxyO3R5cGVvZiBuPT0iZnVuY3Rpb24iP249dW5kZWZpbmVkOnR5cGVvZiBuPT0iYm9vbGVhbiImJihyPWwsbD1oWzBdLHB0KHQsInZhciIpLG49bCxsPXIpO2lmKGw9PT1uKXN3aXRjaChsW3RdKXtjYXNlInVudXNlZCI6bFt0XT0idmFyIjticmVhaztjYXNlInVuY3Rpb24iOmxbdF09ImZ1bmN0aW9uIix0aGlzWyJmdW5jdGlvbiJdPSEwO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOnRoaXNbImZ1bmN0aW9uIl09ITA7YnJlYWs7Y2FzZSJsYWJlbCI6YXQoIid7YX0nIGlzIGEgc3RhdGVtZW50IGxhYmVsLiIsUix0KX1lbHNlIGlmKGxbIihnbG9iYWwpIl0pay51bmRlZiYmdHlwZW9mIExbdF0hPSJib29sZWFuIiYmKGUhPT0idHlwZW9mIiYmZSE9PSJkZWxldGUifHxUJiYoVC52YWx1ZT09PSIuInx8VC52YWx1ZT09PSJbIikpJiZ1dChsLCIne2F9JyBpcyBub3QgZGVmaW5lZC4iLFIsdCksUXQoUik7ZWxzZSBzd2l0Y2gobFt0XSl7Y2FzZSJjbG9zdXJlIjpjYXNlImZ1bmN0aW9uIjpjYXNlInZhciI6Y2FzZSJ1bnVzZWQiOmF0KCIne2F9JyB1c2VkIG91dCBvZiBzY29wZS4iLFIsdCk7YnJlYWs7Y2FzZSJsYWJlbCI6YXQoIid7YX0nIGlzIGEgc3RhdGVtZW50IGxhYmVsLiIsUix0KTticmVhaztjYXNlIm91dGVyIjpjYXNlImdsb2JhbCI6YnJlYWs7ZGVmYXVsdDppZihuPT09ITApbFt0XT0hMDtlbHNlIGlmKG49PT1udWxsKWF0KCIne2F9JyBpcyBub3QgYWxsb3dlZC4iLFIsdCksUXQoUik7ZWxzZSBpZih0eXBlb2YgbiE9Im9iamVjdCIpay51bmRlZiYmKGUhPT0idHlwZW9mIiYmZSE9PSJkZWxldGUifHxUJiYoVC52YWx1ZT09PSIuInx8VC52YWx1ZT09PSJbIikpJiZ1dChsLCIne2F9JyBpcyBub3QgZGVmaW5lZC4iLFIsdCksbFt0XT0hMCxRdChSKTtlbHNlIHN3aXRjaChuW3RdKXtjYXNlImZ1bmN0aW9uIjpjYXNlInVuY3Rpb24iOnRoaXNbImZ1bmN0aW9uIl09ITAsblt0XT0iY2xvc3VyZSIsbFt0XT1uWyIoZ2xvYmFsKSJdPyJnbG9iYWwiOiJvdXRlciI7YnJlYWs7Y2FzZSJ2YXIiOmNhc2UidW51c2VkIjpuW3RdPSJjbG9zdXJlIixsW3RdPW5bIihnbG9iYWwpIl0/Imdsb2JhbCI6Im91dGVyIjticmVhaztjYXNlImNsb3N1cmUiOmNhc2UicGFyYW1ldGVyIjpsW3RdPW5bIihnbG9iYWwpIl0/Imdsb2JhbCI6Im91dGVyIjticmVhaztjYXNlImxhYmVsIjphdCgiJ3thfScgaXMgYSBzdGF0ZW1lbnQgbGFiZWwuIixSLHQpfX1yZXR1cm4gdGhpc30sbGVkOmZ1bmN0aW9uKCl7bHQoIkV4cGVjdGVkIGFuIG9wZXJhdG9yIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLFQsVC52YWx1ZSl9fSxfdCgiKHJlZ2V4cCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxrdCgiKGVuZGxpbmUpIiksa3QoIihiZWdpbikiKSxrdCgiKGVuZCkiKS5yZWFjaD0hMCxrdCgiPC8iKS5yZWFjaD0hMCxrdCgiPCEiKSxrdCgiPCEtLSIpLGt0KCItLT4iKSxrdCgiKGVycm9yKSIpLnJlYWNoPSEwLGt0KCJ9IikucmVhY2g9ITAsa3QoIikiKSxrdCgiXSIpLGt0KCciJykucmVhY2g9ITAsa3QoIiciKS5yZWFjaD0hMCxrdCgiOyIpLGt0KCI6IikucmVhY2g9ITAsa3QoIiwiKSxrdCgiIyIpLGt0KCJAIiksRHQoImVsc2UiKSxEdCgiY2FzZSIpLnJlYWNoPSEwLER0KCJjYXRjaCIpLER0KCJkZWZhdWx0IikucmVhY2g9ITAsRHQoImZpbmFsbHkiKSxQdCgiYXJndW1lbnRzIixmdW5jdGlvbihlKXtGWyJ1c2Ugc3RyaWN0Il0mJmxbIihnbG9iYWwpIl0mJmF0KCJTdHJpY3QgdmlvbGF0aW9uLiIsZSl9KSxQdCgiZXZhbCIpLFB0KCJmYWxzZSIpLFB0KCJJbmZpbml0eSIpLFB0KCJOYU4iKSxQdCgibnVsbCIpLFB0KCJ0aGlzIixmdW5jdGlvbihlKXtGWyJ1c2Ugc3RyaWN0Il0mJiFrLnZhbGlkdGhpcyYmKGxbIihzdGF0ZW1lbnQpIl0mJmxbIihuYW1lKSJdLmNoYXJBdCgwKT4iWiJ8fGxbIihnbG9iYWwpIl0pJiZhdCgiUG9zc2libGUgc3RyaWN0IHZpb2xhdGlvbi4iLGUpfSksUHQoInRydWUiKSxQdCgidW5kZWZpbmVkIiksRnQoIj0iLCJhc3NpZ24iLDIwKSxGdCgiKz0iLCJhc3NpZ25hZGQiLDIwKSxGdCgiLT0iLCJhc3NpZ25zdWIiLDIwKSxGdCgiKj0iLCJhc3NpZ25tdWx0IiwyMCksRnQoIi89IiwiYXNzaWduZGl2IiwyMCkubnVkPWZ1bmN0aW9uKCl7bHQoIkEgcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWwgY2FuIGJlIGNvbmZ1c2VkIHdpdGggJy89Jy4iKX0sRnQoIiU9IiwiYXNzaWdubW9kIiwyMCkscXQoIiY9IiwiYXNzaWduYml0YW5kIiwyMCkscXQoInw9IiwiYXNzaWduYml0b3IiLDIwKSxxdCgiXj0iLCJhc3NpZ25iaXR4b3IiLDIwKSxxdCgiPDw9IiwiYXNzaWduc2hpZnRsZWZ0IiwyMCkscXQoIj4+PSIsImFzc2lnbnNoaWZ0cmlnaHQiLDIwKSxxdCgiPj4+PSIsImFzc2lnbnNoaWZ0cmlnaHR1bnNpZ25lZCIsMjApLEh0KCI/IixmdW5jdGlvbihlLHQpe3JldHVybiB0LmxlZnQ9ZSx0LnJpZ2h0PWd0KDEwKSxtdCgiOiIpLHRbImVsc2UiXT1ndCgxMCksdH0sMzApLEh0KCJ8fCIsIm9yIiw0MCksSHQoIiYmIiwiYW5kIiw1MCksSXQoInwiLCJiaXRvciIsNzApLEl0KCJeIiwiYml0eG9yIiw4MCksSXQoIiYiLCJiaXRhbmQiLDkwKSxCdCgiPT0iLGZ1bmN0aW9uKGUsdCl7dmFyIG49ay5lcW51bGwmJihlLnZhbHVlPT09Im51bGwifHx0LnZhbHVlPT09Im51bGwiKTtyZXR1cm4hbiYmay5lcWVxZXE/YXQoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLHRoaXMsIj09PSIsIj09Iik6anQoZSk/YXQoIlVzZSAne2F9JyB0byBjb21wYXJlIHdpdGggJ3tifScuIix0aGlzLCI9PT0iLGUudmFsdWUpOmp0KHQpJiZhdCgiVXNlICd7YX0nIHRvIGNvbXBhcmUgd2l0aCAne2J9Jy4iLHRoaXMsIj09PSIsdC52YWx1ZSksdGhpc30pLEJ0KCI9PT0iKSxCdCgiIT0iLGZ1bmN0aW9uKGUsdCl7dmFyIG49ay5lcW51bGwmJihlLnZhbHVlPT09Im51bGwifHx0LnZhbHVlPT09Im51bGwiKTtyZXR1cm4hbiYmay5lcWVxZXE/YXQoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLHRoaXMsIiE9PSIsIiE9Iik6anQoZSk/YXQoIlVzZSAne2F9JyB0byBjb21wYXJlIHdpdGggJ3tifScuIix0aGlzLCIhPT0iLGUudmFsdWUpOmp0KHQpJiZhdCgiVXNlICd7YX0nIHRvIGNvbXBhcmUgd2l0aCAne2J9Jy4iLHRoaXMsIiE9PSIsdC52YWx1ZSksdGhpc30pLEJ0KCIhPT0iKSxCdCgiPCIpLEJ0KCI+IiksQnQoIjw9IiksQnQoIj49IiksSXQoIjw8Iiwic2hpZnRsZWZ0IiwxMjApLEl0KCI+PiIsInNoaWZ0cmlnaHQiLDEyMCksSXQoIj4+PiIsInNoaWZ0cmlnaHR1bnNpZ25lZCIsMTIwKSxIdCgiaW4iLCJpbiIsMTIwKSxIdCgiaW5zdGFuY2VvZiIsImluc3RhbmNlb2YiLDEyMCksSHQoIisiLGZ1bmN0aW9uKGUsdCl7dmFyIG49Z3QoMTMwKTtyZXR1cm4gZSYmbiYmZS5pZD09PSIoc3RyaW5nKSImJm4uaWQ9PT0iKHN0cmluZykiPyhlLnZhbHVlKz1uLnZhbHVlLGUuY2hhcmFjdGVyPW4uY2hhcmFjdGVyLCFrLnNjcmlwdHVybCYmWi50ZXN0KGUudmFsdWUpJiZhdCgiSmF2YVNjcmlwdCBVUkwuIixlKSxlKToodC5sZWZ0PWUsdC5yaWdodD1uLHQpfSwxMzApLE10KCIrIiwibnVtIiksTXQoIisrKyIsZnVuY3Rpb24oKXtyZXR1cm4gYXQoIkNvbmZ1c2luZyBwbHVzZXMuIiksdGhpcy5yaWdodD1ndCgxNTApLHRoaXMuYXJpdHk9InVuYXJ5Iix0aGlzfSksSHQoIisrKyIsZnVuY3Rpb24oZSl7cmV0dXJuIGF0KCJDb25mdXNpbmcgcGx1c2VzLiIpLHRoaXMubGVmdD1lLHRoaXMucmlnaHQ9Z3QoMTMwKSx0aGlzfSwxMzApLEh0KCItIiwic3ViIiwxMzApLE10KCItIiwibmVnIiksTXQoIi0tLSIsZnVuY3Rpb24oKXtyZXR1cm4gYXQoIkNvbmZ1c2luZyBtaW51c2VzLiIpLHRoaXMucmlnaHQ9Z3QoMTUwKSx0aGlzLmFyaXR5PSJ1bmFyeSIsdGhpc30pLEh0KCItLS0iLGZ1bmN0aW9uKGUpe3JldHVybiBhdCgiQ29uZnVzaW5nIG1pbnVzZXMuIiksdGhpcy5sZWZ0PWUsdGhpcy5yaWdodD1ndCgxMzApLHRoaXN9LDEzMCksSHQoIioiLCJtdWx0IiwxNDApLEh0KCIvIiwiZGl2IiwxNDApLEh0KCIlIiwibW9kIiwxNDApLFJ0KCIrKyIsInBvc3RpbmMiKSxNdCgiKysiLCJwcmVpbmMiKSxJWyIrKyJdLmV4cHM9ITAsUnQoIi0tIiwicG9zdGRlYyIpLE10KCItLSIsInByZWRlYyIpLElbIi0tIl0uZXhwcz0hMCxNdCgiZGVsZXRlIixmdW5jdGlvbigpe3ZhciBlPWd0KDApO3JldHVybighZXx8ZS5pZCE9PSIuIiYmZS5pZCE9PSJbIikmJmF0KCJWYXJpYWJsZXMgc2hvdWxkIG5vdCBiZSBkZWxldGVkLiIpLHRoaXMuZmlyc3Q9ZSx0aGlzfSkuZXhwcz0hMCxNdCgifiIsZnVuY3Rpb24oKXtyZXR1cm4gay5iaXR3aXNlJiZhdCgiVW5leHBlY3RlZCAne2F9Jy4iLHRoaXMsIn4iKSxndCgxNTApLHRoaXN9KSxNdCgiISIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaWdodD1ndCgxNTApLHRoaXMuYXJpdHk9InVuYXJ5Iix0W3RoaXMucmlnaHQuaWRdPT09ITAmJmF0KCJDb25mdXNpbmcgdXNlIG9mICd7YX0nLiIsdGhpcywiISIpLHRoaXN9KSxNdCgidHlwZW9mIiwidHlwZW9mIiksTXQoIm5ldyIsZnVuY3Rpb24oKXt2YXIgZT1ndCgxNTUpLHQ7aWYoZSYmZS5pZCE9PSJmdW5jdGlvbiIpaWYoZS5pZGVudGlmaWVyKXtlWyJuZXciXT0hMDtzd2l0Y2goZS52YWx1ZSl7Y2FzZSJOdW1iZXIiOmNhc2UiU3RyaW5nIjpjYXNlIkJvb2xlYW4iOmNhc2UiTWF0aCI6Y2FzZSJKU09OIjphdCgiRG8gbm90IHVzZSB7YX0gYXMgYSBjb25zdHJ1Y3Rvci4iLFIsZS52YWx1ZSk7YnJlYWs7Y2FzZSJGdW5jdGlvbiI6ay5ldmlsfHxhdCgiVGhlIEZ1bmN0aW9uIGNvbnN0cnVjdG9yIGlzIGV2YWwuIik7YnJlYWs7Y2FzZSJEYXRlIjpjYXNlIlJlZ0V4cCI6YnJlYWs7ZGVmYXVsdDplLmlkIT09ImZ1bmN0aW9uIiYmKHQ9ZS52YWx1ZS5zdWJzdHIoMCwxKSxrLm5ld2NhcCYmKHQ8IkEifHx0PiJaIikmJmF0KCJBIGNvbnN0cnVjdG9yIG5hbWUgc2hvdWxkIHN0YXJ0IHdpdGggYW4gdXBwZXJjYXNlIGxldHRlci4iLFIpKX19ZWxzZSBlLmlkIT09Ii4iJiZlLmlkIT09IlsiJiZlLmlkIT09IigiJiZhdCgiQmFkIGNvbnN0cnVjdG9yLiIsUik7ZWxzZSBrLnN1cGVybmV3fHxhdCgiV2VpcmQgY29uc3RydWN0aW9uLiBEZWxldGUgJ25ldycuIix0aGlzKTtyZXR1cm4geXQoUixUKSxULmlkIT09IigiJiYhay5zdXBlcm5ldyYmYXQoIk1pc3NpbmcgJygpJyBpbnZva2luZyBhIGNvbnN0cnVjdG9yLiIpLHRoaXMuZmlyc3Q9ZSx0aGlzfSksSVsibmV3Il0uZXhwcz0hMCxNdCgidm9pZCIpLmV4cHM9ITAsSHQoIi4iLGZ1bmN0aW9uKGUsdCl7eXQoTyxSKSxidCgpO3ZhciBuPXp0KCk7cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nIiYmS3QobiksdC5sZWZ0PWUsdC5yaWdodD1uLCFlfHxlLnZhbHVlIT09ImFyZ3VtZW50cyJ8fG4hPT0iY2FsbGVlIiYmbiE9PSJjYWxsZXIiPyFrLmV2aWwmJmUmJmUudmFsdWU9PT0iZG9jdW1lbnQiJiYobj09PSJ3cml0ZSJ8fG49PT0id3JpdGVsbiIpJiZhdCgiZG9jdW1lbnQud3JpdGUgY2FuIGJlIGEgZm9ybSBvZiBldmFsLiIsZSk6ay5ub2FyZz9hdCgiQXZvaWQgYXJndW1lbnRzLnthfS4iLGUsbik6RlsidXNlIHN0cmljdCJdJiZsdCgiU3RyaWN0IHZpb2xhdGlvbi4iKSwhay5ldmlsJiYobj09PSJldmFsInx8bj09PSJleGVjU2NyaXB0IikmJmF0KCJldmFsIGlzIGV2aWwuIiksdH0sMTYwLCEwKSxIdCgiKCIsZnVuY3Rpb24oZSx0KXtPLmlkIT09In0iJiZPLmlkIT09IikiJiZidChPLFIpLHd0KCksay5pbW1lZCYmIWUuaW1tZWQmJmUuaWQ9PT0iZnVuY3Rpb24iJiZhdCgiV3JhcCBhbiBpbW1lZGlhdGUgZnVuY3Rpb24gaW52b2NhdGlvbiBpbiBwYXJlbnRoZXNlcyB0byBhc3Npc3QgdGhlIHJlYWRlciBpbiB1bmRlcnN0YW5kaW5nIHRoYXQgdGhlIGV4cHJlc3Npb24gaXMgdGhlIHJlc3VsdCBvZiBhIGZ1bmN0aW9uLCBhbmQgbm90IHRoZSBmdW5jdGlvbiBpdHNlbGYuIik7dmFyIG49MCxyPVtdO2UmJmUudHlwZT09PSIoaWRlbnRpZmllcikiJiZlLnZhbHVlLm1hdGNoKC9eW0EtWl0oW0EtWjAtOV8kXSpbYS16XVtBLVphLXowLTlfJF0qKT8kLykmJmUudmFsdWUhPT0iTnVtYmVyIiYmZS52YWx1ZSE9PSJTdHJpbmciJiZlLnZhbHVlIT09IkJvb2xlYW4iJiZlLnZhbHVlIT09IkRhdGUiJiYoZS52YWx1ZT09PSJNYXRoIj9hdCgiTWF0aCBpcyBub3QgYSBmdW5jdGlvbi4iLGUpOmsubmV3Y2FwJiZhdCgiTWlzc2luZyAnbmV3JyBwcmVmaXggd2hlbiBpbnZva2luZyBhIGNvbnN0cnVjdG9yLiIsZSkpO2lmKFQuaWQhPT0iKSIpZm9yKDs7KXtyW3IubGVuZ3RoXT1ndCgxMCksbis9MTtpZihULmlkIT09IiwiKWJyZWFrO050KCl9cmV0dXJuIG10KCIpIiksd3QoTyxSKSx0eXBlb2YgZT09Im9iamVjdCImJihlLnZhbHVlPT09InBhcnNlSW50IiYmbj09PTEmJmF0KCJNaXNzaW5nIHJhZGl4IHBhcmFtZXRlci4iLGUpLGsuZXZpbHx8KGUudmFsdWU9PT0iZXZhbCJ8fGUudmFsdWU9PT0iRnVuY3Rpb24ifHxlLnZhbHVlPT09ImV4ZWNTY3JpcHQiP2F0KCJldmFsIGlzIGV2aWwuIixlKTpyWzBdJiZyWzBdLmlkPT09IihzdHJpbmcpIiYmKGUudmFsdWU9PT0ic2V0VGltZW91dCJ8fGUudmFsdWU9PT0ic2V0SW50ZXJ2YWwiKSYmYXQoIkltcGxpZWQgZXZhbCBpcyBldmlsLiBQYXNzIGEgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIHN0cmluZy4iLGUpKSwhZS5pZGVudGlmaWVyJiZlLmlkIT09Ii4iJiZlLmlkIT09IlsiJiZlLmlkIT09IigiJiZlLmlkIT09IiYmIiYmZS5pZCE9PSJ8fCImJmUuaWQhPT0iPyImJmF0KCJCYWQgaW52b2NhdGlvbi4iLGUpKSx0LmxlZnQ9ZSx0fSwxNTUsITApLmV4cHM9ITAsTXQoIigiLGZ1bmN0aW9uKCl7d3QoKSxULmlkPT09ImZ1bmN0aW9uIiYmKFQuaW1tZWQ9ITApO3ZhciBlPWd0KDApO3JldHVybiBtdCgiKSIsdGhpcyksd3QoTyxSKSxrLmltbWVkJiZlLmlkPT09ImZ1bmN0aW9uIiYmKFQuaWQ9PT0iKCJ8fFQuaWQ9PT0iLiImJih2dCgpLnZhbHVlPT09ImNhbGwifHx2dCgpLnZhbHVlPT09ImFwcGx5Iik/YXQoIk1vdmUgdGhlIGludm9jYXRpb24gaW50byB0aGUgcGFyZW5zIHRoYXQgY29udGFpbiB0aGUgZnVuY3Rpb24uIixUKTphdCgiRG8gbm90IHdyYXAgZnVuY3Rpb24gbGl0ZXJhbHMgaW4gcGFyZW5zIHVubGVzcyB0aGV5IGFyZSB0byBiZSBpbW1lZGlhdGVseSBpbnZva2VkLiIsdGhpcykpLGV9KSxIdCgiWyIsZnVuY3Rpb24oZSx0KXtidChPLFIpLHd0KCk7dmFyIG49Z3QoMCkscjtyZXR1cm4gbiYmbi50eXBlPT09IihzdHJpbmcpIiYmKCFrLmV2aWwmJihuLnZhbHVlPT09ImV2YWwifHxuLnZhbHVlPT09ImV4ZWNTY3JpcHQiKSYmYXQoImV2YWwgaXMgZXZpbC4iLHQpLEt0KG4udmFsdWUpLCFrLnN1YiYmWS50ZXN0KG4udmFsdWUpJiYocj1JW24udmFsdWVdLCghcnx8IXIucmVzZXJ2ZWQpJiZhdCgiWyd7YX0nXSBpcyBiZXR0ZXIgd3JpdHRlbiBpbiBkb3Qgbm90YXRpb24uIixuLG4udmFsdWUpKSksbXQoIl0iLHQpLHd0KE8sUiksdC5sZWZ0PWUsdC5yaWdodD1uLHR9LDE2MCwhMCksTXQoIlsiLGZ1bmN0aW9uKCl7dmFyIGU9Ui5saW5lIT09VC5saW5lO3RoaXMuZmlyc3Q9W10sZSYmKG0rPWsuaW5kZW50LFQuZnJvbT09PW0ray5pbmRlbnQmJihtKz1rLmluZGVudCkpO3doaWxlKFQuaWQhPT0iKGVuZCkiKXt3aGlsZShULmlkPT09IiwiKWF0KCJFeHRyYSBjb21tYS4iKSxtdCgiLCIpO2lmKFQuaWQ9PT0iXSIpYnJlYWs7ZSYmUi5saW5lIT09VC5saW5lJiZ4dCgpLHRoaXMuZmlyc3QucHVzaChndCgxMCkpO2lmKFQuaWQhPT0iLCIpYnJlYWs7TnQoKTtpZihULmlkPT09Il0iJiYhay5lczUpe2F0KCJFeHRyYSBjb21tYS4iLFIpO2JyZWFrfX1yZXR1cm4gZSYmKG0tPWsuaW5kZW50LHh0KCkpLG10KCJdIix0aGlzKSx0aGlzfSwxNjApLGZ1bmN0aW9uKGUpe2UubnVkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdShlLHQpe29bZV0mJm50KG8sZSk/YXQoIkR1cGxpY2F0ZSBtZW1iZXIgJ3thfScuIixULG4pOm9bZV09e30sb1tlXS5iYXNpYz0hMCxvW2VdLmJhc2ljVG9rZW49dH1mdW5jdGlvbiBhKGUsdCl7b1tlXSYmbnQobyxlKT8ob1tlXS5iYXNpY3x8b1tlXS5zZXR0ZXIpJiZhdCgiRHVwbGljYXRlIG1lbWJlciAne2F9Jy4iLFQsbik6b1tlXT17fSxvW2VdLnNldHRlcj0hMCxvW2VdLnNldHRlclRva2VuPXR9ZnVuY3Rpb24gZihlKXtvW2VdJiZudChvLGUpPyhvW2VdLmJhc2ljfHxvW2VdLmdldHRlcikmJmF0KCJEdXBsaWNhdGUgbWVtYmVyICd7YX0nLiIsVCxuKTpvW2VdPXt9LG9bZV0uZ2V0dGVyPSEwLG9bZV0uZ2V0dGVyVG9rZW49Un12YXIgZSx0LG4scixpLHMsbz17fTtlPVIubGluZSE9PVQubGluZSxlJiYobSs9ay5pbmRlbnQsVC5mcm9tPT09bStrLmluZGVudCYmKG0rPWsuaW5kZW50KSk7Zm9yKDs7KXtpZihULmlkPT09In0iKWJyZWFrO2UmJnh0KCk7aWYoVC52YWx1ZT09PSJnZXQiJiZ2dCgpLmlkIT09IjoiKW10KCJnZXQiKSxrLmVzNXx8bHQoImdldC9zZXQgYXJlIEVTNSBmZWF0dXJlcy4iKSxuPUd0KCksbnx8bHQoIk1pc3NpbmcgcHJvcGVydHkgbmFtZS4iKSxmKG4pLHM9VCx5dChSLFQpLHQ9WnQoKSxpPXRbIihwYXJhbXMpIl0saSYmYXQoIlVuZXhwZWN0ZWQgcGFyYW1ldGVyICd7YX0nIGluIGdldCB7Yn0gZnVuY3Rpb24uIixzLGlbMF0sbikseXQoUixUKTtlbHNlIGlmKFQudmFsdWU9PT0ic2V0IiYmdnQoKS5pZCE9PSI6IiltdCgic2V0Iiksay5lczV8fGx0KCJnZXQvc2V0IGFyZSBFUzUgZmVhdHVyZXMuIiksbj1HdCgpLG58fGx0KCJNaXNzaW5nIHByb3BlcnR5IG5hbWUuIiksYShuLFQpLHM9VCx5dChSLFQpLHQ9WnQoKSxpPXRbIihwYXJhbXMpIl0sKCFpfHxpLmxlbmd0aCE9PTEpJiZhdCgiRXhwZWN0ZWQgYSBzaW5nbGUgcGFyYW1ldGVyIGluIHNldCB7YX0gZnVuY3Rpb24uIixzLG4pO2Vsc2V7bj1HdCgpLHUobixUKTtpZih0eXBlb2YgbiE9InN0cmluZyIpYnJlYWs7bXQoIjoiKSxFdChSLFQpLGd0KDEwKX1LdChuKTtpZihULmlkIT09IiwiKWJyZWFrO050KCksVC5pZD09PSIsIj9hdCgiRXh0cmEgY29tbWEuIixSKTpULmlkPT09In0iJiYhay5lczUmJmF0KCJFeHRyYSBjb21tYS4iLFIpfWUmJihtLT1rLmluZGVudCx4dCgpKSxtdCgifSIsdGhpcyk7aWYoay5lczUpZm9yKHZhciBsIGluIG8pbnQobyxsKSYmb1tsXS5zZXR0ZXImJiFvW2xdLmdldHRlciYmYXQoIlNldHRlciBpcyBkZWZpbmVkIHdpdGhvdXQgZ2V0dGVyLiIsb1tsXS5zZXR0ZXJUb2tlbik7cmV0dXJuIHRoaXN9LGUuZnVkPWZ1bmN0aW9uKCl7bHQoIkV4cGVjdGVkIHRvIHNlZSBhIHN0YXRlbWVudCBhbmQgaW5zdGVhZCBzYXcgYSBibG9jay4iLFIpfX0oa3QoInsiKSksej1mdW5jdGlvbigpe3ZhciBlPUx0KCJjb25zdCIsZnVuY3Rpb24oZSl7dmFyIHQsbixyO3RoaXMuZmlyc3Q9W107Zm9yKDs7KXtFdChSLFQpLHQ9enQoKSxsW3RdPT09ImNvbnN0IiYmYXQoImNvbnN0ICciK3QrIicgaGFzIGFscmVhZHkgYmVlbiBkZWNsYXJlZCIpLGxbIihnbG9iYWwpIl0mJkxbdF09PT0hMSYmYXQoIlJlZGVmaW5pdGlvbiBvZiAne2F9Jy4iLFIsdCkscHQodCwiY29uc3QiKTtpZihlKWJyZWFrO249Uix0aGlzLmZpcnN0LnB1c2goUiksVC5pZCE9PSI9IiYmYXQoImNvbnN0ICd7YX0nIGlzIGluaXRpYWxpemVkIHRvICd1bmRlZmluZWQnLiIsUix0KSxULmlkPT09Ij0iJiYoRXQoUixUKSxtdCgiPSIpLEV0KFIsVCksVC5pZD09PSJ1bmRlZmluZWQiJiZhdCgiSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBpbml0aWFsaXplICd7YX0nIHRvICd1bmRlZmluZWQnLiIsUix0KSx2dCgwKS5pZD09PSI9IiYmVC5pZGVudGlmaWVyJiZsdCgiQ29uc3RhbnQge2F9IHdhcyBub3QgZGVjbGFyZWQgY29ycmVjdGx5LiIsVCxULnZhbHVlKSxyPWd0KDApLG4uZmlyc3Q9cik7aWYoVC5pZCE9PSIsIilicmVhaztOdCgpfXJldHVybiB0aGlzfSk7ZS5leHBzPSEwfTt2YXIgZW49THQoInZhciIsZnVuY3Rpb24oZSl7dmFyIHQsbixyO2xbIihvbmV2YXIpIl0mJmsub25ldmFyP2F0KCJUb28gbWFueSB2YXIgc3RhdGVtZW50cy4iKTpsWyIoZ2xvYmFsKSJdfHwobFsiKG9uZXZhcikiXT0hMCksdGhpcy5maXJzdD1bXTtmb3IoOzspe0V0KFIsVCksdD16dCgpLGsuZXNuZXh0JiZsW3RdPT09ImNvbnN0IiYmYXQoImNvbnN0ICciK3QrIicgaGFzIGFscmVhZHkgYmVlbiBkZWNsYXJlZCIpLGxbIihnbG9iYWwpIl0mJkxbdF09PT0hMSYmYXQoIlJlZGVmaW5pdGlvbiBvZiAne2F9Jy4iLFIsdCkscHQodCwidW51c2VkIik7aWYoZSlicmVhaztuPVIsdGhpcy5maXJzdC5wdXNoKFIpLFQuaWQ9PT0iPSImJihFdChSLFQpLG10KCI9IiksRXQoUixUKSxULmlkPT09InVuZGVmaW5lZCImJmF0KCJJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGluaXRpYWxpemUgJ3thfScgdG8gJ3VuZGVmaW5lZCcuIixSLHQpLHZ0KDApLmlkPT09Ij0iJiZULmlkZW50aWZpZXImJmx0KCJWYXJpYWJsZSB7YX0gd2FzIG5vdCBkZWNsYXJlZCBjb3JyZWN0bHkuIixULFQudmFsdWUpLHI9Z3QoMCksbi5maXJzdD1yKTtpZihULmlkIT09IiwiKWJyZWFrO050KCl9cmV0dXJuIHRoaXN9KTtlbi5leHBzPSEwLEF0KCJmdW5jdGlvbiIsZnVuY3Rpb24oKXt2JiZhdCgiRnVuY3Rpb24gZGVjbGFyYXRpb25zIHNob3VsZCBub3QgYmUgcGxhY2VkIGluIGJsb2Nrcy4gVXNlIGEgZnVuY3Rpb24gZXhwcmVzc2lvbiBvciBtb3ZlIHRoZSBzdGF0ZW1lbnQgdG8gdGhlIHRvcCBvZiB0aGUgb3V0ZXIgZnVuY3Rpb24uIixSKTt2YXIgZT16dCgpO3JldHVybiBrLmVzbmV4dCYmbFtlXT09PSJjb25zdCImJmF0KCJjb25zdCAnIitlKyInIGhhcyBhbHJlYWR5IGJlZW4gZGVjbGFyZWQiKSx5dChSLFQpLHB0KGUsInVuY3Rpb24iKSxadChlLCEwKSxULmlkPT09IigiJiZULmxpbmU9PT1SLmxpbmUmJmx0KCJGdW5jdGlvbiBkZWNsYXJhdGlvbnMgYXJlIG5vdCBpbnZvY2FibGUuIFdyYXAgdGhlIHdob2xlIGZ1bmN0aW9uIGludm9jYXRpb24gaW4gcGFyZW5zLiIpLHRoaXN9KSxNdCgiZnVuY3Rpb24iLGZ1bmN0aW9uKCl7dmFyIGU9VXQoKTtyZXR1cm4gZT95dChSLFQpOkV0KFIsVCksWnQoZSksIWsubG9vcGZ1bmMmJmxbIihsb29wYWdlKSJdJiZhdCgiRG9uJ3QgbWFrZSBmdW5jdGlvbnMgd2l0aGluIGEgbG9vcC4iKSx0aGlzfSksQXQoImlmIixmdW5jdGlvbigpe3ZhciBlPVQ7cmV0dXJuIG10KCIoIiksRXQodGhpcyxlKSx3dCgpLGd0KDIwKSxULmlkPT09Ij0iJiYoay5ib3NzfHxhdCgiRXhwZWN0ZWQgYSBjb25kaXRpb25hbCBleHByZXNzaW9uIGFuZCBpbnN0ZWFkIHNhdyBhbiBhc3NpZ25tZW50LiIpLG10KCI9IiksZ3QoMjApKSxtdCgiKSIsZSksd3QoTyxSKSxKdCghMCwhMCksVC5pZD09PSJlbHNlIiYmKEV0KFIsVCksbXQoImVsc2UiKSxULmlkPT09ImlmInx8VC5pZD09PSJzd2l0Y2giP1h0KCEwKTpKdCghMCwhMCkpLHRoaXN9KSxBdCgidHJ5IixmdW5jdGlvbigpe3ZhciBlLHQsbjtKdCghMSksVC5pZD09PSJjYXRjaCImJihtdCgiY2F0Y2giKSxFdChSLFQpLG10KCIoIiksbj1ELEQ9T2JqZWN0LmNyZWF0ZShuKSx0PVQudmFsdWUsVC50eXBlIT09IihpZGVudGlmaWVyKSI/YXQoIkV4cGVjdGVkIGFuIGlkZW50aWZpZXIgYW5kIGluc3RlYWQgc2F3ICd7YX0nLiIsVCx0KTpwdCh0LCJleGNlcHRpb24iKSxtdCgpLG10KCIpIiksSnQoITEpLGU9ITAsRD1uKTtpZihULmlkPT09ImZpbmFsbHkiKXttdCgiZmluYWxseSIpLEp0KCExKTtyZXR1cm59cmV0dXJuIGV8fGx0KCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIixULCJjYXRjaCIsVC52YWx1ZSksdGhpc30pLEF0KCJ3aGlsZSIsZnVuY3Rpb24oKXt2YXIgZT1UO3JldHVybiBsWyIoYnJlYWthZ2UpIl0rPTEsbFsiKGxvb3BhZ2UpIl0rPTEsbXQoIigiKSxFdCh0aGlzLGUpLHd0KCksZ3QoMjApLFQuaWQ9PT0iPSImJihrLmJvc3N8fGF0KCJFeHBlY3RlZCBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gYW5kIGluc3RlYWQgc2F3IGFuIGFzc2lnbm1lbnQuIiksbXQoIj0iKSxndCgyMCkpLG10KCIpIixlKSx3dChPLFIpLEp0KCEwLCEwKSxsWyIoYnJlYWthZ2UpIl0tPTEsbFsiKGxvb3BhZ2UpIl0tPTEsdGhpc30pLmxhYmVsbGVkPSEwLEF0KCJ3aXRoIixmdW5jdGlvbigpe3ZhciBlPVQ7cmV0dXJuIEZbInVzZSBzdHJpY3QiXT9sdCgiJ3dpdGgnIGlzIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlLiIsUik6ay53aXRoc3RtdHx8YXQoIkRvbid0IHVzZSAnd2l0aCcuIixSKSxtdCgiKCIpLEV0KHRoaXMsZSksd3QoKSxndCgwKSxtdCgiKSIsZSksd3QoTyxSKSxKdCghMCwhMCksdGhpc30pLEF0KCJzd2l0Y2giLGZ1bmN0aW9uKCl7dmFyIGU9VCx0PSExO2xbIihicmVha2FnZSkiXSs9MSxtdCgiKCIpLEV0KHRoaXMsZSksd3QoKSx0aGlzLmNvbmRpdGlvbj1ndCgyMCksbXQoIikiLGUpLHd0KE8sUiksRXQoUixUKSxlPVQsbXQoInsiKSxFdChSLFQpLG0rPWsuaW5kZW50LHRoaXMuY2FzZXM9W107Zm9yKDs7KXN3aXRjaChULmlkKXtjYXNlImNhc2UiOnN3aXRjaChsWyIodmVyYikiXSl7Y2FzZSJicmVhayI6Y2FzZSJjYXNlIjpjYXNlImNvbnRpbnVlIjpjYXNlInJldHVybiI6Y2FzZSJzd2l0Y2giOmNhc2UidGhyb3ciOmJyZWFrO2RlZmF1bHQ6ZXQudGVzdChiW1QubGluZS0yXSl8fGF0KCJFeHBlY3RlZCBhICdicmVhaycgc3RhdGVtZW50IGJlZm9yZSAnY2FzZScuIixSKX14dCgtay5pbmRlbnQpLG10KCJjYXNlIiksdGhpcy5jYXNlcy5wdXNoKGd0KDIwKSksdD0hMCxtdCgiOiIpLGxbIih2ZXJiKSJdPSJjYXNlIjticmVhaztjYXNlImRlZmF1bHQiOnN3aXRjaChsWyIodmVyYikiXSl7Y2FzZSJicmVhayI6Y2FzZSJjb250aW51ZSI6Y2FzZSJyZXR1cm4iOmNhc2UidGhyb3ciOmJyZWFrO2RlZmF1bHQ6ZXQudGVzdChiW1QubGluZS0yXSl8fGF0KCJFeHBlY3RlZCBhICdicmVhaycgc3RhdGVtZW50IGJlZm9yZSAnZGVmYXVsdCcuIixSKX14dCgtay5pbmRlbnQpLG10KCJkZWZhdWx0IiksdD0hMCxtdCgiOiIpO2JyZWFrO2Nhc2UifSI6bS09ay5pbmRlbnQseHQoKSxtdCgifSIsZSk7aWYodGhpcy5jYXNlcy5sZW5ndGg9PT0xfHx0aGlzLmNvbmRpdGlvbi5pZD09PSJ0cnVlInx8dGhpcy5jb25kaXRpb24uaWQ9PT0iZmFsc2UiKWsub25lY2FzZXx8YXQoIlRoaXMgJ3N3aXRjaCcgc2hvdWxkIGJlIGFuICdpZicuIix0aGlzKTtsWyIoYnJlYWthZ2UpIl0tPTEsbFsiKHZlcmIpIl09dW5kZWZpbmVkO3JldHVybjtjYXNlIihlbmQpIjpsdCgiTWlzc2luZyAne2F9Jy4iLFQsIn0iKTtyZXR1cm47ZGVmYXVsdDppZih0KXN3aXRjaChSLmlkKXtjYXNlIiwiOmx0KCJFYWNoIHZhbHVlIHNob3VsZCBoYXZlIGl0cyBvd24gY2FzZSBsYWJlbC4iKTtyZXR1cm47Y2FzZSI6Ijp0PSExLFZ0KCk7YnJlYWs7ZGVmYXVsdDpsdCgiTWlzc2luZyAnOicgb24gYSBjYXNlIGNsYXVzZS4iLFIpO3JldHVybn1lbHNle2lmKFIuaWQhPT0iOiIpe2x0KCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIixULCJjYXNlIixULnZhbHVlKTtyZXR1cm59bXQoIjoiKSxsdCgiVW5leHBlY3RlZCAne2F9Jy4iLFIsIjoiKSxWdCgpfX19KS5sYWJlbGxlZD0hMCxMdCgiZGVidWdnZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGsuZGVidWd8fGF0KCJBbGwgJ2RlYnVnZ2VyJyBzdGF0ZW1lbnRzIHNob3VsZCBiZSByZW1vdmVkLiIpLHRoaXN9KS5leHBzPSEwLGZ1bmN0aW9uKCl7dmFyIGU9THQoImRvIixmdW5jdGlvbigpe2xbIihicmVha2FnZSkiXSs9MSxsWyIobG9vcGFnZSkiXSs9MSx0aGlzLmZpcnN0PUp0KCEwKSxtdCgid2hpbGUiKTt2YXIgZT1UO3JldHVybiBFdChSLGUpLG10KCIoIiksd3QoKSxndCgyMCksVC5pZD09PSI9IiYmKGsuYm9zc3x8YXQoIkV4cGVjdGVkIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBhbmQgaW5zdGVhZCBzYXcgYW4gYXNzaWdubWVudC4iKSxtdCgiPSIpLGd0KDIwKSksbXQoIikiLGUpLHd0KE8sUiksbFsiKGJyZWFrYWdlKSJdLT0xLGxbIihsb29wYWdlKSJdLT0xLHRoaXN9KTtlLmxhYmVsbGVkPSEwLGUuZXhwcz0hMH0oKSxBdCgiZm9yIixmdW5jdGlvbigpe3ZhciBlLHQ9VDtsWyIoYnJlYWthZ2UpIl0rPTEsbFsiKGxvb3BhZ2UpIl0rPTEsbXQoIigiKSxFdCh0aGlzLHQpLHd0KCk7aWYodnQoVC5pZD09PSJ2YXIiPzE6MCkuaWQ9PT0iaW4iKXtpZihULmlkPT09InZhciIpbXQoInZhciIpLGVuLmZ1ZC5jYWxsKGVuLCEwKTtlbHNle3N3aXRjaChsW1QudmFsdWVdKXtjYXNlInVudXNlZCI6bFtULnZhbHVlXT0idmFyIjticmVhaztjYXNlInZhciI6YnJlYWs7ZGVmYXVsdDphdCgiQmFkIGZvciBpbiB2YXJpYWJsZSAne2F9Jy4iLFQsVC52YWx1ZSl9bXQoKX1yZXR1cm4gbXQoImluIiksZ3QoMjApLG10KCIpIix0KSxlPUp0KCEwLCEwKSxrLmZvcmluJiZlJiYoZS5sZW5ndGg+MXx8dHlwZW9mIGVbMF0hPSJvYmplY3QifHxlWzBdLnZhbHVlIT09ImlmIikmJmF0KCJUaGUgYm9keSBvZiBhIGZvciBpbiBzaG91bGQgYmUgd3JhcHBlZCBpbiBhbiBpZiBzdGF0ZW1lbnQgdG8gZmlsdGVyIHVud2FudGVkIHByb3BlcnRpZXMgZnJvbSB0aGUgcHJvdG90eXBlLiIsdGhpcyksbFsiKGJyZWFrYWdlKSJdLT0xLGxbIihsb29wYWdlKSJdLT0xLHRoaXN9aWYoVC5pZCE9PSI7IilpZihULmlkPT09InZhciIpbXQoInZhciIpLGVuLmZ1ZC5jYWxsKGVuKTtlbHNlIGZvcig7Oyl7Z3QoMCwiZm9yIik7aWYoVC5pZCE9PSIsIilicmVhaztOdCgpfVR0KFIpLG10KCI7IiksVC5pZCE9PSI7IiYmKGd0KDIwKSxULmlkPT09Ij0iJiYoay5ib3NzfHxhdCgiRXhwZWN0ZWQgYSBjb25kaXRpb25hbCBleHByZXNzaW9uIGFuZCBpbnN0ZWFkIHNhdyBhbiBhc3NpZ25tZW50LiIpLG10KCI9IiksZ3QoMjApKSksVHQoUiksbXQoIjsiKSxULmlkPT09IjsiJiZsdCgiRXhwZWN0ZWQgJ3thfScgYW5kIGluc3RlYWQgc2F3ICd7Yn0nLiIsVCwiKSIsIjsiKTtpZihULmlkIT09IikiKWZvcig7Oyl7Z3QoMCwiZm9yIik7aWYoVC5pZCE9PSIsIilicmVhaztOdCgpfXJldHVybiBtdCgiKSIsdCksd3QoTyxSKSxKdCghMCwhMCksbFsiKGJyZWFrYWdlKSJdLT0xLGxbIihsb29wYWdlKSJdLT0xLHRoaXN9KS5sYWJlbGxlZD0hMCxMdCgiYnJlYWsiLGZ1bmN0aW9uKCl7dmFyIGU9VC52YWx1ZTtyZXR1cm4gbFsiKGJyZWFrYWdlKSJdPT09MCYmYXQoIlVuZXhwZWN0ZWQgJ3thfScuIixULHRoaXMudmFsdWUpLGsuYXNpfHxUdCh0aGlzKSxULmlkIT09IjsiJiZSLmxpbmU9PT1ULmxpbmUmJihsW2VdIT09ImxhYmVsIj9hdCgiJ3thfScgaXMgbm90IGEgc3RhdGVtZW50IGxhYmVsLiIsVCxlKTpEW2VdIT09bCYmYXQoIid7YX0nIGlzIG91dCBvZiBzY29wZS4iLFQsZSksdGhpcy5maXJzdD1ULG10KCkpLFd0KCJicmVhayIpLHRoaXN9KS5leHBzPSEwLEx0KCJjb250aW51ZSIsZnVuY3Rpb24oKXt2YXIgZT1ULnZhbHVlO3JldHVybiBsWyIoYnJlYWthZ2UpIl09PT0wJiZhdCgiVW5leHBlY3RlZCAne2F9Jy4iLFQsdGhpcy52YWx1ZSksay5hc2l8fFR0KHRoaXMpLFQuaWQhPT0iOyI/Ui5saW5lPT09VC5saW5lJiYobFtlXSE9PSJsYWJlbCI/YXQoIid7YX0nIGlzIG5vdCBhIHN0YXRlbWVudCBsYWJlbC4iLFQsZSk6RFtlXSE9PWwmJmF0KCIne2F9JyBpcyBvdXQgb2Ygc2NvcGUuIixULGUpLHRoaXMuZmlyc3Q9VCxtdCgpKTpsWyIobG9vcGFnZSkiXXx8YXQoIlVuZXhwZWN0ZWQgJ3thfScuIixULHRoaXMudmFsdWUpLFd0KCJjb250aW51ZSIpLHRoaXN9KS5leHBzPSEwLEx0KCJyZXR1cm4iLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGluZT09PVQubGluZT8oVC5pZD09PSIocmVnZXhwKSImJmF0KCJXcmFwIHRoZSAvcmVnZXhwLyBsaXRlcmFsIGluIHBhcmVucyB0byBkaXNhbWJpZ3VhdGUgdGhlIHNsYXNoIG9wZXJhdG9yLiIpLFQuaWQhPT0iOyImJiFULnJlYWNoJiYoRXQoUixUKSx2dCgpLnZhbHVlPT09Ij0iJiYhay5ib3NzJiZmdCgiRGlkIHlvdSBtZWFuIHRvIHJldHVybiBhIGNvbmRpdGlvbmFsIGluc3RlYWQgb2YgYW4gYXNzaWdubWVudD8iLFIubGluZSxSLmNoYXJhY3RlcisxKSx0aGlzLmZpcnN0PWd0KDApKSk6ay5hc2l8fFR0KHRoaXMpLFd0KCJyZXR1cm4iKSx0aGlzfSkuZXhwcz0hMCxMdCgidGhyb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIFR0KHRoaXMpLEV0KFIsVCksdGhpcy5maXJzdD1ndCgyMCksV3QoInRocm93IiksdGhpc30pLmV4cHM9ITAsRHQoImNsYXNzIiksRHQoImNvbnN0IiksRHQoImVudW0iKSxEdCgiZXhwb3J0IiksRHQoImV4dGVuZHMiKSxEdCgiaW1wb3J0IiksRHQoInN1cGVyIiksRHQoImxldCIpLER0KCJ5aWVsZCIpLER0KCJpbXBsZW1lbnRzIiksRHQoImludGVyZmFjZSIpLER0KCJwYWNrYWdlIiksRHQoInByaXZhdGUiKSxEdCgicHJvdGVjdGVkIiksRHQoInB1YmxpYyIpLER0KCJzdGF0aWMiKTt2YXIgbm49ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHMsbztyLmVycm9ycz1bXSxyLnVuZGVmcz1bXSxMPU9iamVjdC5jcmVhdGUoSCksaXQoTCxufHx7fSk7aWYodCl7aT10LnByZWRlZjtpZihpKWlmKEFycmF5LmlzQXJyYXkoaSkpZm9yKHM9MDtzPGkubGVuZ3RoO3MrPTEpTFtpW3NdXT0hMDtlbHNlIGlmKHR5cGVvZiBpPT0ib2JqZWN0Iil7bz1PYmplY3Qua2V5cyhpKTtmb3Iocz0wO3M8by5sZW5ndGg7cys9MSlMW29bc11dPSEhaVtvW3NdXX1rPXR9ZWxzZSBrPXt9O2suaW5kZW50PWsuaW5kZW50fHw0LGsubWF4ZXJyPWsubWF4ZXJyfHw1MCxxPSIiO2ZvcihzPTA7czxrLmluZGVudDtzKz0xKXErPSIgIjttPTEscD1PYmplY3QuY3JlYXRlKEwpLEQ9cCxsPXsiKGdsb2JhbCkiOiEwLCIobmFtZSkiOiIoZ2xvYmFsKSIsIihzY29wZSkiOkQsIihicmVha2FnZSkiOjAsIihsb29wYWdlKSI6MH0saD1bbF0sVT1bXSxQPW51bGwsRT17fSxTPW51bGwsZD17fSx2PSExLHc9W10sZz0hMSxXPTAsaHQuaW5pdChlKSxBPSEwLEY9e30sTz1SPVQ9SVsiKGJlZ2luKSJdO2Zvcih2YXIgdSBpbiB0KW50KHQsdSkmJnJ0KHUsUik7c3QoKSxpdChMLG58fHt9KSxOdC5maXJzdD0hMDt0cnl7bXQoKTtzd2l0Y2goVC5pZCl7Y2FzZSJ7IjpjYXNlIlsiOmsubGF4YnJlYWs9ITAsZz0hMCx0bigpO2JyZWFrO2RlZmF1bHQ6JHQoKSxGWyJ1c2Ugc3RyaWN0Il0mJiFrLmdsb2JhbHN0cmljdCYmYXQoJ1VzZSB0aGUgZnVuY3Rpb24gZm9ybSBvZiAidXNlIHN0cmljdCIuJyxPKSxWdCgpfW10KCIoZW5kKSIpO3ZhciBhPWZ1bmN0aW9uKGUsdCl7ZG97aWYodHlwZW9mIHRbZV09PSJzdHJpbmciKXJldHVybiB0W2VdPT09InVudXNlZCI/dFtlXT0idmFyIjp0W2VdPT09InVuY3Rpb24iJiYodFtlXT0iY2xvc3VyZSIpLCEwO3Q9dFsiKGNvbnRleHQpIl19d2hpbGUodCk7cmV0dXJuITF9LGY9ZnVuY3Rpb24oZSx0KXtpZighZFtlXSlyZXR1cm47dmFyIG49W107Zm9yKHZhciByPTA7cjxkW2VdLmxlbmd0aDtyKz0xKWRbZV1bcl0hPT10JiZuLnB1c2goZFtlXVtyXSk7bi5sZW5ndGg9PT0wP2RlbGV0ZSBkW2VdOmRbZV09bn07Zm9yKHM9MDtzPHIudW5kZWZzLmxlbmd0aDtzKz0xKW89ci51bmRlZnNbc10uc2xpY2UoMCksYShvWzJdLnZhbHVlLG9bMF0pP2Yob1syXS52YWx1ZSxvWzJdLmxpbmUpOmF0LmFwcGx5KGF0LG8uc2xpY2UoMSkpfWNhdGNoKGMpe2lmKGMpe3ZhciB5PVR8fHt9O3IuZXJyb3JzLnB1c2goe3JhdzpjLnJhdyxyZWFzb246Yy5tZXNzYWdlLGxpbmU6Yy5saW5lfHx5LmxpbmUsY2hhcmFjdGVyOmMuY2hhcmFjdGVyfHx5LmZyb219LG51bGwpfX1yZXR1cm4gci5lcnJvcnMubGVuZ3RoPT09MH07cmV0dXJuIG5uLmRhdGE9ZnVuY3Rpb24oKXt2YXIgZT17ZnVuY3Rpb25zOltdLG9wdGlvbnM6a30sdCxuLHI9W10saSxzLG8sdT1bXSxhLGY9W10sbDtubi5lcnJvcnMubGVuZ3RoJiYoZS5lcnJvcnM9bm4uZXJyb3JzKSxnJiYoZS5qc29uPSEwKTtmb3IoYSBpbiBkKW50KGQsYSkmJnIucHVzaCh7bmFtZTphLGxpbmU6ZFthXX0pO3IubGVuZ3RoPjAmJihlLmltcGxpZWRzPXIpLFUubGVuZ3RoPjAmJihlLnVybHM9VSksbj1PYmplY3Qua2V5cyhEKSxuLmxlbmd0aD4wJiYoZS5nbG9iYWxzPW4pO2ZvcihzPTE7czxoLmxlbmd0aDtzKz0xKXtpPWhbc10sdD17fTtmb3Iobz0wO288Yy5sZW5ndGg7bys9MSl0W2Nbb11dPVtdO2ZvcihhIGluIGkpbnQoaSxhKSYmYS5jaGFyQXQoMCkhPT0iKCImJihsPWlbYV0sbD09PSJ1bmN0aW9uIiYmKGw9InVudXNlZCIpLEFycmF5LmlzQXJyYXkodFtsXSkmJih0W2xdLnB1c2goYSksbD09PSJ1bnVzZWQiJiZmLnB1c2goe25hbWU6YSxsaW5lOmlbIihsaW5lKSJdLCJmdW5jdGlvbiI6aVsiKG5hbWUpIl19KSkpO2ZvcihvPTA7bzxjLmxlbmd0aDtvKz0xKXRbY1tvXV0ubGVuZ3RoPT09MCYmZGVsZXRlIHRbY1tvXV07dC5uYW1lPWlbIihuYW1lKSJdLHQucGFyYW09aVsiKHBhcmFtcykiXSx0LmxpbmU9aVsiKGxpbmUpIl0sdC5sYXN0PWlbIihsYXN0KSJdLGUuZnVuY3Rpb25zLnB1c2godCl9Zi5sZW5ndGg+MCYmKGUudW51c2VkPWYpLHU9W107Zm9yKGEgaW4gRSlpZih0eXBlb2YgRVthXT09Im51bWJlciIpe2UubWVtYmVyPUU7YnJlYWt9cmV0dXJuIGV9LG5uLnJlcG9ydD1mdW5jdGlvbihlKXtmdW5jdGlvbiBkKGUsdCl7dmFyIG4scixpO2lmKHQpe2gucHVzaCgiPGRpdj48aT4iK2UrIjwvaT4gIiksdD10LnNvcnQoKTtmb3Iocj0wO3I8dC5sZW5ndGg7cis9MSl0W3JdIT09aSYmKGk9dFtyXSxoLnB1c2goKG4/IiwgIjoiIikraSksbj0hMCk7aC5wdXNoKCI8L2Rpdj4iKX19dmFyIHQ9bm4uZGF0YSgpLG49W10scixpLHMsbyx1LGEsZixsPSIiLGMsaD1bXSxwO2lmKHQuZXJyb3JzfHx0LmltcGxpZWRzfHx0LnVudXNlZCl7cz0hMCxoLnB1c2goIjxkaXYgaWQ9ZXJyb3JzPjxpPkVycm9yOjwvaT4iKTtpZih0LmVycm9ycylmb3IodT0wO3U8dC5lcnJvcnMubGVuZ3RoO3UrPTEpcj10LmVycm9yc1t1XSxyJiYoaT1yLmV2aWRlbmNlfHwiIixoLnB1c2goIjxwPlByb2JsZW0iKyhpc0Zpbml0ZShyLmxpbmUpPyIgYXQgbGluZSAiK3IubGluZSsiIGNoYXJhY3RlciAiK3IuY2hhcmFjdGVyOiIiKSsiOiAiK3IucmVhc29uLmVudGl0eWlmeSgpKyI8L3A+PHAgY2xhc3M9ZXZpZGVuY2U+IisoaSYmKGkubGVuZ3RoPjgwP2kuc2xpY2UoMCw3NykrIi4uLiI6aSkuZW50aXR5aWZ5KCkpKyI8L3A+IikpO2lmKHQuaW1wbGllZHMpe3A9W107Zm9yKHU9MDt1PHQuaW1wbGllZHMubGVuZ3RoO3UrPTEpcFt1XT0iPGNvZGU+Iit0LmltcGxpZWRzW3VdLm5hbWUrIjwvY29kZT4mbmJzcDs8aT4iK3QuaW1wbGllZHNbdV0ubGluZSsiPC9pPiI7aC5wdXNoKCI8cD48aT5JbXBsaWVkIGdsb2JhbDo8L2k+ICIrcC5qb2luKCIsICIpKyI8L3A+Iil9aWYodC51bnVzZWQpe3A9W107Zm9yKHU9MDt1PHQudW51c2VkLmxlbmd0aDt1Kz0xKXBbdV09Ijxjb2RlPjx1PiIrdC51bnVzZWRbdV0ubmFtZSsiPC91PjwvY29kZT4mbmJzcDs8aT4iK3QudW51c2VkW3VdLmxpbmUrIjwvaT4gPGNvZGU+Iit0LnVudXNlZFt1XVsiZnVuY3Rpb24iXSsiPC9jb2RlPiI7aC5wdXNoKCI8cD48aT5VbnVzZWQgdmFyaWFibGU6PC9pPiAiK3Auam9pbigiLCAiKSsiPC9wPiIpfXQuanNvbiYmaC5wdXNoKCI8cD5KU09OOiBiYWQuPC9wPiIpLGgucHVzaCgiPC9kaXY+Iil9aWYoIWUpe2gucHVzaCgiPGJyPjxkaXYgaWQ9ZnVuY3Rpb25zPiIpLHQudXJscyYmZCgiVVJMczxicj4iLHQudXJscywiPGJyPiIpLHQuanNvbiYmIXM/aC5wdXNoKCI8cD5KU09OOiBnb29kLjwvcD4iKTp0Lmdsb2JhbHM/aC5wdXNoKCI8ZGl2PjxpPkdsb2JhbDwvaT4gIit0Lmdsb2JhbHMuc29ydCgpLmpvaW4oIiwgIikrIjwvZGl2PiIpOmgucHVzaCgiPGRpdj48aT5ObyBuZXcgZ2xvYmFsIHZhcmlhYmxlcyBpbnRyb2R1Y2VkLjwvaT48L2Rpdj4iKTtmb3IodT0wO3U8dC5mdW5jdGlvbnMubGVuZ3RoO3UrPTEpbz10LmZ1bmN0aW9uc1t1XSxoLnB1c2goIjxicj48ZGl2IGNsYXNzPWZ1bmN0aW9uPjxpPiIrby5saW5lKyItIitvLmxhc3QrIjwvaT4gIisoby5uYW1lfHwiIikrIigiKyhvLnBhcmFtP28ucGFyYW0uam9pbigiLCAiKToiIikrIik8L2Rpdj4iKSxkKCI8YmlnPjxiPlVudXNlZDwvYj48L2JpZz4iLG8udW51c2VkKSxkKCJDbG9zdXJlIixvLmNsb3N1cmUpLGQoIlZhcmlhYmxlIixvWyJ2YXIiXSksZCgiRXhjZXB0aW9uIixvLmV4Y2VwdGlvbiksZCgiT3V0ZXIiLG8ub3V0ZXIpLGQoIkdsb2JhbCIsby5nbG9iYWwpLGQoIkxhYmVsIixvLmxhYmVsKTtpZih0Lm1lbWJlcil7bj1PYmplY3Qua2V5cyh0Lm1lbWJlcik7aWYobi5sZW5ndGgpe249bi5zb3J0KCksbD0iPGJyPjxwcmUgaWQ9bWVtYmVycz4vKm1lbWJlcnMgIixmPTEwO2Zvcih1PTA7dTxuLmxlbmd0aDt1Kz0xKWE9blt1XSxjPWEubmFtZSgpLGYrYy5sZW5ndGg+NzImJihoLnB1c2gobCsiPGJyPiIpLGw9IiAgICAiLGY9MSksZis9Yy5sZW5ndGgrMix0Lm1lbWJlclthXT09PTEmJihjPSI8aT4iK2MrIjwvaT4iKSx1PG4ubGVuZ3RoLTEmJihjKz0iLCAiKSxsKz1jO2gucHVzaChsKyI8YnI+Ki88L3ByZT4iKX1oLnB1c2goIjwvZGl2PiIpfX1yZXR1cm4gaC5qb2luKCIiKX0sbm4uanNoaW50PW5uLG5ufSgpO3R5cGVvZiB0PT0ib2JqZWN0IiYmdCYmKHQuSlNISU5UPXIpfSksZGVmaW5lKCJhY2UvbmFyY2lzc3VzL3BhcnNlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9uYXJjaXNzdXMvbGV4ZXIiLCJhY2UvbmFyY2lzc3VzL2RlZmluaXRpb25zIiwiYWNlL25hcmNpc3N1cy9vcHRpb25zIl0sZnVuY3Rpb24ocmVxdWlyZSxleHBvcnRzLG1vZHVsZSl7ZnVuY3Rpb24gcHVzaERlc3RydWN0dXJpbmdWYXJEZWNscyhlLHQpe2Zvcih2YXIgbiBpbiBlKXt2YXIgcj1lW25dO3IudHlwZT09PUlERU5USUZJRVI/dC52YXJEZWNscy5wdXNoKHIpOnB1c2hEZXN0cnVjdHVyaW5nVmFyRGVjbHMocix0KX19ZnVuY3Rpb24gUGFyc2VyKGUpe2UucGFyc2VyPXRoaXMsdGhpcy50PWUsdGhpcy54PW51bGwsdGhpcy51bmV4cGVjdGVkRU9GPSExLG9wdGlvbnMubW96aWxsYU1vZGUmJih0aGlzLm1vemlsbGFNb2RlPSEwKSxvcHRpb25zLnBhcmVuRnJlZU1vZGUmJih0aGlzLnBhcmVuRnJlZU1vZGU9ITApfWZ1bmN0aW9uIFN0YXRpY0NvbnRleHQoZSx0LG4scixpKXt0aGlzLnBhcmVudFNjcmlwdD1lLHRoaXMucGFyZW50QmxvY2s9dHx8ZSx0aGlzLmluTW9kdWxlPW58fCExLHRoaXMuaW5GdW5jdGlvbj1yfHwhMSx0aGlzLmluRm9yTG9vcEluaXQ9ITEsdGhpcy50b3BMZXZlbD0hMCx0aGlzLmFsbExhYmVscz1uZXcgU3RhY2ssdGhpcy5jdXJyZW50TGFiZWxzPW5ldyBTdGFjayx0aGlzLmxhYmVsZWRUYXJnZXRzPW5ldyBTdGFjayx0aGlzLmRlZmF1bHRMb29wVGFyZ2V0PW51bGwsdGhpcy5kZWZhdWx0VGFyZ2V0PW51bGwsdGhpcy5zdHJpY3RNb2RlPWl9ZnVuY3Rpb24gUHJhZ21hKGUpe2lmKGUudHlwZT09PVNFTUlDT0xPTil7dmFyIHQ9ZS5leHByZXNzaW9uO2lmKHQudHlwZT09PVNUUklORyYmdC52YWx1ZT09PSJ1c2Ugc3RyaWN0IilyZXR1cm4gZS5wcmFnbWE9InN0cmljdCIsITB9cmV0dXJuITF9ZnVuY3Rpb24gTm9kZShlLHQpe3ZhciBuPWUudG9rZW47bj8odGhpcy50eXBlPW4udHlwZSx0aGlzLnZhbHVlPW4udmFsdWUsdGhpcy5saW5lbm89bi5saW5lbm8sdGhpcy5zdGFydD1uLnN0YXJ0LHRoaXMuZW5kPW4uZW5kKTp0aGlzLmxpbmVubz1lLmxpbmVubyx0aGlzLmZpbGVuYW1lPWUuZmlsZW5hbWUsdGhpcy5jaGlsZHJlbj1bXTtmb3IodmFyIHIgaW4gdCl0aGlzW3JdPXRbcl19ZnVuY3Rpb24gU3ludGhldGljTm9kZShlKXt0aGlzLmNoaWxkcmVuPVtdO2Zvcih2YXIgdCBpbiBlKXRoaXNbdF09ZVt0XTt0aGlzLnN5bnRoZXRpYz0hMH1mdW5jdGlvbiB1bmV2YWxhYmxlQ29uc3QoZSl7dmFyIHQ9ZGVmaW5pdGlvbnMudG9rZW5zW2VdLG49ZGVmaW5pdGlvbnMub3BUeXBlTmFtZXMuaGFzT3duUHJvcGVydHkodCk/ZGVmaW5pdGlvbnMub3BUeXBlTmFtZXNbdF06dCBpbiBkZWZpbml0aW9ucy5rZXl3b3Jkcz90LnRvVXBwZXJDYXNlKCk6dDtyZXR1cm57dG9Tb3VyY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbn19fWZ1bmN0aW9uIHRva2VuU3RyaW5nKGUpe3ZhciB0PWRlZmluaXRpb25zLnRva2Vuc1tlXTtyZXR1cm4vXlxXLy50ZXN0KHQpP2RlZmluaXRpb25zLm9wVHlwZU5hbWVzW3RdOnQudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBibG9ja0luaXQoKXtyZXR1cm57dHlwZTpCTE9DSyx2YXJEZWNsczpbXX19ZnVuY3Rpb24gc2NyaXB0SW5pdCgpe3JldHVybnt0eXBlOlNDUklQVCxmdW5EZWNsczpbXSx2YXJEZWNsczpbXSxtb2REZWZuczpuZXcgRGljdCxtb2RBc3NuczpuZXcgRGljdCxtb2REZWNsczpuZXcgRGljdCxtb2RMb2FkczpuZXcgRGljdCxpbXBEZWNsczpbXSxleHBEZWNsczpbXSxleHBvcnRzOm5ldyBEaWN0LGhhc0VtcHR5UmV0dXJuOiExLGhhc1JldHVybldpdGhWYWx1ZTohMSxoYXNZaWVsZDohMX19ZnVuY3Rpb24gRXhwb3J0KGUsdCl7dGhpcy5ub2RlPWUsdGhpcy5pc0RlZmluaXRpb249dCx0aGlzLnJlc29sdmVkPW51bGx9ZnVuY3Rpb24gcmVnaXN0ZXJFeHBvcnQoZSx0KXtmdW5jdGlvbiBuKHQsbil7aWYoZS5oYXModCkpdGhyb3cgbmV3IFN5bnRheEVycm9yKCJtdWx0aXBsZSBleHBvcnRzIG9mICIrdCk7ZS5zZXQodCxuKX1zd2l0Y2godC50eXBlKXtjYXNlIE1PRFVMRTpjYXNlIEZVTkNUSU9OOm4odC5uYW1lLG5ldyBFeHBvcnQodCwhMCkpO2JyZWFrO2Nhc2UgVkFSOmZvcih2YXIgcj0wO3I8dC5jaGlsZHJlbi5sZW5ndGg7cisrKW4odC5jaGlsZHJlbltyXS5uYW1lLG5ldyBFeHBvcnQodC5jaGlsZHJlbltyXSwhMCkpO2JyZWFrO2Nhc2UgTEVUOmNhc2UgQ09OU1Q6dGhyb3cgbmV3IEVycm9yKCJOWUk6ICIrZGVmaW5pdGlvbnMudG9rZW5zW3QudHlwZV0pO2Nhc2UgRVhQT1JUOmZvcih2YXIgcj0wO3I8dC5wYXRoTGlzdC5sZW5ndGg7cisrKXt2YXIgaT10LnBhdGhMaXN0W3JdO3N3aXRjaChpLnR5cGUpe2Nhc2UgT0JKRUNUX0lOSVQ6Zm9yKHZhciBzPTA7czxpLmNoaWxkcmVuLmxlbmd0aDtzKyspe3ZhciBvPWkuY2hpbGRyZW5bc107by50eXBlPT09SURFTlRJRklFUj9uKG8udmFsdWUsbmV3IEV4cG9ydChvLCExKSk6bihvLmNoaWxkcmVuWzBdLnZhbHVlLG5ldyBFeHBvcnQoby5jaGlsZHJlblsxXSwhMSkpfWJyZWFrO2Nhc2UgRE9UOm4oaS5jaGlsZHJlblsxXS52YWx1ZSxuZXcgRXhwb3J0KGksITEpKTticmVhaztjYXNlIElERU5USUZJRVI6bihpLnZhbHVlLG5ldyBFeHBvcnQoaSwhMSkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bmV4cGVjdGVkIGV4cG9ydCBwYXRoOiAiK2RlZmluaXRpb25zLnRva2Vuc1tpLnR5cGVdKX19YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgZXhwb3J0IGRlY2w6ICIrZGVmaW5pdGlvbnMudG9rZW5zW2V4cC50eXBlXSl9fWZ1bmN0aW9uIE1vZHVsZShlKXt2YXIgdD1lLmJvZHkuZXhwb3J0cyxuPWUuYm9keS5tb2REZWZucyxyPW5ldyBEaWN0O3QuZm9yRWFjaChmdW5jdGlvbihlLHQpe3ZhciBpPXQubm9kZTtpZihpLnR5cGU9PT1NT0RVTEUpci5zZXQoZSxpKTtlbHNlIGlmKCF0LmlzRGVmaW5pdGlvbiYmaS50eXBlPT09SURFTlRJRklFUiYmbi5oYXMoaS52YWx1ZSkpe3ZhciBzPW4uZ2V0KGkudmFsdWUpO3Iuc2V0KGUscyl9fSksdGhpcy5ub2RlPWUsdGhpcy5leHBvcnRzPXQsdGhpcy5leHBvcnRlZE1vZHVsZXM9cn1mdW5jdGlvbiBpc1ByYWdtYVRva2VuKGUpe3N3aXRjaChlKXtjYXNlIElERU5USUZJRVI6Y2FzZSBTVFJJTkc6Y2FzZSBOVU1CRVI6Y2FzZSBOVUxMOmNhc2UgVFJVRTpjYXNlIEZBTFNFOnJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHBhcnNlKGUsdCxuKXt2YXIgcj1uZXcgVG9rZW5pemVyKGUsdCxuLG9wdGlvbnMuYWxsb3dIVE1MQ29tbWVudHMpLGk9bmV3IFBhcnNlcihyKTtyZXR1cm4gaS5TY3JpcHQoITEsITEsITApfWZ1bmN0aW9uIHBhcnNlRnVuY3Rpb24oZSx0LG4scixpKXt2YXIgcz1uZXcgVG9rZW5pemVyKGUscixpKSxvPW5ldyBQYXJzZXIocyk7cmV0dXJuIG8ueD1uZXcgU3RhdGljQ29udGV4dChudWxsLG51bGwsITEsITEsITEpLG8uRnVuY3Rpb25EZWZpbml0aW9uKHQsbil9ZnVuY3Rpb24gcGFyc2VTdGRpbihlLHQsbixyKXtpZihlLm1hdGNoKC9eW1xzXSpcLmJlZ2luW1xzXSokLykpcmV0dXJuKyt0LnZhbHVlLHBhcnNlTXVsdGlsaW5lKHQsbik7cihlLnRyaW0oKSkmJihlPSIiKTtmb3IoOzspdHJ5e3ZhciBpPW5ldyBUb2tlbml6ZXIoZSwic3RkaW4iLHQudmFsdWUsITEpLHM9bmV3IFBhcnNlcihpKSxvPXMuU2NyaXB0KCExLCExKTtyZXR1cm4gdC52YWx1ZT1pLmxpbmVubyxvfWNhdGNoKHUpe2lmKCFzLnVuZXhwZWN0ZWRFT0YpdGhyb3cgdTt2YXIgYTtkb3tuJiZwdXRzdHIobiksYT1yZWFkbGluZSgpO2lmKCFhKXRocm93IHV9d2hpbGUocihhLnRyaW0oKSkpO2UrPSJcbiIrYX19ZnVuY3Rpb24gcGFyc2VNdWx0aWxpbmUoZSx0KXt2YXIgbj0iIjtmb3IoOzspe3QmJnB1dHN0cih0KTt2YXIgcj1yZWFkbGluZSgpO2lmKHI9PT1udWxsKXJldHVybiBudWxsO2lmKHIubWF0Y2goL15bXHNdKlwuZW5kW1xzXSokLykpYnJlYWs7bis9IlxuIityfXZhciBpPW5ldyBUb2tlbml6ZXIobiwic3RkaW4iLGUudmFsdWUsITEpLHM9bmV3IFBhcnNlcihpKSxvPXMuU2NyaXB0KCExLCExKTtyZXR1cm4gZS52YWx1ZT1pLmxpbmVubyxvfXZhciBsZXhlcj1yZXF1aXJlKCIuL2xleGVyIiksZGVmaW5pdGlvbnM9cmVxdWlyZSgiLi9kZWZpbml0aW9ucyIpLG9wdGlvbnM9cmVxdWlyZSgiLi9vcHRpb25zIiksVG9rZW5pemVyPWxleGVyLlRva2VuaXplcixEaWN0PWRlZmluaXRpb25zLkRpY3QsU3RhY2s9ZGVmaW5pdGlvbnMuU3RhY2s7ZXZhbChkZWZpbml0aW9ucy5jb25zdHMpLFN0YXRpY0NvbnRleHQucHJvdG90eXBlPXt1cGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9e307Zm9yKHZhciBuIGluIGUpdFtuXT17dmFsdWU6ZVtuXSx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07cmV0dXJuIE9iamVjdC5jcmVhdGUodGhpcyx0KX0scHVzaExhYmVsOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnVwZGF0ZSh7Y3VycmVudExhYmVsczp0aGlzLmN1cnJlbnRMYWJlbHMucHVzaChlKSxhbGxMYWJlbHM6dGhpcy5hbGxMYWJlbHMucHVzaChlKX0pfSxwdXNoVGFyZ2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuaXNMb29wLG49dHx8ZS50eXBlPT09U1dJVENIO3JldHVybiB0aGlzLmN1cnJlbnRMYWJlbHMuaXNFbXB0eSgpPyh0JiZ0aGlzLnVwZGF0ZSh7ZGVmYXVsdExvb3BUYXJnZXQ6ZX0pLG4mJnRoaXMudXBkYXRlKHtkZWZhdWx0VGFyZ2V0OmV9KSx0aGlzKTooZS5sYWJlbHM9bmV3IERpY3QsdGhpcy5jdXJyZW50TGFiZWxzLmZvckVhY2goZnVuY3Rpb24odCl7ZS5sYWJlbHMuc2V0KHQsITApfSksdGhpcy51cGRhdGUoe2N1cnJlbnRMYWJlbHM6bmV3IFN0YWNrLGxhYmVsZWRUYXJnZXRzOnRoaXMubGFiZWxlZFRhcmdldHMucHVzaChlKSxkZWZhdWx0TG9vcFRhcmdldDp0P2U6dGhpcy5kZWZhdWx0TG9vcFRhcmdldCxkZWZhdWx0VGFyZ2V0Om4/ZTp0aGlzLmRlZmF1bHRUYXJnZXR9KSl9LG5lc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b3BMZXZlbD90aGlzLnVwZGF0ZSh7dG9wTGV2ZWw6ITF9KTp0aGlzfSxjYW5JbXBvcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b3BMZXZlbCYmIXRoaXMuaW5GdW5jdGlvbn0sY2FuRXhwb3J0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5Nb2R1bGUmJnRoaXMudG9wTGV2ZWwmJiF0aGlzLmluRnVuY3Rpb259LGJhbldpdGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHJpY3RNb2RlfHx0aGlzLmluTW9kdWxlfSxtb2R1bGVzQWxsb3dlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvcExldmVsJiYhdGhpcy5pbkZ1bmN0aW9ufX07dmFyIFBwPVBhcnNlci5wcm90b3R5cGU7UHAubW96aWxsYU1vZGU9ITEsUHAucGFyZW5GcmVlTW9kZT0hMSxQcC53aXRoQ29udGV4dD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMueDt0aGlzLng9ZTt2YXIgcj10LmNhbGwodGhpcyk7cmV0dXJuIHRoaXMueD1uLHJ9LFBwLm5ld05vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBOb2RlKHRoaXMudCx0KX0sUHAuZmFpbD1mdW5jdGlvbih0KXt0aHJvdyB0aGlzLnQubmV3U3ludGF4RXJyb3IodCl9LFBwLm1hdGNoPWZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gdGhpcy50Lm1hdGNoKHQsbixyKX0sUHAubXVzdE1hdGNoPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXMudC5tdXN0TWF0Y2godCxuKX0sUHAucGVlaz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50LnBlZWsodCl9LFBwLnBlZWtPblNhbWVMaW5lPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnQucGVla09uU2FtZUxpbmUodCl9LFBwLmRvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50LmRvbmV9LFBwLlNjcmlwdD1mdW5jdGlvbih0LG4scil7dmFyIGk9dGhpcy5uZXdOb2RlKHNjcmlwdEluaXQoKSkscz1uZXcgU3RhdGljQ29udGV4dChpLGksdCxuKTtyZXR1cm4gdGhpcy53aXRoQ29udGV4dChzLGZ1bmN0aW9uKCl7dGhpcy5TdGF0ZW1lbnRzKGksITApfSksciYmIXRoaXMuZG9uZSgpJiZ0aGlzLmZhaWwoImV4cGVjdGVkIGVuZCBvZiBpbnB1dCIpLGl9O3ZhciBOcD1Ob2RlLnByb3RvdHlwZT1TeW50aGV0aWNOb2RlLnByb3RvdHlwZT17fTtOcC5jb25zdHJ1Y3Rvcj1Ob2RlO3ZhciBUT19TT1VSQ0VfU0tJUD17dHlwZTohMCx2YWx1ZTohMCxsaW5lbm86ITAsc3RhcnQ6ITAsZW5kOiEwLHRva2VuaXplcjohMCxhc3NpZ25PcDohMH07TnAudG9Tb3VyY2U9ZnVuY3Rpb24oKXt2YXIgdD17fSxuPXRoaXM7dC50eXBlPXVuZXZhbGFibGVDb25zdCh0aGlzLnR5cGUpO2lmKHRoaXMuZ2VuZXJhdGluZ1NvdXJjZSlyZXR1cm4gdC50b1NvdXJjZSgpO3RoaXMuZ2VuZXJhdGluZ1NvdXJjZT0hMCwidmFsdWUiaW4gdGhpcyYmKHQudmFsdWU9dGhpcy52YWx1ZSksImxpbmVubyJpbiB0aGlzJiYodC5saW5lbm89dGhpcy5saW5lbm8pLCJzdGFydCJpbiB0aGlzJiYodC5zdGFydD10aGlzLnN0YXJ0KSwiZW5kImluIHRoaXMmJih0LmVuZD10aGlzLmVuZCksdGhpcy5hc3NpZ25PcCYmKHQuYXNzaWduT3A9dW5ldmFsYWJsZUNvbnN0KHRoaXMuYXNzaWduT3ApKTtmb3IodmFyIHIgaW4gdGhpcyl0aGlzLmhhc093blByb3BlcnR5KHIpJiYhKHIgaW4gVE9fU09VUkNFX1NLSVApJiYodFtyXT10aGlzW3JdKTt0cnl7cmV0dXJuIHQudG9Tb3VyY2UoKX1maW5hbGx5e2RlbGV0ZSB0aGlzLmdlbmVyYXRpbmdTb3VyY2V9fSxOcC5wdXNoPWZ1bmN0aW9uKGUpe3JldHVybiBlIT09bnVsbCYmKGUuc3RhcnQ8dGhpcy5zdGFydCYmKHRoaXMuc3RhcnQ9ZS5zdGFydCksdGhpcy5lbmQ8ZS5lbmQmJih0aGlzLmVuZD1lLmVuZCkpLHRoaXMuY2hpbGRyZW4ucHVzaChlKX0sTm9kZS5pbmRlbnRMZXZlbD0wLE5wLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0IGluIHRoaXMpdGhpcy5oYXNPd25Qcm9wZXJ0eSh0KSYmdCE9PSJ0eXBlIiYmdCE9PSJ0YXJnZXQiJiZlLnB1c2goe2lkOnQsdmFsdWU6dGhpc1t0XX0pO2Uuc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLmlkPHQuaWQ/LTE6MX0pO3ZhciBuPSIgICAgIixyPSsrTm9kZS5pbmRlbnRMZXZlbCxpPSJ7XG4iK24ucmVwZWF0KHIpKyJ0eXBlOiAiK3Rva2VuU3RyaW5nKHRoaXMudHlwZSk7Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKylpKz0iLFxuIituLnJlcGVhdChyKStlW3RdLmlkKyI6ICIrZVt0XS52YWx1ZTtyZXR1cm4gcj0tLU5vZGUuaW5kZW50TGV2ZWwsaSs9IlxuIituLnJlcGVhdChyKSsifSIsaX0sTnAuc3ludGg9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFN5bnRoZXRpY05vZGUoZSk7cmV0dXJuIHQuZmlsZW5hbWU9dGhpcy5maWxlbmFtZSx0LmxpbmVubz10aGlzLmxpbmVubyx0LnN0YXJ0PXRoaXMuc3RhcnQsdC5lbmQ9dGhpcy5lbmQsdH07dmFyIExPT1BfSU5JVD17aXNMb29wOiEwfTtkZWZpbml0aW9ucy5kZWZpbmVHZXR0ZXIoTnAsImxlbmd0aCIsZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vZGUucHJvdG90eXBlLmxlbmd0aCBpcyBnb25lOyB1c2Ugbi5jaGlsZHJlbi5sZW5ndGggaW5zdGVhZCIpfSksZGVmaW5pdGlvbnMuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlwZSwicmVwZWF0IixmdW5jdGlvbihlKXt2YXIgdD0iIixuPXRoaXMrdDt3aGlsZSgtLWU+PTApdCs9bjtyZXR1cm4gdH0sITEsITEsITApLFBwLk1heWJlTGVmdFBhcmVuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW5GcmVlTW9kZT90aGlzLm1hdGNoKExFRlRfUEFSRU4pP0xFRlRfUEFSRU46RU5EOnRoaXMubXVzdE1hdGNoKExFRlRfUEFSRU4pLnR5cGV9LFBwLk1heWJlUmlnaHRQYXJlbj1mdW5jdGlvbih0KXt0PT09TEVGVF9QQVJFTiYmdGhpcy5tdXN0TWF0Y2goUklHSFRfUEFSRU4pfSxQcC5TdGF0ZW1lbnRzPWZ1bmN0aW9uKHQsbil7dmFyIHI9ISFuO3RyeXt3aGlsZSghdGhpcy5kb25lKCkmJnRoaXMucGVlayghMCkhPT1SSUdIVF9DVVJMWSl7dmFyIGk9dGhpcy5TdGF0ZW1lbnQoKTt0LnB1c2goaSksciYmUHJhZ21hKGkpPyh0aGlzLnguc3RyaWN0TW9kZT0hMCx0LnN0cmljdD0hMCk6cj0hMX19Y2F0Y2gocyl7dHJ5e3RoaXMuZG9uZSgpJiYodGhpcy51bmV4cGVjdGVkRU9GPSEwKX1jYXRjaChzKXt9dGhyb3cgc319LFBwLkJsb2NrPWZ1bmN0aW9uKCl7dGhpcy5tdXN0TWF0Y2goTEVGVF9DVVJMWSk7dmFyIHQ9dGhpcy5uZXdOb2RlKGJsb2NrSW5pdCgpKSxuPXRoaXMueC51cGRhdGUoe3BhcmVudEJsb2NrOnR9KS5wdXNoVGFyZ2V0KHQpO3JldHVybiB0aGlzLndpdGhDb250ZXh0KG4sZnVuY3Rpb24oKXt0aGlzLlN0YXRlbWVudHModCl9KSx0aGlzLm11c3RNYXRjaChSSUdIVF9DVVJMWSksdH07dmFyIERFQ0xBUkVEX0ZPUk09MCxFWFBSRVNTRURfRk9STT0xLFNUQVRFTUVOVF9GT1JNPTI7UHAuU3RhdGVtZW50PWZ1bmN0aW9uKCl7dmFyIHQsbixyLGkscyxvLHUsYT10aGlzLnQuZ2V0KCEwKSxmLGwsYyxoLHA9dGhpcy50LmJsb2NrQ29tbWVudHM7c3dpdGNoKGEpe2Nhc2UgSU1QT1JUOnRoaXMueC5jYW5JbXBvcnQoKXx8dGhpcy5mYWlsKCJpbGxlZ2FsIGNvbnRleHQgZm9yIGltcG9ydCBzdGF0ZW1lbnQiKSxyPXRoaXMubmV3Tm9kZSgpLHIucGF0aExpc3Q9dGhpcy5JbXBvcnRQYXRoTGlzdCgpLHRoaXMueC5wYXJlbnRTY3JpcHQuaW1wRGVjbHMucHVzaChyKTticmVhaztjYXNlIEVYUE9SVDp0aGlzLnguY2FuRXhwb3J0KCl8fHRoaXMuZmFpbCgiZXhwb3J0IHN0YXRlbWVudCBub3QgaW4gbW9kdWxlIHRvcCBsZXZlbCIpO3N3aXRjaCh0aGlzLnBlZWsoKSl7Y2FzZSBNT0RVTEU6Y2FzZSBGVU5DVElPTjpjYXNlIExFVDpjYXNlIFZBUjpjYXNlIENPTlNUOnJldHVybiByPXRoaXMuU3RhdGVtZW50KCksci5ibG9ja0NvbW1lbnRzPXAsci5leHBvcnRlZD0hMCx0aGlzLngucGFyZW50U2NyaXB0LmV4cERlY2xzLnB1c2gocikscmVnaXN0ZXJFeHBvcnQodGhpcy54LnBhcmVudFNjcmlwdC5leHBvcnRzLHIpLHJ9cj10aGlzLm5ld05vZGUoKSxyLnBhdGhMaXN0PXRoaXMuRXhwb3J0UGF0aExpc3QoKSx0aGlzLngucGFyZW50U2NyaXB0LmV4cERlY2xzLnB1c2gocikscmVnaXN0ZXJFeHBvcnQodGhpcy54LnBhcmVudFNjcmlwdC5leHBvcnRzLHIpO2JyZWFrO2Nhc2UgRlVOQ1RJT046cmV0dXJuIHRoaXMuRnVuY3Rpb25EZWZpbml0aW9uKCEwLHRoaXMueC50b3BMZXZlbD9ERUNMQVJFRF9GT1JNOlNUQVRFTUVOVF9GT1JNLHApO2Nhc2UgTEVGVF9DVVJMWTpyZXR1cm4gcj10aGlzLm5ld05vZGUoYmxvY2tJbml0KCkpLGM9dGhpcy54LnVwZGF0ZSh7cGFyZW50QmxvY2s6cn0pLnB1c2hUYXJnZXQocikubmVzdCgpLHRoaXMud2l0aENvbnRleHQoYyxmdW5jdGlvbigpe3RoaXMuU3RhdGVtZW50cyhyKX0pLHRoaXMubXVzdE1hdGNoKFJJR0hUX0NVUkxZKSxyO2Nhc2UgSUY6cmV0dXJuIHI9dGhpcy5uZXdOb2RlKCksci5jb25kaXRpb249dGhpcy5IZWFkRXhwcmVzc2lvbigpLGM9dGhpcy54LnB1c2hUYXJnZXQocikubmVzdCgpLHRoaXMud2l0aENvbnRleHQoYyxmdW5jdGlvbigpe3IudGhlblBhcnQ9dGhpcy5TdGF0ZW1lbnQoKSxyLmVsc2VQYXJ0PXRoaXMubWF0Y2goRUxTRSwhMCk/dGhpcy5TdGF0ZW1lbnQoKTpudWxsfSkscjtjYXNlIFNXSVRDSDpyZXR1cm4gcj10aGlzLm5ld05vZGUoe2Nhc2VzOltdLGRlZmF1bHRJbmRleDotMX0pLHIuZGlzY3JpbWluYW50PXRoaXMuSGVhZEV4cHJlc3Npb24oKSxjPXRoaXMueC5wdXNoVGFyZ2V0KHIpLm5lc3QoKSx0aGlzLndpdGhDb250ZXh0KGMsZnVuY3Rpb24oKXt0aGlzLm11c3RNYXRjaChMRUZUX0NVUkxZKTt3aGlsZSgoYT10aGlzLnQuZ2V0KCkpIT09UklHSFRfQ1VSTFkpe3N3aXRjaChhKXtjYXNlIERFRkFVTFQ6ci5kZWZhdWx0SW5kZXg+PTAmJnRoaXMuZmFpbCgiTW9yZSB0aGFuIG9uZSBzd2l0Y2ggZGVmYXVsdCIpO2Nhc2UgQ0FTRTppPXRoaXMubmV3Tm9kZSgpLGE9PT1ERUZBVUxUP3IuZGVmYXVsdEluZGV4PXIuY2FzZXMubGVuZ3RoOmkuY2FzZUxhYmVsPXRoaXMuRXhwcmVzc2lvbihDT0xPTik7YnJlYWs7ZGVmYXVsdDp0aGlzLmZhaWwoIkludmFsaWQgc3dpdGNoIGNhc2UiKX10aGlzLm11c3RNYXRjaChDT0xPTiksaS5zdGF0ZW1lbnRzPXRoaXMubmV3Tm9kZShibG9ja0luaXQoKSk7d2hpbGUoKGE9dGhpcy5wZWVrKCEwKSkhPT1DQVNFJiZhIT09REVGQVVMVCYmYSE9PVJJR0hUX0NVUkxZKWkuc3RhdGVtZW50cy5wdXNoKHRoaXMuU3RhdGVtZW50KCkpO3IuY2FzZXMucHVzaChpKX19KSxyO2Nhc2UgRk9SOnJldHVybiByPXRoaXMubmV3Tm9kZShMT09QX0lOSVQpLHIuYmxvY2tDb21tZW50cz1wLHRoaXMubWF0Y2goSURFTlRJRklFUikmJih0aGlzLnQudG9rZW4udmFsdWU9PT0iZWFjaCI/ci5pc0VhY2g9ITA6dGhpcy50LnVuZ2V0KCkpLHRoaXMucGFyZW5GcmVlTW9kZXx8dGhpcy5tdXN0TWF0Y2goTEVGVF9QQVJFTiksYz10aGlzLngucHVzaFRhcmdldChyKS5uZXN0KCksaD10aGlzLngudXBkYXRlKHtpbkZvckxvb3BJbml0OiEwfSksaT1udWxsLChhPXRoaXMucGVlayghMCkpIT09U0VNSUNPTE9OJiZ0aGlzLndpdGhDb250ZXh0KGgsZnVuY3Rpb24oKXthPT09VkFSfHxhPT09Q09OU1Q/KHRoaXMudC5nZXQoKSxpPXRoaXMuVmFyaWFibGVzKCkpOmE9PT1MRVQ/KHRoaXMudC5nZXQoKSx0aGlzLnBlZWsoKT09PUxFRlRfUEFSRU4/aT10aGlzLkxldEJsb2NrKCExKToodGhpcy54LnBhcmVudEJsb2NrPXIsci52YXJEZWNscz1bXSxpPXRoaXMuVmFyaWFibGVzKCkpKTppPXRoaXMuRXhwcmVzc2lvbigpfSksaSYmdGhpcy5tYXRjaChJTik/KHIudHlwZT1GT1JfSU4sdGhpcy53aXRoQ29udGV4dChoLGZ1bmN0aW9uKCl7ci5vYmplY3Q9dGhpcy5FeHByZXNzaW9uKCk7aWYoaS50eXBlPT09VkFSfHxpLnR5cGU9PT1MRVQpe289aS5jaGlsZHJlbjtpZihvLmxlbmd0aCE9PTEmJmkuZGVzdHJ1Y3R1cmluZ3MubGVuZ3RoIT09MSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIkludmFsaWQgZm9yLi5pbiBsZWZ0LWhhbmQgc2lkZSIsdGhpcy5maWxlbmFtZSxpLmxpbmVubyk7aS5kZXN0cnVjdHVyaW5ncy5sZW5ndGg+MD9yLml0ZXJhdG9yPWkuZGVzdHJ1Y3R1cmluZ3NbMF06ci5pdGVyYXRvcj1vWzBdLHIudmFyRGVjbD1pfWVsc2V7aWYoaS50eXBlPT09QVJSQVlfSU5JVHx8aS50eXBlPT09T0JKRUNUX0lOSVQpaS5kZXN0cnVjdHVyZWROYW1lcz10aGlzLmNoZWNrRGVzdHJ1Y3R1cmluZyhpKTtyLml0ZXJhdG9yPWl9fSkpOihoLmluRm9yTG9vcEluaXQ9ITEsci5zZXR1cD1pLHRoaXMubXVzdE1hdGNoKFNFTUlDT0xPTiksci5pc0VhY2gmJnRoaXMuZmFpbCgiSW52YWxpZCBmb3IgZWFjaC4uaW4gbG9vcCIpLHRoaXMud2l0aENvbnRleHQoaCxmdW5jdGlvbigpe3IuY29uZGl0aW9uPXRoaXMucGVlayghMCk9PT1TRU1JQ09MT04/bnVsbDp0aGlzLkV4cHJlc3Npb24oKSx0aGlzLm11c3RNYXRjaChTRU1JQ09MT04pLGY9dGhpcy5wZWVrKCEwKSxyLnVwZGF0ZT0odGhpcy5wYXJlbkZyZWVNb2RlP2Y9PT1MRUZUX0NVUkxZfHxkZWZpbml0aW9ucy5pc1N0YXRlbWVudFN0YXJ0Q29kZVtmXTpmPT09UklHSFRfUEFSRU4pP251bGw6dGhpcy5FeHByZXNzaW9uKCl9KSksdGhpcy5wYXJlbkZyZWVNb2RlfHx0aGlzLm11c3RNYXRjaChSSUdIVF9QQVJFTiksdGhpcy53aXRoQ29udGV4dChjLGZ1bmN0aW9uKCl7ci5ib2R5PXRoaXMuU3RhdGVtZW50KCl9KSxyO2Nhc2UgV0hJTEU6cmV0dXJuIHI9dGhpcy5uZXdOb2RlKHtpc0xvb3A6ITB9KSxyLmJsb2NrQ29tbWVudHM9cCxyLmNvbmRpdGlvbj10aGlzLkhlYWRFeHByZXNzaW9uKCksYz10aGlzLngucHVzaFRhcmdldChyKS5uZXN0KCksdGhpcy53aXRoQ29udGV4dChjLGZ1bmN0aW9uKCl7ci5ib2R5PXRoaXMuU3RhdGVtZW50KCl9KSxyO2Nhc2UgRE86cmV0dXJuIHI9dGhpcy5uZXdOb2RlKHtpc0xvb3A6ITB9KSxyLmJsb2NrQ29tbWVudHM9cCxjPXRoaXMueC5wdXNoVGFyZ2V0KHIpLm5leHQoKSx0aGlzLndpdGhDb250ZXh0KGMsZnVuY3Rpb24oKXtyLmJvZHk9dGhpcy5TdGF0ZW1lbnQoKX0pLHRoaXMubXVzdE1hdGNoKFdISUxFKSxyLmNvbmRpdGlvbj10aGlzLkhlYWRFeHByZXNzaW9uKCksdGhpcy5tYXRjaChTRU1JQ09MT04pLHI7Y2FzZSBCUkVBSzpjYXNlIENPTlRJTlVFOnI9dGhpcy5uZXdOb2RlKCksci5ibG9ja0NvbW1lbnRzPXAsYz10aGlzLngucHVzaFRhcmdldChyKSx0aGlzLnBlZWtPblNhbWVMaW5lKCk9PT1JREVOVElGSUVSJiYodGhpcy50LmdldCgpLHIubGFiZWw9dGhpcy50LnRva2VuLnZhbHVlKSxyLmxhYmVsP3IudGFyZ2V0PWMubGFiZWxlZFRhcmdldHMuZmluZChmdW5jdGlvbihlKXtyZXR1cm4gZS5sYWJlbHMuaGFzKHIubGFiZWwpfSk6YT09PUNPTlRJTlVFP3IudGFyZ2V0PWMuZGVmYXVsdExvb3BUYXJnZXQ6ci50YXJnZXQ9Yy5kZWZhdWx0VGFyZ2V0LHIudGFyZ2V0fHx0aGlzLmZhaWwoIkludmFsaWQgIisoYT09PUJSRUFLPyJicmVhayI6ImNvbnRpbnVlIikpLCFyLnRhcmdldC5pc0xvb3AmJmE9PT1DT05USU5VRSYmdGhpcy5mYWlsKCJJbnZhbGlkIGNvbnRpbnVlIik7YnJlYWs7Y2FzZSBUUlk6cj10aGlzLm5ld05vZGUoe2NhdGNoQ2xhdXNlczpbXX0pLHIuYmxvY2tDb21tZW50cz1wLHIudHJ5QmxvY2s9dGhpcy5CbG9jaygpO3doaWxlKHRoaXMubWF0Y2goQ0FUQ0gpKXtpPXRoaXMubmV3Tm9kZSgpLHM9dGhpcy5NYXliZUxlZnRQYXJlbigpO3N3aXRjaCh0aGlzLnQuZ2V0KCkpe2Nhc2UgTEVGVF9CUkFDS0VUOmNhc2UgTEVGVF9DVVJMWTp0aGlzLnQudW5nZXQoKSxpLnZhck5hbWU9dGhpcy5EZXN0cnVjdHVyaW5nRXhwcmVzc2lvbighMCk7YnJlYWs7Y2FzZSBJREVOVElGSUVSOmkudmFyTmFtZT10aGlzLnQudG9rZW4udmFsdWU7YnJlYWs7ZGVmYXVsdDp0aGlzLmZhaWwoIm1pc3NpbmcgaWRlbnRpZmllciBpbiBjYXRjaCIpfXRoaXMubWF0Y2goSUYpJiYodGhpcy5tb3ppbGxhTW9kZXx8dGhpcy5mYWlsKCJJbGxlZ2FsIGNhdGNoIGd1YXJkIiksci5jYXRjaENsYXVzZXMubGVuZ3RoJiYhci5jYXRjaENsYXVzZXMudG9wKCkuZ3VhcmQmJnRoaXMuZmFpbCgiR3VhcmRlZCBjYXRjaCBhZnRlciB1bmd1YXJkZWQiKSxpLmd1YXJkPXRoaXMuRXhwcmVzc2lvbigpKSx0aGlzLk1heWJlUmlnaHRQYXJlbihzKSxpLmJsb2NrPXRoaXMuQmxvY2soKSxyLmNhdGNoQ2xhdXNlcy5wdXNoKGkpfXJldHVybiB0aGlzLm1hdGNoKEZJTkFMTFkpJiYoci5maW5hbGx5QmxvY2s9dGhpcy5CbG9jaygpKSwhci5jYXRjaENsYXVzZXMubGVuZ3RoJiYhci5maW5hbGx5QmxvY2smJnRoaXMuZmFpbCgiSW52YWxpZCB0cnkgc3RhdGVtZW50IikscjtjYXNlIENBVENIOmNhc2UgRklOQUxMWTp0aGlzLmZhaWwoZGVmaW5pdGlvbnMudG9rZW5zW2FdKyIgd2l0aG91dCBwcmVjZWRpbmcgdHJ5Iik7Y2FzZSBUSFJPVzpyPXRoaXMubmV3Tm9kZSgpLHIuZXhjZXB0aW9uPXRoaXMuRXhwcmVzc2lvbigpO2JyZWFrO2Nhc2UgUkVUVVJOOnI9dGhpcy5SZXR1cm5PcllpZWxkKCk7YnJlYWs7Y2FzZSBXSVRIOnJldHVybiB0aGlzLnguYmFuV2l0aCgpJiZ0aGlzLmZhaWwoIndpdGggc3RhdGVtZW50cyBub3QgYWxsb3dlZCBpbiBzdHJpY3QgY29kZSBvciBtb2R1bGVzIikscj10aGlzLm5ld05vZGUoKSxyLmJsb2NrQ29tbWVudHM9cCxyLm9iamVjdD10aGlzLkhlYWRFeHByZXNzaW9uKCksYz10aGlzLngucHVzaFRhcmdldChyKS5uZXh0KCksdGhpcy53aXRoQ29udGV4dChjLGZ1bmN0aW9uKCl7ci5ib2R5PXRoaXMuU3RhdGVtZW50KCl9KSxyO2Nhc2UgVkFSOmNhc2UgQ09OU1Q6cj10aGlzLlZhcmlhYmxlcygpO2JyZWFrO2Nhc2UgTEVUOmlmKHRoaXMucGVlaygpPT09TEVGVF9QQVJFTilyZXR1cm4gcj10aGlzLkxldEJsb2NrKCEwKSxyO3I9dGhpcy5WYXJpYWJsZXMoKTticmVhaztjYXNlIERFQlVHR0VSOnI9dGhpcy5uZXdOb2RlKCk7YnJlYWs7Y2FzZSBORVdMSU5FOmNhc2UgU0VNSUNPTE9OOnJldHVybiByPXRoaXMubmV3Tm9kZSh7dHlwZTpTRU1JQ09MT059KSxyLmJsb2NrQ29tbWVudHM9cCxyLmV4cHJlc3Npb249bnVsbCxyO2Nhc2UgSURFTlRJRklFUjpjYXNlIFVTRTpjYXNlIE1PRFVMRTpzd2l0Y2godGhpcy50LnRva2VuLnZhbHVlKXtjYXNlInVzZSI6aWYoIWlzUHJhZ21hVG9rZW4odGhpcy5wZWVrT25TYW1lTGluZSgpKSl7dGhpcy50LnVuZ2V0KCk7YnJlYWt9cmV0dXJuIHRoaXMubmV3Tm9kZSh7dHlwZTpVU0UscGFyYW1zOnRoaXMuUHJhZ21hcygpfSk7Y2FzZSJtb2R1bGUiOnRoaXMueC5tb2R1bGVzQWxsb3dlZCgpfHx0aGlzLmZhaWwoIm1vZHVsZSBkZWNsYXJhdGlvbiBub3QgYXQgdG9wIGxldmVsIiksdGhpcy54LnBhcmVudFNjcmlwdC5oYXNNb2R1bGVzPSEwLGE9dGhpcy5wZWVrT25TYW1lTGluZSgpO2lmKGEhPT1JREVOVElGSUVSJiZhIT09TEVGVF9DVVJMWSl7dGhpcy50LnVuZ2V0KCk7YnJlYWt9cj10aGlzLm5ld05vZGUoe3R5cGU6TU9EVUxFfSksci5ibG9ja0NvbW1lbnRzPXAsdGhpcy5tdXN0TWF0Y2goSURFTlRJRklFUiksbj10aGlzLnQudG9rZW4udmFsdWU7aWYodGhpcy5tYXRjaChMRUZUX0NVUkxZKSlyZXR1cm4gci5uYW1lPW4sci5ib2R5PXRoaXMuU2NyaXB0KCEwLCExKSxyLm1vZHVsZT1uZXcgTW9kdWxlKHIpLHRoaXMubXVzdE1hdGNoKFJJR0hUX0NVUkxZKSx0aGlzLngucGFyZW50U2NyaXB0Lm1vZERlZm5zLnNldChyLm5hbWUscikscjtyZXR1cm4gdGhpcy50LnVuZ2V0KCksdGhpcy5Nb2R1bGVWYXJpYWJsZXMocikscjtkZWZhdWx0OmE9dGhpcy5wZWVrKCk7aWYoYT09PUNPTE9OKXJldHVybiBuPXRoaXMudC50b2tlbi52YWx1ZSx0aGlzLnguYWxsTGFiZWxzLmhhcyhuKSYmdGhpcy5mYWlsKCJEdXBsaWNhdGUgbGFiZWw6ICIrbiksdGhpcy50LmdldCgpLHI9dGhpcy5uZXdOb2RlKHt0eXBlOkxBQkVMLGxhYmVsOm59KSxyLmJsb2NrQ29tbWVudHM9cCxjPXRoaXMueC5wdXNoTGFiZWwobikubmVzdCgpLHRoaXMud2l0aENvbnRleHQoYyxmdW5jdGlvbigpe3Iuc3RhdGVtZW50PXRoaXMuU3RhdGVtZW50KCl9KSxyLnRhcmdldD1yLnN0YXRlbWVudC50eXBlPT09TEFCRUw/ci5zdGF0ZW1lbnQudGFyZ2V0OnIuc3RhdGVtZW50LHJ9O2RlZmF1bHQ6cj10aGlzLm5ld05vZGUoe3R5cGU6U0VNSUNPTE9OfSksdGhpcy50LnVuZ2V0KCksci5ibG9ja0NvbW1lbnRzPXAsci5leHByZXNzaW9uPXRoaXMuRXhwcmVzc2lvbigpLHIuZW5kPXIuZXhwcmVzc2lvbi5lbmR9cmV0dXJuIHIuYmxvY2tDb21tZW50cz1wLHRoaXMuTWFnaWNhbFNlbWljb2xvbigpLHJ9LFBwLlByYWdtYXM9ZnVuY3Rpb24oKXt2YXIgdD1bXTtkbyB0LnB1c2godGhpcy5QcmFnbWEoKSk7d2hpbGUodGhpcy5tYXRjaChDT01NQSkpO3JldHVybiB0aGlzLk1hZ2ljYWxTZW1pY29sb24oKSx0fSxQcC5QcmFnbWE9ZnVuY3Rpb24oKXt2YXIgdD1bXSxuO2RvIG49dGhpcy50LmdldCghMCksdC5wdXNoKHRoaXMudC50b2tlbik7d2hpbGUoaXNQcmFnbWFUb2tlbih0aGlzLnBlZWsoKSkpO3JldHVybiB0fSxQcC5NYWdpY2FsU2VtaWNvbG9uPWZ1bmN0aW9uKCl7dmFyIHQ7dGhpcy50LmxpbmVubz09PXRoaXMudC50b2tlbi5saW5lbm8mJih0PXRoaXMucGVla09uU2FtZUxpbmUoKSx0IT09RU5EJiZ0IT09TkVXTElORSYmdCE9PVNFTUlDT0xPTiYmdCE9PVJJR0hUX0NVUkxZJiZ0aGlzLmZhaWwoIm1pc3NpbmcgOyBiZWZvcmUgc3RhdGVtZW50IikpLHRoaXMubWF0Y2goU0VNSUNPTE9OKX0sUHAuUmV0dXJuT3JZaWVsZD1mdW5jdGlvbigpe3ZhciB0LG4scj10aGlzLnQudG9rZW4udHlwZSxpLHM9dGhpcy54LnBhcmVudFNjcmlwdDtyZXR1cm4gcj09PVJFVFVSTj90aGlzLnguaW5GdW5jdGlvbnx8dGhpcy5mYWlsKCJSZXR1cm4gbm90IGluIGZ1bmN0aW9uIik6KHRoaXMueC5pbkZ1bmN0aW9ufHx0aGlzLmZhaWwoIllpZWxkIG5vdCBpbiBmdW5jdGlvbiIpLHMuaGFzWWllbGQ9ITApLHQ9dGhpcy5uZXdOb2RlKHt2YWx1ZTp1bmRlZmluZWR9KSxpPXI9PT1SRVRVUk4/dGhpcy5wZWVrT25TYW1lTGluZSghMCk6dGhpcy5wZWVrKCEwKSxpIT09RU5EJiZpIT09TkVXTElORSYmaSE9PVNFTUlDT0xPTiYmaSE9PVJJR0hUX0NVUkxZJiYociE9PVlJRUxEfHxpIT09ciYmaSE9PVJJR0hUX0JSQUNLRVQmJmkhPT1SSUdIVF9QQVJFTiYmaSE9PUNPTE9OJiZpIT09Q09NTUEpP3I9PT1SRVRVUk4/KHQudmFsdWU9dGhpcy5FeHByZXNzaW9uKCkscy5oYXNSZXR1cm5XaXRoVmFsdWU9ITApOnQudmFsdWU9dGhpcy5Bc3NpZ25FeHByZXNzaW9uKCk6cj09PVJFVFVSTiYmKHMuaGFzRW1wdHlSZXR1cm49ITApLHR9LFBwLk1vZHVsZUV4cHJlc3Npb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaChTVFJJTkcpP3RoaXMubmV3Tm9kZSgpOnRoaXMuUXVhbGlmaWVkUGF0aCgpfSxQcC5JbXBvcnRQYXRoTGlzdD1mdW5jdGlvbigpe3ZhciB0PVtdO2RvIHQucHVzaCh0aGlzLkltcG9ydFBhdGgoKSk7d2hpbGUodGhpcy5tYXRjaChDT01NQSkpO3JldHVybiB0fSxQcC5JbXBvcnRQYXRoPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5RdWFsaWZpZWRQYXRoKCk7aWYoIXRoaXMubWF0Y2goRE9UKSlyZXR1cm4gdC50eXBlPT09SURFTlRJRklFUiYmdGhpcy5mYWlsKCJjYW5ub3QgaW1wb3J0IGxvY2FsIHZhcmlhYmxlIiksdDt2YXIgbj10aGlzLm5ld05vZGUoKTtyZXR1cm4gbi5wdXNoKHQpLG4ucHVzaCh0aGlzLkltcG9ydFNwZWNpZmllclNldCgpKSxufSxQcC5FeHBsaWNpdFNwZWNpZmllclNldD1mdW5jdGlvbih0KXt2YXIgbixyLGkscztuPXRoaXMubmV3Tm9kZSh7dHlwZTpPQkpFQ1RfSU5JVH0pLHRoaXMubXVzdE1hdGNoKExFRlRfQ1VSTFkpO2lmKCF0aGlzLm1hdGNoKFJJR0hUX0NVUkxZKSlkbyBpPXRoaXMuSWRlbnRpZmllcigpLHRoaXMubWF0Y2goQ09MT04pPyhyPXRoaXMubmV3Tm9kZSh7dHlwZTpQUk9QRVJUWV9JTklUfSksci5wdXNoKGkpLHIucHVzaCh0KCkpLG4ucHVzaChyKSk6bi5wdXNoKGkpO3doaWxlKCF0aGlzLm1hdGNoKFJJR0hUX0NVUkxZKSYmdGhpcy5tdXN0TWF0Y2goQ09NTUEpKTtyZXR1cm4gbn0sUHAuSW1wb3J0U3BlY2lmaWVyU2V0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5tYXRjaChNVUwpP3RoaXMubmV3Tm9kZSh7dHlwZTpJREVOVElGSUVSLG5hbWU6IioifSk6RXhwbGljaXRTcGVjaWZpZXJTZXQoZnVuY3Rpb24oKXtyZXR1cm4gdC5JZGVudGlmaWVyKCl9KX0sUHAuSWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11c3RNYXRjaChJREVOVElGSUVSKSx0aGlzLm5ld05vZGUoe3R5cGU6SURFTlRJRklFUn0pfSxQcC5JZGVudGlmaWVyTmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11c3RNYXRjaChJREVOVElGSUVSLCEwKSx0aGlzLm5ld05vZGUoe3R5cGU6SURFTlRJRklFUn0pfSxQcC5RdWFsaWZpZWRQYXRoPWZ1bmN0aW9uKCl7dmFyIHQsbjt0PXRoaXMuSWRlbnRpZmllcigpO3doaWxlKHRoaXMubWF0Y2goRE9UKSl7aWYodGhpcy5wZWVrKCkhPT1JREVOVElGSUVSKXt0aGlzLnQudW5nZXQoKTticmVha31uPXRoaXMubmV3Tm9kZSgpLG4ucHVzaCh0KSxuLnB1c2godGhpcy5JZGVudGlmaWVyKCkpLHQ9bn1yZXR1cm4gdH0sUHAuRXhwb3J0UGF0aD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMucGVlaygpPT09TEVGVF9DVVJMWT90aGlzLkV4cGxpY2l0U3BlY2lmaWVyU2V0KGZ1bmN0aW9uKCl7cmV0dXJuIHQuUXVhbGlmaWVkUGF0aCgpfSk6dGhpcy5RdWFsaWZpZWRQYXRoKCl9LFBwLkV4cG9ydFBhdGhMaXN0PWZ1bmN0aW9uKCl7dmFyIHQ9W107ZG8gdC5wdXNoKHRoaXMuRXhwb3J0UGF0aCgpKTt3aGlsZSh0aGlzLm1hdGNoKENPTU1BKSk7cmV0dXJuIHR9LFBwLkZ1bmN0aW9uRGVmaW5pdGlvbj1mdW5jdGlvbih0LG4scil7dmFyIGkscz10aGlzLm5ld05vZGUoe3BhcmFtczpbXSxwYXJhbUNvbW1lbnRzOltdfSk7dHlwZW9mIHI9PSJ1bmRlZmluZWQiJiYocj1udWxsKSxzLmJsb2NrQ29tbWVudHM9cixzLnR5cGUhPT1GVU5DVElPTiYmKHMudHlwZT1zLnZhbHVlPT09ImdldCI/R0VUVEVSOlNFVFRFUiksdGhpcy5tYXRjaChNVUwpJiYocy5pc0V4cGxpY2l0R2VuZXJhdG9yPSEwKSx0aGlzLm1hdGNoKElERU5USUZJRVIsITEsITApP3MubmFtZT10aGlzLnQudG9rZW4udmFsdWU6dCYmdGhpcy5mYWlsKCJtaXNzaW5nIGZ1bmN0aW9uIGlkZW50aWZpZXIiKTt2YXIgbz10aGlzLnguaW5Nb2R1bGU7eDI9bmV3IFN0YXRpY0NvbnRleHQobnVsbCxudWxsLG8sITAsdGhpcy54LnN0cmljdE1vZGUpLHRoaXMud2l0aENvbnRleHQoeDIsZnVuY3Rpb24oKXt0aGlzLm11c3RNYXRjaChMRUZUX1BBUkVOKTtpZighdGhpcy5tYXRjaChSSUdIVF9QQVJFTikpe2Rve2k9dGhpcy50LmdldCgpLHMucGFyYW1Db21tZW50cy5wdXNoKHRoaXMudC5sYXN0QmxvY2tDb21tZW50KCkpO3N3aXRjaChpKXtjYXNlIExFRlRfQlJBQ0tFVDpjYXNlIExFRlRfQ1VSTFk6dGhpcy50LnVuZ2V0KCkscy5wYXJhbXMucHVzaCh0aGlzLkRlc3RydWN0dXJpbmdFeHByZXNzaW9uKCkpO2JyZWFrO2Nhc2UgSURFTlRJRklFUjpzLnBhcmFtcy5wdXNoKHRoaXMudC50b2tlbi52YWx1ZSk7YnJlYWs7ZGVmYXVsdDp0aGlzLmZhaWwoIm1pc3NpbmcgZm9ybWFsIHBhcmFtZXRlciIpfX13aGlsZSh0aGlzLm1hdGNoKENPTU1BKSk7dGhpcy5tdXN0TWF0Y2goUklHSFRfUEFSRU4pfWk9dGhpcy50LmdldCghMCksaSE9PUxFRlRfQ1VSTFkmJnRoaXMudC51bmdldCgpLGkhPT1MRUZUX0NVUkxZP3MuYm9keT10aGlzLkFzc2lnbkV4cHJlc3Npb24oKTpzLmJvZHk9dGhpcy5TY3JpcHQobywhMCl9KSxpPT09TEVGVF9DVVJMWSYmdGhpcy5tdXN0TWF0Y2goUklHSFRfQ1VSTFkpLHMuZW5kPXRoaXMudC50b2tlbi5lbmQscy5mdW5jdGlvbkZvcm09bixuPT09REVDTEFSRURfRk9STSYmdGhpcy54LnBhcmVudFNjcmlwdC5mdW5EZWNscy5wdXNoKHMpLHRoaXMueC5pbk1vZHVsZSYmIXMuaXNFeHBsaWNpdEdlbmVyYXRvciYmcy5ib2R5Lmhhc1lpZWxkJiZ0aGlzLmZhaWwoInlpZWxkIGluIG5vbi1nZW5lcmF0b3IgZnVuY3Rpb24iKTtpZihzLmlzRXhwbGljaXRHZW5lcmF0b3J8fHMuYm9keS5oYXNZaWVsZClzLmJvZHk9dGhpcy5uZXdOb2RlKHt0eXBlOkdFTkVSQVRPUixib2R5OnMuYm9keX0pO3JldHVybiBzfSxQcC5Nb2R1bGVWYXJpYWJsZXM9ZnVuY3Rpb24odCl7dmFyIG4scjtkbyBuPXRoaXMuSWRlbnRpZmllcigpLHRoaXMubWF0Y2goQVNTSUdOKSYmKHI9dGhpcy5Nb2R1bGVFeHByZXNzaW9uKCksbi5pbml0aWFsaXplcj1yLHIudHlwZT09PVNUUklORz90aGlzLngucGFyZW50U2NyaXB0Lm1vZExvYWRzLnNldChuLnZhbHVlLHIudmFsdWUpOnRoaXMueC5wYXJlbnRTY3JpcHQubW9kQXNzbnMuc2V0KG4udmFsdWUsbikpLHQucHVzaChuKTt3aGlsZSh0aGlzLm1hdGNoKENPTU1BKSl9LFBwLlZhcmlhYmxlcz1mdW5jdGlvbih0KXt2YXIgbixyLGkscyxvLHU7dT10aGlzLnQudG9rZW4udHlwZTtzd2l0Y2godSl7Y2FzZSBWQVI6Y2FzZSBDT05TVDpvPXRoaXMueC5wYXJlbnRTY3JpcHQ7YnJlYWs7Y2FzZSBMRVQ6bz10aGlzLngucGFyZW50QmxvY2s7YnJlYWs7Y2FzZSBMRUZUX1BBUkVOOnU9TEVULG89dH1uPXRoaXMubmV3Tm9kZSh7dHlwZTp1LGRlc3RydWN0dXJpbmdzOltdfSk7ZG97dT10aGlzLnQuZ2V0KCk7aWYodT09PUxFRlRfQlJBQ0tFVHx8dT09PUxFRlRfQ1VSTFkpe3RoaXMudC51bmdldCgpO3ZhciBhPXRoaXMuRGVzdHJ1Y3R1cmluZ0V4cHJlc3Npb24oITApO3I9dGhpcy5uZXdOb2RlKHt0eXBlOklERU5USUZJRVIsbmFtZTphLHJlYWRPbmx5Om4udHlwZT09PUNPTlNUfSksbi5wdXNoKHIpLHB1c2hEZXN0cnVjdHVyaW5nVmFyRGVjbHMoci5uYW1lLmRlc3RydWN0dXJlZE5hbWVzLG8pLG4uZGVzdHJ1Y3R1cmluZ3MucHVzaCh7ZXhwOmEsZGVjbDpyfSk7aWYodGhpcy54LmluRm9yTG9vcEluaXQmJnRoaXMucGVlaygpPT09SU4pY29udGludWU7dGhpcy5tdXN0TWF0Y2goQVNTSUdOKSx0aGlzLnQudG9rZW4uYXNzaWduT3AmJnRoaXMuZmFpbCgiSW52YWxpZCB2YXJpYWJsZSBpbml0aWFsaXphdGlvbiIpLHIuYmxvY2tDb21tZW50PXRoaXMudC5sYXN0QmxvY2tDb21tZW50KCksci5pbml0aWFsaXplcj10aGlzLkFzc2lnbkV4cHJlc3Npb24oKTtjb250aW51ZX11IT09SURFTlRJRklFUiYmdGhpcy5mYWlsKCJtaXNzaW5nIHZhcmlhYmxlIG5hbWUiKSxyPXRoaXMubmV3Tm9kZSh7dHlwZTpJREVOVElGSUVSLG5hbWU6dGhpcy50LnRva2VuLnZhbHVlLHJlYWRPbmx5Om4udHlwZT09PUNPTlNUfSksbi5wdXNoKHIpLG8udmFyRGVjbHMucHVzaChyKTtpZih0aGlzLm1hdGNoKEFTU0lHTikpe3ZhciBmPXRoaXMudC5sYXN0QmxvY2tDb21tZW50KCk7dGhpcy50LnRva2VuLmFzc2lnbk9wJiZ0aGlzLmZhaWwoIkludmFsaWQgdmFyaWFibGUgaW5pdGlhbGl6YXRpb24iKSxyLmluaXRpYWxpemVyPXRoaXMuQXNzaWduRXhwcmVzc2lvbigpfWVsc2UgdmFyIGY9dGhpcy50Lmxhc3RCbG9ja0NvbW1lbnQoKTtyLmJsb2NrQ29tbWVudD1mfXdoaWxlKHRoaXMubWF0Y2goQ09NTUEpKTtyZXR1cm4gbn0sUHAuTGV0QmxvY2s9ZnVuY3Rpb24odCl7dmFyIG4scjtyZXR1cm4gbj10aGlzLm5ld05vZGUoe3R5cGU6TEVUX0JMT0NLLHZhckRlY2xzOltdfSksdGhpcy5tdXN0TWF0Y2goTEVGVF9QQVJFTiksbi52YXJpYWJsZXM9dGhpcy5WYXJpYWJsZXMobiksdGhpcy5tdXN0TWF0Y2goUklHSFRfUEFSRU4pLHQmJnRoaXMucGVlaygpIT09TEVGVF9DVVJMWSYmKHI9dGhpcy5uZXdOb2RlKHt0eXBlOlNFTUlDT0xPTixleHByZXNzaW9uOm59KSx0PSExKSx0P24uYmxvY2s9dGhpcy5CbG9jaygpOm4uZXhwcmVzc2lvbj10aGlzLkFzc2lnbkV4cHJlc3Npb24oKSxufSxQcC5jaGVja0Rlc3RydWN0dXJpbmc9ZnVuY3Rpb24odCxuKXt0LnR5cGU9PT1BUlJBWV9DT01QJiZ0aGlzLmZhaWwoIkludmFsaWQgYXJyYXkgY29tcHJlaGVuc2lvbiBsZWZ0LWhhbmQgc2lkZSIpO2lmKHQudHlwZSE9PUFSUkFZX0lOSVQmJnQudHlwZSE9PU9CSkVDVF9JTklUKXJldHVybjt2YXIgcj17fSxpLHMsbyx1LGEsZj10LmNoaWxkcmVuO2Zvcih2YXIgbD0wLGM9Zi5sZW5ndGg7bDxjO2wrKyl7aWYoIShpPWZbbF0pKWNvbnRpbnVlO2kudHlwZT09PVBST1BFUlRZX0lOSVQ/KGE9aS5jaGlsZHJlbix1PWFbMV0sbz1hWzBdLnZhbHVlKTp0LnR5cGU9PT1PQkpFQ1RfSU5JVD8odT1pLG89aS52YWx1ZSk6KHU9aSxvPWwpLHUudHlwZT09PUFSUkFZX0lOSVR8fHUudHlwZT09PU9CSkVDVF9JTklUP3Jbb109dGhpcy5jaGVja0Rlc3RydWN0dXJpbmcodSxuKToobiYmdS50eXBlIT09SURFTlRJRklFUiYmdGhpcy5mYWlsKCJtaXNzaW5nIG5hbWUgaW4gcGF0dGVybiIpLHJbb109dSl9cmV0dXJuIHJ9LFBwLkRlc3RydWN0dXJpbmdFeHByZXNzaW9uPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuUHJpbWFyeUV4cHJlc3Npb24oKTtyZXR1cm4gbi5kZXN0cnVjdHVyZWROYW1lcz10aGlzLmNoZWNrRGVzdHJ1Y3R1cmluZyhuLHQpLG59LFBwLkdlbmVyYXRvckV4cHJlc3Npb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubmV3Tm9kZSh7dHlwZTpHRU5FUkFUT1IsZXhwcmVzc2lvbjp0LHRhaWw6dGhpcy5Db21wcmVoZW5zaW9uVGFpbCgpfSl9LFBwLkNvbXByZWhlbnNpb25UYWlsPWZ1bmN0aW9uKCl7dmFyIHQsbixyLGksczt0PXRoaXMubmV3Tm9kZSh7dHlwZTpDT01QX1RBSUx9KTtkb3tuPXRoaXMubmV3Tm9kZSh7dHlwZTpGT1JfSU4saXNMb29wOiEwfSksdGhpcy5tYXRjaChJREVOVElGSUVSKSYmKHRoaXMubW96aWxsYU1vZGUmJnRoaXMudC50b2tlbi52YWx1ZT09PSJlYWNoIj9uLmlzRWFjaD0hMDp0aGlzLnQudW5nZXQoKSkscz10aGlzLk1heWJlTGVmdFBhcmVuKCk7c3dpdGNoKHRoaXMudC5nZXQoKSl7Y2FzZSBMRUZUX0JSQUNLRVQ6Y2FzZSBMRUZUX0NVUkxZOnRoaXMudC51bmdldCgpLG4uaXRlcmF0b3I9dGhpcy5EZXN0cnVjdHVyaW5nRXhwcmVzc2lvbigpO2JyZWFrO2Nhc2UgSURFTlRJRklFUjpuLml0ZXJhdG9yPWk9dGhpcy5uZXdOb2RlKHt0eXBlOklERU5USUZJRVJ9KSxpLm5hbWU9aS52YWx1ZSxuLnZhckRlY2w9cj10aGlzLm5ld05vZGUoe3R5cGU6VkFSfSksci5wdXNoKGkpLHRoaXMueC5wYXJlbnRTY3JpcHQudmFyRGVjbHMucHVzaChpKTticmVhaztkZWZhdWx0OnRoaXMuZmFpbCgibWlzc2luZyBpZGVudGlmaWVyIil9dGhpcy5tdXN0TWF0Y2goSU4pLG4ub2JqZWN0PXRoaXMuRXhwcmVzc2lvbigpLHRoaXMuTWF5YmVSaWdodFBhcmVuKHMpLHQucHVzaChuKX13aGlsZSh0aGlzLm1hdGNoKEZPUikpO3JldHVybiB0aGlzLm1hdGNoKElGKSYmKHQuZ3VhcmQ9dGhpcy5IZWFkRXhwcmVzc2lvbigpKSx0fSxQcC5IZWFkRXhwcmVzc2lvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuTWF5YmVMZWZ0UGFyZW4oKSxuPXRoaXMuUGFyZW5FeHByZXNzaW9uKCk7dGhpcy5NYXliZVJpZ2h0UGFyZW4odCk7aWYodD09PUVORCYmIW4ucGFyZW50aGVzaXplZCl7dmFyIHI9dGhpcy5wZWVrKCk7ciE9PUxFRlRfQ1VSTFkmJiFkZWZpbml0aW9ucy5pc1N0YXRlbWVudFN0YXJ0Q29kZVtyXSYmdGhpcy5mYWlsKCJVbnBhcmVudGhlc2l6ZWQgaGVhZCBmb2xsb3dlZCBieSB1bmJyYWNlZCBib2R5Iil9cmV0dXJuIG59LFBwLlBhcmVuRXhwcmVzc2lvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMueC51cGRhdGUoe2luRm9yTG9vcEluaXQ6dGhpcy54LmluRm9yTG9vcEluaXQmJnRoaXMudC50b2tlbi50eXBlPT09TEVGVF9QQVJFTn0pLG49dGhpcy53aXRoQ29udGV4dCh0LGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRXhwcmVzc2lvbigpfSk7cmV0dXJuIHRoaXMubWF0Y2goRk9SKSYmKG4udHlwZT09PVlJRUxEJiYhbi5wYXJlbnRoZXNpemVkJiZ0aGlzLmZhaWwoIllpZWxkIGV4cHJlc3Npb24gbXVzdCBiZSBwYXJlbnRoZXNpemVkIiksbi50eXBlPT09Q09NTUEmJiFuLnBhcmVudGhlc2l6ZWQmJnRoaXMuZmFpbCgiR2VuZXJhdG9yIGV4cHJlc3Npb24gbXVzdCBiZSBwYXJlbnRoZXNpemVkIiksbj10aGlzLkdlbmVyYXRvckV4cHJlc3Npb24obikpLG59LFBwLkV4cHJlc3Npb249ZnVuY3Rpb24oKXt2YXIgdCxuO3Q9dGhpcy5Bc3NpZ25FeHByZXNzaW9uKCk7aWYodGhpcy5tYXRjaChDT01NQSkpe249dGhpcy5uZXdOb2RlKHt0eXBlOkNPTU1BfSksbi5wdXNoKHQpLHQ9bjtkbyBuPXQuY2hpbGRyZW5bdC5jaGlsZHJlbi5sZW5ndGgtMV0sbi50eXBlPT09WUlFTEQmJiFuLnBhcmVudGhlc2l6ZWQmJnRoaXMuZmFpbCgiWWllbGQgZXhwcmVzc2lvbiBtdXN0IGJlIHBhcmVudGhlc2l6ZWQiKSx0LnB1c2godGhpcy5Bc3NpZ25FeHByZXNzaW9uKCkpO3doaWxlKHRoaXMubWF0Y2goQ09NTUEpKX1yZXR1cm4gdH0sUHAuQXNzaWduRXhwcmVzc2lvbj1mdW5jdGlvbigpe3ZhciB0LG47aWYodGhpcy5tYXRjaChZSUVMRCwhMCkpcmV0dXJuIHRoaXMuUmV0dXJuT3JZaWVsZCgpO3Q9dGhpcy5uZXdOb2RlKHt0eXBlOkFTU0lHTn0pLG49dGhpcy5Db25kaXRpb25hbEV4cHJlc3Npb24oKTtpZighdGhpcy5tYXRjaChBU1NJR04pKXJldHVybiBuO3QuYmxvY2tDb21tZW50PXRoaXMudC5sYXN0QmxvY2tDb21tZW50KCk7c3dpdGNoKG4udHlwZSl7Y2FzZSBPQkpFQ1RfSU5JVDpjYXNlIEFSUkFZX0lOSVQ6bi5kZXN0cnVjdHVyZWROYW1lcz10aGlzLmNoZWNrRGVzdHJ1Y3R1cmluZyhuKTtjYXNlIElERU5USUZJRVI6Y2FzZSBET1Q6Y2FzZSBJTkRFWDpjYXNlIENBTEw6YnJlYWs7ZGVmYXVsdDp0aGlzLmZhaWwoIkJhZCBsZWZ0LWhhbmQgc2lkZSBvZiBhc3NpZ25tZW50Iil9cmV0dXJuIHQuYXNzaWduT3A9bi5hc3NpZ25PcD10aGlzLnQudG9rZW4uYXNzaWduT3AsdC5wdXNoKG4pLHQucHVzaCh0aGlzLkFzc2lnbkV4cHJlc3Npb24oKSksdH0sUHAuQ29uZGl0aW9uYWxFeHByZXNzaW9uPWZ1bmN0aW9uKCl7dmFyIHQsbjt0PXRoaXMuT3JFeHByZXNzaW9uKCk7aWYodGhpcy5tYXRjaChIT09LKSl7bj10LHQ9dGhpcy5uZXdOb2RlKHt0eXBlOkhPT0t9KSx0LnB1c2gobik7dmFyIHI9dGhpcy54LnVwZGF0ZSh7aW5Gb3JMb29wSW5pdDohMX0pO3RoaXMud2l0aENvbnRleHQocixmdW5jdGlvbigpe3QucHVzaCh0aGlzLkFzc2lnbkV4cHJlc3Npb24oKSl9KSx0aGlzLm1hdGNoKENPTE9OKXx8dGhpcy5mYWlsKCJtaXNzaW5nIDogYWZ0ZXIgPyIpLHQucHVzaCh0aGlzLkFzc2lnbkV4cHJlc3Npb24oKSl9cmV0dXJuIHR9LFBwLk9yRXhwcmVzc2lvbj1mdW5jdGlvbigpe3ZhciB0LG47dD10aGlzLkFuZEV4cHJlc3Npb24oKTt3aGlsZSh0aGlzLm1hdGNoKE9SKSluPXRoaXMubmV3Tm9kZSgpLG4ucHVzaCh0KSxuLnB1c2godGhpcy5BbmRFeHByZXNzaW9uKCkpLHQ9bjtyZXR1cm4gdH0sUHAuQW5kRXhwcmVzc2lvbj1mdW5jdGlvbigpe3ZhciB0LG47dD10aGlzLkJpdHdpc2VPckV4cHJlc3Npb24oKTt3aGlsZSh0aGlzLm1hdGNoKEFORCkpbj10aGlzLm5ld05vZGUoKSxuLnB1c2godCksbi5wdXNoKHRoaXMuQml0d2lzZU9yRXhwcmVzc2lvbigpKSx0PW47cmV0dXJuIHR9LFBwLkJpdHdpc2VPckV4cHJlc3Npb249ZnVuY3Rpb24oKXt2YXIgdCxuO3Q9dGhpcy5CaXR3aXNlWG9yRXhwcmVzc2lvbigpO3doaWxlKHRoaXMubWF0Y2goQklUV0lTRV9PUikpbj10aGlzLm5ld05vZGUoKSxuLnB1c2godCksbi5wdXNoKHRoaXMuQml0d2lzZVhvckV4cHJlc3Npb24oKSksdD1uO3JldHVybiB0fSxQcC5CaXR3aXNlWG9yRXhwcmVzc2lvbj1mdW5jdGlvbigpe3ZhciB0LG47dD10aGlzLkJpdHdpc2VBbmRFeHByZXNzaW9uKCk7d2hpbGUodGhpcy5tYXRjaChCSVRXSVNFX1hPUikpbj10aGlzLm5ld05vZGUoKSxuLnB1c2godCksbi5wdXNoKHRoaXMuQml0d2lzZUFuZEV4cHJlc3Npb24oKSksdD1uO3JldHVybiB0fSxQcC5CaXR3aXNlQW5kRXhwcmVzc2lvbj1mdW5jdGlvbigpe3ZhciB0LG47dD10aGlzLkVxdWFsaXR5RXhwcmVzc2lvbigpO3doaWxlKHRoaXMubWF0Y2goQklUV0lTRV9BTkQpKW49dGhpcy5uZXdOb2RlKCksbi5wdXNoKHQpLG4ucHVzaCh0aGlzLkVxdWFsaXR5RXhwcmVzc2lvbigpKSx0PW47cmV0dXJuIHR9LFBwLkVxdWFsaXR5RXhwcmVzc2lvbj1mdW5jdGlvbigpe3ZhciB0LG47dD10aGlzLlJlbGF0aW9uYWxFeHByZXNzaW9uKCk7d2hpbGUodGhpcy5tYXRjaChFUSl8fHRoaXMubWF0Y2goTkUpfHx0aGlzLm1hdGNoKFNUUklDVF9FUSl8fHRoaXMubWF0Y2goU1RSSUNUX05FKSluPXRoaXMubmV3Tm9kZSgpLG4ucHVzaCh0KSxuLnB1c2godGhpcy5SZWxhdGlvbmFsRXhwcmVzc2lvbigpKSx0PW47cmV0dXJuIHR9LFBwLlJlbGF0aW9uYWxFeHByZXNzaW9uPWZ1bmN0aW9uKCl7dmFyIHQsbixyPXRoaXMueC51cGRhdGUoe2luRm9yTG9vcEluaXQ6ITF9KTtyZXR1cm4gdGhpcy53aXRoQ29udGV4dChyLGZ1bmN0aW9uKCl7dD10aGlzLlNoaWZ0RXhwcmVzc2lvbigpO3doaWxlKHRoaXMubWF0Y2goTFQpfHx0aGlzLm1hdGNoKExFKXx8dGhpcy5tYXRjaChHRSl8fHRoaXMubWF0Y2goR1QpfHwhdGhpcy54LmluRm9yTG9vcEluaXQmJnRoaXMubWF0Y2goSU4pfHx0aGlzLm1hdGNoKElOU1RBTkNFT0YpKW49dGhpcy5uZXdOb2RlKCksbi5wdXNoKHQpLG4ucHVzaCh0aGlzLlNoaWZ0RXhwcmVzc2lvbigpKSx0PW59KSx0fSxQcC5TaGlmdEV4cHJlc3Npb249ZnVuY3Rpb24oKXt2YXIgdCxuO3Q9dGhpcy5BZGRFeHByZXNzaW9uKCk7d2hpbGUodGhpcy5tYXRjaChMU0gpfHx0aGlzLm1hdGNoKFJTSCl8fHRoaXMubWF0Y2goVVJTSCkpbj10aGlzLm5ld05vZGUoKSxuLnB1c2godCksbi5wdXNoKHRoaXMuQWRkRXhwcmVzc2lvbigpKSx0PW47cmV0dXJuIHR9LFBwLkFkZEV4cHJlc3Npb249ZnVuY3Rpb24oKXt2YXIgdCxuO3Q9dGhpcy5NdWx0aXBseUV4cHJlc3Npb24oKTt3aGlsZSh0aGlzLm1hdGNoKFBMVVMpfHx0aGlzLm1hdGNoKE1JTlVTKSluPXRoaXMubmV3Tm9kZSgpLG4ucHVzaCh0KSxuLnB1c2godGhpcy5NdWx0aXBseUV4cHJlc3Npb24oKSksdD1uO3JldHVybiB0fSxQcC5NdWx0aXBseUV4cHJlc3Npb249ZnVuY3Rpb24oKXt2YXIgdCxuO3Q9dGhpcy5VbmFyeUV4cHJlc3Npb24oKTt3aGlsZSh0aGlzLm1hdGNoKE1VTCl8fHRoaXMubWF0Y2goRElWKXx8dGhpcy5tYXRjaChNT0QpKW49dGhpcy5uZXdOb2RlKCksbi5wdXNoKHQpLG4ucHVzaCh0aGlzLlVuYXJ5RXhwcmVzc2lvbigpKSx0PW47cmV0dXJuIHR9LFBwLlVuYXJ5RXhwcmVzc2lvbj1mdW5jdGlvbigpe3ZhciB0LG4scjtzd2l0Y2gocj10aGlzLnQuZ2V0KCEwKSl7Y2FzZSBERUxFVEU6Y2FzZSBWT0lEOmNhc2UgVFlQRU9GOmNhc2UgTk9UOmNhc2UgQklUV0lTRV9OT1Q6Y2FzZSBQTFVTOmNhc2UgTUlOVVM6cj09PVBMVVM/dD10aGlzLm5ld05vZGUoe3R5cGU6VU5BUllfUExVU30pOnI9PT1NSU5VUz90PXRoaXMubmV3Tm9kZSh7dHlwZTpVTkFSWV9NSU5VU30pOnQ9dGhpcy5uZXdOb2RlKCksdC5wdXNoKHRoaXMuVW5hcnlFeHByZXNzaW9uKCkpO2JyZWFrO2Nhc2UgSU5DUkVNRU5UOmNhc2UgREVDUkVNRU5UOnQ9dGhpcy5uZXdOb2RlKCksdC5wdXNoKHRoaXMuTWVtYmVyRXhwcmVzc2lvbighMCkpO2JyZWFrO2RlZmF1bHQ6dGhpcy50LnVuZ2V0KCksdD10aGlzLk1lbWJlckV4cHJlc3Npb24oITApLHRoaXMudC50b2tlbnNbdGhpcy50LnRva2VuSW5kZXgrdGhpcy50Lmxvb2thaGVhZC0xJjNdLmxpbmVubz09PXRoaXMudC5saW5lbm8mJih0aGlzLm1hdGNoKElOQ1JFTUVOVCl8fHRoaXMubWF0Y2goREVDUkVNRU5UKSkmJihuPXRoaXMubmV3Tm9kZSh7cG9zdGZpeDohMH0pLG4ucHVzaCh0KSx0PW4pfXJldHVybiB0fSxQcC5NZW1iZXJFeHByZXNzaW9uPWZ1bmN0aW9uKHQpe3ZhciBuLHIsaSxzO3RoaXMubWF0Y2goTkVXKT8obj10aGlzLm5ld05vZGUoKSxuLnB1c2godGhpcy5NZW1iZXJFeHByZXNzaW9uKCExKSksdGhpcy5tYXRjaChMRUZUX1BBUkVOKSYmKG4udHlwZT1ORVdfV0lUSF9BUkdTLG4ucHVzaCh0aGlzLkFyZ3VtZW50TGlzdCgpKSkpOm49dGhpcy5QcmltYXJ5RXhwcmVzc2lvbigpO3doaWxlKChzPXRoaXMudC5nZXQoKSkhPT1FTkQpe3N3aXRjaChzKXtjYXNlIERPVDpyPXRoaXMubmV3Tm9kZSgpLHIucHVzaChuKSxyLnB1c2godGhpcy5JZGVudGlmaWVyTmFtZSgpKTticmVhaztjYXNlIExFRlRfQlJBQ0tFVDpyPXRoaXMubmV3Tm9kZSh7dHlwZTpJTkRFWH0pLHIucHVzaChuKSxyLnB1c2godGhpcy5FeHByZXNzaW9uKCkpLHRoaXMubXVzdE1hdGNoKFJJR0hUX0JSQUNLRVQpO2JyZWFrO2Nhc2UgTEVGVF9QQVJFTjppZih0KXtyPXRoaXMubmV3Tm9kZSh7dHlwZTpDQUxMfSksci5wdXNoKG4pLHIucHVzaCh0aGlzLkFyZ3VtZW50TGlzdCgpKTticmVha307ZGVmYXVsdDpyZXR1cm4gdGhpcy50LnVuZ2V0KCksbn1uPXJ9cmV0dXJuIG59LFBwLkFyZ3VtZW50TGlzdD1mdW5jdGlvbigpe3ZhciB0LG47dD10aGlzLm5ld05vZGUoe3R5cGU6TElTVH0pO2lmKHRoaXMubWF0Y2goUklHSFRfUEFSRU4sITApKXJldHVybiB0O2RvIG49dGhpcy5Bc3NpZ25FeHByZXNzaW9uKCksbi50eXBlPT09WUlFTEQmJiFuLnBhcmVudGhlc2l6ZWQmJnRoaXMucGVlaygpPT09Q09NTUEmJnRoaXMuZmFpbCgiWWllbGQgZXhwcmVzc2lvbiBtdXN0IGJlIHBhcmVudGhlc2l6ZWQiKSx0aGlzLm1hdGNoKEZPUikmJihuPXRoaXMuR2VuZXJhdG9yRXhwcmVzc2lvbihuKSwodC5jaGlsZHJlbi5sZW5ndGg+MXx8dGhpcy5wZWVrKCEwKT09PUNPTU1BKSYmdGhpcy5mYWlsKCJHZW5lcmF0b3IgZXhwcmVzc2lvbiBtdXN0IGJlIHBhcmVudGhlc2l6ZWQiKSksdC5wdXNoKG4pO3doaWxlKHRoaXMubWF0Y2goQ09NTUEpKTtyZXR1cm4gdGhpcy5tdXN0TWF0Y2goUklHSFRfUEFSRU4pLHR9LFBwLlByaW1hcnlFeHByZXNzaW9uPWZ1bmN0aW9uKCl7dmFyIHQsbixyPXRoaXMudC5nZXQoITApO3N3aXRjaChyKXtjYXNlIEZVTkNUSU9OOnQ9dGhpcy5GdW5jdGlvbkRlZmluaXRpb24oITEsRVhQUkVTU0VEX0ZPUk0pO2JyZWFrO2Nhc2UgTEVGVF9CUkFDS0VUOnQ9dGhpcy5uZXdOb2RlKHt0eXBlOkFSUkFZX0lOSVR9KTt3aGlsZSgocj10aGlzLnBlZWsoITApKSE9PVJJR0hUX0JSQUNLRVQpe2lmKHI9PT1DT01NQSl7dGhpcy50LmdldCgpLHQucHVzaChudWxsKTtjb250aW51ZX10LnB1c2godGhpcy5Bc3NpZ25FeHByZXNzaW9uKCkpO2lmKHIhPT1DT01NQSYmIXRoaXMubWF0Y2goQ09NTUEpKWJyZWFrfXQuY2hpbGRyZW4ubGVuZ3RoPT09MSYmdGhpcy5tYXRjaChGT1IpJiYobj10aGlzLm5ld05vZGUoe3R5cGU6QVJSQVlfQ09NUCxleHByZXNzaW9uOnQuY2hpbGRyZW5bMF0sdGFpbDp0aGlzLkNvbXByZWhlbnNpb25UYWlsKCl9KSx0PW4pLHRoaXMubXVzdE1hdGNoKFJJR0hUX0JSQUNLRVQpO2JyZWFrO2Nhc2UgTEVGVF9DVVJMWTp2YXIgaSxzO3Q9dGhpcy5uZXdOb2RlKHt0eXBlOk9CSkVDVF9JTklUfSk7ZTppZighdGhpcy5tYXRjaChSSUdIVF9DVVJMWSkpe2Rve3I9dGhpcy50LmdldCgpO2lmKHRoaXMudC50b2tlbi52YWx1ZSE9PSJnZXQiJiZ0aGlzLnQudG9rZW4udmFsdWUhPT0ic2V0Inx8dGhpcy5wZWVrKCkhPT1JREVOVElGSUVSKXt2YXIgbz10aGlzLnQuYmxvY2tDb21tZW50cztzd2l0Y2gocil7Y2FzZSBJREVOVElGSUVSOmNhc2UgTlVNQkVSOmNhc2UgU1RSSU5HOmk9dGhpcy5uZXdOb2RlKHt0eXBlOklERU5USUZJRVJ9KTticmVhaztjYXNlIFJJR0hUX0NVUkxZOmJyZWFrIGU7ZGVmYXVsdDppZih0aGlzLnQudG9rZW4udmFsdWUgaW4gZGVmaW5pdGlvbnMua2V5d29yZHMpe2k9dGhpcy5uZXdOb2RlKHt0eXBlOklERU5USUZJRVJ9KTticmVha310aGlzLmZhaWwoIkludmFsaWQgcHJvcGVydHkgbmFtZSIpfXRoaXMubWF0Y2goQ09MT04pPyhuPXRoaXMubmV3Tm9kZSh7dHlwZTpQUk9QRVJUWV9JTklUfSksbi5wdXNoKGkpLG4ucHVzaCh0aGlzLkFzc2lnbkV4cHJlc3Npb24oKSksbi5ibG9ja0NvbW1lbnRzPW8sdC5wdXNoKG4pKToodGhpcy5wZWVrKCkhPT1DT01NQSYmdGhpcy5wZWVrKCkhPT1SSUdIVF9DVVJMWSYmdGhpcy5mYWlsKCJtaXNzaW5nIDogYWZ0ZXIgcHJvcGVydHkiKSx0LnB1c2goaSkpfWVsc2UgdC5wdXNoKHRoaXMuRnVuY3Rpb25EZWZpbml0aW9uKCEwLEVYUFJFU1NFRF9GT1JNKSl9d2hpbGUodGhpcy5tYXRjaChDT01NQSkpO3RoaXMubXVzdE1hdGNoKFJJR0hUX0NVUkxZKX1icmVhaztjYXNlIExFRlRfUEFSRU46dD10aGlzLlBhcmVuRXhwcmVzc2lvbigpLHRoaXMubXVzdE1hdGNoKFJJR0hUX1BBUkVOKSx0LnBhcmVudGhlc2l6ZWQ9ITA7YnJlYWs7Y2FzZSBMRVQ6dD10aGlzLkxldEJsb2NrKCExKTticmVhaztjYXNlIE5VTEw6Y2FzZSBUSElTOmNhc2UgVFJVRTpjYXNlIEZBTFNFOmNhc2UgSURFTlRJRklFUjpjYXNlIE5VTUJFUjpjYXNlIFNUUklORzpjYXNlIFJFR0VYUDp0PXRoaXMubmV3Tm9kZSgpO2JyZWFrO2RlZmF1bHQ6dGhpcy5mYWlsKCJtaXNzaW5nIG9wZXJhbmQ7IGZvdW5kICIrZGVmaW5pdGlvbnMudG9rZW5zW3JdKX1yZXR1cm4gdH0sZXhwb3J0cy5wYXJzZT1wYXJzZSxleHBvcnRzLnBhcnNlU3RkaW49cGFyc2VTdGRpbixleHBvcnRzLnBhcnNlRnVuY3Rpb249cGFyc2VGdW5jdGlvbixleHBvcnRzLk5vZGU9Tm9kZSxleHBvcnRzLkRFQ0xBUkVEX0ZPUk09REVDTEFSRURfRk9STSxleHBvcnRzLkVYUFJFU1NFRF9GT1JNPUVYUFJFU1NFRF9GT1JNLGV4cG9ydHMuU1RBVEVNRU5UX0ZPUk09U1RBVEVNRU5UX0ZPUk0sZXhwb3J0cy5Ub2tlbml6ZXI9VG9rZW5pemVyLGV4cG9ydHMuUGFyc2VyPVBhcnNlcixleHBvcnRzLk1vZHVsZT1Nb2R1bGUsZXhwb3J0cy5FeHBvcnQ9RXhwb3J0fSksZGVmaW5lKCJhY2UvbmFyY2lzc3VzL2xleGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL25hcmNpc3N1cy9kZWZpbml0aW9ucyJdLGZ1bmN0aW9uKHJlcXVpcmUsZXhwb3J0cyxtb2R1bGUpe2Z1bmN0aW9uIGlzVmFsaWRJZGVudGlmaWVyQ2hhcihlLHQpe2lmKGU8PSJ/IilyZXR1cm4gZT49ImEiJiZlPD0ieiJ8fGU+PSJBIiYmZTw9IloifHxlPT09IiQifHxlPT09Il8ifHwhdCYmZT49IjAiJiZlPD0iOSI/ITA6ITE7dmFyIG49e307blsieCIrZV09ITAsbltlXT0hMDt2YXIgcj0hMTt0cnl7cj1GdW5jdGlvbigieCIsInJldHVybiAoeC4iKyh0PyIiOiJ4IikrZSsiKTsiKShuKT09PSEwfWNhdGNoKGkpe31yZXR1cm4gcn1mdW5jdGlvbiBpc0lkZW50aWZpZXIoZSl7aWYodHlwZW9mIGUhPSJzdHJpbmciKXJldHVybiExO2lmKGUubGVuZ3RoPT09MClyZXR1cm4hMTtpZighaXNWYWxpZElkZW50aWZpZXJDaGFyKGVbMF0sITApKXJldHVybiExO2Zvcih2YXIgdD0xO3Q8ZS5sZW5ndGg7dCsrKWlmKCFpc1ZhbGlkSWRlbnRpZmllckNoYXIoZVt0XSwhMSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gVG9rZW5pemVyKGUsdCxuLHIpe3RoaXMuY3Vyc29yPTAsdGhpcy5zb3VyY2U9U3RyaW5nKGUpLHRoaXMudG9rZW5zPVtdLHRoaXMudG9rZW5JbmRleD0wLHRoaXMubG9va2FoZWFkPTAsdGhpcy5zY2FuTmV3bGluZXM9ITEsdGhpcy5maWxlbmFtZT10fHwiIix0aGlzLmxpbmVubz1ufHwxLHRoaXMuYWxsb3dIVE1MQ29tbWVudHM9cix0aGlzLmJsb2NrQ29tbWVudHM9bnVsbH12YXIgZGVmaW5pdGlvbnM9cmVxdWlyZSgiLi9kZWZpbml0aW9ucyIpO2V2YWwoZGVmaW5pdGlvbnMuY29uc3RzKTt2YXIgb3BUb2tlbnM9e307Zm9yKHZhciBvcCBpbiBkZWZpbml0aW9ucy5vcFR5cGVOYW1lcyl7aWYob3A9PT0iXG4ifHxvcD09PSIuIiljb250aW51ZTt2YXIgbm9kZT1vcFRva2Vucztmb3IodmFyIGk9MDtpPG9wLmxlbmd0aDtpKyspe3ZhciBjaD1vcFtpXTtjaCBpbiBub2RlfHwobm9kZVtjaF09e30pLG5vZGU9bm9kZVtjaF0sbm9kZS5vcD1vcH19VG9rZW5pemVyLnByb3RvdHlwZT17Z2V0IGRvbmUoKXtyZXR1cm4gdGhpcy5wZWVrKCEwKT09PUVORH0sZ2V0IHRva2VuKCl7cmV0dXJuIHRoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleF19LG1hdGNoOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5nZXQodCxuKT09PWV8fHRoaXMudW5nZXQoKX0sbXVzdE1hdGNoOmZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMubWF0Y2goZSwhMSx0KSl0aHJvdyB0aGlzLm5ld1N5bnRheEVycm9yKCJNaXNzaW5nICIrZGVmaW5pdGlvbnMudG9rZW5zW2VdLnRvTG93ZXJDYXNlKCkpO3JldHVybiB0aGlzLnRva2VufSxwZWVrOmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuIHRoaXMubG9va2FoZWFkPyhuPXRoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleCt0aGlzLmxvb2thaGVhZCYzXSx0PXRoaXMuc2Nhbk5ld2xpbmVzJiZuLmxpbmVubyE9PXRoaXMubGluZW5vP05FV0xJTkU6bi50eXBlKToodD10aGlzLmdldChlKSx0aGlzLnVuZ2V0KCkpLHR9LHBlZWtPblNhbWVMaW5lOmZ1bmN0aW9uKGUpe3RoaXMuc2Nhbk5ld2xpbmVzPSEwO3ZhciB0PXRoaXMucGVlayhlKTtyZXR1cm4gdGhpcy5zY2FuTmV3bGluZXM9ITEsdH0sbGFzdEJsb2NrQ29tbWVudDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuYmxvY2tDb21tZW50cy5sZW5ndGg7cmV0dXJuIGU/dGhpcy5ibG9ja0NvbW1lbnRzW2UtMV06bnVsbH0sc2tpcDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc291cmNlO3RoaXMuYmxvY2tDb21tZW50cz1bXTtmb3IoOzspe3ZhciB0PWVbdGhpcy5jdXJzb3IrK10sbj1lW3RoaXMuY3Vyc29yXTtpZih0PT09IlxyIil7aWYobj09PSJcbiIpY29udGludWU7dD0iXG4ifWlmKHQ9PT0iXG4iJiYhdGhpcy5zY2FuTmV3bGluZXMpdGhpcy5saW5lbm8rKztlbHNlIGlmKHQ9PT0iLyImJm49PT0iKiIpe3ZhciByPSsrdGhpcy5jdXJzb3I7Zm9yKDs7KXt0PWVbdGhpcy5jdXJzb3IrK107aWYodD09PXVuZGVmaW5lZCl0aHJvdyB0aGlzLm5ld1N5bnRheEVycm9yKCJVbnRlcm1pbmF0ZWQgY29tbWVudCIpO2lmKHQ9PT0iKiIpe249ZVt0aGlzLmN1cnNvcl07aWYobj09PSIvIil7dmFyIGk9dGhpcy5jdXJzb3ItMTt0aGlzLmN1cnNvcisrO2JyZWFrfX1lbHNlIHQ9PT0iXG4iJiZ0aGlzLmxpbmVubysrfXRoaXMuYmxvY2tDb21tZW50cy5wdXNoKGUuc3Vic3RyaW5nKHIsaSkpfWVsc2UgaWYodD09PSIvIiYmbj09PSIvInx8dGhpcy5hbGxvd0hUTUxDb21tZW50cyYmdD09PSI8IiYmbj09PSIhIiYmZVt0aGlzLmN1cnNvcisxXT09PSItIiYmZVt0aGlzLmN1cnNvcisyXT09PSItIiYmKHRoaXMuY3Vyc29yKz0yKSl7dGhpcy5jdXJzb3IrKztmb3IoOzspe3Q9ZVt0aGlzLmN1cnNvcisrXSxuPWVbdGhpcy5jdXJzb3JdO2lmKHQ9PT11bmRlZmluZWQpcmV0dXJuO3Q9PT0iXHIiJiZuIT09IlxuIiYmKHQ9IlxuIik7aWYodD09PSJcbiIpe3RoaXMuc2Nhbk5ld2xpbmVzP3RoaXMuY3Vyc29yLS06dGhpcy5saW5lbm8rKzticmVha319fWVsc2UgaWYoISh0IGluIGRlZmluaXRpb25zLndoaXRlc3BhY2UpKXt0aGlzLmN1cnNvci0tO3JldHVybn19fSxsZXhFeHBvbmVudDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc291cmNlLHQ9ZVt0aGlzLmN1cnNvcl07aWYodD09PSJlInx8dD09PSJFIil7dGhpcy5jdXJzb3IrKyxjaD1lW3RoaXMuY3Vyc29yKytdO2lmKGNoPT09IisifHxjaD09PSItIiljaD1lW3RoaXMuY3Vyc29yKytdO2lmKGNoPCIwInx8Y2g+IjkiKXRocm93IHRoaXMubmV3U3ludGF4RXJyb3IoIk1pc3NpbmcgZXhwb25lbnQiKTtkbyBjaD1lW3RoaXMuY3Vyc29yKytdO3doaWxlKGNoPj0iMCImJmNoPD0iOSIpO3JldHVybiB0aGlzLmN1cnNvci0tLCEwfXJldHVybiExfSxsZXhaZXJvTnVtYmVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudG9rZW4sbj10aGlzLnNvdXJjZTt0LnR5cGU9TlVNQkVSLGU9blt0aGlzLmN1cnNvcisrXTtpZihlPT09Ii4iKXtkbyBlPW5bdGhpcy5jdXJzb3IrK107d2hpbGUoZT49IjAiJiZlPD0iOSIpO3RoaXMuY3Vyc29yLS0sdGhpcy5sZXhFeHBvbmVudCgpLHQudmFsdWU9cGFyc2VGbG9hdChuLnN1YnN0cmluZyh0LnN0YXJ0LHRoaXMuY3Vyc29yKSl9ZWxzZSBpZihlPT09IngifHxlPT09IlgiKXtkbyBlPW5bdGhpcy5jdXJzb3IrK107d2hpbGUoZT49IjAiJiZlPD0iOSJ8fGU+PSJhIiYmZTw9ImYifHxlPj0iQSImJmU8PSJGIik7dGhpcy5jdXJzb3ItLSx0LnZhbHVlPXBhcnNlSW50KG4uc3Vic3RyaW5nKHQuc3RhcnQsdGhpcy5jdXJzb3IpKX1lbHNlIGlmKGU+PSIwIiYmZTw9IjciKXtkbyBlPW5bdGhpcy5jdXJzb3IrK107d2hpbGUoZT49IjAiJiZlPD0iNyIpO3RoaXMuY3Vyc29yLS0sdC52YWx1ZT1wYXJzZUludChuLnN1YnN0cmluZyh0LnN0YXJ0LHRoaXMuY3Vyc29yKSl9ZWxzZSB0aGlzLmN1cnNvci0tLHRoaXMubGV4RXhwb25lbnQoKSx0LnZhbHVlPTB9LGxleE51bWJlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRva2VuLG49dGhpcy5zb3VyY2U7dC50eXBlPU5VTUJFUjt2YXIgcj0hMTtkbyBlPW5bdGhpcy5jdXJzb3IrK10sZT09PSIuIiYmIXImJihyPSEwLGU9blt0aGlzLmN1cnNvcisrXSk7d2hpbGUoZT49IjAiJiZlPD0iOSIpO3RoaXMuY3Vyc29yLS07dmFyIGk9dGhpcy5sZXhFeHBvbmVudCgpO3I9cnx8aTt2YXIgcz1uLnN1YnN0cmluZyh0LnN0YXJ0LHRoaXMuY3Vyc29yKTt0LnZhbHVlPXI/cGFyc2VGbG9hdChzKTpwYXJzZUludChzKX0sbGV4RG90OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudG9rZW4sbj10aGlzLnNvdXJjZSxyPW5bdGhpcy5jdXJzb3JdO2lmKHI+PSIwIiYmcjw9IjkiKXtkbyBlPW5bdGhpcy5jdXJzb3IrK107d2hpbGUoZT49IjAiJiZlPD0iOSIpO3RoaXMuY3Vyc29yLS0sdGhpcy5sZXhFeHBvbmVudCgpLHQudHlwZT1OVU1CRVIsdC52YWx1ZT1wYXJzZUZsb2F0KG4uc3Vic3RyaW5nKHQuc3RhcnQsdGhpcy5jdXJzb3IpKX1lbHNlIHQudHlwZT1ET1QsdC5hc3NpZ25PcD1udWxsLHQudmFsdWU9Ii4ifSxsZXhTdHJpbmc6ZnVuY3Rpb24oY2gpe3ZhciB0b2tlbj10aGlzLnRva2VuLGlucHV0PXRoaXMuc291cmNlO3Rva2VuLnR5cGU9U1RSSU5HO3ZhciBoYXNFc2NhcGVzPSExLGRlbGltPWNoO2lmKGlucHV0Lmxlbmd0aDw9dGhpcy5jdXJzb3IpdGhyb3cgdGhpcy5uZXdTeW50YXhFcnJvcigiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIik7d2hpbGUoKGNoPWlucHV0W3RoaXMuY3Vyc29yKytdKSE9PWRlbGltKXtpZihjaD09IlxuInx8Y2g9PSJcciIpdGhyb3cgdGhpcy5uZXdTeW50YXhFcnJvcigiVW50ZXJtaW5hdGVkIHN0cmluZyBsaXRlcmFsIik7aWYodGhpcy5jdXJzb3I9PWlucHV0Lmxlbmd0aCl0aHJvdyB0aGlzLm5ld1N5bnRheEVycm9yKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGxpdGVyYWwiKTtpZihjaD09PSJcXCIpe2hhc0VzY2FwZXM9ITA7aWYoKyt0aGlzLmN1cnNvcj09aW5wdXQubGVuZ3RoKXRocm93IHRoaXMubmV3U3ludGF4RXJyb3IoIlVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbCIpfX10b2tlbi52YWx1ZT1oYXNFc2NhcGVzP2V2YWwoaW5wdXQuc3Vic3RyaW5nKHRva2VuLnN0YXJ0LHRoaXMuY3Vyc29yKSk6aW5wdXQuc3Vic3RyaW5nKHRva2VuLnN0YXJ0KzEsdGhpcy5jdXJzb3ItMSl9LGxleFJlZ0V4cDpmdW5jdGlvbihjaCl7dmFyIHRva2VuPXRoaXMudG9rZW4saW5wdXQ9dGhpcy5zb3VyY2U7dG9rZW4udHlwZT1SRUdFWFA7ZG97Y2g9aW5wdXRbdGhpcy5jdXJzb3IrK107aWYoY2g9PT0iXFwiKXRoaXMuY3Vyc29yKys7ZWxzZSBpZihjaD09PSJbIil7ZG97aWYoY2g9PT11bmRlZmluZWQpdGhyb3cgdGhpcy5uZXdTeW50YXhFcnJvcigiVW50ZXJtaW5hdGVkIGNoYXJhY3RlciBjbGFzcyIpO2NoPT09IlxcIiYmdGhpcy5jdXJzb3IrKyxjaD1pbnB1dFt0aGlzLmN1cnNvcisrXX13aGlsZShjaCE9PSJdIil9ZWxzZSBpZihjaD09PXVuZGVmaW5lZCl0aHJvdyB0aGlzLm5ld1N5bnRheEVycm9yKCJVbnRlcm1pbmF0ZWQgcmVnZXgiKX13aGlsZShjaCE9PSIvIik7ZG8gY2g9aW5wdXRbdGhpcy5jdXJzb3IrK107d2hpbGUoY2g+PSJhIiYmY2g8PSJ6Iik7dGhpcy5jdXJzb3ItLSx0b2tlbi52YWx1ZT1ldmFsKGlucHV0LnN1YnN0cmluZyh0b2tlbi5zdGFydCx0aGlzLmN1cnNvcikpfSxsZXhPcDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRva2VuLG49dGhpcy5zb3VyY2Uscj1vcFRva2Vuc1tlXSxpPW5bdGhpcy5jdXJzb3JdO2kgaW4gciYmKHI9cltpXSx0aGlzLmN1cnNvcisrLGk9blt0aGlzLmN1cnNvcl0saSBpbiByJiYocj1yW2ldLHRoaXMuY3Vyc29yKyssaT1uW3RoaXMuY3Vyc29yXSkpO3ZhciBzPXIub3A7ZGVmaW5pdGlvbnMuYXNzaWduT3BzW3NdJiZuW3RoaXMuY3Vyc29yXT09PSI9Ij8odGhpcy5jdXJzb3IrKyx0LnR5cGU9QVNTSUdOLHQuYXNzaWduT3A9ZGVmaW5pdGlvbnMudG9rZW5JZHNbZGVmaW5pdGlvbnMub3BUeXBlTmFtZXNbc11dLHMrPSI9Iik6KHQudHlwZT1kZWZpbml0aW9ucy50b2tlbklkc1tkZWZpbml0aW9ucy5vcFR5cGVOYW1lc1tzXV0sdC5hc3NpZ25PcD1udWxsKSx0LnZhbHVlPXN9LGxleElkZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy50b2tlbixyPWU7d2hpbGUoKGU9dGhpcy5nZXRWYWxpZElkZW50aWZpZXJDaGFyKCExKSkhPT1udWxsKXIrPWU7bi50eXBlPUlERU5USUZJRVIsbi52YWx1ZT1yO2lmKHQpcmV0dXJuO3ZhciBpO2lmKHRoaXMucGFyc2VyLm1vemlsbGFNb2RlKXtpPWRlZmluaXRpb25zLm1vemlsbGFLZXl3b3Jkc1tyXTtpZihpKXtuLnR5cGU9aTtyZXR1cm59fWlmKHRoaXMucGFyc2VyLnguc3RyaWN0TW9kZSl7aT1kZWZpbml0aW9ucy5zdHJpY3RLZXl3b3Jkc1tyXTtpZihpKXtuLnR5cGU9aTtyZXR1cm59fWk9ZGVmaW5pdGlvbnMua2V5d29yZHNbcl0saSYmKG4udHlwZT1pKX0sZ2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG47d2hpbGUodGhpcy5sb29rYWhlYWQpey0tdGhpcy5sb29rYWhlYWQsdGhpcy50b2tlbkluZGV4PXRoaXMudG9rZW5JbmRleCsxJjMsbj10aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5kZXhdO2lmKG4udHlwZSE9PU5FV0xJTkV8fHRoaXMuc2Nhbk5ld2xpbmVzKXJldHVybiBuLnR5cGV9dGhpcy5za2lwKCksdGhpcy50b2tlbkluZGV4PXRoaXMudG9rZW5JbmRleCsxJjMsbj10aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5kZXhdLG58fCh0aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5kZXhdPW49e30pO3ZhciByPXRoaXMuc291cmNlO2lmKHRoaXMuY3Vyc29yPj1yLmxlbmd0aClyZXR1cm4gbi50eXBlPUVORDtuLnN0YXJ0PXRoaXMuY3Vyc29yLG4ubGluZW5vPXRoaXMubGluZW5vO3ZhciBpPXRoaXMuZ2V0VmFsaWRJZGVudGlmaWVyQ2hhcighMCkscz1pPT09bnVsbD9yW3RoaXMuY3Vyc29yKytdOm51bGw7aWYoaSE9PW51bGwpdGhpcy5sZXhJZGVudChpLHQpO2Vsc2UgaWYoZSYmcz09PSIvIil0aGlzLmxleFJlZ0V4cChzKTtlbHNlIGlmKHMgaW4gb3BUb2tlbnMpdGhpcy5sZXhPcChzKTtlbHNlIGlmKHM9PT0iLiIpdGhpcy5sZXhEb3Qocyk7ZWxzZSBpZihzPj0iMSImJnM8PSI5Iil0aGlzLmxleE51bWJlcihzKTtlbHNlIGlmKHM9PT0iMCIpdGhpcy5sZXhaZXJvTnVtYmVyKHMpO2Vsc2UgaWYocz09PSciJ3x8cz09PSInIil0aGlzLmxleFN0cmluZyhzKTtlbHNle2lmKCF0aGlzLnNjYW5OZXdsaW5lc3x8cyE9PSJcbiImJnMhPT0iXHIiKXRocm93IHRoaXMubmV3U3ludGF4RXJyb3IoIklsbGVnYWwgdG9rZW4iKTtzPT09IlxyIiYmclt0aGlzLmN1cnNvcl09PT0iXG4iJiZ0aGlzLmN1cnNvcisrLG4udHlwZT1ORVdMSU5FLG4udmFsdWU9IlxuIix0aGlzLmxpbmVubysrfXJldHVybiBuLmVuZD10aGlzLmN1cnNvcixuLnR5cGV9LHVuZ2V0OmZ1bmN0aW9uKCl7aWYoKyt0aGlzLmxvb2thaGVhZD09PTQpdGhyb3ciUEFOSUM6IHRvbyBtdWNoIGxvb2thaGVhZCEiO3RoaXMudG9rZW5JbmRleD10aGlzLnRva2VuSW5kZXgtMSYzfSxuZXdTeW50YXhFcnJvcjpmdW5jdGlvbihlKXtlPSh0aGlzLmZpbGVuYW1lP3RoaXMuZmlsZW5hbWUrIjoiOiIiKSt0aGlzLmxpbmVubysiOiAiK2U7dmFyIHQ9bmV3IFN5bnRheEVycm9yKGUsdGhpcy5maWxlbmFtZSx0aGlzLmxpbmVubyk7cmV0dXJuIHQuc291cmNlPXRoaXMuc291cmNlLHQuY3Vyc29yPXRoaXMubG9va2FoZWFkP3RoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleCt0aGlzLmxvb2thaGVhZCYzXS5zdGFydDp0aGlzLmN1cnNvcix0fSxnZXRWYWxpZElkZW50aWZpZXJDaGFyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc291cmNlO2lmKHRoaXMuY3Vyc29yPj10Lmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgbj10W3RoaXMuY3Vyc29yXTtpZihuPT09IlxcIiYmdFt0aGlzLmN1cnNvcisxXT09PSJ1Iil7dHJ5e249U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludCh0LnN1YnN0cmluZyh0aGlzLmN1cnNvcisyLHRoaXMuY3Vyc29yKzYpLDE2KSl9Y2F0Y2gocil7cmV0dXJuIG51bGx9dGhpcy5jdXJzb3IrPTV9dmFyIGk9aXNWYWxpZElkZW50aWZpZXJDaGFyKG4sZSk7cmV0dXJuIGkmJnRoaXMuY3Vyc29yKyssaT9uOm51bGx9fSxleHBvcnRzLmlzSWRlbnRpZmllcj1pc0lkZW50aWZpZXIsZXhwb3J0cy5Ub2tlbml6ZXI9VG9rZW5pemVyfSksZGVmaW5lKCJhY2UvbmFyY2lzc3VzL2RlZmluaXRpb25zIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24ocmVxdWlyZSxleHBvcnRzLG1vZHVsZSl7ZnVuY3Rpb24gZGVmaW5lR2V0dGVyKGUsdCxuLHIsaSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Z2V0Om4sY29uZmlndXJhYmxlOiFyLGVudW1lcmFibGU6IWl9KX1mdW5jdGlvbiBkZWZpbmVHZXR0ZXJTZXR0ZXIoZSx0LG4scixpLHMpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldDpuLHNldDpyLGNvbmZpZ3VyYWJsZTohaSxlbnVtZXJhYmxlOiFzfSl9ZnVuY3Rpb24gZGVmaW5lTWVtb0dldHRlcihlLHQsbixyLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldDpmdW5jdGlvbigpe3ZhciBzPW4oKTtyZXR1cm4gZGVmaW5lUHJvcGVydHkoZSx0LHMsciwhMCxpKSxzfSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohaX0pfWZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGUsdCxuLHIsaSxzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLHdyaXRhYmxlOiFpLGNvbmZpZ3VyYWJsZTohcixlbnVtZXJhYmxlOiFzfSl9ZnVuY3Rpb24gaXNOYXRpdmVDb2RlKGUpe3JldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIiYmZS50b1N0cmluZygpLm1hdGNoKC9cW25hdGl2ZSBjb2RlXF0vKX1mdW5jdGlvbiBhcHBseShlLHQsbil7cmV0dXJuIEZwYXBwbHkuY2FsbChlLFt0XS5jb25jYXQobikpfWZ1bmN0aW9uIGdldFByb3BlcnR5RGVzY3JpcHRvcihlLHQpe3doaWxlKGUpe2lmKHt9Lmhhc093blByb3BlcnR5LmNhbGwoZSx0KSlyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpO2U9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfX1mdW5jdGlvbiBnZXRQcm9wZXJ0eU5hbWVzKGUpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCx7fSk7d2hpbGUoZSl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSk7Zm9yKHZhciByPTAsaT1uLmxlbmd0aDtyPGk7cisrKXRbbltyXV09ITA7ZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9cmV0dXJuIE9iamVjdC5rZXlzKHQpfWZ1bmN0aW9uIGdldE93blByb3BlcnRpZXMoZSl7dmFyIHQ9e307Zm9yKHZhciBuIGluIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpKXRbbl09T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pO3JldHVybiB0fWZ1bmN0aW9uIGJsYWNrbGlzdEhhbmRsZXIoZSx0KXt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwse30pLHI9RGljdC5jcmVhdGUodCkubWFwT2JqZWN0KGZ1bmN0aW9uKGUpe3JldHVybiBufSk7cmV0dXJuIG1peGluSGFuZGxlcihyLGUpfWZ1bmN0aW9uIHdoaXRlbGlzdEhhbmRsZXIoZSx0KXt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwse30pLHI9RGljdC5jcmVhdGUodCkubWFwT2JqZWN0KGZ1bmN0aW9uKHQpe3JldHVybiBlfSk7cmV0dXJuIG1peGluSGFuZGxlcihyLG4pfWZ1bmN0aW9uIG1peGluSGFuZGxlcihlLHQpe2Z1bmN0aW9uIG4obil7cmV0dXJuIGhhc093bihlLG4pP2Vbbl06dH1mdW5jdGlvbiByKGUpe3ZhciB0PWdldFByb3BlcnR5RGVzY3JpcHRvcihuKGUpLGUpO3JldHVybiB0JiYodC5jb25maWd1cmFibGU9ITApLHR9ZnVuY3Rpb24gaSgpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdCBpbiBlW3RdfSkscj1nZXRQcm9wZXJ0eU5hbWVzKHQpLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4haGFzT3duKGUsdCl9KTtyZXR1cm4gbi5jb25jYXQocil9ZnVuY3Rpb24gcygpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdCBpbiBlW3RdfSk7Zm9yKG5hbWUgaW4gdCloYXNPd24oZSxuYW1lKXx8bi5wdXNoKG5hbWUpO3JldHVybiBufWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGUgaW4gbihlKX1yZXR1cm57Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOnIsZ2V0UHJvcGVydHlEZXNjcmlwdG9yOnIsZ2V0T3duUHJvcGVydHlOYW1lczppLGRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4oZSksZSx0KX0sImRlbGV0ZSI6ZnVuY3Rpb24oZSl7dmFyIHQ9bihlKTtyZXR1cm4gZGVsZXRlIHRbZV19LGZpeDpmdW5jdGlvbigpe30saGFzOm8saGFzT3duOm8sZ2V0OmZ1bmN0aW9uKGUsdCl7dmFyIHI9bih0KTtyZXR1cm4gclt0XX0sc2V0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1uKHQpO3JldHVybiBpW3RdPXIsITB9LGVudW1lcmF0ZTpzLGtleXM6c319ZnVuY3Rpb24gbWFrZVBhc3N0aHJ1SGFuZGxlcihlKXtyZXR1cm57Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uKHQpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KTtyZXR1cm4gbi5jb25maWd1cmFibGU9ITAsbn0sZ2V0UHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uKHQpe3ZhciBuPWdldFByb3BlcnR5RGVzY3JpcHRvcihlLHQpO3JldHVybiBuLmNvbmZpZ3VyYWJsZT0hMCxufSxnZXRPd25Qcm9wZXJ0eU5hbWVzOmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpfSxkZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsbil9LCJkZWxldGUiOmZ1bmN0aW9uKHQpe3JldHVybiBkZWxldGUgZVt0XX0sZml4OmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5pc0Zyb3plbihlKT9nZXRPd25Qcm9wZXJ0aWVzKGUpOnVuZGVmaW5lZH0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiB0IGluIGV9LGhhc093bjpmdW5jdGlvbih0KXtyZXR1cm57fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LGdldDpmdW5jdGlvbih0LG4pe3JldHVybiBlW25dfSxzZXQ6ZnVuY3Rpb24odCxuLHIpe3JldHVybiBlW25dPXIsITB9LGVudW1lcmF0ZTpmdW5jdGlvbigpe3ZhciB0PVtdO2ZvcihuYW1lIGluIGUpdC5wdXNoKG5hbWUpO3JldHVybiB0fSxrZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKGUpfX19ZnVuY3Rpb24gaGFzT3duKGUsdCl7cmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZSx0KX1mdW5jdGlvbiBEaWN0KGUsdCl7dGhpcy50YWJsZT1lfHxPYmplY3QuY3JlYXRlKG51bGwse30pLHRoaXMuc2l6ZT10fHwwfWZ1bmN0aW9uIFN0YWNrKGUpe3RoaXMuZWx0cz1lfHxudWxsfXZhciB0b2tlbnM9WyJFTkQiLCJcbiIsIjsiLCIsIiwiPSIsIj8iLCI6IiwiQ09ORElUSU9OQUwiLCJ8fCIsIiYmIiwifCIsIl4iLCImIiwiPT0iLCIhPSIsIj09PSIsIiE9PSIsIjwiLCI8PSIsIj49IiwiPiIsIjw8IiwiPj4iLCI+Pj4iLCIrIiwiLSIsIioiLCIvIiwiJSIsIiEiLCJ+IiwiVU5BUllfUExVUyIsIlVOQVJZX01JTlVTIiwiKysiLCItLSIsIi4iLCJbIiwiXSIsInsiLCJ9IiwiKCIsIikiLCJTQ1JJUFQiLCJCTE9DSyIsIkxBQkVMIiwiRk9SX0lOIiwiQ0FMTCIsIk5FV19XSVRIX0FSR1MiLCJJTkRFWCIsIkFSUkFZX0lOSVQiLCJPQkpFQ1RfSU5JVCIsIlBST1BFUlRZX0lOSVQiLCJHRVRURVIiLCJTRVRURVIiLCJHUk9VUCIsIkxJU1QiLCJMRVRfQkxPQ0siLCJBUlJBWV9DT01QIiwiR0VORVJBVE9SIiwiQ09NUF9UQUlMIiwiSU1QTEVNRU5UUyIsIklOVEVSRkFDRSIsIkxFVCIsIk1PRFVMRSIsIlBBQ0tBR0UiLCJQUklWQVRFIiwiUFJPVEVDVEVEIiwiUFVCTElDIiwiU1RBVElDIiwiVVNFIiwiWUlFTEQiLCJJREVOVElGSUVSIiwiTlVNQkVSIiwiU1RSSU5HIiwiUkVHRVhQIiwiYnJlYWsiLCJjYXNlIiwiY2F0Y2giLCJjb25zdCIsImNvbnRpbnVlIiwiZGVidWdnZXIiLCJkZWZhdWx0IiwiZGVsZXRlIiwiZG8iLCJlbHNlIiwiZXhwb3J0IiwiZmFsc2UiLCJmaW5hbGx5IiwiZm9yIiwiZnVuY3Rpb24iLCJpZiIsImltcG9ydCIsImluIiwiaW5zdGFuY2VvZiIsIm5ldyIsIm51bGwiLCJyZXR1cm4iLCJzd2l0Y2giLCJ0aGlzIiwidGhyb3ciLCJ0cnVlIiwidHJ5IiwidHlwZW9mIiwidmFyIiwidm9pZCIsIndoaWxlIiwid2l0aCJdLHN0cmljdEtleXdvcmRzPXtfX3Byb3RvX186bnVsbCwiaW1wbGVtZW50cyI6ITAsImludGVyZmFjZSI6ITAsbGV0OiEwLCJwYWNrYWdlIjohMCwicHJpdmF0ZSI6ITAsInByb3RlY3RlZCI6ITAsInB1YmxpYyI6ITAsInN0YXRpYyI6ITAsdXNlOiEwLHlpZWxkOiEwfSxzdGF0ZW1lbnRTdGFydFRva2Vucz1bImJyZWFrIiwiY29uc3QiLCJjb250aW51ZSIsImRlYnVnZ2VyIiwiZG8iLCJmb3IiLCJpZiIsImxldCIsInJldHVybiIsInN3aXRjaCIsInRocm93IiwidHJ5IiwidmFyIiwieWllbGQiLCJ3aGlsZSIsIndpdGgiXSx3aGl0ZXNwYWNlQ2hhcnM9WyIJIiwiCyIsIlxmIiwiICIsIsKgIiwi77u/Iiwi4ZqAIiwi4aCOIiwi4oCAIiwi4oCBIiwi4oCCIiwi4oCDIiwi4oCEIiwi4oCFIiwi4oCGIiwi4oCHIiwi4oCIIiwi4oCJIiwi4oCKIiwi4oCvIiwi4oGfIiwi44CAIl0sd2hpdGVzcGFjZT17fTtmb3IodmFyIGk9MDtpPHdoaXRlc3BhY2VDaGFycy5sZW5ndGg7aSsrKXdoaXRlc3BhY2Vbd2hpdGVzcGFjZUNoYXJzW2ldXT0hMDt2YXIgb3BUeXBlTmFtZXM9eyJcbiI6Ik5FV0xJTkUiLCI7IjoiU0VNSUNPTE9OIiwiLCI6IkNPTU1BIiwiPyI6IkhPT0siLCI6IjoiQ09MT04iLCJ8fCI6Ik9SIiwiJiYiOiJBTkQiLCJ8IjoiQklUV0lTRV9PUiIsIl4iOiJCSVRXSVNFX1hPUiIsIiYiOiJCSVRXSVNFX0FORCIsIj09PSI6IlNUUklDVF9FUSIsIj09IjoiRVEiLCI9IjoiQVNTSUdOIiwiIT09IjoiU1RSSUNUX05FIiwiIT0iOiJORSIsIjw8IjoiTFNIIiwiPD0iOiJMRSIsIjwiOiJMVCIsIj4+PiI6IlVSU0giLCI+PiI6IlJTSCIsIj49IjoiR0UiLCI+IjoiR1QiLCIrKyI6IklOQ1JFTUVOVCIsIi0tIjoiREVDUkVNRU5UIiwiKyI6IlBMVVMiLCItIjoiTUlOVVMiLCIqIjoiTVVMIiwiLyI6IkRJViIsIiUiOiJNT0QiLCIhIjoiTk9UIiwifiI6IkJJVFdJU0VfTk9UIiwiLiI6IkRPVCIsIlsiOiJMRUZUX0JSQUNLRVQiLCJdIjoiUklHSFRfQlJBQ0tFVCIsInsiOiJMRUZUX0NVUkxZIiwifSI6IlJJR0hUX0NVUkxZIiwiKCI6IkxFRlRfUEFSRU4iLCIpIjoiUklHSFRfUEFSRU4ifSxrZXl3b3Jkcz17X19wcm90b19fOm51bGx9LG1vemlsbGFLZXl3b3Jkcz17X19wcm90b19fOm51bGx9LHRva2VuSWRzPXt9LGhvc3RTdXBwb3J0c0V2YWxDb25zdD1mdW5jdGlvbigpe3RyeXtyZXR1cm4gZXZhbCgiKGZ1bmN0aW9uKHMpIHsgZXZhbChzKTsgcmV0dXJuIHggfSkoJ2NvbnN0IHggPSB0cnVlOycpIil9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGNvbnN0cz1ob3N0U3VwcG9ydHNFdmFsQ29uc3Q/ImNvbnN0ICI6InZhciAiO2Zvcih2YXIgaT0wLGo9dG9rZW5zLmxlbmd0aDtpPGo7aSsrKXtpPjAmJihjb25zdHMrPSIsICIpO3ZhciB0PXRva2Vuc1tpXSxuYW1lO2lmKC9eW2Etel0vLnRlc3QodCkpe25hbWU9dC50b1VwcGVyQ2FzZSgpO2lmKG5hbWU9PT0iTEVUInx8bmFtZT09PSJZSUVMRCIpbW96aWxsYUtleXdvcmRzW25hbWVdPWk7c3RyaWN0S2V5d29yZHNbbmFtZV0mJihzdHJpY3RLZXl3b3Jkc1tuYW1lXT1pKSxrZXl3b3Jkc1t0XT1pfWVsc2UgbmFtZT0vXlxXLy50ZXN0KHQpP29wVHlwZU5hbWVzW3RdOnQ7Y29uc3RzKz1uYW1lKyIgPSAiK2ksdG9rZW5JZHNbbmFtZV09aSx0b2tlbnNbdF09aX1jb25zdHMrPSI7Ijt2YXIgaXNTdGF0ZW1lbnRTdGFydENvZGU9e19fcHJvdG9fXzpudWxsfTtmb3IoaT0wLGo9c3RhdGVtZW50U3RhcnRUb2tlbnMubGVuZ3RoO2k8ajtpKyspaXNTdGF0ZW1lbnRTdGFydENvZGVba2V5d29yZHNbc3RhdGVtZW50U3RhcnRUb2tlbnNbaV1dXT0hMDt2YXIgYXNzaWduT3BzPVsifCIsIl4iLCImIiwiPDwiLCI+PiIsIj4+PiIsIisiLCItIiwiKiIsIi8iLCIlIl07Zm9yKGk9MCxqPWFzc2lnbk9wcy5sZW5ndGg7aTxqO2krKyl0PWFzc2lnbk9wc1tpXSxhc3NpZ25PcHNbdF09dG9rZW5zW3RdO3ZhciBGcGFwcGx5PUZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSxhcHBseU5ldztGdW5jdGlvbi5wcm90b3R5cGUuYmluZD9hcHBseU5ldz1mdW5jdGlvbih0LG4pe3JldHVybiBuZXcodC5iaW5kLmFwcGx5KHQsWyxdLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKSkpKX06YXBwbHlOZXc9ZnVuY3Rpb24gYXBwbHlOZXcoZixhKXtzd2l0Y2goYS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IGY7Y2FzZSAxOnJldHVybiBuZXcgZihhWzBdKTtjYXNlIDI6cmV0dXJuIG5ldyBmKGFbMF0sYVsxXSk7Y2FzZSAzOnJldHVybiBuZXcgZihhWzBdLGFbMV0sYVsyXSk7ZGVmYXVsdDp2YXIgYXJnU3RyPSJhWzBdIjtmb3IodmFyIGk9MSxuPWEubGVuZ3RoO2k8bjtpKyspYXJnU3RyKz0iLGFbIitpKyJdIjtyZXR1cm4gZXZhbCgibmV3IGYoIithcmdTdHIrIikiKX19O3ZhciBoYXNPd25Qcm9wZXJ0eT17fS5oYXNPd25Qcm9wZXJ0eTtEaWN0LmNyZWF0ZT1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwse30pLG49MCxyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpO2Zvcih2YXIgaT0wLHM9ci5sZW5ndGg7aTxzO2krKyl7dmFyIG89cltpXTt0W29dPWVbb10sbisrfXJldHVybiBuZXcgRGljdCh0LG4pfSxEaWN0LnByb3RvdHlwZT17aGFzOmZ1bmN0aW9uKGUpe3JldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMudGFibGUsZSl9LHNldDpmdW5jdGlvbihlLHQpe2hhc093blByb3BlcnR5LmNhbGwodGhpcy50YWJsZSxlKXx8dGhpcy5zaXplKyssdGhpcy50YWJsZVtlXT10fSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGFibGVbZV19LGdldERlZjpmdW5jdGlvbihlLHQpe3JldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMudGFibGUsZSl8fCh0aGlzLnNpemUrKyx0aGlzLnRhYmxlW2VdPXQoKSksdGhpcy50YWJsZVtlXX0sZm9yRWFjaDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRhYmxlO2Zvcih2YXIgbiBpbiB0KWUuY2FsbCh0aGlzLG4sdFtuXSl9LG1hcDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRhYmxlLG49T2JqZWN0LmNyZWF0ZShudWxsLHt9KTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQscil7blt0XT1lLmNhbGwodGhpcyxyLHQpfSksbmV3IERpY3Qobix0aGlzLnNpemUpfSxtYXBPYmplY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50YWJsZSxuPU9iamVjdC5jcmVhdGUobnVsbCx7fSk7cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0LHIpe25bdF09ZS5jYWxsKHRoaXMscix0KX0pLG59LHRvT2JqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwT2JqZWN0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSl9LGNob29zZTpmdW5jdGlvbigpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLnRhYmxlKVswXX0scmVtb3ZlOmZ1bmN0aW9uKGUpe2hhc093blByb3BlcnR5LmNhbGwodGhpcy50YWJsZSxlKSYmKHRoaXMuc2l6ZS0tLGRlbGV0ZSB0aGlzLnRhYmxlW2VdKX0sY29weTpmdW5jdGlvbigpe3ZhciBlPU9iamVjdC5jcmVhdGUobnVsbCx7fSk7Zm9yKHZhciB0IGluIHRoaXMudGFibGUpZVt0XT10aGlzLnRhYmxlW3RdO3JldHVybiBuZXcgRGljdChlLHRoaXMuc2l6ZSl9LGtleXM6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy50YWJsZSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgRGljdF0ifX07dmFyIF9XZWFrTWFwPXR5cGVvZiBXZWFrTWFwPT0iZnVuY3Rpb24iP1dlYWtNYXA6ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuYXJyYXk9ZXx8W119ZnVuY3Rpb24gdChlLHQsbixyKXt2YXIgaT1lLmFycmF5O2Zvcih2YXIgcz0wLG89aS5sZW5ndGg7czxvO3MrKyl7dmFyIHU9aVtzXTtpZih1LmtleT09PXQpcmV0dXJuIG4odSxzKX1yZXR1cm4gcigpfXJldHVybiBlLnByb3RvdHlwZT17aGFzOmZ1bmN0aW9uKGUpe3JldHVybiB0KHRoaXMsZSxmdW5jdGlvbigpe3JldHVybiEwfSxmdW5jdGlvbigpe3JldHVybiExfSl9LHNldDpmdW5jdGlvbihlLG4pe3ZhciByPXRoaXMuYXJyYXk7dCh0aGlzLGUsZnVuY3Rpb24oZSl7ZS52YWx1ZT1ufSxmdW5jdGlvbigpe3IucHVzaCh7a2V5OmUsdmFsdWU6bn0pfSl9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gdCh0aGlzLGUsZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWV9LGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9KX0sImRlbGV0ZSI6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5hcnJheTt0KHRoaXMsZSxmdW5jdGlvbihlLHQpe24uc3BsaWNlKHQsMSl9LGZ1bmN0aW9uKCl7fSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgV2Vha01hcF0ifX0sZX0oKTtTdGFjay5wcm90b3R5cGU9e3B1c2g6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBTdGFjayh7dG9wOmUscmVzdDp0aGlzLmVsdHN9KX0sdG9wOmZ1bmN0aW9uKCl7aWYoIXRoaXMuZWx0cyl0aHJvdyBuZXcgRXJyb3IoImVtcHR5IHN0YWNrIik7cmV0dXJuIHRoaXMuZWx0cy50b3B9LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b3A9PT1udWxsfSxmaW5kOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLmVsdHM7dDt0PXQucmVzdClpZihlKHQudG9wKSlyZXR1cm4gdC50b3A7cmV0dXJuIG51bGx9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gQm9vbGVhbih0aGlzLmZpbmQoZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1lfSkpfSxmb3JFYWNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLmVsdHM7dDt0PXQucmVzdCllKHQudG9wKX19LEFycmF5LnByb3RvdHlwZS5jb3B5fHxkZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsImNvcHkiLGZ1bmN0aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0PTAsbj10aGlzLmxlbmd0aDt0PG47dCsrKWVbdF09dGhpc1t0XTtyZXR1cm4gZX0sITEsITEsITApLEFycmF5LnByb3RvdHlwZS50b3B8fGRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwidG9wIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aCYmdGhpc1t0aGlzLmxlbmd0aC0xXX0sITEsITEsITApLGV4cG9ydHMudG9rZW5zPXRva2VucyxleHBvcnRzLndoaXRlc3BhY2U9d2hpdGVzcGFjZSxleHBvcnRzLm9wVHlwZU5hbWVzPW9wVHlwZU5hbWVzLGV4cG9ydHMua2V5d29yZHM9a2V5d29yZHMsZXhwb3J0cy5tb3ppbGxhS2V5d29yZHM9bW96aWxsYUtleXdvcmRzLGV4cG9ydHMuc3RyaWN0S2V5d29yZHM9c3RyaWN0S2V5d29yZHMsZXhwb3J0cy5pc1N0YXRlbWVudFN0YXJ0Q29kZT1pc1N0YXRlbWVudFN0YXJ0Q29kZSxleHBvcnRzLnRva2VuSWRzPXRva2VuSWRzLGV4cG9ydHMuY29uc3RzPWNvbnN0cyxleHBvcnRzLmFzc2lnbk9wcz1hc3NpZ25PcHMsZXhwb3J0cy5kZWZpbmVHZXR0ZXI9ZGVmaW5lR2V0dGVyLGV4cG9ydHMuZGVmaW5lR2V0dGVyU2V0dGVyPWRlZmluZUdldHRlclNldHRlcixleHBvcnRzLmRlZmluZU1lbW9HZXR0ZXI9ZGVmaW5lTWVtb0dldHRlcixleHBvcnRzLmRlZmluZVByb3BlcnR5PWRlZmluZVByb3BlcnR5LGV4cG9ydHMuaXNOYXRpdmVDb2RlPWlzTmF0aXZlQ29kZSxleHBvcnRzLmFwcGx5PWFwcGx5LGV4cG9ydHMuYXBwbHlOZXc9YXBwbHlOZXcsZXhwb3J0cy5taXhpbkhhbmRsZXI9bWl4aW5IYW5kbGVyLGV4cG9ydHMud2hpdGVsaXN0SGFuZGxlcj13aGl0ZWxpc3RIYW5kbGVyLGV4cG9ydHMuYmxhY2tsaXN0SGFuZGxlcj1ibGFja2xpc3RIYW5kbGVyLGV4cG9ydHMubWFrZVBhc3N0aHJ1SGFuZGxlcj1tYWtlUGFzc3RocnVIYW5kbGVyLGV4cG9ydHMuRGljdD1EaWN0LGV4cG9ydHMuV2Vha01hcD1fV2Vha01hcCxleHBvcnRzLlN0YWNrPVN0YWNrfSksZGVmaW5lKCJhY2UvbmFyY2lzc3VzL29wdGlvbnMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7dC5oaWRkZW5Ib3N0R2xvYmFscz17TmFyY2lzc3VzOiEwfSx0LmRlc3VnYXJFeHRlbnNpb25zPSExLHQuYWxsb3dIVE1MQ29tbWVudHM9ITEsdC5tb3ppbGxhTW9kZT0hMCx0LnBhcmVuRnJlZU1vZGU9ITF9KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/worker-json.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Im5vIHVzZSBzdHJpY3QiO2Z1bmN0aW9uIGluaXRCYXNlVXJscyhlKXtyZXF1aXJlLnRsbnM9ZX1mdW5jdGlvbiBpbml0U2VuZGVyKCl7dmFyIGU9cmVxdWlyZShudWxsLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsdD1yZXF1aXJlKG51bGwsImFjZS9saWIvb29wIiksbj1mdW5jdGlvbigpe307cmV0dXJuIGZ1bmN0aW9uKCl7dC5pbXBsZW1lbnQodGhpcyxlKSx0aGlzLmNhbGxiYWNrPWZ1bmN0aW9uKGUsdCl7cG9zdE1lc3NhZ2Uoe3R5cGU6ImNhbGwiLGlkOnQsZGF0YTplfSl9LHRoaXMuZW1pdD1mdW5jdGlvbihlLHQpe3Bvc3RNZXNzYWdlKHt0eXBlOiJldmVudCIsbmFtZTplLGRhdGE6dH0pfX0uY2FsbChuLnByb3RvdHlwZSksbmV3IG59dmFyIGNvbnNvbGU9e2xvZzpmdW5jdGlvbihlKXtwb3N0TWVzc2FnZSh7dHlwZToibG9nIixkYXRhOmV9KX19LHdpbmRvdz17Y29uc29sZTpjb25zb2xlfSxub3JtYWxpemVNb2R1bGU9ZnVuY3Rpb24oZSx0KXtpZih0LmluZGV4T2YoIiEiKSE9PS0xKXt2YXIgbj10LnNwbGl0KCIhIik7cmV0dXJuIG5vcm1hbGl6ZU1vZHVsZShlLG5bMF0pKyIhIitub3JtYWxpemVNb2R1bGUoZSxuWzFdKX1pZih0LmNoYXJBdCgwKT09Ii4iKXt2YXIgcj1lLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpLHQ9cisiLyIrdDt3aGlsZSh0LmluZGV4T2YoIi4iKSE9PS0xJiZpIT10KXZhciBpPXQsdD10LnJlcGxhY2UoL1wvXC5cLy8sIi8iKS5yZXBsYWNlKC9bXlwvXStcL1wuXC5cLy8sIiIpfXJldHVybiB0fSxyZXF1aXJlPWZ1bmN0aW9uKGUsdCl7dmFyIHQ9bm9ybWFsaXplTW9kdWxlKGUsdCksbj1yZXF1aXJlLm1vZHVsZXNbdF07aWYobilyZXR1cm4gbi5pbml0aWFsaXplZHx8KG4uZXhwb3J0cz1uLmZhY3RvcnkoKS5leHBvcnRzLG4uaW5pdGlhbGl6ZWQ9ITApLG4uZXhwb3J0czt2YXIgcj10LnNwbGl0KCIvIik7clswXT1yZXF1aXJlLnRsbnNbclswXV18fHJbMF07dmFyIGk9ci5qb2luKCIvIikrIi5qcyI7cmV0dXJuIHJlcXVpcmUuaWQ9dCxpbXBvcnRTY3JpcHRzKGkpLHJlcXVpcmUoZSx0KX07cmVxdWlyZS5tb2R1bGVzPXt9LHJlcXVpcmUudGxucz17fTt2YXIgZGVmaW5lPWZ1bmN0aW9uKGUsdCxuKXthcmd1bWVudHMubGVuZ3RoPT0yP249dDphcmd1bWVudHMubGVuZ3RoPT0xJiYobj1lLGU9cmVxdWlyZS5pZCk7aWYoZS5pbmRleE9mKCJ0ZXh0ISIpPT09MClyZXR1cm47dmFyIHI9ZnVuY3Rpb24odCxuKXtyZXR1cm4gcmVxdWlyZShlLHQsbil9O3JlcXVpcmUubW9kdWxlc1tlXT17ZmFjdG9yeTpmdW5jdGlvbigpe3ZhciBlPXtleHBvcnRzOnt9fSx0PW4ocixlLmV4cG9ydHMsZSk7cmV0dXJuIHQmJihlLmV4cG9ydHM9dCksZX19fSxtYWluLHNlbmRlcjtvbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhO2lmKHQuY29tbWFuZCltYWluW3QuY29tbWFuZF0uYXBwbHkobWFpbix0LmFyZ3MpO2Vsc2UgaWYodC5pbml0KXtpbml0QmFzZVVybHModC50bG5zKSxyZXF1aXJlKG51bGwsImFjZS9saWIvZml4b2xkYnJvd3NlcnMiKSxzZW5kZXI9aW5pdFNlbmRlcigpO3ZhciBuPXJlcXVpcmUobnVsbCx0Lm1vZHVsZSlbdC5jbGFzc25hbWVdO21haW49bmV3IG4oc2VuZGVyKX1lbHNlIHQuZXZlbnQmJnNlbmRlciYmc2VuZGVyLl9lbWl0KHQuZXZlbnQsdC5kYXRhKX0sZGVmaW5lKCJhY2UvbGliL2ZpeG9sZGJyb3dzZXJzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9yZWdleHAiLCJhY2UvbGliL2VzNS1zaGltIl0sZnVuY3Rpb24oZSx0LG4pe2UoIi4vcmVnZXhwIiksZSgiLi9lczUtc2hpbSIpfSksZGVmaW5lKCJhY2UvbGliL3JlZ2V4cCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBvKGUpe3JldHVybihlLmdsb2JhbD8iZyI6IiIpKyhlLmlnbm9yZUNhc2U/ImkiOiIiKSsoZS5tdWx0aWxpbmU/Im0iOiIiKSsoZS5leHRlbmRlZD8ieCI6IiIpKyhlLnN0aWNreT8ieSI6IiIpfWZ1bmN0aW9uIHUoZSx0LG4pe2lmKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKXJldHVybiBlLmluZGV4T2YodCxuKTtmb3IodmFyIHI9bnx8MDtyPGUubGVuZ3RoO3IrKylpZihlW3JdPT09dClyZXR1cm4gcjtyZXR1cm4tMX12YXIgcj17ZXhlYzpSZWdFeHAucHJvdG90eXBlLmV4ZWMsdGVzdDpSZWdFeHAucHJvdG90eXBlLnRlc3QsbWF0Y2g6U3RyaW5nLnByb3RvdHlwZS5tYXRjaCxyZXBsYWNlOlN0cmluZy5wcm90b3R5cGUucmVwbGFjZSxzcGxpdDpTdHJpbmcucHJvdG90eXBlLnNwbGl0fSxpPXIuZXhlYy5jYWxsKC8oKT8/LywiIilbMV09PT11bmRlZmluZWQscz1mdW5jdGlvbigpe3ZhciBlPS9eL2c7cmV0dXJuIHIudGVzdC5jYWxsKGUsIiIpLCFlLmxhc3RJbmRleH0oKTtpZihzJiZpKXJldHVybjtSZWdFeHAucHJvdG90eXBlLmV4ZWM9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5leGVjLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuLGE7aWYodHlwZW9mIGU9PSJzdHJpbmciJiZ0KXshaSYmdC5sZW5ndGg+MSYmdSh0LCIiKT4tMSYmKGE9UmVnRXhwKHRoaXMuc291cmNlLHIucmVwbGFjZS5jYWxsKG8odGhpcyksImciLCIiKSksci5yZXBsYWNlLmNhbGwoZS5zbGljZSh0LmluZGV4KSxhLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoLTI7ZSsrKWFyZ3VtZW50c1tlXT09PXVuZGVmaW5lZCYmKHRbZV09dW5kZWZpbmVkKX0pKTtpZih0aGlzLl94cmVnZXhwJiZ0aGlzLl94cmVnZXhwLmNhcHR1cmVOYW1lcylmb3IodmFyIGY9MTtmPHQubGVuZ3RoO2YrKyluPXRoaXMuX3hyZWdleHAuY2FwdHVyZU5hbWVzW2YtMV0sbiYmKHRbbl09dFtmXSk7IXMmJnRoaXMuZ2xvYmFsJiYhdFswXS5sZW5ndGgmJnRoaXMubGFzdEluZGV4PnQuaW5kZXgmJnRoaXMubGFzdEluZGV4LS19cmV0dXJuIHR9LHN8fChSZWdFeHAucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5leGVjLmNhbGwodGhpcyxlKTtyZXR1cm4gdCYmdGhpcy5nbG9iYWwmJiF0WzBdLmxlbmd0aCYmdGhpcy5sYXN0SW5kZXg+dC5pbmRleCYmdGhpcy5sYXN0SW5kZXgtLSwhIXR9KX0pLGRlZmluZSgiYWNlL2xpYi9lczUtc2hpbSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiB2KGUpe3RyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNlbnRpbmVsIix7fSksInNlbnRpbmVsImluIGV9Y2F0Y2godCl7fX1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7aWYodHlwZW9mIG4hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgcj1vLmNhbGwoYXJndW1lbnRzLDEpLGk9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgaSl7dmFyIGU9ZnVuY3Rpb24oKXt9O2UucHJvdG90eXBlPW4ucHJvdG90eXBlO3ZhciBzPW5ldyBlLHU9bi5hcHBseShzLHIuY29uY2F0KG8uY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIHUhPT1udWxsJiZPYmplY3QodSk9PT11P3U6c31yZXR1cm4gbi5hcHBseSh0LHIuY29uY2F0KG8uY2FsbChhcmd1bWVudHMpKSl9O3JldHVybiBpfSk7dmFyIHI9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsaT1BcnJheS5wcm90b3R5cGUscz1PYmplY3QucHJvdG90eXBlLG89aS5zbGljZSx1PXIuYmluZChzLnRvU3RyaW5nKSxhPXIuYmluZChzLmhhc093blByb3BlcnR5KSxmLGwsYyxoLHA7aWYocD1hKHMsIl9fZGVmaW5lR2V0dGVyX18iKSlmPXIuYmluZChzLl9fZGVmaW5lR2V0dGVyX18pLGw9ci5iaW5kKHMuX19kZWZpbmVTZXR0ZXJfXyksYz1yLmJpbmQocy5fX2xvb2t1cEdldHRlcl9fKSxoPXIuYmluZChzLl9fbG9va3VwU2V0dGVyX18pO0FycmF5LmlzQXJyYXl8fChBcnJheS5pc0FycmF5PWZ1bmN0aW9uKHQpe3JldHVybiB1KHQpPT0iW29iamVjdCBBcnJheV0ifSksQXJyYXkucHJvdG90eXBlLmZvckVhY2h8fChBcnJheS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9YXJndW1lbnRzWzFdLGk9MCxzPW4ubGVuZ3RoPj4+MDtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7d2hpbGUoaTxzKWkgaW4gbiYmdC5jYWxsKHIsbltpXSxpLG4pLGkrK30pLEFycmF5LnByb3RvdHlwZS5tYXB8fChBcnJheS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKHQpe3ZhciBuPV8odGhpcykscj1uLmxlbmd0aD4+PjAsaT1BcnJheShyKSxzPWFyZ3VtZW50c1sxXTtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBvPTA7bzxyO28rKylvIGluIG4mJihpW29dPXQuY2FsbChzLG5bb10sbyxuKSk7cmV0dXJuIGl9KSxBcnJheS5wcm90b3R5cGUuZmlsdGVyfHwoQXJyYXkucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wLGk9W10scz1hcmd1bWVudHNbMV07aWYodSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgbz0wO288cjtvKyspbyBpbiBuJiZ0LmNhbGwocyxuW29dLG8sbikmJmkucHVzaChuW29dKTtyZXR1cm4gaX0pLEFycmF5LnByb3RvdHlwZS5ldmVyeXx8KEFycmF5LnByb3RvdHlwZS5ldmVyeT1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wLGk9YXJndW1lbnRzWzFdO2lmKHUodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtmb3IodmFyIHM9MDtzPHI7cysrKWlmKHMgaW4gbiYmIXQuY2FsbChpLG5bc10scyxuKSlyZXR1cm4hMTtyZXR1cm4hMH0pLEFycmF5LnByb3RvdHlwZS5zb21lfHwoQXJyYXkucHJvdG90eXBlLnNvbWU9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MCxpPWFyZ3VtZW50c1sxXTtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBzPTA7czxyO3MrKylpZihzIGluIG4mJnQuY2FsbChpLG5bc10scyxuKSlyZXR1cm4hMDtyZXR1cm4hMX0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2V8fChBcnJheS5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKHQpe3ZhciBuPV8odGhpcykscj1uLmxlbmd0aD4+PjA7aWYodSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2lmKCFyJiZhcmd1bWVudHMubGVuZ3RoPT0xKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGk9MCxzO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpcz1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihpIGluIG4pe3M9bltpKytdO2JyZWFrfWlmKCsraT49cil0aHJvdyBuZXcgVHlwZUVycm9yfXdoaWxlKCEwKTtmb3IoO2k8cjtpKyspaSBpbiBuJiYocz10LmNhbGwodm9pZCAwLHMsbltpXSxpLG4pKTtyZXR1cm4gc30pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodHx8KEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodD1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wO2lmKHUodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtpZighciYmYXJndW1lbnRzLmxlbmd0aD09MSl0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBpLHM9ci0xO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpaT1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihzIGluIG4pe2k9bltzLS1dO2JyZWFrfWlmKC0tczwwKXRocm93IG5ldyBUeXBlRXJyb3J9d2hpbGUoITApO2RvIHMgaW4gdGhpcyYmKGk9dC5jYWxsKHZvaWQgMCxpLG5bc10scyxuKSk7d2hpbGUocy0tKTtyZXR1cm4gaX0pLEFycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MDtpZighcilyZXR1cm4tMTt2YXIgaT0wO2FyZ3VtZW50cy5sZW5ndGg+MSYmKGk9Tyhhcmd1bWVudHNbMV0pKSxpPWk+PTA/aTpNYXRoLm1heCgwLHIraSk7Zm9yKDtpPHI7aSsrKWlmKGkgaW4gbiYmbltpXT09PXQpcmV0dXJuIGk7cmV0dXJuLTF9KSxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Z8fChBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MDtpZighcilyZXR1cm4tMTt2YXIgaT1yLTE7YXJndW1lbnRzLmxlbmd0aD4xJiYoaT1NYXRoLm1pbihpLE8oYXJndW1lbnRzWzFdKSkpLGk9aT49MD9pOnItTWF0aC5hYnMoaSk7Zm9yKDtpPj0wO2ktLSlpZihpIGluIG4mJnQ9PT1uW2ldKXJldHVybiBpO3JldHVybi0xfSksT2JqZWN0LmdldFByb3RvdHlwZU9mfHwoT2JqZWN0LmdldFByb3RvdHlwZU9mPWZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8KHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6cyl9KTtpZighT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcil7dmFyIGQ9Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgY2FsbGVkIG9uIGEgbm9uLW9iamVjdDogIjtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWZ1bmN0aW9uKHQsbil7aWYodHlwZW9mIHQhPSJvYmplY3QiJiZ0eXBlb2YgdCE9ImZ1bmN0aW9uInx8dD09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihkK3QpO2lmKCFhKHQsbikpcmV0dXJuO3ZhciByLGksbztyPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07aWYocCl7dmFyIHU9dC5fX3Byb3RvX187dC5fX3Byb3RvX189czt2YXIgaT1jKHQsbiksbz1oKHQsbik7dC5fX3Byb3RvX189dTtpZihpfHxvKXJldHVybiBpJiYoci5nZXQ9aSksbyYmKHIuc2V0PW8pLHJ9cmV0dXJuIHIudmFsdWU9dFtuXSxyfX1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KX0pLE9iamVjdC5jcmVhdGV8fChPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKHQsbil7dmFyIHI7aWYodD09PW51bGwpcj17X19wcm90b19fOm51bGx9O2Vsc2V7aWYodHlwZW9mIHQhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoInR5cGVvZiBwcm90b3R5cGVbIit0eXBlb2YgdCsiXSAhPSAnb2JqZWN0JyIpO3ZhciBpPWZ1bmN0aW9uKCl7fTtpLnByb3RvdHlwZT10LHI9bmV3IGksci5fX3Byb3RvX189dH1yZXR1cm4gbiE9PXZvaWQgMCYmT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocixuKSxyfSk7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KXt2YXIgbT12KHt9KSxnPXR5cGVvZiBkb2N1bWVudD09InVuZGVmaW5lZCJ8fHYoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2lmKCFtfHwhZyl2YXIgeT1PYmplY3QuZGVmaW5lUHJvcGVydHl9aWYoIU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8eSl7dmFyIGI9IlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0OiAiLHc9Ik9iamVjdC5kZWZpbmVQcm9wZXJ0eSBjYWxsZWQgb24gbm9uLW9iamVjdDogIixFPSJnZXR0ZXJzICYgc2V0dGVycyBjYW4gbm90IGJlIGRlZmluZWQgb24gdGhpcyBqYXZhc2NyaXB0IGVuZ2luZSI7T2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKHQsbixyKXtpZih0eXBlb2YgdCE9Im9iamVjdCImJnR5cGVvZiB0IT0iZnVuY3Rpb24ifHx0PT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKHcrdCk7aWYodHlwZW9mIHIhPSJvYmplY3QiJiZ0eXBlb2YgciE9ImZ1bmN0aW9uInx8cj09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihiK3IpO2lmKHkpdHJ5e3JldHVybiB5LmNhbGwoT2JqZWN0LHQsbixyKX1jYXRjaChpKXt9aWYoYShyLCJ2YWx1ZSIpKWlmKHAmJihjKHQsbil8fGgodCxuKSkpe3ZhciBvPXQuX19wcm90b19fO3QuX19wcm90b19fPXMsZGVsZXRlIHRbbl0sdFtuXT1yLnZhbHVlLHQuX19wcm90b19fPW99ZWxzZSB0W25dPXIudmFsdWU7ZWxzZXtpZighcCl0aHJvdyBuZXcgVHlwZUVycm9yKEUpO2EociwiZ2V0IikmJmYodCxuLHIuZ2V0KSxhKHIsInNldCIpJiZsKHQsbixyLnNldCl9cmV0dXJuIHR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzfHwoT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24odCxuKXtmb3IodmFyIHIgaW4gbilhKG4scikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIsbltyXSk7cmV0dXJuIHR9KSxPYmplY3Quc2VhbHx8KE9iamVjdC5zZWFsPWZ1bmN0aW9uKHQpe3JldHVybiB0fSksT2JqZWN0LmZyZWV6ZXx8KE9iamVjdC5mcmVlemU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KTt0cnl7T2JqZWN0LmZyZWV6ZShmdW5jdGlvbigpe30pfWNhdGNoKFMpe09iamVjdC5mcmVlemU9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uOnQobil9fShPYmplY3QuZnJlZXplKX1PYmplY3QucHJldmVudEV4dGVuc2lvbnN8fChPYmplY3QucHJldmVudEV4dGVuc2lvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KSxPYmplY3QuaXNTZWFsZWR8fChPYmplY3QuaXNTZWFsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuITF9KSxPYmplY3QuaXNGcm96ZW58fChPYmplY3QuaXNGcm96ZW49ZnVuY3Rpb24odCl7cmV0dXJuITF9KSxPYmplY3QuaXNFeHRlbnNpYmxlfHwoT2JqZWN0LmlzRXh0ZW5zaWJsZT1mdW5jdGlvbih0KXtpZihPYmplY3QodCk9PT10KXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIG49IiI7d2hpbGUoYSh0LG4pKW4rPSI/Ijt0W25dPSEwO3ZhciByPWEodCxuKTtyZXR1cm4gZGVsZXRlIHRbbl0scn0pO2lmKCFPYmplY3Qua2V5cyl7dmFyIHg9ITAsVD1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLE49VC5sZW5ndGg7Zm9yKHZhciBDIGlue3RvU3RyaW5nOm51bGx9KXg9ITE7T2JqZWN0LmtleXM9ZnVuY3Rpb24gRChlKXtpZih0eXBlb2YgZSE9Im9iamVjdCImJnR5cGVvZiBlIT0iZnVuY3Rpb24ifHxlPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIEQ9W107Zm9yKHZhciB0IGluIGUpYShlLHQpJiZELnB1c2godCk7aWYoeClmb3IodmFyIG49MCxyPU47bjxyO24rKyl7dmFyIGk9VFtuXTthKGUsaSkmJkQucHVzaChpKX1yZXR1cm4gRH19aWYoIURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nfHwobmV3IERhdGUoLTYyMTk4NzU1MmU1KSkudG9JU09TdHJpbmcoKS5pbmRleE9mKCItMDAwMDAxIik9PT0tMSlEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3ZhciB0LG4scixpO2lmKCFpc0Zpbml0ZSh0aGlzKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcjt0PVt0aGlzLmdldFVUQ01vbnRoKCkrMSx0aGlzLmdldFVUQ0RhdGUoKSx0aGlzLmdldFVUQ0hvdXJzKCksdGhpcy5nZXRVVENNaW51dGVzKCksdGhpcy5nZXRVVENTZWNvbmRzKCldLGk9dGhpcy5nZXRVVENGdWxsWWVhcigpLGk9KGk8MD8iLSI6aT45OTk5PyIrIjoiIikrKCIwMDAwMCIrTWF0aC5hYnMoaSkpLnNsaWNlKDA8PWkmJmk8PTk5OTk/LTQ6LTYpLG49dC5sZW5ndGg7d2hpbGUobi0tKXI9dFtuXSxyPDEwJiYodFtuXT0iMCIrcik7cmV0dXJuIGkrIi0iK3Quc2xpY2UoMCwyKS5qb2luKCItIikrIlQiK3Quc2xpY2UoMikuam9pbigiOiIpKyIuIisoIjAwMCIrdGhpcy5nZXRVVENNaWxsaXNlY29uZHMoKSkuc2xpY2UoLTMpKyJaIn07RGF0ZS5ub3d8fChEYXRlLm5vdz1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksRGF0ZS5wcm90b3R5cGUudG9KU09OfHwoRGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0aGlzLnRvSVNPU3RyaW5nIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKX0pLERhdGUucGFyc2UoIisyNzU3NjAtMDktMTNUMDA6MDA6MDAuMDAwWiIpIT09ODY0ZTEzJiYoRGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbiBpKHQsbixyLHMsbyx1LGEpe3ZhciBmPWFyZ3VtZW50cy5sZW5ndGg7aWYodGhpcyBpbnN0YW5jZW9mIGUpe3ZhciBsPWY9PTEmJlN0cmluZyh0KT09PXQ/bmV3IGUoaS5wYXJzZSh0KSk6Zj49Nz9uZXcgZSh0LG4scixzLG8sdSxhKTpmPj02P25ldyBlKHQsbixyLHMsbyx1KTpmPj01P25ldyBlKHQsbixyLHMsbyk6Zj49ND9uZXcgZSh0LG4scixzKTpmPj0zP25ldyBlKHQsbixyKTpmPj0yP25ldyBlKHQsbik6Zj49MT9uZXcgZSh0KTpuZXcgZTtyZXR1cm4gbC5jb25zdHJ1Y3Rvcj1pLGx9cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxuPW5ldyBSZWdFeHAoIl4oXFxkezR9fFsrLV1cXGR7Nn0pKD86LShcXGR7Mn0pKD86LShcXGR7Mn0pKD86VChcXGR7Mn0pOihcXGR7Mn0pKD86OihcXGR7Mn0pKD86XFwuKFxcZHszfSkpPyk/KD86WnwoPzooWy0rXSkoXFxkezJ9KTooXFxkezJ9KSkpPyk/KT8pPyQiKTtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl07cmV0dXJuIHQubm93PWUubm93LHQuVVRDPWUuVVRDLHQucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wYXJzZT1mdW5jdGlvbihyKXt2YXIgaT1uLmV4ZWMocik7aWYoaSl7aS5zaGlmdCgpO2Zvcih2YXIgcz0xO3M8NztzKyspaVtzXT0rKGlbc118fChzPDM/MTowKSkscz09MSYmaVtzXS0tO3ZhciBvPStpLnBvcCgpLHU9K2kucG9wKCksYT1pLnBvcCgpLGY9MDtpZihhKXtpZih1PjIzfHxvPjU5KXJldHVybiBOYU47Zj0odSo2MCtvKSo2ZTQqKGE9PSIrIj8tMToxKX12YXIgbD0raVswXTtyZXR1cm4gMDw9bCYmbDw9OTk/KGlbMF09bCs0MDAsZS5VVEMuYXBwbHkodGhpcyxpKStmLTEyNjIyNzgwOGU1KTplLlVUQy5hcHBseSh0aGlzLGkpK2Z9cmV0dXJuIGUucGFyc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0fShEYXRlKSk7dmFyIGs9IglcbgtcZlxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI577u/IjtpZighU3RyaW5nLnByb3RvdHlwZS50cmltfHxrLnRyaW0oKSl7az0iWyIraysiXSI7dmFyIEw9bmV3IFJlZ0V4cCgiXiIraytrKyIqIiksQT1uZXcgUmVnRXhwKGsraysiKiQiKTtTdHJpbmcucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMpLnJlcGxhY2UoTCwiIikucmVwbGFjZShBLCIiKX19dmFyIE89ZnVuY3Rpb24oZSl7cmV0dXJuIGU9K2UsZSE9PWU/ZT0wOmUhPT0wJiZlIT09MS8wJiZlIT09LTEvMCYmKGU9KGU+MHx8LTEpKk1hdGguZmxvb3IoTWF0aC5hYnMoZSkpKSxlfSxNPSJhIlswXSE9ImEiLF89ZnVuY3Rpb24oZSl7aWYoZT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yO3JldHVybiBNJiZ0eXBlb2YgZT09InN0cmluZyImJmU/ZS5zcGxpdCgiIik6T2JqZWN0KGUpfX0pLGRlZmluZSgiYWNlL2xpYi9ldmVudF9lbWl0dGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt9O3IuX2VtaXQ9ci5fZGlzcGF0Y2hFdmVudD1mdW5jdGlvbihlLHQpe3RoaXMuX2V2ZW50UmVnaXN0cnk9dGhpcy5fZXZlbnRSZWdpc3RyeXx8e30sdGhpcy5fZGVmYXVsdEhhbmRsZXJzPXRoaXMuX2RlZmF1bHRIYW5kbGVyc3x8e307dmFyIG49dGhpcy5fZXZlbnRSZWdpc3RyeVtlXXx8W10scj10aGlzLl9kZWZhdWx0SGFuZGxlcnNbZV07aWYoIW4ubGVuZ3RoJiYhcilyZXR1cm47dD10fHx7fSx0LnR5cGU9ZSx0LnN0b3BQcm9wYWdhdGlvbnx8KHQuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7dGhpcy5wcm9wYWdhdGlvblN0b3BwZWQ9ITB9KSx0LnByZXZlbnREZWZhdWx0fHwodC5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMH0pO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXtuW2ldKHQpO2lmKHQucHJvcGFnYXRpb25TdG9wcGVkKWJyZWFrfWlmKHImJiF0LmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuIHIodCl9LHIuc2V0RGVmYXVsdEhhbmRsZXI9ZnVuY3Rpb24oZSx0KXt0aGlzLl9kZWZhdWx0SGFuZGxlcnM9dGhpcy5fZGVmYXVsdEhhbmRsZXJzfHx7fTtpZih0aGlzLl9kZWZhdWx0SGFuZGxlcnNbZV0pdGhyb3cgbmV3IEVycm9yKCJUaGUgZGVmYXVsdCBoYW5kbGVyIGZvciAnIitlKyInIGlzIGFscmVhZHkgc2V0Iik7dGhpcy5fZGVmYXVsdEhhbmRsZXJzW2VdPXR9LHIub249ci5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fTt2YXIgbj10aGlzLl9ldmVudFJlZ2lzdHJ5W2VdO2lmKCFuKXZhciBuPXRoaXMuX2V2ZW50UmVnaXN0cnlbZV09W107bi5pbmRleE9mKHQpPT0tMSYmbi5wdXNoKHQpfSxyLnJlbW92ZUxpc3RlbmVyPXIucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3RoaXMuX2V2ZW50UmVnaXN0cnk9dGhpcy5fZXZlbnRSZWdpc3RyeXx8e307dmFyIG49dGhpcy5fZXZlbnRSZWdpc3RyeVtlXTtpZighbilyZXR1cm47dmFyIHI9bi5pbmRleE9mKHQpO3IhPT0tMSYmbi5zcGxpY2UociwxKX0sci5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7dGhpcy5fZXZlbnRSZWdpc3RyeSYmKHRoaXMuX2V2ZW50UmVnaXN0cnlbZV09W10pfSx0LkV2ZW50RW1pdHRlcj1yfSksZGVmaW5lKCJhY2UvbGliL29vcCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmluaGVyaXRzPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt9O3JldHVybiBmdW5jdGlvbih0LG4pe2UucHJvdG90eXBlPW4ucHJvdG90eXBlLHQuc3VwZXJfPW4ucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyBlLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9fSgpLHQubWl4aW49ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl19LHQuaW1wbGVtZW50PWZ1bmN0aW9uKGUsbil7dC5taXhpbihlLG4pfX0pLGRlZmluZSgiYWNlL21vZGUvanNvbl93b3JrZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS93b3JrZXIvbWlycm9yIiwiYWNlL21vZGUvanNvbi9qc29uX3BhcnNlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL3dvcmtlci9taXJyb3IiKS5NaXJyb3Iscz1lKCIuL2pzb24vanNvbl9wYXJzZSIpLG89dC5Kc29uV29ya2VyPWZ1bmN0aW9uKGUpe2kuY2FsbCh0aGlzLGUpLHRoaXMuc2V0VGltZW91dCgyMDApfTtyLmluaGVyaXRzKG8saSksZnVuY3Rpb24oKXt0aGlzLm9uVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5kb2MuZ2V0VmFsdWUoKTt0cnl7dmFyIHQ9cyhlKX1jYXRjaChuKXt2YXIgcj10aGlzLmNoYXJUb0RvY3VtZW50UG9zaXRpb24obi5hdC0xKTt0aGlzLnNlbmRlci5lbWl0KCJlcnJvciIse3JvdzpyLnJvdyxjb2x1bW46ci5jb2x1bW4sdGV4dDpuLm1lc3NhZ2UsdHlwZToiZXJyb3IifSk7cmV0dXJufXRoaXMuc2VuZGVyLmVtaXQoIm9rIil9LHRoaXMuY2hhclRvRG9jdW1lbnRQb3NpdGlvbj1mdW5jdGlvbihlKXt2YXIgdD0wLG49dGhpcy5kb2MuZ2V0TGVuZ3RoKCkscj10aGlzLmRvYy5nZXROZXdMaW5lQ2hhcmFjdGVyKCkubGVuZ3RoO2lmKCFuKXJldHVybntyb3c6MCxjb2x1bW46MH07dmFyIGk9MDt3aGlsZSh0PG4pe3ZhciBzPXRoaXMuZG9jLmdldExpbmUodCksbz1zLmxlbmd0aCtyO2lmKGkrbz5lKXJldHVybntyb3c6dCxjb2x1bW46ZS1pfTtpKz1vLHQrPTF9cmV0dXJue3Jvdzp0LTEsY29sdW1uOnMubGVuZ3RofX19LmNhbGwoby5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2Uvd29ya2VyL21pcnJvciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9kb2N1bWVudCIsImFjZS9saWIvbGFuZyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9kb2N1bWVudCIpLkRvY3VtZW50LGk9ZSgiLi4vbGliL2xhbmciKSxzPXQuTWlycm9yPWZ1bmN0aW9uKGUpe3RoaXMuc2VuZGVyPWU7dmFyIHQ9dGhpcy5kb2M9bmV3IHIoIiIpLG49dGhpcy5kZWZlcnJlZFVwZGF0ZT1pLmRlZmVycmVkQ2FsbCh0aGlzLm9uVXBkYXRlLmJpbmQodGhpcykpLHM9dGhpcztlLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKGUpe3QuYXBwbHlEZWx0YXMoW2UuZGF0YV0pLG4uc2NoZWR1bGUocy4kdGltZW91dCl9KX07KGZ1bmN0aW9uKCl7dGhpcy4kdGltZW91dD01MDAsdGhpcy5zZXRUaW1lb3V0PWZ1bmN0aW9uKGUpe3RoaXMuJHRpbWVvdXQ9ZX0sdGhpcy5zZXRWYWx1ZT1mdW5jdGlvbihlKXt0aGlzLmRvYy5zZXRWYWx1ZShlKSx0aGlzLmRlZmVycmVkVXBkYXRlLnNjaGVkdWxlKHRoaXMuJHRpbWVvdXQpfSx0aGlzLmdldFZhbHVlPWZ1bmN0aW9uKGUpe3RoaXMuc2VuZGVyLmNhbGxiYWNrKHRoaXMuZG9jLmdldFZhbHVlKCksZSl9LHRoaXMub25VcGRhdGU9ZnVuY3Rpb24oKXt9fSkuY2FsbChzLnByb3RvdHlwZSl9KSxkZWZpbmUoImFjZS9kb2N1bWVudCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL2xpYi9ldmVudF9lbWl0dGVyIiwiYWNlL3JhbmdlIiwiYWNlL2FuY2hvciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL2xpYi9vb3AiKSxpPWUoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIscz1lKCIuL3JhbmdlIikuUmFuZ2Usbz1lKCIuL2FuY2hvciIpLkFuY2hvcix1PWZ1bmN0aW9uKGUpe3RoaXMuJGxpbmVzPVtdLGUubGVuZ3RoPT0wP3RoaXMuJGxpbmVzPVsiIl06QXJyYXkuaXNBcnJheShlKT90aGlzLmluc2VydExpbmVzKDAsZSk6dGhpcy5pbnNlcnQoe3JvdzowLGNvbHVtbjowfSxlKX07KGZ1bmN0aW9uKCl7ci5pbXBsZW1lbnQodGhpcyxpKSx0aGlzLnNldFZhbHVlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0TGVuZ3RoKCk7dGhpcy5yZW1vdmUobmV3IHMoMCwwLHQsdGhpcy5nZXRMaW5lKHQtMSkubGVuZ3RoKSksdGhpcy5pbnNlcnQoe3JvdzowLGNvbHVtbjowfSxlKX0sdGhpcy5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEFsbExpbmVzKCkuam9pbih0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSl9LHRoaXMuY3JlYXRlQW5jaG9yPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBvKHRoaXMsZSx0KX0sImFhYSIuc3BsaXQoL2EvKS5sZW5ndGg9PTA/dGhpcy4kc3BsaXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpLnNwbGl0KCJcbiIpfTp0aGlzLiRzcGxpdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgvXHJcbnxccnxcbi8pfSx0aGlzLiRkZXRlY3ROZXdMaW5lPWZ1bmN0aW9uKGUpe3ZhciB0PWUubWF0Y2goL14uKj8oXHJcbnxccnxcbikvbSk7dD90aGlzLiRhdXRvTmV3TGluZT10WzFdOnRoaXMuJGF1dG9OZXdMaW5lPSJcbiJ9LHRoaXMuZ2V0TmV3TGluZUNoYXJhY3Rlcj1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLiRuZXdMaW5lTW9kZSl7Y2FzZSJ3aW5kb3dzIjpyZXR1cm4iXHJcbiI7Y2FzZSJ1bml4IjpyZXR1cm4iXG4iO2Nhc2UiYXV0byI6cmV0dXJuIHRoaXMuJGF1dG9OZXdMaW5lfX0sdGhpcy4kYXV0b05ld0xpbmU9IlxuIix0aGlzLiRuZXdMaW5lTW9kZT0iYXV0byIsdGhpcy5zZXROZXdMaW5lTW9kZT1mdW5jdGlvbihlKXtpZih0aGlzLiRuZXdMaW5lTW9kZT09PWUpcmV0dXJuO3RoaXMuJG5ld0xpbmVNb2RlPWV9LHRoaXMuZ2V0TmV3TGluZU1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kbmV3TGluZU1vZGV9LHRoaXMuaXNOZXdMaW5lPWZ1bmN0aW9uKGUpe3JldHVybiBlPT0iXHJcbiJ8fGU9PSJcciJ8fGU9PSJcbiJ9LHRoaXMuZ2V0TGluZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy4kbGluZXNbZV18fCIifSx0aGlzLmdldExpbmVzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuJGxpbmVzLnNsaWNlKGUsdCsxKX0sdGhpcy5nZXRBbGxMaW5lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExpbmVzKDAsdGhpcy5nZXRMZW5ndGgoKSl9LHRoaXMuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGxpbmVzLmxlbmd0aH0sdGhpcy5nZXRUZXh0UmFuZ2U9ZnVuY3Rpb24oZSl7aWYoZS5zdGFydC5yb3c9PWUuZW5kLnJvdylyZXR1cm4gdGhpcy4kbGluZXNbZS5zdGFydC5yb3ddLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbixlLmVuZC5jb2x1bW4pO3ZhciB0PXRoaXMuZ2V0TGluZXMoZS5zdGFydC5yb3crMSxlLmVuZC5yb3ctMSk7cmV0dXJuIHQudW5zaGlmdCgodGhpcy4kbGluZXNbZS5zdGFydC5yb3ddfHwiIikuc3Vic3RyaW5nKGUuc3RhcnQuY29sdW1uKSksdC5wdXNoKCh0aGlzLiRsaW5lc1tlLmVuZC5yb3ddfHwiIikuc3Vic3RyaW5nKDAsZS5lbmQuY29sdW1uKSksdC5qb2luKHRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpKX0sdGhpcy4kY2xpcFBvc2l0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0TGVuZ3RoKCk7cmV0dXJuIGUucm93Pj10JiYoZS5yb3c9TWF0aC5tYXgoMCx0LTEpLGUuY29sdW1uPXRoaXMuZ2V0TGluZSh0LTEpLmxlbmd0aCksZX0sdGhpcy5pbnNlcnQ9ZnVuY3Rpb24oZSx0KXtpZighdHx8dC5sZW5ndGg9PT0wKXJldHVybiBlO2U9dGhpcy4kY2xpcFBvc2l0aW9uKGUpLHRoaXMuZ2V0TGVuZ3RoKCk8PTEmJnRoaXMuJGRldGVjdE5ld0xpbmUodCk7dmFyIG49dGhpcy4kc3BsaXQodCkscj1uLnNwbGljZSgwLDEpWzBdLGk9bi5sZW5ndGg9PTA/bnVsbDpuLnNwbGljZShuLmxlbmd0aC0xLDEpWzBdO3JldHVybiBlPXRoaXMuaW5zZXJ0SW5MaW5lKGUsciksaSE9PW51bGwmJihlPXRoaXMuaW5zZXJ0TmV3TGluZShlKSxlPXRoaXMuaW5zZXJ0TGluZXMoZS5yb3csbiksZT10aGlzLmluc2VydEluTGluZShlLGl8fCIiKSksZX0sdGhpcy5pbnNlcnRMaW5lcz1mdW5jdGlvbihlLHQpe2lmKHQubGVuZ3RoPT0wKXJldHVybntyb3c6ZSxjb2x1bW46MH07aWYodC5sZW5ndGg+NjU1MzUpe3ZhciBuPXRoaXMuaW5zZXJ0TGluZXMoZSx0LnNsaWNlKDY1NTM1KSk7dD10LnNsaWNlKDAsNjU1MzUpfXZhciByPVtlLDBdO3IucHVzaC5hcHBseShyLHQpLHRoaXMuJGxpbmVzLnNwbGljZS5hcHBseSh0aGlzLiRsaW5lcyxyKTt2YXIgaT1uZXcgcyhlLDAsZSt0Lmxlbmd0aCwwKSxvPXthY3Rpb246Imluc2VydExpbmVzIixyYW5nZTppLGxpbmVzOnR9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOm99KSxufHxpLmVuZH0sdGhpcy5pbnNlcnROZXdMaW5lPWZ1bmN0aW9uKGUpe2U9dGhpcy4kY2xpcFBvc2l0aW9uKGUpO3ZhciB0PXRoaXMuJGxpbmVzW2Uucm93XXx8IiI7dGhpcy4kbGluZXNbZS5yb3ddPXQuc3Vic3RyaW5nKDAsZS5jb2x1bW4pLHRoaXMuJGxpbmVzLnNwbGljZShlLnJvdysxLDAsdC5zdWJzdHJpbmcoZS5jb2x1bW4sdC5sZW5ndGgpKTt2YXIgbj17cm93OmUucm93KzEsY29sdW1uOjB9LHI9e2FjdGlvbjoiaW5zZXJ0VGV4dCIscmFuZ2U6cy5mcm9tUG9pbnRzKGUsbiksdGV4dDp0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKX07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6cn0pLG59LHRoaXMuaW5zZXJ0SW5MaW5lPWZ1bmN0aW9uKGUsdCl7aWYodC5sZW5ndGg9PTApcmV0dXJuIGU7dmFyIG49dGhpcy4kbGluZXNbZS5yb3ddfHwiIjt0aGlzLiRsaW5lc1tlLnJvd109bi5zdWJzdHJpbmcoMCxlLmNvbHVtbikrdCtuLnN1YnN0cmluZyhlLmNvbHVtbik7dmFyIHI9e3JvdzplLnJvdyxjb2x1bW46ZS5jb2x1bW4rdC5sZW5ndGh9LGk9e2FjdGlvbjoiaW5zZXJ0VGV4dCIscmFuZ2U6cy5mcm9tUG9pbnRzKGUsciksdGV4dDp0fTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTppfSkscn0sdGhpcy5yZW1vdmU9ZnVuY3Rpb24oZSl7ZS5zdGFydD10aGlzLiRjbGlwUG9zaXRpb24oZS5zdGFydCksZS5lbmQ9dGhpcy4kY2xpcFBvc2l0aW9uKGUuZW5kKTtpZihlLmlzRW1wdHkoKSlyZXR1cm4gZS5zdGFydDt2YXIgdD1lLnN0YXJ0LnJvdyxuPWUuZW5kLnJvdztpZihlLmlzTXVsdGlMaW5lKCkpe3ZhciByPWUuc3RhcnQuY29sdW1uPT0wP3Q6dCsxLGk9bi0xO2UuZW5kLmNvbHVtbj4wJiZ0aGlzLnJlbW92ZUluTGluZShuLDAsZS5lbmQuY29sdW1uKSxpPj1yJiZ0aGlzLnJlbW92ZUxpbmVzKHIsaSksciE9dCYmKHRoaXMucmVtb3ZlSW5MaW5lKHQsZS5zdGFydC5jb2x1bW4sdGhpcy5nZXRMaW5lKHQpLmxlbmd0aCksdGhpcy5yZW1vdmVOZXdMaW5lKGUuc3RhcnQucm93KSl9ZWxzZSB0aGlzLnJlbW92ZUluTGluZSh0LGUuc3RhcnQuY29sdW1uLGUuZW5kLmNvbHVtbik7cmV0dXJuIGUuc3RhcnR9LHRoaXMucmVtb3ZlSW5MaW5lPWZ1bmN0aW9uKGUsdCxuKXtpZih0PT1uKXJldHVybjt2YXIgcj1uZXcgcyhlLHQsZSxuKSxpPXRoaXMuZ2V0TGluZShlKSxvPWkuc3Vic3RyaW5nKHQsbiksdT1pLnN1YnN0cmluZygwLHQpK2kuc3Vic3RyaW5nKG4saS5sZW5ndGgpO3RoaXMuJGxpbmVzLnNwbGljZShlLDEsdSk7dmFyIGE9e2FjdGlvbjoicmVtb3ZlVGV4dCIscmFuZ2U6cix0ZXh0Om99O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOmF9KSxyLnN0YXJ0fSx0aGlzLnJlbW92ZUxpbmVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IHMoZSwwLHQrMSwwKSxyPXRoaXMuJGxpbmVzLnNwbGljZShlLHQtZSsxKSxpPXthY3Rpb246InJlbW92ZUxpbmVzIixyYW5nZTpuLG5sOnRoaXMuZ2V0TmV3TGluZUNoYXJhY3RlcigpLGxpbmVzOnJ9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOml9KSxyfSx0aGlzLnJlbW92ZU5ld0xpbmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRMaW5lKGUpLG49dGhpcy5nZXRMaW5lKGUrMSkscj1uZXcgcyhlLHQubGVuZ3RoLGUrMSwwKSxpPXQrbjt0aGlzLiRsaW5lcy5zcGxpY2UoZSwyLGkpO3ZhciBvPXthY3Rpb246InJlbW92ZVRleHQiLHJhbmdlOnIsdGV4dDp0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKX07dGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTpvfSl9LHRoaXMucmVwbGFjZT1mdW5jdGlvbihlLHQpe2lmKHQubGVuZ3RoPT0wJiZlLmlzRW1wdHkoKSlyZXR1cm4gZS5zdGFydDtpZih0PT10aGlzLmdldFRleHRSYW5nZShlKSlyZXR1cm4gZS5lbmQ7dGhpcy5yZW1vdmUoZSk7aWYodCl2YXIgbj10aGlzLmluc2VydChlLnN0YXJ0LHQpO2Vsc2Ugbj1lLnN0YXJ0O3JldHVybiBufSx0aGlzLmFwcGx5RGVsdGFzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgbj1lW3RdLHI9cy5mcm9tUG9pbnRzKG4ucmFuZ2Uuc3RhcnQsbi5yYW5nZS5lbmQpO24uYWN0aW9uPT0iaW5zZXJ0TGluZXMiP3RoaXMuaW5zZXJ0TGluZXMoci5zdGFydC5yb3csbi5saW5lcyk6bi5hY3Rpb249PSJpbnNlcnRUZXh0Ij90aGlzLmluc2VydChyLnN0YXJ0LG4udGV4dCk6bi5hY3Rpb249PSJyZW1vdmVMaW5lcyI/dGhpcy5yZW1vdmVMaW5lcyhyLnN0YXJ0LnJvdyxyLmVuZC5yb3ctMSk6bi5hY3Rpb249PSJyZW1vdmVUZXh0IiYmdGhpcy5yZW1vdmUocil9fSx0aGlzLnJldmVydERlbHRhcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGgtMTt0Pj0wO3QtLSl7dmFyIG49ZVt0XSxyPXMuZnJvbVBvaW50cyhuLnJhbmdlLnN0YXJ0LG4ucmFuZ2UuZW5kKTtuLmFjdGlvbj09Imluc2VydExpbmVzIj90aGlzLnJlbW92ZUxpbmVzKHIuc3RhcnQucm93LHIuZW5kLnJvdy0xKTpuLmFjdGlvbj09Imluc2VydFRleHQiP3RoaXMucmVtb3ZlKHIpOm4uYWN0aW9uPT0icmVtb3ZlTGluZXMiP3RoaXMuaW5zZXJ0TGluZXMoci5zdGFydC5yb3csbi5saW5lcyk6bi5hY3Rpb249PSJyZW1vdmVUZXh0IiYmdGhpcy5pbnNlcnQoci5zdGFydCxuLnRleHQpfX19KS5jYWxsKHUucHJvdG90eXBlKSx0LkRvY3VtZW50PXV9KSxkZWZpbmUoImFjZS9yYW5nZSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1mdW5jdGlvbihlLHQsbixyKXt0aGlzLnN0YXJ0PXtyb3c6ZSxjb2x1bW46dH0sdGhpcy5lbmQ9e3JvdzpuLGNvbHVtbjpyfX07KGZ1bmN0aW9uKCl7dGhpcy5pc0VxdWFsPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09ZS5zdGFydC5yb3cmJnRoaXMuZW5kLnJvdz09ZS5lbmQucm93JiZ0aGlzLnN0YXJ0LmNvbHVtbj09ZS5zdGFydC5jb2x1bW4mJnRoaXMuZW5kLmNvbHVtbj09ZS5lbmQuY29sdW1ufSx0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlJhbmdlOiBbIit0aGlzLnN0YXJ0LnJvdysiLyIrdGhpcy5zdGFydC5jb2x1bW4rIl0gLT4gWyIrdGhpcy5lbmQucm93KyIvIit0aGlzLmVuZC5jb2x1bW4rIl0ifSx0aGlzLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuY29tcGFyZShlLHQpPT0wfSx0aGlzLmNvbXBhcmVSYW5nZT1mdW5jdGlvbihlKXt2YXIgdCxuPWUuZW5kLHI9ZS5zdGFydDtyZXR1cm4gdD10aGlzLmNvbXBhcmUobi5yb3csbi5jb2x1bW4pLHQ9PTE/KHQ9dGhpcy5jb21wYXJlKHIucm93LHIuY29sdW1uKSx0PT0xPzI6dD09MD8xOjApOnQ9PS0xPy0yOih0PXRoaXMuY29tcGFyZShyLnJvdyxyLmNvbHVtbiksdD09LTE/LTE6dD09MT80MjowKX0sdGhpcy5jb21wYXJlUG9pbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29tcGFyZShlLnJvdyxlLmNvbHVtbil9LHRoaXMuY29udGFpbnNSYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb21wYXJlUG9pbnQoZS5zdGFydCk9PTAmJnRoaXMuY29tcGFyZVBvaW50KGUuZW5kKT09MH0sdGhpcy5pbnRlcnNlY3RzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY29tcGFyZVJhbmdlKGUpO3JldHVybiB0PT0tMXx8dD09MHx8dD09MX0sdGhpcy5pc0VuZD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmVuZC5yb3c9PWUmJnRoaXMuZW5kLmNvbHVtbj09dH0sdGhpcy5pc1N0YXJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuc3RhcnQucm93PT1lJiZ0aGlzLnN0YXJ0LmNvbHVtbj09dH0sdGhpcy5zZXRTdGFydD1mdW5jdGlvbihlLHQpe3R5cGVvZiBlPT0ib2JqZWN0Ij8odGhpcy5zdGFydC5jb2x1bW49ZS5jb2x1bW4sdGhpcy5zdGFydC5yb3c9ZS5yb3cpOih0aGlzLnN0YXJ0LnJvdz1lLHRoaXMuc3RhcnQuY29sdW1uPXQpfSx0aGlzLnNldEVuZD1mdW5jdGlvbihlLHQpe3R5cGVvZiBlPT0ib2JqZWN0Ij8odGhpcy5lbmQuY29sdW1uPWUuY29sdW1uLHRoaXMuZW5kLnJvdz1lLnJvdyk6KHRoaXMuZW5kLnJvdz1lLHRoaXMuZW5kLmNvbHVtbj10KX0sdGhpcy5pbnNpZGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jb21wYXJlKGUsdCk9PTA/dGhpcy5pc0VuZChlLHQpfHx0aGlzLmlzU3RhcnQoZSx0KT8hMTohMDohMX0sdGhpcy5pbnNpZGVTdGFydD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNvbXBhcmUoZSx0KT09MD90aGlzLmlzRW5kKGUsdCk/ITE6ITA6ITF9LHRoaXMuaW5zaWRlRW5kPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuY29tcGFyZShlLHQpPT0wP3RoaXMuaXNTdGFydChlLHQpPyExOiEwOiExfSx0aGlzLmNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hdGhpcy5pc011bHRpTGluZSgpJiZlPT09dGhpcy5zdGFydC5yb3c/dDx0aGlzLnN0YXJ0LmNvbHVtbj8tMTp0PnRoaXMuZW5kLmNvbHVtbj8xOjA6ZTx0aGlzLnN0YXJ0LnJvdz8tMTplPnRoaXMuZW5kLnJvdz8xOnRoaXMuc3RhcnQucm93PT09ZT90Pj10aGlzLnN0YXJ0LmNvbHVtbj8wOi0xOnRoaXMuZW5kLnJvdz09PWU/dDw9dGhpcy5lbmQuY29sdW1uPzA6MTowfSx0aGlzLmNvbXBhcmVTdGFydD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09ZSYmdGhpcy5zdGFydC5jb2x1bW49PXQ/LTE6dGhpcy5jb21wYXJlKGUsdCl9LHRoaXMuY29tcGFyZUVuZD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmVuZC5yb3c9PWUmJnRoaXMuZW5kLmNvbHVtbj09dD8xOnRoaXMuY29tcGFyZShlLHQpfSx0aGlzLmNvbXBhcmVJbnNpZGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lbmQucm93PT1lJiZ0aGlzLmVuZC5jb2x1bW49PXQ/MTp0aGlzLnN0YXJ0LnJvdz09ZSYmdGhpcy5zdGFydC5jb2x1bW49PXQ/LTE6dGhpcy5jb21wYXJlKGUsdCl9LHRoaXMuY2xpcFJvd3M9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLmVuZC5yb3c+dCl2YXIgbj17cm93OnQrMSxjb2x1bW46MH07aWYodGhpcy5zdGFydC5yb3c+dCl2YXIgaT17cm93OnQrMSxjb2x1bW46MH07aWYodGhpcy5zdGFydC5yb3c8ZSl2YXIgaT17cm93OmUsY29sdW1uOjB9O2lmKHRoaXMuZW5kLnJvdzxlKXZhciBuPXtyb3c6ZSxjb2x1bW46MH07cmV0dXJuIHIuZnJvbVBvaW50cyhpfHx0aGlzLnN0YXJ0LG58fHRoaXMuZW5kKX0sdGhpcy5leHRlbmQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNvbXBhcmUoZSx0KTtpZihuPT0wKXJldHVybiB0aGlzO2lmKG49PS0xKXZhciBpPXtyb3c6ZSxjb2x1bW46dH07ZWxzZSB2YXIgcz17cm93OmUsY29sdW1uOnR9O3JldHVybiByLmZyb21Qb2ludHMoaXx8dGhpcy5zdGFydCxzfHx0aGlzLmVuZCl9LHRoaXMuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09dGhpcy5lbmQucm93JiZ0aGlzLnN0YXJ0LmNvbHVtbj09dGhpcy5lbmQuY29sdW1ufSx0aGlzLmlzTXVsdGlMaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnQucm93IT09dGhpcy5lbmQucm93fSx0aGlzLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIHIuZnJvbVBvaW50cyh0aGlzLnN0YXJ0LHRoaXMuZW5kKX0sdGhpcy5jb2xsYXBzZVJvd3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmQuY29sdW1uPT0wP25ldyByKHRoaXMuc3RhcnQucm93LDAsTWF0aC5tYXgodGhpcy5zdGFydC5yb3csdGhpcy5lbmQucm93LTEpLDApOm5ldyByKHRoaXMuc3RhcnQucm93LDAsdGhpcy5lbmQucm93LDApfSx0aGlzLnRvU2NyZWVuUmFuZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24odGhpcy5zdGFydCksbj1lLmRvY3VtZW50VG9TY3JlZW5Qb3NpdGlvbih0aGlzLmVuZCk7cmV0dXJuIG5ldyByKHQucm93LHQuY29sdW1uLG4ucm93LG4uY29sdW1uKX19KS5jYWxsKHIucHJvdG90eXBlKSxyLmZyb21Qb2ludHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHIoZS5yb3csZS5jb2x1bW4sdC5yb3csdC5jb2x1bW4pfSx0LlJhbmdlPXJ9KSxkZWZpbmUoImFjZS9hbmNob3IiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvZXZlbnRfZW1pdHRlciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL2xpYi9vb3AiKSxpPWUoIi4vbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIscz10LkFuY2hvcj1mdW5jdGlvbihlLHQsbil7dGhpcy5kb2N1bWVudD1lLHR5cGVvZiBuPT0idW5kZWZpbmVkIj90aGlzLnNldFBvc2l0aW9uKHQucm93LHQuY29sdW1uKTp0aGlzLnNldFBvc2l0aW9uKHQsbiksdGhpcy4kb25DaGFuZ2U9dGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpLGUub24oImNoYW5nZSIsdGhpcy4kb25DaGFuZ2UpfTsoZnVuY3Rpb24oKXtyLmltcGxlbWVudCh0aGlzLGkpLHRoaXMuZ2V0UG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudCh0aGlzLnJvdyx0aGlzLmNvbHVtbil9LHRoaXMuZ2V0RG9jdW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb2N1bWVudH0sdGhpcy5vbkNoYW5nZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGEsbj10LnJhbmdlO2lmKG4uc3RhcnQucm93PT1uLmVuZC5yb3cmJm4uc3RhcnQucm93IT10aGlzLnJvdylyZXR1cm47aWYobi5zdGFydC5yb3c+dGhpcy5yb3cpcmV0dXJuO2lmKG4uc3RhcnQucm93PT10aGlzLnJvdyYmbi5zdGFydC5jb2x1bW4+dGhpcy5jb2x1bW4pcmV0dXJuO3ZhciByPXRoaXMucm93LGk9dGhpcy5jb2x1bW47dC5hY3Rpb249PT0iaW5zZXJ0VGV4dCI/bi5zdGFydC5yb3c9PT1yJiZuLnN0YXJ0LmNvbHVtbjw9aT9uLnN0YXJ0LnJvdz09PW4uZW5kLnJvdz9pKz1uLmVuZC5jb2x1bW4tbi5zdGFydC5jb2x1bW46KGktPW4uc3RhcnQuY29sdW1uLHIrPW4uZW5kLnJvdy1uLnN0YXJ0LnJvdyk6bi5zdGFydC5yb3chPT1uLmVuZC5yb3cmJm4uc3RhcnQucm93PHImJihyKz1uLmVuZC5yb3ctbi5zdGFydC5yb3cpOnQuYWN0aW9uPT09Imluc2VydExpbmVzIj9uLnN0YXJ0LnJvdzw9ciYmKHIrPW4uZW5kLnJvdy1uLnN0YXJ0LnJvdyk6dC5hY3Rpb249PSJyZW1vdmVUZXh0Ij9uLnN0YXJ0LnJvdz09ciYmbi5zdGFydC5jb2x1bW48aT9uLmVuZC5jb2x1bW4+PWk/aT1uLnN0YXJ0LmNvbHVtbjppPU1hdGgubWF4KDAsaS0obi5lbmQuY29sdW1uLW4uc3RhcnQuY29sdW1uKSk6bi5zdGFydC5yb3chPT1uLmVuZC5yb3cmJm4uc3RhcnQucm93PHI/KG4uZW5kLnJvdz09ciYmKGk9TWF0aC5tYXgoMCxpLW4uZW5kLmNvbHVtbikrbi5zdGFydC5jb2x1bW4pLHItPW4uZW5kLnJvdy1uLnN0YXJ0LnJvdyk6bi5lbmQucm93PT1yJiYoci09bi5lbmQucm93LW4uc3RhcnQucm93LGk9TWF0aC5tYXgoMCxpLW4uZW5kLmNvbHVtbikrbi5zdGFydC5jb2x1bW4pOnQuYWN0aW9uPT0icmVtb3ZlTGluZXMiJiZuLnN0YXJ0LnJvdzw9ciYmKG4uZW5kLnJvdzw9cj9yLT1uLmVuZC5yb3ctbi5zdGFydC5yb3c6KHI9bi5zdGFydC5yb3csaT0wKSksdGhpcy5zZXRQb3NpdGlvbihyLGksITApfSx0aGlzLnNldFBvc2l0aW9uPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtuP3I9e3JvdzplLGNvbHVtbjp0fTpyPXRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQoZSx0KTtpZih0aGlzLnJvdz09ci5yb3cmJnRoaXMuY29sdW1uPT1yLmNvbHVtbilyZXR1cm47dmFyIGk9e3Jvdzp0aGlzLnJvdyxjb2x1bW46dGhpcy5jb2x1bW59O3RoaXMucm93PXIucm93LHRoaXMuY29sdW1uPXIuY29sdW1uLHRoaXMuX2VtaXQoImNoYW5nZSIse29sZDppLHZhbHVlOnJ9KX0sdGhpcy5kZXRhY2g9ZnVuY3Rpb24oKXt0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy4kb25DaGFuZ2UpfSx0aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49e307cmV0dXJuIGU+PXRoaXMuZG9jdW1lbnQuZ2V0TGVuZ3RoKCk/KG4ucm93PU1hdGgubWF4KDAsdGhpcy5kb2N1bWVudC5nZXRMZW5ndGgoKS0xKSxuLmNvbHVtbj10aGlzLmRvY3VtZW50LmdldExpbmUobi5yb3cpLmxlbmd0aCk6ZTwwPyhuLnJvdz0wLG4uY29sdW1uPTApOihuLnJvdz1lLG4uY29sdW1uPU1hdGgubWluKHRoaXMuZG9jdW1lbnQuZ2V0TGluZShuLnJvdykubGVuZ3RoLE1hdGgubWF4KDAsdCkpKSx0PDAmJihuLmNvbHVtbj0wKSxufX0pLmNhbGwocy5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvbGliL2xhbmciLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7dC5zdHJpbmdSZXZlcnNlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIil9LHQuc3RyaW5nUmVwZWF0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuKG5ldyBBcnJheSh0KzEpKS5qb2luKGUpfTt2YXIgcj0vXlxzXHMqLyxpPS9cc1xzKiQvO3Quc3RyaW5nVHJpbUxlZnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShyLCIiKX0sdC5zdHJpbmdUcmltUmlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShpLCIiKX0sdC5jb3B5T2JqZWN0PWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXTtyZXR1cm4gdH0sdC5jb3B5QXJyYXk9ZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWVbbl0mJnR5cGVvZiBlW25dPT0ib2JqZWN0Ij90W25dPXRoaXMuY29weU9iamVjdChlW25dKTp0W25dPWVbbl07cmV0dXJuIHR9LHQuZGVlcENvcHk9ZnVuY3Rpb24oZSl7aWYodHlwZW9mIGUhPSJvYmplY3QiKXJldHVybiBlO3ZhciB0PWUuY29uc3RydWN0b3IoKTtmb3IodmFyIG4gaW4gZSl0eXBlb2YgZVtuXT09Im9iamVjdCI/dFtuXT10aGlzLmRlZXBDb3B5KGVbbl0pOnRbbl09ZVtuXTtyZXR1cm4gdH0sdC5hcnJheVRvTWFwPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXRbZVtuXV09MTtyZXR1cm4gdH0sdC5hcnJheVJlbW92ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248PWUubGVuZ3RoO24rKyl0PT09ZVtuXSYmZS5zcGxpY2UobiwxKX0sdC5lc2NhcGVSZWdFeHA9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvKFsuKis/XiR7fSgpfFtcXVwvXFxdKS9nLCJcXCQxIil9LHQuZ2V0TWF0Y2hPZmZzZXRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49W107cmV0dXJuIGUucmVwbGFjZSh0LGZ1bmN0aW9uKGUpe24ucHVzaCh7b2Zmc2V0OmFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTJdLGxlbmd0aDplLmxlbmd0aH0pfSksbn0sdC5kZWZlcnJlZENhbGw9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbCxuPWZ1bmN0aW9uKCl7dD1udWxsLGUoKX0scj1mdW5jdGlvbihlKXtyZXR1cm4gci5jYW5jZWwoKSx0PXNldFRpbWVvdXQobixlfHwwKSxyfTtyZXR1cm4gci5zY2hlZHVsZT1yLHIuY2FsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbmNlbCgpLGUoKSxyfSxyLmNhbmNlbD1mdW5jdGlvbigpe3JldHVybiBjbGVhclRpbWVvdXQodCksdD1udWxsLHJ9LHJ9fSksZGVmaW5lKCJhY2UvbW9kZS9qc29uL2pzb25fcGFyc2UiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxzPXsnIic6JyInLCJcXCI6IlxcIiwiLyI6Ii8iLGI6IlxiIixmOiJcZiIsbjoiXG4iLHI6IlxyIix0OiIJIn0sbyx1PWZ1bmN0aW9uKGUpe3Rocm93e25hbWU6IlN5bnRheEVycm9yIixtZXNzYWdlOmUsYXQ6cix0ZXh0Om99fSxhPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlIT09aSYmdSgiRXhwZWN0ZWQgJyIrZSsiJyBpbnN0ZWFkIG9mICciK2krIiciKSxpPW8uY2hhckF0KHIpLHIrPTEsaX0sZj1mdW5jdGlvbigpe3ZhciBlLHQ9IiI7aT09PSItIiYmKHQ9Ii0iLGEoIi0iKSk7d2hpbGUoaT49IjAiJiZpPD0iOSIpdCs9aSxhKCk7aWYoaT09PSIuIil7dCs9Ii4iO3doaWxlKGEoKSYmaT49IjAiJiZpPD0iOSIpdCs9aX1pZihpPT09ImUifHxpPT09IkUiKXt0Kz1pLGEoKTtpZihpPT09Ii0ifHxpPT09IisiKXQrPWksYSgpO3doaWxlKGk+PSIwIiYmaTw9IjkiKXQrPWksYSgpfWU9K3Q7aWYoIWlzTmFOKGUpKXJldHVybiBlO3UoIkJhZCBudW1iZXIiKX0sbD1mdW5jdGlvbigpe3ZhciBlLHQsbj0iIixyO2lmKGk9PT0nIicpd2hpbGUoYSgpKXtpZihpPT09JyInKXJldHVybiBhKCksbjtpZihpPT09IlxcIil7YSgpO2lmKGk9PT0idSIpe3I9MDtmb3IodD0wO3Q8NDt0Kz0xKXtlPXBhcnNlSW50KGEoKSwxNik7aWYoIWlzRmluaXRlKGUpKWJyZWFrO3I9cioxNitlfW4rPVN0cmluZy5mcm9tQ2hhckNvZGUocil9ZWxzZXtpZih0eXBlb2Ygc1tpXSE9InN0cmluZyIpYnJlYWs7bis9c1tpXX19ZWxzZSBuKz1pfXUoIkJhZCBzdHJpbmciKX0sYz1mdW5jdGlvbigpe3doaWxlKGkmJmk8PSIgIilhKCl9LGg9ZnVuY3Rpb24oKXtzd2l0Y2goaSl7Y2FzZSJ0IjpyZXR1cm4gYSgidCIpLGEoInIiKSxhKCJ1IiksYSgiZSIpLCEwO2Nhc2UiZiI6cmV0dXJuIGEoImYiKSxhKCJhIiksYSgibCIpLGEoInMiKSxhKCJlIiksITE7Y2FzZSJuIjpyZXR1cm4gYSgibiIpLGEoInUiKSxhKCJsIiksYSgibCIpLG51bGx9dSgiVW5leHBlY3RlZCAnIitpKyInIil9LHAsZD1mdW5jdGlvbigpe3ZhciBlPVtdO2lmKGk9PT0iWyIpe2EoIlsiKSxjKCk7aWYoaT09PSJdIilyZXR1cm4gYSgiXSIpLGU7d2hpbGUoaSl7ZS5wdXNoKHAoKSksYygpO2lmKGk9PT0iXSIpcmV0dXJuIGEoIl0iKSxlO2EoIiwiKSxjKCl9fXUoIkJhZCBhcnJheSIpfSx2PWZ1bmN0aW9uKCl7dmFyIGUsdD17fTtpZihpPT09InsiKXthKCJ7IiksYygpO2lmKGk9PT0ifSIpcmV0dXJuIGEoIn0iKSx0O3doaWxlKGkpe2U9bCgpLGMoKSxhKCI6IiksT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodCxlKSYmdSgnRHVwbGljYXRlIGtleSAiJytlKyciJyksdFtlXT1wKCksYygpO2lmKGk9PT0ifSIpcmV0dXJuIGEoIn0iKSx0O2EoIiwiKSxjKCl9fXUoIkJhZCBvYmplY3QiKX07cmV0dXJuIHA9ZnVuY3Rpb24oKXtjKCk7c3dpdGNoKGkpe2Nhc2UieyI6cmV0dXJuIHYoKTtjYXNlIlsiOnJldHVybiBkKCk7Y2FzZSciJzpyZXR1cm4gbCgpO2Nhc2UiLSI6cmV0dXJuIGYoKTtkZWZhdWx0OnJldHVybiBpPj0iMCImJmk8PSI5Ij9mKCk6aCgpfX0sZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gbz1lLHI9MCxpPSIgIixuPXAoKSxjKCksaSYmdSgiU3ludGF4IGVycm9yIiksdHlwZW9mIHQ9PSJmdW5jdGlvbiI/ZnVuY3Rpb24gcyhlLG4pe3ZhciByLGksbz1lW25dO2lmKG8mJnR5cGVvZiBvPT0ib2JqZWN0Iilmb3IociBpbiBvKU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8scikmJihpPXMobyxyKSxpIT09dW5kZWZpbmVkP29bcl09aTpkZWxldGUgb1tyXSk7cmV0dXJuIHQuY2FsbChlLG4sbyl9KHsiIjpufSwiIik6bn19KQ==]]></data>
	</file>
	<file>
	  <filename>/ace/src/worker-xquery.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Im5vIHVzZSBzdHJpY3QiO2Z1bmN0aW9uIGluaXRCYXNlVXJscyhlKXtyZXF1aXJlLnRsbnM9ZX1mdW5jdGlvbiBpbml0U2VuZGVyKCl7dmFyIGU9cmVxdWlyZShudWxsLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiKS5FdmVudEVtaXR0ZXIsdD1yZXF1aXJlKG51bGwsImFjZS9saWIvb29wIiksbj1mdW5jdGlvbigpe307cmV0dXJuIGZ1bmN0aW9uKCl7dC5pbXBsZW1lbnQodGhpcyxlKSx0aGlzLmNhbGxiYWNrPWZ1bmN0aW9uKGUsdCl7cG9zdE1lc3NhZ2Uoe3R5cGU6ImNhbGwiLGlkOnQsZGF0YTplfSl9LHRoaXMuZW1pdD1mdW5jdGlvbihlLHQpe3Bvc3RNZXNzYWdlKHt0eXBlOiJldmVudCIsbmFtZTplLGRhdGE6dH0pfX0uY2FsbChuLnByb3RvdHlwZSksbmV3IG59dmFyIGNvbnNvbGU9e2xvZzpmdW5jdGlvbihlKXtwb3N0TWVzc2FnZSh7dHlwZToibG9nIixkYXRhOmV9KX19LHdpbmRvdz17Y29uc29sZTpjb25zb2xlfSxub3JtYWxpemVNb2R1bGU9ZnVuY3Rpb24oZSx0KXtpZih0LmluZGV4T2YoIiEiKSE9PS0xKXt2YXIgbj10LnNwbGl0KCIhIik7cmV0dXJuIG5vcm1hbGl6ZU1vZHVsZShlLG5bMF0pKyIhIitub3JtYWxpemVNb2R1bGUoZSxuWzFdKX1pZih0LmNoYXJBdCgwKT09Ii4iKXt2YXIgcj1lLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpLHQ9cisiLyIrdDt3aGlsZSh0LmluZGV4T2YoIi4iKSE9PS0xJiZpIT10KXZhciBpPXQsdD10LnJlcGxhY2UoL1wvXC5cLy8sIi8iKS5yZXBsYWNlKC9bXlwvXStcL1wuXC5cLy8sIiIpfXJldHVybiB0fSxyZXF1aXJlPWZ1bmN0aW9uKGUsdCl7dmFyIHQ9bm9ybWFsaXplTW9kdWxlKGUsdCksbj1yZXF1aXJlLm1vZHVsZXNbdF07aWYobilyZXR1cm4gbi5pbml0aWFsaXplZHx8KG4uZXhwb3J0cz1uLmZhY3RvcnkoKS5leHBvcnRzLG4uaW5pdGlhbGl6ZWQ9ITApLG4uZXhwb3J0czt2YXIgcj10LnNwbGl0KCIvIik7clswXT1yZXF1aXJlLnRsbnNbclswXV18fHJbMF07dmFyIGk9ci5qb2luKCIvIikrIi5qcyI7cmV0dXJuIHJlcXVpcmUuaWQ9dCxpbXBvcnRTY3JpcHRzKGkpLHJlcXVpcmUoZSx0KX07cmVxdWlyZS5tb2R1bGVzPXt9LHJlcXVpcmUudGxucz17fTt2YXIgZGVmaW5lPWZ1bmN0aW9uKGUsdCxuKXthcmd1bWVudHMubGVuZ3RoPT0yP249dDphcmd1bWVudHMubGVuZ3RoPT0xJiYobj1lLGU9cmVxdWlyZS5pZCk7aWYoZS5pbmRleE9mKCJ0ZXh0ISIpPT09MClyZXR1cm47dmFyIHI9ZnVuY3Rpb24odCxuKXtyZXR1cm4gcmVxdWlyZShlLHQsbil9O3JlcXVpcmUubW9kdWxlc1tlXT17ZmFjdG9yeTpmdW5jdGlvbigpe3ZhciBlPXtleHBvcnRzOnt9fSx0PW4ocixlLmV4cG9ydHMsZSk7cmV0dXJuIHQmJihlLmV4cG9ydHM9dCksZX19fSxtYWluLHNlbmRlcjtvbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhO2lmKHQuY29tbWFuZCltYWluW3QuY29tbWFuZF0uYXBwbHkobWFpbix0LmFyZ3MpO2Vsc2UgaWYodC5pbml0KXtpbml0QmFzZVVybHModC50bG5zKSxyZXF1aXJlKG51bGwsImFjZS9saWIvZml4b2xkYnJvd3NlcnMiKSxzZW5kZXI9aW5pdFNlbmRlcigpO3ZhciBuPXJlcXVpcmUobnVsbCx0Lm1vZHVsZSlbdC5jbGFzc25hbWVdO21haW49bmV3IG4oc2VuZGVyKX1lbHNlIHQuZXZlbnQmJnNlbmRlciYmc2VuZGVyLl9lbWl0KHQuZXZlbnQsdC5kYXRhKX0sZGVmaW5lKCJhY2UvbGliL2ZpeG9sZGJyb3dzZXJzIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9yZWdleHAiLCJhY2UvbGliL2VzNS1zaGltIl0sZnVuY3Rpb24oZSx0LG4pe2UoIi4vcmVnZXhwIiksZSgiLi9lczUtc2hpbSIpfSksZGVmaW5lKCJhY2UvbGliL3JlZ2V4cCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBvKGUpe3JldHVybihlLmdsb2JhbD8iZyI6IiIpKyhlLmlnbm9yZUNhc2U/ImkiOiIiKSsoZS5tdWx0aWxpbmU/Im0iOiIiKSsoZS5leHRlbmRlZD8ieCI6IiIpKyhlLnN0aWNreT8ieSI6IiIpfWZ1bmN0aW9uIHUoZSx0LG4pe2lmKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKXJldHVybiBlLmluZGV4T2YodCxuKTtmb3IodmFyIHI9bnx8MDtyPGUubGVuZ3RoO3IrKylpZihlW3JdPT09dClyZXR1cm4gcjtyZXR1cm4tMX12YXIgcj17ZXhlYzpSZWdFeHAucHJvdG90eXBlLmV4ZWMsdGVzdDpSZWdFeHAucHJvdG90eXBlLnRlc3QsbWF0Y2g6U3RyaW5nLnByb3RvdHlwZS5tYXRjaCxyZXBsYWNlOlN0cmluZy5wcm90b3R5cGUucmVwbGFjZSxzcGxpdDpTdHJpbmcucHJvdG90eXBlLnNwbGl0fSxpPXIuZXhlYy5jYWxsKC8oKT8/LywiIilbMV09PT11bmRlZmluZWQscz1mdW5jdGlvbigpe3ZhciBlPS9eL2c7cmV0dXJuIHIudGVzdC5jYWxsKGUsIiIpLCFlLmxhc3RJbmRleH0oKTtpZihzJiZpKXJldHVybjtSZWdFeHAucHJvdG90eXBlLmV4ZWM9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5leGVjLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuLGE7aWYodHlwZW9mIGU9PSJzdHJpbmciJiZ0KXshaSYmdC5sZW5ndGg+MSYmdSh0LCIiKT4tMSYmKGE9UmVnRXhwKHRoaXMuc291cmNlLHIucmVwbGFjZS5jYWxsKG8odGhpcyksImciLCIiKSksci5yZXBsYWNlLmNhbGwoZS5zbGljZSh0LmluZGV4KSxhLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoLTI7ZSsrKWFyZ3VtZW50c1tlXT09PXVuZGVmaW5lZCYmKHRbZV09dW5kZWZpbmVkKX0pKTtpZih0aGlzLl94cmVnZXhwJiZ0aGlzLl94cmVnZXhwLmNhcHR1cmVOYW1lcylmb3IodmFyIGY9MTtmPHQubGVuZ3RoO2YrKyluPXRoaXMuX3hyZWdleHAuY2FwdHVyZU5hbWVzW2YtMV0sbiYmKHRbbl09dFtmXSk7IXMmJnRoaXMuZ2xvYmFsJiYhdFswXS5sZW5ndGgmJnRoaXMubGFzdEluZGV4PnQuaW5kZXgmJnRoaXMubGFzdEluZGV4LS19cmV0dXJuIHR9LHN8fChSZWdFeHAucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ci5leGVjLmNhbGwodGhpcyxlKTtyZXR1cm4gdCYmdGhpcy5nbG9iYWwmJiF0WzBdLmxlbmd0aCYmdGhpcy5sYXN0SW5kZXg+dC5pbmRleCYmdGhpcy5sYXN0SW5kZXgtLSwhIXR9KX0pLGRlZmluZSgiYWNlL2xpYi9lczUtc2hpbSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiB2KGUpe3RyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNlbnRpbmVsIix7fSksInNlbnRpbmVsImluIGV9Y2F0Y2godCl7fX1GdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7aWYodHlwZW9mIG4hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgcj1vLmNhbGwoYXJndW1lbnRzLDEpLGk9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgaSl7dmFyIGU9ZnVuY3Rpb24oKXt9O2UucHJvdG90eXBlPW4ucHJvdG90eXBlO3ZhciBzPW5ldyBlLHU9bi5hcHBseShzLHIuY29uY2F0KG8uY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIHUhPT1udWxsJiZPYmplY3QodSk9PT11P3U6c31yZXR1cm4gbi5hcHBseSh0LHIuY29uY2F0KG8uY2FsbChhcmd1bWVudHMpKSl9O3JldHVybiBpfSk7dmFyIHI9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsaT1BcnJheS5wcm90b3R5cGUscz1PYmplY3QucHJvdG90eXBlLG89aS5zbGljZSx1PXIuYmluZChzLnRvU3RyaW5nKSxhPXIuYmluZChzLmhhc093blByb3BlcnR5KSxmLGwsYyxoLHA7aWYocD1hKHMsIl9fZGVmaW5lR2V0dGVyX18iKSlmPXIuYmluZChzLl9fZGVmaW5lR2V0dGVyX18pLGw9ci5iaW5kKHMuX19kZWZpbmVTZXR0ZXJfXyksYz1yLmJpbmQocy5fX2xvb2t1cEdldHRlcl9fKSxoPXIuYmluZChzLl9fbG9va3VwU2V0dGVyX18pO0FycmF5LmlzQXJyYXl8fChBcnJheS5pc0FycmF5PWZ1bmN0aW9uKHQpe3JldHVybiB1KHQpPT0iW29iamVjdCBBcnJheV0ifSksQXJyYXkucHJvdG90eXBlLmZvckVhY2h8fChBcnJheS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9YXJndW1lbnRzWzFdLGk9MCxzPW4ubGVuZ3RoPj4+MDtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7d2hpbGUoaTxzKWkgaW4gbiYmdC5jYWxsKHIsbltpXSxpLG4pLGkrK30pLEFycmF5LnByb3RvdHlwZS5tYXB8fChBcnJheS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKHQpe3ZhciBuPV8odGhpcykscj1uLmxlbmd0aD4+PjAsaT1BcnJheShyKSxzPWFyZ3VtZW50c1sxXTtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBvPTA7bzxyO28rKylvIGluIG4mJihpW29dPXQuY2FsbChzLG5bb10sbyxuKSk7cmV0dXJuIGl9KSxBcnJheS5wcm90b3R5cGUuZmlsdGVyfHwoQXJyYXkucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wLGk9W10scz1hcmd1bWVudHNbMV07aWYodSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgbz0wO288cjtvKyspbyBpbiBuJiZ0LmNhbGwocyxuW29dLG8sbikmJmkucHVzaChuW29dKTtyZXR1cm4gaX0pLEFycmF5LnByb3RvdHlwZS5ldmVyeXx8KEFycmF5LnByb3RvdHlwZS5ldmVyeT1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wLGk9YXJndW1lbnRzWzFdO2lmKHUodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtmb3IodmFyIHM9MDtzPHI7cysrKWlmKHMgaW4gbiYmIXQuY2FsbChpLG5bc10scyxuKSlyZXR1cm4hMTtyZXR1cm4hMH0pLEFycmF5LnByb3RvdHlwZS5zb21lfHwoQXJyYXkucHJvdG90eXBlLnNvbWU9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MCxpPWFyZ3VtZW50c1sxXTtpZih1KHQpIT0iW29iamVjdCBGdW5jdGlvbl0iKXRocm93IG5ldyBUeXBlRXJyb3I7Zm9yKHZhciBzPTA7czxyO3MrKylpZihzIGluIG4mJnQuY2FsbChpLG5bc10scyxuKSlyZXR1cm4hMDtyZXR1cm4hMX0pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2V8fChBcnJheS5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKHQpe3ZhciBuPV8odGhpcykscj1uLmxlbmd0aD4+PjA7aWYodSh0KSE9IltvYmplY3QgRnVuY3Rpb25dIil0aHJvdyBuZXcgVHlwZUVycm9yO2lmKCFyJiZhcmd1bWVudHMubGVuZ3RoPT0xKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGk9MCxzO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpcz1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihpIGluIG4pe3M9bltpKytdO2JyZWFrfWlmKCsraT49cil0aHJvdyBuZXcgVHlwZUVycm9yfXdoaWxlKCEwKTtmb3IoO2k8cjtpKyspaSBpbiBuJiYocz10LmNhbGwodm9pZCAwLHMsbltpXSxpLG4pKTtyZXR1cm4gc30pLEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodHx8KEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodD1mdW5jdGlvbih0KXt2YXIgbj1fKHRoaXMpLHI9bi5sZW5ndGg+Pj4wO2lmKHUodCkhPSJbb2JqZWN0IEZ1bmN0aW9uXSIpdGhyb3cgbmV3IFR5cGVFcnJvcjtpZighciYmYXJndW1lbnRzLmxlbmd0aD09MSl0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBpLHM9ci0xO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpaT1hcmd1bWVudHNbMV07ZWxzZSBkb3tpZihzIGluIG4pe2k9bltzLS1dO2JyZWFrfWlmKC0tczwwKXRocm93IG5ldyBUeXBlRXJyb3J9d2hpbGUoITApO2RvIHMgaW4gdGhpcyYmKGk9dC5jYWxsKHZvaWQgMCxpLG5bc10scyxuKSk7d2hpbGUocy0tKTtyZXR1cm4gaX0pLEFycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MDtpZighcilyZXR1cm4tMTt2YXIgaT0wO2FyZ3VtZW50cy5sZW5ndGg+MSYmKGk9Tyhhcmd1bWVudHNbMV0pKSxpPWk+PTA/aTpNYXRoLm1heCgwLHIraSk7Zm9yKDtpPHI7aSsrKWlmKGkgaW4gbiYmbltpXT09PXQpcmV0dXJuIGk7cmV0dXJuLTF9KSxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Z8fChBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24odCl7dmFyIG49Xyh0aGlzKSxyPW4ubGVuZ3RoPj4+MDtpZighcilyZXR1cm4tMTt2YXIgaT1yLTE7YXJndW1lbnRzLmxlbmd0aD4xJiYoaT1NYXRoLm1pbihpLE8oYXJndW1lbnRzWzFdKSkpLGk9aT49MD9pOnItTWF0aC5hYnMoaSk7Zm9yKDtpPj0wO2ktLSlpZihpIGluIG4mJnQ9PT1uW2ldKXJldHVybiBpO3JldHVybi0xfSksT2JqZWN0LmdldFByb3RvdHlwZU9mfHwoT2JqZWN0LmdldFByb3RvdHlwZU9mPWZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8KHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6cyl9KTtpZighT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcil7dmFyIGQ9Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgY2FsbGVkIG9uIGEgbm9uLW9iamVjdDogIjtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWZ1bmN0aW9uKHQsbil7aWYodHlwZW9mIHQhPSJvYmplY3QiJiZ0eXBlb2YgdCE9ImZ1bmN0aW9uInx8dD09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihkK3QpO2lmKCFhKHQsbikpcmV0dXJuO3ZhciByLGksbztyPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07aWYocCl7dmFyIHU9dC5fX3Byb3RvX187dC5fX3Byb3RvX189czt2YXIgaT1jKHQsbiksbz1oKHQsbik7dC5fX3Byb3RvX189dTtpZihpfHxvKXJldHVybiBpJiYoci5nZXQ9aSksbyYmKHIuc2V0PW8pLHJ9cmV0dXJuIHIudmFsdWU9dFtuXSxyfX1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KX0pLE9iamVjdC5jcmVhdGV8fChPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKHQsbil7dmFyIHI7aWYodD09PW51bGwpcj17X19wcm90b19fOm51bGx9O2Vsc2V7aWYodHlwZW9mIHQhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoInR5cGVvZiBwcm90b3R5cGVbIit0eXBlb2YgdCsiXSAhPSAnb2JqZWN0JyIpO3ZhciBpPWZ1bmN0aW9uKCl7fTtpLnByb3RvdHlwZT10LHI9bmV3IGksci5fX3Byb3RvX189dH1yZXR1cm4gbiE9PXZvaWQgMCYmT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocixuKSxyfSk7aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KXt2YXIgbT12KHt9KSxnPXR5cGVvZiBkb2N1bWVudD09InVuZGVmaW5lZCJ8fHYoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2lmKCFtfHwhZyl2YXIgeT1PYmplY3QuZGVmaW5lUHJvcGVydHl9aWYoIU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8eSl7dmFyIGI9IlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0OiAiLHc9Ik9iamVjdC5kZWZpbmVQcm9wZXJ0eSBjYWxsZWQgb24gbm9uLW9iamVjdDogIixFPSJnZXR0ZXJzICYgc2V0dGVycyBjYW4gbm90IGJlIGRlZmluZWQgb24gdGhpcyBqYXZhc2NyaXB0IGVuZ2luZSI7T2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKHQsbixyKXtpZih0eXBlb2YgdCE9Im9iamVjdCImJnR5cGVvZiB0IT0iZnVuY3Rpb24ifHx0PT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKHcrdCk7aWYodHlwZW9mIHIhPSJvYmplY3QiJiZ0eXBlb2YgciE9ImZ1bmN0aW9uInx8cj09PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihiK3IpO2lmKHkpdHJ5e3JldHVybiB5LmNhbGwoT2JqZWN0LHQsbixyKX1jYXRjaChpKXt9aWYoYShyLCJ2YWx1ZSIpKWlmKHAmJihjKHQsbil8fGgodCxuKSkpe3ZhciBvPXQuX19wcm90b19fO3QuX19wcm90b19fPXMsZGVsZXRlIHRbbl0sdFtuXT1yLnZhbHVlLHQuX19wcm90b19fPW99ZWxzZSB0W25dPXIudmFsdWU7ZWxzZXtpZighcCl0aHJvdyBuZXcgVHlwZUVycm9yKEUpO2EociwiZ2V0IikmJmYodCxuLHIuZ2V0KSxhKHIsInNldCIpJiZsKHQsbixyLnNldCl9cmV0dXJuIHR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzfHwoT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24odCxuKXtmb3IodmFyIHIgaW4gbilhKG4scikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIsbltyXSk7cmV0dXJuIHR9KSxPYmplY3Quc2VhbHx8KE9iamVjdC5zZWFsPWZ1bmN0aW9uKHQpe3JldHVybiB0fSksT2JqZWN0LmZyZWV6ZXx8KE9iamVjdC5mcmVlemU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KTt0cnl7T2JqZWN0LmZyZWV6ZShmdW5jdGlvbigpe30pfWNhdGNoKFMpe09iamVjdC5mcmVlemU9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uOnQobil9fShPYmplY3QuZnJlZXplKX1PYmplY3QucHJldmVudEV4dGVuc2lvbnN8fChPYmplY3QucHJldmVudEV4dGVuc2lvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHR9KSxPYmplY3QuaXNTZWFsZWR8fChPYmplY3QuaXNTZWFsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuITF9KSxPYmplY3QuaXNGcm96ZW58fChPYmplY3QuaXNGcm96ZW49ZnVuY3Rpb24odCl7cmV0dXJuITF9KSxPYmplY3QuaXNFeHRlbnNpYmxlfHwoT2JqZWN0LmlzRXh0ZW5zaWJsZT1mdW5jdGlvbih0KXtpZihPYmplY3QodCk9PT10KXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIG49IiI7d2hpbGUoYSh0LG4pKW4rPSI/Ijt0W25dPSEwO3ZhciByPWEodCxuKTtyZXR1cm4gZGVsZXRlIHRbbl0scn0pO2lmKCFPYmplY3Qua2V5cyl7dmFyIHg9ITAsVD1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLE49VC5sZW5ndGg7Zm9yKHZhciBDIGlue3RvU3RyaW5nOm51bGx9KXg9ITE7T2JqZWN0LmtleXM9ZnVuY3Rpb24gRChlKXtpZih0eXBlb2YgZSE9Im9iamVjdCImJnR5cGVvZiBlIT0iZnVuY3Rpb24ifHxlPT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIEQ9W107Zm9yKHZhciB0IGluIGUpYShlLHQpJiZELnB1c2godCk7aWYoeClmb3IodmFyIG49MCxyPU47bjxyO24rKyl7dmFyIGk9VFtuXTthKGUsaSkmJkQucHVzaChpKX1yZXR1cm4gRH19aWYoIURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nfHwobmV3IERhdGUoLTYyMTk4NzU1MmU1KSkudG9JU09TdHJpbmcoKS5pbmRleE9mKCItMDAwMDAxIik9PT0tMSlEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3ZhciB0LG4scixpO2lmKCFpc0Zpbml0ZSh0aGlzKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcjt0PVt0aGlzLmdldFVUQ01vbnRoKCkrMSx0aGlzLmdldFVUQ0RhdGUoKSx0aGlzLmdldFVUQ0hvdXJzKCksdGhpcy5nZXRVVENNaW51dGVzKCksdGhpcy5nZXRVVENTZWNvbmRzKCldLGk9dGhpcy5nZXRVVENGdWxsWWVhcigpLGk9KGk8MD8iLSI6aT45OTk5PyIrIjoiIikrKCIwMDAwMCIrTWF0aC5hYnMoaSkpLnNsaWNlKDA8PWkmJmk8PTk5OTk/LTQ6LTYpLG49dC5sZW5ndGg7d2hpbGUobi0tKXI9dFtuXSxyPDEwJiYodFtuXT0iMCIrcik7cmV0dXJuIGkrIi0iK3Quc2xpY2UoMCwyKS5qb2luKCItIikrIlQiK3Quc2xpY2UoMikuam9pbigiOiIpKyIuIisoIjAwMCIrdGhpcy5nZXRVVENNaWxsaXNlY29uZHMoKSkuc2xpY2UoLTMpKyJaIn07RGF0ZS5ub3d8fChEYXRlLm5vdz1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSksRGF0ZS5wcm90b3R5cGUudG9KU09OfHwoRGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0aGlzLnRvSVNPU3RyaW5nIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3I7cmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKX0pLERhdGUucGFyc2UoIisyNzU3NjAtMDktMTNUMDA6MDA6MDAuMDAwWiIpIT09ODY0ZTEzJiYoRGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbiBpKHQsbixyLHMsbyx1LGEpe3ZhciBmPWFyZ3VtZW50cy5sZW5ndGg7aWYodGhpcyBpbnN0YW5jZW9mIGUpe3ZhciBsPWY9PTEmJlN0cmluZyh0KT09PXQ/bmV3IGUoaS5wYXJzZSh0KSk6Zj49Nz9uZXcgZSh0LG4scixzLG8sdSxhKTpmPj02P25ldyBlKHQsbixyLHMsbyx1KTpmPj01P25ldyBlKHQsbixyLHMsbyk6Zj49ND9uZXcgZSh0LG4scixzKTpmPj0zP25ldyBlKHQsbixyKTpmPj0yP25ldyBlKHQsbik6Zj49MT9uZXcgZSh0KTpuZXcgZTtyZXR1cm4gbC5jb25zdHJ1Y3Rvcj1pLGx9cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxuPW5ldyBSZWdFeHAoIl4oXFxkezR9fFsrLV1cXGR7Nn0pKD86LShcXGR7Mn0pKD86LShcXGR7Mn0pKD86VChcXGR7Mn0pOihcXGR7Mn0pKD86OihcXGR7Mn0pKD86XFwuKFxcZHszfSkpPyk/KD86WnwoPzooWy0rXSkoXFxkezJ9KTooXFxkezJ9KSkpPyk/KT8pPyQiKTtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl07cmV0dXJuIHQubm93PWUubm93LHQuVVRDPWUuVVRDLHQucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wYXJzZT1mdW5jdGlvbihyKXt2YXIgaT1uLmV4ZWMocik7aWYoaSl7aS5zaGlmdCgpO2Zvcih2YXIgcz0xO3M8NztzKyspaVtzXT0rKGlbc118fChzPDM/MTowKSkscz09MSYmaVtzXS0tO3ZhciBvPStpLnBvcCgpLHU9K2kucG9wKCksYT1pLnBvcCgpLGY9MDtpZihhKXtpZih1PjIzfHxvPjU5KXJldHVybiBOYU47Zj0odSo2MCtvKSo2ZTQqKGE9PSIrIj8tMToxKX12YXIgbD0raVswXTtyZXR1cm4gMDw9bCYmbDw9OTk/KGlbMF09bCs0MDAsZS5VVEMuYXBwbHkodGhpcyxpKStmLTEyNjIyNzgwOGU1KTplLlVUQy5hcHBseSh0aGlzLGkpK2Z9cmV0dXJuIGUucGFyc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0fShEYXRlKSk7dmFyIGs9IglcbgtcZlxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI577u/IjtpZighU3RyaW5nLnByb3RvdHlwZS50cmltfHxrLnRyaW0oKSl7az0iWyIraysiXSI7dmFyIEw9bmV3IFJlZ0V4cCgiXiIraytrKyIqIiksQT1uZXcgUmVnRXhwKGsraysiKiQiKTtTdHJpbmcucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMpLnJlcGxhY2UoTCwiIikucmVwbGFjZShBLCIiKX19dmFyIE89ZnVuY3Rpb24oZSl7cmV0dXJuIGU9K2UsZSE9PWU/ZT0wOmUhPT0wJiZlIT09MS8wJiZlIT09LTEvMCYmKGU9KGU+MHx8LTEpKk1hdGguZmxvb3IoTWF0aC5hYnMoZSkpKSxlfSxNPSJhIlswXSE9ImEiLF89ZnVuY3Rpb24oZSl7aWYoZT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yO3JldHVybiBNJiZ0eXBlb2YgZT09InN0cmluZyImJmU/ZS5zcGxpdCgiIik6T2JqZWN0KGUpfX0pLGRlZmluZSgiYWNlL2xpYi9ldmVudF9lbWl0dGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt9O3IuX2VtaXQ9ci5fZGlzcGF0Y2hFdmVudD1mdW5jdGlvbihlLHQpe3RoaXMuX2V2ZW50UmVnaXN0cnk9dGhpcy5fZXZlbnRSZWdpc3RyeXx8e30sdGhpcy5fZGVmYXVsdEhhbmRsZXJzPXRoaXMuX2RlZmF1bHRIYW5kbGVyc3x8e307dmFyIG49dGhpcy5fZXZlbnRSZWdpc3RyeVtlXXx8W10scj10aGlzLl9kZWZhdWx0SGFuZGxlcnNbZV07aWYoIW4ubGVuZ3RoJiYhcilyZXR1cm47dD10fHx7fSx0LnR5cGU9ZSx0LnN0b3BQcm9wYWdhdGlvbnx8KHQuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7dGhpcy5wcm9wYWdhdGlvblN0b3BwZWQ9ITB9KSx0LnByZXZlbnREZWZhdWx0fHwodC5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMH0pO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXtuW2ldKHQpO2lmKHQucHJvcGFnYXRpb25TdG9wcGVkKWJyZWFrfWlmKHImJiF0LmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuIHIodCl9LHIuc2V0RGVmYXVsdEhhbmRsZXI9ZnVuY3Rpb24oZSx0KXt0aGlzLl9kZWZhdWx0SGFuZGxlcnM9dGhpcy5fZGVmYXVsdEhhbmRsZXJzfHx7fTtpZih0aGlzLl9kZWZhdWx0SGFuZGxlcnNbZV0pdGhyb3cgbmV3IEVycm9yKCJUaGUgZGVmYXVsdCBoYW5kbGVyIGZvciAnIitlKyInIGlzIGFscmVhZHkgc2V0Iik7dGhpcy5fZGVmYXVsdEhhbmRsZXJzW2VdPXR9LHIub249ci5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7dGhpcy5fZXZlbnRSZWdpc3RyeT10aGlzLl9ldmVudFJlZ2lzdHJ5fHx7fTt2YXIgbj10aGlzLl9ldmVudFJlZ2lzdHJ5W2VdO2lmKCFuKXZhciBuPXRoaXMuX2V2ZW50UmVnaXN0cnlbZV09W107bi5pbmRleE9mKHQpPT0tMSYmbi5wdXNoKHQpfSxyLnJlbW92ZUxpc3RlbmVyPXIucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3RoaXMuX2V2ZW50UmVnaXN0cnk9dGhpcy5fZXZlbnRSZWdpc3RyeXx8e307dmFyIG49dGhpcy5fZXZlbnRSZWdpc3RyeVtlXTtpZighbilyZXR1cm47dmFyIHI9bi5pbmRleE9mKHQpO3IhPT0tMSYmbi5zcGxpY2UociwxKX0sci5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7dGhpcy5fZXZlbnRSZWdpc3RyeSYmKHRoaXMuX2V2ZW50UmVnaXN0cnlbZV09W10pfSx0LkV2ZW50RW1pdHRlcj1yfSksZGVmaW5lKCJhY2UvbGliL29vcCIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXt0LmluaGVyaXRzPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt9O3JldHVybiBmdW5jdGlvbih0LG4pe2UucHJvdG90eXBlPW4ucHJvdG90eXBlLHQuc3VwZXJfPW4ucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyBlLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9fSgpLHQubWl4aW49ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl19LHQuaW1wbGVtZW50PWZ1bmN0aW9uKGUsbil7dC5taXhpbihlLG4pfX0pLGRlZmluZSgiYWNlL21vZGUveHF1ZXJ5X3dvcmtlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9saWIvb29wIiwiYWNlL3dvcmtlci9taXJyb3IiLCJhY2UvbW9kZS94cXVlcnkveHF1ZXJ5IiwiYWNlL3Rva2VuaXplciIsImFjZS9tb2RlL3hxdWVyeV9oaWdobGlnaHRfcnVsZXMiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL29vcCIpLGk9ZSgiLi4vd29ya2VyL21pcnJvciIpLk1pcnJvcixzPWUoIi4uL21vZGUveHF1ZXJ5L3hxdWVyeSIpLG89ZSgiLi4vdG9rZW5pemVyIikuVG9rZW5pemVyLHU9ZSgiLi94cXVlcnlfaGlnaGxpZ2h0X3J1bGVzIikuWFF1ZXJ5SGlnaGxpZ2h0UnVsZXM7d2luZG93LmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oKXt9O3ZhciBhPXQuWFF1ZXJ5V29ya2VyPWZ1bmN0aW9uKGUpe2kuY2FsbCh0aGlzLGUpLHRoaXMuc2V0VGltZW91dCgyMDApfTtyLmluaGVyaXRzKGEsaSksZnVuY3Rpb24oKXt0aGlzLm9uVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5zZW5kZXIuZW1pdCgic3RhcnQiKTt2YXIgZT10aGlzLmRvYy5nZXRWYWx1ZSgpLHQ9cy5nZXRQYXJzZXIoZSksbj10LnBfTW9kdWxlKCk7aWYodC5oYXNFcnJvcnMoKSl7dmFyIHI9dC5nZXRFcnJvcnMoKSxpPTA7Zm9yKGkgaW4gcil7dmFyIGE9cltpXTt0aGlzLnNlbmRlci5lbWl0KCJlcnJvciIse3JvdzphLmxpbmUsY29sdW1uOmEuY29sdW1uLHRleHQ6YS5tZXNzYWdlLHR5cGU6ImVycm9yIn0pfX1lbHNlIHRoaXMuc2VuZGVyLmVtaXQoIm9rIik7dC5oaWdobGlnaHRlci50b2tlbml6ZXI9bmV3IG8oKG5ldyB1KS5nZXRSdWxlcygpKTt2YXIgZj10LmhpZ2hsaWdodGVyLmdldFRva2VucygpO3RoaXMuc2VuZGVyLmVtaXQoImhpZ2hsaWdodCIsZil9fS5jYWxsKGEucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL3dvcmtlci9taXJyb3IiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvZG9jdW1lbnQiLCJhY2UvbGliL2xhbmciXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vZG9jdW1lbnQiKS5Eb2N1bWVudCxpPWUoIi4uL2xpYi9sYW5nIikscz10Lk1pcnJvcj1mdW5jdGlvbihlKXt0aGlzLnNlbmRlcj1lO3ZhciB0PXRoaXMuZG9jPW5ldyByKCIiKSxuPXRoaXMuZGVmZXJyZWRVcGRhdGU9aS5kZWZlcnJlZENhbGwodGhpcy5vblVwZGF0ZS5iaW5kKHRoaXMpKSxzPXRoaXM7ZS5vbigiY2hhbmdlIixmdW5jdGlvbihlKXt0LmFwcGx5RGVsdGFzKFtlLmRhdGFdKSxuLnNjaGVkdWxlKHMuJHRpbWVvdXQpfSl9OyhmdW5jdGlvbigpe3RoaXMuJHRpbWVvdXQ9NTAwLHRoaXMuc2V0VGltZW91dD1mdW5jdGlvbihlKXt0aGlzLiR0aW1lb3V0PWV9LHRoaXMuc2V0VmFsdWU9ZnVuY3Rpb24oZSl7dGhpcy5kb2Muc2V0VmFsdWUoZSksdGhpcy5kZWZlcnJlZFVwZGF0ZS5zY2hlZHVsZSh0aGlzLiR0aW1lb3V0KX0sdGhpcy5nZXRWYWx1ZT1mdW5jdGlvbihlKXt0aGlzLnNlbmRlci5jYWxsYmFjayh0aGlzLmRvYy5nZXRWYWx1ZSgpLGUpfSx0aGlzLm9uVXBkYXRlPWZ1bmN0aW9uKCl7fX0pLmNhbGwocy5wcm90b3R5cGUpfSksZGVmaW5lKCJhY2UvZG9jdW1lbnQiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvZXZlbnRfZW1pdHRlciIsImFjZS9yYW5nZSIsImFjZS9hbmNob3IiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9saWIvb29wIiksaT1lKCIuL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLHM9ZSgiLi9yYW5nZSIpLlJhbmdlLG89ZSgiLi9hbmNob3IiKS5BbmNob3IsdT1mdW5jdGlvbihlKXt0aGlzLiRsaW5lcz1bXSxlLmxlbmd0aD09MD90aGlzLiRsaW5lcz1bIiJdOkFycmF5LmlzQXJyYXkoZSk/dGhpcy5pbnNlcnRMaW5lcygwLGUpOnRoaXMuaW5zZXJ0KHtyb3c6MCxjb2x1bW46MH0sZSl9OyhmdW5jdGlvbigpe3IuaW1wbGVtZW50KHRoaXMsaSksdGhpcy5zZXRWYWx1ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldExlbmd0aCgpO3RoaXMucmVtb3ZlKG5ldyBzKDAsMCx0LHRoaXMuZ2V0TGluZSh0LTEpLmxlbmd0aCkpLHRoaXMuaW5zZXJ0KHtyb3c6MCxjb2x1bW46MH0sZSl9LHRoaXMuZ2V0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRBbGxMaW5lcygpLmpvaW4odGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCkpfSx0aGlzLmNyZWF0ZUFuY2hvcj1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgbyh0aGlzLGUsdCl9LCJhYWEiLnNwbGl0KC9hLykubGVuZ3RoPT0wP3RoaXMuJHNwbGl0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1xyXG58XHIvZywiXG4iKS5zcGxpdCgiXG4iKX06dGhpcy4kc3BsaXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3BsaXQoL1xyXG58XHJ8XG4vKX0sdGhpcy4kZGV0ZWN0TmV3TGluZT1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC9eLio/KFxyXG58XHJ8XG4pL20pO3Q/dGhpcy4kYXV0b05ld0xpbmU9dFsxXTp0aGlzLiRhdXRvTmV3TGluZT0iXG4ifSx0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXI9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy4kbmV3TGluZU1vZGUpe2Nhc2Uid2luZG93cyI6cmV0dXJuIlxyXG4iO2Nhc2UidW5peCI6cmV0dXJuIlxuIjtjYXNlImF1dG8iOnJldHVybiB0aGlzLiRhdXRvTmV3TGluZX19LHRoaXMuJGF1dG9OZXdMaW5lPSJcbiIsdGhpcy4kbmV3TGluZU1vZGU9ImF1dG8iLHRoaXMuc2V0TmV3TGluZU1vZGU9ZnVuY3Rpb24oZSl7aWYodGhpcy4kbmV3TGluZU1vZGU9PT1lKXJldHVybjt0aGlzLiRuZXdMaW5lTW9kZT1lfSx0aGlzLmdldE5ld0xpbmVNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJG5ld0xpbmVNb2RlfSx0aGlzLmlzTmV3TGluZT1mdW5jdGlvbihlKXtyZXR1cm4gZT09IlxyXG4ifHxlPT0iXHIifHxlPT0iXG4ifSx0aGlzLmdldExpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuJGxpbmVzW2VdfHwiIn0sdGhpcy5nZXRMaW5lcz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLiRsaW5lcy5zbGljZShlLHQrMSl9LHRoaXMuZ2V0QWxsTGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRMaW5lcygwLHRoaXMuZ2V0TGVuZ3RoKCkpfSx0aGlzLmdldExlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRsaW5lcy5sZW5ndGh9LHRoaXMuZ2V0VGV4dFJhbmdlPWZ1bmN0aW9uKGUpe2lmKGUuc3RhcnQucm93PT1lLmVuZC5yb3cpcmV0dXJuIHRoaXMuJGxpbmVzW2Uuc3RhcnQucm93XS5zdWJzdHJpbmcoZS5zdGFydC5jb2x1bW4sZS5lbmQuY29sdW1uKTt2YXIgdD10aGlzLmdldExpbmVzKGUuc3RhcnQucm93KzEsZS5lbmQucm93LTEpO3JldHVybiB0LnVuc2hpZnQoKHRoaXMuJGxpbmVzW2Uuc3RhcnQucm93XXx8IiIpLnN1YnN0cmluZyhlLnN0YXJ0LmNvbHVtbikpLHQucHVzaCgodGhpcy4kbGluZXNbZS5lbmQucm93XXx8IiIpLnN1YnN0cmluZygwLGUuZW5kLmNvbHVtbikpLHQuam9pbih0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSl9LHRoaXMuJGNsaXBQb3NpdGlvbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldExlbmd0aCgpO3JldHVybiBlLnJvdz49dCYmKGUucm93PU1hdGgubWF4KDAsdC0xKSxlLmNvbHVtbj10aGlzLmdldExpbmUodC0xKS5sZW5ndGgpLGV9LHRoaXMuaW5zZXJ0PWZ1bmN0aW9uKGUsdCl7aWYoIXR8fHQubGVuZ3RoPT09MClyZXR1cm4gZTtlPXRoaXMuJGNsaXBQb3NpdGlvbihlKSx0aGlzLmdldExlbmd0aCgpPD0xJiZ0aGlzLiRkZXRlY3ROZXdMaW5lKHQpO3ZhciBuPXRoaXMuJHNwbGl0KHQpLHI9bi5zcGxpY2UoMCwxKVswXSxpPW4ubGVuZ3RoPT0wP251bGw6bi5zcGxpY2Uobi5sZW5ndGgtMSwxKVswXTtyZXR1cm4gZT10aGlzLmluc2VydEluTGluZShlLHIpLGkhPT1udWxsJiYoZT10aGlzLmluc2VydE5ld0xpbmUoZSksZT10aGlzLmluc2VydExpbmVzKGUucm93LG4pLGU9dGhpcy5pbnNlcnRJbkxpbmUoZSxpfHwiIikpLGV9LHRoaXMuaW5zZXJ0TGluZXM9ZnVuY3Rpb24oZSx0KXtpZih0Lmxlbmd0aD09MClyZXR1cm57cm93OmUsY29sdW1uOjB9O2lmKHQubGVuZ3RoPjY1NTM1KXt2YXIgbj10aGlzLmluc2VydExpbmVzKGUsdC5zbGljZSg2NTUzNSkpO3Q9dC5zbGljZSgwLDY1NTM1KX12YXIgcj1bZSwwXTtyLnB1c2guYXBwbHkocix0KSx0aGlzLiRsaW5lcy5zcGxpY2UuYXBwbHkodGhpcy4kbGluZXMscik7dmFyIGk9bmV3IHMoZSwwLGUrdC5sZW5ndGgsMCksbz17YWN0aW9uOiJpbnNlcnRMaW5lcyIscmFuZ2U6aSxsaW5lczp0fTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTpvfSksbnx8aS5lbmR9LHRoaXMuaW5zZXJ0TmV3TGluZT1mdW5jdGlvbihlKXtlPXRoaXMuJGNsaXBQb3NpdGlvbihlKTt2YXIgdD10aGlzLiRsaW5lc1tlLnJvd118fCIiO3RoaXMuJGxpbmVzW2Uucm93XT10LnN1YnN0cmluZygwLGUuY29sdW1uKSx0aGlzLiRsaW5lcy5zcGxpY2UoZS5yb3crMSwwLHQuc3Vic3RyaW5nKGUuY29sdW1uLHQubGVuZ3RoKSk7dmFyIG49e3JvdzplLnJvdysxLGNvbHVtbjowfSxyPXthY3Rpb246Imluc2VydFRleHQiLHJhbmdlOnMuZnJvbVBvaW50cyhlLG4pLHRleHQ6dGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCl9O3JldHVybiB0aGlzLl9lbWl0KCJjaGFuZ2UiLHtkYXRhOnJ9KSxufSx0aGlzLmluc2VydEluTGluZT1mdW5jdGlvbihlLHQpe2lmKHQubGVuZ3RoPT0wKXJldHVybiBlO3ZhciBuPXRoaXMuJGxpbmVzW2Uucm93XXx8IiI7dGhpcy4kbGluZXNbZS5yb3ddPW4uc3Vic3RyaW5nKDAsZS5jb2x1bW4pK3Qrbi5zdWJzdHJpbmcoZS5jb2x1bW4pO3ZhciByPXtyb3c6ZS5yb3csY29sdW1uOmUuY29sdW1uK3QubGVuZ3RofSxpPXthY3Rpb246Imluc2VydFRleHQiLHJhbmdlOnMuZnJvbVBvaW50cyhlLHIpLHRleHQ6dH07cmV0dXJuIHRoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6aX0pLHJ9LHRoaXMucmVtb3ZlPWZ1bmN0aW9uKGUpe2Uuc3RhcnQ9dGhpcy4kY2xpcFBvc2l0aW9uKGUuc3RhcnQpLGUuZW5kPXRoaXMuJGNsaXBQb3NpdGlvbihlLmVuZCk7aWYoZS5pc0VtcHR5KCkpcmV0dXJuIGUuc3RhcnQ7dmFyIHQ9ZS5zdGFydC5yb3csbj1lLmVuZC5yb3c7aWYoZS5pc011bHRpTGluZSgpKXt2YXIgcj1lLnN0YXJ0LmNvbHVtbj09MD90OnQrMSxpPW4tMTtlLmVuZC5jb2x1bW4+MCYmdGhpcy5yZW1vdmVJbkxpbmUobiwwLGUuZW5kLmNvbHVtbiksaT49ciYmdGhpcy5yZW1vdmVMaW5lcyhyLGkpLHIhPXQmJih0aGlzLnJlbW92ZUluTGluZSh0LGUuc3RhcnQuY29sdW1uLHRoaXMuZ2V0TGluZSh0KS5sZW5ndGgpLHRoaXMucmVtb3ZlTmV3TGluZShlLnN0YXJ0LnJvdykpfWVsc2UgdGhpcy5yZW1vdmVJbkxpbmUodCxlLnN0YXJ0LmNvbHVtbixlLmVuZC5jb2x1bW4pO3JldHVybiBlLnN0YXJ0fSx0aGlzLnJlbW92ZUluTGluZT1mdW5jdGlvbihlLHQsbil7aWYodD09bilyZXR1cm47dmFyIHI9bmV3IHMoZSx0LGUsbiksaT10aGlzLmdldExpbmUoZSksbz1pLnN1YnN0cmluZyh0LG4pLHU9aS5zdWJzdHJpbmcoMCx0KStpLnN1YnN0cmluZyhuLGkubGVuZ3RoKTt0aGlzLiRsaW5lcy5zcGxpY2UoZSwxLHUpO3ZhciBhPXthY3Rpb246InJlbW92ZVRleHQiLHJhbmdlOnIsdGV4dDpvfTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTphfSksci5zdGFydH0sdGhpcy5yZW1vdmVMaW5lcz1mdW5jdGlvbihlLHQpe3ZhciBuPW5ldyBzKGUsMCx0KzEsMCkscj10aGlzLiRsaW5lcy5zcGxpY2UoZSx0LWUrMSksaT17YWN0aW9uOiJyZW1vdmVMaW5lcyIscmFuZ2U6bixubDp0aGlzLmdldE5ld0xpbmVDaGFyYWN0ZXIoKSxsaW5lczpyfTtyZXR1cm4gdGhpcy5fZW1pdCgiY2hhbmdlIix7ZGF0YTppfSkscn0sdGhpcy5yZW1vdmVOZXdMaW5lPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0TGluZShlKSxuPXRoaXMuZ2V0TGluZShlKzEpLHI9bmV3IHMoZSx0Lmxlbmd0aCxlKzEsMCksaT10K247dGhpcy4kbGluZXMuc3BsaWNlKGUsMixpKTt2YXIgbz17YWN0aW9uOiJyZW1vdmVUZXh0IixyYW5nZTpyLHRleHQ6dGhpcy5nZXROZXdMaW5lQ2hhcmFjdGVyKCl9O3RoaXMuX2VtaXQoImNoYW5nZSIse2RhdGE6b30pfSx0aGlzLnJlcGxhY2U9ZnVuY3Rpb24oZSx0KXtpZih0Lmxlbmd0aD09MCYmZS5pc0VtcHR5KCkpcmV0dXJuIGUuc3RhcnQ7aWYodD09dGhpcy5nZXRUZXh0UmFuZ2UoZSkpcmV0dXJuIGUuZW5kO3RoaXMucmVtb3ZlKGUpO2lmKHQpdmFyIG49dGhpcy5pbnNlcnQoZS5zdGFydCx0KTtlbHNlIG49ZS5zdGFydDtyZXR1cm4gbn0sdGhpcy5hcHBseURlbHRhcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG49ZVt0XSxyPXMuZnJvbVBvaW50cyhuLnJhbmdlLnN0YXJ0LG4ucmFuZ2UuZW5kKTtuLmFjdGlvbj09Imluc2VydExpbmVzIj90aGlzLmluc2VydExpbmVzKHIuc3RhcnQucm93LG4ubGluZXMpOm4uYWN0aW9uPT0iaW5zZXJ0VGV4dCI/dGhpcy5pbnNlcnQoci5zdGFydCxuLnRleHQpOm4uYWN0aW9uPT0icmVtb3ZlTGluZXMiP3RoaXMucmVtb3ZlTGluZXMoci5zdGFydC5yb3csci5lbmQucm93LTEpOm4uYWN0aW9uPT0icmVtb3ZlVGV4dCImJnRoaXMucmVtb3ZlKHIpfX0sdGhpcy5yZXZlcnREZWx0YXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUubGVuZ3RoLTE7dD49MDt0LS0pe3ZhciBuPWVbdF0scj1zLmZyb21Qb2ludHMobi5yYW5nZS5zdGFydCxuLnJhbmdlLmVuZCk7bi5hY3Rpb249PSJpbnNlcnRMaW5lcyI/dGhpcy5yZW1vdmVMaW5lcyhyLnN0YXJ0LnJvdyxyLmVuZC5yb3ctMSk6bi5hY3Rpb249PSJpbnNlcnRUZXh0Ij90aGlzLnJlbW92ZShyKTpuLmFjdGlvbj09InJlbW92ZUxpbmVzIj90aGlzLmluc2VydExpbmVzKHIuc3RhcnQucm93LG4ubGluZXMpOm4uYWN0aW9uPT0icmVtb3ZlVGV4dCImJnRoaXMuaW5zZXJ0KHIuc3RhcnQsbi50ZXh0KX19fSkuY2FsbCh1LnByb3RvdHlwZSksdC5Eb2N1bWVudD11fSksZGVmaW5lKCJhY2UvcmFuZ2UiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZnVuY3Rpb24oZSx0LG4scil7dGhpcy5zdGFydD17cm93OmUsY29sdW1uOnR9LHRoaXMuZW5kPXtyb3c6bixjb2x1bW46cn19OyhmdW5jdGlvbigpe3RoaXMuaXNFcXVhbD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PWUuc3RhcnQucm93JiZ0aGlzLmVuZC5yb3c9PWUuZW5kLnJvdyYmdGhpcy5zdGFydC5jb2x1bW49PWUuc3RhcnQuY29sdW1uJiZ0aGlzLmVuZC5jb2x1bW49PWUuZW5kLmNvbHVtbn0sdGhpcy50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJSYW5nZTogWyIrdGhpcy5zdGFydC5yb3crIi8iK3RoaXMuc3RhcnQuY29sdW1uKyJdIC0+IFsiK3RoaXMuZW5kLnJvdysiLyIrdGhpcy5lbmQuY29sdW1uKyJdIn0sdGhpcy5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNvbXBhcmUoZSx0KT09MH0sdGhpcy5jb21wYXJlUmFuZ2U9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLmVuZCxyPWUuc3RhcnQ7cmV0dXJuIHQ9dGhpcy5jb21wYXJlKG4ucm93LG4uY29sdW1uKSx0PT0xPyh0PXRoaXMuY29tcGFyZShyLnJvdyxyLmNvbHVtbiksdD09MT8yOnQ9PTA/MTowKTp0PT0tMT8tMjoodD10aGlzLmNvbXBhcmUoci5yb3csci5jb2x1bW4pLHQ9PS0xPy0xOnQ9PTE/NDI6MCl9LHRoaXMuY29tcGFyZVBvaW50PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNvbXBhcmUoZS5yb3csZS5jb2x1bW4pfSx0aGlzLmNvbnRhaW5zUmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29tcGFyZVBvaW50KGUuc3RhcnQpPT0wJiZ0aGlzLmNvbXBhcmVQb2ludChlLmVuZCk9PTB9LHRoaXMuaW50ZXJzZWN0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNvbXBhcmVSYW5nZShlKTtyZXR1cm4gdD09LTF8fHQ9PTB8fHQ9PTF9LHRoaXMuaXNFbmQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lbmQucm93PT1lJiZ0aGlzLmVuZC5jb2x1bW49PXR9LHRoaXMuaXNTdGFydD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnN0YXJ0LnJvdz09ZSYmdGhpcy5zdGFydC5jb2x1bW49PXR9LHRoaXMuc2V0U3RhcnQ9ZnVuY3Rpb24oZSx0KXt0eXBlb2YgZT09Im9iamVjdCI/KHRoaXMuc3RhcnQuY29sdW1uPWUuY29sdW1uLHRoaXMuc3RhcnQucm93PWUucm93KToodGhpcy5zdGFydC5yb3c9ZSx0aGlzLnN0YXJ0LmNvbHVtbj10KX0sdGhpcy5zZXRFbmQ9ZnVuY3Rpb24oZSx0KXt0eXBlb2YgZT09Im9iamVjdCI/KHRoaXMuZW5kLmNvbHVtbj1lLmNvbHVtbix0aGlzLmVuZC5yb3c9ZS5yb3cpOih0aGlzLmVuZC5yb3c9ZSx0aGlzLmVuZC5jb2x1bW49dCl9LHRoaXMuaW5zaWRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuY29tcGFyZShlLHQpPT0wP3RoaXMuaXNFbmQoZSx0KXx8dGhpcy5pc1N0YXJ0KGUsdCk/ITE6ITA6ITF9LHRoaXMuaW5zaWRlU3RhcnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jb21wYXJlKGUsdCk9PTA/dGhpcy5pc0VuZChlLHQpPyExOiEwOiExfSx0aGlzLmluc2lkZUVuZD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNvbXBhcmUoZSx0KT09MD90aGlzLmlzU3RhcnQoZSx0KT8hMTohMDohMX0sdGhpcy5jb21wYXJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIXRoaXMuaXNNdWx0aUxpbmUoKSYmZT09PXRoaXMuc3RhcnQucm93P3Q8dGhpcy5zdGFydC5jb2x1bW4/LTE6dD50aGlzLmVuZC5jb2x1bW4/MTowOmU8dGhpcy5zdGFydC5yb3c/LTE6ZT50aGlzLmVuZC5yb3c/MTp0aGlzLnN0YXJ0LnJvdz09PWU/dD49dGhpcy5zdGFydC5jb2x1bW4/MDotMTp0aGlzLmVuZC5yb3c9PT1lP3Q8PXRoaXMuZW5kLmNvbHVtbj8wOjE6MH0sdGhpcy5jb21wYXJlU3RhcnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PWUmJnRoaXMuc3RhcnQuY29sdW1uPT10Py0xOnRoaXMuY29tcGFyZShlLHQpfSx0aGlzLmNvbXBhcmVFbmQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lbmQucm93PT1lJiZ0aGlzLmVuZC5jb2x1bW49PXQ/MTp0aGlzLmNvbXBhcmUoZSx0KX0sdGhpcy5jb21wYXJlSW5zaWRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZW5kLnJvdz09ZSYmdGhpcy5lbmQuY29sdW1uPT10PzE6dGhpcy5zdGFydC5yb3c9PWUmJnRoaXMuc3RhcnQuY29sdW1uPT10Py0xOnRoaXMuY29tcGFyZShlLHQpfSx0aGlzLmNsaXBSb3dzPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5lbmQucm93PnQpdmFyIG49e3Jvdzp0KzEsY29sdW1uOjB9O2lmKHRoaXMuc3RhcnQucm93PnQpdmFyIGk9e3Jvdzp0KzEsY29sdW1uOjB9O2lmKHRoaXMuc3RhcnQucm93PGUpdmFyIGk9e3JvdzplLGNvbHVtbjowfTtpZih0aGlzLmVuZC5yb3c8ZSl2YXIgbj17cm93OmUsY29sdW1uOjB9O3JldHVybiByLmZyb21Qb2ludHMoaXx8dGhpcy5zdGFydCxufHx0aGlzLmVuZCl9LHRoaXMuZXh0ZW5kPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5jb21wYXJlKGUsdCk7aWYobj09MClyZXR1cm4gdGhpcztpZihuPT0tMSl2YXIgaT17cm93OmUsY29sdW1uOnR9O2Vsc2UgdmFyIHM9e3JvdzplLGNvbHVtbjp0fTtyZXR1cm4gci5mcm9tUG9pbnRzKGl8fHRoaXMuc3RhcnQsc3x8dGhpcy5lbmQpfSx0aGlzLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydC5yb3c9PXRoaXMuZW5kLnJvdyYmdGhpcy5zdGFydC5jb2x1bW49PXRoaXMuZW5kLmNvbHVtbn0sdGhpcy5pc011bHRpTGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0LnJvdyE9PXRoaXMuZW5kLnJvd30sdGhpcy5jbG9uZT1mdW5jdGlvbigpe3JldHVybiByLmZyb21Qb2ludHModGhpcy5zdGFydCx0aGlzLmVuZCl9LHRoaXMuY29sbGFwc2VSb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5kLmNvbHVtbj09MD9uZXcgcih0aGlzLnN0YXJ0LnJvdywwLE1hdGgubWF4KHRoaXMuc3RhcnQucm93LHRoaXMuZW5kLnJvdy0xKSwwKTpuZXcgcih0aGlzLnN0YXJ0LnJvdywwLHRoaXMuZW5kLnJvdywwKX0sdGhpcy50b1NjcmVlblJhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZG9jdW1lbnRUb1NjcmVlblBvc2l0aW9uKHRoaXMuc3RhcnQpLG49ZS5kb2N1bWVudFRvU2NyZWVuUG9zaXRpb24odGhpcy5lbmQpO3JldHVybiBuZXcgcih0LnJvdyx0LmNvbHVtbixuLnJvdyxuLmNvbHVtbil9fSkuY2FsbChyLnByb3RvdHlwZSksci5mcm9tUG9pbnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyByKGUucm93LGUuY29sdW1uLHQucm93LHQuY29sdW1uKX0sdC5SYW5nZT1yfSksZGVmaW5lKCJhY2UvYW5jaG9yIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL2xpYi9vb3AiLCJhY2UvbGliL2V2ZW50X2VtaXR0ZXIiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9saWIvb29wIiksaT1lKCIuL2xpYi9ldmVudF9lbWl0dGVyIikuRXZlbnRFbWl0dGVyLHM9dC5BbmNob3I9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuZG9jdW1lbnQ9ZSx0eXBlb2Ygbj09InVuZGVmaW5lZCI/dGhpcy5zZXRQb3NpdGlvbih0LnJvdyx0LmNvbHVtbik6dGhpcy5zZXRQb3NpdGlvbih0LG4pLHRoaXMuJG9uQ2hhbmdlPXRoaXMub25DaGFuZ2UuYmluZCh0aGlzKSxlLm9uKCJjaGFuZ2UiLHRoaXMuJG9uQ2hhbmdlKX07KGZ1bmN0aW9uKCl7ci5pbXBsZW1lbnQodGhpcyxpKSx0aGlzLmdldFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNsaXBQb3NpdGlvblRvRG9jdW1lbnQodGhpcy5yb3csdGhpcy5jb2x1bW4pfSx0aGlzLmdldERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jdW1lbnR9LHRoaXMub25DaGFuZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhLG49dC5yYW5nZTtpZihuLnN0YXJ0LnJvdz09bi5lbmQucm93JiZuLnN0YXJ0LnJvdyE9dGhpcy5yb3cpcmV0dXJuO2lmKG4uc3RhcnQucm93PnRoaXMucm93KXJldHVybjtpZihuLnN0YXJ0LnJvdz09dGhpcy5yb3cmJm4uc3RhcnQuY29sdW1uPnRoaXMuY29sdW1uKXJldHVybjt2YXIgcj10aGlzLnJvdyxpPXRoaXMuY29sdW1uO3QuYWN0aW9uPT09Imluc2VydFRleHQiP24uc3RhcnQucm93PT09ciYmbi5zdGFydC5jb2x1bW48PWk/bi5zdGFydC5yb3c9PT1uLmVuZC5yb3c/aSs9bi5lbmQuY29sdW1uLW4uc3RhcnQuY29sdW1uOihpLT1uLnN0YXJ0LmNvbHVtbixyKz1uLmVuZC5yb3ctbi5zdGFydC5yb3cpOm4uc3RhcnQucm93IT09bi5lbmQucm93JiZuLnN0YXJ0LnJvdzxyJiYocis9bi5lbmQucm93LW4uc3RhcnQucm93KTp0LmFjdGlvbj09PSJpbnNlcnRMaW5lcyI/bi5zdGFydC5yb3c8PXImJihyKz1uLmVuZC5yb3ctbi5zdGFydC5yb3cpOnQuYWN0aW9uPT0icmVtb3ZlVGV4dCI/bi5zdGFydC5yb3c9PXImJm4uc3RhcnQuY29sdW1uPGk/bi5lbmQuY29sdW1uPj1pP2k9bi5zdGFydC5jb2x1bW46aT1NYXRoLm1heCgwLGktKG4uZW5kLmNvbHVtbi1uLnN0YXJ0LmNvbHVtbikpOm4uc3RhcnQucm93IT09bi5lbmQucm93JiZuLnN0YXJ0LnJvdzxyPyhuLmVuZC5yb3c9PXImJihpPU1hdGgubWF4KDAsaS1uLmVuZC5jb2x1bW4pK24uc3RhcnQuY29sdW1uKSxyLT1uLmVuZC5yb3ctbi5zdGFydC5yb3cpOm4uZW5kLnJvdz09ciYmKHItPW4uZW5kLnJvdy1uLnN0YXJ0LnJvdyxpPU1hdGgubWF4KDAsaS1uLmVuZC5jb2x1bW4pK24uc3RhcnQuY29sdW1uKTp0LmFjdGlvbj09InJlbW92ZUxpbmVzIiYmbi5zdGFydC5yb3c8PXImJihuLmVuZC5yb3c8PXI/ci09bi5lbmQucm93LW4uc3RhcnQucm93OihyPW4uc3RhcnQucm93LGk9MCkpLHRoaXMuc2V0UG9zaXRpb24ocixpLCEwKX0sdGhpcy5zZXRQb3NpdGlvbj1mdW5jdGlvbihlLHQsbil7dmFyIHI7bj9yPXtyb3c6ZSxjb2x1bW46dH06cj10aGlzLiRjbGlwUG9zaXRpb25Ub0RvY3VtZW50KGUsdCk7aWYodGhpcy5yb3c9PXIucm93JiZ0aGlzLmNvbHVtbj09ci5jb2x1bW4pcmV0dXJuO3ZhciBpPXtyb3c6dGhpcy5yb3csY29sdW1uOnRoaXMuY29sdW1ufTt0aGlzLnJvdz1yLnJvdyx0aGlzLmNvbHVtbj1yLmNvbHVtbix0aGlzLl9lbWl0KCJjaGFuZ2UiLHtvbGQ6aSx2YWx1ZTpyfSl9LHRoaXMuZGV0YWNoPWZ1bmN0aW9uKCl7dGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHRoaXMuJG9uQ2hhbmdlKX0sdGhpcy4kY2xpcFBvc2l0aW9uVG9Eb2N1bWVudD1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O3JldHVybiBlPj10aGlzLmRvY3VtZW50LmdldExlbmd0aCgpPyhuLnJvdz1NYXRoLm1heCgwLHRoaXMuZG9jdW1lbnQuZ2V0TGVuZ3RoKCktMSksbi5jb2x1bW49dGhpcy5kb2N1bWVudC5nZXRMaW5lKG4ucm93KS5sZW5ndGgpOmU8MD8obi5yb3c9MCxuLmNvbHVtbj0wKToobi5yb3c9ZSxuLmNvbHVtbj1NYXRoLm1pbih0aGlzLmRvY3VtZW50LmdldExpbmUobi5yb3cpLmxlbmd0aCxNYXRoLm1heCgwLHQpKSksdDwwJiYobi5jb2x1bW49MCksbn19KS5jYWxsKHMucHJvdG90eXBlKX0pLGRlZmluZSgiYWNlL2xpYi9sYW5nIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3Quc3RyaW5nUmV2ZXJzZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpfSx0LnN0cmluZ1JlcGVhdD1mdW5jdGlvbihlLHQpe3JldHVybihuZXcgQXJyYXkodCsxKSkuam9pbihlKX07dmFyIHI9L15cc1xzKi8saT0vXHNccyokLzt0LnN0cmluZ1RyaW1MZWZ0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UociwiIil9LHQuc3RyaW5nVHJpbVJpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoaSwiIil9LHQuY29weU9iamVjdD1mdW5jdGlvbihlKXt2YXIgdD17fTtmb3IodmFyIG4gaW4gZSl0W25dPWVbbl07cmV0dXJuIHR9LHQuY29weUFycmF5PWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyllW25dJiZ0eXBlb2YgZVtuXT09Im9iamVjdCI/dFtuXT10aGlzLmNvcHlPYmplY3QoZVtuXSk6dFtuXT1lW25dO3JldHVybiB0fSx0LmRlZXBDb3B5PWZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBlIT0ib2JqZWN0IilyZXR1cm4gZTt2YXIgdD1lLmNvbnN0cnVjdG9yKCk7Zm9yKHZhciBuIGluIGUpdHlwZW9mIGVbbl09PSJvYmplY3QiP3Rbbl09dGhpcy5kZWVwQ29weShlW25dKTp0W25dPWVbbl07cmV0dXJuIHR9LHQuYXJyYXlUb01hcD1mdW5jdGlvbihlKXt2YXIgdD17fTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0W2Vbbl1dPTE7cmV0dXJuIHR9LHQuYXJyYXlSZW1vdmU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPD1lLmxlbmd0aDtuKyspdD09PWVbbl0mJmUuc3BsaWNlKG4sMSl9LHQuZXNjYXBlUmVnRXhwPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbLiorP14ke30oKXxbXF1cL1xcXSkvZywiXFwkMSIpfSx0LmdldE1hdGNoT2Zmc2V0cz1mdW5jdGlvbihlLHQpe3ZhciBuPVtdO3JldHVybiBlLnJlcGxhY2UodCxmdW5jdGlvbihlKXtuLnB1c2goe29mZnNldDphcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0yXSxsZW5ndGg6ZS5sZW5ndGh9KX0pLG59LHQuZGVmZXJyZWRDYWxsPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGwsbj1mdW5jdGlvbigpe3Q9bnVsbCxlKCl9LHI9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY2FuY2VsKCksdD1zZXRUaW1lb3V0KG4sZXx8MCkscn07cmV0dXJuIHIuc2NoZWR1bGU9cixyLmNhbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW5jZWwoKSxlKCkscn0sci5jYW5jZWw9ZnVuY3Rpb24oKXtyZXR1cm4gY2xlYXJUaW1lb3V0KHQpLHQ9bnVsbCxyfSxyfX0pLGRlZmluZSgiYWNlL21vZGUveHF1ZXJ5L3hxdWVyeSIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9tb2RlL3hxdWVyeS9hbnRscjMtYWxsIiwiYWNlL21vZGUveHF1ZXJ5L1hRdWVyeUxleGVyIiwiYWNlL21vZGUveHF1ZXJ5L1hRdWVyeVBhcnNlciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL2FudGxyMy1hbGwiKSxpPXIub3JnLHM9ci5OZXdMYXp5VG9rZW5TdHJlYW0sbz1lKCIuL1hRdWVyeUxleGVyIikuWFF1ZXJ5TGV4ZXIsdT1lKCIuL1hRdWVyeVBhcnNlciIpLlhRdWVyeVBhcnNlcjt0LmdldFBhcnNlcj1mdW5jdGlvbihlKXt2YXIgdD1uZXcgaS5hbnRsci5ydW50aW1lLkFOVExSU3RyaW5nU3RyZWFtKGUpLG49bmV3IG8odCkscj1uZXcgcyhuKTtyLmp1bXBUb0ZpcnN0VmFsaWRUb2tlbigpO3ZhciBhPW5ldyB1KHIpO3JldHVybiBhLnNldFNvdXJjZSh0KSxhfX0pLGRlZmluZSgiYWNlL21vZGUveHF1ZXJ5L2FudGxyMy1hbGwiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiXSxmdW5jdGlvbihlLG4scil7dmFyIGk9bi5OZXdMYXp5VG9rZW5TdHJlYW09ZnVuY3Rpb24oZSl7dGhpcy50b2tlblNvdXJjZT1lLHRoaXMudG9rZW5zPVtdLHRoaXMuaXNXc0V4cGxpY2l0PSExLHRoaXMucD0wLHRoaXMuY2hhbm5lbD1zLmFudGxyLnJ1bnRpbWUuVG9rZW4uREVGQVVMVF9DSEFOTkVMLHRoaXMuTFQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PTA/bnVsbDplPDA/dGhpcy5yZWFkUmV2ZXJzZU50aEdvb2RUb2tlbigtZSk6dGhpcy5yZWFkTnRoR29vZFRva2VuKGUpfSx0aGlzLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gZT49dGhpcy50b2tlbnMubGVuZ3RoP3MuYW50bHIucnVudGltZS5Ub2tlbi5FT0ZfVE9LRU46dGhpcy50b2tlbnNbZV19LHRoaXMuZ2V0VG9rZW5Tb3VyY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlblNvdXJjZX0sdGhpcy50b1N0cmluZz1mdW5jdGlvbihlLHQpe2lmKGU9PXVuZGVmaW5lZClyZXR1cm4gdGhpcy50b1N0cmluZygwLHRoaXMudG9rZW5zLmxlbmd0aC0xKTtpZihlIGluc3RhbmNlb2Ygcy5hbnRsci5ydW50aW1lLlRva2VuKXJldHVybiB0aGlzLnRvU3RyaW5nKGUuZ2V0VG9rZW5JbmRleCgpLHQuZ2V0VG9rZW5JbmRleCgpKTtlPDAmJihlPTApLHRoaXMucDw9dCYmdGhpcy5yZWFkTlRva2Vucyh0LXRoaXMucCsxKTt2YXIgbj0iIjtmb3IodmFyIHI9ZTtyPD10JiZyPHRoaXMudG9rZW5zLmxlbmd0aDtyKyspbis9dGhpcy50b2tlbnNbcl0uZ2V0VGV4dCgpO3JldHVybiBufSx0aGlzLkxBPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLkxUKGUpLmdldFR5cGUoKX0sdGhpcy5kb25lPSExLHRoaXMuY29uc3VtZT1mdW5jdGlvbigpe2lmKHRoaXMuZG9uZSlyZXR1cm47dGhpcy5wKyssdGhpcy5pc1dzRXhwbGljaXR8fHRoaXMuanVtcFRvRmlyc3RWYWxpZFRva2VuKCl9LHRoaXMuZ2V0U291cmNlTmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRva2VuU291cmNlKCkuZ2V0U291cmNlTmFtZSgpfSx0aGlzLmluZGV4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucH0sdGhpcy5tYXJrPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGFzdE1hcmtlcj10aGlzLmluZGV4KCksdGhpcy5sYXN0TWFya2VyfSx0aGlzLnJlbGVhc2U9ZnVuY3Rpb24oZSl7fSx0aGlzLnJld2luZD1mdW5jdGlvbihlKXthcmd1bWVudHMubGVuZ3RoPT0xP3RoaXMuc2VlayhlKTp0aGlzLnNlZWsodGhpcy5sYXN0TWFya2VyKX0sdGhpcy5zZWVrPWZ1bmN0aW9uKGUpe3RoaXMucD1lLHRoaXMuZG9uZT0hMX0sdGhpcy5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5zLmxlbmd0aH0sdGhpcy5zZXRUb2tlblNvdXJjZT1mdW5jdGlvbihlKXt0aGlzLnRva2VuU291cmNlPWUsdGhpcy5zZXRXc0V4cGxpY2l0KGUuaXNXc0V4cGxpY2l0KTtpZih0aGlzLnA8dGhpcy50b2tlbnMubGVuZ3RoKXt2YXIgdD10aGlzLnA+MD90aGlzLnRva2Vuc1t0aGlzLnAtMV0uZ2V0U3RvcEluZGV4KCk6MDt0aGlzLnRva2VuU291cmNlLnJld2luZFRvSW5kZXgodCsxKTtmb3IodmFyIG49dGhpcy50b2tlbnMubGVuZ3RoLTE7bj49dGhpcy5wO24tLSl0aGlzLnRva2Vucy5zcGxpY2UobiwxKX10aGlzLmlzV3NFeHBsaWNpdHx8dGhpcy5qdW1wVG9GaXJzdFZhbGlkVG9rZW4oKX0sdGhpcy5zZXRXc0V4cGxpY2l0PWZ1bmN0aW9uKGUpe3RoaXMuaXNXc0V4cGxpY2l0PWUsZXx8dGhpcy5qdW1wVG9GaXJzdFZhbGlkVG9rZW4oKX0sdGhpcy5yZWFkTnRoR29vZFRva2VuPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudG9rZW5zLmxlbmd0aCxuPXQtdGhpcy5wLHI9MSxpPTAsbz1udWxsO3doaWxlKHI8PWUpe2lmKGk8bilvPXRoaXMudG9rZW5zW3RoaXMucCtpXTtlbHNle289dGhpcy50b2tlblNvdXJjZS5uZXh0VG9rZW4oKTtpZihvPT1zLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GX1RPS0VOKXJldHVybiBvO28uc2V0VG9rZW5JbmRleCh0KyspLHRoaXMudG9rZW5zLnB1c2gobyl9KHRoaXMuaXNXc0V4cGxpY2l0fHxvLmdldENoYW5uZWwoKT09dGhpcy5jaGFubmVsKSYmcisrLGkrK31yZXR1cm4gb30sdGhpcy5yZWFkUmV2ZXJzZU50aEdvb2RUb2tlbj1mdW5jdGlvbihlKXtpZihlPT0wfHx0aGlzLnAtZTwwKXJldHVybiBudWxsO3ZhciB0PTEsbj0wLHI9bnVsbDt3aGlsZSh0aGlzLnAtMS1uPj0wKXtyPXRoaXMuZ2V0KHRoaXMucC0xLW4pO2lmKHRoaXMuaXNXc0V4cGxpY2l0fHxyLmdldENoYW5uZWwoKT09dGhpcy5jaGFubmVsKWlmKHQrKz09ZSlyZXR1cm4gcjtuKyt9cmV0dXJuIG51bGx9LHRoaXMucmVhZE5Ub2tlbnM9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtmb3IodmFyIG49MDtuPGU7bisrKXtpZih0aGlzLnRva2Vucy5sZW5ndGg+dGhpcy5wK24pY29udGludWU7dD10aGlzLnRva2VuU291cmNlLm5leHRUb2tlbigpO2lmKHQ9PXMuYW50bHIucnVudGltZS5Ub2tlbi5FT0ZfVE9LRU4pcmV0dXJuO3Quc2V0VG9rZW5JbmRleCh0aGlzLnArbiksdGhpcy50b2tlbnMucHVzaCh0KX19LHRoaXMuanVtcFRvRmlyc3RWYWxpZFRva2VuPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5MVCgxKTtlIT1zLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GX1RPS0VOJiYodGhpcy5kb25lPSExLHRoaXMucD1lLmdldFRva2VuSW5kZXgoKSl9fTtpZih0eXBlb2Ygcz09InVuZGVmaW5lZCJ8fCFzKXZhciBzPXt9O2lmKHR5cGVvZiBzLmFudGxyPT0idW5kZWZpbmVkInx8IXMuYW50bHIpcy5hbnRscj17fTtzLmFudGxyLmdsb2JhbD1mdW5jdGlvbigpe3JldHVybiB0aGlzfS5jYWxsKG51bGwpLHMuYW50bHIubmFtZXNwYWNlPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLHQ9bnVsbCxuLHIsaTtmb3Iobj0wO248ZS5sZW5ndGg7bis9MSl7aT1lW25dLnNwbGl0KCIuIiksdD1zLmFudGxyLmdsb2JhbDtmb3Iocj0wO3I8aS5sZW5ndGg7cis9MSl0W2lbcl1dPXRbaVtyXV18fHt9LHQ9dFtpW3JdXX1yZXR1cm4gdH0scy5hbnRsci5lbnY9cy5hbnRsci5lbnZ8fHt9LHMuYW50bHIubmFtZXNwYWNlKCJvcmcuYW50bHIucnVudGltZS50cmVlIikscy5hbnRsci5sYW5nPXMuYW50bHIubGFuZ3x8e2lzQXJyYXk6ZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9cy5hbnRsci5sYW5nO3JldHVybiB0LmlzTnVtYmVyKGUubGVuZ3RoKSYmdC5pc0Z1bmN0aW9uKGUuc3BsaWNlKX1yZXR1cm4hMX0saXNCb29sZWFuOmZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09ImJvb2xlYW4ifSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIn0saXNOdWxsOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09bnVsbH0saXNOdW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT0ibnVtYmVyIiYmaXNGaW5pdGUoZSl9LGlzT2JqZWN0OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYodHlwZW9mIGU9PSJvYmplY3QifHxzLmFudGxyLmxhbmcuaXNGdW5jdGlvbihlKSl8fCExfSxpc1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmcifSxpc1VuZGVmaW5lZDpmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PSJ1bmRlZmluZWQifSxfSUVFbnVtRml4OmZ1bmN0aW9uKGUsdCl7fSxleHRlbmQ6ZnVuY3Rpb24oZSx0LG4pe2lmKCF0fHwhZSl0aHJvdyBuZXcgRXJyb3IoIm9yZy5hbnRsci5sYW5nLmV4dGVuZCBmYWlsZWQsIHBsZWFzZSBjaGVjayB0aGF0IGFsbCBkZXBlbmRlbmNpZXMgYXJlIGluY2x1ZGVkLiIpO3ZhciByPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT10LnByb3RvdHlwZSxlLnByb3RvdHlwZT1uZXcgcixlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUuc3VwZXJjbGFzcz10LnByb3RvdHlwZSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj09T2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciYmKHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQpO2lmKG4pe2Zvcih2YXIgaSBpbiBuKWUucHJvdG90eXBlW2ldPW5baV07cy5hbnRsci5sYW5nLl9JRUVudW1GaXgoZS5wcm90b3R5cGUsbil9fSxhdWdtZW50T2JqZWN0OmZ1bmN0aW9uKGUsdCl7aWYoIXR8fCFlKXRocm93IG5ldyBFcnJvcigiQWJzb3JiIGZhaWxlZCwgdmVyaWZ5IGRlcGVuZGVuY2llcy4iKTt2YXIgbj1hcmd1bWVudHMscixpLG89blsyXTtpZihvJiZvIT09ITApZm9yKHI9MjtyPG4ubGVuZ3RoO3IrPTEpZVtuW3JdXT10W25bcl1dO2Vsc2V7Zm9yKGkgaW4gdClpZihvfHwhZVtpXSllW2ldPXRbaV07cy5hbnRsci5sYW5nLl9JRUVudW1GaXgoZSx0KX19LGF1Z21lbnRQcm90bzpmdW5jdGlvbihlLHQpe2lmKCF0fHwhZSl0aHJvdyBuZXcgRXJyb3IoIkF1Z21lbnQgZmFpbGVkLCB2ZXJpZnkgZGVwZW5kZW5jaWVzLiIpO3ZhciBuPVtlLnByb3RvdHlwZSx0LnByb3RvdHlwZV07Zm9yKHZhciByPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrPTEpbi5wdXNoKGFyZ3VtZW50c1tyXSk7cy5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QuYXBwbHkodGhpcyxuKX0sbWVyZ2U6ZnVuY3Rpb24oKXt2YXIgZT17fSx0PWFyZ3VtZW50cztmb3IodmFyIG49MCxyPXQubGVuZ3RoO248cjtuKz0xKXMuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KGUsdFtuXSwhMCk7cmV0dXJuIGV9LGlzVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9cy5hbnRsci5sYW5nO3JldHVybiB0LmlzT2JqZWN0KGUpfHx0LmlzU3RyaW5nKGUpfHx0LmlzTnVtYmVyKGUpfHx0LmlzQm9vbGVhbihlKX0sYXJyYXk6e3BlZWs6ZnVuY3Rpb24oZSl7aWYoIXMuYW50bHIubGFuZy5pc0FycmF5KGUpKXRocm93IG5ldyBFcnJvcigib3JnLmFudGxyLmxhbmcuYXJyYXkucGVlazogYSBpcyBub3QgYW4gYXJyYXkuIik7dmFyIHQ9ZS5sZW5ndGg7aWYodDw9MCl0aHJvdyBuZXcgRXJyb3IoIm9yZy5hbnRsci5sYW5nLmFycmF5LnBlZWs6IGEgaXMgZW1wdHkuIik7cmV0dXJuIGVbdC0xXX19fSxzLmFudGxyLnJ1bnRpbWU9e30scy5hbnRsci5ydW50aW1lLlJlY29nbml6ZXJTaGFyZWRTdGF0ZT1mdW5jdGlvbigpe3RoaXMuZm9sbG93aW5nPVtdLHRoaXMuX2ZzcD0tMSx0aGlzLmVycm9yUmVjb3Zlcnk9ITEsdGhpcy5sYXN0RXJyb3JJbmRleD0tMSx0aGlzLmZhaWxlZD0hMSx0aGlzLnN5bnRheEVycm9ycz0wLHRoaXMuYmFja3RyYWNraW5nPTAsdGhpcy5ydWxlTWVtbz1udWxsLHRoaXMudG9rZW49bnVsbCx0aGlzLnRva2VuU3RhcnRDaGFySW5kZXg9LTEsdGhpcy50ZXh0PW51bGx9LHMuYW50bHIucnVudGltZS5JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uPWZ1bmN0aW9uKGUpe3MuYW50bHIucnVudGltZS5JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGUpfSxzLmFudGxyLmxhbmcuZXh0ZW5kKHMuYW50bHIucnVudGltZS5JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLEVycm9yLHtuYW1lOiJvcmcuYW50bHIucnVudGltZS5JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIn0pLHMuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbj1mdW5jdGlvbihlKXtzLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24uc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpLHRoaXMuaW5wdXQ9ZSx0aGlzLmluZGV4PWUuaW5kZXgoKSxlIGluc3RhbmNlb2YgaSYmKHRoaXMudG9rZW49ZS5MVCgxKSx0aGlzLmxpbmU9dGhpcy50b2tlbi5nZXRMaW5lKCksdGhpcy5jaGFyUG9zaXRpb25JbkxpbmU9dGhpcy50b2tlbi5nZXRDaGFyUG9zaXRpb25JbkxpbmUoKSksZSBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS50cmVlLlRyZWVOb2RlU3RyZWFtP3RoaXMuZXh0cmFjdEluZm9ybWF0aW9uRnJvbVRyZWVOb2RlU3RyZWFtKGUpOmUgaW5zdGFuY2VvZiBzLmFudGxyLnJ1bnRpbWUuQU5UTFJTdHJpbmdTdHJlYW0/KHRoaXMuYz1lLkxBKDEpLHRoaXMubGluZT1lLmdldExpbmUoKSx0aGlzLmNoYXJQb3NpdGlvbkluTGluZT1lLmdldENoYXJQb3NpdGlvbkluTGluZSgpKTp0aGlzLmM9ZS5MQSgxKSx0aGlzLm1lc3NhZ2U9dGhpcy50b1N0cmluZygpfSxzLmFudGxyLmxhbmcuZXh0ZW5kKHMuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbixFcnJvcix7aW5wdXQ6bnVsbCxpbmRleDpudWxsLHRva2VuOm51bGwsbm9kZTpudWxsLGM6bnVsbCxsaW5lOm51bGwsbmFtZToib3JnLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24iLGNoYXJQb3NpdGlvbkluTGluZTpudWxsLGFwcHJveGltYXRlTGluZUluZm86bnVsbCxleHRyYWN0SW5mb3JtYXRpb25Gcm9tVHJlZU5vZGVTdHJlYW06ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxuLHIsaSxvLHU7dGhpcy5ub2RlPXQuTFQoMSk7dmFyIGE9dC5nZXRUcmVlQWRhcHRvcigpLGY9YS5nZXRUb2tlbih0aGlzLm5vZGUpO2lmKGYpe3RoaXMudG9rZW49ZjtpZihmLmdldExpbmUoKTw9MCl7dT0tMSxuPXQuTFQodSk7d2hpbGUobil7cHJpb3JQYXlsb2FkPWEuZ2V0VG9rZW4obik7aWYocHJpb3JQYXlsb2FkJiZwcmlvclBheWxvYWQuZ2V0TGluZSgpPjApe3RoaXMubGluZT1wcmlvclBheWxvYWQuZ2V0TGluZSgpLHRoaXMuY2hhclBvc2l0aW9uSW5MaW5lPXByaW9yUGF5bG9hZC5nZXRDaGFyUG9zaXRpb25JbkxpbmUoKSx0aGlzLmFwcHJveGltYXRlTGluZUluZm89ITA7YnJlYWt9LS11LG49dC5MVCh1KX19ZWxzZSB0aGlzLmxpbmU9Zi5nZXRMaW5lKCksdGhpcy5jaGFyUG9zaXRpb25JbkxpbmU9Zi5nZXRDaGFyUG9zaXRpb25JbkxpbmUoKX1lbHNlIHRoaXMubm9kZSBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWU/KHRoaXMubGluZT10aGlzLm5vZGUuZ2V0TGluZSgpLHRoaXMuY2hhclBvc2l0aW9uSW5MaW5lPXRoaXMubm9kZS5nZXRDaGFyUG9zaXRpb25JbkxpbmUoKSx0aGlzLm5vZGUgaW5zdGFuY2VvZiBzLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlJiYodGhpcy50b2tlbj10aGlzLm5vZGUudG9rZW4pKTooaT1hLmdldFR5cGUodGhpcy5ub2RlKSxvPWEuZ2V0VGV4dCh0aGlzLm5vZGUpLHRoaXMudG9rZW49bmV3IHMuYW50bHIucnVudGltZS5Db21tb25Ub2tlbihpLG8pKX0sZ2V0VW5leHBlY3RlZFR5cGU6ZnVuY3Rpb24oKXtpZih0aGlzLmlucHV0IGluc3RhbmNlb2YgaSlyZXR1cm4gdGhpcy50b2tlbi5nZXRUeXBlKCk7aWYodGhpcy5pbnB1dCBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS50cmVlLlRyZWVOb2RlU3RyZWFtKXt2YXIgZT10aGlzLmlucHV0LHQ9ZS5nZXRUcmVlQWRhcHRvcigpO3JldHVybiB0LmdldFR5cGUodGhpcy5ub2RlKX1yZXR1cm4gdGhpcy5jfX0pLHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkVG9rZW5FeGNlcHRpb249ZnVuY3Rpb24oZSx0KXthcmd1bWVudHMubGVuZ3RoPT09MD90aGlzLmV4cGVjdGluZz1zLmFudGxyLnJ1bnRpbWUuVG9rZW4uSU5WQUxJRF9UT0tFTl9UWVBFOihzLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFRva2VuRXhjZXB0aW9uLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpLHRoaXMuZXhwZWN0aW5nPWUpfSxzLmFudGxyLmxhbmcuZXh0ZW5kKHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkVG9rZW5FeGNlcHRpb24scy5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uLHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJNaXNtYXRjaGVkVG9rZW5FeGNlcHRpb24oIit0aGlzLmdldFVuZXhwZWN0ZWRUeXBlKCkrIiE9Iit0aGlzLmV4cGVjdGluZysiKSJ9LG5hbWU6Im9yZy5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRUb2tlbkV4Y2VwdGlvbiJ9KSxzLmFudGxyLnJ1bnRpbWUuVW53YW50ZWRUb2tlbkV4Y2VwdGlvbj1mdW5jdGlvbihlLHQpe2FyZ3VtZW50cy5sZW5ndGg+MCYmcy5hbnRsci5ydW50aW1lLlVud2FudGVkVG9rZW5FeGNlcHRpb24uc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsZSx0KX0scy5hbnRsci5sYW5nLmV4dGVuZChzLmFudGxyLnJ1bnRpbWUuVW53YW50ZWRUb2tlbkV4Y2VwdGlvbixzLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFRva2VuRXhjZXB0aW9uLHtnZXRVbmV4cGVjdGVkVG9rZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbn0sdG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgZT0iLCBleHBlY3RlZCAiK3RoaXMuZXhwZWN0aW5nO3JldHVybiB0aGlzLmV4cGVjdGluZz09PXMuYW50bHIucnVudGltZS5Ub2tlbi5JTlZBTElEX1RPS0VOX1RZUEUmJihlPSIiKSxzLmFudGxyLmxhbmcuaXNWYWx1ZSh0aGlzLnRva2VuKT8iVW53YW50ZWRUb2tlbkV4Y2VwdGlvbihmb3VuZD0iK3RoaXMudG9rZW4uZ2V0VGV4dCgpK2UrIikiOiJVbndhbnRlZFRva2VuRXhjZXB0aW9uKGZvdW5kPSIrZSsiKSJ9LG5hbWU6Im9yZy5hbnRsci5ydW50aW1lLlVud2FudGVkVG9rZW5FeGNlcHRpb24ifSkscy5hbnRsci5ydW50aW1lLk1pc3NpbmdUb2tlbkV4Y2VwdGlvbj1mdW5jdGlvbihlLHQsbil7YXJndW1lbnRzLmxlbmd0aD4wJiYocy5hbnRsci5ydW50aW1lLk1pc3NpbmdUb2tlbkV4Y2VwdGlvbi5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxlLHQpLHRoaXMuaW5zZXJ0ZWQ9bil9LHMuYW50bHIubGFuZy5leHRlbmQocy5hbnRsci5ydW50aW1lLk1pc3NpbmdUb2tlbkV4Y2VwdGlvbixzLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFRva2VuRXhjZXB0aW9uLHtnZXRNaXNzaW5nVHlwZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmV4cGVjdGluZ30sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gcy5hbnRsci5sYW5nLmlzVmFsdWUodGhpcy5pbnNlcnRlZCkmJnMuYW50bHIubGFuZy5pc1ZhbHVlKHRoaXMudG9rZW4pPyJNaXNzaW5nVG9rZW5FeGNlcHRpb24oaW5zZXJ0ZWQgIit0aGlzLmluc2VydGVkKyIgYXQgIit0aGlzLnRva2VuLmdldFRleHQoKSsiKSI6cy5hbnRsci5sYW5nLmlzVmFsdWUodGhpcy50b2tlbik/Ik1pc3NpbmdUb2tlbkV4Y2VwdGlvbihhdCAiK3RoaXMudG9rZW4uZ2V0VGV4dCgpKyIpIjoiTWlzc2luZ1Rva2VuRXhjZXB0aW9uIn0sbmFtZToib3JnLmFudGxyLnJ1bnRpbWUuTWlzc2luZ1Rva2VuRXhjZXB0aW9uIn0pLHMuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbj1mdW5jdGlvbihlLHQsbixyKXtzLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24uc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsciksdGhpcy5ncmFtbWFyRGVjaXNpb25EZXNjcmlwdGlvbj1lLHRoaXMuZGVjaXNpb25OdW1iZXI9dCx0aGlzLnN0YXRlTnVtYmVyPW59LHMuYW50bHIubGFuZy5leHRlbmQocy5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uLHMuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbix7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnB1dCBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5BTlRMUlN0cmluZ1N0cmVhbT8iTm9WaWFibGVBbHRFeGNlcHRpb24oJyIrdGhpcy5nZXRVbmV4cGVjdGVkVHlwZSgpKyInQFsiK3RoaXMuZ3JhbW1hckRlY2lzaW9uRGVzY3JpcHRpb24rIl0pIjoiTm9WaWFibGVBbHRFeGNlcHRpb24oIit0aGlzLmdldFVuZXhwZWN0ZWRUeXBlKCkrIkBbIit0aGlzLmdyYW1tYXJEZWNpc2lvbkRlc2NyaXB0aW9uKyJdKSJ9LG5hbWU6Im9yZy5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uIn0pLHMuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb249ZnVuY3Rpb24oZSx0KXtzLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpLHRoaXMuZGVjaXNpb25OdW1iZXI9ZX0scy5hbnRsci5sYW5nLmV4dGVuZChzLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uLHMuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbix7bmFtZToib3JnLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uIn0pLHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uPWZ1bmN0aW9uKGUsdCl7cy5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24uc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCksdGhpcy5leHBlY3Rpbmc9ZX0scy5hbnRsci5sYW5nLmV4dGVuZChzLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbixzLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24se3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIk1pc21hdGNoZWRTZXRFeGNlcHRpb24oIit0aGlzLmdldFVuZXhwZWN0ZWRUeXBlKCkrIiE9Iit0aGlzLmV4cGVjdGluZysiKSJ9LG5hbWU6Im9yZy5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24ifSkscy5hbnRsci5ydW50aW1lLk1pc21hdGNoZWROb3RTZXRFeGNlcHRpb249ZnVuY3Rpb24oZSx0KXtzLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZE5vdFNldEV4Y2VwdGlvbi5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxlLHQpfSxzLmFudGxyLmxhbmcuZXh0ZW5kKHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkTm90U2V0RXhjZXB0aW9uLHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uLHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJNaXNtYXRjaGVkTm90U2V0RXhjZXB0aW9uKCIrdGhpcy5nZXRVbmV4cGVjdGVkVHlwZSgpKyIhPSIrdGhpcy5leHBlY3RpbmcrIikifSxuYW1lOiJvcmcuYW50bHIucnVudGltZS5NaXNtYXRjaGVkTm90U2V0RXhjZXB0aW9uIn0pLHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkUmFuZ2VFeGNlcHRpb249ZnVuY3Rpb24oZSx0LG4pe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKXJldHVybiB0aGlzO3MuYW50bHIucnVudGltZS5NaXNtYXRjaGVkUmFuZ2VFeGNlcHRpb24uc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsbiksdGhpcy5hPWUsdGhpcy5iPXR9LHMuYW50bHIubGFuZy5leHRlbmQocy5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRSYW5nZUV4Y2VwdGlvbixzLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24se3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIk1pc21hdGNoZWRSYW5nZUV4Y2VwdGlvbigiK3RoaXMuZ2V0VW5leHBlY3RlZFR5cGUoKSsiIG5vdCBpbiBbIit0aGlzLmErIiwiK3RoaXMuYisiXSkifSxuYW1lOiJvcmcuYW50bHIucnVudGltZS5NaXNtYXRjaGVkUmFuZ2VFeGNlcHRpb24ifSkscy5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbj1mdW5jdGlvbihlLHQsbil7cy5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbi5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxlKSx0aGlzLnJ1bGVOYW1lPXQsdGhpcy5wcmVkaWNhdGVUZXh0PW59LHMuYW50bHIubGFuZy5leHRlbmQocy5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbixzLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24se3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbigiK3RoaXMucnVsZU5hbWUrIix7Iit0aGlzLnByZWRpY2F0ZVRleHQrIn0/KSJ9LG5hbWU6Im9yZy5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbiJ9KSxzLmFudGxyLnJ1bnRpbWUuQml0U2V0PWZ1bmN0aW9uKGUpe2V8fChlPXMuYW50bHIucnVudGltZS5CaXRTZXQuQklUUykscy5hbnRsci5sYW5nLmlzQXJyYXkoZSk/dGhpcy5iaXRzPWU6cy5hbnRsci5sYW5nLmlzTnVtYmVyKGUpJiYodGhpcy5iaXRzPVtdKX0scy5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qocy5hbnRsci5ydW50aW1lLkJpdFNldCx7QklUUzozMixMT0dfQklUUzo1LE1PRF9NQVNLOjMxLGJpdE1hc2s6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSZzLmFudGxyLnJ1bnRpbWUuQml0U2V0Lk1PRF9NQVNLO3JldHVybiAxPDx0fSxudW1Xb3Jkc1RvSG9sZDpmdW5jdGlvbihlKXtyZXR1cm4oZT4+cy5hbnRsci5ydW50aW1lLkJpdFNldC5MT0dfQklUUykrMX0sd29yZE51bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT4+cy5hbnRsci5ydW50aW1lLkJpdFNldC5MT0dfQklUU30sb2Y6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbztpZihzLmFudGxyLmxhbmcuaXNOdW1iZXIoZSkpe2lmKHMuYW50bHIubGFuZy5pc051bWJlcih0KSl7aT1uZXcgcy5hbnRsci5ydW50aW1lLkJpdFNldCh0KzEpO2ZvcihuPWU7bjw9dDtuKyspcj1zLmFudGxyLnJ1bnRpbWUuQml0U2V0LndvcmROdW1iZXIobiksaS5iaXRzW3JdfD1zLmFudGxyLnJ1bnRpbWUuQml0U2V0LmJpdE1hc2sobik7cmV0dXJuIGl9cmV0dXJuIGk9bmV3IHMuYW50bHIucnVudGltZS5CaXRTZXQoZSsxKSxpLmFkZChlKSxpfWlmKHMuYW50bHIubGFuZy5pc0FycmF5KGUpKXtpPW5ldyBzLmFudGxyLnJ1bnRpbWUuQml0U2V0O2ZvcihuPWUubGVuZ3RoLTE7bj49MDtuLS0paS5hZGQoZVtuXSk7cmV0dXJuIGl9aWYoZSBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5CaXRTZXQpcmV0dXJuIGU/ZTpudWxsO2lmKGUgaW5zdGFuY2VvZiBzLmFudGxyLnJ1bnRpbWUuSW50ZXJ2YWxTZXQpcmV0dXJuIGU/KGk9bmV3IHMuYW50bHIucnVudGltZS5CaXRTZXQsaS5hZGRBbGwoZSksaSk6bnVsbDtpZihzLmFudGxyLmxhbmcuaXNPYmplY3QoZSkpe289W107Zm9yKG4gaW4gZSlzLmFudGxyLmxhbmcuaXNOdW1iZXIobikmJm8ucHVzaChuKTtyZXR1cm4gcy5hbnRsci5ydW50aW1lLkJpdFNldC5vZihvKX19fSkscy5hbnRsci5ydW50aW1lLkJpdFNldC5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbihlKXt2YXIgdD1zLmFudGxyLnJ1bnRpbWUuQml0U2V0LndvcmROdW1iZXIoZSk7dD49dGhpcy5iaXRzLmxlbmd0aCYmdGhpcy5ncm93VG9JbmNsdWRlKGUpLHRoaXMuYml0c1t0XXw9cy5hbnRsci5ydW50aW1lLkJpdFNldC5iaXRNYXNrKGUpfSxhZGRBbGw6ZnVuY3Rpb24oZSl7dmFyIHQsbixyO2lmKGUgaW5zdGFuY2VvZiBzLmFudGxyLnJ1bnRpbWUuQml0U2V0KXRoaXMub3JJblBsYWNlKGUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5JbnRlcnZhbFNldCl0PWU7ZWxzZXtpZighcy5hbnRsci5sYW5nLmlzQXJyYXkoZSkpcmV0dXJuO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspcj1lW25dLHRoaXMuYWRkKHIpfX0sYW5kOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY2xvbmUoKTtyZXR1cm4gdC5hbmRJblBsYWNlKGUpLHR9LGFuZEluUGxhY2U6ZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC5taW4odGhpcy5iaXRzLmxlbmd0aCxlLmJpdHMubGVuZ3RoKSxuO2ZvcihuPXQtMTtuPj0wO24tLSl0aGlzLmJpdHNbbl0mPWUuYml0c1tuXTtmb3Iobj10O248dGhpcy5iaXRzLmxlbmd0aDtuKyspdGhpcy5iaXRzW25dPTB9LGNsZWFyOmZ1bmN0aW9uKGUpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKXt2YXIgdDtmb3IodD10aGlzLmJpdHMubGVuZ3RoLTE7dD49MDt0LS0pdGhpcy5iaXRzW3RdPTA7cmV0dXJufXZhciBuPXMuYW50bHIucnVudGltZS5CaXRTZXQud29yZE51bWJlcihlKTtuPj10aGlzLmJpdHMubGVuZ3RoJiZ0aGlzLmdyb3dUb0luY2x1ZGUoZSksdGhpcy5iaXRzW25dJj1+cy5hbnRsci5ydW50aW1lLkJpdFNldC5iaXRNYXNrKGUpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciBlLHQsbj1bXTtmb3IoZT0wLHQ9dGhpcy5iaXRzLmxlbmd0aDtlPHQ7ZSsrKW5bZV09dGhpcy5iaXRzW2VdO3JldHVybiBuZXcgcy5hbnRsci5ydW50aW1lLkJpdFNldChuKX0sc2l6ZTpmdW5jdGlvbigpe3ZhciBlPTAsdCxuLHI7Zm9yKHQ9dGhpcy5iaXRzLmxlbmd0aC0xO3Q+PTA7dC0tKXtuPXRoaXMuYml0c1t0XTtpZihuIT09MClmb3Iocj1zLmFudGxyLnJ1bnRpbWUuQml0U2V0LkJJVFMtMTtyPj0wO3ItLSkobiYxPDxyKSE9PTAmJmUrK31yZXR1cm4gZX0sZXF1YWxzOmZ1bmN0aW9uKGUpe2lmKCEhZSYmZSBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5CaXRTZXQpe3ZhciB0PWUsbixyPU1hdGgubWluKHRoaXMuYml0cy5sZW5ndGgsdC5iaXRzLmxlbmd0aCk7Zm9yKG49MDtuPHI7bisrKWlmKHRoaXMuYml0c1tuXSE9dC5iaXRzW25dKXJldHVybiExO2lmKHRoaXMuYml0cy5sZW5ndGg+cil7Zm9yKG49cisxO248dGhpcy5iaXRzLmxlbmd0aDtuKyspaWYodGhpcy5iaXRzW25dIT09MClyZXR1cm4hMX1lbHNlIGlmKHQuYml0cy5sZW5ndGg+cilmb3Iobj1yKzE7bjx0LmJpdHMubGVuZ3RoO24rKylpZih0LmJpdHNbbl0hPT0wKXJldHVybiExO3JldHVybiEwfXJldHVybiExfSxncm93VG9JbmNsdWRlOmZ1bmN0aW9uKGUpe3ZhciB0PU1hdGgubWF4KHRoaXMuYml0cy5sZW5ndGg8PDEscy5hbnRsci5ydW50aW1lLkJpdFNldC5udW1Xb3Jkc1RvSG9sZChlKSksbj1bXSxyO2ZvcihyPTAsbGVuPXRoaXMuYml0cy5sZW5ndGg7cjxsZW47cisrKW5bcl09dGhpcy5iaXRzW3JdO3RoaXMuYml0cz1ufSxtZW1iZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9cy5hbnRsci5ydW50aW1lLkJpdFNldC53b3JkTnVtYmVyKGUpO3JldHVybiB0Pj10aGlzLmJpdHMubGVuZ3RoPyExOih0aGlzLmJpdHNbdF0mcy5hbnRsci5ydW50aW1lLkJpdFNldC5iaXRNYXNrKGUpKSE9PTB9LGdldFNpbmdsZUVsZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgZTtmb3IoZT0wO2U8dGhpcy5iaXRzLmxlbmd0aDw8cy5hbnRsci5ydW50aW1lLkJpdFNldC5MT0dfQklUUztlKyspaWYodGhpcy5tZW1iZXIoZSkpcmV0dXJuIGU7cmV0dXJuLTF9LGlzTmlsOmZ1bmN0aW9uKCl7dmFyIGU7Zm9yKGU9dGhpcy5iaXRzLmxlbmd0aC0xO2U+PTA7ZS0tKWlmKHRoaXMuYml0c1tlXSE9PTApcmV0dXJuITE7cmV0dXJuITB9LGNvbXBsZW1lbnQ6ZnVuY3Rpb24oZSl7aWYoZSlyZXR1cm4gZS5zdWJ0cmFjdCh0aGlzKTt2YXIgdD10aGlzLmNsb25lKCk7cmV0dXJuIHQubm90SW5QbGFjZSgpLHR9LG5vdEluUGxhY2U6ZnVuY3Rpb24oKXt2YXIgZSx0LG4scjtpZihhcmd1bWVudHMubGVuZ3RoPT09MClmb3Iobj10aGlzLmJpdHMubGVuZ3RoLTE7bj49MDtuLS0pdGhpcy5iaXRzW25dPX50aGlzLmJpdHNbbl07ZWxzZXthcmd1bWVudHMubGVuZ3RoPT09MT8oZT0wLHQ9YXJndW1lbnRzWzBdKTooZT1hcmd1bWVudHNbMF0sdD1hcmd1bWVudHNbMV0pLHRoaXMuZ3Jvd1RvSW5jbHVkZSh0KTtmb3Iobj1lO248PXQ7bisrKXI9cy5hbnRsci5ydW50aW1lLkJpdFNldC53b3JkTnVtYmVyKG4pLHRoaXMuYml0c1tyXV49cy5hbnRsci5ydW50aW1lLkJpdFNldC5iaXRNYXNrKG4pfX0sb3I6ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIHRoaXM7dmFyIHQ9dGhpcy5jbG9uZSgpO3JldHVybiB0Lm9ySW5QbGFjZShlKSx0fSxvckluUGxhY2U6ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuO2UuYml0cy5sZW5ndGg+dGhpcy5iaXRzLmxlbmd0aCYmdGhpcy5zZXRTaXplKGUuYml0cy5sZW5ndGgpO3ZhciB0PU1hdGgubWluKHRoaXMuYml0cy5sZW5ndGgsZS5iaXRzLmxlbmd0aCksbjtmb3Iobj10LTE7bj49MDtuLS0pdGhpcy5iaXRzW25dfD1lLmJpdHNbbl19LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdD1zLmFudGxyLnJ1bnRpbWUuQml0U2V0LndvcmROdW1iZXIoZSk7dD49dGhpcy5iaXRzLmxlbmd0aCYmdGhpcy5ncm93VG9JbmNsdWRlKGUpLHRoaXMuYml0c1t0XSY9fnMuYW50bHIucnVudGltZS5CaXRTZXQuYml0TWFzayhlKX0sc2V0U2l6ZTpmdW5jdGlvbihlKXt2YXIgdD1lLXRoaXMuYml0cy5sZW5ndGg7d2hpbGUodD49MCl0aGlzLmJpdHMucHVzaCgwKSx0LS19LG51bUJpdHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iaXRzLmxlbmd0aDw8cy5hbnRsci5ydW50aW1lLkJpdFNldC5MT0dfQklUU30sbGVuZ3RoSW5Mb25nV29yZHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iaXRzLmxlbmd0aH0sc3Vic2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlP3RoaXMuYW5kKGUpLmVxdWFscyh0aGlzKTohMX0sc3VidHJhY3RJblBsYWNlOmZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybjt2YXIgdDtmb3IodD0wO3Q8dGhpcy5iaXRzLmxlbmd0aCYmdDxlLmJpdHMubGVuZ3RoO3QrKyl0aGlzLmJpdHNbdF0mPX5lLmJpdHNbdF19LHN1YnRyYWN0OmZ1bmN0aW9uKGUpe2lmKCEhZSYmZSBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5CaXRTZXQpe3ZhciB0PXRoaXMuY2xvbmUoKTtyZXR1cm4gdC5zdWJ0cmFjdEluUGxhY2UoZSksdH1yZXR1cm4gbnVsbH0sdG9BcnJheTpmdW5jdGlvbigpe3ZhciBlPVtdLHQsbj0wO2Zvcih0PTA7dDx0aGlzLmJpdHMubGVuZ3RoPDxzLmFudGxyLnJ1bnRpbWUuQml0U2V0LkxPR19CSVRTO3QrKyl0aGlzLm1lbWJlcih0KSYmKGVbbisrXT10KTtyZXR1cm4gZX0sdG9QYWNrZWRBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJpdHN9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0wP3RoaXMudG9TdHJpbmcxKG51bGwpOnMuYW50bHIubGFuZy5pc1N0cmluZyhhcmd1bWVudHNbMF0pP3MuYW50bHIubGFuZy5pc1ZhbHVlKGFyZ3VtZW50c1sxXSk/dGhpcy50b1N0cmluZzIoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk6dGhpcy50b1N0cmluZzEobnVsbCk6dGhpcy50b1N0cmluZzEoYXJndW1lbnRzWzBdKX0sdG9TdHJpbmcxOmZ1bmN0aW9uKGUpe3ZhciB0PSJ7IixuPSIsIixyLGk9ITE7Zm9yKHI9MDtyPHRoaXMuYml0cy5sZW5ndGg8PHMuYW50bHIucnVudGltZS5CaXRTZXQuTE9HX0JJVFM7cisrKXRoaXMubWVtYmVyKHIpJiYocj4wJiZpJiYodCs9biksZT90Kz1lLmdldFRva2VuRGlzcGxheU5hbWUocik6dCs9ci50b1N0cmluZygpLGk9ITApO3JldHVybiB0KyJ9In0sdG9TdHJpbmcyOmZ1bmN0aW9uKGUsdCl7dmFyIG49IiIscjtmb3Iocj0wO3I8dGhpcy5iaXRzLmxlbmd0aDw8cy5hbnRsci5ydW50aW1lLkJpdFNldC5MT0dfQklUUztyKyspdGhpcy5tZW1iZXIocikmJihuLmxlbmd0aD4wJiYobis9ZSkscj49dC5zaXplKCk/bis9IiciK3IrIiciOnMuYW50bHIubGFuZy5pc1ZhbHVlKHQuZ2V0KHIpKT9uKz10LmdldChyKTpuKz0iJyIrcisiJyIpO3JldHVybiBufX0scy5hbnRsci5ydW50aW1lLkNoYXJTdHJlYW09e0VPRjotMX0scy5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuPWZ1bmN0aW9uKCl7dmFyIGU7dGhpcy5jaGFyUG9zaXRpb25JbkxpbmU9LTEsdGhpcy5jaGFubmVsPTAsdGhpcy5pbmRleD0tMSxhcmd1bWVudHMubGVuZ3RoPT0xP3MuYW50bHIubGFuZy5pc051bWJlcihhcmd1bWVudHNbMF0pP3RoaXMudHlwZT1hcmd1bWVudHNbMF06KGU9YXJndW1lbnRzWzBdLHRoaXMudGV4dD1lLmdldFRleHQoKSx0aGlzLnR5cGU9ZS5nZXRUeXBlKCksdGhpcy5saW5lPWUuZ2V0TGluZSgpLHRoaXMuaW5kZXg9ZS5nZXRUb2tlbkluZGV4KCksdGhpcy5jaGFyUG9zaXRpb25JbkxpbmU9ZS5nZXRDaGFyUG9zaXRpb25JbkxpbmUoKSx0aGlzLmNoYW5uZWw9ZS5nZXRDaGFubmVsKCksZSBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5Db21tb25Ub2tlbiYmKHRoaXMuc3RhcnQ9ZS5zdGFydCx0aGlzLnN0b3A9ZS5zdG9wKSk6YXJndW1lbnRzLmxlbmd0aD09Mj8odGhpcy50eXBlPWFyZ3VtZW50c1swXSx0aGlzLnRleHQ9YXJndW1lbnRzWzFdLHRoaXMuY2hhbm5lbD0wKTphcmd1bWVudHMubGVuZ3RoPT01JiYodGhpcy5pbnB1dD1hcmd1bWVudHNbMF0sdGhpcy50eXBlPWFyZ3VtZW50c1sxXSx0aGlzLmNoYW5uZWw9YXJndW1lbnRzWzJdLHRoaXMuc3RhcnQ9YXJndW1lbnRzWzNdLHRoaXMuc3RvcD1hcmd1bWVudHNbNF0pfSxzLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW4ucHJvdG90eXBlPXtnZXRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHlwZX0sc2V0TGluZTpmdW5jdGlvbihlKXt0aGlzLmxpbmU9ZX0sZ2V0VGV4dDpmdW5jdGlvbigpe3JldHVybiBzLmFudGxyLmxhbmcuaXNTdHJpbmcodGhpcy50ZXh0KT90aGlzLnRleHQ6dGhpcy5pbnB1dD8odGhpcy50ZXh0PXRoaXMuaW5wdXQuc3Vic3RyaW5nKHRoaXMuc3RhcnQsdGhpcy5zdG9wKSx0aGlzLnRleHQpOm51bGx9LHNldFRleHQ6ZnVuY3Rpb24oZSl7dGhpcy50ZXh0PWV9LGdldExpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saW5lfSxnZXRDaGFyUG9zaXRpb25JbkxpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGFyUG9zaXRpb25JbkxpbmV9LHNldENoYXJQb3NpdGlvbkluTGluZTpmdW5jdGlvbihlKXt0aGlzLmNoYXJQb3NpdGlvbkluTGluZT1lfSxnZXRDaGFubmVsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hhbm5lbH0sc2V0Q2hhbm5lbDpmdW5jdGlvbihlKXt0aGlzLmNoYW5uZWw9ZX0sc2V0VHlwZTpmdW5jdGlvbihlKXt0aGlzLnR5cGU9ZX0sZ2V0U3RhcnRJbmRleDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0fSxzZXRTdGFydEluZGV4OmZ1bmN0aW9uKGUpe3RoaXMuc3RhcnQ9ZX0sZ2V0U3RvcEluZGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RvcH0sc2V0U3RvcEluZGV4OmZ1bmN0aW9uKGUpe3RoaXMuc3RvcD1lfSxnZXRUb2tlbkluZGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXh9LHNldFRva2VuSW5kZXg6ZnVuY3Rpb24oZSl7dGhpcy5pbmRleD1lfSxnZXRJbnB1dFN0cmVhbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0fSxzZXRJbnB1dFN0cmVhbTpmdW5jdGlvbihlKXt0aGlzLmlucHV0PWV9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGU9IiI7dGhpcy5jaGFubmVsPjAmJihlPSIsY2hhbm5lbD0iK3RoaXMuY2hhbm5lbCk7dmFyIHQ9dGhpcy5nZXRUZXh0KCk7cmV0dXJuIHMuYW50bHIubGFuZy5pc051bGwodCk/dD0iPG5vIHRleHQ+IjoodD10LnJlcGxhY2UoL1xuL2csIlxcXFxuIiksdD10LnJlcGxhY2UoL1xyL2csIlxcXFxyIiksdD10LnJlcGxhY2UoL1x0L2csIlxcXFx0IikpLCJbQCIrdGhpcy5nZXRUb2tlbkluZGV4KCkrIiwiK3RoaXMuc3RhcnQrIjoiK3RoaXMuc3RvcCsiPSciK3QrIicsPCIrdGhpcy50eXBlKyI+IitlKyIsIit0aGlzLmxpbmUrIjoiK3RoaXMuZ2V0Q2hhclBvc2l0aW9uSW5MaW5lKCkrIl0ifX0scy5hbnRsci5ydW50aW1lLlRva2VuPWZ1bmN0aW9uKCl7fSxzLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChzLmFudGxyLnJ1bnRpbWUuVG9rZW4se0VPUl9UT0tFTl9UWVBFOjEsRE9XTjoyLFVQOjMsTUlOX1RPS0VOX1RZUEU6NCxFT0Y6cy5hbnRsci5ydW50aW1lLkNoYXJTdHJlYW0uRU9GLEVPRl9UT0tFTjpuZXcgcy5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuKHMuYW50bHIucnVudGltZS5DaGFyU3RyZWFtLkVPRiksSU5WQUxJRF9UT0tFTl9UWVBFOjAsSU5WQUxJRF9UT0tFTjpuZXcgcy5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuKDApLFNLSVBfVE9LRU46bmV3IHMuYW50bHIucnVudGltZS5Db21tb25Ub2tlbigwKSxERUZBVUxUX0NIQU5ORUw6MCxISURERU5fQ0hBTk5FTDo5OX0pLHMuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHMuYW50bHIucnVudGltZS5Db21tb25Ub2tlbixzLmFudGxyLnJ1bnRpbWUuVG9rZW4pLHMuYW50bHIucnVudGltZS50cmVlPXt9LHMuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVDYXJkaW5hbGl0eUV4Y2VwdGlvbj1mdW5jdGlvbihlKXt0aGlzLmVsZW1lbnREZXNjcmlwdGlvbj1lfSxzLmFudGxyLmxhbmcuZXh0ZW5kKHMuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVDYXJkaW5hbGl0eUV4Y2VwdGlvbixFcnJvcix7Z2V0TWVzc2FnZTpmdW5jdGlvbigpe3JldHVybiBzLmFudGxyLmxhbmcuaXNTdHJpbmcodGhpcy5lbGVtZW50RGVzY3JpcHRpb24pP3RoaXMuZWxlbWVudERlc2NyaXB0aW9uOm51bGx9LG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4ib3JnLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlQ2FyZGluYWxpdHlFeGNlcHRpb24ifX0pLHMuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVFbXB0eVN0cmVhbUV4Y2VwdGlvbj1mdW5jdGlvbihlKXt2YXIgdD1zLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlRW1wdHlTdHJlYW1FeGNlcHRpb24uc3VwZXJjbGFzczt0LmNvbnN0cnVjdG9yLmNhbGwodGhpcyxlKX0scy5hbnRsci5sYW5nLmV4dGVuZChzLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlRW1wdHlTdHJlYW1FeGNlcHRpb24scy5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZUNhcmRpbmFsaXR5RXhjZXB0aW9uLHtuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIm9yZy5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZUVtcHR5U3RyZWFtRXhjZXB0aW9uIn19KSxzLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlRWFybHlFeGl0RXhjZXB0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PXMuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVFYXJseUV4aXRFeGNlcHRpb24uc3VwZXJjbGFzcztzLmFudGxyLmxhbmcuaXNVbmRlZmluZWQoZSkmJihlPW51bGwpLHQuY29uc3RydWN0b3IuY2FsbCh0aGlzLGUpfSxzLmFudGxyLmxhbmcuZXh0ZW5kKHMuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVFYXJseUV4aXRFeGNlcHRpb24scy5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZUNhcmRpbmFsaXR5RXhjZXB0aW9uLHtuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIm9yZy5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZUVhcmx5RXhpdEV4Y2VwdGlvbiJ9fSkscy5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRUcmVlTm9kZUV4Y2VwdGlvbj1mdW5jdGlvbihlLHQpe2UmJnQmJihzLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFRyZWVOb2RlRXhjZXB0aW9uLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpLHRoaXMuZXhwZWN0aW5nPWUpfSxzLmFudGxyLmxhbmcuZXh0ZW5kKHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkVHJlZU5vZGVFeGNlcHRpb24scy5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uLHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJNaXNtYXRjaGVkVHJlZU5vZGVFeGNlcHRpb24oIit0aGlzLmdldFVuZXhwZWN0ZWRUeXBlKCkrIiE9Iit0aGlzLmV4cGVjdGluZysiKSJ9LG5hbWU6Im9yZy5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRUcmVlTm9kZUV4Y2VwdGlvbiJ9KSxzLmFudGxyLnJ1bnRpbWUudHJlZS5CYXNlVHJlZT1mdW5jdGlvbigpe30scy5hbnRsci5ydW50aW1lLnRyZWUuQmFzZVRyZWUucHJvdG90eXBlPXtnZXRDaGlsZDpmdW5jdGlvbihlKXtyZXR1cm4hdGhpcy5jaGlsZHJlbnx8ZT49dGhpcy5jaGlsZHJlbi5sZW5ndGg/bnVsbDp0aGlzLmNoaWxkcmVuW2VdfSxnZXRDaGlsZHJlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkcmVufSxnZXRGaXJzdENoaWxkV2l0aFR5cGU6ZnVuY3Rpb24oZSl7dmFyIHQsbjtmb3IodD0wO3RoaXMuY2hpbGRyZW4mJnQ8dGhpcy5jaGlsZHJlbi5sZW5ndGg7dCsrKXtuPXRoaXMuY2hpbGRyZW5bdF07aWYobi5nZXRUeXBlKCk9PT1lKXJldHVybiBufXJldHVybiBudWxsfSxnZXRDaGlsZENvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW4/dGhpcy5jaGlsZHJlbi5sZW5ndGg6MH0sYWRkQ2hpbGQ6ZnVuY3Rpb24oZSl7aWYoIXMuYW50bHIubGFuZy5pc1ZhbHVlKGUpKXJldHVybjt2YXIgdD1lLG4scixpO2lmKHQuaXNOaWwoKSl7aWYodGhpcy5jaGlsZHJlbiYmdGhpcy5jaGlsZHJlbj09dC5jaGlsZHJlbil0aHJvdyBuZXcgRXJyb3IoImF0dGVtcHQgdG8gYWRkIGNoaWxkIGxpc3QgdG8gaXRzZWxmIik7aWYodC5jaGlsZHJlbilpZih0aGlzLmNoaWxkcmVuKXtuPXQuY2hpbGRyZW4ubGVuZ3RoO2ZvcihyPTA7cjxuO3IrKylpPXQuY2hpbGRyZW5bcl0sdGhpcy5jaGlsZHJlbi5wdXNoKGkpLGkuc2V0UGFyZW50KHRoaXMpLGkuc2V0Q2hpbGRJbmRleCh0aGlzLmNoaWxkcmVuLmxlbmd0aC0xKX1lbHNlIHRoaXMuY2hpbGRyZW49dC5jaGlsZHJlbix0aGlzLmZyZXNoZW5QYXJlbnRBbmRDaGlsZEluZGV4ZXMoKX1lbHNlIHRoaXMuY2hpbGRyZW58fCh0aGlzLmNoaWxkcmVuPXRoaXMuY3JlYXRlQ2hpbGRyZW5MaXN0KCkpLHRoaXMuY2hpbGRyZW4ucHVzaChlKSx0LnNldFBhcmVudCh0aGlzKSx0LnNldENoaWxkSW5kZXgodGhpcy5jaGlsZHJlbi5sZW5ndGgtMSl9LGFkZENoaWxkcmVuOmZ1bmN0aW9uKGUpe3ZhciB0LG47Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyluPWVbdF0sdGhpcy5hZGRDaGlsZChuKX0sc2V0Q2hpbGQ6ZnVuY3Rpb24oZSx0KXtpZighdClyZXR1cm47aWYodC5pc05pbCgpKXRocm93IG5ldyBFcnJvcigiQ2FuJ3Qgc2V0IHNpbmdsZSBjaGlsZCB0byBhIGxpc3QiKTt0aGlzLmNoaWxkcmVufHwodGhpcy5jaGlsZHJlbj10aGlzLmNyZWF0ZUNoaWxkcmVuTGlzdCgpKSx0aGlzLmNoaWxkcmVuW2VdPXQsdC5zZXRQYXJlbnQodGhpcyksdC5zZXRDaGlsZEluZGV4KGUpfSxkZWxldGVDaGlsZDpmdW5jdGlvbihlKXtpZighdGhpcy5jaGlsZHJlbilyZXR1cm4gbnVsbDtpZihlPDB8fGU+PXRoaXMuY2hpbGRyZW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSW5kZXggb3V0IG9mIGJvdW5kcy4iKTt2YXIgdD10aGlzLmNoaWxkcmVuLnNwbGljZShlLDEpWzBdO3JldHVybiB0aGlzLmZyZXNoZW5QYXJlbnRBbmRDaGlsZEluZGV4ZXMoZSksdH0scmVwbGFjZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXtpZighdGhpcy5jaGlsZHJlbil0aHJvdyBuZXcgRXJyb3IoImluZGV4ZXMgaW52YWxpZDsgbm8gY2hpbGRyZW4gaW4gbGlzdCIpO3ZhciByPXQtZSsxLGkscz1uLG89bnVsbDtzLmlzTmlsKCk/bz1zLmNoaWxkcmVuOihvPVtdLG8ucHVzaChzKSksaT1vLmxlbmd0aDt2YXIgdT1vLmxlbmd0aCxhPXItaSxmLGwsYyxoLHAsZCx2O2lmKGE9PT0wKXtmPTA7Zm9yKGw9ZTtsPD10O2wrKyljPW9bZl0sdGhpcy5jaGlsZHJlbltsXT1jLGMuc2V0UGFyZW50KHRoaXMpLGMuc2V0Q2hpbGRJbmRleChsKSxmKyt9ZWxzZSBpZihhPjApe2ZvcihmPTA7Zjx1O2YrKyl0aGlzLmNoaWxkcmVuW2UrZl09b1tmXTtoPWUrdTtmb3IocD1oO3A8PXQ7cCsrKWQ9dGhpcy5jaGlsZHJlbi5zcGxpY2UoaCwxKVswXTt0aGlzLmZyZXNoZW5QYXJlbnRBbmRDaGlsZEluZGV4ZXMoZSl9ZWxzZXtmb3IoZj0wO2Y8cjtmKyspdGhpcy5jaGlsZHJlbltlK2ZdPW9bZl07dj1pLXI7Zm9yKGY9cjtmPGk7ZisrKXRoaXMuY2hpbGRyZW4uc3BsaWNlKGUrZiwwLG9bZl0pO3RoaXMuZnJlc2hlblBhcmVudEFuZENoaWxkSW5kZXhlcyhlKX19LGNyZWF0ZUNoaWxkcmVuTGlzdDpmdW5jdGlvbigpe3JldHVybltdfSxpc05pbDpmdW5jdGlvbigpe3JldHVybiExfSxmcmVzaGVuUGFyZW50QW5kQ2hpbGRJbmRleGVzOmZ1bmN0aW9uKGUpe3MuYW50bHIubGFuZy5pc051bWJlcihlKXx8KGU9MCk7dmFyIHQ9dGhpcy5nZXRDaGlsZENvdW50KCksbixyO2ZvcihuPWU7bjx0O24rKylyPXRoaXMuZ2V0Q2hpbGQobiksci5zZXRDaGlsZEluZGV4KG4pLHIuc2V0UGFyZW50KHRoaXMpfSxzYW5pdHlDaGVja1BhcmVudEFuZENoaWxkSW5kZXhlczpmdW5jdGlvbihlLHQpe2FyZ3VtZW50cy5sZW5ndGg9PT0wJiYoZT1udWxsLHQ9LTEpO2lmKGUhPT10aGlzLmdldFBhcmVudCgpKXRocm93IG5ldyBFcnJvcigicGFyZW50cyBkb24ndCBtYXRjaDsgZXhwZWN0ZWQgIitlKyIgZm91bmQgIit0aGlzLmdldFBhcmVudCgpKTtpZih0IT09dGhpcy5nZXRDaGlsZEluZGV4KCkpdGhyb3cgbmV3IEVycm9yKCJjaGlsZCBpbmRleGVzIGRvbid0IG1hdGNoOyBleHBlY3RlZCAiK3QrIiBmb3VuZCAiK3RoaXMuZ2V0Q2hpbGRJbmRleCgpKTt2YXIgbj10aGlzLmdldENoaWxkQ291bnQoKSxyLGk7Zm9yKHI9MDtyPG47cisrKWk9dGhpcy5nZXRDaGlsZChyKSxpLnNhbml0eUNoZWNrUGFyZW50QW5kQ2hpbGRJbmRleGVzKHRoaXMscil9LGdldENoaWxkSW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sc2V0Q2hpbGRJbmRleDpmdW5jdGlvbihlKXt9LGdldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxzZXRQYXJlbnQ6ZnVuY3Rpb24oZSl7fSxnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHRvU3RyaW5nVHJlZTpmdW5jdGlvbigpe2lmKCF0aGlzLmNoaWxkcmVufHx0aGlzLmNoaWxkcmVuLmxlbmd0aD09PTApcmV0dXJuIHRoaXMudG9TdHJpbmcoKTt2YXIgZT0iIix0LG47dGhpcy5pc05pbCgpfHwoZSs9IigiLGUrPXRoaXMudG9TdHJpbmcoKSxlKz0iICIpO2Zvcih0PTA7dGhpcy5jaGlsZHJlbiYmdDx0aGlzLmNoaWxkcmVuLmxlbmd0aDt0Kyspbj10aGlzLmNoaWxkcmVuW3RdLHQ+MCYmKGUrPSIgIiksZSs9bi50b1N0cmluZ1RyZWUoKTtyZXR1cm4gdGhpcy5pc05pbCgpfHwoZSs9IikiKSxlfSxnZXRMaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGdldENoYXJQb3NpdGlvbkluTGluZTpmdW5jdGlvbigpe3JldHVybiAwfX0scy5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZT1mdW5jdGlvbihlKXt0aGlzLnN0YXJ0SW5kZXg9LTEsdGhpcy5zdG9wSW5kZXg9LTEsdGhpcy5jaGlsZEluZGV4PS0xLHRoaXMucGFyZW50PW51bGwsdGhpcy50b2tlbj1udWxsLGUgaW5zdGFuY2VvZiBzLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlPyhzLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGUpLHRoaXMudG9rZW49ZS50b2tlbix0aGlzLnN0YXJ0SW5kZXg9ZS5zdGFydEluZGV4LHRoaXMuc3RvcEluZGV4PWUuc3RvcEluZGV4KTplIGluc3RhbmNlb2Ygcy5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuJiYodGhpcy50b2tlbj1lKX0scy5hbnRsci5sYW5nLmV4dGVuZChzLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlLHMuYW50bHIucnVudGltZS50cmVlLkJhc2VUcmVlLHtnZXRUb2tlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2VufSxkdXBOb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBzLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlKHRoaXMpfSxpc05pbDpmdW5jdGlvbigpe3JldHVybiF0aGlzLnRva2VufSxnZXRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW4/dGhpcy50b2tlbi5nZXRUeXBlKCk6cy5hbnRsci5ydW50aW1lLlRva2VuLklOVkFMSURfVE9LRU5fVFlQRX0sZ2V0VGV4dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2VuP3RoaXMudG9rZW4uZ2V0VGV4dCgpOm51bGx9LGdldExpbmU6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy50b2tlbnx8dGhpcy50b2tlbi5nZXRMaW5lKCk9PT0wP3RoaXMuZ2V0Q2hpbGRDb3VudCgpPjA/dGhpcy5nZXRDaGlsZCgwKS5nZXRMaW5lKCk6MDp0aGlzLnRva2VuLmdldExpbmUoKX0sZ2V0Q2hhclBvc2l0aW9uSW5MaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMudG9rZW58fHRoaXMudG9rZW4uZ2V0Q2hhclBvc2l0aW9uSW5MaW5lKCk9PT0tMT90aGlzLmdldENoaWxkQ291bnQoKT4wP3RoaXMuZ2V0Q2hpbGQoMCkuZ2V0Q2hhclBvc2l0aW9uSW5MaW5lKCk6MDp0aGlzLnRva2VuLmdldENoYXJQb3NpdGlvbkluTGluZSgpfSxnZXRUb2tlblN0YXJ0SW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbj90aGlzLnRva2VuLmdldFRva2VuSW5kZXgoKTp0aGlzLnN0YXJ0SW5kZXh9LHNldFRva2VuU3RhcnRJbmRleDpmdW5jdGlvbihlKXt0aGlzLnN0YXJ0SW5kZXg9ZX0sZ2V0VG9rZW5TdG9wSW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbj90aGlzLnRva2VuLmdldFRva2VuSW5kZXgoKTp0aGlzLnN0b3BJbmRleH0sc2V0VG9rZW5TdG9wSW5kZXg6ZnVuY3Rpb24oZSl7dGhpcy5zdG9wSW5kZXg9ZX0sZ2V0Q2hpbGRJbmRleDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkSW5kZXh9LGdldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudH0sc2V0UGFyZW50OmZ1bmN0aW9uKGUpe3RoaXMucGFyZW50PWV9LHNldENoaWxkSW5kZXg6ZnVuY3Rpb24oZSl7dGhpcy5jaGlsZEluZGV4PWV9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNOaWwoKT8ibmlsIjp0aGlzLmdldFR5cGUoKT09PXMuYW50bHIucnVudGltZS5Ub2tlbi5JTlZBTElEX1RPS0VOX1RZUEU/IjxlcnJvcm5vZGU+Ijp0aGlzLnRva2VuP3RoaXMudG9rZW4uZ2V0VGV4dCgpOm51bGx9fSkscy5hbnRsci5ydW50aW1lLnRyZWUuVHJlZT17SU5WQUxJRF9OT0RFOm5ldyBzLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlKHMuYW50bHIucnVudGltZS5Ub2tlbi5JTlZBTElEX1RPS0VOKX0scy5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uRXJyb3JOb2RlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFufHxuLmdldFRva2VuSW5kZXgoKTx0LmdldFRva2VuSW5kZXgoKSYmbi5nZXRUeXBlKCkhPXMuYW50bHIucnVudGltZS5Ub2tlbi5FT0Ypbj10O3RoaXMuaW5wdXQ9ZSx0aGlzLnN0YXJ0PXQsdGhpcy5zdG9wPW4sdGhpcy50cmFwcGVkRXhjZXB0aW9uPXJ9LHMuYW50bHIubGFuZy5leHRlbmQocy5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uRXJyb3JOb2RlLHMuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWUse2lzTmlsOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGdldFR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gcy5hbnRsci5ydW50aW1lLlRva2VuLklOVkFMSURfVE9LRU5fVFlQRX0sZ2V0VGV4dDpmdW5jdGlvbigpe3ZhciBlPW51bGw7aWYodGhpcy5zdGFydCBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5Db21tb25Ub2tlbil7dmFyIHQ9dGhpcy5zdGFydC5nZXRUb2tlbkluZGV4KCksbj10aGlzLnN0b3AuZ2V0VG9rZW5JbmRleCgpO3RoaXMuc3RvcC5nZXRUeXBlKCk9PT1zLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GJiYobj10aGlzLmlucHV0LnNpemUoKSksZT10aGlzLmlucHV0LnRvU3RyaW5nKHQsbil9ZWxzZSB0aGlzLnN0YXJ0IGluc3RhbmNlb2Ygcy5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZT9lPXRoaXMuaW5wdXQudG9TdHJpbmcodGhpcy5zdGFydCx0aGlzLnN0b3ApOmU9Ijx1bmtub3duPiI7cmV0dXJuIGV9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJhcHBlZEV4Y2VwdGlvbiBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5NaXNzaW5nVG9rZW5FeGNlcHRpb24/IjxtaXNzaW5nIHR5cGU6ICIrdGhpcy50cmFwcGVkRXhjZXB0aW9uLmdldE1pc3NpbmdUeXBlKCkrIj4iOnRoaXMudHJhcHBlZEV4Y2VwdGlvbiBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5VbndhbnRlZFRva2VuRXhjZXB0aW9uPyI8ZXh0cmFuZW91czogIit0aGlzLnRyYXBwZWRFeGNlcHRpb24uZ2V0VW5leHBlY3RlZFRva2VuKCkrIiwgcmVzeW5jPSIrdGhpcy5nZXRUZXh0KCkrIj4iOnRoaXMudHJhcHBlZEV4Y2VwdGlvbiBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkVG9rZW5FeGNlcHRpb24/IjxtaXNtYXRjaGVkIHRva2VuOiAiK3RoaXMudHJhcHBlZEV4Y2VwdGlvbi50b2tlbisiLCByZXN5bmM9Iit0aGlzLmdldFRleHQoKSsiPiI6dGhpcy50cmFwcGVkRXhjZXB0aW9uIGluc3RhbmNlb2Ygcy5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uPyI8dW5leHBlY3RlZDogIit0aGlzLnRyYXBwZWRFeGNlcHRpb24udG9rZW4rIiwgcmVzeW5jPSIrdGhpcy5nZXRUZXh0KCkrIj4iOiI8ZXJyb3I6ICIrdGhpcy5nZXRUZXh0KCkrIj4ifX0pLHMuYW50bHIucnVudGltZS50cmVlLkJhc2VUcmVlQWRhcHRvcj1mdW5jdGlvbigpe3RoaXMudW5pcXVlTm9kZUlEPTF9LHMuYW50bHIucnVudGltZS50cmVlLkJhc2VUcmVlQWRhcHRvci5wcm90b3R5cGU9e25pbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNyZWF0ZShudWxsKX0sZXJyb3JOb2RlOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPW5ldyBzLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25FcnJvck5vZGUoZSx0LG4scik7cmV0dXJuIGl9LGlzTmlsOmZ1bmN0aW9uKGUpe3JldHVybiBlLmlzTmlsKCl9LGR1cFRyZWU6ZnVuY3Rpb24oZSx0KXthcmd1bWVudHMubGVuZ3RoPT09MSYmKHQ9bnVsbCk7aWYoIWUpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5kdXBOb2RlKGUpO3RoaXMuc2V0Q2hpbGRJbmRleChuLHRoaXMuZ2V0Q2hpbGRJbmRleChlKSksdGhpcy5zZXRQYXJlbnQobix0KTt2YXIgcj10aGlzLmdldENoaWxkQ291bnQoZSksaSxzLG87Zm9yKGk9MDtpPHI7aSsrKXM9dGhpcy5nZXRDaGlsZChlLGkpLG89dGhpcy5kdXBUcmVlKHMsZSksdGhpcy5hZGRDaGlsZChuLG8pO3JldHVybiBufSxhZGRDaGlsZDpmdW5jdGlvbihlLHQpe2UmJnMuYW50bHIubGFuZy5pc1ZhbHVlKHQpJiZlLmFkZENoaWxkKHQpfSxiZWNvbWVSb290OmZ1bmN0aW9uKGUsdCl7aWYoZSBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5Db21tb25Ub2tlbnx8IWUpZT10aGlzLmNyZWF0ZShlKTt2YXIgbj1lLHI9dDtpZighdClyZXR1cm4gZTtpZihuLmlzTmlsKCkpe2lmKG4uZ2V0Q2hpbGRDb3VudCgpPjEpdGhyb3cgbmV3IEVycm9yKCJtb3JlIHRoYW4gb25lIG5vZGUgYXMgcm9vdCAoVE9ETzogbWFrZSBleGNlcHRpb24gaGllcmFyY2h5KSIpO249bi5nZXRDaGlsZCgwKX1yZXR1cm4gbi5hZGRDaGlsZChyKSxufSxydWxlUG9zdFByb2Nlc3Npbmc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdCYmdC5pc05pbCgpJiYodC5nZXRDaGlsZENvdW50KCk9PT0wP3Q9bnVsbDp0LmdldENoaWxkQ291bnQoKT09PTEmJih0PXQuZ2V0Q2hpbGQoMCksdC5zZXRQYXJlbnQobnVsbCksdC5zZXRDaGlsZEluZGV4KC0xKSkpLHR9LGNyZWF0ZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI7aWYoYXJndW1lbnRzLmxlbmd0aD09PTIpcmV0dXJuIHMuYW50bHIubGFuZy5pc1N0cmluZyhhcmd1bWVudHNbMV0pPyhuPWFyZ3VtZW50c1sxXSx0PXRoaXMuY3JlYXRlVG9rZW4oZSxuKSxyPXRoaXMuY3JlYXRlKHQpLHIpOih0PXRoaXMuY3JlYXRlVG9rZW4odCksdC5zZXRUeXBlKGUpLHI9dGhpcy5jcmVhdGUodCkscik7aWYoYXJndW1lbnRzLmxlbmd0aD09PTMpcmV0dXJuIG49YXJndW1lbnRzWzJdLHQ9dGhpcy5jcmVhdGVUb2tlbih0KSx0LnNldFR5cGUoZSksdC5zZXRUZXh0KG4pLHI9dGhpcy5jcmVhdGUodCkscn0sZ2V0VHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRUeXBlKCksMH0sc2V0VHlwZTpmdW5jdGlvbihlLHQpe3Rocm93IG5ldyBFcnJvcigiZG9uJ3Qga25vdyBlbm91Z2ggYWJvdXQgVHJlZSBub2RlIil9LGdldFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0VGV4dCgpfSxzZXRUZXh0OmZ1bmN0aW9uKGUsdCl7dGhyb3cgbmV3IEVycm9yKCJkb24ndCBrbm93IGVub3VnaCBhYm91dCBUcmVlIG5vZGUiKX0sZ2V0Q2hpbGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5nZXRDaGlsZCh0KX0sc2V0Q2hpbGQ6ZnVuY3Rpb24oZSx0LG4pe2Uuc2V0Q2hpbGQodCxuKX0sZGVsZXRlQ2hpbGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5kZWxldGVDaGlsZCh0KX0sZ2V0Q2hpbGRDb3VudDpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRDaGlsZENvdW50KCl9LGdldFVuaXF1ZUlEOmZ1bmN0aW9uKGUpe3RoaXMudHJlZVRvVW5pcXVlSURNYXB8fCh0aGlzLnRyZWVUb1VuaXF1ZUlETWFwPXt9KTt2YXIgdD10aGlzLnRyZWVUb1VuaXF1ZUlETWFwW2VdO2lmKHMuYW50bHIubGFuZy5pc1ZhbHVlKHQpKXJldHVybiB0O3ZhciBuPXRoaXMudW5pcXVlTm9kZUlEO3JldHVybiB0aGlzLnRyZWVUb1VuaXF1ZUlETWFwW2VdPW4sdGhpcy51bmlxdWVOb2RlSUQrKyxufX0scy5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZUFkYXB0b3I9ZnVuY3Rpb24oKXt9LHMuYW50bHIubGFuZy5leHRlbmQocy5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZUFkYXB0b3Iscy5hbnRsci5ydW50aW1lLnRyZWUuQmFzZVRyZWVBZGFwdG9yLHtkdXBOb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBzLmFudGxyLmxhbmcuaXNWYWx1ZShlKT9lLmR1cE5vZGUoKTpudWxsfSxjcmVhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT9zLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlQWRhcHRvci5zdXBlcmNsYXNzLmNyZWF0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bmV3IHMuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWUoZSl9LGNyZWF0ZVRva2VuOmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09Mj9uZXcgcy5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pOm5ldyBzLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW4oYXJndW1lbnRzWzBdKX0sc2V0VG9rZW5Cb3VuZGFyaWVzOmZ1bmN0aW9uKGUsdCxuKXtpZighcy5hbnRsci5sYW5nLmlzVmFsdWUoZSkpcmV0dXJuO3ZhciByPTAsaT0wO3MuYW50bHIubGFuZy5pc1ZhbHVlKHQpJiYodC5nZXRUb2tlbkluZGV4P3I9dC5nZXRUb2tlbkluZGV4KCk6dC5nZXRTdGFydEluZGV4P3I9dC5nZXRTdGFydEluZGV4KCk6cj10LmdldFRva2VuU3RhcnRJbmRleCgpKSxzLmFudGxyLmxhbmcuaXNWYWx1ZShuKSYmKGkuZ2V0VG9rZW5JbmRleD9pPW4uZ2V0VG9rZW5JbmRleCgpOm4uZ2V0U3RvcEluZGV4P2k9bi5nZXRTdG9wSW5kZXgoKTppPW4uZ2V0VG9rZW5TdG9wSW5kZXgoKSksZS5zZXRUb2tlblN0YXJ0SW5kZXgociksZS5zZXRUb2tlblN0b3BJbmRleChpKX0sZ2V0VG9rZW5TdGFydEluZGV4OmZ1bmN0aW9uKGUpe3JldHVybiBlP2UuZ2V0VG9rZW5TdGFydEluZGV4KCk6LTF9LGdldFRva2VuU3RvcEluZGV4OmZ1bmN0aW9uKGUpe3JldHVybiBlP2UuZ2V0VG9rZW5TdG9wSW5kZXgoKTotMX0sZ2V0VGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gZT9lLmdldFRleHQoKTpudWxsfSxnZXRUeXBlOmZ1bmN0aW9uKGUpe3JldHVybiBlP2UuZ2V0VHlwZSgpOnMuYW50bHIucnVudGltZS5Ub2tlbi5JTlZBTElEX1RPS0VOX1RZUEV9LGdldFRva2VuOmZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2Ygcy5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZT9lLmdldFRva2VuKCk6bnVsbH0sZ2V0Q2hpbGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT9lLmdldENoaWxkKHQpOm51bGx9LGdldENoaWxkQ291bnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/ZS5nZXRDaGlsZENvdW50KCk6MH0sZ2V0UGFyZW50OmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFBhcmVudCgpfSxzZXRQYXJlbnQ6ZnVuY3Rpb24oZSx0KXtlLnNldFBhcmVudCh0KX0sZ2V0Q2hpbGRJbmRleDpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRDaGlsZEluZGV4KCl9LHNldENoaWxkSW5kZXg6ZnVuY3Rpb24oZSx0KXtlLnNldENoaWxkSW5kZXgodCl9LHJlcGxhY2VDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyKXtlJiZlLnJlcGxhY2VDaGlsZHJlbih0LG4scil9fSkscy5hbnRsci5ydW50aW1lLkFOVExSU3RyaW5nU3RyZWFtPWZ1bmN0aW9uKGUpe3RoaXMucD0wLHRoaXMubGluZT0xLHRoaXMuY2hhclBvc2l0aW9uSW5MaW5lPTAsdGhpcy5tYXJrRGVwdGg9MCx0aGlzLm1hcmtlcnM9bnVsbCx0aGlzLmxhc3RNYXJrZXI9bnVsbCx0aGlzLmRhdGE9ZSx0aGlzLm49ZS5sZW5ndGh9LHMuYW50bHIucnVudGltZS5BTlRMUlN0cmluZ1N0cmVhbS5wcm90b3R5cGU9e3Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5wPTAsdGhpcy5saW5lPTEsdGhpcy5jaGFyUG9zaXRpb25JbkxpbmU9MCx0aGlzLm1hcmtEZXB0aD0wfSxjb25zdW1lOmZ1bmN0aW9uKCl7dGhpcy5wPHRoaXMubiYmKHRoaXMuY2hhclBvc2l0aW9uSW5MaW5lKyssdGhpcy5kYXRhLmNoYXJBdCh0aGlzLnApPT09IlxuIiYmKHRoaXMubGluZSsrLHRoaXMuY2hhclBvc2l0aW9uSW5MaW5lPTApLHRoaXMucCsrKX0sTEE6ZnVuY3Rpb24oZSl7ZTwwJiZlKys7dmFyIHQ9dGhpcy5wK2UtMTtyZXR1cm4gdD49dGhpcy5ufHx0PDA/cy5hbnRsci5ydW50aW1lLkNoYXJTdHJlYW0uRU9GOnRoaXMuZGF0YS5jaGFyQXQodCl9LGluZGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucH0sc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm59LG1hcms6ZnVuY3Rpb24oKXt0aGlzLm1hcmtlcnN8fCh0aGlzLm1hcmtlcnM9W10sdGhpcy5tYXJrZXJzLnB1c2gobnVsbCkpLHRoaXMubWFya0RlcHRoKys7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5tYXJrRGVwdGg+PXRoaXMubWFya2Vycy5sZW5ndGg/KGU9e30sdGhpcy5tYXJrZXJzLnB1c2goZSkpOmU9dGhpcy5tYXJrZXJzW3RoaXMubWFya0RlcHRoXSxlLnA9dGhpcy5wLGUubGluZT10aGlzLmxpbmUsZS5jaGFyUG9zaXRpb25JbkxpbmU9dGhpcy5jaGFyUG9zaXRpb25JbkxpbmUsdGhpcy5sYXN0TWFya2VyPXRoaXMubWFya0RlcHRoLHRoaXMubWFya0RlcHRofSxyZXdpbmQ6ZnVuY3Rpb24oZSl7cy5hbnRsci5sYW5nLmlzTnVtYmVyKGUpfHwoZT10aGlzLmxhc3RNYXJrZXIpO3ZhciB0PXRoaXMubWFya2Vyc1tlXTt0aGlzLnNlZWsodC5wKSx0aGlzLmxpbmU9dC5saW5lLHRoaXMuY2hhclBvc2l0aW9uSW5MaW5lPXQuY2hhclBvc2l0aW9uSW5MaW5lLHRoaXMucmVsZWFzZShlKX0scmVsZWFzZTpmdW5jdGlvbihlKXt0aGlzLm1hcmtEZXB0aD1lLHRoaXMubWFya0RlcHRoLS19LHNlZWs6ZnVuY3Rpb24oZSl7aWYoZTw9dGhpcy5wKXt0aGlzLnA9ZTtyZXR1cm59d2hpbGUodGhpcy5wPGUpdGhpcy5jb25zdW1lKCl9LHN1YnN0cmluZzpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmRhdGEuc3Vic3RyKGUsdC1lKzEpfSxnZXRMaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGluZX0sZ2V0Q2hhclBvc2l0aW9uSW5MaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hhclBvc2l0aW9uSW5MaW5lfSxzZXRMaW5lOmZ1bmN0aW9uKGUpe3RoaXMubGluZT1lfSxzZXRDaGFyUG9zaXRpb25JbkxpbmU6ZnVuY3Rpb24oZSl7dGhpcy5jaGFyUG9zaXRpb25JbkxpbmU9ZX0sZ2V0U291cmNlTmFtZTpmdW5jdGlvbigpe3JldHVybiBudWxsfX0scy5hbnRsci5ydW50aW1lLkFOVExSU3RyaW5nU3RyZWFtLkxUPXMuYW50bHIucnVudGltZS5BTlRMUlN0cmluZ1N0cmVhbS5MQSxzLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW5TdHJlYW09ZnVuY3Rpb24oZSx0KXt0aGlzLnA9LTEsdGhpcy5jaGFubmVsPXMuYW50bHIucnVudGltZS5Ub2tlbi5ERUZBVUxUX0NIQU5ORUwsdGhpcy52X2Rpc2NhcmRPZmZDaGFubmVsVG9rZW5zPSExLHRoaXMudG9rZW5zPVtdLGFyZ3VtZW50cy5sZW5ndGg+PTI/dGhpcy5jaGFubmVsPXQ6YXJndW1lbnRzLmxlbmd0aD09PTEmJih0aGlzLnRva2VuU291cmNlPWUpfSxzLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW5TdHJlYW0ucHJvdG90eXBlPXtzZXRUb2tlblNvdXJjZTpmdW5jdGlvbihlKXt0aGlzLnRva2VuU291cmNlPWUsdGhpcy50b2tlbnM9W10sdGhpcy5wPS0xLHRoaXMuY2hhbm5lbD1zLmFudGxyLnJ1bnRpbWUuVG9rZW4uREVGQVVMVF9DSEFOTkVMfSxmaWxsQnVmZmVyOmZ1bmN0aW9uKCl7dmFyIGU9MCx0PXRoaXMudG9rZW5Tb3VyY2UubmV4dFRva2VuKCksbixyO3doaWxlKHMuYW50bHIubGFuZy5pc1ZhbHVlKHQpJiZ0LmdldFR5cGUoKSE9cy5hbnRsci5ydW50aW1lLkNoYXJTdHJlYW0uRU9GKW49ITEsdGhpcy5jaGFubmVsT3ZlcnJpZGVNYXAmJihyPXRoaXMuY2hhbm5lbE92ZXJyaWRlTWFwW3QuZ2V0VHlwZSgpXSxzLmFudGxyLmxhbmcuaXNWYWx1ZShyKSYmdC5zZXRDaGFubmVsKHIpKSx0aGlzLmRpc2NhcmRTZXQmJnRoaXMuZGlzY2FyZFNldFt0LmdldFR5cGUoKV0/bj0hMDp0aGlzLnZfZGlzY2FyZE9mZkNoYW5uZWxUb2tlbnMmJnQuZ2V0Q2hhbm5lbCgpIT10aGlzLmNoYW5uZWwmJihuPSEwKSxufHwodC5zZXRUb2tlbkluZGV4KGUpLHRoaXMudG9rZW5zLnB1c2godCksZSsrKSx0PXRoaXMudG9rZW5Tb3VyY2UubmV4dFRva2VuKCk7dGhpcy5wPTAsdGhpcy5wPXRoaXMuc2tpcE9mZlRva2VuQ2hhbm5lbHModGhpcy5wKX0sY29uc3VtZTpmdW5jdGlvbigpe3RoaXMucDx0aGlzLnRva2Vucy5sZW5ndGgmJih0aGlzLnArKyx0aGlzLnA9dGhpcy5za2lwT2ZmVG9rZW5DaGFubmVscyh0aGlzLnApKX0sc2tpcE9mZlRva2VuQ2hhbm5lbHM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50b2tlbnMubGVuZ3RoO3doaWxlKGU8dCYmdGhpcy50b2tlbnNbZV0uZ2V0Q2hhbm5lbCgpIT10aGlzLmNoYW5uZWwpZSsrO3JldHVybiBlfSxza2lwT2ZmVG9rZW5DaGFubmVsc1JldmVyc2U6ZnVuY3Rpb24oZSl7d2hpbGUoZT49MCYmdGhpcy50b2tlbnNbZV0uZ2V0Q2hhbm5lbCgpIT10aGlzLmNoYW5uZWwpZS0tO3JldHVybiBlfSxzZXRUb2tlblR5cGVDaGFubmVsOmZ1bmN0aW9uKGUsdCl7dGhpcy5jaGFubmVsT3ZlcnJpZGVNYXB8fCh0aGlzLmNoYW5uZWxPdmVycmlkZU1hcD17fSksdGhpcy5jaGFubmVsT3ZlcnJpZGVNYXBbZV09dH0sZGlzY2FyZFRva2VuVHlwZTpmdW5jdGlvbihlKXt0aGlzLmRpc2NhcmRTZXR8fCh0aGlzLmRpc2NhcmRTZXQ9e30pLHRoaXMuZGlzY2FyZFNldFtlXT0hMH0sZGlzY2FyZE9mZkNoYW5uZWxUb2tlbnM6ZnVuY3Rpb24oZSl7dGhpcy52X2Rpc2NhcmRPZmZDaGFubmVsVG9rZW5zPWV9LGdldFRva2VuczpmdW5jdGlvbihlLHQsbil7dGhpcy5wPT09LTEmJnRoaXMuZmlsbEJ1ZmZlcigpO2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKXJldHVybiB0aGlzLnRva2VucztzLmFudGxyLmxhbmcuaXNBcnJheShuKT9uPW5ldyBzLmFudGxyLnJ1bnRpbWUuQml0U2V0KG4pOnMuYW50bHIubGFuZy5pc051bWJlcihuKSYmKG49cy5hbnRsci5ydW50aW1lLkJpdFNldC5vZihuKSksdD49dGhpcy50b2tlbnMubGVuZ3RoJiYodD10aGlzLnRva2Vucy5sZW5ndGgtMSksZTwwJiYoZT0wKTtpZihlPnQpcmV0dXJuIG51bGw7dmFyIHI9W10saSxvO2ZvcihpPWU7aTw9dDtpKyspbz10aGlzLnRva2Vuc1tpXSwoIXRoaXMudHlwZXN8fG4ubWVtYmVyKG8uZ2V0VHlwZSgpKSkmJnIucHVzaChvKTtyZXR1cm4gci5sZW5ndGg9PT0wJiYocj1udWxsKSxyfSxMVDpmdW5jdGlvbihlKXt0aGlzLnA9PT0tMSYmdGhpcy5maWxsQnVmZmVyKCk7aWYoZT09PTApcmV0dXJuIG51bGw7aWYoZTwwKXJldHVybiB0aGlzLkxCKC0xKmUpO2lmKHRoaXMucCtlLTE+PXRoaXMudG9rZW5zLmxlbmd0aClyZXR1cm4gcy5hbnRsci5ydW50aW1lLlRva2VuLkVPRl9UT0tFTjt2YXIgdD10aGlzLnAsbj0xO3doaWxlKG48ZSl0PXRoaXMuc2tpcE9mZlRva2VuQ2hhbm5lbHModCsxKSxuKys7cmV0dXJuIHQ+PXRoaXMudG9rZW5zLmxlbmd0aD9zLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GX1RPS0VOOnRoaXMudG9rZW5zW3RdfSxMQjpmdW5jdGlvbihlKXt0aGlzLnA9PT0tMSYmdGhpcy5maWxsQnVmZmVyKCk7aWYoZT09PTApcmV0dXJuIG51bGw7aWYodGhpcy5wLWU8MClyZXR1cm4gbnVsbDt2YXIgdD10aGlzLnAsbj0xO3doaWxlKG48PWUpdD10aGlzLnNraXBPZmZUb2tlbkNoYW5uZWxzUmV2ZXJzZSh0LTEpLG4rKztyZXR1cm4gdDwwP251bGw6dGhpcy50b2tlbnNbdF19LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50b2tlbnNbZV19LExBOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLkxUKGUpLmdldFR5cGUoKX0sbWFyazpmdW5jdGlvbigpe3JldHVybiB0aGlzLnA9PT0tMSYmdGhpcy5maWxsQnVmZmVyKCksdGhpcy5sYXN0TWFya2VyPXRoaXMuaW5kZXgoKSx0aGlzLmxhc3RNYXJrZXJ9LHJlbGVhc2U6ZnVuY3Rpb24oZSl7fSxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5zLmxlbmd0aH0saW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wfSxyZXdpbmQ6ZnVuY3Rpb24oZSl7cy5hbnRsci5sYW5nLmlzTnVtYmVyKGUpfHwoZT10aGlzLmxhc3RNYXJrZXIpLHRoaXMuc2VlayhlKX0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnA9LTEsdGhpcy5sYXN0TWFya2VyPTB9LHNlZWs6ZnVuY3Rpb24oZSl7dGhpcy5wPWV9LGdldFRva2VuU291cmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5Tb3VyY2V9LGdldFNvdXJjZU5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUb2tlblNvdXJjZSgpLmdldFNvdXJjZU5hbWUoKX0sdG9TdHJpbmc6ZnVuY3Rpb24oZSxuKXthcmd1bWVudHMubGVuZ3RoPT09MCYmKHRoaXMucD09PS0xJiZ0aGlzLmZpbGxCdWZmZXIoKSxlPTAsbj10aGlzLnRva2Vucy5sZW5ndGgtMSk7aWYoIXMuYW50bHIubGFuZy5pc051bWJlcihlKSYmIXMuYW50bHIubGFuZy5pc051bWJlcihuKSl7aWYoIXMuYW50bHIubGFuZy5pc1ZhbHVlKGUpfHwhcy5hbnRsci5sYW5nLmlzVmFsdWUobikpcmV0dXJuIG51bGw7ZT1lLmdldFRva2VuSW5kZXgoKSxuPW4uZ2V0VG9rZW5JbmRleCgpfXZhciByPSIiLGk7aWYoZTwwfHxuPDApcmV0dXJuIG51bGw7dGhpcy5wPT0tMSYmdGhpcy5maWxsQnVmZmVyKCksbj49dGhpcy50b2tlbnMubGVuZ3RoJiYobj10aGlzLnRva2Vucy5sZW5ndGgtMSk7Zm9yKGk9ZTtpPD1uO2krKyl0PXRoaXMudG9rZW5zW2ldLHIrPXRoaXMudG9rZW5zW2ldLmdldFRleHQoKTtyZXR1cm4gcn19LHMuYW50bHIucnVudGltZS5Ub2tlblJld3JpdGVTdHJlYW09ZnVuY3Rpb24oKXt2YXIgZT1zLmFudGxyLnJ1bnRpbWUuVG9rZW5SZXdyaXRlU3RyZWFtLnN1cGVyY2xhc3M7dGhpcy5wcm9ncmFtcz1udWxsLHRoaXMubGFzdFJld3JpdGVUb2tlbkluZGV4ZXM9bnVsbCxhcmd1bWVudHMubGVuZ3RoPT09MD90aGlzLmluaXQoKTooZS5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5pbml0KCkpfSxmdW5jdGlvbigpe3ZhciBlPXMuYW50bHIucnVudGltZS5Ub2tlblJld3JpdGVTdHJlYW07cy5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3QoZSx7REVGQVVMVF9QUk9HUkFNX05BTUU6ImRlZmF1bHQiLFBST0dSQU1fSU5JVF9TSVpFOjEwMCxNSU5fVE9LRU5fSU5ERVg6MH0pLGUuUmV3cml0ZU9wZXJhdGlvbj1mdW5jdGlvbihlLHQpe3RoaXMuaW5kZXg9ZSx0aGlzLnRleHQ9dH0sZS5SZXdyaXRlT3BlcmF0aW9uLnByb3RvdHlwZT17ZXhlY3V0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbmRleH0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0fX0sZS5JbnNlcnRCZWZvcmVPcD1mdW5jdGlvbih0LG4pe2UuSW5zZXJ0QmVmb3JlT3Auc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCxuKX0scy5hbnRsci5sYW5nLmV4dGVuZChlLkluc2VydEJlZm9yZU9wLGUuUmV3cml0ZU9wZXJhdGlvbix7ZXhlY3V0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5wdXNoKHRoaXMudGV4dCksdGhpcy5pbmRleH19KSxlLlJlcGxhY2VPcD1mdW5jdGlvbih0LG4scil7ZS5SZXBsYWNlT3Auc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCxyKSx0aGlzLmxhc3RJbmRleD1ufSxzLmFudGxyLmxhbmcuZXh0ZW5kKGUuUmVwbGFjZU9wLGUuUmV3cml0ZU9wZXJhdGlvbix7ZXhlY3V0ZTpmdW5jdGlvbihlKXtyZXR1cm4gcy5hbnRsci5sYW5nLmlzVmFsdWUodGhpcy50ZXh0KSYmZS5wdXNoKHRoaXMudGV4dCksdGhpcy5sYXN0SW5kZXgrMX19KSxlLkRlbGV0ZU9wPWZ1bmN0aW9uKHQsbil7ZS5EZWxldGVPcC5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyx0LG4pfSxzLmFudGxyLmxhbmcuZXh0ZW5kKGUuRGVsZXRlT3AsZS5SZXBsYWNlT3ApLHMuYW50bHIubGFuZy5leHRlbmQoZSxzLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW5TdHJlYW0se2luaXQ6ZnVuY3Rpb24oKXt0aGlzLnByb2dyYW1zPXt9LHRoaXMucHJvZ3JhbXNbZS5ERUZBVUxUX1BST0dSQU1fTkFNRV09W10sdGhpcy5sYXN0UmV3cml0ZVRva2VuSW5kZXhlcz17fX0scm9sbGJhY2s6ZnVuY3Rpb24oKXt2YXIgdCxuO2FyZ3VtZW50cy5sZW5ndGg9PT0xPyh0PWUuREVGQVVMVF9QUk9HUkFNX05BTUUsbj1hcmd1bWVudHNbMF0pOmFyZ3VtZW50cy5sZW5ndGg9PT0yJiYodD1hcmd1bWVudHNbMF0sbj1hcmd1bWVudHNbMV0pO3ZhciByPXRoaXMucHJvZ3JhbXNbdF07ciYmKHByb2dyYW1zW3RdPXIuc2xpY2UoZS5NSU5fVE9LRU5fSU5ERVgsdGhpcy5pbnN0cnVjdGlvbkluZGV4KSl9LGRlbGV0ZVByb2dyYW06ZnVuY3Rpb24odCl7dD10fHxlLkRFRkFVTFRfUFJPR1JBTV9OQU1FLHRoaXMucm9sbGJhY2sodCxlLk1JTl9UT0tFTl9JTkRFWCl9LGFkZFRvU29ydGVkUmV3cml0ZUxpc3Q6ZnVuY3Rpb24oKXt2YXIgdCxuO2FyZ3VtZW50cy5sZW5ndGg9PT0xPyh0PWUuREVGQVVMVF9QUk9HUkFNX05BTUUsbj1hcmd1bWVudHNbMF0pOmFyZ3VtZW50cy5sZW5ndGg9PT0yJiYodD1hcmd1bWVudHNbMF0sbj1hcmd1bWVudHNbMV0pO3ZhciByPXRoaXMuZ2V0UHJvZ3JhbSh0KSxpLHMsbyx1LGEsZjtmb3Iocz0wLGk9ci5sZW5ndGg7czxpO3MrKyl7bz1yW3NdO2lmKG8uaW5kZXg9PT1uLmluZGV4KXtpZihuIGluc3RhbmNlb2YgZS5SZXBsYWNlT3Ape3U9ITE7Zm9yKGY9cztmPHIubGVuZ3RoO2YrKyl7YT1yW3NdO2lmKGEuaW5kZXghPT1uLmluZGV4KWJyZWFrO2lmKGEgaW5zdGFuY2VvZiBlLlJlcGxhY2VPcCl7cltzXT1uLHU9ITA7YnJlYWt9fXV8fHIuc3BsaWNlKGYsMCxuKX1lbHNlIHIuc3BsaWNlKHMsMCxuKTticmVha31pZihvLmluZGV4Pm4uaW5kZXgpe3Iuc3BsaWNlKHMsMCxuKTticmVha319cz09PWkmJnIucHVzaChuKX0saW5zZXJ0QWZ0ZXI6ZnVuY3Rpb24oKXt2YXIgdCxuLHI7YXJndW1lbnRzLmxlbmd0aD09PTI/KG49ZS5ERUZBVUxUX1BST0dSQU1fTkFNRSx0PWFyZ3VtZW50c1swXSxyPWFyZ3VtZW50c1sxXSk6YXJndW1lbnRzLmxlbmd0aD09PTMmJihuPWFyZ3VtZW50c1swXSx0PWFyZ3VtZW50c1sxXSxyPWFyZ3VtZW50c1syXSksdCBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5Db21tb25Ub2tlbiYmKHQ9dC5pbmRleCksdGhpcy5pbnNlcnRCZWZvcmUobix0KzEscil9LGluc2VydEJlZm9yZTpmdW5jdGlvbigpe3ZhciB0LG4scjthcmd1bWVudHMubGVuZ3RoPT09Mj8obj1lLkRFRkFVTFRfUFJPR1JBTV9OQU1FLHQ9YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdKTphcmd1bWVudHMubGVuZ3RoPT09MyYmKG49YXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzWzFdLHI9YXJndW1lbnRzWzJdKSx0IGluc3RhbmNlb2Ygcy5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuJiYodD10LmluZGV4KSx0aGlzLmFkZFRvU29ydGVkUmV3cml0ZUxpc3QobixuZXcgZS5JbnNlcnRCZWZvcmVPcCh0LHIpKX0scmVwbGFjZTpmdW5jdGlvbigpe3ZhciB0LG4scixpO2FyZ3VtZW50cy5sZW5ndGg9PT0yPyh0PWUuREVGQVVMVF9QUk9HUkFNX05BTUUsbj1hcmd1bWVudHNbMF0scj1hcmd1bWVudHNbMF0saT1hcmd1bWVudHNbMV0pOmFyZ3VtZW50cy5sZW5ndGg9PT0zJiYodD1lLkRFRkFVTFRfUFJPR1JBTV9OQU1FLG49YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdLGk9YXJndW1lbnRzWzJdKSxhcmd1bWVudHMubGVuZ3RoPT09NCYmKHQ9YXJndW1lbnRzWzBdLG49YXJndW1lbnRzWzFdLHI9YXJndW1lbnRzWzJdLGk9YXJndW1lbnRzWzNdKSxuIGluc3RhbmNlb2Ygcy5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuJiYobj1uLmluZGV4KSxyIGluc3RhbmNlb2Ygcy5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuJiYocj1yLmluZGV4KTtpZihuPnJ8fHI8MHx8bjwwKXJldHVybjt0aGlzLmFkZFRvU29ydGVkUmV3cml0ZUxpc3QodCxuZXcgZS5SZXBsYWNlT3AobixyLGkpKX0scmVtb3ZlOmZ1bmN0aW9uKCl7dmFyIGU9W10sdD1hcmd1bWVudHMubGVuZ3RoLTE7d2hpbGUodD49MCllW3RdPWFyZ3VtZW50c1t0XSx0LS07ZS5wdXNoKCIiKSx0aGlzLnJlcGxhY2UuYXBwbHkodGhpcyxlKX0sZ2V0TGFzdFJld3JpdGVUb2tlbkluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0PXR8fGUuREVGQVVMVF9QUk9HUkFNX05BTUUsdGhpcy5sYXN0UmV3cml0ZVRva2VuSW5kZXhlc1t0XXx8LTF9LHNldExhc3RSZXdyaXRlVG9rZW5JbmRleDpmdW5jdGlvbihlLHQpe3RoaXMubGFzdFJld3JpdGVUb2tlbkluZGV4ZXNbZV09dH0sZ2V0UHJvZ3JhbTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb2dyYW1zW2VdO3JldHVybiB0fHwodD10aGlzLmluaXRpYWxpemVQcm9ncmFtKGUpKSx0fSxpbml0aWFsaXplUHJvZ3JhbTpmdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5wcm9ncmFtc1tlXT10LHR9LHRvT3JpZ2luYWxTdHJpbmc6ZnVuY3Rpb24odCxuKXtzLmFudGxyLmxhbmcuaXNOdW1iZXIodCl8fCh0PWUuTUlOX1RPS0VOX0lOREVYKSxzLmFudGxyLmxhbmcuaXNOdW1iZXIobil8fChuPXRoaXMuc2l6ZSgpLTEpO3ZhciByPVtdLGk7Zm9yKGk9dDtpPj1lLk1JTl9UT0tFTl9JTkRFWCYmaTw9biYmaTx0aGlzLnRva2Vucy5sZW5ndGg7aSsrKXIucHVzaCh0aGlzLmdldChpKS5nZXRUZXh0KCkpO3JldHVybiByLmpvaW4oIiIpfSx0b1N0cmluZzpmdW5jdGlvbigpe3ZhciB0LG4scjthcmd1bWVudHMubGVuZ3RoPT09MD8odD1lLkRFRkFVTFRfUFJPR1JBTV9OQU1FLG49ZS5NSU5fVE9LRU5fSU5ERVgscj10aGlzLnNpemUoKS0xKTphcmd1bWVudHMubGVuZ3RoPT09MT8odD1hcmd1bWVudHNbMF0sbj1lLk1JTl9UT0tFTl9JTkRFWCxyPXRoaXMuc2l6ZSgpLTEpOmFyZ3VtZW50cy5sZW5ndGg9PT0yJiYodD1lLkRFRkFVTFRfUFJPR1JBTV9OQU1FLG49YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdKTt2YXIgaT10aGlzLnByb2dyYW1zW3RdO2lmKCFpfHxpLmxlbmd0aD09PTApcmV0dXJuIHRoaXMudG9PcmlnaW5hbFN0cmluZyhuLHIpO3ZhciBzPTAsbz1uLHU9W10sYTt3aGlsZShvPj1lLk1JTl9UT0tFTl9JTkRFWCYmbzw9ciYmbzx0aGlzLnRva2Vucy5sZW5ndGgpe2lmKHM8aS5sZW5ndGgpe2E9aVtzXTt3aGlsZShhLmluZGV4PG8mJnM8aS5sZW5ndGgpcysrLHM8aS5sZW5ndGgmJihhPWlbc10pO3doaWxlKG89PT1hLmluZGV4JiZzPGkubGVuZ3RoKW89YS5leGVjdXRlKHUpLHMrKyxzPGkubGVuZ3RoJiYoYT1pW3NdKX1vPD1yJiYodS5wdXNoKHRoaXMuZ2V0KG8pLmdldFRleHQoKSksbysrKX12YXIgZjtmb3IoZj1zO2Y8aS5sZW5ndGg7ZisrKWE9aVtmXSxhLmluZGV4Pj10aGlzLnNpemUoKSYmYS5leGVjdXRlKHUpO3JldHVybiB1LmpvaW4oIiIpfSx0b0RlYnVnU3RyaW5nOmZ1bmN0aW9uKHQsbil7cy5hbnRsci5sYW5nLmlzTnVtYmVyKHQpfHwodD1lLk1JTl9UT0tFTl9JTkRFWCkscy5hbnRsci5sYW5nLmlzTnVtYmVyKG4pfHwobj10aGlzLnNpemUoKS0xKTt2YXIgcj1bXSxpO2ZvcihpPXQ7aT49ZS5NSU5fVE9LRU5fSU5ERVgmJmk8PW4mJmk8dGhpcy50b2tlbnMubGVuZ3RoO2krKylyLnB1c2godGhpcy5nZXQoaSkpO3JldHVybiByLmpvaW4oIiIpfX0pfSgpLHMuYW50bHIucnVudGltZS50cmVlLlRyZWVOb2RlU3RyZWFtPWZ1bmN0aW9uKCl7fSxzLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlTm9kZVN0cmVhbT1mdW5jdGlvbihlLHQsbil7YXJndW1lbnRzLmxlbmd0aD09PTEmJih0PWUsZT1uZXcgcy5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZUFkYXB0b3IpLGFyZ3VtZW50cy5sZW5ndGg8PTImJihuPXMuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWVOb2RlU3RyZWFtLkRFRkFVTFRfSU5JVElBTF9CVUZGRVJfU0laRSksdGhpcy51bmlxdWVOYXZpZ2F0aW9uTm9kZXM9ITEsdGhpcy5wPS0xO3ZhciByPXMuYW50bHIucnVudGltZS5Ub2tlbjt0aGlzLnJvb3Q9dCx0aGlzLmFkYXB0b3I9ZSx0aGlzLm5vZGVzPVtdLHRoaXMuZG93bj10aGlzLmFkYXB0b3IuY3JlYXRlKHIuRE9XTiwiRE9XTiIpLHRoaXMudXA9dGhpcy5hZGFwdG9yLmNyZWF0ZShyLlVQLCJVUCIpLHRoaXMuZW9mPXRoaXMuYWRhcHRvci5jcmVhdGUoci5FT0YsIkVPRiIpfSxzLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChzLmFudGxyLnJ1bnRpbWUudHJlZS5Db21tb25UcmVlTm9kZVN0cmVhbSx7REVGQVVMVF9JTklUSUFMX0JVRkZFUl9TSVpFOjEwMCxJTklUSUFMX0NBTExfU1RBQ0tfU0laRToxMH0pLHMuYW50bHIubGFuZy5leHRlbmQocy5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZU5vZGVTdHJlYW0scy5hbnRsci5ydW50aW1lLnRyZWUuVHJlZU5vZGVTdHJlYW0se1N0cmVhbUl0ZXJhdG9yOmZ1bmN0aW9uKCl7dmFyIGU9MCx0PXRoaXMubm9kZXMsbj10aGlzLmVvZjtyZXR1cm57aGFzTmV4dDpmdW5jdGlvbigpe3JldHVybiBlPHQubGVuZ3RofSxuZXh0OmZ1bmN0aW9uKCl7dmFyIHI9ZTtyZXR1cm4gZSsrLHI8dC5sZW5ndGg/dFtyXTpufSxyZW1vdmU6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCByZW1vdmUgbm9kZXMgZnJvbSBzdHJlYW0iKX19fSxmaWxsQnVmZmVyOmZ1bmN0aW9uKGUpe3ZhciB0PSExO3MuYW50bHIubGFuZy5pc1VuZGVmaW5lZChlKSYmKGU9dGhpcy5yb290LHQ9ITApO3ZhciBuPXRoaXMuYWRhcHRvci5pc05pbChlKTtufHx0aGlzLm5vZGVzLnB1c2goZSk7dmFyIHI9dGhpcy5hZGFwdG9yLmdldENoaWxkQ291bnQoZSk7IW4mJnI+MCYmdGhpcy5hZGROYXZpZ2F0aW9uTm9kZShzLmFudGxyLnJ1bnRpbWUuVG9rZW4uRE9XTik7dmFyIGksbztmb3IoaT0wO2k8cjtpKyspbz10aGlzLmFkYXB0b3IuZ2V0Q2hpbGQoZSxpKSx0aGlzLmZpbGxCdWZmZXIobyk7IW4mJnI+MCYmdGhpcy5hZGROYXZpZ2F0aW9uTm9kZShzLmFudGxyLnJ1bnRpbWUuVG9rZW4uVVApLHQmJih0aGlzLnA9MCl9LGdldE5vZGVJbmRleDpmdW5jdGlvbihlKXt0aGlzLnA9PS0xJiZ0aGlzLmZpbGxCdWZmZXIoKTt2YXIgdCxuO2Zvcih0PTA7dDx0aGlzLm5vZGVzLmxlbmd0aDt0Kyspe249dGhpcy5ub2Rlc1t0XTtpZihuPT09ZSlyZXR1cm4gdH1yZXR1cm4tMX0sYWRkTmF2aWdhdGlvbk5vZGU6ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtlPT09cy5hbnRsci5ydW50aW1lLlRva2VuLkRPV04/dGhpcy5oYXNVbmlxdWVOYXZpZ2F0aW9uTm9kZXMoKT90PXRoaXMuYWRhcHRvci5jcmVhdGUocy5hbnRsci5ydW50aW1lLlRva2VuLkRPV04sIkRPV04iKTp0PXRoaXMuZG93bjp0aGlzLmhhc1VuaXF1ZU5hdmlnYXRpb25Ob2RlcygpP3Q9dGhpcy5hZGFwdG9yLmNyZWF0ZShzLmFudGxyLnJ1bnRpbWUuVG9rZW4uVVAsIlVQIik6dD10aGlzLnVwLHRoaXMubm9kZXMucHVzaCh0KX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnA9PT0tMSYmdGhpcy5maWxsQnVmZmVyKCksdGhpcy5ub2Rlc1tlXX0sTFQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucD09PS0xJiZ0aGlzLmZpbGxCdWZmZXIoKSxlPT09MD9udWxsOmU8MD90aGlzLkxCKC0xKmUpOnRoaXMucCtlLTE+PXRoaXMubm9kZXMubGVuZ3RoP3RoaXMuZW9mOnRoaXMubm9kZXNbdGhpcy5wK2UtMV19LGdldEN1cnJlbnRTeW1ib2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5MVCgxKX0sTEI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT0wP251bGw6dGhpcy5wLWU8MD9udWxsOnRoaXMubm9kZXNbdGhpcy5wLWVdfSxnZXRUcmVlU291cmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm9vdH0sZ2V0U291cmNlTmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRva2VuU3RyZWFtKCkuZ2V0U291cmNlTmFtZSgpfSxnZXRUb2tlblN0cmVhbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2Vuc30sc2V0VG9rZW5TdHJlYW06ZnVuY3Rpb24oZSl7dGhpcy50b2tlbnM9ZX0sZ2V0VHJlZUFkYXB0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hZGFwdG9yfSxzZXRUcmVlQWRhcHRvcjpmdW5jdGlvbihlKXt0aGlzLmFkYXB0b3I9ZX0saGFzVW5pcXVlTmF2aWdhdGlvbk5vZGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pcXVlTmF2aWdhdGlvbk5vZGVzfSxzZXRVbmlxdWVOYXZpZ2F0aW9uTm9kZXM6ZnVuY3Rpb24oZSl7dGhpcy51bmlxdWVOYXZpZ2F0aW9uTm9kZXM9ZX0sY29uc3VtZTpmdW5jdGlvbigpe3RoaXMucD09PS0xJiZ0aGlzLmZpbGxCdWZmZXIoKSx0aGlzLnArK30sTEE6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRhcHRvci5nZXRUeXBlKHRoaXMuTFQoZSkpfSxtYXJrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucD09PS0xJiZ0aGlzLmZpbGxCdWZmZXIoKSx0aGlzLmxhc3RNYXJrZXI9dGhpcy5pbmRleCgpLHRoaXMubGFzdE1hcmtlcn0scmVsZWFzZTpmdW5jdGlvbihlKXt9LGluZGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucH0scmV3aW5kOmZ1bmN0aW9uKGUpe3MuYW50bHIubGFuZy5pc051bWJlcihlKXx8KGU9dGhpcy5sYXN0TWFya2VyKSx0aGlzLnNlZWsoZSl9LHNlZWs6ZnVuY3Rpb24oZSl7dGhpcy5wPT09LTEmJnRoaXMuZmlsbEJ1ZmZlcigpLHRoaXMucD1lfSxwdXNoOmZ1bmN0aW9uKGUpe3RoaXMuY2FsbHN8fCh0aGlzLmNhbGxzPVtdKSx0aGlzLmNhbGxzLnB1c2godGhpcy5wKSx0aGlzLnNlZWsoZSl9LHBvcDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY2FsbHMucG9wKCk7cmV0dXJuIHRoaXMuc2VlayhlKSxlfSxyZXNldDpmdW5jdGlvbigpe3RoaXMucD0tMSx0aGlzLmxhc3RNYXJrZXI9MCx0aGlzLmNhbGxzJiYodGhpcy5jYWxscz1bXSl9LHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wPT09LTEmJnRoaXMuZmlsbEJ1ZmZlcigpLHRoaXMubm9kZXMubGVuZ3RofSxpdGVyYXRvcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnA9PT0tMSYmdGhpcy5maWxsQnVmZmVyKCksdGhpcy5TdHJlYW1JdGVyYXRvcigpfSxyZXBsYWNlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scil7ZSYmdGhpcy5hZGFwdG9yLnJlcGxhY2VDaGlsZHJlbihlLHQsbixyKX0sdG9Ub2tlblN0cmluZzpmdW5jdGlvbihlLHQpe3RoaXMucD09PS0xJiZ0aGlzLmZpbGxCdWZmZXIoKTt2YXIgbj0iIixyLGk7Zm9yKHI9ZTtyPHRoaXMubm9kZXMubGVuZ3RoJiZyPD10O3IrKylpPXRoaXMubm9kZXNbcl0sbis9IiAiK3RoaXMuYWRhcHRvci5nZXRUb2tlbihpKTtyZXR1cm4gbn0sdG9TdHJpbmc6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iIixyLGksbztpZihhcmd1bWVudHMubGVuZ3RoPT09MCl7dGhpcy5wPT09LTEmJnRoaXMuZmlsbEJ1ZmZlcigpO2ZvcihvPTA7bzx0aGlzLm5vZGVzLmxlbmd0aDtvKyspaT10aGlzLm5vZGVzW29dLG4rPSIgIixuKz10aGlzLmFkYXB0b3IuZ2V0VHlwZShpKTtyZXR1cm4gbn1pZighcy5hbnRsci5sYW5nLmlzTnVtYmVyKGUpfHwhcy5hbnRsci5sYW5nLmlzTnVtYmVyKHQpKXJldHVybiBudWxsO3RoaXMucD09PS0xJiZ0aGlzLmZpbGxCdWZmZXIoKSxlIGluc3RhbmNlb2Ygcy5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZSx0IGluc3RhbmNlb2Ygcy5hbnRsci5ydW50aW1lLnRyZWUuQ29tbW9uVHJlZTt2YXIgdSxhO2lmKHRoaXMudG9rZW5zKXJldHVybiB1PXRoaXMuYWRhcHRvci5nZXRUb2tlblN0YXJ0SW5kZXgoZSksYT10aGlzLmFkYXB0b3IuZ2V0VG9rZW5TdG9wSW5kZXgodCksdGhpcy5hZGFwdG9yLmdldFR5cGUodCk9PT1zLmFudGxyLnJ1bnRpbWUuVG9rZW4uVVA/YT10aGlzLmFkYXB0b3IuZ2V0VG9rZW5TdG9wSW5kZXgoZSk6dGhpcy5hZGFwdG9yLmdldFR5cGUodCk9PXMuYW50bHIucnVudGltZS5Ub2tlbi5FT0YmJihhPXRoaXMuc2l6ZSgpLTIpLHRoaXMudG9rZW5zLnRvU3RyaW5nKHUsYSk7aT1udWxsLG89MDtmb3IoO288dGhpcy5ub2Rlcy5sZW5ndGg7bysrKXtpPXRoaXMubm9kZXNbb107aWYoaT09PWUpYnJlYWt9bj1yPSIiLGk9dGhpcy5ub2Rlc1tvXTt3aGlsZShpIT09dClyPXRoaXMuYWRhcHRvci5nZXRUZXh0KGkpLHMuYW50bHIubGFuZy5pc1N0cmluZyhyKXx8KHI9IiAiK3RoaXMuYWRhcHRvci5nZXRUeXBlKGkpLnRvU3RyaW5nKCkpLG4rPXIsbysrLGk9bm9kZXNbb107cmV0dXJuIHI9dGhpcy5hZGFwdG9yLmdldFRleHQodCkscy5hbnRsci5sYW5nLmlzU3RyaW5nKHIpfHwocj0iICIrdGhpcy5hZGFwdG9yLmdldFR5cGUodCkudG9TdHJpbmcoKSksbis9cixufX0pLHMuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlRWxlbWVudFN0cmVhbT1mdW5jdGlvbihlLHQsbil7dGhpcy5jdXJzb3I9MCx0aGlzLmRpcnR5PSExLHRoaXMuZWxlbWVudERlc2NyaXB0aW9uPXQsdGhpcy5hZGFwdG9yPWUsbiYmKHMuYW50bHIubGFuZy5pc0FycmF5KG4pPyh0aGlzLnNpbmdsZUVsZW1lbnQ9bnVsbCx0aGlzLmVsZW1lbnRzPW4pOnRoaXMuYWRkKG4pKX0scy5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVFbGVtZW50U3RyZWFtLnByb3RvdHlwZT17cmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLmN1cnNvcj0wLHRoaXMuZGlydHk9ITB9LGFkZDpmdW5jdGlvbihlKXtpZighcy5hbnRsci5sYW5nLmlzVmFsdWUoZSkpcmV0dXJuO2lmKHRoaXMuZWxlbWVudHMpe3RoaXMuZWxlbWVudHMucHVzaChlKTtyZXR1cm59aWYoIXMuYW50bHIubGFuZy5pc1ZhbHVlKHRoaXMuc2luZ2xlRWxlbWVudCkpe3RoaXMuc2luZ2xlRWxlbWVudD1lO3JldHVybn10aGlzLmVsZW1lbnRzPVtdLHRoaXMuZWxlbWVudHMucHVzaCh0aGlzLnNpbmdsZUVsZW1lbnQpLHRoaXMuc2luZ2xlRWxlbWVudD1udWxsLHRoaXMuZWxlbWVudHMucHVzaChlKX0sbmV4dFRyZWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnNpemUoKSx0O3JldHVybiB0aGlzLmRpcnR5fHx0aGlzLmN1cnNvcj49ZSYmZT09MT8odD10aGlzLl9uZXh0KCksdGhpcy5kdXAodCkpOih0PXRoaXMuX25leHQoKSx0KX0sX25leHQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnNpemUoKTtpZihlPT09MCl0aHJvdyBuZXcgcy5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZUVtcHR5U3RyZWFtRXhjZXB0aW9uKHRoaXMuZWxlbWVudERlc2NyaXB0aW9uKTtpZih0aGlzLmN1cnNvcj49ZSl7aWYoZT09PTEpcmV0dXJuIHRoaXMudG9UcmVlKHRoaXMuc2luZ2xlRWxlbWVudCk7dGhyb3cgbmV3IHMuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVDYXJkaW5hbGl0eUV4Y2VwdGlvbih0aGlzLmVsZW1lbnREZXNjcmlwdGlvbil9aWYocy5hbnRsci5sYW5nLmlzVmFsdWUodGhpcy5zaW5nbGVFbGVtZW50KSlyZXR1cm4gdGhpcy5jdXJzb3IrKyx0aGlzLnRvVHJlZSh0aGlzLnNpbmdsZUVsZW1lbnQpO3ZhciB0PXRoaXMudG9UcmVlKHRoaXMuZWxlbWVudHNbdGhpcy5jdXJzb3JdKTtyZXR1cm4gdGhpcy5jdXJzb3IrKyx0fSx0b1RyZWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuZ2V0VHJlZT9lLmdldFRyZWUoKTplfSxoYXNOZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHMuYW50bHIubGFuZy5pc1ZhbHVlKHRoaXMuc2luZ2xlRWxlbWVudCkmJnRoaXMuY3Vyc29yPDF8fHRoaXMuZWxlbWVudHMmJnRoaXMuY3Vyc29yPHRoaXMuZWxlbWVudHMubGVuZ3RofSxzaXplOmZ1bmN0aW9uKCl7dmFyIGU9MDtyZXR1cm4gcy5hbnRsci5sYW5nLmlzVmFsdWUodGhpcy5zaW5nbGVFbGVtZW50KSYmKGU9MSksdGhpcy5lbGVtZW50cz90aGlzLmVsZW1lbnRzLmxlbmd0aDplfSxnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnREZXNjcmlwdGlvbn19LHMuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlTm9kZVN0cmVhbT1mdW5jdGlvbihlLHQsbil7cy5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVOb2RlU3RyZWFtLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxzLmFudGxyLmxhbmcuZXh0ZW5kKHMuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlTm9kZVN0cmVhbSxzLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZUVsZW1lbnRTdHJlYW0se25leHROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25leHQoKX0sdG9UcmVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFkYXB0b3IuZHVwTm9kZShlKX0sZHVwOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJkdXAgY2FuJ3QgYmUgY2FsbGVkIGZvciBhIG5vZGUgc3RyZWFtLiIpfX0pLHMuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW09ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXMuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0uc3VwZXJjbGFzcztyLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0scy5hbnRsci5sYW5nLmV4dGVuZChzLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtLHMuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlRWxlbWVudFN0cmVhbSx7bmV4dE5vZGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9uZXh0KCk7cmV0dXJuIHRoaXMuYWRhcHRvci5jcmVhdGUoZSl9LG5leHRUb2tlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZXh0KCl9LHRvVHJlZTpmdW5jdGlvbihlKXtyZXR1cm4gZX0sZHVwOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigiZHVwIGNhbid0IGJlIGNhbGxlZCBmb3IgYSB0b2tlbiBzdHJlYW0uIil9fSkscy5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtPWZ1bmN0aW9uKCl7dmFyIGU9cy5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtLnN1cGVyY2xhc3M7ZS5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHMuYW50bHIubGFuZy5leHRlbmQocy5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtLHMuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlRWxlbWVudFN0cmVhbSx7bmV4dE5vZGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnNpemUoKSx0O3JldHVybiB0aGlzLmRpcnR5fHx0aGlzLmN1cnNvcj49ZSYmZT09PTE/KHQ9dGhpcy5fbmV4dCgpLHRoaXMuYWRhcHRvci5kdXBOb2RlKHQpKToodD10aGlzLl9uZXh0KCksdCl9LGR1cDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGFwdG9yLmR1cFRyZWUoZSl9fSkscy5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyPWZ1bmN0aW9uKGUpe3RoaXMuc3RhdGU9ZXx8bmV3IHMuYW50bHIucnVudGltZS5SZWNvZ25pemVyU2hhcmVkU3RhdGV9LHMuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHMuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplcix7TUVNT19SVUxFX0ZBSUxFRDotMixNRU1PX1JVTEVfVU5LTk9XTjotMSxJTklUSUFMX0ZPTExPV19TVEFDS19TSVpFOjEwMCxNRU1PX1JVTEVfRkFJTEVEX0k6LTIsREVGQVVMVF9UT0tFTl9DSEFOTkVMOnMuYW50bHIucnVudGltZS5Ub2tlbi5ERUZBVUxUX0NIQU5ORUwsSElEREVOOnMuYW50bHIucnVudGltZS5Ub2tlbi5ISURERU5fQ0hBTk5FTCxORVhUX1RPS0VOX1JVTEVfTkFNRToibmV4dFRva2VuIn0pLHMuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5wcm90b3R5cGU9e3Jlc2V0OmZ1bmN0aW9uKCl7dmFyIGUsdDtpZighdGhpcy5zdGF0ZSlyZXR1cm47dGhpcy5zdGF0ZS5fZnNwPS0xLHRoaXMuc3RhdGUuZXJyb3JSZWNvdmVyeT0hMSx0aGlzLnN0YXRlLmxhc3RFcnJvckluZGV4PS0xLHRoaXMuc3RhdGUuZmFpbGVkPSExLHRoaXMuc3RhdGUuc3ludGF4RXJyb3JzPTAsdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9MDtpZih0aGlzLnN0YXRlLnJ1bGVNZW1vKWZvcihlPTAsdD10aGlzLnN0YXRlLnJ1bGVNZW1vLmxlbmd0aDtlPHQ7ZSsrKXRoaXMuc3RhdGUucnVsZU1lbW9bZV09bnVsbH0sbWF0Y2g6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuZ2V0Q3VycmVudElucHV0U3ltYm9sKGUpO3JldHVybiBlLkxBKDEpPT09dD8oZS5jb25zdW1lKCksdGhpcy5zdGF0ZS5lcnJvclJlY292ZXJ5PSExLHRoaXMuc3RhdGUuZmFpbGVkPSExLHIpOnRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjA/KHRoaXMuc3RhdGUuZmFpbGVkPSEwLHIpOihyPXRoaXMucmVjb3ZlckZyb21NaXNtYXRjaGVkVG9rZW4oZSx0LG4pLHIpfSxtYXRjaEFueTpmdW5jdGlvbihlKXt0aGlzLnN0YXRlLmVycm9yUmVjb3Zlcnk9ITEsdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsZS5jb25zdW1lKCl9LG1pc21hdGNoSXNVbndhbnRlZFRva2VuOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuTEEoMik9PT10fSxtaXNtYXRjaElzTWlzc2luZ1Rva2VuOmZ1bmN0aW9uKGUsdCl7aWYoIXQpcmV0dXJuITE7aWYodC5tZW1iZXIocy5hbnRsci5ydW50aW1lLlRva2VuLkVPUl9UT0tFTl9UWVBFKSl7dGhpcy5zdGF0ZS5fZnNwPj0wJiZ0LnJlbW92ZShzLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9SX1RPS0VOX1RZUEUpO3ZhciBuPXRoaXMuY29tcHV0ZUNvbnRleHRTZW5zaXRpdmVSdWxlRk9MTE9XKCk7dD10Lm9yKHRoaXMudmlhYmxlVG9rZW5zRm9sbG93aW5nVGhpc1J1bGUpfXJldHVybiB0Lm1lbWJlcihlLkxBKDEpKXx8dC5tZW1iZXIocy5hbnRsci5ydW50aW1lLlRva2VuLkVPUl9UT0tFTl9UWVBFKT8hMDohMX0sbWlzbWF0Y2g6ZnVuY3Rpb24oZSx0LG4pe3Rocm93IHRoaXMubWlzbWF0Y2hJc1Vud2FudGVkVG9rZW4oZSx0KT9uZXcgcy5hbnRsci5ydW50aW1lLlVud2FudGVkVG9rZW5FeGNlcHRpb24odCxlKTp0aGlzLm1pc21hdGNoSXNNaXNzaW5nVG9rZW4oZSxuKT9uZXcgcy5hbnRsci5ydW50aW1lLk1pc3NpbmdUb2tlbkV4Y2VwdGlvbih0LGUsbnVsbCk6bmV3IHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkVG9rZW5FeGNlcHRpb24odCxlKX0scmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSl7aWYodGhpcy5pbnB1dC5zaXplKCkhPTApe3ZhciB0PXRoaXMuaW5wdXQuZ2V0KGUuaW5kZXgpLG49IiIscj0wLGk9MDt0LmdldFR5cGUoKT09LTEmJih0PXRoaXMuaW5wdXQuZ2V0KHRoaXMuaW5wdXQuc2l6ZSgpLTEpKSxuPXRoaXMuZ2V0RXJyb3JNZXNzYWdlKGUsdGhpcy5nZXRUb2tlbk5hbWVzKCkpLHI9dC5nZXRTdGFydEluZGV4KCksaT10LmdldExpbmUoKS0xO3ZhciBzPXtsaW5lOmksbWVzc2FnZTpuLGNvbHVtbjpyfTt0aGlzLmFkZEVycm9yKHMpfWlmKHRoaXMuc3RhdGUuZXJyb3JSZWNvdmVyeSlyZXR1cm47dGhpcy5zdGF0ZS5zeW50YXhFcnJvcnMrKyx0aGlzLnN0YXRlLmVycm9yUmVjb3Zlcnk9ITAsdGhpcy5kaXNwbGF5UmVjb2duaXRpb25FcnJvcih0aGlzLmdldFRva2VuTmFtZXMoKSxlKX0sZGlzcGxheVJlY29nbml0aW9uRXJyb3I6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmdldEVycm9ySGVhZGVyKHQpLHI9dGhpcy5nZXRFcnJvck1lc3NhZ2UodCxlKTt0aGlzLmVtaXRFcnJvck1lc3NhZ2UobisiICIrcil9LGdldEVycm9ySGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBzLmFudGxyLmxhbmcuaXNOdW1iZXIoZS5saW5lKXx8KGUubGluZT0wKSwibGluZSAiK2UubGluZSsiOiIrZS5jaGFyUG9zaXRpb25JbkxpbmV9LGVtaXRFcnJvck1lc3NhZ2U6ZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9LGdldEVycm9yTWVzc2FnZTpmdW5jdGlvbihlLHQpe3ZhciBuPWUmJmUuZ2V0TWVzc2FnZT9lLmdldE1lc3NhZ2UoKTpudWxsLHIsaTtpZihlIGluc3RhbmNlb2Ygcy5hbnRsci5ydW50aW1lLlVud2FudGVkVG9rZW5FeGNlcHRpb24pe3ZhciBvPWU7aT0iPHVua25vd24+IixvLmV4cGVjdGluZz09cy5hbnRsci5ydW50aW1lLlRva2VuLkVPRj9pPSJFT0YiOmk9dFtvLmV4cGVjdGluZ10sbj0iZXh0cmFuZW91cyBpbnB1dCAiK3RoaXMuZ2V0VG9rZW5FcnJvckRpc3BsYXkoby5nZXRVbmV4cGVjdGVkVG9rZW4oKSkrIiBleHBlY3RpbmcgIitpfWVsc2UgZSBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5NaXNzaW5nVG9rZW5FeGNlcHRpb24/KHI9ZSxpPSI8dW5rbm93bj4iLHIuZXhwZWN0aW5nPT1zLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GP2k9IkVPRiI6aT10W3IuZXhwZWN0aW5nXSxuPSJtaXNzaW5nICIraSsiIGF0ICIrdGhpcy5nZXRUb2tlbkVycm9yRGlzcGxheShlLnRva2VuKSk6ZSBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkVG9rZW5FeGNlcHRpb24/KHI9ZSxpPSI8dW5rbm93bj4iLHIuZXhwZWN0aW5nPT1zLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GP2k9IkVPRiI6aT10W3IuZXhwZWN0aW5nXSxuPSJtaXNtYXRjaGVkIGlucHV0ICIrdGhpcy5nZXRUb2tlbkVycm9yRGlzcGxheShlLnRva2VuKSsiIGV4cGVjdGluZyAiK2kpOmUgaW5zdGFuY2VvZiBzLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24/bj0ibm8gdmlhYmxlIGFsdGVybmF0aXZlIGF0IGlucHV0ICIrdGhpcy5nZXRUb2tlbkVycm9yRGlzcGxheShlLnRva2VuKTplIGluc3RhbmNlb2Ygcy5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbj9uPSJyZXF1aXJlZCAoLi4uKSsgbG9vcCBkaWQgbm90IG1hdGNoIGFueXRoaW5nIGF0IGlucHV0ICIrdGhpcy5nZXRUb2tlbkVycm9yRGlzcGxheShlLnRva2VuKTplIGluc3RhbmNlb2Ygcy5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24/bj0ibWlzbWF0Y2hlZCBpbnB1dCAiK3RoaXMuZ2V0VG9rZW5FcnJvckRpc3BsYXkoZS50b2tlbikrIiBleHBlY3Rpbmcgc2V0ICIrZS5leHBlY3Rpbmc6ZSBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkTm90U2V0RXhjZXB0aW9uP249Im1pc21hdGNoZWQgaW5wdXQgIit0aGlzLmdldFRva2VuRXJyb3JEaXNwbGF5KGUudG9rZW4pKyIgZXhwZWN0aW5nIHNldCAiK2UuZXhwZWN0aW5nOmUgaW5zdGFuY2VvZiBzLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uJiYobj0icnVsZSAiK2UucnVsZU5hbWUrIiBmYWlsZWQgcHJlZGljYXRlOiB7IitlLnByZWRpY2F0ZVRleHQrIn0/Iik7cmV0dXJuIG59LGdldE51bWJlck9mU3ludGF4RXJyb3JzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGUuc3ludGF4RXJyb3JzfSxnZXRUb2tlbkVycm9yRGlzcGxheTpmdW5jdGlvbihlKXt2YXIgdD1lLmdldFRleHQoKTtyZXR1cm4gcy5hbnRsci5sYW5nLmlzVmFsdWUodCl8fChlLmdldFR5cGUoKT09cy5hbnRsci5ydW50aW1lLlRva2VuLkVPRj90PSI8RU9GPiI6dD0iPCIrZS5nZXRUeXBlKCkrIj4iKSx0PXQucmVwbGFjZSgvXG4vZywiXFxuIiksdD10LnJlcGxhY2UoL1xyL2csIlxcciIpLHQ9dC5yZXBsYWNlKC9cdC9nLCJcXHQiKSwiJyIrdCsiJyJ9LHJlY292ZXI6ZnVuY3Rpb24oZSx0KXt0aGlzLnN0YXRlLmxhc3RFcnJvckluZGV4PT1lLmluZGV4KCkmJmUuY29uc3VtZSgpLHRoaXMuc3RhdGUubGFzdEVycm9ySW5kZXg9ZS5pbmRleCgpO3ZhciBuPXRoaXMuY29tcHV0ZUVycm9yUmVjb3ZlcnlTZXQoKTt0aGlzLmJlZ2luUmVzeW5jKCksdGhpcy5jb25zdW1lVW50aWwoZSxuKSx0aGlzLmVuZFJlc3luYygpfSxiZWdpblJlc3luYzpmdW5jdGlvbigpe30sZW5kUmVzeW5jOmZ1bmN0aW9uKCl7fSxjb21wdXRlRXJyb3JSZWNvdmVyeVNldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbWJpbmVGb2xsb3dzKCExKX0sY29tcHV0ZUNvbnRleHRTZW5zaXRpdmVSdWxlRk9MTE9XOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29tYmluZUZvbGxvd3MoITApfSxjb21iaW5lRm9sbG93czpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnN0YXRlLl9mc3AsbixyLGk9bmV3IHMuYW50bHIucnVudGltZS5CaXRTZXQ7Zm9yKG49dDtuPj0wO24tLSl7cj10aGlzLnN0YXRlLmZvbGxvd2luZ1tuXSxpLm9ySW5QbGFjZShyKTtpZihlKXtpZighci5tZW1iZXIocy5hbnRsci5ydW50aW1lLlRva2VuLkVPUl9UT0tFTl9UWVBFKSlicmVhaztuPjAmJmkucmVtb3ZlKHMuYW50bHIucnVudGltZS5Ub2tlbi5FT1JfVE9LRU5fVFlQRSl9fXJldHVybiBpfSxyZWNvdmVyRnJvbU1pc21hdGNoZWRUb2tlbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9bnVsbDtpZih0aGlzLm1pc21hdGNoSXNVbndhbnRlZFRva2VuKGUsdCkpe3I9bmV3IHMuYW50bHIucnVudGltZS5VbndhbnRlZFRva2VuRXhjZXB0aW9uKHQsZSksdGhpcy5iZWdpblJlc3luYygpLGUuY29uc3VtZSgpLHRoaXMuZW5kUmVzeW5jKCksdGhpcy5yZXBvcnRFcnJvcihyKTt2YXIgaT10aGlzLmdldEN1cnJlbnRJbnB1dFN5bWJvbChlKTtyZXR1cm4gZS5jb25zdW1lKCksaX1pZih0aGlzLm1pc21hdGNoSXNNaXNzaW5nVG9rZW4oZSxuKSl7dmFyIG89dGhpcy5nZXRNaXNzaW5nU3ltYm9sKGUscix0LG4pO3JldHVybiByPW5ldyBzLmFudGxyLnJ1bnRpbWUuTWlzc2luZ1Rva2VuRXhjZXB0aW9uKHQsZSxvKSx0aGlzLnJlcG9ydEVycm9yKHIpLG99dGhyb3cgcj1uZXcgcy5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRUb2tlbkV4Y2VwdGlvbih0LGUpLHJ9LHJlY292ZXJGcm9tTWlzbWF0Y2hlZFNldDpmdW5jdGlvbihlLHQsbil7aWYodGhpcy5taXNtYXRjaElzTWlzc2luZ1Rva2VuKGUsbikpcmV0dXJuIHRoaXMucmVwb3J0RXJyb3IodCksdGhpcy5nZXRNaXNzaW5nU3ltYm9sKGUsdCxzLmFudGxyLnJ1bnRpbWUuVG9rZW4uSU5WQUxJRF9UT0tFTl9UWVBFLG4pO3Rocm93IHR9LGdldEN1cnJlbnRJbnB1dFN5bWJvbDpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbH0sZ2V0TWlzc2luZ1N5bWJvbDpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbnVsbH0sY29uc3VtZVVudGlsOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5MQSgxKTt3aGlsZShuIT1zLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GJiYhdC5tZW1iZXIobikpZS5jb25zdW1lKCksbj1lLkxBKDEpfSxwdXNoRm9sbG93OmZ1bmN0aW9uKGUpe2lmKHRoaXMuc3RhdGUuX2ZzcCsxPj10aGlzLnN0YXRlLmZvbGxvd2luZy5sZW5ndGgpe3ZhciB0PVtdLG47Zm9yKG49dGhpcy5zdGF0ZS5mb2xsb3dpbmcubGVuZ3RoLTE7bj49MDtuLS0pdFtuXT10aGlzLnN0YXRlLmZvbGxvd2luZ1tuXTt0aGlzLnN0YXRlLmZvbGxvd2luZz10fXRoaXMuc3RhdGUuX2ZzcCsrLHRoaXMuc3RhdGUuZm9sbG93aW5nW3RoaXMuc3RhdGUuX2ZzcF09ZX0sZ2V0UnVsZUludm9jYXRpb25TdGFjazpmdW5jdGlvbihlLHQpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkLiIpfSxnZXRCYWNrdHJhY2tpbmdMZXZlbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlLmJhY2t0cmFja2luZ30sZ2V0VG9rZW5OYW1lczpmdW5jdGlvbigpe3JldHVybiBudWxsfSxnZXRHcmFtbWFyRmlsZU5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdG9TdHJpbmdzOmZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO3ZhciB0PVtdLG47Zm9yKG49MDtuPGUubGVuZ3RoO24rKyl0LnB1c2goZVtuXS5nZXRUZXh0KCkpO3JldHVybiB0fSxnZXRSdWxlTWVtb2l6YXRpb246ZnVuY3Rpb24oZSx0KXt0aGlzLnN0YXRlLnJ1bGVNZW1vW2VdfHwodGhpcy5zdGF0ZS5ydWxlTWVtb1tlXT17fSk7dmFyIG49dGhpcy5zdGF0ZS5ydWxlTWVtb1tlXVt0XTtyZXR1cm4gcy5hbnRsci5sYW5nLmlzTnVtYmVyKG4pP246cy5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLk1FTU9fUlVMRV9VTktOT1dOfSxhbHJlYWR5UGFyc2VkUnVsZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0UnVsZU1lbW9pemF0aW9uKHQsZS5pbmRleCgpKTtyZXR1cm4gbj09cy5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLk1FTU9fUlVMRV9VTktOT1dOPyExOihuPT1zLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuTUVNT19SVUxFX0ZBSUxFRD90aGlzLnN0YXRlLmZhaWxlZD0hMDplLnNlZWsobisxKSwhMCl9LG1lbW9pemU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuc3RhdGUuZmFpbGVkP3MuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5NRU1PX1JVTEVfRkFJTEVEOmUuaW5kZXgoKS0xO2lmKCFzLmFudGxyLmxhbmcuaXNWYWx1ZSh0aGlzLnN0YXRlLnJ1bGVNZW1vKSl0aHJvdyBuZXcgRXJyb3IoIiEhISEhISEhISBtZW1vIGFycmF5IGlzIG51bGwgZm9yICIrdGhpcy5nZXRHcmFtbWFyRmlsZU5hbWUoKSk7aWYodD49dGhpcy5zdGF0ZS5ydWxlTWVtby5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCIhISEhISEhISEgbWVtbyBzaXplIGlzICIrdGhpcy5zdGF0ZS5ydWxlTWVtby5sZW5ndGgrIiwgYnV0IHJ1bGUgaW5kZXggaXMgIit0KTtzLmFudGxyLmxhbmcuaXNWYWx1ZSh0aGlzLnN0YXRlLnJ1bGVNZW1vW3RdKSYmKHRoaXMuc3RhdGUucnVsZU1lbW9bdF1bbl09cil9LGdldFJ1bGVNZW1vaXphdGlvbkNhY2hlU2l6ZTpmdW5jdGlvbigpe3ZhciBlPTAsdDtmb3IodD0wO3RoaXMuc3RhdGUucnVsZU1lbW8mJnQ8dGhpcy5zdGF0ZS5ydWxlTWVtby5sZW5ndGg7dCsrKXt2YXIgbj10aGlzLnN0YXRlLnJ1bGVNZW1vW3RdO24mJihlKz1uLmxlbmd0aCl9cmV0dXJuIGV9LHRyYWNlSW46ZnVuY3Rpb24oZSx0LG4pe3RoaXMuZW1pdEVycm9yTWVzc2FnZSgiZW50ZXIgIitlKyIgIituKSx0aGlzLnN0YXRlLmZhaWxlZCYmdGhpcy5lbWl0RXJyb3JNZXNzYWdlKCIgZmFpbGVkPSIrdGhpcy5mYWlsZWQpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjAmJnRoaXMuZW1pdEVycm9yTWVzc2FnZSgiIGJhY2t0cmFja2luZz0iK3RoaXMuc3RhdGUuYmFja3RyYWNraW5nKX0sdHJhY2VPdXQ6ZnVuY3Rpb24oZSx0LG4pe3RoaXMuZW1pdEVycm9yTWVzc2FnZSgiZXhpdCAiK2UrIiAiK24pLHRoaXMuc3RhdGUuZmFpbGVkJiZ0aGlzLmVtaXRFcnJvck1lc3NhZ2UoIiBmYWlsZWQ9Iit0aGlzLnN0YXRlLmZhaWxlZCksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MCYmdGhpcy5lbWl0RXJyb3JNZXNzYWdlKCIgYmFja3RyYWNraW5nPSIrdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcpfX0scy5hbnRsci5ydW50aW1lLkxleGVyPWZ1bmN0aW9uKGUsdCl7dCYmcy5hbnRsci5ydW50aW1lLkxleGVyLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpLGUmJih0aGlzLmlucHV0PWUpfSxzLmFudGxyLmxhbmcuZXh0ZW5kKHMuYW50bHIucnVudGltZS5MZXhlcixzLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIse3Jlc2V0OmZ1bmN0aW9uKCl7cy5hbnRsci5ydW50aW1lLkxleGVyLnN1cGVyY2xhc3MucmVzZXQuY2FsbCh0aGlzKSxzLmFudGxyLmxhbmcuaXNWYWx1ZSh0aGlzLmlucHV0KSYmdGhpcy5pbnB1dC5zZWVrKDApO2lmKCFzLmFudGxyLmxhbmcuaXNWYWx1ZSh0aGlzLnN0YXRlKSlyZXR1cm47dGhpcy5zdGF0ZS50b2tlbj1udWxsLHRoaXMuc3RhdGUudHlwZT1zLmFudGxyLnJ1bnRpbWUuVG9rZW4uSU5WQUxJRF9UT0tFTl9UWVBFLHRoaXMuc3RhdGUuY2hhbm5lbD1zLmFudGxyLnJ1bnRpbWUuVG9rZW4uREVGQVVMVF9DSEFOTkVMLHRoaXMuc3RhdGUudG9rZW5TdGFydENoYXJJbmRleD0tMSx0aGlzLnN0YXRlLnRva2VuU3RhcnRDaGFyUG9zaXRpb25JbkxpbmU9LTEsdGhpcy5zdGF0ZS50b2tlblN0YXJ0TGluZT0tMSx0aGlzLnN0YXRlLnRleHQ9bnVsbH0sbmV4dFRva2VuOmZ1bmN0aW9uKCl7Zm9yKDs7KXt0aGlzLnN0YXRlLnRva2VuPW51bGwsdGhpcy5zdGF0ZS5jaGFubmVsPXMuYW50bHIucnVudGltZS5Ub2tlbi5ERUZBVUxUX0NIQU5ORUwsdGhpcy5zdGF0ZS50b2tlblN0YXJ0Q2hhckluZGV4PXRoaXMuaW5wdXQuaW5kZXgoKSx0aGlzLnN0YXRlLnRva2VuU3RhcnRDaGFyUG9zaXRpb25JbkxpbmU9dGhpcy5pbnB1dC5nZXRDaGFyUG9zaXRpb25JbkxpbmUoKSx0aGlzLnN0YXRlLnRva2VuU3RhcnRMaW5lPXRoaXMuaW5wdXQuZ2V0TGluZSgpLHRoaXMuc3RhdGUudGV4dD1udWxsO2lmKHRoaXMuaW5wdXQuTEEoMSk9PT1zLmFudGxyLnJ1bnRpbWUuQ2hhclN0cmVhbS5FT0YpcmV0dXJuIHMuYW50bHIucnVudGltZS5Ub2tlbi5FT0ZfVE9LRU47dHJ5e3RoaXMubVRva2VucygpO2lmKCFzLmFudGxyLmxhbmcuaXNWYWx1ZSh0aGlzLnN0YXRlLnRva2VuKSl0aGlzLmVtaXQoKTtlbHNlIGlmKHRoaXMuc3RhdGUudG9rZW49PXMuYW50bHIucnVudGltZS5Ub2tlbi5TS0lQX1RPS0VOKWNvbnRpbnVlO3JldHVybiB0aGlzLnN0YXRlLnRva2VufWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBzLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24pdGhpcy5yZXBvcnRFcnJvcihlKSx0aGlzLnJlY292ZXIoZSk7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBzLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGU7dGhpcy5yZXBvcnRFcnJvcihlKX19fX0sc2tpcDpmdW5jdGlvbigpe3RoaXMuc3RhdGUudG9rZW49cy5hbnRsci5ydW50aW1lLlRva2VuLlNLSVBfVE9LRU59LHNldENoYXJTdHJlYW06ZnVuY3Rpb24oZSl7dGhpcy5pbnB1dD1udWxsLHRoaXMucmVzZXQoKSx0aGlzLmlucHV0PWV9LGdldENoYXJTdHJlYW06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnB1dH0sZ2V0U291cmNlTmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0LmdldFNvdXJjZU5hbWUoKX0sZW1pdDpmdW5jdGlvbigpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKXt2YXIgZT1uZXcgcy5hbnRsci5ydW50aW1lLkNvbW1vblRva2VuKHRoaXMuaW5wdXQsdGhpcy5zdGF0ZS50eXBlLHRoaXMuc3RhdGUuY2hhbm5lbCx0aGlzLnN0YXRlLnRva2VuU3RhcnRDaGFySW5kZXgsdGhpcy5nZXRDaGFySW5kZXgoKS0xKTtyZXR1cm4gZS5zZXRMaW5lKHRoaXMuc3RhdGUudG9rZW5TdGFydExpbmUpLGUuc2V0VGV4dCh0aGlzLnN0YXRlLnRleHQpLGUuc2V0Q2hhclBvc2l0aW9uSW5MaW5lKHRoaXMuc3RhdGUudG9rZW5TdGFydENoYXJQb3NpdGlvbkluTGluZSksdGhpcy5zdGF0ZS50b2tlbj1lLGV9dGhpcy5zdGF0ZS50b2tlbj1hcmd1bWVudHNbMF19LG1hdGNoOmZ1bmN0aW9uKGUpe3ZhciB0PTAsbjtpZihzLmFudGxyLmxhbmcuaXNTdHJpbmcoZSkpd2hpbGUodDxlLmxlbmd0aCl7aWYodGhpcy5pbnB1dC5MQSgxKSE9ZS5jaGFyQXQodCkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApe3RoaXMuc3RhdGUuZmFpbGVkPSEwO3JldHVybn10aHJvdyBuPW5ldyBzLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFRva2VuRXhjZXB0aW9uKGUuY2hhckF0KHQpLHRoaXMuaW5wdXQpLHRoaXMucmVjb3ZlcihuKSxufXQrKyx0aGlzLmlucHV0LmNvbnN1bWUoKSx0aGlzLnN0YXRlLmZhaWxlZD0hMX1lbHNlIGlmKHMuYW50bHIubGFuZy5pc051bWJlcihlKSl7aWYodGhpcy5pbnB1dC5MQSgxKSE9ZSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MCl7dGhpcy5zdGF0ZS5mYWlsZWQ9ITA7cmV0dXJufXRocm93IG49bmV3IHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkVG9rZW5FeGNlcHRpb24oZSx0aGlzLmlucHV0KSx0aGlzLnJlY292ZXIobiksbn10aGlzLmlucHV0LmNvbnN1bWUoKSx0aGlzLnN0YXRlLmZhaWxlZD0hMX19LG1hdGNoQW55OmZ1bmN0aW9uKCl7dGhpcy5pbnB1dC5jb25zdW1lKCl9LG1hdGNoUmFuZ2U6ZnVuY3Rpb24oZSx0KXtpZih0aGlzLmlucHV0LkxBKDEpPGV8fHRoaXMuaW5wdXQuTEEoMSk+dCl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MCl7dGhpcy5zdGF0ZS5mYWlsZWQ9ITA7cmV0dXJufXRocm93IG1yZT1uZXcgcy5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRSYW5nZUV4Y2VwdGlvbihlLHQsdGhpcy5pbnB1dCksdGhpcy5yZWNvdmVyKG1yZSksbXJlfXRoaXMuaW5wdXQuY29uc3VtZSgpLHRoaXMuc3RhdGUuZmFpbGVkPSExfSxnZXRMaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQuZ2V0TGluZSgpfSxnZXRDaGFyUG9zaXRpb25JbkxpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnB1dC5nZXRDaGFyUG9zaXRpb25JbkxpbmUoKX0sZ2V0Q2hhckluZGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQuaW5kZXgoKX0sZ2V0VGV4dDpmdW5jdGlvbigpe3JldHVybiBzLmFudGxyLmxhbmcuaXNTdHJpbmcodGhpcy5zdGF0ZS50ZXh0KT90aGlzLnN0YXRlLnRleHQ6dGhpcy5pbnB1dC5zdWJzdHJpbmcodGhpcy5zdGF0ZS50b2tlblN0YXJ0Q2hhckluZGV4LHRoaXMuZ2V0Q2hhckluZGV4KCktMSl9LHNldFRleHQ6ZnVuY3Rpb24oZSl7dGhpcy5zdGF0ZS50ZXh0PWV9LHJlcG9ydEVycm9yOmZ1bmN0aW9uKGUpe3RoaXMuZGlzcGxheVJlY29nbml0aW9uRXJyb3IodGhpcy5nZXRUb2tlbk5hbWVzKCksZSl9LGdldEVycm9yTWVzc2FnZTpmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw7cmV0dXJuIGUgaW5zdGFuY2VvZiBzLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFRva2VuRXhjZXB0aW9uP249Im1pc21hdGNoZWQgY2hhcmFjdGVyICIrdGhpcy5nZXRDaGFyRXJyb3JEaXNwbGF5KGUuYykrIiBleHBlY3RpbmcgIit0aGlzLmdldENoYXJFcnJvckRpc3BsYXkoZS5leHBlY3RpbmcpOmUgaW5zdGFuY2VvZiBzLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24/bj0ibm8gdmlhYmxlIGFsdGVybmF0aXZlIGF0IGNoYXJhY3RlciAiK3RoaXMuZ2V0Q2hhckVycm9yRGlzcGxheShlLmMpOmUgaW5zdGFuY2VvZiBzLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uP249InJlcXVpcmVkICguLi4pKyBsb29wIGRpZCBub3QgbWF0Y2ggYW55dGhpbmcgYXQgY2hhcmFjdGVyICIrdGhpcy5nZXRDaGFyRXJyb3JEaXNwbGF5KGUuYyk6ZSBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkTm90U2V0RXhjZXB0aW9uP249Im1pc21hdGNoZWQgY2hhcmFjdGVyICIrdGhpcy5nZXRDaGFyRXJyb3JEaXNwbGF5KGUuYykrIiBleHBlY3Rpbmcgc2V0ICIrZS5leHBlY3Rpbmc6ZSBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uP249Im1pc21hdGNoZWQgY2hhcmFjdGVyICIrdGhpcy5nZXRDaGFyRXJyb3JEaXNwbGF5KGUuYykrIiBleHBlY3Rpbmcgc2V0ICIrZS5leHBlY3Rpbmc6ZSBpbnN0YW5jZW9mIHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkUmFuZ2VFeGNlcHRpb24/bj0ibWlzbWF0Y2hlZCBjaGFyYWN0ZXIgIit0aGlzLmdldENoYXJFcnJvckRpc3BsYXkoZS5jKSsiIGV4cGVjdGluZyBzZXQgIit0aGlzLmdldENoYXJFcnJvckRpc3BsYXkoZS5hKSsiLi4iK3RoaXMuZ2V0Q2hhckVycm9yRGlzcGxheShlLmIpOm49cy5hbnRsci5ydW50aW1lLkxleGVyLnN1cGVyY2xhc3MuZ2V0RXJyb3JNZXNzYWdlLmNhbGwodGhpcyxlLHQpLG59LGdldENoYXJFcnJvckRpc3BsYXk6ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtzd2l0Y2godCl7Y2FzZSBzLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GOnQ9IjxFT0Y+IjticmVhaztjYXNlIlxuIjp0PSJcXG4iO2JyZWFrO2Nhc2UiCSI6dD0iXFx0IjticmVhaztjYXNlIlxyIjp0PSJcXHIifXJldHVybiInIit0KyInIn0scmVjb3ZlcjpmdW5jdGlvbihlKXt0aGlzLmlucHV0LmNvbnN1bWUoKX0sdHJhY2VJbjpmdW5jdGlvbihlLHQpe3ZhciBuPVN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5pbnB1dC5MVCgxKSkrIiBsaW5lPSIrdGhpcy5nZXRMaW5lKCkrIjoiK3RoaXMuZ2V0Q2hhclBvc2l0aW9uSW5MaW5lKCk7cy5hbnRsci5ydW50aW1lLkxleGVyLnN1cGVyY2xhc3MudHJhY2VJbi5jYWxsKHRoaXMsZSx0LG4pfSx0cmFjZU91dDpmdW5jdGlvbihlLHQpe3ZhciBuPVN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5pbnB1dC5MVCgxKSkrIiBsaW5lPSIrdGhpcy5nZXRMaW5lKCkrIjoiK3RoaXMuZ2V0Q2hhclBvc2l0aW9uSW5MaW5lKCk7cy5hbnRsci5ydW50aW1lLkxleGVyLnN1cGVyY2xhc3MudHJhY2VPdXQuY2FsbCh0aGlzLGUsdCxuKX19KSxzLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlPWZ1bmN0aW9uKCl7fSxzLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLnByb3RvdHlwZT17Z2V0U3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydH0sZ2V0U3RvcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0b3B9fSxzLmFudGxyLnJ1bnRpbWUudHJlZS5UcmVlUnVsZVJldHVyblNjb3BlPWZ1bmN0aW9uKCl7fSxzLmFudGxyLnJ1bnRpbWUudHJlZS5UcmVlUnVsZVJldHVyblNjb3BlLnByb3RvdHlwZT17Z2V0U3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydH19LHMuYW50bHIucnVudGltZS5QYXJzZXI9ZnVuY3Rpb24oZSx0KXtzLmFudGxyLnJ1bnRpbWUuUGFyc2VyLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpLHRoaXMuc2V0VG9rZW5TdHJlYW0oZSl9LHMuYW50bHIubGFuZy5leHRlbmQocy5hbnRsci5ydW50aW1lLlBhcnNlcixzLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIse3Jlc2V0OmZ1bmN0aW9uKCl7cy5hbnRsci5ydW50aW1lLlBhcnNlci5zdXBlcmNsYXNzLnJlc2V0LmNhbGwodGhpcykscy5hbnRsci5sYW5nLmlzVmFsdWUodGhpcy5pbnB1dCkmJnRoaXMuaW5wdXQuc2VlaygwKX0sZ2V0Q3VycmVudElucHV0U3ltYm9sOmZ1bmN0aW9uKGUpe3JldHVybiBlLkxUKDEpfSxnZXRNaXNzaW5nU3ltYm9sOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPSI8bWlzc2luZyAiK3RoaXMuZ2V0VG9rZW5OYW1lcygpW25dKyI+IixvPW5ldyBzLmFudGxyLnJ1bnRpbWUuQ29tbW9uVG9rZW4obixpKSx1PWUuTFQoMSksYTtyZXR1cm4gdS5nZXRUeXBlKCk9PT1zLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GJiYoYT11LHU9ZS5MVCgtMSksdXx8KHU9YSkpLG8ubGluZT11LmdldExpbmUoKSxvLmNoYXJQb3NpdGlvbkluTGluZT11LmdldENoYXJQb3NpdGlvbkluTGluZSgpLG8uY2hhbm5lbD1zLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMLG99LHNldFRva2VuU3RyZWFtOmZ1bmN0aW9uKGUpe3RoaXMuaW5wdXQ9bnVsbCx0aGlzLnJlc2V0KCksdGhpcy5pbnB1dD1lfSxnZXRUb2tlblN0cmVhbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0fSxnZXRTb3VyY2VOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQuZ2V0U291cmNlTmFtZSgpfSx0cmFjZUluOmZ1bmN0aW9uKGUsdCl7cy5hbnRsci5ydW50aW1lLlBhcnNlci5zdXBlcmNsYXNzLnRyYWNlSW4uY2FsbCh0aGlzLGUsdCx0aGlzLmlucHV0LkxUKDEpKX0sdHJhY2VPdXQ6ZnVuY3Rpb24oZSx0KXtzLmFudGxyLnJ1bnRpbWUuUGFyc2VyLnN1cGVyY2xhc3MudHJhY2VPdXQuY2FsbCh0aGlzLGUsdCx0aGlzLmlucHV0LkxUKDEpKX19KSxzLmFudGxyLnJ1bnRpbWUuREZBPWZ1bmN0aW9uKCl7fSxzLmFudGxyLnJ1bnRpbWUuREZBLnByb3RvdHlwZT17cHJlZGljdDpmdW5jdGlvbihlKXt2YXIgdD1lLm1hcmsoKSxuPTAscixpLG87dHJ5e2Zvcig7Oyl7cj10aGlzLnNwZWNpYWxbbl07aWYocj49MCl7bj10aGlzLnNwZWNpYWxTdGF0ZVRyYW5zaXRpb24ocixlKTtpZihuPT09LTEpcmV0dXJuIHRoaXMubm9WaWFibGVBbHQobixlKSwwO2UuY29uc3VtZSgpO2NvbnRpbnVlfWlmKHRoaXMuYWNjZXB0W25dPj0xKXJldHVybiB0aGlzLmFjY2VwdFtuXTtpPWUuTEEoMSksaT09PXMuYW50bHIucnVudGltZS5Ub2tlbi5FT0Y/aT0tMTpzLmFudGxyLmxhbmcuaXNTdHJpbmcoaSkmJihpPWkuY2hhckNvZGVBdCgwKSk7aWYoaT49dGhpcy5taW5bbl0mJmk8PXRoaXMubWF4W25dKXtvPXRoaXMudHJhbnNpdGlvbltuXVtpLXRoaXMubWluW25dXTtpZihvPDApe2lmKHRoaXMuZW90W25dPj0wKXtuPXRoaXMuZW90W25dLGUuY29uc3VtZSgpO2NvbnRpbnVlfXJldHVybiB0aGlzLm5vVmlhYmxlQWx0KG4sZSksMH1uPW8sZS5jb25zdW1lKCk7Y29udGludWV9aWYodGhpcy5lb3Rbbl0+PTApe249dGhpcy5lb3Rbbl0sZS5jb25zdW1lKCk7Y29udGludWV9cmV0dXJuIGk9PXMuYW50bHIucnVudGltZS5Ub2tlbi5FT0YmJnRoaXMuZW9mW25dPj0wP3RoaXMuYWNjZXB0W3RoaXMuZW9mW25dXToodGhpcy5ub1ZpYWJsZUFsdChuLGUpLDApfX1maW5hbGx5e2UucmV3aW5kKHQpfX0sbm9WaWFibGVBbHQ6ZnVuY3Rpb24oZSx0KXtpZih0aGlzLnJlY29nbml6ZXIuc3RhdGUuYmFja3RyYWNraW5nPjApe3RoaXMucmVjb2duaXplci5zdGF0ZS5mYWlsZWQ9ITA7cmV0dXJufXZhciBuPW5ldyBzLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24odGhpcy5nZXREZXNjcmlwdGlvbigpLHRoaXMuZGVjaXNpb25OdW1iZXIsZSx0KTt0aHJvdyB0aGlzLmVycm9yKG4pLG59LGVycm9yOmZ1bmN0aW9uKGUpe30sc3BlY2lhbFN0YXRlVHJhbnNpdGlvbjpmdW5jdGlvbihlLHQpe3JldHVybi0xfSxnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiJuL2EifX0scy5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qocy5hbnRsci5ydW50aW1lLkRGQSx7dW5wYWNrRW5jb2RlZFN0cmluZzpmdW5jdGlvbihlKXt2YXIgdCxuPVtdLHI9MCxpLHMsbztmb3IodD0wO3Q8ZS5sZW5ndGg7dCs9Mil7aT1lLmNoYXJDb2RlQXQodCkscz1lLmNoYXJDb2RlQXQodCsxKSxzPT09NjU1MzUmJihzPS0xKTtmb3Iobz0xO288PWk7bysrKW5bcisrXT1zfXJldHVybiBufSx1bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzOmZ1bmN0aW9uKGUpe3JldHVybiBzLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcoZSl9fSkscy5hbnRsci5ydW50aW1lLnRyZWUuVHJlZVBhcnNlcj1mdW5jdGlvbihlKXtzLmFudGxyLnJ1bnRpbWUudHJlZS5UcmVlUGFyc2VyLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGFyZ3VtZW50c1sxXSksdGhpcy5zZXRUcmVlTm9kZVN0cmVhbShlKX0sZnVuY3Rpb24oKXt2YXIgZT1zLmFudGxyLnJ1bnRpbWUudHJlZS5UcmVlUGFyc2VyO3MuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KGUse0RPV046cy5hbnRsci5ydW50aW1lLlRva2VuLkRPV04sVVA6cy5hbnRsci5ydW50aW1lLlRva2VuLlVQfSkscy5hbnRsci5sYW5nLmV4dGVuZChlLHMuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplcix7cmVzZXQ6ZnVuY3Rpb24oKXtlLnN1cGVyY2xhc3MucmVzZXQuY2FsbCh0aGlzKSx0aGlzLmlucHV0JiZ0aGlzLmlucHV0LnNlZWsoMCl9LHNldFRyZWVOb2RlU3RyZWFtOmZ1bmN0aW9uKGUpe3RoaXMuaW5wdXQ9ZX0sZ2V0VHJlZU5vZGVTdHJlYW06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnB1dH0sZ2V0U291cmNlTmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0LmdldFNvdXJjZU5hbWUoKX0sZ2V0Q3VycmVudElucHV0U3ltYm9sOmZ1bmN0aW9uKGUpe3JldHVybiBlLkxUKDEpfSxnZXRNaXNzaW5nU3ltYm9sOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPSI8bWlzc2luZyAiK3RoaXMuZ2V0VG9rZW5OYW1lcygpW25dKyI+IjtyZXR1cm4gbmV3IHMuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWUobmV3IHMuYW50bHIucnVudGltZS5Db21tb25Ub2tlbihuLGkpKX0sbWF0Y2hBbnk6ZnVuY3Rpb24odCl7dGhpcy5zdGF0ZS5lcnJvclJlY292ZXJ5PSExLHRoaXMuc3RhdGUuZmFpbGVkPSExO3ZhciBuPXRoaXMuaW5wdXQuTFQoMSk7aWYodGhpcy5pbnB1dC5nZXRUcmVlQWRhcHRvcigpLmdldENoaWxkQ291bnQobik9PT0wKXt0aGlzLmlucHV0LmNvbnN1bWUoKTtyZXR1cm59dmFyIHI9MCxpPXRoaXMuaW5wdXQuZ2V0VHJlZUFkYXB0b3IoKS5nZXRUeXBlKG4pO3doaWxlKGkhPT1zLmFudGxyLnJ1bnRpbWUuVG9rZW4uRU9GJiYoaSE9PWUuVVB8fHIhPT0wKSl0aGlzLmlucHV0LmNvbnN1bWUoKSxuPXRoaXMuaW5wdXQuTFQoMSksaT10aGlzLmlucHV0LmdldFRyZWVBZGFwdG9yKCkuZ2V0VHlwZShuKSxpPT09ZS5ET1dOP3IrKzppPT09ZS5VUCYmci0tO3RoaXMuaW5wdXQuY29uc3VtZSgpfSxtaXNtYXRjaDpmdW5jdGlvbihlLHQsbil7dGhyb3cgbmV3IHMuYW50bHIucnVudGltZS5NaXNtYXRjaGVkVHJlZU5vZGVFeGNlcHRpb24odCxlKX0sZ2V0RXJyb3JIZWFkZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZ2V0R3JhbW1hckZpbGVOYW1lKCkrIjogbm9kZSBmcm9tICIrKGUuYXBwcm94aW1hdGVMaW5lSW5mbz8iYWZ0ZXIgIjoiIikrImxpbmUgIitlLmxpbmUrIjoiK2UuY2hhclBvc2l0aW9uSW5MaW5lfSxnZXRFcnJvck1lc3NhZ2U6ZnVuY3Rpb24odCxuKXt2YXIgcjtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGUmJihyPXQuaW5wdXQuZ2V0VHJlZUFkYXB0b3IoKSx0LnRva2VuPXIuZ2V0VG9rZW4odC5ub2RlKSxzLmFudGxyLmxhbmcuaXNWYWx1ZSh0LnRva2VuKXx8KHQudG9rZW49bmV3IHMuYW50bHIucnVudGltZS5Db21tb25Ub2tlbihyLmdldFR5cGUodC5ub2RlKSxyLmdldFRleHQodC5ub2RlKSkpKSxlLnN1cGVyY2xhc3MuZ2V0RXJyb3JNZXNzYWdlLmNhbGwodGhpcyx0LG4pfSx0cmFjZUluOmZ1bmN0aW9uKHQsbil7ZS5zdXBlcmNsYXNzLnRyYWNlSW4uY2FsbCh0aGlzLHQsbix0aGlzLmlucHV0LkxUKDEpKX0sdHJhY2VPdXQ6ZnVuY3Rpb24odCxuKXtlLnN1cGVyY2xhc3MudHJhY2VPdXQuY2FsbCh0aGlzLHQsbix0aGlzLmlucHV0LkxUKDEpKX19KX0oKSxuLm9yZz1zfSksZGVmaW5lKCJhY2UvbW9kZS94cXVlcnkvWFF1ZXJ5TGV4ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbW9kZS94cXVlcnkvYW50bHIzLWFsbCIsImFjZS9tb2RlL3hxdWVyeS9YUURUTGV4ZXIiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9hbnRscjMtYWxsIikub3JnLGk9ZSgiLi9YUURUTGV4ZXIiKS5YUURUTGV4ZXIscz1mdW5jdGlvbihlLHQpe3R8fCh0PW5ldyByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXplclNoYXJlZFN0YXRlKSxmdW5jdGlvbigpe3RoaXMuaW5TdHI9ITF9LmNhbGwodGhpcyksdGhpcy5kZmExOT1uZXcgcy5ERkExOSh0aGlzKSxzLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGUsdCl9O3IuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHMse0VPRjotMSxMX1F1b3RBdHRyQ29udGVudENoYXI6NCxMX0Fwb3NBdHRyQ29udGVudENoYXI6NSxMX0VsZW1lbnRDb250ZW50Q2hhcjo2LExfQ0RhdGFTZWN0aW9uOjcsTF9QcmVkZWZpbmVkRW50aXR5UmVmOjgsTF9DaGFyUmVmOjksRVNDQVBFX0xCUkFDS0VUOjEwLEVTQ0FQRV9SQlJBQ0tFVDoxMSxFU0NBUEVfQVBPUzoxMixFU0NBUEVfUVVPVDoxMyxDREFUQV9TVEFSVDoxNCxDREFUQV9FTkQ6MTUsQU5DRVNUT1I6MTYsQU5DRVNUT1JfT1JfU0VMRjoxNyxBTkQ6MTgsQVM6MTksQVNDRU5ESU5HOjIwLEFUOjIxLEFUVFJJQlVURToyMixCQVNFX1VSSToyMyxCT1VOREFSWV9TUEFDRToyNCxCWToyNSxDQVNFOjI2LENBU1Q6MjcsQ0FTVEFCTEU6MjgsQ0hJTEQ6MjksQ09MTEFUSU9OOjMwLENPTU1FTlQ6MzEsQ09OU1RSVUNUSU9OOjMyLENPUFlfTkFNRVNQQUNFUzozMyxERUNMQVJFOjM0LERFRkFVTFQ6MzUsREVTQ0VOREFOVDozNixERVNDRU5EQU5UX09SX1NFTEY6MzcsREVTQ0VORElORzozOCxESVY6MzksRE9DVU1FTlQ6NDAsRE9DVU1FTlRfTk9ERTo0MSxFTEVNRU5UOjQyLEVMU0U6NDMsRU1QVFk6NDQsRU1QVFlfU0VRVUVOQ0U6NDUsRU5DT0RJTkc6NDYsRVE6NDcsRVZFUlk6NDgsRVhDRVBUOjQ5LEVYVEVSTkFMOjUwLEZPTExPV0lORzo1MSxGT0xMT1dJTkdfU0lCTElORzo1MixGT1I6NTMsRlVOQ1RJT046NTQsR0U6NTUsR1JFQVRFU1Q6NTYsR1Q6NTcsSURJVjo1OCxJRjo1OSxJTVBPUlQ6NjAsSU46NjEsSU5IRVJJVDo2MixJTlNUQU5DRTo2MyxJTlRFUlNFQ1Q6NjQsSVM6NjUsSVRFTTo2NixMQVg6NjcsTEU6NjgsTEVBU1Q6NjksTEVUOjcwLExUOjcxLE1PRDo3MixNT0RVTEU6NzMsTkFNRVNQQUNFOjc0LE5FOjc1LE5PX0lOSEVSSVQ6NzYsTk9fUFJFU0VSVkU6NzcsTk9ERTo3OCxPRjo3OSxPUFRJT046ODAsT1I6ODEsT1JERVI6ODIsT1JERVJFRDo4MyxPUkRFUklORzo4NCxQQVJFTlQ6ODUsUFJFQ0VESU5HOjg2LFBSRUNFRElOR19TSUJMSU5HOjg3LFBSRVNFUlZFOjg4LFBST0NFU1NJTkdfSU5TVFJVQ1RJT046ODksUkVUVVJOOjkwLFNBVElTRklFUzo5MSxTQ0hFTUE6OTIsU0NIRU1BX0FUVFJJQlVURTo5MyxTQ0hFTUFfRUxFTUVOVDo5NCxTRUxGOjk1LFNPTUU6OTYsU1RBQkxFOjk3LFNUUklDVDo5OCxTVFJJUDo5OSxURVhUOjEwMCxUSEVOOjEwMSxUTzoxMDIsVFJFQVQ6MTAzLFRZUEVTV0lUQ0g6MTA0LFVOSU9OOjEwNSxVTk9SREVSRUQ6MTA2LFZBTElEQVRFOjEwNyxWQVJJQUJMRToxMDgsVkVSU0lPTjoxMDksV0hFUkU6MTEwLFhRVUVSWToxMTEsQUxMT1dJTkc6MTEyLENBVENIOjExMyxDT05URVhUOjExNCxDT1VOVDoxMTUsREVDSU1BTF9GT1JNQVQ6MTE2LERFQ0lNQUxfU0VQQVJBVE9SOjExNyxESUdJVDoxMTgsRU5EOjExOSxHUk9VUDoxMjAsR1JPVVBJTkdfU0VQQVJBVE9SOjEyMSxJTkZJTklUWToxMjIsTUlOVVNfU0lHTjoxMjMsTkFNRVNQQUNFX05PREU6MTI0LE5BTjoxMjUsTkVYVDoxMjYsT05MWToxMjcsUEFUVEVSTl9TRVBBUkFUT1I6MTI4LFBFUkNFTlQ6MTI5LFBFUl9NSUxMRToxMzAsUFJFVklPVVM6MTMxLFNMSURJTkc6MTMyLFNUQVJUOjEzMyxTV0lUQ0g6MTM0LFRSWToxMzUsVFVNQkxJTkc6MTM2LFRZUEU6MTM3LFdIRU46MTM4LFdJTkRPVzoxMzksWkVST19ESUdJVDoxNDAsQUZURVI6MTQxLEJFRk9SRToxNDIsQ09QWToxNDMsREVMRVRFOjE0NCxGSVJTVDoxNDUsSU5TRVJUOjE0NixJTlRPOjE0NyxMQVNUOjE0OCxNT0RJRlk6MTQ5LE5PREVTOjE1MCxSRU5BTUU6MTUxLFJFUExBQ0U6MTUyLFJFVkFMSURBVElPTjoxNTMsU0tJUDoxNTQsVVBEQVRJTkc6MTU1LFZBTFVFOjE1NixXSVRIOjE1NyxBTEw6MTU4LEFOWToxNTksQ09OVEFJTlM6MTYwLENPTlRFTlQ6MTYxLERJQUNSSVRJQ1M6MTYyLERJRkZFUkVOVDoxNjMsRElTVEFOQ0U6MTY0LEVOVElSRToxNjUsRVhBQ1RMWToxNjYsRlJPTToxNjcsRlRfT1BUSU9OOjE2OCxGVEFORDoxNjksRlROT1Q6MTcwLEZUT1I6MTcxLElOU0VOU0lUSVZFOjE3MixMQU5HVUFHRToxNzMsTEVWRUxTOjE3NCxMT1dFUkNBU0U6MTc1LE1PU1Q6MTc2LE5POjE3NyxOT1Q6MTc4LE9DQ1VSUzoxNzksUEFSQUdSQVBIOjE4MCxQQVJBR1JBUEhTOjE4MSxQSFJBU0U6MTgyLFJFTEFUSU9OU0hJUDoxODMsU0FNRToxODQsU0NPUkU6MTg1LFNFTlNJVElWRToxODYsU0VOVEVOQ0U6MTg3LFNFTlRFTkNFUzoxODgsU1RFTU1JTkc6MTg5LFNUT1A6MTkwLFRIRVNBVVJVUzoxOTEsVElNRVM6MTkyLFVQUEVSQ0FTRToxOTMsVVNJTkc6MTk0LFdFSUdIVDoxOTUsV0lMRENBUkRTOjE5NixXSVRIT1VUOjE5NyxXT1JEOjE5OCxXT1JEUzoxOTksQlJFQUs6MjAwLENPTlRJTlVFOjIwMSxFWElUOjIwMixMT09QOjIwMyxSRVRVUk5JTkc6MjA0LFdISUxFOjIwNSxDSEVDSzoyMDYsQ09MTEVDVElPTjoyMDcsQ09OU1RSQUlOVDoyMDgsRk9SRUFDSDoyMDksRk9SRUlHTjoyMTAsSU5ERVg6MjExLElOVEVHUklUWToyMTIsS0VZOjIxMyxPTjoyMTQsVU5JUVVFOjIxNSxCSU5BUlk6MjE2LEFNUF9FUjoyMTcsQVBPU19FUjoyMTgsUVVPVF9FUjoyMTksQ09OQ0FUOjIyMCxMUEFSRU46MjIxLFJQQVJFTjoyMjIsRE9MTEFSOjIyMyxMQlJBQ0tFVDoyMjQsUkJSQUNLRVQ6MjI1LExTUVVBUkU6MjI2LFJTUVVBUkU6MjI3LEVRVUFMOjIyOCxCSU5EOjIyOSxOT1RFUVVBTDoyMzAsQU5OX1BFUkNFTlQ6MjMxLEhBU0g6MjMyLEFNUDoyMzMsQ09NTUE6MjM0LFFVRVNUSU9OOjIzNSxTVEFSOjIzNixQTFVTOjIzNyxNSU5VUzoyMzgsU01BTExFUjoyMzksR1JFQVRFUjoyNDAsU01BTExFUkVROjI0MSxHUkVBVEVSRVE6MjQyLFNNQUxMRVJfU01BTExFUjoyNDMsR1JFQVRFUl9HUkVBVEVSOjI0NCxTTEFTSDoyNDUsU0xBU0hfU0xBU0g6MjQ2LERPVDoyNDcsRE9UX0RPVDoyNDgsQ09MT046MjQ5LENPTE9OX0NPTE9OOjI1MCxFTVBUWV9DTE9TRV9UQUc6MjUxLENMT1NFX1RBRzoyNTIsU0VNSUNPTE9OOjI1MyxWQkFSOjI1NCxQUkFHTUFfU1RBUlQ6MjU1LFBSQUdNQV9FTkQ6MjU2LFhNTF9DT01NRU5UX1NUQVJUOjI1NyxYTUxfQ09NTUVOVF9FTkQ6MjU4LFBJX1NUQVJUOjI1OSxQSV9FTkQ6MjYwLEFUVFJfU0lHTjoyNjEsQ0hBUlJFRl9ERUM6MjYyLENIQVJSRUZfSEVYOjI2MyxBUE9TOjI2NCxRVU9UOjI2NSxOQ05hbWVTdGFydENoYXI6MjY2LE5DTmFtZUNoYXI6MjY3LExfTkNOYW1lOjI2OCxMZXR0ZXI6MjY5LEhleExldHRlcjoyNzAsRGlnaXQ6MjcxLERpZ2l0czoyNzIsUzoyNzMsU1U6Mjc0LExfUHJhZ21hOjI3NSxMX0RpckNvbW1lbnRDb25zdHJ1Y3RvcjoyNzYsTF9EaXJQSUNvbnN0cnVjdG9yOjI3NyxMX0ludGVnZXJMaXRlcmFsOjI3OCxMX0RlY2ltYWxMaXRlcmFsOjI3OSxMX0RvdWJsZUxpdGVyYWw6MjgwLExfQ29tbWVudDoyODEsTF9BbnlDaGFyOjI4Mn0pLGZ1bmN0aW9uKCl7dmFyIGU9ci5hbnRsci5ydW50aW1lLlRva2VuLkhJRERFTl9DSEFOTkVMLHQ9ci5hbnRsci5ydW50aW1lLlRva2VuLkVPRjtyLmFudGxyLmxhbmcuZXh0ZW5kKHMsaSx7RU9GOi0xLExfUXVvdEF0dHJDb250ZW50Q2hhcjo0LExfQXBvc0F0dHJDb250ZW50Q2hhcjo1LExfRWxlbWVudENvbnRlbnRDaGFyOjYsTF9DRGF0YVNlY3Rpb246NyxMX1ByZWRlZmluZWRFbnRpdHlSZWY6OCxMX0NoYXJSZWY6OSxFU0NBUEVfTEJSQUNLRVQ6MTAsRVNDQVBFX1JCUkFDS0VUOjExLEVTQ0FQRV9BUE9TOjEyLEVTQ0FQRV9RVU9UOjEzLENEQVRBX1NUQVJUOjE0LENEQVRBX0VORDoxNSxBTkNFU1RPUjoxNixBTkNFU1RPUl9PUl9TRUxGOjE3LEFORDoxOCxBUzoxOSxBU0NFTkRJTkc6MjAsQVQ6MjEsQVRUUklCVVRFOjIyLEJBU0VfVVJJOjIzLEJPVU5EQVJZX1NQQUNFOjI0LEJZOjI1LENBU0U6MjYsQ0FTVDoyNyxDQVNUQUJMRToyOCxDSElMRDoyOSxDT0xMQVRJT046MzAsQ09NTUVOVDozMSxDT05TVFJVQ1RJT046MzIsQ09QWV9OQU1FU1BBQ0VTOjMzLERFQ0xBUkU6MzQsREVGQVVMVDozNSxERVNDRU5EQU5UOjM2LERFU0NFTkRBTlRfT1JfU0VMRjozNyxERVNDRU5ESU5HOjM4LERJVjozOSxET0NVTUVOVDo0MCxET0NVTUVOVF9OT0RFOjQxLEVMRU1FTlQ6NDIsRUxTRTo0MyxFTVBUWTo0NCxFTVBUWV9TRVFVRU5DRTo0NSxFTkNPRElORzo0NixFUTo0NyxFVkVSWTo0OCxFWENFUFQ6NDksRVhURVJOQUw6NTAsRk9MTE9XSU5HOjUxLEZPTExPV0lOR19TSUJMSU5HOjUyLEZPUjo1MyxGVU5DVElPTjo1NCxHRTo1NSxHUkVBVEVTVDo1NixHVDo1NyxJRElWOjU4LElGOjU5LElNUE9SVDo2MCxJTjo2MSxJTkhFUklUOjYyLElOU1RBTkNFOjYzLElOVEVSU0VDVDo2NCxJUzo2NSxJVEVNOjY2LExBWDo2NyxMRTo2OCxMRUFTVDo2OSxMRVQ6NzAsTFQ6NzEsTU9EOjcyLE1PRFVMRTo3MyxOQU1FU1BBQ0U6NzQsTkU6NzUsTk9fSU5IRVJJVDo3NixOT19QUkVTRVJWRTo3NyxOT0RFOjc4LE9GOjc5LE9QVElPTjo4MCxPUjo4MSxPUkRFUjo4MixPUkRFUkVEOjgzLE9SREVSSU5HOjg0LFBBUkVOVDo4NSxQUkVDRURJTkc6ODYsUFJFQ0VESU5HX1NJQkxJTkc6ODcsUFJFU0VSVkU6ODgsUFJPQ0VTU0lOR19JTlNUUlVDVElPTjo4OSxSRVRVUk46OTAsU0FUSVNGSUVTOjkxLFNDSEVNQTo5MixTQ0hFTUFfQVRUUklCVVRFOjkzLFNDSEVNQV9FTEVNRU5UOjk0LFNFTEY6OTUsU09NRTo5NixTVEFCTEU6OTcsU1RSSUNUOjk4LFNUUklQOjk5LFRFWFQ6MTAwLFRIRU46MTAxLFRPOjEwMixUUkVBVDoxMDMsVFlQRVNXSVRDSDoxMDQsVU5JT046MTA1LFVOT1JERVJFRDoxMDYsVkFMSURBVEU6MTA3LFZBUklBQkxFOjEwOCxWRVJTSU9OOjEwOSxXSEVSRToxMTAsWFFVRVJZOjExMSxBTExPV0lORzoxMTIsQ0FUQ0g6MTEzLENPTlRFWFQ6MTE0LENPVU5UOjExNSxERUNJTUFMX0ZPUk1BVDoxMTYsREVDSU1BTF9TRVBBUkFUT1I6MTE3LERJR0lUOjExOCxFTkQ6MTE5LEdST1VQOjEyMCxHUk9VUElOR19TRVBBUkFUT1I6MTIxLElORklOSVRZOjEyMixNSU5VU19TSUdOOjEyMyxOQU1FU1BBQ0VfTk9ERToxMjQsTkFOOjEyNSxORVhUOjEyNixPTkxZOjEyNyxQQVRURVJOX1NFUEFSQVRPUjoxMjgsUEVSQ0VOVDoxMjksUEVSX01JTExFOjEzMCxQUkVWSU9VUzoxMzEsU0xJRElORzoxMzIsU1RBUlQ6MTMzLFNXSVRDSDoxMzQsVFJZOjEzNSxUVU1CTElORzoxMzYsVFlQRToxMzcsV0hFTjoxMzgsV0lORE9XOjEzOSxaRVJPX0RJR0lUOjE0MCxBRlRFUjoxNDEsQkVGT1JFOjE0MixDT1BZOjE0MyxERUxFVEU6MTQ0LEZJUlNUOjE0NSxJTlNFUlQ6MTQ2LElOVE86MTQ3LExBU1Q6MTQ4LE1PRElGWToxNDksTk9ERVM6MTUwLFJFTkFNRToxNTEsUkVQTEFDRToxNTIsUkVWQUxJREFUSU9OOjE1MyxTS0lQOjE1NCxVUERBVElORzoxNTUsVkFMVUU6MTU2LFdJVEg6MTU3LEFMTDoxNTgsQU5ZOjE1OSxDT05UQUlOUzoxNjAsQ09OVEVOVDoxNjEsRElBQ1JJVElDUzoxNjIsRElGRkVSRU5UOjE2MyxESVNUQU5DRToxNjQsRU5USVJFOjE2NSxFWEFDVExZOjE2NixGUk9NOjE2NyxGVF9PUFRJT046MTY4LEZUQU5EOjE2OSxGVE5PVDoxNzAsRlRPUjoxNzEsSU5TRU5TSVRJVkU6MTcyLExBTkdVQUdFOjE3MyxMRVZFTFM6MTc0LExPV0VSQ0FTRToxNzUsTU9TVDoxNzYsTk86MTc3LE5PVDoxNzgsT0NDVVJTOjE3OSxQQVJBR1JBUEg6MTgwLFBBUkFHUkFQSFM6MTgxLFBIUkFTRToxODIsUkVMQVRJT05TSElQOjE4MyxTQU1FOjE4NCxTQ09SRToxODUsU0VOU0lUSVZFOjE4NixTRU5URU5DRToxODcsU0VOVEVOQ0VTOjE4OCxTVEVNTUlORzoxODksU1RPUDoxOTAsVEhFU0FVUlVTOjE5MSxUSU1FUzoxOTIsVVBQRVJDQVNFOjE5MyxVU0lORzoxOTQsV0VJR0hUOjE5NSxXSUxEQ0FSRFM6MTk2LFdJVEhPVVQ6MTk3LFdPUkQ6MTk4LFdPUkRTOjE5OSxCUkVBSzoyMDAsQ09OVElOVUU6MjAxLEVYSVQ6MjAyLExPT1A6MjAzLFJFVFVSTklORzoyMDQsV0hJTEU6MjA1LENIRUNLOjIwNixDT0xMRUNUSU9OOjIwNyxDT05TVFJBSU5UOjIwOCxGT1JFQUNIOjIwOSxGT1JFSUdOOjIxMCxJTkRFWDoyMTEsSU5URUdSSVRZOjIxMixLRVk6MjEzLE9OOjIxNCxVTklRVUU6MjE1LEJJTkFSWToyMTYsQU1QX0VSOjIxNyxBUE9TX0VSOjIxOCxRVU9UX0VSOjIxOSxDT05DQVQ6MjIwLExQQVJFTjoyMjEsUlBBUkVOOjIyMixET0xMQVI6MjIzLExCUkFDS0VUOjIyNCxSQlJBQ0tFVDoyMjUsTFNRVUFSRToyMjYsUlNRVUFSRToyMjcsRVFVQUw6MjI4LEJJTkQ6MjI5LE5PVEVRVUFMOjIzMCxBTk5fUEVSQ0VOVDoyMzEsSEFTSDoyMzIsQU1QOjIzMyxDT01NQToyMzQsUVVFU1RJT046MjM1LFNUQVI6MjM2LFBMVVM6MjM3LE1JTlVTOjIzOCxTTUFMTEVSOjIzOSxHUkVBVEVSOjI0MCxTTUFMTEVSRVE6MjQxLEdSRUFURVJFUToyNDIsU01BTExFUl9TTUFMTEVSOjI0MyxHUkVBVEVSX0dSRUFURVI6MjQ0LFNMQVNIOjI0NSxTTEFTSF9TTEFTSDoyNDYsRE9UOjI0NyxET1RfRE9UOjI0OCxDT0xPTjoyNDksQ09MT05fQ09MT046MjUwLEVNUFRZX0NMT1NFX1RBRzoyNTEsQ0xPU0VfVEFHOjI1MixTRU1JQ09MT046MjUzLFZCQVI6MjU0LFBSQUdNQV9TVEFSVDoyNTUsUFJBR01BX0VORDoyNTYsWE1MX0NPTU1FTlRfU1RBUlQ6MjU3LFhNTF9DT01NRU5UX0VORDoyNTgsUElfU1RBUlQ6MjU5LFBJX0VORDoyNjAsQVRUUl9TSUdOOjI2MSxDSEFSUkVGX0RFQzoyNjIsQ0hBUlJFRl9IRVg6MjYzLEFQT1M6MjY0LFFVT1Q6MjY1LE5DTmFtZVN0YXJ0Q2hhcjoyNjYsTkNOYW1lQ2hhcjoyNjcsTF9OQ05hbWU6MjY4LExldHRlcjoyNjksSGV4TGV0dGVyOjI3MCxEaWdpdDoyNzEsRGlnaXRzOjI3MixTOjI3MyxTVToyNzQsTF9QcmFnbWE6Mjc1LExfRGlyQ29tbWVudENvbnN0cnVjdG9yOjI3NixMX0RpclBJQ29uc3RydWN0b3I6Mjc3LExfSW50ZWdlckxpdGVyYWw6Mjc4LExfRGVjaW1hbExpdGVyYWw6Mjc5LExfRG91YmxlTGl0ZXJhbDoyODAsTF9Db21tZW50OjI4MSxMX0FueUNoYXI6MjgyLGdldEdyYW1tYXJGaWxlTmFtZTpmdW5jdGlvbigpe3JldHVybiJ4cXVlcnkvWFF1ZXJ5TGV4ZXIuZyJ9fSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qocy5wcm90b3R5cGUse21BTkNFU1RPUjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkFOQ0VTVE9SLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJhbmNlc3RvciIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUFOQ0VTVE9SX09SX1NFTEY6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5BTkNFU1RPUl9PUl9TRUxGLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJhbmNlc3Rvci1vci1zZWxmIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQU5EOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQU5ELHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJhbmQiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1BUzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkFTLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJhcyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUFTQ0VORElORzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkFTQ0VORElORyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiYXNjZW5kaW5nIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5BVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiYXQiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1BVFRSSUJVVEU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5BVFRSSUJVVEUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImF0dHJpYnV0ZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUJBU0VfVVJJOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQkFTRV9VUkksdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImJhc2UtdXJpIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQk9VTkRBUllfU1BBQ0U6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5CT1VOREFSWV9TUEFDRSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiYm91bmRhcnktc3BhY2UiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1CWTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkJZLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJieSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUNBU0U6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5DQVNFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJjYXNlIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQ0FTVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkNBU1QsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImNhc3QiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1DQVNUQUJMRTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkNBU1RBQkxFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJjYXN0YWJsZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUNISUxEOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQ0hJTEQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImNoaWxkIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQ09MTEFUSU9OOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQ09MTEFUSU9OLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJjb2xsYXRpb24iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1DT01NRU5UOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQ09NTUVOVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiY29tbWVudCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUNPTlNUUlVDVElPTjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkNPTlNUUlVDVElPTix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiY29uc3RydWN0aW9uIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQ09QWV9OQU1FU1BBQ0VTOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQ09QWV9OQU1FU1BBQ0VTLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJjb3B5LW5hbWVzcGFjZXMiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1ERUNMQVJFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuREVDTEFSRSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZGVjbGFyZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbURFRkFVTFQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5ERUZBVUxULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJkZWZhdWx0IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtREVTQ0VOREFOVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkRFU0NFTkRBTlQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImRlc2NlbmRhbnQiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1ERVNDRU5EQU5UX09SX1NFTEY6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5ERVNDRU5EQU5UX09SX1NFTEYsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImRlc2NlbmRhbnQtb3Itc2VsZiIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbURFU0NFTkRJTkc6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5ERVNDRU5ESU5HLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJkZXNjZW5kaW5nIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRElWOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRElWLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJkaXYiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1ET0NVTUVOVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkRPQ1VNRU5ULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJkb2N1bWVudCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbURPQ1VNRU5UX05PREU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5ET0NVTUVOVF9OT0RFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJkb2N1bWVudC1ub2RlIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRUxFTUVOVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkVMRU1FTlQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImVsZW1lbnQiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1FTFNFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRUxTRSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZWxzZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUVNUFRZOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRU1QVFksdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImVtcHR5IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRU1QVFlfU0VRVUVOQ0U6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5FTVBUWV9TRVFVRU5DRSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZW1wdHktc2VxdWVuY2UiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1FTkNPRElORzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkVOQ09ESU5HLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJlbmNvZGluZyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUVROmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRVEsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImVxIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRVZFUlk6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5FVkVSWSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZXZlcnkiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1FWENFUFQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5FWENFUFQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImV4Y2VwdCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUVYVEVSTkFMOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRVhURVJOQUwsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImV4dGVybmFsIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRk9MTE9XSU5HOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRk9MTE9XSU5HLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJmb2xsb3dpbmciKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1GT0xMT1dJTkdfU0lCTElORzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkZPTExPV0lOR19TSUJMSU5HLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJmb2xsb3dpbmctc2libGluZyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUZPUjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkZPUix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZm9yIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRlVOQ1RJT046ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5GVU5DVElPTix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZnVuY3Rpb24iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1HRTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkdFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJnZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUdSRUFURVNUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuR1JFQVRFU1QsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImdyZWF0ZXN0IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtR1Q6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5HVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZ3QiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1JRElWOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuSURJVix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiaWRpdiIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUlGOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuSUYsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImlmIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtSU1QT1JUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuSU1QT1JULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJpbXBvcnQiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1JTjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLklOLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJpbiIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUlOSEVSSVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5JTkhFUklULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJpbmhlcml0IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtSU5TVEFOQ0U6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5JTlNUQU5DRSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiaW5zdGFuY2UiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1JTlRFUlNFQ1Q6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5JTlRFUlNFQ1QsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImludGVyc2VjdCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUlTOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuSVMsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImlzIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtSVRFTTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLklURU0sdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIml0ZW0iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1MQVg6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MQVgsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImxheCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUxFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTEUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImxlIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTEVBU1Q6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MRUFTVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibGVhc3QiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1MRVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MRVQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImxldCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUxUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTFQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImx0IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTU9EOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTU9ELHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJtb2QiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1NT0RVTEU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5NT0RVTEUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIm1vZHVsZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbU5BTUVTUEFDRTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLk5BTUVTUEFDRSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibmFtZXNwYWNlIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTkU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5ORSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibmUiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1OT19JTkhFUklUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTk9fSU5IRVJJVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibm8taW5oZXJpdCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbU5PX1BSRVNFUlZFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTk9fUFJFU0VSVkUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIm5vLXByZXNlcnZlIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTk9ERTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLk5PREUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIm5vZGUiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1PRjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLk9GLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJvZiIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbU9QVElPTjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLk9QVElPTix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgib3B0aW9uIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtT1I6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5PUix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgib3IiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1PUkRFUjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLk9SREVSLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJvcmRlciIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbU9SREVSRUQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5PUkRFUkVELHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJvcmRlcmVkIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtT1JERVJJTkc6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5PUkRFUklORyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgib3JkZXJpbmciKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1QQVJFTlQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5QQVJFTlQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInBhcmVudCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVBSRUNFRElORzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlBSRUNFRElORyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgicHJlY2VkaW5nIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtUFJFQ0VESU5HX1NJQkxJTkc6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5QUkVDRURJTkdfU0lCTElORyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgicHJlY2VkaW5nLXNpYmxpbmciKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1QUkVTRVJWRTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlBSRVNFUlZFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJwcmVzZXJ2ZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVBST0NFU1NJTkdfSU5TVFJVQ1RJT046ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJwcm9jZXNzaW5nLWluc3RydWN0aW9uIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtUkVUVVJOOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuUkVUVVJOLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJyZXR1cm4iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1TQVRJU0ZJRVM6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5TQVRJU0ZJRVMsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInNhdGlzZmllcyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVNDSEVNQTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlNDSEVNQSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic2NoZW1hIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtU0NIRU1BX0FUVFJJQlVURTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlNDSEVNQV9BVFRSSUJVVEUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInNjaGVtYS1hdHRyaWJ1dGUiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1TQ0hFTUFfRUxFTUVOVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlNDSEVNQV9FTEVNRU5ULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJzY2hlbWEtZWxlbWVudCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVNFTEY6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5TRUxGLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJzZWxmIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtU09NRTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlNPTUUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInNvbWUiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1TVEFCTEU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5TVEFCTEUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInN0YWJsZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVNUUklDVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlNUUklDVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic3RyaWN0IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtU1RSSVA6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5TVFJJUCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic3RyaXAiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1URVhUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuVEVYVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgidGV4dCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVRIRU46ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5USEVOLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ0aGVuIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtVE86ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5UTyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgidG8iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1UUkVBVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlRSRUFULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ0cmVhdCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVRZUEVTV0lUQ0g6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5UWVBFU1dJVENILHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ0eXBlc3dpdGNoIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtVU5JT046ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5VTklPTix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgidW5pb24iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1VTk9SREVSRUQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5VTk9SREVSRUQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInVub3JkZXJlZCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVZBTElEQVRFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuVkFMSURBVEUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInZhbGlkYXRlIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtVkFSSUFCTEU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5WQVJJQUJMRSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgidmFyaWFibGUiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1WRVJTSU9OOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuVkVSU0lPTix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgidmVyc2lvbiIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVdIRVJFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuV0hFUkUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIndoZXJlIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtWFFVRVJZOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuWFFVRVJZLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ4cXVlcnkiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1BTExPV0lORzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkFMTE9XSU5HLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJhbGxvd2luZyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUNBVENIOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQ0FUQ0gsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImNhdGNoIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQ09OVEVYVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkNPTlRFWFQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImNvbnRleHQiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1DT1VOVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkNPVU5ULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJjb3VudCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbURFQ0lNQUxfRk9STUFUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuREVDSU1BTF9GT1JNQVQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImRlY2ltYWwtZm9ybWF0IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtREVDSU1BTF9TRVBBUkFUT1I6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5ERUNJTUFMX1NFUEFSQVRPUix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZGVjaW1hbC1zZXBhcmF0b3IiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1ESUdJVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkRJR0lULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJkaWdpdCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUVORDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkVORCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZW5kIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtR1JPVVA6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5HUk9VUCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZ3JvdXAiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1HUk9VUElOR19TRVBBUkFUT1I6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5HUk9VUElOR19TRVBBUkFUT1IsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImdyb3VwaW5nLXNlcGFyYXRvciIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUlORklOSVRZOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuSU5GSU5JVFksdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImluZmluaXR5IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTUlOVVNfU0lHTjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLk1JTlVTX1NJR04sdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIm1pbnVzLXNpZ24iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1OQU1FU1BBQ0VfTk9ERTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLk5BTUVTUEFDRV9OT0RFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJuYW1lc3BhY2Utbm9kZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbU5BTjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLk5BTix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiTmFOIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTkVYVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLk5FWFQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIm5leHQiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1PTkxZOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuT05MWSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgib25seSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVBBVFRFUk5fU0VQQVJBVE9SOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuUEFUVEVSTl9TRVBBUkFUT1IsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInBhdHRlcm4tc2VwYXJhdG9yIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtUEVSQ0VOVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlBFUkNFTlQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInBlcmNlbnQiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1QRVJfTUlMTEU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5QRVJfTUlMTEUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInBlci1taWxsZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVBSRVZJT1VTOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuUFJFVklPVVMsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInByZXZpb3VzIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtU0xJRElORzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlNMSURJTkcsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInNsaWRpbmciKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1TVEFSVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlNUQVJULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJzdGFydCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVNXSVRDSDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlNXSVRDSCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic3dpdGNoIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtVFJZOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuVFJZLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ0cnkiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1UVU1CTElORzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlRVTUJMSU5HLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ0dW1ibGluZyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVRZUEU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5UWVBFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ0eXBlIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtV0hFTjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLldIRU4sdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIndoZW4iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1XSU5ET1c6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5XSU5ET1csdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIndpbmRvdyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVpFUk9fRElHSVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5aRVJPX0RJR0lULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ6ZXJvLWRpZ2l0IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQUZURVI6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5BRlRFUix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiYWZ0ZXIiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1CRUZPUkU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5CRUZPUkUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImJlZm9yZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUNPUFk6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5DT1BZLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJjb3B5IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtREVMRVRFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuREVMRVRFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJkZWxldGUiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1GSVJTVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkZJUlNULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJmaXJzdCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUlOU0VSVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLklOU0VSVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiaW5zZXJ0IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtSU5UTzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLklOVE8sdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImludG8iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1MQVNUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTEFTVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibGFzdCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbU1PRElGWTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLk1PRElGWSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibW9kaWZ5IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTk9ERVM6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5OT0RFUyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibm9kZXMiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1SRU5BTUU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5SRU5BTUUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInJlbmFtZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVJFUExBQ0U6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5SRVBMQUNFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJyZXBsYWNlIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtUkVWQUxJREFUSU9OOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuUkVWQUxJREFUSU9OLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJyZXZhbGlkYXRpb24iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1TS0lQOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuU0tJUCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic2tpcCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVVQREFUSU5HOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuVVBEQVRJTkcsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInVwZGF0aW5nIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtVkFMVUU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5WQUxVRSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgidmFsdWUiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1XSVRIOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuV0lUSCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgid2l0aCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUFMTDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkFMTCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiYWxsIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQU5ZOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQU5ZLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJhbnkiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1DT05UQUlOUzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkNPTlRBSU5TLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJjb250YWlucyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUNPTlRFTlQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5DT05URU5ULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJjb250ZW50IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRElBQ1JJVElDUzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkRJQUNSSVRJQ1MsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImRpYWNyaXRpY3MiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1ESUZGRVJFTlQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5ESUZGRVJFTlQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImRpZmZlcmVudCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbURJU1RBTkNFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRElTVEFOQ0UsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImRpc3RhbmNlIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRU5USVJFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRU5USVJFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJlbnRpcmUiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1FWEFDVExZOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRVhBQ1RMWSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZXhhY3RseSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUZST006ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5GUk9NLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJmcm9tIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRlRfT1BUSU9OOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRlRfT1BUSU9OLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJmdC1vcHRpb24iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1GVEFORDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkZUQU5ELHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJmdGFuZCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUZUTk9UOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRlROT1QsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImZ0bm90IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRlRPUjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkZUT1IsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImZ0b3IiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1JTlNFTlNJVElWRTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLklOU0VOU0lUSVZFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJpbnNlbnNpdGl2ZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUxBTkdVQUdFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTEFOR1VBR0UsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImxhbmd1YWdlIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTEVWRUxTOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTEVWRUxTLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJsZXZlbHMiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1MT1dFUkNBU0U6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MT1dFUkNBU0UsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImxvd2VyY2FzZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbU1PU1Q6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5NT1NULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJtb3N0IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTk86ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5OTyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgibm8iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1OT1Q6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5OT1QsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIm5vdCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbU9DQ1VSUzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLk9DQ1VSUyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgib2NjdXJzIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtUEFSQUdSQVBIOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuUEFSQUdSQVBILHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJwYXJhZ3JhcGgiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1QQVJBR1JBUEhTOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuUEFSQUdSQVBIUyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgicGFyYWdyYXBocyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVBIUkFTRTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlBIUkFTRSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgicGhyYXNlIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtUkVMQVRJT05TSElQOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuUkVMQVRJT05TSElQLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJyZWxhdGlvbnNoaXAiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1TQU1FOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuU0FNRSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic2FtZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVNDT1JFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuU0NPUkUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInNjb3JlIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtU0VOU0lUSVZFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuU0VOU0lUSVZFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJzZW5zaXRpdmUiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1TRU5URU5DRTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlNFTlRFTkNFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJzZW50ZW5jZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVNFTlRFTkNFUzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlNFTlRFTkNFUyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic2VudGVuY2VzIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtU1RFTU1JTkc6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5TVEVNTUlORyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic3RlbW1pbmciKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1TVE9QOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuU1RPUCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgic3RvcCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVRIRVNBVVJVUzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlRIRVNBVVJVUyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgidGhlc2F1cnVzIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtVElNRVM6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5USU1FUyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgidGltZXMiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1VUFBFUkNBU0U6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5VUFBFUkNBU0UsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInVwcGVyY2FzZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVVTSU5HOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuVVNJTkcsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInVzaW5nIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtV0VJR0hUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuV0VJR0hULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ3ZWlnaHQiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1XSUxEQ0FSRFM6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5XSUxEQ0FSRFMsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIndpbGRjYXJkcyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVdJVEhPVVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5XSVRIT1VULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ3aXRob3V0IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtV09SRDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLldPUkQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIndvcmQiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1XT1JEUzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLldPUkRTLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ3b3JkcyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUJSRUFLOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQlJFQUssdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImJyZWFrIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQ09OVElOVUU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5DT05USU5VRSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiY29udGludWUiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1FWElUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRVhJVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiZXhpdCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUxPT1A6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MT09QLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJsb29wIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtUkVUVVJOSU5HOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuUkVUVVJOSU5HLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJyZXR1cm5pbmciKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1XSElMRTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLldISUxFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJ3aGlsZSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUNIRUNLOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQ0hFQ0ssdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImNoZWNrIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQ09MTEVDVElPTjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkNPTExFQ1RJT04sdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImNvbGxlY3Rpb24iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1DT05TVFJBSU5UOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQ09OU1RSQUlOVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiY29uc3RyYWludCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUZPUkVBQ0g6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5GT1JFQUNILHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJmb3JlYWNoIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRk9SRUlHTjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkZPUkVJR04sdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImZvcmVpZ24iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1JTkRFWDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLklOREVYLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJpbmRleCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUlOVEVHUklUWTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLklOVEVHUklUWSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiaW50ZWdyaXR5IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtS0VZOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuS0VZLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJrZXkiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1PTjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLk9OLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJvbiIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVVOSVFVRTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlVOSVFVRSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgidW5pcXVlIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQklOQVJZOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQklOQVJZLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJiaW5hcnkiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1BTVBfRVI6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5BTVBfRVIsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goImFtcCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUFQT1NfRVI6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5BUE9TX0VSLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJhcG9zIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtUVVPVF9FUjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlFVT1RfRVIsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInF1b3QiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1DT05DQVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5DT05DQVQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goInx8IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTFBBUkVOOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTFBBUkVOLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCIoIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtUlBBUkVOOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuUlBBUkVOLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCIpIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRE9MTEFSOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRE9MTEFSLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCIkIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTEJSQUNLRVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MQlJBQ0tFVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgieyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVJCUkFDS0VUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuUkJSQUNLRVQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIn0iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1MU1FVQVJFOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTFNRVUFSRSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiWyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVJTUVVBUkU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5SU1FVQVJFLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCJdIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRVFVQUw6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5FUVVBTCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiPSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUJJTkQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5CSU5ELHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCI6PSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbU5PVEVRVUFMOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTk9URVFVQUwsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIiE9IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQU5OX1BFUkNFTlQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5BTk5fUEVSQ0VOVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiJSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUhBU0g6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5IQVNILHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCIjIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQU1QOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQU1QLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCImIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQ09NTUE6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5DT01NQSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiLCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVFVRVNUSU9OOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuUVVFU1RJT04sdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIj8iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1TVEFSOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuU1RBUix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiKiIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVBMVVM6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5QTFVTLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCIrIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTUlOVVM6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5NSU5VUyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiLSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVNNQUxMRVI6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5TTUFMTEVSLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCI8IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtR1JFQVRFUjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkdSRUFURVIsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIj4iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1TTUFMTEVSRVE6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5TTUFMTEVSRVEsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIjw9IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtR1JFQVRFUkVROmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuR1JFQVRFUkVRLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCI+PSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVNNQUxMRVJfU01BTExFUjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlNNQUxMRVJfU01BTExFUix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiPDwiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1HUkVBVEVSX0dSRUFURVI6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5HUkVBVEVSX0dSRUFURVIsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIj4+IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtU0xBU0g6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5TTEFTSCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiLyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVNMQVNIX1NMQVNIOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuU0xBU0hfU0xBU0gsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIi8vIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRE9UOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRE9ULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCIuIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRE9UX0RPVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkRPVF9ET1QsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIi4uIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQ09MT046ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5DT0xPTix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiOiIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUNPTE9OX0NPTE9OOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQ09MT05fQ09MT04sdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIjo6IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRU1QVFlfQ0xPU0VfVEFHOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRU1QVFlfQ0xPU0VfVEFHLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCIvPiIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUNMT1NFX1RBRzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkNMT1NFX1RBRyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiPC8iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1TRU1JQ09MT046ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5TRU1JQ09MT04sdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIjsiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1WQkFSOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuVkJBUix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgifCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVBSQUdNQV9TVEFSVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlBSQUdNQV9TVEFSVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiKCMiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1QUkFHTUFfRU5EOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuUFJBR01BX0VORCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiIykiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1YTUxfQ09NTUVOVF9TVEFSVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlhNTF9DT01NRU5UX1NUQVJULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCI8IS0tIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtWE1MX0NPTU1FTlRfRU5EOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuWE1MX0NPTU1FTlRfRU5ELHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCItLT4iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1QSV9TVEFSVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlBJX1NUQVJULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCI8PyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVBJX0VORDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlBJX0VORCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tYXRjaCgiPz4iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1BVFRSX1NJR046ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5BVFRSX1NJR04sdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIkAiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1DSEFSUkVGX0RFQzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkNIQVJSRUZfREVDLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCImIyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUNIQVJSRUZfSEVYOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQ0hBUlJFRl9IRVgsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIiYjeCIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUFQT1M6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5BUE9TLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCInIiksdGhpcy5pblN0cnx8KHRoaXMuaW5TdHI9ITApLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVFVT1Q6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5RVU9ULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCciJyksdGhpcy5pblN0cnx8KHRoaXMuaW5TdHI9ITApLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUxfTkNOYW1lOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTF9OQ05hbWUsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubU5DTmFtZVN0YXJ0Q2hhcigpO2U6ZG97dmFyIG49MixpPXRoaXMuaW5wdXQuTEEoMSk7aWYoaT49Ii0iJiZpPD0iLiJ8fGk+PSIwIiYmaTw9IjkifHxpPj0iQSImJmk8PSJaInx8aT09Il8ifHxpPj0iYSImJmk8PSJ6IiluPTE7c3dpdGNoKG4pe2Nhc2UgMTp0aGlzLm1OQ05hbWVDaGFyKCk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCk7dGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTGV0dGVyOmZ1bmN0aW9uKCl7dHJ5e2lmKCEodGhpcy5pbnB1dC5MQSgxKT49IkEiJiZ0aGlzLmlucHV0LkxBKDEpPD0iWiJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJhIiYmdGhpcy5pbnB1dC5MQSgxKTw9InoiKSl7dmFyIGU9bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKGUpLGV9dGhpcy5pbnB1dC5jb25zdW1lKCl9ZmluYWxseXt9fSxtSGV4TGV0dGVyOmZ1bmN0aW9uKCl7dHJ5e2lmKCEodGhpcy5pbnB1dC5MQSgxKT49IkEiJiZ0aGlzLmlucHV0LkxBKDEpPD0iRiJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJhIiYmdGhpcy5pbnB1dC5MQSgxKTw9ImYiKSl7dmFyIGU9bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKGUpLGV9dGhpcy5pbnB1dC5jb25zdW1lKCl9ZmluYWxseXt9fSxtRGlnaXQ6ZnVuY3Rpb24oKXt0cnl7dGhpcy5tYXRjaFJhbmdlKCIwIiwiOSIpfWZpbmFsbHl7fX0sbURpZ2l0czpmdW5jdGlvbigpe3RyeXt2YXIgZT0wO2U6ZG97dmFyIHQ9MixuPXRoaXMuaW5wdXQuTEEoMSk7bj49IjAiJiZuPD0iOSImJih0PTEpO3N3aXRjaCh0KXtjYXNlIDE6dGhpcy5tRGlnaXQoKTticmVhaztkZWZhdWx0OmlmKGU+PTEpYnJlYWsgZTt2YXIgaT1uZXcgci5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbigyLHRoaXMuaW5wdXQpO3Rocm93IGl9ZSsrfXdoaWxlKCEwKX1maW5hbGx5e319LG1OQ05hbWVTdGFydENoYXI6ZnVuY3Rpb24oKXt0cnl7aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iQSImJnRoaXMuaW5wdXQuTEEoMSk8PSJaInx8dGhpcy5pbnB1dC5MQSgxKT09Il8ifHx0aGlzLmlucHV0LkxBKDEpPj0iYSImJnRoaXMuaW5wdXQuTEEoMSk8PSJ6Iikpe3ZhciBlPW5ldyByLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IHRoaXMucmVjb3ZlcihlKSxlfXRoaXMuaW5wdXQuY29uc3VtZSgpfWZpbmFsbHl7fX0sbU5DTmFtZUNoYXI6ZnVuY3Rpb24oKXt0cnl7aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iLSImJnRoaXMuaW5wdXQuTEEoMSk8PSIuInx8dGhpcy5pbnB1dC5MQSgxKT49IjAiJiZ0aGlzLmlucHV0LkxBKDEpPD0iOSJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJBIiYmdGhpcy5pbnB1dC5MQSgxKTw9IloifHx0aGlzLmlucHV0LkxBKDEpPT0iXyJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJhIiYmdGhpcy5pbnB1dC5MQSgxKTw9InoiKSl7dmFyIGU9bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKGUpLGV9dGhpcy5pbnB1dC5jb25zdW1lKCl9ZmluYWxseXt9fSxtUzpmdW5jdGlvbigpe3RyeXt2YXIgdD10aGlzLlMsbj1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMLGk9MDtlOmRve3ZhciBzPTIsbz10aGlzLmlucHV0LkxBKDEpO2lmKG8+PSIJIiYmbzw9IlxuInx8bz09IlxyInx8bz09IiAiKXM9MTtzd2l0Y2gocyl7Y2FzZSAxOmlmKCEodGhpcy5pbnB1dC5MQSgxKT49IgkiJiZ0aGlzLmlucHV0LkxBKDEpPD0iXG4ifHx0aGlzLmlucHV0LkxBKDEpPT0iXHIifHx0aGlzLmlucHV0LkxBKDEpPT0iICIpKXt2YXIgdT1uZXcgci5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIodSksdX10aGlzLmlucHV0LmNvbnN1bWUoKTticmVhaztkZWZhdWx0OmlmKGk+PTEpYnJlYWsgZTt2YXIgYT1uZXcgci5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbigzLHRoaXMuaW5wdXQpO3Rocm93IGF9aSsrfXdoaWxlKCEwKTtuPWUsdGhpcy5zdGF0ZS50eXBlPXQsdGhpcy5zdGF0ZS5jaGFubmVsPW59ZmluYWxseXt9fSxtU1U6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9MDtlOmRve3ZhciB0PTIsbj10aGlzLmlucHV0LkxBKDEpO2lmKG4+PSIJIiYmbjw9IlxuInx8bj09IlxyInx8bj09IiAiKXQ9MTtzd2l0Y2godCl7Y2FzZSAxOmlmKCEodGhpcy5pbnB1dC5MQSgxKT49IgkiJiZ0aGlzLmlucHV0LkxBKDEpPD0iXG4ifHx0aGlzLmlucHV0LkxBKDEpPT0iXHIifHx0aGlzLmlucHV0LkxBKDEpPT0iICIpKXt2YXIgaT1uZXcgci5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIoaSksaX10aGlzLmlucHV0LmNvbnN1bWUoKTticmVhaztkZWZhdWx0OmlmKGU+PTEpYnJlYWsgZTt2YXIgcz1uZXcgci5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbig0LHRoaXMuaW5wdXQpO3Rocm93IHN9ZSsrfXdoaWxlKCEwKX1maW5hbGx5e319LG1MX1ByYWdtYTpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkxfUHJhZ21hLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1QUkFHTUFfU1RBUlQoKTt2YXIgbj0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpZihpPj0iCSImJmk8PSJcbiJ8fGk9PSJcciJ8fGk9PSIgIiluPTE7c3dpdGNoKG4pe2Nhc2UgMTp0aGlzLm1TVSgpfXRoaXMubUxfTkNOYW1lKCksdGhpcy5tQ09MT04oKSx0aGlzLm1MX05DTmFtZSgpO3ZhciBzPTIsbz10aGlzLmlucHV0LkxBKDEpO2lmKG8+PSIJIiYmbzw9IlxuInx8bz09IlxyInx8bz09IiAiKXM9MTtzd2l0Y2gocyl7Y2FzZSAxOnRoaXMubVNVKCk7ZTpkb3t2YXIgdT0yLGE9dGhpcy5pbnB1dC5MQSgxKTtpZihhPT0iIyIpe3ZhciBmPXRoaXMuaW5wdXQuTEEoMik7aWYoZj09IikiKXU9MjtlbHNlIGlmKGY+PSJcMCImJmY8PSIoInx8Zj49IioiJiZmPD0i77+/Iil1PTF9ZWxzZSBpZihhPj0iXDAiJiZhPD0nIid8fGE+PSIkIiYmYTw9Iu+/vyIpdT0xO3N3aXRjaCh1KXtjYXNlIDE6dGhpcy5tYXRjaEFueSgpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApfXRoaXMubVBSQUdNQV9FTkQoKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1MX0RpckNvbW1lbnRDb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkxfRGlyQ29tbWVudENvbnN0cnVjdG9yLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1YTUxfQ09NTUVOVF9TVEFSVCgpO2U6ZG97dmFyIG49MixpPXRoaXMuaW5wdXQuTEEoMSk7aWYoaT09Ii0iKXt2YXIgcz10aGlzLmlucHV0LkxBKDIpO2lmKHM9PSItIil7dmFyIG89dGhpcy5pbnB1dC5MQSgzKTtpZihvPT0iPiIpbj0yO2Vsc2UgaWYobz49IlwwIiYmbzw9Ij0ifHxvPj0iPyImJm88PSLvv78iKW49MX1lbHNlIGlmKHM+PSJcMCImJnM8PSIsInx8cz49Ii4iJiZzPD0i77+/IiluPTF9ZWxzZSBpZihpPj0iXDAiJiZpPD0iLCJ8fGk+PSIuIiYmaTw9Iu+/vyIpbj0xO3N3aXRjaChuKXtjYXNlIDE6dGhpcy5tYXRjaEFueSgpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApO3RoaXMubVhNTF9DT01NRU5UX0VORCgpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUxfRGlyUElDb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkxfRGlyUElDb25zdHJ1Y3Rvcix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7dGhpcy5tUElfU1RBUlQoKTt2YXIgbj0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpZihpPj0iCSImJmk8PSJcbiJ8fGk9PSJcciJ8fGk9PSIgIiluPTE7c3dpdGNoKG4pe2Nhc2UgMTp0aGlzLm1TVSgpfXRoaXMubUxfTkNOYW1lKCk7dmFyIHM9MixvPXRoaXMuaW5wdXQuTEEoMSk7aWYobz49IgkiJiZvPD0iXG4ifHxvPT0iXHIifHxvPT0iICIpcz0xO3N3aXRjaChzKXtjYXNlIDE6dGhpcy5tU1UoKTtlOmRve3ZhciB1PTIsYT10aGlzLmlucHV0LkxBKDEpO2lmKGE9PSI/Iil7dmFyIGY9dGhpcy5pbnB1dC5MQSgyKTtpZihmPT0iPiIpdT0yO2Vsc2UgaWYoZj49IlwwIiYmZjw9Ij0ifHxmPj0iPyImJmY8PSLvv78iKXU9MX1lbHNlIGlmKGE+PSJcMCImJmE8PSI+Inx8YT49IkAiJiZhPD0i77+/Iil1PTE7c3dpdGNoKHUpe2Nhc2UgMTp0aGlzLm1hdGNoQW55KCk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCl9dGhpcy5tUElfRU5EKCksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTF9JbnRlZ2VyTGl0ZXJhbDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkxfSW50ZWdlckxpdGVyYWwsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubURpZ2l0cygpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUxfRGVjaW1hbExpdGVyYWw6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MX0RlY2ltYWxMaXRlcmFsLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTCxuPTIsaT10aGlzLmlucHV0LkxBKDEpO2lmKGk9PSIuIiluPTE7ZWxzZXtpZighKGk+PSIwIiYmaTw9IjkiKSl7dmFyIHM9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMywwLHRoaXMuaW5wdXQpO3Rocm93IHN9bj0yfXN3aXRjaChuKXtjYXNlIDE6dGhpcy5tYXRjaCgiLiIpLHRoaXMubURpZ2l0cygpO2JyZWFrO2Nhc2UgMjp0aGlzLm1EaWdpdHMoKSx0aGlzLm1hdGNoKCIuIik7ZTpkb3t2YXIgbz0yLHU9dGhpcy5pbnB1dC5MQSgxKTt1Pj0iMCImJnU8PSI5IiYmKG89MSk7c3dpdGNoKG8pe2Nhc2UgMTp0aGlzLm1EaWdpdCgpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApfXRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUxfRG91YmxlTGl0ZXJhbDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkxfRG91YmxlTGl0ZXJhbCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUwsbj0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpZihpPT0iLiIpbj0xO2Vsc2V7aWYoIShpPj0iMCImJmk8PSI5Iikpe3ZhciBzPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTYsMCx0aGlzLmlucHV0KTt0aHJvdyBzfW49Mn1zd2l0Y2gobil7Y2FzZSAxOnRoaXMubWF0Y2goIi4iKSx0aGlzLm1EaWdpdHMoKTticmVhaztjYXNlIDI6dGhpcy5tRGlnaXRzKCk7dmFyIG89Mix1PXRoaXMuaW5wdXQuTEEoMSk7dT09Ii4iJiYobz0xKTtzd2l0Y2gobyl7Y2FzZSAxOnRoaXMubWF0Y2goIi4iKTtlOmRve3ZhciBhPTIsZj10aGlzLmlucHV0LkxBKDEpO2Y+PSIwIiYmZjw9IjkiJiYoYT0xKTtzd2l0Y2goYSl7Y2FzZSAxOnRoaXMubURpZ2l0KCk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCl9fWlmKHRoaXMuaW5wdXQuTEEoMSkhPSJFIiYmdGhpcy5pbnB1dC5MQSgxKSE9ImUiKXt2YXIgbD1uZXcgci5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIobCksbH10aGlzLmlucHV0LmNvbnN1bWUoKTt2YXIgYz0yLGg9dGhpcy5pbnB1dC5MQSgxKTtpZihoPT0iKyJ8fGg9PSItIiljPTE7c3dpdGNoKGMpe2Nhc2UgMTppZih0aGlzLmlucHV0LkxBKDEpIT0iKyImJnRoaXMuaW5wdXQuTEEoMSkhPSItIil7dmFyIGw9bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKGwpLGx9dGhpcy5pbnB1dC5jb25zdW1lKCl9dGhpcy5tRGlnaXRzKCksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTF9Db21tZW50OmZ1bmN0aW9uKCl7dHJ5e3ZhciB0PXRoaXMuTF9Db21tZW50LG49ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighIXRoaXMuaW5TdHIpdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiTF9Db21tZW50IiwiIXRoaXMuaW5TdHIiKTt0aGlzLm1hdGNoKCIoOiIpO2U6ZG97dmFyIGk9MyxzPXRoaXMuaW5wdXQuTEEoMSk7aWYocz09IjoiKXt2YXIgbz10aGlzLmlucHV0LkxBKDIpO2lmKG89PSIpIilpPTM7ZWxzZSBpZihvPj0iXDAiJiZvPD0iKCJ8fG8+PSIqIiYmbzw9Iu+/vyIpaT0yfWVsc2UgaWYocz09IigiKXt2YXIgdT10aGlzLmlucHV0LkxBKDIpO2lmKHU9PSI6Iil7dmFyIGE9dGhpcy5pbnB1dC5MQSgzKTt0aGlzLmluU3RyP2k9MjppPTF9ZWxzZSBpZih1Pj0iXDAiJiZ1PD0iOSJ8fHU+PSI7IiYmdTw9Iu+/vyIpaT0yfWVsc2UgaWYocz49IlwwIiYmczw9IicifHxzPj0iKSImJnM8PSI5Inx8cz49IjsiJiZzPD0i77+/IilpPTI7c3dpdGNoKGkpe2Nhc2UgMTp0aGlzLm1MX0NvbW1lbnQoKTticmVhaztjYXNlIDI6dGhpcy5tYXRjaEFueSgpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApO3RoaXMubWF0Y2goIjopIiksbj1lLHRoaXMuYWRkQ29tbWVudCh0aGlzLnN0YXRlLnRva2VuU3RhcnRDaGFySW5kZXgsdGhpcy5nZXRDaGFySW5kZXgoKS0xKSx0aGlzLnN0YXRlLnR5cGU9dCx0aGlzLnN0YXRlLmNoYW5uZWw9bn1maW5hbGx5e319LG1MX0FueUNoYXI6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MX0FueUNoYXIsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2hBbnkoKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1Ub2tlbnM6ZnVuY3Rpb24oKXt2YXIgZT0yNjA7ZT10aGlzLmRmYTE5LnByZWRpY3QodGhpcy5pbnB1dCk7c3dpdGNoKGUpe2Nhc2UgMTp0aGlzLm1BTkNFU1RPUigpO2JyZWFrO2Nhc2UgMjp0aGlzLm1BTkNFU1RPUl9PUl9TRUxGKCk7YnJlYWs7Y2FzZSAzOnRoaXMubUFORCgpO2JyZWFrO2Nhc2UgNDp0aGlzLm1BUygpO2JyZWFrO2Nhc2UgNTp0aGlzLm1BU0NFTkRJTkcoKTticmVhaztjYXNlIDY6dGhpcy5tQVQoKTticmVhaztjYXNlIDc6dGhpcy5tQVRUUklCVVRFKCk7YnJlYWs7Y2FzZSA4OnRoaXMubUJBU0VfVVJJKCk7YnJlYWs7Y2FzZSA5OnRoaXMubUJPVU5EQVJZX1NQQUNFKCk7YnJlYWs7Y2FzZSAxMDp0aGlzLm1CWSgpO2JyZWFrO2Nhc2UgMTE6dGhpcy5tQ0FTRSgpO2JyZWFrO2Nhc2UgMTI6dGhpcy5tQ0FTVCgpO2JyZWFrO2Nhc2UgMTM6dGhpcy5tQ0FTVEFCTEUoKTticmVhaztjYXNlIDE0OnRoaXMubUNISUxEKCk7YnJlYWs7Y2FzZSAxNTp0aGlzLm1DT0xMQVRJT04oKTticmVhaztjYXNlIDE2OnRoaXMubUNPTU1FTlQoKTticmVhaztjYXNlIDE3OnRoaXMubUNPTlNUUlVDVElPTigpO2JyZWFrO2Nhc2UgMTg6dGhpcy5tQ09QWV9OQU1FU1BBQ0VTKCk7YnJlYWs7Y2FzZSAxOTp0aGlzLm1ERUNMQVJFKCk7YnJlYWs7Y2FzZSAyMDp0aGlzLm1ERUZBVUxUKCk7YnJlYWs7Y2FzZSAyMTp0aGlzLm1ERVNDRU5EQU5UKCk7YnJlYWs7Y2FzZSAyMjp0aGlzLm1ERVNDRU5EQU5UX09SX1NFTEYoKTticmVhaztjYXNlIDIzOnRoaXMubURFU0NFTkRJTkcoKTticmVhaztjYXNlIDI0OnRoaXMubURJVigpO2JyZWFrO2Nhc2UgMjU6dGhpcy5tRE9DVU1FTlQoKTticmVhaztjYXNlIDI2OnRoaXMubURPQ1VNRU5UX05PREUoKTticmVhaztjYXNlIDI3OnRoaXMubUVMRU1FTlQoKTticmVhaztjYXNlIDI4OnRoaXMubUVMU0UoKTticmVhaztjYXNlIDI5OnRoaXMubUVNUFRZKCk7YnJlYWs7Y2FzZSAzMDp0aGlzLm1FTVBUWV9TRVFVRU5DRSgpO2JyZWFrO2Nhc2UgMzE6dGhpcy5tRU5DT0RJTkcoKTticmVhaztjYXNlIDMyOnRoaXMubUVRKCk7YnJlYWs7Y2FzZSAzMzp0aGlzLm1FVkVSWSgpO2JyZWFrO2Nhc2UgMzQ6dGhpcy5tRVhDRVBUKCk7YnJlYWs7Y2FzZSAzNTp0aGlzLm1FWFRFUk5BTCgpO2JyZWFrO2Nhc2UgMzY6dGhpcy5tRk9MTE9XSU5HKCk7YnJlYWs7Y2FzZSAzNzp0aGlzLm1GT0xMT1dJTkdfU0lCTElORygpO2JyZWFrO2Nhc2UgMzg6dGhpcy5tRk9SKCk7YnJlYWs7Y2FzZSAzOTp0aGlzLm1GVU5DVElPTigpO2JyZWFrO2Nhc2UgNDA6dGhpcy5tR0UoKTticmVhaztjYXNlIDQxOnRoaXMubUdSRUFURVNUKCk7YnJlYWs7Y2FzZSA0Mjp0aGlzLm1HVCgpO2JyZWFrO2Nhc2UgNDM6dGhpcy5tSURJVigpO2JyZWFrO2Nhc2UgNDQ6dGhpcy5tSUYoKTticmVhaztjYXNlIDQ1OnRoaXMubUlNUE9SVCgpO2JyZWFrO2Nhc2UgNDY6dGhpcy5tSU4oKTticmVhaztjYXNlIDQ3OnRoaXMubUlOSEVSSVQoKTticmVhaztjYXNlIDQ4OnRoaXMubUlOU1RBTkNFKCk7YnJlYWs7Y2FzZSA0OTp0aGlzLm1JTlRFUlNFQ1QoKTticmVhaztjYXNlIDUwOnRoaXMubUlTKCk7YnJlYWs7Y2FzZSA1MTp0aGlzLm1JVEVNKCk7YnJlYWs7Y2FzZSA1Mjp0aGlzLm1MQVgoKTticmVhaztjYXNlIDUzOnRoaXMubUxFKCk7YnJlYWs7Y2FzZSA1NDp0aGlzLm1MRUFTVCgpO2JyZWFrO2Nhc2UgNTU6dGhpcy5tTEVUKCk7YnJlYWs7Y2FzZSA1Njp0aGlzLm1MVCgpO2JyZWFrO2Nhc2UgNTc6dGhpcy5tTU9EKCk7YnJlYWs7Y2FzZSA1ODp0aGlzLm1NT0RVTEUoKTticmVhaztjYXNlIDU5OnRoaXMubU5BTUVTUEFDRSgpO2JyZWFrO2Nhc2UgNjA6dGhpcy5tTkUoKTticmVhaztjYXNlIDYxOnRoaXMubU5PX0lOSEVSSVQoKTticmVhaztjYXNlIDYyOnRoaXMubU5PX1BSRVNFUlZFKCk7YnJlYWs7Y2FzZSA2Mzp0aGlzLm1OT0RFKCk7YnJlYWs7Y2FzZSA2NDp0aGlzLm1PRigpO2JyZWFrO2Nhc2UgNjU6dGhpcy5tT1BUSU9OKCk7YnJlYWs7Y2FzZSA2Njp0aGlzLm1PUigpO2JyZWFrO2Nhc2UgNjc6dGhpcy5tT1JERVIoKTticmVhaztjYXNlIDY4OnRoaXMubU9SREVSRUQoKTticmVhaztjYXNlIDY5OnRoaXMubU9SREVSSU5HKCk7YnJlYWs7Y2FzZSA3MDp0aGlzLm1QQVJFTlQoKTticmVhaztjYXNlIDcxOnRoaXMubVBSRUNFRElORygpO2JyZWFrO2Nhc2UgNzI6dGhpcy5tUFJFQ0VESU5HX1NJQkxJTkcoKTticmVhaztjYXNlIDczOnRoaXMubVBSRVNFUlZFKCk7YnJlYWs7Y2FzZSA3NDp0aGlzLm1QUk9DRVNTSU5HX0lOU1RSVUNUSU9OKCk7YnJlYWs7Y2FzZSA3NTp0aGlzLm1SRVRVUk4oKTticmVhaztjYXNlIDc2OnRoaXMubVNBVElTRklFUygpO2JyZWFrO2Nhc2UgNzc6dGhpcy5tU0NIRU1BKCk7YnJlYWs7Y2FzZSA3ODp0aGlzLm1TQ0hFTUFfQVRUUklCVVRFKCk7YnJlYWs7Y2FzZSA3OTp0aGlzLm1TQ0hFTUFfRUxFTUVOVCgpO2JyZWFrO2Nhc2UgODA6dGhpcy5tU0VMRigpO2JyZWFrO2Nhc2UgODE6dGhpcy5tU09NRSgpO2JyZWFrO2Nhc2UgODI6dGhpcy5tU1RBQkxFKCk7YnJlYWs7Y2FzZSA4Mzp0aGlzLm1TVFJJQ1QoKTticmVhaztjYXNlIDg0OnRoaXMubVNUUklQKCk7YnJlYWs7Y2FzZSA4NTp0aGlzLm1URVhUKCk7YnJlYWs7Y2FzZSA4Njp0aGlzLm1USEVOKCk7YnJlYWs7Y2FzZSA4Nzp0aGlzLm1UTygpO2JyZWFrO2Nhc2UgODg6dGhpcy5tVFJFQVQoKTticmVhaztjYXNlIDg5OnRoaXMubVRZUEVTV0lUQ0goKTticmVhaztjYXNlIDkwOnRoaXMubVVOSU9OKCk7YnJlYWs7Y2FzZSA5MTp0aGlzLm1VTk9SREVSRUQoKTticmVhaztjYXNlIDkyOnRoaXMubVZBTElEQVRFKCk7YnJlYWs7Y2FzZSA5Mzp0aGlzLm1WQVJJQUJMRSgpO2JyZWFrO2Nhc2UgOTQ6dGhpcy5tVkVSU0lPTigpO2JyZWFrO2Nhc2UgOTU6dGhpcy5tV0hFUkUoKTticmVhaztjYXNlIDk2OnRoaXMubVhRVUVSWSgpO2JyZWFrO2Nhc2UgOTc6dGhpcy5tQUxMT1dJTkcoKTticmVhaztjYXNlIDk4OnRoaXMubUNBVENIKCk7YnJlYWs7Y2FzZSA5OTp0aGlzLm1DT05URVhUKCk7YnJlYWs7Y2FzZSAxMDA6dGhpcy5tQ09VTlQoKTticmVhaztjYXNlIDEwMTp0aGlzLm1ERUNJTUFMX0ZPUk1BVCgpO2JyZWFrO2Nhc2UgMTAyOnRoaXMubURFQ0lNQUxfU0VQQVJBVE9SKCk7YnJlYWs7Y2FzZSAxMDM6dGhpcy5tRElHSVQoKTticmVhaztjYXNlIDEwNDp0aGlzLm1FTkQoKTticmVhaztjYXNlIDEwNTp0aGlzLm1HUk9VUCgpO2JyZWFrO2Nhc2UgMTA2OnRoaXMubUdST1VQSU5HX1NFUEFSQVRPUigpO2JyZWFrO2Nhc2UgMTA3OnRoaXMubUlORklOSVRZKCk7YnJlYWs7Y2FzZSAxMDg6dGhpcy5tTUlOVVNfU0lHTigpO2JyZWFrO2Nhc2UgMTA5OnRoaXMubU5BTUVTUEFDRV9OT0RFKCk7YnJlYWs7Y2FzZSAxMTA6dGhpcy5tTkFOKCk7YnJlYWs7Y2FzZSAxMTE6dGhpcy5tTkVYVCgpO2JyZWFrO2Nhc2UgMTEyOnRoaXMubU9OTFkoKTticmVhaztjYXNlIDExMzp0aGlzLm1QQVRURVJOX1NFUEFSQVRPUigpO2JyZWFrO2Nhc2UgMTE0OnRoaXMubVBFUkNFTlQoKTticmVhaztjYXNlIDExNTp0aGlzLm1QRVJfTUlMTEUoKTticmVhaztjYXNlIDExNjp0aGlzLm1QUkVWSU9VUygpO2JyZWFrO2Nhc2UgMTE3OnRoaXMubVNMSURJTkcoKTticmVhaztjYXNlIDExODp0aGlzLm1TVEFSVCgpO2JyZWFrO2Nhc2UgMTE5OnRoaXMubVNXSVRDSCgpO2JyZWFrO2Nhc2UgMTIwOnRoaXMubVRSWSgpO2JyZWFrO2Nhc2UgMTIxOnRoaXMubVRVTUJMSU5HKCk7YnJlYWs7Y2FzZSAxMjI6dGhpcy5tVFlQRSgpO2JyZWFrO2Nhc2UgMTIzOnRoaXMubVdIRU4oKTticmVhaztjYXNlIDEyNDp0aGlzLm1XSU5ET1coKTticmVhaztjYXNlIDEyNTp0aGlzLm1aRVJPX0RJR0lUKCk7YnJlYWs7Y2FzZSAxMjY6dGhpcy5tQUZURVIoKTticmVhaztjYXNlIDEyNzp0aGlzLm1CRUZPUkUoKTticmVhaztjYXNlIDEyODp0aGlzLm1DT1BZKCk7YnJlYWs7Y2FzZSAxMjk6dGhpcy5tREVMRVRFKCk7YnJlYWs7Y2FzZSAxMzA6dGhpcy5tRklSU1QoKTticmVhaztjYXNlIDEzMTp0aGlzLm1JTlNFUlQoKTticmVhaztjYXNlIDEzMjp0aGlzLm1JTlRPKCk7YnJlYWs7Y2FzZSAxMzM6dGhpcy5tTEFTVCgpO2JyZWFrO2Nhc2UgMTM0OnRoaXMubU1PRElGWSgpO2JyZWFrO2Nhc2UgMTM1OnRoaXMubU5PREVTKCk7YnJlYWs7Y2FzZSAxMzY6dGhpcy5tUkVOQU1FKCk7YnJlYWs7Y2FzZSAxMzc6dGhpcy5tUkVQTEFDRSgpO2JyZWFrO2Nhc2UgMTM4OnRoaXMubVJFVkFMSURBVElPTigpO2JyZWFrO2Nhc2UgMTM5OnRoaXMubVNLSVAoKTticmVhaztjYXNlIDE0MDp0aGlzLm1VUERBVElORygpO2JyZWFrO2Nhc2UgMTQxOnRoaXMubVZBTFVFKCk7YnJlYWs7Y2FzZSAxNDI6dGhpcy5tV0lUSCgpO2JyZWFrO2Nhc2UgMTQzOnRoaXMubUFMTCgpO2JyZWFrO2Nhc2UgMTQ0OnRoaXMubUFOWSgpO2JyZWFrO2Nhc2UgMTQ1OnRoaXMubUNPTlRBSU5TKCk7YnJlYWs7Y2FzZSAxNDY6dGhpcy5tQ09OVEVOVCgpO2JyZWFrO2Nhc2UgMTQ3OnRoaXMubURJQUNSSVRJQ1MoKTticmVhaztjYXNlIDE0ODp0aGlzLm1ESUZGRVJFTlQoKTticmVhaztjYXNlIDE0OTp0aGlzLm1ESVNUQU5DRSgpO2JyZWFrO2Nhc2UgMTUwOnRoaXMubUVOVElSRSgpO2JyZWFrO2Nhc2UgMTUxOnRoaXMubUVYQUNUTFkoKTticmVhaztjYXNlIDE1Mjp0aGlzLm1GUk9NKCk7YnJlYWs7Y2FzZSAxNTM6dGhpcy5tRlRfT1BUSU9OKCk7YnJlYWs7Y2FzZSAxNTQ6dGhpcy5tRlRBTkQoKTticmVhaztjYXNlIDE1NTp0aGlzLm1GVE5PVCgpO2JyZWFrO2Nhc2UgMTU2OnRoaXMubUZUT1IoKTticmVhaztjYXNlIDE1Nzp0aGlzLm1JTlNFTlNJVElWRSgpO2JyZWFrO2Nhc2UgMTU4OnRoaXMubUxBTkdVQUdFKCk7YnJlYWs7Y2FzZSAxNTk6dGhpcy5tTEVWRUxTKCk7YnJlYWs7Y2FzZSAxNjA6dGhpcy5tTE9XRVJDQVNFKCk7YnJlYWs7Y2FzZSAxNjE6dGhpcy5tTU9TVCgpO2JyZWFrO2Nhc2UgMTYyOnRoaXMubU5PKCk7YnJlYWs7Y2FzZSAxNjM6dGhpcy5tTk9UKCk7YnJlYWs7Y2FzZSAxNjQ6dGhpcy5tT0NDVVJTKCk7YnJlYWs7Y2FzZSAxNjU6dGhpcy5tUEFSQUdSQVBIKCk7YnJlYWs7Y2FzZSAxNjY6dGhpcy5tUEFSQUdSQVBIUygpO2JyZWFrO2Nhc2UgMTY3OnRoaXMubVBIUkFTRSgpO2JyZWFrO2Nhc2UgMTY4OnRoaXMubVJFTEFUSU9OU0hJUCgpO2JyZWFrO2Nhc2UgMTY5OnRoaXMubVNBTUUoKTticmVhaztjYXNlIDE3MDp0aGlzLm1TQ09SRSgpO2JyZWFrO2Nhc2UgMTcxOnRoaXMubVNFTlNJVElWRSgpO2JyZWFrO2Nhc2UgMTcyOnRoaXMubVNFTlRFTkNFKCk7YnJlYWs7Y2FzZSAxNzM6dGhpcy5tU0VOVEVOQ0VTKCk7YnJlYWs7Y2FzZSAxNzQ6dGhpcy5tU1RFTU1JTkcoKTticmVhaztjYXNlIDE3NTp0aGlzLm1TVE9QKCk7YnJlYWs7Y2FzZSAxNzY6dGhpcy5tVEhFU0FVUlVTKCk7YnJlYWs7Y2FzZSAxNzc6dGhpcy5tVElNRVMoKTticmVhaztjYXNlIDE3ODp0aGlzLm1VUFBFUkNBU0UoKTticmVhaztjYXNlIDE3OTp0aGlzLm1VU0lORygpO2JyZWFrO2Nhc2UgMTgwOnRoaXMubVdFSUdIVCgpO2JyZWFrO2Nhc2UgMTgxOnRoaXMubVdJTERDQVJEUygpO2JyZWFrO2Nhc2UgMTgyOnRoaXMubVdJVEhPVVQoKTticmVhaztjYXNlIDE4Mzp0aGlzLm1XT1JEKCk7YnJlYWs7Y2FzZSAxODQ6dGhpcy5tV09SRFMoKTticmVhaztjYXNlIDE4NTp0aGlzLm1CUkVBSygpO2JyZWFrO2Nhc2UgMTg2OnRoaXMubUNPTlRJTlVFKCk7YnJlYWs7Y2FzZSAxODc6dGhpcy5tRVhJVCgpO2JyZWFrO2Nhc2UgMTg4OnRoaXMubUxPT1AoKTticmVhaztjYXNlIDE4OTp0aGlzLm1SRVRVUk5JTkcoKTticmVhaztjYXNlIDE5MDp0aGlzLm1XSElMRSgpO2JyZWFrO2Nhc2UgMTkxOnRoaXMubUNIRUNLKCk7YnJlYWs7Y2FzZSAxOTI6dGhpcy5tQ09MTEVDVElPTigpO2JyZWFrO2Nhc2UgMTkzOnRoaXMubUNPTlNUUkFJTlQoKTticmVhaztjYXNlIDE5NDp0aGlzLm1GT1JFQUNIKCk7YnJlYWs7Y2FzZSAxOTU6dGhpcy5tRk9SRUlHTigpO2JyZWFrO2Nhc2UgMTk2OnRoaXMubUlOREVYKCk7YnJlYWs7Y2FzZSAxOTc6dGhpcy5tSU5URUdSSVRZKCk7YnJlYWs7Y2FzZSAxOTg6dGhpcy5tS0VZKCk7YnJlYWs7Y2FzZSAxOTk6dGhpcy5tT04oKTticmVhaztjYXNlIDIwMDp0aGlzLm1VTklRVUUoKTticmVhaztjYXNlIDIwMTp0aGlzLm1CSU5BUlkoKTticmVhaztjYXNlIDIwMjp0aGlzLm1BTVBfRVIoKTticmVhaztjYXNlIDIwMzp0aGlzLm1BUE9TX0VSKCk7YnJlYWs7Y2FzZSAyMDQ6dGhpcy5tUVVPVF9FUigpO2JyZWFrO2Nhc2UgMjA1OnRoaXMubUNPTkNBVCgpO2JyZWFrO2Nhc2UgMjA2OnRoaXMubUxQQVJFTigpO2JyZWFrO2Nhc2UgMjA3OnRoaXMubVJQQVJFTigpO2JyZWFrO2Nhc2UgMjA4OnRoaXMubURPTExBUigpO2JyZWFrO2Nhc2UgMjA5OnRoaXMubUxCUkFDS0VUKCk7YnJlYWs7Y2FzZSAyMTA6dGhpcy5tUkJSQUNLRVQoKTticmVhaztjYXNlIDIxMTp0aGlzLm1MU1FVQVJFKCk7YnJlYWs7Y2FzZSAyMTI6dGhpcy5tUlNRVUFSRSgpO2JyZWFrO2Nhc2UgMjEzOnRoaXMubUVRVUFMKCk7YnJlYWs7Y2FzZSAyMTQ6dGhpcy5tQklORCgpO2JyZWFrO2Nhc2UgMjE1OnRoaXMubU5PVEVRVUFMKCk7YnJlYWs7Y2FzZSAyMTY6dGhpcy5tQU5OX1BFUkNFTlQoKTticmVhaztjYXNlIDIxNzp0aGlzLm1IQVNIKCk7YnJlYWs7Y2FzZSAyMTg6dGhpcy5tQU1QKCk7YnJlYWs7Y2FzZSAyMTk6dGhpcy5tQ09NTUEoKTticmVhaztjYXNlIDIyMDp0aGlzLm1RVUVTVElPTigpO2JyZWFrO2Nhc2UgMjIxOnRoaXMubVNUQVIoKTticmVhaztjYXNlIDIyMjp0aGlzLm1QTFVTKCk7YnJlYWs7Y2FzZSAyMjM6dGhpcy5tTUlOVVMoKTticmVhaztjYXNlIDIyNDp0aGlzLm1TTUFMTEVSKCk7YnJlYWs7Y2FzZSAyMjU6dGhpcy5tR1JFQVRFUigpO2JyZWFrO2Nhc2UgMjI2OnRoaXMubVNNQUxMRVJFUSgpO2JyZWFrO2Nhc2UgMjI3OnRoaXMubUdSRUFURVJFUSgpO2JyZWFrO2Nhc2UgMjI4OnRoaXMubVNNQUxMRVJfU01BTExFUigpO2JyZWFrO2Nhc2UgMjI5OnRoaXMubUdSRUFURVJfR1JFQVRFUigpO2JyZWFrO2Nhc2UgMjMwOnRoaXMubVNMQVNIKCk7YnJlYWs7Y2FzZSAyMzE6dGhpcy5tU0xBU0hfU0xBU0goKTticmVhaztjYXNlIDIzMjp0aGlzLm1ET1QoKTticmVhaztjYXNlIDIzMzp0aGlzLm1ET1RfRE9UKCk7YnJlYWs7Y2FzZSAyMzQ6dGhpcy5tQ09MT04oKTticmVhaztjYXNlIDIzNTp0aGlzLm1DT0xPTl9DT0xPTigpO2JyZWFrO2Nhc2UgMjM2OnRoaXMubUVNUFRZX0NMT1NFX1RBRygpO2JyZWFrO2Nhc2UgMjM3OnRoaXMubUNMT1NFX1RBRygpO2JyZWFrO2Nhc2UgMjM4OnRoaXMubVNFTUlDT0xPTigpO2JyZWFrO2Nhc2UgMjM5OnRoaXMubVZCQVIoKTticmVhaztjYXNlIDI0MDp0aGlzLm1QUkFHTUFfU1RBUlQoKTticmVhaztjYXNlIDI0MTp0aGlzLm1QUkFHTUFfRU5EKCk7YnJlYWs7Y2FzZSAyNDI6dGhpcy5tWE1MX0NPTU1FTlRfU1RBUlQoKTticmVhaztjYXNlIDI0Mzp0aGlzLm1YTUxfQ09NTUVOVF9FTkQoKTticmVhaztjYXNlIDI0NDp0aGlzLm1QSV9TVEFSVCgpO2JyZWFrO2Nhc2UgMjQ1OnRoaXMubVBJX0VORCgpO2JyZWFrO2Nhc2UgMjQ2OnRoaXMubUFUVFJfU0lHTigpO2JyZWFrO2Nhc2UgMjQ3OnRoaXMubUNIQVJSRUZfREVDKCk7YnJlYWs7Y2FzZSAyNDg6dGhpcy5tQ0hBUlJFRl9IRVgoKTticmVhaztjYXNlIDI0OTp0aGlzLm1BUE9TKCk7YnJlYWs7Y2FzZSAyNTA6dGhpcy5tUVVPVCgpO2JyZWFrO2Nhc2UgMjUxOnRoaXMubUxfTkNOYW1lKCk7YnJlYWs7Y2FzZSAyNTI6dGhpcy5tUygpO2JyZWFrO2Nhc2UgMjUzOnRoaXMubUxfUHJhZ21hKCk7YnJlYWs7Y2FzZSAyNTQ6dGhpcy5tTF9EaXJDb21tZW50Q29uc3RydWN0b3IoKTticmVhaztjYXNlIDI1NTp0aGlzLm1MX0RpclBJQ29uc3RydWN0b3IoKTticmVhaztjYXNlIDI1Njp0aGlzLm1MX0ludGVnZXJMaXRlcmFsKCk7YnJlYWs7Y2FzZSAyNTc6dGhpcy5tTF9EZWNpbWFsTGl0ZXJhbCgpO2JyZWFrO2Nhc2UgMjU4OnRoaXMubUxfRG91YmxlTGl0ZXJhbCgpO2JyZWFrO2Nhc2UgMjU5OnRoaXMubUxfQ29tbWVudCgpO2JyZWFrO2Nhc2UgMjYwOnRoaXMubUxfQW55Q2hhcigpfX19LCEwKSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChzLHtERkExOV9lb3RTOiIB77+/GD8BwpEBwpQH77+/AcKeATcB77+/AcKiAcKkAe+/vwHCpwLvv78BwqsBwrEBwrQBwrcBwrkG77+/AcOAAe+/vwE/AcOIAcOKBD8B77+/Aj8Bw5FcZj8Bw64HPwHDvQE/AcSAAT8BxIIBPwHEiQHEigI/AcSSAcSTBD8BxJsBxJ8BxKABPwHEowHEpRA/AcWCEj8C77+/AcWcEO+/vwHFn1xm77+/AcWhCe+/vwHFowbvv78Bw4ABxaMB77+/AT8BxaYBxacBPwHvv78BPwHvv78BxasBPwHFrQM/Ae+/vxA/AcaECT8Bxo4BPwHvv78GPwHGlwc/Ae+/vwI/Ae+/vwE/Ae+/vwY/Au+/vwE/AcarAz8Bxq8BPwLvv78CPwHGtQQ/Ae+/vwI/Aca9Au+/vwI/Ae+/vwE/Ae+/vxw/Ae+/vwE/AcelEz8Bx7wBPwHHvgE/XGLvv78BxaMBPwLvv78DPwHvv78BPwHvv78ByIYFPwHIjAHIjgc/AciaBj8B77+/Bj8ByKcCPwHvv78FPwHIrwI/Ae+/vwI/Aci1Az8ByLkCPwHIvAU/AcmEAj8ByYcB77+/AcmIAj8B77+/Aj8ByY0CPwHvv78ByZACPwHJkwI/AcmXAe+/vwI/AcmaET8ByawCPwHJrwI/AcmyBD8BybgCPwHJuwHJvAHJvQI/Ae+/vwHKgVxyPwHKjwI/AcqTAj8BypcBPwHvv78BPwHvv78BypoBypsEPwHKoQHvv78DPwHKpQE/Ae+/vwE/Ae+/vwHKqAHKqQHKqlxiPwHvv78ByrQFPwHKugU/Ae+/vwHLgQI/AcuEAz8B77+/BD8By4wB77+/AT8By44By48B77+/AT8By5IB77+/Bz8B77+/AT8By5sC77+/AT8By50CPwHvv78CPwHvv78CPwHvv78CPwHLpgHvv78BPwHLqgHvv78RPwHvv78BPwHLvQHvv78CPwHvv78BPwHMgQE/AcyDAT8B77+/Aj8D77+/AT8BzIgBPwHvv78BPwHMiwHMjAQ/AcyRAT8BzJMCPwHMlgHvv78BzJcCPwHvv78CPwHMnAHvv78CPwPvv78EPwHvv78CPwHMpQHvv78BzKYBPwPvv78JPwHvv78EPwHMtgHvv78GPwHvv78BPwHMvgHvv78BzL8GPwHvv78BPwLvv78CPwHvv78BzYkCPwHNjAQ/Ae+/vwE/Ae+/vwHNkgE/Ac2UAc2VBD8B77+/Ac2aAj8B77+/Ac2dAc2eXGI/Ac2nAc2pAc2qBD8BzbAB77+/Aj8BzbMB77+/Ac20Ae+/vwI/Ac23AT8B77+/Aj8C77+/Ac27Az8B77+/AT8B77+/Aj8C77+/Ac6CAj8BzoUB77+/Ac6GBz8C77+/Az8BzpECPwHOlAHOlQM/Ac6ZAT8BzpsBPwHvv78EPwHOogI/Au+/vwE/Ac6mAT8BzqgBzqkEPwHvv78Bzq4BPwHvv78FPwHvv78BPwLvv78EPwHvv78BzroBPwLvv78GPwHPggE/Ae+/vwE/Au+/vwHPhQQ/Ae+/vwI/Au+/vwE/Ac+OAe+/vwM/Ae+/vwU/Ac+XAe+/vwHPmAE/Au+/vwE/Ac+cAj8Bz58Bz6ABPwHPogI/Ae+/vwI/Au+/vwHPpwHPqAE/Ae+/vwE/Ae+/vwQ/Ac+wAc+yAe+/vwE/Ac+0Ac+1Ae+/vwE/Au+/vwHPtwE/Ac+5AT8B77+/Ac+7Az8Bz78B0IAFPwHvv78B0IYDPwHQigHQiwE/Ae+/vwI/Ae+/vwY/AdCWAdCXAe+/vwI/AdCaAT8B0JwBPwHQngHQnwLvv78DPwHvv78B0KMB0KQC77+/AT8B77+/AdCmAz8C77+/Bj8B0LAB77+/AT8B77+/AT8C77+/AdC0Ae+/vwHQtQHvv78BPwHvv78BPwHQuAHQuQLvv78B0LoBPwHQvQI/Ae+/vwHRgQE/AdGEAu+/vwE/AdGGAdGHAj8B0YoCPwHRjQHRjgLvv78B0Y8BPwHvv78B0ZEB77+/AdGSAu+/vwHRkwI/Au+/vwE/Ae+/vwHRlwE/AdGZAz8B0Z4B0Z8B0aAB77+/Az8C77+/Aj8D77+/AdGmAT8B77+/AdGoAT8B0aoB77+/Aj8B77+/AT8C77+/Aj8B77+/Aj8D77+/AdGyA++/vwHRswI/Ae+/vwE/Ae+/vwQ/A++/vwQ/AdG/Ae+/vwE/Ae+/vwHSgQHvv78HPwLvv78CPwHSi1xiPwHvv78BPwHvv78DPwHSmAHSmQQ/Ae+/vwQ/AdKiBz8C77+/Az8B0q0BPwHSrwI/Ae+/vwHSsgI/AdK1BD8B0roBPwHvv78B0rwB77+/Aj8B77+/Aj8B77+/BD8B77+/AdOFAe+/vwc/AdONAe+/vwHTjgE/AdOQAT8B05IB05MBPwLvv78B05UB77+/AdOWAu+/vwE/Au+/vwM/AdObAe+/vyIsREZBMTlfZW9mUzoi05zvv78iLERGQTE5X21pblM6IgFcMAFmAmEBZQFsAWkBZQFkAWEBaQFhAWMBYQFlAWEBZQFuAWEBZQFxAWECZQF1AXwBIwfvv78BOgE9Ae+/vwEpASMB77+/AT4C77+/AS0BIQE9AS8BLgbvv78BLgHvv78BYwItAWwBdAFwAW8B77+/AXMBdQEtAWYBZQFuAXMBZQFsAWMBYQFjAWUBcAFjAS0BZQFhAWwBbgFyAW8CLQFlAS0BaQEtAXACLQFlAW4CLQFvAWQBbgFtAy0BdAItAWMBcgFlAnIBbAFtAWgBbAFtAWEDaQF4AWUBLQFlAXACbQFpAWQBaQFsAXIBZQFsAWkBcgF1AU4BcgF5AW8C77+/AQkQ77+/AXgL77+/AS0BCQnvv78BMAbvv78BLgEwAe+/vwFlAi0BZQHvv78BcgHvv78BLQFlAS0BcwFlAW4B77+/AW8CYQFlAWMBbAFjAWwBbQFzAXkBbgFpAWEBYwFlAS0BaQFjAWYBdAF1AW0BZQF0AW8BLQFpAe+/vwFyAmUBYwF0AWwBLQFjAXMBbQFvAW4BbwFyAe+/vwFhAXUB77+/AXYB77+/AW8DZQFpAWUC77+/AW0BLQF0AWcBcwEtAWUC77+/AWUBcAEtAXQBdQFlAXQB77+/AWkBZQEtAu+/vwFpAWUB77+/AXkB77+/AXUBYQF0AmMBLQFhAXUBYQFsAmEBaQJlAXIBZgFzAWUBYgFpAW0BcAFkAXQBcAF0AW4B77+/AWEBLQFlAWIBZQFvAXIBYQFlAW4CaQFzAW4BbAFkAWgBZAFnAWQBZQEtAW8BLQF0BO+/vwEtA++/vwEwAXMC77+/AW4BaQF3Ae+/vwFyAe+/vwItAWQBcgFrAXICLQFoAWQBawFhAWUBdAFhAS0BdAFhAW0BdQFlAXQB77+/AXQBcgFlAWEBbQFlAS0BeQFkAe+/vwFyAXkBcAFyAXQBLQFvAWEB77+/AnQBLQFwAWQBdAEtAXQBcAEtAnIBYQFuAWcBLQFuAXgBLQHvv78BLQF1AXQB77+/AWwBcgEtAWwBZgHvv78BLQJzAS0BbgFyAS0B77+/AW8BcgEtAXIBbgFnA2UBaQJlAW0BcwFyAW0BYQFsAXQBcwEtAW0BZQEtAWkBZQEtAWwBdAFjAW0BLQFpAWMDLQFhAXQB77+/AS0BbAFzAW4BdQFkAXQBcgFnAWQBZQFhAWkBZQEtAWUBbwEtAWMBaAEtAXIB77+/AS0B77+/AS0BXDABdAFkAWIBaQEtAe+/vwF1AWEBZQEtAXkB77+/AWIB77+/Ay0BdAFjAW4BcgFuAWkCbgHvv78BLQFyAWEBbAFuAWUBLQFpAXIBbgFlAW4B77+/AS0BaQFlAS0BdAFuAWwB77+/AXcBYwFnAWkBLQHvv78BdAItAe+/vwFlAS0B77+/AXQBaQFuAXQCcwFyAe+/vwFpAS0C77+/AWEBLQFzAWMB77+/AWUBeQHvv78BLQFwAe+/vwFoAWUBLQHvv78BbgEtAe+/vwFzAXQCcgFkAXIBbwFzAW4BaQFlAW4BZQFjAmkBZgHvv78BYQEtAe+/vwF0AW4B77+/AWUBLQF0AS0BaQHvv78BbgFoA++/vwF1AS0BdwHvv78BaQItAmUBaQFjAS0BYQEtAWIBbwEtAe+/vwEtAXcBdQHvv78BYQF0AS0B77+/AXkBZAPvv78BbwFpAXUBbgHvv78CcgEtAe+/vwEtAWwD77+/AWkCdAFhAnQBbgF1AWEB77+/AWUBbAF0AWQBLQHvv78BdAFlAWMBbgF0AXMB77+/AW4BLQHvv78BLQFhAXkBaQFoAW4BbwHvv78BaQLvv78BcwFuAe+/vwEtAXQBYwEtAWkBZQFpAXQB77+/AWcB77+/AS0BYQItAXMBYQFlAXMB77+/AS0BZAFuAe+/vwItAWEBbgFpAXYBdQFzAXQBbAMtAWUBZAFvAWkBLQHvv78BaQFjAS0B77+/AS0B77+/AW4BZwEtAXIB77+/AWkBbgLvv78BLQFyAW4BYQHvv78BdAHvv78BbAFuAu+/vwEtAXQBcgEtAe+/vwEtAWkBcgFuAXQBZwFpAXkC77+/AWUBbwFpAS0BYwFpAi0BcwFlAW0DLQFhAe+/vwFpAW4BZQF0AS0BZQFnAu+/vwFsAS0BbgItAW4BbwF0AWcB77+/AS0BZQHvv78BdAFjAXQBeQFlAe+/vwFzAu+/vwFpAWMBcgFlAe+/vwEtAWcC77+/AXABLQFuAWUBcwFpAS0BbAHvv78BbgLvv78BLQFhAW4BZQFhAe+/vwF2AWUC77+/AWcBLQHvv78BdQF0AWcB77+/AWUBZwFzAmUBLQHvv78BLQFkAu+/vwFnAS0BZwFlBC0BbgFvAe+/vwF0AW4C77+/Ai0BZQHvv78BZgHvv78CbgFjAXQCLQHvv78BcQItAe+/vwFnAu+/vwEtAW4CLQHvv78BLQFpAXQBeQItAWUBZwFlAWkBcgHvv78BLQFoAXMBZwItAW4B77+/AWUBZwHvv78BdAJzAXQBbAFlAi0B77+/AXMBYwEtAWQBLQFlAi0C77+/AXMBaQFvAe+/vwItAu+/vwFzAe+/vwEtAW4BaQF0Au+/vwFzAW8BZQF0AWcBcwEtAe+/vwFuAe+/vwF1Au+/vwEtAe+/vwEtAe+/vwFzAe+/vwF2Ai0C77+/AS0BbgEtAXQBdgHvv78BLQFlAS0C77+/AWcCLQFpAWgBLQF0AWUCLQLvv78BLQFoAe+/vwEtAe+/vwEtAu+/vwEtAXQBcgLvv78BcAHvv78BLQFvAS0BcAFyAXADLQHvv78BbwFlAXMC77+/AmUD77+/AS0BbgHvv78BLQFlAS0B77+/AXABcwHvv78BLQLvv78BbwFpAe+/vwFyAW0D77+/AS0D77+/Ai0BYQHvv78BbgHvv78BYQFtAWEBbwPvv78BZAFuAWkBcAEtAe+/vwFvAe+/vwEtAe+/vwFhAmkBbgFwAWkBZQLvv78BcwFjAS0BYwFhAnIBZQFjAWIBYQHvv78BZAHvv78BcgFiAW4CLQFiAW4CZQHvv78BZQF0AWECLQFlAWwBcgFlAWEBbAFzAu+/vwF1AXQBbAEtAXMBLQF0AXMB77+/AS0BaQFhAS0BdAFpAnQBLQFmAe+/vwEtAe+/vwFvAWUB77+/AW4BdAHvv78BbwFuAXIBZQHvv78BLQHvv78BcgFsAWcBbwFyAWcBdQEtAe+/vwEtAWYBLQFyAi0BYwLvv78BLQHvv78BLQLvv78BdALvv78BaQFvAW4BLQHvv78iLERGQTE5X21heFM6IgHvv78BdAF5Am8BeAF1A3QCbwJyAWUBdwF5AXMBZQFvAXEBYQJlAXUBfAE6B++/vwI9Ae+/vwEpASMB77+/AT4C77+/AS0BPwI+ATkG77+/AWUB77+/AXkCegFsAXQBcAFvAe+/vwFzAXUBegFmAWUBbgF0AWkBdQFzAXYBYwFzAXABdAF6AWUBdAFyAW4BcgJvAXoBbwF6AWkBegFwAnoBZQF4AnoBdwFzAW4BbQN6AXQCegFjAXQBbwJyAXYBdAFvAW4BbQFyA2kBeAFlAXoBeQFwAm0BbwFwAWkCcgFpAXQBaQFyAXUBTgFyAXkBbwLvv78BehDvv78BeAvvv78BLQF6Ce+/vwFlBu+/vwJlAe+/vwFlAnoBZQHvv78BcgHvv78BegFlAXoBcwFlAW4B77+/AW8CYQF0AWMBbAFjAWwBbQF0AXkBbgFsAWEBYwFlAXoBaQFjAWYBdAF1AW0BZQF0AW8BegFpAe+/vwFyAmUBYwF0AWwBegFjAXMBbQFvAW4BbwFyAe+/vwFhAXUB77+/AXYB77+/AW8BZQF0AW8BaQFlAu+/vwFtAXoBdAFnAXMBegFlAu+/vwFlAXABegF0AXUBZQF0Ae+/vwFwAWUBegLvv78BaQFlAe+/vwF5Ae+/vwF1AWUBdAF2AmMBYQF1AWEBbAJhAWkCZQFyAWYBdAFlAXIBaQFtAXABZAF0AXABdAFzAe+/vwFhAXoBZQFiAWUBcQFyAWEBZQFuAXUBaQFzAXIBbAFkAWgBZAFnAWQBZQF6AW8BegF0BO+/vwEtA++/vwFlAXMC77+/AW4BaQF3Ae+/vwFyAe+/vwF6AS0BZAFyAWsBcgJ6AWgBZAFrAmUBdAFpAXoBdAFhAW0BdQFlAXQB77+/AXQBcgFlAWEBbQFlAXoBeQFkAe+/vwFyAXkBcAFyAXQBegFvAWkB77+/AnQBegFwAWQBdAF6AXQBcAF6AnIBYQJyAXoBbgF4AXoB77+/AXoBdQF0Ae+/vwFsAXIBegFsAWYB77+/AXoCcwF6AW4BcgF6Ae+/vwFvAXIBegFyAW4BZwNlAWkCZQFtAXMBcgFtAWEBbAF0AXMBegFtAWUBegFpAWUBegFsAXQBcAFtAXoBaQFjA3oBYQF0Ae+/vwF6AWwBcwFuAXUBZAF0AXIBZwFkAWUBYQFpAWUBegFlAW8BegFjAWgBegFyAe+/vwEtAe+/vwF6Ae+/vwF0AWQBYgFpAXoB77+/AXUBYQFlAXoBeQHvv78BYgHvv78DegF0AWMBbgFyAXgBaQJuAe+/vwF6AXIBYQFsAW4BZQF6AWkBcgFuAWUBbgHvv78BegFpAWUBegF0AW4BbAHvv78BdwFjAWcBaQF6Ae+/vwF0AnoB77+/AWUBegHvv78BdAFpAW4BdAJzAXIB77+/AWkBegLvv78BYQF6AXMBYwHvv78BZQF5Ae+/vwEtAXAB77+/AWgBZQF6Ae+/vwFuAXoB77+/AXMBdAJyAWQBcgFvAXMBbgFpAWUBbgFlAWMCaQFmAe+/vwFhAXoB77+/AXQBbgHvv78BZQF6AXQBegFpAe+/vwFuAWgD77+/AXUBegF3Ae+/vwFpAnoCZQFpAWMBegFhAXoBYgFvAXoB77+/AXoBdwF1Ae+/vwFhAXQBegHvv78BeQFkA++/vwFvAWkBdQFuAe+/vwJyAXoB77+/AXoBbAPvv78BaQJ0AXUCdAFuAXUBYQHvv78BZQFsAXQBZAF6Ae+/vwF0AWUBYwFuAXQBcwHvv78BbgF6Ae+/vwF6AWEBeQFpAWgBbgFvAe+/vwFpAu+/vwFzAW4B77+/AXoBdAFjAXoBaQFlAWkBdAHvv78BZwHvv78BegFhAnoBcwFhAWUBcwHvv78BegFkAW4B77+/AnoBYQFuAWkBdgF1AXMBdAFsA3oBZQFkAW8BaQF6Ae+/vwFpAWMBegHvv78BegHvv78BbgFnAXoBcgHvv78BaQFuAu+/vwF6AXIBbgFhAe+/vwF0Ae+/vwFsAW4C77+/AXoBdAFyAXoB77+/AXoBaQFyAW4BdAFnAWkBeQLvv78BZQFvAWkBegFjAWkCegFzAWUBbQF6AS0BegFpAe+/vwFpAW4BZQF0AXoBZQFnAu+/vwFsAXoBbgJ6AW4BbwF0AWcB77+/AXoBZQHvv78BdAFjAXQBeQFlAe+/vwFzAu+/vwFpAWMBcgFlAe+/vwF6AWcC77+/AXABLQFuAWUBcwFpAXoBbAHvv78BbgLvv78BegFhAW4CZQHvv78BdgFlAu+/vwFnAXoB77+/AXUBdAFnAe+/vwFlAWcBcwJlAXoB77+/AXoBZALvv78BZwF6AWcBZQJ6AS0BegFuAW8B77+/AXQBbgLvv78CegFlAe+/vwFzAe+/vwJuAWMBdAJ6Ae+/vwFxAnoB77+/AWcC77+/AXoBbgF6AS0B77+/AXoBaQF0AXkCegFlAWcBZQFpAXIB77+/AXoBaAFzAWcCegFuAe+/vwFlAWcB77+/AXQCcwF0AWwBZQJ6Ae+/vwFzAWMBegFkAXoBZQJ6Au+/vwFzAWkBbwHvv78CegLvv78BcwHvv78BegFuAWkBdALvv78BcwFvAWUBdAFnAXMBegHvv78BbgHvv78BdQLvv78BegHvv78BegHvv78BcwHvv78BdgJ6Au+/vwF6AW4BegF0AXYB77+/AXoBZQF6Au+/vwFnAnoBaQFoAXoBdAFlAnoC77+/AXoBaAHvv78BegHvv78BegLvv78BegF0AXIC77+/AXAB77+/AXoBbwF6AXABcgFwA3oB77+/AW8BZQFzAu+/vwJlA++/vwF6AW4B77+/AXoBZQF6Ae+/vwFwAXMB77+/AS0C77+/AW8BaQHvv78BcgFtA++/vwF6A++/vwF6AS0BYQHvv78BbgHvv78BYQFtAWEBbwPvv78BZAFuAWkBcAF6Ae+/vwFvAe+/vwF6Ae+/vwFhAmkBbgFwAWkBZQLvv78BcwFjAXoBYwFhAnIBZQFjAWIBYQHvv78BZAHvv78BcgFiAW4CegFiAW4CZQHvv78BZQF0AWEBLQF6AWUBbAFyAWUBYQFsAXMC77+/AXUBdAFsAXoBcwF6AXQBcwHvv78BegFpAWEBegF0AWkCdAF6AWYB77+/AXoB77+/AW8BZQHvv78BbgF0Ae+/vwFvAW4BcgFlAe+/vwF6Ae+/vwFyAWwBZwFvAXIBZwF1AXoB77+/AXoBZgF6AXICegFjAu+/vwF6Ae+/vwF6Au+/vwF0Au+/vwFpAW8BbgF6Ae+/vyIsREZBMTlfYWNjZXB0UzoiG++/vwHDjwHDkAHDkQHDkgHDkwHDlAHDlQLvv78Bw5gC77+/AcObAe+/vwHDnQHDngXvv78Bw64Bw7YBw7kBw7oBw7sBw7wB77+/AcSEB++/vwHDu1Dvv78Bw40Bw68B77+/AcSDAcOOAcOPAcOQAcORAcOSAcOTAcOUAcOVAcOWAcOrAcOqAcOXAcOYAcOxAcOZAe+/vwHDmgHDmwHDtQHDnAHDnQHDngHDswHDnwHDogHDpAHDrQLvv78Bw6ABw6MBw6UBw6EBw6cBw6wBw6YBw6kBw6gB77+/AcOuAcO2AcO5AcO6AcO8AcSAAu+/vwHEggTvv78BBAHvv78BBgbvv78BXG4c77+/ASAO77+/ASgC77+/ASoB77+/ASwG77+/AS4BMgfvv78BNQE4B++/vwE8A++/vwHCogFAAu+/vwFCAe+/vwHDhxzvv78BVxnvv78Bw7ABw70Bw7gBw7cB77+/AcO0AcO/AcSBAu+/vwEDAcKQA++/vwHCjwHvv78Bw4oW77+/ARgJ77+/AWhcYu+/vwEmE++/vwE0A++/vwE3Be+/vwE5B++/vwHCoyfvv78BeBbvv78BbgHvv78Bw4YH77+/AcOLBe+/vwELAe+/vwFcZgvvv78BwoBcZu+/vwEcB++/vwHCuwXvv78BwpgD77+/AcKcAu+/vwErB++/vwHChALvv78BMwHChQTvv78BwrwC77+/AcKhAu+/vwFvA++/vwE/Au+/vwFwEe+/vwHCqQLvv78BUALvv78BUQXvv78Bwq8C77+/AcKLAVUBVgPvv78Belxy77+/AXsD77+/AcKOA++/vwHCtwLvv78Bw4wBw7IBw74E77+/AX4D77+/AcK5Au+/vwFiAQ4Bwr8J77+/AWQF77+/AWcG77+/AR0C77+/ASEH77+/AcKCAe+/vwHCmgHCmwLvv78BaVxi77+/AcOEAe+/vwE2XGLvv78BwocD77+/AUMS77+/AcKqA++/vwF2Ae+/vwFUBO+/vwFYAu+/vwHCsQFaBO+/vwHCswHvv78Bwo0C77+/AV8Bwr4E77+/AcK4XGLvv78BfwHDiQ/vv78BwoEH77+/AcKWAVwiCe+/vwEtAu+/vwHCgwXvv78Bwp8B77+/AToBwoYE77+/AUEC77+/AcKkAUZcYu+/vwHCpwHvv78BSwHCiAXvv78BTQLvv78BUgFTAu+/vwF3A++/vwHDiAbvv78BfALvv78BwrQBYFxu77+/ARAC77+/AWMBwpID77+/ARMB77+/ARQG77+/ARsD77+/AcKXAe+/vwHDggHDgwTvv78BLwvvv78BRAfvv78BcgLvv78BwolcYu+/vwF1XGLvv78BXgHCtgPvv78BAQLvv78BYQFcYgHvv78BXHIE77+/AcKRAcK6B++/vwHClQHvv78BGQHvv78BHwEjAe+/vwEnAe+/vwEpAe+/vwEwA++/vwFrAcKeBe+/vwFFA++/vwFJAXRcbu+/vwHCrAHCrgLvv78BeQHvv78BwowB77+/AVxcAV0D77+/AQUBBwHvv78BDwnvv78BwpQD77+/ASQBwpkC77+/ATEBw4UBwqAC77+/ATsD77+/AcKlAu+/vwFHAe+/vwFzAcK9Au+/vwFMAu+/vwHCqwHCrQHCsAHvv78BWwHCsgHCtQPvv78Bw4AB77+/AcOBBO+/vwEVARcBwpMF77+/AWwB77+/AT0B77+/AcKmB++/vwFZAX0L77+/AcKdAe+/vwE+Ce+/vwERXGbvv78BwooBwqhcYu+/vwEaXG7vv78BCQHvv78BZQLvv78BHgLvv78BbQTvv78BTwHvv78BElxi77+/AQIH77+/AU4BZgHvv78BJQHvv78BcQFIAe+/vwEWAWoE77+/AUoiLERGQTE5X3NwZWNpYWxTOiIBXDAZ77+/AQHHpe+/vwECy5vvv799PiIsREZBMTlfdHJhbnNpdGlvblM6WyIJNwI1AjcBNRI3ATUBIwEzASUBHAEkASYBMgEaARsBKQEqAScBKwEvAS5cbjYBXCIBMAEsASEBLQEoATFccjQBFVxmNAEfATcBIAE3ATQBNwEBAQIBAwEEAQUBBgEHATQBXGIBNAEXAQkBXG4BCwFcZgFccgEYAQ4BDwEQAREBEgETARQBNAEWAR0BGQEe776CNyIsIgE8Be+/vwE7AT0BOAHvv78BPgLvv78BOQE6IiwiAUAD77+/AUMD77+/AUUF77+/AUEC77+/AUQG77+/AUIiLCIBRgbvv78BRwbvv78BSCIsIgFJA++/vwFKBe+/vwFLIiwiAUwBTQFOAu+/vwFPBO+/vwFQAe+/vwFRIiwiAVQF77+/AVIC77+/AVUB77+/AVYBUyIsIgFXXGbvv78BWAHvv78BWSIsIgFaAe+/vwFbBu+/vwFcXAFdBO+/vwFeAV8iLCIBYAPvv78BYQnvv78BYwTvv78BYiIsIgFlBe+/vwFkIiwiAWYD77+/AWcJ77+/AWgiLCIBbQLvv78BaQfvv78BbAHvv78BagHvv78BayIsIgFuA++/vwFwAu+/vwFxCe+/vwFvIiwiAXIiLCIBcwHvv78BdAHvv78BdQXvv78BegF4Au+/vwF2BO+/vwF3Au+/vwF5IiwiAXsC77+/AXwBwoEF77+/AX0C77+/AX4C77+/AcKAA++/vwF/IiwiAcKCAe+/vwHCgwLvv78BwoQiLCIBwoUD77+/AcKGIiwiAcKJAu+/vwHChwHCiAXvv78BwooiLCIBwosiLCIBwowiLCIBwo0iLCIBwo4iLCIBwo8iLCIBwpAiLCIBwpIW77+/AcKTIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiAcKdAu+/vwHCnCIsIgHCnyIsIiIsIgHCoSIsIgHCoyIsIiIsIgHCpiIsIiIsIiIsIgHCqiIsIgHCr1xy77+/AcKuXGbvv78Bwq0BwqwB77+/AcKwIiwiAcKyAcKzIiwiAcK1Du+/vwHCtiIsIgHCuAHvv79cbsK6IiwiIiwiIiwiIiwiIiwiIiwiIiwiAcOCAe+/v1xuw4EL77+/AcODH++/vwHDgyIsIiIsIgHDhAHDhRTvv78Bw4YiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Aj8Bw4cXPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78TPwHDiQY/IiwiAcOLIiwiAcOMIiwiAcONIiwiAcOOIiwiIiwiAcOPIiwiAcOQIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcOSIiwiAcOTIiwiAcOUIiwiAcOVAcOWIiwiAcOYA++/vwHDlyIsIgHDmQHDmgHDmwHvv78Bw5wE77+/AcOdIiwiAcOeAu+/vwHDnwXvv78Bw6EG77+/AcOgIiwiAcOkBO+/vwHDpQHDowvvv78Bw6YC77+/AcOiIiwiAcOnIiwiAcOoXHLvv78Bw6kiLCIBw6oiLCIBw6sBw6wP77+/AcOtIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcOvIiwiAcOyAe+/vwHDsAXvv78Bw7Ncbu+/vwHDsSIsIgHDtAXvv78Bw7UiLCIBw7YiLCIBw7ciLCIBw7giLCIBw7kz77+/AcO6XGbvv78Bw7sBw7wiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBw74J77+/AcO/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcSBIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcSDIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vwM/AcSIAT8BxIcBPwHEhFxuPwHEhQHEhgY/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcSLIiwiAcSOBO+/vwHEjQTvv78BxIwiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/AcSPEj8BxJABPwHEkQQ/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcSVB++/vwHElCIsIgHElg7vv78BxJciLCIBxJgiLCIBxJkiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Fz8BxJoCPyIsIgHEnAE/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78DPwHEnQ8/AcSeBj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBxKEiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Az8BxKIWPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78LPwHEpA4/IiwiAcSmIiwiAcSnAe+/vwHEqCIsIgHEqQnvv78BxKoiLCIBxKsiLCIBxKwiLCIBxLEB77+/AcSuAe+/vwHErwPvv78BxK0B77+/AcSwIiwiAcSzBu+/vwHEsiIsIgHEtAbvv78BxLUiLCIBxLYB77+/AcS3IiwiAcS4IiwiAcS5A++/vwHEuwnvv78BxLwC77+/AcS6IiwiAcS9IiwiAcS+IiwiAcS/IiwiAcWAIiwiAcWBIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcWDE++/vwHFhCIsIgHFhSIsIgHFhiIsIgHFhyIsIgHFiAXvv78BxYkiLCIBxYoL77+/AcWLIiwiAcWMIiwiAcWNBe+/vwHFjiIsIgHFjyIsIgHFkAPvv78BxZEiLCIBxZQB77+/AcWSBe+/vwHFkyIsIgHFlSIsIgHFliIsIgHFlyIsIgHFmCIsIgHFmSIsIgHFmiIsIgHFmyIsIiIsIiIsIgLFnQLvv78BxZ0S77+/AcWdIO+/vxrFnQTvv78BxZ0B77+/GsWdIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiAcWeIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiAcWgIiwiAsWiAu+/vwHFohLvv78BxaIg77+/GsWiBO+/vwHFogHvv78axaIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJcbsK6C++/vwHDgx/vv78Bw4MiLCIiLCIiLCIiLCIiLCIiLCIiLCIBw4IB77+/XG7DgQvvv78Bw4Mf77+/AcODIiwiXG7FpAvvv78Bw4Mf77+/AcODIiwiIiwiAcWlIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcWoIiwiIiwiAcWpIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vw4/AcWqCz8iLCIBxawiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBxa4iLCIBxa8iLCIBxbAiLCIiLCIBxbEiLCIBxbIiLCIBxbMiLCIBxbQO77+/AcW1IiwiAcW2IiwiAcW3IiwiAcW4IiwiAcW5IiwiAcW6IiwiAcW7AcW8IiwiAcW9IiwiAcW+IiwiAcaAAu+/vwHFvyIsIgHGgSIsIgHGgiIsIgHGgyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHGhSIsIgHGhiIsIgHGhyIsIgHGiCIsIgHGiSIsIgHGiiIsIgHGiyIsIgHGjCIsIgHGjSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHGjyIsIiIsIgHGkCIsIgHGkSIsIgHGkiIsIgHGkyIsIgHGlCIsIgHGlSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78EPwHGlhU/IiwiAcaYIiwiAcaZIiwiAcaaIiwiAcabIiwiAcacIiwiAcadIiwiAcaeIiwiIiwiAcafIiwiAcagIiwiIiwiAcahIiwiIiwiAcaiIiwiAcajIiwiAcalDu+/vwHGpCIsIgHGpgnvv78BxqciLCIBxqgiLCIBxqkiLCIiLCIiLCIBxqoiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBxqwiLCIBxq0iLCIBxq4iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBxrAiLCIiLCIiLCIBxrEiLCIBxrIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/XGI/Aca0Cz8BxrMFPyIsIgHGtiIsIgHGtyIsIgHGuCIsIgHGuSIsIiIsIgHGugbvv78BxrsiLCIBxrwiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIiLCIBxr4iLCIBxr8iLCIiLCIBx4AiLCIiLCIBx4EiLCIBx4MD77+/AceCIiwiAceEIiwiAceFD++/vwHHhgLvv78Bx4ciLCIBx4giLCIBx4o177+/AceJIiwiAceLIiwiAceMIiwiAceNIiwiAceOIiwiAcePIiwiAceQIiwiAceRIiwiAceSIiwiAceTIiwiAceUIiwiAceVIiwiAceWAceXIiwiAceYIiwiAceZD++/vwHHmiIsIgHHmyIsIgHHnCIsIgHHnSIsIgHHniIsIgHHnyIsIgHHoCIsIgHHoSIsIgHHogTvv78Bx6MiLCIiLCIBx6QiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBx6YiLCIBx6ciLCIBx6giLCIBx6kB77+/AceqIiwiAcerIiwiAcesIiwiAcetIiwiAceuIiwiAcevC++/vwHHsCIsIgHHsSIsIgHHsiIsIgHHtAPvv78Bx7MiLCIBx7UiLCIBx7YiLCIBx7ciLCIBx7giLCIBx7kiLCIBx7oiLCIBx7siLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBx70iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBx78iLCIiLCIiLCIiLCIiLCIByIAiLCIiLCIiLCIiLCJcbsWkC++/vwHDgx/vv78Bw4MiLCIByIEiLCIiLCIiLCIByIIiLCIByIMiLCIByIQiLCIiLCIByIUiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByIciLCIByIgiLCIByIkiLCIByIoiLCIByIsiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/AciNGT8iLCIByI8iLCIByJAiLCIByJEiLCIByJID77+/AciTIiwiAciUIiwiAciVIiwiAciXA++/vwHIlgPvv78ByJgiLCIByJkBPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByJsiLCIByJwiLCIByJ0iLCIByJ4iLCIByJ8iLCIByKAiLCIiLCIByKEiLCIByKIiLCIByKMiLCIByKQiLCIByKUiLCIByKYiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByKgiLCIByKkiLCIiLCIByKoiLCIByKsiLCIByKwiLCIByK0iLCIByK4iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByLAiLCIByLEH77+/AciyIiwiIiwiAcizIiwiAci0IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAci2IiwiAci3IiwiAci4IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAci6IiwiAci7IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAci9IiwiAci+IiwiAci/IiwiAcmBA++/vwHJgCIsIgHJg1xu77+/AcmCIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcmFIiwiAcmGIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcmJIiwiAcmKIiwiIiwiAcmLIiwiAcmMIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcmOIiwiAcmPIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcmRIiwiAcmSIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcmUIiwiAcmVIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxI/AcmWBz8iLCIiLCIByZgiLCIByZkiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByZsiLCIByZwiLCIByZ0iLCIByZ4iLCIByZ8iLCIByaAiLCIByaEiLCIByaIiLCIByaMiLCIByaQiLCIByaUiLCIByaYiLCIByaciLCIByagiLCIByakiLCIByaoiLCIByasiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBya0iLCIBya4iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBybAiLCIBybEiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBybMiLCIBybQiLCIBybVcZu+/vwHJtiIsIgHJtyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHJuSIsIgHJuiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHJviIsIgHJvyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78SPwHKgAc/IiwiAcqCIiwiAcqDIiwiAcqEIiwiAcqFIiwiAcqGIiwiAcqHIiwiAcqIIiwiAcqJIiwiAcqKIiwiAcqLIiwiAcqMIiwiAcqNIiwiAcqOIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcqQIiwiAcqRIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vw4/AcqSCz8iLCIBypQiLCIBypUiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Ej8BypYHPyIsIgHKmCIsIiIsIgHKmSIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIlwwypwiLCIByp0iLCIByp4iLCIByp8iLCIByqAiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIByqIiLCIByqMiLCIByqQiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByqYiLCIiLCIByqciLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIByqsiLCIByqwiLCIByq0iLCIByq4iLCIByrAJ77+/AcqvIiwiAcqxIiwiAcqyIiwiAcqzIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcq1IiwiAcq2IiwiAcq3IiwiAcq4IiwiAcq5IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcq7IiwiAcq8IiwiAcq9IiwiAcq+IiwiAcq/IiwiIiwiAcuAAT8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcuCIiwiAcuDIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcuFIiwiAcuGIiwiAcuHIiwiIiwiAcuIIiwiAcuJIiwiAcuKIiwiAcuLIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAcuNIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAcuQIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/v1xiPwHLkRE/IiwiIiwiAcuTIiwiAcuUIiwiAcuVIiwiAcuWIiwiAcuXIiwiAcuYIiwiAcuZIiwiIiwiAcuaIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiIiwiAcucIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAcueIiwiAcufIiwiIiwiAcugIiwiAcuhIiwiIiwiAcuiIiwiAcujIiwiIiwiAcukIiwiAculIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAcunIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vwQ/AcuoAz8By6kRPyIsIiIsIgHLqyIsIgHLrCIsIgHLrSIsIgHLriIsIgHLryIsIgHLsCIsIgHLsSIsIgHLsiIsIgHLsyIsIgHLtCIsIgHLtSIsIgHLtiIsIgHLtyIsIgHLuCIsIgHLuSIsIgHLuiIsIgHLuyIsIiIsIgHLvCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHLviIsIgHLvyIsIiIsIgHMgCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHMgiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHMhCIsIiIsIgHMhSIsIgHMhiIsIiIsIiIsIiIsIgHMhyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHMiSIsIiIsIgHMiiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHMjSIsIgHMjiIsIgHMjyIsIgHMkCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHMkiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHMlCIsIgHMlSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHMmCIsIgHMmSIsIiIsIgHMmiIsIgHMmyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHMnSIsIgHMniIsIiIsIiIsIiIsIgHMnyIsIgHMoCIsIgHMoSIsIgHMoiIsIiIsIgHMoyIsIgHMpCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHMpyIsIiIsIiIsIiIsIgHMqCIsIgHMqSIsIgHMqiIsIgHMrBPvv78BzKsiLCIBzK0iLCIBzK4iLCIBzK8iLCIBzLAiLCIBzLEiLCIiLCIBzLIiLCIBzLMiLCIBzLQiLCIBzLUiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIBzLciLCIBzLgiLCIBzLkiLCIBzLoiLCIBzLsiLCIBzLwiLCIiLCIBzL0iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzYAiLCIBzYEiLCIBzYIiLCIBzYMiLCIBzYQiLCIBzYUiLCIiLCIBzYYiLCIiLCIiLCIBzYciLCIBzYgiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzYoiLCIBzYsiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzY0iLCIBzY4iLCIBzY8iLCIBzZAiLCIiLCIBzZEiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzZMiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzZYiLCIBzZciLCIBzZgiLCIBzZkiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzZsiLCIBzZwiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzZ8iLCIBzaAiLCIBzaEiLCIBzaIiLCIBzaMiLCIBzaQiLCIBzaUiLCIBzaYiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/XGI/Ac2oET8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzasiLCIBzawiLCIBza0iLCIBza4iLCIBza8BPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIBzbEiLCIBzbIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIBzbUiLCIBzbYiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzbgiLCIiLCIBzbkiLCIBzboiLCIiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzbwiLCIBzb0iLCIBzb4iLCIiLCIBzb8iLCIiLCIBzoAiLCIBzoEiLCIiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzoMiLCIBzoQiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzociLCIBzogiLCIBzokiLCIBzooiLCIBzosiLCIBzowiLCIBzo0iLCIiLCIiLCIBzo4iLCIBzo8iLCIBzpAiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzpIiLCIBzpMiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzpYiLCIBzpciLCIBzpgiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzpoiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIBzpwH77+/Ac6dIiwiIiwiAc6eIiwiAc6fIiwiAc6gIiwiAc6hIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc6jIiwiAc6kIiwiIiwiIiwiAc6lIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc6nIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc6qIiwiAc6rIiwiAc6sIiwiAc6tIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc6vIiwiIiwiAc6wIiwiAc6xIiwiAc6yIiwiAc6zIiwiAc60IiwiIiwiAc61IiwiIiwiIiwiAc62IiwiAc63IiwiAc64IiwiAc65IiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc67IiwiIiwiIiwiAc68IiwiAc69IiwiAc6+IiwiAc6/IiwiAc+AIiwiAc+BIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc+DIiwiIiwiAc+EIiwiIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc+GIiwiAc+HIiwiAc+IIiwiAc+JA++/vwHPiiIsIiIsIgHPiyIsIgHPjCIsIiIsIiIsIgHPjSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHPjyIsIgHPkCIsIgHPkSIsIiIsIgHPkiIsIgHPkyIsIgHPlCIsIgHPlSIsIgHPliIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHPmSIsIiIsIiIsIgHPmiIsIgHPmwE/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHPnSIsIgHPniIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHPoSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHPoyIsIgHPpCIsIiIsIgHPpSIsIgHPpiIsIiIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHPqSIsIiIsIgHPqlxm77+/Ac+rIiwiIiwiAc+sIiwiAc+tIiwiAc+uIiwiAc+vIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc+xAT8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAc+zIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiIiwiAc+2IiwiIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc+4IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc+6IiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAc+8IiwiAc+9IiwiAc++IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdCBIiwiAdCCIiwiAdCDIiwiAdCEIiwiAdCFIiwiIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdCHIiwiAdCIIiwiAdCJIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxo/IiwiAdCMIiwiIiwiAdCNIiwiAdCOIiwiIiwiAdCPIiwiAdCQIiwiAdCRIiwiAdCSIiwiAdCTIiwiAdCUIiwiAj8B77+/XG4/B++/vxo/BO+/vwE/Ae+/vxI/AdCVBz8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIB0JgiLCIB0JkiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIB0JsiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIB0J0iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIiLCIB0KAiLCIB0KEiLCIB0KIiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIiLCIB0KUiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIB0KciLCIB0KgiLCIB0KkiLCIiLCIiLCIB0KoiLCIB0KsiLCIB0KwiLCIB0K0iLCIB0K4iLCIB0K8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIB0LEiLCIiLCIB0LIiLCIiLCIiLCIB0LMBPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIB0LYiLCIiLCIB0LciLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIiLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIB0LsiLCIB0LwBPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Gj8iLCIB0L4iLCIB0L8iLCIiLCICPwHvv79cbj8H77+/Gj8E77+/AT8B77+/Ej8B0YAHPyIsIgHRgiIsIgHRgwE/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIiIsIgHRhSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHRiCIsIgHRiSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHRiyIsIgHRjCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHRkCIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHRlCIsIgHRlSIsIiIsIiIsIgHRliIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHRmCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHRmiIsIgHRmyIsIgHRnCIsIgHRnQE/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHRoSIsIgHRoiIsIgHRoyIsIiIsIiIsIgHRpCIsIgHRpSIsIiIsIiIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHRpyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHRqSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHRqyIsIgHRrCIsIiIsIgHRrSIsIiIsIiIsIgHRriIsIgHRryIsIiIsIgHRsCIsIgHRsSIsIiIsIiIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIiIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHRtCIsIgHRtSIsIiIsIgHRtiIsIiIsIgHRtyIsIgHRuCIsIgHRuSIsIgHRuiIsIiIsIiIsIiIsIgHRuyIsIgHRvCIsIgHRvSIsIgHRviIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHSgCIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHSgiIsIgHSgyIsIgHShCIsIgHShSIsIgHShiIsIgHShyIsIgHSiCIsIiIsIiIsIgHSiSIsIgHSiiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHSjCIsIgHSjSIsIgHSjiIsIgHSjyIsIgHSkCIsIgHSkSIsIgHSkiIsIgHSkyIsIiIsIgHSlCIsIiIsIgHSlSIsIgHSliIsIgHSlyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHSmiIsIgHSmyIsIgHSnCIsIgHSnSIsIiIsIgHSniIsIgHSnyIsIgHSoCIsIgHSoSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHSoyIsIgHSpCIsIgHSpSIsIgHSpiIsIgHSpyIsIgHSqCIsIgHSqSIsIiIsIiIsIgHSqiIsIgHSqyIsIgHSrCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHSriIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHSsCIsIgHSsSIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHSsyIsIgHStCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHStiIsIgHStyIsIgHSuCIsIgHSuSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHSuyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHSvSIsIgHSviIsIiIsIgHSvyIsIgHTgCIsIiIsIgHTgSIsIgHTgiIsIgHTgyIsIgHThCIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgHThiIsIgHThyIsIgHTiCIsIgHTiSIsIgHTiiIsIgHTiyIsIgHTjCIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHTjyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHTkSIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIgHTlCIsIiIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiIsIiIsIgHTlyIsIiIsIiIsIgHTmCIsIgHTmSIsIgHTmiIsIgI/Ae+/v1xuPwfvv78aPwTvv78BPwHvv78aPyIsIiJdfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qocyx7REZBMTlfZW90OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhzLkRGQTE5X2VvdFMpLERGQTE5X2VvZjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocy5ERkExOV9lb2ZTKSxERkExOV9taW46ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHMuREZBMTlfbWluUyksREZBMTlfbWF4OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhzLkRGQTE5X21heFMpLERGQTE5X2FjY2VwdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocy5ERkExOV9hY2NlcHRTKSxERkExOV9zcGVjaWFsOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhzLkRGQTE5X3NwZWNpYWxTKSxERkExOV90cmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9W10sdCxuPXMuREZBMTlfdHJhbnNpdGlvblMubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKyllLnB1c2goci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHMuREZBMTlfdHJhbnNpdGlvblNbdF0pKTtyZXR1cm4gZX0oKX0pLHMuREZBMTk9ZnVuY3Rpb24oZSl7dGhpcy5yZWNvZ25pemVyPWUsdGhpcy5kZWNpc2lvbk51bWJlcj0xOSx0aGlzLmVvdD1zLkRGQTE5X2VvdCx0aGlzLmVvZj1zLkRGQTE5X2VvZix0aGlzLm1pbj1zLkRGQTE5X21pbix0aGlzLm1heD1zLkRGQTE5X21heCx0aGlzLmFjY2VwdD1zLkRGQTE5X2FjY2VwdCx0aGlzLnNwZWNpYWw9cy5ERkExOV9zcGVjaWFsLHRoaXMudHJhbnNpdGlvbj1zLkRGQTE5X3RyYW5zaXRpb259LHIuYW50bHIubGFuZy5leHRlbmQocy5ERkExOSxyLmFudGxyLnJ1bnRpbWUuREZBLHtnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiIxOjE6IFRva2VucyA6ICggQU5DRVNUT1IgfCBBTkNFU1RPUl9PUl9TRUxGIHwgQU5EIHwgQVMgfCBBU0NFTkRJTkcgfCBBVCB8IEFUVFJJQlVURSB8IEJBU0VfVVJJIHwgQk9VTkRBUllfU1BBQ0UgfCBCWSB8IENBU0UgfCBDQVNUIHwgQ0FTVEFCTEUgfCBDSElMRCB8IENPTExBVElPTiB8IENPTU1FTlQgfCBDT05TVFJVQ1RJT04gfCBDT1BZX05BTUVTUEFDRVMgfCBERUNMQVJFIHwgREVGQVVMVCB8IERFU0NFTkRBTlQgfCBERVNDRU5EQU5UX09SX1NFTEYgfCBERVNDRU5ESU5HIHwgRElWIHwgRE9DVU1FTlQgfCBET0NVTUVOVF9OT0RFIHwgRUxFTUVOVCB8IEVMU0UgfCBFTVBUWSB8IEVNUFRZX1NFUVVFTkNFIHwgRU5DT0RJTkcgfCBFUSB8IEVWRVJZIHwgRVhDRVBUIHwgRVhURVJOQUwgfCBGT0xMT1dJTkcgfCBGT0xMT1dJTkdfU0lCTElORyB8IEZPUiB8IEZVTkNUSU9OIHwgR0UgfCBHUkVBVEVTVCB8IEdUIHwgSURJViB8IElGIHwgSU1QT1JUIHwgSU4gfCBJTkhFUklUIHwgSU5TVEFOQ0UgfCBJTlRFUlNFQ1QgfCBJUyB8IElURU0gfCBMQVggfCBMRSB8IExFQVNUIHwgTEVUIHwgTFQgfCBNT0QgfCBNT0RVTEUgfCBOQU1FU1BBQ0UgfCBORSB8IE5PX0lOSEVSSVQgfCBOT19QUkVTRVJWRSB8IE5PREUgfCBPRiB8IE9QVElPTiB8IE9SIHwgT1JERVIgfCBPUkRFUkVEIHwgT1JERVJJTkcgfCBQQVJFTlQgfCBQUkVDRURJTkcgfCBQUkVDRURJTkdfU0lCTElORyB8IFBSRVNFUlZFIHwgUFJPQ0VTU0lOR19JTlNUUlVDVElPTiB8IFJFVFVSTiB8IFNBVElTRklFUyB8IFNDSEVNQSB8IFNDSEVNQV9BVFRSSUJVVEUgfCBTQ0hFTUFfRUxFTUVOVCB8IFNFTEYgfCBTT01FIHwgU1RBQkxFIHwgU1RSSUNUIHwgU1RSSVAgfCBURVhUIHwgVEhFTiB8IFRPIHwgVFJFQVQgfCBUWVBFU1dJVENIIHwgVU5JT04gfCBVTk9SREVSRUQgfCBWQUxJREFURSB8IFZBUklBQkxFIHwgVkVSU0lPTiB8IFdIRVJFIHwgWFFVRVJZIHwgQUxMT1dJTkcgfCBDQVRDSCB8IENPTlRFWFQgfCBDT1VOVCB8IERFQ0lNQUxfRk9STUFUIHwgREVDSU1BTF9TRVBBUkFUT1IgfCBESUdJVCB8IEVORCB8IEdST1VQIHwgR1JPVVBJTkdfU0VQQVJBVE9SIHwgSU5GSU5JVFkgfCBNSU5VU19TSUdOIHwgTkFNRVNQQUNFX05PREUgfCBOQU4gfCBORVhUIHwgT05MWSB8IFBBVFRFUk5fU0VQQVJBVE9SIHwgUEVSQ0VOVCB8IFBFUl9NSUxMRSB8IFBSRVZJT1VTIHwgU0xJRElORyB8IFNUQVJUIHwgU1dJVENIIHwgVFJZIHwgVFVNQkxJTkcgfCBUWVBFIHwgV0hFTiB8IFdJTkRPVyB8IFpFUk9fRElHSVQgfCBBRlRFUiB8IEJFRk9SRSB8IENPUFkgfCBERUxFVEUgfCBGSVJTVCB8IElOU0VSVCB8IElOVE8gfCBMQVNUIHwgTU9ESUZZIHwgTk9ERVMgfCBSRU5BTUUgfCBSRVBMQUNFIHwgUkVWQUxJREFUSU9OIHwgU0tJUCB8IFVQREFUSU5HIHwgVkFMVUUgfCBXSVRIIHwgQUxMIHwgQU5ZIHwgQ09OVEFJTlMgfCBDT05URU5UIHwgRElBQ1JJVElDUyB8IERJRkZFUkVOVCB8IERJU1RBTkNFIHwgRU5USVJFIHwgRVhBQ1RMWSB8IEZST00gfCBGVF9PUFRJT04gfCBGVEFORCB8IEZUTk9UIHwgRlRPUiB8IElOU0VOU0lUSVZFIHwgTEFOR1VBR0UgfCBMRVZFTFMgfCBMT1dFUkNBU0UgfCBNT1NUIHwgTk8gfCBOT1QgfCBPQ0NVUlMgfCBQQVJBR1JBUEggfCBQQVJBR1JBUEhTIHwgUEhSQVNFIHwgUkVMQVRJT05TSElQIHwgU0FNRSB8IFNDT1JFIHwgU0VOU0lUSVZFIHwgU0VOVEVOQ0UgfCBTRU5URU5DRVMgfCBTVEVNTUlORyB8IFNUT1AgfCBUSEVTQVVSVVMgfCBUSU1FUyB8IFVQUEVSQ0FTRSB8IFVTSU5HIHwgV0VJR0hUIHwgV0lMRENBUkRTIHwgV0lUSE9VVCB8IFdPUkQgfCBXT1JEUyB8IEJSRUFLIHwgQ09OVElOVUUgfCBFWElUIHwgTE9PUCB8IFJFVFVSTklORyB8IFdISUxFIHwgQ0hFQ0sgfCBDT0xMRUNUSU9OIHwgQ09OU1RSQUlOVCB8IEZPUkVBQ0ggfCBGT1JFSUdOIHwgSU5ERVggfCBJTlRFR1JJVFkgfCBLRVkgfCBPTiB8IFVOSVFVRSB8IEJJTkFSWSB8IEFNUF9FUiB8IEFQT1NfRVIgfCBRVU9UX0VSIHwgQ09OQ0FUIHwgTFBBUkVOIHwgUlBBUkVOIHwgRE9MTEFSIHwgTEJSQUNLRVQgfCBSQlJBQ0tFVCB8IExTUVVBUkUgfCBSU1FVQVJFIHwgRVFVQUwgfCBCSU5EIHwgTk9URVFVQUwgfCBBTk5fUEVSQ0VOVCB8IEhBU0ggfCBBTVAgfCBDT01NQSB8IFFVRVNUSU9OIHwgU1RBUiB8IFBMVVMgfCBNSU5VUyB8IFNNQUxMRVIgfCBHUkVBVEVSIHwgU01BTExFUkVRIHwgR1JFQVRFUkVRIHwgU01BTExFUl9TTUFMTEVSIHwgR1JFQVRFUl9HUkVBVEVSIHwgU0xBU0ggfCBTTEFTSF9TTEFTSCB8IERPVCB8IERPVF9ET1QgfCBDT0xPTiB8IENPTE9OX0NPTE9OIHwgRU1QVFlfQ0xPU0VfVEFHIHwgQ0xPU0VfVEFHIHwgU0VNSUNPTE9OIHwgVkJBUiB8IFBSQUdNQV9TVEFSVCB8IFBSQUdNQV9FTkQgfCBYTUxfQ09NTUVOVF9TVEFSVCB8IFhNTF9DT01NRU5UX0VORCB8IFBJX1NUQVJUIHwgUElfRU5EIHwgQVRUUl9TSUdOIHwgQ0hBUlJFRl9ERUMgfCBDSEFSUkVGX0hFWCB8IEFQT1MgfCBRVU9UIHwgTF9OQ05hbWUgfCBTIHwgTF9QcmFnbWEgfCBMX0RpckNvbW1lbnRDb25zdHJ1Y3RvciB8IExfRGlyUElDb25zdHJ1Y3RvciB8IExfSW50ZWdlckxpdGVyYWwgfCBMX0RlY2ltYWxMaXRlcmFsIHwgTF9Eb3VibGVMaXRlcmFsIHwgTF9Db21tZW50IHwgTF9BbnlDaGFyICk7In0sc3BlY2lhbFN0YXRlVHJhbnNpdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPWUsaT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlIDA6dmFyIG49dC5MQSgxKTtlPS0xO2lmKG49PSJhIillPTE7ZWxzZSBpZihuPT0iYiIpZT0yO2Vsc2UgaWYobj09ImMiKWU9MztlbHNlIGlmKG49PSJkIillPTQ7ZWxzZSBpZihuPT0iZSIpZT01O2Vsc2UgaWYobj09ImYiKWU9NjtlbHNlIGlmKG49PSJnIillPTc7ZWxzZSBpZihuPT0iaSIpZT04O2Vsc2UgaWYobj09ImwiKWU9OTtlbHNlIGlmKG49PSJtIillPTEwO2Vsc2UgaWYobj09Im4iKWU9MTE7ZWxzZSBpZihuPT0ibyIpZT0xMjtlbHNlIGlmKG49PSJwIillPTEzO2Vsc2UgaWYobj09InIiKWU9MTQ7ZWxzZSBpZihuPT0icyIpZT0xNTtlbHNlIGlmKG49PSJ0IillPTE2O2Vsc2UgaWYobj09InUiKWU9MTc7ZWxzZSBpZihuPT0idiIpZT0xODtlbHNlIGlmKG49PSJ3IillPTE5O2Vsc2UgaWYobj09IngiKWU9MjA7ZWxzZSBpZihuPT0iTiIpZT0yMTtlbHNlIGlmKG49PSJ6IillPTIyO2Vsc2UgaWYobj09ImsiKWU9MjM7ZWxzZSBpZihuPT0icSIpZT0yNDtlbHNlIGlmKG49PSJ8IillPTI1O2Vsc2UgaWYobj09IigiKWU9MjY7ZWxzZSBpZihuPT0iKSIpZT0yNztlbHNlIGlmKG49PSIkIillPTI4O2Vsc2UgaWYobj09InsiKWU9Mjk7ZWxzZSBpZihuPT0ifSIpZT0zMDtlbHNlIGlmKG49PSJbIillPTMxO2Vsc2UgaWYobj09Il0iKWU9MzI7ZWxzZSBpZihuPT0iPSIpZT0zMztlbHNlIGlmKG49PSI6IillPTM0O2Vsc2UgaWYobj09IiEiKWU9MzU7ZWxzZSBpZihuPT0iJSIpZT0zNjtlbHNlIGlmKG49PSIjIillPTM3O2Vsc2UgaWYobj09IiYiKWU9Mzg7ZWxzZSBpZihuPT0iLCIpZT0zOTtlbHNlIGlmKG49PSI/IillPTQwO2Vsc2UgaWYobj09IioiKWU9NDE7ZWxzZSBpZihuPT0iKyIpZT00MjtlbHNlIGlmKG49PSItIillPTQzO2Vsc2UgaWYobj09IjwiKWU9NDQ7ZWxzZSBpZihuPT0iPiIpZT00NTtlbHNlIGlmKG49PSIvIillPTQ2O2Vsc2UgaWYobj09Ii4iKWU9NDc7ZWxzZSBpZihuPT0iOyIpZT00ODtlbHNlIGlmKG49PSJAIillPTQ5O2Vsc2UgaWYobj09IiciKWU9NTA7ZWxzZSBpZihuPT0nIicpZT01MTtlbHNlIGlmKG4+PSJBIiYmbjw9Ik0ifHxuPj0iTyImJm48PSJaInx8bj09Il8ifHxuPT0iaCJ8fG49PSJqInx8bj09InkiKWU9NTI7ZWxzZSBpZihuPj0iCSImJm48PSJcbiJ8fG49PSJcciJ8fG49PSIgIillPTUzO2Vsc2UgaWYobj49IjAiJiZuPD0iOSIpZT01NDtlbHNlIGlmKG4+PSJcMCImJm48PSJcYiJ8fG4+PSILIiYmbjw9IlxmInx8bj49Ig4iJiZuPD0iHyJ8fG49PSJcXCJ8fG49PSJeInx8bj09ImAifHxuPj0ifiImJm48PSLvv78iKWU9NTU7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDE6dmFyIHI9dC5MQSgxKSxpPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEscj09IiMiP2U9MTQ2OnI9PSI6IiYmIXRoaXMuaW5TdHI/ZT0xNDc6ZT0xNDgsdC5zZWVrKGkpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAyOnZhciBzPXQuTEEoMSk7ZT0tMSxzPj0iXDAiJiZzPD0i77+/Ij9lPTY2ODplPTY2NztpZihlPj0wKXJldHVybiBlfX0uY2FsbCh0aGlzLnJlY29nbml6ZXIsZSx0KTtpZighci5hbnRsci5sYW5nLmlzVW5kZWZpbmVkKGkpKXJldHVybiBpO3ZhciBzPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24odGhpcy5nZXREZXNjcmlwdGlvbigpLDE5LG4sdCk7dGhyb3cgdGhpcy5lcnJvcihzKSxzfSxkdW1teTpudWxsfSl9KCksdC5YUXVlcnlMZXhlcj1zfSksZGVmaW5lKCJhY2UvbW9kZS94cXVlcnkvWFFEVExleGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL21vZGUveHF1ZXJ5L2FudGxyMy1hbGwiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9hbnRscjMtYWxsIikub3JnLGk9dC5YUURUTGV4ZXI9ZnVuY3Rpb24oZSx0KXtpLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGUsdCl9O3IuYW50bHIubGFuZy5leHRlbmQoaSxyLmFudGxyLnJ1bnRpbWUuTGV4ZXIse2NvbW1lbnRzOltdLGFkZENvbW1lbnQ6ZnVuY3Rpb24oZSx0KXt0aGlzLmNvbW1lbnRzLnB1c2goe3N0YXJ0OmUsc3RvcDp0fSl9LGlzV3NFeHBsaWNpdDohMSxzZXRJc1dzRXhwbGljaXQ6ZnVuY3Rpb24oZSl7dGhpcy5pc1dzRXhwbGljaXQ9ZX0sYWRkVG9TdGFjazpmdW5jdGlvbihlKXtlLnB1c2godGhpcyl9LHJld2luZFRvSW5kZXg6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5pbnB1dDt0LnNlZWsoZSl9fSl9KSxkZWZpbmUoImFjZS9tb2RlL3hxdWVyeS9YUXVlcnlQYXJzZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbW9kZS94cXVlcnkvYW50bHIzLWFsbCIsImFjZS9tb2RlL3hxdWVyeS9TdHJpbmdMZXhlciIsImFjZS9tb2RlL3hxdWVyeS9YTUxMZXhlciIsImFjZS9tb2RlL3hxdWVyeS9YUXVlcnlMZXhlciIsImFjZS9tb2RlL3hxdWVyeS9YUURUUGFyc2VyIiwiYWNlL21vZGUveHF1ZXJ5L1Bvc2l0aW9uIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4vYW50bHIzLWFsbCIpLm9yZyxzPWUoIi4vU3RyaW5nTGV4ZXIiKS5TdHJpbmdMZXhlcixvPWUoIi4vWE1MTGV4ZXIiKS5YTUxMZXhlcix1PWUoIi4vWFF1ZXJ5TGV4ZXIiKS5YUXVlcnlMZXhlcixhPWUoIi4vWFFEVFBhcnNlciIpLlhRRFRQYXJzZXIsZj1lKCIuL1Bvc2l0aW9uIikuUG9zaXRpb24sbD1mdW5jdGlvbigpe30sYz0hMCxoPSEwLHA9ITAsZD0hMSx2PWZ1bmN0aW9uKGUsdCl7dHx8KHQ9bmV3IHIuYW50bHIucnVudGltZS5SZWNvZ25pemVyU2hhcmVkU3RhdGUpLGZ1bmN0aW9uKCl7dGhpcy5pc0luQXR0cj0hMSx0aGlzLmVycm9ycz1bXSx0aGlzLmhhc0Vycm9ycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVycm9ycy5sZW5ndGg+MH0sdGhpcy5hZGRFcnJvcj1mdW5jdGlvbihlKXt0aGlzLmVycm9ycy5wdXNoKGUpfSx0aGlzLmdldEVycm9ycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVycm9yc30sdGhpcy5zb3VyY2U9bnVsbCx0aGlzLnNldFNvdXJjZT1mdW5jdGlvbihlKXt0aGlzLnNvdXJjZT1lLHRoaXMuaGlnaGxpZ2h0ZXIuc2V0U291cmNlKGUpfSx0aGlzLmxleGVyU3RhY2s9bmV3IEFycmF5LHRoaXMubGM9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHRoaXMucG9wTGV4ZXI9ZnVuY3Rpb24oKXtpZih0aGlzLmxleGVyU3RhY2subGVuZ3RoPT0wKXJldHVybjt0aGlzLmdldFRva2VuU3RyZWFtKCkubWFyaygpO3ZhciBlPXRoaXMuZ2V0VG9rZW5TdHJlYW0oKS5nZXRUb2tlblNvdXJjZSgpLHQ9dGhpcy5sZXhlclN0YWNrLnBvcCgpO2UgaW5zdGFuY2VvZiBzJiZ0IGluc3RhbmNlb2YgdSYmKHQuaW5TdHI9ITEpLHRoaXMuZ2V0VG9rZW5TdHJlYW0oKS5zZXRUb2tlblNvdXJjZSh0KX0sdGhpcy5wdXNoWFF1ZXJ5TGV4ZXI9ZnVuY3Rpb24oKXt4cXVlcnlMZXhlcj1uZXcgdSh0aGlzLnNvdXJjZSksdGhpcy5wdXNoTGV4ZXIoeHF1ZXJ5TGV4ZXIpfSx0aGlzLnB1c2hTdHJpbmdMZXhlcj1mdW5jdGlvbihlKXt2YXIgdD1uZXcgcyh0aGlzLnNvdXJjZSk7dC5pbkFwb3NTdHI9ZSx0LmluUXVvdFN0cj0hZSx0LnNldElzV3NFeHBsaWNpdCghMCksdGhpcy5wdXNoTGV4ZXIodCl9LHRoaXMucHVzaFhNTExleGVyPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IG8odGhpcy5zb3VyY2UpO2Uuc2V0SXNXc0V4cGxpY2l0KCEwKSx0aGlzLnB1c2hMZXhlcihlKX0sdGhpcy5wdXNoTGV4ZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRUb2tlblN0cmVhbSgpLmdldFRva2VuU291cmNlKCk7dC5hZGRUb1N0YWNrKHRoaXMubGV4ZXJTdGFjayksdGhpcy5nZXRUb2tlblN0cmVhbSgpLnNldFRva2VuU291cmNlKGUpfSx0aGlzLnNldFdzRXhwbGljaXQ9ZnVuY3Rpb24oZSl7dGhpcy5nZXRUb2tlblN0cmVhbSgpLnNldFdzRXhwbGljaXQoZSl9LHRoaXMuYXA9ZnVuY3Rpb24oZSl7dGhpcy5hZGRUb2tlbihlLCJ4bWxfcGUiKX0sdGhpcy5heD1mdW5jdGlvbihlLHQpe3RoaXMuaGlnaGxpZ2h0ZXIuYWRkVG9rZW4oZS5nZXRTdGFydEluZGV4KCksdC5nZXRTdG9wSW5kZXgoKSwieG1sX3BlIil9LHRoaXMuYXQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmhpZ2hsaWdodGVyLmFkZFRva2VuKGUuZ2V0U3RhcnRJbmRleCgpLHQuZ2V0U3RvcEluZGV4KCksIm1ldGEudGFnIil9LHRoaXMuYXY9ZnVuY3Rpb24oZSx0KXt0aGlzLmhpZ2hsaWdodGVyLmFkZFRva2VuKGUuZ2V0U3RhcnRJbmRleCgpLHQuZ2V0U3RvcEluZGV4KCksInZhcmlhYmxlIil9LHRoaXMuYWY9ZnVuY3Rpb24oZSx0KXt0aGlzLmhpZ2hsaWdodGVyLmFkZFRva2VuKGUuZ2V0U3RhcnRJbmRleCgpLHQuZ2V0U3RvcEluZGV4KCksInN1cHBvcnQuZnVuY3Rpb24iKX0sdGhpcy5hbz1mdW5jdGlvbihlKXt0aGlzLmFkZFRva2VuKGUsImtleXdvcmQub3BlcmF0b3IiKX0sdGhpcy5haz1mdW5jdGlvbihlKXt0aGlzLmFkZFRva2VuKGUsImtleXdvcmQiKX0sdGhpcy5hZD1mdW5jdGlvbihlKXt0aGlzLmFkZFRva2VuKGUsImNvbnN0YW50Iil9LHRoaXMuYWRkU3RyaW5nPWZ1bmN0aW9uKGUsdCl7dD09dW5kZWZpbmVkP3RoaXMuYWRkVG9rZW4oZSwic3RyaW5nIik6dGhpcy5oaWdobGlnaHRlci5hZGRUb2tlbihlLmdldFN0YXJ0SW5kZXgoKSx0LmdldFN0b3BJbmRleCgpLCJzdHJpbmciKX0sdGhpcy5hYz1mdW5jdGlvbihlKXt0aGlzLmFkZFRva2VuKGUsImNvbW1lbnQiKX0sdGhpcy5hZGRUb2tlbj1mdW5jdGlvbihlLHQpe2lmKHIuYW50bHIubGFuZy5pc0FycmF5KGUpKWZvcihpIGluIGUpdGhpcy5oaWdobGlnaHRlci5hZGRUb2tlbihlW2ldLmdldFN0YXJ0SW5kZXgoKSxlW2ldLmdldFN0b3BJbmRleCgpLHQpO2Vsc2UgZSE9bnVsbCYmdGhpcy5oaWdobGlnaHRlci5hZGRUb2tlbihlLmdldFN0YXJ0SW5kZXgoKSxlLmdldFN0b3BJbmRleCgpLHQpfX0uY2FsbCh0aGlzKSx2LnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLGUsdCksdGhpcy5kZmExPW5ldyB2LkRGQTEodGhpcyksdGhpcy5kZmEyPW5ldyB2LkRGQTIodGhpcyksdGhpcy5kZmE2PW5ldyB2LkRGQTYodGhpcyksdGhpcy5kZmE5PW5ldyB2LkRGQTkodGhpcyksdGhpcy5kZmE0ND1uZXcgdi5ERkE0NCh0aGlzKSx0aGlzLmRmYTQ2PW5ldyB2LkRGQTQ2KHRoaXMpLHRoaXMuZGZhMTE3PW5ldyB2LkRGQTExNyh0aGlzKSx0aGlzLmRmYTExOT1uZXcgdi5ERkExMTkodGhpcyksdGhpcy5kZmExMjE9bmV3IHYuREZBMTIxKHRoaXMpLHRoaXMuZGZhMTI2PW5ldyB2LkRGQTEyNih0aGlzKSx0aGlzLmRmYTEzND1uZXcgdi5ERkExMzQodGhpcyksdGhpcy5kZmExNjI9bmV3IHYuREZBMTYyKHRoaXMpLHRoaXMuZGZhMTY0PW5ldyB2LkRGQTE2NCh0aGlzKSx0aGlzLmRmYTIxOD1uZXcgdi5ERkEyMTgodGhpcyksdGhpcy5kZmEyMzc9bmV3IHYuREZBMjM3KHRoaXMpLHRoaXMuZGZhMjUzPW5ldyB2LkRGQTI1Myh0aGlzKSx0aGlzLmFkYXB0b3I9bmV3IHIuYW50bHIucnVudGltZS50cmVlLkNvbW1vblRyZWVBZGFwdG9yfTtyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdCh2LHtFT0Y6LTEsTF9RdW90QXR0ckNvbnRlbnRDaGFyOjQsTF9BcG9zQXR0ckNvbnRlbnRDaGFyOjUsTF9FbGVtZW50Q29udGVudENoYXI6NixMX0NEYXRhU2VjdGlvbjo3LExfUHJlZGVmaW5lZEVudGl0eVJlZjo4LExfQ2hhclJlZjo5LEVTQ0FQRV9MQlJBQ0tFVDoxMCxFU0NBUEVfUkJSQUNLRVQ6MTEsRVNDQVBFX0FQT1M6MTIsRVNDQVBFX1FVT1Q6MTMsQ0RBVEFfU1RBUlQ6MTQsQ0RBVEFfRU5EOjE1LEFOQ0VTVE9SOjE2LEFOQ0VTVE9SX09SX1NFTEY6MTcsQU5EOjE4LEFTOjE5LEFTQ0VORElORzoyMCxBVDoyMSxBVFRSSUJVVEU6MjIsQkFTRV9VUkk6MjMsQk9VTkRBUllfU1BBQ0U6MjQsQlk6MjUsQ0FTRToyNixDQVNUOjI3LENBU1RBQkxFOjI4LENISUxEOjI5LENPTExBVElPTjozMCxDT01NRU5UOjMxLENPTlNUUlVDVElPTjozMixDT1BZX05BTUVTUEFDRVM6MzMsREVDTEFSRTozNCxERUZBVUxUOjM1LERFU0NFTkRBTlQ6MzYsREVTQ0VOREFOVF9PUl9TRUxGOjM3LERFU0NFTkRJTkc6MzgsRElWOjM5LERPQ1VNRU5UOjQwLERPQ1VNRU5UX05PREU6NDEsRUxFTUVOVDo0MixFTFNFOjQzLEVNUFRZOjQ0LEVNUFRZX1NFUVVFTkNFOjQ1LEVOQ09ESU5HOjQ2LEVROjQ3LEVWRVJZOjQ4LEVYQ0VQVDo0OSxFWFRFUk5BTDo1MCxGT0xMT1dJTkc6NTEsRk9MTE9XSU5HX1NJQkxJTkc6NTIsRk9SOjUzLEZVTkNUSU9OOjU0LEdFOjU1LEdSRUFURVNUOjU2LEdUOjU3LElESVY6NTgsSUY6NTksSU1QT1JUOjYwLElOOjYxLElOSEVSSVQ6NjIsSU5TVEFOQ0U6NjMsSU5URVJTRUNUOjY0LElTOjY1LElURU06NjYsTEFYOjY3LExFOjY4LExFQVNUOjY5LExFVDo3MCxMVDo3MSxNT0Q6NzIsTU9EVUxFOjczLE5BTUVTUEFDRTo3NCxORTo3NSxOT19JTkhFUklUOjc2LE5PX1BSRVNFUlZFOjc3LE5PREU6NzgsT0Y6NzksT1BUSU9OOjgwLE9SOjgxLE9SREVSOjgyLE9SREVSRUQ6ODMsT1JERVJJTkc6ODQsUEFSRU5UOjg1LFBSRUNFRElORzo4NixQUkVDRURJTkdfU0lCTElORzo4NyxQUkVTRVJWRTo4OCxQUk9DRVNTSU5HX0lOU1RSVUNUSU9OOjg5LFJFVFVSTjo5MCxTQVRJU0ZJRVM6OTEsU0NIRU1BOjkyLFNDSEVNQV9BVFRSSUJVVEU6OTMsU0NIRU1BX0VMRU1FTlQ6OTQsU0VMRjo5NSxTT01FOjk2LFNUQUJMRTo5NyxTVFJJQ1Q6OTgsU1RSSVA6OTksVEVYVDoxMDAsVEhFTjoxMDEsVE86MTAyLFRSRUFUOjEwMyxUWVBFU1dJVENIOjEwNCxVTklPTjoxMDUsVU5PUkRFUkVEOjEwNixWQUxJREFURToxMDcsVkFSSUFCTEU6MTA4LFZFUlNJT046MTA5LFdIRVJFOjExMCxYUVVFUlk6MTExLEFMTE9XSU5HOjExMixDQVRDSDoxMTMsQ09OVEVYVDoxMTQsQ09VTlQ6MTE1LERFQ0lNQUxfRk9STUFUOjExNixERUNJTUFMX1NFUEFSQVRPUjoxMTcsRElHSVQ6MTE4LEVORDoxMTksR1JPVVA6MTIwLEdST1VQSU5HX1NFUEFSQVRPUjoxMjEsSU5GSU5JVFk6MTIyLE1JTlVTX1NJR046MTIzLE5BTUVTUEFDRV9OT0RFOjEyNCxOQU46MTI1LE5FWFQ6MTI2LE9OTFk6MTI3LFBBVFRFUk5fU0VQQVJBVE9SOjEyOCxQRVJDRU5UOjEyOSxQRVJfTUlMTEU6MTMwLFBSRVZJT1VTOjEzMSxTTElESU5HOjEzMixTVEFSVDoxMzMsU1dJVENIOjEzNCxUUlk6MTM1LFRVTUJMSU5HOjEzNixUWVBFOjEzNyxXSEVOOjEzOCxXSU5ET1c6MTM5LFpFUk9fRElHSVQ6MTQwLEFGVEVSOjE0MSxCRUZPUkU6MTQyLENPUFk6MTQzLERFTEVURToxNDQsRklSU1Q6MTQ1LElOU0VSVDoxNDYsSU5UTzoxNDcsTEFTVDoxNDgsTU9ESUZZOjE0OSxOT0RFUzoxNTAsUkVOQU1FOjE1MSxSRVBMQUNFOjE1MixSRVZBTElEQVRJT046MTUzLFNLSVA6MTU0LFVQREFUSU5HOjE1NSxWQUxVRToxNTYsV0lUSDoxNTcsQUxMOjE1OCxBTlk6MTU5LENPTlRBSU5TOjE2MCxDT05URU5UOjE2MSxESUFDUklUSUNTOjE2MixESUZGRVJFTlQ6MTYzLERJU1RBTkNFOjE2NCxFTlRJUkU6MTY1LEVYQUNUTFk6MTY2LEZST006MTY3LEZUX09QVElPTjoxNjgsRlRBTkQ6MTY5LEZUTk9UOjE3MCxGVE9SOjE3MSxJTlNFTlNJVElWRToxNzIsTEFOR1VBR0U6MTczLExFVkVMUzoxNzQsTE9XRVJDQVNFOjE3NSxNT1NUOjE3NixOTzoxNzcsTk9UOjE3OCxPQ0NVUlM6MTc5LFBBUkFHUkFQSDoxODAsUEFSQUdSQVBIUzoxODEsUEhSQVNFOjE4MixSRUxBVElPTlNISVA6MTgzLFNBTUU6MTg0LFNDT1JFOjE4NSxTRU5TSVRJVkU6MTg2LFNFTlRFTkNFOjE4NyxTRU5URU5DRVM6MTg4LFNURU1NSU5HOjE4OSxTVE9QOjE5MCxUSEVTQVVSVVM6MTkxLFRJTUVTOjE5MixVUFBFUkNBU0U6MTkzLFVTSU5HOjE5NCxXRUlHSFQ6MTk1LFdJTERDQVJEUzoxOTYsV0lUSE9VVDoxOTcsV09SRDoxOTgsV09SRFM6MTk5LEJSRUFLOjIwMCxDT05USU5VRToyMDEsRVhJVDoyMDIsTE9PUDoyMDMsUkVUVVJOSU5HOjIwNCxXSElMRToyMDUsQ0hFQ0s6MjA2LENPTExFQ1RJT046MjA3LENPTlNUUkFJTlQ6MjA4LEZPUkVBQ0g6MjA5LEZPUkVJR046MjEwLElOREVYOjIxMSxJTlRFR1JJVFk6MjEyLEtFWToyMTMsT046MjE0LFVOSVFVRToyMTUsQklOQVJZOjIxNixBTVBfRVI6MjE3LEFQT1NfRVI6MjE4LFFVT1RfRVI6MjE5LENPTkNBVDoyMjAsTFBBUkVOOjIyMSxSUEFSRU46MjIyLERPTExBUjoyMjMsTEJSQUNLRVQ6MjI0LFJCUkFDS0VUOjIyNSxMU1FVQVJFOjIyNixSU1FVQVJFOjIyNyxFUVVBTDoyMjgsQklORDoyMjksTk9URVFVQUw6MjMwLEFOTl9QRVJDRU5UOjIzMSxIQVNIOjIzMixBTVA6MjMzLENPTU1BOjIzNCxRVUVTVElPTjoyMzUsU1RBUjoyMzYsUExVUzoyMzcsTUlOVVM6MjM4LFNNQUxMRVI6MjM5LEdSRUFURVI6MjQwLFNNQUxMRVJFUToyNDEsR1JFQVRFUkVROjI0MixTTUFMTEVSX1NNQUxMRVI6MjQzLEdSRUFURVJfR1JFQVRFUjoyNDQsU0xBU0g6MjQ1LFNMQVNIX1NMQVNIOjI0NixET1Q6MjQ3LERPVF9ET1Q6MjQ4LENPTE9OOjI0OSxDT0xPTl9DT0xPTjoyNTAsRU1QVFlfQ0xPU0VfVEFHOjI1MSxDTE9TRV9UQUc6MjUyLFNFTUlDT0xPTjoyNTMsVkJBUjoyNTQsUFJBR01BX1NUQVJUOjI1NSxQUkFHTUFfRU5EOjI1NixYTUxfQ09NTUVOVF9TVEFSVDoyNTcsWE1MX0NPTU1FTlRfRU5EOjI1OCxQSV9TVEFSVDoyNTksUElfRU5EOjI2MCxBVFRSX1NJR046MjYxLENIQVJSRUZfREVDOjI2MixDSEFSUkVGX0hFWDoyNjMsQVBPUzoyNjQsUVVPVDoyNjUsTkNOYW1lU3RhcnRDaGFyOjI2NixOQ05hbWVDaGFyOjI2NyxMX05DTmFtZToyNjgsTGV0dGVyOjI2OSxIZXhMZXR0ZXI6MjcwLERpZ2l0OjI3MSxEaWdpdHM6MjcyLFM6MjczLFNVOjI3NCxMX1ByYWdtYToyNzUsTF9EaXJDb21tZW50Q29uc3RydWN0b3I6Mjc2LExfRGlyUElDb25zdHJ1Y3RvcjoyNzcsTF9JbnRlZ2VyTGl0ZXJhbDoyNzgsTF9EZWNpbWFsTGl0ZXJhbDoyNzksTF9Eb3VibGVMaXRlcmFsOjI4MCxMX0NvbW1lbnQ6MjgxLExfQW55Q2hhcjoyODIsTF9RdW90U3RyaW5nTGl0ZXJhbENoYXI6MjgzLExfQXBvc1N0cmluZ0xpdGVyYWxDaGFyOjI4NCxMaWJyYXJ5TW9kdWxlOjI4NSxNYWluTW9kdWxlOjI4NixWZXJzaW9uRGVjbDoyODcsVmVyc2lvbkRlY2xFbmNvZGluZzoyODgsVmVyc2lvbkRlY2xWZXJzaW9uOjI4OSxNb2R1bGVEZWNsOjI5MCxQcm9sb2c6MjkxLERlZmF1bHROYW1lc3BhY2VEZWNsczoyOTIsRGVmYXVsdE5hbWVzcGFjZURlY2w6MjkzLFNldHRlcnM6Mjk0LFNldHRlcjoyOTUsTmFtZXNwYWNlRGVjbHM6Mjk2LE5hbWVzcGFjZURlY2w6Mjk3LEltcG9ydHM6Mjk4LEZUT3B0aW9uRGVjbHM6Mjk5LFNjaGVtYUltcG9ydDozMDAsU2NoZW1hUHJlZml4OjMwMSxOYW1lc3BhY2VOYW1lOjMwMixEZWZhdWx0RWxlbWVudE5hbWVzcGFjZTozMDMsQXRIaW50czozMDQsTW9kdWxlSW1wb3J0OjMwNSxCYXNlVVJJRGVjbDozMDYsT3JkZXJlZERlY2xzOjMwNyxWYXJEZWNsOjMwOCxWYXJUeXBlOjMwOSxWYXJWYWx1ZTozMTAsVmFyRGVmYXVsdFZhbHVlOjMxMSxWYXJWYXJpYWJsZURlY2w6MzEyLEZ1bmN0aW9uRGVjbDozMTMsUGFyYW1MaXN0OjMxNCxSZXR1cm5UeXBlOjMxNSxPcHRpb25EZWNsOjMxNixUeXBlRGVjbGFyYXRpb246MzE3LFBhcmFtOjMxOCxFbmNsb3NlZEV4cHI6MzE5LFF1ZXJ5Qm9keTozMjAsVW5hcnlFeHByOjMyMSxEaXJFbGVtQ29uc3RydWN0b3I6MzIyLERpckF0dHJpYnV0ZUxpc3Q6MzIzLERpckF0dHJpYnV0ZVZhbHVlOjMyNCxEaXJFbGVtQ29udGVudDozMjUsQ29tbW9uQ29udGVudDozMjYsU2VxdWVuY2VUeXBlOjMyNyxFbXB0eVNlcXVlbmNlVGVzdDozMjgsS2luZFRlc3Q6MzI5LEl0ZW1UZXN0OjMzMCxGdW5jdGlvblRlc3Q6MzMxLEF0b21pY1R5cGU6MzMyLEF0b21pY09yVW5pb25UeXBlOjMzMyxTdHJpbmdMaXRlcmFsOjMzNCxFbGVtZW50Q29udGVudENoYXI6MzM1LEF0dHJpYnV0ZVZhbHVlQ2hhcjozMzYsUU5hbWU6MzM3LEJsb2NrRXhwcjozMzgsQmluYXJ5VGVzdDozMzksRVhQTElDSVRMWTozNDB9KSxmdW5jdGlvbigpe3ZhciBlPS0xLHQ9NCxuPTUsaT02LHM9NyxvPTgsdT05LGY9MTAsbT0xMSxnPTEyLHk9MTMsYj0xNCx3PTE1LEU9MTYsUz0xNyx4PTE4LFQ9MTksTj0yMCxDPTIxLGs9MjIsTD0yMyxBPTI0LE89MjUsTT0yNixfPTI3LEQ9MjgsUD0yOSxIPTMwLEI9MzEsaj0zMixGPTMzLEk9MzQscT0zNSxSPTM2LFU9Mzcsej0zOCxXPTM5LFg9NDAsVj00MSwkPTQyLEo9NDMsSz00NCxRPTQ1LEc9NDYsWT00NyxaPTQ4LGV0PTQ5LHR0PTUwLG50PTUxLHJ0PTUyLGl0PTUzLHN0PTU0LG90PTU1LHV0PTU2LGF0PTU3LGZ0PTU4LGx0PTU5LGN0PTYwLGh0PTYxLHB0PTYyLGR0PTYzLHZ0PTY0LG10PTY1LGd0PTY2LHl0PTY3LGJ0PTY4LHd0PTY5LEV0PTcwLFN0PTcxLHh0PTcyLFR0PTczLE50PTc0LEN0PTc1LGt0PTc2LEx0PTc3LEF0PTc4LE90PTc5LE10PTgwLF90PTgxLER0PTgyLFB0PTgzLEh0PTg0LEJ0PTg1LGp0PTg2LEZ0PTg3LEl0PTg4LHF0PTg5LFJ0PTkwLFV0PTkxLHp0PTkyLFd0PTkzLFh0PTk0LFZ0PTk1LCR0PTk2LEp0PTk3LEt0PTk4LFF0PTk5LEd0PTEwMCxZdD0xMDEsWnQ9MTAyLGVuPTEwMyx0bj0xMDQsbm49MTA1LHJuPTEwNixzbj0xMDcsb249MTA4LHVuPTEwOSxhbj0xMTAsZm49MTExLGxuPTExMixjbj0xMTMsaG49MTE0LHBuPTExNSxkbj0xMTYsdm49MTE3LG1uPTExOCxnbj0xMTkseW49MTIwLGJuPTEyMSx3bj0xMjIsRW49MTIzLFNuPTEyNCx4bj0xMjUsVG49MTI2LE5uPTEyNyxDbj0xMjgsa249MTI5LExuPTEzMCxBbj0xMzEsT249MTMyLE1uPTEzMyxfbj0xMzQsRG49MTM1LFBuPTEzNixIbj0xMzcsQm49MTM4LGpuPTEzOSxGbj0xNDAsSW49MTQxLHFuPTE0MixSbj0xNDMsVW49MTQ0LHpuPTE0NSxXbj0xNDYsWG49MTQ3LFZuPTE0OCwkbj0xNDksSm49MTUwLEtuPTE1MSxRbj0xNTIsR249MTUzLFluPTE1NCxabj0xNTUsZXI9MTU2LHRyPTE1Nyxucj0xNTgscnI9MTU5LGlyPTE2MCxzcj0xNjEsb3I9MTYyLHVyPTE2Myxhcj0xNjQsZnI9MTY1LGxyPTE2Nixjcj0xNjcsaHI9MTY4LHByPTE2OSxkcj0xNzAsdnI9MTcxLG1yPTE3Mixncj0xNzMseXI9MTc0LGJyPTE3NSx3cj0xNzYsRXI9MTc3LFNyPTE3OCx4cj0xNzksVHI9MTgwLE5yPTE4MSxDcj0xODIsa3I9MTgzLExyPTE4NCxBcj0xODUsT3I9MTg2LE1yPTE4Nyxfcj0xODgsRHI9MTg5LFByPTE5MCxIcj0xOTEsQnI9MTkyLGpyPTE5MyxGcj0xOTQsSXI9MTk1LHFyPTE5NixScj0xOTcsVXI9MTk4LHpyPTE5OSxXcj0yMDAsWHI9MjAxLFZyPTIwMiwkcj0yMDMsSnI9MjA0LEtyPTIwNSxRcj0yMDYsR3I9MjA3LFlyPTIwOCxacj0yMDksZWk9MjEwLHRpPTIxMSxuaT0yMTIscmk9MjEzLGlpPTIxNCxzaT0yMTUsb2k9MjE2LHVpPTIxNyxhaT0yMTgsZmk9MjE5LGxpPTIyMCxjaT0yMjEsaGk9MjIyLHBpPTIyMyxkaT0yMjQsdmk9MjI1LG1pPTIyNixnaT0yMjcseWk9MjI4LGJpPTIyOSx3aT0yMzAsRWk9MjMxLFNpPTIzMix4aT0yMzMsVGk9MjM0LE5pPTIzNSxDaT0yMzYsa2k9MjM3LExpPTIzOCxBaT0yMzksT2k9MjQwLE1pPTI0MSxfaT0yNDIsRGk9MjQzLFBpPTI0NCxIaT0yNDUsQmk9MjQ2LGppPTI0NyxGaT0yNDgsSWk9MjQ5LHFpPTI1MCxSaT0yNTEsVWk9MjUyLHppPTI1MyxXaT0yNTQsWGk9MjU1LFZpPTI1NiwkaT0yNTcsSmk9MjU4LEtpPTI1OSxRaT0yNjAsR2k9MjYxLFlpPTI2MixaaT0yNjMsZXM9MjY0LHRzPTI2NSxucz0yNjYscnM9MjY3LGlzPTI2OCxzcz0yNjksb3M9MjcwLHVzPTI3MSxhcz0yNzIsZnM9MjczLGxzPTI3NCxjcz0yNzUsaHM9Mjc2LHBzPTI3Nyxkcz0yNzgsdnM9Mjc5LG1zPTI4MCxncz0yODEseXM9MjgyLGJzPTI4Myx3cz0yODQsRXM9Mjg1LFNzPTI4Nix4cz0yODcsVHM9Mjg4LE5zPTI4OSxDcz0yOTAsa3M9MjkxLExzPTI5MixBcz0yOTMsT3M9Mjk0LE1zPTI5NSxfcz0yOTYsRHM9Mjk3LFBzPTI5OCxIcz0yOTksQnM9MzAwLGpzPTMwMSxGcz0zMDIsSXM9MzAzLHFzPTMwNCxScz0zMDUsVXM9MzA2LHpzPTMwNyxXcz0zMDgsWHM9MzA5LFZzPTMxMCwkcz0zMTEsSnM9MzEyLEtzPTMxMyxRcz0zMTQsR3M9MzE1LFlzPTMxNixacz0zMTcsZW89MzE4LHRvPTMxOSxubz0zMjAscm89MzIxLGlvPTMyMixzbz0zMjMsb289MzI0LHVvPTMyNSxhbz0zMjYsZm89MzI3LGxvPTMyOCxjbz0zMjksaG89MzMwLHBvPTMzMSx2bz0zMzIsbW89MzMzLGdvPTMzNCx5bz0zMzUsYm89MzM2LHdvPTMzNyxFbz0zMzgsU289MzM5LHhvPTM0MDtyLmFudGxyLmxhbmcuZXh0ZW5kKHYsYSx7c2V0VHJlZUFkYXB0b3I6ZnVuY3Rpb24oZSl7dGhpcy5hZGFwdG9yPWV9LGdldFRyZWVBZGFwdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWRhcHRvcn0sZ2V0VG9rZW5OYW1lczpmdW5jdGlvbigpe3JldHVybiB2LnRva2VuTmFtZXN9LGdldEdyYW1tYXJGaWxlTmFtZTpmdW5jdGlvbigpe3JldHVybiJ4cXVlcnkvWFF1ZXJ5UGFyc2VyLmcifX0pLHIuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHYucHJvdG90eXBlLHtwX01vZHVsZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfTW9kdWxlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfTW9kdWxlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Nb2R1bGU6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgdi5wX01vZHVsZV9yZXR1cm47dC5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gRU9GIiksbD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1ZlcnNpb25EZWNsIiksYz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX0xpYnJhcnlNb2R1bGUiKSxoPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfTWFpbk1vZHVsZSIpO3RyeXt2YXIgcD0yO3A9dGhpcy5kZmExLnByZWRpY3QodGhpcy5pbnB1dCk7c3dpdGNoKHApe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9WZXJzaW9uRGVjbF9pbl9wX01vZHVsZTUwNykscz10aGlzLnBfVmVyc2lvbkRlY2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmwuYWRkKHMuZ2V0VHJlZSgpKX12YXIgZD0yO2Q9dGhpcy5kZmEyLnByZWRpY3QodGhpcy5pbnB1dCk7c3dpdGNoKGQpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9MaWJyYXJ5TW9kdWxlX2luX3BfTW9kdWxlNTQwKSxvPXRoaXMucF9MaWJyYXJ5TW9kdWxlKHM/cy50cmVlOm51bGwpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmYy5hZGQoby5nZXRUcmVlKCkpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7dC50cmVlPW47dmFyIG09bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsdCE9bnVsbD90LnRyZWU6bnVsbCk7bj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sbz9vLnRyZWU6bnVsbCksdC50cmVlPW59YnJlYWs7Y2FzZSAyOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX01haW5Nb2R1bGVfaW5fcF9Nb2R1bGU1NjMpLHU9dGhpcy5wX01haW5Nb2R1bGUocz9zLnRyZWU6bnVsbCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZoLmFkZCh1LmdldFRyZWUoKSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXt0LnRyZWU9bjt2YXIgbT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIix0IT1udWxsP3QudHJlZTpudWxsKTtuPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobix1P3UudHJlZTpudWxsKSx0LnRyZWU9bn19aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZSx2LkZPTExPV19FT0ZfaW5fcF9Nb2R1bGU1ODcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmZi5hZGQoaSksdC5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHQudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKG4pLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXModC50cmVlLHQuc3RhcnQsdC5zdG9wKSl9Y2F0Y2goZyl7aWYoIShnIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBnO3RoaXMucmVwb3J0RXJyb3IoZyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZyksdC50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCx0LnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGcpfWZpbmFsbHl7fXJldHVybiB0fSxwX1ZlcnNpb25EZWNsX3JldHVybjpmdW5jdGlvbigpe3YucF9WZXJzaW9uRGVjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1ZlcnNpb25EZWNsX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9WZXJzaW9uRGVjbDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfVmVyc2lvbkRlY2xfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBFTkNPRElORyIpLGw9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBWRVJTSU9OIiksYz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIFNFTUlDT0xPTiIpLGg9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBYUVVFUlkiKSxwPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfU3RyaW5nTGl0ZXJhbCIpO3RyeXtuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxmbix2LkZPTExPV19YUVVFUllfaW5fcF9WZXJzaW9uRGVjbDYxNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZoLmFkZChuKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobik7dmFyIGQ9MixtPXRoaXMuaW5wdXQuTEEoMSk7aWYobT09RylkPTE7ZWxzZXtpZihtIT11bil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgZz1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDQsMCx0aGlzLmlucHV0KTt0aHJvdyBnfWQ9Mn1zd2l0Y2goZCl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEcsdi5GT0xMT1dfRU5DT0RJTkdfaW5fcF9WZXJzaW9uRGVjbDYyMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZmLmFkZChuKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX1ZlcnNpb25EZWNsNjI5KSxzPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZwLmFkZChzLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHVuLHYuRk9MTE9XX1ZFUlNJT05faW5fcF9WZXJzaW9uRGVjbDY1MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZsLmFkZChuKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX1ZlcnNpb25EZWNsNjU2KSxvPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZwLmFkZChvLmdldFRyZWUoKSk7dmFyIHk9MixiPXRoaXMuaW5wdXQuTEEoMSk7Yj09RyYmKHk9MSk7c3dpdGNoKHkpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxHLHYuRk9MTE9XX0VOQ09ESU5HX2luX3BfVmVyc2lvbkRlY2w2NjEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmZi5hZGQobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9WZXJzaW9uRGVjbDY2Nykscz10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmcC5hZGQocy5nZXRUcmVlKCkpfX1pPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6aSx2LkZPTExPV19TRU1JQ09MT05faW5fcF9WZXJzaW9uRGVjbDY3Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZjLmFkZChpKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2UudHJlZT10O3ZhciB3PW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGUhPW51bGw/ZS50cmVlOm51bGwpLEU9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHZlciIsbyE9bnVsbD9vLnRyZWU6bnVsbCksUz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gZW5jIixzIT1udWxsP3MudHJlZTpudWxsKTt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgeD10aGlzLmFkYXB0b3IubmlsKCk7eD10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKHhzLCJWZXJzaW9uRGVjbCIpLHgpO3ZhciBUPXRoaXMuYWRhcHRvci5uaWwoKTtUPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoTnMsIlZlcnNpb25EZWNsVmVyc2lvbiIpLFQpLEUuaGFzTmV4dCgpJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoVCxFLm5leHRUcmVlKCkpLEUucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoeCxUKTt2YXIgVD10aGlzLmFkYXB0b3IubmlsKCk7VD10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKFRzLCJWZXJzaW9uRGVjbEVuY29kaW5nIiksVCksUy5oYXNOZXh0KCkmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChULFMubmV4dFRyZWUoKSksUy5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh4LFQpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHgpLGUudHJlZT10fWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKE4pe2lmKCEoTiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgTjt0aGlzLnJlcG9ydEVycm9yKE4pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LE4pLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxOKX1maW5hbGx5e31yZXR1cm4gZX0scF9NYWluTW9kdWxlX3JldHVybjpmdW5jdGlvbigpe3YucF9NYWluTW9kdWxlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfTWFpbk1vZHVsZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfTWFpbk1vZHVsZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgdi5wX01haW5Nb2R1bGVfcmV0dXJuO3Quc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgbj1udWxsLGk9bnVsbCxzPW51bGwsbz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwbV9RdWVyeUJvZHkiKSx1PW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBtX1Byb2xvZyIpO3RyeXt0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fUHJvbG9nX2luX3BfTWFpbk1vZHVsZTczOSksaT10aGlzLnBtX1Byb2xvZygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdS5hZGQoaS5nZXRUcmVlKCkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wbV9RdWVyeUJvZHlfaW5fcF9NYWluTW9kdWxlNzQxKSxzPXRoaXMucG1fUXVlcnlCb2R5KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZvLmFkZChzLmdldFRyZWUoKSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXt0LnRyZWU9bjt2YXIgYT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIix0IT1udWxsP3QudHJlZTpudWxsKTtuPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgZj10aGlzLmFkYXB0b3IubmlsKCk7Zj10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKFNzLCJNYWluTW9kdWxlIiksZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGYsZSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGYsdS5uZXh0VHJlZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixmKSx0LnRyZWU9bn10LnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodC50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcobiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyh0LnRyZWUsdC5zdGFydCx0LnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSx0LnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LHQuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIHR9LHBfTGlicmFyeU1vZHVsZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfTGlicmFyeU1vZHVsZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0xpYnJhcnlNb2R1bGVfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0xpYnJhcnlNb2R1bGU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHYucF9MaWJyYXJ5TW9kdWxlX3JldHVybjt0LnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIG49bnVsbCxpPW51bGwscz1udWxsLG89bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcG1fUHJvbG9nIiksdT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX01vZHVsZURlY2wiKTt0cnl7dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfTW9kdWxlRGVjbF9pbl9wX0xpYnJhcnlNb2R1bGU3OTcpLGk9dGhpcy5wX01vZHVsZURlY2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnUuYWRkKGkuZ2V0VHJlZSgpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fUHJvbG9nX2luX3BfTGlicmFyeU1vZHVsZTc5OSkscz10aGlzLnBtX1Byb2xvZygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmby5hZGQocy5nZXRUcmVlKCkpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7dC50cmVlPW47dmFyIGE9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsdCE9bnVsbD90LnRyZWU6bnVsbCk7bj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGY9dGhpcy5hZGFwdG9yLm5pbCgpO2Y9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShFcywiTGlicmFyeU1vZHVsZSIpLGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChmLGUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChmLHUubmV4dFRyZWUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGYsby5uZXh0VHJlZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixmKSx0LnRyZWU9bn10LnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodC50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcobiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyh0LnRyZWUsdC5zdGFydCx0LnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSx0LnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LHQuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIHR9LHBfTW9kdWxlRGVjbF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfTW9kdWxlRGVjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX01vZHVsZURlY2xfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX01vZHVsZURlY2w6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX01vZHVsZURlY2xfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsLGg9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBTRU1JQ09MT04iKSxwPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gTU9EVUxFIiksZD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIE5BTUVTUEFDRSIpLG09bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBFUVVBTCIpLGc9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9OQ05hbWUiKSx5PW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfU3RyaW5nTGl0ZXJhbCIpO3RyeXtzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxUdCx2LkZPTExPV19NT0RVTEVfaW5fcF9Nb2R1bGVEZWNsODU1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnAuYWRkKHMpLHIuYW50bHIubGFuZy5pc051bGwobykmJihvPVtdKSxvLnB1c2gocykscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTnQsdi5GT0xMT1dfTkFNRVNQQUNFX2luX3BfTW9kdWxlRGVjbDg1OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZkLmFkZChzKSxyLmFudGxyLmxhbmcuaXNOdWxsKG8pJiYobz1bXSksby5wdXNoKHMpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhvKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9OQ05hbWVfaW5fcF9Nb2R1bGVEZWNsODYzKSx1PXRoaXMucF9OQ05hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmcuYWRkKHUuZ2V0VHJlZSgpKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCx5aSx2LkZPTExPV19FUVVBTF9pbl9wX01vZHVsZURlY2w4NjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmbS5hZGQobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX01vZHVsZURlY2w4NjcpLGE9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnkuYWRkKGEuZ2V0VHJlZSgpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6aSx2LkZPTExPV19TRU1JQ09MT05faW5fcF9Nb2R1bGVEZWNsODY5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmguYWRkKGkpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIGI9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsZSE9bnVsbD9lLnRyZWU6bnVsbCk7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIHc9dGhpcy5hZGFwdG9yLm5pbCgpO3c9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShDcywiTW9kdWxlRGVjbCIpLHcpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh3LGcubmV4dFRyZWUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHcseS5uZXh0VHJlZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx3KSxlLnRyZWU9dH1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChFKXtpZighKEUgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IEU7dGhpcy5yZXBvcnRFcnJvcihFKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxFKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksRSl9ZmluYWxseXt9cmV0dXJuIGV9LHBtX1Byb2xvZ19yZXR1cm46ZnVuY3Rpb24oKXt2LnBtX1Byb2xvZ19yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wbV9Qcm9sb2dfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9Qcm9sb2c6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wbV9Qcm9sb2dfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsLHA9bnVsbCxkPW51bGwsbT1udWxsLGc9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcG1fTmFtZXNwYWNlRGVjbCIpLHk9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9JbXBvcnQiKSxiPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfU2V0dGVyIiksdz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwbV9EZWZhdWx0TmFtZXNwYWNlRGVjbCIpLEU9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcGdfT3JkZXJlZERlY2wiKSxTPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBtX0ZUT3B0aW9uRGVjbCIpO3RyeXtlOmRve3ZhciB4PTI7eD10aGlzLmRmYTYucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2goeCl7Y2FzZSAxOnZhciBUPTUsTj10aGlzLmlucHV0LkxBKDEpO2lmKE49PUkpe3ZhciBDPXRoaXMuaW5wdXQuTEEoMik7aWYoQz09R24mJnRoaXMubGMoaCkpVD0yO2Vsc2UgaWYoQz09aHIpVD01O2Vsc2UgaWYoQz09cSl7dmFyIGs9dGhpcy5pbnB1dC5MQSgzKTtpZihrPT0kfHxrPT1zdClUPTE7ZWxzZXtpZihrIT1IJiZrIT1EdCYmayE9ZG4pe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIE89bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw1LDUsdGhpcy5pbnB1dCk7dGhyb3cgT31UPTJ9fWVsc2UgaWYoQz49TCYmQzw9QXx8Qz49aiYmQzw9Rnx8Qz09SHR8fEM9PWRuKVQ9MjtlbHNle2lmKEMhPU50KXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBPPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsNSwxLHRoaXMuaW5wdXQpO3Rocm93IE99VD0zfX1lbHNle2lmKE4hPWN0KXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBPPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsNSwwLHRoaXMuaW5wdXQpO3Rocm93IE99VD00fXN3aXRjaChUKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BtX0RlZmF1bHROYW1lc3BhY2VEZWNsX2luX3BtX1Byb2xvZzkyOCksZj10aGlzLnBtX0RlZmF1bHROYW1lc3BhY2VEZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ3LmFkZChmLmdldFRyZWUoKSksci5hbnRsci5sYW5nLmlzTnVsbChuKSYmKG49W10pLG4ucHVzaChmLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1NldHRlcl9pbl9wbV9Qcm9sb2c5MzQpLGw9dGhpcy5wX1NldHRlcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmYi5hZGQobC5nZXRUcmVlKCkpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobC5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMzp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fTmFtZXNwYWNlRGVjbF9pbl9wbV9Qcm9sb2c5NDApLGM9dGhpcy5wbV9OYW1lc3BhY2VEZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZnLmFkZChjLmdldFRyZWUoKSksci5hbnRsci5sYW5nLmlzTnVsbChzKSYmKHM9W10pLHMucHVzaChjLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA0OnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ltcG9ydF9pbl9wbV9Qcm9sb2c5NDYpLHA9dGhpcy5wX0ltcG9ydCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmeS5hZGQocC5nZXRUcmVlKCkpLHIuYW50bHIubGFuZy5pc051bGwobykmJihvPVtdKSxvLnB1c2gocC5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fRlRPcHRpb25EZWNsX2luX3BtX1Byb2xvZzk1MiksZD10aGlzLnBtX0ZUT3B0aW9uRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmUy5hZGQoZC5nZXRUcmVlKCkpLHIuYW50bHIubGFuZy5pc051bGwodSkmJih1PVtdKSx1LnB1c2goZC5nZXRUcmVlKCkpfWJyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApO3Q6ZG97dmFyIE09MixfPXRoaXMuaW5wdXQuTEEoMSk7aWYoXz09SSl7dmFyIEQ9dGhpcy5pbnB1dC5MQSgyKTtpZihEPT1zdHx8RD09TXR8fEQ9PW9ufHxEPT1obnx8RD09Wm58fEQ9PUdyfHxEPj10aSYmRDw9bml8fEQ9PUVpKU09MX1zd2l0Y2goTSl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wZ19PcmRlcmVkRGVjbF9pbl9wbV9Qcm9sb2c5NTkpLG09dGhpcy5wZ19PcmRlcmVkRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmRS5hZGQobS5nZXRUcmVlKCkpLHIuYW50bHIubGFuZy5pc051bGwoYSkmJihhPVtdKSxhLnB1c2gobS5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgdH19d2hpbGUoITApO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIFA9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsZSE9bnVsbD9lLnRyZWU6bnVsbCksQj1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gb2QiLGEpLFI9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIGZ0byIsdSksVT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcyIsaSksej1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gbmQiLHMpLFc9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIGRuZCIsbiksWD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gaSIsbyk7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIFY9dGhpcy5hZGFwdG9yLm5pbCgpO1Y9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShrcywiUHJvbG9nIiksVik7dmFyIEo9dGhpcy5hZGFwdG9yLm5pbCgpO0o9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShMcywiRGVmYXVsdE5hbWVzcGFjZURlY2xzIiksSik7d2hpbGUoVy5oYXNOZXh0KCkpdGhpcy5hZGFwdG9yLmFkZENoaWxkKEosVy5uZXh0VHJlZSgpKTtXLnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKFYsSik7dmFyIEo9dGhpcy5hZGFwdG9yLm5pbCgpO0o9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShPcywiU2V0dGVycyIpLEopO3doaWxlKFUuaGFzTmV4dCgpKXRoaXMuYWRhcHRvci5hZGRDaGlsZChKLFUubmV4dFRyZWUoKSk7VS5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChWLEopO3ZhciBKPXRoaXMuYWRhcHRvci5uaWwoKTtKPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoX3MsIk5hbWVzcGFjZURlY2xzIiksSik7d2hpbGUoei5oYXNOZXh0KCkpdGhpcy5hZGFwdG9yLmFkZENoaWxkKEosei5uZXh0VHJlZSgpKTt6LnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKFYsSik7dmFyIEo9dGhpcy5hZGFwdG9yLm5pbCgpO0o9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShQcywiSW1wb3J0cyIpLEopO3doaWxlKFguaGFzTmV4dCgpKXRoaXMuYWRhcHRvci5hZGRDaGlsZChKLFgubmV4dFRyZWUoKSk7WC5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChWLEopO3ZhciBKPXRoaXMuYWRhcHRvci5uaWwoKTtKPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoSHMsIkZUT3B0aW9uRGVjbHMiKSxKKTt3aGlsZShSLmhhc05leHQoKSl0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoSixSLm5leHRUcmVlKCkpO1IucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoVixKKTt2YXIgSj10aGlzLmFkYXB0b3IubmlsKCk7Sj10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKHpzLCJPcmRlcmVkRGVjbHMiKSxKKTt3aGlsZShCLmhhc05leHQoKSl0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoSixCLm5leHRUcmVlKCkpO0IucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoVixKKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxWKSxlLnRyZWU9dH1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChLKXtpZighKEsgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IEs7dGhpcy5yZXBvcnRFcnJvcihLKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxLKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksSyl9ZmluYWxseXt9cmV0dXJuIGV9LHBnX09yZGVyZWREZWNsX3JldHVybjpmdW5jdGlvbigpe3YucGdfT3JkZXJlZERlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucGdfT3JkZXJlZERlY2xfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwZ19PcmRlcmVkRGVjbDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBnX09yZGVyZWREZWNsX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbDt0cnl7dmFyIG89Myx1PXRoaXMuaW5wdXQuTEEoMSk7aWYodSE9SSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDgsMCx0aGlzLmlucHV0KTt0aHJvdyBhfXN3aXRjaCh0aGlzLmlucHV0LkxBKDIpKXtjYXNlIGhuOm89MTticmVhaztjYXNlIHN0OmNhc2Ugb246Y2FzZSBabjpjYXNlIEdyOmNhc2UgdGk6Y2FzZSBuaTpjYXNlIEVpOm89MjticmVhaztjYXNlIE10Om89MzticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGE9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw4LDEsdGhpcy5pbnB1dCk7dGhyb3cgYX1zd2l0Y2gobyl7Y2FzZSAxOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wbV9Db250ZXh0SXRlbURlY2xfaW5fcGdfT3JkZXJlZERlY2wxMjc0KSxuPXRoaXMucG1fQ29udGV4dEl0ZW1EZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wbV9Bbm5vdGF0ZWREZWNsX2luX3BnX09yZGVyZWREZWNsMTI4NiksaT10aGlzLnBtX0Fubm90YXRlZERlY2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BtX09wdGlvbkRlY2xfaW5fcGdfT3JkZXJlZERlY2wxMjk4KSxzPXRoaXMucG1fT3B0aW9uRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gZX0scF9TZXR0ZXJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1NldHRlcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1NldHRlcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfU2V0dGVyOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9TZXR0ZXJfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsO3RyeXt2YXIgcD05O3A9dGhpcy5kZmE5LnByZWRpY3QodGhpcy5pbnB1dCk7c3dpdGNoKHApe2Nhc2UgMTp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fQm91bmRhcnlTcGFjZURlY2xfaW5fcF9TZXR0ZXIxMzI4KSxuPXRoaXMucG1fQm91bmRhcnlTcGFjZURlY2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BtX0RlZmF1bHRDb2xsYXRpb25EZWNsX2luX3BfU2V0dGVyMTM0MCksaT10aGlzLnBtX0RlZmF1bHRDb2xsYXRpb25EZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wbV9CYXNlVVJJRGVjbF9pbl9wX1NldHRlcjEzNTIpLHM9dGhpcy5wbV9CYXNlVVJJRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNDp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fQ29uc3RydWN0aW9uRGVjbF9pbl9wX1NldHRlcjEzNjQpLG89dGhpcy5wbV9Db25zdHJ1Y3Rpb25EZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA1OnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wbV9PcmRlcmluZ01vZGVEZWNsX2luX3BfU2V0dGVyMTM3NiksdT10aGlzLnBtX09yZGVyaW5nTW9kZURlY2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDY6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BtX0VtcHR5T3JkZXJEZWNsX2luX3BfU2V0dGVyMTM4OCksYT10aGlzLnBtX0VtcHR5T3JkZXJEZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA3OnQ9dGhpcy5hZGFwdG9yLm5pbCgpO2lmKCF0aGlzLmxjKGgpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3Rocm93IG5ldyByLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsInBfU2V0dGVyIiwidGhpcy5sYyhYUVUpIil9dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BtX1JldmFsaWRhdGlvbkRlY2xfaW5fcF9TZXR0ZXIxNDAzKSxmPXRoaXMucG1fUmV2YWxpZGF0aW9uRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgODp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fQ29weU5hbWVzcGFjZXNEZWNsX2luX3BfU2V0dGVyMTQxNSksbD10aGlzLnBtX0NvcHlOYW1lc3BhY2VzRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbC5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgOTp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fRGVjaW1hbEZvcm1hdERlY2xfaW5fcF9TZXR0ZXIxNDI3KSxjPXRoaXMucG1fRGVjaW1hbEZvcm1hdERlY2woKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGMuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChkKXtpZighKGQgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGQ7dGhpcy5yZXBvcnRFcnJvcihkKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxkKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZCl9ZmluYWxseXt9cmV0dXJuIGV9LHBtX0JvdW5kYXJ5U3BhY2VEZWNsX3JldHVybjpmdW5jdGlvbigpe3YucG1fQm91bmRhcnlTcGFjZURlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucG1fQm91bmRhcnlTcGFjZURlY2xfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9Cb3VuZGFyeVNwYWNlRGVjbDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBtX0JvdW5kYXJ5U3BhY2VEZWNsX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEksdi5GT0xMT1dfREVDTEFSRV9pbl9wbV9Cb3VuZGFyeVNwYWNlRGVjbDE0NTkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEEsdi5GT0xMT1dfQk9VTkRBUllfU1BBQ0VfaW5fcG1fQm91bmRhcnlTcGFjZURlY2wxNDY1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKTt2YXIgdT0yLGE9dGhpcy5pbnB1dC5MQSgxKTtpZihhPT1JdCl1PTE7ZWxzZXtpZihhIT1RdCl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEwLDAsdGhpcy5pbnB1dCk7dGhyb3cgZn11PTJ9c3dpdGNoKHUpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxJdCx2LkZPTExPV19QUkVTRVJWRV9pbl9wbV9Cb3VuZGFyeVNwYWNlRGVjbDE0NzQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pO2JyZWFrO2Nhc2UgMjpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxRdCx2LkZPTExPV19TVFJJUF9pbl9wbV9Cb3VuZGFyeVNwYWNlRGVjbDE0ODQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pfWk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHppLHYuRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9Cb3VuZGFyeVNwYWNlRGVjbDE0OTEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBlfSxwbV9EZWZhdWx0Q29sbGF0aW9uRGVjbF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBtX0RlZmF1bHRDb2xsYXRpb25EZWNsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX0RlZmF1bHRDb2xsYXRpb25EZWNsX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fRGVmYXVsdENvbGxhdGlvbkRlY2w6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wbV9EZWZhdWx0Q29sbGF0aW9uRGVjbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSSx2LkZPTExPV19ERUNMQVJFX2luX3BtX0RlZmF1bHRDb2xsYXRpb25EZWNsMTUxOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQscSx2LkZPTExPV19ERUZBVUxUX2luX3BtX0RlZmF1bHRDb2xsYXRpb25EZWNsMTUyNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSCx2LkZPTExPV19DT0xMQVRJT05faW5fcG1fRGVmYXVsdENvbGxhdGlvbkRlY2wxNTMxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX0RlZmF1bHRDb2xsYXRpb25EZWNsMTUzNSkscz10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHppLHYuRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9EZWZhdWx0Q29sbGF0aW9uRGVjbDE1MzcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBhO3RoaXMucmVwb3J0RXJyb3IoYSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGEpfWZpbmFsbHl7fXJldHVybiBlfSxwbV9CYXNlVVJJRGVjbF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBtX0Jhc2VVUklEZWNsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX0Jhc2VVUklEZWNsX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fQmFzZVVSSURlY2w6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wbV9CYXNlVVJJRGVjbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gREVDTEFSRSIpLGY9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBTRU1JQ09MT04iKSxsPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gQkFTRV9VUkkiKSxjPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfU3RyaW5nTGl0ZXJhbCIpO3RyeXtuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxJLHYuRk9MTE9XX0RFQ0xBUkVfaW5fcG1fQmFzZVVSSURlY2wxNTczKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmEuYWRkKG4pLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxMLHYuRk9MTE9XX0JBU0VfVVJJX2luX3BtX0Jhc2VVUklEZWNsMTU3OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZsLmFkZChuKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9CYXNlVVJJRGVjbDE1ODUpLHM9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmMuYWRkKHMuZ2V0VHJlZSgpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6aSx2LkZPTExPV19TRU1JQ09MT05faW5fcG1fQmFzZVVSSURlY2wxNTg3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmYuYWRkKGkpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIGg9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHNsIixzIT1udWxsP3MudHJlZTpudWxsKSxwPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGUhPW51bGw/ZS50cmVlOm51bGwpO3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBkPXRoaXMuYWRhcHRvci5uaWwoKTtkPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoVXMsIkJhc2VVUklEZWNsIiksZCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGQsaC5uZXh0VHJlZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxkKSxlLnRyZWU9dH1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChtKXtpZighKG0gaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG07dGhpcy5yZXBvcnRFcnJvcihtKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxtKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbSl9ZmluYWxseXt9cmV0dXJuIGV9LHBtX0NvbnN0cnVjdGlvbkRlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7di5wbV9Db25zdHJ1Y3Rpb25EZWNsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX0NvbnN0cnVjdGlvbkRlY2xfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9Db25zdHJ1Y3Rpb25EZWNsOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucG1fQ29uc3RydWN0aW9uRGVjbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxJLHYuRk9MTE9XX0RFQ0xBUkVfaW5fcG1fQ29uc3RydWN0aW9uRGVjbDE2NDApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGosdi5GT0xMT1dfQ09OU1RSVUNUSU9OX2luX3BtX0NvbnN0cnVjdGlvbkRlY2wxNjQ2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKTt2YXIgdT0yLGE9dGhpcy5pbnB1dC5MQSgxKTtpZihhPT1RdCl1PTE7ZWxzZXtpZihhIT1JdCl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDExLDAsdGhpcy5pbnB1dCk7dGhyb3cgZn11PTJ9c3dpdGNoKHUpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxRdCx2LkZPTExPV19TVFJJUF9pbl9wbV9Db25zdHJ1Y3Rpb25EZWNsMTY1NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKTticmVhaztjYXNlIDI6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSXQsdi5GT0xMT1dfUFJFU0VSVkVfaW5fcG1fQ29uc3RydWN0aW9uRGVjbDE2NjEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHppLHYuRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9Db25zdHJ1Y3Rpb25EZWNsMTY2OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGV9LHBtX09yZGVyaW5nTW9kZURlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7di5wbV9PcmRlcmluZ01vZGVEZWNsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX09yZGVyaW5nTW9kZURlY2xfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9PcmRlcmluZ01vZGVEZWNsOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucG1fT3JkZXJpbmdNb2RlRGVjbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxJLHYuRk9MTE9XX0RFQ0xBUkVfaW5fcG1fT3JkZXJpbmdNb2RlRGVjbDE2OTYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEh0LHYuRk9MTE9XX09SREVSSU5HX2luX3BtX09yZGVyaW5nTW9kZURlY2wxNzAyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKTt2YXIgdT0yLGE9dGhpcy5pbnB1dC5MQSgxKTtpZihhPT1QdCl1PTE7ZWxzZXtpZihhIT1ybil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEyLDAsdGhpcy5pbnB1dCk7dGhyb3cgZn11PTJ9c3dpdGNoKHUpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxQdCx2LkZPTExPV19PUkRFUkVEX2luX3BtX09yZGVyaW5nTW9kZURlY2wxNzExKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpO2JyZWFrO2Nhc2UgMjpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxybix2LkZPTExPV19VTk9SREVSRURfaW5fcG1fT3JkZXJpbmdNb2RlRGVjbDE3MTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHppLHYuRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9PcmRlcmluZ01vZGVEZWNsMTcyNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGV9LHBtX0VtcHR5T3JkZXJEZWNsX3JldHVybjpmdW5jdGlvbigpe3YucG1fRW1wdHlPcmRlckRlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucG1fRW1wdHlPcmRlckRlY2xfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9FbXB0eU9yZGVyRGVjbDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBtX0VtcHR5T3JkZXJEZWNsX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEksdi5GT0xMT1dfREVDTEFSRV9pbl9wbV9FbXB0eU9yZGVyRGVjbDE3NTIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHEsdi5GT0xMT1dfREVGQVVMVF9pbl9wbV9FbXB0eU9yZGVyRGVjbDE3NTgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LER0LHYuRk9MTE9XX09SREVSX2luX3BtX0VtcHR5T3JkZXJEZWNsMTc2NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSyx2LkZPTExPV19FTVBUWV9pbl9wbV9FbXB0eU9yZGVyRGVjbDE3NzApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pO3ZhciB1PTIsYT10aGlzLmlucHV0LkxBKDEpO2lmKGE9PXV0KXU9MTtlbHNle2lmKGEhPXd0KXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTMsMCx0aGlzLmlucHV0KTt0aHJvdyBmfXU9Mn1zd2l0Y2godSl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHV0LHYuRk9MTE9XX0dSRUFURVNUX2luX3BtX0VtcHR5T3JkZXJEZWNsMTc3OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKTticmVhaztjYXNlIDI6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsd3Qsdi5GT0xMT1dfTEVBU1RfaW5fcG1fRW1wdHlPcmRlckRlY2wxNzg1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6aSx2LkZPTExPV19TRU1JQ09MT05faW5fcG1fRW1wdHlPcmRlckRlY2wxNzkyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gZX0scG1fQ29weU5hbWVzcGFjZXNEZWNsX3JldHVybjpmdW5jdGlvbigpe3YucG1fQ29weU5hbWVzcGFjZXNEZWNsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX0NvcHlOYW1lc3BhY2VzRGVjbF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0NvcHlOYW1lc3BhY2VzRGVjbDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBtX0NvcHlOYW1lc3BhY2VzRGVjbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSSx2LkZPTExPV19ERUNMQVJFX2luX3BtX0NvcHlOYW1lc3BhY2VzRGVjbDE4MjApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEYsdi5GT0xMT1dfQ09QWV9OQU1FU1BBQ0VTX2luX3BtX0NvcHlOYW1lc3BhY2VzRGVjbDE4MjYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1ByZXNlcnZlTW9kZV9pbl9wbV9Db3B5TmFtZXNwYWNlc0RlY2wxODMwKSxvPXRoaXMucF9QcmVzZXJ2ZU1vZGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxUaSx2LkZPTExPV19DT01NQV9pbl9wbV9Db3B5TmFtZXNwYWNlc0RlY2wxODMyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0luaGVyaXRNb2RlX2luX3BtX0NvcHlOYW1lc3BhY2VzRGVjbDE4MzQpLHU9dGhpcy5wX0luaGVyaXRNb2RlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsemksdi5GT0xMT1dfU0VNSUNPTE9OX2luX3BtX0NvcHlOYW1lc3BhY2VzRGVjbDE4MzYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYyl7aWYoIShjIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBjO3RoaXMucmVwb3J0RXJyb3IoYyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGMpfWZpbmFsbHl7fXJldHVybiBlfSxwX1ByZXNlcnZlTW9kZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfUHJlc2VydmVNb2RlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfUHJlc2VydmVNb2RlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9QcmVzZXJ2ZU1vZGU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1ByZXNlcnZlTW9kZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBvPTIsdT10aGlzLmlucHV0LkxBKDEpO2lmKHU9PUl0KW89MTtlbHNle2lmKHUhPUx0KXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBhPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTQsMCx0aGlzLmlucHV0KTt0aHJvdyBhfW89Mn1zd2l0Y2gobyl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEl0LHYuRk9MTE9XX1BSRVNFUlZFX2luX3BfUHJlc2VydmVNb2RlMTg2NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pO2JyZWFrO2Nhc2UgMjpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxMdCx2LkZPTExPV19OT19QUkVTRVJWRV9pbl9wX1ByZXNlcnZlTW9kZTE4NzEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwX0luaGVyaXRNb2RlX3JldHVybjpmdW5jdGlvbigpe3YucF9Jbmhlcml0TW9kZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0luaGVyaXRNb2RlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Jbmhlcml0TW9kZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfSW5oZXJpdE1vZGVfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgbz0yLHU9dGhpcy5pbnB1dC5MQSgxKTtpZih1PT1wdClvPTE7ZWxzZXtpZih1IT1rdCl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE1LDAsdGhpcy5pbnB1dCk7dGhyb3cgYX1vPTJ9c3dpdGNoKG8pe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxwdCx2LkZPTExPV19JTkhFUklUX2luX3BfSW5oZXJpdE1vZGUxOTAzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobik7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGt0LHYuRk9MTE9XX05PX0lOSEVSSVRfaW5fcF9Jbmhlcml0TW9kZTE5MDkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwbV9EZWNpbWFsRm9ybWF0RGVjbF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBtX0RlY2ltYWxGb3JtYXREZWNsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX0RlY2ltYWxGb3JtYXREZWNsX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fRGVjaW1hbEZvcm1hdERlY2w6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wbV9EZWNpbWFsRm9ybWF0RGVjbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEksdi5GT0xMT1dfREVDTEFSRV9pbl9wbV9EZWNpbWFsRm9ybWF0RGVjbDE5NDgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pO3ZhciBoPTIscD10aGlzLmlucHV0LkxBKDEpO2lmKHA9PWRuKWg9MTtlbHNle2lmKHAhPXEpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGQ9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNiwwLHRoaXMuaW5wdXQpO3Rocm93IGR9aD0yfXN3aXRjaChoKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZG4sdi5GT0xMT1dfREVDSU1BTF9GT1JNQVRfaW5fcG1fRGVjaW1hbEZvcm1hdERlY2wxOTU2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9RTmFtZV9pbl9wbV9EZWNpbWFsRm9ybWF0RGVjbDE5NjApLG89dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHEsdi5GT0xMT1dfREVGQVVMVF9pbl9wbV9EZWNpbWFsRm9ybWF0RGVjbDE5NjgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGRuLHYuRk9MTE9XX0RFQ0lNQUxfRk9STUFUX2luX3BtX0RlY2ltYWxGb3JtYXREZWNsMTk3NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobil9ZTpkb3t2YXIgbT0yLGc9dGhpcy5pbnB1dC5MQSgxKTtpZihnPj12biYmZzw9bW58fGc+PWJuJiZnPD1Fbnx8Zz09eG58fGc+PUNuJiZnPD1Mbnx8Zz09Rm4pbT0xO3N3aXRjaChtKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfREZQcm9wZXJ0eU5hbWVfaW5fcG1fRGVjaW1hbEZvcm1hdERlY2wxOTgxKSx1PXRoaXMucF9ERlByb3BlcnR5TmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdS5nZXRUcmVlKCkpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHlpLHYuRk9MTE9XX0VRVUFMX2luX3BtX0RlY2ltYWxGb3JtYXREZWNsMTk4Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX0RlY2ltYWxGb3JtYXREZWNsMTk4NSksYT10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYS5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApO3M9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHppLHYuRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9EZWNpbWFsRm9ybWF0RGVjbDE5ODkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGM9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxjKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goeSl7aWYoISh5IGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB5O3RoaXMucmVwb3J0RXJyb3IoeSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQseSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHkpfWZpbmFsbHl7fXJldHVybiBlfSxwX0RGUHJvcGVydHlOYW1lX3JldHVybjpmdW5jdGlvbigpe3YucF9ERlByb3BlcnR5TmFtZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0RGUHJvcGVydHlOYW1lX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9ERlByb3BlcnR5TmFtZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfREZQcm9wZXJ0eU5hbWVfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBzPTEwO3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIHZuOnM9MTticmVhaztjYXNlIGJuOnM9MjticmVhaztjYXNlIHduOnM9MzticmVhaztjYXNlIEVuOnM9NDticmVhaztjYXNlIHhuOnM9NTticmVhaztjYXNlIGtuOnM9NjticmVhaztjYXNlIExuOnM9NzticmVhaztjYXNlIEZuOnM9ODticmVhaztjYXNlIG1uOnM9OTticmVhaztjYXNlIENuOnM9MTA7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBvPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTgsMCx0aGlzLmlucHV0KTt0aHJvdyBvfXN3aXRjaChzKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdm4sdi5GT0xMT1dfREVDSU1BTF9TRVBBUkFUT1JfaW5fcF9ERlByb3BlcnR5TmFtZTIwMTgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpKSk7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGJuLHYuRk9MTE9XX0dST1VQSU5HX1NFUEFSQVRPUl9pbl9wX0RGUHJvcGVydHlOYW1lMjAyNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkpKTticmVhaztjYXNlIDM6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsd24sdi5GT0xMT1dfSU5GSU5JVFlfaW5fcF9ERlByb3BlcnR5TmFtZTIwMzApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpKSk7YnJlYWs7Y2FzZSA0Om49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEVuLHYuRk9MTE9XX01JTlVTX1NJR05faW5fcF9ERlByb3BlcnR5TmFtZTIwMzYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpKSk7YnJlYWs7Y2FzZSA1Om49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHhuLHYuRk9MTE9XX05BTl9pbl9wX0RGUHJvcGVydHlOYW1lMjA0Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkpKTticmVhaztjYXNlIDY6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsa24sdi5GT0xMT1dfUEVSQ0VOVF9pbl9wX0RGUHJvcGVydHlOYW1lMjA0OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkpKTticmVhaztjYXNlIDc6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTG4sdi5GT0xMT1dfUEVSX01JTExFX2luX3BfREZQcm9wZXJ0eU5hbWUyMDU0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaSkpO2JyZWFrO2Nhc2UgODpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxGbix2LkZPTExPV19aRVJPX0RJR0lUX2luX3BfREZQcm9wZXJ0eU5hbWUyMDYwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaSkpO2JyZWFrO2Nhc2UgOTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtbix2LkZPTExPV19ESUdJVF9pbl9wX0RGUHJvcGVydHlOYW1lMjA2Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkpKTticmVhaztjYXNlIDEwOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LENuLHYuRk9MTE9XX1BBVFRFUk5fU0VQQVJBVE9SX2luX3BfREZQcm9wZXJ0eU5hbWUyMDcyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaSkpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaCh1KXtpZighKHUgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHU7dGhpcy5yZXBvcnRFcnJvcih1KSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCx1KSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksdSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfSW1wb3J0X3JldHVybjpmdW5jdGlvbigpe3YucF9JbXBvcnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9JbXBvcnRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ltcG9ydDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfSW1wb3J0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsO3RyeXt2YXIgcz0yLG89dGhpcy5pbnB1dC5MQSgxKTtpZihvIT1jdCl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE5LDAsdGhpcy5pbnB1dCk7dGhyb3cgYX12YXIgdT10aGlzLmlucHV0LkxBKDIpO2lmKHU9PXp0KXM9MTtlbHNle2lmKHUhPVR0KXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBhPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTksMSx0aGlzLmlucHV0KTt0aHJvdyBhfXM9Mn1zd2l0Y2gocyl7Y2FzZSAxOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wbV9TY2hlbWFJbXBvcnRfaW5fcF9JbXBvcnQyMTAxKSxuPXRoaXMucG1fU2NoZW1hSW1wb3J0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wbV9Nb2R1bGVJbXBvcnRfaW5fcF9JbXBvcnQyMTA1KSxpPXRoaXMucG1fTW9kdWxlSW1wb3J0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwbV9TY2hlbWFJbXBvcnRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wbV9TY2hlbWFJbXBvcnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucG1fU2NoZW1hSW1wb3J0X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fU2NoZW1hSW1wb3J0OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucG1fU2NoZW1hSW1wb3J0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsLGM9bnVsbCxoPW51bGwscD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIEFUIiksZD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIElNUE9SVCIpLG09bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBTQ0hFTUEiKSxnPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gU0VNSUNPTE9OIikseT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIENPTU1BIiksYj1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1NjaGVtYVByZWZpeCIpLHc9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9TdHJpbmdMaXRlcmFsIik7dHJ5e249dGhpcy5tYXRjaCh0aGlzLmlucHV0LGN0LHYuRk9MTE9XX0lNUE9SVF9pbl9wbV9TY2hlbWFJbXBvcnQyMTQxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmQuYWRkKG4pLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6dCx2LkZPTExPV19TQ0hFTUFfaW5fcG1fU2NoZW1hSW1wb3J0MjE0Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZtLmFkZChuKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobik7dmFyIEU9MixTPXRoaXMuaW5wdXQuTEEoMSk7aWYoUz09cXx8Uz09TnQpRT0xO3N3aXRjaChFKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU2NoZW1hUHJlZml4X2luX3BtX1NjaGVtYUltcG9ydDIxNTMpLHU9dGhpcy5wX1NjaGVtYVByZWZpeCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmYi5hZGQodS5nZXRUcmVlKCkpfXRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fU2NoZW1hSW1wb3J0MjE1OCksYT10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdy5hZGQoYS5nZXRUcmVlKCkpO3ZhciB4PTIsVD10aGlzLmlucHV0LkxBKDEpO1Q9PUMmJih4PTEpO3N3aXRjaCh4KXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQyx2LkZPTExPV19BVF9pbl9wbV9TY2hlbWFJbXBvcnQyMTYzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnAuYWRkKG4pLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX1NjaGVtYUltcG9ydDIxNjkpLGY9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJncuYWRkKGYuZ2V0VHJlZSgpKSxyLmFudGxyLmxhbmcuaXNOdWxsKG8pJiYobz1bXSksby5wdXNoKGYuZ2V0VHJlZSgpKTtlOmRve3ZhciBOPTIsaz10aGlzLmlucHV0LkxBKDEpO2s9PVRpJiYoTj0xKTtzd2l0Y2goTil7Y2FzZSAxOmk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFRpLHYuRk9MTE9XX0NPTU1BX2luX3BtX1NjaGVtYUltcG9ydDIxNzIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmeS5hZGQoaSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9TY2hlbWFJbXBvcnQyMTc2KSxmPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ3LmFkZChmLmdldFRyZWUoKSksci5hbnRsci5sYW5nLmlzTnVsbChvKSYmKG89W10pLG8ucHVzaChmLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCl9cz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsemksdi5GT0xMT1dfU0VNSUNPTE9OX2luX3BtX1NjaGVtYUltcG9ydDIxODIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmZy5hZGQocyk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXtlLnRyZWU9dDt2YXIgTD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixlIT1udWxsP2UudHJlZTpudWxsKSxBPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBzcCIsdSE9bnVsbD91LnRyZWU6bnVsbCksTz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gdXMiLGEhPW51bGw/YS50cmVlOm51bGwpLE09bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIGFoIixvKTt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgXz10aGlzLmFkYXB0b3IubmlsKCk7Xz10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKEJzLCJTY2hlbWFJbXBvcnQiKSxfKTt2YXIgRD10aGlzLmFkYXB0b3IubmlsKCk7RD10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKGpzLCJTY2hlbWFQcmVmaXgiKSxEKSxBLmhhc05leHQoKSYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKEQsQS5uZXh0VHJlZSgpKSxBLnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKF8sRCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKF8sTy5uZXh0VHJlZSgpKTt2YXIgRD10aGlzLmFkYXB0b3IubmlsKCk7RD10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKHFzLCJBdEhpbnRzIiksRCk7d2hpbGUoTS5oYXNOZXh0KCkpdGhpcy5hZGFwdG9yLmFkZENoaWxkKEQsTS5uZXh0VHJlZSgpKTtNLnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKF8sRCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsXyksZS50cmVlPXR9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goUCl7aWYoIShQIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBQO3RoaXMucmVwb3J0RXJyb3IoUCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsUCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLFApfWZpbmFsbHl7fXJldHVybiBlfSxwX1NjaGVtYVByZWZpeF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfU2NoZW1hUHJlZml4X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfU2NoZW1hUHJlZml4X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9TY2hlbWFQcmVmaXg6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1NjaGVtYVByZWZpeF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gRUxFTUVOVCIpLGY9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBOQU1FU1BBQ0UiKSxsPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gRVFVQUwiKSxjPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gREVGQVVMVCIpLGg9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9OQ05hbWUiKTt0cnl7dmFyIHA9MixkPXRoaXMuaW5wdXQuTEEoMSk7aWYoZD09TnQpcD0xO2Vsc2V7aWYoZCE9cSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgbT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIzLDAsdGhpcy5pbnB1dCk7dGhyb3cgbX1wPTJ9c3dpdGNoKHApe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxOdCx2LkZPTExPV19OQU1FU1BBQ0VfaW5fcF9TY2hlbWFQcmVmaXgyMjUyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmYuYWRkKG4pLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9OQ05hbWVfaW5fcF9TY2hlbWFQcmVmaXgyMjU4KSxzPXRoaXMucF9OQ05hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmguYWRkKHMuZ2V0VHJlZSgpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCx5aSx2LkZPTExPV19FUVVBTF9pbl9wX1NjaGVtYVByZWZpeDIyNjApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmbC5hZGQoaSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXtlLnRyZWU9dDt2YXIgZz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixlIT1udWxsP2UudHJlZTpudWxsKSx5PW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBubiIscyE9bnVsbD9zLnRyZWU6bnVsbCk7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGI9dGhpcy5hZGFwdG9yLm5pbCgpO2I9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShGcywiTmFtZXNwYWNlTmFtZSIpLGIpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChiLHkubmV4dFRyZWUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYiksZS50cmVlPXR9YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHEsdi5GT0xMT1dfREVGQVVMVF9pbl9wX1NjaGVtYVByZWZpeDIyOTkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmYy5hZGQobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LCQsdi5GT0xMT1dfRUxFTUVOVF9pbl9wX1NjaGVtYVByZWZpeDIzMDUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmYS5hZGQobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LE50LHYuRk9MTE9XX05BTUVTUEFDRV9pbl9wX1NjaGVtYVByZWZpeDIzMTEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmZi5hZGQobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIGc9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsZSE9bnVsbD9lLnRyZWU6bnVsbCk7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdGhpcy5hZGFwdG9yLmNyZWF0ZShJcywiRGVmYXVsdEVsZW1lbnROYW1lc3BhY2UiKSksZS50cmVlPXR9fWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHcpe2lmKCEodyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgdzt0aGlzLnJlcG9ydEVycm9yKHcpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHcpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx3KX1maW5hbGx5e31yZXR1cm4gZX0scG1fTW9kdWxlSW1wb3J0X3JldHVybjpmdW5jdGlvbigpe3YucG1fTW9kdWxlSW1wb3J0X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX01vZHVsZUltcG9ydF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX01vZHVsZUltcG9ydDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBtX01vZHVsZUltcG9ydF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGwsaD1udWxsLHA9bnVsbCxkPW51bGwsbT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIEFUIiksZz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIElNUE9SVCIpLHk9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBTRU1JQ09MT04iKSxiPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gTU9EVUxFIiksdz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIENPTU1BIiksRT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIE5BTUVTUEFDRSIpLFM9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBFUVVBTCIpLHg9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9OQ05hbWUiKSxUPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfU3RyaW5nTGl0ZXJhbCIpO3RyeXtuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjdCx2LkZPTExPV19JTVBPUlRfaW5fcG1fTW9kdWxlSW1wb3J0MjM2MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZnLmFkZChuKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVHQsdi5GT0xMT1dfTU9EVUxFX2luX3BtX01vZHVsZUltcG9ydDIzNjcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmYi5hZGQobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pO3ZhciBOPTIsaz10aGlzLmlucHV0LkxBKDEpO2s9PU50JiYoTj0xKTtzd2l0Y2goTil7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LE50LHYuRk9MTE9XX05BTUVTUEFDRV9pbl9wbV9Nb2R1bGVJbXBvcnQyMzc0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJkUuYWRkKG4pLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9OQ05hbWVfaW5fcG1fTW9kdWxlSW1wb3J0MjM4MCksYT10aGlzLnBfTkNOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ4LmFkZChhLmdldFRyZWUoKSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQseWksdi5GT0xMT1dfRVFVQUxfaW5fcG1fTW9kdWxlSW1wb3J0MjM4Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZTLmFkZChpKX10aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX01vZHVsZUltcG9ydDIzODgpLGY9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJlQuYWRkKGYuZ2V0VHJlZSgpKTt2YXIgTD0yLEE9dGhpcy5pbnB1dC5MQSgxKTtBPT1DJiYoTD0xKTtzd2l0Y2goTCl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEMsdi5GT0xMT1dfQVRfaW5fcG1fTW9kdWxlSW1wb3J0MjM5Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZtLmFkZChuKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9Nb2R1bGVJbXBvcnQyMzk5KSxsPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZULmFkZChsLmdldFRyZWUoKSksci5hbnRsci5sYW5nLmlzTnVsbCh1KSYmKHU9W10pLHUucHVzaChsLmdldFRyZWUoKSk7ZTpkb3t2YXIgTz0yLE09dGhpcy5pbnB1dC5MQSgxKTtNPT1UaSYmKE89MSk7c3dpdGNoKE8pe2Nhc2UgMTpzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxUaSx2LkZPTExPV19DT01NQV9pbl9wbV9Nb2R1bGVJbXBvcnQyNDAyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJncuYWRkKHMpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fTW9kdWxlSW1wb3J0MjQwNiksbD10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmVC5hZGQobC5nZXRUcmVlKCkpLHIuYW50bHIubGFuZy5pc051bGwodSkmJih1PVtdKSx1LnB1c2gobC5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApfW89dGhpcy5tYXRjaCh0aGlzLmlucHV0LHppLHYuRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9Nb2R1bGVJbXBvcnQyNDEyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnkuYWRkKG8pO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIF89bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsZSE9bnVsbD9lLnRyZWU6bnVsbCksRD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gbm4iLGEhPW51bGw/YS50cmVlOm51bGwpLFA9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHVzIixmIT1udWxsP2YudHJlZTpudWxsKSxIPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBhaCIsdSk7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIEI9dGhpcy5hZGFwdG9yLm5pbCgpO0I9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShScywiTW9kdWxlSW1wb3J0IiksQik7dmFyIGo9dGhpcy5hZGFwdG9yLm5pbCgpO2o9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShGcywiTmFtZXNwYWNlTmFtZSIpLGopLEQuaGFzTmV4dCgpJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoaixELm5leHRUcmVlKCkpLEQucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoQixqKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoQixQLm5leHRUcmVlKCkpO3ZhciBqPXRoaXMuYWRhcHRvci5uaWwoKTtqPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUocXMsIkF0SGludHMiKSxqKTt3aGlsZShILmhhc05leHQoKSl0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoaixILm5leHRUcmVlKCkpO0gucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoQixqKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxCKSxlLnRyZWU9dH1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChGKXtpZighKEYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IEY7dGhpcy5yZXBvcnRFcnJvcihGKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxGKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksRil9ZmluYWxseXt9cmV0dXJuIGV9LHBtX05hbWVzcGFjZURlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7di5wbV9OYW1lc3BhY2VEZWNsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX05hbWVzcGFjZURlY2xfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9OYW1lc3BhY2VEZWNsOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucG1fTmFtZXNwYWNlRGVjbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gREVDTEFSRSIpLGg9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBTRU1JQ09MT04iKSxwPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gTkFNRVNQQUNFIiksZD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIEVRVUFMIiksbT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX05DTmFtZSIpLGc9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9TdHJpbmdMaXRlcmFsIik7dHJ5e249dGhpcy5tYXRjaCh0aGlzLmlucHV0LEksdi5GT0xMT1dfREVDTEFSRV9pbl9wbV9OYW1lc3BhY2VEZWNsMjQ4MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZjLmFkZChuKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTnQsdi5GT0xMT1dfTkFNRVNQQUNFX2luX3BtX05hbWVzcGFjZURlY2wyNDg3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnAuYWRkKG4pLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9OQ05hbWVfaW5fcG1fTmFtZXNwYWNlRGVjbDI0OTMpLG89dGhpcy5wX05DTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmbS5hZGQoby5nZXRUcmVlKCkpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHlpLHYuRk9MTE9XX0VRVUFMX2luX3BtX05hbWVzcGFjZURlY2wyNDk1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmQuYWRkKGkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fTmFtZXNwYWNlRGVjbDI0OTkpLHU9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmcuYWRkKHUuZ2V0VHJlZSgpKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6aSx2LkZPTExPV19TRU1JQ09MT05faW5fcG1fTmFtZXNwYWNlRGVjbDI1MDEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmaC5hZGQocyk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXtlLnRyZWU9dDt2YXIgeT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixlIT1udWxsP2UudHJlZTpudWxsKSxiPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBubiIsbyE9bnVsbD9vLnRyZWU6bnVsbCksdz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gdXMiLHUhPW51bGw/dS50cmVlOm51bGwpO3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBFPXRoaXMuYWRhcHRvci5uaWwoKTtFPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoRHMsIk5hbWVzcGFjZURlY2wiKSxFKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoRSxiLm5leHRUcmVlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChFLHcubmV4dFRyZWUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsRSksZS50cmVlPXR9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goUyl7aWYoIShTIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBTO3RoaXMucmVwb3J0RXJyb3IoUyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsUyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLFMpfWZpbmFsbHl7fXJldHVybiBlfSxwbV9EZWZhdWx0TmFtZXNwYWNlRGVjbF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBtX0RlZmF1bHROYW1lc3BhY2VEZWNsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX0RlZmF1bHROYW1lc3BhY2VEZWNsX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fRGVmYXVsdE5hbWVzcGFjZURlY2w6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wbV9EZWZhdWx0TmFtZXNwYWNlRGVjbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSSx2LkZPTExPV19ERUNMQVJFX2luX3BtX0RlZmF1bHROYW1lc3BhY2VEZWNsMjU1OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQscSx2LkZPTExPV19ERUZBVUxUX2luX3BtX0RlZmF1bHROYW1lc3BhY2VEZWNsMjU2NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobik7dmFyIGE9MixmPXRoaXMuaW5wdXQuTEEoMSk7aWYoZj09JClhPTE7ZWxzZXtpZihmIT1zdCl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgbD1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDI3LDAsdGhpcy5pbnB1dCk7dGhyb3cgbH1hPTJ9c3dpdGNoKGEpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCwkLHYuRk9MTE9XX0VMRU1FTlRfaW5fcG1fRGVmYXVsdE5hbWVzcGFjZURlY2wyNTcxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpO2JyZWFrO2Nhc2UgMjpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxzdCx2LkZPTExPV19GVU5DVElPTl9pbl9wbV9EZWZhdWx0TmFtZXNwYWNlRGVjbDI1NzcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LE50LHYuRk9MTE9XX05BTUVTUEFDRV9pbl9wbV9EZWZhdWx0TmFtZXNwYWNlRGVjbDI1ODQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fRGVmYXVsdE5hbWVzcGFjZURlY2wyNTg4KSxzPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsemksdi5GT0xMT1dfU0VNSUNPTE9OX2luX3BtX0RlZmF1bHROYW1lc3BhY2VEZWNsMjU5MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChjKXtpZighKGMgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGM7dGhpcy5yZXBvcnRFcnJvcihjKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxjKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYyl9ZmluYWxseXt9cmV0dXJuIGV9LHBtX0Fubm90YXRlZERlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7di5wbV9Bbm5vdGF0ZWREZWNsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX0Fubm90YXRlZERlY2xfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9Bbm5vdGF0ZWREZWNsOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucG1fQW5ub3RhdGVkRGVjbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEksdi5GT0xMT1dfREVDTEFSRV9pbl9wbV9Bbm5vdGF0ZWREZWNsMjYxOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobik7ZTpkb3t2YXIgZj0yLGw9dGhpcy5pbnB1dC5MQSgxKTtsPT1FaSYmKGY9MSk7c3dpdGNoKGYpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Bbm5vdGF0aW9uX2luX3BtX0Fubm90YXRlZERlY2wyNjIyKSxzPXRoaXMucF9Bbm5vdGF0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCk7dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BnX0Fubm90YXRlZERlY2xfaW5fcG1fQW5ub3RhdGVkRGVjbDI2MjUpLG89dGhpcy5wZ19Bbm5vdGF0ZWREZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsemksdi5GT0xMT1dfU0VNSUNPTE9OX2luX3BtX0Fubm90YXRlZERlY2wyNjI3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGMpe2lmKCEoYyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgYzt0aGlzLnJlcG9ydEVycm9yKGMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGMpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxjKX1maW5hbGx5e31yZXR1cm4gZX0scGdfQW5ub3RhdGVkRGVjbF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBnX0Fubm90YXRlZERlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucGdfQW5ub3RhdGVkRGVjbF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBnX0Fubm90YXRlZERlY2w6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wZ19Bbm5vdGF0ZWREZWNsX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsO3RyeXt2YXIgYT01LGY9dGhpcy5pbnB1dC5MQSgxKTtpZihmPT1vbilhPTE7ZWxzZSBpZihmPT1abiYmdGhpcy5sYyhoKSlhPTI7ZWxzZSBpZihmPT1zdClhPTI7ZWxzZSBpZihmPT1HciYmdGhpcy5sYyhwKSlhPTM7ZWxzZSBpZihmPT10aSYmdGhpcy5sYyhwKSlhPTQ7ZWxzZXtpZihmIT1uaXx8IXRoaXMubGMocCkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGw9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyOSwwLHRoaXMuaW5wdXQpO3Rocm93IGx9YT01fXN3aXRjaChhKXtjYXNlIDE6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVmFyRGVjbF9pbl9wZ19Bbm5vdGF0ZWREZWNsMjY1MSksbj10aGlzLnBfVmFyRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fRnVuY3Rpb25EZWNsX2luX3BnX0Fubm90YXRlZERlY2wyNjYzKSxpPXRoaXMucG1fRnVuY3Rpb25EZWNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOnQ9dGhpcy5hZGFwdG9yLm5pbCgpO2lmKCF0aGlzLmxjKHApKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3Rocm93IG5ldyByLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsInBnX0Fubm90YXRlZERlY2wiLCJ0aGlzLmxjKFpPUkJBKSIpfXRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0NvbGxlY3Rpb25EZWNsX2luX3BnX0Fubm90YXRlZERlY2wyNjc4KSxzPXRoaXMucF9Db2xsZWN0aW9uRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNDp0PXRoaXMuYWRhcHRvci5uaWwoKTtpZighdGhpcy5sYyhwKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt0aHJvdyBuZXcgci5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJwZ19Bbm5vdGF0ZWREZWNsIiwidGhpcy5sYyhaT1JCQSkiKX10aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9JbmRleERlY2xfaW5fcGdfQW5ub3RhdGVkRGVjbDI2OTMpLG89dGhpcy5wX0luZGV4RGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNTp0PXRoaXMuYWRhcHRvci5uaWwoKTtpZighdGhpcy5sYyhwKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt0aHJvdyBuZXcgci5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJwZ19Bbm5vdGF0ZWREZWNsIiwidGhpcy5sYyhaT1JCQSkiKX10aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9JQ0RlY2xfaW5fcGdfQW5ub3RhdGVkRGVjbDI3MDgpLHU9dGhpcy5wX0lDRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdS5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGMpe2lmKCEoYyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgYzt0aGlzLnJlcG9ydEVycm9yKGMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGMpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxjKX1maW5hbGx5e31yZXR1cm4gZX0scF9Bbm5vdGF0aW9uX3JldHVybjpmdW5jdGlvbigpe3YucF9Bbm5vdGF0aW9uX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQW5ub3RhdGlvbl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQW5ub3RhdGlvbjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQW5ub3RhdGlvbl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGwsaD1udWxsLHA9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRWksdi5GT0xMT1dfQU5OX1BFUkNFTlRfaW5fcF9Bbm5vdGF0aW9uMjczNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9RTmFtZV9pbl9wX0Fubm90YXRpb24yNzM2KSx1PXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdS5nZXRUcmVlKCkpO3ZhciBkPTIsbT10aGlzLmlucHV0LkxBKDEpO209PWNpJiYoZD0xKTtzd2l0Y2goZCl7Y2FzZSAxOmk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGNpLHYuRk9MTE9XX0xQQVJFTl9pbl9wX0Fubm90YXRpb24yNzM5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYykpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0xpdGVyYWxfaW5fcF9Bbm5vdGF0aW9uMjc0MSksYT10aGlzLnBfTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYS5nZXRUcmVlKCkpO2U6ZG97dmFyIGc9Mix5PXRoaXMuaW5wdXQuTEEoMSk7eT09VGkmJihnPTEpO3N3aXRjaChnKXtjYXNlIDE6cz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVGksdi5GT0xMT1dfQ09NTUFfaW5fcF9Bbm5vdGF0aW9uMjc0NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGgpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9MaXRlcmFsX2luX3BfQW5ub3RhdGlvbjI3NDYpLGY9dGhpcy5wX0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTtvPXRoaXMubWF0Y2godGhpcy5pbnB1dCxoaSx2LkZPTExPV19SUEFSRU5faW5fcF9Bbm5vdGF0aW9uMjc1MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocD10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHApKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChiKXtpZighKGIgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGI7dGhpcy5yZXBvcnRFcnJvcihiKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxiKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYil9ZmluYWxseXt9cmV0dXJuIGV9LHBfVmFyRGVjbF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfVmFyRGVjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1ZhckRlY2xfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1ZhckRlY2w6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1ZhckRlY2xfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsLGg9bnVsbCxwPW51bGwsZD1udWxsLG09bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBET0xMQVIiKSxnPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gRVhURVJOQUwiKSx5PW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gVkFSSUFCTEUiKSxiPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gQklORCIpLHc9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9UeXBlRGVjbGFyYXRpb24iKSxFPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfUU5hbWUiKSxTPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfVmFyRGVmYXVsdFZhbHVlIikseD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1ZhclZhbHVlIik7dHJ5e249dGhpcy5tYXRjaCh0aGlzLmlucHV0LG9uLHYuRk9MTE9XX1ZBUklBQkxFX2luX3BfVmFyRGVjbDI3ODApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmeS5hZGQobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBpLHYuRk9MTE9XX0RPTExBUl9pbl9wX1ZhckRlY2wyNzg2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJm0uYWRkKGkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1FOYW1lX2luX3BfVmFyRGVjbDI3OTApLHU9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZFLmFkZCh1LmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KGksdT91LnN0b3A6bnVsbCk7dmFyIE49MixDPXRoaXMuaW5wdXQuTEEoMSk7Qz09VCYmKE49MSk7c3dpdGNoKE4pe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9UeXBlRGVjbGFyYXRpb25faW5fcF9WYXJEZWNsMjc5NiksYT10aGlzLnBfVHlwZURlY2xhcmF0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ3LmFkZChhLmdldFRyZWUoKSl9dmFyIGs9MixMPXRoaXMuaW5wdXQuTEEoMSk7aWYoTD09Ymkpaz0xO2Vsc2V7aWYoTCE9dHQpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIEE9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwzNCwwLHRoaXMuaW5wdXQpO3Rocm93IEF9az0yfXN3aXRjaChrKXtjYXNlIDE6cz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsYmksdi5GT0xMT1dfQklORF9pbl9wX1ZhckRlY2wyODAxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmIuYWRkKHMpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1ZhclZhbHVlX2luX3BfVmFyRGVjbDI4MDUpLGY9dGhpcy5wX1ZhclZhbHVlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ4LmFkZChmLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHR0LHYuRk9MTE9XX0VYVEVSTkFMX2luX3BfVmFyRGVjbDI4MTMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmZy5hZGQobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pO3ZhciBPPTIsTT10aGlzLmlucHV0LkxBKDEpO009PWJpJiYoTz0xKTtzd2l0Y2goTyl7Y2FzZSAxOm89dGhpcy5tYXRjaCh0aGlzLmlucHV0LGJpLHYuRk9MTE9XX0JJTkRfaW5fcF9WYXJEZWNsMjgxOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZiLmFkZChvKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9WYXJEZWZhdWx0VmFsdWVfaW5fcF9WYXJEZWNsMjgyMiksbD10aGlzLnBfVmFyRGVmYXVsdFZhbHVlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZTLmFkZChsLmdldFRyZWUoKSl9fWlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIF89bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHFuIix1IT1udWxsP3UudHJlZTpudWxsKSxEPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiB2diIsZiE9bnVsbD9mLnRyZWU6bnVsbCksUD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixlIT1udWxsP2UudHJlZTpudWxsKSxIPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiB2ZHYiLGwhPW51bGw/bC50cmVlOm51bGwpLEI9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHRkIixhIT1udWxsP2EudHJlZTpudWxsKTt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgaj10aGlzLmFkYXB0b3IubmlsKCk7aj10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKFdzLCJWYXJEZWNsIiksaiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGosXy5uZXh0VHJlZSgpKTt2YXIgRj10aGlzLmFkYXB0b3IubmlsKCk7Rj10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKFhzLCJWYXJUeXBlIiksRiksQi5oYXNOZXh0KCkmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChGLEIubmV4dFRyZWUoKSksQi5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChqLEYpO3ZhciBGPXRoaXMuYWRhcHRvci5uaWwoKTtGPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoVnMsIlZhclZhbHVlIiksRiksRC5oYXNOZXh0KCkmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChGLEQubmV4dFRyZWUoKSksRC5yZXNldCgpO3ZhciBJPXRoaXMuYWRhcHRvci5uaWwoKTtJPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoJHMsIlZhckRlZmF1bHRWYWx1ZSIpLEkpLEguaGFzTmV4dCgpJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoSSxILm5leHRUcmVlKCkpLEgucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoRixJKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoaixGKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxqKSxlLnRyZWU9dH1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChxKXtpZighKHEgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHE7dGhpcy5yZXBvcnRFcnJvcihxKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxxKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfVmFyVmFsdWVfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1ZhclZhbHVlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfVmFyVmFsdWVfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1ZhclZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9WYXJWYWx1ZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVmFyVmFsdWUyOTAxKSxuPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfVmFyRGVmYXVsdFZhbHVlX3JldHVybjpmdW5jdGlvbigpe3YucF9WYXJEZWZhdWx0VmFsdWVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9WYXJEZWZhdWx0VmFsdWVfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1ZhckRlZmF1bHRWYWx1ZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfVmFyRGVmYXVsdFZhbHVlX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9WYXJEZWZhdWx0VmFsdWUyOTI4KSxuPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGV9LHBtX0NvbnRleHRJdGVtRGVjbF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBtX0NvbnRleHRJdGVtRGVjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wbV9Db250ZXh0SXRlbURlY2xfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9Db250ZXh0SXRlbURlY2w6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wbV9Db250ZXh0SXRlbURlY2xfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsLGg9bnVsbCxwPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEksdi5GT0xMT1dfREVDTEFSRV9pbl9wbV9Db250ZXh0SXRlbURlY2wyOTU3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxobix2LkZPTExPV19DT05URVhUX2luX3BtX0NvbnRleHRJdGVtRGVjbDI5NjMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGd0LHYuRk9MTE9XX0lURU1faW5fcG1fQ29udGV4dEl0ZW1EZWNsMjk2OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobik7dmFyIGQ9MixtPXRoaXMuaW5wdXQuTEEoMSk7bT09VCYmKGQ9MSk7c3dpdGNoKGQpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxULHYuRk9MTE9XX0FTX2luX3BtX0NvbnRleHRJdGVtRGVjbDI5NzYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0l0ZW1UeXBlX2luX3BtX0NvbnRleHRJdGVtRGVjbDI5ODApLHU9dGhpcy5wX0l0ZW1UeXBlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSl9dmFyIGc9Mix5PXRoaXMuaW5wdXQuTEEoMSk7aWYoeT09YmkpZz0xO2Vsc2V7aWYoeSE9dHQpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGI9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwzNywwLHRoaXMuaW5wdXQpO3Rocm93IGJ9Zz0yfXN3aXRjaChnKXtjYXNlIDE6aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsYmksdi5GT0xMT1dfQklORF9pbl9wbV9Db250ZXh0SXRlbURlY2wyOTg2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYykpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1ZhclZhbHVlX2luX3BtX0NvbnRleHRJdGVtRGVjbDI5ODgpLGE9dGhpcy5wX1ZhclZhbHVlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHR0LHYuRk9MTE9XX0VYVEVSTkFMX2luX3BtX0NvbnRleHRJdGVtRGVjbDI5OTYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pO3ZhciB3PTIsRT10aGlzLmlucHV0LkxBKDEpO0U9PWJpJiYodz0xKTtzd2l0Y2godyl7Y2FzZSAxOnM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGJpLHYuRk9MTE9XX0JJTkRfaW5fcG1fQ29udGV4dEl0ZW1EZWNsMzAwMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGgpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9WYXJEZWZhdWx0VmFsdWVfaW5fcG1fQ29udGV4dEl0ZW1EZWNsMzAwMyksZj10aGlzLnBfVmFyRGVmYXVsdFZhbHVlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmLmdldFRyZWUoKSl9fW89dGhpcy5tYXRjaCh0aGlzLmlucHV0LHppLHYuRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9Db250ZXh0SXRlbURlY2wzMDA5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihwPXRoaXMuYWRhcHRvci5jcmVhdGUobyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKFMpe2lmKCEoUyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgUzt0aGlzLnJlcG9ydEVycm9yKFMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LFMpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxTKX1maW5hbGx5e31yZXR1cm4gZX0scG1fRnVuY3Rpb25EZWNsX3JldHVybjpmdW5jdGlvbigpe3YucG1fRnVuY3Rpb25EZWNsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX0Z1bmN0aW9uRGVjbF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0Z1bmN0aW9uRGVjbDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBtX0Z1bmN0aW9uRGVjbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGwscD1udWxsLGQ9bnVsbCxtPW51bGwsZz1udWxsLHk9bnVsbCxiPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gRlVOQ1RJT04iKSx3PW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gTEJSQUNLRVQiKSxFPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gQVMiKSxTPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gUlBBUkVOIikseD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIEVYVEVSTkFMIiksTj1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIFJCUkFDS0VUIiksQz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIExQQVJFTiIpLGs9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBVUERBVElORyIpLEw9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByIiksQT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1BhcmFtTGlzdCIpLE89bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcGdfRlFOYW1lIiksTT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1NlcXVlbmNlVHlwZSIpO3RyeXt2YXIgXz0yLEQ9dGhpcy5pbnB1dC5MQSgxKTtEPT1abiYmdGhpcy5sYyhoKSYmKF89MSk7c3dpdGNoKF8pe2Nhc2UgMTppZighdGhpcy5sYyhoKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt0aHJvdyBuZXcgci5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJwbV9GdW5jdGlvbkRlY2wiLCJ0aGlzLmxjKFhRVSkiKX1uPXRoaXMubWF0Y2godGhpcy5pbnB1dCxabix2LkZPTExPV19VUERBVElOR19pbl9wbV9GdW5jdGlvbkRlY2wzMDQyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmsuYWRkKG4pLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKX1uPXRoaXMubWF0Y2godGhpcy5pbnB1dCxzdCx2LkZPTExPV19GVU5DVElPTl9pbl9wbV9GdW5jdGlvbkRlY2wzMDUwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmIuYWRkKG4pLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcGdfRlFOYW1lX2luX3BtX0Z1bmN0aW9uRGVjbDMwNTYpLGE9dGhpcy5wZ19GUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJk8uYWRkKGEuZ2V0VHJlZSgpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjaSx2LkZPTExPV19MUEFSRU5faW5fcG1fRnVuY3Rpb25EZWNsMzA1OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZDLmFkZChpKTt2YXIgUD0yLEg9dGhpcy5pbnB1dC5MQSgxKTtIPT1waSYmKFA9MSk7c3dpdGNoKFApe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9QYXJhbUxpc3RfaW5fcG1fRnVuY3Rpb25EZWNsMzA2MiksZj10aGlzLnBfUGFyYW1MaXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZBLmFkZChmLmdldFRyZWUoKSl9cz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaGksdi5GT0xMT1dfUlBBUkVOX2luX3BtX0Z1bmN0aW9uRGVjbDMwNjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmUy5hZGQocyk7dmFyIEI9MixqPXRoaXMuaW5wdXQuTEEoMSk7aj09VCYmKEI9MSk7c3dpdGNoKEIpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxULHYuRk9MTE9XX0FTX2luX3BtX0Z1bmN0aW9uRGVjbDMwNzApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmRS5hZGQobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1NlcXVlbmNlVHlwZV9pbl9wbV9GdW5jdGlvbkRlY2wzMDc2KSxsPXRoaXMucF9TZXF1ZW5jZVR5cGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJk0uYWRkKGwuZ2V0VHJlZSgpKX12YXIgRj0yLEk9dGhpcy5pbnB1dC5MQSgxKTtpZihJPT1kaSlGPTE7ZWxzZXtpZihJIT10dCl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgcT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDQxLDAsdGhpcy5pbnB1dCk7dGhyb3cgcX1GPTJ9c3dpdGNoKEYpe2Nhc2UgMTpvPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkaSx2LkZPTExPV19MQlJBQ0tFVF9pbl9wbV9GdW5jdGlvbkRlY2wzMDgxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJncuYWRkKG8pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHJfaW5fcG1fRnVuY3Rpb25EZWNsMzA4NSksYz10aGlzLnBfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmTC5hZGQoYy5nZXRUcmVlKCkpLHU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHZpLHYuRk9MTE9XX1JCUkFDS0VUX2luX3BtX0Z1bmN0aW9uRGVjbDMwODcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmTi5hZGQodSk7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHR0LHYuRk9MTE9XX0VYVEVSTkFMX2luX3BtX0Z1bmN0aW9uRGVjbDMwOTMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmeC5hZGQobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pfWlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIFI9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHNvZSIsYyE9bnVsbD9jLnRyZWU6bnVsbCksVT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcW4iLGEhPW51bGw/YS50cmVlOm51bGwpLHo9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsZSE9bnVsbD9lLnRyZWU6bnVsbCksVz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcGwiLGYhPW51bGw/Zi50cmVlOm51bGwpLFg9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHN0IixsIT1udWxsP2wudHJlZTpudWxsKTt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgVj10aGlzLmFkYXB0b3IubmlsKCk7Vj10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKEtzLCJGdW5jdGlvbkRlY2wiKSxWKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoVixVLm5leHRUcmVlKCkpO3ZhciAkPXRoaXMuYWRhcHRvci5uaWwoKTskPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoUXMsIlBhcmFtTGlzdCIpLCQpLFcuaGFzTmV4dCgpJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoJCxXLm5leHRUcmVlKCkpLFcucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoViwkKTt2YXIgJD10aGlzLmFkYXB0b3IubmlsKCk7JD10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKEdzLCJSZXR1cm5UeXBlIiksJCksWC5oYXNOZXh0KCkmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCgkLFgubmV4dFRyZWUoKSksWC5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChWLCQpLFIuaGFzTmV4dCgpJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoVixSLm5leHRUcmVlKCkpLFIucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxWKSxlLnRyZWU9dH1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChKKXtpZighKEogaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IEo7dGhpcy5yZXBvcnRFcnJvcihKKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxKKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksSil9ZmluYWxseXt9cmV0dXJuIGV9LHBfUGFyYW1MaXN0X3JldHVybjpmdW5jdGlvbigpe3YucF9QYXJhbUxpc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9QYXJhbUxpc3RfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1BhcmFtTGlzdDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfUGFyYW1MaXN0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIENPTU1BIiksYT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1BhcmFtIik7dHJ5e3RoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1BhcmFtX2luX3BfUGFyYW1MaXN0MzE3MCkscz10aGlzLnBfUGFyYW0oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmEuYWRkKHMuZ2V0VHJlZSgpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKHMuZ2V0VHJlZSgpKTtlOmRve3ZhciBmPTIsbD10aGlzLmlucHV0LkxBKDEpO2w9PVRpJiYoZj0xKTtzd2l0Y2goZil7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFRpLHYuRk9MTE9XX0NPTU1BX2luX3BfUGFyYW1MaXN0MzE3Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ1LmFkZChuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9QYXJhbV9pbl9wX1BhcmFtTGlzdDMxNzcpLHM9dGhpcy5wX1BhcmFtKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZhLmFkZChzLmdldFRyZWUoKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChzLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXtlLnRyZWU9dDt2YXIgYz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixlIT1udWxsP2UudHJlZTpudWxsKSxoPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBwIixpKTt0PXRoaXMuYWRhcHRvci5uaWwoKTtpZighaC5oYXNOZXh0KCkpdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVFYXJseUV4aXRFeGNlcHRpb247d2hpbGUoaC5oYXNOZXh0KCkpdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaC5uZXh0VHJlZSgpKTtoLnJlc2V0KCksZS50cmVlPXR9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gocCl7aWYoIShwIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBwO3RoaXMucmVwb3J0RXJyb3IocCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQscCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHApfWZpbmFsbHl7fXJldHVybiBlfSxwX1BhcmFtX3JldHVybjpmdW5jdGlvbigpe3YucF9QYXJhbV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1BhcmFtX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9QYXJhbTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfUGFyYW1fcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gRE9MTEFSIiksYT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1R5cGVEZWNsYXJhdGlvbiIpLGY9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9RTmFtZSIpO3RyeXtuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxwaSx2LkZPTExPV19ET0xMQVJfaW5fcF9QYXJhbTMyMzcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdS5hZGQobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUU5hbWVfaW5fcF9QYXJhbTMyNDEpLGk9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZmLmFkZChpLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KG4saT9pLnN0b3A6bnVsbCk7dmFyIGw9MixjPXRoaXMuaW5wdXQuTEEoMSk7Yz09VCYmKGw9MSk7c3dpdGNoKGwpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9UeXBlRGVjbGFyYXRpb25faW5fcF9QYXJhbTMyNDcpLHM9dGhpcy5wX1R5cGVEZWNsYXJhdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmYS5hZGQocy5nZXRUcmVlKCkpfWlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIGg9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHFuIixpIT1udWxsP2kudHJlZTpudWxsKSxwPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGUhPW51bGw/ZS50cmVlOm51bGwpLGQ9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHRkIixzIT1udWxsP3MudHJlZTpudWxsKTt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgbT10aGlzLmFkYXB0b3IubmlsKCk7bT10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKGVvLCJQYXJhbSIpLG0pLHRoaXMuYWRhcHRvci5hZGRDaGlsZChtLGgubmV4dFRyZWUoKSksZC5oYXNOZXh0KCkmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChtLGQubmV4dFRyZWUoKSksZC5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG0pLGUudHJlZT10fWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGcpe2lmKCEoZyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZzt0aGlzLnJlcG9ydEVycm9yKGcpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGcpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxnKX1maW5hbGx5e31yZXR1cm4gZX0scG1fRnVuY3Rpb25Cb2R5X3JldHVybjpmdW5jdGlvbigpe3YucG1fRnVuY3Rpb25Cb2R5X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX0Z1bmN0aW9uQm9keV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0Z1bmN0aW9uQm9keTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBtX0Z1bmN0aW9uQm9keV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FbmNsb3NlZEV4cHJfaW5fcG1fRnVuY3Rpb25Cb2R5MzMwMyksbj10aGlzLnBfRW5jbG9zZWRFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBlfSxwX0VuY2xvc2VkRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRW5jbG9zZWRFeHByX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRW5jbG9zZWRFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9FbmNsb3NlZEV4cHI6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0VuY2xvc2VkRXhwcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gTEJSQUNLRVQiKSxmPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gUkJSQUNLRVQiKSxsPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfRXhwciIpO3RyeXtuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkaSx2LkZPTExPV19MQlJBQ0tFVF9pbl9wX0VuY2xvc2VkRXhwcjMzMzApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmYS5hZGQobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwcl9pbl9wX0VuY2xvc2VkRXhwcjMzMzIpLHM9dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmbC5hZGQocy5nZXRUcmVlKCkpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHZpLHYuRk9MTE9XX1JCUkFDS0VUX2luX3BfRW5jbG9zZWRFeHByMzMzNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZmLmFkZChpKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2UudHJlZT10O3ZhciBjPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGUhPW51bGw/ZS50cmVlOm51bGwpO3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBoPXRoaXMuYWRhcHRvci5uaWwoKTtoPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUodG8sIkVuY2xvc2VkRXhwciIpLGgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChoLGwubmV4dFRyZWUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaCksZS50cmVlPXR9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gocCl7aWYoIShwIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBwO3RoaXMucmVwb3J0RXJyb3IocCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQscCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHApfWZpbmFsbHl7fXJldHVybiBlfSxwbV9PcHRpb25EZWNsX3JldHVybjpmdW5jdGlvbigpe3YucG1fT3B0aW9uRGVjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wbV9PcHRpb25EZWNsX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fT3B0aW9uRGVjbDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBtX09wdGlvbkRlY2xfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxJLHYuRk9MTE9XX0RFQ0xBUkVfaW5fcG1fT3B0aW9uRGVjbDMzODcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LE10LHYuRk9MTE9XX09QVElPTl9pbl9wbV9PcHRpb25EZWNsMzM5Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUU5hbWVfaW5fcG1fT3B0aW9uRGVjbDMzOTcpLHM9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9PcHRpb25EZWNsMzM5OSksbz10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHppLHYuRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9PcHRpb25EZWNsMzQwMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBtX1F1ZXJ5Qm9keV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBtX1F1ZXJ5Qm9keV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wbV9RdWVyeUJvZHlfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9RdWVyeUJvZHk6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wbV9RdWVyeUJvZHlfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGw7dHJ5e3ZhciBzPTI7cz10aGlzLmRmYTQ0LnByZWRpY3QodGhpcy5pbnB1dCk7c3dpdGNoKHMpe2Nhc2UgMTp0PXRoaXMuYWRhcHRvci5uaWwoKTtpZighdGhpcy5sYyhjKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt0aHJvdyBuZXcgci5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJwbV9RdWVyeUJvZHkiLCJ0aGlzLmxjKFhRUykiKX10aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Qcm9ncmFtX2luX3BtX1F1ZXJ5Qm9keTM0MzApLG49dGhpcy5wX1Byb2dyYW0oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwcl9pbl9wbV9RdWVyeUJvZHkzNDQyKSxpPXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChvKXtpZighKG8gaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG87dGhpcy5yZXBvcnRFcnJvcihvKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxvKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0V4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0V4cHI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgdi5wX0V4cHJfcmV0dXJuO24uc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbDt0cnl7aT10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0V4cHIzNDc4KSxvPXRoaXMucF9FeHByU2luZ2xlKGUpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBuO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGksby5nZXRUcmVlKCkpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmIXQpdGhyb3cgbmV3IGw7ZTpkb3t2YXIgZj0yLGM9dGhpcy5pbnB1dC5MQSgxKTtjPT1UaSYmKGY9MSk7c3dpdGNoKGYpe2Nhc2UgMTpzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxUaSx2LkZPTExPV19DT01NQV9pbl9wX0V4cHIzNDk0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gbjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGksYSkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9FeHByMzQ5NiksdT10aGlzLnBfRXhwclNpbmdsZShlKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gbjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChpLHUuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTtuLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobi50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoaSksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhuLnRyZWUsbi5zdGFydCxuLnN0b3ApKX1jYXRjaChoKXtpZihoIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKXJlcG9ydEVycm9yKGgpLHJlY292ZXIodGhpcy5pbnB1dCxoKSxuLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LG4uc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaCk7ZWxzZXtpZighKGggaW5zdGFuY2VvZiBsKSl0aHJvdyBoO2k9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChpLG8uZ2V0VHJlZSgpKSxuLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksbi50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoaSksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhuLnRyZWUsbi5zdGFydCxuLnN0b3ApfX1maW5hbGx5e31yZXR1cm4gbn0scF9FeHByU2luZ2xlX3JldHVybjpmdW5jdGlvbigpe3YucF9FeHByU2luZ2xlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRXhwclNpbmdsZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRXhwclNpbmdsZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgdi5wX0V4cHJTaW5nbGVfcmV0dXJuO3Quc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsO3RyeXt2YXIgbD02O2w9dGhpcy5kZmE0Ni5wcmVkaWN0KHRoaXMuaW5wdXQpO3N3aXRjaChsKXtjYXNlIDE6bj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRkxXT1JIeWJyaWRfaW5fcF9FeHByU2luZ2xlMzU2MyksaT10aGlzLnBfRkxXT1JIeWJyaWQoZSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOm49dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0lmSHlicmlkX2luX3BfRXhwclNpbmdsZTM1OTMpLHM9dGhpcy5wX0lmSHlicmlkKGUpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4scy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMzpuPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Td2l0Y2hIeWJyaWRfaW5fcF9FeHByU2luZ2xlMzYxOSksbz10aGlzLnBfU3dpdGNoSHlicmlkKGUpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sby5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNDpuPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9UeXBlc3dpdGNoSHlicmlkX2luX3BfRXhwclNpbmdsZTM2NDEpLHU9dGhpcy5wX1R5cGVzd2l0Y2hIeWJyaWQoZSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobix1LmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA1Om49dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1RyeUNhdGNoSHlicmlkX2luX3BfRXhwclNpbmdsZTM2NjgpLGE9dGhpcy5wX1RyeUNhdGNoSHlicmlkKGUpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sYS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNjpuPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByU2ltcGxlX2luX3BfRXhwclNpbmdsZTM2ODEpLGY9dGhpcy5wX0V4cHJTaW1wbGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGYuZ2V0VHJlZSgpKX10LnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodC50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcobiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyh0LnRyZWUsdC5zdGFydCx0LnN0b3ApKX1jYXRjaChjKXtpZighKGMgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGM7dGhpcy5yZXBvcnRFcnJvcihjKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxjKSx0LnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LHQuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYyl9ZmluYWxseXt9cmV0dXJuIHR9LHBfRkxXT1JIeWJyaWRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZMV09SSHlicmlkX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRkxXT1JIeWJyaWRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZMV09SSHlicmlkOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyB2LnBfRkxXT1JIeWJyaWRfcmV0dXJuO3Quc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsO3RyeXtuPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Jbml0aWFsQ2xhdXNlX2luX3BfRkxXT1JIeWJyaWQzNzA4KSxpPXRoaXMucF9Jbml0aWFsQ2xhdXNlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixpLmdldFRyZWUoKSk7ZTpkb3t2YXIgdT0yLGE9dGhpcy5pbnB1dC5MQSgxKTtpZihhPT1pdHx8YT09RXR8fGE9PUR0fHxhPT1KdHx8YT09YW58fGE9PXBufHxhPT15bil1PTE7c3dpdGNoKHUpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9JbnRlcm1lZGlhdGVDbGF1c2VfaW5fcF9GTFdPUkh5YnJpZDM3MTApLHM9dGhpcy5wX0ludGVybWVkaWF0ZUNsYXVzZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4scy5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApO3RoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1JldHVybkh5YnJpZF9pbl9wX0ZMV09SSHlicmlkMzcxMyksbz10aGlzLnBfUmV0dXJuSHlicmlkKGUpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sby5nZXRUcmVlKCkpLHQuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih0LnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhuKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKHQudHJlZSx0LnN0YXJ0LHQuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLHQudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsdC5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gdH0scF9Jbml0aWFsQ2xhdXNlX3JldHVybjpmdW5jdGlvbigpe3YucF9Jbml0aWFsQ2xhdXNlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfSW5pdGlhbENsYXVzZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSW5pdGlhbENsYXVzZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfSW5pdGlhbENsYXVzZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGw7dHJ5e3ZhciBvPTMsdT10aGlzLmlucHV0LkxBKDEpO2lmKHU9PWl0KXt2YXIgYT10aGlzLmlucHV0LkxBKDIpO2lmKGE9PXBpKW89MTtlbHNle2lmKGEhPU9uJiZhIT1Qbil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDQ4LDEsdGhpcy5pbnB1dCk7dGhyb3cgZn1vPTN9fWVsc2V7aWYodSE9RXQpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGY9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw0OCwwLHRoaXMuaW5wdXQpO3Rocm93IGZ9bz0yfXN3aXRjaChvKXtjYXNlIDE6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRm9yQ2xhdXNlX2luX3BfSW5pdGlhbENsYXVzZTM3NDApLG49dGhpcy5wX0ZvckNsYXVzZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9MZXRDbGF1c2VfaW5fcF9Jbml0aWFsQ2xhdXNlMzc0NCksaT10aGlzLnBfTGV0Q2xhdXNlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1dpbmRvd0NsYXVzZV9pbl9wX0luaXRpYWxDbGF1c2UzNzQ4KSxzPXRoaXMucF9XaW5kb3dDbGF1c2UoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfSW50ZXJtZWRpYXRlQ2xhdXNlX3JldHVybjpmdW5jdGlvbigpe3YucF9JbnRlcm1lZGlhdGVDbGF1c2VfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9JbnRlcm1lZGlhdGVDbGF1c2VfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ludGVybWVkaWF0ZUNsYXVzZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfSW50ZXJtZWRpYXRlQ2xhdXNlX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsO3RyeXt2YXIgYT01O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIGl0OmNhc2UgRXQ6YT0xO2JyZWFrO2Nhc2UgYW46YT0yO2JyZWFrO2Nhc2UgeW46YT0zO2JyZWFrO2Nhc2UgRHQ6Y2FzZSBKdDphPTQ7YnJlYWs7Y2FzZSBwbjphPTU7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsNDksMCx0aGlzLmlucHV0KTt0aHJvdyBmfXN3aXRjaChhKXtjYXNlIDE6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfSW5pdGlhbENsYXVzZV9pbl9wX0ludGVybWVkaWF0ZUNsYXVzZTM3NzQpLG49dGhpcy5wX0luaXRpYWxDbGF1c2UoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfV2hlcmVDbGF1c2VfaW5fcF9JbnRlcm1lZGlhdGVDbGF1c2UzNzc4KSxpPXRoaXMucF9XaGVyZUNsYXVzZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMzp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Hcm91cEJ5Q2xhdXNlX2luX3BfSW50ZXJtZWRpYXRlQ2xhdXNlMzc4Mikscz10aGlzLnBfR3JvdXBCeUNsYXVzZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNDp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9PcmRlckJ5Q2xhdXNlX2luX3BfSW50ZXJtZWRpYXRlQ2xhdXNlMzc4Niksbz10aGlzLnBfT3JkZXJCeUNsYXVzZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNTp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Db3VudENsYXVzZV9pbl9wX0ludGVybWVkaWF0ZUNsYXVzZTM3OTApLHU9dGhpcy5wX0NvdW50Q2xhdXNlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBlfSxwX1N0cmluZ0NvbmNhdEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1N0cmluZ0NvbmNhdEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9TdHJpbmdDb25jYXRFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9TdHJpbmdDb25jYXRFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9TdHJpbmdDb25jYXRFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1JhbmdlRXhwcl9pbl9wX1N0cmluZ0NvbmNhdEV4cHIzODExKSxpPXRoaXMucF9SYW5nZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTtlOmRve3ZhciB1PTIsYT10aGlzLmlucHV0LkxBKDEpO2E9PWxpJiYodT0xKTtzd2l0Y2godSl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxpLHYuRk9MTE9XX0NPTkNBVF9pbl9wX1N0cmluZ0NvbmNhdEV4cHIzODE3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hbyhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9SYW5nZUV4cHJfaW5fcF9TdHJpbmdDb25jYXRFeHByMzgyMSkscz10aGlzLnBfUmFuZ2VFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCk7ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwX0ZvckNsYXVzZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRm9yQ2xhdXNlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRm9yQ2xhdXNlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Gb3JDbGF1c2U6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0ZvckNsYXVzZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGl0LHYuRk9MTE9XX0ZPUl9pbl9wX0ZvckNsYXVzZTM4NDgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZvckJpbmRpbmdfaW5fcF9Gb3JDbGF1c2UzODUyKSxzPXRoaXMucF9Gb3JCaW5kaW5nKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7ZTpkb3t2YXIgZj0yLGw9dGhpcy5pbnB1dC5MQSgxKTtsPT1UaSYmKGY9MSk7c3dpdGNoKGYpe2Nhc2UgMTppPXRoaXMubWF0Y2godGhpcy5pbnB1dCxUaSx2LkZPTExPV19DT01NQV9pbl9wX0ZvckNsYXVzZTM4NTUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRm9yQmluZGluZ19pbl9wX0ZvckNsYXVzZTM4NTcpLG89dGhpcy5wX0ZvckJpbmRpbmcoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTtlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChjKXtpZighKGMgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGM7dGhpcy5yZXBvcnRFcnJvcihjKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxjKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRm9yQmluZGluZ19yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRm9yQmluZGluZ19yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZvckJpbmRpbmdfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZvckJpbmRpbmc6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0ZvckJpbmRpbmdfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsLGg9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQscGksdi5GT0xMT1dfRE9MTEFSX2luX3BfRm9yQmluZGluZzM4ODcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxjKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVmFyTmFtZV9pbl9wX0ZvckJpbmRpbmczODkxKSxzPXRoaXMucF9WYXJOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KG4scz9zLnN0b3A6bnVsbCk7dmFyIHA9MixkPXRoaXMuaW5wdXQuTEEoMSk7ZD09VCYmKHA9MSk7c3dpdGNoKHApe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9UeXBlRGVjbGFyYXRpb25faW5fcF9Gb3JCaW5kaW5nMzg5NSksbz10aGlzLnBfVHlwZURlY2xhcmF0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSl9dmFyIG09MixnPXRoaXMuaW5wdXQuTEEoMSk7Zz09bG4mJihtPTEpO3N3aXRjaChtKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQWxsb3dpbmdFbXB0eV9pbl9wX0ZvckJpbmRpbmczODk4KSx1PXRoaXMucF9BbGxvd2luZ0VtcHR5KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSl9dmFyIHk9MixiPXRoaXMuaW5wdXQuTEEoMSk7Yj09QyYmKHk9MSk7c3dpdGNoKHkpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Qb3NpdGlvbmFsVmFyX2luX3BfRm9yQmluZGluZzM5MDEpLGE9dGhpcy5wX1Bvc2l0aW9uYWxWYXIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEuZ2V0VHJlZSgpKX12YXIgdz0yLEU9dGhpcy5pbnB1dC5MQSgxKTtFPT1BciYmKHc9MSk7c3dpdGNoKHcpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVFNjb3JlVmFyX2luX3BfRm9yQmluZGluZzM5MDQpLGY9dGhpcy5wX0ZUU2NvcmVWYXIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYuZ2V0VHJlZSgpKX1pPXRoaXMubWF0Y2godGhpcy5pbnB1dCxodCx2LkZPTExPV19JTl9pbl9wX0ZvckJpbmRpbmczOTA5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfRm9yQmluZGluZzM5MTMpLGw9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbC5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKFMpe2lmKCEoUyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgUzt0aGlzLnJlcG9ydEVycm9yKFMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LFMpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxTKX1maW5hbGx5e31yZXR1cm4gZX0scF9BbGxvd2luZ0VtcHR5X3JldHVybjpmdW5jdGlvbigpe3YucF9BbGxvd2luZ0VtcHR5X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQWxsb3dpbmdFbXB0eV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQWxsb3dpbmdFbXB0eTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQWxsb3dpbmdFbXB0eV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbG4sdi5GT0xMT1dfQUxMT1dJTkdfaW5fcF9BbGxvd2luZ0VtcHR5Mzk0Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSyx2LkZPTExPV19FTVBUWV9pbl9wX0FsbG93aW5nRW1wdHkzOTQ4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChzKXtpZighKHMgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHM7dGhpcy5yZXBvcnRFcnJvcihzKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxzKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfUG9zaXRpb25hbFZhcl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfUG9zaXRpb25hbFZhcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1Bvc2l0aW9uYWxWYXJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1Bvc2l0aW9uYWxWYXI6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1Bvc2l0aW9uYWxWYXJfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEMsdi5GT0xMT1dfQVRfaW5fcF9Qb3NpdGlvbmFsVmFyMzk3OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQscGksdi5GT0xMT1dfRE9MTEFSX2luX3BfUG9zaXRpb25hbFZhcjM5ODQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVmFyTmFtZV9pbl9wX1Bvc2l0aW9uYWxWYXIzOTg4KSxzPXRoaXMucF9WYXJOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KGkscz9zLnN0b3A6bnVsbCksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBhO3RoaXMucmVwb3J0RXJyb3IoYSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGEpfWZpbmFsbHl7fXJldHVybiBlfSxwX0xldENsYXVzZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfTGV0Q2xhdXNlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfTGV0Q2xhdXNlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9MZXRDbGF1c2U6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0xldENsYXVzZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEV0LHYuRk9MTE9XX0xFVF9pbl9wX0xldENsYXVzZTQwMTgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0xldEJpbmRpbmdfaW5fcF9MZXRDbGF1c2U0MDIyKSxzPXRoaXMucF9MZXRCaW5kaW5nKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7ZTpkb3t2YXIgZj0yLGw9dGhpcy5pbnB1dC5MQSgxKTtsPT1UaSYmKGY9MSk7c3dpdGNoKGYpe2Nhc2UgMTppPXRoaXMubWF0Y2godGhpcy5pbnB1dCxUaSx2LkZPTExPV19DT01NQV9pbl9wX0xldENsYXVzZTQwMjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfTGV0QmluZGluZ19pbl9wX0xldENsYXVzZTQwMjcpLG89dGhpcy5wX0xldEJpbmRpbmcoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTtlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChjKXtpZighKGMgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGM7dGhpcy5yZXBvcnRFcnJvcihjKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxjKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfTGV0QmluZGluZ19yZXR1cm46ZnVuY3Rpb24oKXt2LnBfTGV0QmluZGluZ19yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0xldEJpbmRpbmdfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0xldEJpbmRpbmc6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0xldEJpbmRpbmdfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBjPTIsaD10aGlzLmlucHV0LkxBKDEpO2lmKGg9PXBpKWM9MTtlbHNle2lmKGghPUFyKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBwPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsNTgsMCx0aGlzLmlucHV0KTt0aHJvdyBwfWM9Mn1zd2l0Y2goYyl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBpLHYuRk9MTE9XX0RPTExBUl9pbl9wX0xldEJpbmRpbmc0MDYxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1Zhck5hbWVfaW5fcF9MZXRCaW5kaW5nNDA2NSkscz10aGlzLnBfVmFyTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihuLHM/cy5zdG9wOm51bGwpO3ZhciBkPTIsbT10aGlzLmlucHV0LkxBKDEpO209PVQmJihkPTEpO3N3aXRjaChkKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVHlwZURlY2xhcmF0aW9uX2luX3BfTGV0QmluZGluZzQwNjkpLG89dGhpcy5wX1R5cGVEZWNsYXJhdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpfWJyZWFrO2Nhc2UgMjp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVFNjb3JlVmFyX2luX3BfTGV0QmluZGluZzQwNzUpLHU9dGhpcy5wX0ZUU2NvcmVWYXIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKX1pPXRoaXMubWF0Y2godGhpcy5pbnB1dCxiaSx2LkZPTExPV19CSU5EX2luX3BfTGV0QmluZGluZzQwNzkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0xldEJpbmRpbmc0MDgxKSxhPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEuZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChnKXtpZighKGcgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGc7dGhpcy5yZXBvcnRFcnJvcihnKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxnKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfV2luZG93Q2xhdXNlX3JldHVybjpmdW5jdGlvbigpe3YucF9XaW5kb3dDbGF1c2VfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9XaW5kb3dDbGF1c2VfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1dpbmRvd0NsYXVzZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfV2luZG93Q2xhdXNlX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGl0LHYuRk9MTE9XX0ZPUl9pbl9wX1dpbmRvd0NsYXVzZTQxMTApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pO3ZhciB1PTIsYT10aGlzLmlucHV0LkxBKDEpO2lmKGE9PVBuKXU9MTtlbHNle2lmKGEhPU9uKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsNTksMCx0aGlzLmlucHV0KTt0aHJvdyBmfXU9Mn1zd2l0Y2godSl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1R1bWJsaW5nV2luZG93Q2xhdXNlX2luX3BfV2luZG93Q2xhdXNlNDExNSksaT10aGlzLnBfVHVtYmxpbmdXaW5kb3dDbGF1c2UoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU2xpZGluZ1dpbmRvd0NsYXVzZV9pbl9wX1dpbmRvd0NsYXVzZTQxMTkpLHM9dGhpcy5wX1NsaWRpbmdXaW5kb3dDbGF1c2UoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfVHVtYmxpbmdXaW5kb3dDbGF1c2VfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1R1bWJsaW5nV2luZG93Q2xhdXNlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfVHVtYmxpbmdXaW5kb3dDbGF1c2VfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1R1bWJsaW5nV2luZG93Q2xhdXNlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9UdW1ibGluZ1dpbmRvd0NsYXVzZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFBuLHYuRk9MTE9XX1RVTUJMSU5HX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTU2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxqbix2LkZPTExPV19XSU5ET1dfaW5fcF9UdW1ibGluZ1dpbmRvd0NsYXVzZTQxNjIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBpLHYuRk9MTE9XX0RPTExBUl9pbl9wX1R1bWJsaW5nV2luZG93Q2xhdXNlNDE2OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYz10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGMpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9WYXJOYW1lX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTcyKSxzPXRoaXMucF9WYXJOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KGkscz9zLnN0b3A6bnVsbCk7dmFyIGg9MixwPXRoaXMuaW5wdXQuTEEoMSk7cD09VCYmKGg9MSk7c3dpdGNoKGgpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9UeXBlRGVjbGFyYXRpb25faW5fcF9UdW1ibGluZ1dpbmRvd0NsYXVzZTQxNzYpLG89dGhpcy5wX1R5cGVEZWNsYXJhdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpfW49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGh0LHYuRk9MTE9XX0lOX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTgxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTg1KSx1PXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9XaW5kb3dTdGFydENvbmRpdGlvbl9pbl9wX1R1bWJsaW5nV2luZG93Q2xhdXNlNDE4OCksYT10aGlzLnBfV2luZG93U3RhcnRDb25kaXRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEuZ2V0VHJlZSgpKTt2YXIgZD0yLG09dGhpcy5pbnB1dC5MQSgxKTtpZihtPT1nbnx8bT09Tm4pZD0xO3N3aXRjaChkKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfV2luZG93RW5kQ29uZGl0aW9uX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTkwKSxmPXRoaXMucF9XaW5kb3dFbmRDb25kaXRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChnKXtpZighKGcgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGc7dGhpcy5yZXBvcnRFcnJvcihnKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxnKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfU2xpZGluZ1dpbmRvd0NsYXVzZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfU2xpZGluZ1dpbmRvd0NsYXVzZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1NsaWRpbmdXaW5kb3dDbGF1c2VfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1NsaWRpbmdXaW5kb3dDbGF1c2U6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1NsaWRpbmdXaW5kb3dDbGF1c2VfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxPbix2LkZPTExPV19TTElESU5HX2luX3BfU2xpZGluZ1dpbmRvd0NsYXVzZTQyMTkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGpuLHYuRk9MTE9XX1dJTkRPV19pbl9wX1NsaWRpbmdXaW5kb3dDbGF1c2U0MjI1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxwaSx2LkZPTExPV19ET0xMQVJfaW5fcF9TbGlkaW5nV2luZG93Q2xhdXNlNDIzMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYz10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGMpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9WYXJOYW1lX2luX3BfU2xpZGluZ1dpbmRvd0NsYXVzZTQyMzUpLHM9dGhpcy5wX1Zhck5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoaSxzP3Muc3RvcDpudWxsKTt2YXIgaD0yLHA9dGhpcy5pbnB1dC5MQSgxKTtwPT1UJiYoaD0xKTtzd2l0Y2goaCl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX1NsaWRpbmdXaW5kb3dDbGF1c2U0MjM5KSxvPXRoaXMucF9UeXBlRGVjbGFyYXRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKX1uPXRoaXMubWF0Y2godGhpcy5pbnB1dCxodCx2LkZPTExPV19JTl9pbl9wX1NsaWRpbmdXaW5kb3dDbGF1c2U0MjQ0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfU2xpZGluZ1dpbmRvd0NsYXVzZTQyNDgpLHU9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdS5nZXRUcmVlKCkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uX2luX3BfU2xpZGluZ1dpbmRvd0NsYXVzZTQyNTEpLGE9dGhpcy5wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSk7dmFyIGQ9MixtPXRoaXMuaW5wdXQuTEEoMSk7aWYobT09Z258fG09PU5uKWQ9MTtzd2l0Y2goZCl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1dpbmRvd0VuZENvbmRpdGlvbl9pbl9wX1NsaWRpbmdXaW5kb3dDbGF1c2U0MjUzKSxmPXRoaXMucF9XaW5kb3dFbmRDb25kaXRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChnKXtpZighKGcgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGc7dGhpcy5yZXBvcnRFcnJvcihnKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxnKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfV2luZG93U3RhcnRDb25kaXRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfV2luZG93U3RhcnRDb25kaXRpb25fcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1dpbmRvd1N0YXJ0Q29uZGl0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9XaW5kb3dTdGFydENvbmRpdGlvbl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxNbix2LkZPTExPV19TVEFSVF9pbl9wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uNDI4Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfV2luZG93VmFyc19pbl9wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uNDI4NiksaT10aGlzLnBfV2luZG93VmFycygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEJuLHYuRk9MTE9XX1dIRU5faW5fcF9XaW5kb3dTdGFydENvbmRpdGlvbjQyOTApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9XaW5kb3dTdGFydENvbmRpdGlvbjQyOTQpLHM9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHUpe2lmKCEodSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgdTt0aGlzLnJlcG9ydEVycm9yKHUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHUpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx1KX1maW5hbGx5e31yZXR1cm4gZX0scF9XaW5kb3dFbmRDb25kaXRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1dpbmRvd0VuZENvbmRpdGlvbl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1dpbmRvd0VuZENvbmRpdGlvbl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfV2luZG93RW5kQ29uZGl0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9XaW5kb3dFbmRDb25kaXRpb25fcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIHU9MixhPXRoaXMuaW5wdXQuTEEoMSk7YT09Tm4mJih1PTEpO3N3aXRjaCh1KXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTm4sdi5GT0xMT1dfT05MWV9pbl9wX1dpbmRvd0VuZENvbmRpdGlvbjQzMjQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pfW49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGduLHYuRk9MTE9XX0VORF9pbl9wX1dpbmRvd0VuZENvbmRpdGlvbjQzMzIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1dpbmRvd1ZhcnNfaW5fcF9XaW5kb3dFbmRDb25kaXRpb240MzM2KSxpPXRoaXMucF9XaW5kb3dWYXJzKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQm4sdi5GT0xMT1dfV0hFTl9pbl9wX1dpbmRvd0VuZENvbmRpdGlvbjQzNDApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9XaW5kb3dFbmRDb25kaXRpb240MzQ0KSxzPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBfV2luZG93VmFyc19yZXR1cm46ZnVuY3Rpb24oKXt2LnBfV2luZG93VmFyc19yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1dpbmRvd1ZhcnNfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1dpbmRvd1ZhcnM6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1dpbmRvd1ZhcnNfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsLGg9bnVsbCxwPW51bGwsZD1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgbT0yLGc9dGhpcy5pbnB1dC5MQSgxKTtnPT1waSYmKG09MSk7c3dpdGNoKG0pe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxwaSx2LkZPTExPV19ET0xMQVJfaW5fcF9XaW5kb3dWYXJzNDM3NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGMpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9DdXJyZW50SXRlbV9pbl9wX1dpbmRvd1ZhcnM0Mzc4KSx1PXRoaXMucF9DdXJyZW50SXRlbSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdS5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihuLHU/dS5zdG9wOm51bGwpfXZhciB5PTIsYj10aGlzLmlucHV0LkxBKDEpO2I9PUMmJih5PTEpO3N3aXRjaCh5KXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUG9zaXRpb25hbFZhcl9pbl9wX1dpbmRvd1ZhcnM0Mzg0KSxhPXRoaXMucF9Qb3NpdGlvbmFsVmFyKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSl9dmFyIHc9MixFPXRoaXMuaW5wdXQuTEEoMSk7RT09QW4mJih3PTEpO3N3aXRjaCh3KXtjYXNlIDE6aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQW4sdi5GT0xMT1dfUFJFVklPVVNfaW5fcF9XaW5kb3dWYXJzNDM5MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQscGksdi5GT0xMT1dfRE9MTEFSX2luX3BfV2luZG93VmFyczQzOTQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHA9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxwKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUHJldmlvdXNJdGVtX2luX3BfV2luZG93VmFyczQzOTYpLGY9dGhpcy5wX1ByZXZpb3VzSXRlbSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZi5nZXRUcmVlKCkpfXZhciBTPTIseD10aGlzLmlucHV0LkxBKDEpO3g9PVRuJiYoUz0xKTtzd2l0Y2goUyl7Y2FzZSAxOmk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFRuLHYuRk9MTE9XX05FWFRfaW5fcF9XaW5kb3dWYXJzNDQwMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksbz10aGlzLm1hdGNoKHRoaXMuaW5wdXQscGksdi5GT0xMT1dfRE9MTEFSX2luX3BfV2luZG93VmFyczQ0MDcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGQ9dGhpcy5hZGFwdG9yLmNyZWF0ZShvKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxkKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfTmV4dEl0ZW1faW5fcF9XaW5kb3dWYXJzNDQwOSksbD10aGlzLnBfTmV4dEl0ZW0oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChUKXtpZighKFQgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IFQ7dGhpcy5yZXBvcnRFcnJvcihUKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxUKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksVCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfQ3VycmVudEl0ZW1fcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0N1cnJlbnRJdGVtX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQ3VycmVudEl0ZW1fcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0N1cnJlbnRJdGVtOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9DdXJyZW50SXRlbV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9RTmFtZV9pbl9wX0N1cnJlbnRJdGVtNDQzNyksbj10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfUHJldmlvdXNJdGVtX3JldHVybjpmdW5jdGlvbigpe3YucF9QcmV2aW91c0l0ZW1fcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9QcmV2aW91c0l0ZW1fcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1ByZXZpb3VzSXRlbTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfUHJldmlvdXNJdGVtX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1FOYW1lX2luX3BfUHJldmlvdXNJdGVtNDQ2Myksbj10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfTmV4dEl0ZW1fcmV0dXJuOmZ1bmN0aW9uKCl7di5wX05leHRJdGVtX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfTmV4dEl0ZW1fcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX05leHRJdGVtOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9OZXh0SXRlbV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9RTmFtZV9pbl9wX05leHRJdGVtNDQ4OSksbj10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfQ291bnRDbGF1c2VfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0NvdW50Q2xhdXNlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQ291bnRDbGF1c2VfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0NvdW50Q2xhdXNlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9Db3VudENsYXVzZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQscG4sdi5GT0xMT1dfQ09VTlRfaW5fcF9Db3VudENsYXVzZTQ1MTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBpLHYuRk9MTE9XX0RPTExBUl9pbl9wX0NvdW50Q2xhdXNlNDUyMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9WYXJOYW1lX2luX3BfQ291bnRDbGF1c2U0NTI3KSxzPXRoaXMucF9WYXJOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KGkscz9zLnN0b3A6bnVsbCksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBhO3RoaXMucmVwb3J0RXJyb3IoYSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGEpfWZpbmFsbHl7fXJldHVybiBlfSxwX1doZXJlQ2xhdXNlX3JldHVybjpmdW5jdGlvbigpe3YucF9XaGVyZUNsYXVzZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1doZXJlQ2xhdXNlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9XaGVyZUNsYXVzZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfV2hlcmVDbGF1c2VfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxhbix2LkZPTExPV19XSEVSRV9pbl9wX1doZXJlQ2xhdXNlNDU2NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1doZXJlQ2xhdXNlNDU2OSksaT10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobyl7aWYoIShvIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBvO3RoaXMucmVwb3J0RXJyb3IobyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG8pfWZpbmFsbHl7fXJldHVybiBlfSxwX0dyb3VwQnlDbGF1c2VfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0dyb3VwQnlDbGF1c2VfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9Hcm91cEJ5Q2xhdXNlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Hcm91cEJ5Q2xhdXNlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9Hcm91cEJ5Q2xhdXNlX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQseW4sdi5GT0xMT1dfR1JPVVBfaW5fcF9Hcm91cEJ5Q2xhdXNlNDU5OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTyx2LkZPTExPV19CWV9pbl9wX0dyb3VwQnlDbGF1c2U0NjA0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Hcm91cGluZ1NwZWNMaXN0X2luX3BfR3JvdXBCeUNsYXVzZTQ2MDgpLGk9dGhpcy5wX0dyb3VwaW5nU3BlY0xpc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChvKXtpZighKG8gaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG87dGhpcy5yZXBvcnRFcnJvcihvKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxvKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfR3JvdXBpbmdTcGVjTGlzdF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfR3JvdXBpbmdTcGVjTGlzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0dyb3VwaW5nU3BlY0xpc3RfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0dyb3VwaW5nU3BlY0xpc3Q6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0dyb3VwaW5nU3BlY0xpc3RfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfR3JvdXBpbmdTcGVjX2luX3BfR3JvdXBpbmdTcGVjTGlzdDQ2MzQpLGk9dGhpcy5wX0dyb3VwaW5nU3BlYygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO2U6ZG97dmFyIHU9MixhPXRoaXMuaW5wdXQuTEEoMSk7YT09VGkmJih1PTEpO3N3aXRjaCh1KXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVGksdi5GT0xMT1dfQ09NTUFfaW5fcF9Hcm91cGluZ1NwZWNMaXN0NDYzNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Hcm91cGluZ1NwZWNfaW5fcF9Hcm91cGluZ1NwZWNMaXN0NDYzOSkscz10aGlzLnBfR3JvdXBpbmdTcGVjKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCk7ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwX0dyb3VwaW5nU3BlY19yZXR1cm46ZnVuY3Rpb24oKXt2LnBfR3JvdXBpbmdTcGVjX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfR3JvdXBpbmdTcGVjX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Hcm91cGluZ1NwZWM6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0dyb3VwaW5nU3BlY19yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBpLHYuRk9MTE9XX0RPTExBUl9pbl9wX0dyb3VwaW5nU3BlYzQ2NjkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVmFyTmFtZV9pbl9wX0dyb3VwaW5nU3BlYzQ2NzMpLHM9dGhpcy5wX1Zhck5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYobixzP3Muc3RvcDpudWxsKTt2YXIgZj0yLGw9dGhpcy5pbnB1dC5MQSgxKTtsPT1IJiYoZj0xKTtzd2l0Y2goZil7Y2FzZSAxOmk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEgsdi5GT0xMT1dfQ09MTEFUSU9OX2luX3BfR3JvdXBpbmdTcGVjNDY4MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0dyb3VwaW5nU3BlYzQ2ODQpLG89dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChjKXtpZighKGMgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGM7dGhpcy5yZXBvcnRFcnJvcihjKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxjKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfT3JkZXJCeUNsYXVzZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfT3JkZXJCeUNsYXVzZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX09yZGVyQnlDbGF1c2VfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX09yZGVyQnlDbGF1c2U6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX09yZGVyQnlDbGF1c2VfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIHU9MixhPXRoaXMuaW5wdXQuTEEoMSk7aWYoYT09RHQpdT0xO2Vsc2V7aWYoYSE9SnQpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGY9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw3MSwwLHRoaXMuaW5wdXQpO3Rocm93IGZ9dT0yfXN3aXRjaCh1KXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRHQsdi5GT0xMT1dfT1JERVJfaW5fcF9PcmRlckJ5Q2xhdXNlNDcxNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LE8sdi5GT0xMT1dfQllfaW5fcF9PcmRlckJ5Q2xhdXNlNDcyMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pO2JyZWFrO2Nhc2UgMjpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxKdCx2LkZPTExPV19TVEFCTEVfaW5fcF9PcmRlckJ5Q2xhdXNlNDcyOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LER0LHYuRk9MTE9XX09SREVSX2luX3BfT3JkZXJCeUNsYXVzZTQ3MzIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxPLHYuRk9MTE9XX0JZX2luX3BfT3JkZXJCeUNsYXVzZTQ3MzYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfT3JkZXJTcGVjTGlzdF9pbl9wX09yZGVyQnlDbGF1c2U0NzQyKSxzPXRoaXMucF9PcmRlclNwZWNMaXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBlfSxwX09yZGVyU3BlY0xpc3RfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX09yZGVyU3BlY0xpc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9PcmRlclNwZWNMaXN0X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9PcmRlclNwZWNMaXN0OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9PcmRlclNwZWNMaXN0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX09yZGVyU3BlY19pbl9wX09yZGVyU3BlY0xpc3Q0NzY4KSxpPXRoaXMucF9PcmRlclNwZWMoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTtlOmRve3ZhciB1PTIsYT10aGlzLmlucHV0LkxBKDEpO2E9PVRpJiYodT0xKTtzd2l0Y2godSl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFRpLHYuRk9MTE9XX0NPTU1BX2luX3BfT3JkZXJTcGVjTGlzdDQ3NzEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfT3JkZXJTcGVjX2luX3BfT3JkZXJTcGVjTGlzdDQ3NzMpLHM9dGhpcy5wX09yZGVyU3BlYygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApO2Uuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gZX0scF9PcmRlclNwZWNfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX09yZGVyU3BlY19yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX09yZGVyU3BlY19yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfT3JkZXJTcGVjOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9PcmRlclNwZWNfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9PcmRlclNwZWM0ODAxKSxuPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9PcmRlck1vZGlmaWVyX2luX3BfT3JkZXJTcGVjNDgwNCksaT10aGlzLnBfT3JkZXJNb2RpZmllcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHMpe2lmKCEocyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgczt0aGlzLnJlcG9ydEVycm9yKHMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHMpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxzKX1maW5hbGx5e31yZXR1cm4gZX0scF9PcmRlck1vZGlmaWVyX3JldHVybjpmdW5jdGlvbigpe3YucF9PcmRlck1vZGlmaWVyX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfT3JkZXJNb2RpZmllcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfT3JkZXJNb2RpZmllcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfT3JkZXJNb2RpZmllcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgdT0zLGE9dGhpcy5pbnB1dC5MQSgxKTthPT1OP3U9MTphPT16JiYodT0yKTtzd2l0Y2godSl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LE4sdi5GT0xMT1dfQVNDRU5ESU5HX2luX3BfT3JkZXJNb2RpZmllcjQ4MzMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKTticmVhaztjYXNlIDI6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQseix2LkZPTExPV19ERVNDRU5ESU5HX2luX3BfT3JkZXJNb2RpZmllcjQ4MzkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKX12YXIgZj0yLGw9dGhpcy5pbnB1dC5MQSgxKTtsPT1LJiYoZj0xKTtzd2l0Y2goZil7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEssdi5GT0xMT1dfRU1QVFlfaW5fcF9PcmRlck1vZGlmaWVyNDg0Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pO3ZhciBjPTIsaD10aGlzLmlucHV0LkxBKDEpO2lmKGg9PXV0KWM9MTtlbHNle2lmKGghPXd0KXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBwPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsNzQsMCx0aGlzLmlucHV0KTt0aHJvdyBwfWM9Mn1zd2l0Y2goYyl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHV0LHYuRk9MTE9XX0dSRUFURVNUX2luX3BfT3JkZXJNb2RpZmllcjQ4NTEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKTticmVhaztjYXNlIDI6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsd3Qsdi5GT0xMT1dfTEVBU1RfaW5fcF9PcmRlck1vZGlmaWVyNDg1Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pfX12YXIgZD0yLG09dGhpcy5pbnB1dC5MQSgxKTttPT1IJiYoZD0xKTtzd2l0Y2goZCl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEgsdi5GT0xMT1dfQ09MTEFUSU9OX2luX3BfT3JkZXJNb2RpZmllcjQ4NjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfT3JkZXJNb2RpZmllcjQ4NjcpLHM9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZyl7aWYoIShnIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBnO3RoaXMucmVwb3J0RXJyb3IoZyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGcpfWZpbmFsbHl7fXJldHVybiBlfSxwX1JldHVybkh5YnJpZF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfUmV0dXJuSHlicmlkX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfUmV0dXJuSHlicmlkX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9SZXR1cm5IeWJyaWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHYucF9SZXR1cm5IeWJyaWRfcmV0dXJuO3Quc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsO3RyeXtuPXRoaXMuYWRhcHRvci5uaWwoKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxSdCx2LkZPTExPV19SRVRVUk5faW5fcF9SZXR1cm5IeWJyaWQ0OTAwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9IeWJyaWRfaW5fcF9SZXR1cm5IeWJyaWQ0OTA0KSxzPXRoaXMucF9IeWJyaWQoZSwhMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixzLmdldFRyZWUoKSksdC5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHQudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKG4pLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXModC50cmVlLHQuc3RhcnQsdC5zdG9wKSl9Y2F0Y2godSl7aWYoISh1IGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB1O3RoaXMucmVwb3J0RXJyb3IodSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdSksdC50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCx0LnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHUpfWZpbmFsbHl7fXJldHVybiB0fSxwX1F1YW50aWZpZWRFeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9RdWFudGlmaWVkRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1F1YW50aWZpZWRFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9RdWFudGlmaWVkRXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfUXVhbnRpZmllZEV4cHJfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsLGg9bnVsbCxwPW51bGwsZD1udWxsLG09bnVsbCxnPW51bGwseT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgYj0yLHc9dGhpcy5pbnB1dC5MQSgxKTtpZih3PT0kdCliPTE7ZWxzZXtpZih3IT1aKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBFPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsNzcsMCx0aGlzLmlucHV0KTt0aHJvdyBFfWI9Mn1zd2l0Y2goYil7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LCR0LHYuRk9MTE9XX1NPTUVfaW5fcF9RdWFudGlmaWVkRXhwcjQ5MzQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGQ9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxkKSk7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFosdi5GT0xMT1dfRVZFUllfaW5fcF9RdWFudGlmaWVkRXhwcjQ5NDApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGQ9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxkKSl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBpLHYuRk9MTE9XX0RPTExBUl9pbl9wX1F1YW50aWZpZWRFeHByNDk0Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG0pKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9WYXJOYW1lX2luX3BfUXVhbnRpZmllZEV4cHI0OTUxKSx1PXRoaXMucF9WYXJOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KGksdT91LnN0b3A6bnVsbCk7dmFyIFM9Mix4PXRoaXMuaW5wdXQuTEEoMSk7eD09VCYmKFM9MSk7c3dpdGNoKFMpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9UeXBlRGVjbGFyYXRpb25faW5fcF9RdWFudGlmaWVkRXhwcjQ5NTUpLGY9dGhpcy5wX1R5cGVEZWNsYXJhdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZi5nZXRUcmVlKCkpfW49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGh0LHYuRk9MTE9XX0lOX2luX3BfUXVhbnRpZmllZEV4cHI0OTYwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihkPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfUXVhbnRpZmllZEV4cHI0OTY0KSxsPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwuZ2V0VHJlZSgpKTtlOmRve3ZhciBOPTIsQz10aGlzLmlucHV0LkxBKDEpO0M9PVRpJiYoTj0xKTtzd2l0Y2goTil7Y2FzZSAxOm89dGhpcy5tYXRjaCh0aGlzLmlucHV0LFRpLHYuRk9MTE9XX0NPTU1BX2luX3BfUXVhbnRpZmllZEV4cHI0OTY4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih5PXRoaXMuYWRhcHRvci5jcmVhdGUobyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQseSkpLHM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBpLHYuRk9MTE9XX0RPTExBUl9pbl9wX1F1YW50aWZpZWRFeHByNDk3Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGcpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9RTmFtZV9pbl9wX1F1YW50aWZpZWRFeHByNDk3NiksYT10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYocyxhP2Euc3RvcDpudWxsKTt2YXIgaz0yLEw9dGhpcy5pbnB1dC5MQSgxKTtMPT1UJiYoaz0xKTtzd2l0Y2goayl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX1F1YW50aWZpZWRFeHByNDk4MCksYz10aGlzLnBfVHlwZURlY2xhcmF0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxjLmdldFRyZWUoKSl9bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaHQsdi5GT0xMT1dfSU5faW5fcF9RdWFudGlmaWVkRXhwcjQ5ODUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGQ9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxkKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9RdWFudGlmaWVkRXhwcjQ5ODkpLGg9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaC5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApO249dGhpcy5tYXRjaCh0aGlzLmlucHV0LFV0LHYuRk9MTE9XX1NBVElTRklFU19pbl9wX1F1YW50aWZpZWRFeHByNDk5Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZD10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGQpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1F1YW50aWZpZWRFeHByNTAwMCkscD10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxwLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goQSl7aWYoIShBIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBBO3RoaXMucmVwb3J0RXJyb3IoQSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsQSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLEEpfWZpbmFsbHl7fXJldHVybiBlfSxwX1N3aXRjaEh5YnJpZF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfU3dpdGNoSHlicmlkX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfU3dpdGNoSHlicmlkX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Td2l0Y2hIeWJyaWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHYucF9Td2l0Y2hIeWJyaWRfcmV0dXJuO3Quc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGwsaD1udWxsO3RyeXtuPXRoaXMuYWRhcHRvci5uaWwoKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxfbix2LkZPTExPV19TV0lUQ0hfaW5fcF9Td2l0Y2hIeWJyaWQ1MDMwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sbCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjaSx2LkZPTExPV19MUEFSRU5faW5fcF9Td2l0Y2hIeWJyaWQ1MDM0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sYykpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJfaW5fcF9Td2l0Y2hIeWJyaWQ1MDM2KSx1PXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChuLHUuZ2V0VHJlZSgpKSxvPXRoaXMubWF0Y2godGhpcy5pbnB1dCxoaSx2LkZPTExPV19SUEFSRU5faW5fcF9Td2l0Y2hIeWJyaWQ1MDM5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUobyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4saCkpO3ZhciBwPTA7ZTpkb3t2YXIgZD0yLG09dGhpcy5pbnB1dC5MQSgxKTttPT1NJiYoZD0xKTtzd2l0Y2goZCl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N3aXRjaENhc2VIeWJyaWRfaW5fcF9Td2l0Y2hIeWJyaWQ1MDQxKSxhPXRoaXMucF9Td2l0Y2hDYXNlSHlicmlkKGUpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sYS5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6aWYocD49MSlicmVhayBlO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLHQ7dmFyIGc9bmV3IHIuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oODEsdGhpcy5pbnB1dCk7dGhyb3cgZ31wKyt9d2hpbGUoITApO2k9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHEsdi5GT0xMT1dfREVGQVVMVF9pbl9wX1N3aXRjaEh5YnJpZDUwNDcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixsKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGkpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFJ0LHYuRk9MTE9XX1JFVFVSTl9pbl9wX1N3aXRjaEh5YnJpZDUwNTMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixsKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0h5YnJpZF9pbl9wX1N3aXRjaEh5YnJpZDUwNTcpLGY9dGhpcy5wX0h5YnJpZChlLCExKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGYuZ2V0VHJlZSgpKSx0LnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodC50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcobiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyh0LnRyZWUsdC5zdGFydCx0LnN0b3ApKX1jYXRjaCh5KXtpZighKHkgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHk7dGhpcy5yZXBvcnRFcnJvcih5KSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCx5KSx0LnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LHQuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkseSl9ZmluYWxseXt9cmV0dXJuIHR9LHBfU3dpdGNoQ2FzZUh5YnJpZF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfU3dpdGNoQ2FzZUh5YnJpZF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1N3aXRjaENhc2VIeWJyaWRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1N3aXRjaENhc2VIeWJyaWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHYucF9Td2l0Y2hDYXNlSHlicmlkX3JldHVybjt0LnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGw7dHJ5e249dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBhPTA7ZTpkb3t2YXIgZj0yLGw9dGhpcy5pbnB1dC5MQSgxKTtsPT1NJiYoZj0xKTtzd2l0Y2goZil7Y2FzZSAxOmk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE0sdi5GT0xMT1dfQ0FTRV9pbl9wX1N3aXRjaENhc2VIeWJyaWQ1MDg4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sdSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Td2l0Y2hDYXNlT3BlcmFuZF9pbl9wX1N3aXRjaENhc2VIeWJyaWQ1MDkyKSxzPXRoaXMucF9Td2l0Y2hDYXNlT3BlcmFuZCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4scy5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6aWYoYT49MSlicmVhayBlO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLHQ7dmFyIGM9bmV3IHIuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oODIsdGhpcy5pbnB1dCk7dGhyb3cgY31hKyt9d2hpbGUoITApO2k9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFJ0LHYuRk9MTE9XX1JFVFVSTl9pbl9wX1N3aXRjaENhc2VIeWJyaWQ1MDk4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sdSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9IeWJyaWRfaW5fcF9Td2l0Y2hDYXNlSHlicmlkNTEwMiksbz10aGlzLnBfSHlicmlkKGUsITEpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sby5nZXRUcmVlKCkpLHQuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih0LnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhuKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKHQudHJlZSx0LnN0YXJ0LHQuc3RvcCkpfWNhdGNoKGgpe2lmKCEoaCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaDt0aGlzLnJlcG9ydEVycm9yKGgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGgpLHQudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsdC5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxoKX1maW5hbGx5e31yZXR1cm4gdH0scF9Td2l0Y2hDYXNlT3BlcmFuZF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfU3dpdGNoQ2FzZU9wZXJhbmRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9Td2l0Y2hDYXNlT3BlcmFuZF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfU3dpdGNoQ2FzZU9wZXJhbmQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1N3aXRjaENhc2VPcGVyYW5kX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9Td2l0Y2hDYXNlT3BlcmFuZDUxMjkpLG49dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaTt0aGlzLnJlcG9ydEVycm9yKGkpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGkpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxpKX1maW5hbGx5e31yZXR1cm4gZX0scF9UeXBlc3dpdGNoSHlicmlkX3JldHVybjpmdW5jdGlvbigpe3YucF9UeXBlc3dpdGNoSHlicmlkX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfVHlwZXN3aXRjaEh5YnJpZF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVHlwZXN3aXRjaEh5YnJpZDpmdW5jdGlvbihlKXt2YXIgdD1uZXcgdi5wX1R5cGVzd2l0Y2hIeWJyaWRfcmV0dXJuO3Quc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGwsaD1udWxsLHA9bnVsbCxkPW51bGwsbT1udWxsO3RyeXtuPXRoaXMuYWRhcHRvci5uaWwoKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCx0bix2LkZPTExPV19UWVBFU1dJVENIX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxNTkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGkpLG89dGhpcy5tYXRjaCh0aGlzLmlucHV0LGNpLHYuRk9MTE9XX0xQQVJFTl9pbl9wX1R5cGVzd2l0Y2hIeWJyaWQ1MTYzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihkPXRoaXMuYWRhcHRvci5jcmVhdGUobyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sZCkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJfaW5fcF9UeXBlc3dpdGNoSHlicmlkNTE2NSksZj10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixmLmdldFRyZWUoKSksdT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaGksdi5GT0xMT1dfUlBBUkVOX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxNjgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG09dGhpcy5hZGFwdG9yLmNyZWF0ZSh1KSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixtKSk7dmFyIGc9MDtlOmRve3ZhciB5PTIsYj10aGlzLmlucHV0LkxBKDEpO2I9PU0mJih5PTEpO3N3aXRjaCh5KXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQ2FzZUh5YnJpZF9pbl9wX1R5cGVzd2l0Y2hIeWJyaWQ1MTcwKSxsPXRoaXMucF9DYXNlSHlicmlkKGUpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sbC5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6aWYoZz49MSlicmVhayBlO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLHQ7dmFyIHc9bmV3IHIuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oODMsdGhpcy5pbnB1dCk7dGhyb3cgd31nKyt9d2hpbGUoITApO2k9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHEsdi5GT0xMT1dfREVGQVVMVF9pbl9wX1R5cGVzd2l0Y2hIeWJyaWQ1MTc2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4saCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKTt2YXIgRT0yLFM9dGhpcy5pbnB1dC5MQSgxKTtTPT1waSYmKEU9MSk7c3dpdGNoKEUpe2Nhc2UgMTpzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxwaSx2LkZPTExPV19ET0xMQVJfaW5fcF9UeXBlc3dpdGNoSHlicmlkNTE4Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocD10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChuLHApKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9WYXJOYW1lX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxODcpLGE9dGhpcy5wX1Zhck5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGEuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYocyxhP2Euc3RvcDpudWxsKX1pPXRoaXMubWF0Y2godGhpcy5pbnB1dCxSdCx2LkZPTExPV19SRVRVUk5faW5fcF9UeXBlc3dpdGNoSHlicmlkNTE5NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfSHlicmlkX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxOTkpLGM9dGhpcy5wX0h5YnJpZChlLCExKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGMuZ2V0VHJlZSgpKSx0LnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodC50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcobiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyh0LnRyZWUsdC5zdGFydCx0LnN0b3ApKX1jYXRjaCh4KXtpZighKHggaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHg7dGhpcy5yZXBvcnRFcnJvcih4KSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCx4KSx0LnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LHQuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkseCl9ZmluYWxseXt9cmV0dXJuIHR9LHBfQ2FzZUh5YnJpZF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfQ2FzZUh5YnJpZF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0Nhc2VIeWJyaWRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0Nhc2VIeWJyaWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHYucF9DYXNlSHlicmlkX3JldHVybjt0LnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGw7dHJ5e249dGhpcy5hZGFwdG9yLm5pbCgpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LE0sdi5GT0xMT1dfQ0FTRV9pbl9wX0Nhc2VIeWJyaWQ1MjI5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKTt2YXIgYz0yLGg9dGhpcy5pbnB1dC5MQSgxKTtoPT1waSYmKGM9MSk7c3dpdGNoKGMpe2Nhc2UgMTpzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxwaSx2LkZPTExPV19ET0xMQVJfaW5fcF9DYXNlSHlicmlkNTIzNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGwpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9WYXJOYW1lX2luX3BfQ2FzZUh5YnJpZDUyNDApLG89dGhpcy5wX1Zhck5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChuLG8uZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYocyxvP28uc3RvcDpudWxsKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxULHYuRk9MTE9XX0FTX2luX3BfQ2FzZUh5YnJpZDUyNDYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGkpfXRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1NlcXVlbmNlVHlwZVVuaW9uX2luX3BfQ2FzZUh5YnJpZDUyNTIpLHU9dGhpcy5wX1NlcXVlbmNlVHlwZVVuaW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobix1LmdldFRyZWUoKSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUnQsdi5GT0xMT1dfUkVUVVJOX2luX3BfQ2FzZUh5YnJpZDUyNTYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9DYXNlSHlicmlkNTI2MCksYT10aGlzLnBfRXhwclNpbmdsZSghMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixhLmdldFRyZWUoKSksdC5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHQudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKG4pLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXModC50cmVlLHQuc3RhcnQsdC5zdG9wKSl9Y2F0Y2gocCl7aWYoIShwIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBwO3RoaXMucmVwb3J0RXJyb3IocCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQscCksdC50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCx0LnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHApfWZpbmFsbHl7fXJldHVybiB0fSxwX1NlcXVlbmNlVHlwZVVuaW9uX3JldHVybjpmdW5jdGlvbigpe3YucF9TZXF1ZW5jZVR5cGVVbmlvbl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1NlcXVlbmNlVHlwZVVuaW9uX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9TZXF1ZW5jZVR5cGVVbmlvbjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfU2VxdWVuY2VUeXBlVW5pb25fcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfU2VxdWVuY2VUeXBlVW5pb241Mjg3KSxpPXRoaXMucF9TZXF1ZW5jZVR5cGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTtlOmRve3ZhciB1PTIsYT10aGlzLmlucHV0LkxBKDEpO2E9PVdpJiYodT0xKTtzd2l0Y2godSl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFdpLHYuRk9MTE9XX1ZCQVJfaW5fcF9TZXF1ZW5jZVR5cGVVbmlvbjUyOTApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfU2VxdWVuY2VUeXBlVW5pb241MjkyKSxzPXRoaXMucF9TZXF1ZW5jZVR5cGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTtlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBfSWZIeWJyaWRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0lmSHlicmlkX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfSWZIeWJyaWRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0lmSHlicmlkOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyB2LnBfSWZIeWJyaWRfcmV0dXJuO3Quc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGwsaD1udWxsO3RyeXtuPXRoaXMuYWRhcHRvci5uaWwoKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxsdCx2LkZPTExPV19JRl9pbl9wX0lmSHlicmlkNTMyMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGwpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2ksdi5GT0xMT1dfTFBBUkVOX2luX3BfSWZIeWJyaWQ1MzI3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sYykpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJfaW5fcF9JZkh5YnJpZDUzMjkpLHU9dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sdS5nZXRUcmVlKCkpLG89dGhpcy5tYXRjaCh0aGlzLmlucHV0LGhpLHYuRk9MTE9XX1JQQVJFTl9pbl9wX0lmSHlicmlkNTMzMik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGgpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxZdCx2LkZPTExPV19USEVOX2luX3BfSWZIeWJyaWQ1MzM2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sbCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9IeWJyaWRfaW5fcF9JZkh5YnJpZDUzNDApLGE9dGhpcy5wX0h5YnJpZChlLCExKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGEuZ2V0VHJlZSgpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxKLHYuRk9MTE9XX0VMU0VfaW5fcF9JZkh5YnJpZDUzNDUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixsKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0h5YnJpZF9pbl9wX0lmSHlicmlkNTM0OSksZj10aGlzLnBfSHlicmlkKGUsITEpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sZi5nZXRUcmVlKCkpLHQuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih0LnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhuKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKHQudHJlZSx0LnN0YXJ0LHQuc3RvcCkpfWNhdGNoKHApe2lmKCEocCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgcDt0aGlzLnJlcG9ydEVycm9yKHApLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHApLHQudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsdC5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxwKX1maW5hbGx5e31yZXR1cm4gdH0scF9UcnlDYXRjaEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1RyeUNhdGNoRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1RyeUNhdGNoRXhwcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVHJ5Q2F0Y2hFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9UcnlDYXRjaEV4cHJfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1RyeUNsYXVzZV9pbl9wX1RyeUNhdGNoRXhwcjUzNzYpLG49dGhpcy5wX1RyeUNsYXVzZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpO3ZhciBzPTA7ZTpkb3t2YXIgbz0yLHU9dGhpcy5pbnB1dC5MQSgxKTt1PT1jbiYmKG89MSk7c3dpdGNoKG8pe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9DYXRjaENsYXVzZV9pbl9wX1RyeUNhdGNoRXhwcjUzNzgpLGk9dGhpcy5wX0NhdGNoQ2xhdXNlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDppZihzPj0xKWJyZWFrIGU7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYT1uZXcgci5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbig4Nyx0aGlzLmlucHV0KTt0aHJvdyBhfXMrK313aGlsZSghMCk7ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwX1RyeUNsYXVzZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfVHJ5Q2xhdXNlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfVHJ5Q2xhdXNlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9UcnlDbGF1c2U6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1RyeUNsYXVzZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxEbix2LkZPTExPV19UUllfaW5fcF9UcnlDbGF1c2U1NDA3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkaSx2LkZPTExPV19MQlJBQ0tFVF9pbl9wX1RyeUNsYXVzZTU0MTEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVHJ5VGFyZ2V0RXhwcl9pbl9wX1RyeUNsYXVzZTU0MTMpLG89dGhpcy5wX1RyeVRhcmdldEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCx2aSx2LkZPTExPV19SQlJBQ0tFVF9pbl9wX1RyeUNsYXVzZTU0MTUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBlfSxwX1RyeVRhcmdldEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1RyeVRhcmdldEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9UcnlUYXJnZXRFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9UcnlUYXJnZXRFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9UcnlUYXJnZXRFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJfaW5fcF9UcnlUYXJnZXRFeHByNTQ0MSksbj10aGlzLnBfRXhwcighMSwhMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBlfSxwX0NhdGNoQ2xhdXNlX3JldHVybjpmdW5jdGlvbigpe3YucF9DYXRjaENsYXVzZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0NhdGNoQ2xhdXNlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9DYXRjaENsYXVzZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQ2F0Y2hDbGF1c2VfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGNuLHYuRk9MTE9XX0NBVENIX2luX3BfQ2F0Y2hDbGF1c2U1NDcwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9DYXRjaEVycm9yTGlzdF9pbl9wX0NhdGNoQ2xhdXNlNTQ3NCksbz10aGlzLnBfQ2F0Y2hFcnJvckxpc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkaSx2LkZPTExPV19MQlJBQ0tFVF9pbl9wX0NhdGNoQ2xhdXNlNTQ3Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByX2luX3BfQ2F0Y2hDbGF1c2U1NDc4KSx1PXRoaXMucF9FeHByKCExLCExKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCx2aSx2LkZPTExPV19SQlJBQ0tFVF9pbl9wX0NhdGNoQ2xhdXNlNTQ4MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChjKXtpZighKGMgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGM7dGhpcy5yZXBvcnRFcnJvcihjKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxjKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfQ2F0Y2hFcnJvckxpc3RfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0NhdGNoRXJyb3JMaXN0X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQ2F0Y2hFcnJvckxpc3RfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0NhdGNoRXJyb3JMaXN0OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9DYXRjaEVycm9yTGlzdF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsO3RyeXt2YXIgdT0yLGE9dGhpcy5pbnB1dC5MQSgxKTtpZihhPj1FJiZhPD1Zbnx8YT49ZXImJmE8PWZpfHxhPT1DaXx8YT49ZXMmJmE8PXRzfHxhPT1pc3x8YT09eG8pdT0xO2Vsc2V7aWYoYSE9ZGl8fCF0aGlzLmxjKGQpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsODksMCx0aGlzLmlucHV0KTt0aHJvdyBmfXU9Mn1zd2l0Y2godSl7Y2FzZSAxOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX05hbWVUZXN0X2luX3BfQ2F0Y2hFcnJvckxpc3Q1NTA3KSxpPXRoaXMucF9OYW1lVGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO2U6ZG97dmFyIGw9MixjPXRoaXMuaW5wdXQuTEEoMSk7Yz09V2kmJihsPTEpO3N3aXRjaChsKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsV2ksdi5GT0xMT1dfVkJBUl9pbl9wX0NhdGNoRXJyb3JMaXN0NTUxMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9OYW1lVGVzdF9pbl9wX0NhdGNoRXJyb3JMaXN0NTUxMikscz10aGlzLnBfTmFtZVRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCk7aWYoIXRoaXMubGMoZCkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwicF9DYXRjaEVycm9yTGlzdCIsInRoaXMubGMoTUxTKSIpfX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChoKXtpZighKGggaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGg7dGhpcy5yZXBvcnRFcnJvcihoKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxoKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfT3JFeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9PckV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9PckV4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX09yRXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfT3JFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0FuZEV4cHJfaW5fcF9PckV4cHI1NTU3KSxpPXRoaXMucF9BbmRFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7ZTpkb3t2YXIgdT0yLGE9dGhpcy5pbnB1dC5MQSgxKTthPT1fdCYmKHU9MSk7c3dpdGNoKHUpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxfdCx2LkZPTExPV19PUl9pbl9wX09yRXhwcjU1NjMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0FuZEV4cHJfaW5fcF9PckV4cHI1NTY3KSxzPXRoaXMucF9BbmRFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCk7ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwX0FuZEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0FuZEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9BbmRFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9BbmRFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9BbmRFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0NvbXBhcmlzb25FeHByX2luX3BfQW5kRXhwcjU1OTYpLGk9dGhpcy5wX0NvbXBhcmlzb25FeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7ZTpkb3t2YXIgdT0yLGE9dGhpcy5pbnB1dC5MQSgxKTthPT14JiYodT0xKTtzd2l0Y2godSl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHgsdi5GT0xMT1dfQU5EX2luX3BfQW5kRXhwcjU2MDIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0NvbXBhcmlzb25FeHByX2luX3BfQW5kRXhwcjU2MDYpLHM9dGhpcy5wX0NvbXBhcmlzb25FeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCk7ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwX0NvbXBhcmlzb25FeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9Db21wYXJpc29uRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0NvbXBhcmlzb25FeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Db21wYXJpc29uRXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQ29tcGFyaXNvbkV4cHJfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUQ29udGFpbnNFeHByX2luX3BfQ29tcGFyaXNvbkV4cHI1NjM2KSxuPXRoaXMucF9GVENvbnRhaW5zRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpO3ZhciBhPTIsZj10aGlzLmlucHV0LkxBKDEpO2lmKGY9PVl8fGY9PW90fHxmPT1hdHx8Zj09bXR8fGY9PWJ0fHxmPT1TdHx8Zj09Q3R8fGY9PXlpfHxmPT13aXx8Zj49QWkmJmY8PVBpKWE9MTtzd2l0Y2goYSl7Y2FzZSAxOnZhciBsPTM7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgWTpjYXNlIG90OmNhc2UgYXQ6Y2FzZSBidDpjYXNlIFN0OmNhc2UgQ3Q6bD0xO2JyZWFrO2Nhc2UgeWk6Y2FzZSB3aTpjYXNlIEFpOmNhc2UgT2k6Y2FzZSBNaTpjYXNlIF9pOmw9MjticmVhaztjYXNlIG10OmNhc2UgRGk6Y2FzZSBQaTpsPTM7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBjPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsOTIsMCx0aGlzLmlucHV0KTt0aHJvdyBjfXN3aXRjaChsKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVmFsdWVDb21wX2luX3BfQ29tcGFyaXNvbkV4cHI1NjQxKSxpPXRoaXMucF9WYWx1ZUNvbXAoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfR2VuZXJhbENvbXBfaW5fcF9Db21wYXJpc29uRXhwcjU2NDUpLHM9dGhpcy5wX0dlbmVyYWxDb21wKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX05vZGVDb21wX2luX3BfQ29tcGFyaXNvbkV4cHI1NjQ5KSxvPXRoaXMucF9Ob2RlQ29tcCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpfXRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUQ29udGFpbnNFeHByX2luX3BfQ29tcGFyaXNvbkV4cHI1NjUyKSx1PXRoaXMucF9GVENvbnRhaW5zRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdS5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGgpe2lmKCEoaCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaDt0aGlzLnJlcG9ydEVycm9yKGgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGgpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxoKX1maW5hbGx5e31yZXR1cm4gZX0scF9SYW5nZUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1JhbmdlRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1JhbmdlRXhwcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUmFuZ2VFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9SYW5nZUV4cHJfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQWRkaXRpdmVFeHByX2luX3BfUmFuZ2VFeHByNTY4MSksaT10aGlzLnBfQWRkaXRpdmVFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7dmFyIHU9MixhPXRoaXMuaW5wdXQuTEEoMSk7YT09WnQmJih1PTEpO3N3aXRjaCh1KXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsWnQsdi5GT0xMT1dfVE9faW5fcF9SYW5nZUV4cHI1Njg3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9BZGRpdGl2ZUV4cHJfaW5fcF9SYW5nZUV4cHI1NjkxKSxzPXRoaXMucF9BZGRpdGl2ZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBfQWRkaXRpdmVFeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9BZGRpdGl2ZUV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9BZGRpdGl2ZUV4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0FkZGl0aXZlRXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQWRkaXRpdmVFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX011bHRpcGxpY2F0aXZlRXhwcl9pbl9wX0FkZGl0aXZlRXhwcjU3MjApLGk9dGhpcy5wX011bHRpcGxpY2F0aXZlRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO2U6ZG97dmFyIHU9MixhPXRoaXMuaW5wdXQuTEEoMSk7YT49a2kmJmE8PUxpJiYodT0xKTtzd2l0Y2godSl7Y2FzZSAxOnZhciBmPTIsbD10aGlzLmlucHV0LkxBKDEpO2lmKGw9PWtpKWY9MTtlbHNle2lmKGwhPUxpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBjPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsOTUsMCx0aGlzLmlucHV0KTt0aHJvdyBjfWY9Mn1zd2l0Y2goZil7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGtpLHYuRk9MTE9XX1BMVVNfaW5fcF9BZGRpdGl2ZUV4cHI1NzI3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hbyhuKTticmVhaztjYXNlIDI6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTGksdi5GT0xMT1dfTUlOVVNfaW5fcF9BZGRpdGl2ZUV4cHI1NzM1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hbyhuKX10aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9NdWx0aXBsaWNhdGl2ZUV4cHJfaW5fcF9BZGRpdGl2ZUV4cHI1NzQwKSxzPXRoaXMucF9NdWx0aXBsaWNhdGl2ZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTtlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChoKXtpZighKGggaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGg7dGhpcy5yZXBvcnRFcnJvcihoKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxoKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfTXVsdGlwbGljYXRpdmVFeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9NdWx0aXBsaWNhdGl2ZUV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9NdWx0aXBsaWNhdGl2ZUV4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX011bHRpcGxpY2F0aXZlRXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfTXVsdGlwbGljYXRpdmVFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVW5pb25FeHByX2luX3BfTXVsdGlwbGljYXRpdmVFeHByNTc2OSkscz10aGlzLnBfVW5pb25FeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7ZTpkb3t2YXIgZj0yLGw9dGhpcy5pbnB1dC5MQSgxKTtpZihsPT1XfHxsPT1mdHx8bD09eHR8fGw9PUNpKWY9MTtzd2l0Y2goZil7Y2FzZSAxOnZhciBjPTIsaD10aGlzLmlucHV0LkxBKDEpO2lmKGg9PUNpKWM9MTtlbHNle2lmKGghPVcmJmghPWZ0JiZoIT14dCl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgcD1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDk4LDAsdGhpcy5pbnB1dCk7dGhyb3cgcH1jPTJ9c3dpdGNoKGMpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxDaSx2LkZPTExPV19TVEFSX2luX3BfTXVsdGlwbGljYXRpdmVFeHByNTc3Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYW8obik7YnJlYWs7Y2FzZSAyOnZhciBkPTM7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgVzpkPTE7YnJlYWs7Y2FzZSBmdDpkPTI7YnJlYWs7Y2FzZSB4dDpkPTM7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBwPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsOTcsMCx0aGlzLmlucHV0KTt0aHJvdyBwfXN3aXRjaChkKXtjYXNlIDE6aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVyx2LkZPTExPV19ESVZfaW5fcF9NdWx0aXBsaWNhdGl2ZUV4cHI1Nzg1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpO2JyZWFrO2Nhc2UgMjppPXRoaXMubWF0Y2godGhpcy5pbnB1dCxmdCx2LkZPTExPV19JRElWX2luX3BfTXVsdGlwbGljYXRpdmVFeHByNTc5MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKTticmVhaztjYXNlIDM6aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQseHQsdi5GT0xMT1dfTU9EX2luX3BfTXVsdGlwbGljYXRpdmVFeHByNTc5Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSl9dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVW5pb25FeHByX2luX3BfTXVsdGlwbGljYXRpdmVFeHByNTgwMyksbz10aGlzLnBfVW5pb25FeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCk7ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobSl7aWYoIShtIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBtO3RoaXMucmVwb3J0RXJyb3IobSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG0pfWZpbmFsbHl7fXJldHVybiBlfSxwX1VuaW9uRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfVW5pb25FeHByX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfVW5pb25FeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9VbmlvbkV4cHI6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1VuaW9uRXhwcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ludGVyc2VjdEV4Y2VwdEV4cHJfaW5fcF9VbmlvbkV4cHI1ODMyKSxzPXRoaXMucF9JbnRlcnNlY3RFeGNlcHRFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7ZTpkb3t2YXIgZj0yLGw9dGhpcy5pbnB1dC5MQSgxKTtpZihsPT1ubnx8bD09V2kpZj0xO3N3aXRjaChmKXtjYXNlIDE6dmFyIGM9MixoPXRoaXMuaW5wdXQuTEEoMSk7aWYoaD09bm4pYz0xO2Vsc2V7aWYoaCE9V2kpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIHA9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMDAsMCx0aGlzLmlucHV0KTt0aHJvdyBwfWM9Mn1zd2l0Y2goYyl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5uLHYuRk9MTE9XX1VOSU9OX2luX3BfVW5pb25FeHByNTgzOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobik7YnJlYWs7Y2FzZSAyOmk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFdpLHYuRk9MTE9XX1ZCQVJfaW5fcF9VbmlvbkV4cHI1ODQ1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpfXRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ludGVyc2VjdEV4Y2VwdEV4cHJfaW5fcF9VbmlvbkV4cHI1ODQ4KSxvPXRoaXMucF9JbnRlcnNlY3RFeGNlcHRFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCk7ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZCl7aWYoIShkIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBkO3RoaXMucmVwb3J0RXJyb3IoZCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGQpfWZpbmFsbHl7fXJldHVybiBlfSxwX0ludGVyc2VjdEV4Y2VwdEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ludGVyc2VjdEV4Y2VwdEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9JbnRlcnNlY3RFeGNlcHRFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9JbnRlcnNlY3RFeGNlcHRFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9JbnRlcnNlY3RFeGNlcHRFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0luc3RhbmNlb2ZFeHByX2luX3BfSW50ZXJzZWN0RXhjZXB0RXhwcjU4NzcpLGk9dGhpcy5wX0luc3RhbmNlb2ZFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7ZTpkb3t2YXIgdT0yLGE9dGhpcy5pbnB1dC5MQSgxKTtpZihhPT1ldHx8YT09dnQpdT0xO3N3aXRjaCh1KXtjYXNlIDE6dmFyIGY9MixsPXRoaXMuaW5wdXQuTEEoMSk7aWYobD09dnQpZj0xO2Vsc2V7aWYobCE9ZXQpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGM9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMDIsMCx0aGlzLmlucHV0KTt0aHJvdyBjfWY9Mn1zd2l0Y2goZil7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHZ0LHYuRk9MTE9XX0lOVEVSU0VDVF9pbl9wX0ludGVyc2VjdEV4Y2VwdEV4cHI1ODg0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpO2JyZWFrO2Nhc2UgMjpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxldCx2LkZPTExPV19FWENFUFRfaW5fcF9JbnRlcnNlY3RFeGNlcHRFeHByNTg5MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfSW5zdGFuY2VvZkV4cHJfaW5fcF9JbnRlcnNlY3RFeGNlcHRFeHByNTg5NSkscz10aGlzLnBfSW5zdGFuY2VvZkV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTtlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChoKXtpZighKGggaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGg7dGhpcy5yZXBvcnRFcnJvcihoKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxoKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfSW5zdGFuY2VvZkV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0luc3RhbmNlb2ZFeHByX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfSW5zdGFuY2VvZkV4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0luc3RhbmNlb2ZFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9JbnN0YW5jZW9mRXhwcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9UcmVhdEV4cHJfaW5fcF9JbnN0YW5jZW9mRXhwcjU5MjQpLGk9dGhpcy5wX1RyZWF0RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO3ZhciB1PTIsYT10aGlzLmlucHV0LkxBKDEpO2E9PWR0JiYodT0xKTtzd2l0Y2godSl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGR0LHYuRk9MTE9XX0lOU1RBTkNFX2luX3BfSW5zdGFuY2VvZkV4cHI1OTMwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxPdCx2LkZPTExPV19PRl9pbl9wX0luc3RhbmNlb2ZFeHByNTkzNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfSW5zdGFuY2VvZkV4cHI1OTQwKSxzPXRoaXMucF9TZXF1ZW5jZVR5cGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBfVHJlYXRFeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9UcmVhdEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9UcmVhdEV4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1RyZWF0RXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfVHJlYXRFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0Nhc3RhYmxlRXhwcl9pbl9wX1RyZWF0RXhwcjU5NjgpLGk9dGhpcy5wX0Nhc3RhYmxlRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO3ZhciB1PTIsYT10aGlzLmlucHV0LkxBKDEpO2E9PWVuJiYodT0xKTtzd2l0Y2godSl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGVuLHYuRk9MTE9XX1RSRUFUX2luX3BfVHJlYXRFeHByNTk3NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVCx2LkZPTExPV19BU19pbl9wX1RyZWF0RXhwcjU5ODApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1NlcXVlbmNlVHlwZV9pbl9wX1RyZWF0RXhwcjU5ODQpLHM9dGhpcy5wX1NlcXVlbmNlVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gZX0scF9DYXN0YWJsZUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0Nhc3RhYmxlRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0Nhc3RhYmxlRXhwcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQ2FzdGFibGVFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9DYXN0YWJsZUV4cHJfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQ2FzdEV4cHJfaW5fcF9DYXN0YWJsZUV4cHI2MDIxKSxpPXRoaXMucF9DYXN0RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO3ZhciB1PTIsYT10aGlzLmlucHV0LkxBKDEpO2E9PUQmJih1PTEpO3N3aXRjaCh1KXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRCx2LkZPTExPV19DQVNUQUJMRV9pbl9wX0Nhc3RhYmxlRXhwcjYwMjcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFQsdi5GT0xMT1dfQVNfaW5fcF9DYXN0YWJsZUV4cHI2MDMzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TaW5nbGVUeXBlX2luX3BfQ2FzdGFibGVFeHByNjAzNykscz10aGlzLnBfU2luZ2xlVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gZX0scF9DYXN0RXhwcl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfQ2FzdEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9DYXN0RXhwcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQ2FzdEV4cHI6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0Nhc3RFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1VuYXJ5RXhwcl9pbl9wX0Nhc3RFeHByNjA3NCksaT10aGlzLnBfVW5hcnlFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7dmFyIHU9MixhPXRoaXMuaW5wdXQuTEEoMSk7YT09XyYmKHU9MSk7c3dpdGNoKHUpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxfLHYuRk9MTE9XX0NBU1RfaW5fcF9DYXN0RXhwcjYwODApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFQsdi5GT0xMT1dfQVNfaW5fcF9DYXN0RXhwcjYwODYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1NpbmdsZVR5cGVfaW5fcF9DYXN0RXhwcjYwOTApLHM9dGhpcy5wX1NpbmdsZVR5cGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBfVW5hcnlFeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9VbmFyeUV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9VbmFyeUV4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1VuYXJ5RXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfVW5hcnlFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gUExVUyIpLHU9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBNSU5VUyIpLGE9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9WYWx1ZUV4cHIiKTt0cnl7ZTpkb3t2YXIgZj0zLGw9dGhpcy5pbnB1dC5MQSgxKTtsPT1raT9mPTE6bD09TGkmJihmPTIpO3N3aXRjaChmKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsa2ksdi5GT0xMT1dfUExVU19pbl9wX1VuYXJ5RXhwcjYxMjIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmby5hZGQobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFvKG4pO2JyZWFrO2Nhc2UgMjpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxMaSx2LkZPTExPV19NSU5VU19pbl9wX1VuYXJ5RXhwcjYxMzApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdS5hZGQobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFvKG4pO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApO3RoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1ZhbHVlRXhwcl9pbl9wX1VuYXJ5RXhwcjYxMzUpLGk9dGhpcy5wX1ZhbHVlRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmYS5hZGQoaS5nZXRUcmVlKCkpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIGM9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsZSE9bnVsbD9lLnRyZWU6bnVsbCk7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGg9dGhpcy5hZGFwdG9yLm5pbCgpO2g9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShybywiVW5hcnlFeHByIiksaCk7d2hpbGUoby5oYXNOZXh0KCkpdGhpcy5hZGFwdG9yLmFkZENoaWxkKGgsby5uZXh0Tm9kZSgpKTtvLnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGgsYS5uZXh0VHJlZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxoKSxlLnRyZWU9dH1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChwKXtpZighKHAgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHA7dGhpcy5yZXBvcnRFcnJvcihwKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxwKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfVmFsdWVFeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9WYWx1ZUV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9WYWx1ZUV4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1ZhbHVlRXhwcjpmdW5jdGlvbigpe3ZhciB0PW5ldyB2LnBfVmFsdWVFeHByX3JldHVybjt0LnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbDt0cnl7dmFyIHU9Mztzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBzbjp2YXIgYT10aGlzLmlucHV0LkxBKDIpO2lmKGE9PXl0JiZ0aGlzLnN5bnByZWQ2X1hRdWVyeVBhcnNlcigpKXU9MTtlbHNlIGlmKGE9PUt0JiZ0aGlzLnN5bnByZWQ2X1hRdWVyeVBhcnNlcigpKXU9MTtlbHNlIGlmKGE9PUhuJiZ0aGlzLnN5bnByZWQ2X1hRdWVyeVBhcnNlcigpKXU9MTtlbHNlIGlmKGE9PWRpJiZ0aGlzLnN5bnByZWQ2X1hRdWVyeVBhcnNlcigpKXU9MTtlbHNle2lmKCEoYT09ZXx8YT49eCYmYTw9Tnx8YT49TSYmYTw9RHx8YT09SHx8YT09cXx8YT49eiYmYTw9V3x8YT09S3x8YT09WXx8YT09ZXR8fGE9PWl0fHxhPT1vdHx8YT49YXQmJmE8PWZ0fHxhPj1kdCYmYTw9bXR8fGE9PWJ0fHxhPj1FdCYmYTw9eHR8fGE9PUN0fHxhPj1fdCYmYTw9RHR8fGE+PVJ0JiZhPD1VdHx8YT09SnR8fGE+PVp0JiZhPD1lbnx8YT09bm58fGE9PWFufHxhPT1wbnx8YT49Z24mJmE8PXlufHxhPT1Obnx8YT09TW58fGE+PUluJiZhPD1xbnx8YT09WG58fGE9PSRufHxhPT10cnx8YT09aXJ8fGE9PU5yfHxhPT1fcnx8YT09QnJ8fGE9PXpyfHxhPj1saSYmYTw9aGl8fGE+PXZpJiZhPD15aXx8YT09d2l8fGE9PVRpfHxhPj1DaSYmYTw9Qml8fGE9PUlpfHxhPj16aSYmYTw9V2kpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCx0O3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTA5LDEsdGhpcy5pbnB1dCk7dGhyb3cgZn11PTJ9YnJlYWs7Y2FzZSBFOmNhc2UgUzpjYXNlIHg6Y2FzZSBUOmNhc2UgTjpjYXNlIEM6Y2FzZSBrOmNhc2UgTDpjYXNlIEE6Y2FzZSBPOmNhc2UgTTpjYXNlIF86Y2FzZSBEOmNhc2UgUDpjYXNlIEg6Y2FzZSBCOmNhc2UgajpjYXNlIEY6Y2FzZSBJOmNhc2UgcTpjYXNlIFI6Y2FzZSBVOmNhc2UgejpjYXNlIFc6Y2FzZSBYOmNhc2UgVjpjYXNlICQ6Y2FzZSBKOmNhc2UgSzpjYXNlIFE6Y2FzZSBHOmNhc2UgWTpjYXNlIFo6Y2FzZSBldDpjYXNlIHR0OmNhc2UgbnQ6Y2FzZSBydDpjYXNlIGl0OmNhc2Ugc3Q6Y2FzZSBvdDpjYXNlIHV0OmNhc2UgYXQ6Y2FzZSBmdDpjYXNlIGx0OmNhc2UgY3Q6Y2FzZSBodDpjYXNlIHB0OmNhc2UgZHQ6Y2FzZSB2dDpjYXNlIG10OmNhc2UgZ3Q6Y2FzZSB5dDpjYXNlIGJ0OmNhc2Ugd3Q6Y2FzZSBFdDpjYXNlIFN0OmNhc2UgeHQ6Y2FzZSBUdDpjYXNlIE50OmNhc2UgQ3Q6Y2FzZSBrdDpjYXNlIEx0OmNhc2UgQXQ6Y2FzZSBPdDpjYXNlIE10OmNhc2UgX3Q6Y2FzZSBEdDpjYXNlIFB0OmNhc2UgSHQ6Y2FzZSBCdDpjYXNlIGp0OmNhc2UgRnQ6Y2FzZSBJdDpjYXNlIHF0OmNhc2UgUnQ6Y2FzZSBVdDpjYXNlIHp0OmNhc2UgV3Q6Y2FzZSBYdDpjYXNlIFZ0OmNhc2UgJHQ6Y2FzZSBKdDpjYXNlIEt0OmNhc2UgUXQ6Y2FzZSBHdDpjYXNlIFl0OmNhc2UgWnQ6Y2FzZSBlbjpjYXNlIHRuOmNhc2Ugbm46Y2FzZSBybjpjYXNlIG9uOmNhc2UgdW46Y2FzZSBhbjpjYXNlIGZuOmNhc2UgbG46Y2FzZSBjbjpjYXNlIGhuOmNhc2UgcG46Y2FzZSBkbjpjYXNlIHZuOmNhc2UgbW46Y2FzZSBnbjpjYXNlIHluOmNhc2UgYm46Y2FzZSB3bjpjYXNlIEVuOmNhc2UgU246Y2FzZSB4bjpjYXNlIFRuOmNhc2UgTm46Y2FzZSBDbjpjYXNlIGtuOmNhc2UgTG46Y2FzZSBBbjpjYXNlIE9uOmNhc2UgTW46Y2FzZSBfbjpjYXNlIERuOmNhc2UgUG46Y2FzZSBIbjpjYXNlIEJuOmNhc2Ugam46Y2FzZSBGbjpjYXNlIEluOmNhc2UgcW46Y2FzZSBSbjpjYXNlIFVuOmNhc2Ugem46Y2FzZSBXbjpjYXNlIFhuOmNhc2UgVm46Y2FzZSAkbjpjYXNlIEpuOmNhc2UgS246Y2FzZSBRbjpjYXNlIEduOmNhc2UgWW46Y2FzZSBabjpjYXNlIGVyOmNhc2UgdHI6Y2FzZSBucjpjYXNlIHJyOmNhc2UgaXI6Y2FzZSBzcjpjYXNlIG9yOmNhc2UgdXI6Y2FzZSBhcjpjYXNlIGZyOmNhc2UgbHI6Y2FzZSBjcjpjYXNlIGhyOmNhc2UgcHI6Y2FzZSBkcjpjYXNlIHZyOmNhc2UgbXI6Y2FzZSBncjpjYXNlIHlyOmNhc2UgYnI6Y2FzZSB3cjpjYXNlIEVyOmNhc2UgU3I6Y2FzZSB4cjpjYXNlIFRyOmNhc2UgTnI6Y2FzZSBDcjpjYXNlIGtyOmNhc2UgTHI6Y2FzZSBBcjpjYXNlIE9yOmNhc2UgTXI6Y2FzZSBfcjpjYXNlIERyOmNhc2UgUHI6Y2FzZSBIcjpjYXNlIEJyOmNhc2UganI6Y2FzZSBGcjpjYXNlIElyOmNhc2UgcXI6Y2FzZSBScjpjYXNlIFVyOmNhc2UgenI6Y2FzZSBXcjpjYXNlIFhyOmNhc2UgVnI6Y2FzZSAkcjpjYXNlIEpyOmNhc2UgS3I6Y2FzZSBRcjpjYXNlIEdyOmNhc2UgWXI6Y2FzZSBacjpjYXNlIGVpOmNhc2UgdGk6Y2FzZSBuaTpjYXNlIHJpOmNhc2UgaWk6Y2FzZSBzaTpjYXNlIG9pOmNhc2UgdWk6Y2FzZSBhaTpjYXNlIGZpOmNhc2UgY2k6Y2FzZSBwaTpjYXNlIGRpOmNhc2UgQ2k6Y2FzZSBBaTpjYXNlIEhpOmNhc2UgQmk6Y2FzZSBqaTpjYXNlIEZpOmNhc2UgR2k6Y2FzZSBlczpjYXNlIHRzOmNhc2UgaXM6Y2FzZSBoczpjYXNlIHBzOmNhc2UgZHM6Y2FzZSB2czpjYXNlIG1zOmNhc2UgeG86dT0yO2JyZWFrO2Nhc2UgY3M6dT0zO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsdDt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEwOSwwLHRoaXMuaW5wdXQpO3Rocm93IGZ9c3dpdGNoKHUpe2Nhc2UgMTpuPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9WYWxpZGF0ZUV4cHJfaW5fcF9WYWx1ZUV4cHI2MjA1KSxpPXRoaXMucF9WYWxpZGF0ZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGkuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6bj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUGF0aEV4cHJfaW5fcF9WYWx1ZUV4cHI2MjE3KSxzPXRoaXMucF9QYXRoRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4scy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMzpuPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHRlbnNpb25FeHByX2luX3BfVmFsdWVFeHByNjIyOSksbz10aGlzLnBfRXh0ZW5zaW9uRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sby5nZXRUcmVlKCkpfXQuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih0LnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhuKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKHQudHJlZSx0LnN0YXJ0LHQuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLHQudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsdC5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gdH0scF9HZW5lcmFsQ29tcF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfR2VuZXJhbENvbXBfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9HZW5lcmFsQ29tcF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfR2VuZXJhbENvbXA6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0dlbmVyYWxDb21wX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgcz02O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIHlpOnM9MTticmVhaztjYXNlIHdpOnM9MjticmVhaztjYXNlIEFpOnM9MzticmVhaztjYXNlIE1pOnM9NDticmVhaztjYXNlIE9pOnM9NTticmVhaztjYXNlIF9pOnM9NjticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIG89bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMTAsMCx0aGlzLmlucHV0KTt0aHJvdyBvfXN3aXRjaChzKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQseWksdi5GT0xMT1dfRVFVQUxfaW5fcF9HZW5lcmFsQ29tcDYyNTgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpKSk7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHdpLHYuRk9MTE9XX05PVEVRVUFMX2luX3BfR2VuZXJhbENvbXA2MjY0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaSkpO2JyZWFrO2Nhc2UgMzpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxBaSx2LkZPTExPV19TTUFMTEVSX2luX3BfR2VuZXJhbENvbXA2MjcwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaSkpO2JyZWFrO2Nhc2UgNDpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxNaSx2LkZPTExPV19TTUFMTEVSRVFfaW5fcF9HZW5lcmFsQ29tcDYyNzYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpKSk7YnJlYWs7Y2FzZSA1Om49dGhpcy5tYXRjaCh0aGlzLmlucHV0LE9pLHYuRk9MTE9XX0dSRUFURVJfaW5fcF9HZW5lcmFsQ29tcDYyODIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpKSk7YnJlYWs7Y2FzZSA2Om49dGhpcy5tYXRjaCh0aGlzLmlucHV0LF9pLHYuRk9MTE9XX0dSRUFURVJFUV9pbl9wX0dlbmVyYWxDb21wNjI4OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkpKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYW8obiksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2godSl7aWYoISh1IGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB1O3RoaXMucmVwb3J0RXJyb3IodSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHUpfWZpbmFsbHl7fXJldHVybiBlfSxwX1ZhbHVlQ29tcF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfVmFsdWVDb21wX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfVmFsdWVDb21wX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9WYWx1ZUNvbXA6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1ZhbHVlQ29tcF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIHM9Njtzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBZOnM9MTticmVhaztjYXNlIEN0OnM9MjticmVhaztjYXNlIFN0OnM9MzticmVhaztjYXNlIGJ0OnM9NDticmVhaztjYXNlIGF0OnM9NTticmVhaztjYXNlIG90OnM9NjticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIG89bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMTEsMCx0aGlzLmlucHV0KTt0aHJvdyBvfXN3aXRjaChzKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsWSx2LkZPTExPV19FUV9pbl9wX1ZhbHVlQ29tcDYzMjApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpKSk7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEN0LHYuRk9MTE9XX05FX2luX3BfVmFsdWVDb21wNjMyNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkpKTticmVhaztjYXNlIDM6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsU3Qsdi5GT0xMT1dfTFRfaW5fcF9WYWx1ZUNvbXA2MzMyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaSkpO2JyZWFrO2Nhc2UgNDpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxidCx2LkZPTExPV19MRV9pbl9wX1ZhbHVlQ29tcDYzMzgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpKSk7YnJlYWs7Y2FzZSA1Om49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGF0LHYuRk9MTE9XX0dUX2luX3BfVmFsdWVDb21wNjM0NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkpKTticmVhaztjYXNlIDY6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb3Qsdi5GT0xMT1dfR0VfaW5fcF9WYWx1ZUNvbXA2MzUwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaSkpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaCh1KXtpZighKHUgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHU7dGhpcy5yZXBvcnRFcnJvcih1KSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCx1KSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksdSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfTm9kZUNvbXBfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX05vZGVDb21wX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfTm9kZUNvbXBfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX05vZGVDb21wOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9Ob2RlQ29tcF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e3ZhciBmPTM7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgbXQ6Zj0xO2JyZWFrO2Nhc2UgRGk6Zj0yO2JyZWFrO2Nhc2UgUGk6Zj0zO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgbD1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDExMiwwLHRoaXMuaW5wdXQpO3Rocm93IGx9c3dpdGNoKGYpe2Nhc2UgMTp0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtdCx2LkZPTExPV19JU19pbl9wX05vZGVDb21wNjM4MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobik7YnJlYWs7Y2FzZSAyOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LERpLHYuRk9MTE9XX1NNQUxMRVJfU01BTExFUl9pbl9wX05vZGVDb21wNjM4Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKTticmVhaztjYXNlIDM6dD10aGlzLmFkYXB0b3IubmlsKCkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUGksdi5GT0xMT1dfR1JFQVRFUl9HUkVBVEVSX2luX3BfTm9kZUNvbXA2MzkxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGMpe2lmKCEoYyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgYzt0aGlzLnJlcG9ydEVycm9yKGMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGMpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxjKX1maW5hbGx5e31yZXR1cm4gZX0scF9WYWxpZGF0ZUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1ZhbGlkYXRlRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1ZhbGlkYXRlRXhwcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVmFsaWRhdGVFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9WYWxpZGF0ZUV4cHJfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxzbix2LkZPTExPV19WQUxJREFURV9pbl9wX1ZhbGlkYXRlRXhwcjY0MTkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pO3ZhciBoPTMscD10aGlzLmlucHV0LkxBKDEpO3A9PXl0fHxwPT1LdD9oPTE6cD09SG4mJihoPTIpO3N3aXRjaChoKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVmFsaWRhdGlvbk1vZGVfaW5fcF9WYWxpZGF0ZUV4cHI2NDI1KSxvPXRoaXMucF9WYWxpZGF0aW9uTW9kZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxIbix2LkZPTExPV19UWVBFX2luX3BfVmFsaWRhdGVFeHByNjQzMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVHlwZU5hbWVfaW5fcF9WYWxpZGF0ZUV4cHI2NDM1KSx1PXRoaXMucF9UeXBlTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdS5nZXRUcmVlKCkpfWk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGRpLHYuRk9MTE9XX0xCUkFDS0VUX2luX3BfVmFsaWRhdGVFeHByNjQ0MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByX2luX3BfVmFsaWRhdGVFeHByNjQ0MiksYT10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdmksdi5GT0xMT1dfUkJSQUNLRVRfaW5fcF9WYWxpZGF0ZUV4cHI2NDQ1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYykpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGQpe2lmKCEoZCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZDt0aGlzLnJlcG9ydEVycm9yKGQpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGQpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxkKX1maW5hbGx5e31yZXR1cm4gZX0scF9WYWxpZGF0aW9uTW9kZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfVmFsaWRhdGlvbk1vZGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9WYWxpZGF0aW9uTW9kZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVmFsaWRhdGlvbk1vZGU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1ZhbGlkYXRpb25Nb2RlX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgcz0yLG89dGhpcy5pbnB1dC5MQSgxKTtpZihvPT15dClzPTE7ZWxzZXtpZihvIT1LdCl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgdT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDExNCwwLHRoaXMuaW5wdXQpO3Rocm93IHV9cz0yfXN3aXRjaChzKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQseXQsdi5GT0xMT1dfTEFYX2luX3BfVmFsaWRhdGlvbk1vZGU2NDc0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaSkpO2JyZWFrO2Nhc2UgMjpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxLdCx2LkZPTExPV19TVFJJQ1RfaW5fcF9WYWxpZGF0aW9uTW9kZTY0ODApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpKSl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGEpe2lmKCEoYSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgYTt0aGlzLnJlcG9ydEVycm9yKGEpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGEpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxhKX1maW5hbGx5e31yZXR1cm4gZX0scF9FeHRlbnNpb25FeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9FeHRlbnNpb25FeHByX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRXh0ZW5zaW9uRXhwcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRXh0ZW5zaW9uRXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRXh0ZW5zaW9uRXhwcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgbD0wO2U6ZG97dmFyIGM9MixoPXRoaXMuaW5wdXQuTEEoMSk7aD09Y3MmJihjPTEpO3N3aXRjaChjKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY3Msdi5GT0xMT1dfTF9QcmFnbWFfaW5fcF9FeHRlbnNpb25FeHByNjUwOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKTticmVhaztkZWZhdWx0OmlmKGw+PTEpYnJlYWsgZTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBwPW5ldyByLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDExNSx0aGlzLmlucHV0KTt0aHJvdyBwfWwrK313aGlsZSghMCk7aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZGksdi5GT0xMT1dfTEJSQUNLRVRfaW5fcF9FeHRlbnNpb25FeHByNjUxMik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKTt2YXIgZD0yLG09dGhpcy5pbnB1dC5MQSgxKTtpZihtPj1FJiZtPD1maXx8bT09Y2l8fG0+PXBpJiZtPD1kaXx8bT49Q2kmJm08PUFpfHxtPj1IaSYmbTw9Rml8fG09PUdpfHxtPj1lcyYmbTw9dHN8fG09PWlzfHxtPj1jcyYmbTw9bXN8fG09PXhvKWQ9MTtzd2l0Y2goZCl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJfaW5fcF9FeHRlbnNpb25FeHByNjUxNCksbz10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSl9cz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdmksdi5GT0xMT1dfUkJSQUNLRVRfaW5fcF9FeHRlbnNpb25FeHByNjUxOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChnKXtpZighKGcgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGc7dGhpcy5yZXBvcnRFcnJvcihnKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxnKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfUGF0aEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1BhdGhFeHByX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfUGF0aEV4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1BhdGhFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9QYXRoRXhwcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGw7dHJ5e3ZhciBoPTQ7aD10aGlzLmRmYTExNy5wcmVkaWN0KHRoaXMuaW5wdXQpO3N3aXRjaChoKXtjYXNlIDE6dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSGksdi5GT0xMT1dfU0xBU0hfaW5fcF9QYXRoRXhwcjY1NjEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUmVsYXRpdmVQYXRoRXhwcl9pbl9wX1BhdGhFeHByNjU2Myksbz10aGlzLnBfUmVsYXRpdmVQYXRoRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0PXRoaXMuYWRhcHRvci5uaWwoKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxIaSx2LkZPTExPV19TTEFTSF9pbl9wX1BhdGhFeHByNjU3Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKTticmVhaztjYXNlIDM6dD10aGlzLmFkYXB0b3IubmlsKCkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQmksdi5GT0xMT1dfU0xBU0hfU0xBU0hfaW5fcF9QYXRoRXhwcjY1ODgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGM9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxjKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUmVsYXRpdmVQYXRoRXhwcl9pbl9wX1BhdGhFeHByNjU5MCksdT10aGlzLnBfUmVsYXRpdmVQYXRoRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNDp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9SZWxhdGl2ZVBhdGhFeHByX2luX3BfUGF0aEV4cHI2NjAyKSxhPXRoaXMucF9SZWxhdGl2ZVBhdGhFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gocCl7aWYoIShwIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBwO3RoaXMucmVwb3J0RXJyb3IocCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQscCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHApfWZpbmFsbHl7fXJldHVybiBlfSxwX1JlbGF0aXZlUGF0aEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1JlbGF0aXZlUGF0aEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9SZWxhdGl2ZVBhdGhFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9SZWxhdGl2ZVBhdGhFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9SZWxhdGl2ZVBhdGhFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0ZXBFeHByX2luX3BfUmVsYXRpdmVQYXRoRXhwcjY2MzApLGk9dGhpcy5wX1N0ZXBFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7ZTpkb3t2YXIgdT0yLGE9dGhpcy5pbnB1dC5MQSgxKTthPj1IaSYmYTw9QmkmJih1PTEpO3N3aXRjaCh1KXtjYXNlIDE6bj10aGlzLmlucHV0LkxUKDEpO2lmKCEodGhpcy5pbnB1dC5MQSgxKT49SGkmJnRoaXMuaW5wdXQuTEEoMSk8PUJpKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyBmfXRoaXMuaW5wdXQuY29uc3VtZSgpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdGhpcy5hZGFwdG9yLmNyZWF0ZShuKSksdGhpcy5zdGF0ZS5lcnJvclJlY292ZXJ5PSExLHRoaXMuc3RhdGUuZmFpbGVkPSExLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0ZXBFeHByX2luX3BfUmVsYXRpdmVQYXRoRXhwcjY2NDEpLHM9dGhpcy5wX1N0ZXBFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCk7ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBlfSxwX1N0ZXBFeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9TdGVwRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1N0ZXBFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9TdGVwRXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfU3RlcEV4cHJfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsO3RyeXt2YXIgZj02O2Y9dGhpcy5kZmExMTkucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2goZil7Y2FzZSAxOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1Bvc3RmaXhFeHByX2luX3BfU3RlcEV4cHI2Njk1KSxuPXRoaXMucF9Qb3N0Zml4RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Qb3N0Zml4RXhwcl9pbl9wX1N0ZXBFeHByNjgwOSksaT10aGlzLnBfUG9zdGZpeEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQXhpc1N0ZXBfaW5fcF9TdGVwRXhwcjY4MjcpLHM9dGhpcy5wX0F4aXNTdGVwKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA0OnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1Bvc3RmaXhFeHByX2luX3BfU3RlcEV4cHI2ODQ4KSxvPXRoaXMucF9Qb3N0Zml4RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNTp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Qb3N0Zml4RXhwcl9pbl9wX1N0ZXBFeHByNjg2NiksdT10aGlzLnBfUG9zdGZpeEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDY6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQXhpc1N0ZXBfaW5fcF9TdGVwRXhwcjY4NzgpLGE9dGhpcy5wX0F4aXNTdGVwKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBlfSxwX0F4aXNTdGVwX3JldHVybjpmdW5jdGlvbigpe3YucF9BeGlzU3RlcF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0F4aXNTdGVwX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9BeGlzU3RlcDpmdW5jdGlvbigpe3ZhciB0PW5ldyB2LnBfQXhpc1N0ZXBfcmV0dXJuO3Quc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsO3RyeXtuPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgdT0yO3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIEJ0OnZhciBhPXRoaXMuaW5wdXQuTEEoMik7aWYoYT09cWkpdT0xO2Vsc2V7aWYoIShhPT1lfHxhPj14JiZhPD1OfHxhPj1PJiZhPD1EfHxhPT1IfHxhPT1xfHxhPj16JiZhPD1XfHxhPT1LfHxhPT1ZfHxhPT1ldHx8YT09aXR8fGE9PW90fHxhPj1hdCYmYTw9ZnR8fGE+PWR0JiZhPD1tdHx8YT09YnR8fGE+PUV0JiZhPD14dHx8YT09Q3R8fGE+PV90JiZhPD1EdHx8YT49UnQmJmE8PVV0fHxhPT1KdHx8YT49WnQmJmE8PWVufHxhPT1ubnx8YT09YW58fGE9PXBufHxhPj1nbiYmYTw9eW58fGE9PU5ufHxhPT1Nbnx8YT49SW4mJmE8PXFufHxhPT1Ybnx8YT09JG58fGE9PXRyfHxhPT1pcnx8YT09TnJ8fGE9PV9yfHxhPT1Ccnx8YT09enJ8fGE9PWxpfHxhPT1oaXx8YT49dmkmJmE8PXlpfHxhPT13aXx8YT09VGl8fGE+PUNpJiZhPD1CaXx8YT09SWl8fGE+PXppJiZhPD1XaSkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLHQ7dmFyIGY9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMjAsMSx0aGlzLmlucHV0KTt0aHJvdyBmfXU9Mn1icmVhaztjYXNlIEU6dmFyIGw9dGhpcy5pbnB1dC5MQSgyKTtpZihsPT1xaSl1PTE7ZWxzZXtpZighKGw9PWV8fGw+PXgmJmw8PU58fGw+PU8mJmw8PUR8fGw9PUh8fGw9PXF8fGw+PXomJmw8PVd8fGw9PUt8fGw9PVl8fGw9PWV0fHxsPT1pdHx8bD09b3R8fGw+PWF0JiZsPD1mdHx8bD49ZHQmJmw8PW10fHxsPT1idHx8bD49RXQmJmw8PXh0fHxsPT1DdHx8bD49X3QmJmw8PUR0fHxsPj1SdCYmbDw9VXR8fGw9PUp0fHxsPj1adCYmbDw9ZW58fGw9PW5ufHxsPT1hbnx8bD09cG58fGw+PWduJiZsPD15bnx8bD09Tm58fGw9PU1ufHxsPj1JbiYmbDw9cW58fGw9PVhufHxsPT0kbnx8bD09dHJ8fGw9PWlyfHxsPT1Ocnx8bD09X3J8fGw9PUJyfHxsPT16cnx8bD09bGl8fGw9PWhpfHxsPj12aSYmbDw9eWl8fGw9PXdpfHxsPT1UaXx8bD49Q2kmJmw8PUJpfHxsPT1JaXx8bD49emkmJmw8PVdpKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsdDt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEyMCwyLHRoaXMuaW5wdXQpO3Rocm93IGZ9dT0yfWJyZWFrO2Nhc2UgRnQ6dmFyIGM9dGhpcy5pbnB1dC5MQSgyKTtpZihjPT1xaSl1PTE7ZWxzZXtpZighKGM9PWV8fGM+PXgmJmM8PU58fGM+PU8mJmM8PUR8fGM9PUh8fGM9PXF8fGM+PXomJmM8PVd8fGM9PUt8fGM9PVl8fGM9PWV0fHxjPT1pdHx8Yz09b3R8fGM+PWF0JiZjPD1mdHx8Yz49ZHQmJmM8PW10fHxjPT1idHx8Yz49RXQmJmM8PXh0fHxjPT1DdHx8Yz49X3QmJmM8PUR0fHxjPj1SdCYmYzw9VXR8fGM9PUp0fHxjPj1adCYmYzw9ZW58fGM9PW5ufHxjPT1hbnx8Yz09cG58fGM+PWduJiZjPD15bnx8Yz09Tm58fGM9PU1ufHxjPj1JbiYmYzw9cW58fGM9PVhufHxjPT0kbnx8Yz09dHJ8fGM9PWlyfHxjPT1Ocnx8Yz09X3J8fGM9PUJyfHxjPT16cnx8Yz09bGl8fGM9PWhpfHxjPj12aSYmYzw9eWl8fGM9PXdpfHxjPT1UaXx8Yz49Q2kmJmM8PUJpfHxjPT1JaXx8Yz49emkmJmM8PVdpKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsdDt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEyMCwzLHRoaXMuaW5wdXQpO3Rocm93IGZ9dT0yfWJyZWFrO2Nhc2UganQ6dmFyIGg9dGhpcy5pbnB1dC5MQSgyKTtpZihoPT1xaSl1PTE7ZWxzZXtpZighKGg9PWV8fGg+PXgmJmg8PU58fGg+PU8mJmg8PUR8fGg9PUh8fGg9PXF8fGg+PXomJmg8PVd8fGg9PUt8fGg9PVl8fGg9PWV0fHxoPT1pdHx8aD09b3R8fGg+PWF0JiZoPD1mdHx8aD49ZHQmJmg8PW10fHxoPT1idHx8aD49RXQmJmg8PXh0fHxoPT1DdHx8aD49X3QmJmg8PUR0fHxoPj1SdCYmaDw9VXR8fGg9PUp0fHxoPj1adCYmaDw9ZW58fGg9PW5ufHxoPT1hbnx8aD09cG58fGg+PWduJiZoPD15bnx8aD09Tm58fGg9PU1ufHxoPj1JbiYmaDw9cW58fGg9PVhufHxoPT0kbnx8aD09dHJ8fGg9PWlyfHxoPT1Ocnx8aD09X3J8fGg9PUJyfHxoPT16cnx8aD09bGl8fGg9PWhpfHxoPj12aSYmaDw9eWl8fGg9PXdpfHxoPT1UaXx8aD49Q2kmJmg8PUJpfHxoPT1JaXx8aD49emkmJmg8PVdpKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsdDt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEyMCw0LHRoaXMuaW5wdXQpO3Rocm93IGZ9dT0yfWJyZWFrO2Nhc2UgUzp2YXIgcD10aGlzLmlucHV0LkxBKDIpO2lmKHA9PXFpKXU9MTtlbHNle2lmKCEocD09ZXx8cD49eCYmcDw9Tnx8cD49TyYmcDw9RHx8cD09SHx8cD09cXx8cD49eiYmcDw9V3x8cD09S3x8cD09WXx8cD09ZXR8fHA9PWl0fHxwPT1vdHx8cD49YXQmJnA8PWZ0fHxwPj1kdCYmcDw9bXR8fHA9PWJ0fHxwPj1FdCYmcDw9eHR8fHA9PUN0fHxwPj1fdCYmcDw9RHR8fHA+PVJ0JiZwPD1VdHx8cD09SnR8fHA+PVp0JiZwPD1lbnx8cD09bm58fHA9PWFufHxwPT1wbnx8cD49Z24mJnA8PXlufHxwPT1Obnx8cD09TW58fHA+PUluJiZwPD1xbnx8cD09WG58fHA9PSRufHxwPT10cnx8cD09aXJ8fHA9PU5yfHxwPT1fcnx8cD09QnJ8fHA9PXpyfHxwPT1saXx8cD09aGl8fHA+PXZpJiZwPD15aXx8cD09d2l8fHA9PVRpfHxwPj1DaSYmcDw9Qml8fHA9PUlpfHxwPj16aSYmcDw9V2kpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCx0O3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTIwLDUsdGhpcy5pbnB1dCk7dGhyb3cgZn11PTJ9YnJlYWs7Y2FzZSBGaTp1PTE7YnJlYWs7Y2FzZSB4OmNhc2UgVDpjYXNlIE46Y2FzZSBDOmNhc2UgazpjYXNlIEw6Y2FzZSBBOmNhc2UgTzpjYXNlIE06Y2FzZSBfOmNhc2UgRDpjYXNlIFA6Y2FzZSBIOmNhc2UgQjpjYXNlIGo6Y2FzZSBGOmNhc2UgSTpjYXNlIHE6Y2FzZSBSOmNhc2UgVTpjYXNlIHo6Y2FzZSBXOmNhc2UgWDpjYXNlIFY6Y2FzZSAkOmNhc2UgSjpjYXNlIEs6Y2FzZSBROmNhc2UgRzpjYXNlIFk6Y2FzZSBaOmNhc2UgZXQ6Y2FzZSB0dDpjYXNlIG50OmNhc2UgcnQ6Y2FzZSBpdDpjYXNlIHN0OmNhc2Ugb3Q6Y2FzZSB1dDpjYXNlIGF0OmNhc2UgZnQ6Y2FzZSBsdDpjYXNlIGN0OmNhc2UgaHQ6Y2FzZSBwdDpjYXNlIGR0OmNhc2UgdnQ6Y2FzZSBtdDpjYXNlIGd0OmNhc2UgeXQ6Y2FzZSBidDpjYXNlIHd0OmNhc2UgRXQ6Y2FzZSBTdDpjYXNlIHh0OmNhc2UgVHQ6Y2FzZSBOdDpjYXNlIEN0OmNhc2Uga3Q6Y2FzZSBMdDpjYXNlIEF0OmNhc2UgT3Q6Y2FzZSBNdDpjYXNlIF90OmNhc2UgRHQ6Y2FzZSBQdDpjYXNlIEh0OmNhc2UgSXQ6Y2FzZSBxdDpjYXNlIFJ0OmNhc2UgVXQ6Y2FzZSB6dDpjYXNlIFd0OmNhc2UgWHQ6Y2FzZSBWdDpjYXNlICR0OmNhc2UgSnQ6Y2FzZSBLdDpjYXNlIFF0OmNhc2UgR3Q6Y2FzZSBZdDpjYXNlIFp0OmNhc2UgZW46Y2FzZSB0bjpjYXNlIG5uOmNhc2Ugcm46Y2FzZSBzbjpjYXNlIG9uOmNhc2UgdW46Y2FzZSBhbjpjYXNlIGZuOmNhc2UgbG46Y2FzZSBjbjpjYXNlIGhuOmNhc2UgcG46Y2FzZSBkbjpjYXNlIHZuOmNhc2UgbW46Y2FzZSBnbjpjYXNlIHluOmNhc2UgYm46Y2FzZSB3bjpjYXNlIEVuOmNhc2UgU246Y2FzZSB4bjpjYXNlIFRuOmNhc2UgTm46Y2FzZSBDbjpjYXNlIGtuOmNhc2UgTG46Y2FzZSBBbjpjYXNlIE9uOmNhc2UgTW46Y2FzZSBfbjpjYXNlIERuOmNhc2UgUG46Y2FzZSBIbjpjYXNlIEJuOmNhc2Ugam46Y2FzZSBGbjpjYXNlIEluOmNhc2UgcW46Y2FzZSBSbjpjYXNlIFVuOmNhc2Ugem46Y2FzZSBXbjpjYXNlIFhuOmNhc2UgVm46Y2FzZSAkbjpjYXNlIEpuOmNhc2UgS246Y2FzZSBRbjpjYXNlIEduOmNhc2UgWW46Y2FzZSBlcjpjYXNlIHRyOmNhc2UgbnI6Y2FzZSBycjpjYXNlIGlyOmNhc2Ugc3I6Y2FzZSBvcjpjYXNlIHVyOmNhc2UgYXI6Y2FzZSBmcjpjYXNlIGxyOmNhc2UgY3I6Y2FzZSBocjpjYXNlIHByOmNhc2UgZHI6Y2FzZSB2cjpjYXNlIG1yOmNhc2UgZ3I6Y2FzZSB5cjpjYXNlIGJyOmNhc2Ugd3I6Y2FzZSBFcjpjYXNlIFNyOmNhc2UgeHI6Y2FzZSBUcjpjYXNlIE5yOmNhc2UgQ3I6Y2FzZSBrcjpjYXNlIExyOmNhc2UgQXI6Y2FzZSBPcjpjYXNlIE1yOmNhc2UgX3I6Y2FzZSBEcjpjYXNlIFByOmNhc2UgSHI6Y2FzZSBCcjpjYXNlIGpyOmNhc2UgRnI6Y2FzZSBJcjpjYXNlIHFyOmNhc2UgUnI6Y2FzZSBVcjpjYXNlIHpyOmNhc2UgV3I6Y2FzZSBYcjpjYXNlIFZyOmNhc2UgJHI6Y2FzZSBKcjpjYXNlIEtyOmNhc2UgUXI6Y2FzZSBHcjpjYXNlIFlyOmNhc2UgWnI6Y2FzZSBlaTpjYXNlIHRpOmNhc2Ugbmk6Y2FzZSByaTpjYXNlIGlpOmNhc2Ugc2k6Y2FzZSBvaTpjYXNlIHVpOmNhc2UgYWk6Y2FzZSBmaTpjYXNlIENpOmNhc2UgR2k6Y2FzZSBlczpjYXNlIHRzOmNhc2UgaXM6Y2FzZSB4bzp1PTI7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCx0O3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTIwLDAsdGhpcy5pbnB1dCk7dGhyb3cgZn1zd2l0Y2godSl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1JldmVyc2VTdGVwX2luX3BfQXhpc1N0ZXA2OTA1KSxpPXRoaXMucF9SZXZlcnNlU3RlcCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4saS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Gb3J3YXJkU3RlcF9pbl9wX0F4aXNTdGVwNjkwOSkscz10aGlzLnBfRm9yd2FyZFN0ZXAoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChuLHMuZ2V0VHJlZSgpKX10aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9QcmVkaWNhdGVMaXN0X2luX3BfQXhpc1N0ZXA2OTEyKSxvPXRoaXMucF9QcmVkaWNhdGVMaXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixvLmdldFRyZWUoKSksdC5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHQudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKG4pLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXModC50cmVlLHQuc3RhcnQsdC5zdG9wKSl9Y2F0Y2goZCl7aWYoIShkIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBkO3RoaXMucmVwb3J0RXJyb3IoZCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZCksdC50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCx0LnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGQpfWZpbmFsbHl7fXJldHVybiB0fSxwX0ZvcndhcmRTdGVwX3JldHVybjpmdW5jdGlvbigpe3YucF9Gb3J3YXJkU3RlcF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZvcndhcmRTdGVwX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Gb3J3YXJkU3RlcDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRm9yd2FyZFN0ZXBfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsO3RyeXt2YXIgbz0yO289dGhpcy5kZmExMjEucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2gobyl7Y2FzZSAxOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZvcndhcmRBeGlzX2luX3BfRm9yd2FyZFN0ZXA2OTM4KSxuPXRoaXMucF9Gb3J3YXJkQXhpcygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX05vZGVUZXN0X2luX3BfRm9yd2FyZFN0ZXA2OTQwKSxpPXRoaXMucF9Ob2RlVGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9BYmJyZXZGb3J3YXJkU3RlcF9pbl9wX0ZvcndhcmRTdGVwNjk1Mikscz10aGlzLnBfQWJicmV2Rm9yd2FyZFN0ZXAoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaCh1KXtpZighKHUgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHU7dGhpcy5yZXBvcnRFcnJvcih1KSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCx1KSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksdSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRm9yd2FyZEF4aXNfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZvcndhcmRBeGlzX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRm9yd2FyZEF4aXNfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZvcndhcmRBeGlzOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9Gb3J3YXJkQXhpc19yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGwsaD1udWxsLHA9bnVsbCxkPW51bGwsbT1udWxsLGc9bnVsbCx5PW51bGwsYj1udWxsLHc9bnVsbCxFPW51bGwsUz1udWxsLHg9bnVsbCxUPW51bGwsTj1udWxsLEM9bnVsbCxMPW51bGwsQT1udWxsLE89bnVsbCxNPW51bGwsXz1udWxsO3RyeXt2YXIgRD03O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIFA6RD0xO2JyZWFrO2Nhc2UgUjpEPTI7YnJlYWs7Y2FzZSBrOkQ9MzticmVhaztjYXNlIFZ0OkQ9NDticmVhaztjYXNlIFU6RD01O2JyZWFrO2Nhc2UgcnQ6RD02O2JyZWFrO2Nhc2UgbnQ6RD03O2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgSD1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEyMiwwLHRoaXMuaW5wdXQpO3Rocm93IEh9c3dpdGNoKEQpe2Nhc2UgMTp0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxQLHYuRk9MTE9XX0NISUxEX2luX3BfRm9yd2FyZEF4aXM2OTc4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih5PXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQseSkpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHFpLHYuRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfRm9yd2FyZEF4aXM2OTgwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihiPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYikpO2JyZWFrO2Nhc2UgMjp0PXRoaXMuYWRhcHRvci5uaWwoKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxSLHYuRk9MTE9XX0RFU0NFTkRBTlRfaW5fcF9Gb3J3YXJkQXhpczY5OTIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHc9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx3KSksbz10aGlzLm1hdGNoKHRoaXMuaW5wdXQscWksdi5GT0xMT1dfQ09MT05fQ09MT05faW5fcF9Gb3J3YXJkQXhpczY5OTQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKEU9dGhpcy5hZGFwdG9yLmNyZWF0ZShvKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxFKSk7YnJlYWs7Y2FzZSAzOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGssdi5GT0xMT1dfQVRUUklCVVRFX2luX3BfRm9yd2FyZEF4aXM3MDA2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihTPXRoaXMuYWRhcHRvci5jcmVhdGUodSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsUykpLGE9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHFpLHYuRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfRm9yd2FyZEF4aXM3MDA4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih4PXRoaXMuYWRhcHRvci5jcmVhdGUoYSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQseCkpO2JyZWFrO2Nhc2UgNDp0PXRoaXMuYWRhcHRvci5uaWwoKSxmPXRoaXMubWF0Y2godGhpcy5pbnB1dCxWdCx2LkZPTExPV19TRUxGX2luX3BfRm9yd2FyZEF4aXM3MDIwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihUPXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsVCkpLGw9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHFpLHYuRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfRm9yd2FyZEF4aXM3MDIyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihOPXRoaXMuYWRhcHRvci5jcmVhdGUobCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsTikpO2JyZWFrO2Nhc2UgNTp0PXRoaXMuYWRhcHRvci5uaWwoKSxjPXRoaXMubWF0Y2godGhpcy5pbnB1dCxVLHYuRk9MTE9XX0RFU0NFTkRBTlRfT1JfU0VMRl9pbl9wX0ZvcndhcmRBeGlzNzAzNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoQz10aGlzLmFkYXB0b3IuY3JlYXRlKGMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LEMpKSxoPXRoaXMubWF0Y2godGhpcy5pbnB1dCxxaSx2LkZPTExPV19DT0xPTl9DT0xPTl9pbl9wX0ZvcndhcmRBeGlzNzAzNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoTD10aGlzLmFkYXB0b3IuY3JlYXRlKGgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LEwpKTticmVhaztjYXNlIDY6dD10aGlzLmFkYXB0b3IubmlsKCkscD10aGlzLm1hdGNoKHRoaXMuaW5wdXQscnQsdi5GT0xMT1dfRk9MTE9XSU5HX1NJQkxJTkdfaW5fcF9Gb3J3YXJkQXhpczcwNDgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKEE9dGhpcy5hZGFwdG9yLmNyZWF0ZShwKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxBKSksZD10aGlzLm1hdGNoKHRoaXMuaW5wdXQscWksdi5GT0xMT1dfQ09MT05fQ09MT05faW5fcF9Gb3J3YXJkQXhpczcwNTApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKE89dGhpcy5hZGFwdG9yLmNyZWF0ZShkKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxPKSk7YnJlYWs7Y2FzZSA3OnQ9dGhpcy5hZGFwdG9yLm5pbCgpLG09dGhpcy5tYXRjaCh0aGlzLmlucHV0LG50LHYuRk9MTE9XX0ZPTExPV0lOR19pbl9wX0ZvcndhcmRBeGlzNzA2Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoTT10aGlzLmFkYXB0b3IuY3JlYXRlKG0pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LE0pKSxnPXRoaXMubWF0Y2godGhpcy5pbnB1dCxxaSx2LkZPTExPV19DT0xPTl9DT0xPTl9pbl9wX0ZvcndhcmRBeGlzNzA2NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoXz10aGlzLmFkYXB0b3IuY3JlYXRlKGcpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LF8pKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChCKXtpZighKEIgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IEI7dGhpcy5yZXBvcnRFcnJvcihCKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxCKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksQil9ZmluYWxseXt9cmV0dXJuIGV9LHBfQWJicmV2Rm9yd2FyZFN0ZXBfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0FiYnJldkZvcndhcmRTdGVwX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQWJicmV2Rm9yd2FyZFN0ZXBfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0FiYnJldkZvcndhcmRTdGVwOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9BYmJyZXZGb3J3YXJkU3RlcF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBvPTIsdT10aGlzLmlucHV0LkxBKDEpO3U9PUdpJiYobz0xKTtzd2l0Y2gobyl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEdpLHYuRk9MTE9XX0FUVFJfU0lHTl9pbl9wX0FiYnJldkZvcndhcmRTdGVwNzA5MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKX10aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Ob2RlVGVzdF9pbl9wX0FiYnJldkZvcndhcmRTdGVwNzA5MyksaT10aGlzLnBfTm9kZVRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGE7dGhpcy5yZXBvcnRFcnJvcihhKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxhKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfUmV2ZXJzZVN0ZXBfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1JldmVyc2VTdGVwX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfUmV2ZXJzZVN0ZXBfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1JldmVyc2VTdGVwOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9SZXZlcnNlU3RlcF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGw7dHJ5e3ZhciBvPTIsdT10aGlzLmlucHV0LkxBKDEpO2lmKHU+PUUmJnU8PVN8fHU+PUJ0JiZ1PD1GdClvPTE7ZWxzZXtpZih1IT1GaSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEyNCwwLHRoaXMuaW5wdXQpO3Rocm93IGF9bz0yfXN3aXRjaChvKXtjYXNlIDE6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUmV2ZXJzZUF4aXNfaW5fcF9SZXZlcnNlU3RlcDcxMTkpLG49dGhpcy5wX1JldmVyc2VBeGlzKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfTm9kZVRlc3RfaW5fcF9SZXZlcnNlU3RlcDcxMjEpLGk9dGhpcy5wX05vZGVUZXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0FiYnJldlJldmVyc2VTdGVwX2luX3BfUmV2ZXJzZVN0ZXA3MTMzKSxzPXRoaXMucF9BYmJyZXZSZXZlcnNlU3RlcCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gZX0scF9SZXZlcnNlQXhpc19yZXR1cm46ZnVuY3Rpb24oKXt2LnBfUmV2ZXJzZUF4aXNfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9SZXZlcnNlQXhpc19yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUmV2ZXJzZUF4aXM6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1JldmVyc2VBeGlzX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsLGM9bnVsbCxoPW51bGwscD1udWxsLGQ9bnVsbCxtPW51bGwsZz1udWxsLHk9bnVsbCxiPW51bGwsdz1udWxsLHg9bnVsbCxUPW51bGwsTj1udWxsO3RyeXt2YXIgQz01O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIEJ0OkM9MTticmVhaztjYXNlIEU6Qz0yO2JyZWFrO2Nhc2UgRnQ6Qz0zO2JyZWFrO2Nhc2UganQ6Qz00O2JyZWFrO2Nhc2UgUzpDPTU7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBrPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTI1LDAsdGhpcy5pbnB1dCk7dGhyb3cga31zd2l0Y2goQyl7Y2FzZSAxOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEJ0LHYuRk9MTE9XX1BBUkVOVF9pbl9wX1JldmVyc2VBeGlzNzE1OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocD10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHApKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxxaSx2LkZPTExPV19DT0xPTl9DT0xPTl9pbl9wX1JldmVyc2VBeGlzNzE2MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZD10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGQpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRSx2LkZPTExPV19BTkNFU1RPUl9pbl9wX1JldmVyc2VBeGlzNzE3Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobT10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG0pKSxvPXRoaXMubWF0Y2godGhpcy5pbnB1dCxxaSx2LkZPTExPV19DT0xPTl9DT0xPTl9pbl9wX1JldmVyc2VBeGlzNzE3NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZz10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGcpKTticmVhaztjYXNlIDM6dD10aGlzLmFkYXB0b3IubmlsKCksdT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRnQsdi5GT0xMT1dfUFJFQ0VESU5HX1NJQkxJTkdfaW5fcF9SZXZlcnNlQXhpczcxODcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHk9dGhpcy5hZGFwdG9yLmNyZWF0ZSh1KSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx5KSksYT10aGlzLm1hdGNoKHRoaXMuaW5wdXQscWksdi5GT0xMT1dfQ09MT05fQ09MT05faW5fcF9SZXZlcnNlQXhpczcxODkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGI9dGhpcy5hZGFwdG9yLmNyZWF0ZShhKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxiKSk7YnJlYWs7Y2FzZSA0OnQ9dGhpcy5hZGFwdG9yLm5pbCgpLGY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGp0LHYuRk9MTE9XX1BSRUNFRElOR19pbl9wX1JldmVyc2VBeGlzNzIwMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodz10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHcpKSxsPXRoaXMubWF0Y2godGhpcy5pbnB1dCxxaSx2LkZPTExPV19DT0xPTl9DT0xPTl9pbl9wX1JldmVyc2VBeGlzNzIwMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoeD10aGlzLmFkYXB0b3IuY3JlYXRlKGwpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHgpKTticmVhaztjYXNlIDU6dD10aGlzLmFkYXB0b3IubmlsKCksYz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUyx2LkZPTExPV19BTkNFU1RPUl9PUl9TRUxGX2luX3BfUmV2ZXJzZUF4aXM3MjE1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihUPXRoaXMuYWRhcHRvci5jcmVhdGUoYyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsVCkpLGg9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHFpLHYuRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfUmV2ZXJzZUF4aXM3MjE3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihOPXRoaXMuYWRhcHRvci5jcmVhdGUoaCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsTikpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKEwpe2lmKCEoTCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgTDt0aGlzLnJlcG9ydEVycm9yKEwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LEwpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxMKX1maW5hbGx5e31yZXR1cm4gZX0scF9BYmJyZXZSZXZlcnNlU3RlcF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfQWJicmV2UmV2ZXJzZVN0ZXBfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9BYmJyZXZSZXZlcnNlU3RlcF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQWJicmV2UmV2ZXJzZVN0ZXA6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0FiYnJldlJldmVyc2VTdGVwX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxGaSx2LkZPTExPV19ET1RfRE9UX2luX3BfQWJicmV2UmV2ZXJzZVN0ZXA3MjQzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaSkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHMpe2lmKCEocyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgczt0aGlzLnJlcG9ydEVycm9yKHMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHMpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxzKX1maW5hbGx5e31yZXR1cm4gZX0scF9Ob2RlVGVzdF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfTm9kZVRlc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9Ob2RlVGVzdF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfTm9kZVRlc3Q6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX05vZGVUZXN0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsO3RyeXt2YXIgcz0yO3M9dGhpcy5kZmExMjYucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2gocyl7Y2FzZSAxOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0tpbmRUZXN0X2luX3BfTm9kZVRlc3Q3MjY5KSxuPXRoaXMucF9LaW5kVGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9OYW1lVGVzdF9pbl9wX05vZGVUZXN0NzI3MyksaT10aGlzLnBfTmFtZVRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChvKXtpZighKG8gaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG87dGhpcy5yZXBvcnRFcnJvcihvKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxvKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfTmFtZVRlc3RfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX05hbWVUZXN0X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfTmFtZVRlc3RfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX05hbWVUZXN0OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9OYW1lVGVzdF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGw7dHJ5e3ZhciBvPTMsdT10aGlzLmlucHV0LkxBKDEpO2lmKHU9PUNpJiZ0aGlzLnN5bnByZWQxM19YUXVlcnlQYXJzZXIoKSlvPTE7ZWxzZSBpZih1Pj1FJiZ1PD1Zbnx8dT49ZXImJnU8PWZpfHx1PT1pc3x8dT09eG8pe3ZhciBhPXRoaXMuaW5wdXQuTEEoMik7aWYoYT09SWkmJnRoaXMuc3lucHJlZDEzX1hRdWVyeVBhcnNlcigpKW89MTtlbHNlIGlmKHRoaXMuc3lucHJlZDE0X1hRdWVyeVBhcnNlcigpKW89MjtlbHNle2lmKCF0aGlzLnN5bnByZWQxNV9YUXVlcnlQYXJzZXIoKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEyNywyLHRoaXMuaW5wdXQpO3Rocm93IGZ9bz0zfX1lbHNlIGlmKHU9PXRzJiZ0aGlzLnN5bnByZWQxM19YUXVlcnlQYXJzZXIoKSlvPTE7ZWxzZXtpZih1IT1lc3x8IXRoaXMuc3lucHJlZDEzX1hRdWVyeVBhcnNlcigpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTI3LDAsdGhpcy5pbnB1dCk7dGhyb3cgZn1vPTF9c3dpdGNoKG8pe2Nhc2UgMTp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9XaWxkY2FyZF9pbl9wX05hbWVUZXN0NzMwNSksbj10aGlzLnBfV2lsZGNhcmQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUU5hbWVfaW5fcF9OYW1lVGVzdDczMjYpLGk9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1FOYW1lX2luX3BfTmFtZVRlc3Q3MzQ0KSxzPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gZX0scF9XaWxkY2FyZF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfV2lsZGNhcmRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9XaWxkY2FyZF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfV2lsZGNhcmQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1dpbGRjYXJkX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsLGM9bnVsbCxoPW51bGwscD1udWxsLGQ9bnVsbCxtPW51bGwsZz1udWxsLHk9bnVsbDt0aGlzLnNldFdzRXhwbGljaXQoITApO3RyeXt2YXIgYj0zO3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIENpOmI9MTticmVhaztjYXNlIEU6Y2FzZSBTOmNhc2UgeDpjYXNlIFQ6Y2FzZSBOOmNhc2UgQzpjYXNlIGs6Y2FzZSBMOmNhc2UgQTpjYXNlIE86Y2FzZSBNOmNhc2UgXzpjYXNlIEQ6Y2FzZSBQOmNhc2UgSDpjYXNlIEI6Y2FzZSBqOmNhc2UgRjpjYXNlIEk6Y2FzZSBxOmNhc2UgUjpjYXNlIFU6Y2FzZSB6OmNhc2UgVzpjYXNlIFg6Y2FzZSBWOmNhc2UgJDpjYXNlIEo6Y2FzZSBLOmNhc2UgUTpjYXNlIEc6Y2FzZSBZOmNhc2UgWjpjYXNlIGV0OmNhc2UgdHQ6Y2FzZSBudDpjYXNlIHJ0OmNhc2UgaXQ6Y2FzZSBzdDpjYXNlIG90OmNhc2UgdXQ6Y2FzZSBhdDpjYXNlIGZ0OmNhc2UgbHQ6Y2FzZSBjdDpjYXNlIGh0OmNhc2UgcHQ6Y2FzZSBkdDpjYXNlIHZ0OmNhc2UgbXQ6Y2FzZSBndDpjYXNlIHl0OmNhc2UgYnQ6Y2FzZSB3dDpjYXNlIEV0OmNhc2UgU3Q6Y2FzZSB4dDpjYXNlIFR0OmNhc2UgTnQ6Y2FzZSBDdDpjYXNlIGt0OmNhc2UgTHQ6Y2FzZSBBdDpjYXNlIE90OmNhc2UgTXQ6Y2FzZSBfdDpjYXNlIER0OmNhc2UgUHQ6Y2FzZSBIdDpjYXNlIEJ0OmNhc2UganQ6Y2FzZSBGdDpjYXNlIEl0OmNhc2UgcXQ6Y2FzZSBSdDpjYXNlIFV0OmNhc2UgenQ6Y2FzZSBXdDpjYXNlIFh0OmNhc2UgVnQ6Y2FzZSAkdDpjYXNlIEp0OmNhc2UgS3Q6Y2FzZSBRdDpjYXNlIEd0OmNhc2UgWXQ6Y2FzZSBadDpjYXNlIGVuOmNhc2UgdG46Y2FzZSBubjpjYXNlIHJuOmNhc2Ugc246Y2FzZSBvbjpjYXNlIHVuOmNhc2UgYW46Y2FzZSBmbjpjYXNlIGxuOmNhc2UgY246Y2FzZSBobjpjYXNlIHBuOmNhc2UgZG46Y2FzZSB2bjpjYXNlIG1uOmNhc2UgZ246Y2FzZSB5bjpjYXNlIGJuOmNhc2Ugd246Y2FzZSBFbjpjYXNlIFNuOmNhc2UgeG46Y2FzZSBUbjpjYXNlIE5uOmNhc2UgQ246Y2FzZSBrbjpjYXNlIExuOmNhc2UgQW46Y2FzZSBPbjpjYXNlIE1uOmNhc2UgX246Y2FzZSBEbjpjYXNlIFBuOmNhc2UgSG46Y2FzZSBCbjpjYXNlIGpuOmNhc2UgRm46Y2FzZSBJbjpjYXNlIHFuOmNhc2UgUm46Y2FzZSBVbjpjYXNlIHpuOmNhc2UgV246Y2FzZSBYbjpjYXNlIFZuOmNhc2UgJG46Y2FzZSBKbjpjYXNlIEtuOmNhc2UgUW46Y2FzZSBHbjpjYXNlIFluOmNhc2UgZXI6Y2FzZSB0cjpjYXNlIG5yOmNhc2UgcnI6Y2FzZSBpcjpjYXNlIHNyOmNhc2Ugb3I6Y2FzZSB1cjpjYXNlIGFyOmNhc2UgZnI6Y2FzZSBscjpjYXNlIGNyOmNhc2UgaHI6Y2FzZSBwcjpjYXNlIGRyOmNhc2UgdnI6Y2FzZSBtcjpjYXNlIGdyOmNhc2UgeXI6Y2FzZSBicjpjYXNlIHdyOmNhc2UgRXI6Y2FzZSBTcjpjYXNlIHhyOmNhc2UgVHI6Y2FzZSBOcjpjYXNlIENyOmNhc2Uga3I6Y2FzZSBMcjpjYXNlIEFyOmNhc2UgT3I6Y2FzZSBNcjpjYXNlIF9yOmNhc2UgRHI6Y2FzZSBQcjpjYXNlIEhyOmNhc2UgQnI6Y2FzZSBqcjpjYXNlIEZyOmNhc2UgSXI6Y2FzZSBxcjpjYXNlIFJyOmNhc2UgVXI6Y2FzZSB6cjpjYXNlIFdyOmNhc2UgWHI6Y2FzZSBWcjpjYXNlICRyOmNhc2UgSnI6Y2FzZSBLcjpjYXNlIFFyOmNhc2UgR3I6Y2FzZSBZcjpjYXNlIFpyOmNhc2UgZWk6Y2FzZSB0aTpjYXNlIG5pOmNhc2Ugcmk6Y2FzZSBpaTpjYXNlIHNpOmNhc2Ugb2k6Y2FzZSB1aTpjYXNlIGFpOmNhc2UgZmk6Y2FzZSBpczpjYXNlIHhvOmI9MjticmVhaztjYXNlIGVzOmNhc2UgdHM6Yj0zO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgdz1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEyOSwwLHRoaXMuaW5wdXQpO3Rocm93IHd9c3dpdGNoKGIpe2Nhc2UgMTp0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxDaSx2LkZPTExPV19TVEFSX2luX3BfV2lsZGNhcmQ3Mzc0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaCkpO3ZhciBabj0yLGxpPXRoaXMuaW5wdXQuTEEoMSk7bGk9PUlpJiYoWm49MSk7c3dpdGNoKFpuKXtjYXNlIDE6aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSWksdi5GT0xMT1dfQ09MT05faW5fcF9XaWxkY2FyZDczNzcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHA9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxwKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfTkNOYW1lX2luX3BfV2lsZGNhcmQ3Mzc5KSxmPXRoaXMucF9OQ05hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYuZ2V0VHJlZSgpKX1icmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfTkNOYW1lX2luX3BfV2lsZGNhcmQ3MzkzKSxsPXRoaXMucF9OQ05hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwuZ2V0VHJlZSgpKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxJaSx2LkZPTExPV19DT0xPTl9pbl9wX1dpbGRjYXJkNzM5NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZD10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGQpKSxvPXRoaXMubWF0Y2godGhpcy5pbnB1dCxDaSx2LkZPTExPV19TVEFSX2luX3BfV2lsZGNhcmQ3Mzk3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihtPXRoaXMuYWRhcHRvci5jcmVhdGUobyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbSkpO2JyZWFrO2Nhc2UgMzp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfV2lsZGNhcmQ3NDA5KSxjPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxjLmdldFRyZWUoKSksdT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSWksdi5GT0xMT1dfQ09MT05faW5fcF9XaWxkY2FyZDc0MTEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZSh1KSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxnKSksYT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQ2ksdi5GT0xMT1dfU1RBUl9pbl9wX1dpbGRjYXJkNzQxMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoeT10aGlzLmFkYXB0b3IuY3JlYXRlKGEpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHkpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChjaSl7aWYoIShjaSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgY2k7dGhpcy5yZXBvcnRFcnJvcihjaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsY2kpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxjaSl9ZmluYWxseXt0aGlzLnNldFdzRXhwbGljaXQoITEpfXJldHVybiBlfSxwX1Bvc3RmaXhFeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9Qb3N0Zml4RXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1Bvc3RmaXhFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Qb3N0Zml4RXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfUG9zdGZpeEV4cHJfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1ByaW1hcnlFeHByX2luX3BfUG9zdGZpeEV4cHI3NDUxKSxuPXRoaXMucF9QcmltYXJ5RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpO2U6ZG97dmFyIHM9MixvPXRoaXMuaW5wdXQuTEEoMSk7bz09bWkmJihzPTEpO3N3aXRjaChzKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUHJlZGljYXRlX2luX3BfUG9zdGZpeEV4cHI3NDU0KSxpPXRoaXMucF9QcmVkaWNhdGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTtlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaCh1KXtpZighKHUgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHU7dGhpcy5yZXBvcnRFcnJvcih1KSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCx1KSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksdSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfQXJndW1lbnRMaXN0X3JldHVybjpmdW5jdGlvbigpe3YucF9Bcmd1bWVudExpc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9Bcmd1bWVudExpc3RfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0FyZ3VtZW50TGlzdDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQXJndW1lbnRMaXN0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjaSx2LkZPTExPV19MUEFSRU5faW5fcF9Bcmd1bWVudExpc3Q3NDk1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpO3ZhciBjPTIsaD10aGlzLmlucHV0LkxBKDEpO2lmKGg+PUUmJmg8PWZpfHxoPT1jaXx8aD49cGkmJmg8PWRpfHxoPj1OaSYmaDw9QWl8fGg+PUhpJiZoPD1GaXx8aD09R2l8fGg+PWVzJiZoPD10c3x8aD09aXN8fGg+PWNzJiZoPD1tc3x8aD09eG8pYz0xO3N3aXRjaChjKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQXJndW1lbnRfaW5fcF9Bcmd1bWVudExpc3Q3NDk4KSxvPXRoaXMucF9Bcmd1bWVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpO2U6ZG97dmFyIHA9MixkPXRoaXMuaW5wdXQuTEEoMSk7ZD09VGkmJihwPTEpO3N3aXRjaChwKXtjYXNlIDE6aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVGksdi5GT0xMT1dfQ09NTUFfaW5fcF9Bcmd1bWVudExpc3Q3NTAxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0FyZ3VtZW50X2luX3BfQXJndW1lbnRMaXN0NzUwMyksdT10aGlzLnBfQXJndW1lbnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKX1zPXRoaXMubWF0Y2godGhpcy5pbnB1dCxoaSx2LkZPTExPV19SUEFSRU5faW5fcF9Bcmd1bWVudExpc3Q3NTA5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKG0pe2lmKCEobSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbTt0aGlzLnJlcG9ydEVycm9yKG0pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG0pLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxtKX1maW5hbGx5e31yZXR1cm4gZX0scF9QcmVkaWNhdGVMaXN0X3JldHVybjpmdW5jdGlvbigpe3YucF9QcmVkaWNhdGVMaXN0X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfUHJlZGljYXRlTGlzdF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUHJlZGljYXRlTGlzdDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfUHJlZGljYXRlTGlzdF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKTtlOmRve3ZhciBpPTIscz10aGlzLmlucHV0LkxBKDEpO3M9PW1pJiYoaT0xKTtzd2l0Y2goaSl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1ByZWRpY2F0ZV9pbl9wX1ByZWRpY2F0ZUxpc3Q3NTM1KSxuPXRoaXMucF9QcmVkaWNhdGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTtlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChvKXtpZighKG8gaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG87dGhpcy5yZXBvcnRFcnJvcihvKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxvKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfUHJlZGljYXRlX3JldHVybjpmdW5jdGlvbigpe3YucF9QcmVkaWNhdGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9QcmVkaWNhdGVfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1ByZWRpY2F0ZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfUHJlZGljYXRlX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtaSx2LkZPTExPV19MU1FVQVJFX2luX3BfUHJlZGljYXRlNzU2Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByX2luX3BfUHJlZGljYXRlNzU2NCkscz10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZ2ksdi5GT0xMT1dfUlNRVUFSRV9pbl9wX1ByZWRpY2F0ZTc1NjcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBhO3RoaXMucmVwb3J0RXJyb3IoYSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGEpfWZpbmFsbHl7fXJldHVybiBlfSxwX1ByaW1hcnlFeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9QcmltYXJ5RXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1ByaW1hcnlFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9QcmltYXJ5RXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfUHJpbWFyeUV4cHJfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsO3RyeXt2YXIgaD05O2g9dGhpcy5kZmExMzQucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2goaCl7Y2FzZSAxOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1BhcmVudGhlc2l6ZWRFeHByX2luX3BfUHJpbWFyeUV4cHI3NjAwKSxuPXRoaXMucF9QYXJlbnRoZXNpemVkRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9MaXRlcmFsX2luX3BfUHJpbWFyeUV4cHI3NjEyKSxpPXRoaXMucF9MaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1ZhclJlZl9pbl9wX1ByaW1hcnlFeHByNzYyNCkscz10aGlzLnBfVmFyUmVmKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA0OnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0NvbnRleHRJdGVtRXhwcl9pbl9wX1ByaW1hcnlFeHByNzYzNiksbz10aGlzLnBfQ29udGV4dEl0ZW1FeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA1OnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0Z1bmN0aW9uQ2FsbF9pbl9wX1ByaW1hcnlFeHByNzY0OCksdT10aGlzLnBfRnVuY3Rpb25DYWxsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA2OnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX09yZGVyZWRFeHByX2luX3BfUHJpbWFyeUV4cHI3NjYwKSxhPXRoaXMucF9PcmRlcmVkRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNzp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Vbm9yZGVyZWRFeHByX2luX3BfUHJpbWFyeUV4cHI3NjcyKSxmPXRoaXMucF9Vbm9yZGVyZWRFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA4OnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0NvbnN0cnVjdG9yX2luX3BfUHJpbWFyeUV4cHI3Njg0KSxsPXRoaXMucF9Db25zdHJ1Y3RvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbC5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgOTp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9CbG9ja0V4cHJfaW5fcF9QcmltYXJ5RXhwcjc2OTgpLGM9dGhpcy5wX0Jsb2NrRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYy5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHApe2lmKCEocCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgcDt0aGlzLnJlcG9ydEVycm9yKHApLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHApLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxwKX1maW5hbGx5e31yZXR1cm4gZX0scF9MaXRlcmFsX3JldHVybjpmdW5jdGlvbigpe3YucF9MaXRlcmFsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfTGl0ZXJhbF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfTGl0ZXJhbDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfTGl0ZXJhbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbDt0cnl7dmFyIHM9MixvPXRoaXMuaW5wdXQuTEEoMSk7aWYobz49ZHMmJm88PW1zKXM9MTtlbHNle2lmKCEobz49ZXMmJm88PXRzKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgdT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEzNSwwLHRoaXMuaW5wdXQpO3Rocm93IHV9cz0yfXN3aXRjaChzKXtjYXNlIDE6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfTnVtZXJpY0xpdGVyYWxfaW5fcF9MaXRlcmFsNzcyNCksbj10aGlzLnBfTnVtZXJpY0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0xpdGVyYWw3NzI4KSxpPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBhO3RoaXMucmVwb3J0RXJyb3IoYSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGEpfWZpbmFsbHl7fXJldHVybiBlfSxwX051bWVyaWNMaXRlcmFsX3JldHVybjpmdW5jdGlvbigpe3YucF9OdW1lcmljTGl0ZXJhbF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX051bWVyaWNMaXRlcmFsX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9OdW1lcmljTGl0ZXJhbDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfTnVtZXJpY0xpdGVyYWxfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsO3RyeXt2YXIgbz0zO3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIGRzOm89MTticmVhaztjYXNlIHZzOm89MjticmVhaztjYXNlIG1zOm89MzticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIHU9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMzYsMCx0aGlzLmlucHV0KTt0aHJvdyB1fXN3aXRjaChvKXtjYXNlIDE6dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZHMsdi5GT0xMT1dfTF9JbnRlZ2VyTGl0ZXJhbF9pbl9wX051bWVyaWNMaXRlcmFsNzc1Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZChpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdnMsdi5GT0xMT1dfTF9EZWNpbWFsTGl0ZXJhbF9pbl9wX051bWVyaWNMaXRlcmFsNzc2NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZChpKTticmVhaztjYXNlIDM6dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbXMsdi5GT0xMT1dfTF9Eb3VibGVMaXRlcmFsX2luX3BfTnVtZXJpY0xpdGVyYWw3NzcyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkKGkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGEpe2lmKCEoYSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgYTt0aGlzLnJlcG9ydEVycm9yKGEpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGEpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxhKX1maW5hbGx5e31yZXR1cm4gZX0scF9WYXJSZWZfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1ZhclJlZl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1ZhclJlZl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVmFyUmVmOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9WYXJSZWZfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxwaSx2LkZPTExPV19ET0xMQVJfaW5fcF9WYXJSZWY3ODEwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1Zhck5hbWVfaW5fcF9WYXJSZWY3ODE0KSxpPXRoaXMucF9WYXJOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KG4saT9pLnN0b3A6bnVsbCksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobyl7aWYoIShvIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBvO3RoaXMucmVwb3J0RXJyb3IobyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG8pfWZpbmFsbHl7fXJldHVybiBlfSxwX1Zhck5hbWVfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1Zhck5hbWVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9WYXJOYW1lX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9WYXJOYW1lOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9WYXJOYW1lX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1FOYW1lX2luX3BfVmFyTmFtZTc4NDIpLG49dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBlfSxwX1BhcmVudGhlc2l6ZWRFeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9QYXJlbnRoZXNpemVkRXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1BhcmVudGhlc2l6ZWRFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9QYXJlbnRoZXNpemVkRXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfUGFyZW50aGVzaXplZEV4cHJfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGNpLHYuRk9MTE9XX0xQQVJFTl9pbl9wX1BhcmVudGhlc2l6ZWRFeHByNzg2OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKTt2YXIgYT0yLGY9dGhpcy5pbnB1dC5MQSgxKTtpZihmPj1FJiZmPD1maXx8Zj09Y2l8fGY+PXBpJiZmPD1kaXx8Zj49Q2kmJmY8PUFpfHxmPj1IaSYmZjw9Rml8fGY9PUdpfHxmPj1lcyYmZjw9dHN8fGY9PWlzfHxmPj1jcyYmZjw9bXN8fGY9PXhvKWE9MTtzd2l0Y2goYSl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJfaW5fcF9QYXJlbnRoZXNpemVkRXhwcjc4NzApLHM9dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpfWk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGhpLHYuRk9MTE9XX1JQQVJFTl9pbl9wX1BhcmVudGhlc2l6ZWRFeHByNzg3NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfQ29udGV4dEl0ZW1FeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9Db250ZXh0SXRlbUV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9Db250ZXh0SXRlbUV4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0NvbnRleHRJdGVtRXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQ29udGV4dEl0ZW1FeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxqaSx2LkZPTExPV19ET1RfaW5fcF9Db250ZXh0SXRlbUV4cHI3OTAwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaSkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHMpe2lmKCEocyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgczt0aGlzLnJlcG9ydEVycm9yKHMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHMpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxzKX1maW5hbGx5e31yZXR1cm4gZX0scF9PcmRlcmVkRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfT3JkZXJlZEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9PcmRlcmVkRXhwcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfT3JkZXJlZEV4cHI6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX09yZGVyZWRFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFB0LHYuRk9MTE9XX09SREVSRURfaW5fcF9PcmRlcmVkRXhwcjc5MjgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGRpLHYuRk9MTE9XX0xCUkFDS0VUX2luX3BfT3JkZXJlZEV4cHI3OTMyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJfaW5fcF9PcmRlcmVkRXhwcjc5MzQpLG89dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpLHM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHZpLHYuRk9MTE9XX1JCUkFDS0VUX2luX3BfT3JkZXJlZEV4cHI3OTM3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gZX0scF9Vbm9yZGVyZWRFeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9Vbm9yZGVyZWRFeHByX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfVW5vcmRlcmVkRXhwcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVW5vcmRlcmVkRXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfVW5vcmRlcmVkRXhwcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxybix2LkZPTExPV19VTk9SREVSRURfaW5fcF9Vbm9yZGVyZWRFeHByNzk2NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZGksdi5GT0xMT1dfTEJSQUNLRVRfaW5fcF9Vbm9yZGVyZWRFeHByNzk2OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByX2luX3BfVW5vcmRlcmVkRXhwcjc5NzEpLG89dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpLHM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHZpLHYuRk9MTE9XX1JCUkFDS0VUX2luX3BfVW5vcmRlcmVkRXhwcjc5NzQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBlfSxwX0Z1bmN0aW9uQ2FsbF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRnVuY3Rpb25DYWxsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRnVuY3Rpb25DYWxsX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GdW5jdGlvbkNhbGw6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0Z1bmN0aW9uQ2FsbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BnX0ZRTmFtZV9pbl9wX0Z1bmN0aW9uQ2FsbDgwMDMpLG49dGhpcy5wZ19GUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWYobj9uLnN0YXJ0Om51bGwsbj9uLnN0b3A6bnVsbCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQXJndW1lbnRMaXN0X2luX3BfRnVuY3Rpb25DYWxsODAwOCksaT10aGlzLnBfQXJndW1lbnRMaXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gocyl7aWYoIShzIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBzO3RoaXMucmVwb3J0RXJyb3IocyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQscyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHMpfWZpbmFsbHl7fXJldHVybiBlfSxwX0FyZ3VtZW50X3JldHVybjpmdW5jdGlvbigpe3YucF9Bcmd1bWVudF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0FyZ3VtZW50X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Bcmd1bWVudDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQXJndW1lbnRfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGw7dHJ5e3ZhciBzPTIsbz10aGlzLmlucHV0LkxBKDEpO2lmKG8+PUUmJm88PWZpfHxvPT1jaXx8bz49cGkmJm88PWRpfHxvPj1DaSYmbzw9QWl8fG8+PUhpJiZvPD1GaXx8bz09R2l8fG8+PWVzJiZvPD10c3x8bz09aXN8fG8+PWNzJiZvPD1tc3x8bz09eG8pcz0xO2Vsc2V7aWYobyE9Tmkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIHU9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMzgsMCx0aGlzLmlucHV0KTt0aHJvdyB1fXM9Mn1zd2l0Y2gocyl7Y2FzZSAxOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9Bcmd1bWVudDgwMzQpLG49dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Bcmd1bWVudFBsYWNlaG9sZGVyX2luX3BfQXJndW1lbnQ4MDM5KSxpPXRoaXMucF9Bcmd1bWVudFBsYWNlaG9sZGVyKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBhO3RoaXMucmVwb3J0RXJyb3IoYSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGEpfWZpbmFsbHl7fXJldHVybiBlfSxwX0FyZ3VtZW50UGxhY2Vob2xkZXJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0FyZ3VtZW50UGxhY2Vob2xkZXJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9Bcmd1bWVudFBsYWNlaG9sZGVyX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Bcmd1bWVudFBsYWNlaG9sZGVyOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9Bcmd1bWVudFBsYWNlaG9sZGVyX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxOaSx2LkZPTExPV19RVUVTVElPTl9pbl9wX0FyZ3VtZW50UGxhY2Vob2xkZXI4MDY1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaSkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHMpe2lmKCEocyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgczt0aGlzLnJlcG9ydEVycm9yKHMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHMpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxzKX1maW5hbGx5e31yZXR1cm4gZX0scF9Db25zdHJ1Y3Rvcl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfQ29uc3RydWN0b3JfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9Db25zdHJ1Y3Rvcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQ29uc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0NvbnN0cnVjdG9yX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsO3RyeXt2YXIgcz0yLG89dGhpcy5pbnB1dC5MQSgxKTtpZihvPT1BaXx8bz49aHMmJm88PXBzKXM9MTtlbHNlIGlmKG89PWt8fG89PUJ8fG89PVh8fG89PSR8fG89PU50fHxvPT1xdHx8bz09R3Qpcz0yO2Vsc2V7aWYobyE9b2l8fCF0aGlzLmxjKGQpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciB1PW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTM5LDAsdGhpcy5pbnB1dCk7dGhyb3cgdX1zPTJ9c3dpdGNoKHMpe2Nhc2UgMTp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9EaXJlY3RDb25zdHJ1Y3Rvcl9pbl9wX0NvbnN0cnVjdG9yODA5MSksbj10aGlzLnBfRGlyZWN0Q29uc3RydWN0b3IoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQ29tcHV0ZWRDb25zdHJ1Y3Rvcl9pbl9wX0NvbnN0cnVjdG9yODEwMyksaT10aGlzLnBfQ29tcHV0ZWRDb25zdHJ1Y3RvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGEpe2lmKCEoYSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgYTt0aGlzLnJlcG9ydEVycm9yKGEpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGEpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxhKX1maW5hbGx5e31yZXR1cm4gZX0scF9EaXJlY3RDb25zdHJ1Y3Rvcl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRGlyZWN0Q29uc3RydWN0b3JfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9EaXJlY3RDb25zdHJ1Y3Rvcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRGlyZWN0Q29uc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0RpcmVjdENvbnN0cnVjdG9yX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbDt0cnl7dmFyIG89Mztzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBBaTpvPTE7YnJlYWs7Y2FzZSBoczpvPTI7YnJlYWs7Y2FzZSBwczpvPTM7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciB1PW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTQwLDAsdGhpcy5pbnB1dCk7dGhyb3cgdX1zd2l0Y2gobyl7Y2FzZSAxOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0RpckVsZW1Db25zdHJ1Y3Rvcl9pbl9wX0RpcmVjdENvbnN0cnVjdG9yODEyOSksbj10aGlzLnBfRGlyRWxlbUNvbnN0cnVjdG9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0RpckNvbW1lbnRDb25zdHJ1Y3Rvcl9pbl9wX0RpcmVjdENvbnN0cnVjdG9yODE0MSksaT10aGlzLnBfRGlyQ29tbWVudENvbnN0cnVjdG9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0RpclBJQ29uc3RydWN0b3JfaW5fcF9EaXJlY3RDb25zdHJ1Y3RvcjgxNTMpLHM9dGhpcy5wX0RpclBJQ29uc3RydWN0b3IoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGE7dGhpcy5yZXBvcnRFcnJvcihhKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxhKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRGlyRWxlbUNvbnN0cnVjdG9yX3JldHVybjpmdW5jdGlvbigpe3YucF9EaXJFbGVtQ29uc3RydWN0b3JfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9EaXJFbGVtQ29uc3RydWN0b3JfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0RpckVsZW1Db25zdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRGlyRWxlbUNvbnN0cnVjdG9yX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsLGg9bnVsbCxwPW51bGwsZD1udWxsLGc9bnVsbCx5PW51bGwsYj1udWxsLHc9bnVsbCxFPW51bGwsUz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIENMT1NFX1RBRyIpLHg9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBHUkVBVEVSIiksVD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIFMiKSxOPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gRU1QVFlfQ0xPU0VfVEFHIiksQz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIFNNQUxMRVIiKSxrPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfRGlyQXR0cmlidXRlTGlzdCIpLEw9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcG1fRGlyRWxlbUNvbnRlbnQiKSxBPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfUU5hbWUiKTt0cnl7bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQWksdi5GT0xMT1dfU01BTExFUl9pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgxODApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmQy5hZGQobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLnB1c2hYTUxMZXhlcigpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1FOYW1lX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODE5NiksbD10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJkEuYWRkKGwuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXQobD9sLnN0YXJ0Om51bGwsbD9sLnN0b3A6bnVsbCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRGlyQXR0cmlidXRlTGlzdF9pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgyMDEpLGg9dGhpcy5wX0RpckF0dHJpYnV0ZUxpc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmsuYWRkKGguZ2V0VHJlZSgpKTt2YXIgTz0yLE09dGhpcy5pbnB1dC5MQSgxKTtpZihNPT1SaSlPPTE7ZWxzZXtpZihNIT1PaSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgXz1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE0MywwLHRoaXMuaW5wdXQpO3Rocm93IF99Tz0yfXN3aXRjaChPKXtjYXNlIDE6cz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUmksdi5GT0xMT1dfRU1QVFlfQ0xPU0VfVEFHX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODIxNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZOLmFkZChzKTticmVhaztjYXNlIDI6bz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsT2ksdi5GT0xMT1dfR1JFQVRFUl9pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgyMjApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmeC5hZGQobyk7ZTpkb3t2YXIgRD0yLFA9dGhpcy5pbnB1dC5MQSgxKTtpZihQPj1pJiZQPD1tfHxQPT1kaXx8UD09QWl8fFA+PWhzJiZQPD1wcylEPTE7c3dpdGNoKEQpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fRGlyRWxlbUNvbnRlbnRfaW5fcF9EaXJFbGVtQ29uc3RydWN0b3I4MjIyKSxwPXRoaXMucG1fRGlyRWxlbUNvbnRlbnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJkwuYWRkKHAuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTt1PXRoaXMubWF0Y2godGhpcy5pbnB1dCxVaSx2LkZPTExPV19DTE9TRV9UQUdfaW5fcF9EaXJFbGVtQ29uc3RydWN0b3I4MjI1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJlMuYWRkKHUpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1FOYW1lX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODIyOSksYz10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJkEuYWRkKGMuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXQoYz9jLnN0YXJ0Om51bGwsYz9jLnN0b3A6bnVsbCk7dmFyIEg9MixCPXRoaXMuaW5wdXQuTEEoMSk7Qj09ZnMmJihIPTEpO3N3aXRjaChIKXtjYXNlIDE6YT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZnMsdi5GT0xMT1dfU19pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgyMzMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmVC5hZGQoYSl9Zj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsT2ksdi5GT0xMT1dfR1JFQVRFUl9pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgyMzYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmeC5hZGQoZil9aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXtlLnRyZWU9dDt2YXIgaj1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixlIT1udWxsP2UudHJlZTpudWxsKTt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgRj10aGlzLmFkYXB0b3IubmlsKCk7Rj10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKGlvLCJEaXJFbGVtQ29uc3RydWN0b3IiKSxGKTt2YXIgST10aGlzLmFkYXB0b3IubmlsKCk7ST10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKHNvLCJEaXJBdHRyaWJ1dGVMaXN0IiksSSk7d2hpbGUoay5oYXNOZXh0KCkpdGhpcy5hZGFwdG9yLmFkZENoaWxkKEksay5uZXh0VHJlZSgpKTtrLnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKEYsSSk7dmFyIEk9dGhpcy5hZGFwdG9yLm5pbCgpO0k9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZSh1bywiRGlyRWxlbUNvbnRlbnQiKSxJKTt3aGlsZShMLmhhc05leHQoKSl0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoSSxMLm5leHRUcmVlKCkpO0wucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoRixJKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxGKSxlLnRyZWU9dH1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChxKXtpZighKHEgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHE7dGhpcy5yZXBvcnRFcnJvcihxKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxxKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscSl9ZmluYWxseXt0aGlzLnBvcExleGVyKCl9cmV0dXJuIGV9LHBfRGlyQXR0cmlidXRlTGlzdF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRGlyQXR0cmlidXRlTGlzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0RpckF0dHJpYnV0ZUxpc3RfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0RpckF0dHJpYnV0ZUxpc3Q6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0RpckF0dHJpYnV0ZUxpc3RfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsLGg9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCk7ZTpkb3t2YXIgcD0yLGQ9dGhpcy5pbnB1dC5MQSgxKTtkPT1mcyYmKHA9MSk7c3dpdGNoKHApe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxmcyx2LkZPTExPV19TX2luX3BfRGlyQXR0cmlidXRlTGlzdDgzMTMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSk7dmFyIG09MixnPXRoaXMuaW5wdXQuTEEoMSk7aWYoZz49RSYmZzw9WW58fGc+PWVyJiZnPD1maXx8Zz09aXN8fGc9PXhvKW09MTtzd2l0Y2gobSl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1FOYW1lX2luX3BfRGlyQXR0cmlidXRlTGlzdDgzMTgpLHU9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF0KHU/dS5zdGFydDpudWxsLHU/dS5zdG9wOm51bGwpO3ZhciB5PTIsYj10aGlzLmlucHV0LkxBKDEpO2I9PWZzJiYoeT0xKTtzd2l0Y2goeSl7Y2FzZSAxOmk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGZzLHYuRk9MTE9XX1NfaW5fcF9EaXJBdHRyaWJ1dGVMaXN0ODMyMik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKX1zPXRoaXMubWF0Y2godGhpcy5pbnB1dCx5aSx2LkZPTExPV19FUVVBTF9pbl9wX0RpckF0dHJpYnV0ZUxpc3Q4MzI1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYykpO3ZhciB3PTIsUz10aGlzLmlucHV0LkxBKDEpO1M9PWZzJiYodz0xKTtzd2l0Y2godyl7Y2FzZSAxOm89dGhpcy5tYXRjaCh0aGlzLmlucHV0LGZzLHYuRk9MTE9XX1NfaW5fcF9EaXJBdHRyaWJ1dGVMaXN0ODMyNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGgpKX10aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9EaXJBdHRyaWJ1dGVWYWx1ZV9pbl9wX0RpckF0dHJpYnV0ZUxpc3Q4MzMyKSxhPXRoaXMucF9EaXJBdHRyaWJ1dGVWYWx1ZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYS5nZXRUcmVlKCkpfWJyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApO2Uuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHgpe2lmKCEoeCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgeDt0aGlzLnJlcG9ydEVycm9yKHgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHgpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx4KX1maW5hbGx5e31yZXR1cm4gZX0scF9EaXJBdHRyaWJ1dGVWYWx1ZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRGlyQXR0cmlidXRlVmFsdWVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9EaXJBdHRyaWJ1dGVWYWx1ZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRGlyQXR0cmlidXRlVmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0RpckF0dHJpYnV0ZVZhbHVlX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGk9bnVsbCxzPW51bGwsYT1udWxsLGw9bnVsbCxjPW51bGwsaD1udWxsLHA9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBFU0NBUEVfUVVPVCIpLGQ9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBBUE9TIiksYj1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIEVTQ0FQRV9BUE9TIiksdz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIFFVT1QiKSxFPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfUXVvdEF0dHJWYWx1ZUNvbnRlbnQiKSxTPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfQXBvc0F0dHJWYWx1ZUNvbnRlbnQiKTt0cnl7dmFyIHg9MixUPXRoaXMuaW5wdXQuTEEoMSk7aWYoVD09dHMpeD0xO2Vsc2V7aWYoVCE9ZXMpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIE49bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNTAsMCx0aGlzLmlucHV0KTt0aHJvdyBOfXg9Mn1zd2l0Y2goeCl7Y2FzZSAxOnM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHRzLHYuRk9MTE9XX1FVT1RfaW5fcF9EaXJBdHRyaWJ1dGVWYWx1ZTgzNjYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdy5hZGQocyksci5hbnRsci5sYW5nLmlzTnVsbChhKSYmKGE9W10pLGEucHVzaChzKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih0aGlzLmlzSW5BdHRyPSEwKTtlOmRve3ZhciBDPTQ7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgeTpDPTE7YnJlYWs7Y2FzZSBlczpDPTI7YnJlYWs7Y2FzZSB0OmNhc2UgbzpjYXNlIHU6Y2FzZSBmOmNhc2UgbTpjYXNlIGRpOkM9M31zd2l0Y2goQyl7Y2FzZSAxOnM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHksdi5GT0xMT1dfRVNDQVBFX1FVT1RfaW5fcF9EaXJBdHRyaWJ1dGVWYWx1ZTgzNzMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmcC5hZGQocyksci5hbnRsci5sYW5nLmlzTnVsbChhKSYmKGE9W10pLGEucHVzaChzKTticmVhaztjYXNlIDI6cz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZXMsdi5GT0xMT1dfQVBPU19pbl9wX0RpckF0dHJpYnV0ZVZhbHVlODM3OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZkLmFkZChzKSxyLmFudGxyLmxhbmcuaXNOdWxsKGEpJiYoYT1bXSksYS5wdXNoKHMpO2JyZWFrO2Nhc2UgMzp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9RdW90QXR0clZhbHVlQ29udGVudF9pbl9wX0RpckF0dHJpYnV0ZVZhbHVlODM4MyksbD10aGlzLnBfUXVvdEF0dHJWYWx1ZUNvbnRlbnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJkUuYWRkKGwuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTtzPXRoaXMubWF0Y2godGhpcy5pbnB1dCx0cyx2LkZPTExPV19RVU9UX2luX3BfRGlyQXR0cmlidXRlVmFsdWU4Mzg5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJncuYWRkKHMpLHIuYW50bHIubGFuZy5pc051bGwoYSkmJihhPVtdKSxhLnB1c2gocyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodGhpcy5pc0luQXR0cj0hMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkZFRva2VuKGEsInN0cmluZyIpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPWk7dmFyIGs9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsZSE9bnVsbD9lLnRyZWU6bnVsbCk7aT10aGlzLmFkYXB0b3IubmlsKCk7dmFyIEw9dGhpcy5hZGFwdG9yLm5pbCgpO0w9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShvbywiRGlyQXR0cmlidXRlVmFsdWUiKSxMKTt3aGlsZShFLmhhc05leHQoKSl0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoTCxFLm5leHRUcmVlKCkpO0UucmVzZXQoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoaSxMKSxlLnRyZWU9aX1icmVhaztjYXNlIDI6cz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZXMsdi5GT0xMT1dfQVBPU19pbl9wX0RpckF0dHJpYnV0ZVZhbHVlODQzNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZkLmFkZChzKSxyLmFudGxyLmxhbmcuaXNOdWxsKGEpJiYoYT1bXSksYS5wdXNoKHMpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHRoaXMuaXNJbkF0dHI9ITApO3Q6ZG97dmFyIEE9NDtzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBnOkE9MTticmVhaztjYXNlIHRzOkE9MjticmVhaztjYXNlIG46Y2FzZSBvOmNhc2UgdTpjYXNlIGY6Y2FzZSBtOmNhc2UgZGk6QT0zfXN3aXRjaChBKXtjYXNlIDE6cz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZyx2LkZPTExPV19FU0NBUEVfQVBPU19pbl9wX0RpckF0dHJpYnV0ZVZhbHVlODQ0MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZiLmFkZChzKSxyLmFudGxyLmxhbmcuaXNOdWxsKGEpJiYoYT1bXSksYS5wdXNoKHMpO2JyZWFrO2Nhc2UgMjpzPXRoaXMubWF0Y2godGhpcy5pbnB1dCx0cyx2LkZPTExPV19RVU9UX2luX3BfRGlyQXR0cmlidXRlVmFsdWU4NDQ3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJncuYWRkKHMpLHIuYW50bHIubGFuZy5pc051bGwoYSkmJihhPVtdKSxhLnB1c2gocyk7YnJlYWs7Y2FzZSAzOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0Fwb3NBdHRyVmFsdWVDb250ZW50X2luX3BfRGlyQXR0cmlidXRlVmFsdWU4NDUxKSxjPXRoaXMucF9BcG9zQXR0clZhbHVlQ29udGVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmUy5hZGQoYy5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgdH19d2hpbGUoITApO3M9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGVzLHYuRk9MTE9XX0FQT1NfaW5fcF9EaXJBdHRyaWJ1dGVWYWx1ZTg0NTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmZC5hZGQocyksci5hbnRsci5sYW5nLmlzTnVsbChhKSYmKGE9W10pLGEucHVzaChzKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih0aGlzLmlzSW5BdHRyPSExKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRkVG9rZW4oYSwic3RyaW5nIik7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXtlLnRyZWU9aTt2YXIgaz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixlIT1udWxsP2UudHJlZTpudWxsKTtpPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgTD10aGlzLmFkYXB0b3IubmlsKCk7TD10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKG9vLCJEaXJBdHRyaWJ1dGVWYWx1ZSIpLEwpO3doaWxlKFMuaGFzTmV4dCgpKXRoaXMuYWRhcHRvci5hZGRDaGlsZChMLFMubmV4dFRyZWUoKSk7Uy5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChpLEwpLGUudHJlZT1pfX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoaSksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChPKXtpZighKE8gaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IE87dGhpcy5yZXBvcnRFcnJvcihPKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxPKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksTyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfUXVvdEF0dHJWYWx1ZUNvbnRlbnRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1F1b3RBdHRyVmFsdWVDb250ZW50X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfUXVvdEF0dHJWYWx1ZUNvbnRlbnRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1F1b3RBdHRyVmFsdWVDb250ZW50OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9RdW90QXR0clZhbHVlQ29udGVudF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBuPW51bGwsaT1udWxsLHM9bnVsbDt0cnl7dmFyIHU9MixhPXRoaXMuaW5wdXQuTEEoMSk7aWYoYT09dCl1PTE7ZWxzZXtpZighKGE+PW8mJmE8PW18fGE9PWRpKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE1MSwwLHRoaXMuaW5wdXQpO3Rocm93IGZ9dT0yfXN3aXRjaCh1KXtjYXNlIDE6bj10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUXVvdEF0dHJDb250ZW50Q2hhcl9pbl9wX1F1b3RBdHRyVmFsdWVDb250ZW50ODUxNSksaT10aGlzLnBfUXVvdEF0dHJDb250ZW50Q2hhcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4saS5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGRTdHJpbmcoaT9pLnN0YXJ0Om51bGwsaT9pLnN0b3A6bnVsbCk7YnJlYWs7Y2FzZSAyOm49dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wbV9Db21tb25Db250ZW50X2luX3BfUXVvdEF0dHJWYWx1ZUNvbnRlbnQ4NTIxKSxzPXRoaXMucG1fQ29tbW9uQ29udGVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4scy5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhuKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gZX0scF9BcG9zQXR0clZhbHVlQ29udGVudF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfQXBvc0F0dHJWYWx1ZUNvbnRlbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9BcG9zQXR0clZhbHVlQ29udGVudF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQXBvc0F0dHJWYWx1ZUNvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0Fwb3NBdHRyVmFsdWVDb250ZW50X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxpPW51bGwscz1udWxsO3RyeXt2YXIgdT0yLGE9dGhpcy5pbnB1dC5MQSgxKTtpZihhPT1uKXU9MTtlbHNle2lmKCEoYT49byYmYTw9bXx8YT09ZGkpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTUyLDAsdGhpcy5pbnB1dCk7dGhyb3cgZn11PTJ9c3dpdGNoKHUpe2Nhc2UgMTp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9BcG9zQXR0ckNvbnRlbnRDaGFyX2luX3BfQXBvc0F0dHJWYWx1ZUNvbnRlbnQ4NTQ5KSxpPXRoaXMucF9BcG9zQXR0ckNvbnRlbnRDaGFyKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkZFN0cmluZyhpP2kuc3RhcnQ6bnVsbCxpP2kuc3RvcDpudWxsKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BtX0NvbW1vbkNvbnRlbnRfaW5fcF9BcG9zQXR0clZhbHVlQ29udGVudDg1NTUpLHM9dGhpcy5wbV9Db21tb25Db250ZW50KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBlfSxwbV9EaXJFbGVtQ29udGVudF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBtX0RpckVsZW1Db250ZW50X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX0RpckVsZW1Db250ZW50X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fRGlyRWxlbUNvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wbV9EaXJFbGVtQ29udGVudF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGE9bnVsbCxsPW51bGwsYz1udWxsO3RyeXt2YXIgaD00O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIEFpOmNhc2UgaHM6Y2FzZSBwczpoPTE7YnJlYWs7Y2FzZSBzOmg9MjticmVhaztjYXNlIG86Y2FzZSB1OmNhc2UgZjpjYXNlIG06Y2FzZSBkaTpoPTM7YnJlYWs7Y2FzZSBpOmg9NDticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIHA9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNTMsMCx0aGlzLmlucHV0KTt0aHJvdyBwfXN3aXRjaChoKXtjYXNlIDE6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRGlyZWN0Q29uc3RydWN0b3JfaW5fcG1fRGlyRWxlbUNvbnRlbnQ4NTgxKSxuPXRoaXMucF9EaXJlY3RDb25zdHJ1Y3RvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9DRGF0YVNlY3Rpb25faW5fcG1fRGlyRWxlbUNvbnRlbnQ4NTkzKSxhPXRoaXMucF9DRGF0YVNlY3Rpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BtX0NvbW1vbkNvbnRlbnRfaW5fcG1fRGlyRWxlbUNvbnRlbnQ4NjA1KSxsPXRoaXMucG1fQ29tbW9uQ29udGVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbC5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNDp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FbGVtZW50Q29udGVudENoYXJfaW5fcG1fRGlyRWxlbUNvbnRlbnQ4NjE3KSxjPXRoaXMucF9FbGVtZW50Q29udGVudENoYXIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGMuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChkKXtpZighKGQgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGQ7dGhpcy5yZXBvcnRFcnJvcihkKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxkKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZCl9ZmluYWxseXt9cmV0dXJuIGV9LHBtX0NvbW1vbkNvbnRlbnRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wbV9Db21tb25Db250ZW50X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX0NvbW1vbkNvbnRlbnRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9Db21tb25Db250ZW50OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucG1fQ29tbW9uQ29udGVudF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsYT1udWxsLGw9bnVsbCxjPW51bGwsaD1udWxsO3RyeXt2YXIgcD01O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIG86cD0xO2JyZWFrO2Nhc2UgdTpwPTI7YnJlYWs7Y2FzZSBmOnA9MzticmVhaztjYXNlIG06cD00O2JyZWFrO2Nhc2UgZGk6cD01O2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgZD1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE1NCwwLHRoaXMuaW5wdXQpO3Rocm93IGR9c3dpdGNoKHApe2Nhc2UgMTp0PXRoaXMuYWRhcHRvci5uaWwoKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvLHYuRk9MTE9XX0xfUHJlZGVmaW5lZEVudGl0eVJlZl9pbl9wbV9Db21tb25Db250ZW50ODY0NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYz10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGMpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdSx2LkZPTExPV19MX0NoYXJSZWZfaW5fcG1fQ29tbW9uQ29udGVudDg2NTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxoKSk7YnJlYWs7Y2FzZSAzOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGYsdi5GT0xMT1dfRVNDQVBFX0xCUkFDS0VUX2luX3BtX0NvbW1vbkNvbnRlbnQ4NjcxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5pc0luQXR0ciYmdGhpcy5hZGRUb2tlbihuLCJzdHJpbmciKTticmVhaztjYXNlIDQ6dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbSx2LkZPTExPV19FU0NBUEVfUkJSQUNLRVRfaW5fcG1fQ29tbW9uQ29udGVudDg2ODcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmlzSW5BdHRyJiZ0aGlzLmFkZFRva2VuKG4sInN0cmluZyIpO2JyZWFrO2Nhc2UgNTp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcGdfRW5jbG9zZWRFeHByWG1sX2luX3BtX0NvbW1vbkNvbnRlbnQ4NzAxKSxhPXRoaXMucGdfRW5jbG9zZWRFeHByWG1sKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZyl7aWYoIShnIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBnO3RoaXMucmVwb3J0RXJyb3IoZyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGcpfWZpbmFsbHl7fXJldHVybiBlfSxwZ19FbmNsb3NlZEV4cHJYbWxfcmV0dXJuOmZ1bmN0aW9uKCl7di5wZ19FbmNsb3NlZEV4cHJYbWxfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucGdfRW5jbG9zZWRFeHByWG1sX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscGdfRW5jbG9zZWRFeHByWG1sOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucGdfRW5jbG9zZWRFeHByWG1sX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkaSx2LkZPTExPV19MQlJBQ0tFVF9pbl9wZ19FbmNsb3NlZEV4cHJYbWw4NzMzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5wdXNoWFF1ZXJ5TGV4ZXIoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByX2luX3BnX0VuY2xvc2VkRXhwclhtbDg3NDkpLHM9dGhpcy5wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCx2aSx2LkZPTExPV19SQlJBQ0tFVF9pbl9wZ19FbmNsb3NlZEV4cHJYbWw4NzYzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5wb3BMZXhlcigpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGEpe2lmKCEoYSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgYTt0aGlzLnJlcG9ydEVycm9yKGEpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGEpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxhKX1maW5hbGx5e31yZXR1cm4gZX0scF9EaXJDb21tZW50Q29uc3RydWN0b3JfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0RpckNvbW1lbnRDb25zdHJ1Y3Rvcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0RpckNvbW1lbnRDb25zdHJ1Y3Rvcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRGlyQ29tbWVudENvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9EaXJDb21tZW50Q29uc3RydWN0b3JfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGhzLHYuRk9MTE9XX0xfRGlyQ29tbWVudENvbnN0cnVjdG9yX2luX3BfRGlyQ29tbWVudENvbnN0cnVjdG9yODc5NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWMobiksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gocyl7aWYoIShzIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBzO3RoaXMucmVwb3J0RXJyb3IocyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQscyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHMpfWZpbmFsbHl7fXJldHVybiBlfSxwX0RpclBJQ29uc3RydWN0b3JfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0RpclBJQ29uc3RydWN0b3JfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9EaXJQSUNvbnN0cnVjdG9yX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9EaXJQSUNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9EaXJQSUNvbnN0cnVjdG9yX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxwcyx2LkZPTExPV19MX0RpclBJQ29uc3RydWN0b3JfaW5fcF9EaXJQSUNvbnN0cnVjdG9yODgzMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXAobiksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gocyl7aWYoIShzIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBzO3RoaXMucmVwb3J0RXJyb3IocyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQscyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHMpfWZpbmFsbHl7fXJldHVybiBlfSxwX0NEYXRhU2VjdGlvbl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfQ0RhdGFTZWN0aW9uX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQ0RhdGFTZWN0aW9uX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9DRGF0YVNlY3Rpb246ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0NEYXRhU2VjdGlvbl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQscyx2LkZPTExPV19MX0NEYXRhU2VjdGlvbl9pbl9wX0NEYXRhU2VjdGlvbjg4NjcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGk9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFjKG4pLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKG8pe2lmKCEobyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbzt0aGlzLnJlcG9ydEVycm9yKG8pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG8pLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxvKX1maW5hbGx5e31yZXR1cm4gZX0scF9Db21wdXRlZENvbnN0cnVjdG9yX3JldHVybjpmdW5jdGlvbigpe3YucF9Db21wdXRlZENvbnN0cnVjdG9yX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQ29tcHV0ZWRDb25zdHJ1Y3Rvcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQ29tcHV0ZWRDb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQ29tcHV0ZWRDb25zdHJ1Y3Rvcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbDt0cnl7dmFyIGM9OCxoPXRoaXMuaW5wdXQuTEEoMSk7aWYoaD09WCljPTE7ZWxzZSBpZihoPT0kKWM9MjtlbHNlIGlmKGg9PWspYz0zO2Vsc2UgaWYoaD09TnQpYz00O2Vsc2UgaWYoaD09R3QpYz01O2Vsc2UgaWYoaD09QiljPTY7ZWxzZSBpZihoPT1xdCljPTc7ZWxzZXtpZihoIT1vaXx8IXRoaXMubGMoZCkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIHA9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNTUsMCx0aGlzLmlucHV0KTt0aHJvdyBwfWM9OH1zd2l0Y2goYyl7Y2FzZSAxOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wbV9Db21wRG9jQ29uc3RydWN0b3JfaW5fcF9Db21wdXRlZENvbnN0cnVjdG9yODkwMSksbj10aGlzLnBtX0NvbXBEb2NDb25zdHJ1Y3RvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fQ29tcEVsZW1Db25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTEzKSxpPXRoaXMucG1fQ29tcEVsZW1Db25zdHJ1Y3RvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMzp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fQ29tcEF0dHJDb25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTI1KSxzPXRoaXMucG1fQ29tcEF0dHJDb25zdHJ1Y3RvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNDp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3JfaW5fcF9Db21wdXRlZENvbnN0cnVjdG9yODkzNyksbz10aGlzLnBfQ29tcE5hbWVzcGFjZUNvbnN0cnVjdG9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA1OnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0NvbXBUZXh0Q29uc3RydWN0b3JfaW5fcF9Db21wdXRlZENvbnN0cnVjdG9yODk0OSksdT10aGlzLnBfQ29tcFRleHRDb25zdHJ1Y3RvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNjp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fQ29tcENvbW1lbnRDb25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTYxKSxhPXRoaXMucG1fQ29tcENvbW1lbnRDb25zdHJ1Y3RvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNzp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fQ29tcFBJQ29uc3RydWN0b3JfaW5fcF9Db21wdXRlZENvbnN0cnVjdG9yODk3MyksZj10aGlzLnBtX0NvbXBQSUNvbnN0cnVjdG9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA4OnQ9dGhpcy5hZGFwdG9yLm5pbCgpO2lmKCF0aGlzLmxjKGQpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3Rocm93IG5ldyByLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsInBfQ29tcHV0ZWRDb25zdHJ1Y3RvciIsInRoaXMubGMoTUxTKSIpfXRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0NvbXBCaW5hcnlDb25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTg4KSxsPXRoaXMucF9Db21wQmluYXJ5Q29uc3RydWN0b3IoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChtKXtpZighKG0gaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG07dGhpcy5yZXBvcnRFcnJvcihtKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxtKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbSl9ZmluYWxseXt9cmV0dXJuIGV9LHBtX0NvbXBEb2NDb25zdHJ1Y3Rvcl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBtX0NvbXBEb2NDb25zdHJ1Y3Rvcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wbV9Db21wRG9jQ29uc3RydWN0b3JfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9Db21wRG9jQ29uc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wbV9Db21wRG9jQ29uc3RydWN0b3JfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsWCx2LkZPTExPV19ET0NVTUVOVF9pbl9wbV9Db21wRG9jQ29uc3RydWN0b3I5MDE3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkaSx2LkZPTExPV19MQlJBQ0tFVF9pbl9wbV9Db21wRG9jQ29uc3RydWN0b3I5MDIxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHJfaW5fcG1fQ29tcERvY0NvbnN0cnVjdG9yOTAyMyksbz10aGlzLnBfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpLHM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHZpLHYuRk9MTE9XX1JCUkFDS0VUX2luX3BtX0NvbXBEb2NDb25zdHJ1Y3RvcjkwMjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBlfSxwbV9Db21wRWxlbUNvbnN0cnVjdG9yX3JldHVybjpmdW5jdGlvbigpe3YucG1fQ29tcEVsZW1Db25zdHJ1Y3Rvcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wbV9Db21wRWxlbUNvbnN0cnVjdG9yX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscG1fQ29tcEVsZW1Db25zdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBtX0NvbXBFbGVtQ29uc3RydWN0b3JfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsLGg9bnVsbCxwPW51bGwsZD1udWxsLG09bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsJCx2LkZPTExPV19FTEVNRU5UX2luX3BtX0NvbXBFbGVtQ29uc3RydWN0b3I5MDYxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKTt2YXIgZz0yLHk9dGhpcy5pbnB1dC5MQSgxKTtpZih5Pj1FJiZ5PD1Zbnx8eT49ZXImJnk8PWZpfHx5PT1pc3x8eT09eG8pZz0xO2Vsc2V7aWYoeSE9ZGkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGI9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNTYsMCx0aGlzLmlucHV0KTt0aHJvdyBifWc9Mn1zd2l0Y2goZyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1FOYW1lX2luX3BtX0NvbXBFbGVtQ29uc3RydWN0b3I5MDY2KSxhPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjppPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkaSx2LkZPTExPV19MQlJBQ0tFVF9pbl9wbV9Db21wRWxlbUNvbnN0cnVjdG9yOTA3MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGgpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByX2luX3BtX0NvbXBFbGVtQ29uc3RydWN0b3I5MDczKSxmPXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYuZ2V0VHJlZSgpKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCx2aSx2LkZPTExPV19SQlJBQ0tFVF9pbl9wbV9Db21wRWxlbUNvbnN0cnVjdG9yOTA3Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocD10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHApKX1vPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkaSx2LkZPTExPV19MQlJBQ0tFVF9pbl9wbV9Db21wRWxlbUNvbnN0cnVjdG9yOTA4MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZD10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGQpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcG1fQ29udGVudEV4cHJfaW5fcG1fQ29tcEVsZW1Db25zdHJ1Y3RvcjkwODIpLGw9dGhpcy5wbV9Db250ZW50RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbC5nZXRUcmVlKCkpLHU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHZpLHYuRk9MTE9XX1JCUkFDS0VUX2luX3BtX0NvbXBFbGVtQ29uc3RydWN0b3I5MDg0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihtPXRoaXMuYWRhcHRvci5jcmVhdGUodSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbSkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHcpe2lmKCEodyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgdzt0aGlzLnJlcG9ydEVycm9yKHcpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHcpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx3KX1maW5hbGx5e31yZXR1cm4gZX0scG1fQ29udGVudEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wbV9Db250ZW50RXhwcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wbV9Db250ZW50RXhwcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0NvbnRlbnRFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucG1fQ29udGVudEV4cHJfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9pbl9wbV9Db250ZW50RXhwcjkxMTEpLG49dGhpcy5wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGV9LHBtX0NvbXBBdHRyQ29uc3RydWN0b3JfcmV0dXJuOmZ1bmN0aW9uKCl7di5wbV9Db21wQXR0ckNvbnN0cnVjdG9yX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX0NvbXBBdHRyQ29uc3RydWN0b3JfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9Db21wQXR0ckNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucG1fQ29tcEF0dHJDb25zdHJ1Y3Rvcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGwsaD1udWxsLHA9bnVsbCxkPW51bGwsbT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrLHYuRk9MTE9XX0FUVFJJQlVURV9pbl9wbV9Db21wQXR0ckNvbnN0cnVjdG9yOTE0MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGMpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobik7dmFyIGc9Mix5PXRoaXMuaW5wdXQuTEEoMSk7aWYoeT49RSYmeTw9WW58fHk+PWVyJiZ5PD1maXx8eT09aXN8fHk9PXhvKWc9MTtlbHNle2lmKHkhPWRpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBiPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTU3LDAsdGhpcy5pbnB1dCk7dGhyb3cgYn1nPTJ9c3dpdGNoKGcpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9RTmFtZV9pbl9wbV9Db21wQXR0ckNvbnN0cnVjdG9yOTE0NSksYT10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZGksdi5GT0xMT1dfTEJSQUNLRVRfaW5fcG1fQ29tcEF0dHJDb25zdHJ1Y3RvcjkxNTApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxoKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwcl9pbl9wbV9Db21wQXR0ckNvbnN0cnVjdG9yOTE1MiksZj10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmLmdldFRyZWUoKSkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdmksdi5GT0xMT1dfUkJSQUNLRVRfaW5fcG1fQ29tcEF0dHJDb25zdHJ1Y3RvcjkxNTUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHA9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxwKSl9bz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZGksdi5GT0xMT1dfTEJSQUNLRVRfaW5fcG1fQ29tcEF0dHJDb25zdHJ1Y3RvcjkxNTkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGQ9dGhpcy5hZGFwdG9yLmNyZWF0ZShvKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxkKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9pbl9wbV9Db21wQXR0ckNvbnN0cnVjdG9yOTE2MSksbD10aGlzLnBfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbC5nZXRUcmVlKCkpLHU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHZpLHYuRk9MTE9XX1JCUkFDS0VUX2luX3BtX0NvbXBBdHRyQ29uc3RydWN0b3I5MTYzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihtPXRoaXMuYWRhcHRvci5jcmVhdGUodSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbSkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHcpe2lmKCEodyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgdzt0aGlzLnJlcG9ydEVycm9yKHcpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHcpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx3KX1maW5hbGx5e31yZXR1cm4gZX0scF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3JfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3Rvcl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3Rvcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQ29tcE5hbWVzcGFjZUNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3JfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsLGg9bnVsbCxwPW51bGwsZD1udWxsLG09bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTnQsdi5GT0xMT1dfTkFNRVNQQUNFX2luX3BfQ29tcE5hbWVzcGFjZUNvbnN0cnVjdG9yOTE5MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGMpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobik7dmFyIGc9Mix5PXRoaXMuaW5wdXQuTEEoMSk7aWYoeT49RSYmeTw9WW58fHk+PWVyJiZ5PD1maXx8eT09aXN8fHk9PXhvKWc9MTtlbHNle2lmKHkhPWRpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBiPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTU4LDAsdGhpcy5pbnB1dCk7dGhyb3cgYn1nPTJ9c3dpdGNoKGcpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9QcmVmaXhfaW5fcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I5MTk2KSxhPXRoaXMucF9QcmVmaXgoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZGksdi5GT0xMT1dfTEJSQUNLRVRfaW5fcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I5MjAxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaCkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1ByZWZpeEV4cHJfaW5fcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I5MjAzKSxmPXRoaXMucF9QcmVmaXhFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmLmdldFRyZWUoKSkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdmksdi5GT0xMT1dfUkJSQUNLRVRfaW5fcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I5MjA1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihwPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscCkpfW89dGhpcy5tYXRjaCh0aGlzLmlucHV0LGRpLHYuRk9MTE9XX0xCUkFDS0VUX2luX3BfQ29tcE5hbWVzcGFjZUNvbnN0cnVjdG9yOTIwOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZD10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGQpKTt2YXIgdz0yLFM9dGhpcy5pbnB1dC5MQSgxKTtpZihTPj1FJiZTPD1maXx8Uz09Y2l8fFM+PXBpJiZTPD1kaXx8Uz49Q2kmJlM8PUFpfHxTPj1IaSYmUzw9Rml8fFM9PUdpfHxTPj1lcyYmUzw9dHN8fFM9PWlzfHxTPj1jcyYmUzw9bXN8fFM9PXhvKXc9MTtzd2l0Y2godyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1VSSUV4cHJfaW5fcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I5MjExKSxsPXRoaXMucF9VUklFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsLmdldFRyZWUoKSl9dT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdmksdi5GT0xMT1dfUkJSQUNLRVRfaW5fcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I5MjE0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihtPXRoaXMuYWRhcHRvci5jcmVhdGUodSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbSkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHgpe2lmKCEoeCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgeDt0aGlzLnJlcG9ydEVycm9yKHgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHgpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx4KX1maW5hbGx5e31yZXR1cm4gZX0scF9QcmVmaXhfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1ByZWZpeF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1ByZWZpeF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfUHJlZml4OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9QcmVmaXhfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfTkNOYW1lX2luX3BfUHJlZml4OTI0MCksbj10aGlzLnBfTkNOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBlfSxwX1ByZWZpeEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1ByZWZpeEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9QcmVmaXhFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9QcmVmaXhFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9QcmVmaXhFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJfaW5fcF9QcmVmaXhFeHByOTI2Niksbj10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBlfSxwX1VSSUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1VSSUV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9VUklFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9VUklFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9VUklFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJfaW5fcF9VUklFeHByOTI5Myksbj10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBlfSxwX0NvbXBUZXh0Q29uc3RydWN0b3JfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0NvbXBUZXh0Q29uc3RydWN0b3JfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9Db21wVGV4dENvbnN0cnVjdG9yX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Db21wVGV4dENvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9Db21wVGV4dENvbnN0cnVjdG9yX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEd0LHYuRk9MTE9XX1RFWFRfaW5fcF9Db21wVGV4dENvbnN0cnVjdG9yOTMyMik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZGksdi5GT0xMT1dfTEJSQUNLRVRfaW5fcF9Db21wVGV4dENvbnN0cnVjdG9yOTMyNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByX2luX3BfQ29tcFRleHRDb25zdHJ1Y3RvcjkzMjgpLG89dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpLHM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHZpLHYuRk9MTE9XX1JCUkFDS0VUX2luX3BfQ29tcFRleHRDb25zdHJ1Y3RvcjkzMzEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBlfSxwX0NvbXBCaW5hcnlDb25zdHJ1Y3Rvcl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfQ29tcEJpbmFyeUNvbnN0cnVjdG9yX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQ29tcEJpbmFyeUNvbnN0cnVjdG9yX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Db21wQmluYXJ5Q29uc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0NvbXBCaW5hcnlDb25zdHJ1Y3Rvcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvaSx2LkZPTExPV19CSU5BUllfaW5fcF9Db21wQmluYXJ5Q29uc3RydWN0b3I5MzU5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkaSx2LkZPTExPV19MQlJBQ0tFVF9pbl9wX0NvbXBCaW5hcnlDb25zdHJ1Y3RvcjkzNjMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwcl9pbl9wX0NvbXBCaW5hcnlDb25zdHJ1Y3RvcjkzNjUpLG89dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpLHM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHZpLHYuRk9MTE9XX1JCUkFDS0VUX2luX3BfQ29tcEJpbmFyeUNvbnN0cnVjdG9yOTM2OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGV9LHBtX0NvbXBDb21tZW50Q29uc3RydWN0b3JfcmV0dXJuOmZ1bmN0aW9uKCl7di5wbV9Db21wQ29tbWVudENvbnN0cnVjdG9yX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX0NvbXBDb21tZW50Q29uc3RydWN0b3JfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9Db21wQ29tbWVudENvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucG1fQ29tcENvbW1lbnRDb25zdHJ1Y3Rvcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxCLHYuRk9MTE9XX0NPTU1FTlRfaW5fcG1fQ29tcENvbW1lbnRDb25zdHJ1Y3RvcjkzOTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGRpLHYuRk9MTE9XX0xCUkFDS0VUX2luX3BtX0NvbXBDb21tZW50Q29uc3RydWN0b3I5NDAxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHJfaW5fcG1fQ29tcENvbW1lbnRDb25zdHJ1Y3Rvcjk0MDMpLG89dGhpcy5wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCx2aSx2LkZPTExPV19SQlJBQ0tFVF9pbl9wbV9Db21wQ29tbWVudENvbnN0cnVjdG9yOTQwNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGV9LHBtX0NvbXBQSUNvbnN0cnVjdG9yX3JldHVybjpmdW5jdGlvbigpe3YucG1fQ29tcFBJQ29uc3RydWN0b3JfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucG1fQ29tcFBJQ29uc3RydWN0b3JfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwbV9Db21wUElDb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBtX0NvbXBQSUNvbnN0cnVjdG9yX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsLGM9bnVsbCxoPW51bGwscD1udWxsLGQ9bnVsbCxtPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHF0LHYuRk9MTE9XX1BST0NFU1NJTkdfSU5TVFJVQ1RJT05faW5fcG1fQ29tcFBJQ29uc3RydWN0b3I5NDM0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKTt2YXIgZz0yLHk9dGhpcy5pbnB1dC5MQSgxKTtpZih5Pj1FJiZ5PD1Zbnx8eT49ZXImJnk8PWZpfHx5PT1pc3x8eT09eG8pZz0xO2Vsc2V7aWYoeSE9ZGkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGI9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNjAsMCx0aGlzLmlucHV0KTt0aHJvdyBifWc9Mn1zd2l0Y2goZyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX05DTmFtZV9pbl9wbV9Db21wUElDb25zdHJ1Y3Rvcjk0MzkpLGE9dGhpcy5wX05DTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjppPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkaSx2LkZPTExPV19MQlJBQ0tFVF9pbl9wbV9Db21wUElDb25zdHJ1Y3Rvcjk0NDQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxoKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwcl9pbl9wbV9Db21wUElDb25zdHJ1Y3Rvcjk0NDYpLGY9dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZi5nZXRUcmVlKCkpLHM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHZpLHYuRk9MTE9XX1JCUkFDS0VUX2luX3BtX0NvbXBQSUNvbnN0cnVjdG9yOTQ0OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocD10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHApKX1vPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkaSx2LkZPTExPV19MQlJBQ0tFVF9pbl9wbV9Db21wUElDb25zdHJ1Y3Rvcjk0NTMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGQ9dGhpcy5hZGFwdG9yLmNyZWF0ZShvKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxkKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9pbl9wbV9Db21wUElDb25zdHJ1Y3Rvcjk0NTUpLGw9dGhpcy5wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwuZ2V0VHJlZSgpKSx1PXRoaXMubWF0Y2godGhpcy5pbnB1dCx2aSx2LkZPTExPV19SQlJBQ0tFVF9pbl9wbV9Db21wUElDb25zdHJ1Y3Rvcjk0NTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG09dGhpcy5hZGFwdG9yLmNyZWF0ZSh1KSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxtKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2godyl7aWYoISh3IGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB3O3RoaXMucmVwb3J0RXJyb3IodyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHcpfWZpbmFsbHl7fXJldHVybiBlfSxwX1NpbmdsZVR5cGVfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1NpbmdsZVR5cGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9TaW5nbGVUeXBlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9TaW5nbGVUeXBlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9TaW5nbGVUeXBlX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQXRvbWljT3JVbmlvblR5cGVfaW5fcF9TaW5nbGVUeXBlOTUwMSksaT10aGlzLnBfQXRvbWljT3JVbmlvblR5cGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTt2YXIgbz0yLHU9dGhpcy5pbnB1dC5MQSgxKTt1PT1OaSYmKG89MSk7c3dpdGNoKG8pe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxOaSx2LkZPTExPV19RVUVTVElPTl9pbl9wX1NpbmdsZVR5cGU5NTAzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGEpe2lmKCEoYSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgYTt0aGlzLnJlcG9ydEVycm9yKGEpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGEpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxhKX1maW5hbGx5e31yZXR1cm4gZX0scF9UeXBlRGVjbGFyYXRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1R5cGVEZWNsYXJhdGlvbl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1R5cGVEZWNsYXJhdGlvbl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVHlwZURlY2xhcmF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9UeXBlRGVjbGFyYXRpb25fcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBBUyIpLHU9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9TZXF1ZW5jZVR5cGUiKTt0cnl7bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVCx2LkZPTExPV19BU19pbl9wX1R5cGVEZWNsYXJhdGlvbjk1MzIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmby5hZGQobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1NlcXVlbmNlVHlwZV9pbl9wX1R5cGVEZWNsYXJhdGlvbjk1MzgpLGk9dGhpcy5wX1NlcXVlbmNlVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdS5hZGQoaS5nZXRUcmVlKCkpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIGE9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsZSE9bnVsbD9lLnRyZWU6bnVsbCksZj1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gc3QiLGkhPW51bGw/aS50cmVlOm51bGwpO3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBsPXRoaXMuYWRhcHRvci5uaWwoKTtsPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoWnMsIlR5cGVEZWNsYXJhdGlvbiIpLGwpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChsLGYubmV4dFRyZWUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCksZS50cmVlPXR9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYyl7aWYoIShjIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBjO3RoaXMucmVwb3J0RXJyb3IoYyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGMpfWZpbmFsbHl7fXJldHVybiBlfSxwX1NlcXVlbmNlVHlwZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfU2VxdWVuY2VUeXBlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfU2VxdWVuY2VUeXBlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9TZXF1ZW5jZVR5cGU6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgdi5wX1NlcXVlbmNlVHlwZV9yZXR1cm47dC5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsLGM9bnVsbCxoPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gRU1QVFlfU0VRVUVOQ0UiKSxwPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gUlBBUkVOIiksZD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIExQQVJFTiIpLG09bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9JdGVtVHlwZSIpLGc9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9PY2N1cnJlbmNlSW5kaWNhdG9yIik7dHJ5e3ZhciB5PTIsYj10aGlzLmlucHV0LkxBKDEpO2lmKGI9PVEpe3ZhciB3PXRoaXMuaW5wdXQuTEEoMik7aWYodz09Y2kpeT0xO2Vsc2V7aWYoISh3PT1lfHx3Pj14JiZ3PD1DfHx3PT1NfHx3PT1IfHx3PT1xfHx3Pj16JiZ3PD1XfHx3PT1LfHx3PT1ZfHx3Pj1ldCYmdzw9dHR8fHc9PWl0fHx3PT1vdHx8dz49YXQmJnc8PWZ0fHx3PT1odHx8dz49ZHQmJnc8PW10fHx3PT1idHx8dz49RXQmJnc8PXh0fHx3PT1DdHx8dz49X3QmJnc8PUR0fHx3Pj1SdCYmdzw9VXR8fHc9PUp0fHx3PT1adHx8dz09bm58fHc9PWFufHx3PT1sbnx8dz09cG58fHc+PWduJiZ3PD15bnx8dz09Tm58fHc9PU1ufHx3Pj1JbiYmdzw9cW58fHc9PVhufHx3PT0kbnx8dz09dHJ8fHc9PWlyfHx3PT1Ocnx8dz09QXJ8fHc9PV9yfHx3PT1Ccnx8dz09enJ8fHc9PWxpfHx3PT1oaXx8dz49ZGkmJnc8PXZpfHx3Pj1naSYmdzw9d2l8fHc+PVRpJiZ3PD1QaXx8dz09SWl8fHc+PXppJiZ3PD1XaSkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLHQ7dmFyIFM9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNjMsMSx0aGlzLmlucHV0KTt0aHJvdyBTfXk9Mn19ZWxzZXtpZighKGI+PUUmJmI8PUt8fGI+PUcmJmI8PVlufHxiPj1lciYmYjw9Zml8fGI9PWNpfHxiPT1pc3x8Yj09eG8pKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCx0O3ZhciBTPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTYzLDAsdGhpcy5pbnB1dCk7dGhyb3cgU315PTJ9c3dpdGNoKHkpe2Nhc2UgMTppPXRoaXMubWF0Y2godGhpcy5pbnB1dCxRLHYuRk9MTE9XX0VNUFRZX1NFUVVFTkNFX2luX3BfU2VxdWVuY2VUeXBlOTU5MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZoLmFkZChpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2ksdi5GT0xMT1dfTFBBUkVOX2luX3BfU2VxdWVuY2VUeXBlOTU5Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZkLmFkZChzKSxvPXRoaXMubWF0Y2godGhpcy5pbnB1dCxoaSx2LkZPTExPV19SUEFSRU5faW5fcF9TZXF1ZW5jZVR5cGU5NjAxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnAuYWRkKG8pO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7dC50cmVlPW47dmFyIFQ9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByIixvKSxOPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gbCIscyksaz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIGsiLGkpLEw9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsdCE9bnVsbD90LnRyZWU6bnVsbCk7bj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIEE9dGhpcy5hZGFwdG9yLm5pbCgpO0E9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShmbywiU2VxdWVuY2VUeXBlIiksQSk7dmFyIE89dGhpcy5hZGFwdG9yLm5pbCgpO089dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShsbywiRW1wdHlTZXF1ZW5jZVRlc3QiKSxPKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoTyxrLm5leHROb2RlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChPLE4ubmV4dE5vZGUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKE8sVC5uZXh0Tm9kZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoQSxPKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixBKSx0LnRyZWU9bn1icmVhaztjYXNlIDI6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfSXRlbVR5cGVfaW5fcF9TZXF1ZW5jZVR5cGU5NjUwKSx1PXRoaXMucF9JdGVtVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmbS5hZGQodS5nZXRUcmVlKCkpO3ZhciBfPTI7Xz10aGlzLmRmYTE2Mi5wcmVkaWN0KHRoaXMuaW5wdXQpO3N3aXRjaChfKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfT2NjdXJyZW5jZUluZGljYXRvcl9pbl9wX1NlcXVlbmNlVHlwZTk2NjEpLGE9dGhpcy5wX09jY3VycmVuY2VJbmRpY2F0b3IoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmcuYWRkKGEuZ2V0VHJlZSgpKX1pZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe3QudHJlZT1uO3ZhciBMPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLHQhPW51bGw/dC50cmVlOm51bGwpLEQ9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIGl0Iix1IT1udWxsP3UudHJlZTpudWxsKSxQPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBvaSIsYSE9bnVsbD9hLnRyZWU6bnVsbCk7bj10aGlzLmFkYXB0b3IubmlsKCk7dmFyIEE9dGhpcy5hZGFwdG9yLm5pbCgpO0E9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShmbywiU2VxdWVuY2VUeXBlIiksQSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKEEsRC5uZXh0VHJlZSgpKSxQLmhhc05leHQoKSYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKEEsUC5uZXh0VHJlZSgpKSxQLnJlc2V0KCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sQSksdC50cmVlPW59fXQuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih0LnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhuKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKHQudHJlZSx0LnN0YXJ0LHQuc3RvcCkpfWNhdGNoKEIpe2lmKCEoQiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgQjt0aGlzLnJlcG9ydEVycm9yKEIpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LEIpLHQudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsdC5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxCKX1maW5hbGx5e31yZXR1cm4gdH0scF9PY2N1cnJlbmNlSW5kaWNhdG9yX3JldHVybjpmdW5jdGlvbigpe3YucF9PY2N1cnJlbmNlSW5kaWNhdG9yX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfT2NjdXJyZW5jZUluZGljYXRvcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfT2NjdXJyZW5jZUluZGljYXRvcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfT2NjdXJyZW5jZUluZGljYXRvcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLmlucHV0LkxUKDEpO2lmKCEodGhpcy5pbnB1dC5MQSgxKT49TmkmJnRoaXMuaW5wdXQuTEEoMSk8PWtpKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgcz1uZXcgci5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyBzfXRoaXMuaW5wdXQuY29uc3VtZSgpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdGhpcy5hZGFwdG9yLmNyZWF0ZShuKSksdGhpcy5zdGF0ZS5lcnJvclJlY292ZXJ5PSExLHRoaXMuc3RhdGUuZmFpbGVkPSExLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKG8pe2lmKCEobyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbzt0aGlzLnJlcG9ydEVycm9yKG8pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG8pLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxvKX1maW5hbGx5e31yZXR1cm4gZX0scF9JdGVtVHlwZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfSXRlbVR5cGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9JdGVtVHlwZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSXRlbVR5cGU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0l0ZW1UeXBlX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsLGM9bnVsbCxoPW51bGwscD1udWxsLG09bnVsbCxnPW51bGwseT1udWxsLGI9bnVsbCx3PW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gUlBBUkVOIiksRT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIElURU0iKSxTPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gQklOQVJZIikseD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIExQQVJFTiIpLFQ9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcF9LaW5kVGVzdCIpO3RyeXt2YXIgTj01O049dGhpcy5kZmExNjQucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2goTil7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0tpbmRUZXN0X2luX3BfSXRlbVR5cGU5NzYzKSxmPXRoaXMucF9LaW5kVGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmVC5hZGQoZi5nZXRUcmVlKCkpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIEM9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsZSE9bnVsbD9lLnRyZWU6bnVsbCk7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGs9dGhpcy5hZGFwdG9yLm5pbCgpO2s9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShjbywiS2luZFRlc3QiKSxrKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoayxULm5leHRUcmVlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGspLGUudHJlZT10fWJyZWFrO2Nhc2UgMjppZighdGhpcy5sYyhkKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt0aHJvdyBuZXcgci5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJwX0l0ZW1UeXBlIiwidGhpcy5sYyhNTFMpIil9bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb2ksdi5GT0xMT1dfQklOQVJZX2luX3BfSXRlbVR5cGU5ODAzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJlMuYWRkKG4pLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGNpLHYuRk9MTE9XX0xQQVJFTl9pbl9wX0l0ZW1UeXBlOTgwNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ4LmFkZChpKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxoaSx2LkZPTExPV19SUEFSRU5faW5fcF9JdGVtVHlwZTk4MDcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdy5hZGQocyk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXtlLnRyZWU9dDt2YXIgQz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixlIT1udWxsP2UudHJlZTpudWxsKTt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgaz10aGlzLmFkYXB0b3IubmlsKCk7az10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKFNvLCJCaW5hcnlUZXN0IiksayksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGssUy5uZXh0Tm9kZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoayx4Lm5leHROb2RlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChrLHcubmV4dE5vZGUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsayksZS50cmVlPXR9YnJlYWs7Y2FzZSAzOm89dGhpcy5tYXRjaCh0aGlzLmlucHV0LGd0LHYuRk9MTE9XX0lURU1faW5fcF9JdGVtVHlwZTk4NDkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmRS5hZGQobyksdT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2ksdi5GT0xMT1dfTFBBUkVOX2luX3BfSXRlbVR5cGU5ODUxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnguYWRkKHUpLGE9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGhpLHYuRk9MTE9XX1JQQVJFTl9pbl9wX0l0ZW1UeXBlOTg1Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ3LmFkZChhKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2UudHJlZT10O3ZhciBDPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGUhPW51bGw/ZS50cmVlOm51bGwpO3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBrPXRoaXMuYWRhcHRvci5uaWwoKTtrPXRoaXMuYWRhcHRvci5iZWNvbWVSb290KHRoaXMuYWRhcHRvci5jcmVhdGUoaG8sIkl0ZW1UZXN0IiksayksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGssRS5uZXh0Tm9kZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoayx4Lm5leHROb2RlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChrLHcubmV4dE5vZGUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsayksZS50cmVlPXR9YnJlYWs7Y2FzZSA0OnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0F0b21pY09yVW5pb25UeXBlX2luX3BfSXRlbVR5cGU5ODk3KSxsPXRoaXMucF9BdG9taWNPclVuaW9uVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbC5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNTp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9QYXJlbnRoZXNpemVkSXRlbVR5cGVfaW5fcF9JdGVtVHlwZTk5MDkpLGM9dGhpcy5wX1BhcmVudGhlc2l6ZWRJdGVtVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYy5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKEwpe2lmKCEoTCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgTDt0aGlzLnJlcG9ydEVycm9yKEwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LEwpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxMKX1maW5hbGx5e31yZXR1cm4gZX0scF9BdG9taWNPclVuaW9uVHlwZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfQXRvbWljT3JVbmlvblR5cGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9BdG9taWNPclVuaW9uVHlwZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQXRvbWljT3JVbmlvblR5cGU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0F0b21pY09yVW5pb25UeXBlX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX1FOYW1lIik7dHJ5e3RoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1FOYW1lX2luX3BfQXRvbWljT3JVbmlvblR5cGU5OTM1KSxuPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmaS5hZGQobi5nZXRUcmVlKCkpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIHM9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsZSE9bnVsbD9lLnRyZWU6bnVsbCk7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIG89dGhpcy5hZGFwdG9yLm5pbCgpO289dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShtbywiQXRvbWljT3JVbmlvblR5cGUiKSxvKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobyxpLm5leHRUcmVlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pLGUudHJlZT10fWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHUpe2lmKCEodSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgdTt0aGlzLnJlcG9ydEVycm9yKHUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHUpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx1KX1maW5hbGx5e31yZXR1cm4gZX0scF9LaW5kVGVzdF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfS2luZFRlc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9LaW5kVGVzdF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfS2luZFRlc3Q6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0tpbmRUZXN0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsLGM9bnVsbCxoPW51bGw7dHJ5e3ZhciBwPTEwO3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIFY6cD0xO2JyZWFrO2Nhc2UgJDpwPTI7YnJlYWs7Y2FzZSBrOnA9MzticmVhaztjYXNlIFh0OnA9NDticmVhaztjYXNlIFd0OnA9NTticmVhaztjYXNlIHF0OnA9NjticmVhaztjYXNlIEI6cD03O2JyZWFrO2Nhc2UgR3Q6cD04O2JyZWFrO2Nhc2UgU246cD05O2JyZWFrO2Nhc2UgQXQ6cD0xMDticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGQ9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNjUsMCx0aGlzLmlucHV0KTt0aHJvdyBkfXN3aXRjaChwKXtjYXNlIDE6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRG9jdW1lbnRUZXN0X2luX3BfS2luZFRlc3Q5OTg1KSxuPXRoaXMucF9Eb2N1bWVudFRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRWxlbWVudFRlc3RfaW5fcF9LaW5kVGVzdDk5OTcpLGk9dGhpcy5wX0VsZW1lbnRUZXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0F0dHJpYnV0ZVRlc3RfaW5fcF9LaW5kVGVzdDEwMDA5KSxzPXRoaXMucF9BdHRyaWJ1dGVUZXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA0OnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1NjaGVtYUVsZW1lbnRUZXN0X2luX3BfS2luZFRlc3QxMDAyMSksbz10aGlzLnBfU2NoZW1hRWxlbWVudFRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKTticmVhaztjYXNlIDU6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU2NoZW1hQXR0cmlidXRlVGVzdF9pbl9wX0tpbmRUZXN0MTAwMzMpLHU9dGhpcy5wX1NjaGVtYUF0dHJpYnV0ZVRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDY6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUElUZXN0X2luX3BfS2luZFRlc3QxMDA0NSksYT10aGlzLnBfUElUZXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA3OnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0NvbW1lbnRUZXN0X2luX3BfS2luZFRlc3QxMDA1NyksZj10aGlzLnBfQ29tbWVudFRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYuZ2V0VHJlZSgpKTticmVhaztjYXNlIDg6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVGV4dFRlc3RfaW5fcF9LaW5kVGVzdDEwMDY5KSxsPXRoaXMucF9UZXh0VGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbC5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgOTp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9OYW1lc3BhY2VOb2RlVGVzdF9pbl9wX0tpbmRUZXN0MTAwODEpLGM9dGhpcy5wX05hbWVzcGFjZU5vZGVUZXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxjLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAxMDp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9BbnlLaW5kVGVzdF9pbl9wX0tpbmRUZXN0MTAwOTMpLGg9dGhpcy5wX0FueUtpbmRUZXN0KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxoLmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobSl7aWYoIShtIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBtO3RoaXMucmVwb3J0RXJyb3IobSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG0pfWZpbmFsbHl7fXJldHVybiBlfSxwX0FueUtpbmRUZXN0X3JldHVybjpmdW5jdGlvbigpe3YucF9BbnlLaW5kVGVzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0FueUtpbmRUZXN0X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9BbnlLaW5kVGVzdDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQW55S2luZFRlc3RfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxBdCx2LkZPTExPV19OT0RFX2luX3BfQW55S2luZFRlc3QxMDExOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjaSx2LkZPTExPV19MUEFSRU5faW5fcF9BbnlLaW5kVGVzdDEwMTIxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdSkpLHM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGhpLHYuRk9MTE9XX1JQQVJFTl9pbl9wX0FueUtpbmRUZXN0MTAxMjMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwX0RvY3VtZW50VGVzdF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRG9jdW1lbnRUZXN0X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRG9jdW1lbnRUZXN0X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Eb2N1bWVudFRlc3Q6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0RvY3VtZW50VGVzdF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVix2LkZPTExPV19ET0NVTUVOVF9OT0RFX2luX3BfRG9jdW1lbnRUZXN0MTAxNDkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2ksdi5GT0xMT1dfTFBBUkVOX2luX3BfRG9jdW1lbnRUZXN0MTAxNTEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSk7dmFyIGM9MyxoPXRoaXMuaW5wdXQuTEEoMSk7aD09JD9jPTE6aD09WHQmJihjPTIpO3N3aXRjaChjKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRWxlbWVudFRlc3RfaW5fcF9Eb2N1bWVudFRlc3QxMDE1NCksbz10aGlzLnBfRWxlbWVudFRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU2NoZW1hRWxlbWVudFRlc3RfaW5fcF9Eb2N1bWVudFRlc3QxMDE1OCksdT10aGlzLnBfU2NoZW1hRWxlbWVudFRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKX1zPXRoaXMubWF0Y2godGhpcy5pbnB1dCxoaSx2LkZPTExPV19SUEFSRU5faW5fcF9Eb2N1bWVudFRlc3QxMDE2Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChwKXtpZighKHAgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHA7dGhpcy5yZXBvcnRFcnJvcihwKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxwKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfVGV4dFRlc3RfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1RleHRUZXN0X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfVGV4dFRlc3RfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1RleHRUZXN0OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9UZXh0VGVzdF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEd0LHYuRk9MTE9XX1RFWFRfaW5fcF9UZXh0VGVzdDEwMTg4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGNpLHYuRk9MTE9XX0xQQVJFTl9pbl9wX1RleHRUZXN0MTAxOTApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaGksdi5GT0xMT1dfUlBBUkVOX2luX3BfVGV4dFRlc3QxMDE5Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBfQ29tbWVudFRlc3RfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0NvbW1lbnRUZXN0X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQ29tbWVudFRlc3RfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0NvbW1lbnRUZXN0OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9Db21tZW50VGVzdF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEIsdi5GT0xMT1dfQ09NTUVOVF9pbl9wX0NvbW1lbnRUZXN0MTAyMTgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2ksdi5GT0xMT1dfTFBBUkVOX2luX3BfQ29tbWVudFRlc3QxMDIyMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxoaSx2LkZPTExPV19SUEFSRU5faW5fcF9Db21tZW50VGVzdDEwMjIyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gZX0scF9OYW1lc3BhY2VOb2RlVGVzdF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfTmFtZXNwYWNlTm9kZVRlc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9OYW1lc3BhY2VOb2RlVGVzdF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfTmFtZXNwYWNlTm9kZVRlc3Q6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX05hbWVzcGFjZU5vZGVUZXN0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsU24sdi5GT0xMT1dfTkFNRVNQQUNFX05PREVfaW5fcF9OYW1lc3BhY2VOb2RlVGVzdDEwMjQ4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGNpLHYuRk9MTE9XX0xQQVJFTl9pbl9wX05hbWVzcGFjZU5vZGVUZXN0MTAyNTApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaGksdi5GT0xMT1dfUlBBUkVOX2luX3BfTmFtZXNwYWNlTm9kZVRlc3QxMDI1Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBfUElUZXN0X3JldHVybjpmdW5jdGlvbigpe3YucF9QSVRlc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9QSVRlc3RfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1BJVGVzdDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfUElUZXN0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxxdCx2LkZPTExPV19QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX2luX3BfUElUZXN0MTAyNzgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2ksdi5GT0xMT1dfTFBBUkVOX2luX3BfUElUZXN0MTAyODApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSk7dmFyIGM9MyxoPXRoaXMuaW5wdXQuTEEoMSk7aD49RSYmaDw9WW58fGg+PWVyJiZoPD1maXx8aD09aXN8fGg9PXhvP2M9MTpoPj1lcyYmaDw9dHMmJihjPTIpO3N3aXRjaChjKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfTkNOYW1lX2luX3BfUElUZXN0MTAyODMpLG89dGhpcy5wX05DTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfUElUZXN0MTAyODcpLHU9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKX1zPXRoaXMubWF0Y2godGhpcy5pbnB1dCxoaSx2LkZPTExPV19SUEFSRU5faW5fcF9QSVRlc3QxMDI5MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChwKXtpZighKHAgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHA7dGhpcy5yZXBvcnRFcnJvcihwKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxwKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfQXR0cmlidXRlVGVzdF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfQXR0cmlidXRlVGVzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0F0dHJpYnV0ZVRlc3RfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0F0dHJpYnV0ZVRlc3Q6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0F0dHJpYnV0ZVRlc3RfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsLGg9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsayx2LkZPTExPV19BVFRSSUJVVEVfaW5fcF9BdHRyaWJ1dGVUZXN0MTAzMTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2ksdi5GT0xMT1dfTFBBUkVOX2luX3BfQXR0cmlidXRlVGVzdDEwMzE5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCkpO3ZhciBwPTIsZD10aGlzLmlucHV0LkxBKDEpO2lmKGQ+PUUmJmQ8PVlufHxkPj1lciYmZDw9Zml8fGQ9PUNpfHxkPT1pc3x8ZD09eG8pcD0xO3N3aXRjaChwKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQXR0cmliTmFtZU9yV2lsZGNhcmRfaW5fcF9BdHRyaWJ1dGVUZXN0MTAzMjIpLHU9dGhpcy5wX0F0dHJpYk5hbWVPcldpbGRjYXJkKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSk7dmFyIG09MixnPXRoaXMuaW5wdXQuTEEoMSk7Zz09VGkmJihtPTEpO3N3aXRjaChtKXtjYXNlIDE6cz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVGksdi5GT0xMT1dfQ09NTUFfaW5fcF9BdHRyaWJ1dGVUZXN0MTAzMjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGM9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxjKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVHlwZU5hbWVfaW5fcF9BdHRyaWJ1dGVUZXN0MTAzMjcpLGE9dGhpcy5wX1R5cGVOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSl9fW89dGhpcy5tYXRjaCh0aGlzLmlucHV0LGhpLHYuRk9MTE9XX1JQQVJFTl9pbl9wX0F0dHJpYnV0ZVRlc3QxMDMzMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaCh5KXtpZighKHkgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHk7dGhpcy5yZXBvcnRFcnJvcih5KSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCx5KSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkseSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfQXR0cmliTmFtZU9yV2lsZGNhcmRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0F0dHJpYk5hbWVPcldpbGRjYXJkX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQXR0cmliTmFtZU9yV2lsZGNhcmRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0F0dHJpYk5hbWVPcldpbGRjYXJkOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9BdHRyaWJOYW1lT3JXaWxkY2FyZF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGw7dHJ5e3ZhciBvPTIsdT10aGlzLmlucHV0LkxBKDEpO2lmKHU+PUUmJnU8PVlufHx1Pj1lciYmdTw9Zml8fHU9PWlzfHx1PT14bylvPTE7ZWxzZXtpZih1IT1DaSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE3MCwwLHRoaXMuaW5wdXQpO3Rocm93IGF9bz0yfXN3aXRjaChvKXtjYXNlIDE6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQXR0cmlidXRlTmFtZV9pbl9wX0F0dHJpYk5hbWVPcldpbGRjYXJkMTAzNjEpLGk9dGhpcy5wX0F0dHJpYnV0ZU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQ2ksdi5GT0xMT1dfU1RBUl9pbl9wX0F0dHJpYk5hbWVPcldpbGRjYXJkMTAzNjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwX1NjaGVtYUF0dHJpYnV0ZVRlc3RfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1NjaGVtYUF0dHJpYnV0ZVRlc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9TY2hlbWFBdHRyaWJ1dGVUZXN0X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9TY2hlbWFBdHRyaWJ1dGVUZXN0OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9TY2hlbWFBdHRyaWJ1dGVUZXN0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFd0LHYuRk9MTE9XX1NDSEVNQV9BVFRSSUJVVEVfaW5fcF9TY2hlbWFBdHRyaWJ1dGVUZXN0MTAzOTEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2ksdi5GT0xMT1dfTFBBUkVOX2luX3BfU2NoZW1hQXR0cmlidXRlVGVzdDEwMzkzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0F0dHJpYnV0ZURlY2xhcmF0aW9uX2luX3BfU2NoZW1hQXR0cmlidXRlVGVzdDEwMzk1KSxvPXRoaXMucF9BdHRyaWJ1dGVEZWNsYXJhdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpLHM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGhpLHYuRk9MTE9XX1JQQVJFTl9pbl9wX1NjaGVtYUF0dHJpYnV0ZVRlc3QxMDM5Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfQXR0cmlidXRlRGVjbGFyYXRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0F0dHJpYnV0ZURlY2xhcmF0aW9uX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQXR0cmlidXRlRGVjbGFyYXRpb25fcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0F0dHJpYnV0ZURlY2xhcmF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9BdHRyaWJ1dGVEZWNsYXJhdGlvbl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9BdHRyaWJ1dGVOYW1lX2luX3BfQXR0cmlidXRlRGVjbGFyYXRpb24xMDQyMyksbj10aGlzLnBfQXR0cmlidXRlTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaTt0aGlzLnJlcG9ydEVycm9yKGkpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGkpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxpKX1maW5hbGx5e31yZXR1cm4gZX0scF9FbGVtZW50VGVzdF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRWxlbWVudFRlc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9FbGVtZW50VGVzdF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRWxlbWVudFRlc3Q6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0VsZW1lbnRUZXN0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsLGM9bnVsbCxoPW51bGwscD1udWxsLGQ9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsJCx2LkZPTExPV19FTEVNRU5UX2luX3BfRWxlbWVudFRlc3QxMDQ0OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjaSx2LkZPTExPV19MUEFSRU5faW5fcF9FbGVtZW50VGVzdDEwNDUxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYykpO3ZhciBtPTIsZz10aGlzLmlucHV0LkxBKDEpO2lmKGc+PUUmJmc8PVlufHxnPj1lciYmZzw9Zml8fGc9PUNpfHxnPT1pc3x8Zz09eG8pbT0xO3N3aXRjaChtKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRWxlbWVudE5hbWVPcldpbGRjYXJkX2luX3BfRWxlbWVudFRlc3QxMDQ1NCksYT10aGlzLnBfRWxlbWVudE5hbWVPcldpbGRjYXJkKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSk7dmFyIHk9MixiPXRoaXMuaW5wdXQuTEEoMSk7Yj09VGkmJih5PTEpO3N3aXRjaCh5KXtjYXNlIDE6cz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVGksdi5GT0xMT1dfQ09NTUFfaW5fcF9FbGVtZW50VGVzdDEwNDU3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaCkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1R5cGVOYW1lX2luX3BfRWxlbWVudFRlc3QxMDQ1OSksZj10aGlzLnBfVHlwZU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYuZ2V0VHJlZSgpKTt2YXIgdz0yLFM9dGhpcy5pbnB1dC5MQSgxKTtTPT1OaSYmKHc9MSk7c3dpdGNoKHcpe2Nhc2UgMTpvPXRoaXMubWF0Y2godGhpcy5pbnB1dCxOaSx2LkZPTExPV19RVUVTVElPTl9pbl9wX0VsZW1lbnRUZXN0MTA0NjEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHA9dGhpcy5hZGFwdG9yLmNyZWF0ZShvKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxwKSl9fX11PXRoaXMubWF0Y2godGhpcy5pbnB1dCxoaSx2LkZPTExPV19SUEFSRU5faW5fcF9FbGVtZW50VGVzdDEwNDY4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihkPXRoaXMuYWRhcHRvci5jcmVhdGUodSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHgpe2lmKCEoeCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgeDt0aGlzLnJlcG9ydEVycm9yKHgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHgpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx4KX1maW5hbGx5e31yZXR1cm4gZX0scF9FbGVtZW50TmFtZU9yV2lsZGNhcmRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0VsZW1lbnROYW1lT3JXaWxkY2FyZF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0VsZW1lbnROYW1lT3JXaWxkY2FyZF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRWxlbWVudE5hbWVPcldpbGRjYXJkOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9FbGVtZW50TmFtZU9yV2lsZGNhcmRfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsO3RyeXt2YXIgbz0yLHU9dGhpcy5pbnB1dC5MQSgxKTtpZih1Pj1FJiZ1PD1Zbnx8dT49ZXImJnU8PWZpfHx1PT1pc3x8dT09eG8pbz0xO2Vsc2V7aWYodSE9Q2kpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGE9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxNzQsMCx0aGlzLmlucHV0KTt0aHJvdyBhfW89Mn1zd2l0Y2gobyl7Y2FzZSAxOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1FOYW1lX2luX3BfRWxlbWVudE5hbWVPcldpbGRjYXJkMTA0OTQpLGk9dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LENpLHYuRk9MTE9XX1NUQVJfaW5fcF9FbGVtZW50TmFtZU9yV2lsZGNhcmQxMDQ5OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBfU2NoZW1hRWxlbWVudFRlc3RfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1NjaGVtYUVsZW1lbnRUZXN0X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfU2NoZW1hRWxlbWVudFRlc3RfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1NjaGVtYUVsZW1lbnRUZXN0OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9TY2hlbWFFbGVtZW50VGVzdF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxYdCx2LkZPTExPV19TQ0hFTUFfRUxFTUVOVF9pbl9wX1NjaGVtYUVsZW1lbnRUZXN0MTA1MTYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2ksdi5GT0xMT1dfTFBBUkVOX2luX3BfU2NoZW1hRWxlbWVudFRlc3QxMDUxOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FbGVtZW50RGVjbGFyYXRpb25faW5fcF9TY2hlbWFFbGVtZW50VGVzdDEwNTIwKSxvPXRoaXMucF9FbGVtZW50RGVjbGFyYXRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxoaSx2LkZPTExPV19SUEFSRU5faW5fcF9TY2hlbWFFbGVtZW50VGVzdDEwNTIyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gZX0scF9FbGVtZW50RGVjbGFyYXRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0VsZW1lbnREZWNsYXJhdGlvbl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0VsZW1lbnREZWNsYXJhdGlvbl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRWxlbWVudERlY2xhcmF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9FbGVtZW50RGVjbGFyYXRpb25fcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRWxlbWVudE5hbWVfaW5fcF9FbGVtZW50RGVjbGFyYXRpb24xMDU0OCksbj10aGlzLnBfRWxlbWVudE5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfQXR0cmlidXRlTmFtZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfQXR0cmlidXRlTmFtZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0F0dHJpYnV0ZU5hbWVfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0F0dHJpYnV0ZU5hbWU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0F0dHJpYnV0ZU5hbWVfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUU5hbWVfaW5fcF9BdHRyaWJ1dGVOYW1lMTA1NzQpLG49dGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBlfSxwX0VsZW1lbnROYW1lX3JldHVybjpmdW5jdGlvbigpe3YucF9FbGVtZW50TmFtZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0VsZW1lbnROYW1lX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9FbGVtZW50TmFtZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRWxlbWVudE5hbWVfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUU5hbWVfaW5fcF9FbGVtZW50TmFtZTEwNjAwKSxuPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaTt0aGlzLnJlcG9ydEVycm9yKGkpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGkpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxpKX1maW5hbGx5e31yZXR1cm4gZX0scF9UeXBlTmFtZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfVHlwZU5hbWVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9UeXBlTmFtZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVHlwZU5hbWU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1R5cGVOYW1lX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1FOYW1lX2luX3BfVHlwZU5hbWUxMDYyNiksbj10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRnVuY3Rpb25UZXN0X3JldHVybjpmdW5jdGlvbigpe3YucF9GdW5jdGlvblRlc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GdW5jdGlvblRlc3RfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0Z1bmN0aW9uVGVzdDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRnVuY3Rpb25UZXN0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCk7ZTpkb3t2YXIgbz0yLHU9dGhpcy5pbnB1dC5MQSgxKTt1PT1FaSYmKG89MSk7c3dpdGNoKG8pe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Bbm5vdGF0aW9uX2luX3BfRnVuY3Rpb25UZXN0MTA2NTIpLG49dGhpcy5wX0Fubm90YXRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTt2YXIgYT0yLGY9dGhpcy5pbnB1dC5MQSgxKTtpZihmIT1zdCl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgaD1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE3NiwwLHRoaXMuaW5wdXQpO3Rocm93IGh9dmFyIGw9dGhpcy5pbnB1dC5MQSgyKTtpZihsIT1jaSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgaD1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE3NiwxLHRoaXMuaW5wdXQpO3Rocm93IGh9dmFyIGM9dGhpcy5pbnB1dC5MQSgzKTtpZihjPT1DaSlhPTE7ZWxzZXtpZighKGM+PUUmJmM8PVlufHxjPj1lciYmYzw9Zml8fGM+PWNpJiZjPD1oaXx8Yz09aXN8fGM9PXhvKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgaD1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE3NiwyLHRoaXMuaW5wdXQpO3Rocm93IGh9YT0yfXN3aXRjaChhKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQW55RnVuY3Rpb25UZXN0X2luX3BfRnVuY3Rpb25UZXN0MTA2NTYpLGk9dGhpcy5wX0FueUZ1bmN0aW9uVGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9UeXBlZEZ1bmN0aW9uVGVzdF9pbl9wX0Z1bmN0aW9uVGVzdDEwNjYwKSxzPXRoaXMucF9UeXBlZEZ1bmN0aW9uVGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHApe2lmKCEocCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgcDt0aGlzLnJlcG9ydEVycm9yKHApLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHApLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxwKX1maW5hbGx5e31yZXR1cm4gZX0scF9BbnlGdW5jdGlvblRlc3RfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0FueUZ1bmN0aW9uVGVzdF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0FueUZ1bmN0aW9uVGVzdF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQW55RnVuY3Rpb25UZXN0OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9BbnlGdW5jdGlvblRlc3RfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHN0LHYuRk9MTE9XX0ZVTkNUSU9OX2luX3BfQW55RnVuY3Rpb25UZXN0MTA2ODcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2ksdi5GT0xMT1dfTFBBUkVOX2luX3BfQW55RnVuY3Rpb25UZXN0MTA2ODkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQ2ksdi5GT0xMT1dfU1RBUl9pbl9wX0FueUZ1bmN0aW9uVGVzdDEwNjkxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLG89dGhpcy5tYXRjaCh0aGlzLmlucHV0LGhpLHYuRk9MTE9XX1JQQVJFTl9pbl9wX0FueUZ1bmN0aW9uVGVzdDEwNjkzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUobyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGMpe2lmKCEoYyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgYzt0aGlzLnJlcG9ydEVycm9yKGMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGMpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxjKX1maW5hbGx5e31yZXR1cm4gZX0scF9UeXBlZEZ1bmN0aW9uVGVzdF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfVHlwZWRGdW5jdGlvblRlc3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9UeXBlZEZ1bmN0aW9uVGVzdF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVHlwZWRGdW5jdGlvblRlc3Q6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1R5cGVkRnVuY3Rpb25UZXN0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsLGM9bnVsbCxoPW51bGwscD1udWxsLGQ9bnVsbCxtPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHN0LHYuRk9MTE9XX0ZVTkNUSU9OX2luX3BfVHlwZWRGdW5jdGlvblRlc3QxMDcxOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGMpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjaSx2LkZPTExPV19MUEFSRU5faW5fcF9UeXBlZEZ1bmN0aW9uVGVzdDEwNzIxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaCkpO3ZhciBnPTIseT10aGlzLmlucHV0LkxBKDEpO2lmKHk+PUUmJnk8PVlufHx5Pj1lciYmeTw9Zml8fHk9PWNpfHx5PT1pc3x8eT09eG8pZz0xO3N3aXRjaChnKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfVHlwZWRGdW5jdGlvblRlc3QxMDcyNCksYT10aGlzLnBfU2VxdWVuY2VUeXBlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSk7ZTpkb3t2YXIgYj0yLHc9dGhpcy5pbnB1dC5MQSgxKTt3PT1UaSYmKGI9MSk7c3dpdGNoKGIpe2Nhc2UgMTpzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxUaSx2LkZPTExPV19DT01NQV9pbl9wX1R5cGVkRnVuY3Rpb25UZXN0MTA3MjcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHA9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxwKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfVHlwZWRGdW5jdGlvblRlc3QxMDcyOSksZj10aGlzLnBfU2VxdWVuY2VUeXBlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCl9bz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaGksdi5GT0xMT1dfUlBBUkVOX2luX3BfVHlwZWRGdW5jdGlvblRlc3QxMDczNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZD10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGQpKSx1PXRoaXMubWF0Y2godGhpcy5pbnB1dCxULHYuRk9MTE9XX0FTX2luX3BfVHlwZWRGdW5jdGlvblRlc3QxMDczNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobT10aGlzLmFkYXB0b3IuY3JlYXRlKHUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG0pKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TZXF1ZW5jZVR5cGVfaW5fcF9UeXBlZEZ1bmN0aW9uVGVzdDEwNzM5KSxsPXRoaXMucF9TZXF1ZW5jZVR5cGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwuZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChTKXtpZighKFMgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IFM7dGhpcy5yZXBvcnRFcnJvcihTKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxTKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksUyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfUGFyZW50aGVzaXplZEl0ZW1UeXBlX3JldHVybjpmdW5jdGlvbigpe3YucF9QYXJlbnRoZXNpemVkSXRlbVR5cGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9QYXJlbnRoZXNpemVkSXRlbVR5cGVfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1BhcmVudGhlc2l6ZWRJdGVtVHlwZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfUGFyZW50aGVzaXplZEl0ZW1UeXBlX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjaSx2LkZPTExPV19MUEFSRU5faW5fcF9QYXJlbnRoZXNpemVkSXRlbVR5cGUxMDc2NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9JdGVtVHlwZV9pbl9wX1BhcmVudGhlc2l6ZWRJdGVtVHlwZTEwNzY3KSxzPXRoaXMucF9JdGVtVHlwZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGhpLHYuRk9MTE9XX1JQQVJFTl9pbl9wX1BhcmVudGhlc2l6ZWRJdGVtVHlwZTEwNzY5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdSkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGEpe2lmKCEoYSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgYTt0aGlzLnJlcG9ydEVycm9yKGEpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGEpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxhKX1maW5hbGx5e31yZXR1cm4gZX0scF9TdHJpbmdMaXRlcmFsX3JldHVybjpmdW5jdGlvbigpe3YucF9TdHJpbmdMaXRlcmFsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfU3RyaW5nTGl0ZXJhbF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfU3RyaW5nTGl0ZXJhbDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfU3RyaW5nTGl0ZXJhbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGwsaD1udWxsLHA9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBBUE9TIiksZD1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVUb2tlblN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIFFVT1QiKSxtPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBnX1F1b3RTdHJpbmdMaXRlcmFsQ29udGVudCIpLGc9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInJ1bGUgcGdfQXBvc1N0cmluZ0xpdGVyYWxDb250ZW50Iik7dHJ5e3ZhciB5PTIsYj10aGlzLmlucHV0LkxBKDEpO2lmKGI9PXRzKXk9MTtlbHNle2lmKGIhPWVzKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciB3PW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTc5LDAsdGhpcy5pbnB1dCk7dGhyb3cgd315PTJ9c3dpdGNoKHkpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCx0cyx2LkZPTExPV19RVU9UX2luX3BfU3RyaW5nTGl0ZXJhbDEwODIwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmQuYWRkKG4pLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5wdXNoU3RyaW5nTGV4ZXIoITEpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wZ19RdW90U3RyaW5nTGl0ZXJhbENvbnRlbnRfaW5fcF9TdHJpbmdMaXRlcmFsMTA4MjQpLHU9dGhpcy5wZ19RdW90U3RyaW5nTGl0ZXJhbENvbnRlbnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJm0uYWRkKHUuZ2V0VHJlZSgpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCx0cyx2LkZPTExPV19RVU9UX2luX3BfU3RyaW5nTGl0ZXJhbDEwODI2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmQuYWRkKGkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5wb3BMZXhlcigpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIEU9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsZSE9bnVsbD9lLnRyZWU6bnVsbCk7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIFM9dGhpcy5hZGFwdG9yLm5pbCgpO1M9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShnbywiU3RyaW5nTGl0ZXJhbCIpLFMpO3doaWxlKG0uaGFzTmV4dCgpKXRoaXMuYWRhcHRvci5hZGRDaGlsZChTLG0ubmV4dFRyZWUoKSk7bS5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LFMpLGUudHJlZT10fWJyZWFrO2Nhc2UgMjpzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxlcyx2LkZPTExPV19BUE9TX2luX3BfU3RyaW5nTGl0ZXJhbDEwODY1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnAuYWRkKHMpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5wdXNoU3RyaW5nTGV4ZXIoITApLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wZ19BcG9zU3RyaW5nTGl0ZXJhbENvbnRlbnRfaW5fcF9TdHJpbmdMaXRlcmFsMTA4NjkpLGE9dGhpcy5wZ19BcG9zU3RyaW5nTGl0ZXJhbENvbnRlbnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmcuYWRkKGEuZ2V0VHJlZSgpKSxvPXRoaXMubWF0Y2godGhpcy5pbnB1dCxlcyx2LkZPTExPV19BUE9TX2luX3BfU3RyaW5nTGl0ZXJhbDEwODcxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnAuYWRkKG8pLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5wb3BMZXhlcigpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIEU9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsZSE9bnVsbD9lLnRyZWU6bnVsbCk7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIFM9dGhpcy5hZGFwdG9yLm5pbCgpO1M9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShnbywiU3RyaW5nTGl0ZXJhbCIpLFMpO3doaWxlKGcuaGFzTmV4dCgpKXRoaXMuYWRhcHRvci5hZGRDaGlsZChTLGcubmV4dFRyZWUoKSk7Zy5yZXNldCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LFMpLGUudHJlZT10fX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaCh4KXtpZighKHggaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHg7dGhpcy5yZXBvcnRFcnJvcih4KSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCx4KSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkseCl9ZmluYWxseXt0aGlzLmFkZFN0cmluZyhlLnN0YXJ0LGUuc3RvcCl9cmV0dXJuIGV9LHBnX1F1b3RTdHJpbmdMaXRlcmFsQ29udGVudF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBnX1F1b3RTdHJpbmdMaXRlcmFsQ29udGVudF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wZ19RdW90U3RyaW5nTGl0ZXJhbENvbnRlbnRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwZ19RdW90U3RyaW5nTGl0ZXJhbENvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wZ19RdW90U3RyaW5nTGl0ZXJhbENvbnRlbnRfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgbj1udWxsLGk9bnVsbCxzPW51bGw7dHJ5e249dGhpcy5hZGFwdG9yLm5pbCgpO2U6ZG97dmFyIG89Mix1PXRoaXMuaW5wdXQuTEEoMSk7aWYodT49dCYmdTw9U2l8fHU+PVRpJiZ1PD1lc3x8dT49bnMmJnU8PXhvKW89MTtzd2l0Y2gobyl7Y2FzZSAxOmk9dGhpcy5pbnB1dC5MVCgxKTtpZighKHRoaXMuaW5wdXQuTEEoMSk+PXQmJnRoaXMuaW5wdXQuTEEoMSk8PVNpfHx0aGlzLmlucHV0LkxBKDEpPj1UaSYmdGhpcy5pbnB1dC5MQSgxKTw9ZXN8fHRoaXMuaW5wdXQuTEEoMSk+PW5zJiZ0aGlzLmlucHV0LkxBKDEpPD14bykpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGE9bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgYX10aGlzLmlucHV0LmNvbnN1bWUoKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChuLHRoaXMuYWRhcHRvci5jcmVhdGUoaSkpLHRoaXMuc3RhdGUuZXJyb3JSZWNvdmVyeT0hMSx0aGlzLnN0YXRlLmZhaWxlZD0hMTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTtlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcobiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBnX0Fwb3NTdHJpbmdMaXRlcmFsQ29udGVudF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBnX0Fwb3NTdHJpbmdMaXRlcmFsQ29udGVudF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wZ19BcG9zU3RyaW5nTGl0ZXJhbENvbnRlbnRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwZ19BcG9zU3RyaW5nTGl0ZXJhbENvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wZ19BcG9zU3RyaW5nTGl0ZXJhbENvbnRlbnRfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgbj1udWxsLGk9bnVsbCxzPW51bGw7dHJ5e249dGhpcy5hZGFwdG9yLm5pbCgpO2U6ZG97dmFyIG89Mix1PXRoaXMuaW5wdXQuTEEoMSk7aWYodT49dCYmdTw9U2l8fHU+PVRpJiZ1PD1aaXx8dT49dHMmJnU8PXhvKW89MTtzd2l0Y2gobyl7Y2FzZSAxOmk9dGhpcy5pbnB1dC5MVCgxKTtpZighKHRoaXMuaW5wdXQuTEEoMSk+PXQmJnRoaXMuaW5wdXQuTEEoMSk8PVNpfHx0aGlzLmlucHV0LkxBKDEpPj1UaSYmdGhpcy5pbnB1dC5MQSgxKTw9Wml8fHRoaXMuaW5wdXQuTEEoMSk+PXRzJiZ0aGlzLmlucHV0LkxBKDEpPD14bykpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGE9bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgYX10aGlzLmlucHV0LmNvbnN1bWUoKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChuLHRoaXMuYWRhcHRvci5jcmVhdGUoaSkpLHRoaXMuc3RhdGUuZXJyb3JSZWNvdmVyeT0hMSx0aGlzLnN0YXRlLmZhaWxlZD0hMTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTtlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcobiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBfRWxlbWVudENvbnRlbnRDaGFyX3JldHVybjpmdW5jdGlvbigpe3YucF9FbGVtZW50Q29udGVudENoYXJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9FbGVtZW50Q29udGVudENoYXJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0VsZW1lbnRDb250ZW50Q2hhcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRWxlbWVudENvbnRlbnRDaGFyX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwscz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxpLHYuRk9MTE9XX0xfRWxlbWVudENvbnRlbnRDaGFyX2luX3BfRWxlbWVudENvbnRlbnRDaGFyMTEwNDYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobyl7aWYoIShvIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBvO3RoaXMucmVwb3J0RXJyb3IobyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG8pfWZpbmFsbHl7fXJldHVybiBlfSxwX1F1b3RBdHRyQ29udGVudENoYXJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1F1b3RBdHRyQ29udGVudENoYXJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9RdW90QXR0ckNvbnRlbnRDaGFyX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9RdW90QXR0ckNvbnRlbnRDaGFyOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9RdW90QXR0ckNvbnRlbnRDaGFyX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIG49bnVsbCxpPW51bGwscz1udWxsLG89bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlVG9rZW5TdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBMX1F1b3RBdHRyQ29udGVudENoYXIiKTt0cnl7aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdCx2LkZPTExPV19MX1F1b3RBdHRyQ29udGVudENoYXJfaW5fcF9RdW90QXR0ckNvbnRlbnRDaGFyMTEwNzIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmby5hZGQoaSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXtlLnRyZWU9bjt2YXIgdT1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixlIT1udWxsP2UudHJlZTpudWxsKTtuPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgYT10aGlzLmFkYXB0b3IubmlsKCk7YT10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKGJvLCJBdHRyaWJ1dGVWYWx1ZUNoYXIiKSxhKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoYSxvLm5leHROb2RlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGEpLGUudHJlZT1ufWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhuKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gZX0scF9BcG9zQXR0ckNvbnRlbnRDaGFyX3JldHVybjpmdW5jdGlvbigpe3YucF9BcG9zQXR0ckNvbnRlbnRDaGFyX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQXBvc0F0dHJDb250ZW50Q2hhcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQXBvc0F0dHJDb250ZW50Q2hhcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQXBvc0F0dHJDb250ZW50Q2hhcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsaT1udWxsLHM9bnVsbCxvPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gTF9BcG9zQXR0ckNvbnRlbnRDaGFyIik7dHJ5e2k9dGhpcy5tYXRjaCh0aGlzLmlucHV0LG4sdi5GT0xMT1dfTF9BcG9zQXR0ckNvbnRlbnRDaGFyX2luX3BfQXBvc0F0dHJDb250ZW50Q2hhcjExMTIyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJm8uYWRkKGkpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCl7ZS50cmVlPXQ7dmFyIHU9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIHJldHZhbCIsZSE9bnVsbD9lLnRyZWU6bnVsbCk7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGE9dGhpcy5hZGFwdG9yLm5pbCgpO2E9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZShibywiQXR0cmlidXRlVmFsdWVDaGFyIiksYSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGEsby5uZXh0Tm9kZSgpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSxlLnRyZWU9dH1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBfUU5hbWVfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1FOYW1lX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfUU5hbWVfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1FOYW1lOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHYucF9RTmFtZV9yZXR1cm47dC5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBuPW51bGwsaT1udWxsLHM9bnVsbCxvPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfTkNOYW1lIik7dGhpcy5zZXRXc0V4cGxpY2l0KCEwKTt0cnl7dmFyIHU9MixhPXRoaXMuaW5wdXQuTEEoMSk7aWYoIShhPj1FJiZhPD1Zbnx8YT49ZXImJmE8PWZpfHxhPT1pc3x8YT09eG8pKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCx0O3ZhciBsPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTgyLDAsdGhpcy5pbnB1dCk7dGhyb3cgbH12YXIgZj10aGlzLmlucHV0LkxBKDIpO2lmKGY9PUlpKXU9MTtlbHNle2lmKCEoZj09ZXx8Zj49eCYmZjw9Q3x8Zj49TyYmZjw9RHx8Zj09SHx8Zj09cXx8Zj49eiYmZjw9V3x8Zj09S3x8Zj09WXx8Zj49ZXQmJmY8PXR0fHxmPj1pdCYmZjw9b3R8fGY+PWF0JiZmPD1mdHx8Zj09aHR8fGY+PWR0JiZmPD1tdHx8Zj09YnR8fGY+PUV0JiZmPD14dHx8Zj09Q3R8fGY9PUF0fHxmPj1fdCYmZjw9RHR8fGY+PVJ0JiZmPD1VdHx8Zj09SnR8fGY+PVp0JiZmPD1lbnx8Zj09bm58fGY9PW9ufHxmPT1hbnx8Zj09bG58fGY9PXBufHxmPj12biYmZjw9RW58fGY+PXhuJiZmPD1Bbnx8Zj09TW58fGY9PUJufHxmPj1GbiYmZjw9cW58fGY9PVhufHxmPT0kbnx8Zj09Wm58fGY9PXRyfHxmPT1pcnx8Zj09TnJ8fGY9PUFyfHxmPT1fcnx8Zj09QnJ8fGY9PXpyfHxmPj1RciYmZjw9R3J8fGY+PVpyJiZmPD1paXx8Zj49bGkmJmY8PUVpfHxmPj1UaSYmZjw9Qml8fGY9PVJpfHxmPj16aSYmZjw9V2l8fGY+PWVzJiZmPD10c3x8Zj09ZnMpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCx0O3ZhciBsPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTgyLDEsdGhpcy5pbnB1dCk7dGhyb3cgbH11PTJ9c3dpdGNoKHUpe2Nhc2UgMTpuPXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcGdfUU5hbWVfaW5fcF9RTmFtZTExMjA4KSxpPXRoaXMucGdfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGkuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfTkNOYW1lX2luX3BfUU5hbWUxMTIyMCkscz10aGlzLnBfTkNOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZvLmFkZChzLmdldFRyZWUoKSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXt0LnRyZWU9bjt2YXIgYz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIix0IT1udWxsP3QudHJlZTpudWxsKTtuPXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgaD10aGlzLmFkYXB0b3IubmlsKCk7aD10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKHdvLCJRTmFtZSIpLGgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChoLG8ubmV4dFRyZWUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4saCksdC50cmVlPW59fXQuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih0LnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhuKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKHQudHJlZSx0LnN0YXJ0LHQuc3RvcCkpfWNhdGNoKHApe2lmKCEocCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgcDt0aGlzLnJlcG9ydEVycm9yKHApLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHApLHQudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsdC5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxwKX1maW5hbGx5e3RoaXMuc2V0V3NFeHBsaWNpdCghMSl9cmV0dXJuIHR9LHBnX0ZRTmFtZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBnX0ZRTmFtZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wZ19GUU5hbWVfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwZ19GUU5hbWU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wZ19GUU5hbWVfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwicnVsZSBwX0ZOQ05hbWUiKTt0cnl7dmFyIG89Mjtzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBFOmNhc2UgUzpjYXNlIHg6Y2FzZSBUOmNhc2UgTjpjYXNlIEM6Y2FzZSBMOmNhc2UgQTpjYXNlIE86Y2FzZSBNOmNhc2UgXzpjYXNlIEQ6Y2FzZSBQOmNhc2UgSDpjYXNlIGo6Y2FzZSBGOmNhc2UgSTpjYXNlIHE6Y2FzZSBSOmNhc2UgVTpjYXNlIHo6Y2FzZSBXOmNhc2UgWDpjYXNlIEo6Y2FzZSBLOmNhc2UgRzpjYXNlIFk6Y2FzZSBaOmNhc2UgZXQ6Y2FzZSB0dDpjYXNlIG50OmNhc2UgcnQ6Y2FzZSBpdDpjYXNlIHN0OmNhc2Ugb3Q6Y2FzZSB1dDpjYXNlIGF0OmNhc2UgZnQ6Y2FzZSBjdDpjYXNlIGh0OmNhc2UgcHQ6Y2FzZSBkdDpjYXNlIHZ0OmNhc2UgbXQ6Y2FzZSB5dDpjYXNlIGJ0OmNhc2Ugd3Q6Y2FzZSBFdDpjYXNlIFN0OmNhc2UgeHQ6Y2FzZSBUdDpjYXNlIE50OmNhc2UgQ3Q6Y2FzZSBrdDpjYXNlIEx0OmNhc2UgT3Q6Y2FzZSBNdDpjYXNlIF90OmNhc2UgRHQ6Y2FzZSBQdDpjYXNlIEh0OmNhc2UgQnQ6Y2FzZSBqdDpjYXNlIEZ0OmNhc2UgSXQ6Y2FzZSBSdDpjYXNlIFV0OmNhc2UgenQ6Y2FzZSBWdDpjYXNlICR0OmNhc2UgSnQ6Y2FzZSBLdDpjYXNlIFF0OmNhc2UgWXQ6Y2FzZSBadDpjYXNlIGVuOmNhc2Ugbm46Y2FzZSBybjpjYXNlIHNuOmNhc2Ugb246Y2FzZSB1bjpjYXNlIGFuOmNhc2UgZm46Y2FzZSBsbjpjYXNlIGNuOmNhc2UgaG46Y2FzZSBwbjpjYXNlIGRuOmNhc2Ugdm46Y2FzZSBtbjpjYXNlIGduOmNhc2UgeW46Y2FzZSBibjpjYXNlIHduOmNhc2UgRW46Y2FzZSB4bjpjYXNlIFRuOmNhc2UgTm46Y2FzZSBDbjpjYXNlIGtuOmNhc2UgTG46Y2FzZSBBbjpjYXNlIE9uOmNhc2UgTW46Y2FzZSBEbjpjYXNlIFBuOmNhc2UgSG46Y2FzZSBCbjpjYXNlIGpuOmNhc2UgRm46Y2FzZSBJbjpjYXNlIHFuOmNhc2UgUm46Y2FzZSBVbjpjYXNlIHpuOmNhc2UgV246Y2FzZSBYbjpjYXNlIFZuOmNhc2UgJG46Y2FzZSBKbjpjYXNlIEtuOmNhc2UgUW46Y2FzZSBHbjpjYXNlIFluOmNhc2UgZXI6Y2FzZSB0cjpjYXNlIG5yOmNhc2UgcnI6Y2FzZSBpcjpjYXNlIHNyOmNhc2Ugb3I6Y2FzZSB1cjpjYXNlIGFyOmNhc2UgZnI6Y2FzZSBscjpjYXNlIGNyOmNhc2UgaHI6Y2FzZSBwcjpjYXNlIGRyOmNhc2UgdnI6Y2FzZSBtcjpjYXNlIGdyOmNhc2UgeXI6Y2FzZSBicjpjYXNlIHdyOmNhc2UgRXI6Y2FzZSBTcjpjYXNlIHhyOmNhc2UgVHI6Y2FzZSBOcjpjYXNlIENyOmNhc2Uga3I6Y2FzZSBMcjpjYXNlIEFyOmNhc2UgT3I6Y2FzZSBNcjpjYXNlIF9yOmNhc2UgRHI6Y2FzZSBQcjpjYXNlIEhyOmNhc2UgQnI6Y2FzZSBqcjpjYXNlIEZyOmNhc2UgSXI6Y2FzZSBxcjpjYXNlIFJyOmNhc2UgVXI6Y2FzZSB6cjpjYXNlIFdyOmNhc2UgWHI6Y2FzZSBWcjpjYXNlICRyOmNhc2UgSnI6Y2FzZSBRcjpjYXNlIEdyOmNhc2UgWXI6Y2FzZSBacjpjYXNlIGVpOmNhc2UgdGk6Y2FzZSBuaTpjYXNlIHJpOmNhc2UgaWk6Y2FzZSBzaTpjYXNlIG9pOmNhc2UgdWk6Y2FzZSBhaTpjYXNlIGZpOmNhc2UgaXM6Y2FzZSB4bzp2YXIgdT10aGlzLmlucHV0LkxBKDIpO2lmKHU9PUlpKW89MTtlbHNle2lmKHUhPWNpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBhPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTgzLDEsdGhpcy5pbnB1dCk7dGhyb3cgYX1vPTJ9YnJlYWs7Y2FzZSBrOmNhc2UgQjpjYXNlIFY6Y2FzZSAkOmNhc2UgUTpjYXNlIGx0OmNhc2UgZ3Q6Y2FzZSBBdDpjYXNlIHF0OmNhc2UgV3Q6Y2FzZSBYdDpjYXNlIEd0OmNhc2UgdG46Y2FzZSBTbjpjYXNlIF9uOmNhc2UgS3I6bz0xO2JyZWFrO2Nhc2UgWm46bz0yO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE4MywwLHRoaXMuaW5wdXQpO3Rocm93IGF9c3dpdGNoKG8pe2Nhc2UgMTp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcGdfUU5hbWVfaW5fcGdfRlFOYW1lMTEyODEpLG49dGhpcy5wZ19RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GTkNOYW1lX2luX3BnX0ZRTmFtZTExMjkzKSxpPXRoaXMucF9GTkNOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZzLmFkZChpLmdldFRyZWUoKSk7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wKXtlLnRyZWU9dDt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLnRyZWUuUmV3cml0ZVJ1bGVTdWJ0cmVlU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gcmV0dmFsIixlIT1udWxsP2UudHJlZTpudWxsKTt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgbD10aGlzLmFkYXB0b3IubmlsKCk7bD10aGlzLmFkYXB0b3IuYmVjb21lUm9vdCh0aGlzLmFkYXB0b3IuY3JlYXRlKHdvLCJRTmFtZSIpLGwpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChsLHMubmV4dFRyZWUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCksZS50cmVlPXR9fWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGMpe2lmKCEoYyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgYzt0aGlzLnJlcG9ydEVycm9yKGMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGMpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxjKX1maW5hbGx5e31yZXR1cm4gZX0scGdfUU5hbWVfcmV0dXJuOmZ1bmN0aW9uKCl7di5wZ19RTmFtZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wZ19RTmFtZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBnX1FOYW1lOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucGdfUU5hbWVfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVRva2VuU3RyZWFtKHRoaXMuYWRhcHRvciwidG9rZW4gQ09MT04iKSxhPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJydWxlIHBfTkNOYW1lIik7dHJ5e3RoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX05DTmFtZV9pbl9wZ19RTmFtZTExMzM3KSxpPXRoaXMucF9OQ05hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmEuYWRkKGkuZ2V0VHJlZSgpKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxJaSx2LkZPTExPV19DT0xPTl9pbl9wZ19RTmFtZTExMzM5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnUuYWRkKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX05DTmFtZV9pbl9wZ19RTmFtZTExMzQzKSxzPXRoaXMucF9OQ05hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJmEuYWRkKHMuZ2V0VHJlZSgpKTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTApe2UudHJlZT10O3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiByZXR2YWwiLGUhPW51bGw/ZS50cmVlOm51bGwpLGw9bmV3IHIuYW50bHIucnVudGltZS50cmVlLlJld3JpdGVSdWxlU3VidHJlZVN0cmVhbSh0aGlzLmFkYXB0b3IsInRva2VuIG5uIixpIT1udWxsP2kudHJlZTpudWxsKSxjPW5ldyByLmFudGxyLnJ1bnRpbWUudHJlZS5SZXdyaXRlUnVsZVN1YnRyZWVTdHJlYW0odGhpcy5hZGFwdG9yLCJ0b2tlbiBubCIscyE9bnVsbD9zLnRyZWU6bnVsbCk7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGg9dGhpcy5hZGFwdG9yLm5pbCgpO2g9dGhpcy5hZGFwdG9yLmJlY29tZVJvb3QodGhpcy5hZGFwdG9yLmNyZWF0ZSh3bywiUU5hbWUiKSxoKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoaCxsLm5leHRUcmVlKCkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChoLGMubmV4dFRyZWUoKSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaCksZS50cmVlPXR9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gocCl7aWYoIShwIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBwO3RoaXMucmVwb3J0RXJyb3IocCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQscCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHApfWZpbmFsbHl7fXJldHVybiBlfSxwX05DTmFtZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfTkNOYW1lX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfTkNOYW1lX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9OQ05hbWU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX05DTmFtZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLmlucHV0LkxUKDEpO2lmKCEodGhpcy5pbnB1dC5MQSgxKT49RSYmdGhpcy5pbnB1dC5MQSgxKTw9WW58fHRoaXMuaW5wdXQuTEEoMSk+PWVyJiZ0aGlzLmlucHV0LkxBKDEpPD1maXx8dGhpcy5pbnB1dC5MQSgxKT09aXN8fHRoaXMuaW5wdXQuTEEoMSk9PXhvKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgcz1uZXcgci5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyBzfXRoaXMuaW5wdXQuY29uc3VtZSgpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdGhpcy5hZGFwdG9yLmNyZWF0ZShuKSksdGhpcy5zdGF0ZS5lcnJvclJlY292ZXJ5PSExLHRoaXMuc3RhdGUuZmFpbGVkPSExLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKG8pe2lmKCEobyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbzt0aGlzLnJlcG9ydEVycm9yKG8pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG8pLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxvKX1maW5hbGx5e31yZXR1cm4gZX0scF9GTkNOYW1lX3JldHVybjpmdW5jdGlvbigpe3YucF9GTkNOYW1lX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRk5DTmFtZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRk5DTmFtZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRk5DTmFtZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLmlucHV0LkxUKDEpO2lmKCEodGhpcy5pbnB1dC5MQSgxKT49RSYmdGhpcy5pbnB1dC5MQSgxKTw9Q3x8dGhpcy5pbnB1dC5MQSgxKT49TCYmdGhpcy5pbnB1dC5MQSgxKTw9SHx8dGhpcy5pbnB1dC5MQSgxKT49aiYmdGhpcy5pbnB1dC5MQSgxKTw9WHx8dGhpcy5pbnB1dC5MQSgxKT49SiYmdGhpcy5pbnB1dC5MQSgxKTw9S3x8dGhpcy5pbnB1dC5MQSgxKT49RyYmdGhpcy5pbnB1dC5MQSgxKTw9ZnR8fHRoaXMuaW5wdXQuTEEoMSk+PWN0JiZ0aGlzLmlucHV0LkxBKDEpPD1tdHx8dGhpcy5pbnB1dC5MQSgxKT49eXQmJnRoaXMuaW5wdXQuTEEoMSk8PUx0fHx0aGlzLmlucHV0LkxBKDEpPj1PdCYmdGhpcy5pbnB1dC5MQSgxKTw9SXR8fHRoaXMuaW5wdXQuTEEoMSk+PVJ0JiZ0aGlzLmlucHV0LkxBKDEpPD16dHx8dGhpcy5pbnB1dC5MQSgxKT49VnQmJnRoaXMuaW5wdXQuTEEoMSk8PVF0fHx0aGlzLmlucHV0LkxBKDEpPj1ZdCYmdGhpcy5pbnB1dC5MQSgxKTw9ZW58fHRoaXMuaW5wdXQuTEEoMSk+PW5uJiZ0aGlzLmlucHV0LkxBKDEpPD1Fbnx8dGhpcy5pbnB1dC5MQSgxKT49eG4mJnRoaXMuaW5wdXQuTEEoMSk8PU1ufHx0aGlzLmlucHV0LkxBKDEpPj1EbiYmdGhpcy5pbnB1dC5MQSgxKTw9SnJ8fHRoaXMuaW5wdXQuTEEoMSk+PVFyJiZ0aGlzLmlucHV0LkxBKDEpPD1maXx8dGhpcy5pbnB1dC5MQSgxKT09aXN8fHRoaXMuaW5wdXQuTEEoMSk9PXhvKSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgcz1uZXcgci5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyBzfXRoaXMuaW5wdXQuY29uc3VtZSgpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdGhpcy5hZGFwdG9yLmNyZWF0ZShuKSksdGhpcy5zdGF0ZS5lcnJvclJlY292ZXJ5PSExLHRoaXMuc3RhdGUuZmFpbGVkPSExLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKG8pe2lmKCEobyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbzt0aGlzLnJlcG9ydEVycm9yKG8pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG8pLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxvKX1maW5hbGx5e31yZXR1cm4gZX0scGdfVXBkYXRlRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBnX1VwZGF0ZUV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucGdfVXBkYXRlRXhwcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBnX1VwZGF0ZUV4cHI6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wZ19VcGRhdGVFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsO3RyeXt2YXIgYT01O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIFduOmE9MTticmVhaztjYXNlIFVuOmE9MjticmVhaztjYXNlIEtuOmE9MzticmVhaztjYXNlIFFuOmE9NDticmVhaztjYXNlIFJuOmE9NTticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGY9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxODQsMCx0aGlzLmlucHV0KTt0aHJvdyBmfXN3aXRjaChhKXtjYXNlIDE6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfSW5zZXJ0RXhwcl9pbl9wZ19VcGRhdGVFeHByMTMzMzQpLG49dGhpcy5wX0luc2VydEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRGVsZXRlRXhwcl9pbl9wZ19VcGRhdGVFeHByMTMzNDYpLGk9dGhpcy5wX0RlbGV0ZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUmVuYW1lRXhwcl9pbl9wZ19VcGRhdGVFeHByMTMzNTgpLHM9dGhpcy5wX1JlbmFtZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKTticmVhaztjYXNlIDQ6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUmVwbGFjZUV4cHJfaW5fcGdfVXBkYXRlRXhwcjEzMzcwKSxvPXRoaXMucF9SZXBsYWNlRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNTp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9UcmFuc2Zvcm1FeHByX2luX3BnX1VwZGF0ZUV4cHIxMzM4MiksdT10aGlzLnBfVHJhbnNmb3JtRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdS5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gZX0scG1fUmV2YWxpZGF0aW9uRGVjbF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBtX1JldmFsaWRhdGlvbkRlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucG1fUmV2YWxpZGF0aW9uRGVjbF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX1JldmFsaWRhdGlvbkRlY2w6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wbV9SZXZhbGlkYXRpb25EZWNsX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxJLHYuRk9MTE9XX0RFQ0xBUkVfaW5fcG1fUmV2YWxpZGF0aW9uRGVjbDEzNDEwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdSkpLHIuYW50bHIubGFuZy5pc051bGwocykmJihzPVtdKSxzLnB1c2goaSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsR24sdi5GT0xMT1dfUkVWQUxJREFUSU9OX2luX3BtX1JldmFsaWRhdGlvbkRlY2wxMzQxNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSxyLmFudGxyLmxhbmcuaXNOdWxsKHMpJiYocz1bXSkscy5wdXNoKGkpO3ZhciBhPTM7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgS3Q6YT0xO2JyZWFrO2Nhc2UgeXQ6YT0yO2JyZWFrO2Nhc2UgWW46YT0zO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE4NSwwLHRoaXMuaW5wdXQpO3Rocm93IGZ9c3dpdGNoKGEpe2Nhc2UgMTppPXRoaXMubWF0Y2godGhpcy5pbnB1dCxLdCx2LkZPTExPV19TVFJJQ1RfaW5fcG1fUmV2YWxpZGF0aW9uRGVjbDEzNDE5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdSkpLHIuYW50bHIubGFuZy5pc051bGwocykmJihzPVtdKSxzLnB1c2goaSk7YnJlYWs7Y2FzZSAyOmk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHl0LHYuRk9MTE9XX0xBWF9pbl9wbV9SZXZhbGlkYXRpb25EZWNsMTM0MjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksci5hbnRsci5sYW5nLmlzTnVsbChzKSYmKHM9W10pLHMucHVzaChpKTticmVhaztjYXNlIDM6aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsWW4sdi5GT0xMT1dfU0tJUF9pbl9wbV9SZXZhbGlkYXRpb25EZWNsMTM0MzEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksci5hbnRsci5sYW5nLmlzTnVsbChzKSYmKHM9W10pLHMucHVzaChpKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsocyksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsemksdi5GT0xMT1dfU0VNSUNPTE9OX2luX3BtX1JldmFsaWRhdGlvbkRlY2wxMzQzNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfSW5zZXJ0RXhwclRhcmdldENob2ljZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfSW5zZXJ0RXhwclRhcmdldENob2ljZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0luc2VydEV4cHJUYXJnZXRDaG9pY2VfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0luc2VydEV4cHJUYXJnZXRDaG9pY2U6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0luc2VydEV4cHJUYXJnZXRDaG9pY2VfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbDt0cnl7dmFyIGw9Mztzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBUOmNhc2UgWG46bD0xO2JyZWFrO2Nhc2UgSW46bD0yO2JyZWFrO2Nhc2UgcW46bD0zO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYz1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE4OCwwLHRoaXMuaW5wdXQpO3Rocm93IGN9c3dpdGNoKGwpe2Nhc2UgMTp0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgaD0yLHA9dGhpcy5pbnB1dC5MQSgxKTtwPT1UJiYoaD0xKTtzd2l0Y2goaCl7Y2FzZSAxOnM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFQsdi5GT0xMT1dfQVNfaW5fcF9JbnNlcnRFeHByVGFyZ2V0Q2hvaWNlMTM0NjYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksci5hbnRsci5sYW5nLmlzTnVsbChvKSYmKG89W10pLG8ucHVzaChzKTt2YXIgZD0yLG09dGhpcy5pbnB1dC5MQSgxKTtpZihtPT16bilkPTE7ZWxzZXtpZihtIT1Wbil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYz1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDE4NiwwLHRoaXMuaW5wdXQpO3Rocm93IGN9ZD0yfXN3aXRjaChkKXtjYXNlIDE6cz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsem4sdi5GT0xMT1dfRklSU1RfaW5fcF9JbnNlcnRFeHByVGFyZ2V0Q2hvaWNlMTM0NzEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksci5hbnRsci5sYW5nLmlzTnVsbChvKSYmKG89W10pLG8ucHVzaChzKTticmVhaztjYXNlIDI6cz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVm4sdi5GT0xMT1dfTEFTVF9pbl9wX0luc2VydEV4cHJUYXJnZXRDaG9pY2UxMzQ3Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYpKSxyLmFudGxyLmxhbmcuaXNOdWxsKG8pJiYobz1bXSksby5wdXNoKHMpfX1zPXRoaXMubWF0Y2godGhpcy5pbnB1dCxYbix2LkZPTExPV19JTlRPX2luX3BfSW5zZXJ0RXhwclRhcmdldENob2ljZTEzNDg0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLHIuYW50bHIubGFuZy5pc051bGwobykmJihvPVtdKSxvLnB1c2gocyksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG8pO2JyZWFrO2Nhc2UgMjp0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxJbix2LkZPTExPV19BRlRFUl9pbl9wX0luc2VydEV4cHJUYXJnZXRDaG9pY2UxMzUwMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobik7YnJlYWs7Y2FzZSAzOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHFuLHYuRk9MTE9XX0JFRk9SRV9pbl9wX0luc2VydEV4cHJUYXJnZXRDaG9pY2UxMzUxNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZyl7aWYoIShnIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBnO3RoaXMucmVwb3J0RXJyb3IoZyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGcpfWZpbmFsbHl7fXJldHVybiBlfSxwX0luc2VydEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0luc2VydEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9JbnNlcnRFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9JbnNlcnRFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9JbnNlcnRFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsV24sdi5GT0xMT1dfSU5TRVJUX2luX3BfSW5zZXJ0RXhwcjEzNTQ3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobik7dmFyIGY9MixsPXRoaXMuaW5wdXQuTEEoMSk7aWYobD09QXQpZj0xO2Vsc2V7aWYobCE9Sm4pe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGM9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxODksMCx0aGlzLmlucHV0KTt0aHJvdyBjfWY9Mn1zd2l0Y2goZil7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEF0LHYuRk9MTE9XX05PREVfaW5fcF9JbnNlcnRFeHByMTM1NTIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKTticmVhaztjYXNlIDI6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSm4sdi5GT0xMT1dfTk9ERVNfaW5fcF9JbnNlcnRFeHByMTM1NTgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKX10aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Tb3VyY2VFeHByX2luX3BfSW5zZXJ0RXhwcjEzNTYxKSxzPXRoaXMucF9Tb3VyY2VFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfSW5zZXJ0RXhwclRhcmdldENob2ljZV9pbl9wX0luc2VydEV4cHIxMzU2Myksbz10aGlzLnBfSW5zZXJ0RXhwclRhcmdldENob2ljZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1RhcmdldEV4cHJfaW5fcF9JbnNlcnRFeHByMTM1NjUpLHU9dGhpcy5wX1RhcmdldEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goaCl7aWYoIShoIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBoO3RoaXMucmVwb3J0RXJyb3IoaCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGgpfWZpbmFsbHl7fXJldHVybiBlfSxwX0RlbGV0ZUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0RlbGV0ZUV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9EZWxldGVFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9EZWxldGVFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9EZWxldGVFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFVuLHYuRk9MTE9XX0RFTEVURV9pbl9wX0RlbGV0ZUV4cHIxMzU5NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pO3ZhciB1PTIsYT10aGlzLmlucHV0LkxBKDEpO2lmKGE9PUF0KXU9MTtlbHNle2lmKGEhPUpuKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMTkwLDAsdGhpcy5pbnB1dCk7dGhyb3cgZn11PTJ9c3dpdGNoKHUpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxBdCx2LkZPTExPV19OT0RFX2luX3BfRGVsZXRlRXhwcjEzNjAwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobik7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEpuLHYuRk9MTE9XX05PREVTX2luX3BfRGVsZXRlRXhwcjEzNjA2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobil9dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVGFyZ2V0RXhwcl9pbl9wX0RlbGV0ZUV4cHIxMzYwOSkscz10aGlzLnBfVGFyZ2V0RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfUmVwbGFjZUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1JlcGxhY2VFeHByX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfUmVwbGFjZUV4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1JlcGxhY2VFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9SZXBsYWNlRXhwcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUW4sdi5GT0xMT1dfUkVQTEFDRV9pbl9wX1JlcGxhY2VFeHByMTM2MzkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKTt2YXIgYT0yLGY9dGhpcy5pbnB1dC5MQSgxKTtmPT1lciYmKGE9MSk7c3dpdGNoKGEpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxlcix2LkZPTExPV19WQUxVRV9pbl9wX1JlcGxhY2VFeHByMTM2NDQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxPdCx2LkZPTExPV19PRl9pbl9wX1JlcGxhY2VFeHByMTM2NDgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKX1uPXRoaXMubWF0Y2godGhpcy5pbnB1dCxBdCx2LkZPTExPV19OT0RFX2luX3BfUmVwbGFjZUV4cHIxMzY1NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9SZXBsYWNlRXhwcjEzNjU2KSxzPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCx0cix2LkZPTExPV19XSVRIX2luX3BfUmVwbGFjZUV4cHIxMzY2MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9SZXBsYWNlRXhwcjEzNjYzKSxvPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBlfSxwX1JlbmFtZUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1JlbmFtZUV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9SZW5hbWVFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9SZW5hbWVFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9SZW5hbWVFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxLbix2LkZPTExPV19SRU5BTUVfaW5fcF9SZW5hbWVFeHByMTM2OTQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxBdCx2LkZPTExPV19OT0RFX2luX3BfUmVuYW1lRXhwcjEzNjk4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdSkpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVGFyZ2V0RXhwcl9pbl9wX1JlbmFtZUV4cHIxMzcwMCkscz10aGlzLnBfVGFyZ2V0RXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFQsdi5GT0xMT1dfQVNfaW5fcF9SZW5hbWVFeHByMTM3MDQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9OZXdOYW1lRXhwcl9pbl9wX1JlbmFtZUV4cHIxMzcwNiksbz10aGlzLnBfTmV3TmFtZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBhO3RoaXMucmVwb3J0RXJyb3IoYSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGEpfWZpbmFsbHl7fXJldHVybiBlfSxwX1NvdXJjZUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1NvdXJjZUV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9Tb3VyY2VFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Tb3VyY2VFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9Tb3VyY2VFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9Tb3VyY2VFeHByMTM3MzQpLG49dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaTt0aGlzLnJlcG9ydEVycm9yKGkpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGkpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxpKX1maW5hbGx5e31yZXR1cm4gZX0scF9UYXJnZXRFeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9UYXJnZXRFeHByX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfVGFyZ2V0RXhwcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfVGFyZ2V0RXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfVGFyZ2V0RXhwcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVGFyZ2V0RXhwcjEzNzYxKSxuPXRoaXMucF9FeHByU2luZ2xlKCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfTmV3TmFtZUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX05ld05hbWVFeHByX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfTmV3TmFtZUV4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX05ld05hbWVFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9OZXdOYW1lRXhwcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfTmV3TmFtZUV4cHIxMzc4OCksbj10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBlfSxwX1RyYW5zZm9ybUV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1RyYW5zZm9ybUV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9UcmFuc2Zvcm1FeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9UcmFuc2Zvcm1FeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9UcmFuc2Zvcm1FeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsLGM9bnVsbCxoPW51bGwscD1udWxsLGQ9bnVsbCxtPW51bGwsZz1udWxsLHk9bnVsbCxiPW51bGwsdz1udWxsLEU9bnVsbCxTPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLGE9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFJuLHYuRk9MTE9XX0NPUFlfaW5fcF9UcmFuc2Zvcm1FeHByMTM4MTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKFM9dGhpcy5hZGFwdG9yLmNyZWF0ZShhKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxTKSksci5hbnRsci5sYW5nLmlzTnVsbChmKSYmKGY9W10pLGYucHVzaChhKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxwaSx2LkZPTExPV19ET0xMQVJfaW5fcF9UcmFuc2Zvcm1FeHByMTM4MjEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxnKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVmFyTmFtZV9pbl9wX1RyYW5zZm9ybUV4cHIxMzgyNSksbD10aGlzLnBfVmFyTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbC5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihuLGw/bC5zdG9wOm51bGwpLHM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGJpLHYuRk9MTE9XX0JJTkRfaW5fcF9UcmFuc2Zvcm1FeHByMTM4MjkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGI9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxiKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1RyYW5zZm9ybUV4cHIxMzgzMSksaD10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxoLmdldFRyZWUoKSk7ZTpkb3t2YXIgeD0yLFQ9dGhpcy5pbnB1dC5MQSgxKTtUPT1UaSYmKHg9MSk7c3dpdGNoKHgpe2Nhc2UgMTpvPXRoaXMubWF0Y2godGhpcy5pbnB1dCxUaSx2LkZPTExPV19DT01NQV9pbl9wX1RyYW5zZm9ybUV4cHIxMzgzNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodz10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHcpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxwaSx2LkZPTExPV19ET0xMQVJfaW5fcF9UcmFuc2Zvcm1FeHByMTM4MzkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHk9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx5KSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVmFyTmFtZV9pbl9wX1RyYW5zZm9ybUV4cHIxMzg0MyksYz10aGlzLnBfVmFyTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYy5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihpLGM/Yy5zdG9wOm51bGwpLHU9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGJpLHYuRk9MTE9XX0JJTkRfaW5fcF9UcmFuc2Zvcm1FeHByMTM4NDcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKEU9dGhpcy5hZGFwdG9yLmNyZWF0ZSh1KSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxFKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1RyYW5zZm9ybUV4cHIxMzg0OSkscD10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxwLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCk7YT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsJG4sdi5GT0xMT1dfTU9ESUZZX2luX3BfVHJhbnNmb3JtRXhwcjEzODU2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihTPXRoaXMuYWRhcHRvci5jcmVhdGUoYSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsUykpLHIuYW50bHIubGFuZy5pc051bGwoZikmJihmPVtdKSxmLnB1c2goYSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1RyYW5zZm9ybUV4cHIxMzg1OCksZD10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxkLmdldFRyZWUoKSksYT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUnQsdi5GT0xMT1dfUkVUVVJOX2luX3BfVHJhbnNmb3JtRXhwcjEzODYzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihTPXRoaXMuYWRhcHRvci5jcmVhdGUoYSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsUykpLHIuYW50bHIubGFuZy5pc051bGwoZikmJihmPVtdKSxmLnB1c2goYSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1RyYW5zZm9ybUV4cHIxMzg2NSksbT10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxtLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGYpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKE4pe2lmKCEoTiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgTjt0aGlzLnJlcG9ydEVycm9yKE4pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LE4pLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxOKX1maW5hbGx5e31yZXR1cm4gZX0scG1fRlRPcHRpb25EZWNsX3JldHVybjpmdW5jdGlvbigpe3YucG1fRlRPcHRpb25EZWNsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBtX0ZUT3B0aW9uRGVjbF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBtX0ZUT3B0aW9uRGVjbDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBtX0ZUT3B0aW9uRGVjbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEksdi5GT0xMT1dfREVDTEFSRV9pbl9wbV9GVE9wdGlvbkRlY2wxMzkwMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSxyLmFudGxyLmxhbmcuaXNOdWxsKHMpJiYocz1bXSkscy5wdXNoKGkpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGhyLHYuRk9MTE9XX0ZUX09QVElPTl9pbl9wbV9GVE9wdGlvbkRlY2wxMzkwNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSxyLmFudGxyLmxhbmcuaXNOdWxsKHMpJiYocz1bXSkscy5wdXNoKGkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUTWF0Y2hPcHRpb25zX2luX3BtX0ZUT3B0aW9uRGVjbDEzOTA5KSxvPXRoaXMucF9GVE1hdGNoT3B0aW9ucygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHppLHYuRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9GVE9wdGlvbkRlY2wxMzkxMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsocyksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwX0ZUU2NvcmVWYXJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUU2NvcmVWYXJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GVFNjb3JlVmFyX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFNjb3JlVmFyOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVFNjb3JlVmFyX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxBcix2LkZPTExPV19TQ09SRV9pbl9wX0ZUU2NvcmVWYXIxMzk0MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQscGksdi5GT0xMT1dfRE9MTEFSX2luX3BfRlRTY29yZVZhcjEzOTQ3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdSkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1Zhck5hbWVfaW5fcF9GVFNjb3JlVmFyMTM5NTEpLHM9dGhpcy5wX1Zhck5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoaSxzP3Muc3RvcDpudWxsKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGE7dGhpcy5yZXBvcnRFcnJvcihhKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxhKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRlRDb250YWluc0V4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUQ29udGFpbnNFeHByX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRlRDb250YWluc0V4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUQ29udGFpbnNFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVENvbnRhaW5zRXhwcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0cmluZ0NvbmNhdEV4cHJfaW5fcF9GVENvbnRhaW5zRXhwcjEzOTc5KSxzPXRoaXMucF9TdHJpbmdDb25jYXRFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7dmFyIGY9MixsPXRoaXMuaW5wdXQuTEEoMSk7bD09aXImJihmPTEpO3N3aXRjaChmKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaXIsdi5GT0xMT1dfQ09OVEFJTlNfaW5fcF9GVENvbnRhaW5zRXhwcjEzOTg1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsR3Qsdi5GT0xMT1dfVEVYVF9pbl9wX0ZUQ29udGFpbnNFeHByMTM5ODkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRTZWxlY3Rpb25faW5fcF9GVENvbnRhaW5zRXhwcjEzOTkzKSxvPXRoaXMucF9GVFNlbGVjdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpO3ZhciBjPTIsaD10aGlzLmlucHV0LkxBKDEpO2g9PVJyJiYoYz0xKTtzd2l0Y2goYyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUSWdub3JlT3B0aW9uX2luX3BfRlRDb250YWluc0V4cHIxMzk5NSksdT10aGlzLnBfRlRJZ25vcmVPcHRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKX19ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gocCl7aWYoIShwIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBwO3RoaXMucmVwb3J0RXJyb3IocCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQscCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHApfWZpbmFsbHl7fXJldHVybiBlfSxwX0ZUU2VsZWN0aW9uX3JldHVybjpmdW5jdGlvbigpe3YucF9GVFNlbGVjdGlvbl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZUU2VsZWN0aW9uX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFNlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRlRTZWxlY3Rpb25fcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUT3JfaW5fcF9GVFNlbGVjdGlvbjE0MDI1KSxuPXRoaXMucF9GVE9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSk7ZTpkb3t2YXIgcz0yLG89dGhpcy5pbnB1dC5MQSgxKTtpZihvPT1DfHxvPT1QdHx8bz09am58fG8+PXVyJiZvPD1mcnx8bz09THIpcz0xO3N3aXRjaChzKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRQb3NGaWx0ZXJfaW5fcF9GVFNlbGVjdGlvbjE0MDI3KSxpPXRoaXMucF9GVFBvc0ZpbHRlcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApO2Uuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHUpe2lmKCEodSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgdTt0aGlzLnJlcG9ydEVycm9yKHUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHUpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx1KX1maW5hbGx5e31yZXR1cm4gZX0scF9GVFdlaWdodF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRlRXZWlnaHRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GVFdlaWdodF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRXZWlnaHQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0ZUV2VpZ2h0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LElyLHYuRk9MTE9XX1dFSUdIVF9pbl9wX0ZUV2VpZ2h0MTQwNTYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGRpLHYuRk9MTE9XX0xCUkFDS0VUX2luX3BfRlRXZWlnaHQxNDA2MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByX2luX3BfRlRXZWlnaHQxNDA2Miksbz10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdmksdi5GT0xMT1dfUkJSQUNLRVRfaW5fcF9GVFdlaWdodDE0MDY1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gZX0scF9GVE9yX3JldHVybjpmdW5jdGlvbigpe3YucF9GVE9yX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRlRPcl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRPcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRlRPcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVEFuZF9pbl9wX0ZUT3IxNDA5MSksaT10aGlzLnBfRlRBbmQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTtlOmRve3ZhciB1PTIsYT10aGlzLmlucHV0LkxBKDEpO2E9PXZyJiYodT0xKTtzd2l0Y2godSl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHZyLHYuRk9MTE9XX0ZUT1JfaW5fcF9GVE9yMTQwOTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUQW5kX2luX3BfRlRPcjE0MTAxKSxzPXRoaXMucF9GVEFuZCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApO2Uuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gZX0scF9GVEFuZF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRlRBbmRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GVEFuZF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRBbmQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0ZUQW5kX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUTWlsZE5vdF9pbl9wX0ZUQW5kMTQxMzApLGk9dGhpcy5wX0ZUTWlsZE5vdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO2U6ZG97dmFyIHU9MixhPXRoaXMuaW5wdXQuTEEoMSk7YT09cHImJih1PTEpO3N3aXRjaCh1KXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQscHIsdi5GT0xMT1dfRlRBTkRfaW5fcF9GVEFuZDE0MTM2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVE1pbGROb3RfaW5fcF9GVEFuZDE0MTQwKSxzPXRoaXMucF9GVE1pbGROb3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTtlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBfRlRNaWxkTm90X3JldHVybjpmdW5jdGlvbigpe3YucF9GVE1pbGROb3RfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GVE1pbGROb3RfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUTWlsZE5vdDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRlRNaWxkTm90X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVFVuYXJ5Tm90X2luX3BfRlRNaWxkTm90MTQxNjkpLHM9dGhpcy5wX0ZUVW5hcnlOb3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKTtlOmRve3ZhciBhPTIsZj10aGlzLmlucHV0LkxBKDEpO2Y9PVNyJiYoYT0xKTtzd2l0Y2goYSl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFNyLHYuRk9MTE9XX05PVF9pbl9wX0ZUTWlsZE5vdDE0MTc1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdSkpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaHQsdi5GT0xMT1dfSU5faW5fcF9GVE1pbGROb3QxNDE3OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVFVuYXJ5Tm90X2luX3BfRlRNaWxkTm90MTQxODMpLG89dGhpcy5wX0ZUVW5hcnlOb3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTtlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRlRVbmFyeU5vdF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRlRVbmFyeU5vdF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZUVW5hcnlOb3RfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUVW5hcnlOb3Q6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0ZUVW5hcnlOb3RfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgbz0yLHU9dGhpcy5pbnB1dC5MQSgxKTt1PT1kciYmKG89MSk7c3dpdGNoKG8pe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkcix2LkZPTExPV19GVE5PVF9pbl9wX0ZUVW5hcnlOb3QxNDIxNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobil9dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRQcmltYXJ5V2l0aE9wdGlvbnNfaW5fcF9GVFVuYXJ5Tm90MTQyMjMpLGk9dGhpcy5wX0ZUUHJpbWFyeVdpdGhPcHRpb25zKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBhO3RoaXMucmVwb3J0RXJyb3IoYSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGEpfWZpbmFsbHl7fXJldHVybiBlfSxwX0ZUUHJpbWFyeVdpdGhPcHRpb25zX3JldHVybjpmdW5jdGlvbigpe3YucF9GVFByaW1hcnlXaXRoT3B0aW9uc19yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZUUHJpbWFyeVdpdGhPcHRpb25zX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFByaW1hcnlXaXRoT3B0aW9uczpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRlRQcmltYXJ5V2l0aE9wdGlvbnNfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVFByaW1hcnlfaW5fcF9GVFByaW1hcnlXaXRoT3B0aW9uczE0MjQ5KSxuPXRoaXMucF9GVFByaW1hcnkoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKTt2YXIgbz0yLHU9dGhpcy5pbnB1dC5MQSgxKTt1PT1GciYmKG89MSk7c3dpdGNoKG8pe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVE1hdGNoT3B0aW9uc19pbl9wX0ZUUHJpbWFyeVdpdGhPcHRpb25zMTQyNTEpLGk9dGhpcy5wX0ZUTWF0Y2hPcHRpb25zKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSl9dmFyIGE9MixmPXRoaXMuaW5wdXQuTEEoMSk7Zj09SXImJihhPTEpO3N3aXRjaChhKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRXZWlnaHRfaW5fcF9GVFByaW1hcnlXaXRoT3B0aW9uczE0MjU0KSxzPXRoaXMucF9GVFdlaWdodCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gZX0scF9GVFByaW1hcnlfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUUHJpbWFyeV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZUUHJpbWFyeV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRQcmltYXJ5OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVFByaW1hcnlfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGw7dHJ5e3ZhciBjPTM7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgZGk6Y2FzZSBlczpjYXNlIHRzOmM9MTticmVhaztjYXNlIGNpOmM9MjticmVhaztjYXNlIGNzOmM9MzticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGg9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMDMsMCx0aGlzLmlucHV0KTt0aHJvdyBofXN3aXRjaChjKXtjYXNlIDE6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRXb3Jkc19pbl9wX0ZUUHJpbWFyeTE0Mjg1KSxzPXRoaXMucF9GVFdvcmRzKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7dmFyIHA9MixkPXRoaXMuaW5wdXQuTEEoMSk7ZD09eHImJihwPTEpO3N3aXRjaChwKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRUaW1lc19pbl9wX0ZUUHJpbWFyeTE0Mjg3KSxvPXRoaXMucF9GVFRpbWVzKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSl9YnJlYWs7Y2FzZSAyOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGNpLHYuRk9MTE9XX0xQQVJFTl9pbl9wX0ZUUHJpbWFyeTE0MzAyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUU2VsZWN0aW9uX2luX3BfRlRQcmltYXJ5MTQzMDQpLHU9dGhpcy5wX0ZUU2VsZWN0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaGksdi5GT0xMT1dfUlBBUkVOX2luX3BfRlRQcmltYXJ5MTQzMDYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsKSk7YnJlYWs7Y2FzZSAzOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZURXh0ZW5zaW9uU2VsZWN0aW9uX2luX3BfRlRQcmltYXJ5MTQzMTkpLGE9dGhpcy5wX0ZURXh0ZW5zaW9uU2VsZWN0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobSl7aWYoIShtIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBtO3RoaXMucmVwb3J0RXJyb3IobSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG0pfWZpbmFsbHl7fXJldHVybiBlfSxwX0ZUV29yZHNfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUV29yZHNfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GVFdvcmRzX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFdvcmRzOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVFdvcmRzX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVFdvcmRzVmFsdWVfaW5fcF9GVFdvcmRzMTQzNDUpLG49dGhpcy5wX0ZUV29yZHNWYWx1ZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpO3ZhciBzPTIsbz10aGlzLmlucHV0LkxBKDEpO2lmKG8+PW5yJiZvPD1ycnx8bz09Q3Ipcz0xO3N3aXRjaChzKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRBbnlhbGxPcHRpb25faW5fcF9GVFdvcmRzMTQzNDcpLGk9dGhpcy5wX0ZUQW55YWxsT3B0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2godSl7aWYoISh1IGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB1O3RoaXMucmVwb3J0RXJyb3IodSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHUpfWZpbmFsbHl7fXJldHVybiBlfSxwX0ZUV29yZHNWYWx1ZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRlRXb3Jkc1ZhbHVlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRlRXb3Jkc1ZhbHVlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFdvcmRzVmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0ZUV29yZHNWYWx1ZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e3ZhciBmPTIsbD10aGlzLmlucHV0LkxBKDEpO2lmKGw+PWVzJiZsPD10cylmPTE7ZWxzZXtpZihsIT1kaSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYz1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIwNSwwLHRoaXMuaW5wdXQpO3Rocm93IGN9Zj0yfXN3aXRjaChmKXtjYXNlIDE6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0ZUV29yZHNWYWx1ZTE0Mzc0KSxzPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGRpLHYuRk9MTE9XX0xCUkFDS0VUX2luX3BfRlRXb3Jkc1ZhbHVlMTQzODcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwcl9pbl9wX0ZUV29yZHNWYWx1ZTE0Mzg5KSxvPXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCx2aSx2LkZPTExPV19SQlJBQ0tFVF9pbl9wX0ZUV29yZHNWYWx1ZTE0MzkyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGgpe2lmKCEoaCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaDt0aGlzLnJlcG9ydEVycm9yKGgpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGgpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxoKX1maW5hbGx5e31yZXR1cm4gZX0scF9GVEV4dGVuc2lvblNlbGVjdGlvbl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRlRFeHRlbnNpb25TZWxlY3Rpb25fcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GVEV4dGVuc2lvblNlbGVjdGlvbl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRFeHRlbnNpb25TZWxlY3Rpb246ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0ZURXh0ZW5zaW9uU2VsZWN0aW9uX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBsPTA7ZTpkb3t2YXIgYz0yLGg9dGhpcy5pbnB1dC5MQSgxKTtoPT1jcyYmKGM9MSk7c3dpdGNoKGMpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjcyx2LkZPTExPV19MX1ByYWdtYV9pbl9wX0ZURXh0ZW5zaW9uU2VsZWN0aW9uMTQ0MTkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSk7YnJlYWs7ZGVmYXVsdDppZihsPj0xKWJyZWFrIGU7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgcD1uZXcgci5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbigyMDYsdGhpcy5pbnB1dCk7dGhyb3cgcH1sKyt9d2hpbGUoITApO2k9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGRpLHYuRk9MTE9XX0xCUkFDS0VUX2luX3BfRlRFeHRlbnNpb25TZWxlY3Rpb24xNDQyMik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKTt2YXIgZD0yLG09dGhpcy5pbnB1dC5MQSgxKTtpZihtPT1kcnx8bT09Y2l8fG09PWRpfHxtPj1lcyYmbTw9dHN8fG09PWNzKWQ9MTtzd2l0Y2goZCl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUU2VsZWN0aW9uX2luX3BfRlRFeHRlbnNpb25TZWxlY3Rpb24xNDQyNCksbz10aGlzLnBfRlRTZWxlY3Rpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKX1zPXRoaXMubWF0Y2godGhpcy5pbnB1dCx2aSx2LkZPTExPV19SQlJBQ0tFVF9pbl9wX0ZURXh0ZW5zaW9uU2VsZWN0aW9uMTQ0MjcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZyl7aWYoIShnIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBnO3RoaXMucmVwb3J0RXJyb3IoZyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGcpfWZpbmFsbHl7fXJldHVybiBlfSxwX0ZUQW55YWxsT3B0aW9uX3JldHVybjpmdW5jdGlvbigpe3YucF9GVEFueWFsbE9wdGlvbl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZUQW55YWxsT3B0aW9uX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVEFueWFsbE9wdGlvbjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRlRBbnlhbGxPcHRpb25fcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBhPTM7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgcnI6YT0xO2JyZWFrO2Nhc2UgbnI6YT0yO2JyZWFrO2Nhc2UgQ3I6YT0zO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIxMCwwLHRoaXMuaW5wdXQpO3Rocm93IGZ9c3dpdGNoKGEpe2Nhc2UgMTppPXRoaXMubWF0Y2godGhpcy5pbnB1dCxycix2LkZPTExPV19BTllfaW5fcF9GVEFueWFsbE9wdGlvbjE0NDU4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdSkpLHIuYW50bHIubGFuZy5pc051bGwocykmJihzPVtdKSxzLnB1c2goaSk7dmFyIGw9MixjPXRoaXMuaW5wdXQuTEEoMSk7Yz09VXImJihsPTEpO3N3aXRjaChsKXtjYXNlIDE6aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVXIsdi5GT0xMT1dfV09SRF9pbl9wX0ZUQW55YWxsT3B0aW9uMTQ0NjIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksci5hbnRsci5sYW5nLmlzTnVsbChzKSYmKHM9W10pLHMucHVzaChpKX1icmVhaztjYXNlIDI6aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbnIsdi5GT0xMT1dfQUxMX2luX3BfRlRBbnlhbGxPcHRpb24xNDQ3MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSxyLmFudGxyLmxhbmcuaXNOdWxsKHMpJiYocz1bXSkscy5wdXNoKGkpO3ZhciBoPTIscD10aGlzLmlucHV0LkxBKDEpO3A9PXpyJiYoaD0xKTtzd2l0Y2goaCl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHpyLHYuRk9MTE9XX1dPUkRTX2luX3BfRlRBbnlhbGxPcHRpb24xNDQ3Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKX1icmVhaztjYXNlIDM6aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQ3Isdi5GT0xMT1dfUEhSQVNFX2luX3BfRlRBbnlhbGxPcHRpb24xNDQ4MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSxyLmFudGxyLmxhbmcuaXNOdWxsKHMpJiYocz1bXSkscy5wdXNoKGkpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhzKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChkKXtpZighKGQgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGQ7dGhpcy5yZXBvcnRFcnJvcihkKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxkKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRlRUaW1lc19yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRlRUaW1lc19yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZUVGltZXNfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUVGltZXM6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0ZUVGltZXNfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQseHIsdi5GT0xMT1dfT0NDVVJTX2luX3BfRlRUaW1lczE0NTEzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRSYW5nZV9pbl9wX0ZUVGltZXMxNDUxNSkscz10aGlzLnBfRlRSYW5nZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEJyLHYuRk9MTE9XX1RJTUVTX2luX3BfRlRUaW1lczE0NTE5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobiksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHUpe2lmKCEodSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgdTt0aGlzLnJlcG9ydEVycm9yKHUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHUpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx1KX1maW5hbGx5e31yZXR1cm4gZX0scF9GVFJhbmdlX3JldHVybjpmdW5jdGlvbigpe3YucF9GVFJhbmdlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRlRSYW5nZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRSYW5nZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRlRSYW5nZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIGM9NDtzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBscjpjPTE7YnJlYWs7Y2FzZSBDOnZhciBoPXRoaXMuaW5wdXQuTEEoMik7aWYoaD09d3QpYz0yO2Vsc2V7aWYoaCE9d3Ipe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIHA9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMTEsMix0aGlzLmlucHV0KTt0aHJvdyBwfWM9M31icmVhaztjYXNlIGNyOmM9NDticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIHA9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMTEsMCx0aGlzLmlucHV0KTt0aHJvdyBwfXN3aXRjaChjKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbHIsdi5GT0xMT1dfRVhBQ1RMWV9pbl9wX0ZUUmFuZ2UxNDU1Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0FkZGl0aXZlRXhwcl9pbl9wX0ZUUmFuZ2UxNDU1NCkscz10aGlzLnBfQWRkaXRpdmVFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEMsdi5GT0xMT1dfQVRfaW5fcF9GVFJhbmdlMTQ1NzIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCx3dCx2LkZPTExPV19MRUFTVF9pbl9wX0ZUUmFuZ2UxNDU3Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0FkZGl0aXZlRXhwcl9pbl9wX0ZUUmFuZ2UxNDU3OCksbz10aGlzLnBfQWRkaXRpdmVFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAzOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEMsdi5GT0xMT1dfQVRfaW5fcF9GVFJhbmdlMTQ1OTYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCx3cix2LkZPTExPV19NT1NUX2luX3BfRlRSYW5nZTE0NjAwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCkpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQWRkaXRpdmVFeHByX2luX3BfRlRSYW5nZTE0NjAyKSx1PXRoaXMucF9BZGRpdGl2ZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDQ6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY3Isdi5GT0xMT1dfRlJPTV9pbl9wX0ZUUmFuZ2UxNDYyMCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0FkZGl0aXZlRXhwcl9pbl9wX0ZUUmFuZ2UxNDYyMiksYT10aGlzLnBfQWRkaXRpdmVFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsWnQsdi5GT0xMT1dfVE9faW5fcF9GVFJhbmdlMTQ2MjYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9BZGRpdGl2ZUV4cHJfaW5fcF9GVFJhbmdlMTQ2MjgpLGY9dGhpcy5wX0FkZGl0aXZlRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZi5nZXRUcmVlKCkpfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChkKXtpZighKGQgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGQ7dGhpcy5yZXBvcnRFcnJvcihkKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxkKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRlRQb3NGaWx0ZXJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUUG9zRmlsdGVyX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRlRQb3NGaWx0ZXJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUUG9zRmlsdGVyOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVFBvc0ZpbHRlcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbDt0cnl7dmFyIGE9NTtzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBQdDphPTE7YnJlYWs7Y2FzZSBqbjphPTI7YnJlYWs7Y2FzZSBhcjphPTM7YnJlYWs7Y2FzZSB1cjpjYXNlIExyOmE9NDticmVhaztjYXNlIEM6Y2FzZSBmcjphPTU7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjEyLDAsdGhpcy5pbnB1dCk7dGhyb3cgZn1zd2l0Y2goYSl7Y2FzZSAxOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUT3JkZXJfaW5fcF9GVFBvc0ZpbHRlcjE0NjU5KSxuPXRoaXMucF9GVE9yZGVyKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUV2luZG93X2luX3BfRlRQb3NGaWx0ZXIxNDY2MyksaT10aGlzLnBfRlRXaW5kb3coKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlREaXN0YW5jZV9pbl9wX0ZUUG9zRmlsdGVyMTQ2NjcpLHM9dGhpcy5wX0ZURGlzdGFuY2UoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKTticmVhaztjYXNlIDQ6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRTY29wZV9pbl9wX0ZUUG9zRmlsdGVyMTQ2NzEpLG89dGhpcy5wX0ZUU2NvcGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKTticmVhaztjYXNlIDU6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRDb250ZW50X2luX3BfRlRQb3NGaWx0ZXIxNDY3NSksdT10aGlzLnBfRlRDb250ZW50KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBlfSxwX0ZUT3JkZXJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUT3JkZXJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GVE9yZGVyX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVE9yZGVyOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVE9yZGVyX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxQdCx2LkZPTExPV19PUkRFUkVEX2luX3BfRlRPcmRlcjE0NzAzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihpPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChzKXtpZighKHMgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHM7dGhpcy5yZXBvcnRFcnJvcihzKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxzKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRlRXaW5kb3dfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUV2luZG93X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRlRXaW5kb3dfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUV2luZG93OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVFdpbmRvd19yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxqbix2LkZPTExPV19XSU5ET1dfaW5fcF9GVFdpbmRvdzE0NzMzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9BZGRpdGl2ZUV4cHJfaW5fcF9GVFdpbmRvdzE0NzM3KSxpPXRoaXMucF9BZGRpdGl2ZUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVFVuaXRfaW5fcF9GVFdpbmRvdzE0NzM5KSxzPXRoaXMucF9GVFVuaXQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaCh1KXtpZighKHUgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHU7dGhpcy5yZXBvcnRFcnJvcih1KSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCx1KSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksdSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRlREaXN0YW5jZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRlREaXN0YW5jZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZURGlzdGFuY2VfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZURGlzdGFuY2U6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0ZURGlzdGFuY2VfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsYXIsdi5GT0xMT1dfRElTVEFOQ0VfaW5fcF9GVERpc3RhbmNlMTQ3NjcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUUmFuZ2VfaW5fcF9GVERpc3RhbmNlMTQ3NzEpLGk9dGhpcy5wX0ZUUmFuZ2UoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVFVuaXRfaW5fcF9GVERpc3RhbmNlMTQ3NzMpLHM9dGhpcy5wX0ZUVW5pdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHUpe2lmKCEodSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgdTt0aGlzLnJlcG9ydEVycm9yKHUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHUpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx1KX1maW5hbGx5e31yZXR1cm4gZX0scF9GVFVuaXRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUVW5pdF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZUVW5pdF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRVbml0OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVFVuaXRfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgbz0zO3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlIHpyOm89MTticmVhaztjYXNlIF9yOm89MjticmVhaztjYXNlIE5yOm89MzticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIHU9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMTMsMCx0aGlzLmlucHV0KTt0aHJvdyB1fXN3aXRjaChvKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsenIsdi5GT0xMT1dfV09SRFNfaW5fcF9GVFVuaXQxNDgwMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pO2JyZWFrO2Nhc2UgMjpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxfcix2LkZPTExPV19TRU5URU5DRVNfaW5fcF9GVFVuaXQxNDgwOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pO2JyZWFrO2Nhc2UgMzpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxOcix2LkZPTExPV19QQVJBR1JBUEhTX2luX3BfRlRVbml0MTQ4MTUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBhO3RoaXMucmVwb3J0RXJyb3IoYSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGEpfWZpbmFsbHl7fXJldHVybiBlfSxwX0ZUU2NvcGVfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUU2NvcGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GVFNjb3BlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFNjb3BlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVFNjb3BlX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciB1PTIsYT10aGlzLmlucHV0LkxBKDEpO2lmKGE9PUxyKXU9MTtlbHNle2lmKGEhPXVyKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjE0LDAsdGhpcy5pbnB1dCk7dGhyb3cgZn11PTJ9c3dpdGNoKHUpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxMcix2LkZPTExPV19TQU1FX2luX3BfRlRTY29wZTE0ODQ4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobik7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHVyLHYuRk9MTE9XX0RJRkZFUkVOVF9pbl9wX0ZUU2NvcGUxNDg1NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVEJpZ1VuaXRfaW5fcF9GVFNjb3BlMTQ4NTkpLHM9dGhpcy5wX0ZUQmlnVW5pdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gZX0scF9GVEJpZ1VuaXRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUQmlnVW5pdF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZUQmlnVW5pdF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRCaWdVbml0OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVEJpZ1VuaXRfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgbz0yLHU9dGhpcy5pbnB1dC5MQSgxKTtpZih1PT1NcilvPTE7ZWxzZXtpZih1IT1Ucil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIxNSwwLHRoaXMuaW5wdXQpO3Rocm93IGF9bz0yfXN3aXRjaChvKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTXIsdi5GT0xMT1dfU0VOVEVOQ0VfaW5fcF9GVEJpZ1VuaXQxNDg4OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pO2JyZWFrO2Nhc2UgMjpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxUcix2LkZPTExPV19QQVJBR1JBUEhfaW5fcF9GVEJpZ1VuaXQxNDg5NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBfRlRDb250ZW50X3JldHVybjpmdW5jdGlvbigpe3YucF9GVENvbnRlbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GVENvbnRlbnRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUQ29udGVudDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRlRDb250ZW50X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIG89Myx1PXRoaXMuaW5wdXQuTEEoMSk7aWYodT09Qyl7dmFyIGE9dGhpcy5pbnB1dC5MQSgyKTtpZihhPT1NbilvPTE7ZWxzZXtpZihhIT1nbil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgZj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIxNiwxLHRoaXMuaW5wdXQpO3Rocm93IGZ9bz0yfX1lbHNle2lmKHUhPWZyKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjE2LDAsdGhpcy5pbnB1dCk7dGhyb3cgZn1vPTN9c3dpdGNoKG8pe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxDLHYuRk9MTE9XX0FUX2luX3BfRlRDb250ZW50MTQ5MzApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxNbix2LkZPTExPV19TVEFSVF9pbl9wX0ZUQ29udGVudDE0OTM0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobik7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEMsdi5GT0xMT1dfQVRfaW5fcF9GVENvbnRlbnQxNDk0Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGduLHYuRk9MTE9XX0VORF9pbl9wX0ZUQ29udGVudDE0OTQ2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobik7YnJlYWs7Y2FzZSAzOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGZyLHYuRk9MTE9XX0VOVElSRV9pbl9wX0ZUQ29udGVudDE0OTU0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsc3Isdi5GT0xMT1dfQ09OVEVOVF9pbl9wX0ZUQ29udGVudDE0OTU4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobil9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gZX0scF9GVE1hdGNoT3B0aW9uc19yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRlRNYXRjaE9wdGlvbnNfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GVE1hdGNoT3B0aW9uc19yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRNYXRjaE9wdGlvbnM6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0ZUTWF0Y2hPcHRpb25zX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIG89MDtlOmRve3ZhciB1PTIsYT10aGlzLmlucHV0LkxBKDEpO2E9PUZyJiYodT0xKTtzd2l0Y2godSl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEZyLHYuRk9MTE9XX1VTSU5HX2luX3BfRlRNYXRjaE9wdGlvbnMxNDk5Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRNYXRjaE9wdGlvbl9pbl9wX0ZUTWF0Y2hPcHRpb25zMTQ5OTYpLGk9dGhpcy5wX0ZUTWF0Y2hPcHRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmlmKG8+PTEpYnJlYWsgZTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDIxNyx0aGlzLmlucHV0KTt0aHJvdyBmfW8rK313aGlsZSghMCk7ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobCl7aWYoIShsIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBsO3RoaXMucmVwb3J0RXJyb3IobCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGwpfWZpbmFsbHl7fXJldHVybiBlfSxwX0ZUTWF0Y2hPcHRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUTWF0Y2hPcHRpb25fcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GVE1hdGNoT3B0aW9uX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVE1hdGNoT3B0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVE1hdGNoT3B0aW9uX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsO3RyeXt2YXIgYz04O2M9dGhpcy5kZmEyMTgucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2goYyl7Y2FzZSAxOnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUTGFuZ3VhZ2VPcHRpb25faW5fcF9GVE1hdGNoT3B0aW9uMTUwMjQpLG49dGhpcy5wX0ZUTGFuZ3VhZ2VPcHRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRXaWxkQ2FyZE9wdGlvbl9pbl9wX0ZUTWF0Y2hPcHRpb24xNTAzNiksaT10aGlzLnBfRlRXaWxkQ2FyZE9wdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMzp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVFRoZXNhdXJ1c09wdGlvbl9pbl9wX0ZUTWF0Y2hPcHRpb24xNTA0OCkscz10aGlzLnBfRlRUaGVzYXVydXNPcHRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKTticmVhaztjYXNlIDQ6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRTdGVtT3B0aW9uX2luX3BfRlRNYXRjaE9wdGlvbjE1MDYwKSxvPXRoaXMucF9GVFN0ZW1PcHRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKTticmVhaztjYXNlIDU6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRDYXNlT3B0aW9uX2luX3BfRlRNYXRjaE9wdGlvbjE1MDcyKSx1PXRoaXMucF9GVENhc2VPcHRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDY6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlREaWFjcml0aWNzT3B0aW9uX2luX3BfRlRNYXRjaE9wdGlvbjE1MDg0KSxhPXRoaXMucF9GVERpYWNyaXRpY3NPcHRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEuZ2V0VHJlZSgpKTticmVhaztjYXNlIDc6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRTdG9wV29yZE9wdGlvbl9pbl9wX0ZUTWF0Y2hPcHRpb24xNTA5NiksZj10aGlzLnBfRlRTdG9wV29yZE9wdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgODp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVEV4dGVuc2lvbk9wdGlvbl9pbl9wX0ZUTWF0Y2hPcHRpb24xNTEwOCksbD10aGlzLnBfRlRFeHRlbnNpb25PcHRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChoKXtpZighKGggaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGg7dGhpcy5yZXBvcnRFcnJvcihoKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxoKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRlRDYXNlT3B0aW9uX3JldHVybjpmdW5jdGlvbigpe3YucF9GVENhc2VPcHRpb25fcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GVENhc2VPcHRpb25fcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUQ2FzZU9wdGlvbjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRlRDYXNlT3B0aW9uX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIG89NDtzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBNOnZhciB1PXRoaXMuaW5wdXQuTEEoMik7aWYodT09bXIpbz0xO2Vsc2V7aWYodSE9T3Ipe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGE9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMTksMSx0aGlzLmlucHV0KTt0aHJvdyBhfW89Mn1icmVhaztjYXNlIGJyOm89MzticmVhaztjYXNlIGpyOm89NDticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGE9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMTksMCx0aGlzLmlucHV0KTt0aHJvdyBhfXN3aXRjaChvKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTSx2LkZPTExPV19DQVNFX2luX3BfRlRDYXNlT3B0aW9uMTUxMzkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtcix2LkZPTExPV19JTlNFTlNJVElWRV9pbl9wX0ZUQ2FzZU9wdGlvbjE1MTQzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobik7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LE0sdi5GT0xMT1dfQ0FTRV9pbl9wX0ZUQ2FzZU9wdGlvbjE1MTYxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsT3Isdi5GT0xMT1dfU0VOU0lUSVZFX2luX3BfRlRDYXNlT3B0aW9uMTUxNjUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKTticmVhaztjYXNlIDM6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsYnIsdi5GT0xMT1dfTE9XRVJDQVNFX2luX3BfRlRDYXNlT3B0aW9uMTUxODIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKTticmVhaztjYXNlIDQ6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsanIsdi5GT0xMT1dfVVBQRVJDQVNFX2luX3BfRlRDYXNlT3B0aW9uMTUxOTgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwX0ZURGlhY3JpdGljc09wdGlvbl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRlREaWFjcml0aWNzT3B0aW9uX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRlREaWFjcml0aWNzT3B0aW9uX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVERpYWNyaXRpY3NPcHRpb246ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0ZURGlhY3JpdGljc09wdGlvbl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBvPTIsdT10aGlzLmlucHV0LkxBKDEpO2lmKHUhPW9yKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjIwLDAsdGhpcy5pbnB1dCk7dGhyb3cgZn12YXIgYT10aGlzLmlucHV0LkxBKDIpO2lmKGE9PW1yKW89MTtlbHNle2lmKGEhPU9yKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBmPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjIwLDEsdGhpcy5pbnB1dCk7dGhyb3cgZn1vPTJ9c3dpdGNoKG8pe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxvcix2LkZPTExPV19ESUFDUklUSUNTX2luX3BfRlREaWFjcml0aWNzT3B0aW9uMTUyMzMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxtcix2LkZPTExPV19JTlNFTlNJVElWRV9pbl9wX0ZURGlhY3JpdGljc09wdGlvbjE1MjM3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobik7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LG9yLHYuRk9MTE9XX0RJQUNSSVRJQ1NfaW5fcF9GVERpYWNyaXRpY3NPcHRpb24xNTI1NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LE9yLHYuRk9MTE9XX1NFTlNJVElWRV9pbl9wX0ZURGlhY3JpdGljc09wdGlvbjE1MjU5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobil9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGwpe2lmKCEobCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbDt0aGlzLnJlcG9ydEVycm9yKGwpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGwpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxsKX1maW5hbGx5e31yZXR1cm4gZX0scF9GVFN0ZW1PcHRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUU3RlbU9wdGlvbl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZUU3RlbU9wdGlvbl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRTdGVtT3B0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVFN0ZW1PcHRpb25fcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgbz0yLHU9dGhpcy5pbnB1dC5MQSgxKTtpZih1PT1EcilvPTE7ZWxzZXtpZih1IT1Fcil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIyMSwwLHRoaXMuaW5wdXQpO3Rocm93IGF9bz0yfXN3aXRjaChvKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRHIsdi5GT0xMT1dfU1RFTU1JTkdfaW5fcF9GVFN0ZW1PcHRpb24xNTI5NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pO2JyZWFrO2Nhc2UgMjpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxFcix2LkZPTExPV19OT19pbl9wX0ZUU3RlbU9wdGlvbjE1MzAxKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRHIsdi5GT0xMT1dfU1RFTU1JTkdfaW5fcF9GVFN0ZW1PcHRpb24xNTMwNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIGV9LHBfRlRUaGVzYXVydXNPcHRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUVGhlc2F1cnVzT3B0aW9uX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRlRUaGVzYXVydXNPcHRpb25fcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUVGhlc2F1cnVzT3B0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVFRoZXNhdXJ1c09wdGlvbl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGwsaD1udWxsLHA9bnVsbCxkPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBtPTMsZz10aGlzLmlucHV0LkxBKDEpO2lmKGc9PUhyKXt2YXIgeT10aGlzLmlucHV0LkxBKDIpO2lmKHk9PWNpKW09MjtlbHNle2lmKHkhPUMmJnkhPXEpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGI9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMjUsMSx0aGlzLmlucHV0KTt0aHJvdyBifW09MX19ZWxzZXtpZihnIT1Fcil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIyNSwwLHRoaXMuaW5wdXQpO3Rocm93IGJ9bT0zfXN3aXRjaChtKXtjYXNlIDE6bz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsSHIsdi5GT0xMT1dfVEhFU0FVUlVTX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTM0MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZD10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGQpKSxyLmFudGxyLmxhbmcuaXNOdWxsKHUpJiYodT1bXSksdS5wdXNoKG8pO3ZhciB3PTIsRT10aGlzLmlucHV0LkxBKDEpO2lmKEU9PUMpdz0xO2Vsc2V7aWYoRSE9cSl7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYj1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIyMiwwLHRoaXMuaW5wdXQpO3Rocm93IGJ9dz0yfXN3aXRjaCh3KXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRUaGVzYXVydXNJRF9pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTUzNDQpLGE9dGhpcy5wX0ZUVGhlc2F1cnVzSUQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6bz10aGlzLm1hdGNoKHRoaXMuaW5wdXQscSx2LkZPTExPV19ERUZBVUxUX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTM1MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZD10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGQpKSxyLmFudGxyLmxhbmcuaXNOdWxsKHUpJiYodT1bXSksdS5wdXNoKG8pfWJyZWFrO2Nhc2UgMjpvPXRoaXMubWF0Y2godGhpcy5pbnB1dCxIcix2LkZPTExPV19USEVTQVVSVVNfaW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1MzY5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihkPXRoaXMuYWRhcHRvci5jcmVhdGUobyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZCkpLHIuYW50bHIubGFuZy5pc051bGwodSkmJih1PVtdKSx1LnB1c2gobyksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2ksdi5GT0xMT1dfTFBBUkVOX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTM3MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGMpKTt2YXIgUz0yLHg9dGhpcy5pbnB1dC5MQSgxKTtpZih4PT1DKVM9MTtlbHNle2lmKHghPXEpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGI9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMjMsMCx0aGlzLmlucHV0KTt0aHJvdyBifVM9Mn1zd2l0Y2goUyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUVGhlc2F1cnVzSURfaW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1Mzc0KSxmPXRoaXMucF9GVFRoZXNhdXJ1c0lEKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOm89dGhpcy5tYXRjaCh0aGlzLmlucHV0LHEsdi5GT0xMT1dfREVGQVVMVF9pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTUzODApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGQ9dGhpcy5hZGFwdG9yLmNyZWF0ZShvKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxkKSksci5hbnRsci5sYW5nLmlzTnVsbCh1KSYmKHU9W10pLHUucHVzaChvKX1lOmRve3ZhciBUPTIsTj10aGlzLmlucHV0LkxBKDEpO049PVRpJiYoVD0xKTtzd2l0Y2goVCl7Y2FzZSAxOmk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFRpLHYuRk9MTE9XX0NPTU1BX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTM4NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoaD10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGgpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVFRoZXNhdXJ1c0lEX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTM4NiksbD10aGlzLnBfRlRUaGVzYXVydXNJRCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbC5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApO3M9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGhpLHYuRk9MTE9XX1JQQVJFTl9pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTUzOTApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHA9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxwKSk7YnJlYWs7Y2FzZSAzOm89dGhpcy5tYXRjaCh0aGlzLmlucHV0LEVyLHYuRk9MTE9XX05PX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTQwOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZD10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGQpKSxyLmFudGxyLmxhbmcuaXNOdWxsKHUpJiYodT1bXSksdS5wdXNoKG8pLG89dGhpcy5tYXRjaCh0aGlzLmlucHV0LEhyLHYuRk9MTE9XX1RIRVNBVVJVU19pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTU0MTIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGQ9dGhpcy5hZGFwdG9yLmNyZWF0ZShvKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxkKSksci5hbnRsci5sYW5nLmlzTnVsbCh1KSYmKHU9W10pLHUucHVzaChvKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsodSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goayl7aWYoIShrIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBrO3RoaXMucmVwb3J0RXJyb3IoayksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsayksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGspfWZpbmFsbHl7fXJldHVybiBlfSxwX0ZUVGhlc2F1cnVzSURfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUVGhlc2F1cnVzSURfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GVFRoZXNhdXJ1c0lEX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVFRoZXNhdXJ1c0lEOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVFRoZXNhdXJ1c0lEX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQyx2LkZPTExPV19BVF9pbl9wX0ZUVGhlc2F1cnVzSUQxNTQ0NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9GVFRoZXNhdXJ1c0lEMTU0NDcpLHM9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKTt2YXIgZj0yLGw9dGhpcy5pbnB1dC5MQSgxKTtsPT1rciYmKGY9MSk7c3dpdGNoKGYpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxrcix2LkZPTExPV19SRUxBVElPTlNISVBfaW5fcF9GVFRoZXNhdXJ1c0lEMTU0NTIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfRlRUaGVzYXVydXNJRDE1NDU0KSxvPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSl9dmFyIGM9MixoPXRoaXMuaW5wdXQuTEEoMSk7aWYoaD49bHImJmg8PWNyKWM9MTtlbHNlIGlmKGg9PUMpe3ZhciBwPXRoaXMuaW5wdXQuTEEoMik7aWYocD09d3R8fHA9PXdyKWM9MX1zd2l0Y2goYyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUTGl0ZXJhbFJhbmdlX2luX3BfRlRUaGVzYXVydXNJRDE1NDU5KSx1PXRoaXMucF9GVExpdGVyYWxSYW5nZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdS5nZXRUcmVlKCkpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHlyLHYuRk9MTE9XX0xFVkVMU19pbl9wX0ZUVGhlc2F1cnVzSUQxNTQ2Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pfXRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChkKXtpZighKGQgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGQ7dGhpcy5yZXBvcnRFcnJvcihkKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxkKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRlRMaXRlcmFsUmFuZ2VfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZUTGl0ZXJhbFJhbmdlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRlRMaXRlcmFsUmFuZ2VfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUTGl0ZXJhbFJhbmdlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GVExpdGVyYWxSYW5nZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGwsaD1udWxsLHA9bnVsbCxkPW51bGwsbT1udWxsLGc9bnVsbCx5PW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBiPTQ7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgbHI6Yj0xO2JyZWFrO2Nhc2UgQzp2YXIgdz10aGlzLmlucHV0LkxBKDIpO2lmKHc9PXd0KWI9MjtlbHNle2lmKHchPXdyKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBFPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjI4LDIsdGhpcy5pbnB1dCk7dGhyb3cgRX1iPTN9YnJlYWs7Y2FzZSBjcjpiPTQ7YnJlYWs7ZGVmYXVsdDppZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBFPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjI4LDAsdGhpcy5pbnB1dCk7dGhyb3cgRX1zd2l0Y2goYil7Y2FzZSAxOmY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGxyLHYuRk9MTE9XX0VYQUNUTFlfaW5fcF9GVExpdGVyYWxSYW5nZTE1NDk4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih5PXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQseSkpLHIuYW50bHIubGFuZy5pc051bGwobCkmJihsPVtdKSxsLnB1c2goZiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZHMsdi5GT0xMT1dfTF9JbnRlZ2VyTGl0ZXJhbF9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1MDApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxjKSk7YnJlYWs7Y2FzZSAyOmY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEMsdi5GT0xMT1dfQVRfaW5fcF9GVExpdGVyYWxSYW5nZTE1NTE4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih5PXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQseSkpLHIuYW50bHIubGFuZy5pc051bGwobCkmJihsPVtdKSxsLnB1c2goZiksZj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsd3Qsdi5GT0xMT1dfTEVBU1RfaW5fcF9GVExpdGVyYWxSYW5nZTE1NTIyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih5PXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQseSkpLHIuYW50bHIubGFuZy5pc051bGwobCkmJihsPVtdKSxsLnB1c2goZiksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZHMsdi5GT0xMT1dfTF9JbnRlZ2VyTGl0ZXJhbF9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1MjQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxoKSk7YnJlYWs7Y2FzZSAzOmY9dGhpcy5tYXRjaCh0aGlzLmlucHV0LEMsdi5GT0xMT1dfQVRfaW5fcF9GVExpdGVyYWxSYW5nZTE1NTQyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih5PXRoaXMuYWRhcHRvci5jcmVhdGUoZiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQseSkpLHIuYW50bHIubGFuZy5pc051bGwobCkmJihsPVtdKSxsLnB1c2goZiksZj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsd3Isdi5GT0xMT1dfTU9TVF9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1NDYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHk9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx5KSksci5hbnRsci5sYW5nLmlzTnVsbChsKSYmKGw9W10pLGwucHVzaChmKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkcyx2LkZPTExPV19MX0ludGVnZXJMaXRlcmFsX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTU0OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocD10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHApKTticmVhaztjYXNlIDQ6Zj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY3Isdi5GT0xMT1dfRlJPTV9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1NjYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHk9dGhpcy5hZGFwdG9yLmNyZWF0ZShmKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx5KSksci5hbnRsci5sYW5nLmlzTnVsbChsKSYmKGw9W10pLGwucHVzaChmKSxvPXRoaXMubWF0Y2godGhpcy5pbnB1dCxkcyx2LkZPTExPV19MX0ludGVnZXJMaXRlcmFsX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTU2OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZD10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGQpKSx1PXRoaXMubWF0Y2godGhpcy5pbnB1dCxadCx2LkZPTExPV19UT19pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1NzApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG09dGhpcy5hZGFwdG9yLmNyZWF0ZSh1KSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxtKSksYT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZHMsdi5GT0xMT1dfTF9JbnRlZ2VyTGl0ZXJhbF9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1NzIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGc9dGhpcy5hZGFwdG9yLmNyZWF0ZShhKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxnKSl9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGwpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKFMpe2lmKCEoUyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgUzt0aGlzLnJlcG9ydEVycm9yKFMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LFMpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxTKX1maW5hbGx5e31yZXR1cm4gZX0scF9GVFN0b3BXb3JkT3B0aW9uX3JldHVybjpmdW5jdGlvbigpe3YucF9GVFN0b3BXb3JkT3B0aW9uX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRlRTdG9wV29yZE9wdGlvbl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRTdG9wV29yZE9wdGlvbjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRlRTdG9wV29yZE9wdGlvbl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBmPTMsbD10aGlzLmlucHV0LkxBKDEpO2lmKGw9PVByKXt2YXIgYz10aGlzLmlucHV0LkxBKDIpO2lmKGMhPXpyKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBwPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjMxLDEsdGhpcy5pbnB1dCk7dGhyb3cgcH12YXIgaD10aGlzLmlucHV0LkxBKDMpO2lmKGg9PXEpZj0yO2Vsc2V7aWYoaCE9QyYmaCE9Y2kpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIHA9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMzEsMyx0aGlzLmlucHV0KTt0aHJvdyBwfWY9MX19ZWxzZXtpZihsIT1Fcil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgcD1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDIzMSwwLHRoaXMuaW5wdXQpO3Rocm93IHB9Zj0zfXN3aXRjaChmKXtjYXNlIDE6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUHIsdi5GT0xMT1dfU1RPUF9pbl9wX0ZUU3RvcFdvcmRPcHRpb24xNTYwOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHpyLHYuRk9MTE9XX1dPUkRTX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjEyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRTdG9wV29yZHNfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2MTQpLHM9dGhpcy5wX0ZUU3RvcFdvcmRzKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7ZTpkb3t2YXIgZD0yLG09dGhpcy5pbnB1dC5MQSgxKTtpZihtPT1ldHx8bT09bm4pZD0xO3N3aXRjaChkKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRlRTdG9wV29yZHNJbmNsRXhjbF9pbl9wX0ZUU3RvcFdvcmRPcHRpb24xNTYxNiksbz10aGlzLnBfRlRTdG9wV29yZHNJbmNsRXhjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApO2JyZWFrO2Nhc2UgMjpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxQcix2LkZPTExPV19TVE9QX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjM1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsenIsdi5GT0xMT1dfV09SRFNfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2MzkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxxLHYuRk9MTE9XX0RFRkFVTFRfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2NDMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKTt0OmRve3ZhciBnPTIseT10aGlzLmlucHV0LkxBKDEpO2lmKHk9PWV0fHx5PT1ubilnPTE7c3dpdGNoKGcpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9GVFN0b3BXb3Jkc0luY2xFeGNsX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjQ1KSx1PXRoaXMucF9GVFN0b3BXb3Jkc0luY2xFeGNsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayB0fX13aGlsZSghMCk7YnJlYWs7Y2FzZSAzOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEVyLHYuRk9MTE9XX05PX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjY0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUHIsdi5GT0xMT1dfU1RPUF9pbl9wX0ZUU3RvcFdvcmRPcHRpb24xNTY2OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHpyLHYuRk9MTE9XX1dPUkRTX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjcyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobil9dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGIpe2lmKCEoYiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgYjt0aGlzLnJlcG9ydEVycm9yKGIpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGIpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxiKX1maW5hbGx5e31yZXR1cm4gZX0scF9GVFN0b3BXb3Jkc19yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRlRTdG9wV29yZHNfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9GVFN0b3BXb3Jkc19yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRTdG9wV29yZHM6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0ZUU3RvcFdvcmRzX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsLGM9bnVsbCxoPW51bGwscD1udWxsO3RyeXt2YXIgZD0yLG09dGhpcy5pbnB1dC5MQSgxKTtpZihtPT1DKWQ9MTtlbHNle2lmKG0hPWNpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBnPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjMzLDAsdGhpcy5pbnB1dCk7dGhyb3cgZ31kPTJ9c3dpdGNoKGQpe2Nhc2UgMTp0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxDLHYuRk9MTE9XX0FUX2luX3BfRlRTdG9wV29yZHMxNTcwNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0ZUU3RvcFdvcmRzMTU3MTApLHU9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2ksdi5GT0xMT1dfTFBBUkVOX2luX3BfRlRTdG9wV29yZHMxNTcyNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYz10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGMpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfRlRTdG9wV29yZHMxNTcyNiksYT10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYS5nZXRUcmVlKCkpO2U6ZG97dmFyIHk9MixiPXRoaXMuaW5wdXQuTEEoMSk7Yj09VGkmJih5PTEpO3N3aXRjaCh5KXtjYXNlIDE6cz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVGksdi5GT0xMT1dfQ09NTUFfaW5fcF9GVFN0b3BXb3JkczE1NzI5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihoPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaCkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9GVFN0b3BXb3JkczE1NzMxKSxmPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCk7bz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaGksdi5GT0xMT1dfUlBBUkVOX2luX3BfRlRTdG9wV29yZHMxNTczNSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocD10aGlzLmFkYXB0b3IuY3JlYXRlKG8pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHApKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaCh3KXtpZighKHcgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHc7dGhpcy5yZXBvcnRFcnJvcih3KSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCx3KSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksdyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRlRTdG9wV29yZHNJbmNsRXhjbF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRlRTdG9wV29yZHNJbmNsRXhjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZUU3RvcFdvcmRzSW5jbEV4Y2xfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUU3RvcFdvcmRzSW5jbEV4Y2w6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0ZUU3RvcFdvcmRzSW5jbEV4Y2xfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCk7dmFyIHU9MixhPXRoaXMuaW5wdXQuTEEoMSk7aWYoYT09bm4pdT0xO2Vsc2V7aWYoYSE9ZXQpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGY9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMzQsMCx0aGlzLmlucHV0KTt0aHJvdyBmfXU9Mn1zd2l0Y2godSl7Y2FzZSAxOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LG5uLHYuRk9MTE9XX1VOSU9OX2luX3BfRlRTdG9wV29yZHNJbmNsRXhjbDE1NzY3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHIuYW50bHIubGFuZy5pc051bGwoaSkmJihpPVtdKSxpLnB1c2gobik7YnJlYWs7Y2FzZSAyOm49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGV0LHYuRk9MTE9XX0VYQ0VQVF9pbl9wX0ZUU3RvcFdvcmRzSW5jbEV4Y2wxNTc3Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pfXRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0ZUU3RvcFdvcmRzX2luX3BfRlRTdG9wV29yZHNJbmNsRXhjbDE1Nzc2KSxzPXRoaXMucF9GVFN0b3BXb3JkcygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRlRMYW5ndWFnZU9wdGlvbl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfRlRMYW5ndWFnZU9wdGlvbl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZUTGFuZ3VhZ2VPcHRpb25fcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZUTGFuZ3VhZ2VPcHRpb246ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0ZUTGFuZ3VhZ2VPcHRpb25fcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxncix2LkZPTExPV19MQU5HVUFHRV9pbl9wX0ZUTGFuZ3VhZ2VPcHRpb24xNTgwOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0ZUTGFuZ3VhZ2VPcHRpb24xNTgxMiksaT10aGlzLnBfU3RyaW5nTGl0ZXJhbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKG8pe2lmKCEobyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbzt0aGlzLnJlcG9ydEVycm9yKG8pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG8pLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxvKX1maW5hbGx5e31yZXR1cm4gZX0scF9GVFdpbGRDYXJkT3B0aW9uX3JldHVybjpmdW5jdGlvbigpe3YucF9GVFdpbGRDYXJkT3B0aW9uX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRlRXaWxkQ2FyZE9wdGlvbl9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfRlRXaWxkQ2FyZE9wdGlvbjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRlRXaWxkQ2FyZE9wdGlvbl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpO3ZhciBvPTIsdT10aGlzLmlucHV0LkxBKDEpO2lmKHU9PXFyKW89MTtlbHNle2lmKHUhPUVyKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBhPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjM1LDAsdGhpcy5pbnB1dCk7dGhyb3cgYX1vPTJ9c3dpdGNoKG8pe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxxcix2LkZPTExPV19XSUxEQ0FSRFNfaW5fcF9GVFdpbGRDYXJkT3B0aW9uMTU4NDIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKTticmVhaztjYXNlIDI6bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRXIsdi5GT0xMT1dfTk9faW5fcF9GVFdpbGRDYXJkT3B0aW9uMTU4NDkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxxcix2LkZPTExPV19XSUxEQ0FSRFNfaW5fcF9GVFdpbGRDYXJkT3B0aW9uMTU4NTMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKX10aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwX0ZURXh0ZW5zaW9uT3B0aW9uX3JldHVybjpmdW5jdGlvbigpe3YucF9GVEV4dGVuc2lvbk9wdGlvbl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZURXh0ZW5zaW9uT3B0aW9uX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVEV4dGVuc2lvbk9wdGlvbjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRlRFeHRlbnNpb25PcHRpb25fcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsTXQsdi5GT0xMT1dfT1BUSU9OX2luX3BfRlRFeHRlbnNpb25PcHRpb24xNTg4Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUU5hbWVfaW5fcF9GVEV4dGVuc2lvbk9wdGlvbjE1ODkwKSxpPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9GVEV4dGVuc2lvbk9wdGlvbjE1ODkyKSxzPXRoaXMucF9TdHJpbmdMaXRlcmFsKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2godSl7aWYoISh1IGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB1O3RoaXMucmVwb3J0RXJyb3IodSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHUpfWZpbmFsbHl7fXJldHVybiBlfSxwX0ZUSWdub3JlT3B0aW9uX3JldHVybjpmdW5jdGlvbigpe3YucF9GVElnbm9yZU9wdGlvbl9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0ZUSWdub3JlT3B0aW9uX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9GVElnbm9yZU9wdGlvbjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfRlRJZ25vcmVPcHRpb25fcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUnIsdi5GT0xMT1dfV0lUSE9VVF9pbl9wX0ZUSWdub3JlT3B0aW9uMTU5MjApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksci5hbnRsci5sYW5nLmlzTnVsbChpKSYmKGk9W10pLGkucHVzaChuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxzcix2LkZPTExPV19DT05URU5UX2luX3BfRlRJZ25vcmVPcHRpb24xNTkyNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSxyLmFudGxyLmxhbmcuaXNOdWxsKGkpJiYoaT1bXSksaS5wdXNoKG4pLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9VbmlvbkV4cHJfaW5fcF9GVElnbm9yZU9wdGlvbjE1OTI4KSxzPXRoaXMucF9VbmlvbkV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaCh1KXtpZighKHUgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHU7dGhpcy5yZXBvcnRFcnJvcih1KSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCx1KSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksdSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfUHJvZ3JhbV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfUHJvZ3JhbV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1Byb2dyYW1fcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1Byb2dyYW06ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1Byb2dyYW1fcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9pbl9wX1Byb2dyYW0xNTk2MCksbj10aGlzLnBfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaTt0aGlzLnJlcG9ydEVycm9yKGkpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGkpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxpKX1maW5hbGx5e31yZXR1cm4gZX0scF9TdGF0ZW1lbnRzX3JldHVybjpmdW5jdGlvbigpe3YucF9TdGF0ZW1lbnRzX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfU3RhdGVtZW50c19yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfU3RhdGVtZW50czpmdW5jdGlvbihlKXt2YXIgdD1uZXcgdi5wX1N0YXRlbWVudHNfcmV0dXJuO3Quc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgbj1udWxsLGk9bnVsbDt0cnl7bj10aGlzLmFkYXB0b3IubmlsKCk7ZTpkb3t2YXIgcz0yLG89dGhpcy5pbnB1dC5MQSgxKTtpZihvPj1FJiZvPD1maXx8bz09Y2l8fG8+PXBpJiZvPD1kaXx8bz09RWl8fG8+PUNpJiZvPD1BaXx8bz49SGkmJm88PUZpfHxvPT1HaXx8bz49ZXMmJm88PXRzfHxvPT1pc3x8bz49Y3MmJm88PW1zfHxvPT14bylzPTE7c3dpdGNoKHMpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9IeWJyaWRfaW5fcF9TdGF0ZW1lbnRzMTU5ODcpLGk9dGhpcy5wX0h5YnJpZChlLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGkuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTt0LnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodC50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcobiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyh0LnRyZWUsdC5zdGFydCx0LnN0b3ApKX1jYXRjaCh1KXtpZighKHUgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHU7dGhpcy5yZXBvcnRFcnJvcih1KSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCx1KSx0LnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LHQuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksdSl9ZmluYWxseXt9cmV0dXJuIHR9LHBfU3RhdGVtZW50c0FuZEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1N0YXRlbWVudHNBbmRFeHByX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfU3RhdGVtZW50c0FuZEV4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1N0YXRlbWVudHNBbmRFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9TdGF0ZW1lbnRzQW5kRXhwcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TdGF0ZW1lbnRzX2luX3BfU3RhdGVtZW50c0FuZEV4cHIxNjAxNSksbj10aGlzLnBfU3RhdGVtZW50cyghMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBlfSxwX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHJfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0YXRlbWVudHNfaW5fcF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByMTYwNDIpLG49dGhpcy5wX1N0YXRlbWVudHMoITEpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgaTt0aGlzLnJlcG9ydEVycm9yKGkpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGkpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxpKX1maW5hbGx5e31yZXR1cm4gZX0scF9IeWJyaWRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0h5YnJpZF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0h5YnJpZF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSHlicmlkOmZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IHYucF9IeWJyaWRfcmV0dXJuO24uc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3ZhciB1PTI7dT10aGlzLmRmYTIzNy5wcmVkaWN0KHRoaXMuaW5wdXQpO3N3aXRjaCh1KXtjYXNlIDE6aT10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfSHlicmlkRXhwclNpbmdsZV9pbl9wX0h5YnJpZDE2MDY5KSxzPXRoaXMucF9IeWJyaWRFeHByU2luZ2xlKGUsdCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIG47dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoaSxzLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOmk9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0YXRlbWVudF9pbl9wX0h5YnJpZDE2MDgyKSxvPXRoaXMucF9TdGF0ZW1lbnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gbjt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZChpLG8uZ2V0VHJlZSgpKX1uLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobi50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoaSksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhuLnRyZWUsbi5zdGFydCxuLnN0b3ApKX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGE7dmFyIGY9dGhpcy5wX1N0ZXBFeHByKCk7aT10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5hZGFwdG9yLmFkZENoaWxkKGksZi5nZXRUcmVlKCkpLG4uc3RvcD10aGlzLmlucHV0LkxUKC0xKSxuLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyhpKSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKG4udHJlZSxuLnN0YXJ0LG4uc3RvcCl9ZmluYWxseXt9cmV0dXJuIG59LHBfU3RhdGVtZW50X3JldHVybjpmdW5jdGlvbigpe3YucF9TdGF0ZW1lbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9TdGF0ZW1lbnRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1N0YXRlbWVudDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfU3RhdGVtZW50X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbDt0cnl7dmFyIGY9Njtzd2l0Y2godGhpcy5pbnB1dC5MQSgxKSl7Y2FzZSBwaTpmPTE7YnJlYWs7Y2FzZSBXcjpmPTI7YnJlYWs7Y2FzZSBYcjpmPTM7YnJlYWs7Y2FzZSBWcjpmPTQ7YnJlYWs7Y2FzZSBvbjpjYXNlIEVpOmY9NTticmVhaztjYXNlIEtyOmY9NjticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGw9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwyMzgsMCx0aGlzLmlucHV0KTt0aHJvdyBsfXN3aXRjaChmKXtjYXNlIDE6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQXNzaWduU3RhdGVtZW50X2luX3BfU3RhdGVtZW50MTYxMTMpLG49dGhpcy5wX0Fzc2lnblN0YXRlbWVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbi5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9CcmVha1N0YXRlbWVudF9pbl9wX1N0YXRlbWVudDE2MTI1KSxpPXRoaXMucF9CcmVha1N0YXRlbWVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMzp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Db250aW51ZVN0YXRlbWVudF9pbl9wX1N0YXRlbWVudDE2MTM3KSxzPXRoaXMucF9Db250aW51ZVN0YXRlbWVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgNDp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeGl0U3RhdGVtZW50X2luX3BfU3RhdGVtZW50MTYxNDkpLG89dGhpcy5wX0V4aXRTdGF0ZW1lbnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKTticmVhaztjYXNlIDU6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVmFyRGVjbFN0YXRlbWVudF9pbl9wX1N0YXRlbWVudDE2MTYxKSx1PXRoaXMucF9WYXJEZWNsU3RhdGVtZW50KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSk7YnJlYWs7Y2FzZSA2OnQ9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1doaWxlU3RhdGVtZW50X2luX3BfU3RhdGVtZW50MTYxNzMpLGE9dGhpcy5wX1doaWxlU3RhdGVtZW50KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYyl7aWYoIShjIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBjO3RoaXMucmVwb3J0RXJyb3IoYyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGMpfWZpbmFsbHl7fXJldHVybiBlfSxwX0h5YnJpZEV4cHJTaW5nbGVfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0h5YnJpZEV4cHJTaW5nbGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9IeWJyaWRFeHByU2luZ2xlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9IeWJyaWRFeHByU2luZ2xlOmZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IHYucF9IeWJyaWRFeHByU2luZ2xlX3JldHVybjtuLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbDt0cnl7aT10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwcl9pbl9wX0h5YnJpZEV4cHJTaW5nbGUxNjIwMCksbz10aGlzLnBfRXhwcihlLHQpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBuO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKGksby5nZXRUcmVlKCkpO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MClpZihlfHx0aGlzLmlucHV0LkxUKDEpLmdldFR5cGUoKSE9emkpdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbih0aGlzLmlucHV0KTtzPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6aSx2LkZPTExPV19TRU1JQ09MT05faW5fcF9IeWJyaWRFeHByU2luZ2xlMTYyMTUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBuO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQoaSx1KSksbi5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG4udHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKGkpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMobi50cmVlLG4uc3RhcnQsbi5zdG9wKSl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBhO2k9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChpLG8uZ2V0VHJlZSgpKSxuLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksbi50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcoaSksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhuLnRyZWUsbi5zdGFydCxuLnN0b3ApfWZpbmFsbHl7fXJldHVybiBufSxwX0FwcGx5U3RhdGVtZW50X3JldHVybjpmdW5jdGlvbigpe3YucF9BcHBseVN0YXRlbWVudF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0FwcGx5U3RhdGVtZW50X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9BcHBseVN0YXRlbWVudDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQXBwbHlTdGF0ZW1lbnRfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByU2ltcGxlX2luX3BfQXBwbHlTdGF0ZW1lbnQxNjI2NSksaT10aGlzLnBfRXhwclNpbXBsZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHppLHYuRk9MTE9XX1NFTUlDT0xPTl9pbl9wX0FwcGx5U3RhdGVtZW50MTYyNjcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2gobyl7aWYoIShvIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBvO3RoaXMucmVwb3J0RXJyb3IobyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsbyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLG8pfWZpbmFsbHl7fXJldHVybiBlfSxwX0Fzc2lnblN0YXRlbWVudF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfQXNzaWduU3RhdGVtZW50X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQXNzaWduU3RhdGVtZW50X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Bc3NpZ25TdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0Fzc2lnblN0YXRlbWVudF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQscGksdi5GT0xMT1dfRE9MTEFSX2luX3BfQXNzaWduU3RhdGVtZW50MTYyOTUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVmFyTmFtZV9pbl9wX0Fzc2lnblN0YXRlbWVudDE2Mjk5KSxvPXRoaXMucF9WYXJOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KG4sbz9vLnN0b3A6bnVsbCksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsYmksdi5GT0xMT1dfQklORF9pbl9wX0Fzc2lnblN0YXRlbWVudDE2MzAzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9Bc3NpZ25TdGF0ZW1lbnQxNjMwNSksdT10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSkscz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsemksdi5GT0xMT1dfU0VNSUNPTE9OX2luX3BfQXNzaWduU3RhdGVtZW50MTYzMDgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYyl7aWYoIShjIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBjO3RoaXMucmVwb3J0RXJyb3IoYyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGMpfWZpbmFsbHl7fXJldHVybiBlfSxwX0Jsb2NrU3RhdGVtZW50X3JldHVybjpmdW5jdGlvbigpe3YucF9CbG9ja1N0YXRlbWVudF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0Jsb2NrU3RhdGVtZW50X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9CbG9ja1N0YXRlbWVudDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQmxvY2tTdGF0ZW1lbnRfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGRpLHYuRk9MTE9XX0xCUkFDS0VUX2luX3BfQmxvY2tTdGF0ZW1lbnQxNjMzNCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TdGF0ZW1lbnRzX2luX3BfQmxvY2tTdGF0ZW1lbnQxNjMzNikscz10aGlzLnBfU3RhdGVtZW50cyghMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdmksdi5GT0xMT1dfUkJSQUNLRVRfaW5fcF9CbG9ja1N0YXRlbWVudDE2MzM5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdSkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGEpe2lmKCEoYSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgYTt0aGlzLnJlcG9ydEVycm9yKGEpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGEpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxhKX1maW5hbGx5e31yZXR1cm4gZX0scF9CbG9ja0h5YnJpZF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfQmxvY2tIeWJyaWRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9CbG9ja0h5YnJpZF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQmxvY2tIeWJyaWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHYucF9CbG9ja0h5YnJpZF9yZXR1cm47dC5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciBuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbDt0cnl7bj10aGlzLmFkYXB0b3IubmlsKCksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZGksdi5GT0xMT1dfTEJSQUNLRVRfaW5fcF9CbG9ja0h5YnJpZDE2MzY1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gdDt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sdSkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N0YXRlbWVudHNfaW5fcF9CbG9ja0h5YnJpZDE2MzY3KSxvPXRoaXMucF9TdGF0ZW1lbnRzKGUpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sby5nZXRUcmVlKCkpLHM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHZpLHYuRk9MTE9XX1JCUkFDS0VUX2luX3BfQmxvY2tIeWJyaWQxNjM3MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKHMpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGEpKSx0LnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodC50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcobiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyh0LnRyZWUsdC5zdGFydCx0LnN0b3ApKX1jYXRjaChmKXtpZighKGYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGY7dGhpcy5yZXBvcnRFcnJvcihmKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxmKSx0LnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LHQuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksZil9ZmluYWxseXt9cmV0dXJuIHR9LHBfQnJlYWtTdGF0ZW1lbnRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0JyZWFrU3RhdGVtZW50X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQnJlYWtTdGF0ZW1lbnRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0JyZWFrU3RhdGVtZW50OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9CcmVha1N0YXRlbWVudF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxXcix2LkZPTExPV19CUkVBS19pbl9wX0JyZWFrU3RhdGVtZW50MTYzOTgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LCRyLHYuRk9MTE9XX0xPT1BfaW5fcF9CcmVha1N0YXRlbWVudDE2NDA0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihzPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCx6aSx2LkZPTExPV19TRU1JQ09MT05faW5fcF9CcmVha1N0YXRlbWVudDE2NDA4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHUpe2lmKCEodSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgdTt0aGlzLnJlcG9ydEVycm9yKHUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHUpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx1KX1maW5hbGx5e31yZXR1cm4gZX0scF9Db250aW51ZVN0YXRlbWVudF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfQ29udGludWVTdGF0ZW1lbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9Db250aW51ZVN0YXRlbWVudF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQ29udGludWVTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0NvbnRpbnVlU3RhdGVtZW50X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFhyLHYuRk9MTE9XX0NPTlRJTlVFX2luX3BfQ29udGludWVTdGF0ZW1lbnQxNjQzNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsJHIsdi5GT0xMT1dfTE9PUF9pbl9wX0NvbnRpbnVlU3RhdGVtZW50MTY0NDIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHppLHYuRk9MTE9XX1NFTUlDT0xPTl9pbl9wX0NvbnRpbnVlU3RhdGVtZW50MTY0NDYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2godSl7aWYoISh1IGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB1O3RoaXMucmVwb3J0RXJyb3IodSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHUpfWZpbmFsbHl7fXJldHVybiBlfSxwX0V4aXRTdGF0ZW1lbnRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0V4aXRTdGF0ZW1lbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9FeGl0U3RhdGVtZW50X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9FeGl0U3RhdGVtZW50OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9FeGl0U3RhdGVtZW50X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxWcix2LkZPTExPV19FWElUX2luX3BfRXhpdFN0YXRlbWVudDE2NDc0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxKcix2LkZPTExPV19SRVRVUk5JTkdfaW5fcF9FeGl0U3RhdGVtZW50MTY0ODApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9FeGl0U3RhdGVtZW50MTY0ODQpLHM9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHppLHYuRk9MTE9XX1NFTUlDT0xPTl9pbl9wX0V4aXRTdGF0ZW1lbnQxNjQ4Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGE7dGhpcy5yZXBvcnRFcnJvcihhKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxhKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfRkxXT1JTdGF0ZW1lbnRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0ZMV09SU3RhdGVtZW50X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfRkxXT1JTdGF0ZW1lbnRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0ZMV09SU3RhdGVtZW50OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9GTFdPUlN0YXRlbWVudF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0luaXRpYWxDbGF1c2VfaW5fcF9GTFdPUlN0YXRlbWVudDE2NTEzKSxuPXRoaXMucF9Jbml0aWFsQ2xhdXNlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSk7ZTpkb3t2YXIgbz0yLHU9dGhpcy5pbnB1dC5MQSgxKTtpZih1PT1pdHx8dT09RXR8fHU9PUR0fHx1PT1KdHx8dT09YW58fHU9PXBufHx1PT15bilvPTE7c3dpdGNoKG8pe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9JbnRlcm1lZGlhdGVDbGF1c2VfaW5fcF9GTFdPUlN0YXRlbWVudDE2NTE1KSxpPXRoaXMucF9JbnRlcm1lZGlhdGVDbGF1c2UoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTt0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9SZXR1cm5TdGF0ZW1lbnRfaW5fcF9GTFdPUlN0YXRlbWVudDE2NTE4KSxzPXRoaXMucF9SZXR1cm5TdGF0ZW1lbnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGE7dGhpcy5yZXBvcnRFcnJvcihhKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxhKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfUmV0dXJuU3RhdGVtZW50X3JldHVybjpmdW5jdGlvbigpe3YucF9SZXR1cm5TdGF0ZW1lbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9SZXR1cm5TdGF0ZW1lbnRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1JldHVyblN0YXRlbWVudDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfUmV0dXJuU3RhdGVtZW50X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUnQsdi5GT0xMT1dfUkVUVVJOX2luX3BfUmV0dXJuU3RhdGVtZW50MTY1NTApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0h5YnJpZF9pbl9wX1JldHVyblN0YXRlbWVudDE2NTU0KSxpPXRoaXMucF9IeWJyaWQoITEsITEpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKG8pe2lmKCEobyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbzt0aGlzLnJlcG9ydEVycm9yKG8pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG8pLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxvKX1maW5hbGx5e31yZXR1cm4gZX0scF9JZlN0YXRlbWVudF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfSWZTdGF0ZW1lbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9JZlN0YXRlbWVudF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSWZTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0lmU3RhdGVtZW50X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsLGM9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsbHQsdi5GT0xMT1dfSUZfaW5fcF9JZlN0YXRlbWVudDE2NTgzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjaSx2LkZPTExPV19MUEFSRU5faW5fcF9JZlN0YXRlbWVudDE2NTg3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJfaW5fcF9JZlN0YXRlbWVudDE2NTg5KSxvPXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxoaSx2LkZPTExPV19SUEFSRU5faW5fcF9JZlN0YXRlbWVudDE2NTkyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYykpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFl0LHYuRk9MTE9XX1RIRU5faW5fcF9JZlN0YXRlbWVudDE2NTk2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9IeWJyaWRfaW5fcF9JZlN0YXRlbWVudDE2NjAwKSx1PXRoaXMucF9IeWJyaWQoITEsITEpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdS5nZXRUcmVlKCkpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEosdi5GT0xMT1dfRUxTRV9pbl9wX0lmU3RhdGVtZW50MTY2MDUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0h5YnJpZF9pbl9wX0lmU3RhdGVtZW50MTY2MDkpLGE9dGhpcy5wX0h5YnJpZCghMSwhMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goaCl7aWYoIShoIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBoO3RoaXMucmVwb3J0RXJyb3IoaCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGgpfWZpbmFsbHl7fXJldHVybiBlfSxwX1N3aXRjaFN0YXRlbWVudF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfU3dpdGNoU3RhdGVtZW50X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfU3dpdGNoU3RhdGVtZW50X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Td2l0Y2hTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1N3aXRjaFN0YXRlbWVudF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LF9uLHYuRk9MTE9XX1NXSVRDSF9pbl9wX1N3aXRjaFN0YXRlbWVudDE2NjM4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjaSx2LkZPTExPV19MUEFSRU5faW5fcF9Td2l0Y2hTdGF0ZW1lbnQxNjY0Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobD10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGwpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9FeHByX2luX3BfU3dpdGNoU3RhdGVtZW50MTY2NDQpLG89dGhpcy5wX0V4cHIoITAsITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpLHM9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGhpLHYuRk9MTE9XX1JQQVJFTl9pbl9wX1N3aXRjaFN0YXRlbWVudDE2NjQ3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYykpO3ZhciBoPTA7ZTpkb3t2YXIgcD0yLGQ9dGhpcy5pbnB1dC5MQSgxKTtkPT1NJiYocD0xKTtzd2l0Y2gocCl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N3aXRjaENhc2VTdGF0ZW1lbnRfaW5fcF9Td2l0Y2hTdGF0ZW1lbnQxNjY0OSksdT10aGlzLnBfU3dpdGNoQ2FzZVN0YXRlbWVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdS5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6aWYoaD49MSlicmVhayBlO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIG09bmV3IHIuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oMjQwLHRoaXMuaW5wdXQpO3Rocm93IG19aCsrfXdoaWxlKCEwKTtuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxxLHYuRk9MTE9XX0RFRkFVTFRfaW5fcF9Td2l0Y2hTdGF0ZW1lbnQxNjY1NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUnQsdi5GT0xMT1dfUkVUVVJOX2luX3BfU3dpdGNoU3RhdGVtZW50MTY2NjApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0h5YnJpZF9pbl9wX1N3aXRjaFN0YXRlbWVudDE2NjY0KSxhPXRoaXMucF9IeWJyaWQoITEsITEpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYS5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGcpe2lmKCEoZyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZzt0aGlzLnJlcG9ydEVycm9yKGcpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGcpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxnKX1maW5hbGx5e31yZXR1cm4gZX0scF9Td2l0Y2hDYXNlU3RhdGVtZW50X3JldHVybjpmdW5jdGlvbigpe3YucF9Td2l0Y2hDYXNlU3RhdGVtZW50X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfU3dpdGNoQ2FzZVN0YXRlbWVudF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfU3dpdGNoQ2FzZVN0YXRlbWVudDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfU3dpdGNoQ2FzZVN0YXRlbWVudF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKTt2YXIgdT0wO2U6ZG97dmFyIGE9MixmPXRoaXMuaW5wdXQuTEEoMSk7Zj09TSYmKGE9MSk7c3dpdGNoKGEpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxNLHYuRk9MTE9XX0NBU0VfaW5fcF9Td2l0Y2hDYXNlU3RhdGVtZW50MTY2OTQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1N3aXRjaENhc2VPcGVyYW5kX2luX3BfU3dpdGNoQ2FzZVN0YXRlbWVudDE2Njk4KSxpPXRoaXMucF9Td2l0Y2hDYXNlT3BlcmFuZCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6aWYodT49MSlicmVhayBlO2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dmFyIGw9bmV3IHIuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oMjQxLHRoaXMuaW5wdXQpO3Rocm93IGx9dSsrfXdoaWxlKCEwKTtuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxSdCx2LkZPTExPV19SRVRVUk5faW5fcF9Td2l0Y2hDYXNlU3RhdGVtZW50MTY3MDQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0h5YnJpZF9pbl9wX1N3aXRjaENhc2VTdGF0ZW1lbnQxNjcwOCkscz10aGlzLnBfSHlicmlkKCExLCExKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChjKXtpZighKGMgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGM7dGhpcy5yZXBvcnRFcnJvcihjKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxjKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfVHJ5Q2F0Y2hTdGF0ZW1lbnRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1RyeUNhdGNoU3RhdGVtZW50X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfVHJ5Q2F0Y2hTdGF0ZW1lbnRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1RyeUNhdGNoU3RhdGVtZW50OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9UcnlDYXRjaFN0YXRlbWVudF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsRG4sdi5GT0xMT1dfVFJZX2luX3BfVHJ5Q2F0Y2hTdGF0ZW1lbnQxNjczNyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQmxvY2tTdGF0ZW1lbnRfaW5fcF9UcnlDYXRjaFN0YXRlbWVudDE2NzQxKSxpPXRoaXMucF9CbG9ja1N0YXRlbWVudCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO3ZhciBhPTA7ZTpkb3t2YXIgZj0yLGw9dGhpcy5pbnB1dC5MQSgxKTtsPT1jbiYmKGY9MSk7c3dpdGNoKGYpe2Nhc2UgMTpuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjbix2LkZPTExPV19DQVRDSF9pbl9wX1RyeUNhdGNoU3RhdGVtZW50MTY3NDYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0NhdGNoRXJyb3JMaXN0X2luX3BfVHJ5Q2F0Y2hTdGF0ZW1lbnQxNjc1MCkscz10aGlzLnBfQ2F0Y2hFcnJvckxpc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9CbG9ja1N0YXRlbWVudF9pbl9wX1RyeUNhdGNoU3RhdGVtZW50MTY3NTIpLG89dGhpcy5wX0Jsb2NrU3RhdGVtZW50KCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDppZihhPj0xKWJyZWFrIGU7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgYz1uZXcgci5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbigyNDIsdGhpcy5pbnB1dCk7dGhyb3cgY31hKyt9d2hpbGUoITApO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChoKXtpZighKGggaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGg7dGhpcy5yZXBvcnRFcnJvcihoKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxoKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfVHJ5Q2F0Y2hIeWJyaWRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1RyeUNhdGNoSHlicmlkX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfVHJ5Q2F0Y2hIeWJyaWRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1RyeUNhdGNoSHlicmlkOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyB2LnBfVHJ5Q2F0Y2hIeWJyaWRfcmV0dXJuO3Quc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e249dGhpcy5hZGFwdG9yLm5pbCgpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LERuLHYuRk9MTE9XX1RSWV9pbl9wX1RyeUNhdGNoSHlicmlkMTY3ODQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixhKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKGkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0Jsb2NrSHlicmlkX2luX3BfVHJ5Q2F0Y2hIeWJyaWQxNjc4OCkscz10aGlzLnBfQmxvY2tIeWJyaWQoZSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobixzLmdldFRyZWUoKSk7dmFyIGY9MDtlOmRve3ZhciBsPTIsYz10aGlzLmlucHV0LkxBKDEpO2M9PWNuJiYobD0xKTtzd2l0Y2gobCl7Y2FzZSAxOmk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LGNuLHYuRk9MTE9XX0NBVENIX2luX3BfVHJ5Q2F0Y2hIeWJyaWQxNjc5NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZChuLGEpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfQ2F0Y2hFcnJvckxpc3RfaW5fcF9UcnlDYXRjaEh5YnJpZDE2Nzk4KSxvPXRoaXMucF9DYXRjaEVycm9yTGlzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiB0O3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKG4sby5nZXRUcmVlKCkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0Jsb2NrSHlicmlkX2luX3BfVHJ5Q2F0Y2hIeWJyaWQxNjgwMCksdT10aGlzLnBfQmxvY2tIeWJyaWQoZSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIHQ7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQobix1LmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDppZihmPj0xKWJyZWFrIGU7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsdDt2YXIgaD1uZXcgci5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbigyNDMsdGhpcy5pbnB1dCk7dGhyb3cgaH1mKyt9d2hpbGUoITApO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhpKSx0LnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodC50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcobiksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyh0LnRyZWUsdC5zdGFydCx0LnN0b3ApKX1jYXRjaChwKXtpZighKHAgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IHA7dGhpcy5yZXBvcnRFcnJvcihwKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxwKSx0LnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LHQuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSkscCl9ZmluYWxseXt9cmV0dXJuIHR9LHBfVHlwZXN3aXRjaFN0YXRlbWVudF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfVHlwZXN3aXRjaFN0YXRlbWVudF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX1R5cGVzd2l0Y2hTdGF0ZW1lbnRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1R5cGVzd2l0Y2hTdGF0ZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX1R5cGVzd2l0Y2hTdGF0ZW1lbnRfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbCxsPW51bGwsYz1udWxsLGg9bnVsbCxwPW51bGwsZD1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCx0bix2LkZPTExPV19UWVBFU1dJVENIX2luX3BfVHlwZXN3aXRjaFN0YXRlbWVudDE2ODMzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjaSx2LkZPTExPV19MUEFSRU5faW5fcF9UeXBlc3dpdGNoU3RhdGVtZW50MTY4MzcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHA9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxwKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwcl9pbl9wX1R5cGVzd2l0Y2hTdGF0ZW1lbnQxNjgzOSksYT10aGlzLnBfRXhwcighMCwhMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSksbz10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaGksdi5GT0xMT1dfUlBBUkVOX2luX3BfVHlwZXN3aXRjaFN0YXRlbWVudDE2ODQyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihkPXRoaXMuYWRhcHRvci5jcmVhdGUobyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZCkpO3ZhciBtPTA7ZTpkb3t2YXIgZz0yLHk9dGhpcy5pbnB1dC5MQSgxKTt5PT1NJiYoZz0xKTtzd2l0Y2goZyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0Nhc2VTdGF0ZW1lbnRfaW5fcF9UeXBlc3dpdGNoU3RhdGVtZW50MTY4NDQpLGY9dGhpcy5wX0Nhc2VTdGF0ZW1lbnQoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYuZ2V0VHJlZSgpKTticmVhaztkZWZhdWx0OmlmKG0+PTEpYnJlYWsgZTtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBiPW5ldyByLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDI0NCx0aGlzLmlucHV0KTt0aHJvdyBifW0rK313aGlsZSghMCk7bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQscSx2LkZPTExPV19ERUZBVUxUX2luX3BfVHlwZXN3aXRjaFN0YXRlbWVudDE2ODQ5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKTt2YXIgdz0yLEU9dGhpcy5pbnB1dC5MQSgxKTtFPT1waSYmKHc9MSk7c3dpdGNoKHcpe2Nhc2UgMTppPXRoaXMubWF0Y2godGhpcy5pbnB1dCxwaSx2LkZPTExPV19ET0xMQVJfaW5fcF9UeXBlc3dpdGNoU3RhdGVtZW50MTY4NTYpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGg9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxoKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVmFyTmFtZV9pbl9wX1R5cGVzd2l0Y2hTdGF0ZW1lbnQxNjg2MCksdT10aGlzLnBfVmFyTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdS5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihpLHU/dS5zdG9wOm51bGwpfW49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFJ0LHYuRk9MTE9XX1JFVFVSTl9pbl9wX1R5cGVzd2l0Y2hTdGF0ZW1lbnQxNjg2OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGMpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfSHlicmlkX2luX3BfVHlwZXN3aXRjaFN0YXRlbWVudDE2ODcyKSxsPXRoaXMucF9IeWJyaWQoITEsITEpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbC5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKFMpe2lmKCEoUyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgUzt0aGlzLnJlcG9ydEVycm9yKFMpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LFMpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxTKX1maW5hbGx5e31yZXR1cm4gZX0scF9DYXNlU3RhdGVtZW50X3JldHVybjpmdW5jdGlvbigpe3YucF9DYXNlU3RhdGVtZW50X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQ2FzZVN0YXRlbWVudF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQ2FzZVN0YXRlbWVudDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQ2FzZVN0YXRlbWVudF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbCxjPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LE0sdi5GT0xMT1dfQ0FTRV9pbl9wX0Nhc2VTdGF0ZW1lbnQxNjkwMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobik7dmFyIGg9MixwPXRoaXMuaW5wdXQuTEEoMSk7cD09cGkmJihoPTEpO3N3aXRjaChoKXtjYXNlIDE6aT10aGlzLm1hdGNoKHRoaXMuaW5wdXQscGksdi5GT0xMT1dfRE9MTEFSX2luX3BfQ2FzZVN0YXRlbWVudDE2OTA4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1Zhck5hbWVfaW5fcF9DYXNlU3RhdGVtZW50MTY5MTIpLG89dGhpcy5wX1Zhck5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoaSxvP28uc3RvcDpudWxsKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxULHYuRk9MTE9XX0FTX2luX3BfQ2FzZVN0YXRlbWVudDE2OTE2KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihjPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYykpfXRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1NlcXVlbmNlVHlwZV9pbl9wX0Nhc2VTdGF0ZW1lbnQxNjkyMCksdT10aGlzLnBfU2VxdWVuY2VUeXBlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsUnQsdi5GT0xMT1dfUkVUVVJOX2luX3BfQ2FzZVN0YXRlbWVudDE2OTI0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9IeWJyaWRfaW5fcF9DYXNlU3RhdGVtZW50MTY5MjgpLGE9dGhpcy5wX0h5YnJpZCghMSwhMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZCl7aWYoIShkIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBkO3RoaXMucmVwb3J0RXJyb3IoZCksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZCksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGQpfWZpbmFsbHl7fXJldHVybiBlfSxwX1ZhckRlY2xTdGF0ZW1lbnRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1ZhckRlY2xTdGF0ZW1lbnRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9WYXJEZWNsU3RhdGVtZW50X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9WYXJEZWNsU3RhdGVtZW50OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9WYXJEZWNsU3RhdGVtZW50X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbCxmPW51bGwsbD1udWxsLGM9bnVsbCxoPW51bGwscD1udWxsLGQ9bnVsbCxtPW51bGwsZz1udWxsLHk9bnVsbCxiPW51bGwsdz1udWxsLEU9bnVsbCxTPW51bGwseD1udWxsLE49bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCk7ZTpkb3t2YXIgQz0yLGs9dGhpcy5pbnB1dC5MQSgxKTtrPT1FaSYmKEM9MSk7c3dpdGNoKEMpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9Bbm5vdGF0aW9uX2luX3BfVmFyRGVjbFN0YXRlbWVudDE2OTU1KSxoPXRoaXMucF9Bbm5vdGF0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxoLmdldFRyZWUoKSk7YnJlYWs7ZGVmYXVsdDpicmVhayBlfX13aGlsZSghMCk7bj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsb24sdi5GT0xMT1dfVkFSSUFCTEVfaW5fcF9WYXJEZWNsU3RhdGVtZW50MTY5NjApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHk9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx5KSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBpLHYuRk9MTE9XX0RPTExBUl9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNjk2Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYj10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGIpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9WYXJOYW1lX2luX3BfVmFyRGVjbFN0YXRlbWVudDE2OTcwKSxsPXRoaXMucF9WYXJOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsLmdldFRyZWUoKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmF2KGksbD9sLnN0b3A6bnVsbCk7dmFyIEw9MixBPXRoaXMuaW5wdXQuTEEoMSk7QT09VCYmKEw9MSk7c3dpdGNoKEwpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9UeXBlRGVjbGFyYXRpb25faW5fcF9WYXJEZWNsU3RhdGVtZW50MTY5NzQpLHA9dGhpcy5wX1R5cGVEZWNsYXJhdGlvbigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscC5nZXRUcmVlKCkpfXZhciBPPTIsTT10aGlzLmlucHV0LkxBKDEpO009PWJpJiYoTz0xKTtzd2l0Y2goTyl7Y2FzZSAxOm89dGhpcy5tYXRjaCh0aGlzLmlucHV0LGJpLHYuRk9MTE9XX0JJTkRfaW5fcF9WYXJEZWNsU3RhdGVtZW50MTY5NzgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKEU9dGhpcy5hZGFwdG9yLmNyZWF0ZShvKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxFKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNjk4MCksZD10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxkLmdldFRyZWUoKSl9dDpkb3t2YXIgXz0yLEQ9dGhpcy5pbnB1dC5MQSgxKTtEPT1UaSYmKF89MSk7c3dpdGNoKF8pe2Nhc2UgMTp1PXRoaXMubWF0Y2godGhpcy5pbnB1dCxUaSx2LkZPTExPV19DT01NQV9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNjk5Nik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoUz10aGlzLmFkYXB0b3IuY3JlYXRlKHUpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LFMpKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxwaSx2LkZPTExPV19ET0xMQVJfaW5fcF9WYXJEZWNsU3RhdGVtZW50MTcwMDApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHc9dGhpcy5hZGFwdG9yLmNyZWF0ZShzKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx3KSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVmFyTmFtZV9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNzAwNCksYz10aGlzLnBfVmFyTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYy5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihzLGM/Yy5zdG9wOm51bGwpO3ZhciBQPTIsSD10aGlzLmlucHV0LkxBKDEpO0g9PVQmJihQPTEpO3N3aXRjaChQKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfVHlwZURlY2xhcmF0aW9uX2luX3BfVmFyRGVjbFN0YXRlbWVudDE3MDA4KSxtPXRoaXMucF9UeXBlRGVjbGFyYXRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG0uZ2V0VHJlZSgpKX12YXIgQj0yLGo9dGhpcy5pbnB1dC5MQSgxKTtqPT1iaSYmKEI9MSk7c3dpdGNoKEIpe2Nhc2UgMTphPXRoaXMubWF0Y2godGhpcy5pbnB1dCxiaSx2LkZPTExPV19CSU5EX2luX3BfVmFyRGVjbFN0YXRlbWVudDE3MDEyKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih4PXRoaXMuYWRhcHRvci5jcmVhdGUoYSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQseCkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9WYXJEZWNsU3RhdGVtZW50MTcwMTQpLGc9dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZy5nZXRUcmVlKCkpfWJyZWFrO2RlZmF1bHQ6YnJlYWsgdH19d2hpbGUoITApO2Y9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHppLHYuRk9MTE9XX1NFTUlDT0xPTl9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNzAzMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoTj10aGlzLmFkYXB0b3IuY3JlYXRlKGYpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LE4pKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChGKXtpZighKEYgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IEY7dGhpcy5yZXBvcnRFcnJvcihGKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxGKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksRil9ZmluYWxseXt9cmV0dXJuIGV9LHBfV2hpbGVTdGF0ZW1lbnRfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX1doaWxlU3RhdGVtZW50X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfV2hpbGVTdGF0ZW1lbnRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX1doaWxlU3RhdGVtZW50OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9XaGlsZVN0YXRlbWVudF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsS3Isdi5GT0xMT1dfV0hJTEVfaW5fcF9XaGlsZVN0YXRlbWVudDE3MDU5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSxpPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjaSx2LkZPTExPV19MUEFSRU5faW5fcF9XaGlsZVN0YXRlbWVudDE3MDYzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihmPXRoaXMuYWRhcHRvci5jcmVhdGUoaSksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsZikpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0V4cHJfaW5fcF9XaGlsZVN0YXRlbWVudDE3MDY1KSxvPXRoaXMucF9FeHByKCEwLCEwKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKSxzPXRoaXMubWF0Y2godGhpcy5pbnB1dCxoaSx2LkZPTExPV19SUEFSRU5faW5fcF9XaGlsZVN0YXRlbWVudDE3MDY4KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihsPXRoaXMuYWRhcHRvci5jcmVhdGUocyksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbCkpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0h5YnJpZF9pbl9wX1doaWxlU3RhdGVtZW50MTcwNzApLHU9dGhpcy5wX0h5YnJpZCghMSwhMSksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1LmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYyl7aWYoIShjIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBjO3RoaXMucmVwb3J0RXJyb3IoYyksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYyksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGMpfWZpbmFsbHl7fXJldHVybiBlfSxwX0V4cHJTaW1wbGVfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0V4cHJTaW1wbGVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9FeHByU2ltcGxlX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9FeHByU2ltcGxlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9FeHByU2ltcGxlX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbDt0cnl7dmFyIG89MztvPXRoaXMuZGZhMjUzLnByZWRpY3QodGhpcy5pbnB1dCk7c3dpdGNoKG8pe2Nhc2UgMTp0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9RdWFudGlmaWVkRXhwcl9pbl9wX0V4cHJTaW1wbGUxNzA5Nyksbj10aGlzLnBfUXVhbnRpZmllZEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKTticmVhaztjYXNlIDI6dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfT3JFeHByX2luX3BfRXhwclNpbXBsZTE3MTA5KSxpPXRoaXMucF9PckV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTticmVhaztjYXNlIDM6dD10aGlzLmFkYXB0b3IubmlsKCk7aWYoIXRoaXMubGMoaCkpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMuc3RhdGUuZmFpbGVkPSEwLGU7dGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwicF9FeHByU2ltcGxlIiwidGhpcy5sYyhYUVUpIil9dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BnX1VwZGF0ZUV4cHJfaW5fcF9FeHByU2ltcGxlMTcxMjQpLHM9dGhpcy5wZ19VcGRhdGVFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2godSl7aWYoISh1IGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyB1O3RoaXMucmVwb3J0RXJyb3IodSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsdSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLHUpfWZpbmFsbHl7fXJldHVybiBlfSxwX0Jsb2NrRXhwcl9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfQmxvY2tFeHByX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQmxvY2tFeHByX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9CbG9ja0V4cHI6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0Jsb2NrRXhwcl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZGksdi5GT0xMT1dfTEJSQUNLRVRfaW5fcF9CbG9ja0V4cHIxNzE1MCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYobz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8pKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9TdGF0ZW1lbnRzQW5kRXhwcl9pbl9wX0Jsb2NrRXhwcjE3MTUyKSxzPXRoaXMucF9TdGF0ZW1lbnRzQW5kRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHZpLHYuRk9MTE9XX1JCUkFDS0VUX2luX3BfQmxvY2tFeHByMTcxNTQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBhO3RoaXMucmVwb3J0RXJyb3IoYSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsYSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGEpfWZpbmFsbHl7fXJldHVybiBlfSxwX0NvbGxlY3Rpb25EZWNsX3JldHVybjpmdW5jdGlvbigpe3YucF9Db2xsZWN0aW9uRGVjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0NvbGxlY3Rpb25EZWNsX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9Db2xsZWN0aW9uRGVjbDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQ29sbGVjdGlvbkRlY2xfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsR3Isdi5GT0xMT1dfQ09MTEVDVElPTl9pbl9wX0NvbGxlY3Rpb25EZWNsMTcxODUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1FOYW1lX2luX3BfQ29sbGVjdGlvbkRlY2wxNzE4OSksaT10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTt2YXIgdT0yLGE9dGhpcy5pbnB1dC5MQSgxKTthPT1UJiYodT0xKTtzd2l0Y2godSl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0NvbGxlY3Rpb25UeXBlRGVjbF9pbl9wX0NvbGxlY3Rpb25EZWNsMTcxOTEpLHM9dGhpcy5wX0NvbGxlY3Rpb25UeXBlRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gZX0scF9Db2xsZWN0aW9uVHlwZURlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0NvbGxlY3Rpb25UeXBlRGVjbF9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0NvbGxlY3Rpb25UeXBlRGVjbF9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQ29sbGVjdGlvblR5cGVEZWNsOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9Db2xsZWN0aW9uVHlwZURlY2xfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsVCx2LkZPTExPV19BU19pbl9wX0NvbGxlY3Rpb25UeXBlRGVjbDE3MjIwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9LaW5kVGVzdF9pbl9wX0NvbGxlY3Rpb25UeXBlRGVjbDE3MjI0KSxpPXRoaXMucF9LaW5kVGVzdCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO3ZhciB1PTIsYT10aGlzLmlucHV0LkxBKDEpO2E+PU5pJiZhPD1raSYmdGhpcy5zeW5wcmVkMThfWFF1ZXJ5UGFyc2VyKCkmJih1PTEpO3N3aXRjaCh1KXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfT2NjdXJyZW5jZUluZGljYXRvcl9pbl9wX0NvbGxlY3Rpb25UeXBlRGVjbDE3MjMzKSxzPXRoaXMucF9PY2N1cnJlbmNlSW5kaWNhdG9yKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSl9ZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwX0luZGV4RGVjbF9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfSW5kZXhEZWNsX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfSW5kZXhEZWNsX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9JbmRleERlY2w6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0luZGV4RGVjbF9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGwsZj1udWxsLGw9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsdGksdi5GT0xMT1dfSU5ERVhfaW5fcF9JbmRleERlY2wxNzI2Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZj10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGYpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfSW5kZXhOYW1lX2luX3BfSW5kZXhEZWNsMTcyNjcpLHM9dGhpcy5wX0luZGV4TmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LGlpLHYuRk9MTE9XX09OX2luX3BfSW5kZXhEZWNsMTcyNzEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEpuLHYuRk9MTE9XX05PREVTX2luX3BfSW5kZXhEZWNsMTcyNzcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0luZGV4RG9tYWluRXhwcl9pbl9wX0luZGV4RGVjbDE3MjgxKSxvPXRoaXMucF9JbmRleERvbWFpbkV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxPLHYuRk9MTE9XX0JZX2luX3BfSW5kZXhEZWNsMTcyODUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0luZGV4S2V5U3BlY19pbl9wX0luZGV4RGVjbDE3Mjg5KSx1PXRoaXMucF9JbmRleEtleVNwZWMoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKTtlOmRve3ZhciBjPTIsaD10aGlzLmlucHV0LkxBKDEpO2g9PVRpJiYoYz0xKTtzd2l0Y2goYyl7Y2FzZSAxOmk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFRpLHYuRk9MTE9XX0NPTU1BX2luX3BfSW5kZXhEZWNsMTcyOTIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGw9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxsKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfSW5kZXhLZXlTcGVjX2luX3BfSW5kZXhEZWNsMTcyOTQpLGE9dGhpcy5wX0luZGV4S2V5U3BlYygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYS5nZXRUcmVlKCkpO2JyZWFrO2RlZmF1bHQ6YnJlYWsgZX19d2hpbGUoITApO2Uuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHApe2lmKCEocCBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgcDt0aGlzLnJlcG9ydEVycm9yKHApLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHApLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxwKX1maW5hbGx5e31yZXR1cm4gZX0scF9JbmRleE5hbWVfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0luZGV4TmFtZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0luZGV4TmFtZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSW5kZXhOYW1lOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9JbmRleE5hbWVfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUU5hbWVfaW5fcF9JbmRleE5hbWUxNzMyMSksbj10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfSW5kZXhEb21haW5FeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9JbmRleERvbWFpbkV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9JbmRleERvbWFpbkV4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0luZGV4RG9tYWluRXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfSW5kZXhEb21haW5FeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1BhdGhFeHByX2luX3BfSW5kZXhEb21haW5FeHByMTczNDYpLG49dGhpcy5wX1BhdGhFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBlfSxwX0luZGV4S2V5U3BlY19yZXR1cm46ZnVuY3Rpb24oKXt2LnBfSW5kZXhLZXlTcGVjX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfSW5kZXhLZXlTcGVjX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9JbmRleEtleVNwZWM6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0luZGV4S2V5U3BlY19yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0luZGV4S2V5RXhwcl9pbl9wX0luZGV4S2V5U3BlYzE3MzcxKSxuPXRoaXMucF9JbmRleEtleUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKTt2YXIgbz0yLHU9dGhpcy5pbnB1dC5MQSgxKTt1PT1UJiYobz0xKTtzd2l0Y2gobyl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0luZGV4S2V5VHlwZURlY2xfaW5fcF9JbmRleEtleVNwZWMxNzM3MyksaT10aGlzLnBfSW5kZXhLZXlUeXBlRGVjbCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpfXZhciBhPTIsZj10aGlzLmlucHV0LkxBKDEpO2Y9PUgmJihhPTEpO3N3aXRjaChhKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfSW5kZXhLZXlDb2xsYXRpb25faW5fcF9JbmRleEtleVNwZWMxNzM3Nikscz10aGlzLnBfSW5kZXhLZXlDb2xsYXRpb24oKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGV9LHBfSW5kZXhLZXlFeHByX3JldHVybjpmdW5jdGlvbigpe3YucF9JbmRleEtleUV4cHJfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9JbmRleEtleUV4cHJfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0luZGV4S2V5RXhwcjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfSW5kZXhLZXlFeHByX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1BhdGhFeHByX2luX3BfSW5kZXhLZXlFeHByMTc0MDIpLG49dGhpcy5wX1BhdGhFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxuLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goaSl7aWYoIShpIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBpO3RoaXMucmVwb3J0RXJyb3IoaSksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsaSksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGkpfWZpbmFsbHl7fXJldHVybiBlfSxwX0luZGV4S2V5VHlwZURlY2xfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0luZGV4S2V5VHlwZURlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9JbmRleEtleVR5cGVEZWNsX3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9JbmRleEtleVR5cGVEZWNsOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9JbmRleEtleVR5cGVEZWNsX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFQsdi5GT0xMT1dfQVNfaW5fcF9JbmRleEtleVR5cGVEZWNsMTc0MjkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0F0b21pY1R5cGVfaW5fcF9JbmRleEtleVR5cGVEZWNsMTc0MzMpLGk9dGhpcy5wX0F0b21pY1R5cGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKTt2YXIgdT0yLGE9dGhpcy5pbnB1dC5MQSgxKTthPj1OaSYmYTw9a2kmJih1PTEpO3N3aXRjaCh1KXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfT2NjdXJyZW5jZUluZGljYXRvcl9pbl9wX0luZGV4S2V5VHlwZURlY2wxNzQzNSkscz10aGlzLnBfT2NjdXJyZW5jZUluZGljYXRvcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpfWUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gZX0scF9BdG9taWNUeXBlX3JldHVybjpmdW5jdGlvbigpe3YucF9BdG9taWNUeXBlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfQXRvbWljVHlwZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfQXRvbWljVHlwZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfQXRvbWljVHlwZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9RTmFtZV9pbl9wX0F0b21pY1R5cGUxNzQ2MSksbj10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG4uZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGk7dGhpcy5yZXBvcnRFcnJvcihpKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxpKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksaSl9ZmluYWxseXt9cmV0dXJuIGV9LHBfSW5kZXhLZXlDb2xsYXRpb25fcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0luZGV4S2V5Q29sbGF0aW9uX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfSW5kZXhLZXlDb2xsYXRpb25fcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0luZGV4S2V5Q29sbGF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9JbmRleEtleUNvbGxhdGlvbl9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEgsdi5GT0xMT1dfQ09MTEFUSU9OX2luX3BfSW5kZXhLZXlDb2xsYXRpb24xNzQ4OCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0luZGV4S2V5Q29sbGF0aW9uMTc0OTIpLGk9dGhpcy5wX1N0cmluZ0xpdGVyYWwoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChvKXtpZighKG8gaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG87dGhpcy5yZXBvcnRFcnJvcihvKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxvKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfSUNEZWNsX3JldHVybjpmdW5jdGlvbigpe3YucF9JQ0RlY2xfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9JQ0RlY2xfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0lDRGVjbDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfSUNEZWNsX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxuaSx2LkZPTExPV19JTlRFR1JJVFlfaW5fcF9JQ0RlY2wxNzUxOSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsWXIsdi5GT0xMT1dfQ09OU1RSQUlOVF9pbl9wX0lDRGVjbDE3NTI1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJih1PXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsdSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9RTmFtZV9pbl9wX0lDRGVjbDE3NTI5KSxpPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO3ZhciBhPTIsZj10aGlzLmlucHV0LkxBKDEpO2lmKGY9PWlpKWE9MTtlbHNle2lmKGYhPWVpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnN0YXRlLmZhaWxlZD0hMCxlO3ZhciBsPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjYwLDAsdGhpcy5pbnB1dCk7dGhyb3cgbH1hPTJ9c3dpdGNoKGEpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9JQ0NvbGxlY3Rpb25faW5fcF9JQ0RlY2wxNzUzMikscz10aGlzLnBfSUNDb2xsZWN0aW9uKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzLmdldFRyZWUoKSk7YnJlYWs7Y2FzZSAyOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0lDRm9yZWlnbktleV9pbl9wX0lDRGVjbDE3NTM2KSxvPXRoaXMucF9JQ0ZvcmVpZ25LZXkoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LG8uZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChjKXtpZighKGMgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGM7dGhpcy5yZXBvcnRFcnJvcihjKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxjKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfSUNDb2xsZWN0aW9uX3JldHVybjpmdW5jdGlvbigpe3YucF9JQ0NvbGxlY3Rpb25fcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9JQ0NvbGxlY3Rpb25fcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0lDQ29sbGVjdGlvbjpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfSUNDb2xsZWN0aW9uX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsaWksdi5GT0xMT1dfT05faW5fcF9JQ0NvbGxlY3Rpb24xNzU2NCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsR3Isdi5GT0xMT1dfQ09MTEVDVElPTl9pbl9wX0lDQ29sbGVjdGlvbjE3NTcwKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9RTmFtZV9pbl9wX0lDQ29sbGVjdGlvbjE3NTc0KSxpPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpO3ZhciBmPTM7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgcGk6Zj0xO2JyZWFrO2Nhc2UgQXQ6Zj0yO2JyZWFrO2Nhc2UgWnI6Zj0zO2JyZWFrO2RlZmF1bHQ6aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5zdGF0ZS5mYWlsZWQ9ITAsZTt2YXIgbD1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDI2MSwwLHRoaXMuaW5wdXQpO3Rocm93IGx9c3dpdGNoKGYpe2Nhc2UgMTp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9JQ0NvbGxTZXF1ZW5jZV9pbl9wX0lDQ29sbGVjdGlvbjE3NTc3KSxzPXRoaXMucF9JQ0NvbGxTZXF1ZW5jZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMjp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9JQ0NvbGxTZXF1ZW5jZVVuaXF1ZV9pbl9wX0lDQ29sbGVjdGlvbjE3NTgxKSxvPXRoaXMucF9JQ0NvbGxTZXF1ZW5jZVVuaXF1ZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpO2JyZWFrO2Nhc2UgMzp0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9JQ0NvbGxOb2RlX2luX3BfSUNDb2xsZWN0aW9uMTc1ODUpLHU9dGhpcy5wX0lDQ29sbE5vZGUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKX1lLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChjKXtpZighKGMgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGM7dGhpcy5yZXBvcnRFcnJvcihjKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxjKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksYyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfSUNDb2xsU2VxdWVuY2VfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0lDQ29sbFNlcXVlbmNlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfSUNDb2xsU2VxdWVuY2VfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0lDQ29sbFNlcXVlbmNlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9JQ0NvbGxTZXF1ZW5jZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBpLHYuRk9MTE9XX0RPTExBUl9pbl9wX0lDQ29sbFNlcXVlbmNlMTc2MTMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUU5hbWVfaW5fcF9JQ0NvbGxTZXF1ZW5jZTE3NjE3KSxzPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihuLHM/cy5zdG9wOm51bGwpLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LFFyLHYuRk9MTE9XX0NIRUNLX2luX3BfSUNDb2xsU2VxdWVuY2UxNzYyMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsoaSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0lDQ29sbFNlcXVlbmNlMTc2MjcpLG89dGhpcy5wX0V4cHJTaW5nbGUoITApLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gZX0scF9JQ0NvbGxTZXF1ZW5jZVVuaXF1ZV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfSUNDb2xsU2VxdWVuY2VVbmlxdWVfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9JQ0NvbGxTZXF1ZW5jZVVuaXF1ZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSUNDb2xsU2VxdWVuY2VVbmlxdWU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0lDQ29sbFNlcXVlbmNlVW5pcXVlX3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbCxvPW51bGwsdT1udWxsLGE9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsQXQsdi5GT0xMT1dfTk9ERV9pbl9wX0lDQ29sbFNlcXVlbmNlVW5pcXVlMTc2NTUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBpLHYuRk9MTE9XX0RPTExBUl9pbl9wX0lDQ29sbFNlcXVlbmNlVW5pcXVlMTc2NjEpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGE9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxhKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUU5hbWVfaW5fcF9JQ0NvbGxTZXF1ZW5jZVVuaXF1ZTE3NjY1KSxzPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hdihpLHM/cy5zdG9wOm51bGwpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFFyLHYuRk9MTE9XX0NIRUNLX2luX3BfSUNDb2xsU2VxdWVuY2VVbmlxdWUxNzY3MSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsc2ksdi5GT0xMT1dfVU5JUVVFX2luX3BfSUNDb2xsU2VxdWVuY2VVbmlxdWUxNzY3Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQscmksdi5GT0xMT1dfS0VZX2luX3BfSUNDb2xsU2VxdWVuY2VVbmlxdWUxNzY4Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUGF0aEV4cHJfaW5fcF9JQ0NvbGxTZXF1ZW5jZVVuaXF1ZTE3Njg3KSxvPXRoaXMucF9QYXRoRXhwcigpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgZjt0aGlzLnJlcG9ydEVycm9yKGYpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LGYpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxmKX1maW5hbGx5e31yZXR1cm4gZX0scF9JQ0NvbGxOb2RlX3JldHVybjpmdW5jdGlvbigpe3YucF9JQ0NvbGxOb2RlX3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfSUNDb2xsTm9kZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSUNDb2xsTm9kZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfSUNDb2xsTm9kZV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsLHU9bnVsbCxhPW51bGw7dHJ5e3Q9dGhpcy5hZGFwdG9yLm5pbCgpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LFpyLHYuRk9MTE9XX0ZPUkVBQ0hfaW5fcF9JQ0NvbGxOb2RlMTc3MTQpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEF0LHYuRk9MTE9XX05PREVfaW5fcF9JQ0NvbGxOb2RlMTc3MjApO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHU9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCx1KSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLGk9dGhpcy5tYXRjaCh0aGlzLmlucHV0LHBpLHYuRk9MTE9XX0RPTExBUl9pbl9wX0lDQ29sbE5vZGUxNzcyNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKGkpLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9RTmFtZV9pbl9wX0lDQ29sbE5vZGUxNzczMCkscz10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoaSxzP3Muc3RvcDpudWxsKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxRcix2LkZPTExPV19DSEVDS19pbl9wX0lDQ29sbE5vZGUxNzczNik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYodT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0lDQ29sbE5vZGUxNzc0MCksbz10aGlzLnBfRXhwclNpbmdsZSghMCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvLmdldFRyZWUoKSksZS5zdG9wPXRoaXMuaW5wdXQuTFQoLTEpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGUudHJlZT10aGlzLmFkYXB0b3IucnVsZVBvc3RQcm9jZXNzaW5nKHQpLHRoaXMuYWRhcHRvci5zZXRUb2tlbkJvdW5kYXJpZXMoZS50cmVlLGUuc3RhcnQsZS5zdG9wKSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2Ygci5hbnRsci5ydW50aW1lLlJlY29nbml0aW9uRXhjZXB0aW9uKSl0aHJvdyBmO3RoaXMucmVwb3J0RXJyb3IoZiksdGhpcy5yZWNvdmVyKHRoaXMuaW5wdXQsZiksZS50cmVlPXRoaXMuYWRhcHRvci5lcnJvck5vZGUodGhpcy5pbnB1dCxlLnN0YXJ0LHRoaXMuaW5wdXQuTFQoLTEpLGYpfWZpbmFsbHl7fXJldHVybiBlfSxwX0lDRm9yZWlnbktleV9yZXR1cm46ZnVuY3Rpb24oKXt2LnBfSUNGb3JlaWduS2V5X3JldHVybj1mdW5jdGlvbigpe30sci5hbnRsci5sYW5nLmV4dGVuZCh2LnBfSUNGb3JlaWduS2V5X3JldHVybixyLmFudGxyLnJ1bnRpbWUuUGFyc2VyUnVsZVJldHVyblNjb3BlLHtnZXRUcmVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJlZX19KTtyZXR1cm59KCkscF9JQ0ZvcmVpZ25LZXk6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdi5wX0lDRm9yZWlnbktleV9yZXR1cm47ZS5zdGFydD10aGlzLmlucHV0LkxUKDEpO3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbCxzPW51bGwsbz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxlaSx2LkZPTExPV19GT1JFSUdOX2luX3BfSUNGb3JlaWduS2V5MTc3NjgpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKG89dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxvKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LHJpLHYuRk9MTE9XX0tFWV9pbl9wX0lDRm9yZWlnbktleTE3Nzc0KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihvPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsbykpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9JQ0ZvcmVpZ25LZXlTb3VyY2VfaW5fcF9JQ0ZvcmVpZ25LZXkxNzc3OCksaT10aGlzLnBfSUNGb3JlaWduS2V5U291cmNlKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxpLmdldFRyZWUoKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfSUNGb3JlaWduS2V5VGFyZ2V0X2luX3BfSUNGb3JlaWduS2V5MTc3ODApLHM9dGhpcy5wX0lDRm9yZWlnbktleVRhcmdldCgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQscy5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKHUpe2lmKCEodSBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgdTt0aGlzLnJlcG9ydEVycm9yKHUpLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LHUpLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSx1KX1maW5hbGx5e31yZXR1cm4gZX0scF9JQ0ZvcmVpZ25LZXlTb3VyY2VfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0lDRm9yZWlnbktleVNvdXJjZV9yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0lDRm9yZWlnbktleVNvdXJjZV9yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSUNGb3JlaWduS2V5U291cmNlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9JQ0ZvcmVpZ25LZXlTb3VyY2VfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsO3RyeXt0PXRoaXMuYWRhcHRvci5uaWwoKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxjcix2LkZPTExPV19GUk9NX2luX3BfSUNGb3JlaWduS2V5U291cmNlMTc4MDcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKHM9dGhpcy5hZGFwdG9yLmNyZWF0ZShuKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxzKSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiZ0aGlzLmFrKG4pLHRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0lDRm9yZWlnbktleVZhbHVlc19pbl9wX0lDRm9yZWlnbktleVNvdXJjZTE3ODExKSxpPXRoaXMucF9JQ0ZvcmVpZ25LZXlWYWx1ZXMoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGkuZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChvKXtpZighKG8gaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IG87dGhpcy5yZXBvcnRFcnJvcihvKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxvKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbyl9ZmluYWxseXt9cmV0dXJuIGV9LHBfSUNGb3JlaWduS2V5VGFyZ2V0X3JldHVybjpmdW5jdGlvbigpe3YucF9JQ0ZvcmVpZ25LZXlUYXJnZXRfcmV0dXJuPWZ1bmN0aW9uKCl7fSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYucF9JQ0ZvcmVpZ25LZXlUYXJnZXRfcmV0dXJuLHIuYW50bHIucnVudGltZS5QYXJzZXJSdWxlUmV0dXJuU2NvcGUse2dldFRyZWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmVlfX0pO3JldHVybn0oKSxwX0lDRm9yZWlnbktleVRhcmdldDpmdW5jdGlvbigpe3ZhciBlPW5ldyB2LnBfSUNGb3JlaWduS2V5VGFyZ2V0X3JldHVybjtlLnN0YXJ0PXRoaXMuaW5wdXQuTFQoMSk7dmFyIHQ9bnVsbCxuPW51bGwsaT1udWxsLHM9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsWnQsdi5GT0xMT1dfVE9faW5fcF9JQ0ZvcmVpZ25LZXlUYXJnZXQxNzgzOCk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYocz10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfSUNGb3JlaWduS2V5VmFsdWVzX2luX3BfSUNGb3JlaWduS2V5VGFyZ2V0MTc4NDIpLGk9dGhpcy5wX0lDRm9yZWlnbktleVZhbHVlcygpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsaS5nZXRUcmVlKCkpLGUuc3RvcD10aGlzLmlucHV0LkxUKC0xKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihlLnRyZWU9dGhpcy5hZGFwdG9yLnJ1bGVQb3N0UHJvY2Vzc2luZyh0KSx0aGlzLmFkYXB0b3Iuc2V0VG9rZW5Cb3VuZGFyaWVzKGUudHJlZSxlLnN0YXJ0LGUuc3RvcCkpfWNhdGNoKG8pe2lmKCEobyBpbnN0YW5jZW9mIHIuYW50bHIucnVudGltZS5SZWNvZ25pdGlvbkV4Y2VwdGlvbikpdGhyb3cgbzt0aGlzLnJlcG9ydEVycm9yKG8pLHRoaXMucmVjb3Zlcih0aGlzLmlucHV0LG8pLGUudHJlZT10aGlzLmFkYXB0b3IuZXJyb3JOb2RlKHRoaXMuaW5wdXQsZS5zdGFydCx0aGlzLmlucHV0LkxUKC0xKSxvKX1maW5hbGx5e31yZXR1cm4gZX0scF9JQ0ZvcmVpZ25LZXlWYWx1ZXNfcmV0dXJuOmZ1bmN0aW9uKCl7di5wX0lDRm9yZWlnbktleVZhbHVlc19yZXR1cm49ZnVuY3Rpb24oKXt9LHIuYW50bHIubGFuZy5leHRlbmQodi5wX0lDRm9yZWlnbktleVZhbHVlc19yZXR1cm4sci5hbnRsci5ydW50aW1lLlBhcnNlclJ1bGVSZXR1cm5TY29wZSx7Z2V0VHJlZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRyZWV9fSk7cmV0dXJufSgpLHBfSUNGb3JlaWduS2V5VmFsdWVzOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IHYucF9JQ0ZvcmVpZ25LZXlWYWx1ZXNfcmV0dXJuO2Uuc3RhcnQ9dGhpcy5pbnB1dC5MVCgxKTt2YXIgdD1udWxsLG49bnVsbCxpPW51bGwscz1udWxsLG89bnVsbCx1PW51bGwsYT1udWxsLGY9bnVsbDt0cnl7dD10aGlzLmFkYXB0b3IubmlsKCksbj10aGlzLm1hdGNoKHRoaXMuaW5wdXQsR3Isdi5GT0xMT1dfQ09MTEVDVElPTl9pbl9wX0lDRm9yZWlnbktleVZhbHVlczE3ODY5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJihhPXRoaXMuYWRhcHRvci5jcmVhdGUobiksdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsYSkpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hayhuKSx0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9RTmFtZV9pbl9wX0lDRm9yZWlnbktleVZhbHVlczE3ODczKSxvPXRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmdGhpcy5hZGFwdG9yLmFkZENoaWxkKHQsby5nZXRUcmVlKCkpLG49dGhpcy5tYXRjaCh0aGlzLmlucHV0LEF0LHYuRk9MTE9XX05PREVfaW5fcF9JQ0ZvcmVpZ25LZXlWYWx1ZXMxNzg3Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksaT10aGlzLm1hdGNoKHRoaXMuaW5wdXQscGksdi5GT0xMT1dfRE9MTEFSX2luX3BfSUNGb3JlaWduS2V5VmFsdWVzMTc4ODMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybiBlO3RoaXMuc3RhdGUuYmFja3RyYWNraW5nPT09MCYmKGY9dGhpcy5hZGFwdG9yLmNyZWF0ZShpKSx0aGlzLmFkYXB0b3IuYWRkQ2hpbGQodCxmKSksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUU5hbWVfaW5fcF9JQ0ZvcmVpZ25LZXlWYWx1ZXMxNzg4Nykscz10aGlzLnBfUU5hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHMuZ2V0VHJlZSgpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYXYoaSxzP3Muc3RvcDpudWxsKSxuPXRoaXMubWF0Y2godGhpcy5pbnB1dCxyaSx2LkZPTExPV19LRVlfaW5fcF9JQ0ZvcmVpZ25LZXlWYWx1ZXMxNzg5Myk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuIGU7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoYT10aGlzLmFkYXB0b3IuY3JlYXRlKG4pLHRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LGEpKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWsobiksdGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfUGF0aEV4cHJfaW5fcF9JQ0ZvcmVpZ25LZXlWYWx1ZXMxNzg5NyksdT10aGlzLnBfUGF0aEV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm4gZTt0aGlzLnN0YXRlLmJhY2t0cmFja2luZz09PTAmJnRoaXMuYWRhcHRvci5hZGRDaGlsZCh0LHUuZ2V0VHJlZSgpKSxlLnN0b3A9dGhpcy5pbnB1dC5MVCgtMSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc9PT0wJiYoZS50cmVlPXRoaXMuYWRhcHRvci5ydWxlUG9zdFByb2Nlc3NpbmcodCksdGhpcy5hZGFwdG9yLnNldFRva2VuQm91bmRhcmllcyhlLnRyZWUsZS5zdGFydCxlLnN0b3ApKX1jYXRjaChsKXtpZighKGwgaW5zdGFuY2VvZiByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXRpb25FeGNlcHRpb24pKXRocm93IGw7dGhpcy5yZXBvcnRFcnJvcihsKSx0aGlzLnJlY292ZXIodGhpcy5pbnB1dCxsKSxlLnRyZWU9dGhpcy5hZGFwdG9yLmVycm9yTm9kZSh0aGlzLmlucHV0LGUuc3RhcnQsdGhpcy5pbnB1dC5MVCgtMSksbCl9ZmluYWxseXt9cmV0dXJuIGV9LHN5bnByZWQxX1hRdWVyeVBhcnNlcl9mcmFnbWVudDpmdW5jdGlvbigpe3ZhciBlPTIsdD10aGlzLmlucHV0LkxBKDEpO2lmKHQ9PWl0KXt2YXIgbj10aGlzLmlucHV0LkxBKDIpO2lmKG49PXBpKWU9MTtlbHNle2lmKG4hPU9uJiZuIT1Qbil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MCl7dGhpcy5zdGF0ZS5mYWlsZWQ9ITA7cmV0dXJufXZhciBpPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24oIiIsMjYyLDEsdGhpcy5pbnB1dCk7dGhyb3cgaX1lPTJ9fWVsc2V7aWYodCE9RXQpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApe3RoaXMuc3RhdGUuZmFpbGVkPSEwO3JldHVybn12YXIgaT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDI2MiwwLHRoaXMuaW5wdXQpO3Rocm93IGl9ZT0xfXN3aXRjaChlKXtjYXNlIDE6aWYodGhpcy5pbnB1dC5MQSgxKSE9aXQmJnRoaXMuaW5wdXQuTEEoMSkhPUV0KXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXt0aGlzLnN0YXRlLmZhaWxlZD0hMDtyZXR1cm59dmFyIHM9bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgc310aGlzLmlucHV0LmNvbnN1bWUoKSx0aGlzLnN0YXRlLmVycm9yUmVjb3Zlcnk9ITEsdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsdGhpcy5tYXRjaCh0aGlzLmlucHV0LHBpLHYuRk9MTE9XX0RPTExBUl9pbl9zeW5wcmVkMV9YUXVlcnlQYXJzZXIzNTQzKTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm47YnJlYWs7Y2FzZSAyOnRoaXMubWF0Y2godGhpcy5pbnB1dCxpdCx2LkZPTExPV19GT1JfaW5fc3lucHJlZDFfWFF1ZXJ5UGFyc2VyMzU0OSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuO2lmKHRoaXMuaW5wdXQuTEEoMSkhPU9uJiZ0aGlzLmlucHV0LkxBKDEpIT1Qbil7aWYodGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmc+MCl7dGhpcy5zdGF0ZS5mYWlsZWQ9ITA7cmV0dXJufXZhciBzPW5ldyByLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IHN9dGhpcy5pbnB1dC5jb25zdW1lKCksdGhpcy5zdGF0ZS5lcnJvclJlY292ZXJ5PSExLHRoaXMuc3RhdGUuZmFpbGVkPSExfX0sc3lucHJlZDJfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50OmZ1bmN0aW9uKCl7dGhpcy5tYXRjaCh0aGlzLmlucHV0LGx0LHYuRk9MTE9XX0lGX2luX3N5bnByZWQyX1hRdWVyeVBhcnNlcjM1NzcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybjt0aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2ksdi5GT0xMT1dfTFBBUkVOX2luX3N5bnByZWQyX1hRdWVyeVBhcnNlcjM1NzkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybn0sc3lucHJlZDNfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50OmZ1bmN0aW9uKCl7dGhpcy5tYXRjaCh0aGlzLmlucHV0LF9uLHYuRk9MTE9XX1NXSVRDSF9pbl9zeW5wcmVkM19YUXVlcnlQYXJzZXIzNjA3KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm47dGhpcy5tYXRjaCh0aGlzLmlucHV0LGNpLHYuRk9MTE9XX0xQQVJFTl9pbl9zeW5wcmVkM19YUXVlcnlQYXJzZXIzNjA5KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm59LHN5bnByZWQ0X1hRdWVyeVBhcnNlcl9mcmFnbWVudDpmdW5jdGlvbigpe3RoaXMubWF0Y2godGhpcy5pbnB1dCx0bix2LkZPTExPV19UWVBFU1dJVENIX2luX3N5bnByZWQ0X1hRdWVyeVBhcnNlcjM2MzMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybjt0aGlzLm1hdGNoKHRoaXMuaW5wdXQsY2ksdi5GT0xMT1dfTFBBUkVOX2luX3N5bnByZWQ0X1hRdWVyeVBhcnNlcjM2MzUpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybn0sc3lucHJlZDVfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50OmZ1bmN0aW9uKCl7dGhpcy5tYXRjaCh0aGlzLmlucHV0LERuLHYuRk9MTE9XX1RSWV9pbl9zeW5wcmVkNV9YUXVlcnlQYXJzZXIzNjU1KTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm47dGhpcy5tYXRjaCh0aGlzLmlucHV0LGRpLHYuRk9MTE9XX0xCUkFDS0VUX2luX3N5bnByZWQ1X1hRdWVyeVBhcnNlcjM2NTcpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybn0sc3lucHJlZDZfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50OmZ1bmN0aW9uKCl7dGhpcy5tYXRjaCh0aGlzLmlucHV0LHNuLHYuRk9MTE9XX1ZBTElEQVRFX2luX3N5bnByZWQ2X1hRdWVyeVBhcnNlcjYxODkpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybjt2YXIgZT0zLHQ9dGhpcy5pbnB1dC5MQSgxKTt0PT15dHx8dD09S3Q/ZT0xOnQ9PUhuJiYoZT0yKTtzd2l0Y2goZSl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1ZhbGlkYXRpb25Nb2RlX2luX3N5bnByZWQ2X1hRdWVyeVBhcnNlcjYxOTMpLHRoaXMucF9WYWxpZGF0aW9uTW9kZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybjticmVhaztjYXNlIDI6dGhpcy5tYXRjaCh0aGlzLmlucHV0LEhuLHYuRk9MTE9XX1RZUEVfaW5fc3lucHJlZDZfWFF1ZXJ5UGFyc2VyNjE5Nyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJufX0sc3lucHJlZDdfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50OmZ1bmN0aW9uKCl7dGhpcy5tYXRjaCh0aGlzLmlucHV0LEhpLHYuRk9MTE9XX1NMQVNIX2luX3N5bnByZWQ3X1hRdWVyeVBhcnNlcjY1NTMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybjt0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9SZWxhdGl2ZVBhdGhFeHByX2luX3N5bnByZWQ3X1hRdWVyeVBhcnNlcjY1NTUpLHRoaXMucF9SZWxhdGl2ZVBhdGhFeHByKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJufSxzeW5wcmVkOF9YUXVlcnlQYXJzZXJfZnJhZ21lbnQ6ZnVuY3Rpb24oKXtpZighKHRoaXMuaW5wdXQuTEEoMSk9PWNpfHx0aGlzLmlucHV0LkxBKDEpPj1waSYmdGhpcy5pbnB1dC5MQSgxKTw9ZGl8fHRoaXMuaW5wdXQuTEEoMSk9PUFpfHx0aGlzLmlucHV0LkxBKDEpPj1lcyYmdGhpcy5pbnB1dC5MQSgxKTw9dHMpKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXt0aGlzLnN0YXRlLmZhaWxlZD0hMDtyZXR1cm59dmFyIGU9bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgZX10aGlzLmlucHV0LmNvbnN1bWUoKSx0aGlzLnN0YXRlLmVycm9yUmVjb3Zlcnk9ITEsdGhpcy5zdGF0ZS5mYWlsZWQ9ITF9LHN5bnByZWQ5X1hRdWVyeVBhcnNlcl9mcmFnbWVudDpmdW5jdGlvbigpe3ZhciBlPTM7c3dpdGNoKHRoaXMuaW5wdXQuTEEoMSkpe2Nhc2UgazpjYXNlICQ6ZT0xO2JyZWFrO2Nhc2UgTnQ6Y2FzZSBxdDplPTI7YnJlYWs7Y2FzZSBCOmNhc2UgWDpjYXNlIEd0OmU9MzticmVhaztkZWZhdWx0OmlmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApe3RoaXMuc3RhdGUuZmFpbGVkPSEwO3JldHVybn12YXIgdD1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDI2NiwwLHRoaXMuaW5wdXQpO3Rocm93IHR9c3dpdGNoKGUpe2Nhc2UgMTppZih0aGlzLmlucHV0LkxBKDEpIT1rJiZ0aGlzLmlucHV0LkxBKDEpIT0kKXtpZih0aGlzLnN0YXRlLmJhY2t0cmFja2luZz4wKXt0aGlzLnN0YXRlLmZhaWxlZD0hMDtyZXR1cm59dmFyIG49bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgbn10aGlzLmlucHV0LmNvbnN1bWUoKSx0aGlzLnN0YXRlLmVycm9yUmVjb3Zlcnk9ITEsdGhpcy5zdGF0ZS5mYWlsZWQ9ITE7dmFyIGk9MixzPXRoaXMuaW5wdXQuTEEoMSk7aWYocz49RSYmczw9WW58fHM+PWVyJiZzPD1maXx8cz09aXN8fHM9PXhvKWk9MTtzd2l0Y2goaSl7Y2FzZSAxOnRoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1FOYW1lX2luX3N5bnByZWQ5X1hRdWVyeVBhcnNlcjY3MzApLHRoaXMucF9RTmFtZSgpLHRoaXMuc3RhdGUuX2ZzcC0tO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybn10aGlzLm1hdGNoKHRoaXMuaW5wdXQsZGksdi5GT0xMT1dfTEJSQUNLRVRfaW5fc3lucHJlZDlfWFF1ZXJ5UGFyc2VyNjczMyk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuO2JyZWFrO2Nhc2UgMjppZih0aGlzLmlucHV0LkxBKDEpIT1OdCYmdGhpcy5pbnB1dC5MQSgxKSE9cXQpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApe3RoaXMuc3RhdGUuZmFpbGVkPSEwO3JldHVybn12YXIgbj1uZXcgci5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyBufXRoaXMuaW5wdXQuY29uc3VtZSgpLHRoaXMuc3RhdGUuZXJyb3JSZWNvdmVyeT0hMSx0aGlzLnN0YXRlLmZhaWxlZD0hMTt2YXIgbz0yLHU9dGhpcy5pbnB1dC5MQSgxKTtpZih1Pj1FJiZ1PD1Zbnx8dT49ZXImJnU8PWZpfHx1PT1pc3x8dT09eG8pbz0xO3N3aXRjaChvKXtjYXNlIDE6dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfTkNOYW1lX2luX3N5bnByZWQ5X1hRdWVyeVBhcnNlcjY3NTkpLHRoaXMucF9OQ05hbWUoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm59dGhpcy5tYXRjaCh0aGlzLmlucHV0LGRpLHYuRk9MTE9XX0xCUkFDS0VUX2luX3N5bnByZWQ5X1hRdWVyeVBhcnNlcjY3NjIpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybjticmVhaztjYXNlIDM6aWYodGhpcy5pbnB1dC5MQSgxKSE9QiYmdGhpcy5pbnB1dC5MQSgxKSE9WCYmdGhpcy5pbnB1dC5MQSgxKSE9R3Qpe2lmKHRoaXMuc3RhdGUuYmFja3RyYWNraW5nPjApe3RoaXMuc3RhdGUuZmFpbGVkPSEwO3JldHVybn12YXIgbj1uZXcgci5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyBufXRoaXMuaW5wdXQuY29uc3VtZSgpLHRoaXMuc3RhdGUuZXJyb3JSZWNvdmVyeT0hMSx0aGlzLnN0YXRlLmZhaWxlZD0hMSx0aGlzLm1hdGNoKHRoaXMuaW5wdXQsZGksdi5GT0xMT1dfTEJSQUNLRVRfaW5fc3lucHJlZDlfWFF1ZXJ5UGFyc2VyNjc5Mik7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJufX0sc3lucHJlZDEwX1hRdWVyeVBhcnNlcl9mcmFnbWVudDpmdW5jdGlvbigpe3RoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX0tpbmRUZXN0X2luX3N5bnByZWQxMF9YUXVlcnlQYXJzZXI2ODIyKSx0aGlzLnBfS2luZFRlc3QoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm59LHN5bnByZWQxMV9YUXVlcnlQYXJzZXJfZnJhZ21lbnQ6ZnVuY3Rpb24oKXt0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9RTmFtZV9pbl9zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyNjg0MSksdGhpcy5wX1FOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuO3RoaXMubWF0Y2godGhpcy5pbnB1dCxjaSx2LkZPTExPV19MUEFSRU5faW5fc3lucHJlZDExX1hRdWVyeVBhcnNlcjY4NDMpO2lmKHRoaXMuc3RhdGUuZmFpbGVkKXJldHVybn0sc3lucHJlZDEyX1hRdWVyeVBhcnNlcl9mcmFnbWVudDpmdW5jdGlvbigpe3RoaXMucHVzaEZvbGxvdyh2LkZPTExPV19wX1ByaW1hcnlFeHByX2luX3N5bnByZWQxMl9YUXVlcnlQYXJzZXI2ODYxKSx0aGlzLnBfUHJpbWFyeUV4cHIoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm59LHN5bnByZWQxM19YUXVlcnlQYXJzZXJfZnJhZ21lbnQ6ZnVuY3Rpb24oKXt0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9XaWxkY2FyZF9pbl9zeW5wcmVkMTNfWFF1ZXJ5UGFyc2VyNzMwMCksdGhpcy5wX1dpbGRjYXJkKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJufSxzeW5wcmVkMTRfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50OmZ1bmN0aW9uKCl7dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfTkNOYW1lX2luX3N5bnByZWQxNF9YUXVlcnlQYXJzZXI3MzE5KSx0aGlzLnBfTkNOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJuO3RoaXMubWF0Y2godGhpcy5pbnB1dCxJaSx2LkZPTExPV19DT0xPTl9pbl9zeW5wcmVkMTRfWFF1ZXJ5UGFyc2VyNzMyMSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJufSxzeW5wcmVkMTVfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50OmZ1bmN0aW9uKCl7dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfTkNOYW1lX2luX3N5bnByZWQxNV9YUXVlcnlQYXJzZXI3MzM5KSx0aGlzLnBfTkNOYW1lKCksdGhpcy5zdGF0ZS5fZnNwLS07aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJufSxzeW5wcmVkMTZfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50OmZ1bmN0aW9uKCl7dGhpcy5tYXRjaCh0aGlzLmlucHV0LGNpLHYuRk9MTE9XX0xQQVJFTl9pbl9zeW5wcmVkMTZfWFF1ZXJ5UGFyc2VyNzU5NSk7aWYodGhpcy5zdGF0ZS5mYWlsZWQpcmV0dXJufSxzeW5wcmVkMTdfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50OmZ1bmN0aW9uKCl7dGhpcy5wdXNoRm9sbG93KHYuRk9MTE9XX3BfT2NjdXJyZW5jZUluZGljYXRvcl9pbl9zeW5wcmVkMTdfWFF1ZXJ5UGFyc2VyOTY1NCksdGhpcy5wX09jY3VycmVuY2VJbmRpY2F0b3IoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm59LHN5bnByZWQxOF9YUXVlcnlQYXJzZXJfZnJhZ21lbnQ6ZnVuY3Rpb24oKXt0aGlzLnB1c2hGb2xsb3codi5GT0xMT1dfcF9PY2N1cnJlbmNlSW5kaWNhdG9yX2luX3N5bnByZWQxOF9YUXVlcnlQYXJzZXIxNzIyOCksdGhpcy5wX09jY3VycmVuY2VJbmRpY2F0b3IoKSx0aGlzLnN0YXRlLl9mc3AtLTtpZih0aGlzLnN0YXRlLmZhaWxlZClyZXR1cm59LHN5bnByZWQzX1hRdWVyeVBhcnNlcjpmdW5jdGlvbigpe3RoaXMuc3RhdGUuYmFja3RyYWNraW5nKys7dmFyIGU9dGhpcy5pbnB1dC5tYXJrKCk7dHJ5e3RoaXMuc3lucHJlZDNfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50KCl9Y2F0Y2godCl7YWxlcnQoImltcG9zc2libGU6ICIrdC50b1N0cmluZygpKX12YXIgbj0hdGhpcy5zdGF0ZS5mYWlsZWQ7cmV0dXJuIHRoaXMuaW5wdXQucmV3aW5kKGUpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nLS0sdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsbn0sc3lucHJlZDE1X1hRdWVyeVBhcnNlcjpmdW5jdGlvbigpe3RoaXMuc3RhdGUuYmFja3RyYWNraW5nKys7dmFyIGU9dGhpcy5pbnB1dC5tYXJrKCk7dHJ5e3RoaXMuc3lucHJlZDE1X1hRdWVyeVBhcnNlcl9mcmFnbWVudCgpfWNhdGNoKHQpe2FsZXJ0KCJpbXBvc3NpYmxlOiAiK3QudG9TdHJpbmcoKSl9dmFyIG49IXRoaXMuc3RhdGUuZmFpbGVkO3JldHVybiB0aGlzLmlucHV0LnJld2luZChlKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZy0tLHRoaXMuc3RhdGUuZmFpbGVkPSExLG59LHN5bnByZWQ3X1hRdWVyeVBhcnNlcjpmdW5jdGlvbigpe3RoaXMuc3RhdGUuYmFja3RyYWNraW5nKys7dmFyIGU9dGhpcy5pbnB1dC5tYXJrKCk7dHJ5e3RoaXMuc3lucHJlZDdfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50KCl9Y2F0Y2godCl7YWxlcnQoImltcG9zc2libGU6ICIrdC50b1N0cmluZygpKX12YXIgbj0hdGhpcy5zdGF0ZS5mYWlsZWQ7cmV0dXJuIHRoaXMuaW5wdXQucmV3aW5kKGUpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nLS0sdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsbn0sc3lucHJlZDlfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgZT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXJfZnJhZ21lbnQoKX1jYXRjaCh0KXthbGVydCgiaW1wb3NzaWJsZTogIit0LnRvU3RyaW5nKCkpfXZhciBuPSF0aGlzLnN0YXRlLmZhaWxlZDtyZXR1cm4gdGhpcy5pbnB1dC5yZXdpbmQoZSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmctLSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxufSxzeW5wcmVkMTBfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgZT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkMTBfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50KCl9Y2F0Y2godCl7YWxlcnQoImltcG9zc2libGU6ICIrdC50b1N0cmluZygpKX12YXIgbj0hdGhpcy5zdGF0ZS5mYWlsZWQ7cmV0dXJuIHRoaXMuaW5wdXQucmV3aW5kKGUpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nLS0sdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsbn0sc3lucHJlZDE3X1hRdWVyeVBhcnNlcjpmdW5jdGlvbigpe3RoaXMuc3RhdGUuYmFja3RyYWNraW5nKys7dmFyIGU9dGhpcy5pbnB1dC5tYXJrKCk7dHJ5e3RoaXMuc3lucHJlZDE3X1hRdWVyeVBhcnNlcl9mcmFnbWVudCgpfWNhdGNoKHQpe2FsZXJ0KCJpbXBvc3NpYmxlOiAiK3QudG9TdHJpbmcoKSl9dmFyIG49IXRoaXMuc3RhdGUuZmFpbGVkO3JldHVybiB0aGlzLmlucHV0LnJld2luZChlKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZy0tLHRoaXMuc3RhdGUuZmFpbGVkPSExLG59LHN5bnByZWQ1X1hRdWVyeVBhcnNlcjpmdW5jdGlvbigpe3RoaXMuc3RhdGUuYmFja3RyYWNraW5nKys7dmFyIGU9dGhpcy5pbnB1dC5tYXJrKCk7dHJ5e3RoaXMuc3lucHJlZDVfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50KCl9Y2F0Y2godCl7YWxlcnQoImltcG9zc2libGU6ICIrdC50b1N0cmluZygpKX12YXIgbj0hdGhpcy5zdGF0ZS5mYWlsZWQ7cmV0dXJuIHRoaXMuaW5wdXQucmV3aW5kKGUpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nLS0sdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsbn0sc3lucHJlZDEyX1hRdWVyeVBhcnNlcjpmdW5jdGlvbigpe3RoaXMuc3RhdGUuYmFja3RyYWNraW5nKys7dmFyIGU9dGhpcy5pbnB1dC5tYXJrKCk7dHJ5e3RoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcl9mcmFnbWVudCgpfWNhdGNoKHQpe2FsZXJ0KCJpbXBvc3NpYmxlOiAiK3QudG9TdHJpbmcoKSl9dmFyIG49IXRoaXMuc3RhdGUuZmFpbGVkO3JldHVybiB0aGlzLmlucHV0LnJld2luZChlKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZy0tLHRoaXMuc3RhdGUuZmFpbGVkPSExLG59LHN5bnByZWQxNl9YUXVlcnlQYXJzZXI6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmJhY2t0cmFja2luZysrO3ZhciBlPXRoaXMuaW5wdXQubWFyaygpO3RyeXt0aGlzLnN5bnByZWQxNl9YUXVlcnlQYXJzZXJfZnJhZ21lbnQoKX1jYXRjaCh0KXthbGVydCgiaW1wb3NzaWJsZTogIit0LnRvU3RyaW5nKCkpfXZhciBuPSF0aGlzLnN0YXRlLmZhaWxlZDtyZXR1cm4gdGhpcy5pbnB1dC5yZXdpbmQoZSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmctLSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxufSxzeW5wcmVkMTRfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgZT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkMTRfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50KCl9Y2F0Y2godCl7YWxlcnQoImltcG9zc2libGU6ICIrdC50b1N0cmluZygpKX12YXIgbj0hdGhpcy5zdGF0ZS5mYWlsZWQ7cmV0dXJuIHRoaXMuaW5wdXQucmV3aW5kKGUpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nLS0sdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsbn0sc3lucHJlZDZfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgZT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkNl9YUXVlcnlQYXJzZXJfZnJhZ21lbnQoKX1jYXRjaCh0KXthbGVydCgiaW1wb3NzaWJsZTogIit0LnRvU3RyaW5nKCkpfXZhciBuPSF0aGlzLnN0YXRlLmZhaWxlZDtyZXR1cm4gdGhpcy5pbnB1dC5yZXdpbmQoZSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmctLSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxufSxzeW5wcmVkMThfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgZT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkMThfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50KCl9Y2F0Y2godCl7YWxlcnQoImltcG9zc2libGU6ICIrdC50b1N0cmluZygpKX12YXIgbj0hdGhpcy5zdGF0ZS5mYWlsZWQ7cmV0dXJuIHRoaXMuaW5wdXQucmV3aW5kKGUpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nLS0sdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsbn0sc3lucHJlZDhfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgZT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXJfZnJhZ21lbnQoKX1jYXRjaCh0KXthbGVydCgiaW1wb3NzaWJsZTogIit0LnRvU3RyaW5nKCkpfXZhciBuPSF0aGlzLnN0YXRlLmZhaWxlZDtyZXR1cm4gdGhpcy5pbnB1dC5yZXdpbmQoZSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmctLSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxufSxzeW5wcmVkMTNfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgZT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkMTNfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50KCl9Y2F0Y2godCl7YWxlcnQoImltcG9zc2libGU6ICIrdC50b1N0cmluZygpKX12YXIgbj0hdGhpcy5zdGF0ZS5mYWlsZWQ7cmV0dXJuIHRoaXMuaW5wdXQucmV3aW5kKGUpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nLS0sdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsbn0sc3lucHJlZDRfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgZT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkNF9YUXVlcnlQYXJzZXJfZnJhZ21lbnQoKX1jYXRjaCh0KXthbGVydCgiaW1wb3NzaWJsZTogIit0LnRvU3RyaW5nKCkpfXZhciBuPSF0aGlzLnN0YXRlLmZhaWxlZDtyZXR1cm4gdGhpcy5pbnB1dC5yZXdpbmQoZSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmctLSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxufSxzeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgZT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyX2ZyYWdtZW50KCl9Y2F0Y2godCl7YWxlcnQoImltcG9zc2libGU6ICIrdC50b1N0cmluZygpKX12YXIgbj0hdGhpcy5zdGF0ZS5mYWlsZWQ7cmV0dXJuIHRoaXMuaW5wdXQucmV3aW5kKGUpLHRoaXMuc3RhdGUuYmFja3RyYWNraW5nLS0sdGhpcy5zdGF0ZS5mYWlsZWQ9ITEsbn0sc3lucHJlZDFfWFF1ZXJ5UGFyc2VyOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmcrKzt2YXIgZT10aGlzLmlucHV0Lm1hcmsoKTt0cnl7dGhpcy5zeW5wcmVkMV9YUXVlcnlQYXJzZXJfZnJhZ21lbnQoKX1jYXRjaCh0KXthbGVydCgiaW1wb3NzaWJsZTogIit0LnRvU3RyaW5nKCkpfXZhciBuPSF0aGlzLnN0YXRlLmZhaWxlZDtyZXR1cm4gdGhpcy5pbnB1dC5yZXdpbmQoZSksdGhpcy5zdGF0ZS5iYWNrdHJhY2tpbmctLSx0aGlzLnN0YXRlLmZhaWxlZD0hMSxufSxzeW5wcmVkMl9YUXVlcnlQYXJzZXI6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmJhY2t0cmFja2luZysrO3ZhciBlPXRoaXMuaW5wdXQubWFyaygpO3RyeXt0aGlzLnN5bnByZWQyX1hRdWVyeVBhcnNlcl9mcmFnbWVudCgpfWNhdGNoKHQpe2FsZXJ0KCJpbXBvc3NpYmxlOiAiK3QudG9TdHJpbmcoKSl9dmFyIG49IXRoaXMuc3RhdGUuZmFpbGVkO3JldHVybiB0aGlzLmlucHV0LnJld2luZChlKSx0aGlzLnN0YXRlLmJhY2t0cmFja2luZy0tLHRoaXMuc3RhdGUuZmFpbGVkPSExLG59fSwhMCksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qodix7REZBMV9lb3RTOiJcbu+/vyIsREZBMV9lb2ZTOiIBBQEJXGLvv78iLERGQTFfbWluUzoiARABElxi77+/IixERkExX21heFM6IgHFlAHDvlxi77+/IixERkExX2FjY2VwdFM6IgLvv78EAgEBAwIiLERGQTFfc3BlY2lhbFM6IgEBAVwwXGLvv799PiIsREZBMV90cmFuc2l0aW9uUzpbIgICBAQBAgYEAQIBBAECAgQBAgEEAgICBAMCBQQBAgIEAwIFBAICCQQBAgIEAgIDBAECBAQBAgEEAwIBBAECAwQEAgMEAQIDBAECAQQDAgIEAQFcZgQBAgkEAgIHBAICAQQBAgQEAgICBAECLAQDAgIEAQJcbgQBAgMEAe+/vwECAe+/vwICBu+/vwEDBO+/vwQCBe+/vwQCXGbvv78BAgLvv78CAgLvv78BBAbvv78GAjvvv78BBCIsIgEHXGLvv78CB1xu77+/AQcG77+/AQYBBwHvv78BBwXvv78BBwHvv78CBwTvv78DBwLvv78BBwLvv78CBwLvv78BBwXvv78BBxTvv78CBwHvv78BBwPvv78BBjLvv78BBzvvv78CBwTvv78BBwHvv78BBwHvv78BBwPvv78BBwHvv78LBwLvv78BBwPvv78BXGIBByIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiJdfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qodix7REZBMV9lb3Q6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMV9lb3RTKSxERkExX2VvZjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExX2VvZlMpLERGQTFfbWluOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyh2LkRGQTFfbWluUyksREZBMV9tYXg6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHYuREZBMV9tYXhTKSxERkExX2FjY2VwdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExX2FjY2VwdFMpLERGQTFfc3BlY2lhbDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExX3NwZWNpYWxTKSxERkExX3RyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1bXSx0LG49di5ERkExX3RyYW5zaXRpb25TLmxlbmd0aDtmb3IodD0wO3Q8bjt0KyspZS5wdXNoKHIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTFfdHJhbnNpdGlvblNbdF0pKTtyZXR1cm4gZX0oKX0pLHYuREZBMT1mdW5jdGlvbihlKXt0aGlzLnJlY29nbml6ZXI9ZSx0aGlzLmRlY2lzaW9uTnVtYmVyPTEsdGhpcy5lb3Q9di5ERkExX2VvdCx0aGlzLmVvZj12LkRGQTFfZW9mLHRoaXMubWluPXYuREZBMV9taW4sdGhpcy5tYXg9di5ERkExX21heCx0aGlzLmFjY2VwdD12LkRGQTFfYWNjZXB0LHRoaXMuc3BlY2lhbD12LkRGQTFfc3BlY2lhbCx0aGlzLnRyYW5zaXRpb249di5ERkExX3RyYW5zaXRpb259LHIuYW50bHIubGFuZy5leHRlbmQodi5ERkExLHIuYW50bHIucnVudGltZS5ERkEse2dldERlc2NyaXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIjI5NjoxMzogKHZkPSBwX1ZlcnNpb25EZWNsICk/In0sc3BlY2lhbFN0YXRlVHJhbnNpdGlvbjpmdW5jdGlvbih0LG4pe3ZhciBpPXQscz1mdW5jdGlvbih0LG4pe3N3aXRjaCh0KXtjYXNlIDA6dmFyIHI9bi5MQSgxKSxpPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEscj09R3x8cj09dW4/dD02OnI9PXh8fHI+PV8mJnI8PUR8fHI9PVd8fHI9PVl8fHI9PWV0fHxyPT1vdHx8cj49YXQmJnI8PWZ0fHxyPj1kdCYmcjw9bXR8fHI9PWJ0fHxyPj1TdCYmcjw9eHR8fHI9PUN0fHxyPT1fdHx8cj49WnQmJnI8PWVufHxyPT1ubnx8cj09aXJ8fHI+PWxpJiZyPD1jaXx8cj09bWl8fHI9PXlpfHxyPT13aXx8cj09VGl8fHI+PUNpJiZyPD1CaXx8cj09SWl8fHI9PVdpP3Q9NzpyPT16aSYmdGhpcy5sYyhjKT90PTg6cj09ZSYmKHQ9OSksbi5zZWVrKGkpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSAxOnZhciBzPW4uTEEoMSksbz1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHM9PWZuP3Q9MTpzPj1FJiZzPD1TfHxzPT1rfHxzPT1QfHxzPT1CfHxzPT1JfHxzPj1SJiZzPD1VfHxzPj1YJiZzPD0kfHxzPT1afHxzPj1udCYmczw9aXR8fHM+PWx0JiZzPD1jdHx8cz09RXR8fHM+PVR0JiZzPD1OdHx8cz09QXR8fHM9PVB0fHxzPj1CdCYmczw9RnR8fHM9PXF0fHxzPj1XdCYmczw9JHR8fHM9PUd0fHxzPT10bnx8cz49cm4mJnM8PW9ufHxzPT1Tbnx8cz49X24mJnM8PURufHxzPj1SbiYmczw9VW58fHM9PVdufHxzPj1LbiYmczw9UW58fHM9PVpufHxzPj1XciYmczw9VnJ8fHM9PUtyfHxzPT1vaXx8cz09Y2l8fHM+PXBpJiZzPD1kaXx8cz49Q2kmJnM8PUFpfHxzPj1IaSYmczw9Rml8fHM9PUdpfHxzPj1lcyYmczw9dHN8fHM+PWNzJiZzPD1tcz90PTI6cz09RWkmJnRoaXMubGMoYyk/dD0zOnM+PXgmJnM8PUN8fHM+PUwmJnM8PUR8fHM9PUh8fHM+PWomJnM8PUZ8fHM9PXF8fHM+PXomJnM8PVd8fHM+PUomJnM8PVl8fHM+PWV0JiZzPD10dHx8cz49c3QmJnM8PWZ0fHxzPj1odCYmczw9d3R8fHM+PVN0JiZzPD14dHx8cz49Q3QmJnM8PUx0fHxzPj1PdCYmczw9RHR8fHM9PUh0fHxzPT1JdHx8cz49UnQmJnM8PXp0fHxzPj1KdCYmczw9UXR8fHM+PVl0JiZzPD1lbnx8cz09bm58fHM+PXVuJiZzPD1hbnx8cz49bG4mJnM8PUVufHxzPj14biYmczw9TW58fHM+PVBuJiZzPD1xbnx8cz09em58fHM+PVhuJiZzPD1Kbnx8cz49R24mJnM8PVlufHxzPj1lciYmczw9enJ8fHM+PSRyJiZzPD1Kcnx8cz49UXImJnM8PXNpfHxzPj11aSYmczw9Zml8fHM9PWlzfHxzPT14bz90PTQ6cz09ZSYmdGhpcy5sYyhjKSYmKHQ9NSksbi5zZWVrKG8pO2lmKHQ+PTApcmV0dXJuIHR9fS5jYWxsKHRoaXMucmVjb2duaXplcix0LG4pO2lmKCFyLmFudGxyLmxhbmcuaXNVbmRlZmluZWQocykpcmV0dXJuIHM7aWYodGhpcy5yZWNvZ25pemVyLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnJlY29nbml6ZXIuc3RhdGUuZmFpbGVkPSEwLC0xO3ZhciBvPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24odGhpcy5nZXREZXNjcmlwdGlvbigpLDEsaSxuKTt0aHJvdyB0aGlzLmVycm9yKG8pLG99LGR1bW15Om51bGx9KSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdCh2LHtERkEyX2VvdFM6Ilxu77+/IixERkEyX2VvZlM6IgEFAQlcYu+/vyIsREZBMl9taW5TOiIBEAESXGLvv78iLERGQTJfbWF4UzoiAcWUAcO+XGLvv78iLERGQTJfYWNjZXB0UzoiAu+/vwQCAQEDAiIsREZBMl9zcGVjaWFsUzoiAQEBXDBcYu+/v30+IixERkEyX3RyYW5zaXRpb25TOlsiAgIEBAECBgQBAgEEAQICBAECAQQCAgIEAwIFBAECAgQDAgUEAgIJBAECAgQBAQECAwQBAgQEAQIBBAMCAQQBAgMEBAIDBAECAwQBAgEEAwIPBAECCQQCAgcEAgIBBAECBAQCAgIEAQIsBAMCAgQBAlxuBAECAwQB77+/AQIB77+/AgIG77+/AQME77+/BAIF77+/BAJcZu+/vwECAu+/vwICAu+/vwEEBu+/vwYCO++/vwEEIiwiAQdcYu+/vwIHXG7vv78BBwfvv78BBwHvv78BBwXvv78BBwHvv78CBwTvv78DBwLvv78BBwLvv78CBwHvv78BBgEHBe+/vwEHFO+/vwIHAe+/vwEHNu+/vwEHO++/vwIHBO+/vwEHAe+/vwEHAe+/vwEHA++/vwEHAe+/vwsHAu+/vwEHA++/vwFcYgEHIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIl19KSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdCh2LHtERkEyX2VvdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkEyX2VvdFMpLERGQTJfZW9mOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTJfZW9mUyksREZBMl9taW46ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHYuREZBMl9taW5TKSxERkEyX21heDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnModi5ERkEyX21heFMpLERGQTJfYWNjZXB0OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTJfYWNjZXB0UyksREZBMl9zcGVjaWFsOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTJfc3BlY2lhbFMpLERGQTJfdHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPVtdLHQsbj12LkRGQTJfdHJhbnNpdGlvblMubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKyllLnB1c2goci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMl90cmFuc2l0aW9uU1t0XSkpO3JldHVybiBlfSgpfSksdi5ERkEyPWZ1bmN0aW9uKGUpe3RoaXMucmVjb2duaXplcj1lLHRoaXMuZGVjaXNpb25OdW1iZXI9Mix0aGlzLmVvdD12LkRGQTJfZW90LHRoaXMuZW9mPXYuREZBMl9lb2YsdGhpcy5taW49di5ERkEyX21pbix0aGlzLm1heD12LkRGQTJfbWF4LHRoaXMuYWNjZXB0PXYuREZBMl9hY2NlcHQsdGhpcy5zcGVjaWFsPXYuREZBMl9zcGVjaWFsLHRoaXMudHJhbnNpdGlvbj12LkRGQTJfdHJhbnNpdGlvbn0sci5hbnRsci5sYW5nLmV4dGVuZCh2LkRGQTIsci5hbnRsci5ydW50aW1lLkRGQSx7Z2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iMjk3OjEzOiAobG09IHBfTGlicmFyeU1vZHVsZVskdmQudHJlZV0gLT4gfCBtbT0gcF9NYWluTW9kdWxlWyR2ZC50cmVlXSAtPikifSxzcGVjaWFsU3RhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKHQsbil7dmFyIGk9dCxzPWZ1bmN0aW9uKHQsbil7c3dpdGNoKHQpe2Nhc2UgMDp2YXIgcj1uLkxBKDEpLGk9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSxyPT1OdD90PTY6cj09eHx8cj49XyYmcjw9RHx8cj09V3x8cj09WXx8cj09ZXR8fHI9PW90fHxyPj1hdCYmcjw9ZnR8fHI+PWR0JiZyPD1tdHx8cj09YnR8fHI+PVN0JiZyPD14dHx8cj09Q3R8fHI9PV90fHxyPj1adCYmcjw9ZW58fHI9PW5ufHxyPT1pcnx8cj49bGkmJnI8PWNpfHxyPT1taXx8cj09eWl8fHI9PXdpfHxyPT1UaXx8cj49Q2kmJnI8PUJpfHxyPT1JaXx8cj09V2k/dD03OnI9PXppJiZ0aGlzLmxjKGMpP3Q9ODpyPT1lJiYodD05KSxuLnNlZWsoaSk7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDE6dmFyIHM9bi5MQSgxKSxvPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEscz09VHQ/dD0xOnM+PUUmJnM8PVN8fHM9PWt8fHM9PVB8fHM9PUJ8fHM9PUl8fHM+PVImJnM8PVV8fHM+PVgmJnM8PSR8fHM9PVp8fHM+PW50JiZzPD1pdHx8cz49bHQmJnM8PWN0fHxzPT1FdHx8cz09TnR8fHM9PUF0fHxzPT1QdHx8cz49QnQmJnM8PUZ0fHxzPT1xdHx8cz49V3QmJnM8PSR0fHxzPT1HdHx8cz09dG58fHM+PXJuJiZzPD1vbnx8cz09U258fHM+PV9uJiZzPD1Ebnx8cz49Um4mJnM8PVVufHxzPT1Xbnx8cz49S24mJnM8PVFufHxzPT1abnx8cz49V3ImJnM8PVZyfHxzPT1Lcnx8cz09b2l8fHM9PWNpfHxzPj1waSYmczw9ZGl8fHM+PUNpJiZzPD1BaXx8cz49SGkmJnM8PUZpfHxzPT1HaXx8cz49ZXMmJnM8PXRzfHxzPj1jcyYmczw9bXM/dD0yOnM9PUVpJiZ0aGlzLmxjKGMpP3Q9MzpzPj14JiZzPD1DfHxzPj1MJiZzPD1EfHxzPT1IfHxzPj1qJiZzPD1GfHxzPT1xfHxzPj16JiZzPD1XfHxzPj1KJiZzPD1ZfHxzPj1ldCYmczw9dHR8fHM+PXN0JiZzPD1mdHx8cz49aHQmJnM8PXd0fHxzPj1TdCYmczw9eHR8fHM+PUN0JiZzPD1MdHx8cz49T3QmJnM8PUR0fHxzPT1IdHx8cz09SXR8fHM+PVJ0JiZzPD16dHx8cz49SnQmJnM8PVF0fHxzPj1ZdCYmczw9ZW58fHM9PW5ufHxzPj11biYmczw9RW58fHM+PXhuJiZzPD1Nbnx8cz49UG4mJnM8PXFufHxzPT16bnx8cz49WG4mJnM8PUpufHxzPj1HbiYmczw9WW58fHM+PWVyJiZzPD16cnx8cz49JHImJnM8PUpyfHxzPj1RciYmczw9c2l8fHM+PXVpJiZzPD1maXx8cz09aXN8fHM9PXhvP3Q9NDpzPT1lJiZ0aGlzLmxjKGMpJiYodD01KSxuLnNlZWsobyk7aWYodD49MClyZXR1cm4gdH19LmNhbGwodGhpcy5yZWNvZ25pemVyLHQsbik7aWYoIXIuYW50bHIubGFuZy5pc1VuZGVmaW5lZChzKSlyZXR1cm4gcztpZih0aGlzLnJlY29nbml6ZXIuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMucmVjb2duaXplci5zdGF0ZS5mYWlsZWQ9ITAsLTE7dmFyIG89bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbih0aGlzLmdldERlc2NyaXB0aW9uKCksMixpLG4pO3Rocm93IHRoaXMuZXJyb3Iobyksb30sZHVtbXk6bnVsbH0pLHIuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHYse0RGQTZfZW90UzoiXG7vv78iLERGQTZfZW9mUzoiAQUBCQLvv78BCQXvv78iLERGQTZfbWluUzoiARABEgLvv78BEgXvv78iLERGQTZfbWF4UzoiAcWUAcO+Au+/vwHDvgXvv78iLERGQTZfYWNjZXB0UzoiAu+/vwICAe+/vwECAgECAiIsREZBNl9zcGVjaWFsUzoiAQIBAQLvv78BXDAF77+/fT4iLERGQTZfdHJhbnNpdGlvblM6WyICAgQFAQIGBQECAQUBAgIFAQEBBQICAgUDAgUFAQICBQMCBQUBAgEECQUBAgMFAQIDBQECBAUBAgEFAwIBBQECAwUEAgMFAQIDBQECAQUDAg8FAQIJBQICBwUCAgEFAQIEBQICAgUBAiwFAwICBQECXG4FAQIDBQHvv78BAgHvv78CAgbvv78BAwTvv78EAgXvv78EAlxm77+/AQIC77+/AgIC77+/AQUG77+/BgI777+/AQUiLCIBBQTvv78CBwLvv78CBQPvv78CBwHvv78BBwPvv78BBQfvv78BBQHvv78BBQTvv78CBQHvv78CBQTvv78DBQLvv78BBQLvv78CBQHvv78BBwEFBO+/vwIFAu+/vwEHEe+/vwIFAe+/vwEFAu+/vwEFBe+/vwEFAe+/vwEHJO+/vwEGAe+/vwEFBO+/vwEFB++/vwEHJu+/vwEFA++/vwIFB++/vwIFBO+/vwEFAe+/vwEFAe+/vwIFAu+/vwEFAe+/vwsFAu+/vwEFA++/vwFcYgEFIiwiIiwiIiwiAQlcYu+/vwIJXG7vv78BCQfvv78BCQHvv78BCQXvv78BCQHvv78CCQTvv78DCQLvv78BCQLvv78CCQEHAe+/vwEJBe+/vwEJXG7vv78BBwnvv78CCQHvv78BCTbvv78BCTvvv78CCQTvv78BCQHvv78BCQHvv78BCQPvv78BCQHvv78LCQLvv78BCQPvv78BXGIBCSIsIiIsIiIsIiIsIiIsIiJdfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qodix7REZBNl9lb3Q6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBNl9lb3RTKSxERkE2X2VvZjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkE2X2VvZlMpLERGQTZfbWluOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyh2LkRGQTZfbWluUyksREZBNl9tYXg6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHYuREZBNl9tYXhTKSxERkE2X2FjY2VwdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkE2X2FjY2VwdFMpLERGQTZfc3BlY2lhbDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkE2X3NwZWNpYWxTKSxERkE2X3RyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1bXSx0LG49di5ERkE2X3RyYW5zaXRpb25TLmxlbmd0aDtmb3IodD0wO3Q8bjt0KyspZS5wdXNoKHIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTZfdHJhbnNpdGlvblNbdF0pKTtyZXR1cm4gZX0oKX0pLHYuREZBNj1mdW5jdGlvbihlKXt0aGlzLnJlY29nbml6ZXI9ZSx0aGlzLmRlY2lzaW9uTnVtYmVyPTYsdGhpcy5lb3Q9di5ERkE2X2VvdCx0aGlzLmVvZj12LkRGQTZfZW9mLHRoaXMubWluPXYuREZBNl9taW4sdGhpcy5tYXg9di5ERkE2X21heCx0aGlzLmFjY2VwdD12LkRGQTZfYWNjZXB0LHRoaXMuc3BlY2lhbD12LkRGQTZfc3BlY2lhbCx0aGlzLnRyYW5zaXRpb249di5ERkE2X3RyYW5zaXRpb259LHIuYW50bHIubGFuZy5leHRlbmQodi5ERkE2LHIuYW50bHIucnVudGltZS5ERkEse2dldERlc2NyaXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIigpKiBsb29wYmFjayBvZiAzMzI6MTE6ICggKGRuZCs9IHBtX0RlZmF1bHROYW1lc3BhY2VEZWNsIHwgcys9IHBfU2V0dGVyIHwgbmQrPSBwbV9OYW1lc3BhY2VEZWNsIHwgaSs9IHBfSW1wb3J0IHwgZnRvKz0gcG1fRlRPcHRpb25EZWNsICkgKSoifSxzcGVjaWFsU3RhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKHQsbil7dmFyIGk9dCxzPWZ1bmN0aW9uKHQsbil7c3dpdGNoKHQpe2Nhc2UgMDp2YXIgcj1uLkxBKDEpLGk9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMTtpZihyPT1lfHxyPT14fHxyPj1fJiZyPD1EfHxyPT1XfHxyPT1ZfHxyPT1ldHx8cj09b3R8fHI+PWF0JiZyPD1mdHx8cj49ZHQmJnI8PW10fHxyPT1idHx8cj49U3QmJnI8PXh0fHxyPT1DdHx8cj09X3R8fHI+PVp0JiZyPD1lbnx8cj09bm58fHI9PWlyfHxyPj1saSYmcjw9Y2l8fHI9PW1pfHxyPT15aXx8cj09d2l8fHI9PVRpfHxyPj1DaSYmcjw9Qml8fHI9PUlpfHxyPT1XaSl0PTk7ZWxzZSBpZihyPT16aSYmdGhpcy5sYyhjKSl0PTg7ZWxzZSBpZihyPT1UdHx8cj09enQpdD03O24uc2VlayhpKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMTp2YXIgcz1uLkxBKDEpLG89bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSxzPT1HbiYmdGhpcy5sYyhoKT90PTY6cz49TCYmczw9QXx8cz49aiYmczw9Rnx8cz09cXx8cz09TnR8fHM9PUh0fHxzPT1kbnx8cz09aHI/dD03OnM9PXh8fHM+PV8mJnM8PUR8fHM9PVd8fHM9PVl8fHM9PWV0fHxzPj1zdCYmczw9b3R8fHM+PWF0JiZzPD1mdHx8cz49ZHQmJnM8PW10fHxzPT1idHx8cz49U3QmJnM8PXh0fHxzPT1DdHx8cz49TXQmJnM8PV90fHxzPj1adCYmczw9ZW58fHM9PW5ufHxzPT1vbnx8cz09aG58fHM9PVpufHxzPT1pcnx8cz09R3J8fHM+PXRpJiZzPD1uaXx8cz49bGkmJnM8PWNpfHxzPT1taXx8cz09eWl8fHM+PXdpJiZzPD1FaXx8cz09VGl8fHM+PUNpJiZzPD1CaXx8cz09SWl8fHM9PVdpP3Q9NTpzPT16aSYmdGhpcy5sYyhjKT90PTg6cz09ZSYmKHQ9OSksbi5zZWVrKG8pO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSAyOnZhciB1PW4uTEEoMSksYT1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xO2lmKHU9PUkpdD0xO2Vsc2UgaWYodT49RSYmdTw9U3x8dT09a3x8dT09UHx8dT09Qnx8dT49UiYmdTw9VXx8dT49WCYmdTw9JHx8dT09Wnx8dT49bnQmJnU8PWl0fHx1PT1sdHx8dT09RXR8fHU9PU50fHx1PT1BdHx8dT09UHR8fHU+PUJ0JiZ1PD1GdHx8dT09cXR8fHU+PVd0JiZ1PD0kdHx8dT09R3R8fHU9PXRufHx1Pj1ybiYmdTw9b258fHU9PVNufHx1Pj1fbiYmdTw9RG58fHU+PVJuJiZ1PD1Vbnx8dT09V258fHU+PUtuJiZ1PD1Rbnx8dT09Wm58fHU+PVdyJiZ1PD1Wcnx8dT09S3J8fHU9PW9pfHx1PT1jaXx8dT49cGkmJnU8PWRpfHx1Pj1DaSYmdTw9QWl8fHU+PUhpJiZ1PD1GaXx8dT09R2l8fHU+PWVzJiZ1PD10c3x8dT49Y3MmJnU8PW1zKXQ9MjtlbHNlIGlmKHU9PUVpJiZ0aGlzLmxjKGMpKXQ9MztlbHNlIGlmKHU9PWN0KXQ9NDtlbHNlIGlmKHU9PWV8fHU+PXgmJnU8PUN8fHU+PUwmJnU8PUR8fHU9PUh8fHU+PWomJnU8PUZ8fHU9PXF8fHU+PXomJnU8PVd8fHU+PUomJnU8PVl8fHU+PWV0JiZ1PD10dHx8dT49c3QmJnU8PWZ0fHx1Pj1odCYmdTw9d3R8fHU+PVN0JiZ1PD1UdHx8dT49Q3QmJnU8PUx0fHx1Pj1PdCYmdTw9RHR8fHU9PUh0fHx1PT1JdHx8dT49UnQmJnU8PXp0fHx1Pj1KdCYmdTw9UXR8fHU+PVl0JiZ1PD1lbnx8dT09bm58fHU+PXVuJiZ1PD1Fbnx8dT49eG4mJnU8PU1ufHx1Pj1QbiYmdTw9cW58fHU9PXpufHx1Pj1YbiYmdTw9Sm58fHU+PUduJiZ1PD1Zbnx8dT49ZXImJnU8PXpyfHx1Pj0kciYmdTw9SnJ8fHU+PVFyJiZ1PD1zaXx8dT49dWkmJnU8PWZpfHx1PT1pc3x8dT09eG8pdD01O24uc2VlayhhKTtpZih0Pj0wKXJldHVybiB0fX0uY2FsbCh0aGlzLnJlY29nbml6ZXIsdCxuKTtpZighci5hbnRsci5sYW5nLmlzVW5kZWZpbmVkKHMpKXJldHVybiBzO2lmKHRoaXMucmVjb2duaXplci5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5yZWNvZ25pemVyLnN0YXRlLmZhaWxlZD0hMCwtMTt2YXIgbz1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKHRoaXMuZ2V0RGVzY3JpcHRpb24oKSw2LGksbik7dGhyb3cgdGhpcy5lcnJvcihvKSxvfSxkdW1teTpudWxsfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qodix7REZBOV9lb3RTOiJcZu+/vyIsREZBOV9lb2ZTOiJcZu+/vyIsREZBOV9taW5TOicBIgEXAu+/vwEeB++/vycsREZBOV9tYXhTOicBIgHCmQLvv78BdAfvv78nLERGQTlfYWNjZXB0UzoiAu+/vwEHAQEB77+/AQMBBAEFAVxiAQkBAgEGIixERkE5X3NwZWNpYWxTOiIB77+/AVwwXG7vv799PiIsREZBOV90cmFuc2l0aW9uUzpbIgEBIiwiAQUBAwfvv78BBgFcYgHvv78BBDDvv78BBx/vv78BCSTvv78BAiIsIiIsIiIsIgFcbjPvv78BCyHvv78BCSIsIiIsIiIsIiIsIiIsIiIsIiIsIiJdfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qodix7REZBOV9lb3Q6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBOV9lb3RTKSxERkE5X2VvZjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkE5X2VvZlMpLERGQTlfbWluOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyh2LkRGQTlfbWluUyksREZBOV9tYXg6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHYuREZBOV9tYXhTKSxERkE5X2FjY2VwdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkE5X2FjY2VwdFMpLERGQTlfc3BlY2lhbDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkE5X3NwZWNpYWxTKSxERkE5X3RyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1bXSx0LG49di5ERkE5X3RyYW5zaXRpb25TLmxlbmd0aDtmb3IodD0wO3Q8bjt0KyspZS5wdXNoKHIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTlfdHJhbnNpdGlvblNbdF0pKTtyZXR1cm4gZX0oKX0pLHYuREZBOT1mdW5jdGlvbihlKXt0aGlzLnJlY29nbml6ZXI9ZSx0aGlzLmRlY2lzaW9uTnVtYmVyPTksdGhpcy5lb3Q9di5ERkE5X2VvdCx0aGlzLmVvZj12LkRGQTlfZW9mLHRoaXMubWluPXYuREZBOV9taW4sdGhpcy5tYXg9di5ERkE5X21heCx0aGlzLmFjY2VwdD12LkRGQTlfYWNjZXB0LHRoaXMuc3BlY2lhbD12LkRGQTlfc3BlY2lhbCx0aGlzLnRyYW5zaXRpb249di5ERkE5X3RyYW5zaXRpb259LHIuYW50bHIubGFuZy5leHRlbmQodi5ERkE5LHIuYW50bHIucnVudGltZS5ERkEse2dldERlc2NyaXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIjM1ODoxOiBwX1NldHRlciA6ICggcG1fQm91bmRhcnlTcGFjZURlY2wgfCBwbV9EZWZhdWx0Q29sbGF0aW9uRGVjbCB8IHBtX0Jhc2VVUklEZWNsIHwgcG1fQ29uc3RydWN0aW9uRGVjbCB8IHBtX09yZGVyaW5nTW9kZURlY2wgfCBwbV9FbXB0eU9yZGVyRGVjbCB8IHsuLi59PyA9PiBwbV9SZXZhbGlkYXRpb25EZWNsIHwgcG1fQ29weU5hbWVzcGFjZXNEZWNsIHwgcG1fRGVjaW1hbEZvcm1hdERlY2wgKTsifSxzcGVjaWFsU3RhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZSxpPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UgMDp2YXIgbj10LkxBKDEpLHI9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSxuPT1HbiYmdGhpcy5sYyhoKT9lPTI6bj09QT9lPTM6bj09cT9lPTQ6bj09TD9lPTU6bj09aj9lPTY6bj09SHQ/ZT03Om49PUY/ZT04Om49PWRuJiYoZT05KSx0LnNlZWsocik7aWYoZT49MClyZXR1cm4gZX19LmNhbGwodGhpcy5yZWNvZ25pemVyLGUsdCk7aWYoIXIuYW50bHIubGFuZy5pc1VuZGVmaW5lZChpKSlyZXR1cm4gaTtpZih0aGlzLnJlY29nbml6ZXIuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMucmVjb2duaXplci5zdGF0ZS5mYWlsZWQ9ITAsLTE7dmFyIHM9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbih0aGlzLmdldERlc2NyaXB0aW9uKCksOSxuLHQpO3Rocm93IHRoaXMuZXJyb3Iocyksc30sZHVtbXk6bnVsbH0pLHIuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHYse0RGQTQ0X2VvdFM6Ikjvv78iLERGQTQ0X2VvZlM6IgFDR++/vyIsREZBNDRfbWluUzoiARBCXDAB77+/AlwwAu+/vyIsREZBNDRfbWF4UzoiAcWUQlwwAe+/vwJcMALvv78iLERGQTQ0X2FjY2VwdFM6IkPvv78BAQPvv78BAiIsREZBNDRfc3BlY2lhbFM6IgFcMAEBAQIBAwEEAQUBBgEHAVxiAQkBXG4BCwFcZgFccgEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBXCIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAe+/vwFDAUQC77+/fT4iLERGQTQ0X3RyYW5zaXRpb25TOlsiAScBKgREAR8GRAErAUQBXCIERAEtAS8CRAEaASQBFwJEAUUCRAFcYgJEATEBMAEBBUQBAwZEAUUDRAECA0QBHgNEATcERAEWAUQBJQEpASgBRAEjA0QBNQE0AS4BBwNEASADRAEFAUQBGQELAUIPRAE2CUQBBAEGB0QBPgE7AUQBMgREATwBPQJEARgsRAE/AUABQQJEAThcbkQBIQNEAe+/vwEOAe+/vwEUASYG77+/AUME77+/ATkBCQFcbgEbBe+/vwFcZgFccgEVASxcZu+/vwEzAu+/vwETARIC77+/AUQG77+/AToBHAEdAQ8BEAERO++/vwFEIiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiIiwiAe+/vyIsIgHvv78iLCIiLCIiXX0pLHIuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHYse0RGQTQ0X2VvdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkE0NF9lb3RTKSxERkE0NF9lb2Y6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBNDRfZW9mUyksREZBNDRfbWluOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyh2LkRGQTQ0X21pblMpLERGQTQ0X21heDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnModi5ERkE0NF9tYXhTKSxERkE0NF9hY2NlcHQ6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBNDRfYWNjZXB0UyksREZBNDRfc3BlY2lhbDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkE0NF9zcGVjaWFsUyksREZBNDRfdHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPVtdLHQsbj12LkRGQTQ0X3RyYW5zaXRpb25TLmxlbmd0aDtmb3IodD0wO3Q8bjt0KyspZS5wdXNoKHIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTQ0X3RyYW5zaXRpb25TW3RdKSk7cmV0dXJuIGV9KCl9KSx2LkRGQTQ0PWZ1bmN0aW9uKGUpe3RoaXMucmVjb2duaXplcj1lLHRoaXMuZGVjaXNpb25OdW1iZXI9NDQsdGhpcy5lb3Q9di5ERkE0NF9lb3QsdGhpcy5lb2Y9di5ERkE0NF9lb2YsdGhpcy5taW49di5ERkE0NF9taW4sdGhpcy5tYXg9di5ERkE0NF9tYXgsdGhpcy5hY2NlcHQ9di5ERkE0NF9hY2NlcHQsdGhpcy5zcGVjaWFsPXYuREZBNDRfc3BlY2lhbCx0aGlzLnRyYW5zaXRpb249di5ERkE0NF90cmFuc2l0aW9ufSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYuREZBNDQsci5hbnRsci5ydW50aW1lLkRGQSx7Z2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iNTM3OjE6IHBtX1F1ZXJ5Qm9keSA6ICh7Li4ufT8gPT4gcF9Qcm9ncmFtIHwgcF9FeHByW3RydWUsdHJ1ZV0gKTsifSxzcGVjaWFsU3RhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKHQsbil7dmFyIGk9dCxzPWZ1bmN0aW9uKHQsbil7c3dpdGNoKHQpe2Nhc2UgMDp2YXIgcj1uLkxBKDEpLGk9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMTtpZihyPT1pdCl0PTE7ZWxzZSBpZihyPT1FdCl0PTI7ZWxzZSBpZihyPT1sdCl0PTM7ZWxzZSBpZihyPT1fbil0PTQ7ZWxzZSBpZihyPT10bil0PTU7ZWxzZSBpZihyPT1Ebil0PTY7ZWxzZSBpZihyPT0kdCl0PTc7ZWxzZSBpZihyPT1aKXQ9ODtlbHNlIGlmKHI9PWtpKXQ9OTtlbHNlIGlmKHI9PUxpKXQ9MTA7ZWxzZSBpZihyPT1zbil0PTExO2Vsc2UgaWYocj09SGkpdD0xMjtlbHNlIGlmKHI9PUJpKXQ9MTM7ZWxzZSBpZihyPT1jaSl0PTE0O2Vsc2UgaWYocj09ZHMpdD0xNTtlbHNlIGlmKHI9PXZzKXQ9MTY7ZWxzZSBpZihyPT1tcyl0PTE3O2Vsc2UgaWYocj09dHMpdD0xODtlbHNlIGlmKHI9PWVzKXQ9MTk7ZWxzZSBpZihyPT1waSl0PTIwO2Vsc2UgaWYocj09amkpdD0yMTtlbHNlIGlmKHI9PVB0KXQ9MjI7ZWxzZSBpZihyPT0kKXQ9MjM7ZWxzZSBpZihyPT1abil0PTI0O2Vsc2UgaWYocj09cm4pdD0yNTtlbHNlIGlmKHI9PVgpdD0yNjtlbHNlIGlmKHI9PUFpKXQ9Mjc7ZWxzZSBpZihyPT1ocyl0PTI4O2Vsc2UgaWYocj09cHMpdD0yOTtlbHNlIGlmKHI9PU50KXQ9MzA7ZWxzZSBpZihyPT1rKXQ9MzE7ZWxzZSBpZihyPT1HdCl0PTMyO2Vsc2UgaWYocj09b2kpdD0zMztlbHNlIGlmKHI9PUIpdD0zNDtlbHNlIGlmKHI9PXF0KXQ9MzU7ZWxzZSBpZihyPT1WKXQ9MzY7ZWxzZSBpZihyPT1CdCl0PTM3O2Vsc2UgaWYocj09ZGkpdD0zODtlbHNlIGlmKHI9PUUpdD0zOTtlbHNlIGlmKHI9PUZ0KXQ9NDA7ZWxzZSBpZihyPT1qdCl0PTQxO2Vsc2UgaWYocj09Uyl0PTQyO2Vsc2UgaWYocj09UCl0PTQzO2Vsc2UgaWYocj09RmkpdD00NDtlbHNlIGlmKHI9PVIpdD00NTtlbHNlIGlmKHI9PVZ0KXQ9NDY7ZWxzZSBpZihyPT1VKXQ9NDc7ZWxzZSBpZihyPT1ydCl0PTQ4O2Vsc2UgaWYocj09bnQpdD00OTtlbHNlIGlmKHI9PVduKXQ9NTA7ZWxzZSBpZihyPT1HaSl0PTUxO2Vsc2UgaWYocj09WHQpdD01MjtlbHNlIGlmKHI9PVd0KXQ9NTM7ZWxzZSBpZihyPT1Tbil0PTU0O2Vsc2UgaWYocj09QXQpdD01NTtlbHNlIGlmKHI9PUtyKXQ9NTY7ZWxzZSBpZihyPT1DaSl0PTU3O2Vsc2UgaWYocj09Y3MpdD01ODtlbHNlIGlmKHI9PVVuKXQ9NTk7ZWxzZSBpZihyPT1Lbil0PTYwO2Vsc2UgaWYocj09UW4pdD02MTtlbHNlIGlmKHI9PVJuKXQ9NjI7ZWxzZSBpZihyPT1Xcil0PTYzO2Vsc2UgaWYocj09WHIpdD02NDtlbHNlIGlmKHI9PVZyKXQ9NjU7ZWxzZSBpZihyPT1vbil0PTY2O2Vsc2UgaWYociE9ZSYmciE9RWl8fCF0aGlzLmxjKGMpKXtpZihyPj14JiZyPD1DfHxyPj1MJiZyPD1EfHxyPT1IfHxyPj1qJiZyPD1xfHxyPj16JiZyPD1XfHxyPj1KJiZyPD1LfHxyPj1HJiZyPD1ZfHxyPj1ldCYmcjw9dHR8fHI+PXN0JiZyPD1mdHx8cj49Y3QmJnI8PW10fHxyPj15dCYmcjw9d3R8fHI+PVN0JiZyPD1UdHx8cj49Q3QmJnI8PUx0fHxyPj1PdCYmcjw9RHR8fHI9PUh0fHxyPT1JdHx8cj49UnQmJnI8PXp0fHxyPj1KdCYmcjw9UXR8fHI+PVl0JiZyPD1lbnx8cj09bm58fHI+PXVuJiZyPD1Fbnx8cj49eG4mJnI8PU1ufHxyPj1QbiYmcjw9cW58fHI9PXpufHxyPj1YbiYmcjw9Sm58fHI+PUduJiZyPD1Zbnx8cj49ZXImJnI8PXpyfHxyPj0kciYmcjw9SnJ8fHI+PVFyJiZyPD1zaXx8cj49dWkmJnI8PWZpfHxyPT1pc3x8cj09eG8pdD02ODtlbHNlIGlmKHI9PVF8fHI9PWd0KXQ9Njl9ZWxzZSB0PTY3O24uc2VlayhpKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMTp2YXIgcz1uLkxBKDEpLG89bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsobyk7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDI6dmFyIHU9bi5MQSgxKSxhPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKGEpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSAzOnZhciBmPW4uTEEoMSksbD1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2VlayhsKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgNDp2YXIgcD1uLkxBKDEpLHY9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsodik7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDU6dmFyIG09bi5MQSgxKSxnPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKGcpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSA2OnZhciB5PW4uTEEoMSksYj1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2VlayhiKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgNzp2YXIgdz1uLkxBKDEpLFQ9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoVCk7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDg6dmFyIE49bi5MQSgxKSxBPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKEEpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSA5OnZhciBPPW4uTEEoMSksTT1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2VlayhNKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMTA6dmFyIF89bi5MQSgxKSxGPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKEYpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSAxMTp2YXIgST1uLkxBKDEpLG90PW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKG90KTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMTI6dmFyIHV0PW4uTEEoMSksYXQ9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoYXQpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSAxMzp2YXIgaHQ9bi5MQSgxKSxwdD1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2VlayhwdCk7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDE0OnZhciBkdD1uLkxBKDEpLHZ0PW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKHZ0KTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMTU6dmFyIGJ0PW4uTEEoMSkseHQ9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoeHQpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSAxNjp2YXIga3Q9bi5MQSgxKSxNdD1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2VlayhNdCk7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDE3OnZhciBfdD1uLkxBKDEpLFV0PW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKFV0KTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMTg6dmFyIEt0PW4uTEEoMSksWnQ9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoWnQpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSAxOTp2YXIgYW49bi5MQSgxKSxmbj1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2Vlayhmbik7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDIwOnZhciBsbj1uLkxBKDEpLGNuPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKGNuKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMjE6dmFyIGhuPW4uTEEoMSkscG49bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsocG4pO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSAyMjp2YXIgZG49bi5MQSgxKSx2bj1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2Vlayh2bik7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDIzOnZhciBtbj1uLkxBKDEpLGduPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKGduKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMjQ6dmFyIHluPW4uTEEoMSksYm49bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoYm4pO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSAyNTp2YXIgd249bi5MQSgxKSxUbj1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2VlayhUbik7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDI2OnZhciBObj1uLkxBKDEpLENuPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKENuKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMjc6dmFyIGtuPW4uTEEoMSksTG49bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoTG4pO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSAyODp2YXIgQW49bi5MQSgxKSxPbj1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2VlayhPbik7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDI5OnZhciBIbj1uLkxBKDEpLEJuPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKEJuKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMzA6dmFyIGpuPW4uTEEoMSksRm49bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoRm4pO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSAzMTp2YXIgSW49bi5MQSgxKSxWbj1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2VlayhWbik7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDMyOnZhciAkbj1uLkxBKDEpLHRyPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKHRyKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMzM6dmFyIG5yPW4uTEEoMSkscnI9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpfHx0aGlzLmxjKGMpJiZ0aGlzLmxjKGQpfHx0aGlzLmxjKGMpJiZ0aGlzLmxjKGQpfHx0aGlzLmxjKGMpJiZ0aGlzLmxjKGQpfHx0aGlzLmxjKGMpJiZ0aGlzLmxjKGQpP3Q9Njc6dD03MSxuLnNlZWsocnIpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSAzNDp2YXIgaXI9bi5MQSgxKSxzcj1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2Vlayhzcik7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDM1OnZhciBvcj1uLkxBKDEpLHVyPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKHVyKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMzY6dmFyIGFyPW4uTEEoMSksZnI9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoZnIpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSAzNzp2YXIgbHI9bi5MQSgxKSxjcj1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2Vlayhjcik7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDM4OnZhciBocj1uLkxBKDEpLHByPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKHByKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMzk6dmFyIGRyPW4uTEEoMSksdnI9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsodnIpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSA0MDp2YXIgbXI9bi5MQSgxKSxncj1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2Vlayhncik7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDQxOnZhciB5cj1uLkxBKDEpLGJyPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKGJyKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgNDI6dmFyIHdyPW4uTEEoMSksRXI9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoRXIpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSA0Mzp2YXIgU3I9bi5MQSgxKSx4cj1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2Vlayh4cik7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDQ0OnZhciBUcj1uLkxBKDEpLE5yPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKE5yKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgNDU6dmFyIENyPW4uTEEoMSksa3I9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoa3IpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSA0Njp2YXIgTHI9bi5MQSgxKSxBcj1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2VlayhBcik7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDQ3OnZhciBPcj1uLkxBKDEpLE1yPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKE1yKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgNDg6dmFyIF9yPW4uTEEoMSksRHI9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoRHIpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSA0OTp2YXIgUHI9bi5MQSgxKSxIcj1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2VlayhIcik7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDUwOnZhciBCcj1uLkxBKDEpLGpyPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKXx8dGhpcy5sYyhjKSYmdGhpcy5sYyhoKT90PTY3OnQ9NzEsbi5zZWVrKGpyKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgNTE6dmFyIEZyPW4uTEEoMSksSXI9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoSXIpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSA1Mjp2YXIgcXI9bi5MQSgxKSxScj1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2VlayhScik7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDUzOnZhciBVcj1uLkxBKDEpLEdyPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKEdyKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgNTQ6dmFyIFlyPW4uTEEoMSksWnI9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoWnIpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSA1NTp2YXIgZWk9bi5MQSgxKSx0aT1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2Vlayh0aSk7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDU2OnZhciBuaT1uLkxBKDEpLHJpPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKHJpKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgNTc6dmFyIGlpPW4uTEEoMSksYWk9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoYWkpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSA1ODp2YXIgbGk9bi5MQSgxKSxoaT1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2VlayhoaSk7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDU5OnZhciB2aT1uLkxBKDEpLG1pPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKXx8dGhpcy5sYyhjKSYmdGhpcy5sYyhoKT90PTY3OnQ9NzEsbi5zZWVrKG1pKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgNjA6dmFyIGdpPW4uTEEoMSkseWk9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpfHx0aGlzLmxjKGMpJiZ0aGlzLmxjKGgpP3Q9Njc6dD03MSxuLnNlZWsoeWkpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSA2MTp2YXIgYmk9bi5MQSgxKSx3aT1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyl8fHRoaXMubGMoYykmJnRoaXMubGMoaCk/dD02Nzp0PTcxLG4uc2Vlayh3aSk7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDYyOnZhciBTaT1uLkxBKDEpLHhpPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKXx8dGhpcy5sYyhjKSYmdGhpcy5sYyhoKT90PTY3OnQ9NzEsbi5zZWVrKHhpKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgNjM6dmFyIFRpPW4uTEEoMSksTmk9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoTmkpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSA2NDp2YXIgT2k9bi5MQSgxKSxNaT1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2VlayhNaSk7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDY1OnZhciBfaT1uLkxBKDEpLERpPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKERpKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgNjY6dmFyIFBpPW4uTEEoMSksSWk9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLmxjKGMpP3Q9Njc6dD03MSxuLnNlZWsoSWkpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSA2Nzp2YXIgcWk9bi5MQSgxKSxSaT1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMubGMoYyk/dD02Nzp0PTcxLG4uc2VlayhSaSk7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDY4OnZhciBVaT1uLkxBKDEpLHppPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEsdGhpcy5sYyhjKT90PTY3OnQ9NzEsbi5zZWVrKHppKTtpZih0Pj0wKXJldHVybiB0fX0uY2FsbCh0aGlzLnJlY29nbml6ZXIsdCxuKTtpZighci5hbnRsci5sYW5nLmlzVW5kZWZpbmVkKHMpKXJldHVybiBzO2lmKHRoaXMucmVjb2duaXplci5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5yZWNvZ25pemVyLnN0YXRlLmZhaWxlZD0hMCwtMTt2YXIgbz1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKHRoaXMuZ2V0RGVzY3JpcHRpb24oKSw0NCxpLG4pO3Rocm93IHRoaXMuZXJyb3Iobyksb30sZHVtbXk6bnVsbH0pLHIuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHYse0RGQTQ2X2VvdFM6IhHvv78iLERGQTQ2X2VvZlM6IgHvv78GB1xu77+/IixERkE0Nl9taW5TOiIBEAYSXG7vv78iLERGQTQ2X21heFM6IgHFlAbDvlxu77+/IixERkE0Nl9hY2NlcHRTOiIH77+/AQYFAQECAQMBBAEFIixERkE0Nl9zcGVjaWFsUzoiAe+/vwECAQEBXDABBAEFAQNcbu+/v30+IixERkE0Nl90cmFuc2l0aW9uUzpbIiUHAQEFBwEDXG4HAQIhBwEFHQcBBAEGVAcB77+/AQcB77+/AgcL77+/BAcF77+/BAdcZu+/vwEHAu+/vwIHAu+/vwEHBu+/vwYHO++/vwEHIiwiAwcF77+/AwcB77+/AQcE77+/AQcC77+/AgcE77+/AQcC77+/AQcB77+/AQcD77+/AQcB77+/AQcB77+/AgcE77+/AwcC77+/AQcB77+/AwcC77+/AQcF77+/AgcH77+/AgcF77+/AQcE77+/AgcB77+/AQcE77+/AQcE77+/AQcD77+/AgcG77+/AQcE77+/AVxuAQcC77+/AQkE77+/AgcE77+/AQcB77+/AQcH77+/AQcC77+/AQc777+/AwcBXGIB77+/BAcB77+/AQcD77+/AQcB77+/CwcC77+/AQcD77+/AgciLCcDBwXvv78DBwHvv78BBwTvv78BBwLvv78CBwTvv78BBwLvv78BBwHvv78BBwPvv78BBwHvv78BBwHvv78CBwTvv78DBwLvv78BBwHvv78DBwLvv78BBwXvv78CBwfvv78CBwXvv78BBwTvv78CBwHvv78BBwTvv78BBwTvv78BBwPvv78CBwbvv78BBwXvv78BBwfvv78CBwTvv78BBwHvv78BBwfvv78BBwLvv78BBxjvv78BXGYi77+/AwcBCwHvv78EBwHvv78BBwPvv78BBwHvv78LBwLvv78BBwPvv78CBycsIgMHBe+/vwMHAe+/vwEHBO+/vwEHAu+/vwIHBO+/vwEHAu+/vwEHAe+/vwEHA++/vwEHAe+/vwEHAe+/vwIHBO+/vwMHAu+/vwEHAe+/vwMHAu+/vwEHBe+/vwIHB++/vwIHBe+/vwEHBO+/vwIHAe+/vwEHBO+/vwEHBO+/vwEHA++/vwIHBu+/vwEHBe+/vwEHB++/vwIHBO+/vwEHAe+/vwEHB++/vwEHAu+/vwEHO++/vwEHAVxyAQcC77+/BAcB77+/AQcD77+/AQcB77+/CwcC77+/AQcD77+/AgciLCIDBwXvv78DBwHvv78BBwTvv78BBwLvv78CBwTvv78BBwLvv78BBwHvv78BBwPvv78BBwHvv78BBwHvv78CBwTvv78DBwLvv78BBwHvv78DBwLvv78BBwXvv78CBwfvv78CBwXvv78BBwTvv78CBwHvv78BBwTvv78BBwTvv78BBwPvv78CBwbvv78BBwXvv78BBwfvv78CBwTvv78BBwHvv78BBwfvv78BBwLvv78BBzvvv78BBwEOAQcC77+/BAcB77+/AQcD77+/AQcB77+/CwcC77+/AQcD77+/AgciLCIDBwXvv78DBwHvv78BBwTvv78BBwLvv78CBwTvv78BBwLvv78BBwHvv78BBwPvv78BBwHvv78BBwHvv78CBwTvv78DBwLvv78BBwHvv78DBwLvv78BBwXvv78CBwfvv78CBwXvv78BBwTvv78CBwHvv78BBwTvv78BBwTvv78BBwPvv78CBwbvv78BBwXvv78BBwfvv78CBwTvv78BBwHvv78BBwfvv78BBwLvv78BBzvvv78BBwEPAQcC77+/BAcB77+/AQcD77+/AQcB77+/CwcC77+/AQcD77+/AgciLCIDBwXvv78DBwHvv78BBwTvv78BBwLvv78CBwTvv78BBwLvv78BBwHvv78BBwPvv78BBwHvv78BBwHvv78CBwTvv78DBwLvv78BBwHvv78DBwLvv78BBwXvv78CBwfvv78CBwXvv78BBwTvv78CBwHvv78BBwTvv78BBwTvv78BBwPvv78CBwbvv78BBwXvv78BBwfvv78CBwTvv78BBwHvv78BBwfvv78BBwLvv78BBzvvv78DBwHvv78BEAQHAe+/vwEHA++/vwEHAe+/vwsHAu+/vwEHA++/vwIHIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIl19KSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdCh2LHtERkE0Nl9lb3Q6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBNDZfZW90UyksREZBNDZfZW9mOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTQ2X2VvZlMpLERGQTQ2X21pbjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnModi5ERkE0Nl9taW5TKSxERkE0Nl9tYXg6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHYuREZBNDZfbWF4UyksREZBNDZfYWNjZXB0OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTQ2X2FjY2VwdFMpLERGQTQ2X3NwZWNpYWw6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBNDZfc3BlY2lhbFMpLERGQTQ2X3RyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1bXSx0LG49di5ERkE0Nl90cmFuc2l0aW9uUy5sZW5ndGg7Zm9yKHQ9MDt0PG47dCsrKWUucHVzaChyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkE0Nl90cmFuc2l0aW9uU1t0XSkpO3JldHVybiBlfSgpfSksdi5ERkE0Nj1mdW5jdGlvbihlKXt0aGlzLnJlY29nbml6ZXI9ZSx0aGlzLmRlY2lzaW9uTnVtYmVyPTQ2LHRoaXMuZW90PXYuREZBNDZfZW90LHRoaXMuZW9mPXYuREZBNDZfZW9mLHRoaXMubWluPXYuREZBNDZfbWluLHRoaXMubWF4PXYuREZBNDZfbWF4LHRoaXMuYWNjZXB0PXYuREZBNDZfYWNjZXB0LHRoaXMuc3BlY2lhbD12LkRGQTQ2X3NwZWNpYWwsdGhpcy50cmFuc2l0aW9uPXYuREZBNDZfdHJhbnNpdGlvbn0sci5hbnRsci5sYW5nLmV4dGVuZCh2LkRGQTQ2LHIuYW50bHIucnVudGltZS5ERkEse2dldERlc2NyaXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIjU3MzoxOiBwX0V4cHJTaW5nbGVbc3RyaWN0XSA6ICggKCAoICggRk9SIHwgTEVUICkgRE9MTEFSICkgfCAoIEZPUiAoIFRVTUJMSU5HIHwgU0xJRElORyApICkgKT0+IHBfRkxXT1JIeWJyaWRbJHN0cmljdF0gfCAoIElGIExQQVJFTiApPT4gcF9JZkh5YnJpZFskc3RyaWN0XSB8ICggU1dJVENIIExQQVJFTiApPT4gcF9Td2l0Y2hIeWJyaWRbJHN0cmljdF0gfCAoIFRZUEVTV0lUQ0ggTFBBUkVOICk9PiBwX1R5cGVzd2l0Y2hIeWJyaWRbJHN0cmljdF0gfCAoIFRSWSBMQlJBQ0tFVCApPT4gcF9UcnlDYXRjaEh5YnJpZFskc3RyaWN0XSB8IHBfRXhwclNpbXBsZSApOyJ9LHNwZWNpYWxTdGF0ZVRyYW5zaXRpb246ZnVuY3Rpb24odCxuKXt2YXIgaT10LHM9ZnVuY3Rpb24odCxuKXtzd2l0Y2godCl7Y2FzZSAwOnZhciByPW4uTEEoMSksaT1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xO2lmKHI9PWNpJiZ0aGlzLnN5bnByZWQyX1hRdWVyeVBhcnNlcigpKXQ9MTM7ZWxzZSBpZihyPT1lfHxyPj14JiZyPD1OfHxyPj1NJiZyPD1EfHxyPT1IfHxyPT1xfHxyPj16JiZyPD1XfHxyPT1LfHxyPT1ZfHxyPT1ldHx8cj09aXR8fHI9PW90fHxyPj1hdCYmcjw9ZnR8fHI+PWR0JiZyPD1tdHx8cj09YnR8fHI+PUV0JiZyPD14dHx8cj09Q3R8fHI+PV90JiZyPD1EdHx8cj49UnQmJnI8PVV0fHxyPT1KdHx8cj49WnQmJnI8PWVufHxyPT1ubnx8cj09YW58fHI9PXBufHxyPj1nbiYmcjw9eW58fHI9PU5ufHxyPT1Nbnx8cj49SW4mJnI8PXFufHxyPT1Ybnx8cj09JG58fHI9PXRyfHxyPT1pcnx8cj09bGl8fHI9PWhpfHxyPj12aSYmcjw9eWl8fHI9PXdpfHxyPT1UaXx8cj49Q2kmJnI8PUJpfHxyPT1JaXx8cj49emkmJnI8PVdpKXQ9NztuLnNlZWsoaSk7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDE6dmFyIHM9bi5MQSgxKSxvPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTE7aWYocz09cGkmJnRoaXMuc3lucHJlZDFfWFF1ZXJ5UGFyc2VyKCkpdD0xMTtlbHNlIGlmKHM9PUFyJiZ0aGlzLnN5bnByZWQxX1hRdWVyeVBhcnNlcigpKXQ9MTI7ZWxzZSBpZihzPT1lfHxzPj14JiZzPD1OfHxzPj1NJiZzPD1EfHxzPT1IfHxzPT1xfHxzPj16JiZzPD1XfHxzPT1LfHxzPT1ZfHxzPT1ldHx8cz09aXR8fHM9PW90fHxzPj1hdCYmczw9ZnR8fHM+PWR0JiZzPD1tdHx8cz09YnR8fHM+PUV0JiZzPD14dHx8cz09Q3R8fHM+PV90JiZzPD1EdHx8cz49UnQmJnM8PVV0fHxzPT1KdHx8cz49WnQmJnM8PWVufHxzPT1ubnx8cz09YW58fHM9PXBufHxzPj1nbiYmczw9eW58fHM9PU5ufHxzPT1Nbnx8cz49SW4mJnM8PXFufHxzPT1Ybnx8cz09JG58fHM9PXRyfHxzPT1pcnx8cz49bGkmJnM8PWhpfHxzPj12aSYmczw9eWl8fHM9PXdpfHxzPT1UaXx8cz49Q2kmJnM8PUJpfHxzPT1JaXx8cz49emkmJnM8PVdpKXQ9NztuLnNlZWsobyk7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDI6dmFyIHU9bi5MQSgxKSxhPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTE7aWYodT09cGkmJnRoaXMuc3lucHJlZDFfWFF1ZXJ5UGFyc2VyKCkpdD04O2Vsc2UgaWYodT09UG4mJnRoaXMuc3lucHJlZDFfWFF1ZXJ5UGFyc2VyKCkpdD05O2Vsc2UgaWYodT09T24mJnRoaXMuc3lucHJlZDFfWFF1ZXJ5UGFyc2VyKCkpdD0xMDtlbHNlIGlmKHU9PWV8fHU+PXgmJnU8PU58fHU+PU0mJnU8PUR8fHU9PUh8fHU9PXF8fHU+PXomJnU8PVd8fHU9PUt8fHU9PVl8fHU9PWV0fHx1PT1pdHx8dT09b3R8fHU+PWF0JiZ1PD1mdHx8dT49ZHQmJnU8PW10fHx1PT1idHx8dT49RXQmJnU8PXh0fHx1PT1DdHx8dT49X3QmJnU8PUR0fHx1Pj1SdCYmdTw9VXR8fHU9PUp0fHx1Pj1adCYmdTw9ZW58fHU9PW5ufHx1PT1hbnx8dT09cG58fHU+PWduJiZ1PD15bnx8dT09Tm58fHU9PU1ufHx1Pj1JbiYmdTw9cW58fHU9PVhufHx1PT0kbnx8dT09dHJ8fHU9PWlyfHx1Pj1saSYmdTw9aGl8fHU+PXZpJiZ1PD15aXx8dT09d2l8fHU9PVRpfHx1Pj1DaSYmdTw9Qml8fHU9PUlpfHx1Pj16aSYmdTw9V2kpdD03O24uc2VlayhhKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMzp2YXIgZj1uLkxBKDEpLGw9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMTtpZihmPT1kaSYmdGhpcy5zeW5wcmVkNV9YUXVlcnlQYXJzZXIoKSl0PTE2O2Vsc2UgaWYoZj09ZXx8Zj49eCYmZjw9Tnx8Zj49TSYmZjw9RHx8Zj09SHx8Zj09cXx8Zj49eiYmZjw9V3x8Zj09S3x8Zj09WXx8Zj09ZXR8fGY9PWl0fHxmPT1vdHx8Zj49YXQmJmY8PWZ0fHxmPj1kdCYmZjw9bXR8fGY9PWJ0fHxmPj1FdCYmZjw9eHR8fGY9PUN0fHxmPj1fdCYmZjw9RHR8fGY+PVJ0JiZmPD1VdHx8Zj09SnR8fGY+PVp0JiZmPD1lbnx8Zj09bm58fGY9PWFufHxmPT1wbnx8Zj49Z24mJmY8PXlufHxmPT1Obnx8Zj09TW58fGY+PUluJiZmPD1xbnx8Zj09WG58fGY9PSRufHxmPT10cnx8Zj09aXJ8fGY+PWxpJiZmPD1oaXx8Zj49dmkmJmY8PXlpfHxmPT13aXx8Zj09VGl8fGY+PUNpJiZmPD1CaXx8Zj09SWl8fGY+PXppJiZmPD1XaSl0PTc7bi5zZWVrKGwpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSA0OnZhciBjPW4uTEEoMSksaD1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xO2lmKGM9PWNpJiZ0aGlzLnN5bnByZWQzX1hRdWVyeVBhcnNlcigpKXQ9MTQ7ZWxzZSBpZihjPT1lfHxjPj14JiZjPD1OfHxjPj1NJiZjPD1EfHxjPT1IfHxjPT1xfHxjPj16JiZjPD1XfHxjPT1LfHxjPT1ZfHxjPT1ldHx8Yz09aXR8fGM9PW90fHxjPj1hdCYmYzw9ZnR8fGM+PWR0JiZjPD1tdHx8Yz09YnR8fGM+PUV0JiZjPD14dHx8Yz09Q3R8fGM+PV90JiZjPD1EdHx8Yz49UnQmJmM8PVV0fHxjPT1KdHx8Yz49WnQmJmM8PWVufHxjPT1ubnx8Yz09YW58fGM9PXBufHxjPj1nbiYmYzw9eW58fGM9PU5ufHxjPT1Nbnx8Yz49SW4mJmM8PXFufHxjPT1Ybnx8Yz09JG58fGM9PXRyfHxjPT1pcnx8Yz09bGl8fGM9PWhpfHxjPj12aSYmYzw9eWl8fGM9PXdpfHxjPT1UaXx8Yz49Q2kmJmM8PUJpfHxjPT1JaXx8Yz49emkmJmM8PVdpKXQ9NztuLnNlZWsoaCk7aWYodD49MClyZXR1cm4gdDticmVhaztjYXNlIDU6dmFyIHA9bi5MQSgxKSxkPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTE7aWYocD09Y2kmJnRoaXMuc3lucHJlZDRfWFF1ZXJ5UGFyc2VyKCkpdD0xNTtlbHNlIGlmKHA9PWV8fHA+PXgmJnA8PU58fHA+PU0mJnA8PUR8fHA9PUh8fHA9PXF8fHA+PXomJnA8PVd8fHA9PUt8fHA9PVl8fHA9PWV0fHxwPT1pdHx8cD09b3R8fHA+PWF0JiZwPD1mdHx8cD49ZHQmJnA8PW10fHxwPT1idHx8cD49RXQmJnA8PXh0fHxwPT1DdHx8cD49X3QmJnA8PUR0fHxwPj1SdCYmcDw9VXR8fHA9PUp0fHxwPj1adCYmcDw9ZW58fHA9PW5ufHxwPT1hbnx8cD09cG58fHA+PWduJiZwPD15bnx8cD09Tm58fHA9PU1ufHxwPj1JbiYmcDw9cW58fHA9PVhufHxwPT0kbnx8cD09dHJ8fHA9PWlyfHxwPT1saXx8cD09aGl8fHA+PXZpJiZwPD15aXx8cD09d2l8fHA9PVRpfHxwPj1DaSYmcDw9Qml8fHA9PUlpfHxwPj16aSYmcDw9V2kpdD03O24uc2VlayhkKTtpZih0Pj0wKXJldHVybiB0fX0uY2FsbCh0aGlzLnJlY29nbml6ZXIsdCxuKTtpZighci5hbnRsci5sYW5nLmlzVW5kZWZpbmVkKHMpKXJldHVybiBzO2lmKHRoaXMucmVjb2duaXplci5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5yZWNvZ25pemVyLnN0YXRlLmZhaWxlZD0hMCwtMTt2YXIgbz1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKHRoaXMuZ2V0RGVzY3JpcHRpb24oKSw0NixpLG4pO3Rocm93IHRoaXMuZXJyb3Iobyksb30sZHVtbXk6bnVsbH0pLHIuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHYse0RGQTExN19lb3RTOiIx77+/IixERkExMTdfZW9mUzoiMe+/vyIsREZBMTE3X21pblM6IgEQAVwwL++/vyIsREZBMTE3X21heFM6IgHFlAFcMC/vv78iLERGQTExN19hY2NlcHRTOiIC77+/AQMBBCvvv78BAQECIixERkExMTdfc3BlY2lhbFM6IgHvv78BXDAv77+/fT4iLERGQTExN190cmFuc2l0aW9uUzpbIsOMAwHvv78BAwHvv78CAwvvv78BAwLvv78BAwXvv78BAQECAgNcZu+/vwEDAu+/vwIDAu+/vwEDB++/vwUDO++/vwEDIiwiAe+/vyIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiJdfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qodix7REZBMTE3X2VvdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExMTdfZW90UyksREZBMTE3X2VvZjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExMTdfZW9mUyksREZBMTE3X21pbjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnModi5ERkExMTdfbWluUyksREZBMTE3X21heDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnModi5ERkExMTdfbWF4UyksREZBMTE3X2FjY2VwdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExMTdfYWNjZXB0UyksREZBMTE3X3NwZWNpYWw6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMTE3X3NwZWNpYWxTKSxERkExMTdfdHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPVtdLHQsbj12LkRGQTExN190cmFuc2l0aW9uUy5sZW5ndGg7Zm9yKHQ9MDt0PG47dCsrKWUucHVzaChyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExMTdfdHJhbnNpdGlvblNbdF0pKTtyZXR1cm4gZX0oKX0pLHYuREZBMTE3PWZ1bmN0aW9uKGUpe3RoaXMucmVjb2duaXplcj1lLHRoaXMuZGVjaXNpb25OdW1iZXI9MTE3LHRoaXMuZW90PXYuREZBMTE3X2VvdCx0aGlzLmVvZj12LkRGQTExN19lb2YsdGhpcy5taW49di5ERkExMTdfbWluLHRoaXMubWF4PXYuREZBMTE3X21heCx0aGlzLmFjY2VwdD12LkRGQTExN19hY2NlcHQsdGhpcy5zcGVjaWFsPXYuREZBMTE3X3NwZWNpYWwsdGhpcy50cmFuc2l0aW9uPXYuREZBMTE3X3RyYW5zaXRpb259LHIuYW50bHIubGFuZy5leHRlbmQodi5ERkExMTcsci5hbnRsci5ydW50aW1lLkRGQSx7Z2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iOTA4OjE6IHBfUGF0aEV4cHIgOiAoICggU0xBU0ggcF9SZWxhdGl2ZVBhdGhFeHByICk9PiAoIFNMQVNIIHBfUmVsYXRpdmVQYXRoRXhwciApIHwgU0xBU0ggfCBTTEFTSF9TTEFTSCBwX1JlbGF0aXZlUGF0aEV4cHIgfCBwX1JlbGF0aXZlUGF0aEV4cHIgKTsifSxzcGVjaWFsU3RhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZSxpPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UgMDp2YXIgbj10LkxBKDEpLHI9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSx0aGlzLnN5bnByZWQ3X1hRdWVyeVBhcnNlcigpP2U9NDc6ZT00OCx0LnNlZWsocik7aWYoZT49MClyZXR1cm4gZX19LmNhbGwodGhpcy5yZWNvZ25pemVyLGUsdCk7aWYoIXIuYW50bHIubGFuZy5pc1VuZGVmaW5lZChpKSlyZXR1cm4gaTtpZih0aGlzLnJlY29nbml6ZXIuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMucmVjb2duaXplci5zdGF0ZS5mYWlsZWQ9ITAsLTE7dmFyIHM9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbih0aGlzLmdldERlc2NyaXB0aW9uKCksMTE3LG4sdCk7dGhyb3cgdGhpcy5lcnJvcihzKSxzfSxkdW1teTpudWxsfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qodix7REZBMTE5X2VvdFM6IjPvv78iLERGQTExOV9lb2ZTOiIz77+/IixERkExMTlfbWluUzoiARAsXDAG77+/IixERkExMTlfbWF4UzoiAcWULFwwBu+/vyIsREZBMTE5X2FjY2VwdFM6Ii3vv78BAQECAQQBBQEDAQYiLERGQTExOV9zcGVjaWFsUzoiAe+/vwFcMAEBAQIBAwEEAQUBBgEHAVxiAQkBXG4BCwFcZgFccgEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBXCIBIwEkASUBJgEnASgBKQEqASsG77+/fT4iLERGQTExOV90cmFuc2l0aW9uUzpbIgEaAR0EJQESBiUBHgElARUEJQEgAVwiAiUBXHIBFwFcbgIlASsFJQEkASMGJQErBiUBKwclAREDJQEqBCUBCQElARgBHAEbASUBFgMlASgBJwEhBCUBEwMlASsBJQFcZhElASkJJQErFCUBCzElAStcbiUBFAMlAe+/vwEBAe+/vwEHARkL77+/ASwC77+/AQ4H77+/AVxiAR9cZu+/vwEmAu+/vwEGAQUC77+/ASUH77+/AQ8BEAECAQMBBDvvv78BJSIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAe+/vyIsIgHvv78iLCIB77+/IiwiIiwiIiwiIiwiIiwiIiwiIl19KSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdCh2LHtERkExMTlfZW90OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTExOV9lb3RTKSxERkExMTlfZW9mOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTExOV9lb2ZTKSxERkExMTlfbWluOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyh2LkRGQTExOV9taW5TKSxERkExMTlfbWF4OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyh2LkRGQTExOV9tYXhTKSxERkExMTlfYWNjZXB0OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTExOV9hY2NlcHRTKSxERkExMTlfc3BlY2lhbDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExMTlfc3BlY2lhbFMpLERGQTExOV90cmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9W10sdCxuPXYuREZBMTE5X3RyYW5zaXRpb25TLmxlbmd0aDtmb3IodD0wO3Q8bjt0KyspZS5wdXNoKHIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTExOV90cmFuc2l0aW9uU1t0XSkpO3JldHVybiBlfSgpfSksdi5ERkExMTk9ZnVuY3Rpb24oZSl7dGhpcy5yZWNvZ25pemVyPWUsdGhpcy5kZWNpc2lvbk51bWJlcj0xMTksdGhpcy5lb3Q9di5ERkExMTlfZW90LHRoaXMuZW9mPXYuREZBMTE5X2VvZix0aGlzLm1pbj12LkRGQTExOV9taW4sdGhpcy5tYXg9di5ERkExMTlfbWF4LHRoaXMuYWNjZXB0PXYuREZBMTE5X2FjY2VwdCx0aGlzLnNwZWNpYWw9di5ERkExMTlfc3BlY2lhbCx0aGlzLnRyYW5zaXRpb249di5ERkExMTlfdHJhbnNpdGlvbn0sci5hbnRsci5sYW5nLmV4dGVuZCh2LkRGQTExOSxyLmFudGxyLnJ1bnRpbWUuREZBLHtnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiI5MjE6MTogcF9TdGVwRXhwciA6ICggKCBMQlJBQ0tFVCB8IExQQVJFTiB8IFNNQUxMRVIgfCBRVU9UIHwgQVBPUyB8IERPTExBUiApPT4gcF9Qb3N0Zml4RXhwciB8ICggKCAoIEVMRU1FTlQgfCBBVFRSSUJVVEUgKSAoIHBfUU5hbWUgKT8gTEJSQUNLRVQgKSB8ICggKCBOQU1FU1BBQ0UgfCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OICkgKCBwX05DTmFtZSApPyBMQlJBQ0tFVCApIHwgKCAoIERPQ1VNRU5UIHwgVEVYVCB8IENPTU1FTlQgKSBMQlJBQ0tFVCApICk9PiBwX1Bvc3RmaXhFeHByIHwgKCBwX0tpbmRUZXN0ICk9PiBwX0F4aXNTdGVwIHwgKCBwX1FOYW1lIExQQVJFTiApPT4gcF9Qb3N0Zml4RXhwciB8ICggcF9QcmltYXJ5RXhwciApPT4gcF9Qb3N0Zml4RXhwciB8IHBfQXhpc1N0ZXAgKTsifSxzcGVjaWFsU3RhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZSxpPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UgMDp2YXIgbj10LkxBKDEpLHI9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2U9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9lPTQ2OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCkmJihlPTQ4KSx0LnNlZWsocik7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDE6dmFyIGk9dC5MQSgxKSxzPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKT9lPTQ3OnRoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcigpJiYoZT00OCksdC5zZWVrKHMpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAyOnZhciBvPXQuTEEoMSksdT10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/ZT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2U9NDY6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/ZT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKSYmKGU9NDgpLHQuc2Vlayh1KTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMzp2YXIgYT10LkxBKDEpLGY9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2U9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9lPTQ2OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCkmJihlPTQ4KSx0LnNlZWsoZik7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDQ6dmFyIGw9dC5MQSgxKSxjPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhjKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgNTp2YXIgaD10LkxBKDEpLHA9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2U9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9lPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2U9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/ZT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9lPTQ4OmU9NTAsdC5zZWVrKHApO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSA2OnZhciB2PXQuTEEoMSksbT10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/ZT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2U9NDY6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/ZT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKSYmKGU9NDgpLHQuc2VlayhtKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgNzp2YXIgZz10LkxBKDEpLHk9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2U9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9lPTQ2OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCkmJihlPTQ4KSx0LnNlZWsoeSk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDg6dmFyIGI9dC5MQSgxKSx3PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2Vlayh3KTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgOTp2YXIgRT10LkxBKDEpLFM9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2U9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9lPTQ2OnRoaXMuc3lucHJlZDEwX1hRdWVyeVBhcnNlcigpP2U9NDk6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/ZT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKT9lPTQ4OmU9NTAsdC5zZWVrKFMpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAxMDp2YXIgeD10LkxBKDEpLFQ9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2U9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9lPTQ2OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCkmJihlPTQ4KSx0LnNlZWsoVCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDExOnZhciBOPXQuTEEoMSksQz10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/ZT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2U9NDY6dGhpcy5zeW5wcmVkMTBfWFF1ZXJ5UGFyc2VyKCk/ZT00OTp0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKT9lPTQ3OnRoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcigpP2U9NDg6ZT01MCx0LnNlZWsoQyk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDEyOnZhciBrPXQuTEEoMSksTD10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/ZT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2U9NDY6dGhpcy5zeW5wcmVkMTBfWFF1ZXJ5UGFyc2VyKCk/ZT00OTp0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKT9lPTQ3OnRoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcigpP2U9NDg6ZT01MCx0LnNlZWsoTCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDEzOnZhciBBPXQuTEEoMSksTz10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/ZT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2U9NDY6dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCk/ZT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKSYmKGU9NDgpLHQuc2VlayhPKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMTQ6dmFyIE09dC5MQSgxKSxfPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKT9lPTQ3OnRoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcigpJiYoZT00OCksdC5zZWVrKF8pO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAxNTp2YXIgRD10LkxBKDEpLFA9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSx0aGlzLnN5bnByZWQ4X1hRdWVyeVBhcnNlcigpP2U9NDU6dGhpcy5zeW5wcmVkOV9YUXVlcnlQYXJzZXIoKT9lPTQ2OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCkmJihlPTQ4KSx0LnNlZWsoUCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDE2OnZhciBIPXQuTEEoMSksQj10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/ZT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2U9NDY6dGhpcy5zeW5wcmVkMTBfWFF1ZXJ5UGFyc2VyKCk/ZT00OTp0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKT9lPTQ3OnRoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcigpP2U9NDg6ZT01MCx0LnNlZWsoQik7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDE3OnZhciBqPXQuTEEoMSksRj10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/ZT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2U9NDY6dGhpcy5zeW5wcmVkMTBfWFF1ZXJ5UGFyc2VyKCk/ZT00OTp0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKT9lPTQ3OnRoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcigpP2U9NDg6ZT01MCx0LnNlZWsoRik7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDE4OnZhciBJPXQuTEEoMSkscT10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCk/ZT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpP2U9NDY6dGhpcy5zeW5wcmVkMTBfWFF1ZXJ5UGFyc2VyKCk/ZT00OTp0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKT9lPTQ3OnRoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcigpP2U9NDg6ZT01MCx0LnNlZWsocSk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDE5OnZhciBSPXQuTEEoMSksVT10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCl8fHRoaXMuc3lucHJlZDhfWFF1ZXJ5UGFyc2VyKCkmJnRoaXMubGMoZCk/ZT00NTp0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpfHx0aGlzLnN5bnByZWQ5X1hRdWVyeVBhcnNlcigpJiZ0aGlzLmxjKGQpP2U9NDY6dGhpcy5zeW5wcmVkMTBfWFF1ZXJ5UGFyc2VyKCk/ZT00OTp0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKXx8dGhpcy5zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyKCkmJnRoaXMubGMoZCk/ZT00Nzp0aGlzLnN5bnByZWQxMl9YUXVlcnlQYXJzZXIoKSYmdGhpcy5sYyhkKXx8dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhVKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMjA6dmFyIHo9dC5MQSgxKSxXPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhXKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMjE6dmFyIFg9dC5MQSgxKSxWPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhWKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMjI6dmFyICQ9dC5MQSgxKSxKPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhKKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMjM6dmFyIEs9dC5MQSgxKSxRPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhRKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMjQ6dmFyIEc9dC5MQSgxKSxZPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMV9YUXVlcnlQYXJzZXIoKT9lPTQ3OnRoaXMuc3lucHJlZDEyX1hRdWVyeVBhcnNlcigpJiYoZT00OCksdC5zZWVrKFkpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAyNTp2YXIgWj10LkxBKDEpLGV0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhldCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDI2OnZhciB0dD10LkxBKDEpLG50PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhudCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDI3OnZhciBydD10LkxBKDEpLGl0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhpdCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDI4OnZhciBzdD10LkxBKDEpLG90PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhvdCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDI5OnZhciB1dD10LkxBKDEpLGF0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhhdCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDMwOnZhciBmdD10LkxBKDEpLGx0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkMTBfWFF1ZXJ5UGFyc2VyKCk/ZT00OTplPTUwLHQuc2VlayhsdCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDMxOnZhciBjdD10LkxBKDEpLGh0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhodCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDMyOnZhciBwdD10LkxBKDEpLGR0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhkdCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDMzOnZhciB2dD10LkxBKDEpLG10PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhtdCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDM0OnZhciBndD10LkxBKDEpLHl0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2Vlayh5dCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDM1OnZhciBidD10LkxBKDEpLHd0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2Vlayh3dCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDM2OnZhciBFdD10LkxBKDEpLFN0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhTdCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDM3OnZhciB4dD10LkxBKDEpLFR0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkMTBfWFF1ZXJ5UGFyc2VyKCk/ZT00OTplPTUwLHQuc2VlayhUdCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDM4OnZhciBOdD10LkxBKDEpLEN0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhDdCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDM5OnZhciBrdD10LkxBKDEpLEx0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhMdCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDQwOnZhciBBdD10LkxBKDEpLE90PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhPdCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDQxOnZhciBNdD10LkxBKDEpLF90PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhfdCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDQyOnZhciBEdD10LkxBKDEpLFB0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkOF9YUXVlcnlQYXJzZXIoKT9lPTQ1OnRoaXMuc3lucHJlZDlfWFF1ZXJ5UGFyc2VyKCk/ZT00Njp0aGlzLnN5bnByZWQxMF9YUXVlcnlQYXJzZXIoKT9lPTQ5OnRoaXMuc3lucHJlZDExX1hRdWVyeVBhcnNlcigpP2U9NDc6dGhpcy5zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyKCk/ZT00ODplPTUwLHQuc2VlayhQdCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDQzOnZhciBIdD10LkxBKDEpLEJ0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5zeW5wcmVkMTBfWFF1ZXJ5UGFyc2VyKCk/ZT00OTplPTUwLHQuc2VlayhCdCk7aWYoZT49MClyZXR1cm4gZX19LmNhbGwodGhpcy5yZWNvZ25pemVyLGUsdCk7aWYoIXIuYW50bHIubGFuZy5pc1VuZGVmaW5lZChpKSlyZXR1cm4gaTtpZih0aGlzLnJlY29nbml6ZXIuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMucmVjb2duaXplci5zdGF0ZS5mYWlsZWQ9ITAsLTE7dmFyIHM9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbih0aGlzLmdldERlc2NyaXB0aW9uKCksMTE5LG4sdCk7dGhyb3cgdGhpcy5lcnJvcihzKSxzfSxkdW1teTpudWxsfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qodix7REZBMTIxX2VvdFM6Ilxu77+/IixERkExMjFfZW9mUzoiAe+/vwdcYgLvv78iLERGQTEyMV9taW5TOiIBEAcSAu+/vyIsREZBMTIxX21heFM6IgHFlAfDvgLvv78iLERGQTEyMV9hY2NlcHRTOiJcYu+/vwECAQEiLERGQTEyMV9zcGVjaWFsUzoiXG7vv799PiIsREZBMTIxX3RyYW5zaXRpb25TOlsiBlxiAQMGXGIBAQZcYgECAQVcclxiAQcBBipcYgEEO1xiAe+/v0BcYhDvv78BXGIY77+/AVxiAu+/vwJcYgLvv78BXGJH77+/AVxiIiwiA1xiBO+/vwRcYgHvv78BXGIE77+/AVxiAu+/vwJcYgTvv78BXGIC77+/AVxiAe+/vwFcYgPvv78BXGIB77+/AVxiAe+/vwJcYgTvv78DXGIC77+/AVxiAe+/vwNcYgLvv78BXGIF77+/AlxiB++/vwJcYgXvv78BXGIE77+/AlxiAe+/vwFcYgTvv78BXGIE77+/AVxiA++/vwJcYgbvv78BXGIF77+/AVxiB++/vwJcYgTvv78BXGIB77+/AVxiB++/vwFcYgLvv78BXGIU77+/AVxiBu+/vwFcYgPvv78BXGIG77+/AVxiFO+/vwFcYgHvv78BXGIC77+/BFxiAe+/vwFcYgPvv78BXGIB77+/C1xiAu+/vwFcYgEJAu+/vwJcYiIsIgNcYgTvv78EXGIB77+/AVxiBO+/vwFcYgLvv78CXGIE77+/AVxiAu+/vwFcYgHvv78BXGID77+/AVxiAe+/vwFcYgHvv78CXGIE77+/A1xiAu+/vwFcYgHvv78DXGIC77+/AVxiBe+/vwJcYgfvv78CXGIF77+/AVxiBO+/vwJcYgHvv78BXGIE77+/AVxiBO+/vwFcYgPvv78CXGIG77+/AVxiBe+/vwFcYgfvv78CXGIE77+/AVxiAe+/vwFcYgfvv78BXGIC77+/AVxiFO+/vwFcYgbvv78BXGID77+/AVxiBu+/vwFcYhTvv78BXGIB77+/AVxiAu+/vwRcYgHvv78BXGID77+/AVxiAe+/vwtcYgLvv78BXGIBCQLvv78CXGIiLCIDXGIE77+/BFxiAe+/vwFcYgTvv78BXGIC77+/AlxiBO+/vwFcYgLvv78BXGIB77+/AVxiA++/vwFcYgHvv78BXGIB77+/AlxiBO+/vwNcYgLvv78BXGIB77+/A1xiAu+/vwFcYgXvv78CXGIH77+/AlxiBe+/vwFcYgTvv78CXGIB77+/AVxiBO+/vwFcYgTvv78BXGID77+/AlxiBu+/vwFcYgXvv78BXGIH77+/AlxiBO+/vwFcYgHvv78BXGIH77+/AVxiAu+/vwFcYhTvv78BXGIG77+/AVxiA++/vwFcYgbvv78BXGIU77+/A1xiAu+/vwRcYgHvv78BXGID77+/AVxiAe+/vwtcYgLvv78BXGIBCQLvv78CXGIiLCIDXGIE77+/BFxiAe+/vwFcYgTvv78BXGIC77+/AlxiBO+/vwFcYgLvv78BXGIB77+/AVxiA++/vwFcYgHvv78BXGIB77+/AlxiBO+/vwNcYgLvv78BXGIB77+/A1xiAu+/vwFcYgXvv78CXGIH77+/AlxiBe+/vwFcYgTvv78CXGIB77+/AVxiBO+/vwFcYgTvv78BXGID77+/AlxiBu+/vwFcYgXvv78BXGIH77+/AlxiBO+/vwFcYgHvv78BXGIH77+/AVxiAu+/vwFcYhTvv78BXGIG77+/AVxiA++/vwFcYgbvv78BXGIU77+/AVxiAe+/vwFcYgLvv78EXGIB77+/AVxiA++/vwFcYgHvv78LXGIC77+/AVxiAQkC77+/AlxiIiwiA1xiBO+/vwRcYgHvv78BXGIE77+/AVxiAu+/vwJcYgTvv78BXGIC77+/AVxiAe+/vwFcYgPvv78BXGIB77+/AVxiAe+/vwJcYgTvv78DXGIC77+/AVxiAe+/vwNcYgLvv78BXGIF77+/AlxiB++/vwJcYgXvv78BXGIE77+/AlxiAe+/vwFcYgTvv78BXGIE77+/AVxiA++/vwJcYgbvv78BXGIF77+/AVxiB++/vwJcYgTvv78BXGIB77+/AVxiB++/vwFcYgLvv78BXGIU77+/AVxiBu+/vwFcYgPvv78BXGIG77+/AVxiFO+/vwFcYgHvv78BXGIC77+/BFxiAe+/vwFcYgPvv78BXGIB77+/C1xiAu+/vwFcYgEJAu+/vwJcYiIsIgNcYgTvv78EXGIB77+/AVxiBO+/vwFcYgLvv78CXGIE77+/AVxiAu+/vwFcYgHvv78BXGID77+/AVxiAe+/vwFcYgHvv78CXGIE77+/A1xiAu+/vwFcYgHvv78DXGIC77+/AVxiBe+/vwJcYgfvv78CXGIF77+/AVxiBO+/vwJcYgHvv78BXGIE77+/AVxiBO+/vwFcYgPvv78CXGIG77+/AVxiBe+/vwFcYgfvv78CXGIE77+/AVxiAe+/vwFcYgfvv78BXGIC77+/AVxiFO+/vwFcYgbvv78BXGID77+/AVxiBu+/vwFcYhTvv78BXGIB77+/AVxiAu+/vwRcYgHvv78BXGID77+/AVxiAe+/vwtcYgLvv78BXGIBCQLvv78CXGIiLCIDXGIE77+/BFxiAe+/vwFcYgTvv78BXGIC77+/AlxiBO+/vwFcYgLvv78BXGIB77+/AVxiA++/vwFcYgHvv78BXGIB77+/AlxiBO+/vwNcYgLvv78BXGIB77+/A1xiAu+/vwFcYgXvv78CXGIH77+/AlxiBe+/vwFcYgTvv78CXGIB77+/AVxiBO+/vwFcYgTvv78BXGID77+/AlxiBu+/vwFcYgXvv78BXGIH77+/AlxiBO+/vwFcYgHvv78BXGIH77+/AVxiAu+/vwFcYhTvv78BXGIG77+/AVxiA++/vwFcYgbvv78BXGIU77+/AVxiAe+/vwFcYgLvv78EXGIB77+/AVxiA++/vwFcYgHvv78LXGIC77+/AVxiAQkC77+/AlxiIiwiIiwiIl19KSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdCh2LHtERkExMjFfZW90OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTEyMV9lb3RTKSxERkExMjFfZW9mOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTEyMV9lb2ZTKSxERkExMjFfbWluOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyh2LkRGQTEyMV9taW5TKSxERkExMjFfbWF4OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyh2LkRGQTEyMV9tYXhTKSxERkExMjFfYWNjZXB0OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTEyMV9hY2NlcHRTKSxERkExMjFfc3BlY2lhbDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExMjFfc3BlY2lhbFMpLERGQTEyMV90cmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9W10sdCxuPXYuREZBMTIxX3RyYW5zaXRpb25TLmxlbmd0aDtmb3IodD0wO3Q8bjt0KyspZS5wdXNoKHIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTEyMV90cmFuc2l0aW9uU1t0XSkpO3JldHVybiBlfSgpfSksdi5ERkExMjE9ZnVuY3Rpb24oZSl7dGhpcy5yZWNvZ25pemVyPWUsdGhpcy5kZWNpc2lvbk51bWJlcj0xMjEsdGhpcy5lb3Q9di5ERkExMjFfZW90LHRoaXMuZW9mPXYuREZBMTIxX2VvZix0aGlzLm1pbj12LkRGQTEyMV9taW4sdGhpcy5tYXg9di5ERkExMjFfbWF4LHRoaXMuYWNjZXB0PXYuREZBMTIxX2FjY2VwdCx0aGlzLnNwZWNpYWw9di5ERkExMjFfc3BlY2lhbCx0aGlzLnRyYW5zaXRpb249di5ERkExMjFfdHJhbnNpdGlvbn0sci5hbnRsci5sYW5nLmV4dGVuZCh2LkRGQTEyMSxyLmFudGxyLnJ1bnRpbWUuREZBLHtnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiI5NDA6MTogcF9Gb3J3YXJkU3RlcCA6ICggcF9Gb3J3YXJkQXhpcyBwX05vZGVUZXN0IHwgcF9BYmJyZXZGb3J3YXJkU3RlcCApOyJ9LGR1bW15Om51bGx9KSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdCh2LHtERkExMjZfZW90UzoiXHLvv78iLERGQTEyNl9lb2ZTOiIB77+/XG4LAu+/vyIsREZBMTI2X21pblM6IgEQXG4SAu+/vyIsREZBMTI2X21heFM6IgHFlFxuw74C77+/IixERkExMjZfYWNjZXB0UzoiC++/vwECAQEiLERGQTEyNl9zcGVjaWFsUzoiXHLvv799PiIsREZBMTI2X3RyYW5zaXRpb25TOlsiBgsBA1xiCwEHCQsBAQECIwsBXG5cbgsBBgMLAQUBBAULAVxiFwsBCR4LAe+/v0ALEO+/vwELG++/vwILAu+/vwELR++/vwELIiwiAwsE77+/BAsB77+/AQsE77+/AQsC77+/AgsE77+/AQsC77+/AQsB77+/AQsD77+/AQsB77+/AQsB77+/AgsE77+/AwsC77+/AQsB77+/AwsC77+/AQsF77+/AgsH77+/AgsF77+/AQsE77+/AgsB77+/AQsE77+/AQsE77+/AQsD77+/AgsG77+/AQsF77+/AQsH77+/AgsE77+/AQsB77+/AQsH77+/AQsC77+/AQsU77+/AQsG77+/AQsD77+/AQsG77+/AQsU77+/AQsBXGYBCwLvv78ECwHvv78BCwPvv78BCwHvv78LCwLvv78BCwPvv78CCyIsIgMLBO+/vwQLAe+/vwELBO+/vwELAu+/vwILBO+/vwELAu+/vwELAe+/vwELA++/vwELAe+/vwELAe+/vwILBO+/vwMLAu+/vwELAe+/vwMLAu+/vwELBe+/vwILB++/vwILBe+/vwELBO+/vwILAe+/vwELBO+/vwELBO+/vwELA++/vwILBu+/vwELBe+/vwELB++/vwILBO+/vwELAe+/vwELB++/vwELAu+/vwELFO+/vwELBu+/vwELA++/vwELBu+/vwELFO+/vwELAVxmAQsC77+/BAsB77+/AQsD77+/AQsB77+/CwsC77+/AQsD77+/AgsiLCIDCwTvv78ECwHvv78BCwTvv78BCwLvv78CCwTvv78BCwLvv78BCwHvv78BCwPvv78BCwHvv78BCwHvv78CCwTvv78DCwLvv78BCwHvv78DCwLvv78BCwXvv78CCwfvv78CCwXvv78BCwTvv78CCwHvv78BCwTvv78BCwTvv78BCwPvv78CCwbvv78BCwXvv78BCwfvv78CCwTvv78BCwHvv78BCwfvv78BCwLvv78BCxTvv78BCwbvv78BCwPvv78BCwbvv78BCxTvv78BCwFcZgELAu+/vwQLAe+/vwELA++/vwELAe+/vwsLAu+/vwELA++/vwILIiwiAwsE77+/BAsB77+/AQsE77+/AQsC77+/AgsE77+/AQsC77+/AQsB77+/AQsD77+/AQsB77+/AQsB77+/AgsE77+/AwsC77+/AQsB77+/AwsC77+/AQsF77+/AgsH77+/AgsF77+/AQsE77+/AgsB77+/AQsE77+/AQsE77+/AQsD77+/AgsG77+/AQsF77+/AQsH77+/AgsE77+/AQsB77+/AQsH77+/AQsC77+/AQsU77+/AQsG77+/AQsD77+/AQsG77+/AQsU77+/AQsBXGYBCwLvv78ECwHvv78BCwPvv78BCwHvv78LCwLvv78BCwPvv78CCyIsIgMLBO+/vwQLAe+/vwELBO+/vwELAu+/vwILBO+/vwELAu+/vwELAe+/vwELA++/vwELAe+/vwELAe+/vwILBO+/vwMLAu+/vwELAe+/vwMLAu+/vwELBe+/vwILB++/vwILBe+/vwELBO+/vwILAe+/vwELBO+/vwELBO+/vwELA++/vwILBu+/vwELBe+/vwELB++/vwILBO+/vwELAe+/vwELB++/vwELAu+/vwELFO+/vwELBu+/vwELA++/vwELBu+/vwELFO+/vwELAVxmAQsC77+/BAsB77+/AQsD77+/AQsB77+/CwsC77+/AQsD77+/AgsiLCIDCwTvv78ECwHvv78BCwTvv78BCwLvv78CCwTvv78BCwLvv78BCwHvv78BCwPvv78BCwHvv78BCwHvv78CCwTvv78DCwLvv78BCwHvv78DCwLvv78BCwXvv78CCwfvv78CCwXvv78BCwTvv78CCwHvv78BCwTvv78BCwTvv78BCwPvv78CCwbvv78BCwXvv78BCwfvv78CCwTvv78BCwHvv78BCwfvv78BCwLvv78BCxTvv78BCwbvv78BCwPvv78BCwbvv78BCxTvv78BCwFcZgELAu+/vwQLAe+/vwELA++/vwELAe+/vwsLAu+/vwELA++/vwILIiwiAwsE77+/BAsB77+/AQsE77+/AQsC77+/AgsE77+/AQsC77+/AQsB77+/AQsD77+/AQsB77+/AQsB77+/AgsE77+/AwsC77+/AQsB77+/AwsC77+/AQsF77+/AgsH77+/AgsF77+/AQsE77+/AgsB77+/AQsE77+/AQsE77+/AQsD77+/AgsG77+/AQsF77+/AQsH77+/AgsE77+/AQsB77+/AQsH77+/AQsC77+/AQsU77+/AQsG77+/AQsD77+/AQsG77+/AQsU77+/AQsBXGYBCwLvv78ECwHvv78BCwPvv78BCwHvv78LCwLvv78BCwPvv78CCyIsIgMLBO+/vwQLAe+/vwELBO+/vwELAu+/vwILBO+/vwELAu+/vwELAe+/vwELA++/vwELAe+/vwELAe+/vwILBO+/vwMLAu+/vwELAe+/vwMLAu+/vwELBe+/vwILB++/vwILBe+/vwELBO+/vwILAe+/vwELBO+/vwELBO+/vwELA++/vwILBu+/vwELBe+/vwELB++/vwILBO+/vwELAe+/vwELB++/vwELAu+/vwELFO+/vwELBu+/vwELA++/vwELBu+/vwELFO+/vwELAVxmAQsC77+/BAsB77+/AQsD77+/AQsB77+/CwsC77+/AQsD77+/AgsiLCIDCwTvv78ECwHvv78BCwTvv78BCwLvv78CCwTvv78BCwLvv78BCwHvv78BCwPvv78BCwHvv78BCwHvv78CCwTvv78DCwLvv78BCwHvv78DCwLvv78BCwXvv78CCwfvv78CCwXvv78BCwTvv78CCwHvv78BCwTvv78BCwTvv78BCwPvv78CCwbvv78BCwXvv78BCwfvv78CCwTvv78BCwHvv78BCwfvv78BCwLvv78BCxTvv78BCwbvv78BCwPvv78BCwbvv78BCxTvv78BCwFcZgELAu+/vwQLAe+/vwELA++/vwELAe+/vwsLAu+/vwELA++/vwILIiwiAwsE77+/BAsB77+/AQsE77+/AQsC77+/AgsE77+/AQsC77+/AQsB77+/AQsD77+/AQsB77+/AQsB77+/AgsE77+/AwsC77+/AQsB77+/AwsC77+/AQsF77+/AgsH77+/AgsF77+/AQsE77+/AgsB77+/AQsE77+/AQsE77+/AQsD77+/AgsG77+/AQsF77+/AQsH77+/AgsE77+/AQsB77+/AQsH77+/AQsC77+/AQsU77+/AQsG77+/AQsD77+/AQsG77+/AQsU77+/AQsBXGYBCwLvv78ECwHvv78BCwPvv78BCwHvv78LCwLvv78BCwPvv78CCyIsIiIsIiJdfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qodix7REZBMTI2X2VvdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExMjZfZW90UyksREZBMTI2X2VvZjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExMjZfZW9mUyksREZBMTI2X21pbjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnModi5ERkExMjZfbWluUyksREZBMTI2X21heDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnModi5ERkExMjZfbWF4UyksREZBMTI2X2FjY2VwdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExMjZfYWNjZXB0UyksREZBMTI2X3NwZWNpYWw6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMTI2X3NwZWNpYWxTKSxERkExMjZfdHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPVtdLHQsbj12LkRGQTEyNl90cmFuc2l0aW9uUy5sZW5ndGg7Zm9yKHQ9MDt0PG47dCsrKWUucHVzaChyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExMjZfdHJhbnNpdGlvblNbdF0pKTtyZXR1cm4gZX0oKX0pLHYuREZBMTI2PWZ1bmN0aW9uKGUpe3RoaXMucmVjb2duaXplcj1lLHRoaXMuZGVjaXNpb25OdW1iZXI9MTI2LHRoaXMuZW90PXYuREZBMTI2X2VvdCx0aGlzLmVvZj12LkRGQTEyNl9lb2YsdGhpcy5taW49di5ERkExMjZfbWluLHRoaXMubWF4PXYuREZBMTI2X21heCx0aGlzLmFjY2VwdD12LkRGQTEyNl9hY2NlcHQsdGhpcy5zcGVjaWFsPXYuREZBMTI2X3NwZWNpYWwsdGhpcy50cmFuc2l0aW9uPXYuREZBMTI2X3RyYW5zaXRpb259LHIuYW50bHIubGFuZy5leHRlbmQodi5ERkExMjYsci5hbnRsci5ydW50aW1lLkRGQSx7Z2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iOTgyOjE6IHBfTm9kZVRlc3QgOiAoIHBfS2luZFRlc3QgfCBwX05hbWVUZXN0ICk7In0sZHVtbXk6bnVsbH0pLHIuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHYse0RGQTEzNF9lb3RTOiIW77+/IixERkExMzRfZW9mUzoiFu+/vyIsREZBMTM0X21pblM6IgEQBO+/vwHDnQEQAe+/vwLDnQHvv78CEAHDoAHDnQHDoAEQBe+/vyIsREZBMTM0X21heFM6IgHFlATvv78Bw7kBxZQB77+/AsO5Ae+/vwLFlAPDuQHFlAXvv78iLERGQTEzNF9hY2NlcHRTOiIB77+/AQEBAgEDAQQC77+/AQUC77+/AVxiBu+/vwEJAQYBBwJcYiIsREZBMTM0X3NwZWNpYWxTOiIBAVxy77+/AVwwB++/v30+IixERkExMzRfdHJhbnNpdGlvblM6WyIGBwFcZlxiBwEPXGIHAQkBBwEGHwcBC1xiBwEFBQcBEFxuBwFccgUHAVxibQcBDgMHAe+/vwEBAe+/vwEDAREO77+/AVxuB++/vwEEEO+/vwICAu+/vwEHB++/vwJcbgMCO++/vwEHIiwiIiwiIiwiIiwiIiwiAQcC77+/ARIY77+/AQciLCLCi1xuAe+/v0BcbgTvv78BXG4Y77+/AQcS77+/AVxuR++/vwFcbiIsIiIsIgEHAu+/vwETGO+/vwEHIiwiAQcC77+/AVxuGO+/vwEHIiwiIiwiwotcbgHvv79AXG4B77+/AQcC77+/AVxuGO+/vwEHEu+/vwFcbkfvv78BXG4iLCLCi1xuAe+/v0BcbgTvv78BXG4Y77+/AQcS77+/AVxuR++/vwFcbiIsIgFcbhjvv78BByIsIgEHAu+/vwEUGO+/vwEHIiwiARUY77+/AQciLCLCixUB77+/QBUE77+/ARUY77+/AQcS77+/ARVH77+/ARUiLCIiLCIiLCIiLCIiLCIiXX0pLHIuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHYse0RGQTEzNF9lb3Q6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMTM0X2VvdFMpLERGQTEzNF9lb2Y6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMTM0X2VvZlMpLERGQTEzNF9taW46ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHYuREZBMTM0X21pblMpLERGQTEzNF9tYXg6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHYuREZBMTM0X21heFMpLERGQTEzNF9hY2NlcHQ6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMTM0X2FjY2VwdFMpLERGQTEzNF9zcGVjaWFsOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTEzNF9zcGVjaWFsUyksREZBMTM0X3RyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1bXSx0LG49di5ERkExMzRfdHJhbnNpdGlvblMubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKyllLnB1c2goci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMTM0X3RyYW5zaXRpb25TW3RdKSk7cmV0dXJuIGV9KCl9KSx2LkRGQTEzND1mdW5jdGlvbihlKXt0aGlzLnJlY29nbml6ZXI9ZSx0aGlzLmRlY2lzaW9uTnVtYmVyPTEzNCx0aGlzLmVvdD12LkRGQTEzNF9lb3QsdGhpcy5lb2Y9di5ERkExMzRfZW9mLHRoaXMubWluPXYuREZBMTM0X21pbix0aGlzLm1heD12LkRGQTEzNF9tYXgsdGhpcy5hY2NlcHQ9di5ERkExMzRfYWNjZXB0LHRoaXMuc3BlY2lhbD12LkRGQTEzNF9zcGVjaWFsLHRoaXMudHJhbnNpdGlvbj12LkRGQTEzNF90cmFuc2l0aW9ufSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYuREZBMTM0LHIuYW50bHIucnVudGltZS5ERkEse2dldERlc2NyaXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIjEwMjY6MTogcF9QcmltYXJ5RXhwciA6ICggKCBMUEFSRU4gKT0+IHBfUGFyZW50aGVzaXplZEV4cHIgfCBwX0xpdGVyYWwgfCBwX1ZhclJlZiB8IHBfQ29udGV4dEl0ZW1FeHByIHwgcF9GdW5jdGlvbkNhbGwgfCBwX09yZGVyZWRFeHByIHwgcF9Vbm9yZGVyZWRFeHByIHwgcF9Db25zdHJ1Y3RvciB8IHBfQmxvY2tFeHByICk7In0sc3BlY2lhbFN0YXRlVHJhbnNpdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPWUsaT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlIDA6dmFyIG49dC5MQSgxKSxyPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsbj09Y2l8fG49PUlpP2U9NzpuPT1kaSYmdGhpcy5sYyhkKSYmKGU9MjApLHQuc2VlayhyKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMTp2YXIgaT10LkxBKDEpLHM9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSxpPT1jaSYmdGhpcy5zeW5wcmVkMTZfWFF1ZXJ5UGFyc2VyKCk/ZT0xOmk+PWVzJiZpPD10c3x8aT49ZHMmJmk8PW1zP2U9MjppPT1waT9lPTM6aT09amk/ZT00Omk9PVB0P2U9NTppPT0kP2U9NjppPj1FJiZpPD1DfHxpPj1MJiZpPD1IfHxpPj1qJiZpPD1XfHxpPT1WfHxpPj1KJiZpPD1UdHx8aT49Q3QmJmk8PUR0fHxpPj1IdCYmaTw9SXR8fGk+PVJ0JiZpPD1RdHx8aT49WXQmJmk8PW5ufHxpPj1zbiYmaTw9c2l8fGk+PXVpJiZpPD1maXx8aT09aXN8fGk9PXhvP2U9NzppPT1ybj9lPTg6aT09WD9lPTk6aT09QWl8fGk+PWhzJiZpPD1wcz9lPTEwOmk9PU50P2U9MTE6aT09az9lPTEyOmk9PUd0P2U9MTM6aT09b2k/ZT0xNDppPT1CP2U9MTU6aT09cXQ/ZT0xNjppPT1kaSYmKGU9MTcpLHQuc2VlayhzKTtpZihlPj0wKXJldHVybiBlfX0uY2FsbCh0aGlzLnJlY29nbml6ZXIsZSx0KTtpZighci5hbnRsci5sYW5nLmlzVW5kZWZpbmVkKGkpKXJldHVybiBpO2lmKHRoaXMucmVjb2duaXplci5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5yZWNvZ25pemVyLnN0YXRlLmZhaWxlZD0hMCwtMTt2YXIgcz1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKHRoaXMuZ2V0RGVzY3JpcHRpb24oKSwxMzQsbix0KTt0aHJvdyB0aGlzLmVycm9yKHMpLHN9LGR1bW15Om51bGx9KSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdCh2LHtERkExNjJfZW90UzoiSu+/vyIsREZBMTYyX2VvZlM6IgECSe+/vyIsREZBMTYyX21pblM6IgESAVwwB++/vwFcMEDvv78iLERGQTE2Ml9tYXhTOiIBw74BXDAH77+/AVwwQO+/vyIsREZBMTYyX2FjY2VwdFM6IgLvv78BAlxu77+/AQE877+/IixERkExNjJfc3BlY2lhbFM6IgFcMAEBB++/vwECQO+/v30+IixERkExNjJfdHJhbnNpdGlvblM6WyIEAgTvv78BAgPvv78BAgTvv78BAgLvv78CAgTvv78BAgLvv78BAgHvv78CAgLvv78BAgHvv78BAgHvv78CAgLvv78BAgHvv78DAgLvv78BAgHvv78DAgLvv78BAgXvv78CAgfvv78CAgXvv78BAgTvv78BAgLvv78BAgTvv78BAgHvv78BAgLvv78BAgPvv78CAgbvv78BAgXvv78BAgfvv78CAgTvv78BAgHvv78BAgfvv78BAgLvv78BAhTvv78BAgPvv78BAgLvv78BAgPvv78BAgbvv78BAhTvv78BAgHvv78BAgHvv78CAgHvv78EAgPvv78BAgFccgEBAQkHAlxi77+/AgIiLCIB77+/IiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiAe+/vyIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiJdfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qodix7REZBMTYyX2VvdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExNjJfZW90UyksREZBMTYyX2VvZjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExNjJfZW9mUyksREZBMTYyX21pbjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnModi5ERkExNjJfbWluUyksREZBMTYyX21heDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnModi5ERkExNjJfbWF4UyksREZBMTYyX2FjY2VwdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExNjJfYWNjZXB0UyksREZBMTYyX3NwZWNpYWw6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMTYyX3NwZWNpYWxTKSxERkExNjJfdHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPVtdLHQsbj12LkRGQTE2Ml90cmFuc2l0aW9uUy5sZW5ndGg7Zm9yKHQ9MDt0PG47dCsrKWUucHVzaChyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExNjJfdHJhbnNpdGlvblNbdF0pKTtyZXR1cm4gZX0oKX0pLHYuREZBMTYyPWZ1bmN0aW9uKGUpe3RoaXMucmVjb2duaXplcj1lLHRoaXMuZGVjaXNpb25OdW1iZXI9MTYyLHRoaXMuZW90PXYuREZBMTYyX2VvdCx0aGlzLmVvZj12LkRGQTE2Ml9lb2YsdGhpcy5taW49di5ERkExNjJfbWluLHRoaXMubWF4PXYuREZBMTYyX21heCx0aGlzLmFjY2VwdD12LkRGQTE2Ml9hY2NlcHQsdGhpcy5zcGVjaWFsPXYuREZBMTYyX3NwZWNpYWwsdGhpcy50cmFuc2l0aW9uPXYuREZBMTYyX3RyYW5zaXRpb259LHIuYW50bHIubGFuZy5leHRlbmQodi5ERkExNjIsci5hbnRsci5ydW50aW1lLkRGQSx7Z2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iMTMwNjoyNTogKCAoIHBfT2NjdXJyZW5jZUluZGljYXRvciApPT5vaT0gcF9PY2N1cnJlbmNlSW5kaWNhdG9yICk/In0sc3BlY2lhbFN0YXRlVHJhbnNpdGlvbjpmdW5jdGlvbih0LG4pe3ZhciBpPXQscz1mdW5jdGlvbih0LG4pe3N3aXRjaCh0KXtjYXNlIDA6dmFyIHI9bi5MQSgxKSxpPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTEscj09Q2k/dD0xOnI9PWV8fHI+PXgmJnI8PUN8fHI9PU18fHI9PUh8fHI9PXF8fHI+PXomJnI8PVd8fHI9PUt8fHI9PVl8fHI+PWV0JiZyPD10dHx8cj09aXR8fHI9PW90fHxyPj1hdCYmcjw9ZnR8fHI9PWh0fHxyPj1kdCYmcjw9bXR8fHI9PWJ0fHxyPj1FdCYmcjw9eHR8fHI9PUN0fHxyPj1fdCYmcjw9RHR8fHI+PVJ0JiZyPD1VdHx8cj09SnR8fHI9PVp0fHxyPT1ubnx8cj09YW58fHI9PWxufHxyPT1wbnx8cj49Z24mJnI8PXlufHxyPT1Obnx8cj09TW58fHI+PUluJiZyPD1xbnx8cj09WG58fHI9PSRufHxyPT10cnx8cj09aXJ8fHI9PU5yfHxyPT1Bcnx8cj09X3J8fHI9PUJyfHxyPT16cnx8cj09bGl8fHI9PWhpfHxyPj1kaSYmcjw9dml8fHI+PWdpJiZyPD13aXx8cj09VGl8fHI+PUxpJiZyPD1QaXx8cj49emkmJnI8PVdpP3Q9MjpyPT1raT90PTk6cj09TmkmJnRoaXMuc3lucHJlZDE3X1hRdWVyeVBhcnNlcigpJiYodD0xMyksbi5zZWVrKGkpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSAxOnZhciBzPW4uTEEoMSksbz1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLHRoaXMuc3lucHJlZDE3X1hRdWVyeVBhcnNlcigpP3Q9MTM6dD0yLG4uc2VlayhvKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMjp2YXIgdT1uLkxBKDEpLGE9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx0aGlzLnN5bnByZWQxN19YUXVlcnlQYXJzZXIoKT90PTEzOnQ9MixuLnNlZWsoYSk7aWYodD49MClyZXR1cm4gdH19LmNhbGwodGhpcy5yZWNvZ25pemVyLHQsbik7aWYoIXIuYW50bHIubGFuZy5pc1VuZGVmaW5lZChzKSlyZXR1cm4gcztpZih0aGlzLnJlY29nbml6ZXIuc3RhdGUuYmFja3RyYWNraW5nPjApcmV0dXJuIHRoaXMucmVjb2duaXplci5zdGF0ZS5mYWlsZWQ9ITAsLTE7dmFyIG89bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbih0aGlzLmdldERlc2NyaXB0aW9uKCksMTYyLGksbik7dGhyb3cgdGhpcy5lcnJvcihvKSxvfSxkdW1teTpudWxsfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qodix7REZBMTY0X2VvdFM6IhLvv78iLERGQTE2NF9lb2ZTOiIB77+/XGZccgXvv78iLERGQTE2NF9taW5TOiIBEFxmEgXvv78iLERGQTE2NF9tYXhTOiIBxZRcZsO+Be+/vyIsREZBMTY0X2FjY2VwdFM6Ilxy77+/AQQBBQEBAQIBAyIsREZBMTY0X3NwZWNpYWxTOiIL77+/AVwwBu+/v30+IixERkExNjRfdHJhbnNpdGlvblM6WyIGXHIBA1xiXHIBBwlccgEBAQIXXHIBXGYLXHIBXG5cblxyAQYDXHIBBQEEBVxyAVxiF1xyAQkeXHIB77+/PFxyAQsDXHIB77+/AQ4u77+/AVxyR++/vwFcciIsIgRccgTvv78BXHID77+/AVxyBO+/vwFccgLvv78CXHIE77+/AVxyAu+/vwFccgHvv78CXHIC77+/AVxyAe+/vwFccgHvv78CXHIC77+/AVxyAe+/vwNccgLvv78BXHIB77+/A1xyAu+/vwFccgXvv78CXHIH77+/AlxyBe+/vwFccgTvv78BXHIC77+/AVxyBO+/vwFccgHvv78BXHIC77+/AVxyA++/vwJccgbvv78BXHIF77+/AVxyB++/vwJccgTvv78BXHIB77+/AVxyB++/vwFccgLvv78BXHIU77+/AVxyA++/vwFccgLvv78BXHID77+/AVxyBu+/vwFcchTvv78BXHIBDwFccgHvv78CXHIB77+/BFxyA++/vwtccgTvv78BXHID77+/AlxyIiwiBFxyBO+/vwFccgPvv78BXHIE77+/AVxyAu+/vwJccgTvv78BXHIC77+/AVxyAe+/vwJccgLvv78BXHIB77+/AVxyAe+/vwJccgLvv78BXHIB77+/A1xyAu+/vwFccgHvv78DXHIC77+/AVxyBe+/vwJccgfvv78CXHIF77+/AVxyBO+/vwFccgLvv78BXHIE77+/AVxyAe+/vwFccgLvv78BXHID77+/AlxyBu+/vwFccgXvv78BXHIH77+/AlxyBO+/vwFccgHvv78BXHIH77+/AVxyAu+/vwFcchTvv78BXHID77+/AVxyAu+/vwFccgPvv78BXHIG77+/AVxyFO+/vwFccgEPAVxyAe+/vwJccgHvv78EXHID77+/C1xyBO+/vwFccgPvv78CXHIiLCIEXHIE77+/AVxyA++/vwFccgTvv78BXHIC77+/AlxyBO+/vwFccgLvv78BXHIB77+/AlxyAu+/vwFccgHvv78BXHIB77+/AlxyAu+/vwFccgHvv78DXHIC77+/AVxyAe+/vwNccgLvv78BXHIF77+/AlxyB++/vwJccgXvv78BXHIE77+/AVxyAu+/vwFccgTvv78BXHIB77+/AVxyAu+/vwFccgPvv78CXHIG77+/AVxyBe+/vwFccgfvv78CXHIE77+/AVxyAe+/vwFccgfvv78BXHIC77+/AVxyFO+/vwFccgPvv78BXHIC77+/AVxyA++/vwFccgbvv78BXHIU77+/AVxyAQ8BXHIB77+/AlxyAe+/vwRccgPvv78LXHIE77+/AVxyA++/vwJcciIsIgRccgTvv78BXHID77+/AVxyBO+/vwFccgLvv78CXHIE77+/AVxyAu+/vwFccgHvv78CXHIC77+/AVxyAe+/vwFccgHvv78CXHIC77+/AVxyAe+/vwNccgLvv78BXHIB77+/A1xyAu+/vwFccgXvv78CXHIH77+/AlxyBe+/vwFccgTvv78BXHIC77+/AVxyBO+/vwFccgHvv78BXHIC77+/AVxyA++/vwJccgbvv78BXHIF77+/AVxyB++/vwJccgTvv78BXHIB77+/AVxyB++/vwFccgLvv78BXHIU77+/AVxyA++/vwFccgLvv78BXHID77+/AVxyBu+/vwFcchTvv78BXHIBDwFccgHvv78CXHIB77+/BFxyA++/vwtccgTvv78BXHID77+/AlxyIiwiBFxyBO+/vwFccgPvv78BXHIE77+/AVxyAu+/vwJccgTvv78BXHIC77+/AVxyAe+/vwJccgLvv78BXHIB77+/AVxyAe+/vwJccgLvv78BXHIB77+/A1xyAu+/vwFccgHvv78DXHIC77+/AVxyBe+/vwJccgfvv78CXHIF77+/AVxyBO+/vwFccgLvv78BXHIE77+/AVxyAe+/vwFccgLvv78BXHID77+/AlxyBu+/vwFccgXvv78BXHIH77+/AlxyBO+/vwFccgHvv78BXHIH77+/AVxyAu+/vwFcchTvv78BXHID77+/AVxyAu+/vwFccgPvv78BXHIG77+/AVxyFO+/vwFccgEPAVxyAe+/vwJccgHvv78EXHID77+/C1xyBO+/vwFccgPvv78CXHIiLCIEXHIE77+/AVxyA++/vwFccgTvv78BXHIC77+/AlxyBO+/vwFccgLvv78BXHIB77+/AlxyAu+/vwFccgHvv78BXHIB77+/AlxyAu+/vwFccgHvv78DXHIC77+/AVxyAe+/vwNccgLvv78BXHIF77+/AlxyB++/vwJccgXvv78BXHIE77+/AVxyAu+/vwFccgTvv78BXHIB77+/AVxyAu+/vwFccgPvv78CXHIG77+/AVxyBe+/vwFccgfvv78CXHIE77+/AVxyAe+/vwFccgfvv78BXHIC77+/AVxyFO+/vwFccgPvv78BXHIC77+/AVxyA++/vwFccgbvv78BXHIU77+/AVxyAQ8BXHIB77+/AlxyAe+/vwRccgPvv78LXHIE77+/AVxyA++/vwJcciIsIgRccgTvv78BXHID77+/AVxyBO+/vwFccgLvv78CXHIE77+/AVxyAu+/vwFccgHvv78CXHIC77+/AVxyAe+/vwFccgHvv78CXHIC77+/AVxyAe+/vwNccgLvv78BXHIB77+/A1xyAu+/vwFccgXvv78CXHIH77+/AlxyBe+/vwFccgTvv78BXHIC77+/AVxyBO+/vwFccgHvv78BXHIC77+/AVxyA++/vwJccgbvv78BXHIF77+/AVxyB++/vwJccgTvv78BXHIB77+/AVxyB++/vwFccgLvv78BXHIU77+/AVxyA++/vwFccgLvv78BXHID77+/AVxyBu+/vwFcchTvv78BXHIBDwFccgHvv78CXHIB77+/BFxyA++/vwtccgTvv78BXHID77+/AlxyIiwiBFxyBO+/vwFccgPvv78BXHIE77+/AVxyAu+/vwJccgTvv78BXHIC77+/AVxyAe+/vwJccgLvv78BXHIB77+/AVxyAe+/vwJccgLvv78BXHIB77+/A1xyAu+/vwFccgHvv78DXHIC77+/AVxyBe+/vwJccgfvv78CXHIF77+/AVxyBO+/vwFccgLvv78BXHIE77+/AVxyAe+/vwFccgLvv78BXHID77+/AlxyBu+/vwFccgXvv78BXHIH77+/AlxyBO+/vwFccgHvv78BXHIH77+/AVxyAu+/vwFcchTvv78BXHID77+/AVxyAu+/vwFccgPvv78BXHIG77+/AVxyFO+/vwFccgEPAVxyAe+/vwJccgHvv78EXHID77+/C1xyBO+/vwFccgPvv78CXHIiLCIEXHIE77+/AVxyA++/vwFccgTvv78BXHIC77+/AlxyBO+/vwFccgLvv78BXHIB77+/AlxyAu+/vwFccgHvv78BXHIB77+/AlxyAu+/vwFccgHvv78DXHIC77+/AVxyAe+/vwNccgLvv78BXHIF77+/AlxyB++/vwJccgXvv78BXHIE77+/AVxyAu+/vwFccgTvv78BXHIB77+/AVxyAu+/vwFccgPvv78CXHIG77+/AVxyBe+/vwFccgfvv78CXHIE77+/AVxyAe+/vwFccgfvv78BXHIC77+/AVxyFO+/vwFccgPvv78BXHIC77+/AVxyA++/vwFccgbvv78BXHIU77+/AVxyAQ8BXHIB77+/AlxyAe+/vwRccgPvv78LXHIE77+/AVxyA++/vwJcciIsIgRccgTvv78BXHID77+/AVxyBO+/vwFccgLvv78CXHIE77+/AVxyAu+/vwFccgHvv78CXHIC77+/AVxyAe+/vwFccgHvv78CXHIC77+/AVxyAe+/vwNccgLvv78BXHIB77+/A1xyAu+/vwFccgXvv78CXHIH77+/AlxyBe+/vwFccgTvv78BXHIC77+/AVxyBO+/vwFccgHvv78BXHIC77+/AVxyA++/vwJccgbvv78BXHIF77+/AVxyB++/vwJccgTvv78BXHIB77+/AVxyB++/vwFccgLvv78BXHIU77+/AVxyA++/vwFccgLvv78BXHID77+/AVxyBu+/vwFcchTvv78BXHIBDwFccgHvv78CXHIB77+/BFxyA++/vwtccgTvv78BXHID77+/AlxyIiwiBFxyBO+/vwFccgPvv78BXHIE77+/AVxyAu+/vwJccgTvv78BXHIC77+/AVxyAe+/vwJccgLvv78BXHIB77+/AVxyAe+/vwJccgLvv78BXHIB77+/A1xyAu+/vwFccgHvv78DXHIC77+/AVxyBe+/vwJccgfvv78CXHIF77+/AVxyBO+/vwFccgLvv78BXHIE77+/AVxyAe+/vwFccgLvv78BXHID77+/AlxyBu+/vwFccgXvv78BXHIH77+/AlxyBO+/vwFccgHvv78BXHIH77+/AVxyAu+/vwFcchTvv78BXHID77+/AVxyAu+/vwFccgPvv78BXHIG77+/AVxyFO+/vwFccgEQAVxyAe+/vwJccgHvv78EXHID77+/C1xyBO+/vwFccgPvv78CXHIiLCIEXHIE77+/AVxyA++/vwFccgTvv78BXHIC77+/AlxyBO+/vwFccgLvv78BXHIB77+/AlxyAu+/vwFccgHvv78BXHIB77+/AlxyAu+/vwFccgHvv78DXHIC77+/AVxyAe+/vwNccgLvv78BXHIF77+/AlxyB++/vwJccgXvv78BXHIE77+/AVxyAu+/vwFccgTvv78BXHIB77+/AVxyAu+/vwFccgPvv78CXHIG77+/AVxyBe+/vwFccgfvv78CXHIE77+/AVxyAe+/vwFccgfvv78BXHIC77+/AVxyFO+/vwFccgPvv78BXHIC77+/AVxyA++/vwFccgbvv78BXHIU77+/AVxyAREBXHIB77+/AlxyAe+/vwRccgPvv78LXHIE77+/AVxyA++/vwJcciIsIiIsIiIsIiIsIiIsIiJdfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qodix7REZBMTY0X2VvdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExNjRfZW90UyksREZBMTY0X2VvZjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExNjRfZW9mUyksREZBMTY0X21pbjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnModi5ERkExNjRfbWluUyksREZBMTY0X21heDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnModi5ERkExNjRfbWF4UyksREZBMTY0X2FjY2VwdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExNjRfYWNjZXB0UyksREZBMTY0X3NwZWNpYWw6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMTY0X3NwZWNpYWxTKSxERkExNjRfdHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPVtdLHQsbj12LkRGQTE2NF90cmFuc2l0aW9uUy5sZW5ndGg7Zm9yKHQ9MDt0PG47dCsrKWUucHVzaChyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkExNjRfdHJhbnNpdGlvblNbdF0pKTtyZXR1cm4gZX0oKX0pLHYuREZBMTY0PWZ1bmN0aW9uKGUpe3RoaXMucmVjb2duaXplcj1lLHRoaXMuZGVjaXNpb25OdW1iZXI9MTY0LHRoaXMuZW90PXYuREZBMTY0X2VvdCx0aGlzLmVvZj12LkRGQTE2NF9lb2YsdGhpcy5taW49di5ERkExNjRfbWluLHRoaXMubWF4PXYuREZBMTY0X21heCx0aGlzLmFjY2VwdD12LkRGQTE2NF9hY2NlcHQsdGhpcy5zcGVjaWFsPXYuREZBMTY0X3NwZWNpYWwsdGhpcy50cmFuc2l0aW9uPXYuREZBMTY0X3RyYW5zaXRpb259LHIuYW50bHIubGFuZy5leHRlbmQodi5ERkExNjQsci5hbnRsci5ydW50aW1lLkRGQSx7Z2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iMTMxNjoxOiBwX0l0ZW1UeXBlIDogKCBwX0tpbmRUZXN0IC0+IF4oIEtpbmRUZXN0IHBfS2luZFRlc3QgKSB8IHsuLi59PyA9PiAoIEJJTkFSWSBMUEFSRU4gUlBBUkVOICkgLT4gXiggQmluYXJ5VGVzdCBCSU5BUlkgTFBBUkVOIFJQQVJFTiApIHwgKCBJVEVNIExQQVJFTiBSUEFSRU4gKSAtPiBeKCBJdGVtVGVzdCBJVEVNIExQQVJFTiBSUEFSRU4gKSB8IHBfQXRvbWljT3JVbmlvblR5cGUgfCBwX1BhcmVudGhlc2l6ZWRJdGVtVHlwZSApOyJ9LHNwZWNpYWxTdGF0ZVRyYW5zaXRpb246ZnVuY3Rpb24odCxuKXt2YXIgaT10LHM9ZnVuY3Rpb24odCxuKXtzd2l0Y2godCl7Y2FzZSAwOnZhciByPW4uTEEoMSksaT1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xO2lmKHI9PWNpJiZ0aGlzLmxjKGQpKXQ9MTY7ZWxzZSBpZihyPT1lfHxyPj14JiZyPD1DfHxyPT1NfHxyPT1IfHxyPT1xfHxyPj16JiZyPD1XfHxyPT1LfHxyPT1ZfHxyPj1ldCYmcjw9dHR8fHI9PWl0fHxyPT1vdHx8cj49YXQmJnI8PWZ0fHxyPT1odHx8cj49ZHQmJnI8PW10fHxyPT1idHx8cj49RXQmJnI8PXh0fHxyPT1DdHx8cj49X3QmJnI8PUR0fHxyPj1SdCYmcjw9VXR8fHI9PUp0fHxyPT1adHx8cj09bm58fHI9PWFufHxyPT1sbnx8cj09cG58fHI+PWduJiZyPD15bnx8cj09Tm58fHI9PU1ufHxyPj1JbiYmcjw9cW58fHI9PVhufHxyPT0kbnx8cj09dHJ8fHI9PWlyfHxyPT1Ocnx8cj09QXJ8fHI9PV9yfHxyPT1Ccnx8cj09enJ8fHI9PWxpfHxyPT1oaXx8cj49ZGkmJnI8PXZpfHxyPj1naSYmcjw9d2l8fHI+PVRpJiZyPD1QaXx8cj09SWl8fHI+PXppJiZyPD1XaSl0PTEzO24uc2VlayhpKTtpZih0Pj0wKXJldHVybiB0fX0uY2FsbCh0aGlzLnJlY29nbml6ZXIsdCxuKTtpZighci5hbnRsci5sYW5nLmlzVW5kZWZpbmVkKHMpKXJldHVybiBzO2lmKHRoaXMucmVjb2duaXplci5zdGF0ZS5iYWNrdHJhY2tpbmc+MClyZXR1cm4gdGhpcy5yZWNvZ25pemVyLnN0YXRlLmZhaWxlZD0hMCwtMTt2YXIgbz1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKHRoaXMuZ2V0RGVzY3JpcHRpb24oKSwxNjQsaSxuKTt0aHJvdyB0aGlzLmVycm9yKG8pLG99LGR1bW15Om51bGx9KSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdCh2LHtERkEyMThfZW90UzoiXG7vv78iLERGQTIxOF9lb2ZTOiJcbu+/vyIsREZBMjE4X21pblM6IgEaAu+/vwHCvQbvv78iLERGQTIxOF9tYXhTOiIBw4QC77+/AcOEBu+/vyIsREZBMjE4X2FjY2VwdFM6IgHvv78BAQECAe+/vwEDAQQBBQEGAQcBXGIiLERGQTIxOF9zcGVjaWFsUzoiXG7vv799PiIsREZBMjE4X3RyYW5zaXRpb25TOlsiAQY177+/AQlR77+/AQdcbu+/vwEBAe+/vwEGAe+/vwEDC++/vwEFAVxiAQQB77+/AQYC77+/AQIiLCIiLCIiLCIBBQFcYgEEBO+/vwECIiwiIiwiIiwiIiwiIiwiIiwiIl19KSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdCh2LHtERkEyMThfZW90OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTIxOF9lb3RTKSxERkEyMThfZW9mOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTIxOF9lb2ZTKSxERkEyMThfbWluOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyh2LkRGQTIxOF9taW5TKSxERkEyMThfbWF4OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyh2LkRGQTIxOF9tYXhTKSxERkEyMThfYWNjZXB0OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTIxOF9hY2NlcHRTKSxERkEyMThfc3BlY2lhbDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkEyMThfc3BlY2lhbFMpLERGQTIxOF90cmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9W10sdCxuPXYuREZBMjE4X3RyYW5zaXRpb25TLmxlbmd0aDtmb3IodD0wO3Q8bjt0KyspZS5wdXNoKHIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTIxOF90cmFuc2l0aW9uU1t0XSkpO3JldHVybiBlfSgpfSksdi5ERkEyMTg9ZnVuY3Rpb24oZSl7dGhpcy5yZWNvZ25pemVyPWUsdGhpcy5kZWNpc2lvbk51bWJlcj0yMTgsdGhpcy5lb3Q9di5ERkEyMThfZW90LHRoaXMuZW9mPXYuREZBMjE4X2VvZix0aGlzLm1pbj12LkRGQTIxOF9taW4sdGhpcy5tYXg9di5ERkEyMThfbWF4LHRoaXMuYWNjZXB0PXYuREZBMjE4X2FjY2VwdCx0aGlzLnNwZWNpYWw9di5ERkEyMThfc3BlY2lhbCx0aGlzLnRyYW5zaXRpb249di5ERkEyMThfdHJhbnNpdGlvbn0sci5hbnRsci5sYW5nLmV4dGVuZCh2LkRGQTIxOCxyLmFudGxyLnJ1bnRpbWUuREZBLHtnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiIxODUyOjE6IHBfRlRNYXRjaE9wdGlvbiA6ICggcF9GVExhbmd1YWdlT3B0aW9uIHwgcF9GVFdpbGRDYXJkT3B0aW9uIHwgcF9GVFRoZXNhdXJ1c09wdGlvbiB8IHBfRlRTdGVtT3B0aW9uIHwgcF9GVENhc2VPcHRpb24gfCBwX0ZURGlhY3JpdGljc09wdGlvbiB8IHBfRlRTdG9wV29yZE9wdGlvbiB8IHBfRlRFeHRlbnNpb25PcHRpb24gKTsifSxkdW1teTpudWxsfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qodix7REZBMjM3X2VvdFM6Ilxm77+/IixERkEyMzdfZW9mUzoiXGbvv78iLERGQTIzN19taW5TOiIBEAHvv78BEAUSAe+/vwESARABEiIsREZBMjM3X21heFM6IgHFlAHvv78BxZQFw74B77+/AcO+AcWUAcO+IixERkEyMzdfYWNjZXB0UzoiAe+/vwEBBu+/vwECA++/vyIsREZBMjM3X3NwZWNpYWxTOiJcZu+/v30+IixERkEyMzdfdHJhbnNpdGlvblM6WyJcXAEBB1sBAQQBBQEGAgEBAw4BAe+/vwEBAe+/vwECAQEG77+/AVxiBO+/vwQBBe+/vwQBXGbvv78BAQLvv78CAQLvv78BAQbvv78GATvvv78BASIsIiIsIsKLCQHvv79ACTDvv78BCUfvv78BCSIsIgEBXGLvv78CAVxu77+/AQEH77+/AQEB77+/AQEF77+/AQEB77+/AgEE77+/AwEC77+/AQEC77+/AgEC77+/AQEF77+/AQEU77+/AgEB77+/AQE277+/AQE777+/AQEBXGIE77+/AQEB77+/AQEB77+/AQED77+/AQEB77+/CwEC77+/AQED77+/AgEiLCIBAVxi77+/AgFcbu+/vwEBB++/vwEBAe+/vwEBBe+/vwEBAe+/vwIBBO+/vwMBAu+/vwEBAu+/vwIBAu+/vwEBBe+/vwEBFO+/vwIBAe+/vwEBNu+/vwEBKu+/vwFcYhDvv78CAQTvv78BAQHvv78BAQHvv78BAQPvv78BAQHvv78LAQLvv78BAQPvv78CASIsIgEBXGLvv78CAVxu77+/AQEH77+/AQEB77+/AQEF77+/AQEB77+/AgEE77+/AwEC77+/AQEC77+/AgEC77+/AQEF77+/AQEU77+/AgEB77+/AQE277+/AQEq77+/AVxiEO+/vwIBBO+/vwEBAe+/vwEBAe+/vwEBA++/vwEBAe+/vwsBAu+/vwEBA++/vwIBIiwiAQFcYu+/vwIBXG7vv78BAQfvv78BAQHvv78BAQXvv78BAQHvv78CAQTvv78DAQLvv78BAQLvv78CAQLvv78BAQXvv78BARTvv78CAQHvv78BATbvv78BASvvv78BXGIP77+/AgEE77+/AQEB77+/AQEB77+/AQED77+/AQEB77+/CwEC77+/AQED77+/AgEiLCIBAVxi77+/AgFcbu+/vwEBB++/vwEBAe+/vwEBBe+/vwEBAe+/vwIBBO+/vwMBAu+/vwEBAu+/vwIBAu+/vwEBBe+/vwEBFO+/vwIBAe+/vwEBNu+/vwEBO++/vwIBAe+/vwFcYgLvv78BAQHvv78BAQHvv78BAQPvv78BAQHvv78LAQLvv78BAQPvv78CASIsIiIsIgEBXGLvv78CAVxu77+/AQEH77+/AQEB77+/AQEF77+/AQEB77+/AgEE77+/AwEC77+/AQEC77+/AgEC77+/AQEF77+/AQEU77+/AgEB77+/AQE277+/AQE777+/AQEF77+/AQEB77+/AQEBXGIBAQPvv78BAQHvv78LAQLvv78BXG4D77+/AgEiLCLCiwsB77+/QAsw77+/AQtH77+/AQsiLCIBAVxi77+/AgFcbu+/vwEBB++/vwEBAe+/vwEBBe+/vwEBAe+/vwIBBO+/vwMBAu+/vwEBAu+/vwIBAu+/vwEBBe+/vwEBFO+/vwIBAe+/vwEBNu+/vwEBO++/vwEBBe+/vwEBAe+/vwEBAVxiAQED77+/AQEB77+/CwEG77+/AgEiXX0pLHIuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHYse0RGQTIzN19lb3Q6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMjM3X2VvdFMpLERGQTIzN19lb2Y6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMjM3X2VvZlMpLERGQTIzN19taW46ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHYuREZBMjM3X21pblMpLERGQTIzN19tYXg6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHYuREZBMjM3X21heFMpLERGQTIzN19hY2NlcHQ6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMjM3X2FjY2VwdFMpLERGQTIzN19zcGVjaWFsOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyh2LkRGQTIzN19zcGVjaWFsUyksREZBMjM3X3RyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1bXSx0LG49di5ERkEyMzdfdHJhbnNpdGlvblMubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKyllLnB1c2goci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMjM3X3RyYW5zaXRpb25TW3RdKSk7cmV0dXJuIGV9KCl9KSx2LkRGQTIzNz1mdW5jdGlvbihlKXt0aGlzLnJlY29nbml6ZXI9ZSx0aGlzLmRlY2lzaW9uTnVtYmVyPTIzNyx0aGlzLmVvdD12LkRGQTIzN19lb3QsdGhpcy5lb2Y9di5ERkEyMzdfZW9mLHRoaXMubWluPXYuREZBMjM3X21pbix0aGlzLm1heD12LkRGQTIzN19tYXgsdGhpcy5hY2NlcHQ9di5ERkEyMzdfYWNjZXB0LHRoaXMuc3BlY2lhbD12LkRGQTIzN19zcGVjaWFsLHRoaXMudHJhbnNpdGlvbj12LkRGQTIzN190cmFuc2l0aW9ufSxyLmFudGxyLmxhbmcuZXh0ZW5kKHYuREZBMjM3LHIuYW50bHIucnVudGltZS5ERkEse2dldERlc2NyaXB0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIjE5NjY6MTogcF9IeWJyaWRbc3RyaWN0LCBhbGxvd0NvbmNhdF0gOiAoIHBfSHlicmlkRXhwclNpbmdsZVskc3RyaWN0LCRhbGxvd0NvbmNhdF0gfCBwX1N0YXRlbWVudCApOyJ9LGR1bW15Om51bGx9KSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdCh2LHtERkEyNTNfZW90UzoiC++/vyIsREZBMjUzX2VvZlM6IgHvv78CAwHvv78FAwLvv78iLERGQTI1M19taW5TOiIBEAISAe+/vwUSAu+/vyIsREZBMjUzX21heFM6IgHFlALDvgHvv78Fw74C77+/IixERkEyNTNfYWNjZXB0UzoiA++/vwECBe+/vwEBAQMiLERGQTI1M19zcGVjaWFsUzoiBO+/vwECAQEBAwEEAVwwAu+/v30+IixERkEyNTNfdHJhbnNpdGlvblM6WyIgAwECLwMBAS4DAVxiAQUBAwEEBAMBBgEHQwMB77+/AQMB77+/AgML77+/BAMF77+/BANcZu+/vwEDAu+/vwIDAu+/vwEDBu+/vwYDO++/vwEDIiwiAwMF77+/AwMB77+/AQME77+/AQMC77+/AgME77+/AQMC77+/AQMB77+/AQMD77+/AQMB77+/AQMB77+/AgME77+/AwMC77+/AQMB77+/AwMC77+/AQMF77+/AgMH77+/AgMF77+/AQME77+/AgMB77+/AQME77+/AQME77+/AQMD77+/AgMG77+/AQMF77+/AQMH77+/AgME77+/AQMB77+/AQMH77+/AQMC77+/AQM777+/AwMBCQHvv78EAwHvv78BAwPvv78BAwHvv78LAwLvv78BAwPvv78CAyIsIgMDBe+/vwMDAe+/vwEDBO+/vwEDAu+/vwIDBO+/vwEDAu+/vwEDAe+/vwEDA++/vwEDAe+/vwEDAe+/vwIDBO+/vwMDAu+/vwEDAe+/vwMDAu+/vwEDBe+/vwIDB++/vwIDBe+/vwEDBO+/vwIDAe+/vwEDBO+/vwEDBO+/vwEDA++/vwIDBu+/vwEDBe+/vwEDB++/vwIDBO+/vwEDAe+/vwEDB++/vwEDAu+/vwEDO++/vwMDAQkB77+/BAMB77+/AQMD77+/AQMB77+/CwMC77+/AQMD77+/AgMiLCIiLCIDAwXvv78DAwHvv78BAwTvv78BAwLvv78CAwTvv78BAwLvv78BAwHvv78BAwPvv78BAwHvv78BAwHvv78CAwTvv78DAwLvv78BAwHvv78DAwLvv78BAwLvv78BXG4C77+/AgMH77+/AgMF77+/AQME77+/AgMB77+/AQME77+/AQME77+/AQMD77+/AgMG77+/AQMF77+/AQMH77+/AgME77+/AQMB77+/AQMBXG4G77+/AQMC77+/AQM777+/AwMC77+/BAMB77+/AQMD77+/AQMB77+/CwMC77+/AQMD77+/AgMiLCIDAwXvv78DAwHvv78BAwTvv78BAwLvv78CAwTvv78BAwLvv78BAwHvv78BAwPvv78BAwHvv78BAwHvv78CAwTvv78DAwLvv78BAwHvv78DAwLvv78BAwLvv78BXG4C77+/AgMH77+/AgMF77+/AQME77+/AgMB77+/AQME77+/AQME77+/AQMD77+/AgMG77+/AQMF77+/AQMH77+/AgME77+/AQMB77+/AQMBXG4G77+/AQMC77+/AQM777+/AwMC77+/BAMB77+/AQMD77+/AQMB77+/CwMC77+/AQMD77+/AgMiLCIDAwXvv78DAwHvv78BAwTvv78BAwLvv78CAwTvv78BAwLvv78BAwHvv78BAwPvv78BAwHvv78BAwHvv78CAwTvv78DAwLvv78BAwHvv78DAwLvv78BAwLvv78BXG4C77+/AgMH77+/AgMF77+/AQME77+/AgMB77+/AQME77+/AQME77+/AQMD77+/AgMG77+/AQMF77+/AQMH77+/AgME77+/AQMB77+/AQMH77+/AQMC77+/AQM777+/AwMC77+/BAMB77+/AQMD77+/AQMB77+/CwMC77+/AQMD77+/AgMiLCIDAwXvv78DAwHvv78BAwTvv78BAwLvv78CAwTvv78BAwLvv78BAwHvv78BAwPvv78BAwHvv78BAwHvv78CAwTvv78DAwLvv78BAwHvv78DAwLvv78BAwLvv78BXG4C77+/AgMH77+/AgMF77+/AQME77+/AgMB77+/AQME77+/AQME77+/AQMD77+/AgMG77+/AQMF77+/AQMH77+/AgME77+/AQMB77+/AQMG77+/AVxuAQMC77+/AQM777+/AwMC77+/BAMB77+/AQMD77+/AQMB77+/CwMC77+/AQMD77+/AgMiLCIDAwXvv78DAwHvv78BAwTvv78BAwLvv78CAwTvv78BAwLvv78BAwHvv78BAwPvv78BAwHvv78BAwHvv78CAwTvv78DAwLvv78BAwHvv78DAwLvv78BAwXvv78CAwfvv78CAwXvv78BAwTvv78CAwHvv78BAwTvv78BAwTvv78BAwPvv78CAwbvv78BAwXvv78BAwfvv78CAwTvv78BAwHvv78BAwfvv78BAwLvv78BAzvvv78DAwFcbgHvv78EAwHvv78BAwPvv78BAwHvv78LAwLvv78BAwPvv78CAyIsIiIsIiJdfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qodix7REZBMjUzX2VvdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkEyNTNfZW90UyksREZBMjUzX2VvZjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkEyNTNfZW9mUyksREZBMjUzX21pbjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnModi5ERkEyNTNfbWluUyksREZBMjUzX21heDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnModi5ERkEyNTNfbWF4UyksREZBMjUzX2FjY2VwdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkEyNTNfYWNjZXB0UyksREZBMjUzX3NwZWNpYWw6ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHYuREZBMjUzX3NwZWNpYWxTKSxERkEyNTNfdHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPVtdLHQsbj12LkRGQTI1M190cmFuc2l0aW9uUy5sZW5ndGg7Zm9yKHQ9MDt0PG47dCsrKWUucHVzaChyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcodi5ERkEyNTNfdHJhbnNpdGlvblNbdF0pKTtyZXR1cm4gZX0oKX0pLHYuREZBMjUzPWZ1bmN0aW9uKGUpe3RoaXMucmVjb2duaXplcj1lLHRoaXMuZGVjaXNpb25OdW1iZXI9MjUzLHRoaXMuZW90PXYuREZBMjUzX2VvdCx0aGlzLmVvZj12LkRGQTI1M19lb2YsdGhpcy5taW49di5ERkEyNTNfbWluLHRoaXMubWF4PXYuREZBMjUzX21heCx0aGlzLmFjY2VwdD12LkRGQTI1M19hY2NlcHQsdGhpcy5zcGVjaWFsPXYuREZBMjUzX3NwZWNpYWwsdGhpcy50cmFuc2l0aW9uPXYuREZBMjUzX3RyYW5zaXRpb259LHIuYW50bHIubGFuZy5leHRlbmQodi5ERkEyNTMsci5hbnRsci5ydW50aW1lLkRGQSx7Z2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iMjExODoxOiBwX0V4cHJTaW1wbGUgOiAoIHBfUXVhbnRpZmllZEV4cHIgfCBwX09yRXhwciB8IHsuLi59PyA9PiBwZ19VcGRhdGVFeHByICk7In0sc3BlY2lhbFN0YXRlVHJhbnNpdGlvbjpmdW5jdGlvbih0LG4pe3ZhciBpPXQscz1mdW5jdGlvbih0LG4pe3N3aXRjaCh0KXtjYXNlIDA6dmFyIHI9bi5MQSgxKSxpPW4uaW5kZXgoKTtuLnJld2luZCgpLHQ9LTE7aWYocj09cGkmJnRoaXMubGMoaCkpdD0xMDtlbHNlIGlmKHI9PWV8fHI+PXgmJnI8PU58fHI+PU0mJnI8PUR8fHI9PUh8fHI9PXF8fHI+PXomJnI8PVd8fHI9PUt8fHI9PVl8fHI9PWV0fHxyPT1pdHx8cj09b3R8fHI+PWF0JiZyPD1mdHx8cj49ZHQmJnI8PW10fHxyPT1idHx8cj49RXQmJnI8PXh0fHxyPT1DdHx8cj49X3QmJnI8PUR0fHxyPj1SdCYmcjw9VXR8fHI9PUp0fHxyPj1adCYmcjw9ZW58fHI9PW5ufHxyPT1hbnx8cj09cG58fHI+PWduJiZyPD15bnx8cj09Tm58fHI9PU1ufHxyPj1JbiYmcjw9cW58fHI9PVhufHxyPT0kbnx8cj09dHJ8fHI9PWlyfHxyPj1saSYmcjw9aGl8fHI+PXZpJiZyPD15aXx8cj09d2l8fHI9PVRpfHxyPj1DaSYmcjw9Qml8fHI9PUlpfHxyPj16aSYmcjw9V2kpdD0zO24uc2VlayhpKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMTp2YXIgcz1uLkxBKDEpLG89bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSxzPT1lfHxzPj14JiZzPD1OfHxzPj1NJiZzPD1EfHxzPT1IfHxzPT1xfHxzPj16JiZzPD1XfHxzPT1LfHxzPT1ZfHxzPT1ldHx8cz09aXR8fHM9PW90fHxzPj1hdCYmczw9ZnR8fHM+PWR0JiZzPD1tdHx8cz09YnR8fHM+PUV0JiZzPD14dHx8cz09Q3R8fHM+PV90JiZzPD1EdHx8cz49UnQmJnM8PVV0fHxzPT1KdHx8cz49WnQmJnM8PWVufHxzPT1ubnx8cz09YW58fHM9PXBufHxzPj1nbiYmczw9eW58fHM9PU5ufHxzPT1Nbnx8cz49SW4mJnM8PXFufHxzPT1Ybnx8cz09JG58fHM9PXRyfHxzPT1pcnx8cz49bGkmJnM8PWhpfHxzPj12aSYmczw9eWl8fHM9PXdpfHxzPT1UaXx8cz49Q2kmJnM8PUJpfHxzPT1JaXx8cz49emkmJnM8PVdpP3Q9Mzoocz09QXR8fHM9PUpuKSYmdGhpcy5sYyhoKSYmKHQ9MTApLG4uc2VlayhvKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMjp2YXIgdT1uLkxBKDEpLGE9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMSx1PT1lfHx1Pj14JiZ1PD1OfHx1Pj1NJiZ1PD1EfHx1PT1IfHx1PT1xfHx1Pj16JiZ1PD1XfHx1PT1LfHx1PT1ZfHx1PT1ldHx8dT09aXR8fHU9PW90fHx1Pj1hdCYmdTw9ZnR8fHU+PWR0JiZ1PD1tdHx8dT09YnR8fHU+PUV0JiZ1PD14dHx8dT09Q3R8fHU+PV90JiZ1PD1EdHx8dT49UnQmJnU8PVV0fHx1PT1KdHx8dT49WnQmJnU8PWVufHx1PT1ubnx8dT09YW58fHU9PXBufHx1Pj1nbiYmdTw9eW58fHU9PU5ufHx1PT1Nbnx8dT49SW4mJnU8PXFufHx1PT1Ybnx8dT09JG58fHU9PXRyfHx1PT1pcnx8dT49bGkmJnU8PWhpfHx1Pj12aSYmdTw9eWl8fHU9PXdpfHx1PT1UaXx8dT49Q2kmJnU8PUJpfHx1PT1JaXx8dT49emkmJnU8PVdpP3Q9MzoodT09QXR8fHU9PUpuKSYmdGhpcy5sYyhoKSYmKHQ9MTApLG4uc2VlayhhKTtpZih0Pj0wKXJldHVybiB0O2JyZWFrO2Nhc2UgMzp2YXIgZj1uLkxBKDEpLGw9bi5pbmRleCgpO24ucmV3aW5kKCksdD0tMTtpZihmPT1BdCYmdGhpcy5sYyhoKSl0PTEwO2Vsc2UgaWYoZj09ZXx8Zj49eCYmZjw9Tnx8Zj49TSYmZjw9RHx8Zj09SHx8Zj09cXx8Zj49eiYmZjw9V3x8Zj09S3x8Zj09WXx8Zj09ZXR8fGY9PWl0fHxmPT1vdHx8Zj49YXQmJmY8PWZ0fHxmPj1kdCYmZjw9bXR8fGY9PWJ0fHxmPj1FdCYmZjw9eHR8fGY9PUN0fHxmPj1fdCYmZjw9RHR8fGY+PVJ0JiZmPD1VdHx8Zj09SnR8fGY+PVp0JiZmPD1lbnx8Zj09bm58fGY9PWFufHxmPT1wbnx8Zj49Z24mJmY8PXlufHxmPT1Obnx8Zj09TW58fGY+PUluJiZmPD1xbnx8Zj09WG58fGY9PSRufHxmPT10cnx8Zj09aXJ8fGY+PWxpJiZmPD1oaXx8Zj49dmkmJmY8PXlpfHxmPT13aXx8Zj09VGl8fGY+PUNpJiZmPD1CaXx8Zj09SWl8fGY+PXppJiZmPD1XaSl0PTM7bi5zZWVrKGwpO2lmKHQ+PTApcmV0dXJuIHQ7YnJlYWs7Y2FzZSA0OnZhciBjPW4uTEEoMSkscD1uLmluZGV4KCk7bi5yZXdpbmQoKSx0PS0xLGM9PWV8fGM+PXgmJmM8PU58fGM+PU0mJmM8PUR8fGM9PUh8fGM9PXF8fGM+PXomJmM8PVd8fGM9PUt8fGM9PVl8fGM9PWV0fHxjPT1pdHx8Yz09b3R8fGM+PWF0JiZjPD1mdHx8Yz49ZHQmJmM8PW10fHxjPT1idHx8Yz49RXQmJmM8PXh0fHxjPT1DdHx8Yz49X3QmJmM8PUR0fHxjPj1SdCYmYzw9VXR8fGM9PUp0fHxjPj1adCYmYzw9ZW58fGM9PW5ufHxjPT1hbnx8Yz09cG58fGM+PWduJiZjPD15bnx8Yz09Tm58fGM9PU1ufHxjPj1JbiYmYzw9cW58fGM9PVhufHxjPT0kbnx8Yz09dHJ8fGM9PWlyfHxjPj1saSYmYzw9aGl8fGM+PXZpJiZjPD15aXx8Yz09d2l8fGM9PVRpfHxjPj1DaSYmYzw9Qml8fGM9PUlpfHxjPj16aSYmYzw9V2k/dD0zOihjPT1BdHx8Yz09ZXIpJiZ0aGlzLmxjKGgpJiYodD0xMCksbi5zZWVrKHApO2lmKHQ+PTApcmV0dXJuIHR9fS5jYWxsKHRoaXMucmVjb2duaXplcix0LG4pO2lmKCFyLmFudGxyLmxhbmcuaXNVbmRlZmluZWQocykpcmV0dXJuIHM7aWYodGhpcy5yZWNvZ25pemVyLnN0YXRlLmJhY2t0cmFja2luZz4wKXJldHVybiB0aGlzLnJlY29nbml6ZXIuc3RhdGUuZmFpbGVkPSEwLC0xO3ZhciBvPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24odGhpcy5nZXREZXNjcmlwdGlvbigpLDI1MyxpLG4pO3Rocm93IHRoaXMuZXJyb3Iobyksb30sZHVtbXk6bnVsbH0pLHIuYW50bHIubGFuZy5hdWdtZW50T2JqZWN0KHYse3Rva2VuTmFtZXM6WyI8aW52YWxpZD4iLCI8RU9SPiIsIjxET1dOPiIsIjxVUD4iLCJMX1F1b3RBdHRyQ29udGVudENoYXIiLCJMX0Fwb3NBdHRyQ29udGVudENoYXIiLCJMX0VsZW1lbnRDb250ZW50Q2hhciIsIkxfQ0RhdGFTZWN0aW9uIiwiTF9QcmVkZWZpbmVkRW50aXR5UmVmIiwiTF9DaGFyUmVmIiwiRVNDQVBFX0xCUkFDS0VUIiwiRVNDQVBFX1JCUkFDS0VUIiwiRVNDQVBFX0FQT1MiLCJFU0NBUEVfUVVPVCIsIkNEQVRBX1NUQVJUIiwiQ0RBVEFfRU5EIiwiQU5DRVNUT1IiLCJBTkNFU1RPUl9PUl9TRUxGIiwiQU5EIiwiQVMiLCJBU0NFTkRJTkciLCJBVCIsIkFUVFJJQlVURSIsIkJBU0VfVVJJIiwiQk9VTkRBUllfU1BBQ0UiLCJCWSIsIkNBU0UiLCJDQVNUIiwiQ0FTVEFCTEUiLCJDSElMRCIsIkNPTExBVElPTiIsIkNPTU1FTlQiLCJDT05TVFJVQ1RJT04iLCJDT1BZX05BTUVTUEFDRVMiLCJERUNMQVJFIiwiREVGQVVMVCIsIkRFU0NFTkRBTlQiLCJERVNDRU5EQU5UX09SX1NFTEYiLCJERVNDRU5ESU5HIiwiRElWIiwiRE9DVU1FTlQiLCJET0NVTUVOVF9OT0RFIiwiRUxFTUVOVCIsIkVMU0UiLCJFTVBUWSIsIkVNUFRZX1NFUVVFTkNFIiwiRU5DT0RJTkciLCJFUSIsIkVWRVJZIiwiRVhDRVBUIiwiRVhURVJOQUwiLCJGT0xMT1dJTkciLCJGT0xMT1dJTkdfU0lCTElORyIsIkZPUiIsIkZVTkNUSU9OIiwiR0UiLCJHUkVBVEVTVCIsIkdUIiwiSURJViIsIklGIiwiSU1QT1JUIiwiSU4iLCJJTkhFUklUIiwiSU5TVEFOQ0UiLCJJTlRFUlNFQ1QiLCJJUyIsIklURU0iLCJMQVgiLCJMRSIsIkxFQVNUIiwiTEVUIiwiTFQiLCJNT0QiLCJNT0RVTEUiLCJOQU1FU1BBQ0UiLCJORSIsIk5PX0lOSEVSSVQiLCJOT19QUkVTRVJWRSIsIk5PREUiLCJPRiIsIk9QVElPTiIsIk9SIiwiT1JERVIiLCJPUkRFUkVEIiwiT1JERVJJTkciLCJQQVJFTlQiLCJQUkVDRURJTkciLCJQUkVDRURJTkdfU0lCTElORyIsIlBSRVNFUlZFIiwiUFJPQ0VTU0lOR19JTlNUUlVDVElPTiIsIlJFVFVSTiIsIlNBVElTRklFUyIsIlNDSEVNQSIsIlNDSEVNQV9BVFRSSUJVVEUiLCJTQ0hFTUFfRUxFTUVOVCIsIlNFTEYiLCJTT01FIiwiU1RBQkxFIiwiU1RSSUNUIiwiU1RSSVAiLCJURVhUIiwiVEhFTiIsIlRPIiwiVFJFQVQiLCJUWVBFU1dJVENIIiwiVU5JT04iLCJVTk9SREVSRUQiLCJWQUxJREFURSIsIlZBUklBQkxFIiwiVkVSU0lPTiIsIldIRVJFIiwiWFFVRVJZIiwiQUxMT1dJTkciLCJDQVRDSCIsIkNPTlRFWFQiLCJDT1VOVCIsIkRFQ0lNQUxfRk9STUFUIiwiREVDSU1BTF9TRVBBUkFUT1IiLCJESUdJVCIsIkVORCIsIkdST1VQIiwiR1JPVVBJTkdfU0VQQVJBVE9SIiwiSU5GSU5JVFkiLCJNSU5VU19TSUdOIiwiTkFNRVNQQUNFX05PREUiLCJOQU4iLCJORVhUIiwiT05MWSIsIlBBVFRFUk5fU0VQQVJBVE9SIiwiUEVSQ0VOVCIsIlBFUl9NSUxMRSIsIlBSRVZJT1VTIiwiU0xJRElORyIsIlNUQVJUIiwiU1dJVENIIiwiVFJZIiwiVFVNQkxJTkciLCJUWVBFIiwiV0hFTiIsIldJTkRPVyIsIlpFUk9fRElHSVQiLCJBRlRFUiIsIkJFRk9SRSIsIkNPUFkiLCJERUxFVEUiLCJGSVJTVCIsIklOU0VSVCIsIklOVE8iLCJMQVNUIiwiTU9ESUZZIiwiTk9ERVMiLCJSRU5BTUUiLCJSRVBMQUNFIiwiUkVWQUxJREFUSU9OIiwiU0tJUCIsIlVQREFUSU5HIiwiVkFMVUUiLCJXSVRIIiwiQUxMIiwiQU5ZIiwiQ09OVEFJTlMiLCJDT05URU5UIiwiRElBQ1JJVElDUyIsIkRJRkZFUkVOVCIsIkRJU1RBTkNFIiwiRU5USVJFIiwiRVhBQ1RMWSIsIkZST00iLCJGVF9PUFRJT04iLCJGVEFORCIsIkZUTk9UIiwiRlRPUiIsIklOU0VOU0lUSVZFIiwiTEFOR1VBR0UiLCJMRVZFTFMiLCJMT1dFUkNBU0UiLCJNT1NUIiwiTk8iLCJOT1QiLCJPQ0NVUlMiLCJQQVJBR1JBUEgiLCJQQVJBR1JBUEhTIiwiUEhSQVNFIiwiUkVMQVRJT05TSElQIiwiU0FNRSIsIlNDT1JFIiwiU0VOU0lUSVZFIiwiU0VOVEVOQ0UiLCJTRU5URU5DRVMiLCJTVEVNTUlORyIsIlNUT1AiLCJUSEVTQVVSVVMiLCJUSU1FUyIsIlVQUEVSQ0FTRSIsIlVTSU5HIiwiV0VJR0hUIiwiV0lMRENBUkRTIiwiV0lUSE9VVCIsIldPUkQiLCJXT1JEUyIsIkJSRUFLIiwiQ09OVElOVUUiLCJFWElUIiwiTE9PUCIsIlJFVFVSTklORyIsIldISUxFIiwiQ0hFQ0siLCJDT0xMRUNUSU9OIiwiQ09OU1RSQUlOVCIsIkZPUkVBQ0giLCJGT1JFSUdOIiwiSU5ERVgiLCJJTlRFR1JJVFkiLCJLRVkiLCJPTiIsIlVOSVFVRSIsIkJJTkFSWSIsIkFNUF9FUiIsIkFQT1NfRVIiLCJRVU9UX0VSIiwiQ09OQ0FUIiwiTFBBUkVOIiwiUlBBUkVOIiwiRE9MTEFSIiwiTEJSQUNLRVQiLCJSQlJBQ0tFVCIsIkxTUVVBUkUiLCJSU1FVQVJFIiwiRVFVQUwiLCJCSU5EIiwiTk9URVFVQUwiLCJBTk5fUEVSQ0VOVCIsIkhBU0giLCJBTVAiLCJDT01NQSIsIlFVRVNUSU9OIiwiU1RBUiIsIlBMVVMiLCJNSU5VUyIsIlNNQUxMRVIiLCJHUkVBVEVSIiwiU01BTExFUkVRIiwiR1JFQVRFUkVRIiwiU01BTExFUl9TTUFMTEVSIiwiR1JFQVRFUl9HUkVBVEVSIiwiU0xBU0giLCJTTEFTSF9TTEFTSCIsIkRPVCIsIkRPVF9ET1QiLCJDT0xPTiIsIkNPTE9OX0NPTE9OIiwiRU1QVFlfQ0xPU0VfVEFHIiwiQ0xPU0VfVEFHIiwiU0VNSUNPTE9OIiwiVkJBUiIsIlBSQUdNQV9TVEFSVCIsIlBSQUdNQV9FTkQiLCJYTUxfQ09NTUVOVF9TVEFSVCIsIlhNTF9DT01NRU5UX0VORCIsIlBJX1NUQVJUIiwiUElfRU5EIiwiQVRUUl9TSUdOIiwiQ0hBUlJFRl9ERUMiLCJDSEFSUkVGX0hFWCIsIkFQT1MiLCJRVU9UIiwiTkNOYW1lU3RhcnRDaGFyIiwiTkNOYW1lQ2hhciIsIkxfTkNOYW1lIiwiTGV0dGVyIiwiSGV4TGV0dGVyIiwiRGlnaXQiLCJEaWdpdHMiLCJTIiwiU1UiLCJMX1ByYWdtYSIsIkxfRGlyQ29tbWVudENvbnN0cnVjdG9yIiwiTF9EaXJQSUNvbnN0cnVjdG9yIiwiTF9JbnRlZ2VyTGl0ZXJhbCIsIkxfRGVjaW1hbExpdGVyYWwiLCJMX0RvdWJsZUxpdGVyYWwiLCJMX0NvbW1lbnQiLCJMX0FueUNoYXIiLCJMX1F1b3RTdHJpbmdMaXRlcmFsQ2hhciIsIkxfQXBvc1N0cmluZ0xpdGVyYWxDaGFyIiwiTGlicmFyeU1vZHVsZSIsIk1haW5Nb2R1bGUiLCJWZXJzaW9uRGVjbCIsIlZlcnNpb25EZWNsRW5jb2RpbmciLCJWZXJzaW9uRGVjbFZlcnNpb24iLCJNb2R1bGVEZWNsIiwiUHJvbG9nIiwiRGVmYXVsdE5hbWVzcGFjZURlY2xzIiwiRGVmYXVsdE5hbWVzcGFjZURlY2wiLCJTZXR0ZXJzIiwiU2V0dGVyIiwiTmFtZXNwYWNlRGVjbHMiLCJOYW1lc3BhY2VEZWNsIiwiSW1wb3J0cyIsIkZUT3B0aW9uRGVjbHMiLCJTY2hlbWFJbXBvcnQiLCJTY2hlbWFQcmVmaXgiLCJOYW1lc3BhY2VOYW1lIiwiRGVmYXVsdEVsZW1lbnROYW1lc3BhY2UiLCJBdEhpbnRzIiwiTW9kdWxlSW1wb3J0IiwiQmFzZVVSSURlY2wiLCJPcmRlcmVkRGVjbHMiLCJWYXJEZWNsIiwiVmFyVHlwZSIsIlZhclZhbHVlIiwiVmFyRGVmYXVsdFZhbHVlIiwiVmFyVmFyaWFibGVEZWNsIiwiRnVuY3Rpb25EZWNsIiwiUGFyYW1MaXN0IiwiUmV0dXJuVHlwZSIsIk9wdGlvbkRlY2wiLCJUeXBlRGVjbGFyYXRpb24iLCJQYXJhbSIsIkVuY2xvc2VkRXhwciIsIlF1ZXJ5Qm9keSIsIlVuYXJ5RXhwciIsIkRpckVsZW1Db25zdHJ1Y3RvciIsIkRpckF0dHJpYnV0ZUxpc3QiLCJEaXJBdHRyaWJ1dGVWYWx1ZSIsIkRpckVsZW1Db250ZW50IiwiQ29tbW9uQ29udGVudCIsIlNlcXVlbmNlVHlwZSIsIkVtcHR5U2VxdWVuY2VUZXN0IiwiS2luZFRlc3QiLCJJdGVtVGVzdCIsIkZ1bmN0aW9uVGVzdCIsIkF0b21pY1R5cGUiLCJBdG9taWNPclVuaW9uVHlwZSIsIlN0cmluZ0xpdGVyYWwiLCJFbGVtZW50Q29udGVudENoYXIiLCJBdHRyaWJ1dGVWYWx1ZUNoYXIiLCJRTmFtZSIsIkJsb2NrRXhwciIsIkJpbmFyeVRlc3QiLCJFWFBMSUNJVExZIl0sRk9MTE9XX3BfVmVyc2lvbkRlY2xfaW5fcF9Nb2R1bGU1MDc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9MaWJyYXJ5TW9kdWxlX2luX3BfTW9kdWxlNTQwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDBdKSxGT0xMT1dfcF9NYWluTW9kdWxlX2luX3BfTW9kdWxlNTYzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDBdKSxGT0xMT1dfRU9GX2luX3BfTW9kdWxlNTg3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfWFFVRVJZX2luX3BfVmVyc2lvbkRlY2w2MTU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMTYzODQsMCw4MTkyXSksRk9MTE9XX0VOQ09ESU5HX2luX3BfVmVyc2lvbkRlY2w2MjM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX1ZlcnNpb25EZWNsNjI5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19WRVJTSU9OX2luX3BfVmVyc2lvbkRlY2w2NTA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX1ZlcnNpb25EZWNsNjU2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDE2Mzg0LDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfRU5DT0RJTkdfaW5fcF9WZXJzaW9uRGVjbDY2MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfVmVyc2lvbkRlY2w2Njc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wX1ZlcnNpb25EZWNsNjczOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fUHJvbG9nX2luX3BfTWFpbk1vZHVsZTczOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wbV9RdWVyeUJvZHlfaW5fcF9NYWluTW9kdWxlNzQxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Nb2R1bGVEZWNsX2luX3BfTGlicmFyeU1vZHVsZTc5NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwyNjg0MzU0NjBdKSxGT0xMT1dfcG1fUHJvbG9nX2luX3BfTGlicmFyeU1vZHVsZTc5OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX01PRFVMRV9pbl9wX01vZHVsZURlY2w4NTU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwxMDI0LDBdKSxGT0xMT1dfTkFNRVNQQUNFX2luX3BfTW9kdWxlRGVjbDg1OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX05DTmFtZV9pbl9wX01vZHVsZURlY2w4NjM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMTZdKSxGT0xMT1dfRVFVQUxfaW5fcF9Nb2R1bGVEZWNsODY1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9Nb2R1bGVEZWNsODY3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TRU1JQ09MT05faW5fcF9Nb2R1bGVEZWNsODY5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fRGVmYXVsdE5hbWVzcGFjZURlY2xfaW5fcG1fUHJvbG9nOTI4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDI2ODQzNTQ2MF0pLEZPTExPV19wX1NldHRlcl9pbl9wbV9Qcm9sb2c5MzQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMjY4NDM1NDYwXSksRk9MTE9XX3BtX05hbWVzcGFjZURlY2xfaW5fcG1fUHJvbG9nOTQwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDI2ODQzNTQ2MF0pLEZPTExPV19wX0ltcG9ydF9pbl9wbV9Qcm9sb2c5NDY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMjY4NDM1NDYwXSksRk9MTE9XX3BtX0ZUT3B0aW9uRGVjbF9pbl9wbV9Qcm9sb2c5NTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMjY4NDM1NDYwXSksRk9MTE9XX3BnX09yZGVyZWREZWNsX2luX3BtX1Byb2xvZzk1OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiw0XSksRk9MTE9XX3BtX0NvbnRleHRJdGVtRGVjbF9pbl9wZ19PcmRlcmVkRGVjbDEyNzQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9Bbm5vdGF0ZWREZWNsX2luX3BnX09yZGVyZWREZWNsMTI4NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BtX09wdGlvbkRlY2xfaW5fcGdfT3JkZXJlZERlY2wxMjk4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fQm91bmRhcnlTcGFjZURlY2xfaW5fcF9TZXR0ZXIxMzI4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fRGVmYXVsdENvbGxhdGlvbkRlY2xfaW5fcF9TZXR0ZXIxMzQwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fQmFzZVVSSURlY2xfaW5fcF9TZXR0ZXIxMzUyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fQ29uc3RydWN0aW9uRGVjbF9pbl9wX1NldHRlcjEzNjQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9PcmRlcmluZ01vZGVEZWNsX2luX3BfU2V0dGVyMTM3NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BtX0VtcHR5T3JkZXJEZWNsX2luX3BfU2V0dGVyMTM4ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BtX1JldmFsaWRhdGlvbkRlY2xfaW5fcF9TZXR0ZXIxNDAzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fQ29weU5hbWVzcGFjZXNEZWNsX2luX3BfU2V0dGVyMTQxNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BtX0RlY2ltYWxGb3JtYXREZWNsX2luX3BfU2V0dGVyMTQyNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFQ0xBUkVfaW5fcG1fQm91bmRhcnlTcGFjZURlY2wxNDU5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsxNjc3NzIxNiwwXSksRk9MTE9XX0JPVU5EQVJZX1NQQUNFX2luX3BtX0JvdW5kYXJ5U3BhY2VEZWNsMTQ2NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDE2Nzc3MjE2LDhdKSxGT0xMT1dfUFJFU0VSVkVfaW5fcG1fQm91bmRhcnlTcGFjZURlY2wxNDc0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TVFJJUF9pbl9wbV9Cb3VuZGFyeVNwYWNlRGVjbDE0ODQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9Cb3VuZGFyeVNwYWNlRGVjbDE0OTE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ERUNMQVJFX2luX3BtX0RlZmF1bHRDb2xsYXRpb25EZWNsMTUxOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCw4XSksRk9MTE9XX0RFRkFVTFRfaW5fcG1fRGVmYXVsdENvbGxhdGlvbkRlY2wxNTI1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsxMDczNzQxODI0LDBdKSxGT0xMT1dfQ09MTEFUSU9OX2luX3BtX0RlZmF1bHRDb2xsYXRpb25EZWNsMTUzMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX0RlZmF1bHRDb2xsYXRpb25EZWNsMTUzNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BtX0RlZmF1bHRDb2xsYXRpb25EZWNsMTUzNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFQ0xBUkVfaW5fcG1fQmFzZVVSSURlY2wxNTczOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs4Mzg4NjA4LDBdKSxGT0xMT1dfQkFTRV9VUklfaW5fcG1fQmFzZVVSSURlY2wxNTc5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fQmFzZVVSSURlY2wxNTg1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TRU1JQ09MT05faW5fcG1fQmFzZVVSSURlY2wxNTg3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfREVDTEFSRV9pbl9wbV9Db25zdHJ1Y3Rpb25EZWNsMTY0MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwxXSksRk9MTE9XX0NPTlNUUlVDVElPTl9pbl9wbV9Db25zdHJ1Y3Rpb25EZWNsMTY0NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDE2Nzc3MjE2LDhdKSxGT0xMT1dfU1RSSVBfaW5fcG1fQ29uc3RydWN0aW9uRGVjbDE2NTU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1BSRVNFUlZFX2luX3BtX0NvbnN0cnVjdGlvbkRlY2wxNjYxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TRU1JQ09MT05faW5fcG1fQ29uc3RydWN0aW9uRGVjbDE2Njg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ERUNMQVJFX2luX3BtX09yZGVyaW5nTW9kZURlY2wxNjk2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMTA0ODU3NiwwXSksRk9MTE9XX09SREVSSU5HX2luX3BtX09yZGVyaW5nTW9kZURlY2wxNzAyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsNTI0Mjg4LDEwMjRdKSxGT0xMT1dfT1JERVJFRF9pbl9wbV9PcmRlcmluZ01vZGVEZWNsMTcxMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfVU5PUkRFUkVEX2luX3BtX09yZGVyaW5nTW9kZURlY2wxNzE3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TRU1JQ09MT05faW5fcG1fT3JkZXJpbmdNb2RlRGVjbDE3MjQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ERUNMQVJFX2luX3BtX0VtcHR5T3JkZXJEZWNsMTc1MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCw4XSksRk9MTE9XX0RFRkFVTFRfaW5fcG1fRW1wdHlPcmRlckRlY2wxNzU4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMjYyMTQ0LDBdKSxGT0xMT1dfT1JERVJfaW5fcG1fRW1wdHlPcmRlckRlY2wxNzY0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDQwOTZdKSxGT0xMT1dfRU1QVFlfaW5fcG1fRW1wdHlPcmRlckRlY2wxNzcwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDE2Nzc3MjE2LDMyLDBdKSxGT0xMT1dfR1JFQVRFU1RfaW5fcG1fRW1wdHlPcmRlckRlY2wxNzc5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19MRUFTVF9pbl9wbV9FbXB0eU9yZGVyRGVjbDE3ODU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9FbXB0eU9yZGVyRGVjbDE3OTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ERUNMQVJFX2luX3BtX0NvcHlOYW1lc3BhY2VzRGVjbDE4MjA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMl0pLEZPTExPV19DT1BZX05BTUVTUEFDRVNfaW5fcG1fQ29weU5hbWVzcGFjZXNEZWNsMTgyNjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDE2Nzg1NDA4LDBdKSxGT0xMT1dfcF9QcmVzZXJ2ZU1vZGVfaW5fcG1fQ29weU5hbWVzcGFjZXNEZWNsMTgzMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxMDI0XSksRk9MTE9XX0NPTU1BX2luX3BtX0NvcHlOYW1lc3BhY2VzRGVjbDE4MzI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMTA3Mzc0MTgyNCw0MDk2LDBdKSxGT0xMT1dfcF9Jbmhlcml0TW9kZV9pbl9wbV9Db3B5TmFtZXNwYWNlc0RlY2wxODM0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TRU1JQ09MT05faW5fcG1fQ29weU5hbWVzcGFjZXNEZWNsMTgzNjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1BSRVNFUlZFX2luX3BfUHJlc2VydmVNb2RlMTg2NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX05PX1BSRVNFUlZFX2luX3BfUHJlc2VydmVNb2RlMTg3MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0lOSEVSSVRfaW5fcF9Jbmhlcml0TW9kZTE5MDM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19OT19JTkhFUklUX2luX3BfSW5oZXJpdE1vZGUxOTA5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfREVDTEFSRV9pbl9wbV9EZWNpbWFsRm9ybWF0RGVjbDE5NDg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsOCwwLDEwNDg1NzZdKSxGT0xMT1dfREVDSU1BTF9GT1JNQVRfaW5fcG1fRGVjaW1hbEZvcm1hdERlY2wxOTU2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcG1fRGVjaW1hbEZvcm1hdERlY2wxOTYwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCw3NzgwNDMzOTIsNDEwMywwLDAsNTM2ODcwOTEyXSksRk9MTE9XX0RFRkFVTFRfaW5fcG1fRGVjaW1hbEZvcm1hdERlY2wxOTY4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwxMDQ4NTc2XSksRk9MTE9XX0RFQ0lNQUxfRk9STUFUX2luX3BtX0RlY2ltYWxGb3JtYXREZWNsMTk3NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsNzc4MDQzMzkyLDQxMDMsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19wX0RGUHJvcGVydHlOYW1lX2luX3BtX0RlY2ltYWxGb3JtYXREZWNsMTk4MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxNl0pLEZPTExPV19FUVVBTF9pbl9wbV9EZWNpbWFsRm9ybWF0RGVjbDE5ODM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9EZWNpbWFsRm9ybWF0RGVjbDE5ODU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDc3ODA0MzM5Miw0MTAzLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BtX0RlY2ltYWxGb3JtYXREZWNsMTk4OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFQ0lNQUxfU0VQQVJBVE9SX2luX3BfREZQcm9wZXJ0eU5hbWUyMDE4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfR1JPVVBJTkdfU0VQQVJBVE9SX2luX3BfREZQcm9wZXJ0eU5hbWUyMDI0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfSU5GSU5JVFlfaW5fcF9ERlByb3BlcnR5TmFtZTIwMzA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19NSU5VU19TSUdOX2luX3BfREZQcm9wZXJ0eU5hbWUyMDM2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTkFOX2luX3BfREZQcm9wZXJ0eU5hbWUyMDQyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUEVSQ0VOVF9pbl9wX0RGUHJvcGVydHlOYW1lMjA0ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1BFUl9NSUxMRV9pbl9wX0RGUHJvcGVydHlOYW1lMjA1NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1pFUk9fRElHSVRfaW5fcF9ERlByb3BlcnR5TmFtZTIwNjA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ESUdJVF9pbl9wX0RGUHJvcGVydHlOYW1lMjA2NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1BBVFRFUk5fU0VQQVJBVE9SX2luX3BfREZQcm9wZXJ0eU5hbWUyMDcyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fU2NoZW1hSW1wb3J0X2luX3BfSW1wb3J0MjEwMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BtX01vZHVsZUltcG9ydF9pbl9wX0ltcG9ydDIxMDU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19JTVBPUlRfaW5fcG1fU2NoZW1hSW1wb3J0MjE0MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDI2ODQzNTQ1NiwwXSksRk9MTE9XX1NDSEVNQV9pbl9wbV9TY2hlbWFJbXBvcnQyMTQ3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDgsMTAyNCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1NjaGVtYVByZWZpeF9pbl9wbV9TY2hlbWFJbXBvcnQyMTUzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fU2NoZW1hSW1wb3J0MjE1ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMjA5NzE1MiwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfQVRfaW5fcG1fU2NoZW1hSW1wb3J0MjE2MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX1NjaGVtYUltcG9ydDIxNjk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcxOTM2XSksRk9MTE9XX0NPTU1BX2luX3BtX1NjaGVtYUltcG9ydDIxNzI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9TY2hlbWFJbXBvcnQyMTc2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MTkzNl0pLEZPTExPV19TRU1JQ09MT05faW5fcG1fU2NoZW1hSW1wb3J0MjE4MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX05BTUVTUEFDRV9pbl9wX1NjaGVtYVByZWZpeDIyNTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9OQ05hbWVfaW5fcF9TY2hlbWFQcmVmaXgyMjU4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDE2XSksRk9MTE9XX0VRVUFMX2luX3BfU2NoZW1hUHJlZml4MjI2MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFRkFVTFRfaW5fcF9TY2hlbWFQcmVmaXgyMjk5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDEwMjRdKSxGT0xMT1dfRUxFTUVOVF9pbl9wX1NjaGVtYVByZWZpeDIzMDU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwxMDI0LDBdKSxGT0xMT1dfTkFNRVNQQUNFX2luX3BfU2NoZW1hUHJlZml4MjMxMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0lNUE9SVF9pbl9wbV9Nb2R1bGVJbXBvcnQyMzYxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsNTEyLDBdKSxGT0xMT1dfTU9EVUxFX2luX3BtX01vZHVsZUltcG9ydDIzNjc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwxMDI0LDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX05BTUVTUEFDRV9pbl9wbV9Nb2R1bGVJbXBvcnQyMzc0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfTkNOYW1lX2luX3BtX01vZHVsZUltcG9ydDIzODA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMTZdKSxGT0xMT1dfRVFVQUxfaW5fcG1fTW9kdWxlSW1wb3J0MjM4MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX01vZHVsZUltcG9ydDIzODg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIwOTcxNTIsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX0FUX2luX3BtX01vZHVsZUltcG9ydDIzOTM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9Nb2R1bGVJbXBvcnQyMzk5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MTkzNl0pLEZPTExPV19DT01NQV9pbl9wbV9Nb2R1bGVJbXBvcnQyNDAyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fTW9kdWxlSW1wb3J0MjQwNjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzE5MzZdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BtX01vZHVsZUltcG9ydDI0MTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ERUNMQVJFX2luX3BtX05hbWVzcGFjZURlY2wyNDgxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMTAyNCwwXSksRk9MTE9XX05BTUVTUEFDRV9pbl9wbV9OYW1lc3BhY2VEZWNsMjQ4NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX05DTmFtZV9pbl9wbV9OYW1lc3BhY2VEZWNsMjQ5MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxNl0pLEZPTExPV19FUVVBTF9pbl9wbV9OYW1lc3BhY2VEZWNsMjQ5NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BtX05hbWVzcGFjZURlY2wyNDk5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TRU1JQ09MT05faW5fcG1fTmFtZXNwYWNlRGVjbDI1MDE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ERUNMQVJFX2luX3BtX0RlZmF1bHROYW1lc3BhY2VEZWNsMjU1ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCw4XSksRk9MTE9XX0RFRkFVTFRfaW5fcG1fRGVmYXVsdE5hbWVzcGFjZURlY2wyNTY0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDQxOTUzMjhdKSxGT0xMT1dfRUxFTUVOVF9pbl9wbV9EZWZhdWx0TmFtZXNwYWNlRGVjbDI1NzE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwxMDI0LDBdKSxGT0xMT1dfRlVOQ1RJT05faW5fcG1fRGVmYXVsdE5hbWVzcGFjZURlY2wyNTc3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMTAyNCwwXSksRk9MTE9XX05BTUVTUEFDRV9pbl9wbV9EZWZhdWx0TmFtZXNwYWNlRGVjbDI1ODQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wbV9EZWZhdWx0TmFtZXNwYWNlRGVjbDI1ODg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9EZWZhdWx0TmFtZXNwYWNlRGVjbDI1OTA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ERUNMQVJFX2luX3BtX0Fubm90YXRlZERlY2wyNjE4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDQxOTQzMDQsMCw0MDk2LDEzNDIxNzcyOCwwLDE2MDU2MzIsMTI4XSksRk9MTE9XX3BfQW5ub3RhdGlvbl9pbl9wbV9Bbm5vdGF0ZWREZWNsMjYyMjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCw0MTk0MzA0LDAsNDA5NiwxMzQyMTc3MjgsMCwxNjA1NjMyLDEyOF0pLEZPTExPV19wZ19Bbm5vdGF0ZWREZWNsX2luX3BtX0Fubm90YXRlZERlY2wyNjI1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TRU1JQ09MT05faW5fcG1fQW5ub3RhdGVkRGVjbDI2Mjc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1ZhckRlY2xfaW5fcGdfQW5ub3RhdGVkRGVjbDI2NTE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wbV9GdW5jdGlvbkRlY2xfaW5fcGdfQW5ub3RhdGVkRGVjbDI2NjM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0NvbGxlY3Rpb25EZWNsX2luX3BnX0Fubm90YXRlZERlY2wyNjc4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9JbmRleERlY2xfaW5fcGdfQW5ub3RhdGVkRGVjbDI2OTM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0lDRGVjbF9pbl9wZ19Bbm5vdGF0ZWREZWNsMjcwODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FOTl9QRVJDRU5UX2luX3BfQW5ub3RhdGlvbjI3MzQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX0Fubm90YXRpb24yNzM2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9Bbm5vdGF0aW9uMjczOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9MaXRlcmFsX2luX3BfQW5ub3RhdGlvbjI3NDE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMTAyNF0pLEZPTExPV19DT01NQV9pbl9wX0Fubm90YXRpb24yNzQ0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX0xpdGVyYWxfaW5fcF9Bbm5vdGF0aW9uMjc0NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwxMDI0XSksRk9MTE9XX1JQQVJFTl9pbl9wX0Fubm90YXRpb24yNzUwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfVkFSSUFCTEVfaW5fcF9WYXJEZWNsMjc4MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX1ZhckRlY2wyNzg2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9WYXJEZWNsMjc5MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNTI0Mjg4LDI2MjE0NCwwLDAsMCwwLDAsMzJdKSxGT0xMT1dfcF9UeXBlRGVjbGFyYXRpb25faW5fcF9WYXJEZWNsMjc5NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwyNjIxNDQsMCwwLDAsMCwwLDMyXSksRk9MTE9XX0JJTkRfaW5fcF9WYXJEZWNsMjgwMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1ZhclZhbHVlX2luX3BfVmFyRGVjbDI4MDU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19FWFRFUk5BTF9pbl9wX1ZhckRlY2wyODEzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDMyXSksRk9MTE9XX0JJTkRfaW5fcF9WYXJEZWNsMjgxODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1ZhckRlZmF1bHRWYWx1ZV9pbl9wX1ZhckRlY2wyODIyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVmFyVmFsdWUyOTAxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVmFyRGVmYXVsdFZhbHVlMjkyODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFQ0xBUkVfaW5fcG1fQ29udGV4dEl0ZW1EZWNsMjk1NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMjYyMTQ0XSksRk9MTE9XX0NPTlRFWFRfaW5fcG1fQ29udGV4dEl0ZW1EZWNsMjk2MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDQsMF0pLEZPTExPV19JVEVNX2luX3BtX0NvbnRleHRJdGVtRGVjbDI5Njk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzUyNDI4OCwyNjIxNDQsMCwwLDAsMCwwLDMyXSksRk9MTE9XX0FTX2luX3BtX0NvbnRleHRJdGVtRGVjbDI5NzY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDgwNTMwNjM2NywwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9JdGVtVHlwZV9pbl9wbV9Db250ZXh0SXRlbURlY2wyOTgwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDI2MjE0NCwwLDAsMCwwLDAsMzJdKSxGT0xMT1dfQklORF9pbl9wbV9Db250ZXh0SXRlbURlY2wyOTg2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyVmFsdWVfaW5fcG1fQ29udGV4dEl0ZW1EZWNsMjk4ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfRVhURVJOQUxfaW5fcG1fQ29udGV4dEl0ZW1EZWNsMjk5NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5NDRdKSxGT0xMT1dfQklORF9pbl9wbV9Db250ZXh0SXRlbURlY2wzMDAxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyRGVmYXVsdFZhbHVlX2luX3BtX0NvbnRleHRJdGVtRGVjbDMwMDM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9Db250ZXh0SXRlbURlY2wzMDA5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfVVBEQVRJTkdfaW5fcG1fRnVuY3Rpb25EZWNsMzA0MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCw0MTk0MzA0XSksRk9MTE9XX0ZVTkNUSU9OX2luX3BtX0Z1bmN0aW9uRGVjbDMwNTA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcGdfRlFOYW1lX2luX3BtX0Z1bmN0aW9uRGVjbDMwNTY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wbV9GdW5jdGlvbkRlY2wzMDU4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwzMjIxMjI1NDcyLDBdKSxGT0xMT1dfcF9QYXJhbUxpc3RfaW5fcG1fRnVuY3Rpb25EZWNsMzA2MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wbV9GdW5jdGlvbkRlY2wzMDY1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyODgsMjYyMTQ0LDAsMCwwLDAsMCwxXSksRk9MTE9XX0FTX2luX3BtX0Z1bmN0aW9uRGVjbDMwNzA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDgwNTMwNjM2NywwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9TZXF1ZW5jZVR5cGVfaW5fcG1fRnVuY3Rpb25EZWNsMzA3NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwyNjIxNDQsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcG1fRnVuY3Rpb25EZWNsMzA4MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHJfaW5fcG1fRnVuY3Rpb25EZWNsMzA4NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BtX0Z1bmN0aW9uRGVjbDMwODc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19FWFRFUk5BTF9pbl9wbV9GdW5jdGlvbkRlY2wzMDkzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9QYXJhbV9pbl9wX1BhcmFtTGlzdDMxNzA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMTAyNF0pLEZPTExPV19DT01NQV9pbl9wX1BhcmFtTGlzdDMxNzM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19wX1BhcmFtX2luX3BfUGFyYW1MaXN0MzE3NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwxMDI0XSksRk9MTE9XX0RPTExBUl9pbl9wX1BhcmFtMzIzNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfUGFyYW0zMjQxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyOTAsMF0pLEZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX1BhcmFtMzI0NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRW5jbG9zZWRFeHByX2luX3BtX0Z1bmN0aW9uQm9keTMzMDM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MQlJBQ0tFVF9pbl9wX0VuY2xvc2VkRXhwcjMzMzA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BfRW5jbG9zZWRFeHByMzMzMjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BfRW5jbG9zZWRFeHByMzMzNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFQ0xBUkVfaW5fcG1fT3B0aW9uRGVjbDMzODc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCw2NTUzNiwwXSksRk9MTE9XX09QVElPTl9pbl9wbV9PcHRpb25EZWNsMzM5MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1FOYW1lX2luX3BtX09wdGlvbkRlY2wzMzk3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcG1fT3B0aW9uRGVjbDMzOTk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wbV9PcHRpb25EZWNsMzQwMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUHJvZ3JhbV9pbl9wbV9RdWVyeUJvZHkzNDMwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FeHByX2luX3BtX1F1ZXJ5Qm9keTM0NDI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9FeHByMzQ3ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwxMDI0XSksRk9MTE9XX0NPTU1BX2luX3BfRXhwcjM0OTQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfRXhwcjM0OTY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMTAyNF0pLEZPTExPV19wX0ZMV09SSHlicmlkX2luX3BfRXhwclNpbmdsZTM1NjM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0lmSHlicmlkX2luX3BfRXhwclNpbmdsZTM1OTM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1N3aXRjaEh5YnJpZF9pbl9wX0V4cHJTaW5nbGUzNjE5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9UeXBlc3dpdGNoSHlicmlkX2luX3BfRXhwclNpbmdsZTM2NDE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1RyeUNhdGNoSHlicmlkX2luX3BfRXhwclNpbmdsZTM2Njg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0V4cHJTaW1wbGVfaW5fcF9FeHByU2luZ2xlMzY4MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfSW5pdGlhbENsYXVzZV9pbl9wX0ZMV09SSHlicmlkMzcwODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwyMDk3MTUyLDY3MzcxMDcyLDE3MzE3ODkwXSksRk9MTE9XX3BfSW50ZXJtZWRpYXRlQ2xhdXNlX2luX3BfRkxXT1JIeWJyaWQzNzEwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDIwOTcxNTIsNjczNzEwNzIsMTczMTc4OTBdKSxGT0xMT1dfcF9SZXR1cm5IeWJyaWRfaW5fcF9GTFdPUkh5YnJpZDM3MTM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZvckNsYXVzZV9pbl9wX0luaXRpYWxDbGF1c2UzNzQwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9MZXRDbGF1c2VfaW5fcF9Jbml0aWFsQ2xhdXNlMzc0NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfV2luZG93Q2xhdXNlX2luX3BfSW5pdGlhbENsYXVzZTM3NDg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0luaXRpYWxDbGF1c2VfaW5fcF9JbnRlcm1lZGlhdGVDbGF1c2UzNzc0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9XaGVyZUNsYXVzZV9pbl9wX0ludGVybWVkaWF0ZUNsYXVzZTM3Nzg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0dyb3VwQnlDbGF1c2VfaW5fcF9JbnRlcm1lZGlhdGVDbGF1c2UzNzgyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9PcmRlckJ5Q2xhdXNlX2luX3BfSW50ZXJtZWRpYXRlQ2xhdXNlMzc4NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQ291bnRDbGF1c2VfaW5fcF9JbnRlcm1lZGlhdGVDbGF1c2UzNzkwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9SYW5nZUV4cHJfaW5fcF9TdHJpbmdDb25jYXRFeHByMzgxMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMjY4NDM1NDU2LDBdKSxGT0xMT1dfQ09OQ0FUX2luX3BfU3RyaW5nQ29uY2F0RXhwcjM4MTc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9SYW5nZUV4cHJfaW5fcF9TdHJpbmdDb25jYXRFeHByMzgyMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMjY4NDM1NDU2LDBdKSxGT0xMT1dfRk9SX2luX3BfRm9yQ2xhdXNlMzg0ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX3BfRm9yQmluZGluZ19pbl9wX0ZvckNsYXVzZTM4NTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMTAyNF0pLEZPTExPV19DT01NQV9pbl9wX0ZvckNsYXVzZTM4NTU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19wX0ZvckJpbmRpbmdfaW5fcF9Gb3JDbGF1c2UzODU3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDEwMjRdKSxGT0xMT1dfRE9MTEFSX2luX3BfRm9yQmluZGluZzM4ODc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9WYXJOYW1lX2luX3BfRm9yQmluZGluZzM4OTE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzI2MjE0NDAsNTM2ODcwOTEyLDAsNjU1MzYsMCwzMzU1NDQzMl0pLEZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX0ZvckJpbmRpbmczODk1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMDk3MTUyLDUzNjg3MDkxMiwwLDY1NTM2LDAsMzM1NTQ0MzJdKSxGT0xMT1dfcF9BbGxvd2luZ0VtcHR5X2luX3BfRm9yQmluZGluZzM4OTg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIwOTcxNTIsNTM2ODcwOTEyLDAsMCwwLDMzNTU0NDMyXSksRk9MTE9XX3BfUG9zaXRpb25hbFZhcl9pbl9wX0ZvckJpbmRpbmczOTAxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDUzNjg3MDkxMiwwLDAsMCwzMzU1NDQzMl0pLEZPTExPV19wX0ZUU2NvcmVWYXJfaW5fcF9Gb3JCaW5kaW5nMzkwNDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCw1MzY4NzA5MTJdKSxGT0xMT1dfSU5faW5fcF9Gb3JCaW5kaW5nMzkwOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9Gb3JCaW5kaW5nMzkxMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FMTE9XSU5HX2luX3BfQWxsb3dpbmdFbXB0eTM5NDI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsNDA5Nl0pLEZPTExPV19FTVBUWV9pbl9wX0FsbG93aW5nRW1wdHkzOTQ4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQVRfaW5fcF9Qb3NpdGlvbmFsVmFyMzk3ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX1Bvc2l0aW9uYWxWYXIzOTg0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyTmFtZV9pbl9wX1Bvc2l0aW9uYWxWYXIzOTg4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTEVUX2luX3BfTGV0Q2xhdXNlNDAxODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDMzNTU0NDMyLDIxNDc0ODM2NDgsMF0pLEZPTExPV19wX0xldEJpbmRpbmdfaW5fcF9MZXRDbGF1c2U0MDIyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDEwMjRdKSxGT0xMT1dfQ09NTUFfaW5fcF9MZXRDbGF1c2U0MDI1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMzM1NTQ0MzIsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX3BfTGV0QmluZGluZ19pbl9wX0xldENsYXVzZTQwMjc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMTAyNF0pLEZPTExPV19ET0xMQVJfaW5fcF9MZXRCaW5kaW5nNDA2MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9MZXRCaW5kaW5nNDA2NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNTI0Mjg4LDAsMCwwLDAsMCwwLDMyXSksRk9MTE9XX3BfVHlwZURlY2xhcmF0aW9uX2luX3BfTGV0QmluZGluZzQwNjk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMzJdKSxGT0xMT1dfcF9GVFNjb3JlVmFyX2luX3BfTGV0QmluZGluZzQwNzU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMzJdKSxGT0xMT1dfQklORF9pbl9wX0xldEJpbmRpbmc0MDc5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0xldEJpbmRpbmc0MDgxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRk9SX2luX3BfV2luZG93Q2xhdXNlNDExMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwyNzIsMF0pLEZPTExPV19wX1R1bWJsaW5nV2luZG93Q2xhdXNlX2luX3BfV2luZG93Q2xhdXNlNDExNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfU2xpZGluZ1dpbmRvd0NsYXVzZV9pbl9wX1dpbmRvd0NsYXVzZTQxMTk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19UVU1CTElOR19pbl9wX1R1bWJsaW5nV2luZG93Q2xhdXNlNDE1NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwyMDQ4LDBdKSxGT0xMT1dfV0lORE9XX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTYyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTY4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyTmFtZV9pbl9wX1R1bWJsaW5nV2luZG93Q2xhdXNlNDE3MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNTI0Mjg4LDUzNjg3MDkxMl0pLEZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX1R1bWJsaW5nV2luZG93Q2xhdXNlNDE3NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCw1MzY4NzA5MTJdKSxGT0xMT1dfSU5faW5fcF9UdW1ibGluZ1dpbmRvd0NsYXVzZTQxODE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVHVtYmxpbmdXaW5kb3dDbGF1c2U0MTg1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDMyLDBdKSxGT0xMT1dfcF9XaW5kb3dTdGFydENvbmRpdGlvbl9pbl9wX1R1bWJsaW5nV2luZG93Q2xhdXNlNDE4ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMjE1NTg3MjI1Nl0pLEZPTExPV19wX1dpbmRvd0VuZENvbmRpdGlvbl9pbl9wX1R1bWJsaW5nV2luZG93Q2xhdXNlNDE5MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NMSURJTkdfaW5fcF9TbGlkaW5nV2luZG93Q2xhdXNlNDIxOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwyMDQ4LDBdKSxGT0xMT1dfV0lORE9XX2luX3BfU2xpZGluZ1dpbmRvd0NsYXVzZTQyMjU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19ET0xMQVJfaW5fcF9TbGlkaW5nV2luZG93Q2xhdXNlNDIzMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9TbGlkaW5nV2luZG93Q2xhdXNlNDIzNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNTI0Mjg4LDUzNjg3MDkxMl0pLEZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX1NsaWRpbmdXaW5kb3dDbGF1c2U0MjM5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDUzNjg3MDkxMl0pLEZPTExPV19JTl9pbl9wX1NsaWRpbmdXaW5kb3dDbGF1c2U0MjQ0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1NsaWRpbmdXaW5kb3dDbGF1c2U0MjQ4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDMyLDBdKSxGT0xMT1dfcF9XaW5kb3dTdGFydENvbmRpdGlvbl9pbl9wX1NsaWRpbmdXaW5kb3dDbGF1c2U0MjUxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwyMTU1ODcyMjU2XSksRk9MTE9XX3BfV2luZG93RW5kQ29uZGl0aW9uX2luX3BfU2xpZGluZ1dpbmRvd0NsYXVzZTQyNTM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TVEFSVF9pbl9wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uNDI4MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMjA5NzE1MiwwLDAsMTA3Mzc0MTgyNCwxMDMyLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX3BfV2luZG93VmFyc19pbl9wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uNDI4NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwxMDI0LDBdKSxGT0xMT1dfV0hFTl9pbl9wX1dpbmRvd1N0YXJ0Q29uZGl0aW9uNDI5MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9XaW5kb3dTdGFydENvbmRpdGlvbjQyOTQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19PTkxZX2luX3BfV2luZG93RW5kQ29uZGl0aW9uNDMyNDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsODM4ODYwOF0pLEZPTExPV19FTkRfaW5fcF9XaW5kb3dFbmRDb25kaXRpb240MzMyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMDk3MTUyLDAsMCwxMDczNzQxODI0LDEwMzIsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfcF9XaW5kb3dWYXJzX2luX3BfV2luZG93RW5kQ29uZGl0aW9uNDMzNjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwxMDI0LDBdKSxGT0xMT1dfV0hFTl9pbl9wX1dpbmRvd0VuZENvbmRpdGlvbjQzNDA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfV2luZG93RW5kQ29uZGl0aW9uNDM0NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RPTExBUl9pbl9wX1dpbmRvd1ZhcnM0Mzc0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfQ3VycmVudEl0ZW1faW5fcF9XaW5kb3dWYXJzNDM3ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMjA5NzE1NCwwLDAsMTA3Mzc0MTgyNCw4LDBdKSxGT0xMT1dfcF9Qb3NpdGlvbmFsVmFyX2luX3BfV2luZG93VmFyczQzODQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDEwNzM3NDE4MjQsOCwwXSksRk9MTE9XX1BSRVZJT1VTX2luX3BfV2luZG93VmFyczQzOTA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19ET0xMQVJfaW5fcF9XaW5kb3dWYXJzNDM5NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1ByZXZpb3VzSXRlbV9pbl9wX1dpbmRvd1ZhcnM0Mzk2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwxMDczNzQxODI0XSksRk9MTE9XX05FWFRfaW5fcF9XaW5kb3dWYXJzNDQwMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX1dpbmRvd1ZhcnM0NDA3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfTmV4dEl0ZW1faW5fcF9XaW5kb3dWYXJzNDQwOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9DdXJyZW50SXRlbTQ0Mzc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfUHJldmlvdXNJdGVtNDQ2MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9OZXh0SXRlbTQ0ODk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19DT1VOVF9pbl9wX0NvdW50Q2xhdXNlNDUxNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX0NvdW50Q2xhdXNlNDUyMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9Db3VudENsYXVzZTQ1Mjc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19XSEVSRV9pbl9wX1doZXJlQ2xhdXNlNDU2NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9XaGVyZUNsYXVzZTQ1Njk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19HUk9VUF9pbl9wX0dyb3VwQnlDbGF1c2U0NTk4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFszMzU1NDQzMiwwXSksRk9MTE9XX0JZX2luX3BfR3JvdXBCeUNsYXVzZTQ2MDQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19wX0dyb3VwaW5nU3BlY0xpc3RfaW5fcF9Hcm91cEJ5Q2xhdXNlNDYwODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfR3JvdXBpbmdTcGVjX2luX3BfR3JvdXBpbmdTcGVjTGlzdDQ2MzQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMTAyNF0pLEZPTExPV19DT01NQV9pbl9wX0dyb3VwaW5nU3BlY0xpc3Q0NjM3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfcF9Hcm91cGluZ1NwZWNfaW5fcF9Hcm91cGluZ1NwZWNMaXN0NDYzOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwxMDI0XSksRk9MTE9XX0RPTExBUl9pbl9wX0dyb3VwaW5nU3BlYzQ2Njk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9WYXJOYW1lX2luX3BfR3JvdXBpbmdTcGVjNDY3MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMTA3Mzc0MTgyNiwwXSksRk9MTE9XX0NPTExBVElPTl9pbl9wX0dyb3VwaW5nU3BlYzQ2ODA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0dyb3VwaW5nU3BlYzQ2ODQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19PUkRFUl9pbl9wX09yZGVyQnlDbGF1c2U0NzE2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFszMzU1NDQzMiwwXSksRk9MTE9XX0JZX2luX3BfT3JkZXJCeUNsYXVzZTQ3MjA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfU1RBQkxFX2luX3BfT3JkZXJCeUNsYXVzZTQ3Mjg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwyNjIxNDQsMF0pLEZPTExPV19PUkRFUl9pbl9wX09yZGVyQnlDbGF1c2U0NzMyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFszMzU1NDQzMiwwXSksRk9MTE9XX0JZX2luX3BfT3JkZXJCeUNsYXVzZTQ3MzY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9PcmRlclNwZWNMaXN0X2luX3BfT3JkZXJCeUNsYXVzZTQ3NDI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX09yZGVyU3BlY19pbl9wX09yZGVyU3BlY0xpc3Q0NzY4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDEwMjRdKSxGT0xMT1dfQ09NTUFfaW5fcF9PcmRlclNwZWNMaXN0NDc3MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX09yZGVyU3BlY19pbl9wX09yZGVyU3BlY0xpc3Q0NzczOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDEwMjRdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfT3JkZXJTcGVjNDgwMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMTA3NDc5MDQwMCw0MTYwXSksRk9MTE9XX3BfT3JkZXJNb2RpZmllcl9pbl9wX09yZGVyU3BlYzQ4MDQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BU0NFTkRJTkdfaW5fcF9PcmRlck1vZGlmaWVyNDgzMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMTA3Mzc0MTgyNiw0MDk2XSksRk9MTE9XX0RFU0NFTkRJTkdfaW5fcF9PcmRlck1vZGlmaWVyNDgzOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMTA3Mzc0MTgyNiw0MDk2XSksRk9MTE9XX0VNUFRZX2luX3BfT3JkZXJNb2RpZmllcjQ4NDY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMTY3NzcyMTYsMzIsMF0pLEZPTExPV19HUkVBVEVTVF9pbl9wX09yZGVyTW9kaWZpZXI0ODUxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsxMDczNzQxODI2LDBdKSxGT0xMT1dfTEVBU1RfaW5fcF9PcmRlck1vZGlmaWVyNDg1NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMTA3Mzc0MTgyNiwwXSksRk9MTE9XX0NPTExBVElPTl9pbl9wX09yZGVyTW9kaWZpZXI0ODY1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9PcmRlck1vZGlmaWVyNDg2NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1JFVFVSTl9pbl9wX1JldHVybkh5YnJpZDQ5MDA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9IeWJyaWRfaW5fcF9SZXR1cm5IeWJyaWQ0OTA0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU09NRV9pbl9wX1F1YW50aWZpZWRFeHByNDkzNDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0VWRVJZX2luX3BfUXVhbnRpZmllZEV4cHI0OTQwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfUXVhbnRpZmllZEV4cHI0OTQ3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyTmFtZV9pbl9wX1F1YW50aWZpZWRFeHByNDk1MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNTI0Mjg4LDUzNjg3MDkxMl0pLEZPTExPV19wX1R5cGVEZWNsYXJhdGlvbl9pbl9wX1F1YW50aWZpZWRFeHByNDk1NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCw1MzY4NzA5MTJdKSxGT0xMT1dfSU5faW5fcF9RdWFudGlmaWVkRXhwcjQ5NjA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfUXVhbnRpZmllZEV4cHI0OTY0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMTM0MjE3NzI4LDAsMCwwLDAsMTAyNF0pLEZPTExPV19DT01NQV9pbl9wX1F1YW50aWZpZWRFeHByNDk2ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX1F1YW50aWZpZWRFeHByNDk3MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfUXVhbnRpZmllZEV4cHI0OTc2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyODgsNTM2ODcwOTEyXSksRk9MTE9XX3BfVHlwZURlY2xhcmF0aW9uX2luX3BfUXVhbnRpZmllZEV4cHI0OTgwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDUzNjg3MDkxMl0pLEZPTExPV19JTl9pbl9wX1F1YW50aWZpZWRFeHByNDk4NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9RdWFudGlmaWVkRXhwcjQ5ODk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwxMzQyMTc3MjgsMCwwLDAsMCwxMDI0XSksRk9MTE9XX1NBVElTRklFU19pbl9wX1F1YW50aWZpZWRFeHByNDk5NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9RdWFudGlmaWVkRXhwcjUwMDA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TV0lUQ0hfaW5fcF9Td2l0Y2hIeWJyaWQ1MDMwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9Td2l0Y2hIeWJyaWQ1MDM0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wX1N3aXRjaEh5YnJpZDUwMzY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMF0pLEZPTExPV19SUEFSRU5faW5fcF9Td2l0Y2hIeWJyaWQ1MDM5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs2NzEwODg2NCwwXSksRk9MTE9XX3BfU3dpdGNoQ2FzZUh5YnJpZF9pbl9wX1N3aXRjaEh5YnJpZDUwNDE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzY3MTA4ODY0LDhdKSxGT0xMT1dfREVGQVVMVF9pbl9wX1N3aXRjaEh5YnJpZDUwNDc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCw2NzEwODg2NCwwXSksRk9MTE9XX1JFVFVSTl9pbl9wX1N3aXRjaEh5YnJpZDUwNTM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9IeWJyaWRfaW5fcF9Td2l0Y2hIeWJyaWQ1MDU3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQ0FTRV9pbl9wX1N3aXRjaENhc2VIeWJyaWQ1MDg4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU3dpdGNoQ2FzZU9wZXJhbmRfaW5fcF9Td2l0Y2hDYXNlSHlicmlkNTA5MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNjcxMDg4NjQsMCw2NzEwODg2NCwwXSksRk9MTE9XX1JFVFVSTl9pbl9wX1N3aXRjaENhc2VIeWJyaWQ1MDk4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfSHlicmlkX2luX3BfU3dpdGNoQ2FzZUh5YnJpZDUxMDI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9Td2l0Y2hDYXNlT3BlcmFuZDUxMjk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19UWVBFU1dJVENIX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxNTk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX1R5cGVzd2l0Y2hIeWJyaWQ1MTYzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wX1R5cGVzd2l0Y2hIeWJyaWQ1MTY1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxNjg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzY3MTA4ODY0LDBdKSxGT0xMT1dfcF9DYXNlSHlicmlkX2luX3BfVHlwZXN3aXRjaEh5YnJpZDUxNzA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzY3MTA4ODY0LDhdKSxGT0xMT1dfREVGQVVMVF9pbl9wX1R5cGVzd2l0Y2hIeWJyaWQ1MTc2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsNjcxMDg4NjQsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX1R5cGVzd2l0Y2hIeWJyaWQ1MTgzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVmFyTmFtZV9pbl9wX1R5cGVzd2l0Y2hIeWJyaWQ1MTg3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsNjcxMDg4NjQsMF0pLEZPTExPV19SRVRVUk5faW5fcF9UeXBlc3dpdGNoSHlicmlkNTE5NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0h5YnJpZF9pbl9wX1R5cGVzd2l0Y2hIeWJyaWQ1MTk5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQ0FTRV9pbl9wX0Nhc2VIeWJyaWQ1MjI5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19ET0xMQVJfaW5fcF9DYXNlSHlicmlkNTIzNjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9DYXNlSHlicmlkNTI0MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNTI0Mjg4LDBdKSxGT0xMT1dfQVNfaW5fcF9DYXNlSHlicmlkNTI0NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9TZXF1ZW5jZVR5cGVVbmlvbl9pbl9wX0Nhc2VIeWJyaWQ1MjUyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsNjcxMDg4NjQsMF0pLEZPTExPV19SRVRVUk5faW5fcF9DYXNlSHlicmlkNTI1NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9DYXNlSHlicmlkNTI2MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfU2VxdWVuY2VUeXBlVW5pb241Mjg3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDEwNzM3NDE4MjRdKSxGT0xMT1dfVkJBUl9pbl9wX1NlcXVlbmNlVHlwZVVuaW9uNTI5MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsODA1MzA2MzY3LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1NlcXVlbmNlVHlwZV9pbl9wX1NlcXVlbmNlVHlwZVVuaW9uNTI5MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwxMDczNzQxODI0XSksRk9MTE9XX0lGX2luX3BfSWZIeWJyaWQ1MzIzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9JZkh5YnJpZDUzMjc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BfSWZIeWJyaWQ1MzI5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfSWZIeWJyaWQ1MzMyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwzMl0pLEZPTExPV19USEVOX2luX3BfSWZIeWJyaWQ1MzM2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfSHlicmlkX2luX3BfSWZIeWJyaWQ1MzQwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDIwNDhdKSxGT0xMT1dfRUxTRV9pbl9wX0lmSHlicmlkNTM0NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0h5YnJpZF9pbl9wX0lmSHlicmlkNTM0OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfVHJ5Q2xhdXNlX2luX3BfVHJ5Q2F0Y2hFeHByNTM3NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMTMxMDcyXSksRk9MTE9XX3BfQ2F0Y2hDbGF1c2VfaW5fcF9UcnlDYXRjaEV4cHI1Mzc4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwxMzEwNzJdKSxGT0xMT1dfVFJZX2luX3BfVHJ5Q2xhdXNlNTQwNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3BfVHJ5Q2xhdXNlNTQxMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1RyeVRhcmdldEV4cHJfaW5fcF9UcnlDbGF1c2U1NDEzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcF9UcnlDbGF1c2U1NDE1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FeHByX2luX3BfVHJ5VGFyZ2V0RXhwcjU0NDE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19DQVRDSF9pbl9wX0NhdGNoQ2xhdXNlNTQ3MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDE2NzgxMzEzLDI5MzY1MDI0LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfQ2F0Y2hFcnJvckxpc3RfaW5fcF9DYXRjaENsYXVzZTU0NzQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19MQlJBQ0tFVF9pbl9wX0NhdGNoQ2xhdXNlNTQ3NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9DYXRjaENsYXVzZTU0Nzg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wX0NhdGNoQ2xhdXNlNTQ4MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfTmFtZVRlc3RfaW5fcF9DYXRjaEVycm9yTGlzdDU1MDc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNF0pLEZPTExPV19WQkFSX2luX3BfQ2F0Y2hFcnJvckxpc3Q1NTEwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMTY3ODEzMTIsMjkzNjUwMjQsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9OYW1lVGVzdF9pbl9wX0NhdGNoRXJyb3JMaXN0NTUxMjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwxMDczNzQxODI0XSksRk9MTE9XX3BfQW5kRXhwcl9pbl9wX09yRXhwcjU1NTc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwxMzEwNzIsMF0pLEZPTExPV19PUl9pbl9wX09yRXhwcjU1NjM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9BbmRFeHByX2luX3BfT3JFeHByNTU2NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDEzMTA3MiwwXSksRk9MTE9XX3BfQ29tcGFyaXNvbkV4cHJfaW5fcF9BbmRFeHByNTU5NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMjYyMTQ2LDBdKSxGT0xMT1dfQU5EX2luX3BfQW5kRXhwcjU2MDI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9Db21wYXJpc29uRXhwcl9pbl9wX0FuZEV4cHI1NjA2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyNjIxNDYsMF0pLEZPTExPV19wX0ZUQ29udGFpbnNFeHByX2luX3BfQ29tcGFyaXNvbkV4cHI1NjM2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDQxOTc1ODA4LDIxOTQsMCwwLDAsMCwyMDY0NDY0XSksRk9MTE9XX3BfVmFsdWVDb21wX2luX3BfQ29tcGFyaXNvbkV4cHI1NjQxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfR2VuZXJhbENvbXBfaW5fcF9Db21wYXJpc29uRXhwcjU2NDU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9Ob2RlQ29tcF9pbl9wX0NvbXBhcmlzb25FeHByNTY0OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0ZUQ29udGFpbnNFeHByX2luX3BfQ29tcGFyaXNvbkV4cHI1NjUyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9BZGRpdGl2ZUV4cHJfaW5fcF9SYW5nZUV4cHI1NjgxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCw2NF0pLEZPTExPV19UT19pbl9wX1JhbmdlRXhwcjU2ODc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9BZGRpdGl2ZUV4cHJfaW5fcF9SYW5nZUV4cHI1NjkxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9NdWx0aXBsaWNhdGl2ZUV4cHJfaW5fcF9BZGRpdGl2ZUV4cHI1NzIwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDI0NTc2XSksRk9MTE9XX1BMVVNfaW5fcF9BZGRpdGl2ZUV4cHI1NzI3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX01JTlVTX2luX3BfQWRkaXRpdmVFeHByNTczNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX011bHRpcGxpY2F0aXZlRXhwcl9pbl9wX0FkZGl0aXZlRXhwcjU3NDA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMjQ1NzZdKSxGT0xMT1dfcF9VbmlvbkV4cHJfaW5fcF9NdWx0aXBsaWNhdGl2ZUV4cHI1NzY5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDY3MTA4OTkyLDI1NiwwLDAsMCwwLDQwOTZdKSxGT0xMT1dfU1RBUl9pbl9wX011bHRpcGxpY2F0aXZlRXhwcjU3NzY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfRElWX2luX3BfTXVsdGlwbGljYXRpdmVFeHByNTc4NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19JRElWX2luX3BfTXVsdGlwbGljYXRpdmVFeHByNTc5MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19NT0RfaW5fcF9NdWx0aXBsaWNhdGl2ZUV4cHI1Nzk3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVW5pb25FeHByX2luX3BfTXVsdGlwbGljYXRpdmVFeHByNTgwMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiw2NzEwODk5MiwyNTYsMCwwLDAsMCw0MDk2XSksRk9MTE9XX3BfSW50ZXJzZWN0RXhjZXB0RXhwcl9pbl9wX1VuaW9uRXhwcjU4MzI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDUxMiwwLDAsMCwxMDczNzQxODI0XSksRk9MTE9XX1VOSU9OX2luX3BfVW5pb25FeHByNTgzOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19WQkFSX2luX3BfVW5pb25FeHByNTg0NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0ludGVyc2VjdEV4Y2VwdEV4cHJfaW5fcF9VbmlvbkV4cHI1ODQ4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCw1MTIsMCwwLDAsMTA3Mzc0MTgyNF0pLEZPTExPV19wX0luc3RhbmNlb2ZFeHByX2luX3BfSW50ZXJzZWN0RXhjZXB0RXhwcjU4Nzc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMTMxMDcyLDEsMF0pLEZPTExPV19JTlRFUlNFQ1RfaW5fcF9JbnRlcnNlY3RFeGNlcHRFeHByNTg4NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19FWENFUFRfaW5fcF9JbnRlcnNlY3RFeGNlcHRFeHByNTg5MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0luc3RhbmNlb2ZFeHByX2luX3BfSW50ZXJzZWN0RXhjZXB0RXhwcjU4OTU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMTMxMDcyLDEsMF0pLEZPTExPV19wX1RyZWF0RXhwcl9pbl9wX0luc3RhbmNlb2ZFeHByNTkyNDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwyMTQ3NDgzNjQ4XSksRk9MTE9XX0lOU1RBTkNFX2luX3BfSW5zdGFuY2VvZkV4cHI1OTMwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMzI3NjgsMF0pLEZPTExPV19PRl9pbl9wX0luc3RhbmNlb2ZFeHByNTkzNjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsODA1MzA2MzY3LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1NlcXVlbmNlVHlwZV9pbl9wX0luc3RhbmNlb2ZFeHByNTk0MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQ2FzdGFibGVFeHByX2luX3BfVHJlYXRFeHByNTk2ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMTI4XSksRk9MTE9XX1RSRUFUX2luX3BfVHJlYXRFeHByNTk3NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNTI0Mjg4LDBdKSxGT0xMT1dfQVNfaW5fcF9UcmVhdEV4cHI1OTgwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSw4MDUzMDYzNjcsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfVHJlYXRFeHByNTk4NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQ2FzdEV4cHJfaW5fcF9DYXN0YWJsZUV4cHI2MDIxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyNjg0MzU0NTgsMF0pLEZPTExPV19DQVNUQUJMRV9pbl9wX0Nhc3RhYmxlRXhwcjYwMjc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzUyNDI4OCwwXSksRk9MTE9XX0FTX2luX3BfQ2FzdGFibGVFeHByNjAzMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1NpbmdsZVR5cGVfaW5fcF9DYXN0YWJsZUV4cHI2MDM3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9VbmFyeUV4cHJfaW5fcF9DYXN0RXhwcjYwNzQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzEzNDIxNzczMCwwXSksRk9MTE9XX0NBU1RfaW5fcF9DYXN0RXhwcjYwODA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzUyNDI4OCwwXSksRk9MTE9XX0FTX2luX3BfQ2FzdEV4cHI2MDg2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU2luZ2xlVHlwZV9pbl9wX0Nhc3RFeHByNjA5MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1BMVVNfaW5fcF9VbmFyeUV4cHI2MTIyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX01JTlVTX2luX3BfVW5hcnlFeHByNjEzMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1ZhbHVlRXhwcl9pbl9wX1VuYXJ5RXhwcjYxMzU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1ZhbGlkYXRlRXhwcl9pbl9wX1ZhbHVlRXhwcjYyMDU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1BhdGhFeHByX2luX3BfVmFsdWVFeHByNjIxNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRXh0ZW5zaW9uRXhwcl9pbl9wX1ZhbHVlRXhwcjYyMjk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19FUVVBTF9pbl9wX0dlbmVyYWxDb21wNjI1ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX05PVEVRVUFMX2luX3BfR2VuZXJhbENvbXA2MjY0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU01BTExFUl9pbl9wX0dlbmVyYWxDb21wNjI3MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NNQUxMRVJFUV9pbl9wX0dlbmVyYWxDb21wNjI3NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0dSRUFURVJfaW5fcF9HZW5lcmFsQ29tcDYyODI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19HUkVBVEVSRVFfaW5fcF9HZW5lcmFsQ29tcDYyODg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19FUV9pbl9wX1ZhbHVlQ29tcDYzMjA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ORV9pbl9wX1ZhbHVlQ29tcDYzMjY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MVF9pbl9wX1ZhbHVlQ29tcDYzMzI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MRV9pbl9wX1ZhbHVlQ29tcDYzMzg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19HVF9pbl9wX1ZhbHVlQ29tcDYzNDQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19HRV9pbl9wX1ZhbHVlQ29tcDYzNTA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19JU19pbl9wX05vZGVDb21wNjM4MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NNQUxMRVJfU01BTExFUl9pbl9wX05vZGVDb21wNjM4NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0dSRUFURVJfR1JFQVRFUl9pbl9wX05vZGVDb21wNjM5MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1ZBTElEQVRFX2luX3BfVmFsaWRhdGVFeHByNjQxOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDgsNCw1MTIsMCwwLDFdKSxGT0xMT1dfcF9WYWxpZGF0aW9uTW9kZV9pbl9wX1ZhbGlkYXRlRXhwcjY0MjU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19UWVBFX2luX3BfVmFsaWRhdGVFeHByNjQzMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1R5cGVOYW1lX2luX3BfVmFsaWRhdGVFeHByNjQzNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3BfVmFsaWRhdGVFeHByNjQ0MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9WYWxpZGF0ZUV4cHI2NDQyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcF9WYWxpZGF0ZUV4cHI2NDQ1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTEFYX2luX3BfVmFsaWRhdGlvbk1vZGU2NDc0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU1RSSUNUX2luX3BfVmFsaWRhdGlvbk1vZGU2NDgwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTF9QcmFnbWFfaW5fcF9FeHRlbnNpb25FeHByNjUwOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxLDUyNDI4OCwwXSksRk9MTE9XX0xCUkFDS0VUX2luX3BfRXh0ZW5zaW9uRXhwcjY1MTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjMsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BfRXh0ZW5zaW9uRXhwcjY1MTQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wX0V4dGVuc2lvbkV4cHI2NTE4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU0xBU0hfaW5fcF9QYXRoRXhwcjY1NjE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE0OTQxNDUsMzI1MTA3NTIsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9SZWxhdGl2ZVBhdGhFeHByX2luX3BfUGF0aEV4cHI2NTYzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU0xBU0hfaW5fcF9QYXRoRXhwcjY1NzY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TTEFTSF9TTEFTSF9pbl9wX1BhdGhFeHByNjU4ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTQ5NDE0NSwzMjUxMDc1MiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1JlbGF0aXZlUGF0aEV4cHJfaW5fcF9QYXRoRXhwcjY1OTA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1JlbGF0aXZlUGF0aEV4cHJfaW5fcF9QYXRoRXhwcjY2MDI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1N0ZXBFeHByX2luX3BfUmVsYXRpdmVQYXRoRXhwcjY2MzA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsNjI5MTQ1Nl0pLEZPTExPV19zZXRfaW5fcF9SZWxhdGl2ZVBhdGhFeHByNjYzMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTQ5NDE0NSwzMjUxMDc1MiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1N0ZXBFeHByX2luX3BfUmVsYXRpdmVQYXRoRXhwcjY2NDE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsNjI5MTQ1Nl0pLEZPTExPV19wX1Bvc3RmaXhFeHByX2luX3BfU3RlcEV4cHI2Njk1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Qb3N0Zml4RXhwcl9pbl9wX1N0ZXBFeHByNjgwOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQXhpc1N0ZXBfaW5fcF9TdGVwRXhwcjY4Mjc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1Bvc3RmaXhFeHByX2luX3BfU3RlcEV4cHI2ODQ4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Qb3N0Zml4RXhwcl9pbl9wX1N0ZXBFeHByNjg2NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQXhpc1N0ZXBfaW5fcF9TdGVwRXhwcjY4Nzg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1JldmVyc2VTdGVwX2luX3BfQXhpc1N0ZXA2OTA1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDRdKSxGT0xMT1dfcF9Gb3J3YXJkU3RlcF9pbl9wX0F4aXNTdGVwNjkwOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw0XSksRk9MTE9XX3BfUHJlZGljYXRlTGlzdF9pbl9wX0F4aXNTdGVwNjkxMjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRm9yd2FyZEF4aXNfaW5fcF9Gb3J3YXJkU3RlcDY5Mzg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwxNjc4MTMxMiwyOTM2NTAyNCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX05vZGVUZXN0X2luX3BfRm9yd2FyZFN0ZXA2OTQwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9BYmJyZXZGb3J3YXJkU3RlcF9pbl9wX0ZvcndhcmRTdGVwNjk1MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0NISUxEX2luX3BfRm9yd2FyZEF4aXM2OTc4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDY3MTA4ODY0XSksRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfRm9yd2FyZEF4aXM2OTgwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfREVTQ0VOREFOVF9pbl9wX0ZvcndhcmRBeGlzNjk5MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw2NzEwODg2NF0pLEZPTExPV19DT0xPTl9DT0xPTl9pbl9wX0ZvcndhcmRBeGlzNjk5NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FUVFJJQlVURV9pbl9wX0ZvcndhcmRBeGlzNzAwNjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw2NzEwODg2NF0pLEZPTExPV19DT0xPTl9DT0xPTl9pbl9wX0ZvcndhcmRBeGlzNzAwODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NFTEZfaW5fcF9Gb3J3YXJkQXhpczcwMjA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNjcxMDg4NjRdKSxGT0xMT1dfQ09MT05fQ09MT05faW5fcF9Gb3J3YXJkQXhpczcwMjI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ERVNDRU5EQU5UX09SX1NFTEZfaW5fcF9Gb3J3YXJkQXhpczcwMzQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNjcxMDg4NjRdKSxGT0xMT1dfQ09MT05fQ09MT05faW5fcF9Gb3J3YXJkQXhpczcwMzY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19GT0xMT1dJTkdfU0lCTElOR19pbl9wX0ZvcndhcmRBeGlzNzA0ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw2NzEwODg2NF0pLEZPTExPV19DT0xPTl9DT0xPTl9pbl9wX0ZvcndhcmRBeGlzNzA1MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0ZPTExPV0lOR19pbl9wX0ZvcndhcmRBeGlzNzA2MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw2NzEwODg2NF0pLEZPTExPV19DT0xPTl9DT0xPTl9pbl9wX0ZvcndhcmRBeGlzNzA2NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FUVFJfU0lHTl9pbl9wX0FiYnJldkZvcndhcmRTdGVwNzA5MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDE2NzgxMzEyLDI5MzY1MDI0LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfTm9kZVRlc3RfaW5fcF9BYmJyZXZGb3J3YXJkU3RlcDcwOTM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1JldmVyc2VBeGlzX2luX3BfUmV2ZXJzZVN0ZXA3MTE5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMTY3ODEzMTIsMjkzNjUwMjQsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9Ob2RlVGVzdF9pbl9wX1JldmVyc2VTdGVwNzEyMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQWJicmV2UmV2ZXJzZVN0ZXBfaW5fcF9SZXZlcnNlU3RlcDcxMzM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19QQVJFTlRfaW5fcF9SZXZlcnNlQXhpczcxNTk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNjcxMDg4NjRdKSxGT0xMT1dfQ09MT05fQ09MT05faW5fcF9SZXZlcnNlQXhpczcxNjE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BTkNFU1RPUl9pbl9wX1JldmVyc2VBeGlzNzE3MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw2NzEwODg2NF0pLEZPTExPV19DT0xPTl9DT0xPTl9pbl9wX1JldmVyc2VBeGlzNzE3NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1BSRUNFRElOR19TSUJMSU5HX2luX3BfUmV2ZXJzZUF4aXM3MTg3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDY3MTA4ODY0XSksRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfUmV2ZXJzZUF4aXM3MTg5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUFJFQ0VESU5HX2luX3BfUmV2ZXJzZUF4aXM3MjAxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDY3MTA4ODY0XSksRk9MTE9XX0NPTE9OX0NPTE9OX2luX3BfUmV2ZXJzZUF4aXM3MjAzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQU5DRVNUT1JfT1JfU0VMRl9pbl9wX1JldmVyc2VBeGlzNzIxNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw2NzEwODg2NF0pLEZPTExPV19DT0xPTl9DT0xPTl9pbl9wX1JldmVyc2VBeGlzNzIxNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RPVF9ET1RfaW5fcF9BYmJyZXZSZXZlcnNlU3RlcDcyNDM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0tpbmRUZXN0X2luX3BfTm9kZVRlc3Q3MjY5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9OYW1lVGVzdF9pbl9wX05vZGVUZXN0NzI3MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfV2lsZGNhcmRfaW5fcF9OYW1lVGVzdDczMDU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfTmFtZVRlc3Q3MzI2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX05hbWVUZXN0NzM0NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NUQVJfaW5fcF9XaWxkY2FyZDczNzQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMzM1NTQ0MzJdKSxGT0xMT1dfQ09MT05faW5fcF9XaWxkY2FyZDczNzc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9OQ05hbWVfaW5fcF9XaWxkY2FyZDczNzk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX05DTmFtZV9pbl9wX1dpbGRjYXJkNzM5MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwzMzU1NDQzMl0pLEZPTExPV19DT0xPTl9pbl9wX1dpbGRjYXJkNzM5NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw0MDk2XSksRk9MTE9XX1NUQVJfaW5fcF9XaWxkY2FyZDczOTc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9XaWxkY2FyZDc0MDk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMzM1NTQ0MzJdKSxGT0xMT1dfQ09MT05faW5fcF9XaWxkY2FyZDc0MTE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNDA5Nl0pLEZPTExPV19TVEFSX2luX3BfV2lsZGNhcmQ3NDEzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9QcmltYXJ5RXhwcl9pbl9wX1Bvc3RmaXhFeHByNzQ1MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCw0XSksRk9MTE9XX3BfUHJlZGljYXRlX2luX3BfUG9zdGZpeEV4cHI3NDU0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDRdKSxGT0xMT1dfTFBBUkVOX2luX3BfQXJndW1lbnRMaXN0NzQ5NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDAyNjUzMTgzOSwzMTUyMDc2OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0FyZ3VtZW50X2luX3BfQXJndW1lbnRMaXN0NzQ5ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwxMDI0XSksRk9MTE9XX0NPTU1BX2luX3BfQXJndW1lbnRMaXN0NzUwMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUyMDc2OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0FyZ3VtZW50X2luX3BfQXJndW1lbnRMaXN0NzUwMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwxMDI0XSksRk9MTE9XX1JQQVJFTl9pbl9wX0FyZ3VtZW50TGlzdDc1MDk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1ByZWRpY2F0ZV9pbl9wX1ByZWRpY2F0ZUxpc3Q3NTM1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDRdKSxGT0xMT1dfTFNRVUFSRV9pbl9wX1ByZWRpY2F0ZTc1NjI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BfUHJlZGljYXRlNzU2NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw4XSksRk9MTE9XX1JTUVVBUkVfaW5fcF9QcmVkaWNhdGU3NTY3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9QYXJlbnRoZXNpemVkRXhwcl9pbl9wX1ByaW1hcnlFeHByNzYwMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfTGl0ZXJhbF9pbl9wX1ByaW1hcnlFeHByNzYxMjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfVmFyUmVmX2luX3BfUHJpbWFyeUV4cHI3NjI0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Db250ZXh0SXRlbUV4cHJfaW5fcF9QcmltYXJ5RXhwcjc2MzY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0Z1bmN0aW9uQ2FsbF9pbl9wX1ByaW1hcnlFeHByNzY0ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfT3JkZXJlZEV4cHJfaW5fcF9QcmltYXJ5RXhwcjc2NjA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1Vub3JkZXJlZEV4cHJfaW5fcF9QcmltYXJ5RXhwcjc2NzI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0NvbnN0cnVjdG9yX2luX3BfUHJpbWFyeUV4cHI3Njg0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9CbG9ja0V4cHJfaW5fcF9QcmltYXJ5RXhwcjc2OTg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX051bWVyaWNMaXRlcmFsX2luX3BfTGl0ZXJhbDc3MjQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9MaXRlcmFsNzcyODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xfSW50ZWdlckxpdGVyYWxfaW5fcF9OdW1lcmljTGl0ZXJhbDc3NTY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MX0RlY2ltYWxMaXRlcmFsX2luX3BfTnVtZXJpY0xpdGVyYWw3NzY0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTF9Eb3VibGVMaXRlcmFsX2luX3BfTnVtZXJpY0xpdGVyYWw3NzcyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfVmFyUmVmNzgxMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9WYXJSZWY3ODE0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX1Zhck5hbWU3ODQyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfUGFyZW50aGVzaXplZEV4cHI3ODY4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MDI2NTMxODM5LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wX1BhcmVudGhlc2l6ZWRFeHByNzg3MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX1BhcmVudGhlc2l6ZWRFeHByNzg3NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RPVF9pbl9wX0NvbnRleHRJdGVtRXhwcjc5MDA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19PUkRFUkVEX2luX3BfT3JkZXJlZEV4cHI3OTI4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcF9PcmRlcmVkRXhwcjc5MzI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BfT3JkZXJlZEV4cHI3OTM0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcF9PcmRlcmVkRXhwcjc5Mzc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19VTk9SREVSRURfaW5fcF9Vbm9yZGVyZWRFeHByNzk2NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3BfVW5vcmRlcmVkRXhwcjc5Njk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BfVW5vcmRlcmVkRXhwcjc5NzE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wX1Vub3JkZXJlZEV4cHI3OTc0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcGdfRlFOYW1lX2luX3BfRnVuY3Rpb25DYWxsODAwMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfcF9Bcmd1bWVudExpc3RfaW5fcF9GdW5jdGlvbkNhbGw4MDA4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfQXJndW1lbnQ4MDM0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Bcmd1bWVudFBsYWNlaG9sZGVyX2luX3BfQXJndW1lbnQ4MDM5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUVVFU1RJT05faW5fcF9Bcmd1bWVudFBsYWNlaG9sZGVyODA2NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRGlyZWN0Q29uc3RydWN0b3JfaW5fcF9Db25zdHJ1Y3RvcjgwOTE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0NvbXB1dGVkQ29uc3RydWN0b3JfaW5fcF9Db25zdHJ1Y3RvcjgxMDM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0RpckVsZW1Db25zdHJ1Y3Rvcl9pbl9wX0RpcmVjdENvbnN0cnVjdG9yODEyOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRGlyQ29tbWVudENvbnN0cnVjdG9yX2luX3BfRGlyZWN0Q29uc3RydWN0b3I4MTQxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9EaXJQSUNvbnN0cnVjdG9yX2luX3BfRGlyZWN0Q29uc3RydWN0b3I4MTUzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU01BTExFUl9pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgxODA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgxOTY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMTM0MjgzMjY0LDEzMTA3MiwwXSksRk9MTE9XX3BfRGlyQXR0cmlidXRlTGlzdF9pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgyMDE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMTM0MjgzMjY0XSksRk9MTE9XX0VNUFRZX0NMT1NFX1RBR19pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgyMTU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19HUkVBVEVSX2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODIyMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDAzMiwwLDAsMCwwLDAsMCwyNjg0NjgyMjUsMzE0NTcyOCwwXSksRk9MTE9XX3BtX0RpckVsZW1Db250ZW50X2luX3BfRGlyRWxlbUNvbnN0cnVjdG9yODIyMjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDAzMiwwLDAsMCwwLDAsMCwyNjg0NjgyMjUsMzE0NTcyOCwwXSksRk9MTE9XX0NMT1NFX1RBR19pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgyMjU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgyMjk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNjU1MzYsMTMxMDcyLDBdKSxGT0xMT1dfU19pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgyMzM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNjU1MzZdKSxGT0xMT1dfR1JFQVRFUl9pbl9wX0RpckVsZW1Db25zdHJ1Y3RvcjgyMzY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TX2luX3BfRGlyQXR0cmlidXRlTGlzdDgzMTM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjIsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDEzNTE2OCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfRGlyQXR0cmlidXRlTGlzdDgzMTg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMTYsMTMxMDcyLDBdKSxGT0xMT1dfU19pbl9wX0RpckF0dHJpYnV0ZUxpc3Q4MzIyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDE2XSksRk9MTE9XX0VRVUFMX2luX3BfRGlyQXR0cmlidXRlTGlzdDgzMjU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwxMzE4NDAsMF0pLEZPTExPV19TX2luX3BfRGlyQXR0cmlidXRlTGlzdDgzMjc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwxMzE4NDAsMF0pLEZPTExPV19wX0RpckF0dHJpYnV0ZVZhbHVlX2luX3BfRGlyQXR0cmlidXRlTGlzdDgzMzI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDAsMCwxMzEwNzIsMF0pLEZPTExPV19RVU9UX2luX3BfRGlyQXR0cmlidXRlVmFsdWU4MzY2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsxMjA0OCwwLDAsMCwwLDAsMCwxLDc2OCwwXSksRk9MTE9XX0VTQ0FQRV9RVU9UX2luX3BfRGlyQXR0cmlidXRlVmFsdWU4MzczOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsxMjA0OCwwLDAsMCwwLDAsMCwxLDc2OCwwXSksRk9MTE9XX0FQT1NfaW5fcF9EaXJBdHRyaWJ1dGVWYWx1ZTgzNzk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzEyMDQ4LDAsMCwwLDAsMCwwLDEsNzY4LDBdKSxGT0xMT1dfcF9RdW90QXR0clZhbHVlQ29udGVudF9pbl9wX0RpckF0dHJpYnV0ZVZhbHVlODM4MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMTIwNDgsMCwwLDAsMCwwLDAsMSw3NjgsMF0pLEZPTExPV19RVU9UX2luX3BfRGlyQXR0cmlidXRlVmFsdWU4Mzg5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQVBPU19pbl9wX0RpckF0dHJpYnV0ZVZhbHVlODQzNDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNzk2OCwwLDAsMCwwLDAsMCwxLDc2OCwwXSksRk9MTE9XX0VTQ0FQRV9BUE9TX2luX3BfRGlyQXR0cmlidXRlVmFsdWU4NDQxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs3OTY4LDAsMCwwLDAsMCwwLDEsNzY4LDBdKSxGT0xMT1dfUVVPVF9pbl9wX0RpckF0dHJpYnV0ZVZhbHVlODQ0NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNzk2OCwwLDAsMCwwLDAsMCwxLDc2OCwwXSksRk9MTE9XX3BfQXBvc0F0dHJWYWx1ZUNvbnRlbnRfaW5fcF9EaXJBdHRyaWJ1dGVWYWx1ZTg0NTE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzc5NjgsMCwwLDAsMCwwLDAsMSw3NjgsMF0pLEZPTExPV19BUE9TX2luX3BfRGlyQXR0cmlidXRlVmFsdWU4NDU3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9RdW90QXR0ckNvbnRlbnRDaGFyX2luX3BfUXVvdEF0dHJWYWx1ZUNvbnRlbnQ4NTE1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fQ29tbW9uQ29udGVudF9pbl9wX1F1b3RBdHRyVmFsdWVDb250ZW50ODUyMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQXBvc0F0dHJDb250ZW50Q2hhcl9pbl9wX0Fwb3NBdHRyVmFsdWVDb250ZW50ODU0OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BtX0NvbW1vbkNvbnRlbnRfaW5fcF9BcG9zQXR0clZhbHVlQ29udGVudDg1NTU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0RpcmVjdENvbnN0cnVjdG9yX2luX3BtX0RpckVsZW1Db250ZW50ODU4MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQ0RhdGFTZWN0aW9uX2luX3BtX0RpckVsZW1Db250ZW50ODU5MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BtX0NvbW1vbkNvbnRlbnRfaW5fcG1fRGlyRWxlbUNvbnRlbnQ4NjA1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FbGVtZW50Q29udGVudENoYXJfaW5fcG1fRGlyRWxlbUNvbnRlbnQ4NjE3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTF9QcmVkZWZpbmVkRW50aXR5UmVmX2luX3BtX0NvbW1vbkNvbnRlbnQ4NjQ1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTF9DaGFyUmVmX2luX3BtX0NvbW1vbkNvbnRlbnQ4NjU3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRVNDQVBFX0xCUkFDS0VUX2luX3BtX0NvbW1vbkNvbnRlbnQ4NjcxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRVNDQVBFX1JCUkFDS0VUX2luX3BtX0NvbW1vbkNvbnRlbnQ4Njg3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcGdfRW5jbG9zZWRFeHByWG1sX2luX3BtX0NvbW1vbkNvbnRlbnQ4NzAxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcGdfRW5jbG9zZWRFeHByWG1sODczMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHJfaW5fcGdfRW5jbG9zZWRFeHByWG1sODc0OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BnX0VuY2xvc2VkRXhwclhtbDg3NjM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MX0RpckNvbW1lbnRDb25zdHJ1Y3Rvcl9pbl9wX0RpckNvbW1lbnRDb25zdHJ1Y3Rvcjg3OTQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MX0RpclBJQ29uc3RydWN0b3JfaW5fcF9EaXJQSUNvbnN0cnVjdG9yODgzMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xfQ0RhdGFTZWN0aW9uX2luX3BfQ0RhdGFTZWN0aW9uODg2NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BtX0NvbXBEb2NDb25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTAxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fQ29tcEVsZW1Db25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTEzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fQ29tcEF0dHJDb25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTI1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3JfaW5fcF9Db21wdXRlZENvbnN0cnVjdG9yODkzNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQ29tcFRleHRDb25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTQ5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fQ29tcENvbW1lbnRDb25zdHJ1Y3Rvcl9pbl9wX0NvbXB1dGVkQ29uc3RydWN0b3I4OTYxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcG1fQ29tcFBJQ29uc3RydWN0b3JfaW5fcF9Db21wdXRlZENvbnN0cnVjdG9yODk3MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQ29tcEJpbmFyeUNvbnN0cnVjdG9yX2luX3BfQ29tcHV0ZWRDb25zdHJ1Y3Rvcjg5ODg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ET0NVTUVOVF9pbl9wbV9Db21wRG9jQ29uc3RydWN0b3I5MDE3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcG1fQ29tcERvY0NvbnN0cnVjdG9yOTAyMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHJfaW5fcG1fQ29tcERvY0NvbnN0cnVjdG9yOTAyMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BtX0NvbXBEb2NDb25zdHJ1Y3RvcjkwMjU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19FTEVNRU5UX2luX3BtX0NvbXBFbGVtQ29uc3RydWN0b3I5MDYxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMSw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcG1fQ29tcEVsZW1Db25zdHJ1Y3RvcjkwNjY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19MQlJBQ0tFVF9pbl9wbV9Db21wRWxlbUNvbnN0cnVjdG9yOTA3MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcG1fQ29tcEVsZW1Db25zdHJ1Y3RvcjkwNzM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wbV9Db21wRWxlbUNvbnN0cnVjdG9yOTA3NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3BtX0NvbXBFbGVtQ29uc3RydWN0b3I5MDgwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BtX0NvbnRlbnRFeHByX2luX3BtX0NvbXBFbGVtQ29uc3RydWN0b3I5MDgyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcG1fQ29tcEVsZW1Db25zdHJ1Y3RvcjkwODQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHJfaW5fcG1fQ29udGVudEV4cHI5MTExOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQVRUUklCVVRFX2luX3BtX0NvbXBBdHRyQ29uc3RydWN0b3I5MTQwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMSw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcG1fQ29tcEF0dHJDb25zdHJ1Y3RvcjkxNDU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19MQlJBQ0tFVF9pbl9wbV9Db21wQXR0ckNvbnN0cnVjdG9yOTE1MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcG1fQ29tcEF0dHJDb25zdHJ1Y3RvcjkxNTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wbV9Db21wQXR0ckNvbnN0cnVjdG9yOTE1NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3BtX0NvbXBBdHRyQ29uc3RydWN0b3I5MTU5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9pbl9wbV9Db21wQXR0ckNvbnN0cnVjdG9yOTE2MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BtX0NvbXBBdHRyQ29uc3RydWN0b3I5MTYzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTkFNRVNQQUNFX2luX3BfQ29tcE5hbWVzcGFjZUNvbnN0cnVjdG9yOTE5MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDEsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1ByZWZpeF9pbl9wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3RvcjkxOTY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19MQlJBQ0tFVF9pbl9wX0NvbXBOYW1lc3BhY2VDb25zdHJ1Y3RvcjkyMDE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9QcmVmaXhFeHByX2luX3BfQ29tcE5hbWVzcGFjZUNvbnN0cnVjdG9yOTIwMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BfQ29tcE5hbWVzcGFjZUNvbnN0cnVjdG9yOTIwNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3BfQ29tcE5hbWVzcGFjZUNvbnN0cnVjdG9yOTIwOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMywzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1VSSUV4cHJfaW5fcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I5MjExOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcF9Db21wTmFtZXNwYWNlQ29uc3RydWN0b3I5MjE0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9OQ05hbWVfaW5fcF9QcmVmaXg5MjQwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FeHByX2luX3BfUHJlZml4RXhwcjkyNjY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9VUklFeHByOTI5MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1RFWFRfaW5fcF9Db21wVGV4dENvbnN0cnVjdG9yOTMyMjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3BfQ29tcFRleHRDb25zdHJ1Y3RvcjkzMjY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BfQ29tcFRleHRDb25zdHJ1Y3RvcjkzMjg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wX0NvbXBUZXh0Q29uc3RydWN0b3I5MzMxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQklOQVJZX2luX3BfQ29tcEJpbmFyeUNvbnN0cnVjdG9yOTM1OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3BfQ29tcEJpbmFyeUNvbnN0cnVjdG9yOTM2MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9Db21wQmluYXJ5Q29uc3RydWN0b3I5MzY1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcF9Db21wQmluYXJ5Q29uc3RydWN0b3I5MzY4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQ09NTUVOVF9pbl9wbV9Db21wQ29tbWVudENvbnN0cnVjdG9yOTM5NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3BtX0NvbXBDb21tZW50Q29uc3RydWN0b3I5NDAxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcl9pbl9wbV9Db21wQ29tbWVudENvbnN0cnVjdG9yOTQwMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BtX0NvbXBDb21tZW50Q29uc3RydWN0b3I5NDA1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9pbl9wbV9Db21wUElDb25zdHJ1Y3Rvcjk0MzQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwxLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9OQ05hbWVfaW5fcG1fQ29tcFBJQ29uc3RydWN0b3I5NDM5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcG1fQ29tcFBJQ29uc3RydWN0b3I5NDQ0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wbV9Db21wUElDb25zdHJ1Y3Rvcjk0NDY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wbV9Db21wUElDb25zdHJ1Y3Rvcjk0NDk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19MQlJBQ0tFVF9pbl9wbV9Db21wUElDb25zdHJ1Y3Rvcjk0NTM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9TdGF0ZW1lbnRzQW5kT3B0aW9uYWxFeHByX2luX3BtX0NvbXBQSUNvbnN0cnVjdG9yOTQ1NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BtX0NvbXBQSUNvbnN0cnVjdG9yOTQ1NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQXRvbWljT3JVbmlvblR5cGVfaW5fcF9TaW5nbGVUeXBlOTUwMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwyMDQ4XSksRk9MTE9XX1FVRVNUSU9OX2luX3BfU2luZ2xlVHlwZTk1MDM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BU19pbl9wX1R5cGVEZWNsYXJhdGlvbjk1MzI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDgwNTMwNjM2NywwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9TZXF1ZW5jZVR5cGVfaW5fcF9UeXBlRGVjbGFyYXRpb245NTM4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRU1QVFlfU0VRVUVOQ0VfaW5fcF9TZXF1ZW5jZVR5cGU5NTkxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9TZXF1ZW5jZVR5cGU5NTk3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfU2VxdWVuY2VUeXBlOTYwMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfSXRlbVR5cGVfaW5fcF9TZXF1ZW5jZVR5cGU5NjUwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDE0MzM2XSksRk9MTE9XX3BfT2NjdXJyZW5jZUluZGljYXRvcl9pbl9wX1NlcXVlbmNlVHlwZTk2NjE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19zZXRfaW5fcF9PY2N1cnJlbmNlSW5kaWNhdG9yMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfS2luZFRlc3RfaW5fcF9JdGVtVHlwZTk3NjM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19CSU5BUllfaW5fcF9JdGVtVHlwZTk4MDM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX0l0ZW1UeXBlOTgwNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX0l0ZW1UeXBlOTgwNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0lURU1faW5fcF9JdGVtVHlwZTk4NDk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX0l0ZW1UeXBlOTg1MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX0l0ZW1UeXBlOTg1MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQXRvbWljT3JVbmlvblR5cGVfaW5fcF9JdGVtVHlwZTk4OTc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1BhcmVudGhlc2l6ZWRJdGVtVHlwZV9pbl9wX0l0ZW1UeXBlOTkwOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9BdG9taWNPclVuaW9uVHlwZTk5MzU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0RvY3VtZW50VGVzdF9pbl9wX0tpbmRUZXN0OTk4NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRWxlbWVudFRlc3RfaW5fcF9LaW5kVGVzdDk5OTc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0F0dHJpYnV0ZVRlc3RfaW5fcF9LaW5kVGVzdDEwMDA5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9TY2hlbWFFbGVtZW50VGVzdF9pbl9wX0tpbmRUZXN0MTAwMjE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1NjaGVtYUF0dHJpYnV0ZVRlc3RfaW5fcF9LaW5kVGVzdDEwMDMzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9QSVRlc3RfaW5fcF9LaW5kVGVzdDEwMDQ1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Db21tZW50VGVzdF9pbl9wX0tpbmRUZXN0MTAwNTc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1RleHRUZXN0X2luX3BfS2luZFRlc3QxMDA2OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfTmFtZXNwYWNlTm9kZVRlc3RfaW5fcF9LaW5kVGVzdDEwMDgxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9BbnlLaW5kVGVzdF9pbl9wX0tpbmRUZXN0MTAwOTM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19OT0RFX2luX3BfQW55S2luZFRlc3QxMDExOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfQW55S2luZFRlc3QxMDEyMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX0FueUtpbmRUZXN0MTAxMjM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ET0NVTUVOVF9OT0RFX2luX3BfRG9jdW1lbnRUZXN0MTAxNDk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX0RvY3VtZW50VGVzdDEwMTUxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDEwMjQsMTA3Mzc0MTgyNCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfcF9FbGVtZW50VGVzdF9pbl9wX0RvY3VtZW50VGVzdDEwMTU0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfcF9TY2hlbWFFbGVtZW50VGVzdF9pbl9wX0RvY3VtZW50VGVzdDEwMTU4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfRG9jdW1lbnRUZXN0MTAxNjI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19URVhUX2luX3BfVGV4dFRlc3QxMDE4ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfVGV4dFRlc3QxMDE5MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX1RleHRUZXN0MTAxOTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19DT01NRU5UX2luX3BfQ29tbWVudFRlc3QxMDIxODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfQ29tbWVudFRlc3QxMDIyMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX0NvbW1lbnRUZXN0MTAyMjI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19OQU1FU1BBQ0VfTk9ERV9pbl9wX05hbWVzcGFjZU5vZGVUZXN0MTAyNDg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX05hbWVzcGFjZU5vZGVUZXN0MTAyNTA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMF0pLEZPTExPV19SUEFSRU5faW5fcF9OYW1lc3BhY2VOb2RlVGVzdDEwMjUyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9pbl9wX1BJVGVzdDEwMjc4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9QSVRlc3QxMDI4MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMTM0MjE3NzI3OSwwLDI5MzY0OTkyLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfTkNOYW1lX2luX3BfUElUZXN0MTAyODM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9QSVRlc3QxMDI4NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX1BJVGVzdDEwMjkxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQVRUUklCVVRFX2luX3BfQXR0cmlidXRlVGVzdDEwMzE3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9BdHRyaWJ1dGVUZXN0MTAzMTk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDEzNDIxNzcyNzksNDA5Niw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfQXR0cmliTmFtZU9yV2lsZGNhcmRfaW5fcF9BdHRyaWJ1dGVUZXN0MTAzMjI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMTAyNF0pLEZPTExPV19DT01NQV9pbl9wX0F0dHJpYnV0ZVRlc3QxMDMyNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1R5cGVOYW1lX2luX3BfQXR0cmlidXRlVGVzdDEwMzI3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfQXR0cmlidXRlVGVzdDEwMzMzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9BdHRyaWJ1dGVOYW1lX2luX3BfQXR0cmliTmFtZU9yV2lsZGNhcmQxMDM2MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NUQVJfaW5fcF9BdHRyaWJOYW1lT3JXaWxkY2FyZDEwMzY1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU0NIRU1BX0FUVFJJQlVURV9pbl9wX1NjaGVtYUF0dHJpYnV0ZVRlc3QxMDM5MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfU2NoZW1hQXR0cmlidXRlVGVzdDEwMzkzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfQXR0cmlidXRlRGVjbGFyYXRpb25faW5fcF9TY2hlbWFBdHRyaWJ1dGVUZXN0MTAzOTU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMF0pLEZPTExPV19SUEFSRU5faW5fcF9TY2hlbWFBdHRyaWJ1dGVUZXN0MTAzOTc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0F0dHJpYnV0ZU5hbWVfaW5fcF9BdHRyaWJ1dGVEZWNsYXJhdGlvbjEwNDIzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRUxFTUVOVF9pbl9wX0VsZW1lbnRUZXN0MTA0NDk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX0VsZW1lbnRUZXN0MTA0NTE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDEzNDIxNzcyNzksNDA5Niw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRWxlbWVudE5hbWVPcldpbGRjYXJkX2luX3BfRWxlbWVudFRlc3QxMDQ1NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwxMDI0XSksRk9MTE9XX0NPTU1BX2luX3BfRWxlbWVudFRlc3QxMDQ1NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1R5cGVOYW1lX2luX3BfRWxlbWVudFRlc3QxMDQ1OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwyMDQ4XSksRk9MTE9XX1FVRVNUSU9OX2luX3BfRWxlbWVudFRlc3QxMDQ2MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX0VsZW1lbnRUZXN0MTA0Njg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfRWxlbWVudE5hbWVPcldpbGRjYXJkMTA0OTQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TVEFSX2luX3BfRWxlbWVudE5hbWVPcldpbGRjYXJkMTA0OTg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TQ0hFTUFfRUxFTUVOVF9pbl9wX1NjaGVtYUVsZW1lbnRUZXN0MTA1MTY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX1NjaGVtYUVsZW1lbnRUZXN0MTA1MTg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FbGVtZW50RGVjbGFyYXRpb25faW5fcF9TY2hlbWFFbGVtZW50VGVzdDEwNTIwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfU2NoZW1hRWxlbWVudFRlc3QxMDUyMjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRWxlbWVudE5hbWVfaW5fcF9FbGVtZW50RGVjbGFyYXRpb24xMDU0ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9BdHRyaWJ1dGVOYW1lMTA1NzQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfRWxlbWVudE5hbWUxMDYwMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9UeXBlTmFtZTEwNjI2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Bbm5vdGF0aW9uX2luX3BfRnVuY3Rpb25UZXN0MTA2NTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsNDE5NDMwNCwwLDAsMCwwLDAsMTI4XSksRk9MTE9XX3BfQW55RnVuY3Rpb25UZXN0X2luX3BfRnVuY3Rpb25UZXN0MTA2NTY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1R5cGVkRnVuY3Rpb25UZXN0X2luX3BfRnVuY3Rpb25UZXN0MTA2NjA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19GVU5DVElPTl9pbl9wX0FueUZ1bmN0aW9uVGVzdDEwNjg3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9BbnlGdW5jdGlvblRlc3QxMDY4OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw0MDk2XSksRk9MTE9XX1NUQVJfaW5fcF9BbnlGdW5jdGlvblRlc3QxMDY5MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX0FueUZ1bmN0aW9uVGVzdDEwNjkzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRlVOQ1RJT05faW5fcF9UeXBlZEZ1bmN0aW9uVGVzdDEwNzE5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9UeXBlZEZ1bmN0aW9uVGVzdDEwNzIxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwxODc5MDQ4MTkxLDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1NlcXVlbmNlVHlwZV9pbl9wX1R5cGVkRnVuY3Rpb25UZXN0MTA3MjQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEwNzM3NDE4MjQsMTAyNF0pLEZPTExPV19DT01NQV9pbl9wX1R5cGVkRnVuY3Rpb25UZXN0MTA3Mjc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDgwNTMwNjM2NywwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9TZXF1ZW5jZVR5cGVfaW5fcF9UeXBlZEZ1bmN0aW9uVGVzdDEwNzI5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDEwMjRdKSxGT0xMT1dfUlBBUkVOX2luX3BfVHlwZWRGdW5jdGlvblRlc3QxMDczNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNTI0Mjg4LDBdKSxGT0xMT1dfQVNfaW5fcF9UeXBlZEZ1bmN0aW9uVGVzdDEwNzM3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSw4MDUzMDYzNjcsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU2VxdWVuY2VUeXBlX2luX3BfVHlwZWRGdW5jdGlvblRlc3QxMDczOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX1BhcmVudGhlc2l6ZWRJdGVtVHlwZTEwNzY1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSw4MDUzMDYzNjcsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfSXRlbVR5cGVfaW5fcF9QYXJlbnRoZXNpemVkSXRlbVR5cGUxMDc2NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX1BhcmVudGhlc2l6ZWRJdGVtVHlwZTEwNzY5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUVVPVF9pbl9wX1N0cmluZ0xpdGVyYWwxMDgyMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDk2NzI4MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY2NzgzLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyMDk3MTUxLDBdKSxGT0xMT1dfcGdfUXVvdFN0cmluZ0xpdGVyYWxDb250ZW50X2luX3BfU3RyaW5nTGl0ZXJhbDEwODI0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsNTEyLDBdKSxGT0xMT1dfUVVPVF9pbl9wX1N0cmluZ0xpdGVyYWwxMDgyNjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FQT1NfaW5fcF9TdHJpbmdMaXRlcmFsMTA4NjU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5NjcyODAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2Njc4Myw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjA5NzE1MSwwXSksRk9MTE9XX3BnX0Fwb3NTdHJpbmdMaXRlcmFsQ29udGVudF9pbl9wX1N0cmluZ0xpdGVyYWwxMDg2OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI1NiwwXSksRk9MTE9XX0FQT1NfaW5fcF9TdHJpbmdMaXRlcmFsMTA4NzE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19zZXRfaW5fcGdfUXVvdFN0cmluZ0xpdGVyYWxDb250ZW50MTA5Mzc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5NjcyODIsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2Njc4Myw0Mjk0OTY2NzgzLDQyOTQ5NjcyOTUsMjA5NzE1MSwwXSksRk9MTE9XX3NldF9pbl9wZ19BcG9zU3RyaW5nTGl0ZXJhbENvbnRlbnQxMDk4ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDk2NzI4Miw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY2NzgzLDQyOTQ5NjcwMzksNDI5NDk2NzI5NSwyMDk3MTUxLDBdKSxGT0xMT1dfTF9FbGVtZW50Q29udGVudENoYXJfaW5fcF9FbGVtZW50Q29udGVudENoYXIxMTA0NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xfUXVvdEF0dHJDb250ZW50Q2hhcl9pbl9wX1F1b3RBdHRyQ29udGVudENoYXIxMTA3MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xfQXBvc0F0dHJDb250ZW50Q2hhcl9pbl9wX0Fwb3NBdHRyQ29udGVudENoYXIxMTEyMjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BnX1FOYW1lX2luX3BfUU5hbWUxMTIwODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfTkNOYW1lX2luX3BfUU5hbWUxMTIyMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BnX1FOYW1lX2luX3BnX0ZRTmFtZTExMjgxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9GTkNOYW1lX2luX3BnX0ZRTmFtZTExMjkzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9OQ05hbWVfaW5fcGdfUU5hbWUxMTMzNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwzMzU1NDQzMl0pLEZPTExPV19DT0xPTl9pbl9wZ19RTmFtZTExMzM5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfTkNOYW1lX2luX3BnX1FOYW1lMTEzNDM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19zZXRfaW5fcF9OQ05hbWUwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfc2V0X2luX3BfRk5DTmFtZTA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0luc2VydEV4cHJfaW5fcGdfVXBkYXRlRXhwcjEzMzM0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9EZWxldGVFeHByX2luX3BnX1VwZGF0ZUV4cHIxMzM0NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUmVuYW1lRXhwcl9pbl9wZ19VcGRhdGVFeHByMTMzNTg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1JlcGxhY2VFeHByX2luX3BnX1VwZGF0ZUV4cHIxMzM3MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfVHJhbnNmb3JtRXhwcl9pbl9wZ19VcGRhdGVFeHByMTMzODI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ERUNMQVJFX2luX3BtX1JldmFsaWRhdGlvbkRlY2wxMzQxMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwzMzU1NDQzMiwwXSksRk9MTE9XX1JFVkFMSURBVElPTl9pbl9wbV9SZXZhbGlkYXRpb25EZWNsMTM0MTQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCw4LDQsNjcxMDg4NjQsMF0pLEZPTExPV19TVFJJQ1RfaW5fcG1fUmV2YWxpZGF0aW9uRGVjbDEzNDE5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19MQVhfaW5fcG1fUmV2YWxpZGF0aW9uRGVjbDEzNDI1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TS0lQX2luX3BtX1JldmFsaWRhdGlvbkRlY2wxMzQzMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BtX1JldmFsaWRhdGlvbkRlY2wxMzQzNjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FTX2luX3BfSW5zZXJ0RXhwclRhcmdldENob2ljZTEzNDY2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDExNzk2NDgsMF0pLEZPTExPV19GSVJTVF9pbl9wX0luc2VydEV4cHJUYXJnZXRDaG9pY2UxMzQ3MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCw1MjQyODgsMF0pLEZPTExPV19MQVNUX2luX3BfSW5zZXJ0RXhwclRhcmdldENob2ljZTEzNDc3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDUyNDI4OCwwXSksRk9MTE9XX0lOVE9faW5fcF9JbnNlcnRFeHByVGFyZ2V0Q2hvaWNlMTM0ODQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BRlRFUl9pbl9wX0luc2VydEV4cHJUYXJnZXRDaG9pY2UxMzUwMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0JFRk9SRV9pbl9wX0luc2VydEV4cHJUYXJnZXRDaG9pY2UxMzUxNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0lOU0VSVF9pbl9wX0luc2VydEV4cHIxMzU0NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDE2Mzg0LDAsNDE5NDMwNCwwXSksRk9MTE9XX05PREVfaW5fcF9JbnNlcnRFeHByMTM1NTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfTk9ERVNfaW5fcF9JbnNlcnRFeHByMTM1NTg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9Tb3VyY2VFeHByX2luX3BfSW5zZXJ0RXhwcjEzNTYxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyODgsMCwwLDAsNTQ4ODY0LDBdKSxGT0xMT1dfcF9JbnNlcnRFeHByVGFyZ2V0Q2hvaWNlX2luX3BfSW5zZXJ0RXhwcjEzNTYzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfVGFyZ2V0RXhwcl9pbl9wX0luc2VydEV4cHIxMzU2NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFTEVURV9pbl9wX0RlbGV0ZUV4cHIxMzU5NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDE2Mzg0LDAsNDE5NDMwNCwwXSksRk9MTE9XX05PREVfaW5fcF9EZWxldGVFeHByMTM2MDA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfTk9ERVNfaW5fcF9EZWxldGVFeHByMTM2MDY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9UYXJnZXRFeHByX2luX3BfRGVsZXRlRXhwcjEzNjA5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUkVQTEFDRV9pbl9wX1JlcGxhY2VFeHByMTM2Mzk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwxNjM4NCwwLDI2ODQzNTQ1NiwwXSksRk9MTE9XX1ZBTFVFX2luX3BfUmVwbGFjZUV4cHIxMzY0NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDMyNzY4LDBdKSxGT0xMT1dfT0ZfaW5fcF9SZXBsYWNlRXhwcjEzNjQ4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMTYzODQsMF0pLEZPTExPV19OT0RFX2luX3BfUmVwbGFjZUV4cHIxMzY1NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJTaW5nbGVfaW5fcF9SZXBsYWNlRXhwcjEzNjU2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX1dJVEhfaW5fcF9SZXBsYWNlRXhwcjEzNjYxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1JlcGxhY2VFeHByMTM2NjM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19SRU5BTUVfaW5fcF9SZW5hbWVFeHByMTM2OTQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwxNjM4NCwwXSksRk9MTE9XX05PREVfaW5fcF9SZW5hbWVFeHByMTM2OTg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9UYXJnZXRFeHByX2luX3BfUmVuYW1lRXhwcjEzNzAwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyODgsMF0pLEZPTExPV19BU19pbl9wX1JlbmFtZUV4cHIxMzcwNDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX05ld05hbWVFeHByX2luX3BfUmVuYW1lRXhwcjEzNzA2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfU291cmNlRXhwcjEzNzM0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVGFyZ2V0RXhwcjEzNzYxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfTmV3TmFtZUV4cHIxMzc4ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0NPUFlfaW5fcF9UcmFuc2Zvcm1FeHByMTM4MTc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19ET0xMQVJfaW5fcF9UcmFuc2Zvcm1FeHByMTM4MjE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9WYXJOYW1lX2luX3BfVHJhbnNmb3JtRXhwcjEzODI1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDMyXSksRk9MTE9XX0JJTkRfaW5fcF9UcmFuc2Zvcm1FeHByMTM4Mjk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVHJhbnNmb3JtRXhwcjEzODMxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDIwOTcxNTIsMCwwLDEwMjRdKSxGT0xMT1dfQ09NTUFfaW5fcF9UcmFuc2Zvcm1FeHByMTM4MzU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19ET0xMQVJfaW5fcF9UcmFuc2Zvcm1FeHByMTM4Mzk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9WYXJOYW1lX2luX3BfVHJhbnNmb3JtRXhwcjEzODQzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDMyXSksRk9MTE9XX0JJTkRfaW5fcF9UcmFuc2Zvcm1FeHByMTM4NDc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVHJhbnNmb3JtRXhwcjEzODQ5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDIwOTcxNTIsMCwwLDEwMjRdKSxGT0xMT1dfTU9ESUZZX2luX3BfVHJhbnNmb3JtRXhwcjEzODU2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1RyYW5zZm9ybUV4cHIxMzg1ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDY3MTA4ODY0LDBdKSxGT0xMT1dfUkVUVVJOX2luX3BfVHJhbnNmb3JtRXhwcjEzODYzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX1RyYW5zZm9ybUV4cHIxMzg2NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RFQ0xBUkVfaW5fcG1fRlRPcHRpb25EZWNsMTM5MDM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwyNTZdKSxGT0xMT1dfRlRfT1BUSU9OX2luX3BtX0ZUT3B0aW9uRGVjbDEzOTA3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw0LDBdKSxGT0xMT1dfcF9GVE1hdGNoT3B0aW9uc19pbl9wbV9GVE9wdGlvbkRlY2wxMzkwOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BtX0ZUT3B0aW9uRGVjbDEzOTExOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU0NPUkVfaW5fcF9GVFNjb3JlVmFyMTM5NDE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19ET0xMQVJfaW5fcF9GVFNjb3JlVmFyMTM5NDc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9WYXJOYW1lX2luX3BfRlRTY29yZVZhcjEzOTUxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9TdHJpbmdDb25jYXRFeHByX2luX3BfRlRDb250YWluc0V4cHIxMzk3OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDFdKSxGT0xMT1dfQ09OVEFJTlNfaW5fcF9GVENvbnRhaW5zRXhwcjEzOTg1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwxNl0pLEZPTExPV19URVhUX2luX3BfRlRDb250YWluc0V4cHIxMzk4OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDEwMjQsNTM2ODcwOTEyLDEsMjk4ODUxODQsMF0pLEZPTExPV19wX0ZUU2VsZWN0aW9uX2luX3BfRlRDb250YWluc0V4cHIxMzk5MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMzIsMF0pLEZPTExPV19wX0ZUSWdub3JlT3B0aW9uX2luX3BfRlRDb250YWluc0V4cHIxMzk5NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRlRPcl9pbl9wX0ZUU2VsZWN0aW9uMTQwMjU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIwOTcxNTQsMCw1MjQyODgsMCwyMDQ4LDE2Nzc3MjcyXSksRk9MTE9XX3BfRlRQb3NGaWx0ZXJfaW5fcF9GVFNlbGVjdGlvbjE0MDI3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMDk3MTU0LDAsNTI0Mjg4LDAsMjA0OCwxNjc3NzI3Ml0pLEZPTExPV19XRUlHSFRfaW5fcF9GVFdlaWdodDE0MDU2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcF9GVFdlaWdodDE0MDYwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wX0ZUV2VpZ2h0MTQwNjI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wX0ZUV2VpZ2h0MTQwNjU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZUQW5kX2luX3BfRlRPcjE0MDkxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMjA0OF0pLEZPTExPV19GVE9SX2luX3BfRlRPcjE0MDk3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMTAyNCw1MzY4NzA5MTIsMSwyOTg4NTE4NCwwXSksRk9MTE9XX3BfRlRBbmRfaW5fcF9GVE9yMTQxMDE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwyMDQ4XSksRk9MTE9XX3BfRlRNaWxkTm90X2luX3BfRlRBbmQxNDEzMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDUxMl0pLEZPTExPV19GVEFORF9pbl9wX0ZUQW5kMTQxMzY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwxMDI0LDUzNjg3MDkxMiwxLDI5ODg1MTg0LDBdKSxGT0xMT1dfcF9GVE1pbGROb3RfaW5fcF9GVEFuZDE0MTQwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsNTEyXSksRk9MTE9XX3BfRlRVbmFyeU5vdF9pbl9wX0ZUTWlsZE5vdDE0MTY5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMjYyMTQ0XSksRk9MTE9XX05PVF9pbl9wX0ZUTWlsZE5vdDE0MTc1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDUzNjg3MDkxMl0pLEZPTExPV19JTl9pbl9wX0ZUTWlsZE5vdDE0MTc5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMTAyNCw1MzY4NzA5MTIsMSwyOTg4NTE4NCwwXSksRk9MTE9XX3BfRlRVbmFyeU5vdF9pbl9wX0ZUTWlsZE5vdDE0MTgzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMjYyMTQ0XSksRk9MTE9XX0ZUTk9UX2luX3BfRlRVbmFyeU5vdDE0MjE2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMTAyNCw1MzY4NzA5MTIsMSwyOTg4NTE4NCwwXSksRk9MTE9XX3BfRlRQcmltYXJ5V2l0aE9wdGlvbnNfaW5fcF9GVFVuYXJ5Tm90MTQyMjM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZUUHJpbWFyeV9pbl9wX0ZUUHJpbWFyeVdpdGhPcHRpb25zMTQyNDk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDEyLDBdKSxGT0xMT1dfcF9GVE1hdGNoT3B0aW9uc19pbl9wX0ZUUHJpbWFyeVdpdGhPcHRpb25zMTQyNTE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDgsMF0pLEZPTExPV19wX0ZUV2VpZ2h0X2luX3BfRlRQcmltYXJ5V2l0aE9wdGlvbnMxNDI1NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRlRXb3Jkc19pbl9wX0ZUUHJpbWFyeTE0Mjg1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsNTI0Mjg4XSksRk9MTE9XX3BfRlRUaW1lc19pbl9wX0ZUUHJpbWFyeTE0Mjg3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfRlRQcmltYXJ5MTQzMDI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwxMDI0LDUzNjg3MDkxMiwxLDI5ODg1MTg0LDBdKSxGT0xMT1dfcF9GVFNlbGVjdGlvbl9pbl9wX0ZUUHJpbWFyeTE0MzA0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDBdKSxGT0xMT1dfUlBBUkVOX2luX3BfRlRQcmltYXJ5MTQzMDY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZURXh0ZW5zaW9uU2VsZWN0aW9uX2luX3BfRlRQcmltYXJ5MTQzMTk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZUV29yZHNWYWx1ZV9pbl9wX0ZUV29yZHMxNDM0NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwzMjIxMjI1NDcyLDQxOTQzMDRdKSxGT0xMT1dfcF9GVEFueWFsbE9wdGlvbl9pbl9wX0ZUV29yZHMxNDM0NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0ZUV29yZHNWYWx1ZTE0Mzc0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcF9GVFdvcmRzVmFsdWUxNDM4NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9GVFdvcmRzVmFsdWUxNDM4OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BfRlRXb3Jkc1ZhbHVlMTQzOTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MX1ByYWdtYV9pbl9wX0ZURXh0ZW5zaW9uU2VsZWN0aW9uMTQ0MTk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMSw1MjQyODgsMF0pLEZPTExPV19MQlJBQ0tFVF9pbl9wX0ZURXh0ZW5zaW9uU2VsZWN0aW9uMTQ0MjI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwxMDI0LDUzNjg3MDkxMiwzLDI5ODg1MTg0LDBdKSxGT0xMT1dfcF9GVFNlbGVjdGlvbl9pbl9wX0ZURXh0ZW5zaW9uU2VsZWN0aW9uMTQ0MjQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wX0ZURXh0ZW5zaW9uU2VsZWN0aW9uMTQ0Mjc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BTllfaW5fcF9GVEFueWFsbE9wdGlvbjE0NDU4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCw2NCwwXSksRk9MTE9XX1dPUkRfaW5fcF9GVEFueWFsbE9wdGlvbjE0NDYyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQUxMX2luX3BfRlRBbnlhbGxPcHRpb24xNDQ3MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMTI4LDBdKSxGT0xMT1dfV09SRFNfaW5fcF9GVEFueWFsbE9wdGlvbjE0NDczOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfUEhSQVNFX2luX3BfRlRBbnlhbGxPcHRpb24xNDQ4MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX09DQ1VSU19pbl9wX0ZUVGltZXMxNDUxMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMjA5NzE1MiwwLDAsMCwwLDE5Ml0pLEZPTExPV19wX0ZUUmFuZ2VfaW5fcF9GVFRpbWVzMTQ1MTU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEsMF0pLEZPTExPV19USU1FU19pbl9wX0ZUVGltZXMxNDUxOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0VYQUNUTFlfaW5fcF9GVFJhbmdlMTQ1NTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9BZGRpdGl2ZUV4cHJfaW5fcF9GVFJhbmdlMTQ1NTQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BVF9pbl9wX0ZUUmFuZ2UxNDU3MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDMyLDBdKSxGT0xMT1dfTEVBU1RfaW5fcF9GVFJhbmdlMTQ1NzY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9BZGRpdGl2ZUV4cHJfaW5fcF9GVFJhbmdlMTQ1Nzg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BVF9pbl9wX0ZUUmFuZ2UxNDU5NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDY1NTM2XSksRk9MTE9XX01PU1RfaW5fcF9GVFJhbmdlMTQ2MDA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9BZGRpdGl2ZUV4cHJfaW5fcF9GVFJhbmdlMTQ2MDI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19GUk9NX2luX3BfRlRSYW5nZTE0NjIwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfQWRkaXRpdmVFeHByX2luX3BfRlRSYW5nZTE0NjIyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCw2NF0pLEZPTExPV19UT19pbl9wX0ZUUmFuZ2UxNDYyNjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0FkZGl0aXZlRXhwcl9pbl9wX0ZUUmFuZ2UxNDYyODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRlRPcmRlcl9pbl9wX0ZUUG9zRmlsdGVyMTQ2NTk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZUV2luZG93X2luX3BfRlRQb3NGaWx0ZXIxNDY2MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRlREaXN0YW5jZV9pbl9wX0ZUUG9zRmlsdGVyMTQ2Njc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZUU2NvcGVfaW5fcF9GVFBvc0ZpbHRlcjE0NjcxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9GVENvbnRlbnRfaW5fcF9GVFBvc0ZpbHRlcjE0Njc1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfT1JERVJFRF9pbl9wX0ZUT3JkZXIxNDcwMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1dJTkRPV19pbl9wX0ZUV2luZG93MTQ3MzM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9BZGRpdGl2ZUV4cHJfaW5fcF9GVFdpbmRvdzE0NzM3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMjcwNTMyNjA4LDEyOCwwXSksRk9MTE9XX3BfRlRVbml0X2luX3BfRlRXaW5kb3cxNDczOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RJU1RBTkNFX2luX3BfRlREaXN0YW5jZTE0NzY3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMDk3MTUyLDAsMCwwLDAsMTkyXSksRk9MTE9XX3BfRlRSYW5nZV9pbl9wX0ZURGlzdGFuY2UxNDc3MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDI3MDUzMjYwOCwxMjgsMF0pLEZPTExPV19wX0ZUVW5pdF9pbl9wX0ZURGlzdGFuY2UxNDc3MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1dPUkRTX2luX3BfRlRVbml0MTQ4MDM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TRU5URU5DRVNfaW5fcF9GVFVuaXQxNDgwOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1BBUkFHUkFQSFNfaW5fcF9GVFVuaXQxNDgxNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NBTUVfaW5fcF9GVFNjb3BlMTQ4NDg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwxMzUyNjYzMDRdKSxGT0xMT1dfRElGRkVSRU5UX2luX3BfRlRTY29wZTE0ODU0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMTM1MjY2MzA0XSksRk9MTE9XX3BfRlRCaWdVbml0X2luX3BfRlRTY29wZTE0ODU5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU0VOVEVOQ0VfaW5fcF9GVEJpZ1VuaXQxNDg4OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1BBUkFHUkFQSF9pbl9wX0ZUQmlnVW5pdDE0ODk1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQVRfaW5fcF9GVENvbnRlbnQxNDkzMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwzMiwwXSksRk9MTE9XX1NUQVJUX2luX3BfRlRDb250ZW50MTQ5MzQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BVF9pbl9wX0ZUQ29udGVudDE0OTQyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCw4Mzg4NjA4XSksRk9MTE9XX0VORF9pbl9wX0ZUQ29udGVudDE0OTQ2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRU5USVJFX2luX3BfRlRDb250ZW50MTQ5NTQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwyXSksRk9MTE9XX0NPTlRFTlRfaW5fcF9GVENvbnRlbnQxNDk1ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1VTSU5HX2luX3BfRlRNYXRjaE9wdGlvbnMxNDk5MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNjcxMDg4NjQsMCw2NTUzNiwwLDAsMzc1ODI2ODQyMCwxOCwwXSksRk9MTE9XX3BfRlRNYXRjaE9wdGlvbl9pbl9wX0ZUTWF0Y2hPcHRpb25zMTQ5OTY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDAsMCwwLDQsMF0pLEZPTExPV19wX0ZUTGFuZ3VhZ2VPcHRpb25faW5fcF9GVE1hdGNoT3B0aW9uMTUwMjQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZUV2lsZENhcmRPcHRpb25faW5fcF9GVE1hdGNoT3B0aW9uMTUwMzY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZUVGhlc2F1cnVzT3B0aW9uX2luX3BfRlRNYXRjaE9wdGlvbjE1MDQ4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9GVFN0ZW1PcHRpb25faW5fcF9GVE1hdGNoT3B0aW9uMTUwNjA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0ZUQ2FzZU9wdGlvbl9pbl9wX0ZUTWF0Y2hPcHRpb24xNTA3MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRlREaWFjcml0aWNzT3B0aW9uX2luX3BfRlRNYXRjaE9wdGlvbjE1MDg0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9GVFN0b3BXb3JkT3B0aW9uX2luX3BfRlRNYXRjaE9wdGlvbjE1MDk2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9GVEV4dGVuc2lvbk9wdGlvbl9pbl9wX0ZUTWF0Y2hPcHRpb24xNTEwODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0NBU0VfaW5fcF9GVENhc2VPcHRpb24xNTEzOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDQwOTZdKSxGT0xMT1dfSU5TRU5TSVRJVkVfaW5fcF9GVENhc2VPcHRpb24xNTE0MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0NBU0VfaW5fcF9GVENhc2VPcHRpb24xNTE2MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDY3MTA4ODY0XSksRk9MTE9XX1NFTlNJVElWRV9pbl9wX0ZUQ2FzZU9wdGlvbjE1MTY1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTE9XRVJDQVNFX2luX3BfRlRDYXNlT3B0aW9uMTUxODI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19VUFBFUkNBU0VfaW5fcF9GVENhc2VPcHRpb24xNTE5ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RJQUNSSVRJQ1NfaW5fcF9GVERpYWNyaXRpY3NPcHRpb24xNTIzMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDQwOTZdKSxGT0xMT1dfSU5TRU5TSVRJVkVfaW5fcF9GVERpYWNyaXRpY3NPcHRpb24xNTIzNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RJQUNSSVRJQ1NfaW5fcF9GVERpYWNyaXRpY3NPcHRpb24xNTI1NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDY3MTA4ODY0XSksRk9MTE9XX1NFTlNJVElWRV9pbl9wX0ZURGlhY3JpdGljc09wdGlvbjE1MjU5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfU1RFTU1JTkdfaW5fcF9GVFN0ZW1PcHRpb24xNTI5NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX05PX2luX3BfRlRTdGVtT3B0aW9uMTUzMDE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU1RFTU1JTkdfaW5fcF9GVFN0ZW1PcHRpb24xNTMwNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1RIRVNBVVJVU19pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTUzNDE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIwOTcxNTIsOF0pLEZPTExPV19wX0ZUVGhlc2F1cnVzSURfaW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1MzQ0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfREVGQVVMVF9pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTUzNTA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19USEVTQVVSVVNfaW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1MzY5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1MzcxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMDk3MTUyLDhdKSxGT0xMT1dfcF9GVFRoZXNhdXJ1c0lEX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTM3NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwxMDI0XSksRk9MTE9XX0RFRkFVTFRfaW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1MzgwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDEwMjRdKSxGT0xMT1dfQ09NTUFfaW5fcF9GVFRoZXNhdXJ1c09wdGlvbjE1Mzg0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMDk3MTUyLDBdKSxGT0xMT1dfcF9GVFRoZXNhdXJ1c0lEX2luX3BfRlRUaGVzYXVydXNPcHRpb24xNTM4NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwxMDI0XSksRk9MTE9XX1JQQVJFTl9pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTUzOTA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19OT19pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTU0MDg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwyMTQ3NDgzNjQ4XSksRk9MTE9XX1RIRVNBVVJVU19pbl9wX0ZUVGhlc2F1cnVzT3B0aW9uMTU0MTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BVF9pbl9wX0ZUVGhlc2F1cnVzSUQxNTQ0NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfRlRUaGVzYXVydXNJRDE1NDQ3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMDk3MTU0LDAsMCwwLDAsODM4ODgwMF0pLEZPTExPV19SRUxBVElPTlNISVBfaW5fcF9GVFRoZXNhdXJ1c0lEMTU0NTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0ZUVGhlc2F1cnVzSUQxNTQ1NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMjA5NzE1NCwwLDAsMCwwLDE5Ml0pLEZPTExPV19wX0ZUTGl0ZXJhbFJhbmdlX2luX3BfRlRUaGVzYXVydXNJRDE1NDU5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMTYzODRdKSxGT0xMT1dfTEVWRUxTX2luX3BfRlRUaGVzYXVydXNJRDE1NDYzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRVhBQ1RMWV9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU0OTg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCw0MTk0MzA0LDBdKSxGT0xMT1dfTF9JbnRlZ2VyTGl0ZXJhbF9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1MDA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BVF9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1MTg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwzMiwwXSksRk9MTE9XX0xFQVNUX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTUyMjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDQxOTQzMDQsMF0pLEZPTExPV19MX0ludGVnZXJMaXRlcmFsX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTUyNDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FUX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTU0MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDY1NTM2XSksRk9MTE9XX01PU1RfaW5fcF9GVExpdGVyYWxSYW5nZTE1NTQ2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsNDE5NDMwNCwwXSksRk9MTE9XX0xfSW50ZWdlckxpdGVyYWxfaW5fcF9GVExpdGVyYWxSYW5nZTE1NTQ4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRlJPTV9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1NjY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCw0MTk0MzA0LDBdKSxGT0xMT1dfTF9JbnRlZ2VyTGl0ZXJhbF9pbl9wX0ZUTGl0ZXJhbFJhbmdlMTU1Njg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDY0XSksRk9MTE9XX1RPX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTU3MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDQxOTQzMDQsMF0pLEZPTExPV19MX0ludGVnZXJMaXRlcmFsX2luX3BfRlRMaXRlcmFsUmFuZ2UxNTU3MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NUT1BfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2MDg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEyOCwwXSksRk9MTE9XX1dPUkRTX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjEyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMDk3MTUyLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19wX0ZUU3RvcFdvcmRzX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjE0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDEzMTA3MiwwLDUxMl0pLEZPTExPV19wX0ZUU3RvcFdvcmRzSW5jbEV4Y2xfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2MTY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMTMxMDcyLDAsNTEyXSksRk9MTE9XX1NUT1BfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2MzU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDEyOCwwXSksRk9MTE9XX1dPUkRTX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjM5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDhdKSxGT0xMT1dfREVGQVVMVF9pbl9wX0ZUU3RvcFdvcmRPcHRpb24xNTY0MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwxMzEwNzIsMCw1MTJdKSxGT0xMT1dfcF9GVFN0b3BXb3Jkc0luY2xFeGNsX2luX3BfRlRTdG9wV29yZE9wdGlvbjE1NjQ1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDEzMTA3MiwwLDUxMl0pLEZPTExPV19OT19pbl9wX0ZUU3RvcFdvcmRPcHRpb24xNTY2NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDEwNzM3NDE4MjRdKSxGT0xMT1dfU1RPUF9pbl9wX0ZUU3RvcFdvcmRPcHRpb24xNTY2ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTI4LDBdKSxGT0xMT1dfV09SRFNfaW5fcF9GVFN0b3BXb3JkT3B0aW9uMTU2NzI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BVF9pbl9wX0ZUU3RvcFdvcmRzMTU3MDY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMCwyOTM2MDg5NiwwXSksRk9MTE9XX3BfU3RyaW5nTGl0ZXJhbF9pbl9wX0ZUU3RvcFdvcmRzMTU3MTA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9GVFN0b3BXb3JkczE1NzI0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9GVFN0b3BXb3JkczE1NzI2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDEwMjRdKSxGT0xMT1dfQ09NTUFfaW5fcF9GVFN0b3BXb3JkczE1NzI5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDAsMjkzNjA4OTYsMF0pLEZPTExPV19wX1N0cmluZ0xpdGVyYWxfaW5fcF9GVFN0b3BXb3JkczE1NzMxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwxMDczNzQxODI0LDEwMjRdKSxGT0xMT1dfUlBBUkVOX2luX3BfRlRTdG9wV29yZHMxNTczNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1VOSU9OX2luX3BfRlRTdG9wV29yZHNJbmNsRXhjbDE1NzY3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMDk3MTUyLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19FWENFUFRfaW5fcF9GVFN0b3BXb3Jkc0luY2xFeGNsMTU3NzM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIwOTcxNTIsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX3BfRlRTdG9wV29yZHNfaW5fcF9GVFN0b3BXb3Jkc0luY2xFeGNsMTU3NzY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MQU5HVUFHRV9pbl9wX0ZUTGFuZ3VhZ2VPcHRpb24xNTgwODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfRlRMYW5ndWFnZU9wdGlvbjE1ODEyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfV0lMRENBUkRTX2luX3BfRlRXaWxkQ2FyZE9wdGlvbjE1ODQyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTk9faW5fcF9GVFdpbGRDYXJkT3B0aW9uMTU4NDk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDE2LDBdKSxGT0xMT1dfV0lMRENBUkRTX2luX3BfRlRXaWxkQ2FyZE9wdGlvbjE1ODUzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfT1BUSU9OX2luX3BfRlRFeHRlbnNpb25PcHRpb24xNTg4NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfRlRFeHRlbnNpb25PcHRpb24xNTg5MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfRlRFeHRlbnNpb25PcHRpb24xNTg5MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1dJVEhPVVRfaW5fcF9GVElnbm9yZU9wdGlvbjE1OTIwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMl0pLEZPTExPV19DT05URU5UX2luX3BfRlRJZ25vcmVPcHRpb24xNTkyNDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1VuaW9uRXhwcl9pbl9wX0ZUSWdub3JlT3B0aW9uMTU5Mjg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1N0YXRlbWVudHNBbmRPcHRpb25hbEV4cHJfaW5fcF9Qcm9ncmFtMTU5NjA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0h5YnJpZF9pbl9wX1N0YXRlbWVudHMxNTk4NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2Miw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1N0YXRlbWVudHNfaW5fcF9TdGF0ZW1lbnRzQW5kRXhwcjE2MDE1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9TdGF0ZW1lbnRzX2luX3BfU3RhdGVtZW50c0FuZE9wdGlvbmFsRXhwcjE2MDQyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9IeWJyaWRFeHByU2luZ2xlX2luX3BfSHlicmlkMTYwNjk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1N0YXRlbWVudF9pbl9wX0h5YnJpZDE2MDgyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Bc3NpZ25TdGF0ZW1lbnRfaW5fcF9TdGF0ZW1lbnQxNjExMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQnJlYWtTdGF0ZW1lbnRfaW5fcF9TdGF0ZW1lbnQxNjEyNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfQ29udGludWVTdGF0ZW1lbnRfaW5fcF9TdGF0ZW1lbnQxNjEzNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRXhpdFN0YXRlbWVudF9pbl9wX1N0YXRlbWVudDE2MTQ5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9WYXJEZWNsU3RhdGVtZW50X2luX3BfU3RhdGVtZW50MTYxNjE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1doaWxlU3RhdGVtZW50X2luX3BfU3RhdGVtZW50MTYxNzM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9IeWJyaWRFeHByU2luZ2xlMTYyMDA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wX0h5YnJpZEV4cHJTaW5nbGUxNjIxNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfRXhwclNpbXBsZV9pbl9wX0FwcGx5U3RhdGVtZW50MTYyNjU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wX0FwcGx5U3RhdGVtZW50MTYyNjc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19ET0xMQVJfaW5fcF9Bc3NpZ25TdGF0ZW1lbnQxNjI5NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9Bc3NpZ25TdGF0ZW1lbnQxNjI5OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwzMl0pLEZPTExPV19CSU5EX2luX3BfQXNzaWduU3RhdGVtZW50MTYzMDM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfQXNzaWduU3RhdGVtZW50MTYzMDU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wX0Fzc2lnblN0YXRlbWVudDE2MzA4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTEJSQUNLRVRfaW5fcF9CbG9ja1N0YXRlbWVudDE2MzM0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODUxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfU3RhdGVtZW50c19pbl9wX0Jsb2NrU3RhdGVtZW50MTYzMzY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMl0pLEZPTExPV19SQlJBQ0tFVF9pbl9wX0Jsb2NrU3RhdGVtZW50MTYzMzk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19MQlJBQ0tFVF9pbl9wX0Jsb2NrSHlicmlkMTYzNjU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NTEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9TdGF0ZW1lbnRzX2luX3BfQmxvY2tIeWJyaWQxNjM2NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwyXSksRk9MTE9XX1JCUkFDS0VUX2luX3BfQmxvY2tIeWJyaWQxNjM3MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0JSRUFLX2luX3BfQnJlYWtTdGF0ZW1lbnQxNjM5ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjA0OCwwXSksRk9MTE9XX0xPT1BfaW5fcF9CcmVha1N0YXRlbWVudDE2NDA0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MDkxMl0pLEZPTExPV19TRU1JQ09MT05faW5fcF9CcmVha1N0YXRlbWVudDE2NDA4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQ09OVElOVUVfaW5fcF9Db250aW51ZVN0YXRlbWVudDE2NDM2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMDQ4LDBdKSxGT0xMT1dfTE9PUF9pbl9wX0NvbnRpbnVlU3RhdGVtZW50MTY0NDI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcwOTEyXSksRk9MTE9XX1NFTUlDT0xPTl9pbl9wX0NvbnRpbnVlU3RhdGVtZW50MTY0NDY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19FWElUX2luX3BfRXhpdFN0YXRlbWVudDE2NDc0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw0MDk2LDBdKSxGT0xMT1dfUkVUVVJOSU5HX2luX3BfRXhpdFN0YXRlbWVudDE2NDgwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0V4aXRTdGF0ZW1lbnQxNjQ4NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCw1MzY4NzA5MTJdKSxGT0xMT1dfU0VNSUNPTE9OX2luX3BfRXhpdFN0YXRlbWVudDE2NDg3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Jbml0aWFsQ2xhdXNlX2luX3BfRkxXT1JTdGF0ZW1lbnQxNjUxMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwyMDk3MTUyLDY3MzcxMDcyLDE3MzE3ODkwXSksRk9MTE9XX3BfSW50ZXJtZWRpYXRlQ2xhdXNlX2luX3BfRkxXT1JTdGF0ZW1lbnQxNjUxNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwyMDk3MTUyLDY3MzcxMDcyLDE3MzE3ODkwXSksRk9MTE9XX3BfUmV0dXJuU3RhdGVtZW50X2luX3BfRkxXT1JTdGF0ZW1lbnQxNjUxODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1JFVFVSTl9pbl9wX1JldHVyblN0YXRlbWVudDE2NTUwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfSHlicmlkX2luX3BfUmV0dXJuU3RhdGVtZW50MTY1NTQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19JRl9pbl9wX0lmU3RhdGVtZW50MTY1ODM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX0lmU3RhdGVtZW50MTY1ODc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BfSWZTdGF0ZW1lbnQxNjU4OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX0lmU3RhdGVtZW50MTY1OTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDMyXSksRk9MTE9XX1RIRU5faW5fcF9JZlN0YXRlbWVudDE2NTk2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfSHlicmlkX2luX3BfSWZTdGF0ZW1lbnQxNjYwMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwyMDQ4XSksRk9MTE9XX0VMU0VfaW5fcF9JZlN0YXRlbWVudDE2NjA1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfSHlicmlkX2luX3BfSWZTdGF0ZW1lbnQxNjYwOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1NXSVRDSF9pbl9wX1N3aXRjaFN0YXRlbWVudDE2NjM4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw1MzY4NzA5MTIsMF0pLEZPTExPV19MUEFSRU5faW5fcF9Td2l0Y2hTdGF0ZW1lbnQxNjY0MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODcyMSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0V4cHJfaW5fcF9Td2l0Y2hTdGF0ZW1lbnQxNjY0NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX1N3aXRjaFN0YXRlbWVudDE2NjQ3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs2NzEwODg2NCwwXSksRk9MTE9XX3BfU3dpdGNoQ2FzZVN0YXRlbWVudF9pbl9wX1N3aXRjaFN0YXRlbWVudDE2NjQ5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs2NzEwODg2NCw4XSksRk9MTE9XX0RFRkFVTFRfaW5fcF9Td2l0Y2hTdGF0ZW1lbnQxNjY1NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDY3MTA4ODY0LDBdKSxGT0xMT1dfUkVUVVJOX2luX3BfU3dpdGNoU3RhdGVtZW50MTY2NjA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9IeWJyaWRfaW5fcF9Td2l0Y2hTdGF0ZW1lbnQxNjY2NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0NBU0VfaW5fcF9Td2l0Y2hDYXNlU3RhdGVtZW50MTY2OTQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9Td2l0Y2hDYXNlT3BlcmFuZF9pbl9wX1N3aXRjaENhc2VTdGF0ZW1lbnQxNjY5ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNjcxMDg4NjQsMCw2NzEwODg2NCwwXSksRk9MTE9XX1JFVFVSTl9pbl9wX1N3aXRjaENhc2VTdGF0ZW1lbnQxNjcwNDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTUxODg0OSwzMzAzNTA0MCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0h5YnJpZF9pbl9wX1N3aXRjaENhc2VTdGF0ZW1lbnQxNjcwODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX1RSWV9pbl9wX1RyeUNhdGNoU3RhdGVtZW50MTY3Mzc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19wX0Jsb2NrU3RhdGVtZW50X2luX3BfVHJ5Q2F0Y2hTdGF0ZW1lbnQxNjc0MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMTMxMDcyXSksRk9MTE9XX0NBVENIX2luX3BfVHJ5Q2F0Y2hTdGF0ZW1lbnQxNjc0NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDE2NzgxMzEzLDI5MzY1MDI0LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfQ2F0Y2hFcnJvckxpc3RfaW5fcF9UcnlDYXRjaFN0YXRlbWVudDE2NzUwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfcF9CbG9ja1N0YXRlbWVudF9pbl9wX1RyeUNhdGNoU3RhdGVtZW50MTY3NTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMCwwLDEzMTA3Ml0pLEZPTExPV19UUllfaW5fcF9UcnlDYXRjaEh5YnJpZDE2Nzg0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDFdKSxGT0xMT1dfcF9CbG9ja0h5YnJpZF9pbl9wX1RyeUNhdGNoSHlicmlkMTY3ODg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDEzMTA3Ml0pLEZPTExPV19DQVRDSF9pbl9wX1RyeUNhdGNoSHlicmlkMTY3OTQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwxNjc4MTMxMywyOTM2NTAyNCwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0NhdGNoRXJyb3JMaXN0X2luX3BfVHJ5Q2F0Y2hIeWJyaWQxNjc5ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX3BfQmxvY2tIeWJyaWRfaW5fcF9UcnlDYXRjaEh5YnJpZDE2ODAwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwxMzEwNzJdKSxGT0xMT1dfVFlQRVNXSVRDSF9pbl9wX1R5cGVzd2l0Y2hTdGF0ZW1lbnQxNjgzMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3BfVHlwZXN3aXRjaFN0YXRlbWVudDE2ODM3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwcl9pbl9wX1R5cGVzd2l0Y2hTdGF0ZW1lbnQxNjgzOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX1R5cGVzd2l0Y2hTdGF0ZW1lbnQxNjg0MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNjcxMDg4NjQsMF0pLEZPTExPV19wX0Nhc2VTdGF0ZW1lbnRfaW5fcF9UeXBlc3dpdGNoU3RhdGVtZW50MTY4NDQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzY3MTA4ODY0LDhdKSxGT0xMT1dfREVGQVVMVF9pbl9wX1R5cGVzd2l0Y2hTdGF0ZW1lbnQxNjg0OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDY3MTA4ODY0LDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19ET0xMQVJfaW5fcF9UeXBlc3dpdGNoU3RhdGVtZW50MTY4NTY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9WYXJOYW1lX2luX3BfVHlwZXN3aXRjaFN0YXRlbWVudDE2ODYwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsNjcxMDg4NjQsMF0pLEZPTExPV19SRVRVUk5faW5fcF9UeXBlc3dpdGNoU3RhdGVtZW50MTY4Njg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9IeWJyaWRfaW5fcF9UeXBlc3dpdGNoU3RhdGVtZW50MTY4NzI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19DQVNFX2luX3BfQ2FzZVN0YXRlbWVudDE2OTAxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19ET0xMQVJfaW5fcF9DYXNlU3RhdGVtZW50MTY5MDg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9WYXJOYW1lX2luX3BfQ2FzZVN0YXRlbWVudDE2OTEyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyODgsMF0pLEZPTExPV19BU19pbl9wX0Nhc2VTdGF0ZW1lbnQxNjkxNjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsODA1MzA2MzY3LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1NlcXVlbmNlVHlwZV9pbl9wX0Nhc2VTdGF0ZW1lbnQxNjkyMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDY3MTA4ODY0LDBdKSxGT0xMT1dfUkVUVVJOX2luX3BfQ2FzZVN0YXRlbWVudDE2OTI0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4ODQ5LDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfSHlicmlkX2luX3BfQ2FzZVN0YXRlbWVudDE2OTI4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9Bbm5vdGF0aW9uX2luX3BfVmFyRGVjbFN0YXRlbWVudDE2OTU1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCw0MDk2LDAsMCwwLDEyOF0pLEZPTExPV19WQVJJQUJMRV9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNjk2MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNjk2NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9WYXJEZWNsU3RhdGVtZW50MTY5NzA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzUyNDI4OCwwLDAsMCwwLDAsMCw1MzY4NzE5NjhdKSxGT0xMT1dfcF9UeXBlRGVjbGFyYXRpb25faW5fcF9WYXJEZWNsU3RhdGVtZW50MTY5NzQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcxOTY4XSksRk9MTE9XX0JJTkRfaW5fcF9WYXJEZWNsU3RhdGVtZW50MTY5Nzg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVmFyRGVjbFN0YXRlbWVudDE2OTgwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MTkzNl0pLEZPTExPV19DT01NQV9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNjk5NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX1ZhckRlY2xTdGF0ZW1lbnQxNzAwMDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1Zhck5hbWVfaW5fcF9WYXJEZWNsU3RhdGVtZW50MTcwMDQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzUyNDI4OCwwLDAsMCwwLDAsMCw1MzY4NzE5NjhdKSxGT0xMT1dfcF9UeXBlRGVjbGFyYXRpb25faW5fcF9WYXJEZWNsU3RhdGVtZW50MTcwMDg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsNTM2ODcxOTY4XSksRk9MTE9XX0JJTkRfaW5fcF9WYXJEZWNsU3RhdGVtZW50MTcwMTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfVmFyRGVjbFN0YXRlbWVudDE3MDE0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDUzNjg3MTkzNl0pLEZPTExPV19TRU1JQ09MT05faW5fcF9WYXJEZWNsU3RhdGVtZW50MTcwMzE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19XSElMRV9pbl9wX1doaWxlU3RhdGVtZW50MTcwNTk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9wX1doaWxlU3RhdGVtZW50MTcwNjM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByX2luX3BfV2hpbGVTdGF0ZW1lbnQxNzA2NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMTA3Mzc0MTgyNCwwXSksRk9MTE9XX1JQQVJFTl9pbl9wX1doaWxlU3RhdGVtZW50MTcwNjg6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9IeWJyaWRfaW5fcF9XaGlsZVN0YXRlbWVudDE3MDcwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9RdWFudGlmaWVkRXhwcl9pbl9wX0V4cHJTaW1wbGUxNzA5NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfT3JFeHByX2luX3BfRXhwclNpbXBsZTE3MTA5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcGdfVXBkYXRlRXhwcl9pbl9wX0V4cHJTaW1wbGUxNzEyNDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0xCUkFDS0VUX2luX3BfQmxvY2tFeHByMTcxNTA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg4NDksMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9TdGF0ZW1lbnRzQW5kRXhwcl9pbl9wX0Jsb2NrRXhwcjE3MTUyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwwLDJdKSxGT0xMT1dfUkJSQUNLRVRfaW5fcF9CbG9ja0V4cHIxNzE1NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0NPTExFQ1RJT05faW5fcF9Db2xsZWN0aW9uRGVjbDE3MTg1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9Db2xsZWN0aW9uRGVjbDE3MTg5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs1MjQyOTAsMF0pLEZPTExPV19wX0NvbGxlY3Rpb25UeXBlRGVjbF9pbl9wX0NvbGxlY3Rpb25EZWNsMTcxOTE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19BU19pbl9wX0NvbGxlY3Rpb25UeXBlRGVjbDE3MjIwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyMTUxNjc3OTUyLDE1MzYsMTY0NDE4MzU1MiwyNjg0MzU0NzJdKSxGT0xMT1dfcF9LaW5kVGVzdF9pbl9wX0NvbGxlY3Rpb25UeXBlRGVjbDE3MjI0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDAsMCwwLDAsMCwwLDE0MzM2XSksRk9MTE9XX3BfT2NjdXJyZW5jZUluZGljYXRvcl9pbl9wX0NvbGxlY3Rpb25UeXBlRGVjbDE3MjMzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfSU5ERVhfaW5fcF9JbmRleERlY2wxNzI2MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0luZGV4TmFtZV9pbl9wX0luZGV4RGVjbDE3MjY3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw0MTk0MzA0LDBdKSxGT0xMT1dfT05faW5fcF9JbmRleERlY2wxNzI3MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCw0MTk0MzA0LDBdKSxGT0xMT1dfTk9ERVNfaW5fcF9JbmRleERlY2wxNzI3NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsMjk1Mjc5MDAxNSwzMTQ5NDE0NSwzMjUxMDc1MiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX0luZGV4RG9tYWluRXhwcl9pbl9wX0luZGV4RGVjbDE3MjgxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFszMzU1NDQzMiwwXSksRk9MTE9XX0JZX2luX3BfSW5kZXhEZWNsMTcyODU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE0OTQxNDUsMzI1MTA3NTIsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9JbmRleEtleVNwZWNfaW5fcF9JbmRleERlY2wxNzI4OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwxMDI0XSksRk9MTE9XX0NPTU1BX2luX3BfSW5kZXhEZWNsMTcyOTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE0OTQxNDUsMzI1MTA3NTIsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9JbmRleEtleVNwZWNfaW5fcF9JbmRleERlY2wxNzI5NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwxMDI0XSksRk9MTE9XX3BfUU5hbWVfaW5fcF9JbmRleE5hbWUxNzMyMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUGF0aEV4cHJfaW5fcF9JbmRleERvbWFpbkV4cHIxNzM0NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfSW5kZXhLZXlFeHByX2luX3BfSW5kZXhLZXlTcGVjMTczNzE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzEwNzQyNjYxMTQsMF0pLEZPTExPV19wX0luZGV4S2V5VHlwZURlY2xfaW5fcF9JbmRleEtleVNwZWMxNzM3MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMTA3Mzc0MTgyNiwwXSksRk9MTE9XX3BfSW5kZXhLZXlDb2xsYXRpb25faW5fcF9JbmRleEtleVNwZWMxNzM3NjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfUGF0aEV4cHJfaW5fcF9JbmRleEtleUV4cHIxNzQwMjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0FTX2luX3BfSW5kZXhLZXlUeXBlRGVjbDE3NDI5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfQXRvbWljVHlwZV9pbl9wX0luZGV4S2V5VHlwZURlY2wxNzQzMzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDAsMCwwLDAsMCwxNDMzNl0pLEZPTExPV19wX09jY3VycmVuY2VJbmRpY2F0b3JfaW5fcF9JbmRleEtleVR5cGVEZWNsMTc0MzU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfQXRvbWljVHlwZTE3NDYxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQ09MTEFUSU9OX2luX3BfSW5kZXhLZXlDb2xsYXRpb24xNzQ4ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwwLDI5MzYwODk2LDBdKSxGT0xMT1dfcF9TdHJpbmdMaXRlcmFsX2luX3BfSW5kZXhLZXlDb2xsYXRpb24xNzQ5MjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0lOVEVHUklUWV9pbl9wX0lDRGVjbDE3NTE5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw2NTUzNiwwXSksRk9MTE9XX0NPTlNUUkFJTlRfaW5fcF9JQ0RlY2wxNzUyNTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDAsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1FOYW1lX2luX3BfSUNEZWNsMTc1Mjk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDQ0NTY0NDgsMF0pLEZPTExPV19wX0lDQ29sbGVjdGlvbl9pbl9wX0lDRGVjbDE3NTMyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9JQ0ZvcmVpZ25LZXlfaW5fcF9JQ0RlY2wxNzUzNjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX09OX2luX3BfSUNDb2xsZWN0aW9uMTc1NjQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDMyNzY4LDBdKSxGT0xMT1dfQ09MTEVDVElPTl9pbl9wX0lDQ29sbGVjdGlvbjE3NTcwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9JQ0NvbGxlY3Rpb24xNzU3NDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDE2Mzg0LDAsMCwwLDIxNDc2MTQ3MjAsMF0pLEZPTExPV19wX0lDQ29sbFNlcXVlbmNlX2luX3BfSUNDb2xsZWN0aW9uMTc1Nzc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0lDQ29sbFNlcXVlbmNlVW5pcXVlX2luX3BfSUNDb2xsZWN0aW9uMTc1ODE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0lDQ29sbE5vZGVfaW5fcF9JQ0NvbGxlY3Rpb24xNzU4NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0RPTExBUl9pbl9wX0lDQ29sbFNlcXVlbmNlMTc2MTM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX0lDQ29sbFNlcXVlbmNlMTc2MTc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDE2Mzg0LDBdKSxGT0xMT1dfQ0hFQ0tfaW5fcF9JQ0NvbGxTZXF1ZW5jZTE3NjIzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNTE4NzIxLDMzMDM1MDQwLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfRXhwclNpbmdsZV9pbl9wX0lDQ29sbFNlcXVlbmNlMTc2Mjc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19OT0RFX2luX3BfSUNDb2xsU2VxdWVuY2VVbmlxdWUxNzY1NTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjE0NzQ4MzY0OCwwXSksRk9MTE9XX0RPTExBUl9pbl9wX0lDQ29sbFNlcXVlbmNlVW5pcXVlMTc2NjE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX0lDQ29sbFNlcXVlbmNlVW5pcXVlMTc2NjU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDE2Mzg0LDBdKSxGT0xMT1dfQ0hFQ0tfaW5fcF9JQ0NvbGxTZXF1ZW5jZVVuaXF1ZTE3NjcxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCw4Mzg4NjA4LDBdKSxGT0xMT1dfVU5JUVVFX2luX3BfSUNDb2xsU2VxdWVuY2VVbmlxdWUxNzY3NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMjA5NzE1MiwwXSksRk9MTE9XX0tFWV9pbl9wX0lDQ29sbFNlcXVlbmNlVW5pcXVlMTc2ODM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE0OTQxNDUsMzI1MTA3NTIsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9QYXRoRXhwcl9pbl9wX0lDQ29sbFNlcXVlbmNlVW5pcXVlMTc2ODc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19GT1JFQUNIX2luX3BfSUNDb2xsTm9kZTE3NzE0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMTYzODQsMF0pLEZPTExPV19OT0RFX2luX3BfSUNDb2xsTm9kZTE3NzIwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfSUNDb2xsTm9kZTE3NzI2Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9JQ0NvbGxOb2RlMTc3MzA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDE2Mzg0LDBdKSxGT0xMT1dfQ0hFQ0tfaW5fcF9JQ0NvbGxOb2RlMTc3MzY6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE1MTg3MjEsMzMwMzUwNDAsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9FeHByU2luZ2xlX2luX3BfSUNDb2xsTm9kZTE3NzQwOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfRk9SRUlHTl9pbl9wX0lDRm9yZWlnbktleTE3NzY4Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMDk3MTUyLDBdKSxGT0xMT1dfS0VZX2luX3BfSUNGb3JlaWduS2V5MTc3NzQ6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwxMjhdKSxGT0xMT1dfcF9JQ0ZvcmVpZ25LZXlTb3VyY2VfaW5fcF9JQ0ZvcmVpZ25LZXkxNzc3ODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsNjRdKSxGT0xMT1dfcF9JQ0ZvcmVpZ25LZXlUYXJnZXRfaW5fcF9JQ0ZvcmVpZ25LZXkxNzc4MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0ZST01faW5fcF9JQ0ZvcmVpZ25LZXlTb3VyY2UxNzgwNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMzI3NjgsMF0pLEZPTExPV19wX0lDRm9yZWlnbktleVZhbHVlc19pbl9wX0lDRm9yZWlnbktleVNvdXJjZTE3ODExOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfVE9faW5fcF9JQ0ZvcmVpZ25LZXlUYXJnZXQxNzgzODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMzI3NjgsMF0pLEZPTExPV19wX0lDRm9yZWlnbktleVZhbHVlc19pbl9wX0lDRm9yZWlnbktleVRhcmdldDE3ODQyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfQ09MTEVDVElPTl9pbl9wX0lDRm9yZWlnbktleVZhbHVlczE3ODY5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQxNjA3NDk1NjcsNDI5NDk2NzI5NSwyNjg0MzU0NTUsMCw0MDk2LDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUU5hbWVfaW5fcF9JQ0ZvcmVpZ25LZXlWYWx1ZXMxNzg3MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDE2Mzg0LDBdKSxGT0xMT1dfTk9ERV9pbl9wX0lDRm9yZWlnbktleVZhbHVlczE3ODc3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMTQ3NDgzNjQ4LDBdKSxGT0xMT1dfRE9MTEFSX2luX3BfSUNGb3JlaWduS2V5VmFsdWVzMTc4ODM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwwLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9wX0lDRm9yZWlnbktleVZhbHVlczE3ODg3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDAsMCwyMDk3MTUyLDBdKSxGT0xMT1dfS0VZX2luX3BfSUNGb3JlaWduS2V5VmFsdWVzMTc4OTM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDI5NTI3OTAwMTUsMzE0OTQxNDUsMzI1MTA3NTIsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9QYXRoRXhwcl9pbl9wX0lDRm9yZWlnbktleVZhbHVlczE3ODk3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfc2V0X2luX3N5bnByZWQxX1hRdWVyeVBhcnNlcjM1MzU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDIxNDc0ODM2NDgsMF0pLEZPTExPV19ET0xMQVJfaW5fc3lucHJlZDFfWFF1ZXJ5UGFyc2VyMzU0MzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX0ZPUl9pbl9zeW5wcmVkMV9YUXVlcnlQYXJzZXIzNTQ5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFswLDAsMCwwLDI3MiwwXSksRk9MTE9XX3NldF9pbl9zeW5wcmVkMV9YUXVlcnlQYXJzZXIzNTUxOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfSUZfaW5fc3lucHJlZDJfWFF1ZXJ5UGFyc2VyMzU3NzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3N5bnByZWQyX1hRdWVyeVBhcnNlcjM1Nzk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TV0lUQ0hfaW5fc3lucHJlZDNfWFF1ZXJ5UGFyc2VyMzYwNzpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3N5bnByZWQzX1hRdWVyeVBhcnNlcjM2MDk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19UWVBFU1dJVENIX2luX3N5bnByZWQ0X1hRdWVyeVBhcnNlcjM2MzM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDUzNjg3MDkxMiwwXSksRk9MTE9XX0xQQVJFTl9pbl9zeW5wcmVkNF9YUXVlcnlQYXJzZXIzNjM1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfVFJZX2luX3N5bnByZWQ1X1hRdWVyeVBhcnNlcjM2NTU6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19MQlJBQ0tFVF9pbl9zeW5wcmVkNV9YUXVlcnlQYXJzZXIzNjU3Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfVkFMSURBVEVfaW5fc3lucHJlZDZfWFF1ZXJ5UGFyc2VyNjE4OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwLDgsNCw1MTIsMF0pLEZPTExPV19wX1ZhbGlkYXRpb25Nb2RlX2luX3N5bnByZWQ2X1hRdWVyeVBhcnNlcjYxOTM6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19UWVBFX2luX3N5bnByZWQ2X1hRdWVyeVBhcnNlcjYxOTc6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19TTEFTSF9pbl9zeW5wcmVkN19YUXVlcnlQYXJzZXI2NTUzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFs0Mjk0OTAxNzYwLDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSwyOTUyNzkwMDE1LDMxNDk0MTQ1LDMyNTEwNzUyLDAsMTA0ODU3NiwwXSksRk9MTE9XX3BfUmVsYXRpdmVQYXRoRXhwcl9pbl9zeW5wcmVkN19YUXVlcnlQYXJzZXI2NTU1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfc2V0X2luX3N5bnByZWQ4X1hRdWVyeVBhcnNlcjY2Njk6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19zZXRfaW5fc3lucHJlZDlfWFF1ZXJ5UGFyc2VyNjcyMjpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbNDI5NDkwMTc2MCw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDI5NDk2NzI5NSw0MTYwNzQ5NTY3LDQyOTQ5NjcyOTUsMjY4NDM1NDU1LDEsNDA5NiwwLDEwNDg1NzYsMF0pLEZPTExPV19wX1FOYW1lX2luX3N5bnByZWQ5X1hRdWVyeVBhcnNlcjY3MzA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzAsMCwwLDAsMCwwLDAsMV0pLEZPTExPV19MQlJBQ0tFVF9pbl9zeW5wcmVkOV9YUXVlcnlQYXJzZXI2NzMzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfc2V0X2luX3N5bnByZWQ5X1hRdWVyeVBhcnNlcjY3NTE6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzQyOTQ5MDE3NjAsNDI5NDk2NzI5NSw0Mjk0OTY3Mjk1LDQyOTQ5NjcyOTUsNDE2MDc0OTU2Nyw0Mjk0OTY3Mjk1LDI2ODQzNTQ1NSwxLDQwOTYsMCwxMDQ4NTc2LDBdKSxGT0xMT1dfcF9OQ05hbWVfaW5fc3lucHJlZDlfWFF1ZXJ5UGFyc2VyNjc1OTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3N5bnByZWQ5X1hRdWVyeVBhcnNlcjY3NjI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19zZXRfaW5fc3lucHJlZDlfWFF1ZXJ5UGFyc2VyNjc4MDpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwxXSksRk9MTE9XX0xCUkFDS0VUX2luX3N5bnByZWQ5X1hRdWVyeVBhcnNlcjY3OTI6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX0tpbmRUZXN0X2luX3N5bnByZWQxMF9YUXVlcnlQYXJzZXI2ODIyOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9RTmFtZV9pbl9zeW5wcmVkMTFfWFF1ZXJ5UGFyc2VyNjg0MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsNTM2ODcwOTEyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3N5bnByZWQxMV9YUXVlcnlQYXJzZXI2ODQzOm5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9QcmltYXJ5RXhwcl9pbl9zeW5wcmVkMTJfWFF1ZXJ5UGFyc2VyNjg2MTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfV2lsZGNhcmRfaW5fc3lucHJlZDEzX1hRdWVyeVBhcnNlcjczMDA6bmV3IHIuYW50bHIucnVudGltZS5CaXRTZXQoWzIsMF0pLEZPTExPV19wX05DTmFtZV9pbl9zeW5wcmVkMTRfWFF1ZXJ5UGFyc2VyNzMxOTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMCwwLDAsMCwwLDAsMCwzMzU1NDQzMl0pLEZPTExPV19DT0xPTl9pbl9zeW5wcmVkMTRfWFF1ZXJ5UGFyc2VyNzMyMTpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSksRk9MTE9XX3BfTkNOYW1lX2luX3N5bnByZWQxNV9YUXVlcnlQYXJzZXI3MzM5Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfTFBBUkVOX2luX3N5bnByZWQxNl9YUXVlcnlQYXJzZXI3NTk1Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9PY2N1cnJlbmNlSW5kaWNhdG9yX2luX3N5bnByZWQxN19YUXVlcnlQYXJzZXI5NjU0Om5ldyByLmFudGxyLnJ1bnRpbWUuQml0U2V0KFsyLDBdKSxGT0xMT1dfcF9PY2N1cnJlbmNlSW5kaWNhdG9yX2luX3N5bnByZWQxOF9YUXVlcnlQYXJzZXIxNzIyODpuZXcgci5hbnRsci5ydW50aW1lLkJpdFNldChbMiwwXSl9KX0oKSx0LlhRdWVyeVBhcnNlcj12fSksZGVmaW5lKCJhY2UvbW9kZS94cXVlcnkvU3RyaW5nTGV4ZXIiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbW9kZS94cXVlcnkvYW50bHIzLWFsbCIsImFjZS9tb2RlL3hxdWVyeS9YUURUTGV4ZXIiXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9hbnRscjMtYWxsIikub3JnLGk9ZSgiLi9YUURUTGV4ZXIiKS5YUURUTGV4ZXIscz1mdW5jdGlvbihlLHQpe3R8fCh0PW5ldyByLmFudGxyLnJ1bnRpbWUuUmVjb2duaXplclNoYXJlZFN0YXRlKSxmdW5jdGlvbigpe3RoaXMuaW5RdW90U3RyPSExLHRoaXMuaW5BcG9zU3RyPSExfS5jYWxsKHRoaXMpLHRoaXMuZGZhOD1uZXcgcy5ERkE4KHRoaXMpLHMuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsZSx0KX07ci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qocyx7RU9GOi0xLExfUXVvdEF0dHJDb250ZW50Q2hhcjo0LExfQXBvc0F0dHJDb250ZW50Q2hhcjo1LExfRWxlbWVudENvbnRlbnRDaGFyOjYsTF9DRGF0YVNlY3Rpb246NyxMX1ByZWRlZmluZWRFbnRpdHlSZWY6OCxMX0NoYXJSZWY6OSxFU0NBUEVfTEJSQUNLRVQ6MTAsRVNDQVBFX1JCUkFDS0VUOjExLEVTQ0FQRV9BUE9TOjEyLEVTQ0FQRV9RVU9UOjEzLENEQVRBX1NUQVJUOjE0LENEQVRBX0VORDoxNSxBTkNFU1RPUjoxNixBTkNFU1RPUl9PUl9TRUxGOjE3LEFORDoxOCxBUzoxOSxBU0NFTkRJTkc6MjAsQVQ6MjEsQVRUUklCVVRFOjIyLEJBU0VfVVJJOjIzLEJPVU5EQVJZX1NQQUNFOjI0LEJZOjI1LENBU0U6MjYsQ0FTVDoyNyxDQVNUQUJMRToyOCxDSElMRDoyOSxDT0xMQVRJT046MzAsQ09NTUVOVDozMSxDT05TVFJVQ1RJT046MzIsQ09QWV9OQU1FU1BBQ0VTOjMzLERFQ0xBUkU6MzQsREVGQVVMVDozNSxERVNDRU5EQU5UOjM2LERFU0NFTkRBTlRfT1JfU0VMRjozNyxERVNDRU5ESU5HOjM4LERJVjozOSxET0NVTUVOVDo0MCxET0NVTUVOVF9OT0RFOjQxLEVMRU1FTlQ6NDIsRUxTRTo0MyxFTVBUWTo0NCxFTVBUWV9TRVFVRU5DRTo0NSxFTkNPRElORzo0NixFUTo0NyxFVkVSWTo0OCxFWENFUFQ6NDksRVhURVJOQUw6NTAsRk9MTE9XSU5HOjUxLEZPTExPV0lOR19TSUJMSU5HOjUyLEZPUjo1MyxGVU5DVElPTjo1NCxHRTo1NSxHUkVBVEVTVDo1NixHVDo1NyxJRElWOjU4LElGOjU5LElNUE9SVDo2MCxJTjo2MSxJTkhFUklUOjYyLElOU1RBTkNFOjYzLElOVEVSU0VDVDo2NCxJUzo2NSxJVEVNOjY2LExBWDo2NyxMRTo2OCxMRUFTVDo2OSxMRVQ6NzAsTFQ6NzEsTU9EOjcyLE1PRFVMRTo3MyxOQU1FU1BBQ0U6NzQsTkU6NzUsTk9fSU5IRVJJVDo3NixOT19QUkVTRVJWRTo3NyxOT0RFOjc4LE9GOjc5LE9QVElPTjo4MCxPUjo4MSxPUkRFUjo4MixPUkRFUkVEOjgzLE9SREVSSU5HOjg0LFBBUkVOVDo4NSxQUkVDRURJTkc6ODYsUFJFQ0VESU5HX1NJQkxJTkc6ODcsUFJFU0VSVkU6ODgsUFJPQ0VTU0lOR19JTlNUUlVDVElPTjo4OSxSRVRVUk46OTAsU0FUSVNGSUVTOjkxLFNDSEVNQTo5MixTQ0hFTUFfQVRUUklCVVRFOjkzLFNDSEVNQV9FTEVNRU5UOjk0LFNFTEY6OTUsU09NRTo5NixTVEFCTEU6OTcsU1RSSUNUOjk4LFNUUklQOjk5LFRFWFQ6MTAwLFRIRU46MTAxLFRPOjEwMixUUkVBVDoxMDMsVFlQRVNXSVRDSDoxMDQsVU5JT046MTA1LFVOT1JERVJFRDoxMDYsVkFMSURBVEU6MTA3LFZBUklBQkxFOjEwOCxWRVJTSU9OOjEwOSxXSEVSRToxMTAsWFFVRVJZOjExMSxBTExPV0lORzoxMTIsQ0FUQ0g6MTEzLENPTlRFWFQ6MTE0LENPVU5UOjExNSxERUNJTUFMX0ZPUk1BVDoxMTYsREVDSU1BTF9TRVBBUkFUT1I6MTE3LERJR0lUOjExOCxFTkQ6MTE5LEdST1VQOjEyMCxHUk9VUElOR19TRVBBUkFUT1I6MTIxLElORklOSVRZOjEyMixNSU5VU19TSUdOOjEyMyxOQU1FU1BBQ0VfTk9ERToxMjQsTkFOOjEyNSxORVhUOjEyNixPTkxZOjEyNyxQQVRURVJOX1NFUEFSQVRPUjoxMjgsUEVSQ0VOVDoxMjksUEVSX01JTExFOjEzMCxQUkVWSU9VUzoxMzEsU0xJRElORzoxMzIsU1RBUlQ6MTMzLFNXSVRDSDoxMzQsVFJZOjEzNSxUVU1CTElORzoxMzYsVFlQRToxMzcsV0hFTjoxMzgsV0lORE9XOjEzOSxaRVJPX0RJR0lUOjE0MCxBRlRFUjoxNDEsQkVGT1JFOjE0MixDT1BZOjE0MyxERUxFVEU6MTQ0LEZJUlNUOjE0NSxJTlNFUlQ6MTQ2LElOVE86MTQ3LExBU1Q6MTQ4LE1PRElGWToxNDksTk9ERVM6MTUwLFJFTkFNRToxNTEsUkVQTEFDRToxNTIsUkVWQUxJREFUSU9OOjE1MyxTS0lQOjE1NCxVUERBVElORzoxNTUsVkFMVUU6MTU2LFdJVEg6MTU3LEFMTDoxNTgsQU5ZOjE1OSxDT05UQUlOUzoxNjAsQ09OVEVOVDoxNjEsRElBQ1JJVElDUzoxNjIsRElGRkVSRU5UOjE2MyxESVNUQU5DRToxNjQsRU5USVJFOjE2NSxFWEFDVExZOjE2NixGUk9NOjE2NyxGVF9PUFRJT046MTY4LEZUQU5EOjE2OSxGVE5PVDoxNzAsRlRPUjoxNzEsSU5TRU5TSVRJVkU6MTcyLExBTkdVQUdFOjE3MyxMRVZFTFM6MTc0LExPV0VSQ0FTRToxNzUsTU9TVDoxNzYsTk86MTc3LE5PVDoxNzgsT0NDVVJTOjE3OSxQQVJBR1JBUEg6MTgwLFBBUkFHUkFQSFM6MTgxLFBIUkFTRToxODIsUkVMQVRJT05TSElQOjE4MyxTQU1FOjE4NCxTQ09SRToxODUsU0VOU0lUSVZFOjE4NixTRU5URU5DRToxODcsU0VOVEVOQ0VTOjE4OCxTVEVNTUlORzoxODksU1RPUDoxOTAsVEhFU0FVUlVTOjE5MSxUSU1FUzoxOTIsVVBQRVJDQVNFOjE5MyxVU0lORzoxOTQsV0VJR0hUOjE5NSxXSUxEQ0FSRFM6MTk2LFdJVEhPVVQ6MTk3LFdPUkQ6MTk4LFdPUkRTOjE5OSxCUkVBSzoyMDAsQ09OVElOVUU6MjAxLEVYSVQ6MjAyLExPT1A6MjAzLFJFVFVSTklORzoyMDQsV0hJTEU6MjA1LENIRUNLOjIwNixDT0xMRUNUSU9OOjIwNyxDT05TVFJBSU5UOjIwOCxGT1JFQUNIOjIwOSxGT1JFSUdOOjIxMCxJTkRFWDoyMTEsSU5URUdSSVRZOjIxMixLRVk6MjEzLE9OOjIxNCxVTklRVUU6MjE1LEJJTkFSWToyMTYsQU1QX0VSOjIxNyxBUE9TX0VSOjIxOCxRVU9UX0VSOjIxOSxDT05DQVQ6MjIwLExQQVJFTjoyMjEsUlBBUkVOOjIyMixET0xMQVI6MjIzLExCUkFDS0VUOjIyNCxSQlJBQ0tFVDoyMjUsTFNRVUFSRToyMjYsUlNRVUFSRToyMjcsRVFVQUw6MjI4LEJJTkQ6MjI5LE5PVEVRVUFMOjIzMCxBTk5fUEVSQ0VOVDoyMzEsSEFTSDoyMzIsQU1QOjIzMyxDT01NQToyMzQsUVVFU1RJT046MjM1LFNUQVI6MjM2LFBMVVM6MjM3LE1JTlVTOjIzOCxTTUFMTEVSOjIzOSxHUkVBVEVSOjI0MCxTTUFMTEVSRVE6MjQxLEdSRUFURVJFUToyNDIsU01BTExFUl9TTUFMTEVSOjI0MyxHUkVBVEVSX0dSRUFURVI6MjQ0LFNMQVNIOjI0NSxTTEFTSF9TTEFTSDoyNDYsRE9UOjI0NyxET1RfRE9UOjI0OCxDT0xPTjoyNDksQ09MT05fQ09MT046MjUwLEVNUFRZX0NMT1NFX1RBRzoyNTEsQ0xPU0VfVEFHOjI1MixTRU1JQ09MT046MjUzLFZCQVI6MjU0LFBSQUdNQV9TVEFSVDoyNTUsUFJBR01BX0VORDoyNTYsWE1MX0NPTU1FTlRfU1RBUlQ6MjU3LFhNTF9DT01NRU5UX0VORDoyNTgsUElfU1RBUlQ6MjU5LFBJX0VORDoyNjAsQVRUUl9TSUdOOjI2MSxDSEFSUkVGX0RFQzoyNjIsQ0hBUlJFRl9IRVg6MjYzLEFQT1M6MjY0LFFVT1Q6MjY1LE5DTmFtZVN0YXJ0Q2hhcjoyNjYsTkNOYW1lQ2hhcjoyNjcsTF9OQ05hbWU6MjY4LExldHRlcjoyNjksSGV4TGV0dGVyOjI3MCxEaWdpdDoyNzEsRGlnaXRzOjI3MixTOjI3MyxTVToyNzQsTF9QcmFnbWE6Mjc1LExfRGlyQ29tbWVudENvbnN0cnVjdG9yOjI3NixMX0RpclBJQ29uc3RydWN0b3I6Mjc3LExfSW50ZWdlckxpdGVyYWw6Mjc4LExfRGVjaW1hbExpdGVyYWw6Mjc5LExfRG91YmxlTGl0ZXJhbDoyODAsTF9Db21tZW50OjI4MSxMX0FueUNoYXI6MjgyLExfUXVvdFN0cmluZ0xpdGVyYWxDaGFyOjI4MyxMX0Fwb3NTdHJpbmdMaXRlcmFsQ2hhcjoyODR9KSxmdW5jdGlvbigpe3ZhciBlPXIuYW50bHIucnVudGltZS5Ub2tlbi5ISURERU5fQ0hBTk5FTCx0PXIuYW50bHIucnVudGltZS5Ub2tlbi5FT0Y7ci5hbnRsci5sYW5nLmV4dGVuZChzLGkse0VPRjotMSxMX1F1b3RBdHRyQ29udGVudENoYXI6NCxMX0Fwb3NBdHRyQ29udGVudENoYXI6NSxMX0VsZW1lbnRDb250ZW50Q2hhcjo2LExfQ0RhdGFTZWN0aW9uOjcsTF9QcmVkZWZpbmVkRW50aXR5UmVmOjgsTF9DaGFyUmVmOjksRVNDQVBFX0xCUkFDS0VUOjEwLEVTQ0FQRV9SQlJBQ0tFVDoxMSxFU0NBUEVfQVBPUzoxMixFU0NBUEVfUVVPVDoxMyxDREFUQV9TVEFSVDoxNCxDREFUQV9FTkQ6MTUsQU5DRVNUT1I6MTYsQU5DRVNUT1JfT1JfU0VMRjoxNyxBTkQ6MTgsQVM6MTksQVNDRU5ESU5HOjIwLEFUOjIxLEFUVFJJQlVURToyMixCQVNFX1VSSToyMyxCT1VOREFSWV9TUEFDRToyNCxCWToyNSxDQVNFOjI2LENBU1Q6MjcsQ0FTVEFCTEU6MjgsQ0hJTEQ6MjksQ09MTEFUSU9OOjMwLENPTU1FTlQ6MzEsQ09OU1RSVUNUSU9OOjMyLENPUFlfTkFNRVNQQUNFUzozMyxERUNMQVJFOjM0LERFRkFVTFQ6MzUsREVTQ0VOREFOVDozNixERVNDRU5EQU5UX09SX1NFTEY6MzcsREVTQ0VORElORzozOCxESVY6MzksRE9DVU1FTlQ6NDAsRE9DVU1FTlRfTk9ERTo0MSxFTEVNRU5UOjQyLEVMU0U6NDMsRU1QVFk6NDQsRU1QVFlfU0VRVUVOQ0U6NDUsRU5DT0RJTkc6NDYsRVE6NDcsRVZFUlk6NDgsRVhDRVBUOjQ5LEVYVEVSTkFMOjUwLEZPTExPV0lORzo1MSxGT0xMT1dJTkdfU0lCTElORzo1MixGT1I6NTMsRlVOQ1RJT046NTQsR0U6NTUsR1JFQVRFU1Q6NTYsR1Q6NTcsSURJVjo1OCxJRjo1OSxJTVBPUlQ6NjAsSU46NjEsSU5IRVJJVDo2MixJTlNUQU5DRTo2MyxJTlRFUlNFQ1Q6NjQsSVM6NjUsSVRFTTo2NixMQVg6NjcsTEU6NjgsTEVBU1Q6NjksTEVUOjcwLExUOjcxLE1PRDo3MixNT0RVTEU6NzMsTkFNRVNQQUNFOjc0LE5FOjc1LE5PX0lOSEVSSVQ6NzYsTk9fUFJFU0VSVkU6NzcsTk9ERTo3OCxPRjo3OSxPUFRJT046ODAsT1I6ODEsT1JERVI6ODIsT1JERVJFRDo4MyxPUkRFUklORzo4NCxQQVJFTlQ6ODUsUFJFQ0VESU5HOjg2LFBSRUNFRElOR19TSUJMSU5HOjg3LFBSRVNFUlZFOjg4LFBST0NFU1NJTkdfSU5TVFJVQ1RJT046ODksUkVUVVJOOjkwLFNBVElTRklFUzo5MSxTQ0hFTUE6OTIsU0NIRU1BX0FUVFJJQlVURTo5MyxTQ0hFTUFfRUxFTUVOVDo5NCxTRUxGOjk1LFNPTUU6OTYsU1RBQkxFOjk3LFNUUklDVDo5OCxTVFJJUDo5OSxURVhUOjEwMCxUSEVOOjEwMSxUTzoxMDIsVFJFQVQ6MTAzLFRZUEVTV0lUQ0g6MTA0LFVOSU9OOjEwNSxVTk9SREVSRUQ6MTA2LFZBTElEQVRFOjEwNyxWQVJJQUJMRToxMDgsVkVSU0lPTjoxMDksV0hFUkU6MTEwLFhRVUVSWToxMTEsQUxMT1dJTkc6MTEyLENBVENIOjExMyxDT05URVhUOjExNCxDT1VOVDoxMTUsREVDSU1BTF9GT1JNQVQ6MTE2LERFQ0lNQUxfU0VQQVJBVE9SOjExNyxESUdJVDoxMTgsRU5EOjExOSxHUk9VUDoxMjAsR1JPVVBJTkdfU0VQQVJBVE9SOjEyMSxJTkZJTklUWToxMjIsTUlOVVNfU0lHTjoxMjMsTkFNRVNQQUNFX05PREU6MTI0LE5BTjoxMjUsTkVYVDoxMjYsT05MWToxMjcsUEFUVEVSTl9TRVBBUkFUT1I6MTI4LFBFUkNFTlQ6MTI5LFBFUl9NSUxMRToxMzAsUFJFVklPVVM6MTMxLFNMSURJTkc6MTMyLFNUQVJUOjEzMyxTV0lUQ0g6MTM0LFRSWToxMzUsVFVNQkxJTkc6MTM2LFRZUEU6MTM3LFdIRU46MTM4LFdJTkRPVzoxMzksWkVST19ESUdJVDoxNDAsQUZURVI6MTQxLEJFRk9SRToxNDIsQ09QWToxNDMsREVMRVRFOjE0NCxGSVJTVDoxNDUsSU5TRVJUOjE0NixJTlRPOjE0NyxMQVNUOjE0OCxNT0RJRlk6MTQ5LE5PREVTOjE1MCxSRU5BTUU6MTUxLFJFUExBQ0U6MTUyLFJFVkFMSURBVElPTjoxNTMsU0tJUDoxNTQsVVBEQVRJTkc6MTU1LFZBTFVFOjE1NixXSVRIOjE1NyxBTEw6MTU4LEFOWToxNTksQ09OVEFJTlM6MTYwLENPTlRFTlQ6MTYxLERJQUNSSVRJQ1M6MTYyLERJRkZFUkVOVDoxNjMsRElTVEFOQ0U6MTY0LEVOVElSRToxNjUsRVhBQ1RMWToxNjYsRlJPTToxNjcsRlRfT1BUSU9OOjE2OCxGVEFORDoxNjksRlROT1Q6MTcwLEZUT1I6MTcxLElOU0VOU0lUSVZFOjE3MixMQU5HVUFHRToxNzMsTEVWRUxTOjE3NCxMT1dFUkNBU0U6MTc1LE1PU1Q6MTc2LE5POjE3NyxOT1Q6MTc4LE9DQ1VSUzoxNzksUEFSQUdSQVBIOjE4MCxQQVJBR1JBUEhTOjE4MSxQSFJBU0U6MTgyLFJFTEFUSU9OU0hJUDoxODMsU0FNRToxODQsU0NPUkU6MTg1LFNFTlNJVElWRToxODYsU0VOVEVOQ0U6MTg3LFNFTlRFTkNFUzoxODgsU1RFTU1JTkc6MTg5LFNUT1A6MTkwLFRIRVNBVVJVUzoxOTEsVElNRVM6MTkyLFVQUEVSQ0FTRToxOTMsVVNJTkc6MTk0LFdFSUdIVDoxOTUsV0lMRENBUkRTOjE5NixXSVRIT1VUOjE5NyxXT1JEOjE5OCxXT1JEUzoxOTksQlJFQUs6MjAwLENPTlRJTlVFOjIwMSxFWElUOjIwMixMT09QOjIwMyxSRVRVUk5JTkc6MjA0LFdISUxFOjIwNSxDSEVDSzoyMDYsQ09MTEVDVElPTjoyMDcsQ09OU1RSQUlOVDoyMDgsRk9SRUFDSDoyMDksRk9SRUlHTjoyMTAsSU5ERVg6MjExLElOVEVHUklUWToyMTIsS0VZOjIxMyxPTjoyMTQsVU5JUVVFOjIxNSxCSU5BUlk6MjE2LEFNUF9FUjoyMTcsQVBPU19FUjoyMTgsUVVPVF9FUjoyMTksQ09OQ0FUOjIyMCxMUEFSRU46MjIxLFJQQVJFTjoyMjIsRE9MTEFSOjIyMyxMQlJBQ0tFVDoyMjQsUkJSQUNLRVQ6MjI1LExTUVVBUkU6MjI2LFJTUVVBUkU6MjI3LEVRVUFMOjIyOCxCSU5EOjIyOSxOT1RFUVVBTDoyMzAsQU5OX1BFUkNFTlQ6MjMxLEhBU0g6MjMyLEFNUDoyMzMsQ09NTUE6MjM0LFFVRVNUSU9OOjIzNSxTVEFSOjIzNixQTFVTOjIzNyxNSU5VUzoyMzgsU01BTExFUjoyMzksR1JFQVRFUjoyNDAsU01BTExFUkVROjI0MSxHUkVBVEVSRVE6MjQyLFNNQUxMRVJfU01BTExFUjoyNDMsR1JFQVRFUl9HUkVBVEVSOjI0NCxTTEFTSDoyNDUsU0xBU0hfU0xBU0g6MjQ2LERPVDoyNDcsRE9UX0RPVDoyNDgsQ09MT046MjQ5LENPTE9OX0NPTE9OOjI1MCxFTVBUWV9DTE9TRV9UQUc6MjUxLENMT1NFX1RBRzoyNTIsU0VNSUNPTE9OOjI1MyxWQkFSOjI1NCxQUkFHTUFfU1RBUlQ6MjU1LFBSQUdNQV9FTkQ6MjU2LFhNTF9DT01NRU5UX1NUQVJUOjI1NyxYTUxfQ09NTUVOVF9FTkQ6MjU4LFBJX1NUQVJUOjI1OSxQSV9FTkQ6MjYwLEFUVFJfU0lHTjoyNjEsQ0hBUlJFRl9ERUM6MjYyLENIQVJSRUZfSEVYOjI2MyxBUE9TOjI2NCxRVU9UOjI2NSxOQ05hbWVTdGFydENoYXI6MjY2LE5DTmFtZUNoYXI6MjY3LExfTkNOYW1lOjI2OCxMZXR0ZXI6MjY5LEhleExldHRlcjoyNzAsRGlnaXQ6MjcxLERpZ2l0czoyNzIsUzoyNzMsU1U6Mjc0LExfUHJhZ21hOjI3NSxMX0RpckNvbW1lbnRDb25zdHJ1Y3RvcjoyNzYsTF9EaXJQSUNvbnN0cnVjdG9yOjI3NyxMX0ludGVnZXJMaXRlcmFsOjI3OCxMX0RlY2ltYWxMaXRlcmFsOjI3OSxMX0RvdWJsZUxpdGVyYWw6MjgwLExfQ29tbWVudDoyODEsTF9BbnlDaGFyOjI4MixMX1F1b3RTdHJpbmdMaXRlcmFsQ2hhcjoyODMsTF9BcG9zU3RyaW5nTGl0ZXJhbENoYXI6Mjg0LGdldEdyYW1tYXJGaWxlTmFtZTpmdW5jdGlvbigpe3JldHVybiJ4cXVlcnkvU3RyaW5nTGV4ZXIuZyJ9fSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qocy5wcm90b3R5cGUse21RVU9UOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuUVVPVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoIXRoaXMuaW5RdW90U3RyKXRocm93IG5ldyByLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIlFVT1QiLCIgdGhpcy5pblF1b3RTdHIgIik7dGhpcy5tYXRjaCgnIicpLHRoaXMuaW5RdW90U3RyPSF0aGlzLmluUXVvdFN0cix0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1BUE9TOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQVBPUyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoIXRoaXMuaW5BcG9zU3RyKXRocm93IG5ldyByLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIkFQT1MiLCIgdGhpcy5pbkFwb3NTdHIgIik7dGhpcy5tYXRjaCgiJyIpLHRoaXMuaW5BcG9zU3RyPSF0aGlzLmluQXBvc1N0cix0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1FU0NBUEVfUVVPVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkVTQ0FQRV9RVU9ULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighdGhpcy5pblF1b3RTdHIpdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiRVNDQVBFX1FVT1QiLCIgdGhpcy5pblF1b3RTdHIgIik7dGhpcy5tYXRjaCgnIiInKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1FU0NBUEVfQVBPUzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkVTQ0FQRV9BUE9TLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighdGhpcy5pbkFwb3NTdHIpdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiRVNDQVBFX0FQT1MiLCIgdGhpcy5pbkFwb3NTdHIgIik7dGhpcy5tYXRjaCgiJyciKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1MX1ByZWRlZmluZWRFbnRpdHlSZWY6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MX1ByZWRlZmluZWRFbnRpdHlSZWYsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCEodGhpcy5pblF1b3RTdHJ8dGhpcy5pbkFwb3NTdHIpKXRocm93IG5ldyByLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIkxfUHJlZGVmaW5lZEVudGl0eVJlZiIsIiB0aGlzLmluUXVvdFN0ciB8IHRoaXMuaW5BcG9zU3RyICIpO3RoaXMubWF0Y2goIiYiKTt2YXIgbj01O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlImwiOm49MTticmVhaztjYXNlImciOm49MjticmVhaztjYXNlImEiOnZhciBpPXRoaXMuaW5wdXQuTEEoMik7aWYoaT09InAiKW49MztlbHNle2lmKGkhPSJtIil7dmFyIHM9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxLDMsdGhpcy5pbnB1dCk7dGhyb3cgc31uPTV9YnJlYWs7Y2FzZSJxIjpuPTQ7YnJlYWs7ZGVmYXVsdDp2YXIgcz1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEsMCx0aGlzLmlucHV0KTt0aHJvdyBzfXN3aXRjaChuKXtjYXNlIDE6dGhpcy5tYXRjaCgibHQiKTticmVhaztjYXNlIDI6dGhpcy5tYXRjaCgiZ3QiKTticmVhaztjYXNlIDM6dGhpcy5tYXRjaCgiYXBvcyIpO2JyZWFrO2Nhc2UgNDp0aGlzLm1hdGNoKCJxdW90Iik7YnJlYWs7Y2FzZSA1OnRoaXMubWF0Y2goImFtcCIpfXRoaXMubWF0Y2goIjsiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1MX0NoYXJSZWY6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MX0NoYXJSZWYsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMLG49MixpPXRoaXMuaW5wdXQuTEEoMSk7aWYoaSE9IiYiKXt2YXIgdT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDQsMCx0aGlzLmlucHV0KTt0aHJvdyB1fXZhciBzPXRoaXMuaW5wdXQuTEEoMik7aWYocyE9IiMiKXt2YXIgdT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDQsMSx0aGlzLmlucHV0KTt0aHJvdyB1fXZhciBvPXRoaXMuaW5wdXQuTEEoMyk7aWYobz09IngiKW49MjtlbHNle2lmKCEobz49IjAiJiZvPD0iOSImJnRoaXMuaW5RdW90U3RyfHRoaXMuaW5BcG9zU3RyKSl7dmFyIHU9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw0LDIsdGhpcy5pbnB1dCk7dGhyb3cgdX1uPTF9c3dpdGNoKG4pe2Nhc2UgMTppZighKHRoaXMuaW5RdW90U3RyfHRoaXMuaW5BcG9zU3RyKSl0aHJvdyBuZXcgci5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJMX0NoYXJSZWYiLCIgdGhpcy5pblF1b3RTdHIgfCB0aGlzLmluQXBvc1N0ciAiKTt0aGlzLm1hdGNoKCImIyIpO3ZhciBhPTA7ZTpkb3t2YXIgZj0yLGw9dGhpcy5pbnB1dC5MQSgxKTtsPj0iMCImJmw8PSI5IiYmKGY9MSk7c3dpdGNoKGYpe2Nhc2UgMTp0aGlzLm1hdGNoUmFuZ2UoIjAiLCI5Iik7YnJlYWs7ZGVmYXVsdDppZihhPj0xKWJyZWFrIGU7dmFyIGM9bmV3IHIuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oMix0aGlzLmlucHV0KTt0aHJvdyBjfWErK313aGlsZSghMCk7dGhpcy5tYXRjaCgiOyIpO2JyZWFrO2Nhc2UgMjp0aGlzLm1hdGNoKCImI3giKTt2YXIgaD0wO3Q6ZG97dmFyIHA9MixkPXRoaXMuaW5wdXQuTEEoMSk7aWYoZD49IjAiJiZkPD0iOSJ8fGQ+PSJBIiYmZDw9IkYifHxkPj0iYSImJmQ8PSJmIilwPTE7c3dpdGNoKHApe2Nhc2UgMTppZighKHRoaXMuaW5wdXQuTEEoMSk+PSIwIiYmdGhpcy5pbnB1dC5MQSgxKTw9IjkifHx0aGlzLmlucHV0LkxBKDEpPj0iQSImJnRoaXMuaW5wdXQuTEEoMSk8PSJGInx8dGhpcy5pbnB1dC5MQSgxKT49ImEiJiZ0aGlzLmlucHV0LkxBKDEpPD0iZiIpKXt2YXIgdj1uZXcgci5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIodiksdn10aGlzLmlucHV0LmNvbnN1bWUoKTticmVhaztkZWZhdWx0OmlmKGg+PTEpYnJlYWsgdDt2YXIgYz1uZXcgci5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbigzLHRoaXMuaW5wdXQpO3Rocm93IGN9aCsrfXdoaWxlKCEwKTt0aGlzLm1hdGNoKCI7Iil9dGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTF9RdW90U3RyaW5nTGl0ZXJhbENoYXI6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MX1F1b3RTdHJpbmdMaXRlcmFsQ2hhcix0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoIXRoaXMuaW5RdW90U3RyKXRocm93IG5ldyByLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIkxfUXVvdFN0cmluZ0xpdGVyYWxDaGFyIiwiIHRoaXMuaW5RdW90U3RyICIpO3ZhciBuPTA7ZTpkb3t2YXIgaT0yLHM9dGhpcy5pbnB1dC5MQSgxKTtpZihzPj0iCSImJnM8PSJcbiJ8fHM9PSJcciJ8fHM+PSIgIiYmczw9IiEifHxzPj0iIyImJnM8PSIlInx8cz49IiciJiZzPD0i7Z+/Inx8cz49Iu6AgCImJnM8PSLvv70iKWk9MTtzd2l0Y2goaSl7Y2FzZSAxOmlmKCEodGhpcy5pbnB1dC5MQSgxKT49IgkiJiZ0aGlzLmlucHV0LkxBKDEpPD0iXG4ifHx0aGlzLmlucHV0LkxBKDEpPT0iXHIifHx0aGlzLmlucHV0LkxBKDEpPj0iICImJnRoaXMuaW5wdXQuTEEoMSk8PSIhInx8dGhpcy5pbnB1dC5MQSgxKT49IiMiJiZ0aGlzLmlucHV0LkxBKDEpPD0iJSJ8fHRoaXMuaW5wdXQuTEEoMSk+PSInIiYmdGhpcy5pbnB1dC5MQSgxKTw9Iu2fvyJ8fHRoaXMuaW5wdXQuTEEoMSk+PSLugIAiJiZ0aGlzLmlucHV0LkxBKDEpPD0i77+9Iikpe3ZhciBvPW5ldyByLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IHRoaXMucmVjb3ZlcihvKSxvfXRoaXMuaW5wdXQuY29uc3VtZSgpO2JyZWFrO2RlZmF1bHQ6aWYobj49MSlicmVhayBlO3ZhciB1PW5ldyByLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDUsdGhpcy5pbnB1dCk7dGhyb3cgdX1uKyt9d2hpbGUoITApO3RoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUxfQXBvc1N0cmluZ0xpdGVyYWxDaGFyOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTF9BcG9zU3RyaW5nTGl0ZXJhbENoYXIsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCF0aGlzLmluQXBvc1N0cil0aHJvdyBuZXcgci5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJMX0Fwb3NTdHJpbmdMaXRlcmFsQ2hhciIsIiB0aGlzLmluQXBvc1N0ciAiKTt2YXIgbj0wO2U6ZG97dmFyIGk9MixzPXRoaXMuaW5wdXQuTEEoMSk7aWYocz49IgkiJiZzPD0iXG4ifHxzPT0iXHIifHxzPj0iICImJnM8PSIlInx8cz49IigiJiZzPD0i7Z+/Inx8cz49Iu6AgCImJnM8PSLvv70iKWk9MTtzd2l0Y2goaSl7Y2FzZSAxOmlmKCEodGhpcy5pbnB1dC5MQSgxKT49IgkiJiZ0aGlzLmlucHV0LkxBKDEpPD0iXG4ifHx0aGlzLmlucHV0LkxBKDEpPT0iXHIifHx0aGlzLmlucHV0LkxBKDEpPj0iICImJnRoaXMuaW5wdXQuTEEoMSk8PSIlInx8dGhpcy5pbnB1dC5MQSgxKT49IigiJiZ0aGlzLmlucHV0LkxBKDEpPD0i7Z+/Inx8dGhpcy5pbnB1dC5MQSgxKT49Iu6AgCImJnRoaXMuaW5wdXQuTEEoMSk8PSLvv70iKSl7dmFyIG89bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKG8pLG99dGhpcy5pbnB1dC5jb25zdW1lKCk7YnJlYWs7ZGVmYXVsdDppZihuPj0xKWJyZWFrIGU7dmFyIHU9bmV3IHIuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oNix0aGlzLmlucHV0KTt0aHJvdyB1fW4rK313aGlsZSghMCk7dGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTF9BbnlDaGFyOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTF9BbnlDaGFyLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighIXRoaXMuaW5RdW90U3RyfHwhIXRoaXMuaW5BcG9zU3RyKXRocm93IG5ldyByLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIkxfQW55Q2hhciIsIiAhdGhpcy5pblF1b3RTdHIgJiYgIXRoaXMuaW5BcG9zU3RyICIpO3ZhciBuPTA7ZTpkb3t2YXIgaT0yLHM9dGhpcy5pbnB1dC5MQSgxKTtpZihzPj0iCSImJnM8PSJcbiJ8fHM9PSJcciJ8fHM+PSIgIiYmczw9IiUifHxzPj0iJyImJnM8PSI7Inx8cz49Ij0iJiZzPD0ieiJ8fHM9PSJ8Inx8cz49In4iJiZzPD0i7Z+/Inx8cz49Iu6AgCImJnM8PSLvv70iKWk9MTtzd2l0Y2goaSl7Y2FzZSAxOmlmKCEodGhpcy5pbnB1dC5MQSgxKT49IgkiJiZ0aGlzLmlucHV0LkxBKDEpPD0iXG4ifHx0aGlzLmlucHV0LkxBKDEpPT0iXHIifHx0aGlzLmlucHV0LkxBKDEpPj0iICImJnRoaXMuaW5wdXQuTEEoMSk8PSIlInx8dGhpcy5pbnB1dC5MQSgxKT49IiciJiZ0aGlzLmlucHV0LkxBKDEpPD0iOyJ8fHRoaXMuaW5wdXQuTEEoMSk+PSI9IiYmdGhpcy5pbnB1dC5MQSgxKTw9InoifHx0aGlzLmlucHV0LkxBKDEpPT0ifCJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJ+IiYmdGhpcy5pbnB1dC5MQSgxKTw9Iu2fvyJ8fHRoaXMuaW5wdXQuTEEoMSk+PSLugIAiJiZ0aGlzLmlucHV0LkxBKDEpPD0i77+9Iikpe3ZhciBvPW5ldyByLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IHRoaXMucmVjb3ZlcihvKSxvfXRoaXMuaW5wdXQuY29uc3VtZSgpO2JyZWFrO2RlZmF1bHQ6aWYobj49MSlicmVhayBlO3ZhciB1PW5ldyByLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDcsdGhpcy5pbnB1dCk7dGhyb3cgdX1uKyt9d2hpbGUoITApO3RoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVRva2VuczpmdW5jdGlvbigpe3ZhciBlPTk7ZT10aGlzLmRmYTgucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2goZSl7Y2FzZSAxOnRoaXMubVFVT1QoKTticmVhaztjYXNlIDI6dGhpcy5tQVBPUygpO2JyZWFrO2Nhc2UgMzp0aGlzLm1FU0NBUEVfUVVPVCgpO2JyZWFrO2Nhc2UgNDp0aGlzLm1FU0NBUEVfQVBPUygpO2JyZWFrO2Nhc2UgNTp0aGlzLm1MX1ByZWRlZmluZWRFbnRpdHlSZWYoKTticmVhaztjYXNlIDY6dGhpcy5tTF9DaGFyUmVmKCk7YnJlYWs7Y2FzZSA3OnRoaXMubUxfUXVvdFN0cmluZ0xpdGVyYWxDaGFyKCk7YnJlYWs7Y2FzZSA4OnRoaXMubUxfQXBvc1N0cmluZ0xpdGVyYWxDaGFyKCk7YnJlYWs7Y2FzZSA5OnRoaXMubUxfQW55Q2hhcigpfX19LCEwKSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChzLHtERkE4X2VvdFM6IgHvv78BBwFcZgHvv78BEQESARMB77+/ARUC77+/ARYB77+/ARhccu+/vyIsREZBOF9lb2ZTOiIb77+/IixERkE4X21pblM6IgMJASMDCQFcMAEJAu+/vwEJAVwwAQkD77+/A1wwAe+/vwJcMAHvv78BXDAC77+/IixERkE4X21heFM6IgPvv70BcQPvv70BXDAB77+9Au+/vwHvv70BXDAB77+9A++/vwNcMAHvv78CXDAB77+/AVwwAu+/vyIsREZBOF9hY2NlcHRTOiIJ77+/AVxiAQkD77+/AQcBBgEFA++/vwEBAu+/vwECAe+/vwEDAQQiLERGQThfc3BlY2lhbFM6IgEHAQ4BXDABBAERAVxuAQUBCQEQAu+/vwEPAVxiAQYD77+/AVxyAQMBCwHvv78BAQFcZgHvv78BAgLvv799PiIsREZBOF90cmFuc2l0aW9uUzpbIgIEAu+/vwEEEu+/vwIEAQEDBAEDAQIUBAEFPgQBBQEEAQXtnoIE4KCA77+/4b++BCIsIgJcYgLvv78BXGIS77+/AlxiAQYDXGIB77+/AVxuFFxiAQk+XGIBCQFcYgEJ7Z6CXGLgoIDvv7/hv75cYiIsIgJccgLvv78BXHIS77+/AlxyAVxuA1xyAe+/vwELFFxyAQ4+XHIBDgFccgEO7Z6CXHLgoIDvv7/hv75cciIsIgEPPe+/vwEQBe+/vwEQBO+/vwEQBO+/vwEQIiwiAgQC77+/AQQS77+/AgQBXGIDBAHvv78BXHIUBAEFPgQBBQEEAQXtnoIE4KCA77+/4b++BCIsIgIFAu+/vwEFEu+/vwIFAQkDBQHvv78BDu2fmAXgoIDvv7/hv74FIiwiAlxiAu+/vwFcYhLvv78GXGIB77+/AVxuFFxiAQk+XGIBCQFcYgEJ7Z6CXGLgoIDvv7/hv75cYiIsIgHvv78iLCICXGIC77+/AVxiEu+/vwZcYgHvv78BXG4UXGIBCT5cYgEJAVxiAQntnoJcYuCggO+/v+G/vlxiIiwiIiwiIiwiAlxyAu+/vwFcchLvv78CXHIBXG4DXHIB77+/FVxyAQ4+XHIBDgFccgEO7Z6CXHLgoIDvv7/hv75cciIsIgHvv78iLCICXHIC77+/AVxyEu+/vwJccgFcbgNccgHvv78VXHIBDj5ccgEOAVxyAQ7tnoJccuCggO+/v+G/vlxyIiwiIiwiIiwiIiwiAe+/vyIsIgHvv78iLCIB77+/IiwiIiwiAe+/vyIsIgHvv78iLCIiLCIB77+/IiwiIiwiIl19KSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChzLHtERkE4X2VvdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocy5ERkE4X2VvdFMpLERGQThfZW9mOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhzLkRGQThfZW9mUyksREZBOF9taW46ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHMuREZBOF9taW5TKSxERkE4X21heDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmdUb1Vuc2lnbmVkQ2hhcnMocy5ERkE4X21heFMpLERGQThfYWNjZXB0OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhzLkRGQThfYWNjZXB0UyksREZBOF9zcGVjaWFsOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhzLkRGQThfc3BlY2lhbFMpLERGQThfdHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPVtdLHQsbj1zLkRGQThfdHJhbnNpdGlvblMubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKyllLnB1c2goci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHMuREZBOF90cmFuc2l0aW9uU1t0XSkpO3JldHVybiBlfSgpfSkscy5ERkE4PWZ1bmN0aW9uKGUpe3RoaXMucmVjb2duaXplcj1lLHRoaXMuZGVjaXNpb25OdW1iZXI9OCx0aGlzLmVvdD1zLkRGQThfZW90LHRoaXMuZW9mPXMuREZBOF9lb2YsdGhpcy5taW49cy5ERkE4X21pbix0aGlzLm1heD1zLkRGQThfbWF4LHRoaXMuYWNjZXB0PXMuREZBOF9hY2NlcHQsdGhpcy5zcGVjaWFsPXMuREZBOF9zcGVjaWFsLHRoaXMudHJhbnNpdGlvbj1zLkRGQThfdHJhbnNpdGlvbn0sci5hbnRsci5sYW5nLmV4dGVuZChzLkRGQTgsci5hbnRsci5ydW50aW1lLkRGQSx7Z2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iMToxOiBUb2tlbnMgOiAoIFFVT1QgfCBBUE9TIHwgRVNDQVBFX1FVT1QgfCBFU0NBUEVfQVBPUyB8IExfUHJlZGVmaW5lZEVudGl0eVJlZiB8IExfQ2hhclJlZiB8IExfUXVvdFN0cmluZ0xpdGVyYWxDaGFyIHwgTF9BcG9zU3RyaW5nTGl0ZXJhbENoYXIgfCBMX0FueUNoYXIgKTsifSxzcGVjaWFsU3RhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZSxpPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UgMDp2YXIgbj10LkxBKDEpLHI9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSxuPT0iJyImJih0aGlzLmluQXBvc1N0cnx8dGhpcy5pblF1b3RTdHJ8fCF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyKT9lPTExOihuPj0iCSImJm48PSJcbiJ8fG49PSJcciJ8fG4+PSIgIiYmbjw9IiEifHxuPj0iIyImJm48PSIlInx8bj49IigiJiZuPD0iOyJ8fG4+PSI9IiYmbjw9InoifHxuPT0ifCJ8fG4+PSJ+IiYmbjw9Iu2fvyJ8fG4+PSLugIAiJiZuPD0i77+9IikmJih0aGlzLmluUXVvdFN0cnx8IXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHIpP2U9MTM6biE9IjwiJiZuIT0ieyImJm4hPSJ9Inx8IXRoaXMuaW5RdW90U3RyP249PSciJyYmIXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHI/ZT0xMDplPTEyOmU9MTQsdC5zZWVrKHIpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAxOnZhciBpPXQuTEEoMSkscz10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuaW5BcG9zU3RyP2U9OTohdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0ciYmKGU9MTApLHQuc2VlayhzKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMjp2YXIgbz10LkxBKDEpLHU9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSx0aGlzLmluUXVvdFN0cj9lPTE0OiF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyJiYoZT0xMCksdC5zZWVrKHUpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAzOnZhciBhPXQuTEEoMSksZj10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuaW5RdW90U3RyP2U9MTQ6dGhpcy5pbkFwb3NTdHImJihlPTkpLHQuc2VlayhmKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgNDp2YXIgbD10LkxBKDEpLGM9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSxsPT0iIyI/ZT0xNToobD09ImEifHxsPT0iZyJ8fGw9PSJsInx8bD09InEiKSYmdGhpcy5pblF1b3RTdHJ8dGhpcy5pbkFwb3NTdHImJihlPTE2KSx0LnNlZWsoYyk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDU6dmFyIGg9dC5MQSgxKSxwPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsKGg+PSIJIiYmaDw9IlxuInx8aD09IlxyInx8aD49IiAiJiZoPD0iJSJ8fGg+PSIoIiYmaDw9IjsifHxoPj0iPSImJmg8PSJ6Inx8aD09InwifHxoPj0ifiImJmg8PSLtn78ifHxoPj0i7oCAIiYmaDw9Iu+/vSIpJiYodGhpcy5pbkFwb3NTdHJ8fCF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyKT9lPTg6aCE9IjwiJiZoIT0ieyImJmghPSJ9Inx8IXRoaXMuaW5BcG9zU3RyP2g9PSInIiYmIXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHI/ZT0xMDplPTE5OmU9OSx0LnNlZWsocCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDY6dmFyIGQ9dC5MQSgxKSx2PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsKGQ+PSIJIiYmZDw9IlxuInx8ZD09IlxyInx8ZD49IiAiJiZkPD0iISJ8fGQ+PSIjIiYmZDw9IiUifHxkPj0iJyImJmQ8PSI7Inx8ZD49Ij0iJiZkPD0ieiJ8fGQ9PSJ8Inx8ZD49In4iJiZkPD0i7Z+/Inx8ZD49Iu6AgCImJmQ8PSLvv70iKSYmKHRoaXMuaW5RdW90U3RyfHwhdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0cik/ZT0xMzpkIT0iPCImJmQhPSJ7IiYmZCE9In0ifHwhdGhpcy5pblF1b3RTdHI/ZD09JyInJiYhdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0cj9lPTEwOmU9MjQ6ZT0xNCx0LnNlZWsodik7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDc6dmFyIG09dC5MQSgxKSxnPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsbT09JyInJiYodGhpcy5pbkFwb3NTdHJ8fHRoaXMuaW5RdW90U3RyfHwhdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0cik/ZT0xOm09PSInIiYmKHRoaXMuaW5BcG9zU3RyfHx0aGlzLmluUXVvdFN0cnx8IXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHIpP2U9MjptPT0iJiI/ZT0zOihtPj0iCSImJm08PSJcbiJ8fG09PSJcciJ8fG0+PSIgIiYmbTw9IiEifHxtPj0iIyImJm08PSIlInx8bT49IigiJiZtPD0iOyJ8fG0+PSI9IiYmbTw9InoifHxtPT0ifCJ8fG0+PSJ+IiYmbTw9Iu2fvyJ8fG0+PSLugIAiJiZtPD0i77+9IikmJih0aGlzLmluQXBvc1N0cnx8dGhpcy5pblF1b3RTdHJ8fCF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyKT9lPTQ6KG09PSI8Inx8bT09InsifHxtPT0ifSIpJiYodGhpcy5pbkFwb3NTdHJ8fHRoaXMuaW5RdW90U3RyKSYmKGU9NSksdC5zZWVrKGcpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSA4OnZhciB5PXQuTEEoMSksYj10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuaW5BcG9zU3RyP2U9MjM6dGhpcy5pblF1b3RTdHI/ZT0xNDohdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0ciYmKGU9MTApLHQuc2VlayhiKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgOTp2YXIgdz10LkxBKDEpLEU9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSx0aGlzLmluUXVvdFN0cj9lPTIwOnRoaXMuaW5BcG9zU3RyP2U9OTohdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0ciYmKGU9MTApLHQuc2VlayhFKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMTA6dmFyIFM9dC5MQSgxKSx4PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsKFM+PSIJIiYmUzw9IlxuInx8Uz09IlxyInx8Uz49IiAiJiZTPD0iISJ8fFM+PSIjIiYmUzw9IiUifHxTPj0iKCImJlM8PSLtn78ifHxTPj0i7oCAIiYmUzw9Iu+/vSIpJiYodGhpcy5pbkFwb3NTdHJ8fHRoaXMuaW5RdW90U3RyKT9lPTU6Uz09IiciJiZ0aGlzLmluUXVvdFN0cj9lPTE0OlM9PSciJyYmdGhpcy5pbkFwb3NTdHI/ZT05OmU9MTgsdC5zZWVrKHgpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAxMTp2YXIgVD10LkxBKDEpLE49dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSx0aGlzLmluUXVvdFN0cj9lPTI1OnRoaXMuaW5BcG9zU3RyP2U9OTohdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0ciYmKGU9MTApLHQuc2VlayhOKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMTI6dmFyIEM9dC5MQSgxKSxrPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5pbkFwb3NTdHI/ZT0yNjp0aGlzLmluUXVvdFN0cj9lPTE0OiF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyJiYoZT0xMCksdC5zZWVrKGspO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAxMzp2YXIgTD10LkxBKDEpLEE9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSx0aGlzLmluUXVvdFN0cj9lPTE0OnRoaXMuaW5BcG9zU3RyP2U9OTohdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0ciYmKGU9MTApLHQuc2VlayhBKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMTQ6dmFyIE89dC5MQSgxKSxNPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsTz09JyInJiYodGhpcy5pbkFwb3NTdHJ8fHRoaXMuaW5RdW90U3RyfHwhdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0cik/ZT02OihPPj0iCSImJk88PSJcbiJ8fE89PSJcciJ8fE8+PSIgIiYmTzw9IiEifHxPPj0iIyImJk88PSIlInx8Tz49IigiJiZPPD0iOyJ8fE8+PSI9IiYmTzw9InoifHxPPT0ifCJ8fE8+PSJ+IiYmTzw9Iu2fvyJ8fE8+PSLugIAiJiZPPD0i77+9IikmJih0aGlzLmluQXBvc1N0cnx8IXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHIpP2U9ODpPIT0iPCImJk8hPSJ7IiYmTyE9In0ifHwhdGhpcy5pbkFwb3NTdHI/Tz09IiciJiYhdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0cj9lPTEwOmU9NzplPTksdC5zZWVrKE0pO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAxNTp2YXIgXz10LkxBKDEpLEQ9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSwoXz49IgkiJiZfPD0iXG4ifHxfPT0iXHIifHxfPj0iICImJl88PSIhInx8Xz49IiMiJiZfPD0iJSJ8fF8+PSInIiYmXzw9IjsifHxfPj0iPSImJl88PSJ6Inx8Xz09InwifHxfPj0ifiImJl88PSLtn78ifHxfPj0i7oCAIiYmXzw9Iu+/vSIpJiYodGhpcy5pblF1b3RTdHJ8fCF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyKT9lPTEzOl8hPSI8IiYmXyE9InsiJiZfIT0ifSJ8fCF0aGlzLmluUXVvdFN0cj9fPT0nIicmJiF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyP2U9MTA6ZT0yMjplPTE0LHQuc2VlayhEKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMTY6dmFyIFA9dC5MQSgxKSxIPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsKFA+PSIJIiYmUDw9IlxuInx8UD09IlxyInx8UD49IiAiJiZQPD0iJSJ8fFA+PSIoIiYmUDw9IjsifHxQPj0iPSImJlA8PSJ6Inx8UD09InwifHxQPj0ifiImJlA8PSLtn78ifHxQPj0i7oCAIiYmUDw9Iu+/vSIpJiYodGhpcy5pbkFwb3NTdHJ8fCF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyKT9lPTg6UCE9IjwiJiZQIT0ieyImJlAhPSJ9Inx8IXRoaXMuaW5BcG9zU3RyP1A9PSInIiYmIXRoaXMuaW5RdW90U3RyJiYhdGhpcy5pbkFwb3NTdHI/ZT0xMDplPTIxOmU9OSx0LnNlZWsoSCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDE3OnZhciBCPXQuTEEoMSksaj10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLChCPj0iCSImJkI8PSJcbiJ8fEI9PSJcciJ8fEI+PSIgIiYmQjw9IiEifHxCPj0iIyImJkI8PSIlInx8Qj49IigiJiZCPD0iOyJ8fEI+PSI9IiYmQjw9InoifHxCPT0ifCJ8fEI+PSJ+IiYmQjw9Iu2fvyJ8fEI+PSLugIAiJiZCPD0i77+9IikmJih0aGlzLmluQXBvc1N0cnx8dGhpcy5pblF1b3RTdHJ8fCF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyKT9lPTQ6Qj09IiciJiYodGhpcy5pblF1b3RTdHJ8fCF0aGlzLmluUXVvdFN0ciYmIXRoaXMuaW5BcG9zU3RyKT9lPTEzOkI9PSciJyYmKHRoaXMuaW5BcG9zU3RyfHwhdGhpcy5pblF1b3RTdHImJiF0aGlzLmluQXBvc1N0cik/ZT04OkIhPSI8IiYmQiE9InsiJiZCIT0ifSJ8fCF0aGlzLmluQXBvc1N0ciYmIXRoaXMuaW5RdW90U3RyP2U9MTc6ZT01LHQuc2VlayhqKTtpZihlPj0wKXJldHVybiBlfX0uY2FsbCh0aGlzLnJlY29nbml6ZXIsZSx0KTtpZighci5hbnRsci5sYW5nLmlzVW5kZWZpbmVkKGkpKXJldHVybiBpO3ZhciBzPW5ldyByLmFudGxyLnJ1bnRpbWUuTm9WaWFibGVBbHRFeGNlcHRpb24odGhpcy5nZXREZXNjcmlwdGlvbigpLDgsbix0KTt0aHJvdyB0aGlzLmVycm9yKHMpLHN9LGR1bW15Om51bGx9KX0oKSx0LlN0cmluZ0xleGVyPXN9KSxkZWZpbmUoImFjZS9tb2RlL3hxdWVyeS9YTUxMZXhlciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImFjZS9tb2RlL3hxdWVyeS9hbnRscjMtYWxsIiwiYWNlL21vZGUveHF1ZXJ5L1hRRFRMZXhlciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL2FudGxyMy1hbGwiKS5vcmcsaT1lKCIuL1hRRFRMZXhlciIpLlhRRFRMZXhlcixzPWZ1bmN0aW9uKGUsdCl7dHx8KHQ9bmV3IHIuYW50bHIucnVudGltZS5SZWNvZ25pemVyU2hhcmVkU3RhdGUpLGZ1bmN0aW9uKCl7dGhpcy5pbkVsZW09ITAsdGhpcy5pbkFwb3NBdHRyPSExLHRoaXMuaW5RdW90QXR0cj0hMSx0aGlzLmlzSW5FbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5FbGVtfSx0aGlzLmlzSW5BcG9zQXR0cmlidXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5BcG9zQXR0cn0sdGhpcy5pc0luUXVvdEF0dHI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pblF1b3RBdHRyfSx0aGlzLmFkZFRvU3RhY2s9ZnVuY3Rpb24oZSl7IXRoaXMuaW5BcG9zQXR0ciYmIXRoaXMuaW5RdW90QXR0ciYmKHRoaXMuaW5FbGVtPSExKSxlLnB1c2godGhpcyl9fS5jYWxsKHRoaXMpLHRoaXMuZGZhMTY9bmV3IHMuREZBMTYodGhpcykscy5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxlLHQpfTtyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChzLHtFT0Y6LTEsTF9RdW90QXR0ckNvbnRlbnRDaGFyOjQsTF9BcG9zQXR0ckNvbnRlbnRDaGFyOjUsTF9FbGVtZW50Q29udGVudENoYXI6NixMX0NEYXRhU2VjdGlvbjo3LExfUHJlZGVmaW5lZEVudGl0eVJlZjo4LExfQ2hhclJlZjo5LEVTQ0FQRV9MQlJBQ0tFVDoxMCxFU0NBUEVfUkJSQUNLRVQ6MTEsRVNDQVBFX0FQT1M6MTIsRVNDQVBFX1FVT1Q6MTMsQ0RBVEFfU1RBUlQ6MTQsQ0RBVEFfRU5EOjE1LEFOQ0VTVE9SOjE2LEFOQ0VTVE9SX09SX1NFTEY6MTcsQU5EOjE4LEFTOjE5LEFTQ0VORElORzoyMCxBVDoyMSxBVFRSSUJVVEU6MjIsQkFTRV9VUkk6MjMsQk9VTkRBUllfU1BBQ0U6MjQsQlk6MjUsQ0FTRToyNixDQVNUOjI3LENBU1RBQkxFOjI4LENISUxEOjI5LENPTExBVElPTjozMCxDT01NRU5UOjMxLENPTlNUUlVDVElPTjozMixDT1BZX05BTUVTUEFDRVM6MzMsREVDTEFSRTozNCxERUZBVUxUOjM1LERFU0NFTkRBTlQ6MzYsREVTQ0VOREFOVF9PUl9TRUxGOjM3LERFU0NFTkRJTkc6MzgsRElWOjM5LERPQ1VNRU5UOjQwLERPQ1VNRU5UX05PREU6NDEsRUxFTUVOVDo0MixFTFNFOjQzLEVNUFRZOjQ0LEVNUFRZX1NFUVVFTkNFOjQ1LEVOQ09ESU5HOjQ2LEVROjQ3LEVWRVJZOjQ4LEVYQ0VQVDo0OSxFWFRFUk5BTDo1MCxGT0xMT1dJTkc6NTEsRk9MTE9XSU5HX1NJQkxJTkc6NTIsRk9SOjUzLEZVTkNUSU9OOjU0LEdFOjU1LEdSRUFURVNUOjU2LEdUOjU3LElESVY6NTgsSUY6NTksSU1QT1JUOjYwLElOOjYxLElOSEVSSVQ6NjIsSU5TVEFOQ0U6NjMsSU5URVJTRUNUOjY0LElTOjY1LElURU06NjYsTEFYOjY3LExFOjY4LExFQVNUOjY5LExFVDo3MCxMVDo3MSxNT0Q6NzIsTU9EVUxFOjczLE5BTUVTUEFDRTo3NCxORTo3NSxOT19JTkhFUklUOjc2LE5PX1BSRVNFUlZFOjc3LE5PREU6NzgsT0Y6NzksT1BUSU9OOjgwLE9SOjgxLE9SREVSOjgyLE9SREVSRUQ6ODMsT1JERVJJTkc6ODQsUEFSRU5UOjg1LFBSRUNFRElORzo4NixQUkVDRURJTkdfU0lCTElORzo4NyxQUkVTRVJWRTo4OCxQUk9DRVNTSU5HX0lOU1RSVUNUSU9OOjg5LFJFVFVSTjo5MCxTQVRJU0ZJRVM6OTEsU0NIRU1BOjkyLFNDSEVNQV9BVFRSSUJVVEU6OTMsU0NIRU1BX0VMRU1FTlQ6OTQsU0VMRjo5NSxTT01FOjk2LFNUQUJMRTo5NyxTVFJJQ1Q6OTgsU1RSSVA6OTksVEVYVDoxMDAsVEhFTjoxMDEsVE86MTAyLFRSRUFUOjEwMyxUWVBFU1dJVENIOjEwNCxVTklPTjoxMDUsVU5PUkRFUkVEOjEwNixWQUxJREFURToxMDcsVkFSSUFCTEU6MTA4LFZFUlNJT046MTA5LFdIRVJFOjExMCxYUVVFUlk6MTExLEFMTE9XSU5HOjExMixDQVRDSDoxMTMsQ09OVEVYVDoxMTQsQ09VTlQ6MTE1LERFQ0lNQUxfRk9STUFUOjExNixERUNJTUFMX1NFUEFSQVRPUjoxMTcsRElHSVQ6MTE4LEVORDoxMTksR1JPVVA6MTIwLEdST1VQSU5HX1NFUEFSQVRPUjoxMjEsSU5GSU5JVFk6MTIyLE1JTlVTX1NJR046MTIzLE5BTUVTUEFDRV9OT0RFOjEyNCxOQU46MTI1LE5FWFQ6MTI2LE9OTFk6MTI3LFBBVFRFUk5fU0VQQVJBVE9SOjEyOCxQRVJDRU5UOjEyOSxQRVJfTUlMTEU6MTMwLFBSRVZJT1VTOjEzMSxTTElESU5HOjEzMixTVEFSVDoxMzMsU1dJVENIOjEzNCxUUlk6MTM1LFRVTUJMSU5HOjEzNixUWVBFOjEzNyxXSEVOOjEzOCxXSU5ET1c6MTM5LFpFUk9fRElHSVQ6MTQwLEFGVEVSOjE0MSxCRUZPUkU6MTQyLENPUFk6MTQzLERFTEVURToxNDQsRklSU1Q6MTQ1LElOU0VSVDoxNDYsSU5UTzoxNDcsTEFTVDoxNDgsTU9ESUZZOjE0OSxOT0RFUzoxNTAsUkVOQU1FOjE1MSxSRVBMQUNFOjE1MixSRVZBTElEQVRJT046MTUzLFNLSVA6MTU0LFVQREFUSU5HOjE1NSxWQUxVRToxNTYsV0lUSDoxNTcsQUxMOjE1OCxBTlk6MTU5LENPTlRBSU5TOjE2MCxDT05URU5UOjE2MSxESUFDUklUSUNTOjE2MixESUZGRVJFTlQ6MTYzLERJU1RBTkNFOjE2NCxFTlRJUkU6MTY1LEVYQUNUTFk6MTY2LEZST006MTY3LEZUX09QVElPTjoxNjgsRlRBTkQ6MTY5LEZUTk9UOjE3MCxGVE9SOjE3MSxJTlNFTlNJVElWRToxNzIsTEFOR1VBR0U6MTczLExFVkVMUzoxNzQsTE9XRVJDQVNFOjE3NSxNT1NUOjE3NixOTzoxNzcsTk9UOjE3OCxPQ0NVUlM6MTc5LFBBUkFHUkFQSDoxODAsUEFSQUdSQVBIUzoxODEsUEhSQVNFOjE4MixSRUxBVElPTlNISVA6MTgzLFNBTUU6MTg0LFNDT1JFOjE4NSxTRU5TSVRJVkU6MTg2LFNFTlRFTkNFOjE4NyxTRU5URU5DRVM6MTg4LFNURU1NSU5HOjE4OSxTVE9QOjE5MCxUSEVTQVVSVVM6MTkxLFRJTUVTOjE5MixVUFBFUkNBU0U6MTkzLFVTSU5HOjE5NCxXRUlHSFQ6MTk1LFdJTERDQVJEUzoxOTYsV0lUSE9VVDoxOTcsV09SRDoxOTgsV09SRFM6MTk5LEJSRUFLOjIwMCxDT05USU5VRToyMDEsRVhJVDoyMDIsTE9PUDoyMDMsUkVUVVJOSU5HOjIwNCxXSElMRToyMDUsQ0hFQ0s6MjA2LENPTExFQ1RJT046MjA3LENPTlNUUkFJTlQ6MjA4LEZPUkVBQ0g6MjA5LEZPUkVJR046MjEwLElOREVYOjIxMSxJTlRFR1JJVFk6MjEyLEtFWToyMTMsT046MjE0LFVOSVFVRToyMTUsQklOQVJZOjIxNixBTVBfRVI6MjE3LEFQT1NfRVI6MjE4LFFVT1RfRVI6MjE5LENPTkNBVDoyMjAsTFBBUkVOOjIyMSxSUEFSRU46MjIyLERPTExBUjoyMjMsTEJSQUNLRVQ6MjI0LFJCUkFDS0VUOjIyNSxMU1FVQVJFOjIyNixSU1FVQVJFOjIyNyxFUVVBTDoyMjgsQklORDoyMjksTk9URVFVQUw6MjMwLEFOTl9QRVJDRU5UOjIzMSxIQVNIOjIzMixBTVA6MjMzLENPTU1BOjIzNCxRVUVTVElPTjoyMzUsU1RBUjoyMzYsUExVUzoyMzcsTUlOVVM6MjM4LFNNQUxMRVI6MjM5LEdSRUFURVI6MjQwLFNNQUxMRVJFUToyNDEsR1JFQVRFUkVROjI0MixTTUFMTEVSX1NNQUxMRVI6MjQzLEdSRUFURVJfR1JFQVRFUjoyNDQsU0xBU0g6MjQ1LFNMQVNIX1NMQVNIOjI0NixET1Q6MjQ3LERPVF9ET1Q6MjQ4LENPTE9OOjI0OSxDT0xPTl9DT0xPTjoyNTAsRU1QVFlfQ0xPU0VfVEFHOjI1MSxDTE9TRV9UQUc6MjUyLFNFTUlDT0xPTjoyNTMsVkJBUjoyNTQsUFJBR01BX1NUQVJUOjI1NSxQUkFHTUFfRU5EOjI1NixYTUxfQ09NTUVOVF9TVEFSVDoyNTcsWE1MX0NPTU1FTlRfRU5EOjI1OCxQSV9TVEFSVDoyNTksUElfRU5EOjI2MCxBVFRSX1NJR046MjYxLENIQVJSRUZfREVDOjI2MixDSEFSUkVGX0hFWDoyNjMsQVBPUzoyNjQsUVVPVDoyNjUsTkNOYW1lU3RhcnRDaGFyOjI2NixOQ05hbWVDaGFyOjI2NyxMX05DTmFtZToyNjgsTGV0dGVyOjI2OSxIZXhMZXR0ZXI6MjcwLERpZ2l0OjI3MSxEaWdpdHM6MjcyLFM6MjczLFNVOjI3NCxMX1ByYWdtYToyNzUsTF9EaXJDb21tZW50Q29uc3RydWN0b3I6Mjc2LExfRGlyUElDb25zdHJ1Y3RvcjoyNzcsTF9JbnRlZ2VyTGl0ZXJhbDoyNzgsTF9EZWNpbWFsTGl0ZXJhbDoyNzksTF9Eb3VibGVMaXRlcmFsOjI4MCxMX0NvbW1lbnQ6MjgxLExfQW55Q2hhcjoyODIsTkNOYW1lVW5wcm90ZWN0ZWQ6MjgzLFhNTERpZ2l0OjI4NH0pLGZ1bmN0aW9uKCl7dmFyIGU9ci5hbnRsci5ydW50aW1lLlRva2VuLkhJRERFTl9DSEFOTkVMLHQ9ci5hbnRsci5ydW50aW1lLlRva2VuLkVPRjtyLmFudGxyLmxhbmcuZXh0ZW5kKHMsaSx7RU9GOi0xLExfUXVvdEF0dHJDb250ZW50Q2hhcjo0LExfQXBvc0F0dHJDb250ZW50Q2hhcjo1LExfRWxlbWVudENvbnRlbnRDaGFyOjYsTF9DRGF0YVNlY3Rpb246NyxMX1ByZWRlZmluZWRFbnRpdHlSZWY6OCxMX0NoYXJSZWY6OSxFU0NBUEVfTEJSQUNLRVQ6MTAsRVNDQVBFX1JCUkFDS0VUOjExLEVTQ0FQRV9BUE9TOjEyLEVTQ0FQRV9RVU9UOjEzLENEQVRBX1NUQVJUOjE0LENEQVRBX0VORDoxNSxBTkNFU1RPUjoxNixBTkNFU1RPUl9PUl9TRUxGOjE3LEFORDoxOCxBUzoxOSxBU0NFTkRJTkc6MjAsQVQ6MjEsQVRUUklCVVRFOjIyLEJBU0VfVVJJOjIzLEJPVU5EQVJZX1NQQUNFOjI0LEJZOjI1LENBU0U6MjYsQ0FTVDoyNyxDQVNUQUJMRToyOCxDSElMRDoyOSxDT0xMQVRJT046MzAsQ09NTUVOVDozMSxDT05TVFJVQ1RJT046MzIsQ09QWV9OQU1FU1BBQ0VTOjMzLERFQ0xBUkU6MzQsREVGQVVMVDozNSxERVNDRU5EQU5UOjM2LERFU0NFTkRBTlRfT1JfU0VMRjozNyxERVNDRU5ESU5HOjM4LERJVjozOSxET0NVTUVOVDo0MCxET0NVTUVOVF9OT0RFOjQxLEVMRU1FTlQ6NDIsRUxTRTo0MyxFTVBUWTo0NCxFTVBUWV9TRVFVRU5DRTo0NSxFTkNPRElORzo0NixFUTo0NyxFVkVSWTo0OCxFWENFUFQ6NDksRVhURVJOQUw6NTAsRk9MTE9XSU5HOjUxLEZPTExPV0lOR19TSUJMSU5HOjUyLEZPUjo1MyxGVU5DVElPTjo1NCxHRTo1NSxHUkVBVEVTVDo1NixHVDo1NyxJRElWOjU4LElGOjU5LElNUE9SVDo2MCxJTjo2MSxJTkhFUklUOjYyLElOU1RBTkNFOjYzLElOVEVSU0VDVDo2NCxJUzo2NSxJVEVNOjY2LExBWDo2NyxMRTo2OCxMRUFTVDo2OSxMRVQ6NzAsTFQ6NzEsTU9EOjcyLE1PRFVMRTo3MyxOQU1FU1BBQ0U6NzQsTkU6NzUsTk9fSU5IRVJJVDo3NixOT19QUkVTRVJWRTo3NyxOT0RFOjc4LE9GOjc5LE9QVElPTjo4MCxPUjo4MSxPUkRFUjo4MixPUkRFUkVEOjgzLE9SREVSSU5HOjg0LFBBUkVOVDo4NSxQUkVDRURJTkc6ODYsUFJFQ0VESU5HX1NJQkxJTkc6ODcsUFJFU0VSVkU6ODgsUFJPQ0VTU0lOR19JTlNUUlVDVElPTjo4OSxSRVRVUk46OTAsU0FUSVNGSUVTOjkxLFNDSEVNQTo5MixTQ0hFTUFfQVRUUklCVVRFOjkzLFNDSEVNQV9FTEVNRU5UOjk0LFNFTEY6OTUsU09NRTo5NixTVEFCTEU6OTcsU1RSSUNUOjk4LFNUUklQOjk5LFRFWFQ6MTAwLFRIRU46MTAxLFRPOjEwMixUUkVBVDoxMDMsVFlQRVNXSVRDSDoxMDQsVU5JT046MTA1LFVOT1JERVJFRDoxMDYsVkFMSURBVEU6MTA3LFZBUklBQkxFOjEwOCxWRVJTSU9OOjEwOSxXSEVSRToxMTAsWFFVRVJZOjExMSxBTExPV0lORzoxMTIsQ0FUQ0g6MTEzLENPTlRFWFQ6MTE0LENPVU5UOjExNSxERUNJTUFMX0ZPUk1BVDoxMTYsREVDSU1BTF9TRVBBUkFUT1I6MTE3LERJR0lUOjExOCxFTkQ6MTE5LEdST1VQOjEyMCxHUk9VUElOR19TRVBBUkFUT1I6MTIxLElORklOSVRZOjEyMixNSU5VU19TSUdOOjEyMyxOQU1FU1BBQ0VfTk9ERToxMjQsTkFOOjEyNSxORVhUOjEyNixPTkxZOjEyNyxQQVRURVJOX1NFUEFSQVRPUjoxMjgsUEVSQ0VOVDoxMjksUEVSX01JTExFOjEzMCxQUkVWSU9VUzoxMzEsU0xJRElORzoxMzIsU1RBUlQ6MTMzLFNXSVRDSDoxMzQsVFJZOjEzNSxUVU1CTElORzoxMzYsVFlQRToxMzcsV0hFTjoxMzgsV0lORE9XOjEzOSxaRVJPX0RJR0lUOjE0MCxBRlRFUjoxNDEsQkVGT1JFOjE0MixDT1BZOjE0MyxERUxFVEU6MTQ0LEZJUlNUOjE0NSxJTlNFUlQ6MTQ2LElOVE86MTQ3LExBU1Q6MTQ4LE1PRElGWToxNDksTk9ERVM6MTUwLFJFTkFNRToxNTEsUkVQTEFDRToxNTIsUkVWQUxJREFUSU9OOjE1MyxTS0lQOjE1NCxVUERBVElORzoxNTUsVkFMVUU6MTU2LFdJVEg6MTU3LEFMTDoxNTgsQU5ZOjE1OSxDT05UQUlOUzoxNjAsQ09OVEVOVDoxNjEsRElBQ1JJVElDUzoxNjIsRElGRkVSRU5UOjE2MyxESVNUQU5DRToxNjQsRU5USVJFOjE2NSxFWEFDVExZOjE2NixGUk9NOjE2NyxGVF9PUFRJT046MTY4LEZUQU5EOjE2OSxGVE5PVDoxNzAsRlRPUjoxNzEsSU5TRU5TSVRJVkU6MTcyLExBTkdVQUdFOjE3MyxMRVZFTFM6MTc0LExPV0VSQ0FTRToxNzUsTU9TVDoxNzYsTk86MTc3LE5PVDoxNzgsT0NDVVJTOjE3OSxQQVJBR1JBUEg6MTgwLFBBUkFHUkFQSFM6MTgxLFBIUkFTRToxODIsUkVMQVRJT05TSElQOjE4MyxTQU1FOjE4NCxTQ09SRToxODUsU0VOU0lUSVZFOjE4NixTRU5URU5DRToxODcsU0VOVEVOQ0VTOjE4OCxTVEVNTUlORzoxODksU1RPUDoxOTAsVEhFU0FVUlVTOjE5MSxUSU1FUzoxOTIsVVBQRVJDQVNFOjE5MyxVU0lORzoxOTQsV0VJR0hUOjE5NSxXSUxEQ0FSRFM6MTk2LFdJVEhPVVQ6MTk3LFdPUkQ6MTk4LFdPUkRTOjE5OSxCUkVBSzoyMDAsQ09OVElOVUU6MjAxLEVYSVQ6MjAyLExPT1A6MjAzLFJFVFVSTklORzoyMDQsV0hJTEU6MjA1LENIRUNLOjIwNixDT0xMRUNUSU9OOjIwNyxDT05TVFJBSU5UOjIwOCxGT1JFQUNIOjIwOSxGT1JFSUdOOjIxMCxJTkRFWDoyMTEsSU5URUdSSVRZOjIxMixLRVk6MjEzLE9OOjIxNCxVTklRVUU6MjE1LEJJTkFSWToyMTYsQU1QX0VSOjIxNyxBUE9TX0VSOjIxOCxRVU9UX0VSOjIxOSxDT05DQVQ6MjIwLExQQVJFTjoyMjEsUlBBUkVOOjIyMixET0xMQVI6MjIzLExCUkFDS0VUOjIyNCxSQlJBQ0tFVDoyMjUsTFNRVUFSRToyMjYsUlNRVUFSRToyMjcsRVFVQUw6MjI4LEJJTkQ6MjI5LE5PVEVRVUFMOjIzMCxBTk5fUEVSQ0VOVDoyMzEsSEFTSDoyMzIsQU1QOjIzMyxDT01NQToyMzQsUVVFU1RJT046MjM1LFNUQVI6MjM2LFBMVVM6MjM3LE1JTlVTOjIzOCxTTUFMTEVSOjIzOSxHUkVBVEVSOjI0MCxTTUFMTEVSRVE6MjQxLEdSRUFURVJFUToyNDIsU01BTExFUl9TTUFMTEVSOjI0MyxHUkVBVEVSX0dSRUFURVI6MjQ0LFNMQVNIOjI0NSxTTEFTSF9TTEFTSDoyNDYsRE9UOjI0NyxET1RfRE9UOjI0OCxDT0xPTjoyNDksQ09MT05fQ09MT046MjUwLEVNUFRZX0NMT1NFX1RBRzoyNTEsQ0xPU0VfVEFHOjI1MixTRU1JQ09MT046MjUzLFZCQVI6MjU0LFBSQUdNQV9TVEFSVDoyNTUsUFJBR01BX0VORDoyNTYsWE1MX0NPTU1FTlRfU1RBUlQ6MjU3LFhNTF9DT01NRU5UX0VORDoyNTgsUElfU1RBUlQ6MjU5LFBJX0VORDoyNjAsQVRUUl9TSUdOOjI2MSxDSEFSUkVGX0RFQzoyNjIsQ0hBUlJFRl9IRVg6MjYzLEFQT1M6MjY0LFFVT1Q6MjY1LE5DTmFtZVN0YXJ0Q2hhcjoyNjYsTkNOYW1lQ2hhcjoyNjcsTF9OQ05hbWU6MjY4LExldHRlcjoyNjksSGV4TGV0dGVyOjI3MCxEaWdpdDoyNzEsRGlnaXRzOjI3MixTOjI3MyxTVToyNzQsTF9QcmFnbWE6Mjc1LExfRGlyQ29tbWVudENvbnN0cnVjdG9yOjI3NixMX0RpclBJQ29uc3RydWN0b3I6Mjc3LExfSW50ZWdlckxpdGVyYWw6Mjc4LExfRGVjaW1hbExpdGVyYWw6Mjc5LExfRG91YmxlTGl0ZXJhbDoyODAsTF9Db21tZW50OjI4MSxMX0FueUNoYXI6MjgyLE5DTmFtZVVucHJvdGVjdGVkOjI4MyxYTUxEaWdpdDoyODQsZ2V0R3JhbW1hckZpbGVOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuInhxdWVyeS9YTUxMZXhlci5nIn19KSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChzLnByb3RvdHlwZSx7bVFVT1Q6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5RVU9ULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighdGhpcy5pbkVsZW0mJiF0aGlzLmluUXVvdEF0dHIpdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiUVVPVCIsIiB0aGlzLmluRWxlbSB8fCB0aGlzLmluUXVvdEF0dHIgIik7dGhpcy5tYXRjaCgnIicpLHRoaXMuaW5BcG9zQXR0cnx8KHRoaXMuaW5RdW90QXR0cj0hdGhpcy5pblF1b3RBdHRyKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1BUE9TOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQVBPUyx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoIXRoaXMuaW5FbGVtJiYhdGhpcy5pbkFwb3NBdHRyKXRocm93IG5ldyByLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIkFQT1MiLCIgdGhpcy5pbkVsZW0gfHwgdGhpcy5pbkFwb3NBdHRyICIpO3RoaXMubWF0Y2goIiciKSx0aGlzLmluUXVvdEF0dHJ8fCh0aGlzLmluQXBvc0F0dHI9IXRoaXMuaW5BcG9zQXR0ciksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTF9RdW90QXR0ckNvbnRlbnRDaGFyOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTF9RdW90QXR0ckNvbnRlbnRDaGFyLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighdGhpcy5pblF1b3RBdHRyKXRocm93IG5ldyByLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIkxfUXVvdEF0dHJDb250ZW50Q2hhciIsIiB0aGlzLmluUXVvdEF0dHIgIik7dmFyIG49MDtlOmRve3ZhciBpPTIscz10aGlzLmlucHV0LkxBKDEpO2lmKHM+PSIJIiYmczw9IlxuInx8cz09IlxyInx8cz49IiAiJiZzPD0iISJ8fHM+PSIjIiYmczw9IiUifHxzPj0iKCImJnM8PSI7Inx8cz49Ij0iJiZzPD0ieiJ8fHM9PSJ8Inx8cz49In4iJiZzPD0i7Z+/Inx8cz49Iu6AgCImJnM8PSLvv70iKWk9MTtzd2l0Y2goaSl7Y2FzZSAxOmlmKCEodGhpcy5pbnB1dC5MQSgxKT49IgkiJiZ0aGlzLmlucHV0LkxBKDEpPD0iXG4ifHx0aGlzLmlucHV0LkxBKDEpPT0iXHIifHx0aGlzLmlucHV0LkxBKDEpPj0iICImJnRoaXMuaW5wdXQuTEEoMSk8PSIhInx8dGhpcy5pbnB1dC5MQSgxKT49IiMiJiZ0aGlzLmlucHV0LkxBKDEpPD0iJSJ8fHRoaXMuaW5wdXQuTEEoMSk+PSIoIiYmdGhpcy5pbnB1dC5MQSgxKTw9IjsifHx0aGlzLmlucHV0LkxBKDEpPj0iPSImJnRoaXMuaW5wdXQuTEEoMSk8PSJ6Inx8dGhpcy5pbnB1dC5MQSgxKT09InwifHx0aGlzLmlucHV0LkxBKDEpPj0ifiImJnRoaXMuaW5wdXQuTEEoMSk8PSLtn78ifHx0aGlzLmlucHV0LkxBKDEpPj0i7oCAIiYmdGhpcy5pbnB1dC5MQSgxKTw9Iu+/vSIpKXt2YXIgbz1uZXcgci5hbnRsci5ydW50aW1lLk1pc21hdGNoZWRTZXRFeGNlcHRpb24obnVsbCx0aGlzLmlucHV0KTt0aHJvdyB0aGlzLnJlY292ZXIobyksb310aGlzLmlucHV0LmNvbnN1bWUoKTticmVhaztkZWZhdWx0OmlmKG4+PTEpYnJlYWsgZTt2YXIgdT1uZXcgci5hbnRsci5ydW50aW1lLkVhcmx5RXhpdEV4Y2VwdGlvbigxLHRoaXMuaW5wdXQpO3Rocm93IHV9bisrfXdoaWxlKCEwKTt0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1MX0Fwb3NBdHRyQ29udGVudENoYXI6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MX0Fwb3NBdHRyQ29udGVudENoYXIsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCF0aGlzLmluQXBvc0F0dHIpdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiTF9BcG9zQXR0ckNvbnRlbnRDaGFyIiwiIHRoaXMuaW5BcG9zQXR0ciAiKTt2YXIgbj0wO2U6ZG97dmFyIGk9MixzPXRoaXMuaW5wdXQuTEEoMSk7aWYocz49IgkiJiZzPD0iXG4ifHxzPT0iXHIifHxzPj0iICImJnM8PSIhInx8cz49IiMiJiZzPD0iJSJ8fHM+PSIoIiYmczw9IjsifHxzPj0iPSImJnM8PSJ6Inx8cz09InwifHxzPj0ifiImJnM8PSLtn78ifHxzPj0i7oCAIiYmczw9Iu+/vSIpaT0xO3N3aXRjaChpKXtjYXNlIDE6aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iCSImJnRoaXMuaW5wdXQuTEEoMSk8PSJcbiJ8fHRoaXMuaW5wdXQuTEEoMSk9PSJcciJ8fHRoaXMuaW5wdXQuTEEoMSk+PSIgIiYmdGhpcy5pbnB1dC5MQSgxKTw9IiEifHx0aGlzLmlucHV0LkxBKDEpPj0iIyImJnRoaXMuaW5wdXQuTEEoMSk8PSIlInx8dGhpcy5pbnB1dC5MQSgxKT49IigiJiZ0aGlzLmlucHV0LkxBKDEpPD0iOyJ8fHRoaXMuaW5wdXQuTEEoMSk+PSI9IiYmdGhpcy5pbnB1dC5MQSgxKTw9InoifHx0aGlzLmlucHV0LkxBKDEpPT0ifCJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJ+IiYmdGhpcy5pbnB1dC5MQSgxKTw9Iu2fvyJ8fHRoaXMuaW5wdXQuTEEoMSk+PSLugIAiJiZ0aGlzLmlucHV0LkxBKDEpPD0i77+9Iikpe3ZhciBvPW5ldyByLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IHRoaXMucmVjb3ZlcihvKSxvfXRoaXMuaW5wdXQuY29uc3VtZSgpO2JyZWFrO2RlZmF1bHQ6aWYobj49MSlicmVhayBlO3ZhciB1PW5ldyByLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDIsdGhpcy5pbnB1dCk7dGhyb3cgdX1uKyt9d2hpbGUoITApO3RoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUxfRWxlbWVudENvbnRlbnRDaGFyOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTF9FbGVtZW50Q29udGVudENoYXIsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCEhdGhpcy5pbkVsZW0pdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiTF9FbGVtZW50Q29udGVudENoYXIiLCIgIXRoaXMuaW5FbGVtICIpO3ZhciBuPTA7ZTpkb3t2YXIgaT0yLHM9dGhpcy5pbnB1dC5MQSgxKTtpZihzPj0iCSImJnM8PSJcbiJ8fHM9PSJcciJ8fHM+PSIgIiYmczw9IiUifHxzPj0iJyImJnM8PSI7Inx8cz49Ij0iJiZzPD0ieiJ8fHM9PSJ8Inx8cz49In4iJiZzPD0i7Z+/Inx8cz49Iu6AgCImJnM8PSLvv70iKWk9MTtzd2l0Y2goaSl7Y2FzZSAxOmlmKCEodGhpcy5pbnB1dC5MQSgxKT49IgkiJiZ0aGlzLmlucHV0LkxBKDEpPD0iXG4ifHx0aGlzLmlucHV0LkxBKDEpPT0iXHIifHx0aGlzLmlucHV0LkxBKDEpPj0iICImJnRoaXMuaW5wdXQuTEEoMSk8PSIlInx8dGhpcy5pbnB1dC5MQSgxKT49IiciJiZ0aGlzLmlucHV0LkxBKDEpPD0iOyJ8fHRoaXMuaW5wdXQuTEEoMSk+PSI9IiYmdGhpcy5pbnB1dC5MQSgxKTw9InoifHx0aGlzLmlucHV0LkxBKDEpPT0ifCJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJ+IiYmdGhpcy5pbnB1dC5MQSgxKTw9Iu2fvyJ8fHRoaXMuaW5wdXQuTEEoMSk+PSLugIAiJiZ0aGlzLmlucHV0LkxBKDEpPD0i77+9Iikpe3ZhciBvPW5ldyByLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IHRoaXMucmVjb3ZlcihvKSxvfXRoaXMuaW5wdXQuY29uc3VtZSgpO2JyZWFrO2RlZmF1bHQ6aWYobj49MSlicmVhayBlO3ZhciB1PW5ldyByLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDMsdGhpcy5pbnB1dCk7dGhyb3cgdX1uKyt9d2hpbGUoITApO3RoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUdSRUFURVI6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5HUkVBVEVSLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighdGhpcy5pbkVsZW0pdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiR1JFQVRFUiIsIiB0aGlzLmluRWxlbSAiKTt0aGlzLm1hdGNoKCI+IiksdGhpcy5pbkVsZW09ITEsdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRU1QVFlfQ0xPU0VfVEFHOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRU1QVFlfQ0xPU0VfVEFHLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighdGhpcy5pbkVsZW0pdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiRU1QVFlfQ0xPU0VfVEFHIiwiIHRoaXMuaW5FbGVtICIpO3RoaXMubWF0Y2goIi8+IiksdGhpcy5pbkVsZW09ITEsdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtUzpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLlMsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCF0aGlzLmluRWxlbSl0aHJvdyBuZXcgci5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJTIiwiIHRoaXMuaW5FbGVtICIpO3ZhciBuPTA7ZTpkb3t2YXIgaT0yLHM9dGhpcy5pbnB1dC5MQSgxKTtpZihzPj0iCSImJnM8PSJcbiJ8fHM9PSJcciJ8fHM9PSIgIilpPTE7c3dpdGNoKGkpe2Nhc2UgMTppZighKHRoaXMuaW5wdXQuTEEoMSk+PSIJIiYmdGhpcy5pbnB1dC5MQSgxKTw9IlxuInx8dGhpcy5pbnB1dC5MQSgxKT09IlxyInx8dGhpcy5pbnB1dC5MQSgxKT09IiAiKSl7dmFyIG89bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKG8pLG99dGhpcy5pbnB1dC5jb25zdW1lKCk7YnJlYWs7ZGVmYXVsdDppZihuPj0xKWJyZWFrIGU7dmFyIHU9bmV3IHIuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oNCx0aGlzLmlucHV0KTt0aHJvdyB1fW4rK313aGlsZSghMCk7dGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTF9OQ05hbWU6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MX05DTmFtZSx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoIXRoaXMuaW5FbGVtKXRocm93IG5ldyByLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIkxfTkNOYW1lIiwiIHRoaXMuaW5FbGVtICIpO3RoaXMubU5DTmFtZVVucHJvdGVjdGVkKCksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtTkNOYW1lVW5wcm90ZWN0ZWQ6ZnVuY3Rpb24oKXt0cnl7dGhpcy5tTkNOYW1lU3RhcnRDaGFyKCk7ZTpkb3t2YXIgZT0yLHQ9dGhpcy5pbnB1dC5MQSgxKTtpZih0Pj0iLSImJnQ8PSIuInx8dD49IjAiJiZ0PD0iOSJ8fHQ+PSJBIiYmdDw9IloifHx0PT0iXyJ8fHQ+PSJhIiYmdDw9InoiKWU9MTtzd2l0Y2goZSl7Y2FzZSAxOnRoaXMubU5DTmFtZUNoYXIoKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKX1maW5hbGx5e319LG1OQ05hbWVTdGFydENoYXI6ZnVuY3Rpb24oKXt0cnl7aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iQSImJnRoaXMuaW5wdXQuTEEoMSk8PSJaInx8dGhpcy5pbnB1dC5MQSgxKT09Il8ifHx0aGlzLmlucHV0LkxBKDEpPj0iYSImJnRoaXMuaW5wdXQuTEEoMSk8PSJ6Iikpe3ZhciBlPW5ldyByLmFudGxyLnJ1bnRpbWUuTWlzbWF0Y2hlZFNldEV4Y2VwdGlvbihudWxsLHRoaXMuaW5wdXQpO3Rocm93IHRoaXMucmVjb3ZlcihlKSxlfXRoaXMuaW5wdXQuY29uc3VtZSgpfWZpbmFsbHl7fX0sbU5DTmFtZUNoYXI6ZnVuY3Rpb24oKXt0cnl7aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iLSImJnRoaXMuaW5wdXQuTEEoMSk8PSIuInx8dGhpcy5pbnB1dC5MQSgxKT49IjAiJiZ0aGlzLmlucHV0LkxBKDEpPD0iOSJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJBIiYmdGhpcy5pbnB1dC5MQSgxKTw9IloifHx0aGlzLmlucHV0LkxBKDEpPT0iXyJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJhIiYmdGhpcy5pbnB1dC5MQSgxKTw9InoiKSl7dmFyIGU9bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKGUpLGV9dGhpcy5pbnB1dC5jb25zdW1lKCl9ZmluYWxseXt9fSxtTGV0dGVyOmZ1bmN0aW9uKCl7dHJ5e2lmKCEodGhpcy5pbnB1dC5MQSgxKT49IkEiJiZ0aGlzLmlucHV0LkxBKDEpPD0iWiJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJhIiYmdGhpcy5pbnB1dC5MQSgxKTw9InoiKSl7dmFyIGU9bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKGUpLGV9dGhpcy5pbnB1dC5jb25zdW1lKCl9ZmluYWxseXt9fSxtWE1MRGlnaXQ6ZnVuY3Rpb24oKXt0cnl7dGhpcy5tYXRjaFJhbmdlKCIwIiwiOSIpfWZpbmFsbHl7fX0sbUVRVUFMOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRVFVQUwsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCF0aGlzLmluRWxlbSl0aHJvdyBuZXcgci5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJFUVVBTCIsIiB0aGlzLmluRWxlbSAgIik7dGhpcy5tYXRjaCgiPSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUVTQ0FQRV9BUE9TOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRVNDQVBFX0FQT1MsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCF0aGlzLmluQXBvc0F0dHIpdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiRVNDQVBFX0FQT1MiLCIgdGhpcy5pbkFwb3NBdHRyICIpO3RoaXMubWF0Y2goIicnIiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRVNDQVBFX1FVT1Q6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5FU0NBUEVfUVVPVCx0PXIuYW50bHIucnVudGltZS5CYXNlUmVjb2duaXplci5ERUZBVUxUX1RPS0VOX0NIQU5ORUw7aWYoIXRoaXMuaW5RdW90QXR0cil0aHJvdyBuZXcgci5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJFU0NBUEVfUVVPVCIsIiB0aGlzLmluUXVvdEF0dHIgIik7dGhpcy5tYXRjaCgnIiInKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1FU0NBUEVfTEJSQUNLRVQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5FU0NBUEVfTEJSQUNLRVQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCEoIXRoaXMuaW5FbGVtfHx0aGlzLmluQXBvc0F0dHJ8fHRoaXMuaW5RdW90QXR0cikpdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiRVNDQVBFX0xCUkFDS0VUIiwiICF0aGlzLmluRWxlbSB8fCB0aGlzLmluQXBvc0F0dHIgfHwgdGhpcy5pblF1b3RBdHRyICIpO3RoaXMubWF0Y2goInt7IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtRVNDQVBFX1JCUkFDS0VUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuRVNDQVBFX1JCUkFDS0VULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighKCF0aGlzLmluRWxlbXx8dGhpcy5pbkFwb3NBdHRyfHx0aGlzLmluUXVvdEF0dHIpKXRocm93IG5ldyByLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIkVTQ0FQRV9SQlJBQ0tFVCIsIiAhdGhpcy5pbkVsZW0gfHwgdGhpcy5pbkFwb3NBdHRyIHx8IHRoaXMuaW5RdW90QXR0ciAiKTt0aGlzLm1hdGNoKCJ9fSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUxCUkFDS0VUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTEJSQUNLRVQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCEoIXRoaXMuaW5FbGVtfHx0aGlzLmluQXBvc0F0dHJ8fHRoaXMuaW5RdW90QXR0cikpdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiTEJSQUNLRVQiLCIgIXRoaXMuaW5FbGVtIHx8IHRoaXMuaW5BcG9zQXR0ciB8fCB0aGlzLmluUXVvdEF0dHIgIik7dGhpcy5tYXRjaCgieyIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVJCUkFDS0VUOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuUkJSQUNLRVQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCEoIXRoaXMuaW5FbGVtfHx0aGlzLmluQXBvc0F0dHJ8fHRoaXMuaW5RdW90QXR0cikpdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiUkJSQUNLRVQiLCIgIXRoaXMuaW5FbGVtIHx8IHRoaXMuaW5BcG9zQXR0ciB8fCB0aGlzLmluUXVvdEF0dHIgIik7dGhpcy5tYXRjaCgifSIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVNNQUxMRVI6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5TTUFMTEVSLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCI8IiksdGhpcy5zdGF0ZS50eXBlPWUsdGhpcy5zdGF0ZS5jaGFubmVsPXR9ZmluYWxseXt9fSxtQ0xPU0VfVEFHOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQ0xPU0VfVEFHLHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDtpZighIXRoaXMuaW5FbGVtKXRocm93IG5ldyByLmFudGxyLnJ1bnRpbWUuRmFpbGVkUHJlZGljYXRlRXhjZXB0aW9uKHRoaXMuaW5wdXQsIkNMT1NFX1RBRyIsIiAhdGhpcy5pbkVsZW0gIik7dGhpcy5tYXRjaCgiPC8iKSx0aGlzLmluRWxlbT0hMCx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1DREFUQV9TVEFSVDpmdW5jdGlvbigpe3RyeXt2YXIgZT10aGlzLkNEQVRBX1NUQVJULHQ9ci5hbnRsci5ydW50aW1lLkJhc2VSZWNvZ25pemVyLkRFRkFVTFRfVE9LRU5fQ0hBTk5FTDt0aGlzLm1hdGNoKCI8IVtDREFUQVsiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1DREFUQV9FTkQ6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5DREFUQV9FTkQsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIl1dPiIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUxfQ0RhdGFTZWN0aW9uOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTF9DRGF0YVNlY3Rpb24sdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCEhdGhpcy5pbkVsZW0pdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiTF9DRGF0YVNlY3Rpb24iLCIgIXRoaXMuaW5FbGVtICIpO3RoaXMubUNEQVRBX1NUQVJUKCk7ZTpkb3t2YXIgbj0yLGk9dGhpcy5pbnB1dC5MQSgxKTtpZihpPT0iXSIpe3ZhciBzPXRoaXMuaW5wdXQuTEEoMik7aWYocz09Il0iKXt2YXIgbz10aGlzLmlucHV0LkxBKDMpO2lmKG89PSI+IiluPTI7ZWxzZSBpZihvPj0iXDAiJiZvPD0iPSJ8fG8+PSI/IiYmbzw9Iu+/vyIpbj0xfWVsc2UgaWYocz49IlwwIiYmczw9IlxcInx8cz49Il4iJiZzPD0i77+/IiluPTF9ZWxzZSBpZihpPj0iXDAiJiZpPD0iXFwifHxpPj0iXiImJmk8PSLvv78iKW49MTtzd2l0Y2gobil7Y2FzZSAxOnRoaXMubWF0Y2hBbnkoKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTt0aGlzLm1DREFUQV9FTkQoKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1MX1ByZWRlZmluZWRFbnRpdHlSZWY6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MX1ByZWRlZmluZWRFbnRpdHlSZWYsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCEoIXRoaXMuaW5FbGVtfHx0aGlzLmluQXBvc0F0dHJ8fHRoaXMuaW5RdW90QXR0cikpdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiTF9QcmVkZWZpbmVkRW50aXR5UmVmIiwiICF0aGlzLmluRWxlbSB8fCB0aGlzLmluQXBvc0F0dHIgfHwgdGhpcy5pblF1b3RBdHRyICIpO3RoaXMubWF0Y2goIiYiKTt2YXIgbj01O3N3aXRjaCh0aGlzLmlucHV0LkxBKDEpKXtjYXNlImwiOm49MTticmVhaztjYXNlImciOm49MjticmVhaztjYXNlImEiOnZhciBpPXRoaXMuaW5wdXQuTEEoMik7aWYoaT09InAiKW49MztlbHNle2lmKGkhPSJtIil7dmFyIHM9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiw3LDMsdGhpcy5pbnB1dCk7dGhyb3cgc31uPTV9YnJlYWs7Y2FzZSJxIjpuPTQ7YnJlYWs7ZGVmYXVsdDp2YXIgcz1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDcsMCx0aGlzLmlucHV0KTt0aHJvdyBzfXN3aXRjaChuKXtjYXNlIDE6dGhpcy5tYXRjaCgibHQiKTticmVhaztjYXNlIDI6dGhpcy5tYXRjaCgiZ3QiKTticmVhaztjYXNlIDM6dGhpcy5tYXRjaCgiYXBvcyIpO2JyZWFrO2Nhc2UgNDp0aGlzLm1hdGNoKCJxdW90Iik7YnJlYWs7Y2FzZSA1OnRoaXMubWF0Y2goImFtcCIpfXRoaXMubWF0Y2goIjsiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1MX0NoYXJSZWY6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MX0NoYXJSZWYsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMLG49MixpPXRoaXMuaW5wdXQuTEEoMSk7aWYoaSE9IiYiKXt2YXIgdT1uZXcgci5hbnRsci5ydW50aW1lLk5vVmlhYmxlQWx0RXhjZXB0aW9uKCIiLDEwLDAsdGhpcy5pbnB1dCk7dGhyb3cgdX12YXIgcz10aGlzLmlucHV0LkxBKDIpO2lmKHMhPSIjIil7dmFyIHU9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMCwxLHRoaXMuaW5wdXQpO3Rocm93IHV9dmFyIG89dGhpcy5pbnB1dC5MQSgzKTtpZihvPT0ieCIpbj0yO2Vsc2V7aWYoIShvPj0iMCImJm88PSI5IiYmKCF0aGlzLmluRWxlbXx8dGhpcy5pbkFwb3NBdHRyfHx0aGlzLmluUXVvdEF0dHIpKSl7dmFyIHU9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbigiIiwxMCwyLHRoaXMuaW5wdXQpO3Rocm93IHV9bj0xfXN3aXRjaChuKXtjYXNlIDE6aWYoISghdGhpcy5pbkVsZW18fHRoaXMuaW5BcG9zQXR0cnx8dGhpcy5pblF1b3RBdHRyKSl0aHJvdyBuZXcgci5hbnRsci5ydW50aW1lLkZhaWxlZFByZWRpY2F0ZUV4Y2VwdGlvbih0aGlzLmlucHV0LCJMX0NoYXJSZWYiLCIgIXRoaXMuaW5FbGVtIHx8IHRoaXMuaW5BcG9zQXR0ciB8fCB0aGlzLmluUXVvdEF0dHIgIik7dGhpcy5tYXRjaCgiJiMiKTt2YXIgYT0wO2U6ZG97dmFyIGY9MixsPXRoaXMuaW5wdXQuTEEoMSk7bD49IjAiJiZsPD0iOSImJihmPTEpO3N3aXRjaChmKXtjYXNlIDE6dGhpcy5tYXRjaFJhbmdlKCIwIiwiOSIpO2JyZWFrO2RlZmF1bHQ6aWYoYT49MSlicmVhayBlO3ZhciBjPW5ldyByLmFudGxyLnJ1bnRpbWUuRWFybHlFeGl0RXhjZXB0aW9uKDgsdGhpcy5pbnB1dCk7dGhyb3cgY31hKyt9d2hpbGUoITApO3RoaXMubWF0Y2goIjsiKTticmVhaztjYXNlIDI6dGhpcy5tYXRjaCgiJiN4Iik7dmFyIGg9MDt0OmRve3ZhciBwPTIsZD10aGlzLmlucHV0LkxBKDEpO2lmKGQ+PSIwIiYmZDw9IjkifHxkPj0iQSImJmQ8PSJGInx8ZD49ImEiJiZkPD0iZiIpcD0xO3N3aXRjaChwKXtjYXNlIDE6aWYoISh0aGlzLmlucHV0LkxBKDEpPj0iMCImJnRoaXMuaW5wdXQuTEEoMSk8PSI5Inx8dGhpcy5pbnB1dC5MQSgxKT49IkEiJiZ0aGlzLmlucHV0LkxBKDEpPD0iRiJ8fHRoaXMuaW5wdXQuTEEoMSk+PSJhIiYmdGhpcy5pbnB1dC5MQSgxKTw9ImYiKSl7dmFyIHY9bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKHYpLHZ9dGhpcy5pbnB1dC5jb25zdW1lKCk7YnJlYWs7ZGVmYXVsdDppZihoPj0xKWJyZWFrIHQ7dmFyIGM9bmV3IHIuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oOSx0aGlzLmlucHV0KTt0aHJvdyBjfWgrK313aGlsZSghMCk7dGhpcy5tYXRjaCgiOyIpfXRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbUxfRGlyQ29tbWVudENvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuTF9EaXJDb21tZW50Q29uc3RydWN0b3IsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCEhdGhpcy5pbkVsZW0pdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiTF9EaXJDb21tZW50Q29uc3RydWN0b3IiLCIgIXRoaXMuaW5FbGVtICIpO3RoaXMubWF0Y2goIjwhLS0iKTtlOmRve3ZhciBuPTIsaT10aGlzLmlucHV0LkxBKDEpO2lmKGk9PSItIil7dmFyIHM9dGhpcy5pbnB1dC5MQSgyKTtpZihzPT0iLSIpe3ZhciBvPXRoaXMuaW5wdXQuTEEoMyk7aWYobz09Ij4iKW49MjtlbHNlIGlmKG8+PSJcMCImJm88PSI9Inx8bz49Ij8iJiZvPD0i77+/IiluPTF9ZWxzZSBpZihzPj0iXDAiJiZzPD0iLCJ8fHM+PSIuIiYmczw9Iu+/vyIpbj0xfWVsc2UgaWYoaT49IlwwIiYmaTw9IiwifHxpPj0iLiImJmk8PSLvv78iKW49MTtzd2l0Y2gobil7Y2FzZSAxOnRoaXMubWF0Y2hBbnkoKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKTt0aGlzLm1hdGNoKCItLT4iKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1MX0RpclBJQ29uc3RydWN0b3I6ZnVuY3Rpb24oKXt0cnl7dmFyIGU9dGhpcy5MX0RpclBJQ29uc3RydWN0b3IsdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO2lmKCEhdGhpcy5pbkVsZW0pdGhyb3cgbmV3IHIuYW50bHIucnVudGltZS5GYWlsZWRQcmVkaWNhdGVFeGNlcHRpb24odGhpcy5pbnB1dCwiTF9EaXJQSUNvbnN0cnVjdG9yIiwiICF0aGlzLmluRWxlbSAiKTt0aGlzLm1hdGNoKCI8PyIpO3ZhciBuPTIsaT10aGlzLmlucHV0LkxBKDEpO2lmKGk+PSIJIiYmaTw9IlxuInx8aT09IlxyInx8aT09IiAiKW49MTtzd2l0Y2gobil7Y2FzZSAxOnRoaXMubVNVKCl9dGhpcy5tTkNOYW1lVW5wcm90ZWN0ZWQoKTt2YXIgcz0yLG89dGhpcy5pbnB1dC5MQSgxKTtpZihvPj0iCSImJm88PSJcbiJ8fG89PSJcciJ8fG89PSIgIilzPTE7c3dpdGNoKHMpe2Nhc2UgMTp0aGlzLm1TVSgpO2U6ZG97dmFyIHU9MixhPXRoaXMuaW5wdXQuTEEoMSk7aWYoYT09Ij8iKXt2YXIgZj10aGlzLmlucHV0LkxBKDIpO2lmKGY9PSI+Iil1PTI7ZWxzZSBpZihmPj0iXDAiJiZmPD0iPSJ8fGY+PSI/IiYmZjw9Iu+/vyIpdT0xfWVsc2UgaWYoYT49IlwwIiYmYTw9Ij4ifHxhPj0iQCImJmE8PSLvv78iKXU9MTtzd2l0Y2godSl7Y2FzZSAxOnRoaXMubWF0Y2hBbnkoKTticmVhaztkZWZhdWx0OmJyZWFrIGV9fXdoaWxlKCEwKX10aGlzLm1hdGNoKCI/PiIpLHRoaXMuc3RhdGUudHlwZT1lLHRoaXMuc3RhdGUuY2hhbm5lbD10fWZpbmFsbHl7fX0sbVNVOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPTA7ZTpkb3t2YXIgdD0yLG49dGhpcy5pbnB1dC5MQSgxKTtpZihuPj0iCSImJm48PSJcbiJ8fG49PSJcciJ8fG49PSIgIil0PTE7c3dpdGNoKHQpe2Nhc2UgMTppZighKHRoaXMuaW5wdXQuTEEoMSk+PSIJIiYmdGhpcy5pbnB1dC5MQSgxKTw9IlxuInx8dGhpcy5pbnB1dC5MQSgxKT09IlxyInx8dGhpcy5pbnB1dC5MQSgxKT09IiAiKSl7dmFyIGk9bmV3IHIuYW50bHIucnVudGltZS5NaXNtYXRjaGVkU2V0RXhjZXB0aW9uKG51bGwsdGhpcy5pbnB1dCk7dGhyb3cgdGhpcy5yZWNvdmVyKGkpLGl9dGhpcy5pbnB1dC5jb25zdW1lKCk7YnJlYWs7ZGVmYXVsdDppZihlPj0xKWJyZWFrIGU7dmFyIHM9bmV3IHIuYW50bHIucnVudGltZS5FYXJseUV4aXRFeGNlcHRpb24oMTUsdGhpcy5pbnB1dCk7dGhyb3cgc31lKyt9d2hpbGUoITApfWZpbmFsbHl7fX0sbUNPTE9OOmZ1bmN0aW9uKCl7dHJ5e3ZhciBlPXRoaXMuQ09MT04sdD1yLmFudGxyLnJ1bnRpbWUuQmFzZVJlY29nbml6ZXIuREVGQVVMVF9UT0tFTl9DSEFOTkVMO3RoaXMubWF0Y2goIjoiKSx0aGlzLnN0YXRlLnR5cGU9ZSx0aGlzLnN0YXRlLmNoYW5uZWw9dH1maW5hbGx5e319LG1Ub2tlbnM6ZnVuY3Rpb24oKXt2YXIgZT0yNjtlPXRoaXMuZGZhMTYucHJlZGljdCh0aGlzLmlucHV0KTtzd2l0Y2goZSl7Y2FzZSAxOnRoaXMubVFVT1QoKTticmVhaztjYXNlIDI6dGhpcy5tQVBPUygpO2JyZWFrO2Nhc2UgMzp0aGlzLm1MX1F1b3RBdHRyQ29udGVudENoYXIoKTticmVhaztjYXNlIDQ6dGhpcy5tTF9BcG9zQXR0ckNvbnRlbnRDaGFyKCk7YnJlYWs7Y2FzZSA1OnRoaXMubUxfRWxlbWVudENvbnRlbnRDaGFyKCk7YnJlYWs7Y2FzZSA2OnRoaXMubUdSRUFURVIoKTticmVhaztjYXNlIDc6dGhpcy5tRU1QVFlfQ0xPU0VfVEFHKCk7YnJlYWs7Y2FzZSA4OnRoaXMubVMoKTticmVhaztjYXNlIDk6dGhpcy5tTF9OQ05hbWUoKTticmVhaztjYXNlIDEwOnRoaXMubUVRVUFMKCk7YnJlYWs7Y2FzZSAxMTp0aGlzLm1FU0NBUEVfQVBPUygpO2JyZWFrO2Nhc2UgMTI6dGhpcy5tRVNDQVBFX1FVT1QoKTticmVhaztjYXNlIDEzOnRoaXMubUVTQ0FQRV9MQlJBQ0tFVCgpO2JyZWFrO2Nhc2UgMTQ6dGhpcy5tRVNDQVBFX1JCUkFDS0VUKCk7YnJlYWs7Y2FzZSAxNTp0aGlzLm1MQlJBQ0tFVCgpO2JyZWFrO2Nhc2UgMTY6dGhpcy5tUkJSQUNLRVQoKTticmVhaztjYXNlIDE3OnRoaXMubVNNQUxMRVIoKTticmVhaztjYXNlIDE4OnRoaXMubUNMT1NFX1RBRygpO2JyZWFrO2Nhc2UgMTk6dGhpcy5tQ0RBVEFfU1RBUlQoKTticmVhaztjYXNlIDIwOnRoaXMubUNEQVRBX0VORCgpO2JyZWFrO2Nhc2UgMjE6dGhpcy5tTF9DRGF0YVNlY3Rpb24oKTticmVhaztjYXNlIDIyOnRoaXMubUxfUHJlZGVmaW5lZEVudGl0eVJlZigpO2JyZWFrO2Nhc2UgMjM6dGhpcy5tTF9DaGFyUmVmKCk7YnJlYWs7Y2FzZSAyNDp0aGlzLm1MX0RpckNvbW1lbnRDb25zdHJ1Y3RvcigpO2JyZWFrO2Nhc2UgMjU6dGhpcy5tTF9EaXJQSUNvbnN0cnVjdG9yKCk7YnJlYWs7Y2FzZSAyNjp0aGlzLm1DT0xPTigpfX19LCEwKSxyLmFudGxyLmxhbmcuYXVnbWVudE9iamVjdChzLHtERkExNl9lb3RTOiIB77+/ARABEwEUARYBFwEYARoBFgEdAR8BIwEkAe+/vwEWAScC77+/ASkC77+/AS4D77+/ARgB77+/ARYW77+/ATlccu+/vwFBAu+/vyIsREZBMTZfZW9mUzoiQ++/vyIsREZBMTZfbWluUzoiCQkBewF9ASEBCQEjAgkBXDAB77+/AQkCXDABCQNcMAEJAVwwAQkF77+/AS0C77+/AVwwAu+/vwFcMAHvv78BXDAE77+/AVwwA++/vwEJAUMF77+/AVwwAUQB77+/AUEBVAFBAVsBXDAC77+/IixERkExNl9tYXhTOiIJ77+9AXsBfQE/Ae+/vQFxAu+/vQFcMAHvv78B77+9AlwwAe+/vQNcMAHvv70BXDAB77+9Be+/vwFbAu+/vwFcMALvv78BXDAB77+/AVwwBO+/vwFcMAPvv78B77+9AUMF77+/AVwwAUQB77+/AUEBVAFBAVsB77+/Au+/vyIsREZBMTZfYWNjZXB0UzoiEe+/vwEFXG7vv78BXHIBDwEOARABEgHvv78BGQERAe+/vwEXARYB77+/AQEB77+/AQIBAwEEAQYB77+/AVxiAQkBXG4C77+/ARgBGgFcZgELAQcC77+/ARQF77+/ARMBFSIsREZBMTZfc3BlY2lhbFM6JwFcMAEfASIBBAFccgEeARUBAgELASEBBQERARsBIAFcZgEaAQkB77+/ARABXG4BHQEWAQ8BGAEZAQMBFwFcYgXvv78BEgLvv78BDgLvv78BBgHvv78BBwTvv78BHAPvv78BEwbvv78BFAbvv78BAQLvv799PicsREZBMTZfdHJhbnNpdGlvblM6WyICBQLvv78BBRLvv78BBQEOAQEDDgFccgECBw4BBFxuDgFcZgEOAQsBBwEDAg4aBgIOAVxiAQ4BBgEOGgYBCQEOAVxu7Z6CDuCggO+/v+G/vg4iLCICEQLvv78BERLvv78CEQEPAxEB77+/FREB77+/PhEB77+/AREB77+/7Z6CEeCggO+/v+G/vhEiLCICEQLvv78BERLvv78GEQHvv78BEhQRAe+/vz4RAe+/vwERAe+/v+2eghHgoIDvv7/hv74RIiwiAg4C77+/AQ4S77+/Ag4BEQMOAe+/vwERFA4B77+/Pg4B77+/AQ4B77+/7Z6CDuCggO+/v+G/vg4iLCICDgLvv78BDhLvv78CDgERAw4B77+/AREUDgHvv78BDgEVPA4B77+/AQ4B77+/7Z6CDuCggO+/v+G/vg4iLCICBQLvv78BBRLvv78BBQEOAREDDgHvv78BERQOAe+/vz4OAe+/vwEOAe+/v+2egg7goIDvv7/hv74OIiwiAg4C77+/AQ4S77+/Ag4BEQMOAe+/vwERBQ4CGQEOXG4ZAg4B77+/BA4aGQQOARkBDhoZAe+/vwEOAe+/v+2egg7goIDvv7/hv74OIiwiAg4C77+/AQ4S77+/Ag4BEQMOAe+/vwERFA4B77+/Pg4B77+/AQ4B77+/7Z6CDuCggO+/v+G/vg4iLCICDgLvv78BDhLvv78CDgERAw4B77+/AREUDgHvv78gDgEbHQ4B77+/AQ4B77+/7Z6CDuCggO+/v+G/vg4iLCIBHCIsIgEeIiwnASFccu+/vwEgD++/vwEiJywiAg4C77+/AQ4S77+/Ag4BEQMOAe+/vwERFA4B77+/Pg4B77+/AQ4B77+/7Z6CDuCggO+/v+G/vg4iLCIBJT3vv78BJgXvv78BJgTvv78BJgTvv78BJiIsIgIOAu+/vwEOEu+/vwIOAREDDgHvv78BERQOAe+/vz4OAe+/vwEOAe+/v+2egg7goIDvv7/hv74OIiwiAhEC77+/ARES77+/BhEB77+/FREB77+/PhEB77+/AREB77+/7Z6CEeCggO+/v+G/vhEiLCIB77+/IiwiIiwiAhEC77+/ARES77+/BhEB77+/FREB77+/PhEB77+/AREB77+/7Z6CEeCggO+/v+G/vhEiLCIB77+/IiwiAe+/vyIsIgIOAu+/vwEOEu+/vwIOAREDDgHvv78BERQOAe+/vz4OAe+/vwEOAe+/v+2egg7goIDvv7/hv74OIiwiAe+/vyIsIgHvv78iLCIB77+/IiwiAg4C77+/AQ4S77+/Ag4BEQMOAe+/vwERBQ4CGQEOXG4ZAg4B77+/BA4aGQQOARkBDhoZAe+/vwEOAe+/v+2egg7goIDvv7/hv74OIiwiAe+/vyIsIgIOAu+/vwEOEu+/vwIOAREDDgHvv78BERQOAe+/vwEOATI8DgHvv78BDgHvv7/tnoIO4KCA77+/4b++DiIsIiIsIiIsIiIsIiIsIiIsIgE0Le+/vwEzIiwiIiwiIiwiAe+/vyIsIiIsIiIsIgHvv78iLCIiLCIB77+/IiwiIiwiIiwiIiwiIiwiAe+/vyIsIiIsIiIsIiIsIgIOAu+/vwEOEu+/vwIOAREDDgHvv78BERQOAe+/vz4OAe+/vwEOAe+/v+2egg7goIDvv7/hv74OIiwiAToiLCIiLCIiLCIiLCIiLCIiLCIB77+/IiwiATwiLCIiLCIBPSIsIgE+IiwiAT8iLCIBQCIsIlwwQiIsIiIsIiJdfSksci5hbnRsci5sYW5nLmF1Z21lbnRPYmplY3Qocyx7REZBMTZfZW90OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhzLkRGQTE2X2VvdFMpLERGQTE2X2VvZjpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocy5ERkExNl9lb2ZTKSxERkExNl9taW46ci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nVG9VbnNpZ25lZENoYXJzKHMuREZBMTZfbWluUyksREZBMTZfbWF4OnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZ1RvVW5zaWduZWRDaGFycyhzLkRGQTE2X21heFMpLERGQTE2X2FjY2VwdDpyLmFudGxyLnJ1bnRpbWUuREZBLnVucGFja0VuY29kZWRTdHJpbmcocy5ERkExNl9hY2NlcHRTKSxERkExNl9zcGVjaWFsOnIuYW50bHIucnVudGltZS5ERkEudW5wYWNrRW5jb2RlZFN0cmluZyhzLkRGQTE2X3NwZWNpYWxTKSxERkExNl90cmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9W10sdCxuPXMuREZBMTZfdHJhbnNpdGlvblMubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKyllLnB1c2goci5hbnRsci5ydW50aW1lLkRGQS51bnBhY2tFbmNvZGVkU3RyaW5nKHMuREZBMTZfdHJhbnNpdGlvblNbdF0pKTtyZXR1cm4gZX0oKX0pLHMuREZBMTY9ZnVuY3Rpb24oZSl7dGhpcy5yZWNvZ25pemVyPWUsdGhpcy5kZWNpc2lvbk51bWJlcj0xNix0aGlzLmVvdD1zLkRGQTE2X2VvdCx0aGlzLmVvZj1zLkRGQTE2X2VvZix0aGlzLm1pbj1zLkRGQTE2X21pbix0aGlzLm1heD1zLkRGQTE2X21heCx0aGlzLmFjY2VwdD1zLkRGQTE2X2FjY2VwdCx0aGlzLnNwZWNpYWw9cy5ERkExNl9zcGVjaWFsLHRoaXMudHJhbnNpdGlvbj1zLkRGQTE2X3RyYW5zaXRpb259LHIuYW50bHIubGFuZy5leHRlbmQocy5ERkExNixyLmFudGxyLnJ1bnRpbWUuREZBLHtnZXREZXNjcmlwdGlvbjpmdW5jdGlvbigpe3JldHVybiIxOjE6IFRva2VucyA6ICggUVVPVCB8IEFQT1MgfCBMX1F1b3RBdHRyQ29udGVudENoYXIgfCBMX0Fwb3NBdHRyQ29udGVudENoYXIgfCBMX0VsZW1lbnRDb250ZW50Q2hhciB8IEdSRUFURVIgfCBFTVBUWV9DTE9TRV9UQUcgfCBTIHwgTF9OQ05hbWUgfCBFUVVBTCB8IEVTQ0FQRV9BUE9TIHwgRVNDQVBFX1FVT1QgfCBFU0NBUEVfTEJSQUNLRVQgfCBFU0NBUEVfUkJSQUNLRVQgfCBMQlJBQ0tFVCB8IFJCUkFDS0VUIHwgU01BTExFUiB8IENMT1NFX1RBRyB8IENEQVRBX1NUQVJUIHwgQ0RBVEFfRU5EIHwgTF9DRGF0YVNlY3Rpb24gfCBMX1ByZWRlZmluZWRFbnRpdHlSZWYgfCBMX0NoYXJSZWYgfCBMX0RpckNvbW1lbnRDb25zdHJ1Y3RvciB8IExfRGlyUElDb25zdHJ1Y3RvciB8IENPTE9OICk7In0sc3BlY2lhbFN0YXRlVHJhbnNpdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPWUsaT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlIDA6dmFyIG49dC5MQSgxKSxyPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsbj09JyInJiYodGhpcy5pblF1b3RBdHRyfHx0aGlzLmluRWxlbXx8dGhpcy5pblF1b3RBdHRyfHwhdGhpcy5pbkVsZW0pP2U9MTpuPT0iJyImJih0aGlzLmluRWxlbXx8dGhpcy5pbkFwb3NBdHRyfHx0aGlzLmluQXBvc0F0dHJ8fCF0aGlzLmluRWxlbSk/ZT0yOm49PSI+IiYmKHRoaXMuaW5FbGVtfHx0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9lPTM6bj09Ii8iJiYodGhpcy5pbkVsZW18fHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2U9NDoobj49IgkiJiZuPD0iXG4ifHxuPT0iXHIifHxuPT0iICIpJiYodGhpcy5pbkVsZW18fHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2U9NToobj49IkEiJiZuPD0iWiJ8fG49PSJfInx8bj49ImEiJiZuPD0ieiIpJiYodGhpcy5pbkVsZW18fHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2U9NjpuPT0iPSImJih0aGlzLmluRWxlbXx8dGhpcy5pblF1b3RBdHRyfHx0aGlzLmluQXBvc0F0dHJ8fCF0aGlzLmluRWxlbSk/ZT03Om49PSJdIj9lPTg6bj09InsiJiYoIXRoaXMuaW5FbGVtfHx0aGlzLmluQXBvc0F0dHJ8fHRoaXMuaW5RdW90QXR0cik/ZT05Om49PSJ9IiYmKCF0aGlzLmluRWxlbXx8dGhpcy5pbkFwb3NBdHRyfHx0aGlzLmluUXVvdEF0dHIpP2U9MTA6bj09IjwiP2U9MTE6bj09IjoiP2U9MTI6bj09IiYiP2U9MTM6KG49PSIhInx8bj49IiMiJiZuPD0iJSJ8fG4+PSIoIiYmbjw9Ii4ifHxuPj0iMCImJm48PSI5Inx8bj09IjsifHxuPj0iPyImJm48PSJAInx8bj49IlsiJiZuPD0iXFwifHxuPT0iXiJ8fG49PSJgInx8bj09InwifHxuPj0ifiImJm48PSLtn78ifHxuPj0i7oCAIiYmbjw9Iu+/vSIpJiYodGhpcy5pblF1b3RBdHRyfHx0aGlzLmluQXBvc0F0dHJ8fCF0aGlzLmluRWxlbSkmJihlPTE0KSx0LnNlZWsocik7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDE6dmFyIGk9dC5MQSgxKSxzPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsaT49IlwwIiYmaTw9Iu+/vyImJiF0aGlzLmluRWxlbT9lPTY2OmU9NjUsdC5zZWVrKHMpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAyOnZhciBvPXQuTEEoMSksdT10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLChvPj0iCSImJm88PSJcbiJ8fG89PSJcciJ8fG8+PSIgIiYmbzw9IiEifHxvPj0iIyImJm88PSIlInx8bz49IigiJiZvPD0iOyJ8fG8+PSI9IiYmbzw9InoifHxvPT0ifCJ8fG8+PSJ+IiYmbzw9Iu2fvyJ8fG8+PSLugIAiJiZvPD0i77+9IikmJih0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9lPTE0Om8hPSciJyYmbyE9IicifHwhIXRoaXMuaW5FbGVtP2U9MjY6ZT0xNyx0LnNlZWsodSk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDM6dmFyIGE9dC5MQSgxKSxmPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsKGE+PSItIiYmYTw9Ii4ifHxhPj0iMCImJmE8PSI5Inx8YT49IkEiJiZhPD0iWiJ8fGE9PSJfInx8YT49ImEiJiZhPD0ieiIpJiYodGhpcy5pbkVsZW18fHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2U9MjU6YSE9JyInJiZhIT0iJyJ8fCEhdGhpcy5pbkVsZW0/KGE+PSIJIiYmYTw9IlxuInx8YT09IlxyInx8YT49IiAiJiZhPD0iISJ8fGE+PSIjIiYmYTw9IiUifHxhPj0iKCImJmE8PSIsInx8YT09Ii8ifHxhPj0iOiImJmE8PSI7Inx8YT49Ij0iJiZhPD0iQCJ8fGE+PSJbIiYmYTw9Il4ifHxhPT0iYCJ8fGE9PSJ8Inx8YT49In4iJiZhPD0i7Z+/Inx8YT49Iu6AgCImJmE8PSLvv70iKSYmKHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2U9MTQ6ZT0yNDplPTE3LHQuc2VlayhmKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgNDp2YXIgbD10LkxBKDEpLGM9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSwobD49IgkiJiZsPD0iXG4ifHxsPT0iXHIifHxsPj0iICImJmw8PSIhInx8bD49IiMiJiZsPD0iJSJ8fGw+PSIoIiYmbDw9IjsifHxsPj0iPSImJmw8PSJ6Inx8bD09InwifHxsPj0ifiImJmw8PSLtn78ifHxsPj0i7oCAIiYmbDw9Iu+/vSIpJiYodGhpcy5pblF1b3RBdHRyfHx0aGlzLmluQXBvc0F0dHJ8fCF0aGlzLmluRWxlbSk/ZT0xNDpsIT0nIicmJmwhPSInInx8ISF0aGlzLmluRWxlbT9lPTIwOmU9MTcsdC5zZWVrKGMpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSA1OnZhciBoPXQuTEEoMSkscD10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLGg9PSJ9IiYmKCF0aGlzLmluRWxlbXx8dGhpcy5pbkFwb3NBdHRyfHx0aGlzLmluUXVvdEF0dHIpP2U9MzA6ZT0zMSx0LnNlZWsocCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDY6dmFyIGQ9dC5MQSgxKSx2PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5pbkVsZW0/dGhpcy5pblF1b3RBdHRyJiYoZT01NCk6ZT0xNyx0LnNlZWsodik7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDc6dmFyIG09dC5MQSgxKSxnPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5pbkVsZW0/dGhpcy5pbkFwb3NBdHRyJiYoZT01NSk6ZT0xNyx0LnNlZWsoZyk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDg6dmFyIHk9dC5MQSgxKSxiPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEseT09Ij4iP2U9NTA6KHk+PSIJIiYmeTw9IlxuInx8eT09IlxyInx8eT49IiAiJiZ5PD0iISJ8fHk+PSIjIiYmeTw9IiUifHx5Pj0iKCImJnk8PSI7Inx8eT09Ij0ifHx5Pj0iPyImJnk8PSJ6Inx8eT09InwifHx5Pj0ifiImJnk8PSLtn78ifHx5Pj0i7oCAIiYmeTw9Iu+/vSIpJiYodGhpcy5pblF1b3RBdHRyfHx0aGlzLmluQXBvc0F0dHJ8fCF0aGlzLmluRWxlbSk/ZT0xNDp5IT0nIicmJnkhPSInInx8ISF0aGlzLmluRWxlbT9lPTIyOmU9MTcsdC5zZWVrKGIpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSA5OnZhciB3PXQuTEEoMSksRT10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuaW5FbGVtfHx0aGlzLmluUXVvdEF0dHI/ZT00MDp0aGlzLmluRWxlbXx8KGU9MTcpLHQuc2VlayhFKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMTA6dmFyIFM9dC5MQSgxKSx4PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5pbkVsZW18fHRoaXMuaW5BcG9zQXR0cj9lPTQyOnRoaXMuaW5FbGVtfHwoZT0xNyksdC5zZWVrKHgpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAxMTp2YXIgVD10LkxBKDEpLE49dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSxUPT0iXSI/ZT0yNzooVD49IgkiJiZUPD0iXG4ifHxUPT0iXHIifHxUPj0iICImJlQ8PSIhInx8VD49IiMiJiZUPD0iJSJ8fFQ+PSIoIiYmVDw9IjsifHxUPj0iPSImJlQ8PSJcXCJ8fFQ+PSJeIiYmVDw9InoifHxUPT0ifCJ8fFQ+PSJ+IiYmVDw9Iu2fvyJ8fFQ+PSLugIAiJiZUPD0i77+9IikmJih0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9lPTE0OlQhPSciJyYmVCE9IicifHwhIXRoaXMuaW5FbGVtP2U9MjI6ZT0xNyx0LnNlZWsoTik7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDEyOnZhciBDPXQuTEEoMSksaz10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLChDPj0iCSImJkM8PSJcbiJ8fEM9PSJcciJ8fEM+PSIgIiYmQzw9IiEifHxDPj0iIyImJkM8PSIlInx8Qz49IigiJiZDPD0iOyJ8fEM+PSI9IiYmQzw9InoifHxDPT0ifCJ8fEM+PSJ+IiYmQzw9Iu2fvyJ8fEM+PSLugIAiJiZDPD0i77+9IikmJih0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9lPTE0OkMhPSciJyYmQyE9IicifHwhIXRoaXMuaW5FbGVtP2U9MjI6ZT0xNyx0LnNlZWsoayk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDEzOnZhciBMPXQuTEEoMSksQT10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLEw9PSI+IiYmKHRoaXMuaW5FbGVtfHx0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9lPTIxOihMPj0iCSImJkw8PSJcbiJ8fEw9PSJcciJ8fEw+PSIgIiYmTDw9IiEifHxMPj0iIyImJkw8PSIlInx8TD49IigiJiZMPD0iOyJ8fEw9PSI9Inx8TD49Ij8iJiZMPD0ieiJ8fEw9PSJ8Inx8TD49In4iJiZMPD0i7Z+/Inx8TD49Iu6AgCImJkw8PSLvv70iKSYmKHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2U9MTQ6TCE9JyInJiZMIT0iJyJ8fCEhdGhpcy5pbkVsZW0/ZT0yMjplPTE3LHQuc2VlayhBKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMTQ6dmFyIE89dC5MQSgxKSxNPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5pblF1b3RBdHRyP2U9NDM6dGhpcy5pbkFwb3NBdHRyP2U9NDQ6dGhpcy5pbkVsZW0/ZT01MzplPTE3LHQuc2VlayhNKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMTU6dmFyIF89dC5MQSgxKSxEPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsdGhpcy5pblF1b3RBdHRyP2U9NDM6dGhpcy5pbkFwb3NBdHRyP2U9NDQ6dGhpcy5pbkVsZW18fChlPTE3KSx0LnNlZWsoRCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDE2OnZhciBQPXQuTEEoMSksSD10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLChQPj0iCSImJlA8PSJcbiJ8fFA9PSJcciJ8fFA+PSIgIiYmUDw9IiUifHxQPj0iJyImJlA8PSI7Inx8UD49Ij0iJiZQPD0ieiJ8fFA9PSJ8Inx8UD49In4iJiZQPD0i7Z+/Inx8UD49Iu6AgCImJlA8PSLvv70iKSYmIXRoaXMuaW5FbGVtP2U9MTc6ZT00MSx0LnNlZWsoSCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDE3OnZhciBCPXQuTEEoMSksaj10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLEI9PSIvIiYmIXRoaXMuaW5FbGVtP2U9MzI6Qj09IiEiP2U9MzM6Qj09Ij8iJiYhdGhpcy5pbkVsZW0/ZT0zNDplPTM1LHQuc2VlayhqKTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMTg6dmFyIEY9dC5MQSgxKSxJPXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsRj09IlsiP2U9NTE6Rj09Ii0iJiYhdGhpcy5pbkVsZW0mJihlPTUyKSx0LnNlZWsoSSk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDE5OnZhciBxPXQuTEEoMSksUj10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLChxPj0iCSImJnE8PSJcbiJ8fHE9PSJcciJ8fHE+PSIgIiYmcTw9IiEifHxxPj0iIyImJnE8PSIlInx8cT49IigiJiZxPD0iOyJ8fHE+PSI9IiYmcTw9InoifHxxPT0ifCJ8fHE+PSJ+IiYmcTw9Iu2fvyJ8fHE+PSLugIAiJiZxPD0i77+9IikmJih0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9lPTE0OnEhPSciJyYmcSE9IicifHwhIXRoaXMuaW5FbGVtP2U9NTc6ZT0xNyx0LnNlZWsoUik7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDIwOnZhciBVPXQuTEEoMSksej10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuaW5RdW90QXR0cj9lPTQzOnRoaXMuaW5BcG9zQXR0cj9lPTQ0OnRoaXMuaW5FbGVtP2U9NTk6ZT0xNyx0LnNlZWsoeik7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDIxOnZhciBXPXQuTEEoMSksWD10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLChXPj0iLSImJlc8PSIuInx8Vz49IjAiJiZXPD0iOSJ8fFc+PSJBIiYmVzw9IloifHxXPT0iXyJ8fFc+PSJhIiYmVzw9InoiKSYmKHRoaXMuaW5FbGVtfHx0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9lPTI1OlchPSciJyYmVyE9IicifHwhIXRoaXMuaW5FbGVtPyhXPj0iCSImJlc8PSJcbiJ8fFc9PSJcciJ8fFc+PSIgIiYmVzw9IiEifHxXPj0iIyImJlc8PSIlInx8Vz49IigiJiZXPD0iLCJ8fFc9PSIvInx8Vz49IjoiJiZXPD0iOyJ8fFc+PSI9IiYmVzw9IkAifHxXPj0iWyImJlc8PSJeInx8Vz09ImAifHxXPT0ifCJ8fFc+PSJ+IiYmVzw9Iu2fvyJ8fFc+PSLugIAiJiZXPD0i77+9IikmJih0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9lPTE0OmU9MjQ6ZT0xNyx0LnNlZWsoWCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDIyOnZhciBWPXQuTEEoMSksJD10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLChWPj0iCSImJlY8PSJcbiJ8fFY9PSJcciJ8fFY+PSIgIiYmVjw9IiEifHxWPj0iIyImJlY8PSIlInx8Vj49IigiJiZWPD0iOyJ8fFY+PSI9IiYmVjw9InoifHxWPT0ifCJ8fFY+PSJ+IiYmVjw9Iu2fvyJ8fFY+PSLugIAiJiZWPD0i77+9IikmJih0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9lPTE0OlYhPSciJyYmViE9IicifHwhIXRoaXMuaW5FbGVtP2U9NDY6ZT0xNyx0LnNlZWsoJCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDIzOnZhciBKPXQuTEEoMSksSz10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuaW5RdW90QXR0cj9lPTQzOnRoaXMuaW5BcG9zQXR0cj9lPTQ0OnRoaXMuaW5FbGVtP3RoaXMuaW5FbGVtJiYoZT00OSk6ZT0xNyx0LnNlZWsoSyk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDI0OnZhciBRPXQuTEEoMSksRz10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuaW5RdW90QXR0cj9lPTQzOnRoaXMuaW5BcG9zQXR0cj9lPTQ0OnRoaXMuaW5FbGVtP3RoaXMuaW5FbGVtJiYoZT00Nyk6ZT0xNyx0LnNlZWsoRyk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDI1OnZhciBZPXQuTEEoMSksWj10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLHRoaXMuaW5RdW90QXR0cj9lPTQzOnRoaXMuaW5BcG9zQXR0cj9lPTQ0OnRoaXMuaW5FbGVtP3RoaXMuaW5FbGVtJiYoZT00OCk6ZT0xNyx0LnNlZWsoWik7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDI2OnZhciBldD10LkxBKDEpLHR0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsKGV0Pj0iCSImJmV0PD0iXG4ifHxldD09IlxyInx8ZXQ+PSIgIiYmZXQ8PSIlInx8ZXQ+PSInIiYmZXQ8PSI7Inx8ZXQ+PSI9IiYmZXQ8PSJ6Inx8ZXQ9PSJ8Inx8ZXQ+PSJ+IiYmZXQ8PSLtn78ifHxldD49Iu6AgCImJmV0PD0i77+9IikmJiF0aGlzLmluRWxlbT9lPTE3OmU9MzksdC5zZWVrKHR0KTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMjc6dmFyIG50PXQuTEEoMSkscnQ9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSwobnQ+PSIJIiYmbnQ8PSJcbiJ8fG50PT0iXHIifHxudD49IiAiJiZudDw9IiEifHxudD49IiMiJiZudDw9IiUifHxudD49IigiJiZudDw9IjsifHxudD49Ij0iJiZudDw9InoifHxudD09InwifHxudD49In4iJiZudDw9Iu2fvyJ8fG50Pj0i7oCAIiYmbnQ8PSLvv70iKSYmKHRoaXMuaW5RdW90QXR0cnx8dGhpcy5pbkFwb3NBdHRyfHwhdGhpcy5pbkVsZW0pP2U9MTQ6bnQhPSciJyYmbnQhPSInInx8ISF0aGlzLmluRWxlbT9lPTM2OmU9MTcsdC5zZWVrKHJ0KTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMjg6dmFyIGl0PXQuTEEoMSksc3Q9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSx0aGlzLmluUXVvdEF0dHI/ZT00Mzp0aGlzLmluQXBvc0F0dHI/ZT00NDp0aGlzLmluRWxlbT90aGlzLmluRWxlbSYmKGU9NTYpOmU9MTcsdC5zZWVrKHN0KTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMjk6dmFyIG90PXQuTEEoMSksdXQ9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSx0aGlzLmluUXVvdEF0dHI/ZT00Mzp0aGlzLmluQXBvc0F0dHI/ZT00NDp0aGlzLmluRWxlbT90aGlzLmluRWxlbSYmKGU9NDUpOmU9MTcsdC5zZWVrKHV0KTtpZihlPj0wKXJldHVybiBlO2JyZWFrO2Nhc2UgMzA6dmFyIGF0PXQuTEEoMSksZnQ9dC5pbmRleCgpO3QucmV3aW5kKCksZT0tMSwoYXQ+PSIJIiYmYXQ8PSJcbiJ8fGF0PT0iXHIifHxhdD09IiAiKSYmKHRoaXMuaW5FbGVtfHx0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9lPTU6YXQhPSciJyYmYXQhPSInInx8ISF0aGlzLmluRWxlbT8oYXQ9PSIhInx8YXQ+PSIjIiYmYXQ8PSIlInx8YXQ+PSIoIiYmYXQ8PSI7Inx8YXQ+PSI9IiYmYXQ8PSJ6Inx8YXQ9PSJ8Inx8YXQ+PSJ+IiYmYXQ8PSLtn78ifHxhdD49Iu6AgCImJmF0PD0i77+9IikmJih0aGlzLmluUXVvdEF0dHJ8fHRoaXMuaW5BcG9zQXR0cnx8IXRoaXMuaW5FbGVtKT9lPTE0OmU9MjM6ZT0xNyx0LnNlZWsoZnQpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAzMTp2YXIgbHQ9dC5MQSgxKSxjdD10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLGx0PT0nIicmJih0aGlzLmluUXVvdEF0dHJ8fCF0aGlzLmluRWxlbSk/ZT0xNToobHQ+PSIJIiYmbHQ8PSJcbiJ8fGx0PT0iXHIifHxsdD49IiAiJiZsdDw9IiEifHxsdD49IiMiJiZsdDw9IiUifHxsdD49IiciJiZsdDw9IjsifHxsdD49Ij0iJiZsdDw9InoifHxsdD09InwifHxsdD49In4iJiZsdDw9Iu2fvyJ8fGx0Pj0i7oCAIiYmbHQ8PSLvv70iKSYmIXRoaXMuaW5FbGVtP2U9MTc6ZT0xNix0LnNlZWsoY3QpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAzMjp2YXIgaHQ9dC5MQSgxKSxwdD10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLGh0PT0iIyI/ZT0zNzooaHQ9PSJhInx8aHQ9PSJnInx8aHQ9PSJsInx8aHQ9PSJxIikmJighdGhpcy5pbkVsZW18fHRoaXMuaW5BcG9zQXR0cnx8dGhpcy5pblF1b3RBdHRyKSYmKGU9MzgpLHQuc2VlayhwdCk7aWYoZT49MClyZXR1cm4gZTticmVhaztjYXNlIDMzOnZhciBkdD10LkxBKDEpLHZ0PXQuaW5kZXgoKTt0LnJld2luZCgpLGU9LTEsZHQ9PSJ7IiYmKCF0aGlzLmluRWxlbXx8dGhpcy5pbkFwb3NBdHRyfHx0aGlzLmluUXVvdEF0dHIpP2U9Mjg6ZT0yOSx0LnNlZWsodnQpO2lmKGU+PTApcmV0dXJuIGU7YnJlYWs7Y2FzZSAzNDp2YXIgbXQ9dC5MQSgxKSxndD10LmluZGV4KCk7dC5yZXdpbmQoKSxlPS0xLG10PT0iJyImJih0aGlzLmluQXBvc0F0dHJ8fCF0aGlzLmluRWxlbSk/ZT0xODoobXQ+PSIJIiYmbXQ8PSJcbiJ8fG10PT0iXHIifHxtdD49IiAiJiZtdDw9IiUifHxtdD49IigiJiZtdDw9IjsifHxtdD49Ij0iJiZtdDw9InoifHxtdD09InwifHxtdD49In4iJiZtdDw9Iu2fvyJ8fG10Pj0i7oCAIiYmbXQ8PSLvv70iKSYmIXRoaXMuaW5FbGVtP2U9MTc6ZT0xOSx0LnNlZWsoZ3QpO2lmKGU+PTApcmV0dXJuIGV9fS5jYWxsKHRoaXMucmVjb2duaXplcixlLHQpO2lmKCFyLmFudGxyLmxhbmcuaXNVbmRlZmluZWQoaSkpcmV0dXJuIGk7dmFyIHM9bmV3IHIuYW50bHIucnVudGltZS5Ob1ZpYWJsZUFsdEV4Y2VwdGlvbih0aGlzLmdldERlc2NyaXB0aW9uKCksMTYsbix0KTt0aHJvdyB0aGlzLmVycm9yKHMpLHN9LGR1bW15Om51bGx9KX0oKSx0LlhNTExleGVyPXN9KSxkZWZpbmUoImFjZS9tb2RlL3hxdWVyeS9YUURUUGFyc2VyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL21vZGUveHF1ZXJ5L2FudGxyMy1hbGwiLCJhY2UvbW9kZS94cXVlcnkvWFF1ZXJ5U2VtYW50aWNIaWdobGlnaHRlciJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL2FudGxyMy1hbGwiKS5vcmcsaT1lKCIuL1hRdWVyeVNlbWFudGljSGlnaGxpZ2h0ZXIiKS5YUXVlcnlTZW1hbnRpY0hpZ2hsaWdodGVyLHM9dC5YUURUUGFyc2VyPWZ1bmN0aW9uKGUsdCl7dGhpcy5oaWdobGlnaHRlcj1uZXcgaTt2YXIgbj10aGlzO2UuZ2V0VG9rZW5Tb3VyY2UoKS5hZGRDb21tZW50PWZ1bmN0aW9uKHQscil7dmFyIGk9ZS5nZXRUb2tlblNvdXJjZSgpLmNvbW1lbnRzO2Zvcih2YXIgcyBpbiBpKXt2YXIgbz1pW3NdO24uaGlnaGxpZ2h0ZXIuYWRkVG9rZW4oby5zdGFydCxvLnN0b3AsImNvbW1lbnQiKX1lLmdldFRva2VuU291cmNlKCkuY29tbWVudHM9W10sbi5oaWdobGlnaHRlci5hZGRUb2tlbih0LHIsImNvbW1lbnQiKX0scy5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxlLHQpfTtyLmFudGxyLmxhbmcuZXh0ZW5kKHMsci5hbnRsci5ydW50aW1lLlBhcnNlcix7fSl9KSxkZWZpbmUoImFjZS9tb2RlL3hxdWVyeS9YUXVlcnlTZW1hbnRpY0hpZ2hsaWdodGVyIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIiwiYWNlL21vZGUveHF1ZXJ5L1Bvc2l0aW9uIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4vUG9zaXRpb24iKS5Qb3NpdGlvbixzPXQuWFF1ZXJ5U2VtYW50aWNIaWdobGlnaHRlcj1mdW5jdGlvbigpe3RoaXMudG9rZW5pemVyPW51bGwsdGhpcy5wbGFpbj1udWxsLHRoaXMuc291cmNlPVtdLHRoaXMubGluZXM9W10sdGhpcy5nZXRUb2tlbnM9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgQXJyYXkodGhpcy5zb3VyY2UubGVuZ3RoKSx0PW5ldyBBcnJheSh0aGlzLnNvdXJjZS5sZW5ndGgpLG49InN0YXJ0Ijtmb3IoaSBpbiB0aGlzLnNvdXJjZSl7dmFyIHI9W10scz1bXTt0aGlzLmxpbmVzW2ldJiYocz10aGlzLmxpbmVzW2ldLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5wb3NpdGlvbi5nZXRPZmZzZXQoKS10LnBvc2l0aW9uLmdldE9mZnNldCgpfSkpO3ZhciBvPXRoaXMuc291cmNlW2ldLHU9IiIsYT0wO2ZvcihqIGluIHMpe3ZhciBmPXNbal0sbD1mLnBvc2l0aW9uO2lmKGwuZ2V0T2Zmc2V0KCk+YSl7dmFyIGM9by5zdWJzdHJpbmcoYSxsLmdldE9mZnNldCgpKTt1Kz1jLHIucHVzaCh7dHlwZToidGV4dCIsdmFsdWU6Y30pfWE9bC5nZXRPZmZzZXQoKStsLmdldExlbmd0aCgpLGM9by5zdWJzdHJpbmcobC5nZXRPZmZzZXQoKSxhKSx1Kz1jLHIucHVzaCh7dHlwZTpmLnR5cGUsdmFsdWU6Y30pfXZhciBoPSJzdGFydCI7ci5sZW5ndGg+MCYmcltyLmxlbmd0aC0xXS50eXBlLGg9aCE9ImNvbW1lbnQiJiZoIT0ic3RyaW5nIiYmaCE9ImNkYXRhIiYmaCE9InRhZyI/InN0YXJ0IjpoLGE8by5sZW5ndGgmJihjPW8uc3Vic3RyaW5nKGEpLHIucHVzaCh7dHlwZToidGV4dCIsdmFsdWU6Y30pLHUrPWMpLG89PXU/KGVbaV09cix0W2ldPWgpOihlW2ldPVt7dHlwZToidGV4dCIsdmFsdWU6b31dLHRbaV09aCk7aWYoZVtpXS5sZW5ndGg9PT0xJiZlW2ldWzBdLnR5cGU9PT0idGV4dCImJnRoaXMudG9rZW5pemVyIGluc3RhbmNlb2YgT2JqZWN0KXt2YXIgcD10W2ktMV0/dFtpLTFdOiJzdGFydCIsZD10aGlzLnRva2VuaXplci5nZXRMaW5lVG9rZW5zKGVbaV1bMF0udmFsdWUscCk7ZVtpXT1kLnRva2Vucyx0W2ldPWQuc3RhdGV9fXJldHVybntzdGF0ZXM6dCxsaW5lczplfX0sdGhpcy5hZGRUb2tlbj1mdW5jdGlvbihlLHQsbil7dmFyIGk9dGhpcy5wbGFpbi5zdWJzdHJpbmcoMCxlKSxzPXRoaXMucGxhaW4uc3Vic3RyaW5nKDAsZSkuc3BsaXQoIlxuIikubGVuZ3RoO3M9cz09MD8wOnMtMTt2YXIgbz1pLmxhc3RJbmRleE9mKCJcbiIpO289bz09LTE/ZTplLWkubGFzdEluZGV4T2YoIlxuIiktMTt2YXIgdT1lLGE9dGhpcy5wbGFpbi5zdWJzdHJpbmcoZSx0KSxmPXM7Zm9yKHZhciBsIGluIGEpe3ZhciBjPWFbbF07aWYoYz09IlxuIil7dmFyIGg9bDtoPWg8dD9oOnQsdGhpcy5hZGRQb3NpdGlvbihuZXcgcihmLG8saCksbiksZisrLG89MCx1PWx9fXRoaXMuYWRkUG9zaXRpb24obmV3IHIoZixvLHQtdSsxKSxuKX0sdGhpcy5hZGRQb3NpdGlvbj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0TGluZSgpO3RoaXMubGluZXNbbl18fCh0aGlzLmxpbmVzW25dPVtdKSx0aGlzLmxpbmVzW25dLnB1c2goe3R5cGU6dCxwb3NpdGlvbjplfSl9LHRoaXMuc2V0U291cmNlPWZ1bmN0aW9uKGUpe3RoaXMucGxhaW49ZS5kYXRhLHRoaXMuc291cmNlPXRoaXMucGxhaW4uc3BsaXQoIlxuIil9fX0pLGRlZmluZSgiYWNlL21vZGUveHF1ZXJ5L1Bvc2l0aW9uIixbInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQuUG9zaXRpb249ZnVuY3Rpb24oZSx0LG4pe3RoaXMubGluZT1lLHRoaXMub2Zmc2V0PXQsdGhpcy5sZW5ndGg9bix0aGlzLmdldExpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saW5lfSx0aGlzLmdldE9mZnNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9mZnNldH0sdGhpcy5nZXRMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9fX0pLGRlZmluZSgiYWNlL3Rva2VuaXplciIsWyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1mdW5jdGlvbihlLHQpe3Q9dD8iZyIrdDoiZyIsdGhpcy5ydWxlcz1lLHRoaXMucmVnRXhwcz17fSx0aGlzLm1hdGNoTWFwcGluZ3M9e307Zm9yKHZhciBuIGluIHRoaXMucnVsZXMpe3ZhciByPXRoaXMucnVsZXNbbl0saT1yLHM9W10sbz0wLHU9dGhpcy5tYXRjaE1hcHBpbmdzW25dPXt9O2Zvcih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKXtpW2FdLnJlZ2V4IGluc3RhbmNlb2YgUmVnRXhwJiYoaVthXS5yZWdleD1pW2FdLnJlZ2V4LnRvU3RyaW5nKCkuc2xpY2UoMSwtMSkpO3ZhciBmPShuZXcgUmVnRXhwKCIoPzooIitpW2FdLnJlZ2V4KyIpfCguKSkiKSkuZXhlYygiYSIpLmxlbmd0aC0yLGw9aVthXS5yZWdleC5yZXBsYWNlKC9cXChbMC05XSspL2csZnVuY3Rpb24oZSx0KXtyZXR1cm4iXFwiKyhwYXJzZUludCh0LDEwKStvKzEpfSk7aWYoZj4xJiZpW2FdLnRva2VuLmxlbmd0aCE9PWYtMSl0aHJvdyBuZXcgRXJyb3IoIk1hdGNoaW5nIGdyb3VwcyBhbmQgbGVuZ3RoIG9mIHRoZSB0b2tlbiBhcnJheSBkb24ndCBtYXRjaCBpbiBydWxlICMiK2ErIiBvZiBzdGF0ZSAiK24pO3Vbb109e3J1bGU6YSxsZW46Zn0sbys9ZixzLnB1c2gobCl9dGhpcy5yZWdFeHBzW25dPW5ldyBSZWdFeHAoIig/OigiK3Muam9pbigiKXwoIikrIil8KC4pKSIsdCl9fTsoZnVuY3Rpb24oKXt0aGlzLmdldExpbmVUb2tlbnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10fHwic3RhcnQiLHI9dGhpcy5ydWxlc1tuXSxpPXRoaXMubWF0Y2hNYXBwaW5nc1tuXSxzPXRoaXMucmVnRXhwc1tuXTtzLmxhc3RJbmRleD0wO3ZhciBvLHU9W10sYT0wLGY9e3R5cGU6bnVsbCx2YWx1ZToiIn07d2hpbGUobz1zLmV4ZWMoZSkpe3ZhciBsPSJ0ZXh0IixjPW51bGwsaD1bb1swXV07Zm9yKHZhciBwPTA7cDxvLmxlbmd0aC0yO3ArKyl7aWYob1twKzFdPT09dW5kZWZpbmVkKWNvbnRpbnVlO2M9cltpW3BdLnJ1bGVdLGlbcF0ubGVuPjEmJihoPW8uc2xpY2UocCsyLHArMStpW3BdLmxlbikpLHR5cGVvZiBjLnRva2VuPT0iZnVuY3Rpb24iP2w9Yy50b2tlbi5hcHBseSh0aGlzLGgpOmw9Yy50b2tlbixjLm5leHQmJihuPWMubmV4dCxyPXRoaXMucnVsZXNbbl0saT10aGlzLm1hdGNoTWFwcGluZ3Nbbl0sYT1zLmxhc3RJbmRleCxzPXRoaXMucmVnRXhwc1tuXSxzLmxhc3RJbmRleD1hKTticmVha31pZihoWzBdKXt0eXBlb2YgbD09InN0cmluZyImJihoPVtoLmpvaW4oIiIpXSxsPVtsXSk7Zm9yKHZhciBwPTA7cDxoLmxlbmd0aDtwKyspe2lmKCFoW3BdKWNvbnRpbnVlOyghY3x8Yy5tZXJnZXx8bFtwXT09PSJ0ZXh0IikmJmYudHlwZT09PWxbcF0/Zi52YWx1ZSs9aFtwXTooZi50eXBlJiZ1LnB1c2goZiksZj17dHlwZTpsW3BdLHZhbHVlOmhbcF19KX19aWYoYT09ZS5sZW5ndGgpYnJlYWs7YT1zLmxhc3RJbmRleH1yZXR1cm4gZi50eXBlJiZ1LnB1c2goZikse3Rva2Vuczp1LHN0YXRlOm59fX0pLmNhbGwoci5wcm90b3R5cGUpLHQuVG9rZW5pemVyPXJ9KSxkZWZpbmUoImFjZS9tb2RlL3hxdWVyeV9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL29vcCIsImFjZS9saWIvbGFuZyIsImFjZS9tb2RlL3RleHRfaGlnaGxpZ2h0X3J1bGVzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xpYi9vb3AiKSxpPWUoIi4uL2xpYi9sYW5nIikscz1lKCIuL3RleHRfaGlnaGxpZ2h0X3J1bGVzIikuVGV4dEhpZ2hsaWdodFJ1bGVzLG89ZnVuY3Rpb24oKXt2YXIgZT1pLmFycmF5VG9NYXAoImFmdGVyfGFuY2VzdG9yfGFuY2VzdG9yLW9yLXNlbGZ8YW5kfGFzfGFzY2VuZGluZ3xhdHRyaWJ1dGV8YmVmb3JlfGNhc2V8Y2FzdHxjYXN0YWJsZXxjaGlsZHxjb2xsYXRpb258Y29tbWVudHxjb3B5fGNvdW50fGRlY2xhcmV8ZGVmYXVsdHxkZWxldGV8ZGVzY2VuZGFudHxkZXNjZW5kYW50LW9yLXNlbGZ8ZGVzY2VuZGluZ3xkaXZ8ZG9jdW1lbnR8ZG9jdW1lbnQtbm9kZXxlbGVtZW50fGVsc2V8ZW1wdHl8ZW1wdHktc2VxdWVuY2V8ZW5kfGVxfGV2ZXJ5fGV4Y2VwdHxmaXJzdHxmb2xsb3dpbmd8Zm9sbG93aW5nLXNpYmxpbmd8Zm9yfGZ1bmN0aW9ufGdlfGdyb3VwfGd0fGlkaXZ8aWZ8aW1wb3J0fGluc2VydHxpbnN0YW5jZXxpbnRlcnNlY3R8aW50b3xpc3xpdGVtfGxhc3R8bGV8bGV0fGx0fG1vZHxtb2RpZnl8bW9kdWxlfG5hbWVzcGFjZXxuYW1lc3BhY2Utbm9kZXxuZXxub2RlfG9ubHl8b3J8b3JkZXJ8b3JkZXJlZHxwYXJlbnR8cHJlY2VkaW5nfHByZWNlZGluZy1zaWJsaW5nfHByb2Nlc3NpbmctaW5zdHJ1Y3Rpb258cmVuYW1lfHJlcGxhY2V8cmV0dXJufHNhdGlzZmllc3xzY2hlbWEtYXR0cmlidXRlfHNjaGVtYS1lbGVtZW50fHNlbGZ8c29tZXxzdGFibGV8c3RhcnR8c3dpdGNofHRleHR8dG98dHJlYXR8dHJ5fHR5cGVzd2l0Y2h8dW5pb258dW5vcmRlcmVkfHZhbGlkYXRlfHdoZXJlfHdpdGh8eHF1ZXJ5fGNvbnRhaW5zfHBhcmFncmFwaHN8c2VudGVuY2VzfHRpbWVzfHdvcmRzfGJ5fGNvbGxlY3Rpb25yZXR1cm58dmFyaWFibGV8dmVyc2lvbnxvcHRpb258d2hlbnxlbmNvZGluZ3x0b3N3aXRjaHxjYXRjaHx0dW1ibGluZ3xzbGlkaW5nfHdpbmRvd3xhdHx1c2luZ3xzdGVtbWluZ3xjb2xsZWN0aW9ufHNjaGVtYXx3aGlsZXxvbnxub2Rlc3xpbmRleHxleHRlcm5hbHx0aGVufGlufHVwZGF0aW5nfHZhbHVlfG9mfGNvbnRhaW5zYnJlYWt8bG9vcHxjb250aW51ZXxleGl0fHJldHVybmluZyIuc3BsaXQoInwiKSk7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46InRleHQiLHJlZ2V4OiI8XFwhXFxbQ0RBVEFcXFsiLG5leHQ6ImNkYXRhIn0se3Rva2VuOiJ4bWxfcGUiLHJlZ2V4OiI8XFw/Lio/XFw/PiJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6IjxcXCEtLSIsbmV4dDoiY29tbWVudCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6IlxcKDoiLG5leHQ6ImNvbW1lbnQifSx7dG9rZW46InRleHQiLHJlZ2V4OiI8XFwvPyIsbmV4dDoidGFnIn0se3Rva2VuOiJjb25zdGFudCIscmVnZXg6IlsrLV0/XFxkKyg/Oig/OlxcLlxcZCopPyg/OltlRV1bKy1dP1xcZCspPyk/XFxiIn0se3Rva2VuOiJ2YXJpYWJsZSIscmVnZXg6IlxcJFthLXpBLVpfXVthLXpBLVowLTlfXFwtOl0qXFxiIn0se3Rva2VuOiJzdHJpbmciLHJlZ2V4OiciLio/Iid9LHt0b2tlbjoic3RyaW5nIixyZWdleDoiJy4qPycifSx7dG9rZW46InRleHQiLHJlZ2V4OiJcXHMrIn0se3Rva2VuOiJzdXBwb3J0LmZ1bmN0aW9uIixyZWdleDoiXFx3W1xcdytfXFwtOl0rKD89XFwoKSJ9LHt0b2tlbjpmdW5jdGlvbih0KXtyZXR1cm4gZVt0XT8ia2V5d29yZCI6ImlkZW50aWZpZXIifSxyZWdleDoiW2EtekEtWl8kXVthLXpBLVowLTlfJF0qXFxiIn0se3Rva2VuOiJrZXl3b3JkLm9wZXJhdG9yIixyZWdleDoiXFwqfD18PHw+fFxcLXxcXCsifSx7dG9rZW46ImxwYXJlbiIscmVnZXg6IltbKHtdIn0se3Rva2VuOiJycGFyZW4iLHJlZ2V4OiJbXFxdKX1dIn1dLHRhZzpbe3Rva2VuOiJ0ZXh0IixyZWdleDoiPiIsbmV4dDoic3RhcnQifSx7dG9rZW46Im1ldGEudGFnIixyZWdleDoiWy1fYS16QS1aMC05Ol0rIn0se3Rva2VuOiJ0ZXh0IixyZWdleDoiXFxzKyJ9LHt0b2tlbjoic3RyaW5nIixyZWdleDonIi4qPyInfSx7dG9rZW46InN0cmluZyIscmVnZXg6IicuKj8nIn1dLGNkYXRhOlt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiJcXF1cXF0+IixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6IlxccysifSx7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIoPzpbXlxcXV18XFxdKD8hXFxdPikpKyJ9XSxjb21tZW50Olt7dG9rZW46ImNvbW1lbnQiLHJlZ2V4OiIuKj8tLT4iLG5leHQ6InN0YXJ0In0se3Rva2VuOiJjb21tZW50IixyZWdleDoiLio6XFwpIixuZXh0OiJzdGFydCJ9LHt0b2tlbjoiY29tbWVudCIscmVnZXg6Ii4rIn1dfX07ci5pbmhlcml0cyhvLHMpLHQuWFF1ZXJ5SGlnaGxpZ2h0UnVsZXM9b30pLGRlZmluZSgiYWNlL21vZGUvdGV4dF9oaWdobGlnaHRfcnVsZXMiLFsicmVxdWlyZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJhY2UvbGliL2xhbmciXSxmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vbGliL2xhbmciKSxpPWZ1bmN0aW9uKCl7dGhpcy4kcnVsZXM9e3N0YXJ0Olt7dG9rZW46ImVtcHR5X2xpbmUiLHJlZ2V4OiJeJCJ9LHt0b2tlbjoidGV4dCIscmVnZXg6Ii4rIn1dfX07KGZ1bmN0aW9uKCl7dGhpcy5hZGRSdWxlcz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKXt2YXIgcj1lW25dO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgcz1yW2ldO3MubmV4dCYmKHMubmV4dD10K3MubmV4dCl9dGhpcy4kcnVsZXNbdCtuXT1yfX0sdGhpcy5nZXRSdWxlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRydWxlc30sdGhpcy5lbWJlZFJ1bGVzPWZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBzPShuZXcgZSkuZ2V0UnVsZXMoKTtpZihpKWZvcih2YXIgbz0wO288aS5sZW5ndGg7bysrKWlbb109dCtpW29dO2Vsc2V7aT1bXTtmb3IodmFyIHUgaW4gcylpLnB1c2godCt1KX10aGlzLmFkZFJ1bGVzKHMsdCk7Zm9yKHZhciBvPTA7bzxpLmxlbmd0aDtvKyspQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkodGhpcy4kcnVsZXNbaVtvXV0sci5kZWVwQ29weShuKSk7dGhpcy4kZW1iZWRzfHwodGhpcy4kZW1iZWRzPVtdKSx0aGlzLiRlbWJlZHMucHVzaCh0KX0sdGhpcy5nZXRFbWJlZHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZW1iZWRzfX0pLmNhbGwoaS5wcm90b3R5cGUpLHQuVGV4dEhpZ2hsaWdodFJ1bGVzPWl9KQ==]]></data>
	</file>
	<file>
	  <filename>/AceEditor.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogQWNlRWRpdG9yIC0gU3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IgaHR0cDovL2FjZS5hamF4Lm9yZy8uDQojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0DQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgRm9yIEhlbHAgYnVpbGRpbmcgbW9kdWxlczoNCiMgLSBSZWFkIHRoZSBEb2N1bWVudGF0aW9uIGFzIGl0IGJlY29tZXMgYXZhaWxhYmxlIGF0DQojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8NCiMgLSBDaGVjayBvdXQgdGhlIFNrZWxldG9uIE1vZHVsZSBmb3IgYSBjb21tZW50ZWQgZXhhbXBsZQ0KIyAtIExvb2sgYXQgb3RoZXIgbW9kdWxlcywgYW5kIGxlYXJuIGZyb20gdGhlIHNvdXJjZQ0KIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcNCiMgLSBDaGF0IHdpdGggZGV2ZWxvcGVycyBvbiB0aGUgI2NtcyBJUkMgY2hhbm5lbA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KY2xhc3MgQWNlRWRpdG9yIGV4dGVuZHMgQ01TTW9kdWxlDQp7DQoJIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSMgQXR0cmlidXRlcw0KCSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0JDQoNCglwcm90ZWN0ZWQgJG5vZWRpdG9ycyAgICAgICA9IDA7DQoJcHVibGljICRoZWFkZXJpbmZvc2VudCAgICAgPSBmYWxzZTsNCglwcml2YXRlICRfaHRtbGFjdGl2ZSAgICAgICA9IGZhbHNlOw0KICAgIHByaXZhdGUgJF9wbGFpbmFjdGl2ZSAgICA9IGZhbHNlOw0KCXByaXZhdGUgJF9qYXZhc2NyaXB0YWN0aXZlID0gZmFsc2U7DQoJcHJpdmF0ZSAkX2Nzc2FjdGl2ZSAgICAgICAgPSBmYWxzZTsNCglwcml2YXRlICRfcGhwYWN0aXZlICAgICAgICA9IGZhbHNlOw0KICAgIHByaXZhdGUgJF94bWxhY3RpdmUgICAgICA9IGZhbHNlOw0KICAgIHByaXZhdGUgJF9qc29uYWN0aXZlICAgICA9IGZhbHNlOw0KCXByaXZhdGUgJF9kZWZhdWx0YWN0aXZlICAgID0gZmFsc2U7DQoNCgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJIyBNb2R1bGUgYXBpIG1ldGhvZHMNCgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQkNCg0KCXB1YmxpYyBmdW5jdGlvbiBHZXROYW1lKCkNCgl7DQoJCXJldHVybiAnQWNlRWRpdG9yJzsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkNCgl7DQoJCXJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIEdldFZlcnNpb24oKQ0KCXsNCgkJcmV0dXJuICcwLjIuNC4yJzsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gR2V0SGVscCgpDQoJew0KCQkkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7DQoJCSRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCgkJJHNtYXJ0eS0+YXNzaWduKCdtb2R1bGVfcGF0aCcsICgkdGhpcy0+R2V0TW9kdWxlVVJMUGF0aCgpKSk7DQoNCgkJJHNtYXJ0eS0+YXNzaWduKCdoZWxwX2dlbmVyYWxfdGl0bGUnLCAkdGhpcy0+TGFuZygnaGVscF9nZW5lcmFsX3RpdGxlJykpOw0KCQkkc21hcnR5LT5hc3NpZ24oJ2hlbHBfZ2VuZXJhbF90ZXh0JywgJHRoaXMtPkxhbmcoJ2hlbHBfZ2VuZXJhbF90ZXh0JykpOw0KCQkkc21hcnR5LT5hc3NpZ24oJ2hlbHBfa2V5Ym9hcmRzaG9ydGN1dHNfdGl0bGUnLCAkdGhpcy0+TGFuZygnaGVscF9rZXlib2FyZHNob3J0Y3V0c190aXRsZScpKTsNCgkJJHNtYXJ0eS0+YXNzaWduKCdoZWxwX2tleWJvYXJkc2hvcnRjdXRzX2NvbnRlbnQnLCAkdGhpcy0+TGFuZygnaGVscF9rZXlib2FyZHNob3J0Y3V0c19jb250ZW50JykpOw0KCQkkc21hcnR5LT5hc3NpZ24oJ2hlbHBfZnJvbnRlbmRfdGl0bGUnLCAkdGhpcy0+TGFuZygnaGVscF9mcm9udGVuZF90aXRsZScpKTsNCgkJJHNtYXJ0eS0+YXNzaWduKCdoZWxwX2Zyb250ZW5kX2NvbnRlbnQnLCAkdGhpcy0+TGFuZygnaGVscF9mcm9udGVuZF9jb250ZW50JykpOw0KCQkkc21hcnR5LT5hc3NpZ24oJ2hlbHBfZnJvbnRlbmRfc2FtcGxlJywgY21zX2h0bWxlbnRpdGllcygkdGhpcy0+TGFuZygnaGVscF9mcm9udGVuZF9zYW1wbGUnKSkpOw0KCQkkc21hcnR5LT5hc3NpZ24oJ2hlbHBfYWJvdXRfdGl0bGUnLCAkdGhpcy0+TGFuZygnaGVscF9hYm91dF90aXRsZScpKTsNCgkJJHNtYXJ0eS0+YXNzaWduKCdoZWxwX2Fib3V0X3RleHQnLCAkdGhpcy0+TGFuZygnaGVscF9hYm91dF90ZXh0JykpOw0KDQoJCXJldHVybiAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdoZWxwLnRwbCcpOw0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKQ0KCXsNCgkJcmV0dXJuICdHb3JhbiBJbGljJzsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQ0KCXsNCgkJcmV0dXJuICd1bmlxdTNlQGdtYWlsLmNvbSc7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOw0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpDQoJew0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkNCgl7DQoJCSR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOw0KCQkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7DQoNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FjdGlvbicsIENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdtb2RlcycsIENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0aGVtZXMnLCBDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbW9kZScsIENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0aGVtZScsIENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd3aWR0aCcsIENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdoZWlnaHQnLCBDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGl2aWQnLCBDTEVBTl9TVFJJTkcpOw0KCQkNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUFkbWluKCkNCgl7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2FjdGlvbicsICdkZWZhdWx0JywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fYWN0aW9uJykpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdtb2RlcycsICdodG1sJywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fbW9kZXMnKSk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3RoZW1lcycsICd0ZXh0bWF0ZScsICR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX3RoZW1lcycpKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignbW9kZScsICdodG1sJywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fbW9kZScpKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigndGhlbWUnLCAndGV4dG1hdGUnLCAkdGhpcy0+TGFuZygnaGVscF9wYXJhbV90aGVtZScpKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignd2lkdGgnLCAnNDAwJywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fd2lkdGgnKSk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2hlaWdodCcsICc0MDAnLCAkdGhpcy0+TGFuZygnaGVscF9wYXJhbV9oZWlnaHQnKSk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2RpdmlkJywgJ2VkaXRvcicsICR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX2RpdmlkJykpOw0KCQkNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpDQoJew0KCQlpZiAodmVyc2lvbl9jb21wYXJlKENNU19WRVJTSU9OLCAnMS4xMCcpIDwgMCkgew0KCQkJJHRoaXMtPkluaXRpYWxpemVGcm9udGVuZCgpOw0KCQkJJHRoaXMtPkluaXRpYWxpemVBZG1pbigpOw0KCQl9DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIExhenlMb2FkRnJvbnRlbmQoKQ0KCXsNCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIExhenlMb2FkQWRtaW4oKQ0KCXsNCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkNCgl7DQoJCXJldHVybiB0cnVlOw0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKQ0KCXsNCgkJcmV0dXJuICdteXByZWZzJzsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2FkbWluZGVzY3JpcHRpb24nKTsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkNCgl7DQoJCXJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0FjZUVkaXRvciBVc2VyIFByZWZlcmVuY2UnKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJyk7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkNCgl7DQoJCXJldHVybiAiMS45IjsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gTWF4aW11bUNNU1ZlcnNpb24oKQ0KCXsNCgkJcmV0dXJuICIxLjExLjkiOw0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQ0KCXsNCgkJcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOw0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3JlYWxseV91bmluc3RhbGwnKTsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gSGFzQ2FwYWJpbGl0eSgkY2FwYWJpbGl0eSwgJHBhcmFtcyA9IGFycmF5KCkpDQoJew0KCQlzd2l0Y2ggKCRjYXBhYmlsaXR5KSB7DQoJCQlkZWZhdWx0Og0KCQkJCXJldHVybiBmYWxzZTsNCgkJCQlicmVhazsNCgkJCQ0KCQkJY2FzZSAnd3lzaXd5Zyc6DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJCWJyZWFrOw0KCQkJDQoJCQljYXNlICdzeW50YXhoaWdobGlnaHRpbmcnOg0KCQkJCXJldHVybiB0cnVlOw0KCQkJCWJyZWFrOw0KCQl9DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIElzV1lTSVdZRygpDQoJew0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIElzU3ludGF4SGlnaGxpZ2h0ZXIoKQ0KCXsNCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIFN5bnRheFBhZ2VGb3JtU3VibWl0KCkNCgl7DQoJCXJldHVybjsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gRG9BY3Rpb24oJG5hbWUsICRpZCwgJHBhcmFtcywgJHJldHVybmlkID0gJycpDQoJew0KCQkkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7DQoJCQ0KCQkkc21hcnR5LT5hc3NpZ25fYnlfcmVmKCdhY2VfbW9kJywgJHRoaXMpOw0KCQkkc21hcnR5LT5hc3NpZ25fYnlfcmVmKCdhY3Rpb25pZCcsICRpZCk7DQoJCSRzbWFydHktPmFzc2lnbl9ieV9yZWYoJ3JldHVybmlkJywgJHJldHVybmlkKTsNCgkJDQoJCXBhcmVudDo6RG9BY3Rpb24oJG5hbWUsICRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gU3ludGF4VGV4dGFyZWEoJG5hbWUgPSAndGV4dGFyZWEnLCAkc3ludGF4ID0gJ2h0bWwnLCAkY29sdW1ucyA9ICc4MCcsICRyb3dzID0gJzE1JywgJGVuY29kaW5nID0gJycsICRjb250ZW50ID0gJycsICRzdHlsZXNoZWV0ID0gJycsICRhZGR0ZXh0ID0gJycpDQoJew0KCQkkdGV4dGFyZWEgICAgICAgICAgID0gJyc7DQoJCSR0aGlzLT5zeW50YXhhY3RpdmUgPSB0cnVlOw0KCQkkc21hcnR5ICAgICAgICAgICAgID0gJHRoaXMtPnNtYXJ0eTsNCgkJJGNvbmZpZyAgICAgICAgICAgICA9IGNtc21zKCktPkdldENvbmZpZygpOw0KICAgICRzbWFydHktPmFzc2lnbl9ieV9yZWYoJ2FjZV9tb2QnLCAkdGhpcyk7DQoJCSRzbWFydHktPmFzc2lnbigndGV4dGFyZWFpZCcsICJhY2VfZWRpdG9yIiAuICR0aGlzLT5ub2VkaXRvcnMpOw0KCQkkc21hcnR5LT5hc3NpZ24oJ2VkaXRvcmlkJywgImFjZS1lZGl0b3IiIC4gJHRoaXMtPm5vZWRpdG9ycyk7DQoJCSRzbWFydHktPmFzc2lnbigndGV4dGFyZWFuYW1lJywgJG5hbWUpOw0KCQkkc21hcnR5LT5hc3NpZ24oJ3N5bnRheF9jb250ZW50JywgJGNvbnRlbnQpOw0KCQkkc21hcnR5LT5hc3NpZ24oJ2FjZV9pZCcsICR0aGlzLT5ub2VkaXRvcnMpOw0KCQkNCgkJLy8gQXNzaWduIHByZWZzDQoJCSRzbWFydHktPmFzc2lnbignd2lkdGgnLCAkdGhpcy0+QWNlR2V0UHJlZmVyZW5jZSgnd2lkdGgnLCAnODAnKSk7DQoJCSRzbWFydHktPmFzc2lnbignaGVpZ2h0JywgJHRoaXMtPkFjZUdldFByZWZlcmVuY2UoJ2hlaWdodCcsICc0MCcpKTsNCgkJJHNtYXJ0eS0+YXNzaWduKCd0aGVtZScsICR0aGlzLT5BY2VHZXRQcmVmZXJlbmNlKCd0aGVtZScpKTsNCgkJJHNtYXJ0eS0+YXNzaWduKCdmb250c2l6ZScsICR0aGlzLT5BY2VHZXRQcmVmZXJlbmNlKCdmb250c2l6ZScpKTsNCgkJJHNtYXJ0eS0+YXNzaWduKCdzb2Z0X3dyYXAnLCAkdGhpcy0+QWNlR2V0UHJlZmVyZW5jZSgnc29mdF93cmFwJykpOw0KCQkNCgkJaWYgKCR0aGlzLT5BY2VHZXRQcmVmZXJlbmNlKCdlbmFibGVfaWUnKSkgew0KCQkJJHNtYXJ0eS0+YXNzaWduKCdlbmFibGVfaWUnLCAndHJ1ZScpOw0KCQl9IGVsc2Ugew0KCQkJJHNtYXJ0eS0+YXNzaWduKCdlbmFibGVfaWUnLCAnZmFsc2UnKTsNCgkJfQ0KCQkNCgkJaWYgKCR0aGlzLT5BY2VHZXRQcmVmZXJlbmNlKCdmdWxsX2xpbmUnKSkgew0KCQkJJHNtYXJ0eS0+YXNzaWduKCdmdWxsX2xpbmUnLCAnbGluZScpOw0KCQl9IGVsc2Ugew0KCQkJJHNtYXJ0eS0+YXNzaWduKCdmdWxsX2xpbmUnLCAndGV4dCcpOw0KCQl9DQoJCQ0KCQlpZiAoJHRoaXMtPkFjZUdldFByZWZlcmVuY2UoJ2hpZ2hsaWdodF9hY3RpdmUnKSkgew0KCQkJJHNtYXJ0eS0+YXNzaWduKCdoaWdobGlnaHRfYWN0aXZlJywgJ3RydWUnKTsNCgkJfSBlbHNlIHsNCgkJCSRzbWFydHktPmFzc2lnbignaGlnaGxpZ2h0X2FjdGl2ZScsICdmYWxzZScpOw0KCQl9DQoJCQ0KCQlpZiAoJHRoaXMtPkFjZUdldFByZWZlcmVuY2UoJ3Nob3dfaW52aXNpYmxlcycpKSB7DQoJCQkkc21hcnR5LT5hc3NpZ24oJ3Nob3dfaW52aXNpYmxlcycsICd0cnVlJyk7DQoJCX0gZWxzZSB7DQoJCQkkc21hcnR5LT5hc3NpZ24oJ3Nob3dfaW52aXNpYmxlcycsICdmYWxzZScpOw0KCQl9DQoJCQ0KCQlpZiAoJHRoaXMtPkFjZUdldFByZWZlcmVuY2UoJ3BlcnNpc3RlbnRfaHNjcm9sbCcpKSB7DQoJCQkkc21hcnR5LT5hc3NpZ24oJ3BlcnNpc3RlbnRfaHNjcm9sbCcsICd0cnVlJyk7DQoJCX0gZWxzZSB7DQoJCQkkc21hcnR5LT5hc3NpZ24oJ3BlcnNpc3RlbnRfaHNjcm9sbCcsICdmYWxzZScpOw0KCQl9DQoJCQ0KCQlpZiAoJHRoaXMtPkFjZUdldFByZWZlcmVuY2UoJ3Nob3dfZ3V0dGVyJykpIHsNCgkJCSRzbWFydHktPmFzc2lnbignc2hvd19ndXR0ZXInLCAndHJ1ZScpOw0KCQl9IGVsc2Ugew0KCQkJJHNtYXJ0eS0+YXNzaWduKCdzaG93X2d1dHRlcicsICdmYWxzZScpOw0KCQl9DQoJCQ0KCQlpZiAoJHRoaXMtPkFjZUdldFByZWZlcmVuY2UoJ3ByaW50X21hcmdpbicpKSB7DQoJCQkkc21hcnR5LT5hc3NpZ24oJ3ByaW50X21hcmdpbicsICd0cnVlJyk7DQoJCX0gZWxzZSB7DQoJCQkkc21hcnR5LT5hc3NpZ24oJ3ByaW50X21hcmdpbicsICdmYWxzZScpOw0KCQl9DQoJCQ0KCQlpZiAoJHRoaXMtPkFjZUdldFByZWZlcmVuY2UoJ3NvZnRfdGFiJykpIHsNCgkJCSRzbWFydHktPmFzc2lnbignc29mdF90YWInLCAndHJ1ZScpOw0KCQl9IGVsc2Ugew0KCQkJJHNtYXJ0eS0+YXNzaWduKCdzb2Z0X3RhYicsICdmYWxzZScpOw0KCQl9DQoJCQ0KCQlpZiAoJHRoaXMtPkFjZUdldFByZWZlcmVuY2UoJ2hpZ2hsaWdodF9zZWxlY3RlZCcpKSB7DQoJCQkkc21hcnR5LT5hc3NpZ24oJ2hpZ2hsaWdodF9zZWxlY3RlZCcsICd0cnVlJyk7DQoJCX0gZWxzZSB7DQoJCQkkc21hcnR5LT5hc3NpZ24oJ2hpZ2hsaWdodF9zZWxlY3RlZCcsICdmYWxzZScpOw0KCQl9DQogICAgICAgIC8vIFRPRE8gY291bGQgZG8gYWxsIHRoZSBzd2l0Y2hpbmcgaW4gaGVyZSwgbGlzdCBhbGwgbW9kZXMsIHRoZW4gc3ludGF4IGNvdWxkIGJlIGF1dG8gc2V0IHdpdGhvdXQgY2hvb3Npbmcgb25lIGluIHByZWZlcmVuY2VzIA0KCQlzd2l0Y2ggKCRzeW50YXgpIHsNCgkJCWNhc2UgJ2h0bWwnOg0KCQkJCSRzbWFydHktPmFzc2lnbignbW9kZScsICdodG1sJyk7DQoJCQkJJHRoaXMtPl9odG1sYWN0aXZlID0gdHJ1ZTsNCgkJCQlicmVhazsNCgkJCWNhc2UgJ2pzJzoNCgkJCWNhc2UgJ2phdmFzY3JpcHQnOg0KCQkJCSRzbWFydHktPmFzc2lnbignbW9kZScsICdqYXZhc2NyaXB0Jyk7DQoJCQkJJHRoaXMtPl9qYXZhc2NyaXB0YWN0aXZlID0gdHJ1ZTsNCgkJCQlicmVhazsNCgkJCWNhc2UgJ2Nzcyc6DQoJCQkJJHNtYXJ0eS0+YXNzaWduKCdtb2RlJywgJ2NzcycpOw0KCQkJCSR0aGlzLT5fY3NzYWN0aXZlID0gdHJ1ZTsNCgkJCQlicmVhazsNCgkJCWNhc2UgJ3BocCc6DQoJCQkJJHNtYXJ0eS0+YXNzaWduKCdtb2RlJywgJ3BocCcpOw0KCQkJCSR0aGlzLT5fcGhwYWN0aXZlID0gdHJ1ZTsNCgkJCQlicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ3BsYWluJzoNCiAgICAgICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ21vZGUnLCAncGxhaW4nKTsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X3BsYWluYWN0aXZlID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBicmVhazsgIA0KICAgICAgICAgICAgY2FzZSAneG1sJzoNCiAgICAgICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ21vZGUnLCAneG1sJyk7DQogICAgICAgICAgICAgICAgJHRoaXMtPl94bWxhY3RpdmUgPSB0cnVlOw0KICAgICAgICAgICAgICAgIGJyZWFrOyANCiAgICAgICAgICAgIGNhc2UgJ2pzb24nOg0KICAgICAgICAgICAgICAgICRzbWFydHktPmFzc2lnbignbW9kZScsICdqc29uJyk7DQogICAgICAgICAgICAgICAgJHRoaXMtPl9qc29uYWN0aXZlID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkJCWRlZmF1bHQ6DQoJCQkJJHNtYXJ0eS0+YXNzaWduKCdtb2RlJywgJHRoaXMtPkFjZUdldFByZWZlcmVuY2UoJ21vZGUnKSk7DQoJCQkJJHRoaXMtPl9kZWZhdWx0YWN0aXZlID0gdHJ1ZTsNCgkJCQlicmVhazsNCgkJfQ0KCQkNCgkJJHRleHRhcmVhID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWNlLnRwbCcpOw0KCQkkdGhpcy0+bm9lZGl0b3JzKys7DQoJCQ0KCQlyZXR1cm4gJHRleHRhcmVhOw0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiBTeW50YXhHZW5lcmF0ZUhlYWRlcigkaHRtbHJlc3VsdCA9ICcnKQ0KCXsNCgkgICAgJGhlYWRlciA9ICcnOw0KCSAgICBpZiAodmVyc2lvbl9jb21wYXJlKENNU19WRVJTSU9OLCAnMS4xMScpIDwgMCkgew0KICAgICAgICAgICAgJGhlYWRlciAuPSAnDQogICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iJyAuICR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCkgLiAnL2Nzcy9qcXVlcnktdWktMS44LjIxLmN1c3RvbS5jc3MiIC8+JzsNCiAgICAgICAgfQ0KCQkkaGVhZGVyIC49ICcNCgkJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iJyAuICR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCkgLiAnL2Nzcy9zdHlsZS5jc3MiIC8+DQoJCTxzY3JpcHQgc3JjPSInIC4gJHRoaXMtPkdldE1vZHVsZVVSTFBhdGgoKSAuICcvYWNlL3NyYy9hY2UuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0Pg0KCQk8c2NyaXB0IHNyYz0iJyAuICR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCkgLiAnL2FjZS9zcmMva2V5YmluZGluZy12aW0uanMiPjwvc2NyaXB0Pg0KICAgICAgICA8c2NyaXB0IHNyYz0iJyAuICR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCkgLiAnL2FjZS9zcmMva2V5YmluZGluZy1lbWFjcy5qcyI+PC9zY3JpcHQ+JzsNCgkJcmV0dXJuICRoZWFkZXI7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIEdldEhlYWRlckhUTUwoKQ0KCXsNCgkJJGluY2RpciA9ICR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCk7DQoJCSR0bXBsICAgPSA8PDxFT1QNCiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7JGluY2Rpcn0vanMvZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4NCkVPVDsNCgkJcmV0dXJuICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdG1wbCk7DQoJfQ0KDQoJIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSMgTW9kdWxlIG1ldGhvZHMNCgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tIA0KDQoJZmluYWwgcHJpdmF0ZSBmdW5jdGlvbiBBY2VHZXRQcmVmZXJlbmNlKCRuYW1lKQ0KCXsNCgkJJHVzZXJpZCA9IGdldF91c2VyaWQoKTsNCgkJJHJlc3VsdCA9IGNtc191c2VycHJlZnM6OmdldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ18nIC4gJG5hbWUpOw0KCQkNCgkJaWYgKCRyZXN1bHQgPT09ICcnKSB7DQoJCQkkcmVzdWx0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJG5hbWUpOw0KCQl9DQoJCQ0KCQlyZXR1cm4gJHJlc3VsdDsNCgkJDQoJfQ0KCQ0KfQ0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogQWNlRWRpdG9yIC0gU3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IgaHR0cDovL2FjZS5hamF4Lm9yZy8uDQojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0DQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgRm9yIEhlbHAgYnVpbGRpbmcgbW9kdWxlczoNCiMgLSBSZWFkIHRoZSBEb2N1bWVudGF0aW9uIGFzIGl0IGJlY29tZXMgYXZhaWxhYmxlIGF0DQojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8NCiMgLSBDaGVjayBvdXQgdGhlIFNrZWxldG9uIE1vZHVsZSBmb3IgYSBjb21tZW50ZWQgZXhhbXBsZQ0KIyAtIExvb2sgYXQgb3RoZXIgbW9kdWxlcywgYW5kIGxlYXJuIGZyb20gdGhlIHNvdXJjZQ0KIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcNCiMgLSBDaGF0IHdpdGggZGV2ZWxvcGVycyBvbiB0aGUgI2NtcyBJUkMgY2hhbm5lbA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc19vYmplY3QoY21zbXMoKSkpDQoJZXhpdDsNCg0KJGRpdmlkICAgID0gJyc7DQokZm9udHNpemUgPSAnMTJweCc7DQokdGhlbWUgICAgPSAndHdpbGlnaHQnOw0KDQppZiAoIWlzc2V0KCRwYXJhbXNbJ2RpdmlkJ10pKSB7DQoJcmV0dXJuOw0KfQ0KLy8gaWQgb2Ygd3JhcHBpbmcgZWxlbWVudA0KJGRpdmlkICAgID0gdHJpbSgkcGFyYW1zWydkaXZpZCddKTsNCi8vIGZvbnRzaXplDQokZm9udHNpemUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfZm9udHNpemUnKTsNCi8vIHdpZHRoIG9mIHdyYXBwaW5nIGVsZW1lbnQNCiR3aWR0aCAgICA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywgJ3dpZHRoJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3dpZHRoJykpOw0KLy8gaGVpZ2h0IG9mIHdyYXBwaW5nIGVsZW1lbnQNCiRoZWlnaHQgICA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywgJ2hlaWdodCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9oZWlnaHQnKSk7DQovLyBtb2RlIGZvciBjdXJyZW50IGFyZWENCiRtb2RlICAgICA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywgJ21vZGUnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfc3ludGF4YXJlYV9tb2RlJykpOw0KLy8gdGhlbWUgZm9yIGN1cnJlbnQgYXJlYQ0KJHRoZW1lICAgID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAndGhlbWUnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfc3ludGF4YXJlYV90aGVtZScpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdkaXZpZCcsICRkaXZpZCk7DQppZiAoJG1vZGUpDQoJJHNtYXJ0eS0+YXNzaWduKCdtb2RlJywgJG1vZGUpOw0KaWYgKCR0aGVtZSkNCgkkc21hcnR5LT5hc3NpZ24oJ3RoZW1lJywgJHRoZW1lKTsNCmlmICgkZm9udHNpemUpDQoJJHNtYXJ0eS0+YXNzaWduKCdmb250c2l6ZScsICRmb250c2l6ZSk7DQppZiAoJHdpZHRoKQ0KCSRzbWFydHktPmFzc2lnbignd2lkdGgnLCAkd2lkdGgpOw0KaWYgKCRoZWlnaHQpDQoJJHNtYXJ0eS0+YXNzaWduKCdoZWlnaHQnLCAkaGVpZ2h0KTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdhY2VfdXJsJywgJHRoaXMtPkdldE1vZHVsZVVSTFBhdGgoKSk7DQovLyBvdXRwdXQgdGVtcGxhdGUNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnb3JpZ19kZWZhdWx0LnRwbCcpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogQWNlRWRpdG9yIC0gU3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IgaHR0cDovL2FjZS5hamF4Lm9yZy8uDQojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0DQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgRm9yIEhlbHAgYnVpbGRpbmcgbW9kdWxlczoNCiMgLSBSZWFkIHRoZSBEb2N1bWVudGF0aW9uIGFzIGl0IGJlY29tZXMgYXZhaWxhYmxlIGF0DQojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8NCiMgLSBDaGVjayBvdXQgdGhlIFNrZWxldG9uIE1vZHVsZSBmb3IgYSBjb21tZW50ZWQgZXhhbXBsZQ0KIyAtIExvb2sgYXQgb3RoZXIgbW9kdWxlcywgYW5kIGxlYXJuIGZyb20gdGhlIHNvdXJjZQ0KIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcNCiMgLSBDaGF0IHdpdGggZGV2ZWxvcGVycyBvbiB0aGUgI2NtcyBJUkMgY2hhbm5lbA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc19vYmplY3QoY21zbXMoKSkpDQoJZXhpdDsNCg0KaWYgKCEoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlJykgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpKSkgew0KCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJywgYXJyYXkoDQoJCSdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycNCgkpKSk7DQoJcmV0dXJuOw0KfQ0KDQokdXNlcmlkID0gZ2V0X3VzZXJpZCgpOyAvLyBnZXQgdXNlciBpZA0KDQppZiAoIWVtcHR5KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkpIHsNCgkkdGFiID0gJHBhcmFtc1snYWN0aXZlX3RhYiddOw0KfSBlbHNlIHsNCgkkdGFiID0gJ3NldHRpbmdzJzsNCn0NCi8qIFRhYkhlYWRlcnMgKi8NCmVjaG8gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpOw0KLy8gYmFja2VuZA0KaWYgKCgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlJykgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpKSkgew0KCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignc2V0dGluZ3MnLCAkdGhpcy0+TGFuZygnc2V0dGluZ3NfdGFiJyksICgkdGFiID09ICdzZXR0aW5ncycpKTsNCn0NCi8vIGZyb250ZW5kDQppZiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkgew0KCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZnJvbnRlbmRzZXR0aW5ncycsICR0aGlzLT5MYW5nKCdmcm9udGVuZHNldHRpbmdzX3RhYicpLCAoJHRhYiA9PSAnZnJvbnRlbmRzZXR0aW5ncycpKTsNCn0NCmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsNCg0KLyogVGFiQ29udGVudCAqLw0KZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7DQovLyBiYWNrZW5kDQppZiAoKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWNlRWRpdG9yIFVzZXIgUHJlZmVyZW5jZScpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSkpIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYignc2V0dGluZ3MnLCAkcGFyYW1zKTsNCglpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pIC4gJy9mdW5jdGlvbi5hZG1pbl9wcmVmc3RhYi5waHAnKTsNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCn0NCi8vIGZyb250ZW5kDQppZiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdmcm9udGVuZHNldHRpbmdzJywgJHBhcmFtcyk7DQoJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKSAuICcvZnVuY3Rpb24uYWRtaW5fZnJvbnRlbmRwcmVmc3RhYi5waHAnKTsNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCn0NCmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.head.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogQWNlRWRpdG9yIC0gU3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IgaHR0cDovL2FjZS5hamF4Lm9yZy8uDQojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0DQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgRm9yIEhlbHAgYnVpbGRpbmcgbW9kdWxlczoNCiMgLSBSZWFkIHRoZSBEb2N1bWVudGF0aW9uIGFzIGl0IGJlY29tZXMgYXZhaWxhYmxlIGF0DQojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8NCiMgLSBDaGVjayBvdXQgdGhlIFNrZWxldG9uIE1vZHVsZSBmb3IgYSBjb21tZW50ZWQgZXhhbXBsZQ0KIyAtIExvb2sgYXQgb3RoZXIgbW9kdWxlcywgYW5kIGxlYXJuIGZyb20gdGhlIHNvdXJjZQ0KIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcNCiMgLSBDaGF0IHdpdGggZGV2ZWxvcGVycyBvbiB0aGUgI2NtcyBJUkMgY2hhbm5lbA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc19vYmplY3QoY21zbXMoKSkpDQoJZXhpdDsNCg0KLy8gaW5pdGlhbGl6ZQ0KJHRoaXMtPmRpdmlkICA9ICcnOw0KLy8gc2VsZWN0ZWQgdGhlbWVzDQokdGhpcy0+dGhlbWVzID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAndGhlbWVzJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3RoZW1lJykpOw0KLy8gc2VsZWN0ZWQgbW9kZXMNCiR0aGlzLT5tb2RlcyAgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdtb2RlcycsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9tb2RlJykpOw0KDQppZiAoaXNzZXQoJHBhcmFtc1snZGl2aWQnXSkpIHsNCgkkdGhpcy0+ZGl2aWQgPSB0cmltKCRwYXJhbXNbJ2RpdmlkJ10pOw0KfQ0KaWYgKCFpc19hcnJheSgkdGhpcy0+bW9kZSkpIHsNCgkkdGhpcy0+bW9kZXMgPSBleHBsb2RlKCcsJywgJHRoaXMtPm1vZGVzKTsNCn0NCmlmIChpc3NldCgkdGhpcy0+dGhlbWVzKSAmJiAhaXNfYXJyYXkoJHRoaXMtPnRoZW1lcykpIHsNCgkkdGhpcy0+dGhlbWVzID0gZXhwbG9kZSgnLCcsICR0aGlzLT50aGVtZXMpOw0KfQ0KaWYgKGlzc2V0KCR0aGlzLT50aGVtZXMpKSB7DQoJJHNtYXJ0eS0+YXNzaWduKCd0aGVtZXMnLCAkdGhpcy0+dGhlbWVzKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdtb2RlcycsICR0aGlzLT5tb2Rlcyk7DQokc21hcnR5LT5hc3NpZ24oJ2FjZV91cmwnLCAkdGhpcy0+R2V0TW9kdWxlVVJMUGF0aCgpKTsNCi8vIG91dHB1dCB0ZW1wbGF0ZQ0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdvcmlnX2hlYWQudHBsJyk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.savefrontendsettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogQWNlRWRpdG9yIC0gU3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IgaHR0cDovL2FjZS5hamF4Lm9yZy8uDQojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0DQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgRm9yIEhlbHAgYnVpbGRpbmcgbW9kdWxlczoNCiMgLSBSZWFkIHRoZSBEb2N1bWVudGF0aW9uIGFzIGl0IGJlY29tZXMgYXZhaWxhYmxlIGF0DQojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8NCiMgLSBDaGVjayBvdXQgdGhlIFNrZWxldG9uIE1vZHVsZSBmb3IgYSBjb21tZW50ZWQgZXhhbXBsZQ0KIyAtIExvb2sgYXQgb3RoZXIgbW9kdWxlcywgYW5kIGxlYXJuIGZyb20gdGhlIHNvdXJjZQ0KIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcNCiMgLSBDaGF0IHdpdGggZGV2ZWxvcGVycyBvbiB0aGUgI2NtcyBJUkMgY2hhbm5lbA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc19vYmplY3QoY21zbXMoKSkpDQoJZXhpdDsNCg0KaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpKSB7DQoJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgNCgkJJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJw0KCSkpKTsNCglyZXR1cm47DQp9DQoNCmlmIChpc3NldCgkcGFyYW1zWydmcm9udGVuZF93aWR0aCddKSkNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfd2lkdGgnLCAkcGFyYW1zWydmcm9udGVuZF93aWR0aCddKTsNCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ2Zyb250ZW5kX2hlaWdodCddKSkNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfaGVpZ2h0JywgJHBhcmFtc1snZnJvbnRlbmRfaGVpZ2h0J10pOw0KDQppZiAoaXNzZXQoJHBhcmFtc1snZnJvbnRlbmRfbW9kZSddKSkNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfbW9kZScsIGltcGxvZGUoJywnLCAkcGFyYW1zWydmcm9udGVuZF9tb2RlJ10pKTsNCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ2Zyb250ZW5kX3N5bnRheGFyZWFfbW9kZSddKSkNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfc3ludGF4YXJlYV9tb2RlJywgJHBhcmFtc1snZnJvbnRlbmRfc3ludGF4YXJlYV9tb2RlJ10pOw0KDQppZiAoaXNzZXQoJHBhcmFtc1snZnJvbnRlbmRfdGhlbWUnXSkpDQoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3RoZW1lJywgaW1wbG9kZSgnLCcsICRwYXJhbXNbJ2Zyb250ZW5kX3RoZW1lJ10pKTsNCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ2Zyb250ZW5kX3N5bnRheGFyZWFfdGhlbWUnXSkpDQoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3N5bnRheGFyZWFfdGhlbWUnLCAkcGFyYW1zWydmcm9udGVuZF9zeW50YXhhcmVhX3RoZW1lJ10pOw0KDQppZiAoaXNzZXQoJHBhcmFtc1snZnJvbnRlbmRfZm9udHNpemUnXSkpDQoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zyb250ZW5kX2ZvbnRzaXplJywgJHBhcmFtc1snZnJvbnRlbmRfZm9udHNpemUnXSk7DQoNCi8vIHJlZGlyZWN0IHRvIHRhYgkJCQ0KJHBhcmFtcyA9IGFycmF5KA0KCSdtb2R1bGVfbWVzc2FnZScgPT4gJHRoaXMtPkxhbmcoJ3NldHRpbmdzc2F2ZWQnKSwNCgknYWN0aXZlX3RhYicgPT4gJ2Zyb250ZW5kc2V0dGluZ3MnDQopOw0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.savesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogQWNlRWRpdG9yIC0gU3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IgaHR0cDovL2FjZS5hamF4Lm9yZy8uDQojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0DQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgRm9yIEhlbHAgYnVpbGRpbmcgbW9kdWxlczoNCiMgLSBSZWFkIHRoZSBEb2N1bWVudGF0aW9uIGFzIGl0IGJlY29tZXMgYXZhaWxhYmxlIGF0DQojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8NCiMgLSBDaGVjayBvdXQgdGhlIFNrZWxldG9uIE1vZHVsZSBmb3IgYSBjb21tZW50ZWQgZXhhbXBsZQ0KIyAtIExvb2sgYXQgb3RoZXIgbW9kdWxlcywgYW5kIGxlYXJuIGZyb20gdGhlIHNvdXJjZQ0KIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcNCiMgLSBDaGF0IHdpdGggZGV2ZWxvcGVycyBvbiB0aGUgI2NtcyBJUkMgY2hhbm5lbA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc19vYmplY3QoY21zbXMoKSkpDQoJZXhpdDsNCg0KaWYgKCEoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWNlRWRpdG9yIFVzZXIgUHJlZmVyZW5jZScpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSkpIHsNCgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicsIGFycmF5KA0KCQknTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnDQoJKSkpOw0KCXJldHVybjsNCn0NCg0KJHVzZXJpZCA9IGdldF91c2VyaWQoKTsNCg0KaWYgKCFlbXB0eSgkcGFyYW1zWyd3aWR0aCddKSkgew0KCWNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ193aWR0aCcsICRwYXJhbXNbJ3dpZHRoJ10pOw0KfQ0KDQppZiAoIWVtcHR5KCRwYXJhbXNbJ2hlaWdodCddKSkgew0KCWNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19oZWlnaHQnLCAkcGFyYW1zWydoZWlnaHQnXSk7DQp9DQoNCmNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19lbmFibGVfaWUnLCAoaXNzZXQoJHBhcmFtc1snZW5hYmxlX2llJ10pID8gMSA6IDApKTsNCmNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19tb2RlJywgJHBhcmFtc1snbW9kZSddKTsNCmNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ190aGVtZScsICRwYXJhbXNbJ3RoZW1lJ10pOw0KY21zX3VzZXJwcmVmczo6c2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX2ZvbnRzaXplJywgJHBhcmFtc1snZm9udHNpemUnXSk7DQpjbXNfdXNlcnByZWZzOjpzZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfZnVsbF9saW5lJywgKGlzc2V0KCRwYXJhbXNbJ2Z1bGxfbGluZSddKSA/IDEgOiAwKSk7DQpjbXNfdXNlcnByZWZzOjpzZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfaGlnaGxpZ2h0X2FjdGl2ZScsIChpc3NldCgkcGFyYW1zWydoaWdobGlnaHRfYWN0aXZlJ10pID8gMSA6IDApKTsNCmNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19zaG93X2ludmlzaWJsZXMnLCAoaXNzZXQoJHBhcmFtc1snc2hvd19pbnZpc2libGVzJ10pID8gMSA6IDApKTsNCmNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19wZXJzaXN0ZW50X2hzY3JvbGwnLCAoaXNzZXQoJHBhcmFtc1sncGVyc2lzdGVudF9oc2Nyb2xsJ10pID8gMSA6IDApKTsNCmNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19rZXliaW5kaW5nJywgKGlzc2V0KCRwYXJhbXNbJ2tleWJpbmRpbmcnXSkgPyAxIDogMCkpOw0KY21zX3VzZXJwcmVmczo6c2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX3NvZnRfd3JhcCcsICRwYXJhbXNbJ3NvZnRfd3JhcCddKTsNCmNtc191c2VycHJlZnM6OnNldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19zaG93X2d1dHRlcicsIChpc3NldCgkcGFyYW1zWydzaG93X2d1dHRlciddKSA/IDEgOiAwKSk7DQpjbXNfdXNlcnByZWZzOjpzZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfcHJpbnRfbWFyZ2luJywgKGlzc2V0KCRwYXJhbXNbJ3ByaW50X21hcmdpbiddKSA/IDEgOiAwKSk7DQpjbXNfdXNlcnByZWZzOjpzZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfc29mdF90YWInLCAoaXNzZXQoJHBhcmFtc1snc29mdF90YWInXSkgPyAxIDogMCkpOw0KY21zX3VzZXJwcmVmczo6c2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX2hpZ2hsaWdodF9zZWxlY3RlZCcsIChpc3NldCgkcGFyYW1zWydoaWdobGlnaHRfc2VsZWN0ZWQnXSkgPyAxIDogMCkpOw0KY21zX3VzZXJwcmVmczo6c2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX2VuYWJsZV9iZWhhdmlvcnMnLCAoaXNzZXQoJHBhcmFtc1snZW5hYmxlX2JlaGF2aW9ycyddKSA/IDEgOiAwKSk7DQoNCi8vIHJlZGlyZWN0IHRvIHRhYg0KJHBhcmFtcyA9IGFycmF5KA0KCSdtb2R1bGVfbWVzc2FnZScgPT4gJHRoaXMtPkxhbmcoJ3NldHRpbmdzc2F2ZWQnKSwNCgknYWN0aXZlX3RhYicgPT4gJ3NldHRpbmdzJw0KKTsNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAy0lEQVRYhe3XQQrCMBSE4d8svIH0Ft5/5X3EG7jRTYUYk5ekackgb5alDF8LbZjT7bq8SPJ83NNLPzlfluo9e/SFPctyGe37AqrhIAIq4mAFquIAgjIOMh/JSNkRD2sCZ+PAeIMKOCgAVXCQASrhIAGq4SACKuJgBariAIIyDhp+1D1lRzxsE3DmcVgFzj6rTeBsHBhABRwUgCo48E3im6Sv7BPfJFvLfJOMllnxTdJSlotvkp6yOL5JtpSBb5Kxstb4JimV1fKXm+QNcHvyUkD/BIAAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_diagonals-thick_20_666666_40x40.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAwklEQVRYhe3XXQqDMBhE0dtsIKvNwrOC+mIhTfNrlAzlm0eR4ShomFcI4U2WGGN+6Sfe++49d/S5O8tKWe37AqrhIAEq4uAEquIAnDIOCh/JStkTD9sE7sZB4w0q4KACVMFBAaiEgwyohoMEqIiDE6iKA3DKOBj4Uc+UPfGwQ8Cdx2EXuPusbgJ346ABVMBBBaiCA9sktknmyj6xTXK1zDbJalkrtklGykqxTTJTlsY2yZUysE2yVjYa2yS1sl7+cpMcegPyrqBRcaoAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_flat_0_aaaaaa_40x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAe0lEQVRoge3OMQHAIBAAMcC/kjdZJHTI0A4XBdkz86wfO18H3hRUBVVBVVAVVAVVQVVQFVQFVUFVUBVUBVVBVVAVVAVVQVVQFVQFVUFVUBVUBVVBVVAVVAVVQVVQFVQFVUFVUBVUBVVBVVAVVAVVQVVQFVQFVUFVUBVUF8O8A8WdY6opAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_flat_10_000000_40x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAeUlEQVRoge3OMQHAIBAAsQf/nlsJDDfAkCjImplvHrZvB04EK8FKsBKsBCvBSrASrAQrwUqwEqwEK8FKsBKsBCvBSrASrAQrwUqwEqwEK8FKsBKsBCvBSrASrAQrwUqwEqwEK8FKsBKsBCvBSrASrAQrwUqwEqwEqx92LQHHRpDUNwAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_flat_75_ffffff_40x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAeUlEQVRoge3OMQHAIBAAsVL/nh8JDDfAkCjImpn5HvbfDpwIVoKVYCVYCVaClWAlWAlWgpVgJVgJVoKVYCVYCVaClWAlWAlWgpVgJVgJVoKVYCVYCVaClWAlWAlWgpVgJVgJVoKVYCVYCVaClWAlWAlWgpVgJVgJVhtqiwTEKTLXTgAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_glass_55_fbf9ee_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAAP0lEQVQ4je3PMQrAMABC0a/3v2zX0mCXNkOgc6C4PARd5DqPGKCU8luS8SbAQhiCQRgJE56kZTfbbP9RSvnkBsWcEAZRWcgqAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_glass_65_ffffff_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAAMElEQVQ4je3LIQ4AIBTD0O3f/8wrFgmKhMy8pKJKwkhSKeVbbGuAPU9f4PIopTxgAeS0DRtI4yK0AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_glass_75_dadada_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAANklEQVQ4jWN48uTJfyYGBgaGUWKUGCWGLfHt2zcoi5GREYNgYmJCZiG42IiB98woMUqMEtgIAMdjCdyg+eEBAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_glass_75_e6e6e6_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAANUlEQVQ4je3LMQoAIBADwb38/6t5wFXaWAiCtUiaYZvF9hBACOFbuntVVe11B0CSjjeE8BwThQIJ8dhEl0YAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_glass_95_fef1ec_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAAPklEQVQ4je3PMQqAMABD0Z/c/7aCIAXjJIhD10LJ8vgZw30eMUApZV/GhZNgSTjoLYElY/hNMJ/S6gullCkPiCIPCr4NiEwAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_glass_100_f6f6f6_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAAL0lEQVQ4je3HsQ0AIBDDwIT9F/4igpYiAyDk5mRrZvaSJAD4liT32u7bqi0APMcBiYQKDwcroFAAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_glass_100_fdf5ce_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQCAYAAABvWArbAAAARElEQVQ4jWP4+/PhfyYGBgaGUWKUGCWGL/HnLQMTAwMjjGBkYmBiYGBiYGJgZEZlMcNlYRKMCMUQAwbcM6PEKDFKYCEAGrQJAcbElNQAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAfQAAABkCAYAAABwx8J9AAAOeUlEQVR4nO2dW44buxFAybH2k40ESNaZBSRZVr5i4CYzzIfdcU+5nmz2WEOfAxgjkfVi8VGSuiX3r//862gAAADwqXn51QEAAADAdSjoAAAAG0BBBwAA2AAKOgAAwAZQ0AEAADaAgg4AALABFHQAAIANoKADAABsAAUdAABgAyjoAAAAG0BBBwAA2AAKOgAAwAZQ0AEAADaAgg4AALABFHQAAIANoKADAABsAAUdAABgAyjoAAAAG0BBBwAA2AAKOgAAwAZQ0AEAADbg0X91BAAAAHAZ3qEDAABsAAUdAABgAyjoAAAAG/AYY7Tev11J1x6PMd4pHP0HR/8h69nS9KRuJHuOQfqW9rR4NXsaMibLd7Xdi13LgzUOawxWHNbYpD1r/jM5tcam+ZGxaL6lvJUXa814Y7FkrfhndTW8MWt+tL1hrUlrz1l59+ZM8xFhxRqdK9Y4tPi9teHZ1NotO9UYo/2s+ZqJM2PfOrcza8bqt84lGaOno+XJO/uz9ciKKTpXvFxa+9DKp+Yzqk9RHfPmQY7n//Jf//GXuLoBAADAU8NH7gAAABtAQQcAANgACjoAAMAGPFrjEjoAAMBnh3foAAAAG0BBBwAA2IBH876T3Xtz+w+Z1nS5jP6MfNXuKhuHjqY723b+HmEm11LX0tFiXTkfll35uDXf5znOSDaKKaNzZe6ytrN7YnbMkd6KtV3NiaeX9W31tTa/3y3bq8+Qu866SNba562t2ydeDqt+ruQ9W49W1aLW5s7QFWuhctafeLi9maA8merEZeWvbsRZG4eOpjvbVomjoqvFunI+LLtVf15OqzFldK7MXdb2TN6yPjJ6K9Z2NSfVeazancXSX32G3HXWRbIr9rmml7G3eq5X6K6KdcWZNuPLakva/FHQe2ttfP+bCiKpc+4/Yop8ZGxqdrSYPFkvlkouPM7z0NvPfjU/Mv5KHBl5T8aK93hu2fHyKf1ZOZBr9uq68XKtjSta09b6qu4dL+bIZzR3mRhmxpnFyk1T2s86Wr8mJ+1l9tMs1nrU/Fh71stxZHPWtqZbXRtRXyZW2d6SOnJ+vbFnZDVdKxZp28qd1za7D72xNqfv5OvxznFlI3TxN5Kr2K/Y1NozPmd9VJF2oueyrRpHRt6TycSn9V2xGa2l2XXjPffyPrO+ZtdLdh1m/FTzVBlnlkxuZtdDZn+v2reRrezaqqzpjGz1bKjO5dX9PrOHZ3IZrYXq3tdkvdzNnB8VP5Nj4aY4AACADbAL+hjxtZvz9Zvzv7OMh9TPxKHJarF4trR4oz5vTF581jXWjJ/MmKQ9LS4rX1HcmetRmRxZufZsa7nSbFoxRXmNrvl667lyfSsaszdvlly0XrQ+63HkX4s/2jdePNFajsbqxWHZ0vqtdRDFXyFaa1G+onFW96s13xmf1prU/mrxWfJe/jNjs/xkY9F0rLnw7FpjybRbPqrjGKP1r3//88RKBQAAgGeCj9wBAAA24KW10X780zj3WbJSJvor2zI2pKz0r9nTYozGmrVr2dNsW2OL8ujlKRqDZd9DG0tmrqXfSN/yZelb60Jry37glJkP2R7tA82O97y6fjyf0RgysUX+NZlob3h2rTg9v5W9q/2TcVrylg3Lt+fPijGj65030bxm5sEbl2Yv8mfFnHluxZMZjxejtz+icUX6VozWeDL72JKL1/9Da/QUfFlrw1gbyLPr6WT0rBijvlm7Gb9XbEVy2ViizZvVmZlT7Xl1rBm/mTFGtjKyGfmZ55kD1mur9s+MqbovPbuR79mcezLRWrniw5Ov6Ff2Q2S7sj4yMVXiWvG8Ekd0plT2RzXPmZiuttlrk4/cAQAANoCCDgAAsAEUdAAAgA04/X/o59/RO543pW2Ifk1Gtln2tWsBVruGZ9Maz4EXnxeDlZejzRp/ZNeyrel5vwkYUcl7xq+Wfysfkb4Vk7Sh/dVi9sZ6oK1nLUZrvZ91vTWTtaHFJMcbtXk+vDWq7e9orFo8GjNznWGF3at7NlpDGaz1XGFmzqJYpF7lseZfy5FXS6ycZNdLVHcqZ4uUz/jJykv7B9H5957TTXHVi/j2hflce1W/ajPrL6Mb2bmim+mPxnIlZ1571e9Q2lfMiWZD64v8ee2R7Ip5XbGusm0zcczkbvXarxazu3JftZ+RzdhZYSNqn81ZZl/PnI8zey+br8oZFp0tnr/MWThjR7b5dv3/bQ3qjNbGeL3FdG9vbcz8YlWV8dauHSwn+pc1dizz/Usp0t5f2rv/shYAYBMeq87ttYzvRcXqfmsjE/h4Tf1O/njLFeDesnL3QSn6mbtyMpr+YqT33lrXbz8Zze7r/aWp0VrtAAAF1HfowyyEow2r0Bo6Y7y1bhXf8Xr7O86V1p/ytQ/cyH/V1tklm1X79oJBvph4/8nCaO2dTO+9vbvHlRcJAL8dj/HHv9SOmTNrxVVxgN+dMUZrQ38xYeoE/b1/eX+pQX6K0MVr+3f92gsMAFjKeG3vdrJ88yzPhHP/GG2MV66hA/wOjPEaVP0/Svb6y4+jY4zW+ov9AmC043KDiKn11l94oQCfhDdRcFtr32+a+llWFufWfirQ4632oj0DBR0AysjDKLoPtPbpXVdfALT+Rb135vziQsqHWLrwHIyRWFyjtebcc9WafXl3jJ8uCY/oHq4n5sFVNgB4LoxD3Lq35+0/dwfUhnGjo6TLSxeWvW+fT+T9K/KZmHp7W3rN83hB9VMs463Jotpbj29eHm8fdqdH1s9nromP1N3iAAC/M8mvola+srr6G/erdFbZzfqmAq2Dn34FAADYgMf0d3AAAADgaeAdOgAAwAbwDh0AAGADHuYtfaPZ/9mO+pNwRruUOex4MtXbDGWs1n9YM2M74zOKIYrPsrkiror/SNay3Qr2szIV3cz8Vudk5Vo522ytvhZn1m9mr12xo8Xk+bx73Z/9HzFUc1CN42rcVrzH8xV+rXVvrcVszip7RrMZrWlrfV05x7Nn38x5ssp3BSU39ncseuKxJZ+xeUXG09H0u9M3i7TlxZDJX9SXxRt/xkd2HBWZSKfC7PxW5+SO765U5kHTm9G5SrTfV6ztu2Kt2r1bPtK/43tVlo/q+Z6JoVIbojXtxTmb9+zZN3OerPI9a/P7Yz5yBwAA2ABuigMAANiAB1/rBwAA+PzwDh0AAGADKOgAAAAbQEEHAADYAAo6AADABvC1NQAAgA3gHToAAMAG2D/9CgAAAJ8GPnIHAADYAD5yBwAA2AB+KQ4AAGADeIcOAACwAY/BNXQAAIBPz0vvrfXkne5ZuUjHsuPZn/E9w0fGcNiTf1fa1p7f6WeV/apdbx2f85tZe1GuovEdfrx5vWMvVfbys5DNTXbuIl/RXruaPxmn9rzi19ONnmv+q3p35cnyV7WdGUukU9G9C23s1Xh6b+1RVaao3+OLor7G7szBGMlcGd9HF/VZu7+SFefDTBG482Cf2Xt3FfUrehWbK6CoXzun+doaAADABnBTHAAAwAbwtTUAAIAN4B06AADABjwaP+YOAADw6fn2Dl3eGDfGj7boprnMTXWWfc2H1XaW9+QyY5C2LBkr5oxtK34r3qpcZjxevqx5y8hpMVpxRL6yMWbybJGV8daPfByNVVsjldxYcUgdbV1asUdjrpLx4elof8/2Zs4eb81o9iNfmTPKWjeRveo5lD0DZ85EzZ53xmVjqOxTLxbZpsWYlfV8yH5L31v7ll5m/0f+gjj7v//2pws7GgAAAJ4BcQ39V9T24fgdRn8UZ6bfkxnicSYvmsxI9EU6kVz03LJjjSvrz+rT/FXXlTbv0fii2CpzmB3r8fxqbNHzyjqazbWmb/nPzLclY+1pz38kZ+lm57Oyhqr7yOqL8pCxo/mv7vcM3hi82DQbq/dtJQapE9mRczSb22x+MjZ8W8pd7r/qDfvVw69qL5KZyctnK+qzcUV9K4q6Z9fz49m4q6hrbZ+pqEudFUXds+m1ZfQqNmfnoRpTde/P+L6y/7K+Mva19l2LutVXzW02tmtFnbvcAQAANoCCDgAAsAHff8t9tPdfXzueH2/tu9ImOfSj/rOM5lPa6KJfk5PxWV/FkzKaviUnbUpdLVbNr+VPjlf6kXqaTUtPxibltbm1cmz1W3hyWk68WLU58mKw1pe0beVUs6HFp/n18uKtQSt+zZ+lk5kTb01XZKy2SOdoj84Wb4zZNajFqu11Lz7Z58VvyUn/mb3l5SfKgzcXWbvRnjjbrZxdZzvRXojOIhm7Fpvsi85oza/0HcVRPXOy9c3yMc7X0GVgQ3mc+Xy/0u/5rMQh2zNxRnazNjUdL8bIZiV2z19kd/XzrF+rr5q7TAyV9ZXZB7N+I58r/WTmZXafrPAf7d2Kj+wa9Px6j6M+K5bqWXf1rKjkbsZudu/Pnrve44r/at+Mn+z5M5PfbH2z23P/OUvv7dL3VWfsVX2ujrHKFf8fEbv0cfw3Plf8enFHY9LiuZqDWRvZWO6cp7t83hVzdX6fiTvOnxVk9lM2rit786OpxFNZdyvOg5W5qto9n9HJcT9siROrJz9jb/aHCH4VV/x/ROzRD1issFmx/9HxrIjlznm6y+ddMVfn95m44/xZQfYHaVbZehYq8VTW3YrzYGWuqnYr8t/7H6P0sRUAAAA8I9zlDgAAsAEvren3BZ6J+rN6XbTJ55ZuL8h6/ioyXemXMXm+z7qW/ShuLV+RjWgs8q9lPxqXFqtHdo4qa60S4xX7V+bPsx2tPet5FFs1Fk3e6oviysR0heoe1PqzedfkLZ9RLjJrtbrOIr/RGLP5y8pkYsrqZ3LhPY7GWR2PVbsqezNzHli2vLazv8fspsgye2BldaP2qC/ra7aoRzFUdVcVgOzGyMSUka/Y+yxFPWNrxdqLZCoHZZbdi3qlzfL1UUU9q5vt+wxFPWvD29cri7qns6qoz9iXzx9tvAYuAAAA4Nn5H1zs1G5bhz0MAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAYAAABHLFpgAAAALElEQVQYlWN49OjRfyYGBgaGIUT8//8fSqBx0Yh///4RL8vAwAAVQ2MNOwIAl6g6KkOJwk8AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAYAAABHLFpgAAAASElEQVQYldWPwQmAQBADJ+m/DfuzgN2ND/WjX+HwMzAQBkL2LQb4EZLCZLAYnDSWGpO6lBSGwjy1sHjvRN+pM1oYBmv5349xADIyLQUayPX/AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAYAAABHLFpgAAAAIUlEQVQYlWP48ePHfyYGBgaGIUT8//8fO5cSFn6J4UQAAJSgIpAFCJPdAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-icons_2e83ff_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEUsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvwsgvzLrJBNAAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-icons_228ef1_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEUkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvQkjvRBIJjhAAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-icons_222222_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEUkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiQkIiTww4gUAAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-icons_454545_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEVERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkRERkQfbf86AAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-icons_888888_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEWMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMioyMiozJxoFPAAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-icons_cd0a0a_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEXMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzMCgzrDkZjAAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-icons_ef8c08_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEXsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgzsjgxbIsyZAAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-icons_ffd27a_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEX80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nz80nzkx5/eAAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/images/ui-icons_ffffff_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAA7VBMVEX8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vywC3+8AAAATnRSTlMAGBAyBAhQv4OZLiJUcEBmYBoSzQwgPBZCSEoeWiYwUiyFNIeBw2rJz8c4RBy9uXyrtaWNqa2zKP2fJO8KBgKPo2KVoa9s351GPm5+kWho0kj9AAAPhUlEQVR4nO1djWLbthEGyUiq5YSSLXtp7FpLOmfzkmxr126tmi2p03RJ1/Xe/3EGgARxPyAgRbIk2/hkSz4CJO4+HsE7AJSVysjI2AMUUOxahZ2iANhzBtZWr4BoIRSYAVN5u4QwDwQDRbcwfUi5KS3wFuDmFnQLa4Dtb//cqktwD5QEFFwfUs7PoCCA7y4bEJVFizcIob8KmhAplwwqVjt+9FBl3uINQniwEiryEyw9JHqGpQdEFNi+B4QQ7QOiHhysIPoAxUqxvdvvA9K42bsAv4S2fxfYOe57IJSRkZGRkZGxx7jxSHDHcRBXQMTyIjInBgHwBJ/bEx8PEANC+uhbpSSggCBAVODVabpI1S/k4WLZpTn6NpMhoX9Y40hxYERFpMcqUs4AloCtDQdID1YhnyXZ2hLjAYWiO9Dy1PDB7tPhIqLx+uMB8grZaR+Qxl2/C2RkZGRkZGRk7A7rBf7J0DR5/LUTjzUPIPSPGvQJiVJiB7kcQCiUOJrcFNtDZIf2xarQ3aGvLNxAVIFAabz90BFiBIlycTBhgWwOWCH0FLYHlPqwHaCvcIn2ZbosCevfPTRiFFcgvHukCjWwrc3GrGh1fsAof8EaUReKXkCB4/MzFNo97qLpFiKFYv/kNR5YQxQbQEofkZ2OuEOHqqT6gFTpru8CN7x/+jaZkZGRkZGRcV+x/rLUNcMMqUAscgnFocmpqkTzqymwVAPxfJ5PnIUUQOUKT04tEdWZyv3JCQSn96WS4pD97QfyW25A7NhSAbyhmVj0FEltA4vdiygBibXhoUYgykCUP7HwPTDeEqAIcHVMkZg7Zx4k0uFANs63hPQXCoRLAwdgGsr9Az7Qv7sgQGgg1aPl/BJLExBWgG4RFRLFImGmIquPC/klEGyCG0AuAXaJJC+B8FVe9NYQDEcXB8g6AQcjYJ1goJIggHWCrFR0S6kRHN5+4BzFi8NaoN35NRxUvL+JJdZr7PV4wK6fj8nIyMjIyNhr3OxdXAYq7FHZwB6bDSzSh4sF0utChqo0NAvaT1hLzXwFinmCzmeDucEQK18TTaQoFgP7bNC+RZ4OT4T6gQogDFYk+1QxQlj19QGSAWKiLYp8P0Ag1Gbz1ULfWHLg9iUnQNK5QQJcukm04blKLH2GgEJCY+HzXAZWCvHKco3Bp6MIaCjSXXRJyOxeqhnzEaF93MfFGW/O16ZvDL5TM4MJIjujz/cHypkQuuzRwWJ93BKdIt+wCRAPl9kpe2Ikkb2mFgGlxh/i40d3EHfdvoyMjIyMu43ylt/IAmGHnN5iIt7wKfbv01RAcJqFRl9lcjYQSnbQqKgC4fYOwSJt6N6trE0twZ9kN/PqNpTQeICvr4TLsDYC06U7BMjshS+v1/aT7IwQYD5LcgRQXMT2FrBfBLjZ6151jDElk9tPFfpUgk2yregusX25BJbwAFEfM+YI6vGAti4bTtizB+TjfQCrERyhKb2X8D6A9wX75P4t4neBYJeP6pdhg/gQl8MWvytzeSTjgOQBynQdh/iXKdxOrGJ/RkZGRsb9QmXihGr5+g8GGg9uTh+KoVZuNIzV+CwRucFBEyr1mVjx4irOxwM1BhirB6Q+2eNQi4eqR+aF6mELtoMzCR7V9RAFe/ZvQogNiyY8FPSUTFsLp8TeTmMui5mtw7bcaT0Yw2AA4wFRQIlkgq+1DQrNhkmoxS5Jq+u6bMAIGRECEANgXHTgWzwgBOhDH2l0oTQ4D8D5NMktBgNywAEMjo8rwATMZrPY7JGxBoJCkIBDQiAY09EGTUiBCWkUpISfGPR5AAwBfZiG2z7Ayc1yeKTxid39xBNwfHr4O0LA48ePFTvhYrF1r4tyAoz9n2MCqEuBtp/6GDR0oAYfG/R6wJExHYZHfhygsv7fEWCOj4bYmsP5A+pL4MkTfAnMlD4F+r3bobKvTyTA2P/w7PN+Agq2QW8piqMCpTBwenoKvX0AHGkGtP2YAPvTEWA7QUTAudn7/NxtOG46wWNmDtpBEkBzN7rBEvAFHp+YTB/q97qPAN4gHFqgBi8uLsC7qPCA6mg41G/+ErByPwEXDdoNxRhOx+M5jPEzQugS0ht+b1/Y3gEnYMAIAOIBE29/hIDucE8tmMsNOgK4B1RHFu4UCRlMHzv0xzcajcfdXWDs2h8TArBCkoDUJYDLmz6w7ip3BFS0ve5wTRwAn6keMA9I3QYbfSZ0DKbyt+7OXjGI1idPcfNyAyfAMlCrzaGqphYrxHocLHRJVycnfGUcbtT+jIyMjIw9x7Nn8fJSzG0TmFtO8rZT+XT3S3ub+tKJbbLd5diTVp50+zahyeHSslJ/YPrU0fuazrZO2CZ92/ZCCVXlGRiZKPJyPPRxyIFWeXLQBXJBKiq/3divEAN6ZwM200Qjm7EJBZeWm/PRWVCbYK7s7u2l4XaCz+lzgOfMfhMonXr7TWzeZb98dbgIzBT8Ub8eYYUqfZ4rVJ/MDbIDgPqTulJ/xvntWAtjIisqnwxOkGz0n077FARoY79GdA6HPE4rOy196NiMWHTZlSSApcOgXpy/fHV2joaNKu3ffsAnRcBf4K/6NcIG6tIxk3HyoXPjASqfUgXbYN5PzpL2njkR9QMjeDTVHDTCgRuxOegjoO0FvKzP/t/gmVdI24+G7NIe8JX6Wv3dDyldMA+4YB5wwTygtd+dwRqaTqrLb1l73zTSN52CNpnHuQOYPsDblybgxfkXh/oVtr+N1DEBJdhRJyd/Bd/q1z+cbNrD17iVKyajcnv9arhOkRPgsruuD6DmNPwpDNrLw2CoTgHni4yALr0L29+tiKAEIPn868ejx//8rpWP3OEOl5On9OwpcQm0MhafP/ey8f1uvDNIgGLQG8z4YO99ENgg95etwv4uYJYY8fUGHYH6j6fscHFZMftlAl9i+9XL73X3N/n+ZStOzfVfRvYXhrbdKOpEgVQTg/wsDuDD3kwOfQNMTJ5y+/ltUDWLunyxnRF46IqlBzGMY4X7inggREFioIyMjIyMHWCIB6ZNKAcXseo3vLTQTkVE7348dlwJJSz0+wLfmi8BhZqfw3D4ww/wHVLnEd5/fgYvXsDZ3MlsvYUbbnDjDZ3MN3TJG4+bxjAaDl8TBri9qxEw1ccao2wTNAMLHo2f+sjrXwb/9qHoYqgPMBXJTVfOpmrZH23y6uvo0LHSyY6fHGwKfHJlAuMFvObjDYrIqxBgQi20h7Hd/nYVLmno+eaNUm/eeH2GCuopntnhBJAlI2AHo9CCh1I1QxUdAbqqGY9BBLwyc3W4wYVhvY8A4BoIc1l5M7vnPWphZW9/Ses3n37y9a0uGqFwFQZsQQbd386DogpgEk+dzynsAZMJXq8+ns9NeukJ0PYrNATGGefJQlhkLo7DTXr+y3bNiOsDvrXTz/C2q1DXZH84iRNwrP88Nj+u2DjYEE6RBxD9Knj16ujVHC67A7422o02RwD3gB+t7EblWvu9geOFxSnd3ROmT+nJyQkhoPlsxVONc/3TEdBos+jtA+ZzcwHgTvD1cDjaYCcItA8w9i88A8b+mqSjc6Pvqd998QguEQPmQMeo23ODN86+p0/bn1buBkT6+oBhNZ/PYY4ZAHYb3PRd4LkZmPX68NRtMZn4ASvdA+qf0jMA5MP9eeg28Nug9QiLnj5A33U1MAES6xHAUNpz/9zFAYE1gqQDMT3G6xI9pwdw/aIgKoHCS1YGlRnSq9yCjdXjgN3j+N27YyROHxmuNAeNKPpYuXIyIyMjYy0M8eros59MF/PT2c602T7eA7zvhJ9dr/vzDjXaLp4Yc5+0wllzxzHv3gdmMMM7/CcQzKgVBqYTmFn+Z+mKm8J7k0A5F/jgCfjQ1WBhQyiOqD0lYuqBb+AyzMw9Ha2G3m6c8qQx+AlqnIceQp+Sb6i9UyQWbhr54+AjnZ0VzW2TAN0DmBT6PWmc6jDBE2PK2u+nF43dyP7Q0t1pOcX2fdRvH0mF2Q4JqN35rnHjVIeaXfIAVyUuw/aHCCiJy9iF5l1621zweI8KZrPZ9iJdb7DXJ3US0OSrtZ10imt7wHY7QesAzUMz1oZ3noB3qFJ/H18j97FYuw8QDN4oeKf30osvcSW2ExLo+VcbuAuo/sUIm8fMG9xocO3Ea19J9gFYivnHJ2KnyfovZlgW3v6ySx32abQiIyMjIyPjhlFDTLxpwIgFMnTp6A3g4IDKNY+stkwAMAoIAbasxBXqUWneSAWTMjt50lTqT29rFjvXohjsDNm2YPXDFlICmrJOZ3t6tHm8AiEAl0sCeLIIorIRt+cFbew/QRsoAXb4o1XSfoywzm0FTMAoYBNvLyFu8v8HpLBtD1iKgC17wHb7AI6d9wFbvguAIGTHd4E9wG7jgIyMjIyM+434c2R3HeV/Ffx6jtZu6ijl8h59T655jhR+rdHzDOP6beABCheb8O8/WFXeOyzgf5oAhVYnKxP7CwaAf1afJu8bSrhS6tdaXeGnrRenOqOlz9d6QwYnA/3TLd+GE7qe3chA5YF5DfY0vK3adfOX/gyNp2BW25MHdxAB9qvRiiP3/XpQQFGYDU4+Mi///XumXG8pjvaUAOsBGlf4jJt+YYEzeEzAdw06F19R3juM7D1wita86GR0CKfDHgLuXCc4Bri6vMLdfjMc4VNSUNsdodo2xu/1+Xl/K5+az8jIyMhYG/z5gJTMF1GtKq/a3rpyCvz5gJTMl9GtKq/a3rpyCmfQ4WwZmS+kXFVetb115ST48wEf/AGcfG1iw+tWbpbS2vJ3nQxcVr3lH3z5h972FUTLzYpOVk7l5hD+eYcYwDcAnewOotrZ4OtrPDucqi/LRX0/RR4qx7Nn4U8g+qjffvuN6Gf+nC85vwauHjaYyubqvWYKY4VEfSUMitdnBCT1Ue63R5439m+OgCn6DroAAaHPVQxKth/wkJgHmG8bmQMsT0D6EjDfvhVRKO3ywOQUgRA7nmL1uawZmHf1k+DPBwQ6NdcJ+k6Md1LA5f5ONdhJ8vZ5J0vLHT99srkGOjmJbd/G1r2Nriqnse1AZt1AalU5jW2HsuuG0qvKGRkZGRkZGRG0gcONyXsP9v8D0/IdJADiBNiXl3327WRGgOL/9HC/0XwlIURkRhC4tz6Z/fu7fUf2gHvfB9z3u0BGRkZGRkbGplHcnkgguQoSqtUXuhbs/wPtMwqV0HUJAvj5vk32b8IDuL23yn7qAXZ5u32hbRX7d3o82Df1FZXvbh9QOfhyxldr/+3xgXU9oKmvsHyr7F/XA269/eveBXrsv7N9QALe/tvjA0kPWAXGbvebkbHn+D/J5nMcHzx1UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/css/jquery-ui-1.8.21.custom.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBVSSBDU1MgRnJhbWV3b3JrIDEuOC4yMQogKgogKiBDb3B5cmlnaHQgMjAxMiwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvVGhlbWluZy9BUEkKICovCgovKiBMYXlvdXQgaGVscGVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLnVpLWhlbHBlci1oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9Ci51aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUgeyBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsgY2xpcDogcmVjdCgxcHggMXB4IDFweCAxcHgpOyBjbGlwOiByZWN0KDFweCwxcHgsMXB4LDFweCk7IH0KLnVpLWhlbHBlci1yZXNldCB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYm9yZGVyOiAwOyBvdXRsaW5lOiAwOyBsaW5lLWhlaWdodDogMS4zOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtc2l6ZTogMTAwJTsgbGlzdC1zdHlsZTogbm9uZTsgfQoudWktaGVscGVyLWNsZWFyZml4OmJlZm9yZSwgLnVpLWhlbHBlci1jbGVhcmZpeDphZnRlciB7IGNvbnRlbnQ6ICIiOyBkaXNwbGF5OiB0YWJsZTsgfQoudWktaGVscGVyLWNsZWFyZml4OmFmdGVyIHsgY2xlYXI6IGJvdGg7IH0KLnVpLWhlbHBlci1jbGVhcmZpeCB7IHpvb206IDE7IH0KLnVpLWhlbHBlci16Zml4IHsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgdG9wOiAwOyBsZWZ0OiAwOyBwb3NpdGlvbjogYWJzb2x1dGU7IG9wYWNpdHk6IDA7IGZpbHRlcjpBbHBoYShPcGFjaXR5PTApOyB9CgoKLyogSW50ZXJhY3Rpb24gQ3VlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLnVpLXN0YXRlLWRpc2FibGVkIHsgY3Vyc29yOiBkZWZhdWx0ICFpbXBvcnRhbnQ7IH0KCgovKiBJY29ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qIHN0YXRlcyBhbmQgaW1hZ2VzICovCi51aS1pY29uIHsgZGlzcGxheTogYmxvY2s7IHRleHQtaW5kZW50OiAtOTk5OTlweDsgb3ZlcmZsb3c6IGhpZGRlbjsgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgfQoKCi8qIE1pc2MgdmlzdWFscwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qIE92ZXJsYXlzICovCi51aS13aWRnZXQtb3ZlcmxheSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB9CgoKLyohCiAqIGpRdWVyeSBVSSBDU1MgRnJhbWV3b3JrIDEuOC4yMQogKgogKiBDb3B5cmlnaHQgMjAxMiwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvVGhlbWluZy9BUEkKICoKICogVG8gdmlldyBhbmQgbW9kaWZ5IHRoaXMgdGhlbWUsIHZpc2l0IGh0dHA6Ly9qcXVlcnl1aS5jb20vdGhlbWVyb2xsZXIvP2N0bD10aGVtZXJvbGxlciZmZkRlZmF1bHQ9VmVyZGFuYSxBcmlhbCxzYW5zLXNlcmlmJmZ3RGVmYXVsdD1ub3JtYWwmZnNEZWZhdWx0PTEuMWVtJmNvcm5lclJhZGl1cz00cHgmYmdDb2xvckhlYWRlcj1jY2NjY2MmYmdUZXh0dXJlSGVhZGVyPTAzX2hpZ2hsaWdodF9zb2Z0LnBuZyZiZ0ltZ09wYWNpdHlIZWFkZXI9NzUmYm9yZGVyQ29sb3JIZWFkZXI9YWFhYWFhJmZjSGVhZGVyPTIyMjIyMiZpY29uQ29sb3JIZWFkZXI9MjIyMjIyJmJnQ29sb3JDb250ZW50PWZmZmZmZiZiZ1RleHR1cmVDb250ZW50PTAxX2ZsYXQucG5nJmJnSW1nT3BhY2l0eUNvbnRlbnQ9NzUmYm9yZGVyQ29sb3JDb250ZW50PWFhYWFhYSZmY0NvbnRlbnQ9MjIyMjIyJmljb25Db2xvckNvbnRlbnQ9MjIyMjIyJmJnQ29sb3JEZWZhdWx0PWU2ZTZlNiZiZ1RleHR1cmVEZWZhdWx0PTAyX2dsYXNzLnBuZyZiZ0ltZ09wYWNpdHlEZWZhdWx0PTc1JmJvcmRlckNvbG9yRGVmYXVsdD1kM2QzZDMmZmNEZWZhdWx0PTU1NTU1NSZpY29uQ29sb3JEZWZhdWx0PTg4ODg4OCZiZ0NvbG9ySG92ZXI9ZGFkYWRhJmJnVGV4dHVyZUhvdmVyPTAyX2dsYXNzLnBuZyZiZ0ltZ09wYWNpdHlIb3Zlcj03NSZib3JkZXJDb2xvckhvdmVyPTk5OTk5OSZmY0hvdmVyPTIxMjEyMSZpY29uQ29sb3JIb3Zlcj00NTQ1NDUmYmdDb2xvckFjdGl2ZT1mZmZmZmYmYmdUZXh0dXJlQWN0aXZlPTAyX2dsYXNzLnBuZyZiZ0ltZ09wYWNpdHlBY3RpdmU9NjUmYm9yZGVyQ29sb3JBY3RpdmU9YWFhYWFhJmZjQWN0aXZlPTIxMjEyMSZpY29uQ29sb3JBY3RpdmU9NDU0NTQ1JmJnQ29sb3JIaWdobGlnaHQ9ZmJmOWVlJmJnVGV4dHVyZUhpZ2hsaWdodD0wMl9nbGFzcy5wbmcmYmdJbWdPcGFjaXR5SGlnaGxpZ2h0PTU1JmJvcmRlckNvbG9ySGlnaGxpZ2h0PWZjZWZhMSZmY0hpZ2hsaWdodD0zNjM2MzYmaWNvbkNvbG9ySGlnaGxpZ2h0PTJlODNmZiZiZ0NvbG9yRXJyb3I9ZmVmMWVjJmJnVGV4dHVyZUVycm9yPTAyX2dsYXNzLnBuZyZiZ0ltZ09wYWNpdHlFcnJvcj05NSZib3JkZXJDb2xvckVycm9yPWNkMGEwYSZmY0Vycm9yPWNkMGEwYSZpY29uQ29sb3JFcnJvcj1jZDBhMGEmYmdDb2xvck92ZXJsYXk9YWFhYWFhJmJnVGV4dHVyZU92ZXJsYXk9MDFfZmxhdC5wbmcmYmdJbWdPcGFjaXR5T3ZlcmxheT0wJm9wYWNpdHlPdmVybGF5PTMwJmJnQ29sb3JTaGFkb3c9YWFhYWFhJmJnVGV4dHVyZVNoYWRvdz0wMV9mbGF0LnBuZyZiZ0ltZ09wYWNpdHlTaGFkb3c9MCZvcGFjaXR5U2hhZG93PTMwJnRoaWNrbmVzc1NoYWRvdz04cHgmb2Zmc2V0VG9wU2hhZG93PS04cHgmb2Zmc2V0TGVmdFNoYWRvdz0tOHB4JmNvcm5lclJhZGl1c1NoYWRvdz04cHgKICovCgoKLyogQ29tcG9uZW50IGNvbnRhaW5lcnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi51aS13aWRnZXQgeyBmb250LWZhbWlseTogVmVyZGFuYSxBcmlhbCxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEuMWVtOyB9Ci51aS13aWRnZXQgLnVpLXdpZGdldCB7IGZvbnQtc2l6ZTogMWVtOyB9Ci51aS13aWRnZXQgaW5wdXQsIC51aS13aWRnZXQgc2VsZWN0LCAudWktd2lkZ2V0IHRleHRhcmVhLCAudWktd2lkZ2V0IGJ1dHRvbiB7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLEFyaWFsLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMWVtOyB9Ci51aS13aWRnZXQtY29udGVudCB7IGJvcmRlcjogMXB4IHNvbGlkICNhYWFhYWE7IGJhY2tncm91bmQ6ICNmZmZmZmYgdXJsKGltYWdlcy91aS1iZ19mbGF0Xzc1X2ZmZmZmZl80MHgxMDAucG5nKSA1MCUgNTAlIHJlcGVhdC14OyBjb2xvcjogIzIyMjIyMjsgfQoudWktd2lkZ2V0LWNvbnRlbnQgYSB7IGNvbG9yOiAjMjIyMjIyOyB9Ci51aS13aWRnZXQtaGVhZGVyIHsgYm9yZGVyOiAxcHggc29saWQgI2FhYWFhYTsgYmFja2dyb3VuZDogI2NjY2NjYyB1cmwoaW1hZ2VzL3VpLWJnX2hpZ2hsaWdodC1zb2Z0Xzc1X2NjY2NjY18xeDEwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7IGNvbG9yOiAjMjIyMjIyOyBmb250LXdlaWdodDogYm9sZDsgfQoudWktd2lkZ2V0LWhlYWRlciBhIHsgY29sb3I6ICMyMjIyMjI7IH0KCi8qIEludGVyYWN0aW9uIHN0YXRlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLnVpLXN0YXRlLWRlZmF1bHQsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZGVmYXVsdCwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRlZmF1bHQgeyBib3JkZXI6IDFweCBzb2xpZCAjZDNkM2QzOyBiYWNrZ3JvdW5kOiAjZTZlNmU2IHVybChpbWFnZXMvdWktYmdfZ2xhc3NfNzVfZTZlNmU2XzF4NDAwLnBuZykgNTAlIDUwJSByZXBlYXQteDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICM1NTU1NTU7IH0KLnVpLXN0YXRlLWRlZmF1bHQgYSwgLnVpLXN0YXRlLWRlZmF1bHQgYTpsaW5rLCAudWktc3RhdGUtZGVmYXVsdCBhOnZpc2l0ZWQgeyBjb2xvcjogIzU1NTU1NTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9Ci51aS1zdGF0ZS1ob3ZlciwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1ob3ZlciwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhvdmVyLCAudWktc3RhdGUtZm9jdXMsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZm9jdXMsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1mb2N1cyB7IGJvcmRlcjogMXB4IHNvbGlkICM5OTk5OTk7IGJhY2tncm91bmQ6ICNkYWRhZGEgdXJsKGltYWdlcy91aS1iZ19nbGFzc183NV9kYWRhZGFfMXg0MDAucG5nKSA1MCUgNTAlIHJlcGVhdC14OyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogIzIxMjEyMTsgfQoudWktc3RhdGUtaG92ZXIgYSwgLnVpLXN0YXRlLWhvdmVyIGE6aG92ZXIgeyBjb2xvcjogIzIxMjEyMTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9Ci51aS1zdGF0ZS1hY3RpdmUsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtYWN0aXZlLCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtYWN0aXZlIHsgYm9yZGVyOiAxcHggc29saWQgI2FhYWFhYTsgYmFja2dyb3VuZDogI2ZmZmZmZiB1cmwoaW1hZ2VzL3VpLWJnX2dsYXNzXzY1X2ZmZmZmZl8xeDQwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjMjEyMTIxOyB9Ci51aS1zdGF0ZS1hY3RpdmUgYSwgLnVpLXN0YXRlLWFjdGl2ZSBhOmxpbmssIC51aS1zdGF0ZS1hY3RpdmUgYTp2aXNpdGVkIHsgY29sb3I6ICMyMTIxMjE7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoudWktd2lkZ2V0IDphY3RpdmUgeyBvdXRsaW5lOiBub25lOyB9CgovKiBJbnRlcmFjdGlvbiBDdWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoudWktc3RhdGUtaGlnaGxpZ2h0LCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhpZ2hsaWdodCwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhpZ2hsaWdodCAge2JvcmRlcjogMXB4IHNvbGlkICNmY2VmYTE7IGJhY2tncm91bmQ6ICNmYmY5ZWUgdXJsKGltYWdlcy91aS1iZ19nbGFzc181NV9mYmY5ZWVfMXg0MDAucG5nKSA1MCUgNTAlIHJlcGVhdC14OyBjb2xvcjogIzM2MzYzNjsgfQoudWktc3RhdGUtaGlnaGxpZ2h0IGEsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaGlnaGxpZ2h0IGEsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhpZ2hsaWdodCBhIHsgY29sb3I6ICMzNjM2MzY7IH0KLnVpLXN0YXRlLWVycm9yLCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yLCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3Ige2JvcmRlcjogMXB4IHNvbGlkICNjZDBhMGE7IGJhY2tncm91bmQ6ICNmZWYxZWMgdXJsKGltYWdlcy91aS1iZ19nbGFzc185NV9mZWYxZWNfMXg0MDAucG5nKSA1MCUgNTAlIHJlcGVhdC14OyBjb2xvcjogI2NkMGEwYTsgfQoudWktc3RhdGUtZXJyb3IgYSwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvciBhLCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3IgYSB7IGNvbG9yOiAjY2QwYTBhOyB9Ci51aS1zdGF0ZS1lcnJvci10ZXh0LCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yLXRleHQsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvci10ZXh0IHsgY29sb3I6ICNjZDBhMGE7IH0KLnVpLXByaW9yaXR5LXByaW1hcnksIC51aS13aWRnZXQtY29udGVudCAudWktcHJpb3JpdHktcHJpbWFyeSwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXByaW9yaXR5LXByaW1hcnkgeyBmb250LXdlaWdodDogYm9sZDsgfQoudWktcHJpb3JpdHktc2Vjb25kYXJ5LCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXByaW9yaXR5LXNlY29uZGFyeSwgIC51aS13aWRnZXQtaGVhZGVyIC51aS1wcmlvcml0eS1zZWNvbmRhcnkgeyBvcGFjaXR5OiAuNzsgZmlsdGVyOkFscGhhKE9wYWNpdHk9NzApOyBmb250LXdlaWdodDogbm9ybWFsOyB9Ci51aS1zdGF0ZS1kaXNhYmxlZCwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kaXNhYmxlZCwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRpc2FibGVkIHsgb3BhY2l0eTogLjM1OyBmaWx0ZXI6QWxwaGEoT3BhY2l0eT0zNSk7IGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7IH0KCi8qIEljb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLyogc3RhdGVzIGFuZCBpbWFnZXMgKi8KLnVpLWljb24geyB3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zXzIyMjIyMl8yNTZ4MjQwLnBuZyk7IH0KLnVpLXdpZGdldC1jb250ZW50IC51aS1pY29uIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zXzIyMjIyMl8yNTZ4MjQwLnBuZyk7IH0KLnVpLXdpZGdldC1oZWFkZXIgLnVpLWljb24ge2JhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvdWktaWNvbnNfMjIyMjIyXzI1NngyNDAucG5nKTsgfQoudWktc3RhdGUtZGVmYXVsdCAudWktaWNvbiB7IGJhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvdWktaWNvbnNfODg4ODg4XzI1NngyNDAucG5nKTsgfQoudWktc3RhdGUtaG92ZXIgLnVpLWljb24sIC51aS1zdGF0ZS1mb2N1cyAudWktaWNvbiB7YmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy91aS1pY29uc180NTQ1NDVfMjU2eDI0MC5wbmcpOyB9Ci51aS1zdGF0ZS1hY3RpdmUgLnVpLWljb24ge2JhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvdWktaWNvbnNfNDU0NTQ1XzI1NngyNDAucG5nKTsgfQoudWktc3RhdGUtaGlnaGxpZ2h0IC51aS1pY29uIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zXzJlODNmZl8yNTZ4MjQwLnBuZyk7IH0KLnVpLXN0YXRlLWVycm9yIC51aS1pY29uLCAudWktc3RhdGUtZXJyb3ItdGV4dCAudWktaWNvbiB7YmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy91aS1pY29uc19jZDBhMGFfMjU2eDI0MC5wbmcpOyB9CgovKiBwb3NpdGlvbmluZyAqLwoudWktaWNvbi1jYXJhdC0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH0KLnVpLWljb24tY2FyYXQtMS1uZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IDA7IH0KLnVpLWljb24tY2FyYXQtMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggMDsgfQoudWktaWNvbi1jYXJhdC0xLXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggMDsgfQoudWktaWNvbi1jYXJhdC0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAwOyB9Ci51aS1pY29uLWNhcmF0LTEtc3cgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAwOyB9Ci51aS1pY29uLWNhcmF0LTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IDA7IH0KLnVpLWljb24tY2FyYXQtMS1udyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAwOyB9Ci51aS1pY29uLWNhcmF0LTItbi1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IDA7IH0KLnVpLWljb24tY2FyYXQtMi1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggMDsgfQoudWktaWNvbi10cmlhbmdsZS0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xNnB4OyB9Ci51aS1pY29uLXRyaWFuZ2xlLTEtbmUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTZweDsgfQoudWktaWNvbi10cmlhbmdsZS0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTZweDsgfQoudWktaWNvbi10cmlhbmdsZS0xLXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTE2cHg7IH0KLnVpLWljb24tdHJpYW5nbGUtMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE2cHg7IH0KLnVpLWljb24tdHJpYW5nbGUtMS1zdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xNnB4OyB9Ci51aS1pY29uLXRyaWFuZ2xlLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xNnB4OyB9Ci51aS1pY29uLXRyaWFuZ2xlLTEtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE2cHg7IH0KLnVpLWljb24tdHJpYW5nbGUtMi1uLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTE2cHg7IH0KLnVpLWljb24tdHJpYW5nbGUtMi1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTE2cHg7IH0KLnVpLWljb24tYXJyb3ctMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMzJweDsgfQoudWktaWNvbi1hcnJvdy0xLW5lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTMycHg7IH0KLnVpLWljb24tYXJyb3ctMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTMycHg7IH0KLnVpLWljb24tYXJyb3ctMS1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTEtc3cgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMzJweDsgfQoudWktaWNvbi1hcnJvdy0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMzJweDsgfQoudWktaWNvbi1hcnJvdy0xLW53IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTItbi1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTItbmUtc3cgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTMycHg7IH0KLnVpLWljb24tYXJyb3ctMi1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTMycHg7IH0KLnVpLWljb24tYXJyb3ctMi1zZS1udyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtMzJweDsgfQoudWktaWNvbi1hcnJvd3N0b3AtMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93c3RvcC0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTMycHg7IH0KLnVpLWljb24tYXJyb3dzdG9wLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtMzJweDsgfQoudWktaWNvbi1hcnJvd3N0b3AtMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTI0MHB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTEtbmUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMS1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0xLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTEtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0yLW4tcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTItbmUtc3cgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0yLWUtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTItc2UtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTI0MHB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC02NHB4OyB9Ci51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTY0cHg7IH0KLnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JldHVybi0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JldHVybi0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JldHVybi0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JldHVybi0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTY0cHg7IH0KLnVpLWljb24tYXJyb3dyZWZyZXNoLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JlZnJlc2gtMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC02NHB4OyB9Ci51aS1pY29uLWFycm93cmVmcmVzaC0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTY0cHg7IH0KLnVpLWljb24tYXJyb3dyZWZyZXNoLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtNjRweDsgfQoudWktaWNvbi1hcnJvdy00IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtODBweDsgfQoudWktaWNvbi1hcnJvdy00LWRpYWcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtODBweDsgfQoudWktaWNvbi1leHRsaW5rIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTgwcHg7IH0KLnVpLWljb24tbmV3d2luIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTgwcHg7IH0KLnVpLWljb24tcmVmcmVzaCB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC04MHB4OyB9Ci51aS1pY29uLXNodWZmbGUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtODBweDsgfQoudWktaWNvbi10cmFuc2Zlci1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtODBweDsgfQoudWktaWNvbi10cmFuc2ZlcnRoaWNrLWUtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtODBweDsgfQoudWktaWNvbi1mb2xkZXItY29sbGFwc2VkIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtOTZweDsgfQoudWktaWNvbi1mb2xkZXItb3BlbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC05NnB4OyB9Ci51aS1pY29uLWRvY3VtZW50IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTk2cHg7IH0KLnVpLWljb24tZG9jdW1lbnQtYiB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC05NnB4OyB9Ci51aS1pY29uLW5vdGUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtOTZweDsgfQoudWktaWNvbi1tYWlsLWNsb3NlZCB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC05NnB4OyB9Ci51aS1pY29uLW1haWwtb3BlbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC05NnB4OyB9Ci51aS1pY29uLXN1aXRjYXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC05NnB4OyB9Ci51aS1pY29uLWNvbW1lbnQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTk2cHg7IH0KLnVpLWljb24tcGVyc29uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC05NnB4OyB9Ci51aS1pY29uLXByaW50IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC05NnB4OyB9Ci51aS1pY29uLXRyYXNoIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC05NnB4OyB9Ci51aS1pY29uLWxvY2tlZCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtOTZweDsgfQoudWktaWNvbi11bmxvY2tlZCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtOTZweDsgfQoudWktaWNvbi1ib29rbWFyayB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtOTZweDsgfQoudWktaWNvbi10YWcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjQwcHggLTk2cHg7IH0KLnVpLWljb24taG9tZSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTExMnB4OyB9Ci51aS1pY29uLWZsYWcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTEycHg7IH0KLnVpLWljb24tY2FsZW5kYXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTEycHg7IH0KLnVpLWljb24tY2FydCB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xMTJweDsgfQoudWktaWNvbi1wZW5jaWwgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTEycHg7IH0KLnVpLWljb24tY2xvY2sgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTEycHg7IH0KLnVpLWljb24tZGlzayB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xMTJweDsgfQoudWktaWNvbi1jYWxjdWxhdG9yIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xMTJweDsgfQoudWktaWNvbi16b29taW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTExMnB4OyB9Ci51aS1pY29uLXpvb21vdXQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTExMnB4OyB9Ci51aS1pY29uLXNlYXJjaCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtMTEycHg7IH0KLnVpLWljb24td3JlbmNoIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xMTJweDsgfQoudWktaWNvbi1nZWFyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC0xMTJweDsgfQoudWktaWNvbi1oZWFydCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtMTEycHg7IH0KLnVpLWljb24tc3RhciB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtMTEycHg7IH0KLnVpLWljb24tbGluayB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yNDBweCAtMTEycHg7IH0KLnVpLWljb24tY2FuY2VsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTI4cHg7IH0KLnVpLWljb24tcGx1cyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xMjhweDsgfQoudWktaWNvbi1wbHVzdGhpY2sgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTI4cHg7IH0KLnVpLWljb24tbWludXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTI4cHg7IH0KLnVpLWljb24tbWludXN0aGljayB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xMjhweDsgfQoudWktaWNvbi1jbG9zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xMjhweDsgfQoudWktaWNvbi1jbG9zZXRoaWNrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTEyOHB4OyB9Ci51aS1pY29uLWtleSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTI4cHg7IH0KLnVpLWljb24tbGlnaHRidWxiIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xMjhweDsgfQoudWktaWNvbi1zY2lzc29ycyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMTI4cHg7IH0KLnVpLWljb24tY2xpcGJvYXJkIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0xMjhweDsgfQoudWktaWNvbi1jb3B5IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xMjhweDsgfQoudWktaWNvbi1jb250YWN0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC0xMjhweDsgfQoudWktaWNvbi1pbWFnZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtMTI4cHg7IH0KLnVpLWljb24tdmlkZW8geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTEyOHB4OyB9Ci51aS1pY29uLXNjcmlwdCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yNDBweCAtMTI4cHg7IH0KLnVpLWljb24tYWxlcnQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xNDRweDsgfQoudWktaWNvbi1pbmZvIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE0NHB4OyB9Ci51aS1pY29uLW5vdGljZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xNDRweDsgfQoudWktaWNvbi1oZWxwIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTE0NHB4OyB9Ci51aS1pY29uLWNoZWNrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE0NHB4OyB9Ci51aS1pY29uLWJ1bGxldCB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xNDRweDsgfQoudWktaWNvbi1yYWRpby1vZmYgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTQ0cHg7IH0KLnVpLWljb24tcmFkaW8tb24geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE0NHB4OyB9Ci51aS1pY29uLXBpbi13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xNDRweDsgfQoudWktaWNvbi1waW4tcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMTQ0cHg7IH0KLnVpLWljb24tcGxheSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE2MHB4OyB9Ci51aS1pY29uLXBhdXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE2MHB4OyB9Ci51aS1pY29uLXNlZWstbmV4dCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xNjBweDsgfQoudWktaWNvbi1zZWVrLXByZXYgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTYwcHg7IH0KLnVpLWljb24tc2Vlay1lbmQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTYwcHg7IH0KLnVpLWljb24tc2Vlay1zdGFydCB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xNjBweDsgfQovKiB1aS1pY29uLXNlZWstZmlyc3QgaXMgZGVwcmVjYXRlZCwgdXNlIHVpLWljb24tc2Vlay1zdGFydCBpbnN0ZWFkICovCi51aS1pY29uLXNlZWstZmlyc3QgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTYwcHg7IH0KLnVpLWljb24tc3RvcCB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xNjBweDsgfQoudWktaWNvbi1lamVjdCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTYwcHg7IH0KLnVpLWljb24tdm9sdW1lLW9mZiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTYwcHg7IH0KLnVpLWljb24tdm9sdW1lLW9uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xNjBweDsgfQoudWktaWNvbi1wb3dlciB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE3NnB4OyB9Ci51aS1pY29uLXNpZ25hbC1kaWFnIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE3NnB4OyB9Ci51aS1pY29uLXNpZ25hbCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xNzZweDsgfQoudWktaWNvbi1iYXR0ZXJ5LTAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTc2cHg7IH0KLnVpLWljb24tYmF0dGVyeS0xIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE3NnB4OyB9Ci51aS1pY29uLWJhdHRlcnktMiB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xNzZweDsgfQoudWktaWNvbi1iYXR0ZXJ5LTMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTc2cHg7IH0KLnVpLWljb24tY2lyY2xlLXBsdXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtbWludXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLWNsb3NlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS10cmlhbmdsZS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS1hcnJvdy1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtYXJyb3ctcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLWFycm93LXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS1hcnJvdy1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtem9vbWluIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtem9vbW91dCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLWNoZWNrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGVzbWFsbC1wbHVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMjA4cHg7IH0KLnVpLWljb24tY2lyY2xlc21hbGwtbWludXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMjA4cHg7IH0KLnVpLWljb24tY2lyY2xlc21hbGwtY2xvc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMjA4cHg7IH0KLnVpLWljb24tc3F1YXJlc21hbGwtcGx1cyB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0yMDhweDsgfQoudWktaWNvbi1zcXVhcmVzbWFsbC1taW51cyB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0yMDhweDsgfQoudWktaWNvbi1zcXVhcmVzbWFsbC1jbG9zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0yMDhweDsgfQoudWktaWNvbi1ncmlwLWRvdHRlZC12ZXJ0aWNhbCB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTIyNHB4OyB9Ci51aS1pY29uLWdyaXAtZG90dGVkLWhvcml6b250YWwgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMjI0cHg7IH0KLnVpLWljb24tZ3JpcC1zb2xpZC12ZXJ0aWNhbCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0yMjRweDsgfQoudWktaWNvbi1ncmlwLXNvbGlkLWhvcml6b250YWwgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMjI0cHg7IH0KLnVpLWljb24tZ3JpcHNtYWxsLWRpYWdvbmFsLXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTIyNHB4OyB9Ci51aS1pY29uLWdyaXAtZGlhZ29uYWwtc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMjI0cHg7IH0KCgovKiBNaXNjIHZpc3VhbHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovKiBDb3JuZXIgcmFkaXVzICovCi51aS1jb3JuZXItYWxsLCAudWktY29ybmVyLXRvcCwgLnVpLWNvcm5lci1sZWZ0LCAudWktY29ybmVyLXRsIHsgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6IDRweDsgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7IC1raHRtbC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsgfQoudWktY29ybmVyLWFsbCwgLnVpLWNvcm5lci10b3AsIC51aS1jb3JuZXItcmlnaHQsIC51aS1jb3JuZXItdHIgeyAtbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6IDRweDsgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OyAta2h0bWwtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsgfQoudWktY29ybmVyLWFsbCwgLnVpLWNvcm5lci1ib3R0b20sIC51aS1jb3JuZXItbGVmdCwgLnVpLWNvcm5lci1ibCB7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OiA0cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OyAta2h0bWwtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7IH0KLnVpLWNvcm5lci1hbGwsIC51aS1jb3JuZXItYm90dG9tLCAudWktY29ybmVyLXJpZ2h0LCAudWktY29ybmVyLWJyIHsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OiA0cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsgLWtodG1sLWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7IH0KCi8qIE92ZXJsYXlzICovCi51aS13aWRnZXQtb3ZlcmxheSB7IGJhY2tncm91bmQ6ICNhYWFhYWEgdXJsKGltYWdlcy91aS1iZ19mbGF0XzBfYWFhYWFhXzQweDEwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7IG9wYWNpdHk6IC4zMDtmaWx0ZXI6QWxwaGEoT3BhY2l0eT0zMCk7IH0KLnVpLXdpZGdldC1zaGFkb3cgeyBtYXJnaW46IC04cHggMCAwIC04cHg7IHBhZGRpbmc6IDhweDsgYmFja2dyb3VuZDogI2FhYWFhYSB1cmwoaW1hZ2VzL3VpLWJnX2ZsYXRfMF9hYWFhYWFfNDB4MTAwLnBuZykgNTAlIDUwJSByZXBlYXQteDsgb3BhY2l0eTogLjMwO2ZpbHRlcjpBbHBoYShPcGFjaXR5PTMwKTsgLW1vei1ib3JkZXItcmFkaXVzOiA4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOiA4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czogOHB4OyBib3JkZXItcmFkaXVzOiA4cHg7IH0vKiEKICogalF1ZXJ5IFVJIFJlc2l6YWJsZSAxLjguMjEKICoKICogQ29weXJpZ2h0IDIwMTIsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL1Jlc2l6YWJsZSN0aGVtaW5nCiAqLwoudWktcmVzaXphYmxlIHsgcG9zaXRpb246IHJlbGF0aXZlO30KLnVpLXJlc2l6YWJsZS1oYW5kbGUgeyBwb3NpdGlvbjogYWJzb2x1dGU7Zm9udC1zaXplOiAwLjFweDsgZGlzcGxheTogYmxvY2s7IH0KLnVpLXJlc2l6YWJsZS1kaXNhYmxlZCAudWktcmVzaXphYmxlLWhhbmRsZSwgLnVpLXJlc2l6YWJsZS1hdXRvaGlkZSAudWktcmVzaXphYmxlLWhhbmRsZSB7IGRpc3BsYXk6IG5vbmU7IH0KLnVpLXJlc2l6YWJsZS1uIHsgY3Vyc29yOiBuLXJlc2l6ZTsgaGVpZ2h0OiA3cHg7IHdpZHRoOiAxMDAlOyB0b3A6IC01cHg7IGxlZnQ6IDA7IH0KLnVpLXJlc2l6YWJsZS1zIHsgY3Vyc29yOiBzLXJlc2l6ZTsgaGVpZ2h0OiA3cHg7IHdpZHRoOiAxMDAlOyBib3R0b206IC01cHg7IGxlZnQ6IDA7IH0KLnVpLXJlc2l6YWJsZS1lIHsgY3Vyc29yOiBlLXJlc2l6ZTsgd2lkdGg6IDdweDsgcmlnaHQ6IC01cHg7IHRvcDogMDsgaGVpZ2h0OiAxMDAlOyB9Ci51aS1yZXNpemFibGUtdyB7IGN1cnNvcjogdy1yZXNpemU7IHdpZHRoOiA3cHg7IGxlZnQ6IC01cHg7IHRvcDogMDsgaGVpZ2h0OiAxMDAlOyB9Ci51aS1yZXNpemFibGUtc2UgeyBjdXJzb3I6IHNlLXJlc2l6ZTsgd2lkdGg6IDEycHg7IGhlaWdodDogMTJweDsgcmlnaHQ6IDFweDsgYm90dG9tOiAxcHg7IH0KLnVpLXJlc2l6YWJsZS1zdyB7IGN1cnNvcjogc3ctcmVzaXplOyB3aWR0aDogOXB4OyBoZWlnaHQ6IDlweDsgbGVmdDogLTVweDsgYm90dG9tOiAtNXB4OyB9Ci51aS1yZXNpemFibGUtbncgeyBjdXJzb3I6IG53LXJlc2l6ZTsgd2lkdGg6IDlweDsgaGVpZ2h0OiA5cHg7IGxlZnQ6IC01cHg7IHRvcDogLTVweDsgfQoudWktcmVzaXphYmxlLW5lIHsgY3Vyc29yOiBuZS1yZXNpemU7IHdpZHRoOiA5cHg7IGhlaWdodDogOXB4OyByaWdodDogLTVweDsgdG9wOiAtNXB4O30vKiEKICogalF1ZXJ5IFVJIFNlbGVjdGFibGUgMS44LjIxCiAqCiAqIENvcHlyaWdodCAyMDEyLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICoKICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9TZWxlY3RhYmxlI3RoZW1pbmcKICovCi51aS1zZWxlY3RhYmxlLWhlbHBlciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogMTAwOyBib3JkZXI6MXB4IGRvdHRlZCBibGFjazsgfQovKiEKICogalF1ZXJ5IFVJIEFjY29yZGlvbiAxLjguMjEKICoKICogQ29weXJpZ2h0IDIwMTIsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL0FjY29yZGlvbiN0aGVtaW5nCiAqLwovKiBJRS9XaW4gLSBGaXggYW5pbWF0aW9uIGJ1ZyAtICM0NjE1ICovCi51aS1hY2NvcmRpb24geyB3aWR0aDogMTAwJTsgfQoudWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taGVhZGVyIHsgY3Vyc29yOiBwb2ludGVyOyBwb3NpdGlvbjogcmVsYXRpdmU7IG1hcmdpbi10b3A6IDFweDsgem9vbTogMTsgfQoudWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24tbGktZml4IHsgZGlzcGxheTogaW5saW5lOyB9Ci51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIHsgYm9yZGVyLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9Ci51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1oZWFkZXIgYSB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDFlbTsgcGFkZGluZzogLjVlbSAuNWVtIC41ZW0gLjdlbTsgfQoudWktYWNjb3JkaW9uLWljb25zIC51aS1hY2NvcmRpb24taGVhZGVyIGEgeyBwYWRkaW5nLWxlZnQ6IDIuMmVtOyB9Ci51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1oZWFkZXIgLnVpLWljb24geyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC41ZW07IHRvcDogNTAlOyBtYXJnaW4tdG9wOiAtOHB4OyB9Ci51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1jb250ZW50IHsgcGFkZGluZzogMWVtIDIuMmVtOyBib3JkZXItdG9wOiAwOyBtYXJnaW4tdG9wOiAtMnB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDogMXB4OyBtYXJnaW4tYm90dG9tOiAycHg7IG92ZXJmbG93OiBhdXRvOyBkaXNwbGF5OiBub25lOyB6b29tOiAxOyB9Ci51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSB7IGRpc3BsYXk6IGJsb2NrOyB9Ci8qIQogKiBqUXVlcnkgVUkgQXV0b2NvbXBsZXRlIDEuOC4yMQogKgogKiBDb3B5cmlnaHQgMjAxMiwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvQXV0b2NvbXBsZXRlI3RoZW1pbmcKICovCi51aS1hdXRvY29tcGxldGUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGN1cnNvcjogZGVmYXVsdDsgfQkKCi8qIHdvcmthcm91bmRzICovCiogaHRtbCAudWktYXV0b2NvbXBsZXRlIHsgd2lkdGg6MXB4OyB9IC8qIHdpdGhvdXQgdGhpcywgdGhlIG1lbnUgZXhwYW5kcyB0byAxMDAlIGluIElFNiAqLwoKLyoKICogalF1ZXJ5IFVJIE1lbnUgMS44LjIxCiAqCiAqIENvcHlyaWdodCAyMDEwLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICoKICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9NZW51I3RoZW1pbmcKICovCi51aS1tZW51IHsKCWxpc3Qtc3R5bGU6bm9uZTsKCXBhZGRpbmc6IDJweDsKCW1hcmdpbjogMDsKCWRpc3BsYXk6YmxvY2s7CglmbG9hdDogbGVmdDsKfQoudWktbWVudSAudWktbWVudSB7CgltYXJnaW4tdG9wOiAtM3B4Owp9Ci51aS1tZW51IC51aS1tZW51LWl0ZW0gewoJbWFyZ2luOjA7CglwYWRkaW5nOiAwOwoJem9vbTogMTsKCWZsb2F0OiBsZWZ0OwoJY2xlYXI6IGxlZnQ7Cgl3aWR0aDogMTAwJTsKfQoudWktbWVudSAudWktbWVudS1pdGVtIGEgewoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7CglkaXNwbGF5OmJsb2NrOwoJcGFkZGluZzouMmVtIC40ZW07CglsaW5lLWhlaWdodDoxLjU7Cgl6b29tOjE7Cn0KLnVpLW1lbnUgLnVpLW1lbnUtaXRlbSBhLnVpLXN0YXRlLWhvdmVyLAoudWktbWVudSAudWktbWVudS1pdGVtIGEudWktc3RhdGUtYWN0aXZlIHsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7CgltYXJnaW46IC0xcHg7Cn0KLyohCiAqIGpRdWVyeSBVSSBCdXR0b24gMS44LjIxCiAqCiAqIENvcHlyaWdodCAyMDEyLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICoKICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9CdXR0b24jdGhlbWluZwogKi8KLnVpLWJ1dHRvbiB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgcG9zaXRpb246IHJlbGF0aXZlOyBwYWRkaW5nOiAwOyBtYXJnaW4tcmlnaHQ6IC4xZW07IHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtYWxpZ246IGNlbnRlcjsgem9vbTogMTsgb3ZlcmZsb3c6IHZpc2libGU7IH0gLyogdGhlIG92ZXJmbG93IHByb3BlcnR5IHJlbW92ZXMgZXh0cmEgd2lkdGggaW4gSUUgKi8KLnVpLWJ1dHRvbi1pY29uLW9ubHkgeyB3aWR0aDogMi4yZW07IH0gLyogdG8gbWFrZSByb29tIGZvciB0aGUgaWNvbiwgYSB3aWR0aCBuZWVkcyB0byBiZSBzZXQgaGVyZSAqLwpidXR0b24udWktYnV0dG9uLWljb24tb25seSB7IHdpZHRoOiAyLjRlbTsgfSAvKiBidXR0b24gZWxlbWVudHMgc2VlbSB0byBuZWVkIGEgbGl0dGxlIG1vcmUgd2lkdGggKi8KLnVpLWJ1dHRvbi1pY29ucy1vbmx5IHsgd2lkdGg6IDMuNGVtOyB9IApidXR0b24udWktYnV0dG9uLWljb25zLW9ubHkgeyB3aWR0aDogMy43ZW07IH0gCgovKmJ1dHRvbiB0ZXh0IGVsZW1lbnQgKi8KLnVpLWJ1dHRvbiAudWktYnV0dG9uLXRleHQgeyBkaXNwbGF5OiBibG9jazsgbGluZS1oZWlnaHQ6IDEuNDsgIH0KLnVpLWJ1dHRvbi10ZXh0LW9ubHkgLnVpLWJ1dHRvbi10ZXh0IHsgcGFkZGluZzogLjRlbSAxZW07IH0KLnVpLWJ1dHRvbi1pY29uLW9ubHkgLnVpLWJ1dHRvbi10ZXh0LCAudWktYnV0dG9uLWljb25zLW9ubHkgLnVpLWJ1dHRvbi10ZXh0IHsgcGFkZGluZzogLjRlbTsgdGV4dC1pbmRlbnQ6IC05OTk5OTk5cHg7IH0KLnVpLWJ1dHRvbi10ZXh0LWljb24tcHJpbWFyeSAudWktYnV0dG9uLXRleHQsIC51aS1idXR0b24tdGV4dC1pY29ucyAudWktYnV0dG9uLXRleHQgeyBwYWRkaW5nOiAuNGVtIDFlbSAuNGVtIDIuMWVtOyB9Ci51aS1idXR0b24tdGV4dC1pY29uLXNlY29uZGFyeSAudWktYnV0dG9uLXRleHQsIC51aS1idXR0b24tdGV4dC1pY29ucyAudWktYnV0dG9uLXRleHQgeyBwYWRkaW5nOiAuNGVtIDIuMWVtIC40ZW0gMWVtOyB9Ci51aS1idXR0b24tdGV4dC1pY29ucyAudWktYnV0dG9uLXRleHQgeyBwYWRkaW5nLWxlZnQ6IDIuMWVtOyBwYWRkaW5nLXJpZ2h0OiAyLjFlbTsgfQovKiBubyBpY29uIHN1cHBvcnQgZm9yIGlucHV0IGVsZW1lbnRzLCBwcm92aWRlIHBhZGRpbmcgYnkgZGVmYXVsdCAqLwppbnB1dC51aS1idXR0b24geyBwYWRkaW5nOiAuNGVtIDFlbTsgfQoKLypidXR0b24gaWNvbiBlbGVtZW50KHMpICovCi51aS1idXR0b24taWNvbi1vbmx5IC51aS1pY29uLCAudWktYnV0dG9uLXRleHQtaWNvbi1wcmltYXJ5IC51aS1pY29uLCAudWktYnV0dG9uLXRleHQtaWNvbi1zZWNvbmRhcnkgLnVpLWljb24sIC51aS1idXR0b24tdGV4dC1pY29ucyAudWktaWNvbiwgLnVpLWJ1dHRvbi1pY29ucy1vbmx5IC51aS1pY29uIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwJTsgbWFyZ2luLXRvcDogLThweDsgfQoudWktYnV0dG9uLWljb24tb25seSAudWktaWNvbiB7IGxlZnQ6IDUwJTsgbWFyZ2luLWxlZnQ6IC04cHg7IH0KLnVpLWJ1dHRvbi10ZXh0LWljb24tcHJpbWFyeSAudWktYnV0dG9uLWljb24tcHJpbWFyeSwgLnVpLWJ1dHRvbi10ZXh0LWljb25zIC51aS1idXR0b24taWNvbi1wcmltYXJ5LCAudWktYnV0dG9uLWljb25zLW9ubHkgLnVpLWJ1dHRvbi1pY29uLXByaW1hcnkgeyBsZWZ0OiAuNWVtOyB9Ci51aS1idXR0b24tdGV4dC1pY29uLXNlY29uZGFyeSAudWktYnV0dG9uLWljb24tc2Vjb25kYXJ5LCAudWktYnV0dG9uLXRleHQtaWNvbnMgLnVpLWJ1dHRvbi1pY29uLXNlY29uZGFyeSwgLnVpLWJ1dHRvbi1pY29ucy1vbmx5IC51aS1idXR0b24taWNvbi1zZWNvbmRhcnkgeyByaWdodDogLjVlbTsgfQoudWktYnV0dG9uLXRleHQtaWNvbnMgLnVpLWJ1dHRvbi1pY29uLXNlY29uZGFyeSwgLnVpLWJ1dHRvbi1pY29ucy1vbmx5IC51aS1idXR0b24taWNvbi1zZWNvbmRhcnkgeyByaWdodDogLjVlbTsgfQoKLypidXR0b24gc2V0cyovCi51aS1idXR0b25zZXQgeyBtYXJnaW4tcmlnaHQ6IDdweDsgfQoudWktYnV0dG9uc2V0IC51aS1idXR0b24geyBtYXJnaW4tbGVmdDogMDsgbWFyZ2luLXJpZ2h0OiAtLjNlbTsgfQoKLyogd29ya2Fyb3VuZHMgKi8KYnV0dG9uLnVpLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7IGJvcmRlcjogMDsgcGFkZGluZzogMDsgfSAvKiByZXNldCBleHRyYSBwYWRkaW5nIGluIEZpcmVmb3ggKi8KLyohCiAqIGpRdWVyeSBVSSBEaWFsb2cgMS44LjIxCiAqCiAqIENvcHlyaWdodCAyMDEyLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICoKICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9EaWFsb2cjdGhlbWluZwogKi8KLnVpLWRpYWxvZyB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcGFkZGluZzogLjJlbTsgd2lkdGg6IDMwMHB4OyBvdmVyZmxvdzogaGlkZGVuOyB9Ci51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZWJhciB7IHBhZGRpbmc6IC40ZW0gMWVtOyBwb3NpdGlvbjogcmVsYXRpdmU7ICB9Ci51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZSB7IGZsb2F0OiBsZWZ0OyBtYXJnaW46IC4xZW0gMTZweCAuMWVtIDA7IH0gCi51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IC4zZW07IHRvcDogNTAlOyB3aWR0aDogMTlweDsgbWFyZ2luOiAtMTBweCAwIDAgMDsgcGFkZGluZzogMXB4OyBoZWlnaHQ6IDE4cHg7IH0KLnVpLWRpYWxvZyAudWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIHNwYW4geyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiAxcHg7IH0KLnVpLWRpYWxvZyAudWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlOmhvdmVyLCAudWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGViYXItY2xvc2U6Zm9jdXMgeyBwYWRkaW5nOiAwOyB9Ci51aS1kaWFsb2cgLnVpLWRpYWxvZy1jb250ZW50IHsgcG9zaXRpb246IHJlbGF0aXZlOyBib3JkZXI6IDA7IHBhZGRpbmc6IC41ZW0gMWVtOyBiYWNrZ3JvdW5kOiBub25lOyBvdmVyZmxvdzogYXV0bzsgem9vbTogMTsgfQoudWktZGlhbG9nIC51aS1kaWFsb2ctYnV0dG9ucGFuZSB7IHRleHQtYWxpZ246IGxlZnQ7IGJvcmRlci13aWR0aDogMXB4IDAgMCAwOyBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyBtYXJnaW46IC41ZW0gMCAwIDA7IHBhZGRpbmc6IC4zZW0gMWVtIC41ZW0gLjRlbTsgfQoudWktZGlhbG9nIC51aS1kaWFsb2ctYnV0dG9ucGFuZSAudWktZGlhbG9nLWJ1dHRvbnNldCB7IGZsb2F0OiByaWdodDsgfQoudWktZGlhbG9nIC51aS1kaWFsb2ctYnV0dG9ucGFuZSBidXR0b24geyBtYXJnaW46IC41ZW0gLjRlbSAuNWVtIDA7IGN1cnNvcjogcG9pbnRlcjsgfQoudWktZGlhbG9nIC51aS1yZXNpemFibGUtc2UgeyB3aWR0aDogMTRweDsgaGVpZ2h0OiAxNHB4OyByaWdodDogM3B4OyBib3R0b206IDNweDsgfQoudWktZHJhZ2dhYmxlIC51aS1kaWFsb2ctdGl0bGViYXIgeyBjdXJzb3I6IG1vdmU7IH0KLyohCiAqIGpRdWVyeSBVSSBTbGlkZXIgMS44LjIxCiAqCiAqIENvcHlyaWdodCAyMDEyLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICoKICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9TbGlkZXIjdGhlbWluZwogKi8KLnVpLXNsaWRlciB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgdGV4dC1hbGlnbjogbGVmdDsgfQoudWktc2xpZGVyIC51aS1zbGlkZXItaGFuZGxlIHsgcG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiAyOyB3aWR0aDogMS4yZW07IGhlaWdodDogMS4yZW07IGN1cnNvcjogZGVmYXVsdDsgfQoudWktc2xpZGVyIC51aS1zbGlkZXItcmFuZ2UgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDE7IGZvbnQtc2l6ZTogLjdlbTsgZGlzcGxheTogYmxvY2s7IGJvcmRlcjogMDsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOyB9CgoudWktc2xpZGVyLWhvcml6b250YWwgeyBoZWlnaHQ6IC44ZW07IH0KLnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItaGFuZGxlIHsgdG9wOiAtLjNlbTsgbWFyZ2luLWxlZnQ6IC0uNmVtOyB9Ci51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlIHsgdG9wOiAwOyBoZWlnaHQ6IDEwMCU7IH0KLnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2UtbWluIHsgbGVmdDogMDsgfQoudWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZS1tYXggeyByaWdodDogMDsgfQoKLnVpLXNsaWRlci12ZXJ0aWNhbCB7IHdpZHRoOiAuOGVtOyBoZWlnaHQ6IDEwMHB4OyB9Ci51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1oYW5kbGUgeyBsZWZ0OiAtLjNlbTsgbWFyZ2luLWxlZnQ6IDA7IG1hcmdpbi1ib3R0b206IC0uNmVtOyB9Ci51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZSB7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyB9Ci51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZS1taW4geyBib3R0b206IDA7IH0KLnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdlLW1heCB7IHRvcDogMDsgfS8qIQogKiBqUXVlcnkgVUkgVGFicyAxLjguMjEKICoKICogQ29weXJpZ2h0IDIwMTIsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL1RhYnMjdGhlbWluZwogKi8KLnVpLXRhYnMgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmc6IC4yZW07IHpvb206IDE7IH0gLyogcG9zaXRpb246IHJlbGF0aXZlIHByZXZlbnRzIElFIHNjcm9sbCBidWcgKGVsZW1lbnQgd2l0aCBwb3NpdGlvbjogcmVsYXRpdmUgaW5zaWRlIGNvbnRhaW5lciB3aXRoIG92ZXJmbG93OiBhdXRvIGFwcGVhciBhcyAiZml4ZWQiKSAqLwoudWktdGFicyAudWktdGFicy1uYXYgeyBtYXJnaW46IDA7IHBhZGRpbmc6IC4yZW0gLjJlbSAwOyB9Ci51aS10YWJzIC51aS10YWJzLW5hdiBsaSB7IGxpc3Qtc3R5bGU6IG5vbmU7IGZsb2F0OiBsZWZ0OyBwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDogMXB4OyBtYXJnaW46IDAgLjJlbSAxcHggMDsgYm9yZGVyLWJvdHRvbTogMCAhaW1wb3J0YW50OyBwYWRkaW5nOiAwOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9Ci51aS10YWJzIC51aS10YWJzLW5hdiBsaSBhIHsgZmxvYXQ6IGxlZnQ7IHBhZGRpbmc6IC41ZW0gMWVtOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXRhYnMtc2VsZWN0ZWQgeyBtYXJnaW4tYm90dG9tOiAwOyBwYWRkaW5nLWJvdHRvbTogMXB4OyB9Ci51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLXNlbGVjdGVkIGEsIC51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS1zdGF0ZS1kaXNhYmxlZCBhLCAudWktdGFicyAudWktdGFicy1uYXYgbGkudWktc3RhdGUtcHJvY2Vzc2luZyBhIHsgY3Vyc29yOiB0ZXh0OyB9Ci51aS10YWJzIC51aS10YWJzLW5hdiBsaSBhLCAudWktdGFicy51aS10YWJzLWNvbGxhcHNpYmxlIC51aS10YWJzLW5hdiBsaS51aS10YWJzLXNlbGVjdGVkIGEgeyBjdXJzb3I6IHBvaW50ZXI7IH0gLyogZmlyc3Qgc2VsZWN0b3IgaW4gZ3JvdXAgc2VlbXMgb2Jzb2xldGUsIGJ1dCByZXF1aXJlZCB0byBvdmVyY29tZSBidWcgaW4gT3BlcmEgYXBwbHlpbmcgY3Vyc29yOiB0ZXh0IG92ZXJhbGwgaWYgZGVmaW5lZCBlbHNld2hlcmUuLi4gKi8KLnVpLXRhYnMgLnVpLXRhYnMtcGFuZWwgeyBkaXNwbGF5OiBibG9jazsgYm9yZGVyLXdpZHRoOiAwOyBwYWRkaW5nOiAxZW0gMS40ZW07IGJhY2tncm91bmQ6IG5vbmU7IH0KLnVpLXRhYnMgLnVpLXRhYnMtaGlkZSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQovKiEKICogalF1ZXJ5IFVJIERhdGVwaWNrZXIgMS44LjIxCiAqCiAqIENvcHlyaWdodCAyMDEyLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICoKICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9EYXRlcGlja2VyI3RoZW1pbmcKICovCi51aS1kYXRlcGlja2VyIHsgd2lkdGg6IDE3ZW07IHBhZGRpbmc6IC4yZW0gLjJlbSAwOyBkaXNwbGF5OiBub25lOyB9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWhlYWRlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyBwYWRkaW5nOi4yZW0gMDsgfQoudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2LCAudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0IHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDogMnB4OyB3aWR0aDogMS44ZW07IGhlaWdodDogMS44ZW07IH0KLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldi1ob3ZlciwgLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dC1ob3ZlciB7IHRvcDogMXB4OyB9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYgeyBsZWZ0OjJweDsgfQoudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0IHsgcmlnaHQ6MnB4OyB9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYtaG92ZXIgeyBsZWZ0OjFweDsgfQoudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0LWhvdmVyIHsgcmlnaHQ6MXB4OyB9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYgc3BhbiwgLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dCBzcGFuIHsgZGlzcGxheTogYmxvY2s7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogNTAlOyBtYXJnaW4tbGVmdDogLThweDsgdG9wOiA1MCU7IG1hcmdpbi10b3A6IC04cHg7ICB9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXRpdGxlIHsgbWFyZ2luOiAwIDIuM2VtOyBsaW5lLWhlaWdodDogMS44ZW07IHRleHQtYWxpZ246IGNlbnRlcjsgfQoudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci10aXRsZSBzZWxlY3QgeyBmb250LXNpemU6MWVtOyBtYXJnaW46MXB4IDA7IH0KLnVpLWRhdGVwaWNrZXIgc2VsZWN0LnVpLWRhdGVwaWNrZXItbW9udGgteWVhciB7d2lkdGg6IDEwMCU7fQoudWktZGF0ZXBpY2tlciBzZWxlY3QudWktZGF0ZXBpY2tlci1tb250aCwgCi51aS1kYXRlcGlja2VyIHNlbGVjdC51aS1kYXRlcGlja2VyLXllYXIgeyB3aWR0aDogNDklO30KLnVpLWRhdGVwaWNrZXIgdGFibGUge3dpZHRoOiAxMDAlOyBmb250LXNpemU6IC45ZW07IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IG1hcmdpbjowIDAgLjRlbTsgfQoudWktZGF0ZXBpY2tlciB0aCB7IHBhZGRpbmc6IC43ZW0gLjNlbTsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXdlaWdodDogYm9sZDsgYm9yZGVyOiAwOyAgfQoudWktZGF0ZXBpY2tlciB0ZCB7IGJvcmRlcjogMDsgcGFkZGluZzogMXB4OyB9Ci51aS1kYXRlcGlja2VyIHRkIHNwYW4sIC51aS1kYXRlcGlja2VyIHRkIGEgeyBkaXNwbGF5OiBibG9jazsgcGFkZGluZzogLjJlbTsgdGV4dC1hbGlnbjogcmlnaHQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIHsgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgbWFyZ2luOiAuN2VtIDAgMCAwOyBwYWRkaW5nOjAgLjJlbTsgYm9yZGVyLWxlZnQ6IDA7IGJvcmRlci1yaWdodDogMDsgYm9yZGVyLWJvdHRvbTogMDsgfQoudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIGJ1dHRvbiB7IGZsb2F0OiByaWdodDsgbWFyZ2luOiAuNWVtIC4yZW0gLjRlbTsgY3Vyc29yOiBwb2ludGVyOyBwYWRkaW5nOiAuMmVtIC42ZW0gLjNlbSAuNmVtOyB3aWR0aDphdXRvOyBvdmVyZmxvdzp2aXNpYmxlOyB9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgYnV0dG9uLnVpLWRhdGVwaWNrZXItY3VycmVudCB7IGZsb2F0OmxlZnQ7IH0KCi8qIHdpdGggbXVsdGlwbGUgY2FsZW5kYXJzICovCi51aS1kYXRlcGlja2VyLnVpLWRhdGVwaWNrZXItbXVsdGkgeyB3aWR0aDphdXRvOyB9Ci51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3VwIHsgZmxvYXQ6bGVmdDsgfQoudWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1ncm91cCB0YWJsZSB7IHdpZHRoOjk1JTsgbWFyZ2luOjAgYXV0byAuNGVtOyB9Ci51aS1kYXRlcGlja2VyLW11bHRpLTIgLnVpLWRhdGVwaWNrZXItZ3JvdXAgeyB3aWR0aDo1MCU7IH0KLnVpLWRhdGVwaWNrZXItbXVsdGktMyAudWktZGF0ZXBpY2tlci1ncm91cCB7IHdpZHRoOjMzLjMlOyB9Ci51aS1kYXRlcGlja2VyLW11bHRpLTQgLnVpLWRhdGVwaWNrZXItZ3JvdXAgeyB3aWR0aDoyNSU7IH0KLnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNrZXItZ3JvdXAtbGFzdCAudWktZGF0ZXBpY2tlci1oZWFkZXIgeyBib3JkZXItbGVmdC13aWR0aDowOyB9Ci51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3VwLW1pZGRsZSAudWktZGF0ZXBpY2tlci1oZWFkZXIgeyBib3JkZXItbGVmdC13aWR0aDowOyB9Ci51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgeyBjbGVhcjpsZWZ0OyB9Ci51aS1kYXRlcGlja2VyLXJvdy1icmVhayB7IGNsZWFyOmJvdGg7IHdpZHRoOjEwMCU7IGZvbnQtc2l6ZTowZW07IH0KCi8qIFJUTCBzdXBwb3J0ICovCi51aS1kYXRlcGlja2VyLXJ0bCB7IGRpcmVjdGlvbjogcnRsOyB9Ci51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1wcmV2IHsgcmlnaHQ6IDJweDsgbGVmdDogYXV0bzsgfQoudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItbmV4dCB7IGxlZnQ6IDJweDsgcmlnaHQ6IGF1dG87IH0KLnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLXByZXY6aG92ZXIgeyByaWdodDogMXB4OyBsZWZ0OiBhdXRvOyB9Ci51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1uZXh0OmhvdmVyIHsgbGVmdDogMXB4OyByaWdodDogYXV0bzsgfQoudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSB7IGNsZWFyOnJpZ2h0OyB9Ci51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIGJ1dHRvbiB7IGZsb2F0OiBsZWZ0OyB9Ci51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIGJ1dHRvbi51aS1kYXRlcGlja2VyLWN1cnJlbnQgeyBmbG9hdDpyaWdodDsgfQoudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItZ3JvdXAgeyBmbG9hdDpyaWdodDsgfQoudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItZ3JvdXAtbGFzdCAudWktZGF0ZXBpY2tlci1oZWFkZXIgeyBib3JkZXItcmlnaHQtd2lkdGg6MDsgYm9yZGVyLWxlZnQtd2lkdGg6MXB4OyB9Ci51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1ncm91cC1taWRkbGUgLnVpLWRhdGVwaWNrZXItaGVhZGVyIHsgYm9yZGVyLXJpZ2h0LXdpZHRoOjA7IGJvcmRlci1sZWZ0LXdpZHRoOjFweDsgfQoKLyogSUU2IElGUkFNRSBGSVggKHRha2VuIGZyb20gZGF0ZXBpY2tlciAxLjUuMyAqLwoudWktZGF0ZXBpY2tlci1jb3ZlciB7CiAgICBkaXNwbGF5OiBub25lOyAvKnNvcnJ5IGZvciBJRTUqLwogICAgZGlzcGxheS8qKi86IGJsb2NrOyAvKnNvcnJ5IGZvciBJRTUqLwogICAgcG9zaXRpb246IGFic29sdXRlOyAvKm11c3QgaGF2ZSovCiAgICB6LWluZGV4OiAtMTsgLyptdXN0IGhhdmUqLwogICAgZmlsdGVyOiBtYXNrKCk7IC8qbXVzdCBoYXZlKi8KICAgIHRvcDogLTRweDsgLyptdXN0IGhhdmUqLwogICAgbGVmdDogLTRweDsgLyptdXN0IGhhdmUqLwogICAgd2lkdGg6IDIwMHB4OyAvKm11c3QgaGF2ZSovCiAgICBoZWlnaHQ6IDIwMHB4OyAvKm11c3QgaGF2ZSovCn0vKiEKICogalF1ZXJ5IFVJIFByb2dyZXNzYmFyIDEuOC4yMQogKgogKiBDb3B5cmlnaHQgMjAxMiwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvUHJvZ3Jlc3NiYXIjdGhlbWluZwogKi8KLnVpLXByb2dyZXNzYmFyIHsgaGVpZ2h0OjJlbTsgdGV4dC1hbGlnbjogbGVmdDsgb3ZlcmZsb3c6IGhpZGRlbjsgfQoudWktcHJvZ3Jlc3NiYXIgLnVpLXByb2dyZXNzYmFyLXZhbHVlIHttYXJnaW46IC0xcHg7IGhlaWdodDoxMDAlOyB9]]></data>
	</file>
	<file>
	  <filename>/css/style.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmFjZV93cmFwcGVyIHsNCglib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDsNCglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQoJcGFkZGluZzogMDsNCiAgICBib3JkZXI6IDVweCBzb2xpZCAjZGRkOyAJDQp9DQouYWNlX3dyYXBwZXIgdGV4dGFyZWEgew0KCWRpc3BsYXk6IGJsb2NrOw0KCWJvcmRlci1yYWRpdXM6IDA7DQoJYm9yZGVyOiBub25lOw0KCXBhZGRpbmctbGVmdDogMDsNCglwYWRkaW5nLXJpZ2h0OiAwOw0KfQ0KLmFjZV90b29sYmFyLnVpLWJ1dHRvbnNldCB7DQogICAgYmFja2dyb3VuZDogI2RkZDsgDQoJYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjZGRkZGRkIDAlLCAjZjRmNGY0IDQxJSwgI2RkZGRkZCAxMDAlKTsgDQoJYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwjZGRkZGRkKSwgY29sb3Itc3RvcCg0MSUsI2Y0ZjRmNCksIGNvbG9yLXN0b3AoMTAwJSwjZGRkZGRkKSk7IA0KCWJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2RkZGRkZCAwJSwjZjRmNGY0IDQxJSwjZGRkZGRkIDEwMCUpOyANCgliYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZGRkZGRkIDAlLCNmNGY0ZjQgNDElLCNkZGRkZGQgMTAwJSk7IA0KICAgIHBhZGRpbmc6IDRweDsNCiAgICBtYXJnaW46IDA7ICAgDQogICAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkICNkZGQ7IA0KICAgIGRpc3BsYXk6IGJsb2NrOw0KfQ0KLmFjZV90b29sYmFyIGxhYmVsIHsNCglwYWRkaW5nOiAwIDhweDsNCglmb250LXNpemU6IDExcHg7DQp9DQouYWNlX3Rvb2xiYXIgaW5wdXRbdHlwZT0idGV4dCJdLA0KLmFjZV90b29sYmFyIGlucHV0IHsNCgloZWlnaHQ6IGF1dG87DQoJbWFyZ2luOiAwOw0KCW1pbi13aWR0aDogMSU7DQoJd2lkdGg6IDQwcHg7DQp9DQouYWNlX3Rvb2xiYXIgaW5wdXRbdHlwZT0idGV4dCJdLndpZGUsDQouYWNlX3Rvb2xiYXIgaW5wdXQud2lkZSB7DQoJd2lkdGg6IDE1MHB4Ow0KfQ0KLmFjZV90b29sYmFyIC51aS1idXR0b24gew0KCW1hcmdpbjogMDsNCglwYWRkaW5nOiAwOw0KCWhlaWdodDogYXV0bzsNCglmb250LXdlaWdodDogYm9sZDsNCglsaW5lLWhlaWdodDogMDsNCn0NCmxhYmVsLnVpLWJ1dHRvbiB7DQoJcGFkZGluZzogMDsNCgltYXJnaW46IDA7DQp9DQo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_frontendprefstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogQWNlRWRpdG9yIC0gU3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IgaHR0cDovL2FjZS5hamF4Lm9yZy8uDQojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0DQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgRm9yIEhlbHAgYnVpbGRpbmcgbW9kdWxlczoNCiMgLSBSZWFkIHRoZSBEb2N1bWVudGF0aW9uIGFzIGl0IGJlY29tZXMgYXZhaWxhYmxlIGF0DQojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8NCiMgLSBDaGVjayBvdXQgdGhlIFNrZWxldG9uIE1vZHVsZSBmb3IgYSBjb21tZW50ZWQgZXhhbXBsZQ0KIyAtIExvb2sgYXQgb3RoZXIgbW9kdWxlcywgYW5kIGxlYXJuIGZyb20gdGhlIHNvdXJjZQ0KIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcNCiMgLSBDaGF0IHdpdGggZGV2ZWxvcGVycyBvbiB0aGUgI2NtcyBJUkMgY2hhbm5lbA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ2V4YW1wbGVfc3ludGF4J10pKSB7DQoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2V4YW1wbGVfc3ludGF4JywgJHBhcmFtc1snZXhhbXBsZV9zeW50YXgnXSk7DQp9DQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnc2F2ZWZyb250ZW5kc2V0dGluZ3MnLCAkcmV0dXJuaWQpKTsNCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdzZXR0aW5nc3RleHQnLCAkdGhpcy0+TGFuZygnZnJvbnRlbmRfaGVhZF9zZXR0aW5ncycpKTsNCiRzbWFydHktPmFzc2lnbignc3ludGF4X3NldHRpbmdzdGV4dCcsICR0aGlzLT5MYW5nKCdmcm9udGVuZF9zeW50YXhhcmVhX3NldHRpbmdzJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdoZWFkX2Rlc2NyaXB0aW9uJywgJHRoaXMtPkxhbmcoJ2hlYWRfZGVzY3JpcHRpb24nKSk7DQokc21hcnR5LT5hc3NpZ24oJ2NvbnRlbnRfZGVzY3JpcHRpb24nLCAkdGhpcy0+TGFuZygnY29udGVudF9kZXNjcmlwdGlvbicpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCd3aWR0aF90aXRsZScsICR0aGlzLT5MYW5nKCdmcm9udGVuZF93aWR0aF90aXRsZScpKTsNCiRzbWFydHktPmFzc2lnbignd2lkdGhfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2Zyb250ZW5kX3dpZHRoJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3dpZHRoJywgJzUwMCcpLCAxMCwgMjU1KSk7DQokc21hcnR5LT5hc3NpZ24oJ2hlaWdodF90aXRsZScsICR0aGlzLT5MYW5nKCdmcm9udGVuZF9oZWlnaHRfdGl0bGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2hlaWdodF9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZnJvbnRlbmRfaGVpZ2h0JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Zyb250ZW5kX2hlaWdodCcsICc0MDAnKSwgMTAsIDI1NSkpOw0KDQovKiBtb2RlcyAqLw0KJHNtYXJ0eS0+YXNzaWduKCdmcm9udGVuZF9zeW50YXhfbW9kZScsICR0aGlzLT5MYW5nKCdzeW50YXhfbW9kZScpKTsNCiRtb2RlcyA9IGFycmF5KA0KICAgICR0aGlzLT5MYW5nKCdqcycpID0+ICdqYXZhc2NyaXB0JywNCiAgICAkdGhpcy0+TGFuZygncGxhaW4nKSA9PiAncGxhaW4nLA0KICAgICR0aGlzLT5MYW5nKCdzdmcnKSA9PiAnc3ZnJywNCiAgICAkdGhpcy0+TGFuZygnaHRtbCcpID0+ICdodG1sJywNCiAgICAkdGhpcy0+TGFuZygnY3NzJykgPT4gJ2NzcycsDQogICAgJHRoaXMtPkxhbmcoJ3Njc3MnKSA9PiAnc2NzcycsDQogICAgJHRoaXMtPkxhbmcoJ2NvZmZlZScpID0+ICdjb2ZmZWUnLA0KICAgICR0aGlzLT5MYW5nKCdqc29uJykgPT4gJ2pzb24nLA0KICAgICR0aGlzLT5MYW5nKCdweXRob24nKSA9PiAncHl0aG9uJywNCiAgICAkdGhpcy0+TGFuZygncnVieScpID0+ICdydWJ5JywNCiAgICAkdGhpcy0+TGFuZygncGVybCcpID0+ICdwZXJsJywNCiAgICAkdGhpcy0+TGFuZygncGhwJykgPT4gJ3BocCcsDQogICAgJHRoaXMtPkxhbmcoJ2phdmEnKSA9PiAnamF2YScsDQogICAgJHRoaXMtPkxhbmcoJ2NzaGFycCcpID0+ICdjc2hhcnAnLA0KICAgICR0aGlzLT5MYW5nKCdjX2NwcCcpID0+ICdjX2NwcCcsDQogICAgJHRoaXMtPkxhbmcoJ2Nsb2p1cmUnKSA9PiAnY2xvanVyZScsDQogICAgJHRoaXMtPkxhbmcoJ2NvbGRmdXNpb24nKSA9PiAnY29sZGZ1c2lvbicsDQogICAgJHRoaXMtPkxhbmcoJ2RpZmYnKSA9PiAnZGlmZicsDQogICAgJHRoaXMtPkxhbmcoJ2hheGUnKSA9PiAnaGF4ZScsDQogICAgJHRoaXMtPkxhbmcoJ2xhdGV4JykgPT4gJ2xhdGV4JywNCiAgICAkdGhpcy0+TGFuZygnbHVhJykgPT4gJ2x1YScsDQogICAgJHRoaXMtPkxhbmcoJ21hcmtkb3duJykgPT4gJ21hcmtkb3duJywNCiAgICAkdGhpcy0+TGFuZygncG93ZXJzaGVsbCcpID0+ICdwb3dlcnNoZWxsJywNCiAgICAkdGhpcy0+TGFuZygnc3FsJykgPT4gJ3NxbCcsDQogICAgJHRoaXMtPkxhbmcoJ3Bnc3FsJykgPT4gJ3Bnc3FsJywNCiAgICAkdGhpcy0+TGFuZygnb2NhbWwnKSA9PiAnb2NhbWwnLA0KICAgICR0aGlzLT5MYW5nKCd0ZXh0aWxlJykgPT4gJ3RleHRpbGUnLA0KICAgICR0aGlzLT5MYW5nKCdncm9vdnknKSA9PiAnZ3Jvb3Z5JywNCiAgICAkdGhpcy0+TGFuZygnZ29sYW5nJykgPT4gJ2dvbGFuZycsDQogICAgJHRoaXMtPkxhbmcoJ2pzeCcpID0+ICdqc3gnLA0KICAgICR0aGlzLT5MYW5nKCdsZXNzJykgPT4gJ2xlc3MnLA0KICAgICR0aGlzLT5MYW5nKCdsaXF1aWQnKSA9PiAnbGlxdWlkJywNCiAgICAkdGhpcy0+TGFuZygnc2NhZCcpID0+ICdzY2FkJywNCiAgICAkdGhpcy0+TGFuZygnc2gnKSA9PiAnc2gnLA0KICAgICR0aGlzLT5MYW5nKCd4cXVlcnknKSA9PiAneHF1ZXJ5JywNCiAgICAkdGhpcy0+TGFuZygneWFtbCcpID0+ICd5YW1sJywNCiAgICAkdGhpcy0+TGFuZygnc2NhbGEnKSA9PiAnc2NhbGEnDQopOw0KLy8gaGVhZCBtdWx0aXNlbGVjdAkJDQokc21hcnR5LT5hc3NpZ24oJ2Zyb250ZW5kX3N5bnRheF9tb2RlaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJ2Zyb250ZW5kX21vZGVbXScsICRtb2RlcywgZXhwbG9kZSgnLCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9tb2RlJywgJ2h0bWwnKSksIDUpKTsNCi8vIHN5bnRheGFyZWEgcHJlZg0KJHNtYXJ0eS0+YXNzaWduKCdmcm9udGVuZF9zeW50YXhhcmVhX21vZGVpbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2Zyb250ZW5kX3N5bnRheGFyZWFfbW9kZScsICRtb2RlcywgLTEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9zeW50YXhhcmVhX21vZGUnLCAnaHRtbCcpKSk7DQoNCi8qIHRoZW1lcyAqLw0KJHNtYXJ0eS0+YXNzaWduKCd0aGVtZXRleHQnLCAkdGhpcy0+TGFuZygndGhlbWVzJykpOw0KJHRoZW1lcyA9IGFycmF5KA0KICAgICR0aGlzLT5MYW5nKCdjaHJvbWUnKSA9PiAnY2hyb21lJywNCiAgICAkdGhpcy0+TGFuZygnY2xvdWRzJykgPT4gJ2Nsb3VkcycsDQogICAgJHRoaXMtPkxhbmcoJ2Nsb3Vkc19taWRuaWdodCcpID0+ICdjbG91ZHNfbWlkbmlnaHQnLA0KICAgICR0aGlzLT5MYW5nKCdjb2JhbHQnKSA9PiAnY29iYWx0JywNCiAgICAkdGhpcy0+TGFuZygnY3JpbXNvbl9lZGl0b3InKSA9PiAnY3JpbXNvbl9lZGl0b3InLA0KICAgICR0aGlzLT5MYW5nKCdkYXduJykgPT4gJ2Rhd24nLA0KICAgICR0aGlzLT5MYW5nKCdkcmVhbXdlYXZlcicpID0+ICdkcmVhbXdlYXZlcicsDQogICAgJHRoaXMtPkxhbmcoJ2VjbGlwc2UnKSA9PiAnZWNsaXBzZScsDQogICAgJHRoaXMtPkxhbmcoJ2lkbGVfZmluZ2VycycpID0+ICdpZGxlX2ZpbmdlcnMnLA0KICAgICR0aGlzLT5MYW5nKCdrcl90aGVtZScpID0+ICdrcl90aGVtZScsDQogICAgJHRoaXMtPkxhbmcoJ21lcmJpdm9yZScpID0+ICdtZXJiaXZvcmUnLA0KICAgICR0aGlzLT5MYW5nKCdtZXJiaXZvcmVfc29mdCcpID0+ICdtZXJiaXZvcmVfc29mdCcsDQogICAgJHRoaXMtPkxhbmcoJ21vbm9faW5kdXN0cmlhbCcpID0+ICdtb25vX2luZHVzdHJpYWwnLA0KICAgICR0aGlzLT5MYW5nKCdtb25va2FpJykgPT4gJ21vbm9rYWknLA0KICAgICR0aGlzLT5MYW5nKCdwYXN0ZWxfb25fZGFyaycpID0+ICdwYXN0ZWxfb25fZGFyaycsDQogICAgJHRoaXMtPkxhbmcoJ3NvbGFyaXplZF9kYXJrJykgPT4gJ3NvbGFyaXplZF9kYXJrJywNCiAgICAkdGhpcy0+TGFuZygnc29sYXJpemVkX2xpZ2h0JykgPT4gJ3NvbGFyaXplZF9saWdodCcsDQogICAgJHRoaXMtPkxhbmcoJ3RleHRtYXRlJykgPT4gJ3RleHRtYXRlJywNCiAgICAkdGhpcy0+TGFuZygndG9tb3Jyb3cnKSA9PiAndG9tb3Jyb3cnLA0KICAgICR0aGlzLT5MYW5nKCd0b21vcnJvd19uaWdodCcpID0+ICd0b21vcnJvd19uaWdodCcsDQogICAgJHRoaXMtPkxhbmcoJ3RvbW9ycm93X25pZ2h0X2JsdWUnKSA9PiAndG9tb3Jyb3dfbmlnaHRfYmx1ZScsDQogICAgJHRoaXMtPkxhbmcoJ3RvbW9ycm93X25pZ2h0X2JyaWdodCcpID0+ICd0b21vcnJvd19uaWdodF9icmlnaHQnLA0KICAgICR0aGlzLT5MYW5nKCd0b21vcnJvd19uaWdodF9laWdodGllcycpID0+ICd0b21vcnJvd19uaWdodF9laWdodGllcycsDQogICAgJHRoaXMtPkxhbmcoJ3R3aWxpZ2h0JykgPT4gJ3R3aWxpZ2h0JywNCiAgICAkdGhpcy0+TGFuZygndmlicmFudF9pbmsnKSA9PiAndmlicmFudF9pbmsnDQopOw0KLy8gaGVhZCB0aGVtZXMNCiRzbWFydHktPmFzc2lnbignZnJvbnRlbmRfdGhlbWVpbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAnZnJvbnRlbmRfdGhlbWVbXScsICR0aGVtZXMsIGV4cGxvZGUoJywnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfdGhlbWUnLCAndGV4dG1hdGUnKSksIDUpKTsNCi8vIHN5bnRheGFyZWEgdGhlbWUJDQokc21hcnR5LT5hc3NpZ24oJ3RoZW1laW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdmcm9udGVuZF9zeW50YXhhcmVhX3RoZW1lJywgJHRoZW1lcywgLTEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9zeW50YXhhcmVhX3RoZW1lJywgJ3RleHRtYXRlJykpKTsNCg0KLyogZm9udCBzaXplICovDQokc21hcnR5LT5hc3NpZ24oJ2ZvbnRzaXpldGV4dCcsICR0aGlzLT5MYW5nKCdmb250X3NpemUnKSk7DQokZm9udHMgPSBhcnJheSgNCgknMTBweCcgPT4gJzEwcHgnLA0KCScxMXB4JyA9PiAnMTFweCcsDQoJJzEycHgnID0+ICcxMnB4JywNCgknMTRweCcgPT4gJzE0cHgnLA0KCScxNnB4JyA9PiAnMTZweCcsDQoJJzIwcHgnID0+ICcyMHB4JywNCgknMjRweCcgPT4gJzI0cHgnDQopOw0KJHNtYXJ0eS0+YXNzaWduKCdmb250c2l6ZWlucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnZnJvbnRlbmRfZm9udHNpemUnLCAkZm9udHMsIC0xLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfZm9udHNpemUnLCAnMTJweCcpKSk7DQovLyBzdWJtaXQgc2V0dGluZ3MNCiRzbWFydHktPmFzc2lnbignZnJvbnRlbmRzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnZnJvbnRlbmRzdWJtaXQnLCAkdGhpcy0+TGFuZygnc2F2ZXNldHRpbmdzJykpKTsNCg0KLyogUHJvY2Vzc1RlbXBhbHRlICovDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2Zyb250ZW5kc2V0dGluZ3MudHBsJyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_prefstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogQWNlRWRpdG9yIC0gU3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IgaHR0cDovL2FjZS5hamF4Lm9yZy8uDQojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0DQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgRm9yIEhlbHAgYnVpbGRpbmcgbW9kdWxlczoNCiMgLSBSZWFkIHRoZSBEb2N1bWVudGF0aW9uIGFzIGl0IGJlY29tZXMgYXZhaWxhYmxlIGF0DQojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8NCiMgLSBDaGVjayBvdXQgdGhlIFNrZWxldG9uIE1vZHVsZSBmb3IgYSBjb21tZW50ZWQgZXhhbXBsZQ0KIyAtIExvb2sgYXQgb3RoZXIgbW9kdWxlcywgYW5kIGxlYXJuIGZyb20gdGhlIHNvdXJjZQ0KIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcNCiMgLSBDaGF0IHdpdGggZGV2ZWxvcGVycyBvbiB0aGUgI2NtcyBJUkMgY2hhbm5lbA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ2V4YW1wbGVfc3ludGF4J10pKSB7DQoJY21zX3VzZXJwcmVmczo6c2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX2V4YW1wbGVfc3ludGF4JywgJHBhcmFtc1snZXhhbXBsZV9zeW50YXgnXSk7DQp9DQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnc2F2ZXNldHRpbmdzJywgJHJldHVybmlkKSk7DQokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCiRzbWFydHktPmFzc2lnbignc2V0dGluZ3N0ZXh0JywgJHRoaXMtPkxhbmcoJ3NldHRpbmdzX3RhYicpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCd3aWR0aF90aXRsZScsICR0aGlzLT5MYW5nKCd3aWR0aF90aXRsZScpKTsNCiRzbWFydHktPmFzc2lnbignd2lkdGhfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3dpZHRoJywgY21zX3VzZXJwcmVmczo6Z2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX3dpZHRoJywgJzgwJyksIDEwLCAyNTUpKTsNCiRzbWFydHktPmFzc2lnbignaGVpZ2h0X3RpdGxlJywgJHRoaXMtPkxhbmcoJ2hlaWdodF90aXRsZScpKTsNCiRzbWFydHktPmFzc2lnbignaGVpZ2h0X2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdoZWlnaHQnLCBjbXNfdXNlcnByZWZzOjpnZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfaGVpZ2h0JywgJzQwJyksIDEwLCAyNTUpKTsNCi8vIGNyZWF0ZSBhIElFIHByZWYsIERPTlQgV0FOVCBUTyBTRUUgQSBCUiBGT1IgVEhJUyBTSElUIQ0KJHNtYXJ0eS0+YXNzaWduKCdlbmFibGVfaWV0ZXh0JywgJHRoaXMtPkxhbmcoJ2VuYWJsZV9pZScpKTsNCiRzbWFydHktPmFzc2lnbignZW5hYmxlX2llZGVzY3InLCAkdGhpcy0+TGFuZygnZW5hYmxlX2llZGVzY3JpcHRpb24nKSk7DQokc21hcnR5LT5hc3NpZ24oJ2VuYWJsZV9pZWlucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnZW5hYmxlX2llJywgMSwgY21zX3VzZXJwcmVmczo6Z2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX2VuYWJsZV9pZScsIDApKSk7DQoNCi8qIG1vZGUgZHJvcGRvd24gKi8NCiRzbWFydHktPmFzc2lnbignc3ludGF4X21vZGUnLCAkdGhpcy0+TGFuZygnc3ludGF4X21vZGUnKSk7DQokbW9kZXMgPSBhcnJheSgNCgkkdGhpcy0+TGFuZygnanMnKSA9PiAnamF2YXNjcmlwdCcsDQoJJHRoaXMtPkxhbmcoJ3BsYWluJykgPT4gJ3BsYWluJywNCgkkdGhpcy0+TGFuZygnc3ZnJykgPT4gJ3N2ZycsDQoJJHRoaXMtPkxhbmcoJ2h0bWwnKSA9PiAnaHRtbCcsDQoJJHRoaXMtPkxhbmcoJ2NzcycpID0+ICdjc3MnLA0KCSR0aGlzLT5MYW5nKCdzY3NzJykgPT4gJ3Njc3MnLA0KCSR0aGlzLT5MYW5nKCdjb2ZmZWUnKSA9PiAnY29mZmVlJywNCgkkdGhpcy0+TGFuZygnanNvbicpID0+ICdqc29uJywNCgkkdGhpcy0+TGFuZygncHl0aG9uJykgPT4gJ3B5dGhvbicsDQoJJHRoaXMtPkxhbmcoJ3J1YnknKSA9PiAncnVieScsDQoJJHRoaXMtPkxhbmcoJ3BlcmwnKSA9PiAncGVybCcsDQoJJHRoaXMtPkxhbmcoJ3BocCcpID0+ICdwaHAnLA0KCSR0aGlzLT5MYW5nKCdqYXZhJykgPT4gJ2phdmEnLA0KCSR0aGlzLT5MYW5nKCdjc2hhcnAnKSA9PiAnY3NoYXJwJywNCgkkdGhpcy0+TGFuZygnY19jcHAnKSA9PiAnY19jcHAnLA0KCSR0aGlzLT5MYW5nKCdjbG9qdXJlJykgPT4gJ2Nsb2p1cmUnLA0KCSR0aGlzLT5MYW5nKCdjb2xkZnVzaW9uJykgPT4gJ2NvbGRmdXNpb24nLA0KCSR0aGlzLT5MYW5nKCdkaWZmJykgPT4gJ2RpZmYnLA0KCSR0aGlzLT5MYW5nKCdoYXhlJykgPT4gJ2hheGUnLA0KCSR0aGlzLT5MYW5nKCdsYXRleCcpID0+ICdsYXRleCcsDQoJJHRoaXMtPkxhbmcoJ2x1YScpID0+ICdsdWEnLA0KCSR0aGlzLT5MYW5nKCdtYXJrZG93bicpID0+ICdtYXJrZG93bicsDQoJJHRoaXMtPkxhbmcoJ3Bvd2Vyc2hlbGwnKSA9PiAncG93ZXJzaGVsbCcsDQoJJHRoaXMtPkxhbmcoJ3NxbCcpID0+ICdzcWwnLA0KCSR0aGlzLT5MYW5nKCdwZ3NxbCcpID0+ICdwZ3NxbCcsDQoJJHRoaXMtPkxhbmcoJ29jYW1sJykgPT4gJ29jYW1sJywNCgkkdGhpcy0+TGFuZygndGV4dGlsZScpID0+ICd0ZXh0aWxlJywNCgkkdGhpcy0+TGFuZygnZ3Jvb3Z5JykgPT4gJ2dyb292eScsDQoJJHRoaXMtPkxhbmcoJ2dvbGFuZycpID0+ICdnb2xhbmcnLA0KCSR0aGlzLT5MYW5nKCdqc3gnKSA9PiAnanN4JywNCgkkdGhpcy0+TGFuZygnbGVzcycpID0+ICdsZXNzJywNCgkkdGhpcy0+TGFuZygnbGlxdWlkJykgPT4gJ2xpcXVpZCcsDQoJJHRoaXMtPkxhbmcoJ3NjYWQnKSA9PiAnc2NhZCcsDQoJJHRoaXMtPkxhbmcoJ3NoJykgPT4gJ3NoJywNCgkkdGhpcy0+TGFuZygneHF1ZXJ5JykgPT4gJ3hxdWVyeScsDQoJJHRoaXMtPkxhbmcoJ3lhbWwnKSA9PiAneWFtbCcsDQoJJHRoaXMtPkxhbmcoJ3NjYWxhJykgPT4gJ3NjYWxhJw0KKTsNCiRzbWFydHktPmFzc2lnbignc3ludGF4X21vZGVpbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ21vZGUnLCAkbW9kZXMsIC0xLCBjbXNfdXNlcnByZWZzOjpnZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfbW9kZScsICdodG1sJyksICdvbmNoYW5nZT0idGhpcy5mb3JtLnN1Ym1pdCgpIicpKTsNCg0KLyogdGhlbWVzICovDQokc21hcnR5LT5hc3NpZ24oJ3RoZW1ldGV4dCcsICR0aGlzLT5MYW5nKCd0aGVtZXMnKSk7DQokdGhlbWVzID0gYXJyYXkoDQoJJHRoaXMtPkxhbmcoJ2Nocm9tZScpID0+ICdjaHJvbWUnLA0KCSR0aGlzLT5MYW5nKCdjbG91ZHMnKSA9PiAnY2xvdWRzJywNCgkkdGhpcy0+TGFuZygnY2xvdWRzX21pZG5pZ2h0JykgPT4gJ2Nsb3Vkc19taWRuaWdodCcsDQoJJHRoaXMtPkxhbmcoJ2NvYmFsdCcpID0+ICdjb2JhbHQnLA0KCSR0aGlzLT5MYW5nKCdjcmltc29uX2VkaXRvcicpID0+ICdjcmltc29uX2VkaXRvcicsDQoJJHRoaXMtPkxhbmcoJ2Rhd24nKSA9PiAnZGF3bicsDQoJJHRoaXMtPkxhbmcoJ2RyZWFtd2VhdmVyJykgPT4gJ2RyZWFtd2VhdmVyJywNCgkkdGhpcy0+TGFuZygnZWNsaXBzZScpID0+ICdlY2xpcHNlJywNCgkkdGhpcy0+TGFuZygnaWRsZV9maW5nZXJzJykgPT4gJ2lkbGVfZmluZ2VycycsDQoJJHRoaXMtPkxhbmcoJ2tyX3RoZW1lJykgPT4gJ2tyX3RoZW1lJywNCgkkdGhpcy0+TGFuZygnbWVyYml2b3JlJykgPT4gJ21lcmJpdm9yZScsDQoJJHRoaXMtPkxhbmcoJ21lcmJpdm9yZV9zb2Z0JykgPT4gJ21lcmJpdm9yZV9zb2Z0JywNCgkkdGhpcy0+TGFuZygnbW9ub19pbmR1c3RyaWFsJykgPT4gJ21vbm9faW5kdXN0cmlhbCcsDQoJJHRoaXMtPkxhbmcoJ21vbm9rYWknKSA9PiAnbW9ub2thaScsDQoJJHRoaXMtPkxhbmcoJ3Bhc3RlbF9vbl9kYXJrJykgPT4gJ3Bhc3RlbF9vbl9kYXJrJywNCgkkdGhpcy0+TGFuZygnc29sYXJpemVkX2RhcmsnKSA9PiAnc29sYXJpemVkX2RhcmsnLA0KCSR0aGlzLT5MYW5nKCdzb2xhcml6ZWRfbGlnaHQnKSA9PiAnc29sYXJpemVkX2xpZ2h0JywNCgkkdGhpcy0+TGFuZygndGV4dG1hdGUnKSA9PiAndGV4dG1hdGUnLA0KCSR0aGlzLT5MYW5nKCd0b21vcnJvdycpID0+ICd0b21vcnJvdycsDQoJJHRoaXMtPkxhbmcoJ3RvbW9ycm93X25pZ2h0JykgPT4gJ3RvbW9ycm93X25pZ2h0JywNCgkkdGhpcy0+TGFuZygndG9tb3Jyb3dfbmlnaHRfYmx1ZScpID0+ICd0b21vcnJvd19uaWdodF9ibHVlJywNCgkkdGhpcy0+TGFuZygndG9tb3Jyb3dfbmlnaHRfYnJpZ2h0JykgPT4gJ3RvbW9ycm93X25pZ2h0X2JyaWdodCcsDQoJJHRoaXMtPkxhbmcoJ3RvbW9ycm93X25pZ2h0X2VpZ2h0aWVzJykgPT4gJ3RvbW9ycm93X25pZ2h0X2VpZ2h0aWVzJywNCgkkdGhpcy0+TGFuZygndHdpbGlnaHQnKSA9PiAndHdpbGlnaHQnLA0KCSR0aGlzLT5MYW5nKCd2aWJyYW50X2luaycpID0+ICd2aWJyYW50X2luaycNCik7DQokc21hcnR5LT5hc3NpZ24oJ3RoZW1laW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICd0aGVtZScsICR0aGVtZXMsIC0xLCBjbXNfdXNlcnByZWZzOjpnZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfdGhlbWUnLCAndGV4dG1hdGUnKSwgJ29uY2hhbmdlPSJ0aGlzLmZvcm0uc3VibWl0KCkiJykpOw0KDQovKiBmb250IHNpemUgKi8NCiRzbWFydHktPmFzc2lnbignZm9udHNpemV0ZXh0JywgJHRoaXMtPkxhbmcoJ2ZvbnRfc2l6ZScpKTsNCiRmb250cyA9IGFycmF5KA0KCScxMHB4JyA9PiAnMTBweCcsDQoJJzExcHgnID0+ICcxMXB4JywNCgknMTJweCcgPT4gJzEycHgnLA0KCScxNHB4JyA9PiAnMTRweCcsDQoJJzE2cHgnID0+ICcxNnB4JywNCgknMjBweCcgPT4gJzIwcHgnLA0KCScyNHB4JyA9PiAnMjRweCcNCik7DQokc21hcnR5LT5hc3NpZ24oJ2ZvbnRzaXplaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdmb250c2l6ZScsICRmb250cywgLTEsIGNtc191c2VycHJlZnM6OmdldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19mb250c2l6ZScsICcxMnB4JykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdmdWxsX2xpbmV0ZXh0JywgJHRoaXMtPkxhbmcoJ2Z1bGxfbGluZScpKTsNCiRzbWFydHktPmFzc2lnbignZnVsbF9saW5laW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdmdWxsX2xpbmUnLCAxLCBjbXNfdXNlcnByZWZzOjpnZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfZnVsbF9saW5lJywgMSkpKTsNCiRzbWFydHktPmFzc2lnbignaGlnaGxpZ2h0X2FjdGl2ZXRleHQnLCAkdGhpcy0+TGFuZygnaGlnaGxpZ2h0X2FjdGl2ZScpKTsNCiRzbWFydHktPmFzc2lnbignaGlnaGxpZ2h0X2FjdGl2ZWlucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaGlnaGxpZ2h0X2FjdGl2ZScsIDEsIGNtc191c2VycHJlZnM6OmdldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19oaWdobGlnaHRfYWN0aXZlJywgMSkpKTsNCiRzbWFydHktPmFzc2lnbignc2hvd19pbnZpc2libGVzdGV4dCcsICR0aGlzLT5MYW5nKCdzaG93X2ludmlzaWJsZXMnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Nob3dfaW52aXNpYmxlc2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnc2hvd19pbnZpc2libGVzJywgMSwgY21zX3VzZXJwcmVmczo6Z2V0X2Zvcl91c2VyKCR1c2VyaWQsICR0aGlzLT5HZXROYW1lKCkgLiAnX3Nob3dfaW52aXNpYmxlcycsIDApKSk7DQokc21hcnR5LT5hc3NpZ24oJ3BlcnNpc3RlbnRfaHNjcm9sbHRleHQnLCAkdGhpcy0+TGFuZygncGVyc2lzdGVudF9oc2Nyb2xsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdwZXJzaXN0ZW50X2hzY3JvbGxpbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ3BlcnNpc3RlbnRfaHNjcm9sbCcsIDEsIGNtc191c2VycHJlZnM6OmdldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19wZXJzaXN0ZW50X2hzY3JvbGwnLCAxKSkpOw0KDQovKiB0ZXh0IHdyYXBwaW5nICovDQokc21hcnR5LT5hc3NpZ24oJ3NvZnRfd3JhcHRleHQnLCAkdGhpcy0+TGFuZygnc29mdF93cmFwJykpOw0KJHNvZnRfd3JhcCA9IGFycmF5KA0KCSR0aGlzLT5MYW5nKCdvZmYnKSA9PiAnb2ZmJywNCgkkdGhpcy0+TGFuZygnNDAnKSA9PiAnNDAsNDAnLA0KCSR0aGlzLT5MYW5nKCc4MCcpID0+ICc4MCw4MCcsDQoJJHRoaXMtPkxhbmcoJzEwMCcpID0+ICcxMDAsMTAwJywNCgkkdGhpcy0+TGFuZygnMTQwJykgPT4gJzE0MCwxNDAnDQopOw0KJHNtYXJ0eS0+YXNzaWduKCdzb2Z0X3dyYXBpbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3NvZnRfd3JhcCcsICRzb2Z0X3dyYXAsIC0xLCBjbXNfdXNlcnByZWZzOjpnZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfc29mdF93cmFwJywgJzgwLDgwJykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdzaG93X2d1dHRlcnRleHQnLCAkdGhpcy0+TGFuZygnc2hvd19ndXR0ZXInKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Nob3dfZ3V0dGVyaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdzaG93X2d1dHRlcicsIDEsIGNtc191c2VycHJlZnM6OmdldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19zaG93X2d1dHRlcicsIDEpKSk7DQokc21hcnR5LT5hc3NpZ24oJ3ByaW50X21hcmdpbnRleHQnLCAkdGhpcy0+TGFuZygncHJpbnRfbWFyZ2luJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdwcmludF9tYXJnaW5pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ3ByaW50X21hcmdpbicsIDEsIGNtc191c2VycHJlZnM6OmdldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19wcmludF9tYXJnaW4nLCAwKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdzb2Z0X3RhYnRleHQnLCAkdGhpcy0+TGFuZygnc29mdF90YWInKSk7DQokc21hcnR5LT5hc3NpZ24oJ3NvZnRfdGFiaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdzb2Z0X3RhYicsIDEsIGNtc191c2VycHJlZnM6OmdldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19zb2Z0X3RhYicsIDEpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2hpZ2hsaWdodF9zZWxlY3RlZHRleHQnLCAkdGhpcy0+TGFuZygnaGlnaGxpZ2h0X3NlbGVjdGVkJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdoaWdobGlnaHRfc2VsZWN0ZWRpbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2hpZ2hsaWdodF9zZWxlY3RlZCcsIDEsIGNtc191c2VycHJlZnM6OmdldF9mb3JfdXNlcigkdXNlcmlkLCAkdGhpcy0+R2V0TmFtZSgpIC4gJ19oaWdobGlnaHRfc2VsZWN0ZWQnLCAxKSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc2F2ZXNldHRpbmdzJykpKTsNCg0KLyogc2FtcGxlIGNvbnRlbnQgKi8NCiRzeW50YXhfY29udGVudCA9ICcnOw0Kc3dpdGNoIChjbXNfdXNlcnByZWZzOjpnZXRfZm9yX3VzZXIoJHVzZXJpZCwgJHRoaXMtPkdldE5hbWUoKSAuICdfbW9kZScsICdodG1sJykpIHsNCgljYXNlICdodG1sJzogew0KCQkkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QNCjxodG1sPg0KPGhlYWQ+DQoNCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoudGV4dC1sYXllciB7DQogICAgZm9udC1mYW1pbHk6IE1vbmFjbywgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOw0KICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICBjdXJzb3I6IHRleHQ7DQp9DQo8L3N0eWxlPg0KDQo8L2hlYWQ+DQo8Ym9keT4NCiAgICA8aDEgc3R5bGU9ImNvbG9yOnJlZCI+SnVodSBLaW5uZXJzPC9oMT4NCjwvYm9keT4NCjwvaHRtbD4NCkVPVDsNCgkJYnJlYWs7DQoJfQ0KCWNhc2UgJ2Nzcyc6IHsNCgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UDQoudGV4dC1sYXllciB7DQogICAgZm9udC1mYW1pbHk6IE1vbmFjbywgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOw0KICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICBjdXJzb3I6IHRleHQ7DQp9DQpFT1Q7DQoJCWJyZWFrOw0KCX0NCgljYXNlICdqYXZhc2NyaXB0Jzogew0KCQkkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QNCmZ1bmN0aW9uIGZvbyhpdGVtcykgew0KICAgIGZvciAodmFyIGk9MDsgaTxpdGVtcy5sZW5ndGg7IGkrKykgew0KICAgICAgICBhbGVydChpdGVtc1tpXSArICJqdWh1Iik7DQogICAgfSAgIC8vIFJlYWwgVGFiLg0KfQ0KRU9UOw0KCQlicmVhazsNCgl9DQoJY2FzZSAncGxhaW4nOiB7DQoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVA0KTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNldGV0dXIgc2FkaXBzY2luZyBlbGl0ciwgc2VkIGRpYW0gbm9udW15IGVpcm1vZCB0ZW1wb3IgaW52aWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdXlhbSBlcmF0LCBzZWQgZGlhbSB2b2x1cHR1YS4gQXQgdmVybyBlb3MgZXQgYWNjdXNhbSBldCBqdXN0byBkdW8gZG9sb3JlcyBldCBlYSByZWJ1bS4gU3RldCBjbGl0YSBrYXNkIGd1YmVyZ3Jlbiwgbm8gc2VhIHRha2ltYXRhIHNhbmN0dXMgZXN0IExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2V0ZXR1ciBzYWRpcHNjaW5nIGVsaXRyLCBzZWQgZGlhbSBub251bXkgZWlybW9kIHRlbXBvciBpbnZpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1eWFtIGVyYXQsIHNlZCBkaWFtIHZvbHVwdHVhLiBBdCB2ZXJvIGVvcyBldCBhY2N1c2FtIGV0IGp1c3RvIGR1byBkb2xvcmVzIGV0IGVhIHJlYnVtLiBTdGV0IGNsaXRhIGthc2QgZ3ViZXJncmVuLCBubyBzZWEgdGFraW1hdGEgc2FuY3R1cyBlc3QgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQuIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZXRldHVyIHNhZGlwc2NpbmcgZWxpdHIsIHNlZCBkaWFtIG5vbnVteSBlaXJtb2QgdGVtcG9yIGludmlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXV5YW0gZXJhdCwgc2VkIGRpYW0gdm9sdXB0dWEuIEF0IHZlcm8gZW9zIGV0IGFjY3VzYW0gZXQganVzdG8gZHVvIGRvbG9yZXMgZXQgZWEgcmVidW0uIFN0ZXQgY2xpdGEga2FzZCBndWJlcmdyZW4sIG5vIHNlYSB0YWtpbWF0YSBzYW5jdHVzIGVzdCBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldC4NCg0KRHVpcyBhdXRlbSB2ZWwgZXVtIGlyaXVyZSBkb2xvciBpbiBoZW5kcmVyaXQgaW4gdnVscHV0YXRlIHZlbGl0IGVzc2UgbW9sZXN0aWUgY29uc2VxdWF0LCB2ZWwgaWxsdW0gZG9sb3JlIGV1IGZldWdpYXQgbnVsbGEgZmFjaWxpc2lzIGF0IHZlcm8gZXJvcyBldCBhY2N1bXNhbiBldCBpdXN0byBvZGlvIGRpZ25pc3NpbSBxdWkgYmxhbmRpdCBwcmFlc2VudCBsdXB0YXR1bSB6enJpbCBkZWxlbml0IGF1Z3VlIGR1aXMgZG9sb3JlIHRlIGZldWdhaXQgbnVsbGEgZmFjaWxpc2kuIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ZXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZGlhbSBub251bW15IG5pYmggZXVpc21vZCB0aW5jaWR1bnQgdXQgbGFvcmVldCBkb2xvcmUgbWFnbmEgYWxpcXVhbSBlcmF0IHZvbHV0cGF0Lg0KRU9UOw0KCQlicmVhazsNCgl9DQoJY2FzZSAnc3ZnJzogew0KCQkkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QNCjxzdmcNCiAgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiDQogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINCiAgb25sb2FkPSJTdGFydEFuaW1hdGlvbihldnQpIj4NCg0KICA8dGl0bGU+VGVzdCBUdWJlIFByb2dyZXNzIEJhcjwvdGl0bGU+DQogIDxkZXNjPkNyZWF0ZWQgZm9yIHRoZSBXZWIgRGlyZWN0aW9ucyBTVkcgY29tcGV0aXRpb248L2Rlc2M+DQoNCiAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2VjbWFzY3JpcHQiPjwhW0NEQVRBWw0KICAgIHZhciB0aW1ldmFsdWUgPSAwOw0KICAgIHZhciB0aW1lcl9pbmNyZW1lbnQgPSAxOw0KICAgIHZhciBtYXhfdGltZSA9IDEwMDsNCiAgICB2YXIgaGlja29yeTsNCiAgICB2YXIgZGlja29yeTsNCiAgICB2YXIgZG9jazsNCiAgICB2YXIgaTsNCg0KICAgIGZ1bmN0aW9uIFN0YXJ0QW5pbWF0aW9uKGV2dCkgew0KICAgICAgICBoaWNrb3J5ICA9IGV2dC50YXJnZXQub3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGlja29yeSIpOw0KICAgICAgICBkaWNrb3J5ID0gZXZ0LnRhcmdldC5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaWNrb3J5Iik7DQogICAgICAgIGRvY2sgPSBldnQudGFyZ2V0Lm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRvY2siKTsNCg0KICAgICAgICBTaG93QW5kR3Jvd0VsZW1lbnQoKTsNCiAgICB9DQogICAgZnVuY3Rpb24gU2hvd0FuZEdyb3dFbGVtZW50KCkgew0KICAgICAgICB0aW1ldmFsdWUgPSB0aW1ldmFsdWUgKyB0aW1lcl9pbmNyZW1lbnQ7DQogICAgICAgIGlmICh0aW1ldmFsdWUgPiBtYXhfdGltZSkNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgLy8gU2NhbGUgdGhlIHRleHQgc3RyaW5nIGdyYWR1YWxseSB1bnRpbCBpdCBpcyAyMCB0aW1lcyBsYXJnZXINCiAgICAgICAgc2NhbGVmYWN0b3IgPSAodGltZXZhbHVlICogNjUwKSAvIG1heF90aW1lOw0KDQogICAgICAgIGlmICh0aW1ldmFsdWUgPCAzMCkgew0KICAgICAgICAgICAgaGlja29yeS5zZXRBdHRyaWJ1dGUoImRpc3BsYXkiLCAiIik7DQogICAgICAgICAgICBoaWNrb3J5LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgKDYwMCtzY2FsZWZhY3RvciozKi0xICkgKyAiLCAtMTQ0ICkiKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICh0aW1ldmFsdWUgPiAzMCAmJiB0aW1ldmFsdWUgPCA2Nikgew0KICAgICAgICAgICAgZGlja29yeS5zZXRBdHRyaWJ1dGUoImRpc3BsYXkiLCAiIik7DQogICAgICAgICAgICBkaWNrb3J5LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgKC03OTUrc2NhbGVmYWN0b3IqMikgKyAiLCAwICkiKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAodGltZXZhbHVlID4gNjYpIHsNCiAgICAgICAgICAgIGRvY2suc2V0QXR0cmlidXRlKCJkaXNwbGF5IiwgIiIpOw0KICAgICAgICAgICAgZG9jay5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArICgxNDUwK3NjYWxlZmFjdG9yKjIqLTEpICsgIiwgMTQ0ICkiKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENhbGwgU2hvd0FuZEdyb3dFbGVtZW50IGFnYWluIDx0aW1lcl9pbmNyZW1lbnQ+IG1pbGxpc2Vjb25kcyBsYXRlci4NCiAgICAgICAgc2V0VGltZW91dCgiU2hvd0FuZEdyb3dFbGVtZW50KCkiLCB0aW1lcl9pbmNyZW1lbnQpDQogICAgfQ0KICAgIHdpbmRvdy5TaG93QW5kR3Jvd0VsZW1lbnQgPSBTaG93QW5kR3Jvd0VsZW1lbnQNCiAgXV0+PC9zY3JpcHQ+DQoNCiAgPHJlY3QNCiAgICBmaWxsPSIjMmUzNDM2Ig0KICAgIGZpbGwtcnVsZT0ibm9uemVybyINCiAgICBzdHJva2Utd2lkdGg9IjMiDQogICAgeT0iMCINCiAgICB4PSIwIg0KICAgIGhlaWdodD0iNjAwIg0KICAgIHdpZHRoPSI4MDAiDQogICAgaWQ9InJlY3QzNTkwIi8+DQoNCiAgICA8dGV4dA0KICAgICAgIHN0eWxlPSJmb250LXNpemU6MTQ0cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpib2xkO2ZvbnQtc3RyZXRjaDpub3JtYWw7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OkJpdHN0cmVhbSBWZXJhIFNhbnM7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpCaXRzdHJlYW0gVmVyYSBTYW5zIEJvbGQiDQogICAgICAgeD0iNTAiDQogICAgICAgeT0iMzUwIg0KICAgICAgIGlkPSJoaWNrb3J5Ig0KICAgICAgIGRpc3BsYXk9Im5vbmUiPg0KICAgICAgICBIaWNrb3J5LDwvdGV4dD4NCiAgICA8dGV4dA0KICAgICAgIHN0eWxlPSJmb250LXNpemU6MTQ0cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpib2xkO2ZvbnQtc3RyZXRjaDpub3JtYWw7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OkJpdHN0cmVhbSBWZXJhIFNhbnM7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpCaXRzdHJlYW0gVmVyYSBTYW5zIEJvbGQiDQogICAgICAgeD0iNTAiDQogICAgICAgeT0iMzUwIg0KICAgICAgIGlkPSJkaWNrb3J5Ig0KICAgICAgIGRpc3BsYXk9Im5vbmUiPg0KICAgICAgICBkaWNrb3J5LDwvdGV4dD4NCiAgICA8dGV4dA0KICAgICAgIHN0eWxlPSJmb250LXNpemU6MTQ0cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpib2xkO2ZvbnQtc3RyZXRjaDpub3JtYWw7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OkJpdHN0cmVhbSBWZXJhIFNhbnM7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpCaXRzdHJlYW0gVmVyYSBTYW5zIEJvbGQiDQogICAgICAgeD0iNTAiDQogICAgICAgeT0iMzUwIg0KICAgICAgIGlkPSJkb2NrIg0KICAgICAgIGRpc3BsYXk9Im5vbmUiPg0KICAgICAgICBkb2NrITwvdGV4dD4NCjwvc3ZnPg0KRU9UOw0KCQlicmVhazsNCgl9DQoJY2FzZSAnc2Nzcyc6IHsNCgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UDQovKiBzdHlsZS5zY3NzICovDQoNCiNuYXZiYXIgew0KICAgIFwkbmF2YmFyLXdpZHRoOiA4MDBweDsNCiAgICBcJGl0ZW1zOiA1Ow0KICAgIFwkbmF2YmFyLWNvbG9yOiAjY2U0ZGQ2Ow0KDQogICAgd2lkdGg6IFwkbmF2YmFyLXdpZHRoOw0KICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCBcJG5hdmJhci1jb2xvcjsNCg0KICAgIGxpIHsNCiAgICAgICAgZmxvYXQ6IGxlZnQ7DQogICAgICAgIHdpZHRoOiBcJG5hdmJhci13aWR0aC9cJGl0ZW1zIC0gMTBweDsNCg0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKFwkbmF2YmFyLWNvbG9yLCAyMCUpOw0KICAgICAgICAmOmhvdmVyIHsNCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oXCRuYXZiYXItY29sb3IsIDEwJSk7DQogICAgICAgIH0NCiAgICB9DQp9DQpFT1Q7DQoJCWJyZWFrOw0KCX0NCgljYXNlICdjb2ZmZWUnOiB7DQoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVA0KIyEvdXNyL2Jpbi9lbnYgY29mZmVlDQoNCnRyeQ0KICAgIHRocm93IFVSSUVycm9yIGRlY29kZVVSSSgweEMwZmZlZSAqIDEyMzQ1Ni43ZS04IC8gLjkpDQpjYXRjaCBlDQogICAgY29uc29sZS5sb2cgJ3FzdHJpbmcnICsgInFxc3RyaW5nIiArICcnJw0KICAgICAgICBxZG9jDQogICAgJycnICsgIiIiDQogICAgICAgIHFxZG9jDQogICAgIiIiDQoNCmRvIC0+DQogICAgIyMjDQogICAgaGVyZWNvbW1lbnQNCiAgICAjIyMNCiAgICByZSA9IC9yZWdleC9pbWd5LnRlc3QgLy8vDQogICAgICAgIGhlcmVnZXggICMgY29tbWVudA0KICAgIC8vL2ltZ3kNCiAgICB0aGlzIGlzbnQ6IGBqdXN0IEphdmFTY3JpcHRgDQogICAgdW5kZWZpbmVkICAgICAgICAgICAgICAgDQpFT1Q7DQoJCWJyZWFrOw0KCX0NCgljYXNlICdqc29uJzogew0KCQkkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QNCnsNCiAicXVlcnkiOiB7DQogICJjb3VudCI6IDEwLA0KICAiY3JlYXRlZCI6ICIyMDExLTA2LTIxVDA4OjEwOjQ2WiIsDQogICJsYW5nIjogImVuLVVTIiwNCiAgInJlc3VsdHMiOiB7DQogICAicGhvdG8iOiBbDQogICAgew0KICAgICAiZmFybSI6ICI2IiwNCiAgICAgImlkIjogIjU4NTU2MjA5NzUiLA0KICAgICAiaXNmYW1pbHkiOiAiMCIsDQogICAgICJpc2ZyaWVuZCI6ICIwIiwNCiAgICAgImlzcHVibGljIjogIjEiLA0KICAgICAib3duZXIiOiAiMzIwMjE1NTRATjA0IiwNCiAgICAgInNlY3JldCI6ICJmMWY1ZTg1MTVkIiwNCiAgICAgInNlcnZlciI6ICI1MTEwIiwNCiAgICAgInRpdGxlIjogIjcwODcgYmFuZGl0IGNhdCINCiAgICB9LA0KICAgIHsNCiAgICAgImZhcm0iOiAiNCIsDQogICAgICJpZCI6ICI1ODU2MTcwNTM0IiwNCiAgICAgImlzZmFtaWx5IjogIjAiLA0KICAgICAiaXNmcmllbmQiOiAiMCIsDQogICAgICJpc3B1YmxpYyI6ICIxIiwNCiAgICAgIm93bmVyIjogIjMyMDIxNTU0QE4wNCIsDQogICAgICJzZWNyZXQiOiAiZmYxZWZiMmE2ZiIsDQogICAgICJzZXJ2ZXIiOiAiMzIxNyIsDQogICAgICJ0aXRsZSI6ICI2OTc1IHJ1c3R5IGNhdCINCiAgICB9LA0KICAgIHsNCiAgICAgImZhcm0iOiAiNiIsDQogICAgICJpZCI6ICI1ODU2MTcyOTcyIiwNCiAgICAgImlzZmFtaWx5IjogIjAiLA0KICAgICAiaXNmcmllbmQiOiAiMCIsDQogICAgICJpc3B1YmxpYyI6ICIxIiwNCiAgICAgIm93bmVyIjogIjUxMjQ5ODc1QE4wMyIsDQogICAgICJzZWNyZXQiOiAiNmM2ODg3MzQ3YyIsDQogICAgICJzZXJ2ZXIiOiAiNTE5MiIsDQogICAgICJ0aXRsZSI6ICJ3YXRlcm1hcmtlZC1jYXRzIg0KICAgIH0sDQogICAgew0KICAgICAiZmFybSI6ICI2IiwNCiAgICAgImlkIjogIjU4NTYxNjgzMjgiLA0KICAgICAiaXNmYW1pbHkiOiAiMCIsDQogICAgICJpc2ZyaWVuZCI6ICIwIiwNCiAgICAgImlzcHVibGljIjogIjEiLA0KICAgICAib3duZXIiOiAiMzIwMjE1NTRATjA0IiwNCiAgICAgInNlY3JldCI6ICIwYzFjZmRmNjRjIiwNCiAgICAgInNlcnZlciI6ICI1MDc4IiwNCiAgICAgInRpdGxlIjogIjcwMjAgbWFuZHkgY2F0Ig0KICAgIH0sDQogICAgew0KICAgICAiZmFybSI6ICIzIiwNCiAgICAgImlkIjogIjU4NTYxNzE3NzQiLA0KICAgICAiaXNmYW1pbHkiOiAiMCIsDQogICAgICJpc2ZyaWVuZCI6ICIwIiwNCiAgICAgImlzcHVibGljIjogIjEiLA0KICAgICAib3duZXIiOiAiMzIwMjE1NTRATjA0IiwNCiAgICAgInNlY3JldCI6ICI3ZjVhMzE4MGFiIiwNCiAgICAgInNlcnZlciI6ICIyNjk2IiwNCiAgICAgInRpdGxlIjogIjc0NDggYm9iYnkgY2F0Ig0KICAgIH0NCiAgIF0NCiAgfQ0KIH0NCn0NCkVPVDsNCgkJYnJlYWs7DQoJfQ0KCWNhc2UgJ3B5dGhvbic6IHsNCgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UDQojIS91c3IvbG9jYWwvYmluL3B5dGhvbg0KDQppbXBvcnQgc3RyaW5nLCBzeXMNCg0KIyBJZiBubyBhcmd1bWVudHMgd2VyZSBnaXZlbiwgcHJpbnQgYSBoZWxwZnVsIG1lc3NhZ2UNCmlmIGxlbihzeXMuYXJndik9PTE6DQogICAgcHJpbnQgJ1VzYWdlOiBjZWxzaXVzIHRlbXAxIHRlbXAyIC4uLicNCiAgICBzeXMuZXhpdCgwKQ0KDQojIExvb3Agb3ZlciB0aGUgYXJndW1lbnRzDQpmb3IgaSBpbiBzeXMuYXJndlsxOl06DQogICAgdHJ5Og0KICAgICAgICBmYWhyZW5oZWl0PWZsb2F0KHN0cmluZy5hdG9pKGkpKQ0KICAgIGV4Y2VwdCBzdHJpbmcuYXRvaV9lcnJvcjoNCiAgICAgICAgcHJpbnQgcmVwcihpKSwgIm5vdCBhIG51bWVyaWMgdmFsdWUiICANCiAgICBlbHNlOg0KICAgICAgICBjZWxzaXVzPShmYWhyZW5oZWl0LTMyKSo1LjAvOS4wDQogICAgICAgIHByaW50ICclaVxcMjYwRiA9ICVpXFwyNjBDJyAlIChpbnQoZmFocmVuaGVpdCksIGludChjZWxzaXVzKy41KSkNCkVPVDsNCgkJYnJlYWs7DQoJfQ0KCWNhc2UgJ3BocCc6IHsNCgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UDQo8P3BocA0KDQpmdW5jdGlvbiBuZmFjdChcJG4pIHsNCiAgaWYgKFwkbiA9PSAwKSB7DQogICAgcmV0dXJuIDE7DQogIH0NCiAgZWxzZSB7DQogICAgcmV0dXJuIFwkbiAqIG5mYWN0KFwkbiAtIDEpOw0KICB9DQp9DQoNCmVjaG8gIlxcblxcblBsZWFzZSBlbnRlciBhIHdob2xlIG51bWJlciAuLi4gIjsNClwkbnVtID0gdHJpbShmZ2V0cyhTVERJTikpOw0KDQovLyA9PT09PSBQUk9DRVNTIC0gRGV0ZXJtaW5nIHRoZSBmYWN0b3JpYWwgb2YgdGhlIGlucHV0IG51bWJlciA9PT09PQ0KXCRvdXRwdXQgPSAiXFxuXFxuRmFjdG9yaWFsICIgLiBcJG51bSAuICIgPSAiIC4gbmZhY3QoXCRudW0pIC4gIlxcblxcbiI7DQplY2hvIFwkb3V0cHV0Ow0KDQo/Pg0KRU9UOw0KCQlicmVhazsNCgl9DQoJY2FzZSAncnVieSc6IHsNCgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UDQojIS91c3IvYmluL3J1YnkNCg0KIyBQcm9ncmFtIHRvIGZpbmQgdGhlIGZhY3RvcmlhbCBvZiBhIG51bWJlcg0KZGVmIGZhY3QobikNCiAgICBpZiBuID09IDANCiAgICAgICAgMQ0KICAgIGVsc2UNCiAgICAgICAgbiAqIGZhY3Qobi0xKQ0KICAgIGVuZA0KZW5kDQoNCnB1dHMgZmFjdChBUkdWWzBdLnRvX2kpDQpFT1Q7DQoJCWJyZWFrOw0KCX0NCgljYXNlICdwZXJsJzogew0KCQkkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QNCiMhL3Vzci9iaW4vcGVybA0KdXNlIHN0cmljdDsNCnVzZSB3YXJuaW5nczsNCm15IFwkbnVtX3ByaW1lcyA9IDA7DQpteSBAcHJpbWVzOw0KDQojIFB1dCAyIGFzIHRoZSBmaXJzdCBwcmltZSBzbyB3ZSB3b24ndCBoYXZlIGFuIGVtcHR5IGFycmF5DQpcJHByaW1lc1tcJG51bV9wcmltZXNdID0gMjsNClwkbnVtX3ByaW1lcysrOw0KDQpNQUlOX0xPT1A6DQpmb3IgbXkgXCRudW1iZXJfdG9fY2hlY2sgKDMgLi4gMjAwKQ0Kew0KICAgIGZvciBteSBcJHAgKDAgLi4gKFwkbnVtX3ByaW1lcy0xKSkNCiAgICB7DQogICAgICAgIGlmIChcJG51bWJlcl90b19jaGVjayAlIFwkcHJpbWVzW1wkcF0gPT0gMCkNCiAgICAgICAgew0KICAgICAgICAgICAgbmV4dCBNQUlOX0xPT1A7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAjIElmIHdlIHJlYWNoZWQgdGhpcyBwb2ludCBpdCBtZWFucyBcJG51bWJlcl90b19jaGVjayBpcyBub3QNCiAgICAjIGRpdmlzYWJsZSBieSBhbnkgcHJpbWUgbnVtYmVyIHRoYXQgY2FtZSBiZWZvcmUgaXQuDQogICAgXCRwcmltZXNbXCRudW1fcHJpbWVzXSA9IFwkbnVtYmVyX3RvX2NoZWNrOw0KICAgIFwkbnVtX3ByaW1lcysrOw0KfQ0KDQpmb3IgbXkgXCRwICgwIC4uIChcJG51bV9wcmltZXMtMSkpDQp7DQogICAgcHJpbnQgXCRwcmltZXNbXCRwXSwgIiwgIjsNCn0NCnByaW50ICJcXG4iOw0KRU9UOw0KCQlicmVhazsNCgl9DQoJY2FzZSAnamF2YSc6IHsNCgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UDQpwdWJsaWMgY2xhc3MgSW5maW5pdGVMb29wIHsNCg0KICAgIC8qDQogICAgICogVGhpcyB3aWxsIGNhdXNlIHRoZSBwcm9ncmFtIHRvIGhhbmcuLi4NCiAgICAgKg0KICAgICAqIFRha2VuIGZyb206DQogICAgICogaHR0cDovL3d3dy5leHBsb3JpbmdiaW5hcnkuY29tL2phdmEtaGFuZ3Mtd2hlbi1jb252ZXJ0aW5nLTItMjI1MDczODU4NTA3MjAxMmUtMzA4Lw0KICAgICAqLw0KICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsNCiAgICAgICAgZG91YmxlIGQgPSBEb3VibGUucGFyc2VEb3VibGUoIjIuMjI1MDczODU4NTA3MjAxMmUtMzA4Iik7DQoNCiAgICAgICAgLy8gdW5yZWFjaGFibGUgY29kZQ0KICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlZhbHVlOiAiICsgZCk7DQogICAgfQ0KfQ0KRU9UOw0KCQlicmVhazsNCgl9DQoJY2FzZSAnY3NoYXJwJzogew0KCQkkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QNCnB1YmxpYyB2b2lkIEhlbGxvV29ybGQoKSB7DQogICAvL1NheSBIZWxsbyENCiAgIENvbnNvbGUuV3JpdGVMaW5lKCJIZWxsbyBXb3JsZCIpOw0KfSAgICAgICAgICAgICAgIA0KRU9UOw0KCQlicmVhazsNCgl9DQoJY2FzZSAnY19jcHAnOiB7DQoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVA0KLy8gY29tcG91bmQgYXNzaWdubWVudCBvcGVyYXRvcnMNCg0KI2luY2x1ZGUgPGlvc3RyZWFtPg0KdXNpbmcgbmFtZXNwYWNlIHN0ZDsNCg0KaW50IG1haW4gKCkNCnsNCiAgICBpbnQgYSwgYj0zOyAvKiBmb29iYXIgKi8NCiAgICBhID0gYjsNCiAgICBhKz0yOyAvLyBlcXVpdmFsZW50IHRvIGE9YSsyDQogICAgY291dCA8PCBhOw0KICAgIHJldHVybiAwOw0KfSAgICAgICAgICAgICAgIA0KRU9UOw0KCQlicmVhazsNCgl9DQoJY2FzZSAnY2xvanVyZSc6IHsNCgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UDQooZGVmbiBwYXJ0aW5nDQogICJyZXR1cm5zIGEgU3RyaW5nIHBhcnRpbmcgaW4gYSBnaXZlbiBsYW5ndWFnZSINCiAgKFtdIChwYXJ0aW5nICJXb3JsZCIpKQ0KICAoW25hbWVdIChwYXJ0aW5nIG5hbWUgImVuIikpDQogIChbbmFtZSBsYW5ndWFnZV0NCiAgICA7IGNvbmRwIGlzIHNpbWlsYXIgdG8gYSBjYXNlIHN0YXRlbWVudCBpbiBvdGhlciBsYW5ndWFnZXMuDQogICAgOyBJdCBpcyBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgbGF0ZXIuDQogICAgOyBJdCBpcyB1c2VkIGhlcmUgdG8gdGFrZSBkaWZmZXJlbnQgYWN0aW9ucyBiYXNlZCBvbiB3aGV0aGVyIHRoZQ0KICAgIDsgcGFyYW1ldGVyICJsYW5ndWFnZSIgaXMgc2V0IHRvICJlbiIsICJlcyIgb3Igc29tZXRoaW5nIGVsc2UuDQogICAgKGNvbmRwID0gbGFuZ3VhZ2UNCiAgICAgICJlbiIgKHN0ciAiR29vZGJ5ZSwgIiBuYW1lKQ0KICAgICAgImVzIiAoc3RyICJBZGlvcywgIiBuYW1lKQ0KICAgICAgKHRocm93IChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24uDQogICAgICAgIChzdHIgInVuc3VwcG9ydGVkIGxhbmd1YWdlICIgbGFuZ3VhZ2UpKSkpKSkNCg0KKHByaW50bG4gKHBhcnRpbmcpKSA7IC0+IEdvb2RieWUsIFdvcmxkDQoocHJpbnRsbiAocGFydGluZyAiTWFyayIpKSA7IC0+IEdvb2RieWUsIE1hcmsNCihwcmludGxuIChwYXJ0aW5nICJNYXJrIiAiZXMiKSkgOyAtPiBBZGlvcywgTWFyaw0KKHByaW50bG4gKHBhcnRpbmcgIk1hcmsiLCAieHkiKSkgOyAtPiBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uOiB1bnN1cHBvcnRlZCBsYW5ndWFnZSB4eSAgICAgICAgICAgICAgIA0KRU9UOw0KCQlicmVhazsNCgl9DQoJY2FzZSAnb2NhbWwnOiB7DQoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVA0KKCoNCiAqIEV4YW1wbGUgb2YgZWFybHkgcmV0dXJuIGltcGxlbWVudGF0aW9uIHRha2VuIGZyb20NCiAqIGh0dHA6Ly9vY2FtbC5qYW5lc3RyZWV0LmNvbS8/cT1ub2RlLzkxDQogKikNCg0KbGV0IHdpdGhfcmV0dXJuICh0eXBlIHQpIChmIDogXyAtPiB0KSA9DQogIGxldCBtb2R1bGUgTSA9DQogICAgIHN0cnVjdCBleGNlcHRpb24gUmV0dXJuIG9mIHQgZW5kDQogIGluDQogIGxldCByZXR1cm4gPSB7IHJldHVybiA9IChmdW4geCAtPiByYWlzZSAoTS5SZXR1cm4geCkpOyB9IGluDQogIHRyeSBmIHJldHVybiB3aXRoIE0uUmV0dXJuIHggLT4geA0KDQoNCigqIEZ1bmN0aW9uIHRoYXQgdXNlcyB0aGUgJ2Vhcmx5IHJldHVybicgZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBieSBgd2l0aF9yZXR1cm5gICopDQpsZXQgc3VtX3VudGlsX2ZpcnN0X25lZ2F0aXZlIGxpc3QgPQ0KICB3aXRoX3JldHVybiAoZnVuIHIgLT4NCiAgICBMaXN0LmZvbGQgbGlzdCB+aW5pdDowIH5mOihmdW4gYWNjIHggLT4NCiAgICAgIGlmIHggPj0gMCB0aGVuIGFjYyArIHggZWxzZSByLnJldHVybiBhY2MpKSAgICAgICAgICAgICAgICANCkVPVDsNCgkJYnJlYWs7DQoJfQ0KCWNhc2UgJ3RleHRpbGUnOiB7DQoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVA0KaDEuIFRleHRpbGUgZG9jdW1lbnQNCg0KaDIuIEhlYWRpbmcgVHdvDQoNCmgzLiBBIHR3by1saW5lDQogICAgaGVhZGVyDQoNCmgyLiBBbm90aGVyIHR3by1saW5lDQpoZWFkZXINCg0KUGFyYWdyYXBoOg0Kb25lLCB0d28sDQp0aGVlIGxpbmVzIQ0KDQpwKGNsYXNzb25lIHR3byB0aHJlZSkuIFRoaXMgaXMgYSBwYXJhZ3JhcGggd2l0aCBjbGFzc2VzDQoNCnAoI2lkKS4gKG9uZSB3aXRoIGFuIGlkKQ0KDQpwKG9uZSB0d28gdGhyZWUjbXlfaWQpLiAuLmNsYXNzZXMgKyBpZA0KDQoqIFVub3JkZXJlZCBsaXN0DQoqKiBzdWJsaXN0DQoqIGJhY2sgYWdhaW4hDQoqKiBzdWJsaXN0IGFnYWluLi4NCg0KIyBvcmRlcmVkDQoNCmJnLiBCbG9ja3F1b3RlIQ0KICAgIFRoaXMgaXMgYSB0d28tbGlzdCBibG9ja3F1b3RlLi4hICAgICAgICAgICAgICAgIA0KRU9UOw0KCQlicmVhazsNCgl9DQoJY2FzZSAnZ3Jvb3Z5Jzogew0KCQkkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QNCg0KLy9odHRwOi8vZ3Jvb3Z5LmNvZGVoYXVzLm9yZy9Db25jdXJyZW5jeSt3aXRoK0dyb292eQ0KaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNJbnRlZ2VyDQoNCmRlZiBjb3VudGVyID0gbmV3IEF0b21pY0ludGVnZXIoKQ0KDQpzeW5jaHJvbml6ZWQgb3V0KG1lc3NhZ2UpIHsNCiAgICBwcmludGxuKG1lc3NhZ2UpDQp9DQoNCmRlZiB0aCA9IFRocmVhZC5zdGFydCB7DQogICAgZm9yKCBpIGluIDEuLjggKSB7DQogICAgICAgIHNsZWVwIDMwDQogICAgICAgIG91dCAidGhyZWFkIGxvb3AgXCRpIg0KICAgICAgICBjb3VudGVyLmluY3JlbWVudEFuZEdldCgpDQogICAgfQ0KfQ0KDQpmb3IoIGogaW4gMS4uNCApIHsNCiAgICBzbGVlcCA1MA0KICAgIG91dCAibWFpbiBsb29wIFwkaiINCiAgICBjb3VudGVyLmluY3JlbWVudEFuZEdldCgpDQp9DQoNCnRoLmpvaW4oKQ0KDQphc3NlcnQgY291bnRlci5nZXQoKSA9PSAxMiAgICAgICAgICAgIA0KRU9UOw0KCQlicmVhazsNCgl9DQoJY2FzZSAnc2NhbGEnOiB7DQoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVA0KLy9odHRwOi8vd3d3LnNjYWxhLWxhbmcub3JnL25vZGUvMjI3DQovKiBEZWZpbmVzIGEgbmV3IG1ldGhvZCAnc29ydCcgZm9yIGFycmF5IG9iamVjdHMgKi8NCm9iamVjdCBpbXBsaWNpdHMgZXh0ZW5kcyBBcHBsaWNhdGlvbiB7DQogIGltcGxpY2l0IGRlZiBhcnJheVdyYXBwZXJbQSA6IENsYXNzTWFuaWZlc3RdKHg6IEFycmF5W0FdKSA9DQogICAgbmV3IHsNCiAgICAgIGRlZiBzb3J0KHA6IChBLCBBKSA9PiBCb29sZWFuKSA9IHsNCiAgICAgICAgdXRpbC5Tb3J0aW5nLnN0YWJsZVNvcnQoeCwgcCk7IHgNCiAgICAgIH0NCiAgICB9DQogIHZhbCB4ID0gQXJyYXkoMiwgMywgMSwgNCkNCiAgcHJpbnRsbigieCA9ICIrIHguc29ydCgoeDogSW50LCB5OiBJbnQpID0+IHggPCB5KSkNCn0gICAgICAgICAgICAgICANCkVPVDsNCgkJYnJlYWs7DQoJfQ0KCWNhc2UgJ2NvbGRmdXNpb24nOiB7DQoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVA0KPCEtLS0gaGVsbG8gd29ybGQgLS0tPg0KDQo8Y2ZzZXQgd2VsY29tZT0iSGVsbG8gV29ybGQhIj4NCg0KPGNmb3V0cHV0PiN3ZWxjb21lIzwvY2ZvdXRwdXQ+ICAgICAgICAgICAgICAgIA0KRU9UOw0KCQlicmVhazsNCgl9DQoJY2FzZSAnbHVhJzogew0KCQkkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QNCi0tW1stLQ0KbnVtX2FyZ3MgdGFrZXMgaW4gNS4xIGJ5dGUgY29kZSBhbmQgZXh0cmFjdHMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMNCmZyb20gaXRzIGZ1bmN0aW9uIGhlYWRlci4NCi0tXV0tLQ0KDQpmdW5jdGlvbiBpbnQodCkNCiAgICByZXR1cm4gdDpieXRlKDEpK3Q6Ynl0ZSgyKSoweDEwMCt0OmJ5dGUoMykqMHgxMDAwMCt0OmJ5dGUoNCkqMHgxMDAwMDAwDQplbmQNCg0KZnVuY3Rpb24gbnVtX2FyZ3MoZnVuYykNCiAgICBsb2NhbCBkdW1wID0gc3RyaW5nLmR1bXAoZnVuYykNCiAgICBsb2NhbCBvZmZzZXQsIGN1cnNvciA9IGludChkdW1wOnN1YigxMykpLCBvZmZzZXQgKyAyNg0KICAgIC0tR2V0IHRoZSBwYXJhbXMgYW5kIHZhciBmbGFnICh3aGV0aGVyIHRoZXJlJ3MgYSAuLi4gaW4gdGhlIHBhcmFtKQ0KICAgIHJldHVybiBkdW1wOnN1YihjdXJzb3IpOmJ5dGUoKSwgZHVtcDpzdWIoY3Vyc29yKzEpOmJ5dGUoKQ0KZW5kDQoNCi0tIFVzYWdlOg0KbnVtX2FyZ3MoZnVuY3Rpb24oYSxiLGMsZCwgLi4uKSBlbmQpIC0tIHJldHVybiA0LCA3DQoNCi0tIFB5dGhvbiBzdHlsZWQgc3RyaW5nIGZvcm1hdCBvcGVyYXRvcg0KbG9jYWwgZ20gPSBkZWJ1Zy5nZXRtZXRhdGFibGUoIiIpDQoNCmdtLl9fbW9kPWZ1bmN0aW9uKHNlbGYsIG90aGVyKQ0KICAgIGlmIHR5cGUob3RoZXIpIH49ICJ0YWJsZSIgdGhlbiBvdGhlciA9IHtvdGhlcn0gZW5kDQogICAgZm9yIGksdiBpbiBpcGFpcnMob3RoZXIpIGRvIG90aGVyW2ldID0gdG9zdHJpbmcodikgZW5kDQogICAgcmV0dXJuIHNlbGY6Zm9ybWF0KHVucGFjayhvdGhlcikpDQplbmQNCg0KcHJpbnQoWz09PVsNCiAgICBibGFoIGJsYWggJXMsICglZCAlZCkNCl09PT1dJXsiYmxhaCIsIG51bV9hcmdzKGludCl9KQ0KDQotLVs9Wy0tDQp0YWJsZS5tYXhuIGlzIGRlcHJlY2F0ZWQsIHVzZSAjIGluc3RlYWQuDQotLV09XS0tDQpwcmludCh0YWJsZS5tYXhuezEsMixbNF09NCxbOF09OCkgLS0gb3V0cHV0cyA4IGluc3RlYWQgb2YgMiAgICAgICAgICAgICAgICANCkVPVDsNCgkJYnJlYWs7DQoJfQ0KCWNhc2UgJ2hheGUnOiB7DQoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVA0KY2xhc3MgSGF4ZSANCnsNCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1haW4oKSANCiAgICB7DQogICAgICAgIC8vIFNheSBIZWxsbyENCiAgICAgICAgdmFyIGdyZWV0aW5nOlN0cmluZyA9ICJIZWxsbyBXb3JsZCI7DQogICAgICAgIHRyYWNlKGdyZWV0aW5nKTsNCiAgICAgICAgDQogICAgICAgIHZhciB0YXJnZXRzOkFycmF5PFN0cmluZz4gPSBbIkZsYXNoIiwiSmF2YXNjcmlwdCIsIlBIUCIsIk5la28iLCJDKysiLCJpT1MiLCJBbmRyb2lkIiwid2ViT1MiXTsNCiAgICAgICAgdHJhY2UoIkhheGUgaXMgYSBncmVhdCBsYW5ndWFnZSB0aGF0IGNhbiB0YXJnZXQ6Iik7DQogICAgICAgIGZvciAodGFyZ2V0IGluIHRhcmdldHMpDQogICAgICAgIHsNCiAgICAgICAgICAgIHRyYWNlICgiIC0gIiArIHRhcmdldCk7DQogICAgICAgIH0NCiAgICAgICAgdHJhY2UoIkFuZCBtYW55IG1vcmUhIik7DQogICAgfQ0KfSAgICAgICAgICAgICAgICANCkVPVDsNCgkJYnJlYWs7DQoJfQ0KCWNhc2UgJ21hcmtkb3duJzogew0KCQkkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QNCkFjZSAoQWpheC5vcmcgQ2xvdWQ5IEVkaXRvcikNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KQWNlIGlzIGEgc3RhbmRhbG9uZSBjb2RlIGVkaXRvciB3cml0dGVuIGluIEphdmFTY3JpcHQuIE91ciBnb2FsIGlzIHRvIGNyZWF0ZSBhIGJyb3dzZXIgYmFzZWQgZWRpdG9yIHRoYXQgbWF0Y2hlcyBhbmQgZXh0ZW5kcyB0aGUgZmVhdHVyZXMsIHVzYWJpbGl0eSBhbmQgcGVyZm9ybWFuY2Ugb2YgZXhpc3RpbmcgbmF0aXZlIGVkaXRvcnMgc3VjaCBhcyBUZXh0TWF0ZSwgVmltIG9yIEVjbGlwc2UuIEl0IGNhbiBiZSBlYXNpbHkgZW1iZWRkZWQgaW4gYW55IHdlYiBwYWdlIG9yIEphdmFTY3JpcHQgYXBwbGljYXRpb24uIEFjZSBpcyBkZXZlbG9wZWQgYXMgdGhlIHByaW1hcnkgZWRpdG9yIGZvciBbQ2xvdWQ5IElERV0oaHR0cDovL3d3dy5jbG91ZDlpZGUuY29tLykgYW5kIHRoZSBzdWNjZXNzb3Igb2YgdGhlIE1vemlsbGEgU2t5d3JpdGVyIChCZXNwaW4pIFByb2plY3QuDQoNCkZlYXR1cmVzDQotLS0tLS0tLQ0KDQoqIFN5bnRheCBoaWdobGlnaHRpbmcNCiogQXV0b21hdGljIGluZGVudCBhbmQgb3V0ZGVudA0KKiBBbiBvcHRpb25hbCBjb21tYW5kIGxpbmUNCiogSGFuZGxlcyBodWdlIGRvY3VtZW50cyAoMTAwLDAwMCBsaW5lcyBhbmQgbW9yZSBhcmUgbm8gcHJvYmxlbSkNCiogRnVsbHkgY3VzdG9taXphYmxlIGtleSBiaW5kaW5ncyBpbmNsdWRpbmcgVkkgYW5kIEVtYWNzIG1vZGVzDQoqIFRoZW1lcyAoVGV4dE1hdGUgdGhlbWVzIGNhbiBiZSBpbXBvcnRlZCkNCiogU2VhcmNoIGFuZCByZXBsYWNlIHdpdGggcmVndWxhciBleHByZXNzaW9ucw0KKiBIaWdobGlnaHQgbWF0Y2hpbmcgcGFyZW50aGVzZXMNCiogVG9nZ2xlIGJldHdlZW4gc29mdCB0YWJzIGFuZCByZWFsIHRhYnMNCiogRGlzcGxheXMgaGlkZGVuIGNoYXJhY3RlcnMNCiogRHJhZyBhbmQgZHJvcCB0ZXh0IHVzaW5nIHRoZSBtb3VzZQ0KKiBMaW5lIHdyYXBwaW5nDQoqIFVuc3RydWN0dXJlZCAvIHVzZXIgY29kZSBmb2xkaW5nDQoqIExpdmUgc3ludGF4IGNoZWNrZXIgKGN1cnJlbnRseSBKYXZhU2NyaXB0L0NvZmZlZVNjcmlwdCkgICAgICAgICAgICAgICAgDQpFT1Q7DQoJCWJyZWFrOw0KCX0NCgljYXNlICdzcWwnOiB7DQoJCSRzeW50YXhfY29udGVudCA9IDw8PEVPVA0KU0VMRUNUIGNpdHksIENPVU5UKGlkKSBBUyB1c2Vyc19jb3VudA0KRlJPTSB1c2Vycw0KV0hFUkUgZ3JvdXBfbmFtZSA9IFwnc2FsZXNtYW5cJw0KQU5EIGNyZWF0ZWQgPiBcJzIwMTEtMDUtMjFcJw0KR1JPVVAgQlkgMQ0KT1JERVIgQlkgMiBERVNDDQpFT1Q7DQoJCWJyZWFrOw0KCX0NCgljYXNlICdwZ3NxbCc6IHsNCgkJJHN5bnRheF9jb250ZW50ID0gPDw8RU9UDQpCRUdJTjsNCg0KLyoqDQoqIFNhbXBsZXMgZnJvbSBQb3N0Z3JlU1FMIHNyYy90dXRvcmlhbC9iYXNpY3Muc291cmNlDQoqLw0KQ1JFQVRFIFRBQkxFIHdlYXRoZXIgKA0KICAgIGNpdHkgICAgICAgIHZhcmNoYXIoODApLA0KICAgIHRlbXBfbG8gICAgIGludCwgICAgICAgIC0tIGxvdyB0ZW1wZXJhdHVyZQ0KICAgIHRlbXBfaGkgICAgIGludCwgICAgICAgIC0tIGhpZ2ggdGVtcGVyYXR1cmUNCiAgICBwcmNwICAgICAgICByZWFsLCAgICAgICAtLSBwcmVjaXBpdGF0aW9uDQogICAgImRhdGUiICAgICAgZGF0ZQ0KKTsgICAgICAgICAgICAgICAgDQpFT1Q7DQoJCWJyZWFrOw0KCX0NCiAgICBjYXNlICdkaWZmJzogew0KICAgICAgICAkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QNCit2YXIgU2VhcmNoSGlnaGxpZ2h0ID0gcmVxdWlyZSgiLi9zZWFyY2hfaGlnaGxpZ2h0IikuU2VhcmNoSGlnaGxpZ2h0Ow0KIA0KIC8qKg0KICAqIGNsYXNzIEVkaXRTZXNzaW9uDQpAQCAtMzA3LDYgKzMwOCwxMyBAQCB2YXIgRWRpdFNlc3Npb24gPSBmdW5jdGlvbih0ZXh0LCBtb2RlKSB7DQogICAgICAgICByZXR1cm4gdG9rZW47DQogICAgIH07DQogDQorICAgIHRoaXMuaGlnaGxpZ2h0ID0gZnVuY3Rpb24ocmUpIHsNCisgICAgICAgIGlmICghdGhpcy5cJHNlYXJjaEhpZ2hsaWdodCkgew0KKyAgICAgICAgICAgIHZhciBoaWdobGlnaHQgPSBuZXcgU2VhcmNoSGlnaGxpZ2h0KG51bGwsICJhY2Vfc2VsZWN0ZWRfd29yZCIsICJ0ZXh0Iik7DQorICAgICAgICAgICAgdGhpcy5cJHNlYXJjaEhpZ2hsaWdodCA9IHRoaXMuYWRkRHluYW1pY01hcmtlcihoaWdobGlnaHQpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgdGhpcy5cJHNlYXJjaEhpZ2hsaWdodC5zZXRSZWdleHAocmUpOw0KKyAgICB9DQogICAgIC8qKg0KICAgICAqIEVkaXRTZXNzaW9uLnNldFVuZG9NYW5hZ2VyKHVuZG9NYW5hZ2VyKQ0KICAgICAqIC0gdW5kb01hbmFnZXIgKFVuZG9NYW5hZ2VyKTogVGhlIG5ldyB1bmRvIG1hbmFnZXINCkBAIC01NTYsNyArNTY0LDggQEAgdmFyIEVkaXRTZXNzaW9uID0gZnVuY3Rpb24odGV4dCwgbW9kZSkgew0KICAgICAgICAgICAgIHR5cGUgOiB0eXBlIHx8ICJsaW5lIiwNCiAgICAgICAgICAgICByZW5kZXJlcjogdHlwZW9mIHR5cGUgPT0gImZ1bmN0aW9uIiA/IHR5cGUgOiBudWxsLA0KICAgICAgICAgICAgIGNsYXp6IDogY2xhenosDQotICAgICAgICAgICAgaW5Gcm9udDogISFpbkZyb250DQorICAgICAgICAgICAgaW5Gcm9udDogISFpbkZyb250LA0KKyAgICAgICAgICAgIGlkOiBpZA0KICAgICAgICAgfQ0KIA0KICAgICAgICAgaWYgKGluRnJvbnQpIHsNCmRpZmYgLS1naXQgYS9saWIvYWNlL2VkaXRvci5qcyBiL2xpYi9hY2UvZWRpdG9yLmpzDQppbmRleCA4MzRlNjAzLi5iMjdlYzczIDEwMDY0NA0KLS0tIGEvbGliL2FjZS9lZGl0b3IuanMNCisrKyBiL2xpYi9hY2UvZWRpdG9yLmpzDQpAQCAtNDk0LDcgKzQ5NCw3IEBAIHZhciBFZGl0b3IgPSBmdW5jdGlvbihyZW5kZXJlciwgc2Vzc2lvbikgew0KICAgICAgKiBFbWl0dGVkIHdoZW4gYSBzZWxlY3Rpb24gaGFzIGNoYW5nZWQuDQogICAgICAqKi8NCiAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZSA9IGZ1bmN0aW9uKGUpIHsNCi0gICAgICAgIHZhciBzZXNzaW9uID0gdGhpcy5nZXRTZXNzaW9uKCk7DQorICAgICAgICB2YXIgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbjsNCiANCiAgICAgICAgIGlmIChzZXNzaW9uLlwkc2VsZWN0aW9uTWFya2VyKSB7DQogICAgICAgICAgICAgc2Vzc2lvbi5yZW1vdmVNYXJrZXIoc2Vzc2lvbi5cJHNlbGVjdGlvbk1hcmtlcik7DQpAQCAtNTA5LDEyICs1MDksNDAgQEAgdmFyIEVkaXRvciA9IGZ1bmN0aW9uKHJlbmRlcmVyLCBzZXNzaW9uKSB7DQogICAgICAgICAgICAgdGhpcy5cJHVwZGF0ZUhpZ2hsaWdodEFjdGl2ZUxpbmUoKTsNCiAgICAgICAgIH0NCiANCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsNCi0gICAgICAgIGlmICh0aGlzLlwkaGlnaGxpZ2h0U2VsZWN0ZWRXb3JkICYmICF0aGlzLlwkd29yZEhpZ2hsaWdodFRpbWVyKQ0KLSAgICAgICAgICAgIHRoaXMuXCR3b3JkSGlnaGxpZ2h0VGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KLSAgICAgICAgICAgICAgICBzZWxmLnNlc3Npb24uXCRtb2RlLmhpZ2hsaWdodFNlbGVjdGlvbihzZWxmKTsNCi0gICAgICAgICAgICAgICAgc2VsZi5cJHdvcmRIaWdobGlnaHRUaW1lciA9IG51bGw7DQotICAgICAgICAgICAgfSwgMzAsIHRoaXMpOw0KKyAgICAgICAgdmFyIHJlID0gdGhpcy5cJGhpZ2hsaWdodFNlbGVjdGVkV29yZCAmJiB0aGlzLlwkZ2V0U2VsZWN0aW9uSGlnaExpZ2h0UmVnZXhwKCkNCiAgICAgfTsNCmRpZmYgLS1naXQgYS9saWIvYWNlL3NlYXJjaF9oaWdobGlnaHQuanMgYi9saWIvYWNlL3NlYXJjaF9oaWdobGlnaHQuanMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi5iMmRmNzc5DQotLS0gL2Rldi9udWxsDQorKysgYi9saWIvYWNlL3NlYXJjaF9oaWdobGlnaHQuanMNCkBAIC0wLDAgKzEsMyBAQA0KK25ldw0KK2VtcHR5IGZpbGUgICAgICAgIA0KRU9UOw0KICAgICAgICBicmVhazsNCiAgICB9DQogICAgY2FzZSAnZ29sYW5nJzogew0KICAgICAgICAkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QNCi8vIENvbmN1cnJlbnQgY29tcHV0YXRpb24gb2YgcGkuDQovLyBTZWUgaHR0cDovL2dvby5nbC9adVRaTS4NCi8vDQovLyBUaGlzIGRlbW9uc3RyYXRlcyBHbydzIGFiaWxpdHkgdG8gaGFuZGxlDQovLyBsYXJnZSBudW1iZXJzIG9mIGNvbmN1cnJlbnQgcHJvY2Vzc2VzLg0KLy8gSXQgaXMgYW4gdW5yZWFzb25hYmxlIHdheSB0byBjYWxjdWxhdGUgcGkuDQpwYWNrYWdlIG1haW4NCg0KaW1wb3J0ICgNCiAgICAiZm10Ig0KICAgICJtYXRoIg0KKQ0KDQpmdW5jIG1haW4oKSB7DQogICAgZm10LlByaW50bG4ocGkoNTAwMCkpDQp9DQoNCi8vIHBpIGxhdW5jaGVzIG4gZ29yb3V0aW5lcyB0byBjb21wdXRlIGFuDQovLyBhcHByb3hpbWF0aW9uIG9mIHBpLg0KZnVuYyBwaShuIGludCkgZmxvYXQ2NCB7DQogICAgY2ggOj0gbWFrZShjaGFuIGZsb2F0NjQpDQogICAgZm9yIGsgOj0gMDsgayA8PSBuOyBrKysgew0KICAgICAgICBnbyB0ZXJtKGNoLCBmbG9hdDY0KGspKQ0KICAgIH0NCiAgICBmIDo9IDAuMA0KICAgIGZvciBrIDo9IDA7IGsgPD0gbjsgaysrIHsNCiAgICAgICAgZiArPSA8LWNoDQogICAgfQ0KICAgIHJldHVybiBmDQp9DQoNCmZ1bmMgdGVybShjaCBjaGFuIGZsb2F0NjQsIGsgZmxvYXQ2NCkgew0KICAgIGNoIDwtIDQgKiBtYXRoLlBvdygtMSwgaykgLyAoMiprICsgMSkNCn0gICAgICAgIA0KRU9UOw0KICAgICAgICBicmVhazsNCiAgICB9DQogICAgY2FzZSAneWFtbCc6IHsNCiAgICAgICAgJHN5bnRheF9jb250ZW50ID0gPDw8RU9UDQojIFRoaXMgc2FtcGxlIGRvY3VtZW50IHdhcyB0YWtlbiBmcm9tIHdpa2lwZWRpYToNCiMgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9ZQU1MI1NhbXBsZV9kb2N1bWVudA0KLS0tDQpyZWNlaXB0OiAgICAgT3otV2FyZSBQdXJjaGFzZSBJbnZvaWNlDQpkYXRlOiAgICAgICAgMjAwNy0wOC0wNg0KY3VzdG9tZXI6DQogICAgZ2l2ZW46ICAgRG9yb3RoeQ0KICAgIGZhbWlseTogIEdhbGUNCg0KaXRlbXM6DQogICAgLSBwYXJ0X25vOiAgICdBNDc4NicNCiAgICAgIGRlc2NyaXA6ICAgV2F0ZXIgQnVja2V0IChGaWxsZWQpDQogICAgICBwcmljZTogICAgIDEuNDcNCiAgICAgIHF1YW50aXR5OiAgNA0KDQogICAgLSBwYXJ0X25vOiAgICdFMTYyOCcNCiAgICAgIGRlc2NyaXA6ICAgSGlnaCBIZWVsZWQgIlJ1YnkiIFNsaXBwZXJzDQogICAgICBzaXplOiAgICAgIDgNCiAgICAgIHByaWNlOiAgICAgMTAwLjI3DQogICAgICBxdWFudGl0eTogIDENCg0KYmlsbC10bzogICZpZDAwMQ0KICAgIHN0cmVldDogfA0KICAgICAgICAgICAgMTIzIFRvcm5hZG8gQWxsZXkNCiAgICAgICAgICAgIFN1aXRlIDE2DQogICAgY2l0eTogICBFYXN0IENlbnRlcnZpbGxlDQogICAgc3RhdGU6ICBLUw0KDQpzaGlwLXRvOiAgKmlkMDAxDQoNCnNwZWNpYWxEZWxpdmVyeTogID4NCiAgICBGb2xsb3cgdGhlIFllbGxvdyBCcmljaw0KICAgIFJvYWQgdG8gdGhlIEVtZXJhbGQgQ2l0eS4NCiAgICBQYXkgbm8gYXR0ZW50aW9uIHRvIHRoZQ0KICAgIG1hbiBiZWhpbmQgdGhlIGN1cnRhaW4uICAgICAgIA0KRU9UOw0KICAgICAgICBicmVhazsNCiAgICB9DQogICAgY2FzZSAnbGVzcyc6IHsNCiAgICAgICAgJHN5bnRheF9jb250ZW50ID0gPDw8RU9UDQogICAgY2FzZSAneHF1ZXJ5Jzogew0KICAgICAgICAkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QNCnhxdWVyeSB2ZXJzaW9uICIxLjAiOw0KDQpsZXQgXCRtZXNzYWdlIDo9ICJIZWxsbyBXb3JsZCEiDQpyZXR1cm4gPHJlc3VsdHM+DQogIDxtZXNzYWdlPntcJG1lc3NhZ2V9PC9tZXNzYWdlPg0KPC9yZXN1bHRzPiAgICAgIA0KRU9UOw0KICAgICAgICBicmVhazsNCiAgICB9IA0KICAgIGNhc2UgJ3NjYWQnOiB7DQogICAgICAgICRzeW50YXhfY29udGVudCA9IDw8PEVPVA0KLy8gYWNlIGNhbiBoaWdobGlnaHQgc2NhZCENCm1vZHVsZSBFbGVtZW50KHhwb3MsIHlwb3MsIHpwb3Mpew0KICAgIHRyYW5zbGF0ZShbeHBvcyx5cG9zLHpwb3NdKXsNCiAgICAgICAgdW5pb24oKXsNCiAgICAgICAgICAgIGN1YmUoWzEwLDEwLDRdLHRydWUpOw0KICAgICAgICAgICAgY3lsaW5kZXIoMTAsMTUsNSk7DQogICAgICAgICAgICB0cmFuc2xhdGUoWzAsMCwxMF0pc3BoZXJlKDUpOw0KICAgICAgICB9DQogICAgfQ0KfQ0KDQp1bmlvbigpew0KICAgIGZvcihpPVswOjMwXSl7DQogICAgICAgICMgRWxlbWVudCgwLDAsMCk7DQogICAgICAgIEVsZW1lbnQoMTUqaSwwLDApOw0KICAgIH0NCn0NCg0KZm9yIChpID0gWzMsIDUsIDcsIDExXSl7DQogICAgcm90YXRlKFtpKjEwLDAsMF0pc2NhbGUoWzEsMSxpXSljdWJlKDEwKTsgICAgICANCkVPVDsNCiAgICAgICAgYnJlYWs7DQogICAgfSANCiAgICBjYXNlICdzaCc6IHsNCiAgICAgICAgJHN5bnRheF9jb250ZW50ID0gPDw8RU9UDQojIS9iaW4vc2gNCg0KIyBTY3JpcHQgdG8gb3BlbiBhIGJyb3dzZXIgdG8gY3VycmVudCBicmFuY2gNCiMgUmVwbyBmb3JtYXRzOg0KIyBzc2ggICBnaXRAZ2l0aHViLmNvbTpyaWNob0gvZ2hfcHIuZ2l0DQojIGh0dHAgIGh0dHBzOi8vcmljaG9IQGdpdGh1Yi5jb20vcmljaG9IL2doX3ByLmdpdA0KIyBnaXQgICBnaXQ6Ly9naXRodWIuY29tL3JpY2hvSC9naF9wci5naXQNCg0KdXNlcm5hbWU9YGdpdCBjb25maWcgLS1nZXQgZ2l0aHViLnVzZXJgDQoNCmdldF9yZXBvKCkgew0KICAgIGdpdCByZW1vdGUgLXYgfCBncmVwIFwke0A6LVwkdXNlcm5hbWV9IHwgd2hpbGUgcmVhZCByZW1vdGU7IGRvDQogICAgICBpZiByZXBvPWBlY2hvIFwkcmVtb3RlIHwgZ3JlcCAtRSAtbyAiZ2l0QGdpdGh1Yi5jb206W14gXSoiYDsgdGhlbg0KICAgICAgICAgIGVjaG8gXCRyZXBvIHwgc2VkIC1lICJzL15naXRAZ2l0aHViXC5jb206Ly8iIC1lICJzL1wuZ2l0JC8vIg0KICAgICAgICAgIGV4aXQgMQ0KICAgICAgZmkNCiAgICAgIGlmIHJlcG89YGVjaG8gXCRyZW1vdGUgfCBncmVwIC1FIC1vICJodHRwcz86Ly8oW15AXSpAKT9naXRodWIuY29tL1teIF0qXC5naXQiYDsgdGhlbg0KICAgICAgICAgIGVjaG8gXCRyZXBvIHwgc2VkIC1lICJzfF5odHRwcz86Ly98fCIgLWUgInMvXi4qZ2l0aHViXC5jb21cLy8vIiAtZSAicy9cLmdpdCQvLyINCiAgICAgICAgICBleGl0IDENCiAgICAgIGZpDQogICAgICBpZiByZXBvPWBlY2hvIFwkcmVtb3RlIHwgZ3JlcCAtRSAtbyAiZ2l0Oi8vZ2l0aHViLmNvbS9bXiBdKlwuZ2l0ImA7IHRoZW4NCiAgICAgICAgICBlY2hvIFwkcmVwbyB8IHNlZCAtZSAic3xeZ2l0Oi8vZ2l0aHViLmNvbS98fCIgLWUgInMvXC5naXQkLy8iDQogICAgICAgICAgZXhpdCAxDQogICAgICBmaQ0KICAgIGRvbmUNCg0KICAgIGlmIFsgJD8gLWVxIDAgXTsgdGhlbg0KICAgICAgICBlY2hvICJDb3VsZG4ndCBmaW5kIGEgdmFsaWQgcmVtb3RlIiA+JjINCiAgICAgICAgZXhpdCAxDQogICAgZmkNCn0NCg0KaWYgcmVwbz1gZ2V0X3JlcG8gJEBgOyB0aGVuDQogICAgYnJhbmNoPWBnaXQgc3ltYm9saWMtcmVmIEhFQUQgMj4vZGV2L251bGxgDQogICAgZWNobyAiaHR0cDovL2dpdGh1Yi5jb20vXCRyZXBvL3B1bGwvbmV3L1wke2JyYW5jaCMjcmVmcy9oZWFkcy99Ig0KZWxzZQ0KICAgIGV4aXQgMQ0KZmkgICAgICANCkVPVDsNCiAgICAgICAgYnJlYWs7DQogICAgfSANCiAgICBjYXNlICd4cXVlcnknOiB7DQogICAgICAgICRzeW50YXhfY29udGVudCA9IDw8PEVPVA0KeHF1ZXJ5IHZlcnNpb24gIjEuMCI7DQoNCmxldCBcJG1lc3NhZ2UgOj0gIkhlbGxvIFdvcmxkISINCnJldHVybiA8cmVzdWx0cz4NCiAgPG1lc3NhZ2U+e1wkbWVzc2FnZX08L21lc3NhZ2U+DQo8L3Jlc3VsdHM+ICAgICAgDQpFT1Q7DQogICAgICAgIGJyZWFrOw0KICAgfQ0KICAgIGNhc2UgJ2xhdGV4Jzogew0KICAgICAgICAkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QNClx1c2VwYWNrYWdle2Ftc21hdGh9DQpcdGl0bGV7XExhVGVYfQ0KXGRhdGV7fQ0KXGJlZ2lue2RvY3VtZW50fQ0KICBcbWFrZXRpdGxlDQogIFxMYVRlWHt9IGlzIGEgZG9jdW1lbnQgcHJlcGFyYXRpb24gc3lzdGVtIGZvciB0aGUgXFRlWHt9DQogIHR5cGVzZXR0aW5nIHByb2dyYW0uIEl0IG9mZmVycyBwcm9ncmFtbWFibGUgZGVza3RvcCBwdWJsaXNoaW5nDQogIGZlYXR1cmVzIGFuZCBleHRlbnNpdmUgZmFjaWxpdGllcyBmb3IgYXV0b21hdGluZyBtb3N0IGFzcGVjdHMgb2YNCiAgdHlwZXNldHRpbmcgYW5kIGRlc2t0b3AgcHVibGlzaGluZywgaW5jbHVkaW5nIG51bWJlcmluZyBhbmQNCiAgY3Jvc3MtcmVmZXJlbmNpbmcsIHRhYmxlcyBhbmQgZmlndXJlcywgcGFnZSBsYXlvdXQsIGJpYmxpb2dyYXBoaWVzLA0KICBhbmQgbXVjaCBtb3JlLiBcTGFUZVh7fSB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGluIDE5ODQgYnkgTGVzbGllDQogIExhbXBvcnQgYW5kIGhhcyBiZWNvbWUgdGhlIGRvbWluYW50IG1ldGhvZCBmb3IgdXNpbmcgXFRlWDsgZmV3DQogIHBlb3BsZSB3cml0ZSBpbiBwbGFpbiBcVGVYe30gYW55bW9yZS4gVGhlIGN1cnJlbnQgdmVyc2lvbiAgaXMNCiAgXExhVGVYZS4NCiANCiAgJSBUaGlzIGlzIGEgY29tbWVudDsgaXQgd2lsbCBub3QgYmUgc2hvd24gaW4gdGhlIGZpbmFsIG91dHB1dC4NCiAgJSBUaGUgZm9sbG93aW5nIHNob3dzIGEgbGl0dGxlIG9mIHRoZSB0eXBlc2V0dGluZyBwb3dlciBvZiBMYVRlWDoNCiAgXGJlZ2lue2FsaWdufQ0KICAgIEUgJj0gbWNeMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcDQogICAgbSAmPSBcZnJhY3ttXzB9e1xzcXJ0ezEtXGZyYWN7dl4yfXtjXjJ9fX0NCiAgXGVuZHthbGlnbn0NClxlbmR7ZG9jdW1lbnR9ICAgDQpFT1Q7DQogICAgICAgIGJyZWFrOw0KICAgfSANCiAgICBjYXNlICdsaXF1aWQnOiB7DQogICAgICAgICRzeW50YXhfY29udGVudCA9IDw8PEVPVA0KVGhlIGZvbGxvd2luZyBleGFtcGxlcyBjYW4gYmUgZm91bmQgaW4gZnVsbCBhdCBodHRwOi8vbGlxdWlkbWFya3VwLm9yZy8NCg0KTGlxdWlkIGlzIGFuIGV4dHJhY3Rpb24gZnJvbSB0aGUgZS1jb21tZXJjZSBzeXN0ZW0gU2hvcGlmeS4NClNob3BpZnkgcG93ZXJzIG1hbnkgdGhvdXNhbmRzIG9mIGUtY29tbWVyY2Ugc3RvcmVzIHdoaWNoIGFsbCBjYWxsIGZvciB1bmlxdWUgZGVzaWducy4NCkZvciB0aGlzIHdlIGRldmVsb3BlZCBMaXF1aWQgd2hpY2ggYWxsb3dzIG91ciBjdXN0b21lcnMgY29tcGxldGUgZGVzaWduIGZyZWVkb20gd2hpbGUNCm1haW50YWluaW5nIHRoZSBpbnRlZ3JpdHkgb2Ygb3VyIHNlcnZlcnMuDQoNCkxpcXVpZCBoYXMgYmVlbiBpbiBwcm9kdWN0aW9uIHVzZSBzaW5jZSBKdW5lIDIwMDYgYW5kIGlzIG5vdyB1c2VkIGJ5IG1hbnkgb3RoZXINCmhvc3RlZCB3ZWIgYXBwbGljYXRpb25zLg0KDQpJdCB3YXMgZGV2ZWxvcGVkIGZvciB1c2FnZSBpbiBSdWJ5IG9uIFJhaWxzIHdlYiBhcHBsaWNhdGlvbnMgYW5kIGludGVncmF0ZXMgc2VhbWxlc3NseQ0KYXMgYSBwbHVnaW4gYnV0IGl0IGFsc28gd29ya3MgZXhjZWxsZW50bHkgYXMgYSBzdGFuZCBhbG9uZSBsaWJyYXJ5Lg0KDQpIZXJlJ3Mgd2hhdCBpdCBsb29rcyBsaWtlOg0KDQogIDx1bCBpZD0icHJvZHVjdHMiPg0KICAgIHslIGZvciBwcm9kdWN0IGluIHByb2R1Y3RzICV9DQogICAgICA8bGk+DQogICAgICAgIDxoMj57eyBwcm9kdWN0LnRpdGxlIH19PC9oMj4NCiAgICAgICAgT25seSB7eyBwcm9kdWN0LnByaWNlIHwgZm9ybWF0X2FzX21vbmV5IH19DQoNCiAgICAgICAgPHA+e3sgcHJvZHVjdC5kZXNjcmlwdGlvbiB8IHByZXR0eXByaW50IHwgdHJ1bmNhdGU6IDIwMCAgfX08L3A+DQoNCiAgICAgIDwvbGk+DQogICAgeyUgZW5kZm9yICV9DQogIDwvdWw+DQoNCg0KU29tZSBtb3JlIGZlYXR1cmVzIGluY2x1ZGU6DQoNCjxoMj5GaWx0ZXJzPC9oMj4NCjxwPiBUaGUgd29yZCAidG9iaSIgaW4gdXBwZXJjYXNlOiB7eyAndG9iaScgfCB1cGNhc2UgfX0gPC9wPg0KPHA+VGhlIHdvcmQgInRvYmkiIGhhcyB7eyAndG9iaScgfCBzaXplIH19IGxldHRlcnMhIDwvcD4NCjxwPkNoYW5nZSAiSGVsbG8gd29ybGQiIHRvICJIaSB3b3JsZCI6IHt7ICdIZWxsbyB3b3JsZCcgfCByZXBsYWNlOiAnSGVsbG8nLCAnSGknIH19IDwvcD4NCjxwPlRoZSBkYXRlIHRvZGF5IGlzIHt7ICdub3cnIHwgZGF0ZTogIiVZICViICVkIiB9fSA8L3A+DQoNCg0KPGgyPklmPC9oMj4NCjxwPg0KICB7JSBpZiB1c2VyLm5hbWUgPT0gJ3RvYmknIG9yIHVzZXIubmFtZSA9PSAnbWFyYycgJX0gDQogICAgaGkgbWFyYyBvciB0b2JpDQogIHslIGVuZGlmICV9DQo8L3A+DQoNCg0KPGgyPkNhc2U8L2gyPg0KPHA+DQogIHslIGNhc2UgdGVtcGxhdGUgJX0NCiAgICB7JSB3aGVuICdpbmRleCcgJX0NCiAgICAgICBXZWxjb21lDQogICAgeyUgd2hlbiAncHJvZHVjdCcgJX0NCiAgICAgICB7eyBwcm9kdWN0LnZlbmRvciB8IGxpbmtfdG9fdmVuZG9yIH19IC8ge3sgcHJvZHVjdC50aXRsZSB9fQ0KICAgIHslIGVsc2UgJX0NCiAgICAgICB7eyBwYWdlX3RpdGxlIH19DQogIHslIGVuZGNhc2UgJX0NCjwvcD4NCg0KDQo8aDI+Rm9yIExvb3BzPC9oMj4NCjxwPg0KICB7JSBmb3IgaXRlbSBpbiBhcnJheSAlfSANCiAgICB7eyBpdGVtIH19DQogIHslIGVuZGZvciAlfQ0KPC9wPg0KDQoNCjxoMj5UYWJsZXM8L2gyPg0KPHA+DQogIHslIHRhYmxlcm93IGl0ZW0gaW4gaXRlbXMgY29sczogMyAlfQ0KICAgIHslIGlmIHRhYmxlcm93bG9vcC5jb2xfZmlyc3QgJX0NCiAgICAgIEZpcnN0IGNvbHVtbjoge3sgaXRlbS52YXJpYWJsZSB9fQ0KICAgIHslIGVsc2UgJX0NCiAgICAgIERpZmZlcmVudCBjb2x1bW46IHt7IGl0ZW0udmFyaWFibGUgfX0NCiAgICB7JSBlbmRpZiAlfQ0KICB7JSBlbmR0YWJsZXJvdyAlfQ0KPC9wPiANCkVPVDsNCiAgICAgICAgYnJlYWs7DQogICB9DQogICAgY2FzZSAncG93ZXJzaGVsbCc6IHsNCiAgICAgICAgJHN5bnRheF9jb250ZW50ID0gPDw8RU9UDQojIFRoaXMgaXMgYSBzaW1wbGUgY29tbWVudA0KZnVuY3Rpb24gSGVsbG8oXCRuYW1lKSB7DQogIFdyaXRlLWhvc3QgIkhlbGxvIFwkbmFtZSINCn0NCg0KZnVuY3Rpb24gYWRkKFwkbGVmdCwgXCRyaWdodD00KSB7DQogICAgaWYgKFwkcmlnaHQgLW5lIDQpIHsNCiAgICAgICAgcmV0dXJuIFwkbGVmdA0KICAgIH0gZWxzZWlmIChcJGxlZnQgLWVxIFwkbnVsbCAtYW5kIFwkcmlnaHQgLWVxIDIpIHsNCiAgICAgICAgcmV0dXJuIDMNCiAgICB9IGVsc2Ugew0KICAgICAgICByZXR1cm4gMg0KICAgIH0NCn0NCg0KXCRudW1iZXIgPSAxICsgMjsNClwkbnVtYmVyICs9IDMNCg0KV3JpdGUtSG9zdCBIZWxsbyAtbmFtZSAiV29ybGQiDQoNClwkYW5fYXJyYXkgPSBAKDEsIDIsIDMpDQpcJGFfaGFzaCA9IEB7InNvbWV0aGluZyIgPSAic29tZXRoaW5nIGVsc2UifQ0KDQomIG5vdGVwYWQgLlxyZWFkbWUubWQgIA0KRU9UOw0KICAgICAgICBicmVhazsNCiAgIH0gDQogICAgY2FzZSAnanN4Jzogew0KICAgICAgICAkc3ludGF4X2NvbnRlbnQgPSA8PDxFT1QNCmNsYXNzIF9NYWluIHsNCiAgICBzdGF0aWMgZnVuY3Rpb24gbWFpbihhcmdzIDogc3RyaW5nW10pIDp2b2lkIHsNCiAgICAgICAgbG9nICJIZWxsbywgd29ybGQhIjsNCiAgICB9DQp9IA0KRU9UOw0KICAgICAgICBicmVhazsNCiAgIH0NCn0NCg0KLyogY3JlYXRlIHRlc3QgdGV4dGFyZWEgKi8NCiRzbWFydHktPmFzc2lnbigndGVzdGFyZWF0ZXh0JywgJHRoaXMtPkxhbmcoJ3Rlc3RhcmVhdGV4dCcpKTsNCiRzbWFydHktPmFzc2lnbigndGVzdGFyZWEnLCAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsICRpZCwgJHN5bnRheF9jb250ZW50LCAndGVzdGFyZWEnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnQWNlRWRpdG9yJywgY21zX3VzZXJwcmVmczo6Z2V0X2Zvcl91c2VyKCR1c2VyaWQsICdtb2RlJywgJ3RoZW1lJywgJ2ZvbnRzaXplJywgJ2Z1bGxfbGluZScsICdoaWdobGlnaHRfYWN0aXZlJywgJ3Nob3dfaW52aXNpYmxlcycsICdwZXJzaXN0ZW5faHNjcm9sbCcsICdrZXliaW5kaW5nJywgJ3NvZnRfd3JhcCcsICdzaG93X2d1dHRlcicsICdwcmludF9tYXJnaW4nLCAnc29mdF90YWInLCAnaGlnaGxpZ2h0X3NlbGVjdGVkJywgJ2VuYWJsZV9iZWhhdmlvcnMnKSkpOw0KDQovKiBQcm9jZXNzVGVtcGFsdGUgKi8NCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnc2V0dGluZ3MudHBsJyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/editor.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEAYABgAAD/4RDgRXhpZgAATU0AKgAAAAgABAE7AAIAAAAHAAAISodpAAQAAAABAAAIUpydAAEAAAAOAAAQyuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVuaXF1MwAAAAWQAwACAAAAFAAAEKCQBAACAAAAFAAAELSSkQACAAAAAzIzAACSkgACAAAAAzIzAADqHAAHAAAIDAAACJQAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDExOjEyOjAzIDE1OjM4OjUzADIwMTE6MTI6MDMgMTU6Mzg6NTMAAAB1AG4AaQBxAHUAMwAAAP/hCxlodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIi8+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6Q3JlYXRlRGF0ZT4yMDExLTEyLTAzVDE1OjM4OjUzLjIyNTwveG1wOkNyZWF0ZURhdGU+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT51bmlxdTM8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAHBQUGBQQHBgUGCAcHCAoRCwoJCQoVDxAMERgVGhkYFRgXGx4nIRsdJR0XGCIuIiUoKSssKxogLzMvKjInKisq/9sAQwEHCAgKCQoUCwsUKhwYHCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq/8AAEQgBAwE8AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9v1C9+yXdnH5e/7VP5Oc42/u2fPv9zH41YqvqH2v7XZ/ZP8AV+f/AKR0/wBX5bev+1s6c/hmrFMOoUUUUgCiiigDxH9oz/mXP+3r/wBpV5QfC2rDRX1XyIfsscSzPi6i8xEZgqsYt28AkjBK85Fer/tGf8y5/wBvX/tKvO7nxlE/hX+x7S21GMGKFNk+pma3iZCrNJHCU+RmZT/EQAzDHNSw6lC48Ha1aWqXFzBBFGZI4n3XkOYXflVlG/MRPP3wuMHPQ1Jd+BvENleQ2tzYKs0zlFVbiJtuBuy5DEIu0FgzYBUFgcDNLqWtaHqM8ly+h3KXV1OJrqT+0MjkkuIl8v5NxP8AH5mB+dTXnibTZ/EsuqW2lXcUV3HLHdwSXyuXDqVOxhENhGcjIbkenFT/AF/X9fIP6/r+vmV7Pwwy+JLLStcnezW+KCC4tFju0cs21SGWQKVzkEhjggjGaq6PpVpqV1dW1xeTW80cEssHl24kWQxozkMS6lQQvUBuvStK28SaTbavpcy6Temx0v57e3/tBPMaXzN+55PJwR22hRwBz1zFputaDp+s3N5/ZGoyRSRPHFF/aUYZN8bI5ZvI+bhsjAGMc5pajVvy/wCCc7WoumWknhiXUoruY3MFxHDLbtbgIA4cqyybySf3fIKjr1NULloGuZGs45IoCx8tJZA7KOwLBVBPvgfStiy1bRoPDNxptzpd9LcXDpK1xHfoiB0DhMIYScYk5G7nHBFN7C6kFz4a1S00v7fPDCIQiSOq3MTSxq+NrPEG3qDlcFlA+YeorW1DwTHp+m6eX1WB9Rv9myBZ7UwpvzgtIJywGB94oFzxml1XxzPq+g/YrmfWxKYY4mRdXP2RtgAz9nMfcLnG/G7n2qhretaVqCWTabpl5aT2kaRBri+WZWRAcfKIkIOcc5/Cq0v8/wABa2+X46FTXdAu/D181rfS2cjq7pm1vI5xlTg5CMSv0YA+3WjQ9Bu/EF1NBYy2kbwwvMxurlIQVUZOC5AJ4/DqcDJqfxDq+m6vcPcWGlPZ3E88lxcSy3RmLM5ztUBVCoDnAILc8saraJqUWlaiZri3a5gkhlgljSTy2KyIUO1sEAjOQSD9KmO2o35E9t4X1O8u7mC3Fo32UqJZjfwLCC33QJS+wk84AYng+hqxB4G8Q3Fv5yWUar57W22W6hjczKcGLYzht/omNx7A05dc0Roriyl0S5TTXeOSKK31ALKropUs0jRsG3biSAqjIGMDIO3J4i0G60GO81WMXV6upy3cdhBdSQvChEaqrMYWR1xGM4YNgDnJID/r8v8Agi/r+v6+85OPQdSl0S61dLU/YbOVYZ5S6go7dBtJ3fkKzq17zUdPu9HkMlmz6zc3rzz3bMVVIyBhEUHByxYkkcYAHesikr9SnboFFFFMQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH2Xql5f22u6dHCLb7FcSmKUuGMhby3YbeQFA2dTnOegxk1NV1TUrDW7KJBb/Y7iVIgphkZnycMTLwkeMjCncX6DBq3rOiyane28yate2X2Zt6JbrCRu2ldx3xsc4Yjrj2zTLrQhd6gtxJqN95IkSVrMOpid0IKnlSw5CnCsFJHI5OdF0B9fQ1aKKKQBRRRQB4j+0Z/wAy5/29f+0q8iurK2Tw5p9/CJVmmnnhmDuGUlBGwKjAI4kwQSemc84Hrv7Rn/Muf9vX/tKvJLjUIT4YstNtnm3rcS3FyGUKhYhVQDBO7AVjkgY3kD1MsRl0UUUhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH2Tq73sOvaW0N55drLOYZbcRKfMzE7ZLHJ42jAGO+Segy9S8TRw+M9P0mPUbe3AmCXEDum+YvGxUAH5gAQvI6l1GeorZ1bQbLVruKa8N2Hh5j8i9mhCnBGcI4GcEjPXBxTdStbCa5s574zh7RzLD5c0qhSBgswQ4IAOMtkYJ9TVOUYpOWyHZydl2NGiiimIKKKKAPEf2jP8AmXP+3r/2lXjAjRLEySLmSRsR+wHU/wBPzr2f9oz/AJlz/t6/9pV4pNM0xTcAAihFA6AD/JP41DAtX1vZxW0D2sxkdh86nHy9+cE9iBx6evFN02KCa5ZLkfuzG3zZPycdfwqnUsFxJbMzRbcspU7kDcH6ikBovpkJ8mJW2lUYzSqQRkEcZLBcAnHWoY9NjN9Lby3SoI8YbK/Nn6sB+p/GoU1C4SNI1MexAVCmFCCOvORz07046pdGR3Zo2aTBbdChBI6HBHXmlqBOmnRtFcqThbabDz4OQuD/AAkgdQOOvNZrbQ52Elc8EjBI+lWY9RuYixR1+dizbo1bcSCDnI56nj3qsTkknHPoMUK4zQuLOB1DW77ZPKjdotp2jdgfeJ9SD+PWkvNPjsk3rcRzMr7Wj3Lz9NrE4474NQNf3DBwTH86CNsRIPlHQdOP/rD0pJL6abaZPKYhg27yUyT7nGT+PWjURYNrBPfiPItUaASfKCwB2bj1OcdfWlh0yOf95Hc4g2k7nVUbOQMYLAd/X/Ckh1V1ukmuEVyilV8pEjIyMdQvOB2NQnUJ/O3qUA27QnlJt25zgrjB59qNRkq2EH2ieOS7AWJA4dFDhhxno3Xn35796pyqiysIn3oDw2MZH0qZL+eN5HQQgyABh5CYx9MYFV2O5iTjJOeBinqAlaBS0TTItqGS4mzgshGDkDgh8fmDWfVh72aS2WBvL2KMDESAj8cZ/WgRLLZwxh9twz+U4Wb93jHbK88/jim3trBauY4rkyupwwMe3H6/n/WmyX88uN5jOGDH90g3Ed24+bqeuaZc3Ut0++bYW9VjVc/XAGaWoyWxhhmjufPOwJGHEgBJX5gOBnBznv8ApUiWEBd990yxiISo/lZyucHIzwfzHv3qvb3c1rv8gqN42tuRWyPTkdKeuo3CyO4MZLgKd0KEYHQAEYA9hT1ESJZW7YLXRCyOUiIiznpy3PHUdM9/xkTSCxjYyOItmZX2D5DznjdyPl61Vivp4ARGY/vbhmJTtPqMjjt09KRb24WAQrKRGAw24HRuv8qWoyyumxvYeelyGkwD5YCnqcYPzZHXuAKLzTYrRQTdK+H2OFKEj3ADknp3x2qCS/uJIPKdk27QpIjUMQOgLAZPQd+1El9NKVMgiYht24wpkn3OMn8aeoE01jbR3a263mTv2uWj2hfxJx+eOe+Oaiv7RLOWNY5vNDpuzgcckdiQenY0NqNw1yJyY/MAIyIUGcjByMYPHrUU9xJcOGlK5A2gKoUAewAxS1An08Ql3+0QJIijczOzAIo69CMk8AVJELVVjZ7XzBcSMMbz+7XOMDHfnqc9uKrQXctsrrFsKvgsHjVwcdPvA+tPTUrpHdlkGXYuSUU4Y9xx8p9ximItfZreKZLNoRI8ik+fuIKnJxgdMcc5z36VLNZWapNKqrzD8kQY/I+Mk9c46dfX2rOS+uI4PJWQbMEcqCQD1AOMgH0FObULhpHcmPdImxj5KdPy4pWY9CrVvTI45r5Y5Y0kVlbh2KjIUkcgj0pl3dNdPGSu1Yo1jVc9AB/jk/jTLe4ktZfMhKhsEfMgbg9eCKYjQbTY5bnBMdsFhV5AjgqCTgbSzAHjB+96/SqF1ALe5aNZVlUYIdSCDx7EjP405L64jChWTCggBo1IwTkjBHIzzjtUUsjTSF3CgnsiBR+Q4pajPsPWopF8QaPcrdXKg3BhMCyFY2BikYllH3jlV65AxxjnPFeIDqM3i2LUYJ5JLJdSgsnit72QmIbirJJCBs2udpJY9CvBzXf6noWkarciXVNKsr2RF2q9xbpIVHXALA8U240HSLu9F5daVZT3QAAnkt0ZwBwPmIzUV6TqxUU7GlOag72DSJXa2kglbe1tIYt5OSwwCM++GAPuDV+mQwxW8Qit40ijXoiKFA/AU+tKUHCmoyd2iZyUpNpBRRRWhB4j+0Z/zLn/AG9f+0q8oNnbp4eEzMpkJzkbM/TO7Pb0/DrXq/7Rn/Muf9vX/tKvFftMpgWHf+7U7gMdDz3/ABNSzqw1WnT5ueN7ppepensrUzCK2MqESpGWkYMPmBOeAMYx+PtUEvkRqJbWGdWSTafOCuv8uvsc1E95dSqyyXMzq+CwaQkNjpmhr67eRHe6mZ4/uMZCSv09KRrOtRd3FW+S7+ull9/XuXPssE2pXXnMIo4huwvyjqB2U46+lENlZSXMp84tbjaFYMQdx7fcJPQ9h0qmb67aZZWupjIowrmQ5H0NAvrsStILqYSMMM/mHJHuaasX9Yoc1+Xq3t6+f4eW6LkdjaqWjn85pBc+QGRgBj1wQfyzSrbQTQWYkRxJMhVXQBVGGPJ4+b36YA71T+33gORdT53bv9Yevr9aGvrtkZWupirDDAyHBHvS6DWIw605dPRd0+/ZW+dx7MH0yMuifLKVyqhSRgdSBz+NWDp0LTGNfMQfaViEjHIwwJ9OvH69Kpm9ujB5JuZjFjGzzDtx6YpGu7l4hE9xK0YAAQuSMDoMU+pmq1H7Sb0X4J+e22vkTX0NpGENpNubJDoSxx6HJRferXhW0S+8XaVbypHJG93H5iSYwyhgWGD1yARtGSTwASQKz5ru4uQBcTyyhem9y2Pzp1heSadqVtfQBTLbTJMgcZBZSCM+3FI5cRKNSTcFZelv1Y28mNxezzMqKZJGYrHGI1GT2VQAo9gABUNS3My3F1LMkMcCyOWEUZYqmT0G4k4HuSfeoqS2Ik7tsKKKKZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB9b+KbvRLDxNot1qd7aW13HOdpuLgKUjMUgJAY4ALYBIHOAM8CszW5gfHCHUF0yWOM24sba9XfJNvfDvBlgFZTyTtYnAHyjBPa3N5awXsNtNcwxz3GfJieQBpNoydo6nA64qpJrukRakNOl1WyS+JCi1a4QSknkDZnPOfStE9gf6F+iiikAUUUUAeI/tGf8y5/29f+0q8afNvYLH0e4w7f7o6D8Tk/lXsv7Rn/ADLn/b1/7SrxJmZzl2LHAGSc9OBUMC5fXdtcW0CQW4jeMYZgDz345OOSf88CGwhE97HGYmlHJKJ1IAz6jP0zVeikBumytPtm37JIGEAcQCNizNuwcpvz07bvf2qJIYxc3kUOnNKwRWSKZHDjkZwA2cc565xWPUsFtPdSFLaGSZ1RnKxqWIVRljx2ABJPYClYYk6NHO6OqoysQVU5A9s5NX44jNpKGGxidlLh5ssCmACCTuwO/WqVpZ3N/dR2tjby3NxIcJFChd2PsByaiIIOCMEU+gjTltEWzZvsjLGsSut183zsccencjAGRj2NUrIRm+hWdA8bMFYEkDnjtzRd2d1YXBt762mtpgATHNGUYAjIODzyCD+NQUB0NaayW1WKOKBbud5G4UNkbR8y4DevfrxSy2TrqV3vs5JnBLRROH+cbsZ9T+dZFFKwzfuIma9uFaw86U28TJHJvZh90EDBBOOffj60yC2d7eC3uLMyB7p0G1mIjBAztwfr1z0NYdFFguKysjFXBVgcEEYINactoi2bH7IyxrErrdfN87HHHp3IwBkY9jWXRTEa+qPdR2NvC9q9vBtXj94F3c8YJx79M1QsmhF0ouY0eNvlO8kBc9+COlV6KLAa9vCF1O2torMSSxYEzRl8g5GTw3GP55osbFB54urSeSZGX90ImZgpzzgMp9Of8ayKKVhm1Dp9tcY2p5IjnZCJQdz9wrDdxxu6elBtYJoIpYtO2wyI5eZWciLBIHfA4A69e2KxamluZJoo432bYxhcIoIH1AyfxoswL0logtGItGWNYlZLr5vnY449O5GAMjHsadewpa+SX0sxbgrFnLhSccryen459+1ZNFMRoatA0VwzfY0tozIwTbkbxnrgk8e44qDT7iO1vEmmiEqrzt9xyO4xyOv6Gq1FCVkDL0Zia8luo4gsEPzKhHHoo6nv159apu7O7O5JZjkk9zRubYU3HaTkrnjP+TTaACiiimAUUUUAFFFFAH194kubW01zTJms7qSZJ98k1tp8sxEflyKAWRD/ABMPlz3zird9befqdjFFBiJpjdXDhMBiigLuP97cUIzzhParV5q1lbavb6dNNi6ucmKMIzdATyQML904zjODjOKil1qwh1VNOklYXDYHETlASCQpcDarHHCkgnjjkVp2B7/Iv0UUUgCiiigDxH9oz/mXP+3r/wBpV4hXt/7Rn/Muf9vX/tKvE1id43kUfKmNxz0z0qHuAyinvDJGqs6kBhkfmR/MH8qZQB03g5tKlGqWWuvBDbS2wl85kj80GNgxSJ3UlWZdwGOpx1rfVLO58S3NjpsmgyaZb6abY3FyLKEzOYXKOC+Dv8xgCy88Dca86opPUFoejeC44dOvNLXd4eAg1A/2rLfXNszqqldpidmzgDJBiPLZySMVU+0XF14NXTo73w/CtnPdrctcJamQLhCpjbaZHLEMA0eT0yQACOEooeoLT+vX/M9B1kpd6LdWch0IrZaPZvDNFcWxneZfLVx5gbe5CiQFASBtXjJBPN69/wAgnQ/+QN/x6H/kHf637x/4+P8App/TFYVFAL/gfkbXhFLRvE1sb9ohEiu4WYxBJHCEqhMoMa5OBlgQM8g9K63WLXTpdWuobAaHDJf6VG6KbuzdI7lJVLDzFCxxtsDZwEVvfOT5xRTetv6/r/gAtHf+v6/zPSjdNZ6xrdnptz4beW80+1eJ9ll9mklXyvMAMihE5Eh2HbyM4ziqmkRQQ4jhk8NXf/EwkGqTXRt0V4flx5Ik2sEwZMGIBsj/AHa4EKzAkKSFGSQOlJQKx0rx/ZvA93NFb6Z9jvNQ8u2luIyb3CAE7GHATDKG9zXNUUUrFN3CiiimIKKKKACiiigAopxQhA+RgkjqM/l1ptABRRRQAUUUUAFFFSJC8kcjoARGMt8wBAzjp360gI6KfDC88yxRAF2OACQMn6mmUAFFFLTA+w/EUt6up6cbPSLu+S3n86R4HhUAeW6Y+eRTnLA9MY79qo3mm3Enijz/AOzbqXdNC6XCXIW3RV27vMj8wbnGGwdjY+TnjjavtWjtNZtLFra5c3ZKiZUHloQpYBmJHJCtwMnjnGRUFzr0Ntqgs2tbl0DJHLdIF8qF34RWy27JyOikDcMkVougP9DUooopAFFFFAHiP7Rn/Muf9vX/ALSrxmdljtoreNg3HmSEHI3HoPwH6k17N+0Z/wAy5/29f+0q8QqGBbutSuLyCKGdsrF93knt7nn/AOv6cU3T5Jor6NrZZHfP3Y87mHcDHtmq1FIDZlmNpdPZ/aGgMEflxSvu+Ukgt0BIz0yP60w3ccjOhvvLYNG/nAN8zKCGIwM556nGcc1HpWh3etQ3Z04Cae2RHFqiO0swZ1T5AqkEgsuQSOvGaIPDut3V7cWdro9/NdW3+vgjtXZ4v95QMr+NKwXKt86SahO8TiRHkZlYAjIJz3q3BdbLJEjvvsyqjCSHYSZCc84xg8YHJGMVFp+i6rq6zNpWmXl8sABlNtA0gjBzjdtBx0PX0qzH4Y1O5s7SbT4Hv5Lkyj7NawyPLEYyu7eu3/aU5GRzzg8U7aWAdJdW76V5C3KAqqGNW8wsrDr/ALI79PzpmpXa3UU+69WfEqmJSG+7g5xkcdR+VRr4e1p9OF+mj37WbI0guRbOYyi9W3YxgdzSXvh7WtNhMuo6Rf2kYkEW+e2dBvIyFyR1I5x6UW1C5WsHWO9jdpFiC5IZ1JAOOOnPXuOlap1SM3m8zRl/ICCUmXap3Z4P3+nf8OlVbjw3rlpcGC70bUIJhC05jltXVhGvV8EZ2juelOi8L6/cTiCDQ9SllMSzCNLSQsY2OFfAH3T2PQ0WuGw5dQb7Vdbb1LczIuJITIELAjn+9nGecVmT7TO5SRpRuPzsMFver9n4d1e+1OWwg028a4tz/pEYtpGa3GcEuqqWAHfikvNCv7TUNRtUge6/s12W5mt0Zo0AbbuJxwpPcgUtBktvJcR6SLo+ev2fckL87SH44Ptz+gpr3i/ZWC3YMflqI7YBgUcY56YBzk5ByfxrKq2dOmXSxflk8ouEC5O7vz0x/CapRbvYEXLm4ikjlMWoANJcrMikOPL65OcdeRnHp3qDVrtrifi7W4iyWUKpGz8wOv696luvDt9ZWMNxcKUecgRwGGXeSegzs259s5p134av7Oe2t2Uvc3JwkCxSBumTyUAOO+Ca0+r1E7W2DXcp2EwieXEwt5GTCTHPynIz0BIyM8irwvrVxLFdytKmUbK7gJHxhm7c85yeuPequq6VLpFysFxIrSEZIEciYGcfxqufqMioINPvLpFe2tJ5leQRK0cZYFyMhRgdcdutQ4O9hN8u5rLqm+QbtQKxm5JdW3nMeMc8c5A6e9YTAKxAYMAeo6GrsOi6rcbvs+mXku2QxNsgZsOBkrwOoHbrTf7PzpBv1uYWCSrE8AD70LBiCcrtwdh6E0uVonnj3JvMVrK2DainmQyblB8zKA7eB8vGMHpV641GC4cie98yPfuwA2f9Zn0/unA+hrLi02aXSLnUtyJBbypEdxOXd9xAXj0Vic46e4p91pbWmk2N9JdQMb1WdLdd/mKquybmyu3BKnGGJ9hUtaldC9LdR3FzbtHOj3O10DRrKxUn7pywLH8OmeBUkt41rdRx3M+ZhbBRJKJF2tvJPTDDIxz1PGetVJ/Dt6t3ZWdljUby8t0uFtbOOR5EDIHAI2jJ2nPy5A9aiHh7WjfQWQ0e/N1cR+bDB9mfzJU5+ZVxkjg8j0NFh36le/m8+9eTMTZxlot208dfm5z9avaVd28FsY5ZkjDsfMV/MORjAwF4PfO6obbw/rN5qE1haaTfT3lvnzraK2dpI8HB3KBkc+tTWXhPxBqWnSX2naLfXVtFJ5TyQ27PtbBJGAM8Y59OM9RRbQOoR3a/Y4rZ9QXyhDIrIQ5GTnb/AA/Q+2KVruN7G4j+2r5bwqIrfa3yMCCe2B0PIPOeax6vzaHq1vFcS3Gl3sUdts893t3URb8bNxI+XdkYz1zxTtcVyCwdI9Rt5JnCIkgZiQTwDntWiLyITxGe8E7K7MkgDqIxjgHgEDOOF6Y4qG58O6vp6rJqum3mnweasTT3VtIiIxGQCdvXHOBzjtRf6MNP1qOwn1G0MciRyC8QSmLZIgcNjZvxhhkbc+1G4E013C175sV3GkrwBfPUSfI+eeSC3I4zyaz72QzXO5rj7Q20AybSM8fmfqea0IvDksni1vD8t9aQXAuDbCeTzDEzhtoA2oW5PQlR15xWQylHKnqDikrDPsTX4NXm1GxfS7WymjtpfOY3F28RJ2Om0BY24+fOc9sY71R1jw2+r67BO9rCkCvFJJOt9MGYxtuAMAAjY543MSQD04FbuoXv2S7s4/L3/ap/JznG392z59/uY/GrFbdhP9AooopAFFFFAHiP7Rn/ADLn/b1/7SrxCvb/ANoz/mXP+3r/ANpV5QfC2rDRX1XyIfsscSzPi6i8xEZgqsYt28AkjBK85FQw62Meity48Ha1aWqXFzBBFGZI4n3XkOYXflVlG/MRPP3wuMHPQ1Jd+BvENleQ2tzYKs0zlFVbiJtuBuy5DEIu0FgzYBUFgcDNAC+FdV03TYNYi1S4v7cahZfZEexiVyoLqzE7nXjCY29wx5Hfd03xhodpeDzRdFLdLWOG7l06C5lljiDblKSOVjJJGGG4qFA574Fn4YZfEllpWuTvZrfFBBcWix3aOWbapDLIFK5yCQxwQRjNVdH0q01K6ura4vJreaOCWWDy7cSLIY0ZyGJdSoIXqA3XpRzW+X6f0w5b3/rf/hjdbxBot1cyeZf6zYxw6pLf20tnbp5knmbfvfvR5brt4YFuvTjlbbxJoX/CEz6LOL6G4meWYXS20czoS6ERby6kowTLMApzjggEHjK1F0y0k8MS6lFdzG5guI4ZbdrcBAHDlWWTeST+75BUdepqUklYe7uddfXmny+DtW1FtQkW41a2tYRYmeBhGYnToiymTACNt3IgUHGTkZo3XijTrfVdFu9M1HVrmKwSCGS2uLdYV2R4OVxK/O4bgMAA85rBufDWqWml/b54YRCESR1W5iaWNXxtZ4g29QcrgsoHzD1Fa2oeCY9P03Ty+qwPqN/s2QLPamFN+cFpBOWAwPvFAueM1XX5kK34f1+g+317RtPFpaQ3WpXtoJLl5557ZI5I/Oh8o7E81gTzuOWGcAcYzUr674cgsjBp91q6ldHk09We0jBd2mMm44l+VW3EEc4H96ue13QLvw9fNa30tnI6u6ZtbyOcZU4OQjEr9GAPt1o0PQbvxBdTQWMtpG8MLzMbq5SEFVGTguQCePw6nAyaSs1/Xa35FPRq/T/O/wCZ0l14h0G8YwHUdZt4Va0mW4is4/NeSGHyjlfOAHQMrbiQWYY71T1PX9KvdZ8T3kV1rMKaoWkto4isauzPuKTruO5Rk4weSAcDpWZbeF9TvLu5gtxaN9lKiWY38Cwgt90CUvsJPOAGJ4PoasQeBvENxb+cllGq+e1ttluoY3MynBi2M4bf6JjcewND11f9bL/IFpp/Xf8AzOfrpLnxGJPCEGmo+JMKjqJJeFBb1baeNvHTnpwMZkeg6lLol1q6Wp+w2cqwzyl1BR26DaTu/IVnVrCrKClFddH+Y02tTU1CXTbg2vkXF2fLRIn32yjCjqwxIcn24+tSXN1pkmuxXkc92Yt4eQNbqGXGMADfznHqMe9Y9FUqzUuZJXvfruJ6qxa1BrZ715LOSWSNyWJljCEEk8YDN+eataXdaellcWupm5WOSWKYNborElA428kYyH684x0NZdFZRfK7oU1zrU6aXV9Lf+2DFfalbtqFyJl2Wy/dBZgrHzR3b3+6D7CjDcaY2hXMN1d3v2y4lWY4tlZdyhwAWMgJzvyTjj0NY9FPm8jJUUlZPt26fI3o7uGb4fT2PmIk9tqK3IRnAMqPGUOB32lV6f38+tM1dVfw3oM0c0DhLeSF0WdDIjefI3zIDuAwwIJGDmsSioau7/1tY2W1jrbiextPFOhalfXWbOO0s5CbIxzyBo4kBUpvG07lIwxB74NI+v6fLqGqw3GravPY6jGc3MlspmjcyK7DyzNgg7ACd4zwccYPJ0Uf194f8D8DsLnxBpGo28+n3N5qdvaqLXyruO1SSabyY2T94hlUD72Vwx2gY560yTX9E1a41VdZ/tCG3ur+O8Q20aPJIFV1KsWYBWYOCX+bnPymuSoo/r+vuQG4ngzxNcxrPZ+GdZe3lG+JlspHDKeQdwXB47jrWpNq+gvpN7HcnVIdTn06CxaP7NGYomhMfUlwx3eUOw25PDVx9FAHU6/q+l6gunw2Or6w1tDbw2k0U1oqKsaYyyqJyGO75tpwM96g11tK1jULJdCu7qSUww2zC/hitUHlxqgbf5rAZ255wB6mudoosG33WOwQxXXxhaeK6tBbpq/nm4kuo0i2LLuLB2YKeBxg89s1yrokksjGZF+Y4znn8hUNFEdAfXzPtXUPtf2uz+yf6vz/APSOn+r8tvX/AGtnTn8M1YrH8SXuqafi4sJLFYlAHlXCs0lzISAsSYICE9Afm5PTjmG61a/j1WUxC3Fha3ENtMjIxlkaTb8ytuAUL5i8ENnB6cVqtQZvUUUUgCiiigDxH9oz/mXP+3r/ANpV53c+Mon8K/2PaW2oxgxQpsn1MzW8TIVZpI4SnyMzKf4iAGYY5r0T9oz/AJlz/t6/9pV5FdWVsnhzT7+ESrNNPPDMHcMpKCNgVGARxJggk9M55wJdxaF/Uta0PUZ5Ll9DuUurqcTXUn9oZHJJcRL5fybif4/MwPzqa88TabP4ll1S20q7iiu45Y7uCS+Vy4dSp2MIhsIzkZDcj04rmKKnYZ09t4k0m21fS5l0m9Njpfz29v8A2gnmNL5m/c8nk4I7bQo4A565i03WtB0/Wbm8/sjUZIpInjii/tKMMm+Nkcs3kfNw2RgDGOc1ztFFgJbloGuZGs45IoCx8tJZA7KOwLBVBPvgfStiy1bRoPDNxptzpd9LcXDpK1xHfoiB0DhMIYScYk5G7nHBFYVFHSweZ1uq+OZ9X0H7Fcz62JTDHEyLq5+yNsAGfs5j7hc4343c+1UNb1rStQSybTdMvLSe0jSINcXyzKyIDj5REhBzjnP4Vg0U763+YW0sbXiHV9N1e4e4sNKezuJ55Li4llujMWZznaoCqFQHOAQW55Y1W0TUotK1EzXFu1zBJDLBLGknlsVkQodrYIBGcgkH6VnUUlpsD1OiXXNEaK4spdEuU013jkiit9QCyq6KVLNI0bBt24kgKoyBjAyDtyeItButBjvNVjF1erqct3HYQXUkLwoRGqqzGFkdcRjOGDYA5ySBwVFPrcVjXvNR0+70eQyWbPrNzevPPdsxVUjIGERQcHLFiSRxgAd6yKKKSVth3uFFFFMAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPsbVvDv9oa7FqaatfWk0EflxpCIWRM9WAkjbDEHBIwccU+bQ0m1MXZvLlIy6SyWqiPy5XTG12ym7I2r0YD5RxVfxRLewzQmw1VraeT5LazjgRzcy9fnLAnYB127cDJLdMSu97F4ugja83Wc9rKy2wiUBWQx/MW+8T857gYxxnk2gZr0UUUAFFFFAHiP7Rn/Muf9vX/ALSryS41CE+GLLTbZ5t63EtxchlCoWIVUAwTuwFY5IGN5A9T63+0Z/zLn/b1/wC0q8YEaJYmSRcySNiP2A6n+n51DAr0VevrezitoHtZjI7D51OPl784J7EDj09eKgtLdbmVoy7KQjMu1c7iBnHUUgIKK0l05Ibq2iu3ZZJWwybAwHOByGGQfUYqOwtBdi4iCAsqhg+cbAGGT1xjBPX0ougKNFW1htmiujFI7mNQULx4yMgZ4bg8+9VKACir/wDZ8X9nG5+1AsqhiihTjJxj72R+IA96S5trOK5jjS4mw20sXiHyggHPDc9en60XAo0VcltkswHkzIwlZPKkXAYDvkNn/PWpRp8c2o3aB1ghhY9x0zgAbmA/M0XAzqKmuoBb3LRrKsqjBDqQQePYkZ/GrVppiXFsJZblId7FVDMgHHc5YHHPYGi/UDPorQi06KTT2uzcMFjBEgEYO1sjaB83Oc9e1RzW1ssMHkzStLKgO1owFzuI67uOnpRcCnRWheabFaKCbpXw+xwpQke4Ack9O+O1OOnWovRbi9YkZ3HyemBn159/0zRdDsZtFX49PjlnUJMxhaLzPMKKpAzjkFgByPWhLZIL+a1lRJgEYq+TxhSwIwcenqKLiKFFFWVEbaZI3lKJEkUCQE5IIbg847DtQBWoqzJFCLKCRGJLOyuSmCMAdPmwRz6CpriygtnzFMZxHKqSK8ewHIJ7H2PpQBQorSu9OigvxA8vks8h+UgYRMnHJbrjHBx15NV7+0SzljWObzQ6bs4HHJHYkHp2NCaYFWirumwWs8rreTeSoU7WOMZPA7juQf58c1HBFF5sskgLQxAnBP3j0Ucf07A0XArUUUUwCiiigAooooA+ytT8N6dqOrf2hcC6S6EQh823vZoDsznb+7cDGTmln0CxudVj1GVrz7TFjYUvpkQDjjYHC4O0ZGMHHOaoeKI1udRhtbW9vl1N0/0eG1nZEh55nkC4BUej5BxgDJOW38a3PimGOxvb572J43mWOdhBbRDkq6DCkuMgBgW5yMBeLXQGdHRRRQAUUUUAeI/tGf8AMuf9vX/tKvFJpmmKbgAEUIoHQAf5J/Gva/2jP+Zc/wC3r/2lXjJVYbAblBknOVJH3UHcfU/y96hgVqkgmkt5llhba6HIOM4q1fNYNbQfY1YSgYkycj19BnrjPt+JisLeO5utkz7ECsxPPOBnsD/I0gBL+4SZJQ6s6KFUuitgA5HUfrSpqNzFK0kTRo7EElYlHQ5HGP8A9dWUs7Ga8MUErOjRFg4Y4jYf3iVGV98DrStb2UM16j29wwhA25lAP3gM/d7549qWgyrHqE8W/YIR5h+YGBDn25HTgcVWJyc1pxWNmsG++le3ZpGUKxbKYx1AQ5PPT5agjishYCWYT+YXKZRht6Zzgj36d/UUaARyX1xLB5Tsm3aFJEahiB0BYDJ6Dv2oa9lkjWKZt0QK7goCswHAy2MnjpnNTzWtr9nPkLMJVhSUl3BU5IGMYHr1p19ZQ2sCywPudJPLkUneNwGe6gfhz9aegiC5vvNuY5Yk2iOMIqy7ZOn1XB/KkbUbhpzMTHvYYb9ymGGc8jGDz60X5BuVYKq7okYhFCjJUE8Dik05tuowAqjB3VSHQMCCRngil0BkMsjTSF3CgnsiBR+Q4qSG8mgjMaeWyZziSJXAPtuBxUlmsTTypIrEmNypBGAQpPIIOentUtnbWs1vF5wm82WbygVcBRwOcY9+maB9SJNSuo4ljR0CKjIB5Snhuvb2pgvZxbeQHATG3hRuxnON2M4z2zVuK3ifSFuJ1ysTMpEZCu2duMnB4GTyfUCmmztBpjyB5PtCIrlSSMZIHIK9ORyGP0o0AryX00pUyCJiG3bjCmSfc4yfxpTqNw1yJyYvMAIyIUGc9cjGDTLOOOW8ijn3bHYKdrYPPvg1auLGKxhja5Vnd3PCSADaByOV4IPFPQRANQuFCAGPCJsAMKEYznBGOeeeaX+07r7Q85MRkcYZmhQ8Yx3HpUyAQ+IPLVUZDPsIeNSCN2OmMfkKhsm/0iSMojK0cmdyA4wpIxkcfhSGVncyOXYAEnJ2qAPyHAqZL2aO2MCiLyz1zChJ69yM9zVetIxW81lAGRlnMDsGTaF+UseRjJPGM59OtNiKxvpjbrARF5a9B5CZ7c5xnsKV9RuH3bzGd7h2/cpyR07f5yfWrD2NvHYeaWYyxhGkQPnhu33cA49z9KeNPtWmVP3qLPIogYuD8pAJJAXk8gfU+1K6AqnU7ppEdnQsm4AmJTw2cg8cjk8H1qGe4kuHDSlcgbQFUKAPYAYqa+is4whs5t5OQ65LY9Dkov8ALtUVtOtvIztEkuUZQHAIBIwD+HWmhkNSec32YQAALu3kjqTjAz9OfzNW4DFfa0reSkcbNu8pRxgDOPxx+tPtrWyktRPez+UZHYDbkBcY7BDnr0yKLiM2itOGxtn0xrllmLIrZUOBvIIwyjb90Z5pk0Fu1vAILeZZGiDvIZNyqNxBJG3+tFwM+itK+tbC2O2KZnkjk2vHuOWHc8oAp/Pr7U42unjUfs4Fzhd247l5wM8ce34+1K47GXRWjHaWryrIS6W5h8xt8nK/MV6hTnkf3e9Vr63W1vZIUYsqngnrgjNO4j7H1Pw/o2qXfn6npNjeTKoUSXFskjAemSCccmmS+HtFm1AX82kWEl4GDC4e2QyBhjB3YzkYGPpXP+Nrvw8+swadqcllHqMkQZLi8nWMWce7mRCx4kyONvJIGSAM0mvtpTeLLB457Y6pHcwgwOrG5ZCRgwknCpgsX2qQwDAkEGtF09QfX0OyooooAKKKKAPEf2jP+Zc/7ev/AGlXickrysDIckKFHsAMCvbP2jP+Zc/7ev8A2lXKan4PtI/h29/b6Vc/arW3t7hr+K2lEMwkxuAkaVlcDdztjQKR1PeJaagt7HndOR3jcPGxRlOQynBBrf0vw20Ot6APEcbW2m6q6ukiyITJFu2k/e+XnjnGOtdc3hexl8WaJa23grU8zvItzaXlnPZRSxgD51YzyNlckn5sH5Rj1LCuecNfXbszPdTMWXYxMhOV9PpSfbbrz/O+0zebjbv8w7sema9FfQ7LTPFMFnaeGbbULW60Z5LGWdLgHUX8ksJFTzMqxYY2DkdRyQai0Pw1ZPPqZ1jw1PJqEckJGkWFvLdG3idCSxRblJFOQAdzHaTggZGC39fO39fiN6Hn8V5dQFjDczRlzltjkbj70C8uhB5AuZRERjy952/lXdaZoEH2DXrmHwTf6rFZXoS2+0JcRyIvzbklEbY+QAEgYIJBJx8tPtvDtvqHh+wS08ITebe6feXK3qNcPIDFuMeBnYc4RSduDvGApxmelx9Tgje3TKVa5mKsuwgyHBX0+nNK1/eOFD3U7BSCoMhOCOld5qXg+0T4dvf2+lXP2q2gt5zfxW0ohmEmNwEjSsrgbudsaBSMZPfM8Zab4jGiaFfa/ZaoClo0MlxexSfKfPlKoWYcHbjA9Mdqb0dhLVXOUmu7i5AFxcSyhenmOWx+dNhnmt3L28rxMRjcjFTj8K1PCunrqnia0tXsZtQQlne2gGXkVVLEAblLcDO0MCegIJFd1P4d0r+1rq2sfB7z3KaMt3HYSm4gl87z9nMXmsy5U52b2JAUqV3U7WsFzzVdQvFkaRbucO+NzCQ5bHTJzQL+7ByLqcHcX4kP3j3+tekaN4Q0241qcXWgzO+y1WbS4oJ55LKSTcWJAmjKIAoO6Rm27wCDyaj03whBGY9PufCc9282uS6d9sk+0LIkQGdwCsE3AZbJXGFOQey2/rzS/UL3/ryv+h50L26UELczDII4kPQnJ/Oke7uZIBDJcStEuMIzkqMdOKZLFJbzPDPG0UsbFXR1IZWBwQQehrcuXeL4e6fFHOzRT6jcSSxoxChlSIKGHdgCSDggB+udwAPrYwQSpBBII5BFSC6uFkEizyBwSQwc5BPU596iopiLH9oXnm+b9rn8zG3f5hzj0zmhdQvFkaRbucO+NzCQ5bHTJzVeikA53eRy8jF2Y5LMckmpVvbpAoS5mUKpVcSEYHoPbioKKAJ/tl0YPJNzN5WMbPMO3Hpioi7kLlmOzheenOeKbRQBNPdXFzt+0zyzbenmOWx+dQ0UUAPhlaCdJYzhkYMM1JFeXEBb7NNJAHOSsTlR/OoKKAJ1vbpFVVuZlCgqAJDwD1FM+0TeR5HnSeTnPl7jtz9KjooAnN9dsqK11MVjIKAyHCkdMelKb+8aVZGu5zIowHMhyB9c1XooAnF9dqyFbqYFBtQiQ/KPQegpks0sz75pHkbGNzsSajopgfat/qlhp9zDFf31tbSXDbYUmmVDKeOFBPJ5HT1FPkuYIZooppo45JyViRnAMhAyQo78Anj0rnfFd5EdT/s19NuTFdQBbu+j0+WceTk/ulMaH5jz1wFznk8VX1ldTj8baVcGzW4tTcKkUiGVmgQxsHLBYiq5Zl5LjO1emGIta2B9Tr6KKKACiiigDxH9oz/mXP8At6/9pV4hXt/7Rn/Muf8Ab1/7SrxCoe4BRRRQAUV1ngYb11tUg0qSZbASQNqiRGOOQSxqDukG1ThmABIUkjdkVrEQLLctpUXh061tt/tIuHtDaj5WMnk+YfJyT5e7b0JO3AzRb+v6/EV/6/r8Dz2pVtp2tXuVhkMCOEeUKdqsQSAT0BIBwPY16Z4dOg2up38otdDn099QZS1zd22YY1UZIinVneLLHb5TK52kE5xXM2tjLfeAbnc2io63KTW4a5tIrnYBL5g5YSkZ2YU9eNopX/QpHKVLLbTwRxPPDJGkyb4mdSBIuSMrnqMgjI7g12Gr3c+q+DdPcXehR29vYrHInk2yXRlWZ8IoVPNHylWzwh5JOScy32n25vPDd1rL6GYVCw362N1aAE+c+C6QNnGzZlgOnfNPrbzJ6XOFq/pus3mlQ3cVn9n2XkYimE1rFNuUHOBvU7eQDxjkA9hXd2DR/wBq6e+sQ+FjfbrnKRvY/Z2h8rKCTYfLB8zhTw/XJxissqsniXw1ekeG1nuoA1wk7QizEgdwPOjiOEGzy8jA5980LXQb0VziaKnvP+P+f/U/6xv9R/q+v8P+z6e1d34Ct9Gl0ZotT/s6U3M0kc5vLq0gMCeWNpBlUyNkk/6spgjk9wk7xuD0djg7izubTyvtdvLB50Yli81CvmIejLnqDg8jipP7Ruf7K/s0shtRN54UxqWVyApIbG4AgDIBwcDjgV30KW0fhvRYbyTw9LZxWMy6juuLeS6XMkrIEO4uDhlKiPuTv4qOd9Kt/h6YLm10fzDbW5S4t7q1mmdmdGcBAgnRwpbcXZlG0gDlcPd2Xf8AUSPPoopJpUihRpJHYKiIMliegA7mpb6wvNMvHtNStJ7S5TG+G4jMbrkZGVPI4INdl4igguLK4g2aBGrXkcektYTWyuIjuB81kbcF27CWm+YHHI+anT2Udv4msxd3OjzQXWlLZ7jeW1wiSi0CDJDN5eJAuHOOmQcZqb+RS/r7zg6K9Htpv7I1fTlS58OtcXGiT20rxi0eITjzdqucbFbBjUueG5+Zhk0aG1haz6mL+LRNS1dpIXIiubG3t1jKHcqGaFoSQ20NsGT2JG6qtr/Xe3/B9CbnnFFddHH5Vn4qv7bT9Hhsd4t1ju3+0vCzsxVbaRBtZgFPzdNozXI0rlBRRRTEFFFFABRRRQAUUUUAFFFFABRRRQB9narr2naTdLFfTOjsu87IXkEa5xucqCEXP8TYHB54NI+t2Sav/Zv+kPcjbuEdpK6Ju6bpApVencis/wASy6rNqUdlBpF1daWyBrmW2kg3SnP+qxJIu1SOp5yDgY61DqGn3UniRbiz068hmeSEm+iv8QGNSNwkh3jLY3KPkbqDuHa10BnTUUUUAFFFFAHiP7Rn/Muf9vX/ALSrxCvb/wBoz/mXP+3r/wBpV4hUPcAooooA2fDja5Nevp/h3UJLSW8XY8a3y2qzjoFJZlDH5sBepzwKx2BVip4IODWx4TNpH4osLrUNQgsILWeOdpJ0kYMFdSVAjRjnGeoA4610/hfXbLw2NTtbTV9MFxLNHLHqDtfxRyIA2Y8whJAQSDhl2nn0FHUO/wDX9dDjtL0W81hpvsQgCwKGkkuLmOBFBOB80jKMk9s5qtNazQLuljIQuyLIPmRmXG4Kw4bGR0PcetdxpuvvHZ+IVtfFtrocl7diSKGzN5HEcNlmQLGSqsCAAcHjBAGKp2WvPceB4dLuPFl3p0Vs1wJLJTM/2hGVNiKq/IRuDAhmUDcSM9KXS4dbHG0Vu3d/5ngjT7H+2fO8q6lf+zPsu3yMgfvPN/i3enbFYsTrHKrtGsqqclHzhvY4IP5Gn1sHQfa20t5dJb26hpZDhQWCj8zwKmGl3TXn2VBDJJt3kpOjIoHUlwdoH1NWLfUITqFvJDDbaWYyT50SSSjOONyuzZH0HfoelWZbmzkuHh+02qGa08qS5igaOIvvDA7VQHoAOFHP51vGnDlvfW/ddvv+/QpJGfFpN7LdS26RqHh++WlVVGenzE7ecjHPPakg0q8uVlMUP+qba291U7uflAJG5uDwMmr7z2l0bm1a9ihTEAWd1cq/loVPAUnnORkDpUsV/aT3ZuZLlLfyb97pUZXJlU7TgYUjPy98dar2dPTXv1Xf+vXoFkc/RXXtcXNvoemS3t48Vo1u4a1kikxcDc20A4KnjGMkbRgiobzVIJfDf2NdX33Kwxh3xJ++UFv3ONuBtzncevT6OWHjFO8tV6f5/wBetkzlOWorofFF3K9ro2nvrKamllZJtWOFFS1L/MYg6n94RkZJ6HI7Vz1cpIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH2ZrWtrpMpL2F7cRInmzTQRqUgQdWYswz3OF3NgdOmVudW8nUksbeyuryUgNKYAgWBScBmLso7HgZOAeKo+ILPXLzWIBZw2U+mRKHeCW7eBpZQcjcVjfKDg7eMnrkcVU1LwvLc+Jv7Tht7WVpWgP2iaVlltPLbLeUAhB3Dg8rnvkcC10BnU0UUUAFFFFAHiP7Rn/ADLn/b1/7SrxCvb/ANoz/mXP+3r/ANpV4hUPcAooooAswafe3VpcXVtaTzW9qAZ5o4iyRAnA3EDC57Zq9b+F9Zm3s+m3kEaWpuzJJaSlfKwSG+VThW2kBj8vqQMmp/CuuWeiXN42o2n2yGa3KpCyK6mVWV49wbgruXB68E8VqjxB4fuvFM+oXBvrCyS0a1tLa2tEl2q8LRtnMq7cM5YYznPak/IF5mHoHhnU/El2sWnW0pi8xY5LowyNDAW6b2RW2g+uKU+E9fGjjVl0e9fTiHP2pIGaMBfvMSBwvueOD6Gt7w/4i0LS7vSpLi91dE0a+e4gFtap/pKMVPz5mHlsdu0435GB2rNF/wCH59G+yXz6kWtLi5ltlhhjUTiRUCb2Lny8FASAHyDgEdaGC8/63KereGNT0iBLqW3kmsJEjaO/ihk8h96BwA7KOcHkeoNZ1xY3dpFBLdWs0Mdwm+F5IyolXONyk9RnuK6m+1/R7m0volvdUcSaRbWNuklqgUPEyMc/vTtXMfBGT+8bjj5sTV760u9P0qK1utTmkt7cpMl7IGjibcTthA6Jjse+aAX6f5GWqs7hUBZmOAB3NaEmizRai9pLPAvlRiWSYsdiKQDnOMnqBwDz0zVaxu2sL2O5SNJGjOQr5x0x2IP5GtW71PTZ9QfyllgtZbRLdykPzKVxyFaQ5Hygfe6e/J3hGDjd73/T/Mat1KaaPIbmaOW5t4Y4duZ3LbG3crjAJORz06dcUQaLPMZFeWGF0lMKpIxzJIOqrgHnpycDkc1Ob6xuHnguHuI7ZhCI3SJWc+Wu0ZUsAMgk9TinxatayXDXF35yPHdtdRLHGGDE4+ViWGPujkZ71fLT0+fXz/y27j0M46Zfi2NybK5EAUOZfKbaFPQ5xjFD6ZfxxNK9jcrGqCRnMTABT0YnHQ+tbZube103TLma6kaaGGQLBE8bqSzMcMA+5MgjPynI4qG61XTZtAGno12XjRCkrRLlnBbKsd33Bn5R2OacqVOKeuq/r+v+CgsjIuLC8tIIJrq0ngiuV3wSSRlVlXplSfvD3FV62fEF3aSpp1rYahfX0VraIrtcyExpIw3OsSkAqgJx7kE9MVjVykhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAfZOv6pfaWWmtdNS5tok8yeR7kRnGfuxrtO9/Y7R0GeeIrvVNVtdVji/sy2azluEgSY3hEr5UFmEYjIwPm6sD8pPpTdc0TU9Q1u3u7bUrWO3tlBS0ubNpk83OfM+WVMkcYzkDGRzzWjNZefqFpcvJ8tsHIjC9XYABs+w3DH+17VaBlqiiigAooooA8R/aM/5lz/t6/8AaVeP3Onxw6HY6hFOzm5lmhkjaPb5bR7DwcncCJF5wOcjHc+wftGf8y5/29f+0q8nurqAeEtPsYp45ZjdTXEyBDmIFUVBuI4J2sSFJBG3PIAEsRkUUUUhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH2/J/rDTaKKsAooooAKKKKAPEf2jP+Zc/wC3r/2lXiFFFQ9wCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//2Q==]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhIAAgAOZ/AKyqqZiXlkh1j/Hx8RuL0CV6q4e83D3a/zNVasLi9S22/DaLuy2MwklRVpLG5dXV1Dp2jja2+oWHib7d8Onz+sbFxGqt1DTD/v3+/juRwkiBopXC3MvKykKay2JxeTWUyd/f31Om1ySU2WKNpnm111yEm+Pv9Sus/MTc6neCiPr6+ht5rySKxSSc57za7EOWxSSEvHG656vQ5lyy5BiS3TSb2fX297LT5qDK4jqWysri7yug6VSIprri+k6j1D6azd3s9r27upDN9CuRzfb6/CGh8EiLsS6FtiN/s9bp9FhgZNzu+imEuDlGTiau+mSo0SyJvk6q37azsnSHka+urVGdyO7u7kOczrDW7Cmk8z6AjPn7/CSHwEOk2jBge0ag0s/p+06ezf/79I+QkKvY9FOOsTKSx////ByDwCRqkyV0ojpngPjy7yiJwebm5sG/vkii2T6k4nx9flqw4nfE9rvY6T6Gr87l9KGfnyyOx2+Ej196iaWko0e29////////yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkRCMzA3NzIxOUE3MTFFMTgyMjFDMzU0MzJGQzVDRTIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkRCMzA3NzMxOUE3MTFFMTgyMjFDMzU0MzJGQzVDRTIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyREIzMDc3MDE5QTcxMUUxODIyMUMzNTQzMkZDNUNFMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyREIzMDc3MTE5QTcxMUUxODIyMUMzNTQzMkZDNUNFMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAH8ALAAAAAAgACAAAAf/gH+Cg4SFhoeIiYqLjI2Oj5CRkpOOVhVUfHxUb26UghgcAVMjpCNTAW82lBUSPCFzMzNzIWUpUiqSDxJGUSE+vz4hUS8pFZE2eBpdVz8fOT9X0V1GY1aLGG4cUtspZjnOBgYdH+TkexwquIcDQWN6JTwlGkMMXBtibFVcDPxDAgFUALwBUcgKgBRGrnxZeOVFmxcDBjxpww8KFAYLNGiINybIAEEqpKTIcKXDi5MdxtU5g2JfPS5tcsh89sNOCgCqQEjQkCODzwwy82ywcaZOHhZmcKAgkecJChkvFuSw+UZFkD0Lsmb1mSeEiRtnsBAY4mKLHx0+KJjwY4HJAjP//9zgEQDlyBEmTLigyXPHAQk/JmrEwOAgiQEsFAxgqILEbgE5HMasYYJkwY0bJCxg8TMhiZ8lNRL4iVIDDhEbOp68wHEESQEPQQJ4YbJigx8gLohwRuyHjBA/GGbEueMnSY4wJjascK0kCBUESFag8CPDwBYHNGiI/gzGDwUiEyhgALJlAxIkTNQo4fBASZoVJDAAlyGiRREhFHpE6NMDDJ0WMdwxwRNowIAEF17I4YYKeDRRAAwW4GBBfVmccEIETiiggBMcnlBECyIQwAIMXKjRwBuCDCCBgwQQQEMLFWqowAU0XiDjCVmAKMIQajQRgDp/2BBAE17AsMMJM15wwDGSTC5JowIn7NCGF03wAeQgHMjRAAJeQOClFmCGCaaXEHiBQAOQeaLmmmy26eabcAYCADs=]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/functions.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[alF1ZXJ5KGZ1bmN0aW9uKCkgew0KCWpRdWVyeSgiLnBhZ2VtY29udGFpbmVyLC5wYWdlZXJyb3Jjb250YWluZXIiKS5lYWNoKGZ1bmN0aW9uKCkgew0KCQl2YXIgYyA9IGpRdWVyeSh0aGlzKTsNCgkJd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQoJCQljLmhpZGUoKTsNCgkJfSwgOTAwMCk7DQoJfSk7DQp9KTsNCg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRsYW5nWydmcmllbmRseW5hbWUnXT0iQWNlRWRpdG9yIjsNCiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAiQWNlRWRpdG9yIGlzIGEgU3ludGF4aGlnaGxpZ2h0ZXIgbW9kdWxlIHVzaW5nIDxzdHJvbmc+QWNlPC9zdHJvbmc+IGEgc3RhbmRhbG9uZSBjb2RlIGVkaXRvciB3cml0dGVuIGluIEphdmFTY3JpcHQuIjsNCg0KDQovKiAtLS0gVGFicyAtLS0gKi8NCiRsYW5nWydzZXR0aW5nc190YWInXSA9ICJQcmVmZXJlbmNlcyI7DQokbGFuZ1snZnJvbnRlbmRzZXR0aW5nc190YWInXSA9ICJGcm9udGVuZCBQcmVmZXJlbmNlcyI7DQokbGFuZ1snZnJvbnRlbmRfaGVhZF9zZXR0aW5ncyddID0gIkZyb250ZW5kIEhlYWQgUHJlZmVyZW5jZXMiOw0KJGxhbmdbJ2Zyb250ZW5kX3N5bnRheGFyZWFfc2V0dGluZ3MnXSA9ICJGcm9udGVuZCBTeW50YXhhcmVhIFByZWZlcmVuY2VzIjsNCiRsYW5nWydoZWFkX2Rlc2NyaXB0aW9uJ10gPSAiVGhlc2UgcHJlZmVyZW5jZXMgYXJlIHVzZWQgZm9yIGRlZmF1bHQgc2V0dGluZ3Mgb2YgQWNlIHNjcmlwdHMgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gcGFnZSA8Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+IHdoZW4gY2FsbGluZyA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0naGVhZCd9PC9jb2RlPiBmcm9tIFBhZ2UgU3BlY2lmaWMgTWV0YWRhdGEgb3IgVGVtcGxhdGUuIjsNCiRsYW5nWydjb250ZW50X2Rlc2NyaXB0aW9uJ10gPSAiVGhlc2UgcHJlZmVyZW5jZXMgYXJlIHVzZWQgZm9yIGRlZmF1bHQgc2V0dGluZ3Mgb2YgU3ludGF4aGlnaGxpZ2h0aW5nIGFyZWEgd2hlbiBjYWxsaW5nIDxjb2RlPntBY2VFZGl0b3IgZGl2aWQ9J2VkaXRvcid9PC9jb2RlPiB0YWcgd2l0aGluIGEgUGFnZS4iOw0KJGxhbmdbJ3N5bnRheGFyZWFkZXNjcmlwdGlvbiddID0gIlRoZXNlIHByZWZlcmVuY2VzIGFyZSB1c2VkIGZvciBkZWZhdWx0IHNldHRpbmdzIG9mIEFjZSBiZWhhdmlvciB3aGVuIGNhbGxpbmcgPGNvZGU+e0FjZUVkaXRvciBkaXZpZD0nZm9vJ308L2NvZGU+IGZyb20gYSBQYWdlIG9yIFRlbXBsYXRlIjsNCg0KLyogLS0tIFNldHRpbmdzIGxhYmVscyAtLS0gKi8NCiRsYW5nWydleGFtcGxlX2RvY3VtZW50J10gPSAiRG9jdW1lbnQiOw0KJGxhbmdbJ3dpZHRoX3RpdGxlJ10gPSAiRWRpdG9yIHdpZHRoIChpbiBlbSkiOw0KJGxhbmdbJ2hlaWdodF90aXRsZSddID0gIkVkaXRvciBoZWlnaHQgKGluIGVtKSI7DQokbGFuZ1snZW5hYmxlX2llJ10gPSAiRW5hYmxlIEludGVybmV0IEV4cGxvcmVyIjsNCiRsYW5nWydlbmFibGVfaWVkZXNjcmlwdGlvbiddID0gIkFjZSBTeW50YXhoaWdobGlnaHRlciBkb2VzIG5vdCBiZWhhdmUgcHJvcGVybHkgd2hlbiB1c2luZyBJbnRlcm5ldCBFeHBsb3Jlci4gRW5hYmxlIHRoaXMgYXQgeW91ciBvd24gcmlzayEiOw0KJGxhbmdbJ2Zyb250ZW5kX3dpZHRoX3RpdGxlJ10gPSAiRnJvbnRlbmQgU3ludGF4YXJlYSB3aWR0aCAoaW4gcHgpIjsNCiRsYW5nWydmcm9udGVuZF9oZWlnaHRfdGl0bGUnXSA9ICJGcm9udGVuZCBTeW50YXhhcmVhIGhlaWdodCAoaW4gcHgpIjsNCiRsYW5nWydzeW50YXhfbW9kZSddID0gIk1vZGUiOw0KJGxhbmdbJ3RoZW1lcyddID0gIlRoZW1lIjsNCiRsYW5nWydmb250X3NpemUnXSA9ICJGb250IFNpemUiOw0KJGxhbmdbJ2Z1bGxfbGluZSddID0gIkZ1bGwgTGluZSBTZWxlY3Rpb24iOw0KJGxhbmdbJ2hpZ2hsaWdodF9hY3RpdmUnXSA9ICJIaWdobGlnaHQgQWN0aXZlIExpbmUiOw0KJGxhbmdbJ3Nob3dfaW52aXNpYmxlcyddID0gIlNob3cgSW52aXNpYmxlcyI7DQokbGFuZ1sncGVyc2lzdGVudF9oc2Nyb2xsJ10gPSAiUGVyc2l0ZW50IEhTY3JvbGwiOw0KJGxhbmdbJ2tleV9iaW5kaW5nJ10gPSAiS2V5IEJpbmRpbmciOw0KJGxhbmdbJ3NvZnRfd3JhcCddID0gIlNvZnQgV3JhcCI7DQokbGFuZ1snc2hvd19ndXR0ZXInXSA9ICJTaG93IEd1dHRlciI7DQokbGFuZ1sncHJpbnRfbWFyZ2luJ10gPSAiU2hvdyBQcmludCBNYXJnaW4iOw0KJGxhbmdbJ3NvZnRfdGFiJ10gPSAiVXNlIFNvZnQgVGFiIjsNCiRsYW5nWydoaWdobGlnaHRfc2VsZWN0ZWQnXSA9ICJIaWdobGlnaHQgc2VsZWN0ZWQgd29yZCI7DQokbGFuZ1snZW5hYmxlX2JlaGF2aW9ycyddID0gIkVuYWJsZSBCZWhhdmlvcnMiOw0KJGxhbmdbJ3Rlc3RhcmVhdGV4dCddID0gIlByZXZpZXciOw0KDQovKiAtLS0gVG9vbGJhciAtLS0gKi8NCiRsYW5nWydvbiddID0gJ09uJzsNCiRsYW5nWydvZmYnXSA9ICdPZmYnOw0KJGxhbmdbJ2xpbmUnXSA9ICdMaW5lJzsNCiRsYW5nWydjb2x1bW4nXSA9ICdDb2x1bW4nOw0KJGxhbmdbJ2N1cnJlbnRfbGluZSddID0gJ0N1cnJlbnQgbGluZSc7DQokbGFuZ1sndG90YWxfbGluZXMnXSA9ICdUb3RhbCBsaW5lcyc7DQokbGFuZ1snZ29fbGluZSddID0gJ0dvIHRvIGxpbmUnOw0KJGxhbmdbJ2tleWJpbmRpbmdzJ10gPSAnS2V5YmluZGluZ3MnOw0KJGxhbmdbJ2FjZSddID0gJ0FjZSc7DQokbGFuZ1sndmltJ10gPSAnVmltJzsNCiRsYW5nWydlbWFjcyddID0gJ0VNYWNzJzsNCg0KLyogLS0tIFNlbGVjdCBvcHRpb25zIC0tLSAqLw0KDQovKiBsYW5ndWFnZXMgKi8NCiRsYW5nWydqcyddID0gIkphdmFTY3JpcHQiOw0KJGxhbmdbJ3BsYWluJ10gPSAiUGxhaW4gVGV4dCI7DQokbGFuZ1snc3ZnJ10gPSAiU1ZHIjsNCiRsYW5nWydodG1sJ10gPSAiSFRNTCI7DQokbGFuZ1snY3NzJ10gPSAiQ1NTIjsNCiRsYW5nWydzY3NzJ10gPSAiU0NTUyI7DQokbGFuZ1snY29mZmVlJ10gPSAiQ29mZmVlU2NyaXB0IjsNCiRsYW5nWydqc29uJ10gPSAiSlNPTiI7DQokbGFuZ1sncHl0aG9uJ10gPSAiUHl0aG9uIjsNCiRsYW5nWydydWJ5J10gPSAiUnVieSI7DQokbGFuZ1sncGVybCddID0gIlBlcmwiOw0KJGxhbmdbJ3BocCddID0gIlBIUCI7DQokbGFuZ1snamF2YSddID0gIkphdmEiOw0KJGxhbmdbJ2NzaGFycCddID0gIkMjIjsNCiRsYW5nWydjX2NwcCddID0gIkMrKyI7DQokbGFuZ1snY2xvanVyZSddID0gIkNsb2p1cmUiOw0KJGxhbmdbJ2NvbGRmdXNpb24nXSA9ICJDb2xkZnVzaW9uIjsNCiRsYW5nWydoYXhlJ10gPSAiSGF4ZSI7DQokbGFuZ1snbGF0ZXgnXSA9ICJMYXRleCI7DQokbGFuZ1snbHVhJ10gPSAiTHVhIjsNCiRsYW5nWydtYXJrZG93biddID0gIk1hcmtkb3duIjsNCiRsYW5nWydwb3dlcnNoZWxsJ10gPSAiUG93ZXJTaGVsbCI7DQokbGFuZ1snc3FsJ10gPSAiU1FMIjsNCiRsYW5nWydwZ3NxbCddID0gInBnU1FMIjsNCiRsYW5nWydvY2FtbCddID0gIk9DYW1sIjsNCiRsYW5nWyd0ZXh0aWxlJ10gPSAiVGV4dGlsZSI7DQokbGFuZ1snZ3Jvb3Z5J10gPSAiR3Jvb3Z5IjsNCiRsYW5nWydzY2FsYSddID0gIlNjYWxhIjsNCiRsYW5nWydkaWZmJ10gPSAiRGlmZiI7DQokbGFuZ1snZ29sYW5nJ10gPSAiR08iOw0KJGxhbmdbJ3lhbWwnXSA9ICJZQU1MIjsNCiRsYW5nWydsZXNzJ10gPSAiTEVTUyI7DQokbGFuZ1snc2NhZCddID0gIk9wZW5TQ0FEIjsNCiRsYW5nWydzaCddID0gIlNIIjsNCiRsYW5nWyd4cXVlcnknXSA9ICJYUXVlcnkiOw0KJGxhbmdbJ2xpcXVpZCddID0gIkxpcXVpZCI7DQokbGFuZ1snanN4J10gPSAiSlNYIjsNCg0KLyogdGhlbWVzICovDQokbGFuZ1snY2xvdWRzJ10gPSAiQ2xvdWRzIjsgDQokbGFuZ1snY2hyb21lJ10gPSAiQ2hyb21lIjsgDQokbGFuZ1snY2xvdWRzX21pZG5pZ2h0J10gPSAiQ2xvdWRzIE1pZG5pZ2h0IjsgDQokbGFuZ1snY29iYWx0J10gPSAiQ29iYWx0IjsgDQokbGFuZ1snY3JpbXNvbl9lZGl0b3InXSA9ICJDcmltc29uIEVkaXRvciI7DQokbGFuZ1snZGF3biddID0gIkRhd24iOw0KJGxhbmdbJ2RyZWFtd2VhdmVyJ10gPSAiRHJlYW13ZWF2ZXIiOyANCiRsYW5nWydlY2xpcHNlJ10gPSAiRWNsaXBzZSI7DQokbGFuZ1snaWRsZV9maW5nZXJzJ10gPSAiaWRsZUZpbmdlcnMiOw0KJGxhbmdbJ2tyX3RoZW1lJ10gPSAia3JUaGVtZSI7DQokbGFuZ1snbWVyYml2b3JlJ10gPSAiTWVyYml2b3JlIjsNCiRsYW5nWydtZXJiaXZvcmVfc29mdCddID0gIk1lcmJpdm9yZSBTb2Z0IjsNCiRsYW5nWydtb25vX2luZHVzdHJpYWwnXSA9ICJNb25vIEluZHVzdHJpYWwiOw0KJGxhbmdbJ21vbm9rYWknXSA9ICJNb25va2FpIjsNCiRsYW5nWydwYXN0ZWxfb25fZGFyayddID0gIlBhc3RlbCBvbiBkYXJrIjsNCiRsYW5nWydzb2xhcml6ZWRfZGFyayddID0gIlNvbGFyaXplZCBEYXJrIjsNCiRsYW5nWydzb2xhcml6ZWRfbGlnaHQnXSA9ICJTb2xhcml6ZWQgTGlnaHQiOw0KJGxhbmdbJ3RleHRtYXRlJ10gPSAiVGV4dE1hdGUiOw0KJGxhbmdbJ3RvbW9ycm93J10gPSAiVG9tb3Jyb3ciOw0KJGxhbmdbJ3RvbW9ycm93X25pZ2h0J10gPSAiVG9tb3Jyb3cgTmlnaHQiOw0KJGxhbmdbJ3RvbW9ycm93X25pZ2h0X2JyaWdodCddID0gIlRvbW9ycm93IE5pZ2h0IEJyaWdodCI7DQokbGFuZ1sndG9tb3Jyb3dfbmlnaHRfYmx1ZSddID0gIlRvbW9ycm93IE5pZ2h0IEJsdWUiOw0KJGxhbmdbJ3RvbW9ycm93X25pZ2h0X2VpZ2h0aWVzJ10gPSAiVG9tb3Jyb3cgTmlnaHQgRWlnaHRpZXMiOw0KJGxhbmdbJ3R3aWxpZ2h0J10gPSAiVHdpbGlnaHQiOw0KJGxhbmdbJ3ZpYnJhbnRfaW5rJ10gPSAiVmlicmFudCBJbmsiOw0KDQovKiBrZXkgYmluZGluZyAqLw0KJGxhbmdbJ2FjZSddID0gIkFjZSI7IA0KJGxhbmdbJ3ZpbSddID0gIlZpbSI7IA0KJGxhbmdbJ2VtYWNzJ10gPSAiRU1hY3MiOw0KJGxhbmdbJ2N1c3RvbSddID0gIkN1c3RvbSI7DQoNCi8qIFNvZnQgd3JhcCAqLw0KJGxhbmdbJ29mZiddID0gIk9mZiI7IA0KJGxhbmdbJzQwJ10gPSAiNDAgQ2hhcnMiOyANCiRsYW5nWyc4MCddID0gIjgwIENoYXJzIjsgDQokbGFuZ1snMTAwJ10gPSAiMTAwIENoYXJzIjsgDQokbGFuZ1snMTQwJ10gPSAiMTQwIENoYXJzIjsgDQoNCi8qIC0tLSBDb21tb24gLS0tICovDQokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAiU2F2ZSBQcmVmZXJlbmNlcyI7DQokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gIllvdXIgQWNlRWRpdG9yIHNldHRpbmdzIGhhdmUgYmVlbiBzYXZlZCI7DQokbGFuZ1snZnJvbnRlbmRzZXR0aW5nc3NhdmVkJ10gPSAiWW91ciBBY2VFZGl0b3IgRnJvbnRlbmQgc2V0dGluZ3MgaGF2ZSBiZWVuIHNhdmVkIjsNCiRsYW5nWydwb3N0aW5zdGFsbCddID0gIkFjZUVkaXRvciBTdWNjZXNzZnVsbHkgSW5zdGFsbGVkISBTZXQgXCJNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlc1wiLCBcIk1vZGlmeSBUZW1wbGF0ZXNcIiBvciBcIkFjZUVkaXRvciBVc2VyIFByZWZlcmVuY2VcIiBwZXJtaXNzaW9ucyB0byB1c2UgdGhpcyBtb2R1bGUhIjsNCiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAiQWNlRWRpdG9yIFN1Y2Nlc3NmdWxseSBVbmluc3RhbGxlZCI7DQokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gIlJlYWxseT8gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCBBY2VFZGl0b3I/IFRoaW5rIGFnYWluISI7DQokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICJNaXNzaW5nIFBlcm1pc3Npb24hLiBTZXQgXCJNb2RpZnkgVGVtcGxhdGVzXCIgb3IgXCJBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlXCIgcGVybWlzc2lvbnMgdG8gdXNlIHRoaXMgbW9kdWxlLiI7DQoNCi8qIC0tLSBIZWxwIC0tLSAqLw0KJGxhbmdbJ2hlbHBfcGFyYW1fYWN0aW9uJ10gPSAiaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGFjdGlvbiBvZiBNb2R1bGUgdGFnLiBQb3NzaWJsZSB2YWx1ZXMgYXJlICdkZWZhdWx0JyBhbmQgJ2hlYWQnLiBCb3RoIGFyZSBuZWVkZWQgZm9yIGNvcnJlY3QgRnJvbnRlbmQgU3ludGF4aGlnaGxpZ2h0aW5nIGZ1bmN0aW9uLiA8YnIgLz5Qb3NzaWJsZSB2YWx1ZXMgYXJlOg0KPHVsPg0KCTxsaT5oZWFkPC9saT4NCgk8bGk+ZGVmYXVsdDwvbGk+DQo8L3VsPiI7DQokbGFuZ1snaGVscF9wYXJhbV9tb2RlcyddID0gImlzIHVzZWQgd2l0aCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0naGVhZCd9PC9jb2RlPi4gWW91IGNhbiBpbmNsdWRlIG11bHRpcGxlIGNvbW1hIHNlcGFyYXRlZCAnbW9kZXMnIHRoYXQgeW91IHdpbGwgYmUgdXNpbmcgb24geW91ciB3ZWJzaXRlLiBUaGlzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB5b3VyICZsdDtoZWFkJmd0OyBvZiBUZW1wbGF0ZSBvciBQYWdlIHNwZWNpZmljIE1ldGFkYXRhLiBUaGlzIHdpbGwgb3ZlcnJpZGUgeW91IFByZWZlcmVuY2VzIHNlbGVjdGVkIGluIE1vZHVsZSBBZG1pbiBhcmVhLiA8YnIgLz5Qb3NzaWJsZSB2YWx1ZXMgYXJlOg0KPHVsPg0KICAgIDxsaT5qYXZhc2NyaXB0PC9saT4NCiAgICA8bGk+cGxhaW48L2xpPg0KICAgIDxsaT5zdmc8L2xpPg0KICAgIDxsaT5odG1sPC9saT4NCiAgICA8bGk+Y3NzPC9saT4NCiAgICA8bGk+c2NzczwvbGk+DQogICAgPGxpPmNvZmZlZTwvbGk+DQogICAgPGxpPmpzb248L2xpPg0KICAgIDxsaT5weXRob248L2xpPg0KICAgIDxsaT5ydWJ5PC9saT4NCiAgICA8bGk+cGVybDwvbGk+DQogICAgPGxpPnBocDwvbGk+DQogICAgPGxpPmphdmE8L2xpPg0KICAgIDxsaT5jc2hhcnA8L2xpPg0KICAgIDxsaT5jX2NwcDwvbGk+DQogICAgPGxpPmNsb2p1cmU8L2xpPg0KICAgIDxsaT5jb2xkZnVzaW9uPC9saT4NCiAgICA8bGk+ZGlmZjwvbGk+DQogICAgPGxpPmhheGU8L2xpPg0KICAgIDxsaT5sYXRleDwvbGk+DQogICAgPGxpPmx1YTwvbGk+DQogICAgPGxpPm1hcmtkb3duPC9saT4NCiAgICA8bGk+cG93ZXJzaGVsbDwvbGk+DQogICAgPGxpPnNxbDwvbGk+DQogICAgPGxpPnBnc3FsPC9saT4NCiAgICA8bGk+b2NhbWw8L2xpPg0KICAgIDxsaT50ZXh0aWxlPC9saT4NCiAgICA8bGk+Z3Jvb3Z5PC9saT4NCiAgICA8bGk+Z29sYW5nPC9saT4NCiAgICA8bGk+anN4PC9saT4NCiAgICA8bGk+bGVzczwvbGk+DQogICAgPGxpPmxpcXVpZDwvbGk+DQogICAgPGxpPnNjYWQ8L2xpPg0KICAgIDxsaT5zaDwvbGk+DQogICAgPGxpPnhxdWVyeTwvbGk+DQogICAgPGxpPnlhbWw8L2xpPg0KICAgIDxsaT5zY2FsYTwvbGk+DQo8L3VsPiI7DQokbGFuZ1snaGVscF9wYXJhbV90aGVtZXMnXSA9ICJpcyB1c2VkIHdpdGggPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249J2hlYWQnfTwvY29kZT4uIFlvdSBjYW4gaW5jbHVkZSBtdWx0aXBsZSBjb21tYSBzZXBhcmF0ZWQgJ3RoZW1lcycgdGhhdCB5b3Ugd2lsbCBiZSB1c2luZyBvbiB5b3VyIHdlYnNpdGUuIFRoaXMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHlvdXIgJmx0O2hlYWQmZ3Q7IG9mIFRlbXBsYXRlIG9yIFBhZ2Ugc3BlY2lmaWMgTWV0YWRhdGEuIFRoaXMgd2lsbCBvdmVycmlkZSB5b3UgUHJlZmVyZW5jZXMgc2VsZWN0ZWQgaW4gTW9kdWxlIEFkbWluIGFyZWEuIDxiciAvPlBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQogICAgPGxpPmNocm9tZTwvbGk+DQogICAgPGxpPmNsb3VkczwvbGk+DQogICAgPGxpPmNsb3Vkc19taWRuaWdodDwvbGk+DQogICAgPGxpPmNvYmFsdDwvbGk+DQogICAgPGxpPmNyaW1zb25fZWRpdG9yPC9saT4NCiAgICA8bGk+ZGF3bjwvbGk+DQogICAgPGxpPmRyZWFtd2VhdmVyPC9saT4NCiAgICA8bGk+ZWNsaXBzZTwvbGk+DQogICAgPGxpPmlkbGVfZmluZ2Vycw0KICAgIDxsaT5rcl90aGVtZTwvbGk+DQogICAgPGxpPm1lcmJpdm9yZTwvbGk+DQogICAgPGxpPm1lcmJpdm9yZV9zb2Z0PC9saT4NCiAgICA8bGk+bW9ub19pbmR1c3RyaWFsPC9saT4NCiAgICA8bGk+bW9ub2thaTwvbGk+DQogICAgPGxpPnBhc3RlbF9vbl9kYXJrPC9saT4NCiAgICA8bGk+c29sYXJpemVkX2Rhcms8L2xpPg0KICAgIDxsaT5zb2xhcml6ZWRfbGlnaHQ8L2xpPg0KICAgIDxsaT50ZXh0bWF0ZTwvbGk+DQogICAgPGxpPnRvbW9ycm93PC9saT4NCiAgICA8bGk+dG9tb3Jyb3dfbmlnaHQ8L2xpPg0KICAgIDxsaT50b21vcnJvd19uaWdodF9ibHVlPC9saT4NCiAgICA8bGk+dG9tb3Jyb3dfbmlnaHRfYnJpZ2h0PC9saT4NCiAgICA8bGk+dG9tb3Jyb3dfbmlnaHRfZWlnaHRpZXM8L2xpPg0KICAgIDxsaT50d2lsaWdodDwvbGk+DQogICAgPGxpPnZpYnJhbnRfaW5rPC9saT4NCjwvdWw+IjsNCiRsYW5nWydoZWxwX3BhcmFtX21vZGUnXSA9ICJpcyB1c2VkIHdpdGhpbiBhIHBhZ2Ugd2l0aCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0nZGVmYXVsdCd9PC9jb2RlPiBtb2R1bGUgdGFnLiBUaGlzIHNwZWNpZmllcyBTeW50YXhoaWdobGlnaHRlciBtb2RlIGZvciBzcGVjaWZpYyBjb2RlIGFyZWEuIDxiciAvPlBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQogICAgPGxpPmphdmFzY3JpcHQ8L2xpPg0KICAgIDxsaT5wbGFpbjwvbGk+DQogICAgPGxpPnN2ZzwvbGk+DQogICAgPGxpPmh0bWw8L2xpPg0KICAgIDxsaT5jc3M8L2xpPg0KICAgIDxsaT5zY3NzPC9saT4NCiAgICA8bGk+Y29mZmVlPC9saT4NCiAgICA8bGk+anNvbjwvbGk+DQogICAgPGxpPnB5dGhvbjwvbGk+DQogICAgPGxpPnJ1Ynk8L2xpPg0KICAgIDxsaT5wZXJsPC9saT4NCiAgICA8bGk+cGhwPC9saT4NCiAgICA8bGk+amF2YTwvbGk+DQogICAgPGxpPmNzaGFycDwvbGk+DQogICAgPGxpPmNfY3BwPC9saT4NCiAgICA8bGk+Y2xvanVyZTwvbGk+DQogICAgPGxpPmNvbGRmdXNpb248L2xpPg0KICAgIDxsaT5kaWZmPC9saT4NCiAgICA8bGk+aGF4ZTwvbGk+DQogICAgPGxpPmxhdGV4PC9saT4NCiAgICA8bGk+bHVhPC9saT4NCiAgICA8bGk+bWFya2Rvd248L2xpPg0KICAgIDxsaT5wb3dlcnNoZWxsPC9saT4NCiAgICA8bGk+c3FsPC9saT4NCiAgICA8bGk+cGdzcWw8L2xpPg0KICAgIDxsaT5vY2FtbDwvbGk+DQogICAgPGxpPnRleHRpbGU8L2xpPg0KICAgIDxsaT5ncm9vdnk8L2xpPg0KICAgIDxsaT5nb2xhbmc8L2xpPg0KICAgIDxsaT5qc3g8L2xpPg0KICAgIDxsaT5sZXNzPC9saT4NCiAgICA8bGk+bGlxdWlkPC9saT4NCiAgICA8bGk+c2NhZDwvbGk+DQogICAgPGxpPnNoPC9saT4NCiAgICA8bGk+eHF1ZXJ5PC9saT4NCiAgICA8bGk+eWFtbDwvbGk+DQogICAgPGxpPnNjYWxhPC9saT4NCjwvdWw+IjsNCiRsYW5nWydoZWxwX3BhcmFtX3RoZW1lJ10gPSAiaXMgdXNlZCB3aXRoaW4gYSBwYWdlIHdpdGggPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249J2RlZmF1bHQnfTwvY29kZT4gbW9kdWxlIHRhZy4gVGhpcyBzcGVjaWZpZXMgU3ludGF4aGlnaGxpZ2h0ZXIgdGhlbWUgZm9yIHNwZWNpZmljIGNvZGUgYXJlYS4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCgk8bGk+Y2xvdWRzPC9saT4gDQoJPGxpPmNsb3Vkc19taWRuaWdodDwvbGk+IA0KCTxsaT5jb2JhbHQ8L2xpPiANCgk8bGk+Y3JpbXNvbl9lZGl0b3I8L2xpPg0KCTxsaT5kYXduPC9saT4NCgk8bGk+ZWNsaXBzZTwvbGk+DQoJPGxpPmlkbGVfZmluZ2VyczwvbGk+DQoJPGxpPmtyX3RoZW1lPC9saT4NCgk8bGk+bWVyYml2b3JlPC9saT4NCgk8bGk+bWVyYml2b3JlX3NvZnQ8L2xpPg0KCTxsaT5tb25vX2luZHVzdHJpYWw8L2xpPg0KCTxsaT5tb25va2FpPC9saT4NCgk8bGk+cGFzdGVsX29uX2Rhcms8L2xpPg0KCTxsaT5zb2xhcml6ZWRfZGFyazwvbGk+DQoJPGxpPnNvbGFyaXplZF9saWdodDwvbGk+DQoJPGxpPnRleHRtYXRlPC9saT4NCgk8bGk+dHdpbGlnaHQ8L2xpPg0KCTxsaT52aWJyYW50X2luazwvbGk+DQo8L3VsPiI7DQokbGFuZ1snaGVscF9wYXJhbV93aWR0aCddID0gInNwZWNpZmllcyB3aWR0aCBvZiBTeW50YXhoaWdobGlnaHRlciBhcmVhIGluIHBpeGVsLiI7DQokbGFuZ1snaGVscF9wYXJhbV9oZWlnaHQnXSA9ICJzcGVjaWZpZXMgaGVpZ2h0IG9mIFN5bnRheGhpZ2hsaWdodGVyIGFyZWEgaW4gcGl4ZWwuIjsNCiRsYW5nWydoZWxwX3BhcmFtX2RpdmlkJ10gPSAiaWQgb2YgdGhlIGVsZW1lbnQgY29udGFpbmluZyB5b3VyIGNvZGUuIFVzZSB1bmlxdWUgaWQgZm9yIGVhY2ggY29kZSBjaHVuY2suIjsNCiRsYW5nWydoZWxwX2dlbmVyYWxfdGl0bGUnXSA9ICJHZW5lcmFsIjsNCiRsYW5nWydoZWxwX2dlbmVyYWxfdGV4dCddID0gIg0KPGgzPldoYXQgZG9lcyB0aGlzIG1vZHVsZSBkbz88L2gzPg0KPHA+QWNlRWRpdG9yIGlzIGEgU3ludGF4aGlnaGxpZ2h0ZXIgbW9kdWxlIHVzaW5nIDxzdHJvbmc+QWNlPC9zdHJvbmc+IGEgc3RhbmRhbG9uZSBjb2RlIGVkaXRvciB3cml0dGVuIGluIEphdmFTY3JpcHQuPGJyIC8+IA0KR29hbCBvZiBBY2UgY29kZSBlZGl0b3IgZ3JvdXAgaXMgdG8gY3JlYXRlIGEgd2ViIGJhc2VkIGNvZGUgZWRpdG9yIHRoYXQgbWF0Y2hlcyBhbmQgZXh0ZW5kcyB0aGUgZmVhdHVyZXMsIHVzYWJpbGl0eSBhbmQgcGVyZm9ybWFuY2Ugb2YgZXhpc3RpbmcgbmF0aXZlIGVkaXRvcnMgc3VjaCBhcyBUZXh0TWF0ZSwgVmltIG9yIEVjbGlwc2UuPGJyIC8+DQpJdCBjYW4gYmUgZWFzaWx5IGVtYmVkZGVkIGluIGFueSB3ZWIgcGFnZSBhbmQgSmF2YVNjcmlwdCBhcHBsaWNhdGlvbi48YnIgLz4gDQpBY2UgaXMgZGV2ZWxvcGVkIGFzIHRoZSBwcmltYXJ5IGVkaXRvciBmb3IgPGEgaHJlZj1cImh0dHA6Ly93d3cuY2xvdWQ5aWRlLmNvbVwiPkNsb3VkOSBJREU8L2E+IGFuZCB0aGUgc3VjY2Vzc29yIG9mIHRoZSBNb3ppbGxhIFNreXdyaXRlciAoQmVzcGluKSBQcm9qZWN0LjwvcD4NCjxoMz5BY2UgaXMgaG9zdGVkIG9uIEdpdEh1YjwvaDM+DQo8cD5UaGUgQWNlIHNvdXJjZSBjb2RlIGlzIGhvc3RlZCBvbiBHaXRIdWIuIEl0IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNb3ppbGxhIHRyaS1saWNlbnNlIChNUEwvR1BML0xHUEwpLjxiciAvPg0KVGhpcyBpcyB0aGUgc2FtZSBsaWNlbnNlIHVzZWQgYnkgRmlyZWZveC4gVGhpcyBsaWNlbnNlIGlzIGZyaWVuZGx5IHRvIGFsbCBraW5kcyBvZiBwcm9qZWN0cywgd2hldGhlciBvcGVuIHNvdXJjZSBvciBub3QuPGJyIC8+DQogVGFrZSBjaGFyZ2Ugb2YgeW91ciBlZGl0b3IgYW5kIGFkZCB5b3VyIGZhdm9yaXRlIGxhbmd1YWdlIGhpZ2hsaWdodGluZyBhbmQga2V5YmluZGluZ3MhPC9wPg0KPGgzPlVzaW5nIEFjZUVkaXRvciBNb2R1bGU8L2gzPg0KPHA+VXNpbmcgQWNlRWRpdG9yIE1vZHVsZSBpcyBzaW1wbGUuPGJyIC8+DQpBZnRlciBBY2VFZGl0b3Igd2FzIGluc3RhbGxlZCBnbyB0byBcIk15IFByZWZlcmVuY2VzICZyYXF1bzsgVXNlciBQcmVmZXJlbmNlc1wiIGFuZCBjaG9vc2UgQWNlRWRpdG9yIGFzIHlvdXIgU3ludGF4aGlnaGxpZ2h0ZXIgb2YgY2hvaWNlIGZyb20gXCJTZWxlY3Qgc3ludGF4IGhpZ2hsaWdodGVyIHRvIHVzZTpcIiBEcm9wZG93bi48YnIgLz4NCk1ha2Ugc3VyZSB5b3UgaGF2ZSAnTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnIFBlcm1zaXNzaW9uLjwvcD4NCjxoMz5TZXR0aW5nczwvaDM+DQo8cD5Zb3UgY2FuIGNoYW5nZSBkZWZhdWx0IFNldHRpbmdzIGFuZCBUaGVtZXMgaW4gXCJNeSBQcmVmZXJlbmNlcyAmcmFxdW87IEFjZUVkaXRvclwiPC9wPiI7DQoNCiRsYW5nWydoZWxwX2tleWJvYXJkc2hvcnRjdXRzX3RpdGxlJ10gPSAiS2V5Ym9hcmQgU2hvcnRjdXRzIjsNCiRsYW5nWydoZWxwX2tleWJvYXJkc2hvcnRjdXRzX2NvbnRlbnQnXSA9ICcNCiAgICAgIDxoMz5EZWZhdWx0IEtleWJvYXJkIFNob3J0Y3V0czwvaDM+DQoNCjx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iRGVmYXVsdCBLZXlib2FyZCBTaG9ydGN1dHMiPg0KPHRoZWFkPjx0cj4NCjx0aD5QQyAoV2luZG93cy9MaW51eCk8L3RkPg0KPHRoPk1hYzwvdGQ+DQo8dGg+YWN0aW9uPC90ZD4NCjwvdHI+PC90aGVhZD4NCjx0Ym9keT4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtUmV0dXJuPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1SZXR1cm48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5mdWxsc2NyZWVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVM8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVM8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5wZXJmb3JtIHNhdmU8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtTDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPmNlbnRlciBzZWxlY3Rpb248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtQWx0LURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLU9wdGlvbi1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Y29weSBsaW5lcyBkb3duPC90ZD4NCjwvdHI+DQo8dHIgbGNhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUFsdC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Y29weSBsaW5lcyB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+ZmluZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1LPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1HPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+ZmluZCBuZXh0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUs8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LUc8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5maW5kIHByZXZpb3VzPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+RG93bixDdHJsLU48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyBsaW5lIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+VXAsQ3RybC1QPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gbGluZSB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1FbmQsQ3RybC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1FbmQsQ29tbWFuZC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+TGVmdCxDdHJsLUI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUw8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUw8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsaW5lPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtUmlnaHQsRW5kPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1SaWdodCxFbmQsQ3RybC1FPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gbGluZSBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1MZWZ0LEhvbWU8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUxlZnQsSG9tZSxDdHJsLUE8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsaW5lIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5QYWdlRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1QYWdlRG93bixDdHJsLVY8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBwYWdlIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1QYWdlVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBwYWdlIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlJpZ2h0LEN0cmwtRjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUhvbWUsQ3RybC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtSG9tZSxDb21tYW5kLVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtTGVmdDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gd29yZCBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+T3B0aW9uLVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gd29yZCByaWdodDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+VGFiPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+VGFiPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+aW5kZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+bW92ZSBsaW5lcyBkb3duPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5tb3ZlIGxpbmVzIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1UYWI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1UYWI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5vdXRkZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5JbnNlcnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5JbnNlcnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5vdmVyd3JpdGU8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VEb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cGFnZWRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnBhZ2V1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1TaGlmdC1aLEN0cmwtWTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtWixDb21tYW5kLVk8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZWRvPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgbGluZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1LPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHRvIGxpbmUgZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tQmFja3NwYWNlPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHRvIGxpbmVzdGFydDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+QWx0LUJhY2tzcGFjZSxDdHJsLUFsdC1CYWNrc3BhY2U8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgd29yZCBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtRGVsZXRlPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHdvcmQgcmlnaHQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtUjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLUY8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZXBsYWNlPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LVI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LU9wdGlvbi1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVwbGFjZSBhbGw8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtQTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtQTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBhbGw8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUVuZDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUVuZDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBsaW5lIGVuZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtSG9tZTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUhvbWU8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgbGluZSBzdGFydDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtUGFnZURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1QYWdlRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBwYWdlIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBwYWdlIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUVuZCxBbHQtU2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB0byBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgdG8gbGluZSBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHRvIGxpbmUgc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtSG9tZSxBbHQtU2hpZnQtVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHRvIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tU2hpZnQtTGVmdDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB3b3JkIGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3Qgd29yZCByaWdodDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1PPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c3BsaXQgbGluZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC03PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC03PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+dG9nZ2xlIGNvbW1lbnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtVDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtVDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnRyYW5zcG9zZSBsZXR0ZXJzPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVo8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVo8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij51bmRvPC90ZD4NCjwvdHI+DQo8L3Rib2R5Pg0KPC90YWJsZT4nOw0KDQokbGFuZ1snaGVscF9mcm9udGVuZF90aXRsZSddID0gIkZyb250ZW5kIjsNCiRsYW5nWydoZWxwX2Zyb250ZW5kX2NvbnRlbnQnXSA9ICI8cD5UaGlzIE1vZHVsZSBhbmQgQWNlIFNjcmlwdCBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgRnJvbnRlbmQgU3ludGF4aGlnaGxpZ2h0ZXIuPGJyIC8+DQpUbyBtYWtlIGl0IHdvcmsgeW91IGhhdmUgdG8gaW5jbHVkZSBqUXVlcnkgRnJhbWV3b3JrLCBmb3IgZXhhbXBsZSB1c2luZyBDTVNNUyB7Y21zX2pxdWVyeX0gdGFnIGFuZCBhcyB3ZWxsIGluY2x1ZGUge0FjZUVkaXRvcn0gaW4geW91ciBwYWdlIHR3aWNlLiBGaXJzdCBhZGQgdGhlIG1vZHVsZSB0YWcgaW4geW91ciAmbHQ7aGVhZCZndDsgc2VjdGlvbiBvZiBUZW1wbGF0ZSBvciBpbiAmcXVvdDtQYWdlIFNwZWNpZmljIE1ldGRhdGEmcXVvdDsgZmllbGQgb2YgeW91ciBDb250ZW50IHBhZ2UsIGxpa2Uge0FjZUVkaXRvciBhY3Rpb249J2hlYWQnfSBhbmQgYW5vdGhlciBjYWxsIHRvIHNwZWNpZnkgd2hpY2ggYXJlYSBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQsIGZvciBleGFtcGxlIHtBY2VFZGl0b3IgZGl2aWQ9J2Zvbyd9LCB3aGljaCB3b3VsZCB0YXJnZXQgYSBwYWdlIGVsZW1lbnQgd2l0aCBpZCA8ZW0+Zm9vPC9lbT4uPC9wPg0KPGgzPlNvIGhvdyBkbyB5b3UgdXNlIGl0PzwvaDM+DQo8cD5GaXJzdCBpbmNsdWRlIGpRdWVyeSBhbmQgTW9kdWxlIHRhZyBpbiB5b3VyIFBhZ2UgJmx0O2hlYWQmZ3Q7IGFyZWEsIGZvciBleGFtcGxlIGluICZxdW90O1BhZ2UgU3BlY2lmaWMgTWV0ZGF0YSZxdW90Ozo8L3A+DQo8cHJlPg0Ke2Ntc19qcXVlcnl9DQp7QWNlRWRpdG9yIGFjdGlvbj0naGVhZCd9DQo8L3ByZT4NCjxwPlRoaXMgaW5jbHVkZXMgbmVlZGVkIHNjcmlwdHMgZm9yIEFjZSBTeW50YXhoaWdobGlnaHRlciB0byB3b3JrLjxiciAvPg0KSW4gTW9kdWxlcyBBZG1pbiBpbnRlcmZhY2UgeW91IGNhbiBzZWxlY3QgZGVmYXVsdCBzZXR0aW5ncyBmb3IgeW91ciAnaGVhZCcgYWN0aW9uIG9yIHVzZSBwYXJhbWV0ZXIgbW9kZXM9J2h0bWwsamF2YXNjcmlwdCcgYW5kIHRoZW1lcz0ndGV4dG1hdGUnIHdoaWNoIHdvdWxkIG92ZXJyaWRlIHNlbGVjdGVkIFByZWZlcmVuY2VzLjwvcD4NCjxwPk5vdyB3aGVuIHlvdSBoYXZlIG5lZWRlZCBzY3JpcHRzIGluY2x1ZGVkLCBvbmUgbW9yZSBNb2R1bGUgdGFnIGNhbGwgaXMgbmVlZGVkIChmb3IgZXhhbXBsZSBpbiB5b3VyIENvbnRlbnQgRWRpdG9yIGFyZWEpIHRvIHNwZWNpZnkgd2hpY2ggYXJlYSBvZiB5b3VyIFBhZ2Ugc2hvdWxkIGJlIGhpZ2hsaWdodGVkLjwvcD4NCjxwcmU+DQp7QWNlRWRpdG9yIGRpdmlkPSdzb21lLWlkJ30NCjwvcHJlPg0KPHA+VGhpcyB0YWcgaW5jbHVkZXMgbmVlZGVkIFNjcmlwdCBhbmQgU3R5bGUgdGhhdCBpcyB1c2VkIHRvIEhpZ2hsaWdodCBzZWxlY3RlZCBlbGVtZW50IHdpdGggc3BlY2lmaWVkIGlkLjxiciAvPg0KQWxsIHlvdSBuZWVkIHRoZW4gaXMgd3JpdGUgeW91ciBDb2RlIHRoYXQgeW91IHdhbnQgdG8gSGlnaGxpZ2h0IGFuZCB3cmFwIGl0IGluc2lkZSBhbiBlbGVtZW4gbGlrZSAmbHQ7ZGl2Jmd0OyB3aXRoIHNwZWNpZmllZCBpZC48L3A+IjsNCg0KJGxhbmdbJ2hlbHBfYWJvdXRfdGl0bGUnXSA9ICJBYm91dCI7DQokbGFuZ1snaGVscF9hYm91dF90ZXh0J10gPSAnPGgzPlN1cHBvcnQ8L2gzPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEyLCBHb3JhbiBJbGljIDxhIGhyZWY9Im1haWx0bzp1bmlxdTNlQGdtYWlsLmNvbSI+Jmx0O3VuaXF1M2VAZ21haWwuY29tJmd0OzwvYT4gPGEgaHJlZj0iaHR0cDovL3d3dy5pY2gtbWFjaC1kYXMuYXQiIHJlbD0iZXh0ZXJuYWwiPnd3dy5pY2gtbWFjaC1kYXMuYXQ8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KCTxoMz5UZWFtPC9oMz4NCgk8dWw+DQoJCTxsaT5Hb3JhbiBJbGljICh1bmlxdTMpIGcuaWxpY0BpLWFydHMuZXUgPGJyIC8+d3d3LmljaC1tYWNoLWRhcy5hdDwvbGk+CQ0KCQk8bGk+Um9iZXJ0IENhbXBiZWxsIChjYWxndXkxMDAwKSBjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnICA8YnIgLz53d3cuY2FsZ3V5MTAwMC5jb208L2xpPgkJDQoJCTxsaT5Kb25hdGhhbiBTY2htaWQgKEZvYWx5KikgaGlAam9uYXRoYW5zY2htaWQuZGUgPGJyIC8+d3d3LmpvbmF0aGFuc2NobWlkLmRlPC9saT4NCgk8L3VsPg0KJzsNCg0KLyogLS0tIENoYW5nZWxvZyAtLS0gKi8NCiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICINCjxoMz5WZXJzaW9uIDAuMTwvaDM+DQo8dWw+DQoJPGxpPkl0J3MgZnJlc2ghIE5vdGhpbmcgY2hhbmdlZCB5ZXQhPC9saT4NCgk8bGk+VXNpbmcgQWNlIFZlcnNpb24gMC4yLjA8L2xpPg0KPC91bD4NCjxoMz5WZXJzaW9uIDAuMjwvaDM+DQo8dWw+DQoJPGxpPkFkZGVkIENUUkwtUyBLZXliaW5kaW5nPC9saT4NCgk8bGk+QWRkZWQgRnVsbHNjcmVlbm1vZGU8L2xpPg0KCTxsaT5BZGRlZCBGcm9udGVuZCBIaWdobGlnaHRpbmc8L2xpPg0KCTxsaT5VcGRhdGVkIEFjZTwvbGk+DQo8L3VsPg0KPGgzPlZlcnNpb24gMC4yLjE8L2gzPg0KPHVsPg0KCTxsaT5BZGRlZCBJbnRlcm5ldCBFeHBsb3JlciBwcmVmZXJlbmNlPC9saT4NCgk8bGk+VXBkYXRlZCBBQ0Ugd2l0aCB0aGVtZXM8L2xpPg0KPC91bD4NCjxoMz5WZXJzaW9uIDAuMi4yPC9oMz4NCjx1bD4NCgk8bGk+Rml4IGZvciBTYWZhcmkvTWFjPC9saT4NCjwvdWw+DQo8aDM+VmVyc2lvbiAwLjIuMzwvaDM+DQo8dWw+DQogICAgPGxpPlVwZGF0ZWQgdG8gbGF0ZXN0IGFjZSBmcm9tIGdpdGh1YjwvbGk+DQogICAgPGxpPkFkZGVkIGFkZGl0aW9uYWwgcHJlZmVyZW5jZXMgKE1vZGlmeSBUZW1wbGF0ZXMsIEFjZUVkaXRvciBVc2VyIFByZWZlcmVuY2UpPC9saT4NCiAgICA8bGk+QWRkZWQgYWJpbGl0eSB0byBjaGFuZ2UgQWNlRWRpdG9yIHByZWZlcmVuY2VzIHBlciB1c2VyPC9saT4NCiAgICA8bGk+TW92ZWQgbW9kdWxlIGZyb20gZXh0ZW5pb25zIHRvIG15cHJlZnM8L2xpPg0KPC91bD4NCjxoMz5WZXJzaW9uIDAuMi4zLjE8L2gzPg0KPHVsPg0KICAgIDxsaT5Nb2RlIHByZWZlcmVuY2UgYnVnZml4PC9saT4NCjwvdWw+DQo8aDM+VmVyc2lvbiAwLjIuNC4xPC9oMz4NCjx1bD4NCiAgICA8bGk+VXBkYXRlZCB0byBsYXRlc3QgQWNlIGJ1aWxkPC9saT4NCiAgICA8bGk+QWRkZWQgVG9vbGJhcjwvbGk+DQo8L3VsPg0KPGgzPlZlcnNpb24gMC4yLjQuMjwvaDM+DQo8dWw+DQogICAgPGxpPk1pbm9yIGJ1Z2ZpeCwgXCRtb2QgY291bGQgY29saWRlIHdpdGggb3RoZXIgbW9kdWxlczwvbGk+DQogICAgPGxpPk1pbm9yIGJ1Z2ZpeCB0byB0b29sYmFyIGJ1dHRvbnMgd2hlbiBtdWx0aXBsZSBBY2UgaW5zdGFuY2VzIGFyZSBsb2FkZWQ8L2xpPg0KPC91bD4NCjxoMz5Sb2FkbWFwPC9oMz4NCjx1bD4NCiAgICA8bGk+PGRlbD5BZGQgRnJvbnRlbmQgU3ludGF4aGlnaGxpZ2h0aW5nPC9kZWw+PC9saT4NCiAgICA8bGk+PGRlbD5BZGQgRnVsbHNjcmVlbm1vZGU8L2RlbD48L2xpPg0KICAgIDxsaT48ZGVsPkFkZCBLZXliaW5kaW5nIChDVFJMK1MpPC9kZWw+PC9saT4NCiAgICA8bGk+PGRlbD5BZGQgRWRpdG9yIGJlaGF2aW9yIChWaW0sIEVNYWNzKTwvZGVsPjwvbGk+DQogICAgPGxpPjxkZWw+TWF5YmUgYWRkIFRvb2xiYXI8L2RlbD48L2xpPg0KPC91bD4iOw0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdBY2VFZGl0b3IgJzsNCiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnQWNlRWRpdG9yIGlzdCBlaW4gU3ludGF4aGlnaGxpZ2h0ZXIgTW9kdWwgZGFzIDxzdHJvbmc+QWNlPC9zdHJvbmc+LCAgZWluZW4gZWlnZW5zdCZhdW1sO25kaWdlbiBDb2RlLUVkaXRvciBnZXNjaHJpZWJlbiBtaXQgSmF2YVNjcmlwdCAgdmVyd2VuZGV0LjxiciAvPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gSW50ZXJuZXQgRXhwbG9yZXIgd2lyZCB6dXJ6ZWl0IG5pY2h0IHVudGVyc3QmdXVtbDt6dCEnOw0KJGxhbmdbJ3NldHRpbmdzX3RhYiddID0gJ0VpbnN0ZWxsdW5nZW4nOw0KJGxhbmdbJ2Zyb250ZW5kc2V0dGluZ3NfdGFiJ10gPSAnRnJvbnRlbmQtRWluc3RlbGx1bmdlbic7DQokbGFuZ1snZnJvbnRlbmRfaGVhZF9zZXR0aW5ncyddID0gJ0Zyb250ZW5kLUhlYWQtRWluc3RlbGx1bmdlbic7DQokbGFuZ1snZnJvbnRlbmRfc3ludGF4YXJlYV9zZXR0aW5ncyddID0gJ0Zyb250ZW5kLVN5bnRheGJlcmVpY2gtRWluc3RlbGx1bmdlbic7DQokbGFuZ1snaGVhZF9kZXNjcmlwdGlvbiddID0gJ0RpZXNlIEVpbnN0ZWxsdW5nZW4gd2VyZGVuIGFscyBTdGFuZGFyZCBmJnV1bWw7ciBBY2UtU2tyaXB0ZSB2ZXJ3ZW5kZXQsIGRpZSBpbSA8Y29kZT48aGVhZD48L2NvZGU+IGRlciBTZWl0ZSBlaW5nZWJ1bmRlbiB3ZXJkZW4gd2VubiA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fTwvY29kZT4gaW4gc2VpdGVuc3BlemlmaXNjaGVuIE1ldGEtRGF0ZW4gb2RlciBTZWl0ZW52b3JsYWdlbiBhdWZnZXJ1ZmVuIHdpcmQuJzsNCiRsYW5nWydjb250ZW50X2Rlc2NyaXB0aW9uJ10gPSAnRGllc2UgRWluc3RlbGx1bmdlbiB3ZXJkZW4gYWxzIFN0YW5kYXJkIGYmdXVtbDtyIGRlbiBCZXJlaWNoIGRlciBTeW50YXhoZXJ2b3JoZWJ1bmcgdmVyd2VuZGV0IHdlbm4gPGNvZGU+e0FjZUVkaXRvciBkaXZpZD0mIzAzOTtlZGl0b3ImIzAzOTt9PC9jb2RlPiBpbiBlaW5lciBTZWl0ZSBhdWZnZXJ1ZmVuIHdpcmQuJzsNCiRsYW5nWydzeW50YXhhcmVhZGVzY3JpcHRpb24nXSA9ICdEaWVzZSBFaW5zdGVsbHVuZ2VuIHdlcmRlbiBhbHMgU3RhbmRhcmQgZiZ1dW1sO3IgZGFzIFZlcmhhbHRlbiB2b24gQWNlIHZlcndlbmRldCB3ZW5uIDxjb2RlPntBY2VFZGl0b3IgZGl2aWQ9JiMwMzk7Zm9vJiMwMzk7fTwvY29kZT4gaW4gZWluZXIgU2VpdGUgb2RlciBlaW5lciBTZWl0ZW52b3JsYWdlIGF1ZmdlcnVmZW4gd2lyZC4nOw0KJGxhbmdbJ2V4YW1wbGVfZG9jdW1lbnQnXSA9ICdEb2t1bWVudCc7DQokbGFuZ1snd2lkdGhfdGl0bGUnXSA9ICdFZGl0b3JicmVpdGUgKGluIGVtKSc7DQokbGFuZ1snaGVpZ2h0X3RpdGxlJ10gPSAnRWRpdG9yaCZvdW1sO2hlIChpbiBlbSknOw0KJGxhbmdbJ2VuYWJsZV9pZSddID0gJ0YmdXVtbDtyIEludGVybmV0IEV4cGxvcmVyIGFrdGl2aWVyZW4nOw0KJGxhbmdbJ2VuYWJsZV9pZWRlc2NyaXB0aW9uJ10gPSAnQWNlIFN5bnRheGhpZ2hsaWdodGVyIGZ1bmt0aW9uaWVydCBpbiBJbnRlcm5ldCBFeHBsb3JlciBuaWNodCByaWNodGlnLiBBa3RpdmllcmVuIFNpZSBkaWVzZSBPcHRpb24gYXVmIGVpZ2VuZSBWZXJhbnR3b3J0dW5nISc7DQokbGFuZ1snZnJvbnRlbmRfd2lkdGhfdGl0bGUnXSA9ICdCcmVpdGUgZGVzIEZyb250LUVuZC1TeW50YXhiZXJlaWNocyAoaW4gcHgpJzsNCiRsYW5nWydmcm9udGVuZF9oZWlnaHRfdGl0bGUnXSA9ICdIJm91bWw7aGUgZGVzIEZyb250LUVuZC1TeW50YXhiZXJlaWNocyAoaW4gcHgpJzsNCiRsYW5nWydzeW50YXhfbW9kZSddID0gJ01vZHVzJzsNCiRsYW5nWyd0aGVtZXMnXSA9ICdBdXNzZWhlbic7DQokbGFuZ1snZm9udF9zaXplJ10gPSAnU2NocmlmdGdyJm91bWw7JnN6bGlnO2UnOw0KJGxhbmdbJ2Z1bGxfbGluZSddID0gJ0F1c3dhaGwgZGVyIGdhbnplbiBaZWlsZSc7DQokbGFuZ1snaGlnaGxpZ2h0X2FjdGl2ZSddID0gJ0FrdGl2ZSBaZWlsZSBtYXJraWVyZW4nOw0KJGxhbmdbJ3Nob3dfaW52aXNpYmxlcyddID0gJ1plaWdlIHVuc2ljaHRiYXJlJzsNCiRsYW5nWydwZXJzaXN0ZW50X2hzY3JvbGwnXSA9ICdQZXJzaXN0ZW50ZXMgSFNjcm9sbCc7DQokbGFuZ1sna2V5X2JpbmRpbmcnXSA9ICdTY2hsJnV1bWw7c3NlbGJpbmR1bmcnOw0KJGxhbmdbJ3NvZnRfd3JhcCddID0gJ3dlaWNoZXIgWmVpbGVudW1icnVjaCc7DQokbGFuZ1snc2hvd19ndXR0ZXInXSA9ICdaZWlsZW5udW1tZXJuIGFuemVpZ2VuJzsNCiRsYW5nWydwcmludF9tYXJnaW4nXSA9ICdEcnVja2JlcmVpY2ggYW56ZWlnZW4nOw0KJGxhbmdbJ3NvZnRfdGFiJ10gPSAnU29mdCBUYWIgdmVyd2VuZGVuJzsNCiRsYW5nWydoaWdobGlnaHRfc2VsZWN0ZWQnXSA9ICdBdXNnZXcmYXVtbDtobHRlcyBXb3J0IG1hcmtpZXJlbic7DQokbGFuZ1snZW5hYmxlX2JlaGF2aW9ycyddID0gJ1ZlcmhhbHRlbiBha3RpdmllcmVuJzsNCiRsYW5nWyd0ZXN0YXJlYXRleHQnXSA9ICdWb3JzY2hhdSc7DQokbGFuZ1snb24nXSA9ICdBbic7DQokbGFuZ1snb2ZmJ10gPSAnQXVzJzsNCiRsYW5nWydsaW5lJ10gPSAnWmVpbGUnOw0KJGxhbmdbJ2NvbHVtbiddID0gJ1NwYWx0ZSc7DQokbGFuZ1snY3VycmVudF9saW5lJ10gPSAnQWt0dWVsbGUgWmVpbGUnOw0KJGxhbmdbJ3RvdGFsX2xpbmVzJ10gPSAnQW56YWhsIFplaWxlbic7DQokbGFuZ1snZ29fbGluZSddID0gJ0dlaGUgenUgWmVpbGUnOw0KJGxhbmdbJ2tleWJpbmRpbmdzJ10gPSAnVGFzdGVua29tYmluYXRpb25lbic7DQokbGFuZ1snYWNlJ10gPSAnQWNlJzsNCiRsYW5nWyd2aW0nXSA9ICdWaW0nOw0KJGxhbmdbJ2VtYWNzJ10gPSAnRU1hY3MnOw0KJGxhbmdbJ2pzJ10gPSAnSmF2YVNjcmlwdCAnOw0KJGxhbmdbJ3BsYWluJ10gPSAncmVpbmVyIFRleHQnOw0KJGxhbmdbJ3N2ZyddID0gJ1NWRyc7DQokbGFuZ1snaHRtbCddID0gJ0hUTUwnOw0KJGxhbmdbJ2NzcyddID0gJ0NTUyc7DQokbGFuZ1snc2NzcyddID0gJ1NDU1MnOw0KJGxhbmdbJ2NvZmZlZSddID0gJ0NvZmZlZVNjcmlwdCc7DQokbGFuZ1snanNvbiddID0gJ0pTT04nOw0KJGxhbmdbJ3B5dGhvbiddID0gJ1B5dGhvbic7DQokbGFuZ1sncnVieSddID0gJ1J1YnknOw0KJGxhbmdbJ3BlcmwnXSA9ICdQZXJsICc7DQokbGFuZ1sncGhwJ10gPSAnUEhQJzsNCiRsYW5nWydqYXZhJ10gPSAnSmF2YSc7DQokbGFuZ1snY3NoYXJwJ10gPSAnQyMnOw0KJGxhbmdbJ2NfY3BwJ10gPSAnQysrJzsNCiRsYW5nWydjbG9qdXJlJ10gPSAnQ2xvanVyZSc7DQokbGFuZ1snY29sZGZ1c2lvbiddID0gJ0NvbGRGdXNpb24nOw0KJGxhbmdbJ2hheGUnXSA9ICdIYXhlJzsNCiRsYW5nWydsYXRleCddID0gJ0xhdGV4JzsNCiRsYW5nWydsdWEnXSA9ICdMdWEnOw0KJGxhbmdbJ21hcmtkb3duJ10gPSAnTWFya2Rvd24nOw0KJGxhbmdbJ3Bvd2Vyc2hlbGwnXSA9ICdQb3dlclNoZWxsJzsNCiRsYW5nWydzcWwnXSA9ICdTUUwnOw0KJGxhbmdbJ3Bnc3FsJ10gPSAncGdTUUwnOw0KJGxhbmdbJ29jYW1sJ10gPSAnT0NhbWwnOw0KJGxhbmdbJ3RleHRpbGUnXSA9ICdUZXh0aWxlJzsNCiRsYW5nWydncm9vdnknXSA9ICdHcm9vdnknOw0KJGxhbmdbJ3NjYWxhJ10gPSAnU2NhbGEnOw0KJGxhbmdbJ2Nsb3VkcyddID0gJ0Nsb3Vkcyc7DQokbGFuZ1snY2hyb21lJ10gPSAnQ2hyb21lJzsNCiRsYW5nWydjbG91ZHNfbWlkbmlnaHQnXSA9ICdDbG91ZHMgTWlkbmlnaHQnOw0KJGxhbmdbJ2NvYmFsdCddID0gJ0NvYmFsdCc7DQokbGFuZ1snY3JpbXNvbl9lZGl0b3InXSA9ICdDcmltc29uIEVkaXRvcic7DQokbGFuZ1snZGF3biddID0gJ0Rhd24nOw0KJGxhbmdbJ2RyZWFtd2VhdmVyJ10gPSAnRHJlYW13ZWF2ZXInOw0KJGxhbmdbJ2VjbGlwc2UnXSA9ICdFY2xpcHNlJzsNCiRsYW5nWydpZGxlX2ZpbmdlcnMnXSA9ICdpZGxlRmluZ2Vycyc7DQokbGFuZ1sna3JfdGhlbWUnXSA9ICdrclRoZW1lJzsNCiRsYW5nWydtZXJiaXZvcmUnXSA9ICdNZXJiaXZvcmUnOw0KJGxhbmdbJ21lcmJpdm9yZV9zb2Z0J10gPSAnTWVyYml2b3JlIFNvZnQnOw0KJGxhbmdbJ21vbm9faW5kdXN0cmlhbCddID0gJ01vbm8gSW5kdXN0cmlhbCc7DQokbGFuZ1snbW9ub2thaSddID0gJ01vbm9rYWknOw0KJGxhbmdbJ3Bhc3RlbF9vbl9kYXJrJ10gPSAnUGFzdGVsIG9uIGRhcmsnOw0KJGxhbmdbJ3NvbGFyaXplZF9kYXJrJ10gPSAnU29sYXJpemVkIERhcmsnOw0KJGxhbmdbJ3NvbGFyaXplZF9saWdodCddID0gJ1NvbGFyaXplZCBMaWdodCc7DQokbGFuZ1sndGV4dG1hdGUnXSA9ICdUZXh0TWF0ZSc7DQokbGFuZ1sndG9tb3Jyb3cnXSA9ICdUb21vcnJvdyc7DQokbGFuZ1sndG9tb3Jyb3dfbmlnaHQnXSA9ICdUb21vcnJvdyBOaWdodCc7DQokbGFuZ1sndG9tb3Jyb3dfbmlnaHRfYnJpZ2h0J10gPSAnVG9tb3Jyb3cgTmlnaHQgQnJpZ2h0JzsNCiRsYW5nWyd0b21vcnJvd19uaWdodF9ibHVlJ10gPSAnVG9tb3Jyb3cgTmlnaHQgQmx1ZSc7DQokbGFuZ1sndG9tb3Jyb3dfbmlnaHRfZWlnaHRpZXMnXSA9ICdUb21vcnJvdyBOaWdodCBFaWdodGllcyc7DQokbGFuZ1sndHdpbGlnaHQnXSA9ICdUd2lsaWdodCc7DQokbGFuZ1sndmlicmFudF9pbmsnXSA9ICdWaWJyYW50IEluayc7DQokbGFuZ1snY3VzdG9tJ10gPSAnQmVudXR6ZXJkZWZpbmllcnQnOw0KJGxhbmdbJzQwJ10gPSAnNDAgWmVpY2hlbic7DQokbGFuZ1snODAnXSA9ICc4MCBaZWljaGVuJzsNCiRsYW5nWycxMDAnXSA9ICcxMDAgWmVpY2hlbic7DQokbGFuZ1snMTQwJ10gPSAnMTQwIFplaWNoZW4nOw0KJGxhbmdbJ3NhdmVzZXR0aW5ncyddID0gJ0VpbnN0ZWxsdW5nZW4gc3BlaWNoZXJuJzsNCiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnSWhyZSBBY2VFZGl0b3ItRWluc3RlbGx1bmdlbiB3dXJkZW4gZ2VzcGVpY2hlcnQnOw0KJGxhbmdbJ2Zyb250ZW5kc2V0dGluZ3NzYXZlZCddID0gJ0RpZSBGcm9udC1FbmQtRWluc3RlbGx1bmdlbiB3dXJkZW4gZ2VzcGVpY2hlcnQnOw0KJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnQWNlRWRpdG9yIHd1cmRlIGluc3RhbGxpZXJ0LiBTZXR6ZW4gU2llIGRpZSBCZXJlY2h0aWd1bmcgJmJkcXVvO01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJmxkcXVvOywgdW0gZGllc2VzIE1vZHVsIHZlcndlbmRlbiB6dSBrJm91bWw7bm5lbiEnOw0KJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdBY2VFZGl0b3Igd3VyZGUgZGVpbnN0YWxsaWVydCc7DQokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1dvbGxlbiBTaWUgd2lya2xpY2ggQWNlRWRpdG9yIGRlaW5zdGFsbGllcmVuPyBEZW5rZW4gU2llIG5vY2htYWwgbmFjaCEnOw0KJGxhbmdbJ25lZWRwZXJtaXNzaW9uJ10gPSAnRmVobGVuZGUgQmVyZWNodGlndW5nZW4hIFN0ZWxsZW4gU2llIGRpZSBCZXJlY2h0aWd1bmdlbiAmYmRxdW87TW9kaWZ5IFRlbXBsYXRlcyZsZHF1bzsgb2RlciAmYmRxdW87QWNlRWRpdG9yIFVzZXIgUHJlZmVyZW5jZSZsZHF1bzsgZWluLCB1bSBkaWVzZXMgTW9kdWwgdmVyd2VuZGVuIHp1IGsmb3VtbDtubmVuLic7DQokbGFuZ1snaGVscF9wYXJhbV9hY3Rpb24nXSA9ICd3aXJkIHZlcndlbmRldCwgdW0gZGllIEFrdGlvbiBkZXMgTW9kdWwgdGFncyB6dSBiZXN0aW1tZW4uIE0mb3VtbDtnbGljaGUgd2VydGUgc2luZCAmYmRxdW87ZGVmYXVsdCZsZHF1bzsgdW5kICZiZHF1bztoZWFkJmxkcXVvOy4gRiZ1dW1sO3IgZGllIGtvcnJla3RlIEZyb250LUVuZC1TeW50YXhoZXJ2b3JoZWJ1bmcgc2luZCBiZWlkZSBBa3Rpb25lbiBub3R3ZW5kaWcuIDxiciAvPk0mb3VtbDtnbGljaGUgV2VydGUgc2luZDoNCjx1bD4NCgk8bGk+aGVhZDwvbGk+DQoJPGxpPmRlZmF1bHQ8L2xpPg0KPC91bD4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fbW9kZXMnXSA9ICd3aXJkIG1pdCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fTwvY29kZT4gdmVyd2VuZGV0LiBTaWUgayZvdW1sO25uZW4gbWVocmVyZSBkdXJjaCBLb21tYSBnZXRyZW5udGUgJmJkcXVvO01vZGkmbGRxdW87LCBkaWUgU2llIGF1ZiBJaHJlciBXZWJzaXRlIHZlcndlbmRlbiB3ZXJkZW4sIGFuZ2ViZW4uIERpZXMgc29sbHRlIGltIEtvcGZiZXJlaWNoICgmbHQ7aGVhZCZndDspIGRlciBTZWl0ZW52b3JsYWdlIG9kZXIgYmVpIGRlbiBzZWl0ZW5zcGV6aWZpc2NoZW0gTWV0YS1EYXRlbiBlaW5nZWdlYmVuIHdlcmRlbi4gRGllcyAmdXVtbDtiZXJzY2hyZWlidCBJaHJlIEVpbnN0ZWxsdW5nZW4sIGRpZSBpbSBNb2R1bC1BZG1pbmlzdHJhdGlvbnNiZXJlaWNoIGF1c2dldyZhdW1sO2hsdCB3dXJkZW4uIDxiciAvPk0mb3VtbDtnbGljaGUgd2VydGUgc2luZDoNCjx1bD4NCgk8bGk+amF2YXNjcmlwdDwvbGk+IA0KCTxsaT5wbGFpbjwvbGk+IA0KCTxsaT5zdmc8L2xpPiANCgk8bGk+aHRtbDwvbGk+DQoJPGxpPmNzczwvbGk+DQoJPGxpPnNjc3M8L2xpPg0KCTxsaT5jb2ZmZWU8L2xpPg0KCTxsaT5qc29uPC9saT4NCgk8bGk+cHl0aG9uPC9saT4NCgk8bGk+cnVieTwvbGk+DQoJPGxpPnBlcmw8L2xpPg0KCTxsaT5waHA8L2xpPg0KCTxsaT5qYXZhPC9saT4NCgk8bGk+Y3NoYXJwPC9saT4NCgk8bGk+Y19jcHA8L2xpPg0KCTxsaT5jbG9qdXJlPC9saT4NCgk8bGk+b2NhbWw8L2xpPg0KCTxsaT50ZXh0aWxlPC9saT4NCgk8bGk+Z3Jvb3Z5PC9saT4NCgk8bGk+c2NhbGE8L2xpPg0KPC91bD4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fdGhlbWVzJ10gPSAnd2lyZCBtaXQgPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O308L2NvZGU+IHZlcndlbmRldC4gU2llIGsmb3VtbDtubmVuIG1laHJlcmUgZHVyY2ggS29tbWEgZ2V0cmVubnRlIERlc2lnbnMsIGRpZSBTaWUgYXVmIElocmVyIFdlYnNpdGUgdmVyd2VuZGVuIHdlcmRlbiwgYW5nZWJlbi4gRGllcyBzb2xsdGUgaW0gS29wZmJlcmVpY2ggKCZsdDtoZWFkJmd0OykgZGVyIFNlaXRlbnZvcmxhZ2Ugb2RlciBiZWkgZGVuIHNlaXRlbnNwZXppZmlzY2hlbiBNZXRhLURhdGVuIGVpbmdlZ2ViZW4gd2VyZGVuLiBEaWVzICZ1dW1sO2JlcnNjaHJlaWJ0IElocmUgRWluc3RlbGx1bmdlbiwgZGllIGltIE1vZHVsLUFkbWluaXN0cmF0aW9uc2JlcmVpY2ggYXVzZ2V3JmF1bWw7aGx0IHd1cmRlbi4gPGJyIC8+TSZvdW1sO2dsaWNoZSB3ZXJ0ZSBzaW5kOg0KPHVsPg0KCTxsaT5jbG91ZHM8L2xpPiANCgk8bGk+Y2xvdWRzX21pZG5pZ2h0PC9saT4gDQoJPGxpPmNvYmFsdDwvbGk+IA0KCTxsaT5jcmltc29uX2VkaXRvcjwvbGk+DQoJPGxpPmRhd248L2xpPg0KCTxsaT5lY2xpcHNlPC9saT4NCgk8bGk+aWRsZV9maW5nZXJzPC9saT4NCgk8bGk+a3JfdGhlbWU8L2xpPg0KCTxsaT5tZXJiaXZvcmU8L2xpPg0KCTxsaT5tZXJiaXZvcmVfc29mdDwvbGk+DQoJPGxpPm1vbm9faW5kdXN0cmlhbDwvbGk+DQoJPGxpPm1vbm9rYWk8L2xpPg0KCTxsaT5wYXN0ZWxfb25fZGFyazwvbGk+DQoJPGxpPnNvbGFyaXplZF9kYXJrPC9saT4NCgk8bGk+c29sYXJpemVkX2xpZ2h0PC9saT4NCgk8bGk+dGV4dG1hdGU8L2xpPg0KCTxsaT50d2lsaWdodDwvbGk+DQoJPGxpPnZpYnJhbnRfaW5rPC9saT4NCjwvdWw+JzsNCiRsYW5nWydoZWxwX3BhcmFtX21vZGUnXSA9ICd3aXJkIGlubmVyaGFsYiBlaW5lciBTZWl0ZSBtaXQgPGNvZGU+e0FjZUVkaXRvciBhY3Rpb24gPSAmIzAzOTtkZWZhdWx0JiMwMzk7fTwvY29kZT4gTW9kdWwtVGFnIHZlcndlbmRldC4gRGFtaXQgd2lyZCBTeW50YXhIaWdobGlnaHRlciBNb2R1cyBmJnV1bWw7ciBha3R1ZWxsZW4gQ29kZS1CZXJlaWNoIGZlc3RnZWxlZ3QuIDxiciAvPiBNJm91bWw7Z2xpY2hlIFdlcnRlIHNpbmQ6DQo8dWw+DQoJPGxpPmphdmFzY3JpcHQ8L2xpPiANCgk8bGk+cGxhaW48L2xpPiANCgk8bGk+c3ZnPC9saT4gDQoJPGxpPmh0bWw8L2xpPg0KCTxsaT5jc3M8L2xpPg0KCTxsaT5zY3NzPC9saT4NCgk8bGk+Y29mZmVlPC9saT4NCgk8bGk+anNvbjwvbGk+DQoJPGxpPnB5dGhvbjwvbGk+DQoJPGxpPnJ1Ynk8L2xpPg0KCTxsaT5wZXJsPC9saT4NCgk8bGk+cGhwPC9saT4NCgk8bGk+amF2YTwvbGk+DQoJPGxpPmNzaGFycDwvbGk+DQoJPGxpPmNfY3BwPC9saT4NCgk8bGk+Y2xvanVyZTwvbGk+DQoJPGxpPm9jYW1sPC9saT4NCgk8bGk+dGV4dGlsZTwvbGk+DQoJPGxpPmdyb292eTwvbGk+DQoJPGxpPnNjYWxhPC9saT4NCjwvdWw+JzsNCiRsYW5nWydoZWxwX3BhcmFtX3RoZW1lJ10gPSAnd2lyZCBpbm5lcmhhbGIgZWluZXIgU2VpdGUgbWl0IDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uID0gJiMwMzk7ZGVmYXVsdCYjMDM5O308L2NvZGU+IE1vZHVsLVRhZyB2ZXJ3ZW5kZXQuIERhbWl0IHdpcmQgZGFzIEF1c3NlaGVuIGRlciBTeW50YXhoZXJ2b3JoZWJ1bmcgZiZ1dW1sO3IgYWt0dWVsbGVuIENvZGUtQmVyZWljaCBmZXN0Z2VsZWd0LiA8YnIgLz4gTSZvdW1sO2dsaWNoZSBXZXJ0ZSBzaW5kOg0KPHVsPg0KCTxsaT5jbG91ZHM8L2xpPiANCgk8bGk+Y2xvdWRzX21pZG5pZ2h0PC9saT4gDQoJPGxpPmNvYmFsdDwvbGk+IA0KCTxsaT5jcmltc29uX2VkaXRvcjwvbGk+DQoJPGxpPmRhd248L2xpPg0KCTxsaT5lY2xpcHNlPC9saT4NCgk8bGk+aWRsZV9maW5nZXJzPC9saT4NCgk8bGk+a3JfdGhlbWU8L2xpPg0KCTxsaT5tZXJiaXZvcmU8L2xpPg0KCTxsaT5tZXJiaXZvcmVfc29mdDwvbGk+DQoJPGxpPm1vbm9faW5kdXN0cmlhbDwvbGk+DQoJPGxpPm1vbm9rYWk8L2xpPg0KCTxsaT5wYXN0ZWxfb25fZGFyazwvbGk+DQoJPGxpPnNvbGFyaXplZF9kYXJrPC9saT4NCgk8bGk+c29sYXJpemVkX2xpZ2h0PC9saT4NCgk8bGk+dGV4dG1hdGU8L2xpPg0KCTxsaT50d2lsaWdodDwvbGk+DQoJPGxpPnZpYnJhbnRfaW5rPC9saT4NCjwvdWw+JzsNCiRsYW5nWydoZWxwX3BhcmFtX3dpZHRoJ10gPSAnYmVzdGltbXQgZGllIEJyZWl0ZSBkZXMgQmVyZWljaHMgZGVyIFN5bnRheGhlcnZvcmhlYnVuZyBpbiBQaXhlbC4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1faGVpZ2h0J10gPSAnYmVzdGltbXQgZGllIEgmb3VtbDtoZSBkZXMgQmVyZWljaHMgZGVyIFN5bnRheGhlcnZvcmhlYnVuZyBpbiBQaXhlbC4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fZGl2aWQnXSA9ICdJRCBkZXMgRWxlbWVudHMgbWl0IElocmVtIENvZGUuIFZlcndlbmRlbiBTaWUgZWluZGV1dGlnZSBJRCBmJnV1bWw7ciBqZWRlbiBDb2RlYWJzY2huaXR0Lic7DQokbGFuZ1snaGVscF9nZW5lcmFsX3RpdGxlJ10gPSAnQWxsZ2VtZWluJzsNCiRsYW5nWydoZWxwX2dlbmVyYWxfdGV4dCddID0gJzxoMz5XYXMgbWFjaHQgZGllc2VzIE1vZHVsPzwvaDM+DQo8cD5BY2VFZGl0b3IgaXMgYSBTeW50YXhoaWdobGlnaHRlciBtb2R1bGUgdXNpbmcgPHN0cm9uZz5BY2U8L3N0cm9uZz4gYSBzdGFuZGFsb25lIGNvZGUgZWRpdG9yIHdyaXR0ZW4gaW4gSmF2YVNjcmlwdC48YnIgLz4gDQpHb2FsIG9mIEFjZSBjb2RlIGVkaXRvciBncm91cCBpcyB0byBjcmVhdGUgYSB3ZWIgYmFzZWQgY29kZSBlZGl0b3IgdGhhdCBtYXRjaGVzIGFuZCBleHRlbmRzIHRoZSBmZWF0dXJlcywgdXNhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZSBvZiBleGlzdGluZyBuYXRpdmUgZWRpdG9ycyBzdWNoIGFzIFRleHRNYXRlLCBWaW0gb3IgRWNsaXBzZS48YnIgLz4NCkl0IGNhbiBiZSBlYXNpbHkgZW1iZWRkZWQgaW4gYW55IHdlYiBwYWdlIGFuZCBKYXZhU2NyaXB0IGFwcGxpY2F0aW9uLjxiciAvPiANCkFjZSBpcyBkZXZlbG9wZWQgYXMgdGhlIHByaW1hcnkgZWRpdG9yIGZvciA8YSBocmVmPSJodHRwOi8vd3d3LmNsb3VkOWlkZS5jb20iPkNsb3VkOSBJREU8L2E+IGFuZCB0aGUgc3VjY2Vzc29yIG9mIHRoZSBNb3ppbGxhIFNreXdyaXRlciAoQmVzcGluKSBQcm9qZWN0LjwvcD4NCjxoMz5BY2UgaXMgaG9zdGVkIG9uIEdpdEh1YjwvaDM+DQo8cD5UaGUgQWNlIHNvdXJjZSBjb2RlIGlzIGhvc3RlZCBvbiBHaXRIdWIuIEl0IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNb3ppbGxhIHRyaS1saWNlbnNlIChNUEwvR1BML0xHUEwpLjxiciAvPg0KVGhpcyBpcyB0aGUgc2FtZSBsaWNlbnNlIHVzZWQgYnkgRmlyZWZveC4gVGhpcyBsaWNlbnNlIGlzIGZyaWVuZGx5IHRvIGFsbCBraW5kcyBvZiBwcm9qZWN0cywgd2hldGhlciBvcGVuIHNvdXJjZSBvciBub3QuPGJyIC8+DQogVGFrZSBjaGFyZ2Ugb2YgeW91ciBlZGl0b3IgYW5kIGFkZCB5b3VyIGZhdm9yaXRlIGxhbmd1YWdlIGhpZ2hsaWdodGluZyBhbmQga2V5YmluZGluZ3MhPC9wPg0KPGgzPlVzaW5nIEFjZUVkaXRvciBNb2R1bGU8L2gzPg0KPHA+VXNpbmcgQWNlRWRpdG9yIE1vZHVsZSBpcyBzaW1wbGUuPGJyIC8+DQpBZnRlciBBY2VFZGl0b3Igd2FzIGluc3RhbGxlZCBnbyB0byAmcXVvdDtNeSBQcmVmZXJlbmNlcyAmcmFxdW87IFVzZXIgUHJlZmVyZW5jZXMmcXVvdDsgYW5kIGNob29zZSBBY2VFZGl0b3IgYXMgeW91ciBTeW50YXhoaWdobGlnaHRlciBvZiBjaG9pY2UgZnJvbSAmcXVvdDtTZWxlY3Qgc3ludGF4IGhpZ2hsaWdodGVyIHRvIHVzZTomcXVvdDsgRHJvcGRvd24uPGJyIC8+DQpNYWtlIHN1cmUgeW91IGhhdmUgJiMwMzk7TW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMmIzAzOTsgUGVybXNpc3Npb24uPC9wPg0KPGgzPlNldHRpbmdzPC9oMz4NCjxwPllvdSBjYW4gY2hhbmdlIGRlZmF1bHQgU2V0dGluZ3MgYW5kIFRoZW1lcyBpbiAmcXVvdDtFeHRlbnNpb25zICZyYXF1bzsgQWNlRWRpdG9yJnF1b3Q7PC9wPic7DQokbGFuZ1snaGVscF9rZXlib2FyZHNob3J0Y3V0c190aXRsZSddID0gJ1Rhc3RhdHVyayZ1dW1sO3J6ZWwnOw0KJGxhbmdbJ2hlbHBfa2V5Ym9hcmRzaG9ydGN1dHNfY29udGVudCddID0gJzxoMz5TdGFuZGFyZC1UYXN0YXR1cmsmdXVtbDtyemVsPC9oMz4NCjx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIiBzdW1tYXJ5PSJTdGFuZGFyZC1UYXN0YXR1cmsmdXVtbDtyemVsIj4NCjx0aGVhZD4NCjx0cj4NCjx0aCBzY29wZT0iY29sIj5XaW5kb3dzL0xpbnV4PC90aD4NCjx0aCBzY29wZT0iY29sIj5NYWM8L3RoPg0KPHRoIHNjb3BlPSJjb2wiPkFrdGlvbjwvdGg+DQo8L3RyPg0KPC90aGVhZD4NCjx0Ym9keT4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQ+PGtiZD5TdHJnPC9rYmQ+KzxrYmQ+UmV0dXJu4o+OPC9rYmQ+PC90ZD4NCjx0ZD48a2JkPkNtZOKMmDwva2JkPis8a2JkPlJldHVybuKPjjwva2JkPjwvdGQ+DQo8dGQ+Vm9sbGJpbGQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQ+PGtiZD5TdHJnPC9rYmQ+KzxrYmQ+Uzwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5DbWTijJgrUzwva2JkPjwvdGQ+DQo8dGQ+c3BlaWNoZXJuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkPjwvdGQ+DQo8dGQ+PGtiZD5DdHJsPC9rYmQ+KzxrYmQ+TDwva2JkPjwvdGQ+DQo8dGQ+QXVzd2FobCB6ZW50cmllcmVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkPjxrYmQ+U3RyZzwva2JkPis8a2JkPkFsdDwva2JkPis8a2JkPiZkYXJyOzwva2JkPiAoUGZlaWx0YXN0ZSk8L3RkPg0KPHRkPjxrYmQ+Q21k4oyYPC9rYmQ+KzxrYmQ+QWx04oylPC9rYmQ+KzxrYmQ+JmRhcnI7PC9rYmQ+IChQZmVpbHRhc3RlKTwvdGQ+DQo8dGQ+WmVpbGUga29waWVyZW4gdW5kIHVudGVyIGRpZXNlciBlaW5mJnV1bWw7Z2VuPC90ZD4NCjwvdHI+DQo8dHIgbGNhc3M9JnF1b3Q7cm93MSZxdW90Oz4NCjx0ZD48a2JkPlN0cmc8L2tiZD4rPGtiZD5BbHQ8L2tiZD4rPGtiZD4mdWFycjs8L2tiZD4gKFBmZWlsdGFzdGUpPC90ZD4NCjx0ZD48a2JkPkNtZOKMmDwva2JkPis8a2JkPkFsdOKMpTwva2JkPis8a2JkPiZ1YXJyOzwva2JkPiAoUGZlaWx0YXN0ZSk8L3RkPg0KPHRkPlplaWxlIGtvcGllcmVuIHVuZCAmdXVtbDtiZXIgZGllc2VyIGVpbmYmdXVtbDtnZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQ+PGtiZD5TdHJnPC9rYmQ+KzxrYmQ+Rjwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5DbWTijJg8L2tiZD4rPGtiZD5GPC9rYmQ+PC90ZD4NCjx0ZD5maW5kZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQ+PGtiZD5TdHJnPC9rYmQ+KzxrYmQ+Szwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5DbWTijJg8L2tiZD4rPGtiZD5HPC9rYmQ+PC90ZD4NCjx0ZD5uJmF1bWw7Y2hzdGVzIGZpbmRlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZD48a2JkPlN0cmc8L2tiZD4rPGtiZD5VbXNjaGFsdOKHpzwva2JkPis8a2JkPks8L2tiZD48L3RkPg0KPHRkPjxrYmQ+Q21k4oyYPC9rYmQ+KzxrYmQ+VW1zY2hhbHTih6c8L2tiZD4rPGtiZD5HPC9rYmQ+PC90ZD4NCjx0ZD52b3JoZXJpZ2VzIGZpbmRlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZD48a2JkPiZkYXJyOzwva2JkPiAoUGZlaWx0YXN0ZSk8L3RkPg0KPHRkPjxrYmQ+JmRhcnI7PC9rYmQ+IChQZmVpbHRhc3RlKSwgPGtiZD5DdHJsPC9rYmQ+KzxrYmQ+Tjwva2JkPjwvdGQ+DQo8dGQ+ZWluZSBaZWlsZSBuYWNoIHVudGVuIGdlaGVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkPjxrYmQ+JnVhcnI7PC9rYmQ+PC90ZD4NCjx0ZD48a2JkPiZ1YXJyOzwva2JkPiwgPGtiZD5DdHJsPC9rYmQ+KzxrYmQ+UDwva2JkPjwvdGQ+DQo8dGQ+ZWluZSBaZWlsZSBuYWNoIG9iZW4gZ2VoZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQ+PGtiZD5TdHJnPC9rYmQ+KzxrYmQ+RW5kZTwva2JkPiwgPGtiZD5TdHJnPC9rYmQ+KzxrYmQ+JmRhcnI7PC9rYmQ+PC90ZD4NCjx0ZD48a2JkPkNtZOKMmDwva2JkPis8a2JkPkVuZGU8L2tiZD4sIDxrYmQ+Q21k4oyYPC9rYmQ+KzxrYmQ+JmRhcnI7PC9rYmQ+PC90ZD4NCjx0ZD56dW0gU2VpdGVuZW5kZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZD48a2JkPiZsYXJyOzwva2JkPiAoUGZlaWx0YXN0ZSk8L3RkPg0KPHRkPjxrYmQ+JmxhcnI7PC9rYmQ+IChQZmVpbHRhc3RlKSwgPGtiZD5DdHJsPC9rYmQ+KzxrYmQ+Qjwva2JkPjwvdGQ+DQo8dGQ+bmFjaCBsaW5rcyBnZWhlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZD48a2JkPlN0cmc8L2tiZD4rPGtiZD5MPC9rYmQ+PC90ZD4NCjx0ZD48a2JkPkNtZOKMmDwva2JkPis8a2JkPkw8L2tiZD48L3RkPg0KPHRkPmdlaGUgenVyIFplaWxlICZoZWxsaXA7PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkPjxrYmQ+QWx0PC9rYmQ+KzxrYmQ+JnJhcnI7PC9rYmQ+LCA8a2JkPkVuZGU8L2tiZD48L3RkPg0KPHRkPjxrYmQ+Q21k4oyYPC9rYmQ+KzxrYmQ+JnJhcnI7PC9rYmQ+LCA8a2JkPkVuZGU8L2tiZD4sIDxrYmQ+Q3RybDwva2JkPis8a2JkPkU8L2tiZD48L3RkPg0KPHRkPnp1bSBaZWlsZW5lbmRlPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkPjxrYmQ+QWx0PC9rYmQ+KzxrYmQ+JmxhcnI7PC9rYmQ+LCA8a2JkPlBvczE8L2tiZD48L2tiZD48L3RkPg0KPHRkPjxrYmQ+Q21k4oyYPC9rYmQ+KzxrYmQ+JmxhcnI7PC9rYmQ+LCA8a2JkPlBvczE8L2tiZD4sIDxrYmQ+Q3RybDwva2JkPis8a2JkPkE8L2tiZD48L3RkPg0KPHRkPnp1bSBaZWlsZW5hbmZhbmc8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQ+PGtiZD5CaWxkJmRhcnI7PC9rYmQ+PC90ZD4NCjx0ZD48a2JkPkFsdOKMpTwva2JkPis8a2JkPkJpbGQmZGFycjs8L2tiZD4sIDxrYmQ+Q3RybDwva2JkPis8a2JkPlY8L2tiZD48L3RkPg0KPHRkPmVpbmUgU2VpdGUgbmFjaCB1bnRlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZD48a2JkPkJpbGQmdWFycjs8L2tiZD48L3RkPg0KPHRkPjxrYmQ+QWx04oylPC9rYmQ+KzxrYmQ+QmlsZCZ1YXJyOzwva2JkPjwvdGQ+DQo8dGQ+ZWluZSBTZWl0ZSBuYWNoIG9iZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQ+PGtiZD4mcmFycjs8L2tiZD4gKFBmZWlsdGFzdGUpPC90ZD4NCjx0ZD48a2JkPiZyYXJyOzwva2JkPiAoUGZlaWx0YXN0ZSksIDxrYmQ+Q3RybDwva2JkPis8a2JkPkY8L2tiZD48L3RkPg0KPHRkPm5hY2ggcmVjaHRzIGdlaGVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkPjxrYmQ+U3RyZzwva2JkPis8a2JkPlBvczE8L2tiZD4sIDxrYmQ+U3RyZzwva2JkPis8a2JkPiZ1YXJyOzwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5DbWTijJg8L2tiZD4rPGtiZD5Qb3MxPC9rYmQ+LCA8a2JkPkNtZOKMmDwva2JkPis8a2JkPiZ1YXJyOzwva2JkPjwvdGQ+DQo8dGQ+enVtIFNlaXRlbmFuZmFuZzwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZD48a2JkPlN0cmc8L2tiZD4rPGtiZD4mbGFycjs8L2tiZD48L3RkPg0KPHRkPjxrYmQ+QWx04oylPC9rYmQ+KzxrYmQ+JmxhcnI7PC9rYmQ+PC90ZD4NCjx0ZD56dW0gV29ydCBsaW5rcyBnZWhlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZD48a2JkPlN0cmc8L2tiZD4rPGtiZD4mcmFycjs8L2tiZD48L3RkPg0KPHRkPjxrYmQ+QWx04oylPC9rYmQ+KzxrYmQ+JnJhcnI7PC9rYmQ+PC90ZD4NCjx0ZD56dW0gV29ydCByZWNodHMgZ2VoZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQ+PGtiZD5UYWI8L2tiZD48L3RkPg0KPHRkPjxrYmQ+VGFiPC9rYmQ+PC90ZD4NCjx0ZD5laW5yJnV1bWw7Y2tlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZD48a2JkPlVtc2NoYWx04oenPC9rYmQ+KzxrYmQ+VGFiPC9rYmQ+PC90ZD4NCjx0ZD48a2JkPlVtc2NoYWx04oenPC9rYmQ+KzxrYmQ+VGFiPC9rYmQ+PC90ZD4NCjx0ZD5hdXNyJnV1bWw7Y2tlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZD48a2JkPkFsdDwva2JkPis8a2JkPiZkYXJyOzwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5BbHTijKU8L2tiZD4rPGtiZD4mZGFycjs8L2tiZD48L3RkPg0KPHRkPlplaWxlKG4pIG5hY2ggdW50ZW4gYmV3ZWdlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZD48a2JkPkFsdDwva2JkPis8a2JkPiZ1YXJyOzwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5BbHTijKU8L2tiZD4rPGtiZD4mdWFycjs8L2tiZD48L3RkPg0KPHRkPlplaWxlKG4pIG5hY2ggb2JlbiBiZXdlZ2VuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkPjxrYmQ+RWluZiZ1dW1sO2dlbjwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5FaW5mJnV1bWw7Z2VuPC9rYmQ+PC90ZD4NCjx0ZD4mdXVtbDtiZXJzY2hyZWliZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQ+PC90ZD4NCjx0ZD48a2JkPlNlaXRlJnVhcnI7PC9rYmQ+PC90ZD4NCjx0ZD5laW5lIFNlaXRlIG5hY2ggb2JlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZD48L3RkPg0KPHRkPjxrYmQ+U2VpdGUmZGFycjs8L2tiZD48L3RkPg0KPHRkPmVpbmUgU2VpdGUgbmFjaCB1bnRlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZD48a2JkPlN0cmc8L2tiZD4rPGtiZD5VbXNjaGFsdOKHpzwva2JkPis8a2JkPlo8L2tiZD4sIDxrYmQ+U3RyZzwva2JkPis8a2JkPlk8L2tiZD48L3RkPg0KPHRkPjxrYmQ+Q21k4oyYPC9rYmQ+KzxrYmQ+VW1zY2hhbHTih6c8L2tiZD4rPGtiZD5aPC9rYmQ+LCA8a2JkPkNtZOKMmDwva2JkPis8a2JkPlk8L2tiZD48L3RkPg0KPHRkPndpZWRlcmhvbGVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkPjxrYmQ+U3RyZzwva2JkPis8a2JkPkQ8L2tiZD48L3RkPg0KPHRkPjxrYmQ+Q21k4oyYPC9rYmQ+KzxrYmQ+RDwva2JkPjwvdGQ+DQo8dGQ+WmVpbGUgZW50ZmVybmVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkPjwvdGQ+DQo8dGQ+PGtiZD5DdHJsPC9rYmQ+KzxrYmQ+Szwva2JkPjwvdGQ+DQo8dGQ+YmlzIHp1bSBaZWlsZW5lbmRlIGVudGZlcm5lbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZD48L3RkPg0KPHRkPjxrYmQ+QWx04oylPC9rYmQ+KzxrYmQ+UiZ1dW1sO2Nr4oyrPC9rYmQ+PC90ZD4NCjx0ZD5iaXMgenVtIFplaWxlbmFuZmFuZyBlbnRmZXJuZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQ+PC90ZD4NCjx0ZD48a2JkPkFsdOKMpTwva2JkPis8a2JkPlImdXVtbDtja+KMqzwva2JkPiwgPGtiZD5DdHJsPC9rYmQ+KzxrYmQ+QWx04oylPC9rYmQ+KzxrYmQ+UiZ1dW1sO2Nr4oyrPC9rYmQ+PC90ZD4NCjx0ZD5Xb3J0IGxpbmtzIGVudGZlcm5lbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZD48L3RkPg0KPHRkPjxrYmQ+QWx04oylPC9rYmQ+KzxrYmQ+RW50Zjwva2JkPjwvdGQ+DQo8dGQ+V29ydCByZWNodHMgZW50ZmVybmVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkPjxrYmQ+U3RyZzwva2JkPis8a2JkPlI8L2tiZD48L3RkPg0KPHRkPjxrYmQ+Q21k4oyYPC9rYmQ+KzxrYmQ+QWx04oylPC9rYmQ+KzxrYmQ+Rjwva2JkPjwvdGQ+DQo8dGQ+ZXJzZXR6ZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQ+PGtiZD5TdHJnPC9rYmQ+KzxrYmQ+VW1zY2hhbHTih6c8L2tiZD4rPGtiZD5SPC9rYmQ+PC90ZD4NCjx0ZD48a2JkPkNtZOKMmDwva2JkPis8a2JkPlVtc2NoYWx04oenPC9rYmQ+KzxrYmQ+QWx04oylPC9rYmQ+KzxrYmQ+Rjwva2JkPjwvdGQ+DQo8dGQ+YWxsZXMgZXJzZXR6ZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQ+PGtiZD5TdHJnPC9rYmQ+KzxrYmQ+QTwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5DbWTijJg8L2tiZD4rPGtiZD5BPC9rYmQ+PC90ZD4NCjx0ZD5hbGxlcyBhdXN3JmF1bWw7aGxlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZD48a2JkPlVtc2NoYWx04oenPC9rYmQ+KzxrYmQ+JmRhcnI7PC9rYmQ+PC90ZD4NCjx0ZD48a2JkPlVtc2NoYWx04oenPC9rYmQ+KzxrYmQ+JmRhcnI7PC9rYmQ+PC90ZD4NCjx0ZD5uYWNoIHVudGVuIGF1c3cmYXVtbDtobGVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkPjxrYmQ+VW1zY2hhbHTih6c8L2tiZD4rPGtiZD4mbGFycjs8L2tiZD48L3RkPg0KPHRkPjxrYmQ+VW1zY2hhbHTih6c8L2tiZD4rPGtiZD4mbGFycjs8L2tiZD48L3RkPg0KPHRkPm5hY2ggbGlua3MgYXVzdyZhdW1sO2hsZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQ+PGtiZD5VbXNjaGFsdOKHpzwva2JkPis8a2JkPjxrYmQ+RW5kZTwva2JkPjwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5VbXNjaGFsdOKHpzwva2JkPis8a2JkPjxrYmQ+RW5kZTwva2JkPjwva2JkPjwvdGQ+DQo8dGQ+YmlzIHp1bSBaZWlsZW5lbmRlIGF1c3cmYXVtbDtobGVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkPjxrYmQ+VW1zY2hhbHTih6c8L2tiZD4rPGtiZD48a2JkPlBvczE8L2tiZD48L2tiZD48L3RkPg0KPHRkPjxrYmQ+VW1zY2hhbHTih6c8L2tiZD4rPGtiZD48a2JkPlBvczE8L2tiZD48L2tiZD48L3RkPg0KPHRkPmJpcyB6dW0gWmVpbGVuYW5mYW5nIGF1c3cmYXVtbDtobGVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkPjxrYmQ+VW1zY2hhbHTih6c8L2tiZD4rPGtiZD5CaWxkJmRhcnI7PC9rYmQ+PC90ZD4NCjx0ZD48a2JkPlVtc2NoYWx04oenPC9rYmQ+KzxrYmQ+U2VpdGUmZGFycjs8L2tiZD48L3RkPg0KPHRkPmJpcyB6dXIgbiZhdW1sO2Noc3RlbiBTZWl0ZSBhdXN3JmF1bWw7aGxlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZD48a2JkPlVtc2NoYWx04oenPC9rYmQ+KzxrYmQ+QmlsZCZ1YXJyOzwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5VbXNjaGFsdOKHpzwva2JkPis8a2JkPlNlaXRlJnVhcnI7PC9rYmQ+PC90ZD4NCjx0ZD5iaXMgenVyIHZvcmhlcmlnZW4gU2VpdGUgYXVzdyZhdW1sO2hsZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQ+PGtiZD5VbXNjaGFsdOKHpzwva2JkPis8a2JkPiZyYXJyOzwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5VbXNjaGFsdOKHpzwva2JkPis8a2JkPiZyYXJyOzwva2JkPjwvdGQ+DQo8dGQ+bmFjaCByZWNodHMgYXVzdyZhdW1sO2hsZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQ+PGtiZD5TdHJnPC9rYmQ+KzxrYmQ+VW1zY2hhbHTih6c8L2tiZD4rPGtiZD48a2JkPkVuZGU8L2tiZD4sPGtiZD5BbHTijKU8L2tiZD4rPGtiZD5VbXNjaGFsdOKHpzwva2JkPis8a2JkPiZkYXJyOzwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5DbWTijJg8L2tiZD4rPGtiZD5VbXNjaGFsdOKHpzwva2JkPis8a2JkPiZkYXJyOzwva2JkPjwvdGQ+DQo8dGQ+YmlzIHp1bSBTZWl0ZW5lbmRlIGF1c3cmYXVtbDtobGVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkPjxrYmQ+QWx0PC9rYmQ+KzxrYmQ+VW1zY2hhbHTih6c8L2tiZD4rPGtiZD4mcmFycjs8L2tiZD48L3RkPg0KPHRkPjxrYmQ+Q21k4oyYPC9rYmQ+KzxrYmQ+VW1zY2hhbHTih6c8L2tiZD4rPGtiZD4mcmFycjs8L2tiZD48L3RkPg0KPHRkPmJpcyB6dW0gWmVpbGVuZW5kZSBhdXN3JmF1bWw7aGxlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZD48a2JkPkFsdDwva2JkPis8a2JkPlVtc2NoYWx04oenPC9rYmQ+KzxrYmQ+JmxhcnI7PC9rYmQ+PC90ZD4NCjx0ZD48a2JkPkNtZOKMmDwva2JkPis8a2JkPlVtc2NoYWx04oenPC9rYmQ+KzxrYmQ+JmxhcnI7PC9rYmQ+PC90ZD4NCjx0ZD5iaXMgenVtIFplaWxlbmFuZmFuZyBhdXN3JmF1bWw7aGxlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZD48a2JkPlN0cmc8L2tiZD4rPGtiZD5VbXNjaGFsdOKHpzwva2JkPis8a2JkPjxrYmQ+UG9zMTwva2JkPixBbHTijKU8L2tiZD4rPGtiZD5VbXNjaGFsdOKHpzwva2JkPis8a2JkPiZ1YXJyOzwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5DbWTijJg8L2tiZD4rPGtiZD5VbXNjaGFsdOKHpzwva2JkPis8a2JkPiZ1YXJyOzwva2JkPjwvdGQ+DQo8dGQ+YmlzIHp1bSBTZWl0ZW5hbmZhbmcgYXVzdyZhdW1sO2hsZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQ+PGtiZD5VbXNjaGFsdOKHpzwva2JkPis8a2JkPiZ1YXJyOzwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5VbXNjaGFsdOKHpzwva2JkPis8a2JkPiZ1YXJyOzwva2JkPjwvdGQ+DQo8dGQ+bmFjaCBvYmVuIGF1c3cmYXVtbDtobGVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkPjxrYmQ+U3RyZzwva2JkPis8a2JkPlVtc2NoYWx04oenPC9rYmQ+KzxrYmQ+JmxhcnI7PC9rYmQ+PC90ZD4NCjx0ZD48a2JkPkFsdOKMpTwva2JkPis8a2JkPlVtc2NoYWx04oenPC9rYmQ+KzxrYmQ+JmxhcnI7PC9rYmQ+PC90ZD4NCjx0ZD5Xb3J0IGxpbmtzIGF1c3cmYXVtbDtobGVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkPjxrYmQ+U3RyZzwva2JkPis8a2JkPlVtc2NoYWx04oenPC9rYmQ+KzxrYmQ+JnJhcnI7PC9rYmQ+PC90ZD4NCjx0ZD48a2JkPkFsdOKMpTwva2JkPis8a2JkPlVtc2NoYWx04oenPC9rYmQ+KzxrYmQ+JnJhcnI7PC9rYmQ+PC90ZD4NCjx0ZD5Xb3J0IHJlY2h0cyBhdXN3JmF1bWw7aGxlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZD48L3RkPg0KPHRkPjxrYmQ+Q3RybDwva2JkPis8a2JkPk88L2tiZD48L3RkPg0KPHRkPlplaWxlIHRyZW5uZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQ+PGtiZD5TdHJnPC9rYmQ+KzxrYmQ+Nzwva2JkPjwvdGQ+DQo8dGQ+PGtiZD5DbWTijJg8L2tiZD4rPGtiZD43PC9rYmQ+PC90ZD4NCjx0ZD5Lb21tZW50YXIgZWluLS9hdXNzY2hhbHRlbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZD48a2JkPlN0cmc8L2tiZD4rPGtiZD5UPC9rYmQ+PC90ZD4NCjx0ZD48a2JkPkN0cmw8L2tiZD4rPGtiZD5UPC9rYmQ+PC90ZD4NCjx0ZD5aZWljaGVuIG5hY2ggcmVjaHRzIHRyYW5zcG9ydGllcmVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkPjxrYmQ+U3RyZzwva2JkPis8a2JkPlo8L2tiZD48L3RkPg0KPHRkPjxrYmQ+Q21k4oyYPC9rYmQ+KzxrYmQ+Wjwva2JkPjwvdGQ+DQo8dGQ+ciZ1dW1sO2NrZ2EmYXVtbDtuZ2lnIG1hY2hlbjwvdGQ+DQo8L3RyPg0KPC90Ym9keT4NCjwvdGFibGU+JzsNCiRsYW5nWydoZWxwX2Zyb250ZW5kX3RpdGxlJ10gPSAnRnJvbnQtRW5kJzsNCiRsYW5nWydoZWxwX2Zyb250ZW5kX2NvbnRlbnQnXSA9ICc8cD5UaGlzIE1vZHVsZSBhbmQgQWNlIFNjcmlwdCBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgRnJvbnRlbmQgU3ludGF4aGlnaGxpZ2h0ZXIuPGJyIC8+DQpUbyBtYWtlIGl0IHdvcmsgeW91IGhhdmUgdG8gaW5jbHVkZSBqUXVlcnkgRnJhbWV3b3JrLCBmb3IgZXhhbXBsZSB1c2luZyBDTVNNUyB7Y21zX2pxdWVyeX0gdGFnIGFuZCBhcyB3ZWxsIGluY2x1ZGUge0FjZUVkaXRvcn0gaW4geW91ciBwYWdlIHR3aWNlLiBGaXJzdCBhZGQgdGhlIG1vZHVsZSB0YWcgaW4geW91ciAmbHQ7aGVhZCZndDsgc2VjdGlvbiBvZiBUZW1wbGF0ZSBvciBpbiAmcXVvdDtQYWdlIFNwZWNpZmljIE1ldGRhdGEmcXVvdDsgZmllbGQgb2YgeW91ciBDb250ZW50IHBhZ2UsIGxpa2Uge0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O30gYW5kIGFub3RoZXIgY2FsbCB0byBzcGVjaWZ5IHdoaWNoIGFyZWEgc2hvdWxkIGJlIGhpZ2hsaWdodGVkLCBmb3IgZXhhbXBsZSB7QWNlRWRpdG9yIGRpdmlkPSYjMDM5O2ZvbyYjMDM5O30sIHdoaWNoIHdvdWxkIHRhcmdldCBhIHBhZ2UgZWxlbWVudCB3aXRoIGlkIDxlbT5mb288L2VtPi48L3A+DQo8aDM+U28gaG93IGRvIHlvdSB1c2UgaXQ/PC9oMz4NCjxwPkZpcnN0IGluY2x1ZGUgalF1ZXJ5IGFuZCBNb2R1bGUgdGFnIGluIHlvdXIgUGFnZSAmbHQ7aGVhZCZndDsgYXJlYSwgZm9yIGV4YW1wbGUgaW4gJnF1b3Q7UGFnZSBTcGVjaWZpYyBNZXRkYXRhJnF1b3Q7OjwvcD4NCgk8cHJlPg0KCXtjbXNfanF1ZXJ5fQ0KCXtBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2hlYWQmIzAzOTt9DQoJPC9wcmU+DQo8cD5UaGlzIGluY2x1ZGVzIG5lZWRlZCBzY3JpcHRzIGZvciBBY2UgU3ludGF4aGlnaGxpZ2h0ZXIgdG8gd29yay48YnIgLz4NCkluIE1vZHVsZXMgQWRtaW4gaW50ZXJmYWNlIHlvdSBjYW4gc2VsZWN0IGRlZmF1bHQgc2V0dGluZ3MgZm9yIHlvdXIgJiMwMzk7aGVhZCYjMDM5OyBhY3Rpb24gb3IgdXNlIHBhcmFtZXRlciBtb2Rlcz0mIzAzOTtodG1sLGphdmFzY3JpcHQmIzAzOTsgYW5kIHRoZW1lcz0mIzAzOTt0ZXh0bWF0ZSYjMDM5OyB3aGljaCB3b3VsZCBvdmVycmlkZSBzZWxlY3RlZCBQcmVmZXJlbmNlcy48L3A+DQo8cD5Ob3cgd2hlbiB5b3UgaGF2ZSBuZWVkZWQgc2NyaXB0cyBpbmNsdWRlZCwgb25lIG1vcmUgTW9kdWxlIHRhZyBjYWxsIGlzIG5lZWRlZCAoZm9yIGV4YW1wbGUgaW4geW91ciBDb250ZW50IEVkaXRvciBhcmVhKSB0byBzcGVjaWZ5IHdoaWNoIGFyZWEgb2YgeW91ciBQYWdlIHNob3VsZCBiZSBoaWdobGlnaHRlZC48L3A+DQoJPHByZT4NCgl7QWNlRWRpdG9yIGRpdmlkPSYjMDM5O3NvbWUtaWQmIzAzOTt9DQoJPC9wcmU+DQo8cD5UaGlzIHRhZyBpbmNsdWRlcyBuZWVkZWQgU2NyaXB0IGFuZCBTdHlsZSB0aGF0IGlzIHVzZWQgdG8gSGlnaGxpZ2h0IHNlbGVjdGVkIGVsZW1lbnQgd2l0aCBzcGVjaWZpZWQgaWQuPGJyIC8+DQpBbGwgeW91IG5lZWQgdGhlbiBpcyB3cml0ZSB5b3VyIENvZGUgdGhhdCB5b3Ugd2FudCB0byBIaWdobGlnaHQgYW5kIHdyYXAgaXQgaW5zaWRlIGFuIGVsZW1lbiBsaWtlICZsdDtkaXYmZ3Q7IHdpdGggc3BlY2lmaWVkIGlkLjwvcD4nOw0KJGxhbmdbJ2hlbHBfYWJvdXRfdGl0bGUnXSA9ICcmVXVtbDtiZXInOw0KJGxhbmdbJ2hlbHBfYWJvdXRfdGV4dCddID0gJzxoMz5TdXBwb3J0PC9oMz4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAxMiwgR29yYW4gSWxpYyA8YSBocmVmPSJtYWlsdG86dW5pcXUzZUBnbWFpbC5jb20iPjx1bmlxdTNlQGdtYWlsLmNvbT48L2E+IDxhIGhyZWY9Imh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0IiByZWw9ImV4dGVybmFsIj53d3cuaWNoLW1hY2gtZGFzLmF0PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4NCgk8aDM+VGVhbTwvaDM+DQoJPHVsPg0KCQk8bGk+R29yYW4gSWxpYyAodW5pcXUzKSBnLmlsaWNAaS1hcnRzLmV1IDxiciAvPnd3dy5pY2gtbWFjaC1kYXMuYXQ8L2xpPgkNCgkJPGxpPlJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMCkgY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyAgPGJyIC8+d3d3LmNhbGd1eTEwMDAuY29tPC9saT4JCQ0KCQk8bGk+Sm9uYXRoYW4gU2NobWlkIChGb2FseSopIGhpQGpvbmF0aGFuc2NobWlkLmRlIDxiciAvPnd3dy5qb25hdGhhbnNjaG1pZC5kZTwvbGk+DQoJPC91bD4NCic7DQokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPGgzPlZlcnNpb24gMC4xPC9oMz4NCjx1bD4NCgk8bGk+SXQmIzAzOTtzIGZyZXNoISBOb3RoaW5nIGNoYW5nZWQgeWV0ITwvbGk+DQoJPGxpPlVzaW5nIEFjZSBWZXJzaW9uIDAuMi4wPC9saT4NCjwvdWw+DQo8aDM+VmVyc2lvbiAwLjI8L2gzPg0KPHVsPg0KCTxsaT5BZGRlZCBDVFJMLVMgS2V5YmluZGluZzwvbGk+DQoJPGxpPkFkZGVkIEZ1bGxzY3JlZW5tb2RlPC9saT4NCgk8bGk+QWRkZWQgRnJvbnRlbmQgSGlnaGxpZ2h0aW5nPC9saT4NCgk8bGk+VXBkYXRlZCBBY2U8L2xpPg0KPC91bD4NCjxoMz5WZXJzaW9uIDAuMi4xPC9oMz4NCjx1bD4NCgk8bGk+QWRkZWQgSW50ZXJuZXQgRXhwbG9yZXIgcHJlZmVyZW5jZTwvbGk+DQoJPGxpPlVwZGF0ZWQgQUNFIHdpdGggdGhlbWVzPC9saT4NCjwvdWw+DQo8aDM+VmVyc2lvbiAwLjIuMjwvaDM+DQo8dWw+DQoJPGxpPkZpeCBmb3IgU2FmYXJpL01hYzwvbGk+DQo8L3VsPg0KPGgzPlZlcnNpb24gMC4yLjM8L2gzPg0KPHVsPg0KICAgIDxsaT5VcGRhdGVkIHRvIGxhdGVzdCBhY2UgZnJvbSBnaXRodWI8L2xpPg0KICAgIDxsaT5BZGRlZCBhZGRpdGlvbmFsIHByZWZlcmVuY2VzIChNb2RpZnkgVGVtcGxhdGVzLCBBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlKTwvbGk+DQogICAgPGxpPkFkZGVkIGFiaWxpdHkgdG8gY2hhbmdlIEFjZUVkaXRvciBwcmVmZXJlbmNlcyBwZXIgdXNlcjwvbGk+DQogICAgPGxpPk1vdmVkIG1vZHVsZSBmcm9tIGV4dGVuaW9ucyB0byBteXByZWZzPC9saT4NCjwvdWw+DQo8aDM+VmVyc2lvbiAwLjIuMy4xPC9oMz4NCjx1bD4NCiAgICA8bGk+TW9kZSBwcmVmZXJlbmNlIGJ1Z2ZpeDwvbGk+DQo8L3VsPg0KPGgzPlZlcnNpb24gMC4yLjQuMTwvaDM+DQo8dWw+DQogICAgPGxpPlVwZGF0ZWQgdG8gbGF0ZXN0IEFjZSBidWlsZDwvbGk+DQogICAgPGxpPkFkZGVkIFRvb2xiYXI8L2xpPg0KPC91bD4NCjxoMz5Sb2FkbWFwPC9oMz4NCjx1bD4NCiAgICA8bGk+PGRlbD5BZGQgRnJvbnRlbmQgU3ludGF4aGlnaGxpZ2h0aW5nPC9kZWw+PC9saT4NCiAgICA8bGk+PGRlbD5BZGQgRnVsbHNjcmVlbm1vZGU8L2RlbD48L2xpPg0KICAgIDxsaT48ZGVsPkFkZCBLZXliaW5kaW5nIChDVFJMK1MpPC9kZWw+PC9saT4NCiAgICA8bGk+PGRlbD5BZGQgRWRpdG9yIGJlaGF2aW9yIChWaW0sIEVNYWNzKTwvZGVsPjwvbGk+DQogICAgPGxpPjxkZWw+TWF5YmUgYWRkIFRvb2xiYXI8L2RlbD48L2xpPg0KPC91bD4nOw0KJGxhbmdbJ3FjYSddID0gJ1AwLTE0NTg0NTA2NjQtMTI4NDU3MzA4NDkxOCc7DQokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xOTk5MTY4NjU1LjEzNDI0NDA1MTEuMTM0MjQ0MDUxMS4xMzQyNDQwNTExLjEnOw0KJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOw0KJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTM0MjQ0MDUxMS4xLjEudXRtY2NuPShkaXJlY3QpfHV0bWNzcj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsNCiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsNCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdBY2VFZGl0b3InOw0KJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdBY2VFZGl0b3IgaXMgYSBTeW50YXhoaWdobGlnaHRlciBtb2R1bGUgdXNpbmcgPHN0cm9uZz5BY2U8L3N0cm9uZz4gYSBzdGFuZGFsb25lIGNvZGUgZWRpdG9yIHdyaXR0ZW4gaW4gSmF2YVNjcmlwdC48YnIgLz48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IEludGVybmV0IEV4cGxvcmVyIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkISc7DQokbGFuZ1snc2V0dGluZ3NfdGFiJ10gPSAnUHImZWFjdXRlO2YmZWFjdXRlO3JlbmNlcyc7DQokbGFuZ1snZnJvbnRlbmRzZXR0aW5nc190YWInXSA9ICdQciZlYWN1dGU7ZiZlYWN1dGU7cmVuY2VzIGR1IEZyb250ZW5kJzsNCiRsYW5nWydmcm9udGVuZF9oZWFkX3NldHRpbmdzJ10gPSAnRnJvbnRlbmQgSGVhZCBQcmVmZXJlbmNlcyc7DQokbGFuZ1snZnJvbnRlbmRfc3ludGF4YXJlYV9zZXR0aW5ncyddID0gJ0Zyb250ZW5kIFN5bnRheGFyZWEgUHJlZmVyZW5jZXMnOw0KJGxhbmdbJ2hlYWRfZGVzY3JpcHRpb24nXSA9ICdUaGVzZSBwcmVmZXJlbmNlcyBhcmUgdXNlZCBmb3IgZGVmYXVsdCBzZXR0aW5ncyBvZiBBY2Ugc2NyaXB0cyB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiBwYWdlIDxjb2RlPjxoZWFkPjwvY29kZT4gd2hlbiBjYWxsaW5nIDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2hlYWQmIzAzOTt9PC9jb2RlPiBmcm9tIFBhZ2UgU3BlY2lmaWMgTWV0YWRhdGEgb3IgVGVtcGxhdGUuJzsNCiRsYW5nWydjb250ZW50X2Rlc2NyaXB0aW9uJ10gPSAnVGhlc2UgcHJlZmVyZW5jZXMgYXJlIHVzZWQgZm9yIGRlZmF1bHQgc2V0dGluZ3Mgb2YgU3ludGF4aGlnaGxpZ2h0aW5nIGFyZWEgd2hlbiBjYWxsaW5nIDxjb2RlPntBY2VFZGl0b3IgZGl2aWQ9JiMwMzk7ZWRpdG9yJiMwMzk7fTwvY29kZT4gdGFnIHdpdGhpbiBhIFBhZ2UuJzsNCiRsYW5nWydzeW50YXhhcmVhZGVzY3JpcHRpb24nXSA9ICdUaGVzZSBwcmVmZXJlbmNlcyBhcmUgdXNlZCBmb3IgZGVmYXVsdCBzZXR0aW5ncyBvZiBBY2UgYmVoYXZpb3Igd2hlbiBjYWxsaW5nIDxjb2RlPntBY2VFZGl0b3IgZGl2aWQ9JiMwMzk7Zm9vJiMwMzk7fTwvY29kZT4gZnJvbSBhIFBhZ2Ugb3IgVGVtcGxhdGUnOw0KJGxhbmdbJ2V4YW1wbGVfZG9jdW1lbnQnXSA9ICdEb2N1bWVudCc7DQokbGFuZ1snd2lkdGhfdGl0bGUnXSA9ICdFZGl0b3Igd2lkdGggKGluIGVtKSc7DQokbGFuZ1snaGVpZ2h0X3RpdGxlJ10gPSAnRWRpdG9yIGhlaWdodCAoaW4gZW0pJzsNCiRsYW5nWydlbmFibGVfaWUnXSA9ICdFbmFibGUgSW50ZXJuZXQgRXhwbG9yZXInOw0KJGxhbmdbJ3VzZV91bmNvbXByZXNzZWQnXSA9ICdVc2UgdW5jb21wcmVzc2VkJzsNCiRsYW5nWyd1c2VfdW5jb21wcmVzc2VkX3RleHQnXSA9ICdNaWdodCBoZWxwIGlmIHlvdSBoYXZlIHByb2JsZW1zIHVzaW5nIGluIFNhZmFyaS4nOw0KJGxhbmdbJ2VuYWJsZV9pZWRlc2NyaXB0aW9uJ10gPSAnQWNlIFN5bnRheGhpZ2hsaWdodGVyIGRvZXMgbm90IGJlaGF2ZSBwcm9wZXJseSB3aGVuIHVzaW5nIEludGVybmV0IEV4cGxvcmVyLiBFbmFibGUgdGhpcyBhdCB5b3VyIG93biByaXNrISc7DQokbGFuZ1snZnJvbnRlbmRfd2lkdGhfdGl0bGUnXSA9ICdGcm9udGVuZCBTeW50YXhhcmVhIHdpZHRoIChpbiBweCknOw0KJGxhbmdbJ2Zyb250ZW5kX2hlaWdodF90aXRsZSddID0gJ0Zyb250ZW5kIFN5bnRheGFyZWEgaGVpZ2h0IChpbiBweCknOw0KJGxhbmdbJ3N5bnRheF9tb2RlJ10gPSAnTW9kZSc7DQokbGFuZ1sndGhlbWVzJ10gPSAnVGhlbWUnOw0KJGxhbmdbJ2ZvbnRfc2l6ZSddID0gJ0ZvbnQgU2l6ZSc7DQokbGFuZ1snZnVsbF9saW5lJ10gPSAnRnVsbCBMaW5lIFNlbGVjdGlvbic7DQokbGFuZ1snaGlnaGxpZ2h0X2FjdGl2ZSddID0gJ0hpZ2hsaWdodCBBY3RpdmUgTGluZSc7DQokbGFuZ1snc2hvd19pbnZpc2libGVzJ10gPSAnU2hvdyBJbnZpc2libGVzJzsNCiRsYW5nWydwZXJzaXN0ZW50X2hzY3JvbGwnXSA9ICdQZXJzaXRlbnQgSFNjcm9sbCc7DQokbGFuZ1sna2V5X2JpbmRpbmcnXSA9ICdLZXkgQmluZGluZyc7DQokbGFuZ1snc29mdF93cmFwJ10gPSAnU29mdCBXcmFwJzsNCiRsYW5nWydzaG93X2d1dHRlciddID0gJ1Nob3cgR3V0dGVyJzsNCiRsYW5nWydwcmludF9tYXJnaW4nXSA9ICdTaG93IFByaW50IE1hcmdpbic7DQokbGFuZ1snc29mdF90YWInXSA9ICdVc2UgU29mdCBUYWInOw0KJGxhbmdbJ2hpZ2hsaWdodF9zZWxlY3RlZCddID0gJ0hpZ2hsaWdodCBzZWxlY3RlZCB3b3JkJzsNCiRsYW5nWydlbmFibGVfYmVoYXZpb3JzJ10gPSAnRW5hYmxlIEJlaGF2aW9ycyc7DQokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnUHJldmlldyc7DQokbGFuZ1snanMnXSA9ICdKYXZhU2NyaXB0JzsNCiRsYW5nWydwbGFpbiddID0gJ1BsYWluIFRleHQnOw0KJGxhbmdbJ3N2ZyddID0gJ1NWRyc7DQokbGFuZ1snaHRtbCddID0gJ0hUTUwnOw0KJGxhbmdbJ2NzcyddID0gJ0NTUyc7DQokbGFuZ1snc2NzcyddID0gJ1NDU1MnOw0KJGxhbmdbJ2NvZmZlZSddID0gJ0NvZmZlZVNjcmlwdCc7DQokbGFuZ1snanNvbiddID0gJ0pTT04nOw0KJGxhbmdbJ3B5dGhvbiddID0gJ1B5dGhvbic7DQokbGFuZ1sncnVieSddID0gJ1J1YnknOw0KJGxhbmdbJ3BlcmwnXSA9ICdQZXJsJzsNCiRsYW5nWydwaHAnXSA9ICdQSFAnOw0KJGxhbmdbJ2phdmEnXSA9ICdKYXZhJzsNCiRsYW5nWydjc2hhcnAnXSA9ICdDIyc7DQokbGFuZ1snY19jcHAnXSA9ICdDKysnOw0KJGxhbmdbJ2Nsb2p1cmUnXSA9ICdDbG9qdXJlJzsNCiRsYW5nWydjb2xkZnVzaW9uJ10gPSAnQ29sZGZ1c2lvbic7DQokbGFuZ1snaGF4ZSddID0gJ0hheGUnOw0KJGxhbmdbJ2xhdGV4J10gPSAnTGF0ZXgnOw0KJGxhbmdbJ2x1YSddID0gJ0x1YSc7DQokbGFuZ1snbWFya2Rvd24nXSA9ICdNYXJrZG93bic7DQokbGFuZ1sncG93ZXJzaGVsbCddID0gJ1Bvd2VyU2hlbGwnOw0KJGxhbmdbJ3NxbCddID0gJ1NRTCc7DQokbGFuZ1sncGdzcWwnXSA9ICdwZ1NRTCc7DQokbGFuZ1snb2NhbWwnXSA9ICdPQ2FtbCc7DQokbGFuZ1sndGV4dGlsZSddID0gJ1RleHRpbGUnOw0KJGxhbmdbJ2dyb292eSddID0gJ0dyb292eSc7DQokbGFuZ1snc2NhbGEnXSA9ICdTY2FsYSc7DQokbGFuZ1snY2xvdWRzJ10gPSAnQ2xvdWRzJzsNCiRsYW5nWydjaHJvbWUnXSA9ICdDaHJvbWUnOw0KJGxhbmdbJ2Nsb3Vkc19taWRuaWdodCddID0gJ0Nsb3VkcyBNaWRuaWdodCc7DQokbGFuZ1snY29iYWx0J10gPSAnQ29iYWx0JzsNCiRsYW5nWydjcmltc29uX2VkaXRvciddID0gJ0NyaW1zb24gRWRpdG9yJzsNCiRsYW5nWydkYXduJ10gPSAnRGF3bic7DQokbGFuZ1snZHJlYW13ZWF2ZXInXSA9ICdEcmVhbXdlYXZlcic7DQokbGFuZ1snZWNsaXBzZSddID0gJ0VjbGlwc2UnOw0KJGxhbmdbJ2lkbGVfZmluZ2VycyddID0gJ2lkbGVGaW5nZXJzJzsNCiRsYW5nWydrcl90aGVtZSddID0gJ2tyVGhlbWUnOw0KJGxhbmdbJ21lcmJpdm9yZSddID0gJ01lcmJpdm9yZSc7DQokbGFuZ1snbWVyYml2b3JlX3NvZnQnXSA9ICdNZXJiaXZvcmUgU29mdCc7DQokbGFuZ1snbW9ub19pbmR1c3RyaWFsJ10gPSAnTW9ubyBJbmR1c3RyaWFsJzsNCiRsYW5nWydtb25va2FpJ10gPSAnTW9ub2thaSc7DQokbGFuZ1sncGFzdGVsX29uX2RhcmsnXSA9ICdQYXN0ZWwgb24gZGFyayc7DQokbGFuZ1snc29sYXJpemVkX2RhcmsnXSA9ICdTb2xhcml6ZWQgRGFyayc7DQokbGFuZ1snc29sYXJpemVkX2xpZ2h0J10gPSAnU29sYXJpemVkIExpZ2h0JzsNCiRsYW5nWyd0ZXh0bWF0ZSddID0gJ1RleHRNYXRlJzsNCiRsYW5nWyd0b21vcnJvdyddID0gJ1RvbW9ycm93JzsNCiRsYW5nWyd0b21vcnJvd19uaWdodCddID0gJ1RvbW9ycm93IE5pZ2h0JzsNCiRsYW5nWyd0b21vcnJvd19uaWdodF9icmlnaHQnXSA9ICdUb21vcnJvdyBOaWdodCBCcmlnaHQnOw0KJGxhbmdbJ3RvbW9ycm93X25pZ2h0X2JsdWUnXSA9ICdUb21vcnJvdyBOaWdodCBCbHVlJzsNCiRsYW5nWyd0b21vcnJvd19uaWdodF9laWdodGllcyddID0gJ1RvbW9ycm93IE5pZ2h0IEVpZ2h0aWVzJzsNCiRsYW5nWyd0d2lsaWdodCddID0gJ1R3aWxpZ2h0JzsNCiRsYW5nWyd2aWJyYW50X2luayddID0gJ1ZpYnJhbnQgSW5rJzsNCiRsYW5nWydhY2UnXSA9ICdBY2UnOw0KJGxhbmdbJ3ZpbSddID0gJ1ZpbSc7DQokbGFuZ1snZW1hY3MnXSA9ICdFTWFjcyc7DQokbGFuZ1snY3VzdG9tJ10gPSAnQ3VzdG9tJzsNCiRsYW5nWydvZmYnXSA9ICdPZmYnOw0KJGxhbmdbJzQwJ10gPSAnNDAgQ2hhcnMnOw0KJGxhbmdbJzgwJ10gPSAnODAgQ2hhcnMnOw0KJGxhbmdbJzEwMCddID0gJzEwMCBDaGFycyc7DQokbGFuZ1snMTQwJ10gPSAnMTQwIENoYXJzJzsNCiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdTYXZlIFByZWZlcmVuY2VzJzsNCiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnWW91ciBBY2VFZGl0b3Igc2V0dGluZ3MgaGF2ZSBiZWVuIHNhdmVkJzsNCiRsYW5nWydmcm9udGVuZHNldHRpbmdzc2F2ZWQnXSA9ICdZb3VyIEFjZUVkaXRvciBGcm9udGVuZCBzZXR0aW5ncyBoYXZlIGJlZW4gc2F2ZWQnOw0KJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnQWNlRWRpdG9yIFN1Y2Nlc3NmdWxseSBJbnN0YWxsZWQhIFNldCAmcXVvdDtNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcyZxdW90OyBwZXJtaXNzaW9ucyB0byB1c2UgdGhpcyBtb2R1bGUhJzsNCiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnQWNlRWRpdG9yIFN1Y2Nlc3NmdWxseSBVbmluc3RhbGxlZCc7DQokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1JlYWxseT8gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCBBY2VFZGl0b3I/IFRoaW5rIGFnYWluISc7DQokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICdNaXNzaW5nIFBlcm1pc3Npb24hLiBTZXQgJnF1b3Q7TW9kaWZ5IFRlbXBsYXRlcyZxdW90OyBvciAmcXVvdDtBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlJnF1b3Q7IHBlcm1pc3Npb25zIHRvIHVzZSB0aGlzIG1vZHVsZS4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fYWN0aW9uJ10gPSAnaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGFjdGlvbiBvZiBNb2R1bGUgdGFnLiBQb3NzaWJsZSB2YWx1ZXMgYXJlICYjMDM5O2RlZmF1bHQmIzAzOTsgYW5kICYjMDM5O2hlYWQmIzAzOTsuIEJvdGggYXJlIG5lZWRlZCBmb3IgY29ycmVjdCBGcm9udGVuZCBTeW50YXhoaWdobGlnaHRpbmcgZnVuY3Rpb24uIDxiciAvPlBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQoJPGxpPmhlYWQ8L2xpPg0KCTxsaT5kZWZhdWx0PC9saT4NCjwvdWw+JzsNCiRsYW5nWydoZWxwX3BhcmFtX21vZGVzJ10gPSAnaXMgdXNlZCB3aXRoIDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2hlYWQmIzAzOTt9PC9jb2RlPi4gWW91IGNhbiBpbmNsdWRlIG11bHRpcGxlIGNvbW1hIHNlcGFyYXRlZCAmIzAzOTttb2RlcyYjMDM5OyB0aGF0IHlvdSB3aWxsIGJlIHVzaW5nIG9uIHlvdXIgd2Vic2l0ZS4gVGhpcyBzaG91bGQgYmUgaW5jbHVkZWQgaW4geW91ciA8aGVhZD4gb2YgVGVtcGxhdGUgb3IgUGFnZSBzcGVjaWZpYyBNZXRhZGF0YS4gVGhpcyB3aWxsIG92ZXJyaWRlIHlvdSBQcmVmZXJlbmNlcyBzZWxlY3RlZCBpbiBNb2R1bGUgQWRtaW4gYXJlYS4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCgk8bGk+amF2YXNjcmlwdDwvbGk+IA0KCTxsaT5wbGFpbjwvbGk+IA0KCTxsaT5zdmc8L2xpPiANCgk8bGk+aHRtbDwvbGk+DQoJPGxpPmNzczwvbGk+DQoJPGxpPnNjc3M8L2xpPg0KCTxsaT5jb2ZmZWU8L2xpPg0KCTxsaT5qc29uPC9saT4NCgk8bGk+cHl0aG9uPC9saT4NCgk8bGk+cnVieTwvbGk+DQoJPGxpPnBlcmw8L2xpPg0KCTxsaT5waHA8L2xpPg0KCTxsaT5qYXZhPC9saT4NCgk8bGk+Y3NoYXJwPC9saT4NCgk8bGk+Y19jcHA8L2xpPg0KCTxsaT5jbG9qdXJlPC9saT4NCgk8bGk+b2NhbWw8L2xpPg0KCTxsaT50ZXh0aWxlPC9saT4NCgk8bGk+Z3Jvb3Z5PC9saT4NCgk8bGk+c2NhbGE8L2xpPg0KPC91bD4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fdGhlbWVzJ10gPSAnaXMgdXNlZCB3aXRoIDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2hlYWQmIzAzOTt9PC9jb2RlPi4gWW91IGNhbiBpbmNsdWRlIG11bHRpcGxlIGNvbW1hIHNlcGFyYXRlZCAmIzAzOTt0aGVtZXMmIzAzOTsgdGhhdCB5b3Ugd2lsbCBiZSB1c2luZyBvbiB5b3VyIHdlYnNpdGUuIFRoaXMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHlvdXIgPGhlYWQ+IG9mIFRlbXBsYXRlIG9yIFBhZ2Ugc3BlY2lmaWMgTWV0YWRhdGEuIFRoaXMgd2lsbCBvdmVycmlkZSB5b3UgUHJlZmVyZW5jZXMgc2VsZWN0ZWQgaW4gTW9kdWxlIEFkbWluIGFyZWEuIDxiciAvPlBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQoJPGxpPmNsb3VkczwvbGk+IA0KCTxsaT5jbG91ZHNfbWlkbmlnaHQ8L2xpPiANCgk8bGk+Y29iYWx0PC9saT4gDQoJPGxpPmNyaW1zb25fZWRpdG9yPC9saT4NCgk8bGk+ZGF3bjwvbGk+DQoJPGxpPmVjbGlwc2U8L2xpPg0KCTxsaT5pZGxlX2ZpbmdlcnM8L2xpPg0KCTxsaT5rcl90aGVtZTwvbGk+DQoJPGxpPm1lcmJpdm9yZTwvbGk+DQoJPGxpPm1lcmJpdm9yZV9zb2Z0PC9saT4NCgk8bGk+bW9ub19pbmR1c3RyaWFsPC9saT4NCgk8bGk+bW9ub2thaTwvbGk+DQoJPGxpPnBhc3RlbF9vbl9kYXJrPC9saT4NCgk8bGk+c29sYXJpemVkX2Rhcms8L2xpPg0KCTxsaT5zb2xhcml6ZWRfbGlnaHQ8L2xpPg0KCTxsaT50ZXh0bWF0ZTwvbGk+DQoJPGxpPnR3aWxpZ2h0PC9saT4NCgk8bGk+dmlicmFudF9pbms8L2xpPg0KPC91bD4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fbW9kZSddID0gJ2lzIHVzZWQgd2l0aGluIGEgcGFnZSB3aXRoIDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2RlZmF1bHQmIzAzOTt9PC9jb2RlPiBtb2R1bGUgdGFnLiBUaGlzIHNwZWNpZmllcyBTeW50YXhoaWdobGlnaHRlciBtb2RlIGZvciBzcGVjaWZpYyBjb2RlIGFyZWEuIDxiciAvPlBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQoJPGxpPmphdmFzY3JpcHQ8L2xpPiANCgk8bGk+cGxhaW48L2xpPiANCgk8bGk+c3ZnPC9saT4gDQoJPGxpPmh0bWw8L2xpPg0KCTxsaT5jc3M8L2xpPg0KCTxsaT5zY3NzPC9saT4NCgk8bGk+Y29mZmVlPC9saT4NCgk8bGk+anNvbjwvbGk+DQoJPGxpPnB5dGhvbjwvbGk+DQoJPGxpPnJ1Ynk8L2xpPg0KCTxsaT5wZXJsPC9saT4NCgk8bGk+cGhwPC9saT4NCgk8bGk+amF2YTwvbGk+DQoJPGxpPmNzaGFycDwvbGk+DQoJPGxpPmNfY3BwPC9saT4NCgk8bGk+Y2xvanVyZTwvbGk+DQoJPGxpPm9jYW1sPC9saT4NCgk8bGk+dGV4dGlsZTwvbGk+DQoJPGxpPmdyb292eTwvbGk+DQoJPGxpPnNjYWxhPC9saT4NCjwvdWw+JzsNCiRsYW5nWydoZWxwX3BhcmFtX3RoZW1lJ10gPSAnaXMgdXNlZCB3aXRoaW4gYSBwYWdlIHdpdGggPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249JiMwMzk7ZGVmYXVsdCYjMDM5O308L2NvZGU+IG1vZHVsZSB0YWcuIFRoaXMgc3BlY2lmaWVzIFN5bnRheGhpZ2hsaWdodGVyIHRoZW1lIGZvciBzcGVjaWZpYyBjb2RlIGFyZWEuIDxiciAvPlBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQoJPGxpPmNsb3VkczwvbGk+IA0KCTxsaT5jbG91ZHNfbWlkbmlnaHQ8L2xpPiANCgk8bGk+Y29iYWx0PC9saT4gDQoJPGxpPmNyaW1zb25fZWRpdG9yPC9saT4NCgk8bGk+ZGF3bjwvbGk+DQoJPGxpPmVjbGlwc2U8L2xpPg0KCTxsaT5pZGxlX2ZpbmdlcnM8L2xpPg0KCTxsaT5rcl90aGVtZTwvbGk+DQoJPGxpPm1lcmJpdm9yZTwvbGk+DQoJPGxpPm1lcmJpdm9yZV9zb2Z0PC9saT4NCgk8bGk+bW9ub19pbmR1c3RyaWFsPC9saT4NCgk8bGk+bW9ub2thaTwvbGk+DQoJPGxpPnBhc3RlbF9vbl9kYXJrPC9saT4NCgk8bGk+c29sYXJpemVkX2Rhcms8L2xpPg0KCTxsaT5zb2xhcml6ZWRfbGlnaHQ8L2xpPg0KCTxsaT50ZXh0bWF0ZTwvbGk+DQoJPGxpPnR3aWxpZ2h0PC9saT4NCgk8bGk+dmlicmFudF9pbms8L2xpPg0KPC91bD4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fd2lkdGgnXSA9ICdzcGVjaWZpZXMgd2lkdGggb2YgU3ludGF4aGlnaGxpZ2h0ZXIgYXJlYSBpbiBwaXhlbC4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1faGVpZ2h0J10gPSAnc3BlY2lmaWVzIGhlaWdodCBvZiBTeW50YXhoaWdobGlnaHRlciBhcmVhIGluIHBpeGVsLic7DQokbGFuZ1snaGVscF9wYXJhbV9kaXZpZCddID0gJ2lkIG9mIHRoZSBlbGVtZW50IGNvbnRhaW5pbmcgeW91ciBjb2RlLiBVc2UgdW5pcXVlIGlkIGZvciBlYWNoIGNvZGUgY2h1bmNrLic7DQokbGFuZ1snaGVscF9nZW5lcmFsX3RpdGxlJ10gPSAnR2VuZXJhbCc7DQokbGFuZ1snaGVscF9nZW5lcmFsX3RleHQnXSA9ICc8aDM+V2hhdCBkb2VzIHRoaXMgbW9kdWxlIGRvPzwvaDM+DQo8cD5BY2VFZGl0b3IgaXMgYSBTeW50YXhoaWdobGlnaHRlciBtb2R1bGUgdXNpbmcgPHN0cm9uZz5BY2U8L3N0cm9uZz4gYSBzdGFuZGFsb25lIGNvZGUgZWRpdG9yIHdyaXR0ZW4gaW4gSmF2YVNjcmlwdC48YnIgLz4gDQpHb2FsIG9mIEFjZSBjb2RlIGVkaXRvciBncm91cCBpcyB0byBjcmVhdGUgYSB3ZWIgYmFzZWQgY29kZSBlZGl0b3IgdGhhdCBtYXRjaGVzIGFuZCBleHRlbmRzIHRoZSBmZWF0dXJlcywgdXNhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZSBvZiBleGlzdGluZyBuYXRpdmUgZWRpdG9ycyBzdWNoIGFzIFRleHRNYXRlLCBWaW0gb3IgRWNsaXBzZS48YnIgLz4NCkl0IGNhbiBiZSBlYXNpbHkgZW1iZWRkZWQgaW4gYW55IHdlYiBwYWdlIGFuZCBKYXZhU2NyaXB0IGFwcGxpY2F0aW9uLjxiciAvPiANCkFjZSBpcyBkZXZlbG9wZWQgYXMgdGhlIHByaW1hcnkgZWRpdG9yIGZvciA8YSBocmVmPSJodHRwOi8vd3d3LmNsb3VkOWlkZS5jb20iPkNsb3VkOSBJREU8L2E+IGFuZCB0aGUgc3VjY2Vzc29yIG9mIHRoZSBNb3ppbGxhIFNreXdyaXRlciAoQmVzcGluKSBQcm9qZWN0LjwvcD4NCjxoMz5BY2UgaXMgaG9zdGVkIG9uIEdpdEh1YjwvaDM+DQo8cD5UaGUgQWNlIHNvdXJjZSBjb2RlIGlzIGhvc3RlZCBvbiBHaXRIdWIuIEl0IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNb3ppbGxhIHRyaS1saWNlbnNlIChNUEwvR1BML0xHUEwpLjxiciAvPg0KVGhpcyBpcyB0aGUgc2FtZSBsaWNlbnNlIHVzZWQgYnkgRmlyZWZveC4gVGhpcyBsaWNlbnNlIGlzIGZyaWVuZGx5IHRvIGFsbCBraW5kcyBvZiBwcm9qZWN0cywgd2hldGhlciBvcGVuIHNvdXJjZSBvciBub3QuPGJyIC8+DQogVGFrZSBjaGFyZ2Ugb2YgeW91ciBlZGl0b3IgYW5kIGFkZCB5b3VyIGZhdm9yaXRlIGxhbmd1YWdlIGhpZ2hsaWdodGluZyBhbmQga2V5YmluZGluZ3MhPC9wPg0KPGgzPlVzaW5nIEFjZUVkaXRvciBNb2R1bGU8L2gzPg0KPHA+VXNpbmcgQWNlRWRpdG9yIE1vZHVsZSBpcyBzaW1wbGUuPGJyIC8+DQpBZnRlciBBY2VFZGl0b3Igd2FzIGluc3RhbGxlZCBnbyB0byAmcXVvdDtNeSBQcmVmZXJlbmNlcyAmcmFxdW87IFVzZXIgUHJlZmVyZW5jZXMmcXVvdDsgYW5kIGNob29zZSBBY2VFZGl0b3IgYXMgeW91ciBTeW50YXhoaWdobGlnaHRlciBvZiBjaG9pY2UgZnJvbSAmcXVvdDtTZWxlY3Qgc3ludGF4IGhpZ2hsaWdodGVyIHRvIHVzZTomcXVvdDsgRHJvcGRvd24uPGJyIC8+DQpNYWtlIHN1cmUgeW91IGhhdmUgJiMwMzk7TW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMmIzAzOTsgUGVybXNpc3Npb24uPC9wPg0KPGgzPlNldHRpbmdzPC9oMz4NCjxwPllvdSBjYW4gY2hhbmdlIGRlZmF1bHQgU2V0dGluZ3MgYW5kIFRoZW1lcyBpbiAmcXVvdDtFeHRlbnNpb25zICZyYXF1bzsgQWNlRWRpdG9yJnF1b3Q7PC9wPic7DQokbGFuZ1snaGVscF9rZXlib2FyZHNob3J0Y3V0c190aXRsZSddID0gJ0tleWJvYXJkIFNob3J0Y3V0cyc7DQokbGFuZ1snaGVscF9rZXlib2FyZHNob3J0Y3V0c19jb250ZW50J10gPSAnICAgICAgPGgzPkRlZmF1bHQgS2V5Ym9hcmQgU2hvcnRjdXRzPC9oMz4NCg0KPHRhYmxlIGNsYXNzPSJwYWdldGFibGUiIGNlbGxzcGFjaW5nPSIwIiBzdW1tYXJ5PSJEZWZhdWx0IEtleWJvYXJkIFNob3J0Y3V0cyI+DQo8dGhlYWQ+PHRyPg0KPHRoPlBDIChXaW5kb3dzL0xpbnV4KTwvdGQ+DQo8dGg+TWFjPC90ZD4NCjx0aD5hY3Rpb248L3RkPg0KPC90cj48L3RoZWFkPg0KPHRib2R5Pg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1SZXR1cm48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVJldHVybjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPmZ1bGxzY3JlZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtUzwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtUzwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnBlcmZvcm0gc2F2ZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1MPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Y2VudGVyIHNlbGVjdGlvbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1BbHQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5jb3B5IGxpbmVzIGRvd248L3RkPg0KPC90cj4NCjx0ciBsY2Fzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUFsdC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Y29weSBsaW5lcyB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+ZmluZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1LPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1HPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+ZmluZCBuZXh0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUs8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LUc8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5maW5kIHByZXZpb3VzPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+RG93bixDdHJsLU48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyBsaW5lIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+VXAsQ3RybC1QPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gbGluZSB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1FbmQsQ3RybC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1FbmQsQ29tbWFuZC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+TGVmdCxDdHJsLUI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUw8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUw8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsaW5lPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtUmlnaHQsRW5kPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1SaWdodCxFbmQsQ3RybC1FPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gbGluZSBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1MZWZ0LEhvbWU8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUxlZnQsSG9tZSxDdHJsLUE8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsaW5lIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5QYWdlRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1QYWdlRG93bixDdHJsLVY8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBwYWdlIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1QYWdlVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBwYWdlIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlJpZ2h0LEN0cmwtRjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUhvbWUsQ3RybC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtSG9tZSxDb21tYW5kLVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtTGVmdDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gd29yZCBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+T3B0aW9uLVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gd29yZCByaWdodDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+VGFiPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+VGFiPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+aW5kZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+bW92ZSBsaW5lcyBkb3duPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5tb3ZlIGxpbmVzIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1UYWI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1UYWI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5vdXRkZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5JbnNlcnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5JbnNlcnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5vdmVyd3JpdGU8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VEb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cGFnZWRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnBhZ2V1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1TaGlmdC1aLEN0cmwtWTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtWixDb21tYW5kLVk8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZWRvPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgbGluZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1LPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHRvIGxpbmUgZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tQmFja3NwYWNlPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHRvIGxpbmVzdGFydDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+QWx0LUJhY2tzcGFjZSxDdHJsLUFsdC1CYWNrc3BhY2U8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgd29yZCBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtRGVsZXRlPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHdvcmQgcmlnaHQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtUjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLUY8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZXBsYWNlPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LVI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LU9wdGlvbi1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVwbGFjZSBhbGw8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtQTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtQTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBhbGw8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUVuZDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUVuZDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBsaW5lIGVuZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtSG9tZTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUhvbWU8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgbGluZSBzdGFydDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtUGFnZURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1QYWdlRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBwYWdlIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBwYWdlIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUVuZCxBbHQtU2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB0byBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgdG8gbGluZSBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHRvIGxpbmUgc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtSG9tZSxBbHQtU2hpZnQtVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHRvIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tU2hpZnQtTGVmdDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB3b3JkIGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3Qgd29yZCByaWdodDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1PPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c3BsaXQgbGluZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC03PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC03PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+dG9nZ2xlIGNvbW1lbnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtVDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtVDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnRyYW5zcG9zZSBsZXR0ZXJzPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVo8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVo8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij51bmRvPC90ZD4NCjwvdHI+DQo8L3Rib2R5Pg0KPC90YWJsZT4nOw0KJGxhbmdbJ2hlbHBfZnJvbnRlbmRfdGl0bGUnXSA9ICdGcm9udGVuZCc7DQokbGFuZ1snaGVscF9mcm9udGVuZF9jb250ZW50J10gPSAnPHA+VGhpcyBNb2R1bGUgYW5kIEFjZSBTY3JpcHQgY2FuIGFsc28gYmUgdXNlZCBhcyBhIEZyb250ZW5kIFN5bnRheGhpZ2hsaWdodGVyLjxiciAvPg0KVG8gbWFrZSBpdCB3b3JrIHlvdSBoYXZlIHRvIGluY2x1ZGUgalF1ZXJ5IEZyYW1ld29yaywgZm9yIGV4YW1wbGUgdXNpbmcgQ01TTVMge2Ntc19qcXVlcnl9IHRhZyBhbmQgYXMgd2VsbCBpbmNsdWRlIHtBY2VFZGl0b3J9IGluIHlvdXIgcGFnZSB0d2ljZS4gRmlyc3QgYWRkIHRoZSBtb2R1bGUgdGFnIGluIHlvdXIgPGhlYWQ+IHNlY3Rpb24gb2YgVGVtcGxhdGUgb3IgaW4gJnF1b3Q7UGFnZSBTcGVjaWZpYyBNZXRkYXRhJnF1b3Q7IGZpZWxkIG9mIHlvdXIgQ29udGVudCBwYWdlLCBsaWtlIHtBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2hlYWQmIzAzOTt9IGFuZCBhbm90aGVyIGNhbGwgdG8gc3BlY2lmeSB3aGljaCBhcmVhIHNob3VsZCBiZSBoaWdobGlnaHRlZCwgZm9yIGV4YW1wbGUge0FjZUVkaXRvciBkaXZpZD0mIzAzOTtmb28mIzAzOTt9LCB3aGljaCB3b3VsZCB0YXJnZXQgYSBwYWdlIGVsZW1lbnQgd2l0aCBpZCA8ZW0+Zm9vPC9lbT4uPC9wPg0KPGgzPlNvIGhvdyBkbyB5b3UgdXNlIGl0PzwvaDM+DQo8cD5GaXJzdCBpbmNsdWRlIGpRdWVyeSBhbmQgTW9kdWxlIHRhZyBpbiB5b3VyIFBhZ2UgPGhlYWQ+IGFyZWEsIGZvciBleGFtcGxlIGluICZxdW90O1BhZ2UgU3BlY2lmaWMgTWV0ZGF0YSZxdW90Ozo8L3A+DQoJPHByZT4NCgl7Y21zX2pxdWVyeX0NCgl7QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fQ0KCTwvcHJlPg0KPHA+VGhpcyBpbmNsdWRlcyBuZWVkZWQgc2NyaXB0cyBmb3IgQWNlIFN5bnRheGhpZ2hsaWdodGVyIHRvIHdvcmsuPGJyIC8+DQpJbiBNb2R1bGVzIEFkbWluIGludGVyZmFjZSB5b3UgY2FuIHNlbGVjdCBkZWZhdWx0IHNldHRpbmdzIGZvciB5b3VyICYjMDM5O2hlYWQmIzAzOTsgYWN0aW9uIG9yIHVzZSBwYXJhbWV0ZXIgbW9kZXM9JiMwMzk7aHRtbCxqYXZhc2NyaXB0JiMwMzk7IGFuZCB0aGVtZXM9JiMwMzk7dGV4dG1hdGUmIzAzOTsgd2hpY2ggd291bGQgb3ZlcnJpZGUgc2VsZWN0ZWQgUHJlZmVyZW5jZXMuPC9wPg0KPHA+Tm93IHdoZW4geW91IGhhdmUgbmVlZGVkIHNjcmlwdHMgaW5jbHVkZWQsIG9uZSBtb3JlIE1vZHVsZSB0YWcgY2FsbCBpcyBuZWVkZWQgKGZvciBleGFtcGxlIGluIHlvdXIgQ29udGVudCBFZGl0b3IgYXJlYSkgdG8gc3BlY2lmeSB3aGljaCBhcmVhIG9mIHlvdXIgUGFnZSBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQuPC9wPg0KCTxwcmU+DQoJe0FjZUVkaXRvciBkaXZpZD0mIzAzOTtzb21lLWlkJiMwMzk7fQ0KCTwvcHJlPg0KPHA+VGhpcyB0YWcgaW5jbHVkZXMgbmVlZGVkIFNjcmlwdCBhbmQgU3R5bGUgdGhhdCBpcyB1c2VkIHRvIEhpZ2hsaWdodCBzZWxlY3RlZCBlbGVtZW50IHdpdGggc3BlY2lmaWVkIGlkLjxiciAvPg0KQWxsIHlvdSBuZWVkIHRoZW4gaXMgd3JpdGUgeW91ciBDb2RlIHRoYXQgeW91IHdhbnQgdG8gSGlnaGxpZ2h0IGFuZCB3cmFwIGl0IGluc2lkZSBhbiBlbGVtZW4gbGlrZSA8ZGl2PiB3aXRoIHNwZWNpZmllZCBpZC48L3A+JzsNCiRsYW5nWydoZWxwX2Zyb250ZW5kX3NhbXBsZSddID0gJzxwcmUgaWQ9JnF1b3Q7c29tZS1pZCZxdW90Oz4NCjxodG1sPg0KICZuYnNwOyAmbmJzcDsgPGhlYWQ+DQogJm5ic3A7ICZuYnNwOyA8c3R5bGUgdHlwZT0mcXVvdDt0ZXh0L2NzcyZxdW90Oz4NCiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgLnRleHQtbGF5ZXIgew0KICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGZvbnQtZmFtaWx5OiBNb25hY28sICZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7LCBtb25vc3BhY2U7DQogJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgZm9udC1zaXplOiAxMnB4Ow0KICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGN1cnNvcjogdGV4dDsNCiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfQ0KICZuYnNwOyAmbmJzcDsgPC9zdHlsZT4NCiAmbmJzcDsgJm5ic3A7IDwvaGVhZD4NCiAmbmJzcDsgJm5ic3A7IDxib2R5Pg0KICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyA8aDEgc3R5bGU9JnF1b3Q7Y29sb3I6cmVkJnF1b3Q7Pkp1aHUgS2lubmVyczwvaDE+DQogJm5ic3A7ICZuYnNwOyA8L2JvZHk+IDwvaHRtbD4NCjwvcHJlPic7DQokbGFuZ1snaGVscF9hYm91dF90aXRsZSddID0gJ0EgcHJvcG9zJzsNCiRsYW5nWydoZWxwX2Fib3V0X3RleHQnXSA9ICc8aDM+U3VwcG9ydDwvaDM+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTIsIEdvcmFuIElsaWMgPGEgaHJlZj0ibWFpbHRvOnVuaXF1M2VAZ21haWwuY29tIj48dW5pcXUzZUBnbWFpbC5jb20+PC9hPiA8YSBocmVmPSJodHRwOi8vd3d3LmljaC1tYWNoLWRhcy5hdCIgcmVsPSJleHRlcm5hbCI+d3d3LmljaC1tYWNoLWRhcy5hdDwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQoJPGgzPlRlYW08L2gzPg0KCTx1bD4NCgkJPGxpPkdvcmFuIElsaWMgKHVuaXF1MykgZy5pbGljQGktYXJ0cy5ldSA8YnIgLz53d3cuaWNoLW1hY2gtZGFzLmF0PC9saT4JDQoJCTxsaT5Sb2JlcnQgQ2FtcGJlbGwgKGNhbGd1eTEwMDApIGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcgIDxiciAvPnd3dy5jYWxndXkxMDAwLmNvbTwvbGk+CQkNCgkJPGxpPkpvbmF0aGFuIFNjaG1pZCAoRm9hbHkqKSBoaUBqb25hdGhhbnNjaG1pZC5kZSA8YnIgLz53d3cuam9uYXRoYW5zY2htaWQuZGU8L2xpPg0KCTwvdWw+DQonOw0KJGxhbmdbJ2NoYW5nZWxvZyddID0gJzxoMz5WZXJzaW9uIDAuMTwvaDM+DQo8dWw+DQoJPGxpPkl0JiMwMzk7cyBmcmVzaCEgTm90aGluZyBjaGFuZ2VkIHlldCE8L2xpPg0KCTxsaT5Vc2luZyBBY2UgVmVyc2lvbiAwLjIuMDwvbGk+DQo8L3VsPg0KPGgzPlZlcnNpb24gMC4yPC9oMz4NCjx1bD4NCgk8bGk+QWRkZWQgQ1RSTC1TIEtleWJpbmRpbmc8L2xpPg0KCTxsaT5BZGRlZCBGdWxsc2NyZWVubW9kZTwvbGk+DQoJPGxpPkFkZGVkIEZyb250ZW5kIEhpZ2hsaWdodGluZzwvbGk+DQoJPGxpPlVwZGF0ZWQgQWNlPC9saT4NCjwvdWw+DQo8aDM+Um9hZG1hcDwvaDM+DQo8dWw+DQoJPGxpPjxkZWw+QWRkIEZyb250ZW5kIFN5bnRheGhpZ2hsaWdodGluZzwvZGVsPjwvbGk+DQoJPGxpPjxkZWw+QWRkIEZ1bGxzY3JlZW5tb2RlPC9kZWw+PC9saT4NCgk8bGk+PGRlbD5BZGQgS2V5YmluZGluZyAoQ1RSTCtTKTwvZGVsPjwvbGk+DQoJPGxpPkFkZCBFZGl0b3IgYmVoYXZpb3IgKFZpbSwgRU1hY3MpPC9saT4NCgk8bGk+TWF5YmUgYWRkIFRvb2xiYXI8L2xpPg0KPC91bD4nOw0KJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTkyNDAwNzA4Ni4xMzI1MzI1NzUyLjEzMzA0NjEzNjkuMTMzMTkyMjYzMi4zJzsNCiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEzMzE5MjI2MzIuMy4zLnV0bWNzcj1nb29nbGV8dXRtY2NuPShvcmdhbmljKXx1dG1jbWQ9b3JnYW5pY3x1dG1jdHI9KG5vdCBwcm92aWRlZCknOw0KJGxhbmdbJ3FjYSddID0gJ1AwLTEzMjQ5NTUzMjktMTMyMTA5Njg5MDg2Nic7DQokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1My4xLjEwLjEzMzE5MjI2MzInOw0KJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0FjZUVkaXRvcic7CiRsYW5nWydzZXR0aW5nc190YWInXSA9ICdJbm5zdGlsbGluZ2VyJzsKJGxhbmdbJ2V4YW1wbGVfZG9jdW1lbnQnXSA9ICdEb2N1bWVudCc7CiRsYW5nWydzeW50YXhfbW9kZSddID0gJ01vZGUnOwokbGFuZ1sndGhlbWVzJ10gPSAnVGhlbWUnOwokbGFuZ1snZm9udF9zaXplJ10gPSAnRm9udCBTaXplJzsKJGxhbmdbJ2Z1bGxfbGluZSddID0gJ0Z1bGwgTGluZSc7CiRsYW5nWydoaWdobGlnaHRfYWN0aXZlJ10gPSAnSGlnaGxpZ2h0IEFjdGl2ZSBMaW5lJzsKJGxhbmdbJ3Nob3dfaW52aXNpYmxlcyddID0gJ1Nob3cgSW52aXNpYmxlcyc7CiRsYW5nWydwZXJzaXN0ZW50X2hzY3JvbGwnXSA9ICdQZXJzaXRlbnQgSFNjcm9sbCc7CiRsYW5nWydrZXlfYmluZGluZyddID0gJ0tleSBCaW5kaW5nJzsKJGxhbmdbJ3NvZnRfd3JhcCddID0gJ1NvZnQgV3JhcCc7CiRsYW5nWydzaG93X2d1dHRlciddID0gJ1Nob3cgR3V0dGVyJzsKJGxhbmdbJ3ByaW50X21hcmdpbiddID0gJ1Nob3cgUHJpbnQgTWFyZ2luJzsKJGxhbmdbJ3NvZnRfdGFiJ10gPSAnVXNlIFNvZnQgVGFiJzsKJGxhbmdbJ2hpZ2hsaWdodF9zZWxlY3RlZCddID0gJ0hpZ2hsaWdodCBzZWxlY3RlZCB3b3JkJzsKJGxhbmdbJ2VuYWJsZV9iZWhhdmlvcnMnXSA9ICdFbmFibGUgQmVoYXZpb3JzJzsKJGxhbmdbJ3Rlc3RhcmVhdGV4dCddID0gJ1ByZXZpZXcnOwokbGFuZ1snanMnXSA9ICdKYXZhU2NyaXB0JzsKJGxhbmdbJ3BsYWluJ10gPSAnUGxhaW4gVGV4dCc7CiRsYW5nWydzdmcnXSA9ICdTVkcnOwokbGFuZ1snaHRtbCddID0gJ0hUTUwnOwokbGFuZ1snY3NzJ10gPSAnQ1NTJzsKJGxhbmdbJ3Njc3MnXSA9ICdTQ1NTJzsKJGxhbmdbJ2NvZmZlZSddID0gJ0NvZmZlZVNjcmlwdCc7CiRsYW5nWydqc29uJ10gPSAnSlNPTic7CiRsYW5nWydweXRob24nXSA9ICdQeXRob24nOwokbGFuZ1sncnVieSddID0gJ1J1YnknOwokbGFuZ1sncGVybCddID0gJ1BlcmwnOwokbGFuZ1sncGhwJ10gPSAnUEhQJzsKJGxhbmdbJ2phdmEnXSA9ICdKYXZhJzsKJGxhbmdbJ2NzaGFycCddID0gJ0MjJzsKJGxhbmdbJ2NfY3BwJ10gPSAnQysrJzsKJGxhbmdbJ2Nsb2p1cmUnXSA9ICdDbG9qdXJlJzsKJGxhbmdbJ29jYW1sJ10gPSAnT0NhbWwnOwokbGFuZ1sndGV4dGlsZSddID0gJ1RleHRpbGUnOwokbGFuZ1snZ3Jvb3Z5J10gPSAnR3Jvb3Z5JzsKJGxhbmdbJ3NjYWxhJ10gPSAnU2NhbGEnOwokbGFuZ1snY2xvdWRzJ10gPSAnQ2xvdWRzJzsKJGxhbmdbJ2Nsb3Vkc19taWRuaWdodCddID0gJ0Nsb3VkcyBNaWRuaWdodCc7CiRsYW5nWydjb2JhbHQnXSA9ICdDb2JhbHQnOwokbGFuZ1snY3JpbXNvbl9lZGl0b3InXSA9ICdDcmltc29uIEVkaXRvcic7CiRsYW5nWydkYXduJ10gPSAnRGF3bic7CiRsYW5nWydlY2xpcHNlJ10gPSAnRWNsaXBzZSc7CiRsYW5nWydpZGxlX2ZpbmdlcnMnXSA9ICdpZGxlRmluZ2Vycyc7CiRsYW5nWydrcl90aGVtZSddID0gJ2tyVGhlbWUnOwokbGFuZ1snbWVyYml2b3JlJ10gPSAnTWVyYml2b3JlJzsKJGxhbmdbJ21lcmJpdm9yZV9zb2Z0J10gPSAnTWVyYm92aW9yZSBTb2Z0JzsKJGxhbmdbJ21vbm9faW5kdXN0cmlhbCddID0gJ01vbm8gSW5kdXN0cmlhbCc7CiRsYW5nWydtb25va2FpJ10gPSAnTW9ub2thaSc7CiRsYW5nWydwYXN0ZWxfb25fZGFyayddID0gJ1Bhc3RlbCBvbiBkYXJrJzsKJGxhbmdbJ3NvbGFyaXplZF9kYXJrJ10gPSAnU29sYXJpemVkIERhcmsnOwokbGFuZ1snc29sYXJpemVkX2xpZ2h0J10gPSAnU29sYXJpemVkIExpZ2h0JzsKJGxhbmdbJ3RleHRtYXRlJ10gPSAnVGV4dE1hdGUnOwokbGFuZ1sndHdpbGlnaHQnXSA9ICdUd2lsaWdodCc7CiRsYW5nWyd2aWJyYW50X2luayddID0gJ1ZpYnJhbnQgSW5rJzsKJGxhbmdbJ2FjZSddID0gJ0FjZSc7CiRsYW5nWyd2aW0nXSA9ICdWaW0nOwokbGFuZ1snZW1hY3MnXSA9ICdFTWFjcyc7CiRsYW5nWydjdXN0b20nXSA9ICdDdXN0b20nOwokbGFuZ1snb2ZmJ10gPSAnT2ZmJzsKJGxhbmdbJzQwJ10gPSAnNDAgdGVnbic7CiRsYW5nWyc4MCddID0gJzgwIHRlZ24nOwokbGFuZ1snZnJlZSddID0gJ0ZyZWUnOwokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnTGFncmUgaW5uc3RpbGxpbmdlcic7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnRGluZSBBY2VFZGl0b3IgaW5uc3RpbGxpbmdlciBoYXIgYmxpdHQgbGFncmV0JzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnQWNlRWRpdG9yIFN1Y2Nlc3NmdWxseSBJbnN0YWxsZWQhIFNldCAmcXVvdDtNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcyZxdW90OyBwZXJtaXNzaW9ucyB0byB1c2UgdGhpcyBtb2R1bGUhJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdBY2VFZGl0b3IgU3VjY2Vzc2Z1bGx5IFVuaW5zdGFsbGVkJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdSZWFsbHk/IEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgQWNlRWRpdG9yPyBUaGluayBhZ2FpbiEnOwokbGFuZ1snaGVscF9nZW5lcmFsX3RpdGxlJ10gPSAnR2VuZXJhbCc7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8aDM+VmVyc2lvbiAwLjE8L2gzPg0KPHVsPg0KCTxsaT5JdCYjMDM5O3MgZnJlc2ghIE5vdGhpbmcgY2hhbmdlZCB5ZXQhPC9saT4NCjwvdWw+JzsKJGxhbmdbJ3FjYSddID0gJ1AwLTUzNjg0OTExNS0xMzA3OTgzNDk1MjEwJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMjUxNzI4MDkxLjEzMjI0MzAzNzEuMTMyMjQzNTAxOS4xMzIyNTExMTE3LjMnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMzIyNDMwMzcxLjEuMS51dG1jc3I9KGRpcmVjdCl8dXRtY2NuPShkaXJlY3QpfHV0bWNtZD0obm9uZSknOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1My4yLjEwLjEzMjI1MTExMTcnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdBY2VFZGl0b3IgJzsNCiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnQWNlRWRpdG9yIGlzIGEgU3ludGF4aGlnaGxpZ2h0ZXIgbW9kdWxlIHVzaW5nIDxzdHJvbmc+QWNlPC9zdHJvbmc+IGEgc3RhbmRhbG9uZSBjb2RlIGVkaXRvciB3cml0dGVuIGluIEphdmFTY3JpcHQuPGJyIC8+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBJbnRlcm5ldCBFeHBsb3JlciBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCEnOw0KJGxhbmdbJ3NldHRpbmdzX3RhYiddID0gJ0luc3RlbGxpbmdlbic7DQokbGFuZ1snZnJvbnRlbmRzZXR0aW5nc190YWInXSA9ICdGcm9udGVuZCBJbnN0ZWxsaW5nZW4nOw0KJGxhbmdbJ2Zyb250ZW5kX2hlYWRfc2V0dGluZ3MnXSA9ICdGcm9udGVuZCBIZWFkIEluc3RlbGxpbmdlbic7DQokbGFuZ1snZnJvbnRlbmRfc3ludGF4YXJlYV9zZXR0aW5ncyddID0gJ0Zyb250ZW5kIFN5bnRheCBydWltdGUgSW5zdGVsbGluZ2VuJzsNCiRsYW5nWydoZWFkX2Rlc2NyaXB0aW9uJ10gPSAnVGhlc2UgcHJlZmVyZW5jZXMgYXJlIHVzZWQgZm9yIGRlZmF1bHQgc2V0dGluZ3Mgb2YgQWNlIHNjcmlwdHMgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gcGFnZSA8Y29kZT48aGVhZD48L2NvZGU+IHdoZW4gY2FsbGluZyA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fTwvY29kZT4gZnJvbSBQYWdlIFNwZWNpZmljIE1ldGFkYXRhIG9yIFRlbXBsYXRlLic7DQokbGFuZ1snY29udGVudF9kZXNjcmlwdGlvbiddID0gJ1RoZXNlIHByZWZlcmVuY2VzIGFyZSB1c2VkIGZvciBkZWZhdWx0IHNldHRpbmdzIG9mIFN5bnRheGhpZ2hsaWdodGluZyBhcmVhIHdoZW4gY2FsbGluZyA8Y29kZT57QWNlRWRpdG9yIGRpdmlkPSYjMDM5O2VkaXRvciYjMDM5O308L2NvZGU+IHRhZyB3aXRoaW4gYSBQYWdlLic7DQokbGFuZ1snc3ludGF4YXJlYWRlc2NyaXB0aW9uJ10gPSAnVGhlc2UgcHJlZmVyZW5jZXMgYXJlIHVzZWQgZm9yIGRlZmF1bHQgc2V0dGluZ3Mgb2YgQWNlIGJlaGF2aW9yIHdoZW4gY2FsbGluZyA8Y29kZT57QWNlRWRpdG9yIGRpdmlkPSYjMDM5O2ZvbyYjMDM5O308L2NvZGU+IGZyb20gYSBQYWdlIG9yIFRlbXBsYXRlJzsNCiRsYW5nWydleGFtcGxlX2RvY3VtZW50J10gPSAnRG9jdW1lbnQgJzsNCiRsYW5nWyd3aWR0aF90aXRsZSddID0gJ0VkaXRvciBicmVlZHRlIChpbiBlbSknOw0KJGxhbmdbJ2hlaWdodF90aXRsZSddID0gJ0VkaXRvciBicmVlZHRlIChpbiBlbSknOw0KJGxhbmdbJ2VuYWJsZV9pZSddID0gJ0ludGVybmV0IEV4cGxvcmVyIEluc2NoYWtlbGVuJzsNCiRsYW5nWydlbmFibGVfaWVkZXNjcmlwdGlvbiddID0gJ0FjZSBTeW50YXhoaWdobGlnaHRlciBmdW5jdGlvbmVlcnQgbmlldCBjb3JyZWN0IGluIEludGVybmV0IEV4cGxvcmVyLiBHZWJydWlrIGRpdCBvcCBlaWdlbiByaXNpY28hJzsNCiRsYW5nWydmcm9udGVuZF93aWR0aF90aXRsZSddID0gJ0Zyb250ZW5kIFN5bnRheCBydWltdGUgYnJlZWR0ZSAoaW4gcHgpJzsNCiRsYW5nWydmcm9udGVuZF9oZWlnaHRfdGl0bGUnXSA9ICdGcm9udGVuZCBTeW50YXggcnVpbXRlIGhvb2d0ZSAoaW4gcHgpJzsNCiRsYW5nWydzeW50YXhfbW9kZSddID0gJ01vZHVzJzsNCiRsYW5nWyd0aGVtZXMnXSA9ICdUaGVtYSc7DQokbGFuZ1snZm9udF9zaXplJ10gPSAnTGV0dGVyZ3Jvb3R0ZSc7DQokbGFuZ1snZnVsbF9saW5lJ10gPSAnVm9sbGVkaWdlIGxpam4nOw0KJGxhbmdbJ2hpZ2hsaWdodF9hY3RpdmUnXSA9ICdIaWdobGlnaHQgYWN0aWV2ZSByZWdlbCc7DQokbGFuZ1snc2hvd19pbnZpc2libGVzJ10gPSAnR2VlZiBvbnppY2h0YmFyZSB3ZWVyJzsNCiRsYW5nWydwZXJzaXN0ZW50X2hzY3JvbGwnXSA9ICdQZXJzaXRlbnQgSFNjcm9sbCAnOw0KJGxhbmdbJ2tleV9iaW5kaW5nJ10gPSAnS2V5IEJpbmRpbmcgJzsNCiRsYW5nWydzb2Z0X3dyYXAnXSA9ICdTb2Z0IFdyYXAgJzsNCiRsYW5nWydzaG93X2d1dHRlciddID0gJ0dlZWYgR3V0dGVyIHdlZXInOw0KJGxhbmdbJ3ByaW50X21hcmdpbiddID0gJ0dlZWYgcHJpbnRtYXJnZSB3ZWVyJzsNCiRsYW5nWydzb2Z0X3RhYiddID0gJ0dlYnJ1aWsgU29mdCBUYWInOw0KJGxhbmdbJ2hpZ2hsaWdodF9zZWxlY3RlZCddID0gJ0hpZ2hsaWdodCBoZXQgZ2VzZWxlY3RlZXJkZSB3b29yZCc7DQokbGFuZ1snZW5hYmxlX2JlaGF2aW9ycyddID0gJ1NjaGFrZWwgQmVoYXZpb3JzIGluJzsNCiRsYW5nWyd0ZXN0YXJlYXRleHQnXSA9ICdWb29yYmVlbGQnOw0KJGxhbmdbJ29uJ10gPSAnQWFuJzsNCiRsYW5nWydvZmYnXSA9ICdVaXQnOw0KJGxhbmdbJ2xpbmUnXSA9ICdSZWdlbCc7DQokbGFuZ1snY29sdW1uJ10gPSAnS29sbG9tJzsNCiRsYW5nWydjdXJyZW50X2xpbmUnXSA9ICdIdWlkaWdlIHJlZ2VsJzsNCiRsYW5nWyd0b3RhbF9saW5lcyddID0gJ0FhbnRhbCByZWdlbHMnOw0KJGxhbmdbJ2dvX2xpbmUnXSA9ICdHYSBuYWFyIHJlZ2VsJzsNCiRsYW5nWydrZXliaW5kaW5ncyddID0gJ1NuZWx0b2V0c2VuJzsNCiRsYW5nWydhY2UnXSA9ICdBY2UgJzsNCiRsYW5nWyd2aW0nXSA9ICdWaW0gJzsNCiRsYW5nWydlbWFjcyddID0gJ0VNYWNzICc7DQokbGFuZ1snanMnXSA9ICdKYXZhU2NyaXB0ICc7DQokbGFuZ1sncGxhaW4nXSA9ICdQbGF0dGUgdGVrc3QnOw0KJGxhbmdbJ3N2ZyddID0gJ1NWRyAnOw0KJGxhbmdbJ2h0bWwnXSA9ICdIVE1MICc7DQokbGFuZ1snY3NzJ10gPSAnQ1NTICc7DQokbGFuZ1snc2NzcyddID0gJ1NDU1MgJzsNCiRsYW5nWydjb2ZmZWUnXSA9ICdDb2ZmZWVTY3JpcHQgJzsNCiRsYW5nWydqc29uJ10gPSAnSlNPTiAnOw0KJGxhbmdbJ3B5dGhvbiddID0gJ1B5dGhvbiAnOw0KJGxhbmdbJ3J1YnknXSA9ICdSdWJ5ICc7DQokbGFuZ1sncGVybCddID0gJ1BlcmwgJzsNCiRsYW5nWydwaHAnXSA9ICdQSFAgJzsNCiRsYW5nWydqYXZhJ10gPSAnSmF2YSAnOw0KJGxhbmdbJ2NzaGFycCddID0gJ0MjICc7DQokbGFuZ1snY19jcHAnXSA9ICdDKysgJzsNCiRsYW5nWydjbG9qdXJlJ10gPSAnQ2xvanVyZSAnOw0KJGxhbmdbJ2NvbGRmdXNpb24nXSA9ICdDb2xkZnVzaW9uICc7DQokbGFuZ1snaGF4ZSddID0gJ0hheGUgJzsNCiRsYW5nWydsYXRleCddID0gJ0xhdGV4ICc7DQokbGFuZ1snbHVhJ10gPSAnTHVhICc7DQokbGFuZ1snbWFya2Rvd24nXSA9ICdNYXJrZG93biAnOw0KJGxhbmdbJ3Bvd2Vyc2hlbGwnXSA9ICdQb3dlclNoZWxsICc7DQokbGFuZ1snc3FsJ10gPSAnU1FMICc7DQokbGFuZ1sncGdzcWwnXSA9ICdwZ1NRTCAnOw0KJGxhbmdbJ29jYW1sJ10gPSAnT0NhbWwgJzsNCiRsYW5nWyd0ZXh0aWxlJ10gPSAnVGV4dGlsZSAnOw0KJGxhbmdbJ2dyb292eSddID0gJ0dyb292eSAnOw0KJGxhbmdbJ3NjYWxhJ10gPSAnU2NhbGEgJzsNCiRsYW5nWydkaWZmJ10gPSAnRGlmZiAnOw0KJGxhbmdbJ2dvbGFuZyddID0gJ0dPICc7DQokbGFuZ1sneWFtbCddID0gJ1lBTUwgJzsNCiRsYW5nWydsZXNzJ10gPSAnTEVTUyAnOw0KJGxhbmdbJ3NjYWQnXSA9ICdPcGVuU0NBRCAnOw0KJGxhbmdbJ3NoJ10gPSAnU0ggJzsNCiRsYW5nWyd4cXVlcnknXSA9ICdYUXVlcnkgJzsNCiRsYW5nWydsaXF1aWQnXSA9ICdMaXF1aWQgJzsNCiRsYW5nWydqc3gnXSA9ICdKU1ggJzsNCiRsYW5nWydjbG91ZHMnXSA9ICdDbG91ZHMgJzsNCiRsYW5nWydjaHJvbWUnXSA9ICdDaHJvbWUgJzsNCiRsYW5nWydjbG91ZHNfbWlkbmlnaHQnXSA9ICdDbG91ZHMgTWlkbmlnaHQgJzsNCiRsYW5nWydjb2JhbHQnXSA9ICdDb2JhbHQgJzsNCiRsYW5nWydjcmltc29uX2VkaXRvciddID0gJ0NyaW1zb24gRWRpdG9yICc7DQokbGFuZ1snZGF3biddID0gJ0Rhd24gJzsNCiRsYW5nWydkcmVhbXdlYXZlciddID0gJ0RyZWFtd2VhdmVyICc7DQokbGFuZ1snZWNsaXBzZSddID0gJ0VjbGlwc2UgJzsNCiRsYW5nWydpZGxlX2ZpbmdlcnMnXSA9ICdpZGxlRmluZ2VycyAnOw0KJGxhbmdbJ2tyX3RoZW1lJ10gPSAna3JUaGVtZSAnOw0KJGxhbmdbJ21lcmJpdm9yZSddID0gJ01lcmJpdm9yZSAnOw0KJGxhbmdbJ21lcmJpdm9yZV9zb2Z0J10gPSAnTWVyYml2aW9yZSBTb2Z0ICc7DQokbGFuZ1snbW9ub19pbmR1c3RyaWFsJ10gPSAnTW9ubyBJbmR1c3RyaWFsICc7DQokbGFuZ1snbW9ub2thaSddID0gJ01vbm9rYWkgJzsNCiRsYW5nWydwYXN0ZWxfb25fZGFyayddID0gJ1Bhc3RlbCBvbiBkYXJrICc7DQokbGFuZ1snc29sYXJpemVkX2RhcmsnXSA9ICdTb2xhcml6ZWQgRGFyayAnOw0KJGxhbmdbJ3NvbGFyaXplZF9saWdodCddID0gJ1NvbGFyaXplZCBMaWdodCAnOw0KJGxhbmdbJ3RleHRtYXRlJ10gPSAnVGV4dE1hdGUgJzsNCiRsYW5nWyd0b21vcnJvdyddID0gJ1RvbW9ycm93ICc7DQokbGFuZ1sndG9tb3Jyb3dfbmlnaHQnXSA9ICdUb21vcnJvdyBOaWdodCAnOw0KJGxhbmdbJ3RvbW9ycm93X25pZ2h0X2JyaWdodCddID0gJ1RvbW9ycm93IE5pZ2h0IEJyaWdodCAnOw0KJGxhbmdbJ3RvbW9ycm93X25pZ2h0X2JsdWUnXSA9ICdUb21vcnJvdyBOaWdodCBCbHVlICc7DQokbGFuZ1sndG9tb3Jyb3dfbmlnaHRfZWlnaHRpZXMnXSA9ICdUb21vcnJvdyBOaWdodCBFaWdodGllcyAnOw0KJGxhbmdbJ3R3aWxpZ2h0J10gPSAnVHdpbGlnaHQgJzsNCiRsYW5nWyd2aWJyYW50X2luayddID0gJ1ZpYnJhbnQgSW5rICc7DQokbGFuZ1snY3VzdG9tJ10gPSAnR2VhdmFuY2VlcmQnOw0KJGxhbmdbJzQwJ10gPSAnNDAgS2FyYWt0ZXJzJzsNCiRsYW5nWyc4MCddID0gJzgwIEthcmFrdGVycyc7DQokbGFuZ1snMTAwJ10gPSAnMTAwIEthcmFrdGVycyc7DQokbGFuZ1snMTQwJ10gPSAnMTQwIEthcmFrdGVycyc7DQokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnSW5zdGVsbGluZ2VuIG9wc2xhYW4nOw0KJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdVdyBBY2VFZGl0b3IgaW5zdGVsbGluZ2VuIHppam4gb3BnZXNsYWdlbic7DQokbGFuZ1snZnJvbnRlbmRzZXR0aW5nc3NhdmVkJ10gPSAnVXcgQWNlRWRpdG9yIEZyb250ZW5kIGluc3RlbGxpbmdlbiB6aWpuIG9wZ2VzbGFnZW4nOw0KJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnQWNlRWRpdG9yIHN1Y2Nlc3ZvbCBnZSZpdW1sO25zdGFsbGVlcmQhIFN0ZWwgJnF1b3Q7QmV3ZXJrIHNpdGV2b29ya2V1cmVuJnF1b3Q7IHBlcm1pc3NpZXMgaW4gb20gZGV6ZSBtb2R1bGUgdGUgZ2VicnVpa2VuISc7DQokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ0FjZUVkaXRvciBzdWNjZXN2b2wgZ2UmaXVtbDtuc3RhbGxlZXJkJzsNCiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAnRWNodD8gV2VldCB1IHpla2VyIGRhdCB1IEFjZUVkaXRvciB3aWx0IHZlcndpamRlcmVuPyBEZW5rIG5vZyBlZW5zIGdvZWQgbmEhJzsNCiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJ01pc3NpbmcgUGVybWlzc2lvbiEuIFNldCAmcXVvdDtNb2RpZnkgVGVtcGxhdGVzJnF1b3Q7IG9yICZxdW90O0FjZUVkaXRvciBVc2VyIFByZWZlcmVuY2UmcXVvdDsgcGVybWlzc2lvbnMgdG8gdXNlIHRoaXMgbW9kdWxlLic7DQokbGFuZ1snaGVscF9wYXJhbV9hY3Rpb24nXSA9ICdpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgYWN0aW9uIG9mIE1vZHVsZSB0YWcuIFBvc3NpYmxlIHZhbHVlcyBhcmUgJiMwMzk7ZGVmYXVsdCYjMDM5OyBhbmQgJiMwMzk7aGVhZCYjMDM5Oy4gQm90aCBhcmUgbmVlZGVkIGZvciBjb3JyZWN0IEZyb250ZW5kIFN5bnRheGhpZ2hsaWdodGluZyBmdW5jdGlvbi4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCgk8bGk+aGVhZDwvbGk+DQoJPGxpPmRlZmF1bHQ8L2xpPg0KPC91bD4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fbW9kZXMnXSA9ICdpcyB1c2VkIHdpdGggPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O308L2NvZGU+LiBZb3UgY2FuIGluY2x1ZGUgbXVsdGlwbGUgY29tbWEgc2VwYXJhdGVkICYjMDM5O21vZGVzJiMwMzk7IHRoYXQgeW91IHdpbGwgYmUgdXNpbmcgb24geW91ciB3ZWJzaXRlLiBUaGlzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB5b3VyICZhbXA7bHQ7aGVhZCZhbXA7Z3Q7IG9mIFRlbXBsYXRlIG9yIFBhZ2Ugc3BlY2lmaWMgTWV0YWRhdGEuIFRoaXMgd2lsbCBvdmVycmlkZSB5b3UgUHJlZmVyZW5jZXMgc2VsZWN0ZWQgaW4gTW9kdWxlIEFkbWluIGFyZWEuIDxiciAvPlBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQogICAgPGxpPmphdmFzY3JpcHQ8L2xpPg0KICAgIDxsaT5wbGFpbjwvbGk+DQogICAgPGxpPnN2ZzwvbGk+DQogICAgPGxpPmh0bWw8L2xpPg0KICAgIDxsaT5jc3M8L2xpPg0KICAgIDxsaT5zY3NzPC9saT4NCiAgICA8bGk+Y29mZmVlPC9saT4NCiAgICA8bGk+anNvbjwvbGk+DQogICAgPGxpPnB5dGhvbjwvbGk+DQogICAgPGxpPnJ1Ynk8L2xpPg0KICAgIDxsaT5wZXJsPC9saT4NCiAgICA8bGk+cGhwPC9saT4NCiAgICA8bGk+amF2YTwvbGk+DQogICAgPGxpPmNzaGFycDwvbGk+DQogICAgPGxpPmNfY3BwPC9saT4NCiAgICA8bGk+Y2xvanVyZTwvbGk+DQogICAgPGxpPmNvbGRmdXNpb248L2xpPg0KICAgIDxsaT5kaWZmPC9saT4NCiAgICA8bGk+aGF4ZTwvbGk+DQogICAgPGxpPmxhdGV4PC9saT4NCiAgICA8bGk+bHVhPC9saT4NCiAgICA8bGk+bWFya2Rvd248L2xpPg0KICAgIDxsaT5wb3dlcnNoZWxsPC9saT4NCiAgICA8bGk+c3FsPC9saT4NCiAgICA8bGk+cGdzcWw8L2xpPg0KICAgIDxsaT5vY2FtbDwvbGk+DQogICAgPGxpPnRleHRpbGU8L2xpPg0KICAgIDxsaT5ncm9vdnk8L2xpPg0KICAgIDxsaT5nb2xhbmc8L2xpPg0KICAgIDxsaT5qc3g8L2xpPg0KICAgIDxsaT5sZXNzPC9saT4NCiAgICA8bGk+bGlxdWlkPC9saT4NCiAgICA8bGk+c2NhZDwvbGk+DQogICAgPGxpPnNoPC9saT4NCiAgICA8bGk+eHF1ZXJ5PC9saT4NCiAgICA8bGk+eWFtbDwvbGk+DQogICAgPGxpPnNjYWxhPC9saT4NCjwvdWw+ICc7DQokbGFuZ1snaGVscF9wYXJhbV90aGVtZXMnXSA9ICcNCg0KaXMgdXNlZCB3aXRoIDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2hlYWQmIzAzOTt9PC9jb2RlPi4gWW91IGNhbiBpbmNsdWRlIG11bHRpcGxlIGNvbW1hIHNlcGFyYXRlZCAmIzAzOTt0aGVtZXMmIzAzOTsgdGhhdCB5b3Ugd2lsbCBiZSB1c2luZyBvbiB5b3VyIHdlYnNpdGUuIFRoaXMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHlvdXIgJmFtcDtsdDtoZWFkJmFtcDtndDsgb2YgVGVtcGxhdGUgb3IgUGFnZSBzcGVjaWZpYyBNZXRhZGF0YS4gVGhpcyB3aWxsIG92ZXJyaWRlIHlvdSBQcmVmZXJlbmNlcyBzZWxlY3RlZCBpbiBNb2R1bGUgQWRtaW4gYXJlYS4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCiAgICA8bGk+Y2hyb21lPC9saT4NCiAgICA8bGk+Y2xvdWRzPC9saT4NCiAgICA8bGk+Y2xvdWRzX21pZG5pZ2h0PC9saT4NCiAgICA8bGk+Y29iYWx0PC9saT4NCiAgICA8bGk+Y3JpbXNvbl9lZGl0b3I8L2xpPg0KICAgIDxsaT5kYXduPC9saT4NCiAgICA8bGk+ZHJlYW13ZWF2ZXI8L2xpPg0KICAgIDxsaT5lY2xpcHNlPC9saT4NCiAgICA8bGk+aWRsZV9maW5nZXJzDQogICAgPGxpPmtyX3RoZW1lPC9saT4NCiAgICA8bGk+bWVyYml2b3JlPC9saT4NCiAgICA8bGk+bWVyYml2b3JlX3NvZnQ8L2xpPg0KICAgIDxsaT5tb25vX2luZHVzdHJpYWw8L2xpPg0KICAgIDxsaT5tb25va2FpPC9saT4NCiAgICA8bGk+cGFzdGVsX29uX2Rhcms8L2xpPg0KICAgIDxsaT5zb2xhcml6ZWRfZGFyazwvbGk+DQogICAgPGxpPnNvbGFyaXplZF9saWdodDwvbGk+DQogICAgPGxpPnRleHRtYXRlPC9saT4NCiAgICA8bGk+dG9tb3Jyb3c8L2xpPg0KICAgIDxsaT50b21vcnJvd19uaWdodDwvbGk+DQogICAgPGxpPnRvbW9ycm93X25pZ2h0X2JsdWU8L2xpPg0KICAgIDxsaT50b21vcnJvd19uaWdodF9icmlnaHQ8L2xpPg0KICAgIDxsaT50b21vcnJvd19uaWdodF9laWdodGllczwvbGk+DQogICAgPGxpPnR3aWxpZ2h0PC9saT4NCiAgICA8bGk+dmlicmFudF9pbms8L2xpPg0KPC91bD4gJzsNCiRsYW5nWydoZWxwX3BhcmFtX21vZGUnXSA9ICdpcyB1c2VkIHdpdGhpbiBhIHBhZ2Ugd2l0aCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtkZWZhdWx0JiMwMzk7fTwvY29kZT4gbW9kdWxlIHRhZy4gVGhpcyBzcGVjaWZpZXMgU3ludGF4aGlnaGxpZ2h0ZXIgbW9kZSBmb3Igc3BlY2lmaWMgY29kZSBhcmVhLiA8YnIgLz5Qb3NzaWJsZSB2YWx1ZXMgYXJlOg0KPHVsPg0KICAgIDxsaT5qYXZhc2NyaXB0PC9saT4NCiAgICA8bGk+cGxhaW48L2xpPg0KICAgIDxsaT5zdmc8L2xpPg0KICAgIDxsaT5odG1sPC9saT4NCiAgICA8bGk+Y3NzPC9saT4NCiAgICA8bGk+c2NzczwvbGk+DQogICAgPGxpPmNvZmZlZTwvbGk+DQogICAgPGxpPmpzb248L2xpPg0KICAgIDxsaT5weXRob248L2xpPg0KICAgIDxsaT5ydWJ5PC9saT4NCiAgICA8bGk+cGVybDwvbGk+DQogICAgPGxpPnBocDwvbGk+DQogICAgPGxpPmphdmE8L2xpPg0KICAgIDxsaT5jc2hhcnA8L2xpPg0KICAgIDxsaT5jX2NwcDwvbGk+DQogICAgPGxpPmNsb2p1cmU8L2xpPg0KICAgIDxsaT5jb2xkZnVzaW9uPC9saT4NCiAgICA8bGk+ZGlmZjwvbGk+DQogICAgPGxpPmhheGU8L2xpPg0KICAgIDxsaT5sYXRleDwvbGk+DQogICAgPGxpPmx1YTwvbGk+DQogICAgPGxpPm1hcmtkb3duPC9saT4NCiAgICA8bGk+cG93ZXJzaGVsbDwvbGk+DQogICAgPGxpPnNxbDwvbGk+DQogICAgPGxpPnBnc3FsPC9saT4NCiAgICA8bGk+b2NhbWw8L2xpPg0KICAgIDxsaT50ZXh0aWxlPC9saT4NCiAgICA8bGk+Z3Jvb3Z5PC9saT4NCiAgICA8bGk+Z29sYW5nPC9saT4NCiAgICA8bGk+anN4PC9saT4NCiAgICA8bGk+bGVzczwvbGk+DQogICAgPGxpPmxpcXVpZDwvbGk+DQogICAgPGxpPnNjYWQ8L2xpPg0KICAgIDxsaT5zaDwvbGk+DQogICAgPGxpPnhxdWVyeTwvbGk+DQogICAgPGxpPnlhbWw8L2xpPg0KICAgIDxsaT5zY2FsYTwvbGk+DQo8L3VsPiANCic7DQokbGFuZ1snaGVscF9wYXJhbV90aGVtZSddID0gJ2lzIHVzZWQgd2l0aGluIGEgcGFnZSB3aXRoIDxjb2RlPntBY2VFZGl0b3IgYWN0aW9uPSYjMDM5O2RlZmF1bHQmIzAzOTt9PC9jb2RlPiBtb2R1bGUgdGFnLiBUaGlzIHNwZWNpZmllcyBTeW50YXhoaWdobGlnaHRlciB0aGVtZSBmb3Igc3BlY2lmaWMgY29kZSBhcmVhLiA8YnIgLz5Qb3NzaWJsZSB2YWx1ZXMgYXJlOg0KPHVsPg0KCTxsaT5jbG91ZHM8L2xpPiANCgk8bGk+Y2xvdWRzX21pZG5pZ2h0PC9saT4gDQoJPGxpPmNvYmFsdDwvbGk+IA0KCTxsaT5jcmltc29uX2VkaXRvcjwvbGk+DQoJPGxpPmRhd248L2xpPg0KCTxsaT5lY2xpcHNlPC9saT4NCgk8bGk+aWRsZV9maW5nZXJzPC9saT4NCgk8bGk+a3JfdGhlbWU8L2xpPg0KCTxsaT5tZXJiaXZvcmU8L2xpPg0KCTxsaT5tZXJiaXZvcmVfc29mdDwvbGk+DQoJPGxpPm1vbm9faW5kdXN0cmlhbDwvbGk+DQoJPGxpPm1vbm9rYWk8L2xpPg0KCTxsaT5wYXN0ZWxfb25fZGFyazwvbGk+DQoJPGxpPnNvbGFyaXplZF9kYXJrPC9saT4NCgk8bGk+c29sYXJpemVkX2xpZ2h0PC9saT4NCgk8bGk+dGV4dG1hdGU8L2xpPg0KCTxsaT50d2lsaWdodDwvbGk+DQoJPGxpPnZpYnJhbnRfaW5rPC9saT4NCjwvdWw+ICc7DQokbGFuZ1snaGVscF9wYXJhbV93aWR0aCddID0gJ0JyZWVkdGUgdmFuIGRlIFN5bnRheGhpZ2hsaWdodGVyIHJ1aW10ZSBpbiBwaXhlbHMuJzsNCiRsYW5nWydoZWxwX3BhcmFtX2hlaWdodCddID0gJ0hvb2d0ZSB2YW4gZGUgU3ludGF4aGlnaGxpZ2h0ZXIgcnVpbXRlIGluIHBpeGVscy4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fZGl2aWQnXSA9ICdpZCB2YW4gaGV0IGVsZW1lbnQgZGF0IHV3IGNvZGUgYmV2YXQuIEdlYnJ1aWsgZWVuIHVuaWVrZSBpZCB2b29yIGVsayBjb2RlIGJsb2suJzsNCiRsYW5nWydoZWxwX2dlbmVyYWxfdGl0bGUnXSA9ICdBbGdlbWVlbic7DQokbGFuZ1snaGVscF9nZW5lcmFsX3RleHQnXSA9ICc8aDM+V2hhdCBkb2VzIHRoaXMgbW9kdWxlIGRvPzwvaDM+DQo8cD5BY2VFZGl0b3IgaXMgYSBTeW50YXhoaWdobGlnaHRlciBtb2R1bGUgdXNpbmcgPHN0cm9uZz5BY2U8L3N0cm9uZz4gYSBzdGFuZGFsb25lIGNvZGUgZWRpdG9yIHdyaXR0ZW4gaW4gSmF2YVNjcmlwdC48YnIgLz4gDQpHb2FsIG9mIEFjZSBjb2RlIGVkaXRvciBncm91cCBpcyB0byBjcmVhdGUgYSB3ZWIgYmFzZWQgY29kZSBlZGl0b3IgdGhhdCBtYXRjaGVzIGFuZCBleHRlbmRzIHRoZSBmZWF0dXJlcywgdXNhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZSBvZiBleGlzdGluZyBuYXRpdmUgZWRpdG9ycyBzdWNoIGFzIFRleHRNYXRlLCBWaW0gb3IgRWNsaXBzZS48YnIgLz4NCkl0IGNhbiBiZSBlYXNpbHkgZW1iZWRkZWQgaW4gYW55IHdlYiBwYWdlIGFuZCBKYXZhU2NyaXB0IGFwcGxpY2F0aW9uLjxiciAvPiANCkFjZSBpcyBkZXZlbG9wZWQgYXMgdGhlIHByaW1hcnkgZWRpdG9yIGZvciA8YSBocmVmPSJodHRwOi8vd3d3LmNsb3VkOWlkZS5jb20iPkNsb3VkOSBJREU8L2E+IGFuZCB0aGUgc3VjY2Vzc29yIG9mIHRoZSBNb3ppbGxhIFNreXdyaXRlciAoQmVzcGluKSBQcm9qZWN0LjwvcD4NCjxoMz5BY2UgaXMgaG9zdGVkIG9uIEdpdEh1YjwvaDM+DQo8cD5UaGUgQWNlIHNvdXJjZSBjb2RlIGlzIGhvc3RlZCBvbiBHaXRIdWIuIEl0IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNb3ppbGxhIHRyaS1saWNlbnNlIChNUEwvR1BML0xHUEwpLjxiciAvPg0KVGhpcyBpcyB0aGUgc2FtZSBsaWNlbnNlIHVzZWQgYnkgRmlyZWZveC4gVGhpcyBsaWNlbnNlIGlzIGZyaWVuZGx5IHRvIGFsbCBraW5kcyBvZiBwcm9qZWN0cywgd2hldGhlciBvcGVuIHNvdXJjZSBvciBub3QuPGJyIC8+DQogVGFrZSBjaGFyZ2Ugb2YgeW91ciBlZGl0b3IgYW5kIGFkZCB5b3VyIGZhdm9yaXRlIGxhbmd1YWdlIGhpZ2hsaWdodGluZyBhbmQga2V5YmluZGluZ3MhPC9wPg0KPGgzPlVzaW5nIEFjZUVkaXRvciBNb2R1bGU8L2gzPg0KPHA+VXNpbmcgQWNlRWRpdG9yIE1vZHVsZSBpcyBzaW1wbGUuPGJyIC8+DQpBZnRlciBBY2VFZGl0b3Igd2FzIGluc3RhbGxlZCBnbyB0byAmcXVvdDtNeSBQcmVmZXJlbmNlcyAmcmFxdW87IFVzZXIgUHJlZmVyZW5jZXMmcXVvdDsgYW5kIGNob29zZSBBY2VFZGl0b3IgYXMgeW91ciBTeW50YXhoaWdobGlnaHRlciBvZiBjaG9pY2UgZnJvbSAmcXVvdDtTZWxlY3Qgc3ludGF4IGhpZ2hsaWdodGVyIHRvIHVzZTomcXVvdDsgRHJvcGRvd24uPGJyIC8+DQpNYWtlIHN1cmUgeW91IGhhdmUgJiMwMzk7TW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMmIzAzOTsgUGVybXNpc3Npb24uPC9wPg0KPGgzPlNldHRpbmdzPC9oMz4NCjxwPllvdSBjYW4gY2hhbmdlIGRlZmF1bHQgU2V0dGluZ3MgYW5kIFRoZW1lcyBpbiAmcXVvdDtFeHRlbnNpb25zICZyYXF1bzsgQWNlRWRpdG9yJnF1b3Q7PC9wPic7DQokbGFuZ1snaGVscF9rZXlib2FyZHNob3J0Y3V0c190aXRsZSddID0gJ1RvZXRzZW5ib3JkIFNuZWxrb3BwZWxpbmdlbic7DQokbGFuZ1snaGVscF9rZXlib2FyZHNob3J0Y3V0c19jb250ZW50J10gPSAnICAgIA0KICAgICAgPGgzPkRlZmF1bHQgS2V5Ym9hcmQgU2hvcnRjdXRzPC9oMz4NCg0KPHRhYmxlIGNsYXNzPSJwYWdldGFibGUiIGNlbGxzcGFjaW5nPSIwIiBzdW1tYXJ5PSJEZWZhdWx0IEtleWJvYXJkIFNob3J0Y3V0cyI+DQo8dGhlYWQ+PHRyPg0KPHRoPlBDIChXaW5kb3dzL0xpbnV4KTwvdGQ+DQo8dGg+TWFjPC90ZD4NCjx0aD5hY3Rpb248L3RkPg0KPC90cj48L3RoZWFkPg0KPHRib2R5Pg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1SZXR1cm48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVJldHVybjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPmZ1bGxzY3JlZW48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtUzwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtUzwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnBlcmZvcm0gc2F2ZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1MPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Y2VudGVyIHNlbGVjdGlvbjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1BbHQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5jb3B5IGxpbmVzIGRvd248L3RkPg0KPC90cj4NCjx0ciBsY2Fzcz0mcXVvdDtyb3cxJnF1b3Q7Pg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUFsdC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Y29weSBsaW5lcyB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+ZmluZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1LPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1HPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+ZmluZCBuZXh0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUs8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LUc8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5maW5kIHByZXZpb3VzPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+RG93bixDdHJsLU48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyBsaW5lIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+VXAsQ3RybC1QPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gbGluZSB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1FbmQsQ3RybC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1FbmQsQ29tbWFuZC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+TGVmdCxDdHJsLUI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUw8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUw8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsaW5lPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtUmlnaHQsRW5kPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1SaWdodCxFbmQsQ3RybC1FPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gbGluZSBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1MZWZ0LEhvbWU8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUxlZnQsSG9tZSxDdHJsLUE8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsaW5lIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5QYWdlRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1QYWdlRG93bixDdHJsLVY8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBwYWdlIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1QYWdlVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBwYWdlIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlJpZ2h0LEN0cmwtRjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUhvbWUsQ3RybC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtSG9tZSxDb21tYW5kLVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtTGVmdDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gd29yZCBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+T3B0aW9uLVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gd29yZCByaWdodDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+VGFiPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+VGFiPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+aW5kZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+bW92ZSBsaW5lcyBkb3duPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5tb3ZlIGxpbmVzIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1UYWI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1UYWI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5vdXRkZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5JbnNlcnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5JbnNlcnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5vdmVyd3JpdGU8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VEb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cGFnZWRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnBhZ2V1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1TaGlmdC1aLEN0cmwtWTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtWixDb21tYW5kLVk8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZWRvPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgbGluZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1LPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHRvIGxpbmUgZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tQmFja3NwYWNlPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHRvIGxpbmVzdGFydDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+QWx0LUJhY2tzcGFjZSxDdHJsLUFsdC1CYWNrc3BhY2U8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgd29yZCBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtRGVsZXRlPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHdvcmQgcmlnaHQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtUjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLUY8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZXBsYWNlPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LVI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LU9wdGlvbi1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVwbGFjZSBhbGw8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtQTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtQTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBhbGw8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUVuZDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUVuZDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBsaW5lIGVuZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtSG9tZTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUhvbWU8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgbGluZSBzdGFydDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtUGFnZURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1QYWdlRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBwYWdlIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBwYWdlIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUVuZCxBbHQtU2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB0byBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgdG8gbGluZSBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHRvIGxpbmUgc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtSG9tZSxBbHQtU2hpZnQtVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHRvIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tU2hpZnQtTGVmdDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB3b3JkIGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3Qgd29yZCByaWdodDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1PPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c3BsaXQgbGluZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC03PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC03PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+dG9nZ2xlIGNvbW1lbnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtVDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtVDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnRyYW5zcG9zZSBsZXR0ZXJzPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVo8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVo8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij51bmRvPC90ZD4NCjwvdHI+DQo8L3Rib2R5Pg0KPC90YWJsZT4nOw0KJGxhbmdbJ2hlbHBfZnJvbnRlbmRfdGl0bGUnXSA9ICcgRnJvbnRlbmQnOw0KJGxhbmdbJ2hlbHBfZnJvbnRlbmRfY29udGVudCddID0gJzxwPlRoaXMgTW9kdWxlIGFuZCBBY2UgU2NyaXB0IGNhbiBhbHNvIGJlIHVzZWQgYXMgYSBGcm9udGVuZCBTeW50YXhoaWdobGlnaHRlci48YnIgLz4NClRvIG1ha2UgaXQgd29yayB5b3UgaGF2ZSB0byBpbmNsdWRlIGpRdWVyeSBGcmFtZXdvcmssIGZvciBleGFtcGxlIHVzaW5nIENNU01TIHtjbXNfanF1ZXJ5fSB0YWcgYW5kIGFzIHdlbGwgaW5jbHVkZSB7QWNlRWRpdG9yfSBpbiB5b3VyIHBhZ2UgdHdpY2UuIEZpcnN0IGFkZCB0aGUgbW9kdWxlIHRhZyBpbiB5b3VyICZhbXA7bHQ7aGVhZCZhbXA7Z3Q7IHNlY3Rpb24gb2YgVGVtcGxhdGUgb3IgaW4gJmFtcDtxdW90O1BhZ2UgU3BlY2lmaWMgTWV0ZGF0YSZhbXA7cXVvdDsgZmllbGQgb2YgeW91ciBDb250ZW50IHBhZ2UsIGxpa2Uge0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O30gYW5kIGFub3RoZXIgY2FsbCB0byBzcGVjaWZ5IHdoaWNoIGFyZWEgc2hvdWxkIGJlIGhpZ2hsaWdodGVkLCBmb3IgZXhhbXBsZSB7QWNlRWRpdG9yIGRpdmlkPSYjMDM5O2ZvbyYjMDM5O30sIHdoaWNoIHdvdWxkIHRhcmdldCBhIHBhZ2UgZWxlbWVudCB3aXRoIGlkIDxlbT5mb288L2VtPi48L3A+DQo8aDM+U28gaG93IGRvIHlvdSB1c2UgaXQ/PC9oMz4NCjxwPkZpcnN0IGluY2x1ZGUgalF1ZXJ5IGFuZCBNb2R1bGUgdGFnIGluIHlvdXIgUGFnZSAmYW1wO2x0O2hlYWQmYW1wO2d0OyBhcmVhLCBmb3IgZXhhbXBsZSBpbiAmYW1wO3F1b3Q7UGFnZSBTcGVjaWZpYyBNZXRkYXRhJmFtcDtxdW90Ozo8L3A+DQoJPHByZT4NCgl7Y21zX2pxdWVyeX0NCgl7QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fQ0KCTwvcHJlPg0KPHA+VGhpcyBpbmNsdWRlcyBuZWVkZWQgc2NyaXB0cyBmb3IgQWNlIFN5bnRheGhpZ2hsaWdodGVyIHRvIHdvcmsuPGJyIC8+DQpJbiBNb2R1bGVzIEFkbWluIGludGVyZmFjZSB5b3UgY2FuIHNlbGVjdCBkZWZhdWx0IHNldHRpbmdzIGZvciB5b3VyICYjMDM5O2hlYWQmIzAzOTsgYWN0aW9uIG9yIHVzZSBwYXJhbWV0ZXIgbW9kZXM9JiMwMzk7aHRtbCxqYXZhc2NyaXB0JiMwMzk7IGFuZCB0aGVtZXM9JiMwMzk7dGV4dG1hdGUmIzAzOTsgd2hpY2ggd291bGQgb3ZlcnJpZGUgc2VsZWN0ZWQgUHJlZmVyZW5jZXMuPC9wPg0KPHA+Tm93IHdoZW4geW91IGhhdmUgbmVlZGVkIHNjcmlwdHMgaW5jbHVkZWQsIG9uZSBtb3JlIE1vZHVsZSB0YWcgY2FsbCBpcyBuZWVkZWQgKGZvciBleGFtcGxlIGluIHlvdXIgQ29udGVudCBFZGl0b3IgYXJlYSkgdG8gc3BlY2lmeSB3aGljaCBhcmVhIG9mIHlvdXIgUGFnZSBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQuPC9wPg0KCTxwcmU+DQoJe0FjZUVkaXRvciBkaXZpZD0mIzAzOTtzb21lLWlkJiMwMzk7fQ0KCTwvcHJlPg0KPHA+VGhpcyB0YWcgaW5jbHVkZXMgbmVlZGVkIFNjcmlwdCBhbmQgU3R5bGUgdGhhdCBpcyB1c2VkIHRvIEhpZ2hsaWdodCBzZWxlY3RlZCBlbGVtZW50IHdpdGggc3BlY2lmaWVkIGlkLjxiciAvPg0KQWxsIHlvdSBuZWVkIHRoZW4gaXMgd3JpdGUgeW91ciBDb2RlIHRoYXQgeW91IHdhbnQgdG8gSGlnaGxpZ2h0IGFuZCB3cmFwIGl0IGluc2lkZSBhbiBlbGVtZW4gbGlrZSAmYW1wO2x0O2RpdiZhbXA7Z3Q7IHdpdGggc3BlY2lmaWVkIGlkLjwvcD4gJzsNCiRsYW5nWydoZWxwX2Fib3V0X3RpdGxlJ10gPSAnT3Zlcic7DQokbGFuZ1snaGVscF9hYm91dF90ZXh0J10gPSAnPGgzPlN1cHBvcnQ8L2gzPiANCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmYW1wO2NvcHk7IDIwMTIsIEdvcmFuIElsaWMgPGEgaHJlZj0ibWFpbHRvOnVuaXF1M2VAZ21haWwuY29tIj4mYW1wO2x0O3VuaXF1M2VAZ21haWwuY29tJmFtcDtndDs8L2E+IDxhIGhyZWY9Imh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0IiByZWw9ImV4dGVybmFsIj53d3cuaWNoLW1hY2gtZGFzLmF0PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4NCgk8aDM+VGVhbTwvaDM+DQoJPHVsPg0KCQk8bGk+R29yYW4gSWxpYyAodW5pcXUzKSBnLmlsaWNAaS1hcnRzLmV1IDxiciAvPnd3dy5pY2gtbWFjaC1kYXMuYXQ8L2xpPgkNCgkJPGxpPlJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMCkgY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyAgPGJyIC8+d3d3LmNhbGd1eTEwMDAuY29tPC9saT4JCQ0KCQk8bGk+Sm9uYXRoYW4gU2NobWlkIChGb2FseSopIGhpQGpvbmF0aGFuc2NobWlkLmRlIDxiciAvPnd3dy5qb25hdGhhbnNjaG1pZC5kZTwvbGk+DQoJPC91bD4nOw0KJGxhbmdbJ2NoYW5nZWxvZyddID0gJzxoMz5WZXJzaW9uIDAuMTwvaDM+DQo8dWw+DQoJPGxpPkl0JiMwMzk7cyBmcmVzaCEgTm90aGluZyBjaGFuZ2VkIHlldCE8L2xpPg0KCTxsaT5Vc2luZyBBY2UgVmVyc2lvbiAwLjIuMDwvbGk+DQo8L3VsPg0KPGgzPlZlcnNpb24gMC4yPC9oMz4NCjx1bD4NCgk8bGk+QWRkZWQgQ1RSTC1TIEtleWJpbmRpbmc8L2xpPg0KCTxsaT5BZGRlZCBGdWxsc2NyZWVubW9kZTwvbGk+DQoJPGxpPkFkZGVkIEZyb250ZW5kIEhpZ2hsaWdodGluZzwvbGk+DQoJPGxpPlVwZGF0ZWQgQWNlPC9saT4NCjwvdWw+DQo8aDM+VmVyc2lvbiAwLjIuMTwvaDM+DQo8dWw+DQoJPGxpPkFkZGVkIEludGVybmV0IEV4cGxvcmVyIHByZWZlcmVuY2U8L2xpPg0KCTxsaT5VcGRhdGVkIEFDRSB3aXRoIHRoZW1lczwvbGk+DQo8L3VsPg0KPGgzPlZlcnNpb24gMC4yLjI8L2gzPg0KPHVsPg0KCTxsaT5GaXggZm9yIFNhZmFyaS9NYWM8L2xpPg0KPC91bD4NCjxoMz5WZXJzaW9uIDAuMi4zPC9oMz4NCjx1bD4NCiAgICA8bGk+VXBkYXRlZCB0byBsYXRlc3QgYWNlIGZyb20gZ2l0aHViPC9saT4NCiAgICA8bGk+QWRkZWQgYWRkaXRpb25hbCBwcmVmZXJlbmNlcyAoTW9kaWZ5IFRlbXBsYXRlcywgQWNlRWRpdG9yIFVzZXIgUHJlZmVyZW5jZSk8L2xpPg0KICAgIDxsaT5BZGRlZCBhYmlsaXR5IHRvIGNoYW5nZSBBY2VFZGl0b3IgcHJlZmVyZW5jZXMgcGVyIHVzZXI8L2xpPg0KICAgIDxsaT5Nb3ZlZCBtb2R1bGUgZnJvbSBleHRlbmlvbnMgdG8gbXlwcmVmczwvbGk+DQo8L3VsPg0KPGgzPlZlcnNpb24gMC4yLjMuMTwvaDM+DQo8dWw+DQogICAgPGxpPk1vZGUgcHJlZmVyZW5jZSBidWdmaXg8L2xpPg0KPC91bD4NCjxoMz5WZXJzaW9uIDAuMi40LjE8L2gzPg0KPHVsPg0KICAgIDxsaT5VcGRhdGVkIHRvIGxhdGVzdCBBY2UgYnVpbGQ8L2xpPg0KICAgIDxsaT5BZGRlZCBUb29sYmFyPC9saT4NCjwvdWw+DQo8aDM+Um9hZG1hcDwvaDM+DQo8dWw+DQogICAgPGxpPjxkZWw+QWRkIEZyb250ZW5kIFN5bnRheGhpZ2hsaWdodGluZzwvZGVsPjwvbGk+DQogICAgPGxpPjxkZWw+QWRkIEZ1bGxzY3JlZW5tb2RlPC9kZWw+PC9saT4NCiAgICA8bGk+PGRlbD5BZGQgS2V5YmluZGluZyAoQ1RSTCtTKTwvZGVsPjwvbGk+DQogICAgPGxpPjxkZWw+QWRkIEVkaXRvciBiZWhhdmlvciAoVmltLCBFTWFjcyk8L2RlbD48L2xpPg0KICAgIDxsaT48ZGVsPk1heWJlIGFkZCBUb29sYmFyPC9kZWw+PC9saT4NCjwvdWw+DQrvu78nOw0KJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTQwODAzMDI1OC4xMzQyNDU5MTY1LjEzNDI0NTkxNjUuMTM0MjQ1OTE2NS4xJzsNCiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEzNDI0NTkxNjUuMS4xLnV0bWNjbj0oZGlyZWN0KXx1dG1jc3I9KGRpcmVjdCl8dXRtY21kPShub25lKSc7DQokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7DQokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sr_YU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdBY2VFZGl0b3InOw0KJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdBY2VFZGl0b3IgamUgPGVtPlN5bnRheGhpZ2hsaWdodGVyPC9lbT4gbW9kdWwga29qaSBrb3Jpc3RpIDxzdHJvbmc+QWNlPC9zdHJvbmc+LCBlZGl0b3Iga29kYSBwaXNhbiB1IEphdmFTY3JpcHQtdS4nOw0KJGxhbmdbJ3NldHRpbmdzX3RhYiddID0gJ1ByZWZyZW5jaWplJzsNCiRsYW5nWydmcm9udGVuZHNldHRpbmdzX3RhYiddID0gJ1ByZWZlcmVuY2lqZSB6YSBrb3Jpc25pxI1raSBkZW8nOw0KJGxhbmdbJ2Zyb250ZW5kX2hlYWRfc2V0dGluZ3MnXSA9ICdGcm9udGVuZCBIZWFkIFByZWZlcmVuY2VzJzsNCiRsYW5nWydmcm9udGVuZF9zeW50YXhhcmVhX3NldHRpbmdzJ10gPSAnRnJvbnRlbmQgU3ludGF4YXJlYSBQcmVmZXJlbmNlcyc7DQokbGFuZ1snaGVhZF9kZXNjcmlwdGlvbiddID0gJ1RoZXNlIHByZWZlcmVuY2VzIGFyZSB1c2VkIGZvciBkZWZhdWx0IHNldHRpbmdzIG9mIEFjZSBzY3JpcHRzIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHBhZ2UgPGNvZGU+PGhlYWQ+PC9jb2RlPiB3aGVuIGNhbGxpbmcgPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O308L2NvZGU+IGZyb20gUGFnZSBTcGVjaWZpYyBNZXRhZGF0YSBvciBUZW1wbGF0ZS4nOw0KJGxhbmdbJ2NvbnRlbnRfZGVzY3JpcHRpb24nXSA9ICdUaGVzZSBwcmVmZXJlbmNlcyBhcmUgdXNlZCBmb3IgZGVmYXVsdCBzZXR0aW5ncyBvZiBTeW50YXhoaWdobGlnaHRpbmcgYXJlYSB3aGVuIGNhbGxpbmcgPGNvZGU+e0FjZUVkaXRvciBkaXZpZD0mIzAzOTtlZGl0b3ImIzAzOTt9PC9jb2RlPiB0YWcgd2l0aGluIGEgUGFnZS4nOw0KJGxhbmdbJ3N5bnRheGFyZWFkZXNjcmlwdGlvbiddID0gJ1RoZXNlIHByZWZlcmVuY2VzIGFyZSB1c2VkIGZvciBkZWZhdWx0IHNldHRpbmdzIG9mIEFjZSBiZWhhdmlvciB3aGVuIGNhbGxpbmcgPGNvZGU+e0FjZUVkaXRvciBkaXZpZD0mIzAzOTtmb28mIzAzOTt9PC9jb2RlPiBmcm9tIGEgUGFnZSBvciBUZW1wbGF0ZSc7DQokbGFuZ1snZXhhbXBsZV9kb2N1bWVudCddID0gJ0Rva3VtZW50JzsNCiRsYW5nWyd3aWR0aF90aXRsZSddID0gJyZTY2Fyb247aXJpbmEgZWRpdG9yYSAodSBlbSknOw0KJGxhbmdbJ2hlaWdodF90aXRsZSddID0gJ1Zpc2luYSBlZGl0b3JhICh1IGVtKSc7DQokbGFuZ1snZW5hYmxlX2llJ10gPSAnT21vZ3XEh2kgaSB6YSBJbnRlcm5ldCBFeHBsb3Jlcic7DQokbGFuZ1snZW5hYmxlX2llZGVzY3JpcHRpb24nXSA9ICc8ZW0+QWNlIFN5bnRheGhpZ2hsaWdodGVyPC9lbT4gbmUgcmFkaSBiYSZzY2Fyb247IG5hamJvbGplIHUgSW50ZXJuZXQgRXhwbG9yZXJ1LiBPdnUgb3BjaWp1IHVrbGp1xI1pdGUgbmEgc29wc3R2ZW5pIHJpemlrISc7DQokbGFuZ1snZnJvbnRlbmRfd2lkdGhfdGl0bGUnXSA9ICcmU2Nhcm9uO2lyaW5hIHphIGtvcmlzbmnEjWtpIGRlbyAodSBweCknOw0KJGxhbmdbJ2Zyb250ZW5kX2hlaWdodF90aXRsZSddID0gJ1Zpc2luYSB6YSBrb3Jpc25pxI1raSBkZW8gKHUgcHgpJzsNCiRsYW5nWydzeW50YXhfbW9kZSddID0gJ01vZCByYWRhJzsNCiRsYW5nWyd0aGVtZXMnXSA9ICdUZW1hJzsNCiRsYW5nWydmb250X3NpemUnXSA9ICdWZWxpxI1pbmEgZm9udGEnOw0KJGxhbmdbJ2Z1bGxfbGluZSddID0gJ1NlbGVrdHVqIGNlbHUgbGluaWp1JzsNCiRsYW5nWydoaWdobGlnaHRfYWN0aXZlJ10gPSAnT3puYcSNaSBha3Rpdm51IGxpbmlqdSc7DQokbGFuZ1snc2hvd19pbnZpc2libGVzJ10gPSAnUHJpa2HFvmkgbmV2aWRsaml2ZSBrYXJha3RlcmUnOw0KJGxhbmdbJ3BlcnNpc3RlbnRfaHNjcm9sbCddID0gJ1BlcnNpdGVudCBIU2Nyb2xsJzsNCiRsYW5nWydrZXlfYmluZGluZyddID0gJ0tleSBCaW5kaW5nJzsNCiRsYW5nWydzb2Z0X3dyYXAnXSA9ICdQcmVsYW1hbmplIGxpbmlqYSc7DQokbGFuZ1snc2hvd19ndXR0ZXInXSA9ICdQcmlrYcW+aSA8ZW0+R3V0dGVyPC9lbT4nOw0KJGxhbmdbJ3ByaW50X21hcmdpbiddID0gJ1ByaWthxb5pIG1hcmdpbnUgemEgJnNjYXJvbjt0YW1wdSc7DQokbGFuZ1snc29mdF90YWInXSA9ICdVc2UgU29mdCBUYWInOw0KJGxhbmdbJ2hpZ2hsaWdodF9zZWxlY3RlZCddID0gJ096bmHEjWkgc2VsZWt0b3ZhbnUgcmXEjSc7DQokbGFuZ1snZW5hYmxlX2JlaGF2aW9ycyddID0gJ0VuYWJsZSBCZWhhdmlvcnMnOw0KJGxhbmdbJ3Rlc3RhcmVhdGV4dCddID0gJ1ByZWdsZWQnOw0KJGxhbmdbJ2pzJ10gPSAnSmF2YVNjcmlwdCc7DQokbGFuZ1sncGxhaW4nXSA9ICdPYmnEjW5pIHRla3N0JzsNCiRsYW5nWydzdmcnXSA9ICdTVkcnOw0KJGxhbmdbJ2h0bWwnXSA9ICdIVE1MJzsNCiRsYW5nWydjc3MnXSA9ICdDU1MnOw0KJGxhbmdbJ3Njc3MnXSA9ICdTQ1NTJzsNCiRsYW5nWydjb2ZmZWUnXSA9ICdDb2ZmZWVTY3JpcHQnOw0KJGxhbmdbJ2pzb24nXSA9ICdKU09OJzsNCiRsYW5nWydweXRob24nXSA9ICdQeXRob24nOw0KJGxhbmdbJ3J1YnknXSA9ICdSdWJ5JzsNCiRsYW5nWydwZXJsJ10gPSAnUGVybCc7DQokbGFuZ1sncGhwJ10gPSAnUEhQJzsNCiRsYW5nWydqYXZhJ10gPSAnSmF2YSc7DQokbGFuZ1snY3NoYXJwJ10gPSAnQyMnOw0KJGxhbmdbJ2NfY3BwJ10gPSAnQysrJzsNCiRsYW5nWydjbG9qdXJlJ10gPSAnQ2xvanVyZSc7DQokbGFuZ1snb2NhbWwnXSA9ICdPQ2FtbCc7DQokbGFuZ1sndGV4dGlsZSddID0gJ1RleHRpbGUnOw0KJGxhbmdbJ2dyb292eSddID0gJ0dyb292eSc7DQokbGFuZ1snc2NhbGEnXSA9ICdTY2FsYSc7DQokbGFuZ1snY2xvdWRzJ10gPSAnQ2xvdWRzJzsNCiRsYW5nWydjaHJvbWUnXSA9ICdDaHJvbWUnOw0KJGxhbmdbJ2Nsb3Vkc19taWRuaWdodCddID0gJ0Nsb3VkcyBNaWRuaWdodCc7DQokbGFuZ1snY29iYWx0J10gPSAnQ29iYWx0JzsNCiRsYW5nWydjcmltc29uX2VkaXRvciddID0gJ0NyaW1zb24gRWRpdG9yJzsNCiRsYW5nWydkYXduJ10gPSAnRGF3bic7DQokbGFuZ1snZHJlYW13ZWF2ZXInXSA9ICdEcmVhbXdlYXZlcic7DQokbGFuZ1snZWNsaXBzZSddID0gJ0VjbGlwc2UnOw0KJGxhbmdbJ2lkbGVfZmluZ2VycyddID0gJ2lkbGVGaW5nZXJzJzsNCiRsYW5nWydrcl90aGVtZSddID0gJ2tyVGhlbWUnOw0KJGxhbmdbJ21lcmJpdm9yZSddID0gJ01lcmJpdm9yZSc7DQokbGFuZ1snbWVyYml2b3JlX3NvZnQnXSA9ICdNZXJiaXZvcmUgU29mdCc7DQokbGFuZ1snbW9ub19pbmR1c3RyaWFsJ10gPSAnTW9ubyBJbmR1c3RyaWFsJzsNCiRsYW5nWydtb25va2FpJ10gPSAnTW9ub2thaSc7DQokbGFuZ1sncGFzdGVsX29uX2RhcmsnXSA9ICdQYXN0ZWwgb24gZGFyayc7DQokbGFuZ1snc29sYXJpemVkX2RhcmsnXSA9ICdTb2xhcml6ZWQgRGFyayc7DQokbGFuZ1snc29sYXJpemVkX2xpZ2h0J10gPSAnU29sYXJpemVkIExpZ2h0JzsNCiRsYW5nWyd0ZXh0bWF0ZSddID0gJ1RleHRNYXRlJzsNCiRsYW5nWyd0b21vcnJvdyddID0gJ1RvbW9ycm93JzsNCiRsYW5nWyd0b21vcnJvd19uaWdodCddID0gJ1RvbW9ycm93IE5pZ2h0JzsNCiRsYW5nWyd0b21vcnJvd19uaWdodF9icmlnaHQnXSA9ICdUb21vcnJvdyBOaWdodCBCcmlnaHQnOw0KJGxhbmdbJ3RvbW9ycm93X25pZ2h0X2JsdWUnXSA9ICdUb21vcnJvdyBOaWdodCBCbHVlJzsNCiRsYW5nWyd0b21vcnJvd19uaWdodF9laWdodGllcyddID0gJ1RvbW9ycm93IE5pZ2h0IEVpZ2h0aWVzJzsNCiRsYW5nWyd0d2lsaWdodCddID0gJ1R3aWxpZ2h0JzsNCiRsYW5nWyd2aWJyYW50X2luayddID0gJ1ZpYnJhbnQgSW5rJzsNCiRsYW5nWydhY2UnXSA9ICdBY2UnOw0KJGxhbmdbJ3ZpbSddID0gJ1ZpbSc7DQokbGFuZ1snZW1hY3MnXSA9ICdFTWFjcyc7DQokbGFuZ1snY3VzdG9tJ10gPSAnS29yaXNuacSNa2kgZGVmaW5pc2Fubyc7DQokbGFuZ1snb2ZmJ10gPSAnSXNrbGp1xI1lbm8nOw0KJGxhbmdbJzQwJ10gPSAnNDAga2FyYWt0ZXJhJzsNCiRsYW5nWyc4MCddID0gJzgwIGthcmFrdGVyYSc7DQokbGFuZ1snMTAwJ10gPSAnMTAwIGthcmFrdGVyYSc7DQokbGFuZ1snMTQwJ10gPSAnMTQwIGthcmFrdGVyYSc7DQokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnU2HEjXV2YWogcG9kZSZzY2Fyb247YXZhbmphJzsNCiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnVmEmc2Nhcm9uO2EgcG9kZSZzY2Fyb247YXZhbmphIEFjZUVkaXRvcmEgc3Ugc2HEjXV2YW5hJzsNCiRsYW5nWydmcm9udGVuZHNldHRpbmdzc2F2ZWQnXSA9ICdWYSZzY2Fyb247YSBwb2RlJnNjYXJvbjthdmFuamEgQWNlRWRpdG9yYSB6YSBrb3Jpc25pxI1raSBkZW8gc2FqdGEgc3Ugc2HEjXV2YW5hJzsNCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0FjZUVkaXRvciBqZSB1c3BlJnNjYXJvbjtubyBpbnN0YWxpcmFuISBQb2Rlc2l0ZSAmcXVvdDtNZW5qYW5qZSBwb2RlJnNjYXJvbjthdmFuamEgc2FqdGEmcXVvdDsgZG96dm9sZSBkYSBiaXN0ZSBrb3Jpc3RpbGkgb3ZhaiBtb2R1bC4nOw0KJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdBY2VFZGl0b3IgamUgdXNwZSZzY2Fyb247bm8gZGVpbnN0YWxpcmFuJzsNCiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAnU3R2YXJubz8gU2lndXJuaSBzdGUgZGEgxb5lbGl0ZSBkYSBkZWluc3RhbGlyYXRlIEFjZUVkaXRvcj8gUmF6bWlzbGl0ZSBqbyZzY2Fyb247IGplZG5vbS4uLic7DQokbGFuZ1snaGVscF9wYXJhbV9hY3Rpb24nXSA9ICdpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgYWN0aW9uIG9mIE1vZHVsZSB0YWcuIFBvc3NpYmxlIHZhbHVlcyBhcmUgJiMwMzk7ZGVmYXVsdCYjMDM5OyBhbmQgJiMwMzk7aGVhZCYjMDM5Oy4gQm90aCBhcmUgbmVlZGVkIGZvciBjb3JyZWN0IEZyb250ZW5kIFN5bnRheGhpZ2hsaWdodGluZyBmdW5jdGlvbi4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCgk8bGk+aGVhZDwvbGk+DQoJPGxpPmRlZmF1bHQ8L2xpPg0KPC91bD4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fbW9kZXMnXSA9ICdpcyB1c2VkIHdpdGggPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O308L2NvZGU+LiBZb3UgY2FuIGluY2x1ZGUgbXVsdGlwbGUgY29tbWEgc2VwYXJhdGVkICYjMDM5O21vZGVzJiMwMzk7IHRoYXQgeW91IHdpbGwgYmUgdXNpbmcgb24geW91ciB3ZWJzaXRlLiBUaGlzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB5b3VyIDxoZWFkPiBvZiBUZW1wbGF0ZSBvciBQYWdlIHNwZWNpZmljIE1ldGFkYXRhLiBUaGlzIHdpbGwgb3ZlcnJpZGUgeW91IFByZWZlcmVuY2VzIHNlbGVjdGVkIGluIE1vZHVsZSBBZG1pbiBhcmVhLiA8YnIgLz5Qb3NzaWJsZSB2YWx1ZXMgYXJlOg0KPHVsPg0KCTxsaT5qYXZhc2NyaXB0PC9saT4gDQoJPGxpPnBsYWluPC9saT4gDQoJPGxpPnN2ZzwvbGk+IA0KCTxsaT5odG1sPC9saT4NCgk8bGk+Y3NzPC9saT4NCgk8bGk+c2NzczwvbGk+DQoJPGxpPmNvZmZlZTwvbGk+DQoJPGxpPmpzb248L2xpPg0KCTxsaT5weXRob248L2xpPg0KCTxsaT5ydWJ5PC9saT4NCgk8bGk+cGVybDwvbGk+DQoJPGxpPnBocDwvbGk+DQoJPGxpPmphdmE8L2xpPg0KCTxsaT5jc2hhcnA8L2xpPg0KCTxsaT5jX2NwcDwvbGk+DQoJPGxpPmNsb2p1cmU8L2xpPg0KCTxsaT5vY2FtbDwvbGk+DQoJPGxpPnRleHRpbGU8L2xpPg0KCTxsaT5ncm9vdnk8L2xpPg0KCTxsaT5zY2FsYTwvbGk+DQo8L3VsPic7DQokbGFuZ1snaGVscF9wYXJhbV90aGVtZXMnXSA9ICdpcyB1c2VkIHdpdGggPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O308L2NvZGU+LiBZb3UgY2FuIGluY2x1ZGUgbXVsdGlwbGUgY29tbWEgc2VwYXJhdGVkICYjMDM5O3RoZW1lcyYjMDM5OyB0aGF0IHlvdSB3aWxsIGJlIHVzaW5nIG9uIHlvdXIgd2Vic2l0ZS4gVGhpcyBzaG91bGQgYmUgaW5jbHVkZWQgaW4geW91ciA8aGVhZD4gb2YgVGVtcGxhdGUgb3IgUGFnZSBzcGVjaWZpYyBNZXRhZGF0YS4gVGhpcyB3aWxsIG92ZXJyaWRlIHlvdSBQcmVmZXJlbmNlcyBzZWxlY3RlZCBpbiBNb2R1bGUgQWRtaW4gYXJlYS4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCgk8bGk+Y2xvdWRzPC9saT4gDQoJPGxpPmNsb3Vkc19taWRuaWdodDwvbGk+IA0KCTxsaT5jb2JhbHQ8L2xpPiANCgk8bGk+Y3JpbXNvbl9lZGl0b3I8L2xpPg0KCTxsaT5kYXduPC9saT4NCgk8bGk+ZWNsaXBzZTwvbGk+DQoJPGxpPmlkbGVfZmluZ2VyczwvbGk+DQoJPGxpPmtyX3RoZW1lPC9saT4NCgk8bGk+bWVyYml2b3JlPC9saT4NCgk8bGk+bWVyYml2b3JlX3NvZnQ8L2xpPg0KCTxsaT5tb25vX2luZHVzdHJpYWw8L2xpPg0KCTxsaT5tb25va2FpPC9saT4NCgk8bGk+cGFzdGVsX29uX2Rhcms8L2xpPg0KCTxsaT5zb2xhcml6ZWRfZGFyazwvbGk+DQoJPGxpPnNvbGFyaXplZF9saWdodDwvbGk+DQoJPGxpPnRleHRtYXRlPC9saT4NCgk8bGk+dHdpbGlnaHQ8L2xpPg0KCTxsaT52aWJyYW50X2luazwvbGk+DQo8L3VsPic7DQokbGFuZ1snaGVscF9wYXJhbV9tb2RlJ10gPSAnaXMgdXNlZCB3aXRoaW4gYSBwYWdlIHdpdGggPGNvZGU+e0FjZUVkaXRvciBhY3Rpb249JiMwMzk7ZGVmYXVsdCYjMDM5O308L2NvZGU+IG1vZHVsZSB0YWcuIFRoaXMgc3BlY2lmaWVzIFN5bnRheGhpZ2hsaWdodGVyIG1vZGUgZm9yIHNwZWNpZmljIGNvZGUgYXJlYS4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCgk8bGk+amF2YXNjcmlwdDwvbGk+IA0KCTxsaT5wbGFpbjwvbGk+IA0KCTxsaT5zdmc8L2xpPiANCgk8bGk+aHRtbDwvbGk+DQoJPGxpPmNzczwvbGk+DQoJPGxpPnNjc3M8L2xpPg0KCTxsaT5jb2ZmZWU8L2xpPg0KCTxsaT5qc29uPC9saT4NCgk8bGk+cHl0aG9uPC9saT4NCgk8bGk+cnVieTwvbGk+DQoJPGxpPnBlcmw8L2xpPg0KCTxsaT5waHA8L2xpPg0KCTxsaT5qYXZhPC9saT4NCgk8bGk+Y3NoYXJwPC9saT4NCgk8bGk+Y19jcHA8L2xpPg0KCTxsaT5jbG9qdXJlPC9saT4NCgk8bGk+b2NhbWw8L2xpPg0KCTxsaT50ZXh0aWxlPC9saT4NCgk8bGk+Z3Jvb3Z5PC9saT4NCgk8bGk+c2NhbGE8L2xpPg0KPC91bD4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fdGhlbWUnXSA9ICdpcyB1c2VkIHdpdGhpbiBhIHBhZ2Ugd2l0aCA8Y29kZT57QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtkZWZhdWx0JiMwMzk7fTwvY29kZT4gbW9kdWxlIHRhZy4gVGhpcyBzcGVjaWZpZXMgU3ludGF4aGlnaGxpZ2h0ZXIgdGhlbWUgZm9yIHNwZWNpZmljIGNvZGUgYXJlYS4gPGJyIC8+UG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCgk8bGk+Y2xvdWRzPC9saT4gDQoJPGxpPmNsb3Vkc19taWRuaWdodDwvbGk+IA0KCTxsaT5jb2JhbHQ8L2xpPiANCgk8bGk+Y3JpbXNvbl9lZGl0b3I8L2xpPg0KCTxsaT5kYXduPC9saT4NCgk8bGk+ZWNsaXBzZTwvbGk+DQoJPGxpPmlkbGVfZmluZ2VyczwvbGk+DQoJPGxpPmtyX3RoZW1lPC9saT4NCgk8bGk+bWVyYml2b3JlPC9saT4NCgk8bGk+bWVyYml2b3JlX3NvZnQ8L2xpPg0KCTxsaT5tb25vX2luZHVzdHJpYWw8L2xpPg0KCTxsaT5tb25va2FpPC9saT4NCgk8bGk+cGFzdGVsX29uX2Rhcms8L2xpPg0KCTxsaT5zb2xhcml6ZWRfZGFyazwvbGk+DQoJPGxpPnNvbGFyaXplZF9saWdodDwvbGk+DQoJPGxpPnRleHRtYXRlPC9saT4NCgk8bGk+dHdpbGlnaHQ8L2xpPg0KCTxsaT52aWJyYW50X2luazwvbGk+DQo8L3VsPic7DQokbGFuZ1snaGVscF9wYXJhbV93aWR0aCddID0gJ29kcmXEkXVqZSAmc2Nhcm9uO2lyaW51IFN5bnRheGhpZ2hsaWdodGVyIHUgcGlrc2VsaW1hLic7DQokbGFuZ1snaGVscF9wYXJhbV9oZWlnaHQnXSA9ICdvZHJlxJF1amUgdmlzaW51IFN5bnRheGhpZ2hsaWdodGVyIHUgcGlrc2VsaW1hLic7DQokbGFuZ1snaGVscF9wYXJhbV9kaXZpZCddID0gJ0lEIGVsZW1lbnRhIGtvamkgc2FkcsW+aSBWYSZzY2Fyb247IGtvZC4gS29yaXN0aXRlIGplZGluc3R2ZW51IElEIG96bmFrdSB6YSBzdmFraSBrb21hZCBrb2RhLic7DQokbGFuZ1snaGVscF9nZW5lcmFsX3RpdGxlJ10gPSAnT3Amc2Nhcm9uO3RhJzsNCiRsYW5nWydoZWxwX2dlbmVyYWxfdGV4dCddID0gJzxoMz4mU2Nhcm9uO3RhIG92byByYWRpPzwvaDM+DQo8cD5BY2VFZGl0b3IgamUgU3ludGF4aGlnaGxpZ2h0ZXIgbW9kdWwga29qaSBrb3Jpc3RpIDxzdHJvbmc+QWNlPC9zdHJvbmc+IGVkaXRvciBrb2RhIHBpc2FuIHUgSmF2YVNjcmlwdC11LjxiciAvPiANCk5hbWplcmEgZ3J1cGUga29qYSByYXp2aWphIEFjZSBlZGl0b3Iga29kYSBqZSBzdHZhcmFuamUgZWRpdG9yYSBrb2RhIG5hbWVuamVub2cgVmVidSBrb2ppIGltYSBpc3RlIGkgxI1hayBib2xqZSBtb2d1xIdub3N0aSwgdXBvdHJlYmxqaXZvc3QgaSBwZXJmb3JtYW5zZSBrYW8gcG9zdG9qZcSHaSBlZGl0b3IgdGlwYSBUZXh0TWF0ZSwgVmltIGlsaSBFY2xpcHNlLjxiciAvPg0KTGFrbyBzZSBtb8W+ZSBpbXBsZW1lbnRpcmFyaSB1IGJpbG8ga29qdSBWZWIgc3RyYW5pY3UgaSBKYXZhU2NyaXB0IGFwbGlrYWNpanUuPGJyIC8+IA0KQWNlIGplIHJhenZpamFuIGthbyBwcmltYXJuaSBlZGl0b3IgemEgPGEgaHJlZj0iaHR0cDovL3d3dy5jbG91ZDlpZGUuY29tIj5DbG91ZDkgSURFPC9hPiBpIG5hc2xlZG5payBqZSBNb3ppbGxhIFNreXdyaXRlciAoQmVzcGluKSBQcm9qZWt0YS48L3A+DQo8aDM+QWNlIGplIGhvc3RvdmFuIG5hIEdpdEh1Yi11PC9oMz4NCjxwPkl6dm9ybmkga29kIEFjZSBlZGl0b3JhIGplIGhvc3RvdmFuIG5hIEdpdEh1Yi11LiBQb2RsZcW+ZSB0cm9zdHJ1a29qIE1vemlsbGEgbGljZW5jaSAoTVBML0dQTC9MR1BMKS48YnIgLz4NCklzdHUgbGljZW5jdSBrb3Jpc3RpIEZpcmVmb3guIE92YSBsaWNlbmNhIGplIG5ha2xvbmplbmEgc3ZpbSB2cnN0YW1hIHByb2pla2F0YSwgYmlsbyBkYSBzdSA8ZW0+b3BlbiBzb3VyY2U8L2VtPiBpbGkgbmUuPGJyIC8+DQogVGFrZSBjaGFyZ2Ugb2YgeW91ciBlZGl0b3IgYW5kIGFkZCB5b3VyIGZhdm9yaXRlIGxhbmd1YWdlIGhpZ2hsaWdodGluZyBhbmQga2V5YmluZGluZ3MhPC9wPg0KPGgzPktha28gc2Uga29yaXN0aT88L2gzPg0KPHA+VXBvdGViYSBBY2VFZGl0b3IgTW9kdWxhIGplIHByb3N0YS48YnIgLz4NCk5ha29uICZzY2Fyb247dG8gaW5zdGFsaXJhdGUgQWNlRWRpdG9yIGlkaXRlIG5hICZxdW90O01vamUgcHJlZmVyZW5jaWplICZyYXF1bzsgS29yaXNuacSNa2UgcHJlZmVyZW5jaWplJnF1b3Q7IGkgaXphYmVyaXRlIEFjZUVkaXRvciBrYW8gVmEmc2Nhcm9uOyA8ZW0+c3ludGF4aGlnaGxpZ2h0ZXI8L2VtPiB1ICZxdW90O0l6YWJlcml0ZSBzeW50YXggaGlnaGxpZ2h0ZXIgemEgdXBvdHJlYnU6JnF1b3Q7IHBhZGFqdcSHb2ogbGlzdGkuPGJyIC8+DQpQb3N0YXJhanRlIHNlIGRhIGltYXRlIGRvenZvbHUgJnF1b3Q7TWVuamFuamUgcG9kZSZzY2Fyb247YXZhbmphIHNhanRhJnF1b3Q7LjwvcD4NCjxoMz5Qb2RlJnNjYXJvbjthdmFuamE8L2gzPg0KPHA+TW/FvmV0ZSBwcm9tZW5pdGkgcG9kcmF6dW1ldmFuYSBwb2RlJnNjYXJvbjthdmFuamEgaSB0ZW1lIG5ha28gb2RldGUgbmEgJnF1b3Q7RWtzdGVuemlqZSAmcmFxdW87IEFjZUVkaXRvciZxdW90OzwvcD4nOw0KJGxhbmdbJ2hlbHBfa2V5Ym9hcmRzaG9ydGN1dHNfdGl0bGUnXSA9ICdQcmXEjWljZSBuYSB0YXN0YXR1cmknOw0KJGxhbmdbJ2hlbHBfa2V5Ym9hcmRzaG9ydGN1dHNfY29udGVudCddID0gJyAgICAgIDxoMz5Qb2RyYXp1bWVuYW5lIHByZcSNaWNlIG5hIHRhc3RhdHVyaTwvaDM+DQoNCjx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iRGVmYXVsdCBLZXlib2FyZCBTaG9ydGN1dHMiPg0KPHRoZWFkPjx0cj4NCjx0aD5QQyAoV2luZG93cy9MaW51eCk8L3RkPg0KPHRoPk1hYzwvdGQ+DQo8dGg+YWN0aW9uPC90ZD4NCjwvdHI+PC90aGVhZD4NCjx0Ym9keT4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtUmV0dXJuPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1SZXR1cm48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5mdWxsc2NyZWVuPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVM8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVM8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5wZXJmb3JtIHNhdmU8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtTDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPmNlbnRlciBzZWxlY3Rpb248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtQWx0LURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLU9wdGlvbi1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Y29weSBsaW5lcyBkb3duPC90ZD4NCjwvdHI+DQo8dHIgbGNhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUFsdC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Y29weSBsaW5lcyB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+ZmluZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1LPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1HPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+ZmluZCBuZXh0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUs8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LUc8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5maW5kIHByZXZpb3VzPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+RG93bixDdHJsLU48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyBsaW5lIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+VXAsQ3RybC1QPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gbGluZSB1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1FbmQsQ3RybC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1FbmQsQ29tbWFuZC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+TGVmdCxDdHJsLUI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUw8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUw8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsaW5lPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtUmlnaHQsRW5kPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1SaWdodCxFbmQsQ3RybC1FPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gbGluZSBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1MZWZ0LEhvbWU8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUxlZnQsSG9tZSxDdHJsLUE8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBsaW5lIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5QYWdlRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1QYWdlRG93bixDdHJsLVY8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBwYWdlIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1QYWdlVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5nbyB0byBwYWdlIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlJpZ2h0LEN0cmwtRjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPmdvIHRvIHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUhvbWUsQ3RybC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtSG9tZSxDb21tYW5kLVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtTGVmdDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gd29yZCBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+T3B0aW9uLVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Z28gdG8gd29yZCByaWdodDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+VGFiPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+VGFiPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+aW5kZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPk9wdGlvbi1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+bW92ZSBsaW5lcyBkb3duPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5tb3ZlIGxpbmVzIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1UYWI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1UYWI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5vdXRkZW50PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5JbnNlcnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5JbnNlcnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5vdmVyd3JpdGU8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VEb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cGFnZWRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnBhZ2V1cDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1TaGlmdC1aLEN0cmwtWTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtWixDb21tYW5kLVk8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZWRvPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLUQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLUQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgbGluZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1LPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHRvIGxpbmUgZW5kPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tQmFja3NwYWNlPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHRvIGxpbmVzdGFydDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+QWx0LUJhY2tzcGFjZSxDdHJsLUFsdC1CYWNrc3BhY2U8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZW1vdmUgd29yZCBsZWZ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij48L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5BbHQtRGVsZXRlPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVtb3ZlIHdvcmQgcmlnaHQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtUjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtT3B0aW9uLUY8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5yZXBsYWNlPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LVI8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LU9wdGlvbi1GPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+cmVwbGFjZSBhbGw8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtQTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtQTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBhbGw8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1Eb3duPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUVuZDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUVuZDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBsaW5lIGVuZDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtSG9tZTwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LUhvbWU8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgbGluZSBzdGFydDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+U2hpZnQtUGFnZURvd248L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1QYWdlRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBwYWdlIGRvd248L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVBhZ2VVcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCBwYWdlIHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVJpZ2h0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHJpZ2h0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUVuZCxBbHQtU2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtRG93bjwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB0byBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1TaGlmdC1SaWdodDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkNvbW1hbmQtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3QgdG8gbGluZSBlbmQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkFsdC1TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC1TaGlmdC1MZWZ0PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHRvIGxpbmUgc3RhcnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtSG9tZSxBbHQtU2hpZnQtVXA8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVNoaWZ0LVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHRvIHN0YXJ0PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5TaGlmdC1VcDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPlNoaWZ0LVVwPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c2VsZWN0IHVwPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzIiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVNoaWZ0LUxlZnQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tU2hpZnQtTGVmdDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnNlbGVjdCB3b3JkIGxlZnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MSI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5PcHRpb24tU2hpZnQtUmlnaHQ8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5zZWxlY3Qgd29yZCByaWdodDwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cyIj4NCjx0ZCBhbGlnbj0ibGVmdCI+PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC1PPC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+c3BsaXQgbGluZTwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3cxIj4NCjx0ZCBhbGlnbj0ibGVmdCI+Q3RybC03PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+Q29tbWFuZC03PC90ZD4NCjx0ZCBhbGlnbj0ibGVmdCI+dG9nZ2xlIGNvbW1lbnQ8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93MiI+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtVDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPkN0cmwtVDwvdGQ+DQo8dGQgYWxpZ249ImxlZnQiPnRyYW5zcG9zZSBsZXR0ZXJzPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvdzEiPg0KPHRkIGFsaWduPSJsZWZ0Ij5DdHJsLVo8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij5Db21tYW5kLVo8L3RkPg0KPHRkIGFsaWduPSJsZWZ0Ij51bmRvPC90ZD4NCjwvdHI+DQo8L3Rib2R5Pg0KPC90YWJsZT4nOw0KJGxhbmdbJ2hlbHBfZnJvbnRlbmRfdGl0bGUnXSA9ICdLb3Jpc25pxI1raSBkZW8nOw0KJGxhbmdbJ2hlbHBfZnJvbnRlbmRfY29udGVudCddID0gJzxwPlRoaXMgTW9kdWxlIGFuZCBBY2UgU2NyaXB0IGNhbiBhbHNvIGJlIHVzZWQgYXMgYSBGcm9udGVuZCBTeW50YXhoaWdobGlnaHRlci48YnIgLz4NClRvIG1ha2UgaXQgd29yayB5b3UgaGF2ZSB0byBpbmNsdWRlIGpRdWVyeSBGcmFtZXdvcmssIGZvciBleGFtcGxlIHVzaW5nIENNU01TIHtjbXNfanF1ZXJ5fSB0YWcgYW5kIGFzIHdlbGwgaW5jbHVkZSB7QWNlRWRpdG9yfSBpbiB5b3VyIHBhZ2UgdHdpY2UuIEZpcnN0IGFkZCB0aGUgbW9kdWxlIHRhZyBpbiB5b3VyIDxoZWFkPiBzZWN0aW9uIG9mIFRlbXBsYXRlIG9yIGluICZxdW90O1BhZ2UgU3BlY2lmaWMgTWV0ZGF0YSZxdW90OyBmaWVsZCBvZiB5b3VyIENvbnRlbnQgcGFnZSwgbGlrZSB7QWNlRWRpdG9yIGFjdGlvbj0mIzAzOTtoZWFkJiMwMzk7fSBhbmQgYW5vdGhlciBjYWxsIHRvIHNwZWNpZnkgd2hpY2ggYXJlYSBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQsIGZvciBleGFtcGxlIHtBY2VFZGl0b3IgZGl2aWQ9JiMwMzk7Zm9vJiMwMzk7fSwgd2hpY2ggd291bGQgdGFyZ2V0IGEgcGFnZSBlbGVtZW50IHdpdGggaWQgPGVtPmZvbzwvZW0+LjwvcD4NCjxoMz5TbyBob3cgZG8geW91IHVzZSBpdD88L2gzPg0KPHA+Rmlyc3QgaW5jbHVkZSBqUXVlcnkgYW5kIE1vZHVsZSB0YWcgaW4geW91ciBQYWdlIDxoZWFkPiBhcmVhLCBmb3IgZXhhbXBsZSBpbiAmcXVvdDtQYWdlIFNwZWNpZmljIE1ldGRhdGEmcXVvdDs6PC9wPg0KCTxwcmU+DQoJe2Ntc19qcXVlcnl9DQoJe0FjZUVkaXRvciBhY3Rpb249JiMwMzk7aGVhZCYjMDM5O30NCgk8L3ByZT4NCjxwPlRoaXMgaW5jbHVkZXMgbmVlZGVkIHNjcmlwdHMgZm9yIEFjZSBTeW50YXhoaWdobGlnaHRlciB0byB3b3JrLjxiciAvPg0KSW4gTW9kdWxlcyBBZG1pbiBpbnRlcmZhY2UgeW91IGNhbiBzZWxlY3QgZGVmYXVsdCBzZXR0aW5ncyBmb3IgeW91ciAmIzAzOTtoZWFkJiMwMzk7IGFjdGlvbiBvciB1c2UgcGFyYW1ldGVyIG1vZGVzPSYjMDM5O2h0bWwsamF2YXNjcmlwdCYjMDM5OyBhbmQgdGhlbWVzPSYjMDM5O3RleHRtYXRlJiMwMzk7IHdoaWNoIHdvdWxkIG92ZXJyaWRlIHNlbGVjdGVkIFByZWZlcmVuY2VzLjwvcD4NCjxwPk5vdyB3aGVuIHlvdSBoYXZlIG5lZWRlZCBzY3JpcHRzIGluY2x1ZGVkLCBvbmUgbW9yZSBNb2R1bGUgdGFnIGNhbGwgaXMgbmVlZGVkIChmb3IgZXhhbXBsZSBpbiB5b3VyIENvbnRlbnQgRWRpdG9yIGFyZWEpIHRvIHNwZWNpZnkgd2hpY2ggYXJlYSBvZiB5b3VyIFBhZ2Ugc2hvdWxkIGJlIGhpZ2hsaWdodGVkLjwvcD4NCgk8cHJlPg0KCXtBY2VFZGl0b3IgZGl2aWQ9JiMwMzk7c29tZS1pZCYjMDM5O30NCgk8L3ByZT4NCjxwPlRoaXMgdGFnIGluY2x1ZGVzIG5lZWRlZCBTY3JpcHQgYW5kIFN0eWxlIHRoYXQgaXMgdXNlZCB0byBIaWdobGlnaHQgc2VsZWN0ZWQgZWxlbWVudCB3aXRoIHNwZWNpZmllZCBpZC48YnIgLz4NCkFsbCB5b3UgbmVlZCB0aGVuIGlzIHdyaXRlIHlvdXIgQ29kZSB0aGF0IHlvdSB3YW50IHRvIEhpZ2hsaWdodCBhbmQgd3JhcCBpdCBpbnNpZGUgYW4gZWxlbWVuIGxpa2UgPGRpdj4gd2l0aCBzcGVjaWZpZWQgaWQuPC9wPic7DQokbGFuZ1snaGVscF9mcm9udGVuZF9zYW1wbGUnXSA9ICc8cHJlIGlkPSZxdW90O3NvbWUtaWQmcXVvdDs+DQo8aHRtbD4NCiAmbmJzcDsgJm5ic3A7IDxoZWFkPg0KICZuYnNwOyAmbmJzcDsgPHN0eWxlIHR5cGU9JnF1b3Q7dGV4dC9jc3MmcXVvdDs+DQogJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IC50ZXh0LWxheWVyIHsNCiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBmb250LWZhbWlseTogTW9uYWNvLCAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOw0KICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGZvbnQtc2l6ZTogMTJweDsNCiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBjdXJzb3I6IHRleHQ7DQogJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IH0NCiAmbmJzcDsgJm5ic3A7IDwvc3R5bGU+DQogJm5ic3A7ICZuYnNwOyA8L2hlYWQ+DQogJm5ic3A7ICZuYnNwOyA8Ym9keT4NCiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgPGgxIHN0eWxlPSZxdW90O2NvbG9yOnJlZCZxdW90Oz5KdWh1IEtpbm5lcnM8L2gxPg0KICZuYnNwOyAmbmJzcDsgPC9ib2R5PiA8L2h0bWw+DQo8L3ByZT4nOw0KJGxhbmdbJ2hlbHBfYWJvdXRfdGl0bGUnXSA9ICdPIG1vZHVsdSc7DQokbGFuZ1snaGVscF9hYm91dF90ZXh0J10gPSAnPGgzPlBvZHImc2Nhcm9uO2thPC9oMz4NCjxwPlUgc2tsYWR1IHNhIEdQTCwgb3ZhaiBzb2Z0dmVyIFZhbSBqZSBwcnXFvmVuICZxdW90O3UgdmnEkWVub20gc3Rhbmp1JnF1b3Q7LiBNb2xpbW8gcHJvxI1pdGFqdGUgbGljZW5jdSB6YSDEjWl0YXZ1IGl6amF2dSBvIG9kcmljYW5qdSBvZCBvZGdvdm9ybm9zdGkuPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTIsIEdvcmFuIElsaWMgPGEgaHJlZj0ibWFpbHRvOnVuaXF1M2VAZ21haWwuY29tIj48dW5pcXUzZUBnbWFpbC5jb20+PC9hPiA8YSBocmVmPSJodHRwOi8vd3d3LmljaC1tYWNoLWRhcy5hdCIgcmVsPSJleHRlcm5hbCI+d3d3LmljaC1tYWNoLWRhcy5hdDwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQoJPGgzPlRpbTwvaDM+DQoJPHVsPg0KCQk8bGk+R29yYW4gSWxpYyAodW5pcXUzKSBnLmlsaWNAaS1hcnRzLmV1IDxiciAvPnd3dy5pY2gtbWFjaC1kYXMuYXQ8L2xpPgkNCgkJPGxpPlJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMCkgY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyAgPGJyIC8+d3d3LmNhbGd1eTEwMDAuY29tPC9saT4JCQ0KCQk8bGk+Sm9uYXRoYW4gU2NobWlkIChGb2FseSopIGhpQGpvbmF0aGFuc2NobWlkLmRlIDxiciAvPnd3dy5qb25hdGhhbnNjaG1pZC5kZTwvbGk+DQoJPC91bD4NCic7DQokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPGgzPlZlcnNpb24gMC4xPC9oMz4NCjx1bD4NCgk8bGk+SXQmIzAzOTtzIGZyZXNoISBOb3RoaW5nIGNoYW5nZWQgeWV0ITwvbGk+DQoJPGxpPlVzaW5nIEFjZSBWZXJzaW9uIDAuMi4wPC9saT4NCjwvdWw+DQo8aDM+VmVyc2lvbiAwLjI8L2gzPg0KPHVsPg0KCTxsaT5BZGRlZCBDVFJMLVMgS2V5YmluZGluZzwvbGk+DQoJPGxpPkFkZGVkIEZ1bGxzY3JlZW5tb2RlPC9saT4NCgk8bGk+QWRkZWQgRnJvbnRlbmQgSGlnaGxpZ2h0aW5nPC9saT4NCgk8bGk+VXBkYXRlZCBBY2U8L2xpPg0KPC91bD4NCjxoMz5WZXJzaW9uIDAuMi4xPC9oMz4NCjx1bD4NCgk8bGk+QWRkZWQgSW50ZXJuZXQgRXhwbG9yZXIgcHJlZmVyZW5jZTwvbGk+DQoJPGxpPlVwZGF0ZWQgQUNFIHdpdGggdGhlbWVzPC9saT4NCjwvdWw+DQo8aDM+Um9hZG1hcDwvaDM+DQo8dWw+DQoJPGxpPjxkZWw+QWRkIEZyb250ZW5kIFN5bnRheGhpZ2hsaWdodGluZzwvZGVsPjwvbGk+DQoJPGxpPjxkZWw+QWRkIEZ1bGxzY3JlZW5tb2RlPC9kZWw+PC9saT4NCgk8bGk+PGRlbD5BZGQgS2V5YmluZGluZyAoQ1RSTCtTKTwvZGVsPjwvbGk+DQoJPGxpPkFkZCBFZGl0b3IgYmVoYXZpb3IgKFZpbSwgRU1hY3MpPC9saT4NCgk8bGk+TWF5YmUgYWRkIFRvb2xiYXI8L2xpPg0KPC91bD4nOw0KJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMzQ3ODk0MjEwLjEzMjczMjAwMTAuMTMyNzMyMDAxMC4xMzI3MzIwMDEwLjEnOw0KJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTMyNzMyMDAxMC4xLjEudXRtY2NuPShkaXJlY3QpfHV0bWNzcj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsNCiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsNCiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsNCj8+]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogQWNlRWRpdG9yIC0gU3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IgaHR0cDovL2FjZS5hamF4Lm9yZy8uDQojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0DQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgRm9yIEhlbHAgYnVpbGRpbmcgbW9kdWxlczoNCiMgLSBSZWFkIHRoZSBEb2N1bWVudGF0aW9uIGFzIGl0IGJlY29tZXMgYXZhaWxhYmxlIGF0DQojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8NCiMgLSBDaGVjayBvdXQgdGhlIFNrZWxldG9uIE1vZHVsZSBmb3IgYSBjb21tZW50ZWQgZXhhbXBsZQ0KIyAtIExvb2sgYXQgb3RoZXIgbW9kdWxlcywgYW5kIGxlYXJuIGZyb20gdGhlIHNvdXJjZQ0KIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcNCiMgLSBDaGF0IHdpdGggZGV2ZWxvcGVycyBvbiB0aGUgI2NtcyBJUkMgY2hhbm5lbA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc19vYmplY3QoY21zbXMoKSkpDQoJZXhpdDsNCg0KLy8gQmFja2VuZCBlZGl0b3IgcHJlZnMNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd3aWR0aCcsICc4MCcpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hlaWdodCcsICc0MCcpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ21vZGUnLCAnaHRtbCcpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3RoZW1lJywgJ3RleHRtYXRlJyk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZm9udHNpemUnLCAnMTJweCcpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Z1bGxfbGluZScsIDEpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2VuYWJsZV9pZScsIDApOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Nob3dfaW52aXNpYmxlcycsIDApOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NvZnRfd3JhcCcsICc4MCw4MCcpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hpZ2hsaWdodF9hY3RpdmUnLCAxKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwZXJzaXN0ZW50X2hzY3JvbGwnLCAxKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXlfYmluZGluZycsICdhY2UnKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzb2Z0X3RhYicsIDEpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ByaW50X21hcmdpbicsIDApOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hpZ2hsaWdodF9zZWxlY3RlZCcsIDEpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2VuYWJsZV9iZWhhdmlvcnMnLCAxKTsNCg0KLy8gRnJvbnRlbmQgc3ludGF4YXJlYSBwcmVmcw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zyb250ZW5kX21vZGUnLCAnaHRtbCcpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3N5bnRheGFyZWFfbW9kZScsICdodG1sJyk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfc3ludGF4YXJlYV90aGVtZScsICd0ZXh0bWF0ZScpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3RoZW1lJywgJ3RleHRtYXRlJyk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfZm9udHNpemUnLCAnMTJweCcpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3dpZHRoJywgJzUwMCcpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zyb250ZW5kX2hlaWdodCcsICc0MDAnKTsNCg0KLy8gcGVybWlzc2lvbnMNCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdBY2VFZGl0b3IgVXNlciBQcmVmZXJlbmNlJywgJ0FjZUVkaXRvciBVc2VyIFByZWZlcmVuY2UnKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogQWNlRWRpdG9yIC0gU3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IgaHR0cDovL2FjZS5hamF4Lm9yZy8uDQojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0DQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgRm9yIEhlbHAgYnVpbGRpbmcgbW9kdWxlczoNCiMgLSBSZWFkIHRoZSBEb2N1bWVudGF0aW9uIGFzIGl0IGJlY29tZXMgYXZhaWxhYmxlIGF0DQojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8NCiMgLSBDaGVjayBvdXQgdGhlIFNrZWxldG9uIE1vZHVsZSBmb3IgYSBjb21tZW50ZWQgZXhhbXBsZQ0KIyAtIExvb2sgYXQgb3RoZXIgbW9kdWxlcywgYW5kIGxlYXJuIGZyb20gdGhlIHNvdXJjZQ0KIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcNCiMgLSBDaGF0IHdpdGggZGV2ZWxvcGVycyBvbiB0aGUgI2NtcyBJUkMgY2hhbm5lbA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc19vYmplY3QoY21zbXMoKSkpDQoJZXhpdDsNCg0KJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogQWNlRWRpdG9yIC0gU3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IgaHR0cDovL2FjZS5hamF4Lm9yZy8uDQojIFZlcnNpb246IDAuMi4zLCBHb3JhbiBJbGljIHVuaXF1M2VAZ21haWwuY29tIGh0dHA6Ly93d3cuaWNoLW1hY2gtZGFzLmF0DQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDcgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgRm9yIEhlbHAgYnVpbGRpbmcgbW9kdWxlczoNCiMgLSBSZWFkIHRoZSBEb2N1bWVudGF0aW9uIGFzIGl0IGJlY29tZXMgYXZhaWxhYmxlIGF0DQojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8NCiMgLSBDaGVjayBvdXQgdGhlIFNrZWxldG9uIE1vZHVsZSBmb3IgYSBjb21tZW50ZWQgZXhhbXBsZQ0KIyAtIExvb2sgYXQgb3RoZXIgbW9kdWxlcywgYW5kIGxlYXJuIGZyb20gdGhlIHNvdXJjZQ0KIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcNCiMgLSBDaGF0IHdpdGggZGV2ZWxvcGVycyBvbiB0aGUgI2NtcyBJUkMgY2hhbm5lbA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc19vYmplY3QoY21zbXMoKSkpDQoJZXhpdDsNCg0Kc3dpdGNoICgkb2xkdmVyc2lvbikgew0KCWNhc2UgJzAuMi4wJzoNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2VuYWJsZV9pZScsIDApOw0KCWNhc2UgJzAuMi4yJzoNCgkJLy8gcGVybWlzc2lvbnMNCgkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ0FjZUVkaXRvciBVc2VyIFByZWZlcmVuY2UnLCAnQWNlRWRpdG9yIFVzZXIgUHJlZmVyZW5jZScpOw0KfQ0KPz4=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/ace.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iYWNlX3dyYXBwZXIiPg0KPGRpdiBjbGFzcz0ieyR0ZXh0YXJlYWlkfV90b29sYmFyIj4NCgk8ZGl2IGNsYXNzPSJhY2VfdG9vbGJhciI+DQoJCTxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9InskdGV4dGFyZWFpZH1fb24iIG5hbWU9InJhZGlvX3skYWNlX2lkfSIgY2hlY2tlZD0iY2hlY2tlZCIgLz48bGFiZWwgZm9yPSJ7JHRleHRhcmVhaWR9X29uIj57JGFjZV9tb2QtPkxhbmcoJ29uJyl9PC9sYWJlbD4NCgkJPGlucHV0IHR5cGU9InJhZGlvIiBpZD0ieyR0ZXh0YXJlYWlkfV9vZmYiIG5hbWU9InJhZGlvX3skYWNlX2lkfSIgLz48bGFiZWwgZm9yPSJ7JHRleHRhcmVhaWR9X29mZiI+eyRhY2VfbW9kLT5MYW5nKCdvZmYnKX08L2xhYmVsPg0KCQk8bGFiZWw+eyRhY2VfbW9kLT5MYW5nKCdjdXJyZW50X2xpbmUnKX06PC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InskdGV4dGFyZWFpZH1fbGluZW51bSIgY2xhc3M9ImlucHV0IHdpZGUiIG5hbWU9ImFjZV9saW5lbnVtIiB2YWx1ZT0iIiByZWFkb25seT0icmVhZG9ubHkiIC8+DQoJCTxsYWJlbD57JGFjZV9tb2QtPkxhbmcoJ3RvdGFsX2xpbmVzJyl9OjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGlkPSJ7JHRleHRhcmVhaWR9X3RvdGFsbGluZXMiIGNsYXNzPSJpbnB1dCIgbmFtZT0iYWNlX2dvbGluZSIgdmFsdWU9IiIgcmVhZG9ubHk9InJlYWRvbmx5IiAvPg0KCQk8bGFiZWw+eyRhY2VfbW9kLT5MYW5nKCdnb19saW5lJyl9OjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGlkPSJ7JHRleHRhcmVhaWR9X2dvbGluZSIgY2xhc3M9ImlucHV0IiBuYW1lPSJhY2VfZ29saW5lIiB2YWx1ZT0iIiAvPg0KCQk8bGFiZWw+eyRhY2VfbW9kLT5MYW5nKCdrZXliaW5kaW5ncycpfTo8L2xhYmVsPg0KCQk8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJ7JHRleHRhcmVhaWR9X2FjZSIgbmFtZT0icmFkaW8yX3skYWNlX2lkfSIgY2hlY2tlZD0iY2hlY2tlZCIgdmFsdWU9Im51bGwiIC8+PGxhYmVsIGZvcj0ieyR0ZXh0YXJlYWlkfV9hY2UiPnskYWNlX21vZC0+TGFuZygnYWNlJyl9PC9sYWJlbD4NCgkJPGlucHV0IHR5cGU9InJhZGlvIiBpZD0ieyR0ZXh0YXJlYWlkfV92aW0iIG5hbWU9InJhZGlvMl97JGFjZV9pZH0iIHZhbHVlPSJ2aW0iIC8+PGxhYmVsIGZvcj0ieyR0ZXh0YXJlYWlkfV92aW0iPnskYWNlX21vZC0+TGFuZygndmltJyl9PC9sYWJlbD4NCgkJPGlucHV0IHR5cGU9InJhZGlvIiBpZD0ieyR0ZXh0YXJlYWlkfV9lbWFjcyIgbmFtZT0icmFkaW8yX3skYWNlX2lkfSIgdmFsdWU9ImVtYWNzIiAvPjxsYWJlbCBmb3I9InskdGV4dGFyZWFpZH1fZW1hY3MiPnskYWNlX21vZC0+TGFuZygnZW1hY3MnKX08L2xhYmVsPg0KCTwvZGl2Pg0KPC9kaXY+DQo8dGV4dGFyZWEgaWQ9InskdGV4dGFyZWFpZH0iIG5hbWU9InskdGV4dGFyZWFuYW1lfSI+eyRzeW50YXhfY29udGVudH08L3RleHRhcmVhPg0KPC9kaXY+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPntzdHJpcH0NCi5hY2Vfd3JhcHBlciB0ZXh0YXJlYSB7bGRlbGltfQ0KCW1pbi13aWR0aDogeyR3aWR0aH1lbTsNCgl3aWR0aDogMTAwJTsNCntyZGVsaW19DQojeyRlZGl0b3JpZH0ge2xkZWxpbX0NCglwb3NpdGlvbjogcmVsYXRpdmU7DQogICAgd2lkdGg6IHskd2lkdGh9ZW07DQogICAgaGVpZ2h0OiB7JGhlaWdodH1lbTsNCiAgICBiYWNrZ3JvdW5kOiAjZmVmZWZlOw0Ke3JkZWxpbX0NCiN7JGVkaXRvcmlkfS5mdWxsc2NyZWVuIHtsZGVsaW19DQoJcG9zaXRpb246IGZpeGVkOw0KCXotaW5kZXg6IDk5OTk7DQoJbWFyZ2luOjA7DQoJbGVmdDowOw0KCXRvcDowOw0Ke3JkZWxpbX0NCnsvc3RyaXB9PC9zdHlsZT4NCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPntsaXRlcmFsfQ0KalF1ZXJ5KGZ1bmN0aW9uKCQpIHsNCglpZighd2luZG93LmFjZSkgcmV0dXJuOw0KCWlmKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goLyhpUG9kfGlQaG9uZXxpUGFkKS8pKSByZXR1cm47IHsvbGl0ZXJhbH17aWYgJGVuYWJsZV9pZSA9PSAnZmFsc2UnfQ0KCQ0KCWlmKCQuYnJvd3Nlci5tc2llKSByZXR1cm47IHsvaWZ9e2xpdGVyYWx9DQoJDQoJLy8gU0VUVElOR1MgDQoJLy8gY3JlYXRlIGVkaXRvcg0KCSQoJyN7L2xpdGVyYWx9eyR0ZXh0YXJlYWlkfXtsaXRlcmFsfScpLmJlZm9yZSgnPGRpdiBpZD0iey9saXRlcmFsfXskZWRpdG9yaWR9e2xpdGVyYWx9IiAvPicpOw0KCS8vIGluaXQgZWRpdG9yDQoJdmFyIGVkaXRvciAgID0gYWNlLmVkaXQoJ3svbGl0ZXJhbH17JGVkaXRvcmlkfXtsaXRlcmFsfScpOw0KCXZhciB0ZXh0YXJlYSA9ICQoJyN7L2xpdGVyYWx9eyR0ZXh0YXJlYWlkfXtsaXRlcmFsfScpLmhpZGUoKTsNCgl2YXIgdmltIAkgPSByZXF1aXJlKCdhY2Uva2V5Ym9hcmQvdmltJykuaGFuZGxlcjsNCgl2YXIgZW1hY3MgCSA9IHJlcXVpcmUoJ2FjZS9rZXlib2FyZC9lbWFjcycpLmhhbmRsZXI7DQoJDQoJLy8gc2V0IHRoZW1lDQoJZWRpdG9yLnNldFRoZW1lKCdhY2UvdGhlbWUvey9saXRlcmFsfXskdGhlbWV9e2xpdGVyYWx9Jyk7DQoJLy8gc2V0IGhpZ2hsaWdodGVyIG1vZGUgDQoJey9saXRlcmFsfXtpZiAkbW9kZSAhPSAncGxhaW4nfQkNCgllZGl0b3IuZ2V0U2Vzc2lvbigpLnNldE1vZGUoJ2FjZS9tb2RlL3skbW9kZX0nKTsgey9pZn17bGl0ZXJhbH0NCgkvLyBzZXQgZm9udHNpemUNCgkkKCcjey9saXRlcmFsfXskZWRpdG9yaWR9JykuY3NzKCdmb250LXNpemUnLCAneyRmb250c2l6ZX17bGl0ZXJhbH0nKTsNCgkvLyBmdWxsIGxpbmUgc2VsZWN0aW9uDQoJZWRpdG9yLnNldFNlbGVjdGlvblN0eWxlKCd7L2xpdGVyYWx9eyRmdWxsX2xpbmV9e2xpdGVyYWx9Jyk7DQoJLy8gaGlnaGxpZ2h0IGFjdGl2ZSBsaW5lDQoJZWRpdG9yLnNldEhpZ2hsaWdodEFjdGl2ZUxpbmUoey9saXRlcmFsfXskaGlnaGxpZ2h0X2FjdGl2ZX17bGl0ZXJhbH0pOw0KCS8vIGhpZ2hsaWdodCBzZWxlY3RlZCB3b3JkDQoJZWRpdG9yLnNldEhpZ2hsaWdodFNlbGVjdGVkV29yZCh7L2xpdGVyYWx9eyRoaWdobGlnaHRfc2VsZWN0ZWR9e2xpdGVyYWx9KTsNCgkvLyBzaG93IGludmlzaWJsZXMNCgllZGl0b3Iuc2V0U2hvd0ludmlzaWJsZXMoey9saXRlcmFsfXskc2hvd19pbnZpc2libGVzfXtsaXRlcmFsfSk7DQoJLy8gcGVyc2lzdGVudCBoc2Nyb2xsDQoJZWRpdG9yLnJlbmRlcmVyLnNldEhTY3JvbGxCYXJBbHdheXNWaXNpYmxlKHsvbGl0ZXJhbH17JHBlcnNpc3RlbnRfaHNjcm9sbH17bGl0ZXJhbH0pOw0KCS8vIHNob3cgZ3V0dGVyDQoJZWRpdG9yLnJlbmRlcmVyLnNldFNob3dHdXR0ZXIoey9saXRlcmFsfXskc2hvd19ndXR0ZXJ9e2xpdGVyYWx9KTsNCgl7L2xpdGVyYWx9e2lmICRzb2Z0X3dyYXAgIT0gJ29mZid9DQoJLy8gIHNvZnQgd3JhcA0KCWVkaXRvci5nZXRTZXNzaW9uKCkuc2V0VXNlV3JhcE1vZGUodHJ1ZSk7DQoJZWRpdG9yLmdldFNlc3Npb24oKS5zZXRXcmFwTGltaXRSYW5nZSh7JHNvZnRfd3JhcH0pOyB7L2lmfXtsaXRlcmFsfQ0KCS8vIHNldCBzb2Z0IHRhYg0KCWVkaXRvci5nZXRTZXNzaW9uKCkuc2V0VXNlU29mdFRhYnMoey9saXRlcmFsfXskc29mdF90YWJ9e2xpdGVyYWx9KTsNCgkvLyBzZXQgcHJpbnQgbWFyZ2luDQoJZWRpdG9yLnNldFNob3dQcmludE1hcmdpbih7L2xpdGVyYWx9eyRwcmludF9tYXJnaW59e2xpdGVyYWx9KTsNCgkvLyBhbGxvd3MgQCBzeW1ib2wgb24gbWFjDQoJZWRpdG9yLmNvbW1hbmRzLnJlbW92ZUNvbW1hbmQoJ2ZvbGQnKTsNCgkNCgkvLyBGVU5DVElPTlMNCgkvLyB0b2dnbGUgaGlnaGxpZ2h0ZXIgb24vb2ZmDQoJJCgnLmFjZV90b29sYmFyJykuYnV0dG9uc2V0KCk7DQoJLy8gcmVzaXplIGFjZSB3aXRoIGp1aQ0KCSQoJyN7L2xpdGVyYWx9eyRlZGl0b3JpZH17bGl0ZXJhbH0nKS5yZXNpemFibGUoew0KCQlzdG9wOiBmdW5jdGlvbiAoZXZlbnQsIHVpKSB7DQoJCQllZGl0b3IucmVuZGVyZXIub25SZXNpemUodHJ1ZSk7DQoJCQllZGl0b3IucmVuZGVyZXIudXBkYXRlRnVsbCgpOw0KCQkJZWRpdG9yLmZvY3VzKCk7DQoJCX0sDQoJCWdob3N0OiB0cnVlDQoJfSk7CQ0KCS8vIGJpbmQgY3RybCtlbnRlciB0byBmdWxsIHNjcmVlbiBtb2RlLg0KCWVkaXRvci5jb21tYW5kcy5hZGRDb21tYW5kKHsNCgkJbmFtZTogJ2Z1bGxTY3JlZW5FZGl0aW5nJywNCgkJYmluZEtleTogew0KCQkJd2luOiAnQ3RybCAtIFJldHVybicsDQoJCQltYWM6ICdDb21tYW5kIC0gUmV0dXJuJywNCgkJCXNlbmRlcjogJ2VkaXRvcicNCgkJfSwNCgkJZXhlYzogZnVuY3Rpb24gKGVudiwgYXJncywgcmVxdWVzdCkgew0KCQkJdmFyIGVkaXRvckRpdiA9ICQoJyN7L2xpdGVyYWx9eyRlZGl0b3JpZH17bGl0ZXJhbH0nKTsNCgkJCWlmKGVkaXRvckRpdi5oYXNDbGFzcygnZnVsbHNjcmVlbicpKSB7DQoJCQkJLy8gc2h1dCBkb3duIGZ1bGwgc2NyZWVuDQoJCQkJZWRpdG9yRGl2LnJlbW92ZUNsYXNzKCdmdWxsc2NyZWVuJyk7DQoJCQkJdmFyIHRtcCA9IGVkaXRvckRpdi5kYXRhKCk7DQoJCQkJZWRpdG9yRGl2LndpZHRoKHRtcC5vcmlnV2lkdGgpOw0KCQkJCWVkaXRvckRpdi5oZWlnaHQodG1wLm9yaWdIZWlnaHQpOw0KCQkJfSBlbHNlIHsNCgkJCQkvLyB0dXJuIG9uIGZ1bGwgc2NyZWVuDQoJCQkJZWRpdG9yRGl2LmFkZENsYXNzKCdmdWxsc2NyZWVuJyk7DQoJCQkJZWRpdG9yRGl2LmRhdGEoJ29yaWdXaWR0aCcsIGVkaXRvckRpdi53aWR0aCgpKTsNCgkJCQllZGl0b3JEaXYuZGF0YSgnb3JpZ0hlaWdodCcsIGVkaXRvckRpdi5oZWlnaHQoKSk7DQoJCQkJZWRpdG9yRGl2LndpZHRoKCQod2luZG93KS53aWR0aCgpICogMC45OTkpOw0KCQkJCWVkaXRvckRpdi5oZWlnaHQoJCh3aW5kb3cpLmhlaWdodCgpICogMC45OSk7DQoJCQl9DQoJCQllZGl0b3IucmVuZGVyZXIub25SZXNpemUodHJ1ZSk7DQoJCQllZGl0b3IucmVuZGVyZXIudXBkYXRlRnVsbCgpOw0KCQkJZWRpdG9yLmZvY3VzKCk7DQoJCQkvL2VkaXRvci5yZWZyZXNoKCk7DQoJCX0NCgl9KTsNCgkvLyBTYXZlIHNob3J0Y3V0DQoJZWRpdG9yLmNvbW1hbmRzLmFkZENvbW1hbmQoew0KCQluYW1lOiAnbXlzYXZlJywNCgkJYmluZEtleTogew0KCQkJd2luOiAnQ3RybCAtIFMnLA0KCQkJbWFjOiAnQ29tbWFuZCAtIFMnLA0KCQkJc2VuZGVyOiAnZWRpdG9yJw0KCQl9LA0KCQlleGVjOiBmdW5jdGlvbiAoZW52LCBhcmdzLCByZXF1ZXN0KSB7DQoJCQkvLyB1cGRhdGUgdGhlIHRleHQgYXJlYSBmaWVsZC4NCgkJCXZhciB0ZXh0ID0gZWRpdG9yLmdldFNlc3Npb24oKS5nZXRWYWx1ZSgpOw0KCQkJdGV4dGFyZWEudmFsKHRleHQpOw0KCQkJLy8gZmluZCB0aGUgcGFyZW50IGZvcm0uIGFuZCBhIGNoaWxkIGJ1dHRvbiBuYW1lZCAnYXBwbHknLCBhbmQgY2xpY2sgaXQuDQoJCQkkKCcjey9saXRlcmFsfXskZWRpdG9yaWR9e2xpdGVyYWx9JykuY2xvc2VzdCgnZm9ybScpLmZpbmQoJ1tuYW1lJD0iYXBwbHkiXScpLmZpcnN0KCkuY2xpY2soKTsNCgkJfQ0KCX0pOw0KCS8vIHNldCBrZXliaW5kaW5ncw0KCXZhciBrZXliaW5kaW5ncyA9IG51bGw7DQoJJCgnLnsvbGl0ZXJhbH17JHRleHRhcmVhaWR9e2xpdGVyYWx9X3Rvb2xiYXIgaW5wdXRbdHlwZT0icmFkaW8iXScpLmNsaWNrKGZ1bmN0aW9uICgpIHsNCgkJaWYoJCgnI3svbGl0ZXJhbH17JHRleHRhcmVhaWR9e2xpdGVyYWx9X2FjZScpLmlzKCc6Y2hlY2tlZCcpKSB7DQoJCQl2YXIga2V5YmluZGluZ3MgPSBudWxsOw0KCQl9IGVsc2UgaWYgKCQoJyN7L2xpdGVyYWx9eyR0ZXh0YXJlYWlkfXtsaXRlcmFsfV92aW0nKS5pcygnOmNoZWNrZWQnKSkgew0KCQkJdmFyIGtleWJpbmRpbmdzID0gdmltOw0KCQl9IGVsc2UgaWYgKCQoJyN7L2xpdGVyYWx9eyR0ZXh0YXJlYWlkfXtsaXRlcmFsfV9lbWFjcycpLmlzKCc6Y2hlY2tlZCcpKSB7DQoJCQl2YXIga2V5YmluZGluZ3MgPSBlbWFjczsNCgkJfQ0KCQllZGl0b3Iuc2V0S2V5Ym9hcmRIYW5kbGVyKGtleWJpbmRpbmdzKTsNCgl9KTsNCgkvLyB0b2dnbGUgZWRpdG9yDQoJJCgnLnsvbGl0ZXJhbH17JHRleHRhcmVhaWR9e2xpdGVyYWx9X3Rvb2xiYXIgaW5wdXRbdHlwZT0icmFkaW8iXScpLmNsaWNrKGZ1bmN0aW9uICgpIHsNCgkJaWYoJCgnI3svbGl0ZXJhbH17JHRleHRhcmVhaWR9e2xpdGVyYWx9X29mZicpLmlzKCc6Y2hlY2tlZCcpKSB7DQoJCQkkKCcjey9saXRlcmFsfXskdGV4dGFyZWFpZH17bGl0ZXJhbH0nKS5zaG93KCk7DQoJCQkkKCcjey9saXRlcmFsfXskZWRpdG9yaWR9e2xpdGVyYWx9JykuaGlkZSgpOw0KCQl9IGVsc2Ugew0KCQkJJCgnI3svbGl0ZXJhbH17JGVkaXRvcmlkfXtsaXRlcmFsfScpLnNob3coKTsNCgkJCSQoJyN7L2xpdGVyYWx9eyR0ZXh0YXJlYWlkfXtsaXRlcmFsfScpLmhpZGUoKTsNCgkJfQ0KCX0pOw0KCS8vIGN1cnJlbnQgbGluZQ0KCWVkaXRvci5nZXRTZXNzaW9uKCkuc2VsZWN0aW9uLm9uKCdjaGFuZ2VDdXJzb3InLCBmdW5jdGlvbigpIHsNCgkJLy8gU2hvdyBjdXJyZW50IGxpbmUgYW5kIGNvbHVtbg0KCQlwb3NpdGlvbiA9IGVkaXRvci5zZWxlY3Rpb24uZ2V0Q3Vyc29yKCk7DQoJCSQoJyN7L2xpdGVyYWx9eyR0ZXh0YXJlYWlkfV9saW5lbnVte2xpdGVyYWx9JykudmFsKCd7L2xpdGVyYWx9eyRhY2VfbW9kLT5MYW5nKCdsaW5lJyl9OicgKyAocG9zaXRpb24ucm93KzEpICsgJyB7JGFjZV9tb2QtPkxhbmcoJ2NvbHVtbicpfXtsaXRlcmFsfTogJyArIChwb3NpdGlvbi5jb2x1bW4rMSkpOw0KCX0pOw0KCS8vIHRvdGFsIGNvdW50IG9mIGxpbmVzDQoJZWRpdG9yLmdldFNlc3Npb24oKS5vbignY2hhbmdlJywgZnVuY3Rpb24oKSB7IA0KCQl0b3RhbCA9IGVkaXRvci5zZXNzaW9uLmdldExlbmd0aCgpOw0KCQkkKCcjey9saXRlcmFsfXskdGV4dGFyZWFpZH1fdG90YWxsaW5lc3tsaXRlcmFsfScpLnZhbCh0b3RhbCk7DQoJfSk7CQ0KCS8vIGdvIHRvIGxpbmUNCgkkKCdmb3JtJykuZmluZCgnLmlucHV0Jykua2V5cHJlc3MoZnVuY3Rpb24oZSl7DQoJCWlmICggZS53aGljaCA9PSAxMyApIHsNCgkJCWVkaXRvci5nb3RvTGluZSgkKCcjey9saXRlcmFsfXskdGV4dGFyZWFpZH1fZ29saW5le2xpdGVyYWx9JykudmFsKCkpOw0KCQkJcmV0dXJuIGZhbHNlOyAvLyBwcmV2ZW50IHN1Ym1pdHRpbmcNCgkJfQ0KCX0pOyANCgkvLyBtYWtlIGl0IHdvcmtpbmcgd2l0aGluIHRhYnMNCgl2YXIgdGFicyA9IGpRdWVyeSgnI25hdnRfdGFicycpOw0KCWlmKHRhYnMubGVuZ3RoID09PSAwKSB7DQoJCXRhYnMgPSBqUXVlcnkoJyNwYWdlX3RhYnMnKTsNCgl9DQoJdGFicy5maW5kKCdkaXYnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsNCgkJZWRpdG9yLnJlc2l6ZSgpOw0KCQllZGl0b3IuZm9jdXMoKTsNCgl9KTsJDQoJDQoJLy8gU0FWRSBWQUxVRVMgDQoJLy8gZ2V0IHRoZSB2YWx1ZSBmcm9tIHRleHRhcmVhDQoJdmFyIGludGlhbERhdGEgPSAkKCcjey9saXRlcmFsfXskdGV4dGFyZWFpZH17bGl0ZXJhbH0nKS52YWwoKTsNCgllZGl0b3IuZ2V0U2Vzc2lvbigpLnNldFZhbHVlKGludGlhbERhdGEpOw0KCS8vIC4uLiBldmVyeXRpbWUgaXQgY2hhbmdlcw0KCSQoJyN7L2xpdGVyYWx9eyR0ZXh0YXJlYWlkfXtsaXRlcmFsfScpLmNoYW5nZShmdW5jdGlvbiAoKSB7DQoJCWVkaXRvci5nZXRTZXNzaW9uKCkuc2V0VmFsdWUodGV4dGFyZWEudmFsKCkpOw0KCX0pOw0KCS8vIFVwZGF0ZSB0aGUgdGV4dGFyZWEgb24gY2hhbmdlDQoJZWRpdG9yLmdldFNlc3Npb24oKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgew0KCQkvLyBHZXQgdGhlIHZhbHVlIGZyb20gdGhlIGVkaXRvciBhbmQgcGxhY2UgaXQgaW50byB0aGUgdGV4dGFyZWEuDQoJCXZhciB0ZXh0ID0gZWRpdG9yLmdldFNlc3Npb24oKS5nZXRWYWx1ZSgpOw0KCQl0ZXh0YXJlYS52YWwodGV4dCk7DQoJfSk7DQp9KTt7L2xpdGVyYWx9DQo8L3NjcmlwdD4=]]></data>
	</file>
	<file>
	  <filename>/templates/frontendsettings.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e3N0cmlwfQ0KeyRzdGFydGZvcm19DQo8ZmllbGRzZXQ+DQoJPGxlZ2VuZD4NCgkJeyRzZXR0aW5nc3RleHR9DQoJPC9sZWdlbmQ+DQoJPHA+eyRoZWFkX2Rlc2NyaXB0aW9ufTwvcD4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPg0KCQkJeyRmcm9udGVuZF9zeW50YXhfbW9kZX0NCgkJPC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4NCgkJCXskZnJvbnRlbmRfc3ludGF4X21vZGVpbnB1dH0NCgkJPC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+DQoJCQl7JHRoZW1ldGV4dH0NCgkJPC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4NCgkJCXskZnJvbnRlbmRfdGhlbWVpbnB1dH0NCgkJPC9wPg0KCTwvZGl2Pg0KPC9maWVsZHNldD4NCjxmaWVsZHNldD4JDQoJPGxlZ2VuZD4NCgkJeyRzeW50YXhfc2V0dGluZ3N0ZXh0fQ0KCTwvbGVnZW5kPg0KCTxwPnskY29udGVudF9kZXNjcmlwdGlvbn08L3A+CQkJDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4NCgkJCXskd2lkdGhfdGl0bGV9DQoJCTwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQoJCQl7JHdpZHRoX2lucHV0fQ0KCQk8L3A+DQoJPC9kaXY+CQ0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+DQoJCQl7JGhlaWdodF90aXRsZX0NCgkJPC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4NCgkJCXskaGVpZ2h0X2lucHV0fQ0KCQk8L3A+DQoJPC9kaXY+CQ0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+DQoJCQl7JGZyb250ZW5kX3N5bnRheF9tb2RlfQ0KCQk8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KCQkJeyRmcm9udGVuZF9zeW50YXhhcmVhX21vZGVpbnB1dH0NCgkJPC9wPg0KCTwvZGl2PgkJDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4NCgkJCXskdGhlbWV0ZXh0fQ0KCQk8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KCQkJeyR0aGVtZWlucHV0fQ0KCQk8L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4NCgkJCXskZm9udHNpemV0ZXh0fQ0KCQk8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KCQkJeyRmb250c2l6ZWlucHV0fQ0KCQk8L3A+DQoJPC9kaXY+CQkJCQkJCQ0KPC9maWVsZHNldD4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPg0KCQkJJm5ic3A7DQoJCTwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQoJCQl7JHN1Ym1pdH0NCgkJPC9wPg0KCTwvZGl2Pg0KeyRlbmRmb3JtfQ0Key9zdHJpcH0NCg==]]></data>
	</file>
	<file>
	  <filename>/templates/help.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e3N0cmlwfQ0KPGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQ7Ij4NCgk8Zm9ybSBhY3Rpb249Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vY2dpLWJpbi93ZWJzY3IiIG1ldGhvZD0icG9zdCI+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNtZCIgdmFsdWU9Il9zLXhjbGljayIgLz4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaG9zdGVkX2J1dHRvbl9pZCIgdmFsdWU9IkZMSDJBTjg5VVBQQUciIC8+DQoJCTxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJodHRwczovL3d3dy5wYXlwYWxvYmplY3RzLmNvbS9lbl9HQi9pL2J0bi9idG5fZG9uYXRlX0xHLmdpZiIgYm9yZGVyPSIwIiBuYW1lPSJzdWJtaXQiIGFsdD0iUGF5UGFsIOKAlCBUaGUgc2FmZXIsIGVhc2llciB3YXkgdG8gcGF5IG9ubGluZS4iIHN0eWxlPSJiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7IiAvPg0KCQk8aW1nIGFsdD0iIiBib3JkZXI9IjAiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsb2JqZWN0cy5jb20vZGVfREUvaS9zY3IvcGl4ZWwuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiAvPg0KCTwvZm9ybT4NCjwvZGl2Pg0KPGRpdiBpZD0icGFnZV90YWJzIj4NCgk8ZGl2IGlkPSJnZW5lcmFsIj4NCgkJeyRoZWxwX2dlbmVyYWxfdGl0bGV9DQoJPC9kaXY+DQoJPGRpdiBpZD0ic2hvcnRjdXRzIj4NCgkJeyRoZWxwX2tleWJvYXJkc2hvcnRjdXRzX3RpdGxlfQ0KCTwvZGl2Pg0KCTxkaXYgaWQ9ImZyb250ZW5kIj4NCgkJeyRoZWxwX2Zyb250ZW5kX3RpdGxlfQ0KCTwvZGl2PgkNCgk8ZGl2IGlkPSJhYm91dCI+DQoJCXskaGVscF9hYm91dF90aXRsZX0NCgk8L2Rpdj4JDQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+DQo8ZGl2IGlkPSJwYWdlX2NvbnRlbnQiPg0KCTxkaXYgaWQ9ImdlbmVyYWxfYyI+DQoJCTxpbWcgc3R5bGU9ImZsb2F0OnJpZ2h0O21hcmdpbjowIDEwcHggMTBweCAxMHB4OyBib3JkZXI6IDVweCBzb2xpZCAjZjBmMGYwOyIgc3JjPSJ7JG1vZHVsZV9wYXRofS9pbWFnZXMvZWRpdG9yLmpwZyIgYWx0PSJFZGl0b3IiIHdpZHRoPSIzMTYiIGhlaWdodD0iMjU5IiAvPg0KCQl7JGhlbHBfZ2VuZXJhbF90ZXh0fQ0KCQk8YnIgc3R5bGUgPSJjbGVhcjpib3RoOyIgLz4NCgk8L2Rpdj4NCgk8ZGl2IGlkPSJzaG9ydGN1dHNfYyI+DQoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCXskaGVscF9rZXlib2FyZHNob3J0Y3V0c19jb250ZW50fQ0KCQk8L2Rpdj4NCgk8L2Rpdj4NCgk8ZGl2IGlkPSJmcm9udGVuZF9jIj4NCgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJeyRoZWxwX2Zyb250ZW5kX2NvbnRlbnR9DQoJCTxwcmU+DQoJCTxjb2RlPg0KCQl7bGl0ZXJhbH0NCiZsdDtwcmUgaWQ9InNvbWUtaWQiJmd0DQombHQ7aHRtbCZndDsNCiZsdDtoZWFkJmd0Ow0KCSZsdDtzdHlsZSB0eXBlPSJ0ZXh0L2NzcyImZ3Q7DQoJLnRleHQtbGF5ZXIgew0KCQlmb250LWZhbWlseTogTW9uYWNvLCAiQ291cmllciBOZXciLCBtb25vc3BhY2U7DQoJCWZvbnQtc2l6ZTogMTJweDsNCgkJY3Vyc29yOiB0ZXh0Ow0KCX0NCgkmbHQ7L3N0eWxlJmd0Ow0KJmx0Oy9oZWFkJmd0Ow0KJmx0O2JvZHkmZ3Q7DQoJJmx0O2gxIHN0eWxlPSJjb2xvcjpyZWQiJmd0O1lFUyEmbHQ7L2gxJmd0Ow0KJmx0Oy9ib2R5Jmd0Ow0KJmx0Oy9odG1sJmd0Ow0KJmx0Oy9wcmUmZ3Q7DQoJCXsvbGl0ZXJhbH0NCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgkJPC9kaXY+DQoJPC9kaXY+DQoJPGRpdiBpZD0iYWJvdXRfYyI+DQoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCXskaGVscF9hYm91dF90ZXh0fQ0KCQk8L2Rpdj4NCgk8L2Rpdj4JCQ0KPC9kaXY+DQp7L3N0cmlwfQ0K]]></data>
	</file>
	<file>
	  <filename>/templates/orig_default.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe2xkZWxpbX0NCgl2YXIgdHh0ID0gJCgnI3skZGl2aWR9JykudGV4dCgpOw0KICAJdmFyIGVkaXRvciA9IGFjZS5lZGl0KCd7JGRpdmlkfScpOw0KICAJCWVkaXRvci5zZXRSZWFkT25seSh0cnVlKTsNCiAgCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneyRkaXZpZH0nKS5zdHlsZS5mb250U2l6ZT0neyRmb250c2l6ZX0nOw0Ke2lmIGlzc2V0KCR0aGVtZSl9DQoJCWVkaXRvci5zZXRUaGVtZSgnYWNlL3RoZW1lL3skdGhlbWV9Jyk7DQp7L2lmfQ0Ke2lmIGlzc2V0KCRtb2RlKX0NCgkJdmFyIHRoZU1vZGUgPSByZXF1aXJlKCdhY2UvbW9kZS97JG1vZGV9JykuTW9kZTsNCiAgCQllZGl0b3IuZ2V0U2Vzc2lvbigpLnNldE1vZGUobmV3IHRoZU1vZGUpOw0Key9pZn0NCiAgCQllZGl0b3IucmVuZGVyZXIuc2V0U2hvd1ByaW50TWFyZ2luKGZhbHNlKTsNCiAgCQllZGl0b3IuZ2V0U2Vzc2lvbigpLnNldFZhbHVlKHR4dCk7DQp7cmRlbGltfSk7DQo8L3NjcmlwdD4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoJI3skZGl2aWR9IHtsZGVsaW19DQoJCXBvc2l0aW9uOiByZWxhdGl2ZTsNCgkJaGVpZ2h0OiB7JGhlaWdodH1weDsNCgkJd2lkdGg6IHskd2lkdGh9cHg7DQoJCWJhY2tncm91bmQ6ICNmZmY7DQoJCWRpc3BsYXk6IGJsb2NrOw0KCXtyZGVsaW19DQo8L3N0eWxlPg0K]]></data>
	</file>
	<file>
	  <filename>/templates/orig_head.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04IiBzcmM9InskYWNlX3VybH0vYWNlL3NyYy9hY2UuanMiPjwvc2NyaXB0Pg0Ke2ZvcmVhY2ggZnJvbT0kbW9kZXMgaXRlbT0nbW9kZSd9DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiIHNyYz0ieyRhY2VfdXJsfS9hY2Uvc3JjL21vZGUteyRtb2RlfS5qcyI+PC9zY3JpcHQ+DQp7L2ZvcmVhY2h9DQp7aWYgaXNzZXQoJHRoZW1lcyl9DQp7Zm9yZWFjaCBmcm9tPSR0aGVtZXMgaXRlbT0ndGhlbWUnfQ0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04IiBzcmM9InskYWNlX3VybH0vYWNlL3NyYy90aGVtZS17JHRoZW1lfS5qcyI+PC9zY3JpcHQ+DQp7L2ZvcmVhY2h9DQp7L2lmfQ0KPHN0eWxlPg0KcHJlLmFjZV9lZGl0b3Ige2xkZWxpbX0NCglwYWRkaW5nOjA7DQoJYm9yZGVyOjA7DQoJYmFja2dyb3VuZDpub25lOw0Ke3JkZWxpbX0NCjwvc3R5bGU+]]></data>
	</file>
	<file>
	  <filename>/templates/settings.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e3N0cmlwfQ0KeyRzdGFydGZvcm19DQo8ZmllbGRzZXQ+DQoJPGxlZ2VuZD4NCgkJeyRzZXR0aW5nc3RleHR9DQoJPC9sZWdlbmQ+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4NCgkJCXskd2lkdGhfdGl0bGV9DQoJCTwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQoJCQl7JHdpZHRoX2lucHV0fQ0KCQk8L3A+DQoJPC9kaXY+CQ0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+DQoJCQl7JGhlaWdodF90aXRsZX0NCgkJPC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4NCgkJCXskaGVpZ2h0X2lucHV0fQ0KCQk8L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4NCgkJCXskZW5hYmxlX2lldGV4dH0NCgkJPC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4NCgkJCXskZW5hYmxlX2llaW5wdXR9IHskZW5hYmxlX2llZGVzY3J9DQoJCTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPg0KCQkJeyRzeW50YXhfbW9kZX0NCgkJPC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4NCgkJCXskc3ludGF4X21vZGVpbnB1dH0NCgkJPC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+DQoJCQl7JHRoZW1ldGV4dH0NCgkJPC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4NCgkJCXskdGhlbWVpbnB1dH0NCgkJPC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+DQoJCQl7JGZvbnRzaXpldGV4dH0NCgkJPC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4NCgkJCXskZm9udHNpemVpbnB1dH0NCgkJPC9wPg0KCTwvZGl2PgkNCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPg0KCQkJeyRmdWxsX2xpbmV0ZXh0fQ0KCQk8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KCQkJeyRmdWxsX2xpbmVpbnB1dH0NCgkJPC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+DQoJCQl7JGhpZ2hsaWdodF9hY3RpdmV0ZXh0fQ0KCQk8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KCQkJeyRoaWdobGlnaHRfYWN0aXZlaW5wdXR9DQoJCTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPg0KCQkJeyRzaG93X2ludmlzaWJsZXN0ZXh0fQ0KCQk8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KCQkJeyRzaG93X2ludmlzaWJsZXNpbnB1dH0NCgkJPC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+DQoJCQl7JHBlcnNpc3RlbnRfaHNjcm9sbHRleHR9DQoJCTwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQoJCQl7JHBlcnNpc3RlbnRfaHNjcm9sbGlucHV0fQ0KCQk8L3A+DQoJPC9kaXY+DQoJeyoNCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPg0KCQkJeyRrZXlfYmluZGluZ3RleHR9DQoJCTwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQoJCQl7JGtleV9iaW5kaW5naW5wdXR9DQoJCTwvcD4NCgk8L2Rpdj4NCgkqfQkNCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPg0KCQkJeyRzb2Z0X3dyYXB0ZXh0fQ0KCQk8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KCQkJeyRzb2Z0X3dyYXBpbnB1dH0NCgkJPC9wPg0KCTwvZGl2PgkNCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPg0KCQkJeyRzaG93X2d1dHRlcnRleHR9DQoJCTwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQoJCQl7JHNob3dfZ3V0dGVyaW5wdXR9DQoJCTwvcD4NCgk8L2Rpdj4JDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4NCgkJCXskcHJpbnRfbWFyZ2ludGV4dH0NCgkJPC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4NCgkJCXskcHJpbnRfbWFyZ2luaW5wdXR9DQoJCTwvcD4NCgk8L2Rpdj4JDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4NCgkJCXskc29mdF90YWJ0ZXh0fQ0KCQk8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KCQkJeyRzb2Z0X3RhYmlucHV0fQ0KCQk8L3A+DQoJPC9kaXY+CQ0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+DQoJCQl7JGhpZ2hsaWdodF9zZWxlY3RlZHRleHR9DQoJCTwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQoJCQl7JGhpZ2hsaWdodF9zZWxlY3RlZGlucHV0fQ0KCQk8L3A+DQoJPC9kaXY+DQoJeyoJDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4NCgkJCXskZW5hYmxlX2JlaGF2aW9yc3RleHR9DQoJCTwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQoJCQl7JGVuYWJsZV9iZWhhdmlvcnNpbnB1dH0NCgkJPC9wPg0KCTwvZGl2PgkNCgkqfQkJCQkJCQ0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+DQoJCQkmbmJzcDsNCgkJPC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4NCgkJCXskc3VibWl0fQ0KCQk8L3A+DQoJPC9kaXY+DQo8L2ZpZWxkc2V0Pg0KPGZpZWxkc2V0Pg0KCTxsZWdlbmQ+eyR0ZXN0YXJlYXRleHR9PC9sZWdlbmQ+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQoJCQl7JHRlc3RhcmVhfQ0KCQk8L3A+DQoJPC9kaXY+CQ0KCQ0KPC9maWVsZHNldD4NCnskZW5kZm9ybX0gDQp7L3N0cmlwfQ0K]]></data>
	</file>
</module>
