internal/templates/MiniModule-1.0.0.0.xml
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
<Obj RefId="0"> <TN RefId="0"> <T>PSModuleDevelopment.Template.Template</T> <T>System.Object</T> </TN> <ToString>PSModuleDevelopment.Template.Template</ToString> <Props> <S N="Name">MiniModule</S> <Obj N="Type" RefId="1"> <TN RefId="1"> <T>PSModuleDevelopment.Template.TemplateType</T> <T>System.Enum</T> <T>System.ValueType</T> <T>System.Object</T> </TN> <ToString>Project</ToString> <I32>1</I32> </Obj> <Version N="Version">1.0.0.0</Version> <S N="Description">Module scaffold with full CI/CD support and minimal dependencies</S> <S N="Author">Friedrich Weinmann</S> <DT N="CreatedOn">2024-06-02T00:00:00+00:00</DT> <Obj N="Tags" RefId="2"> <TN RefId="2"> <T>System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]</T> <T>System.Object</T> </TN> <LST> <S>module</S> </LST> </Obj> <Obj N="Parameters" RefId="3"> <TNRef RefId="2" /> <LST> <S>name</S> <S>author</S> <S>company</S> <S>description</S> </LST> </Obj> <Obj N="Scripts" RefId="4"> <TN RefId="3"> <T>System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[PSModuleDevelopment.Template.ParameterScript, PSModuleDevelopment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]]</T> <T>System.Object</T> </TN> <DCT> <En> <S N="Key">guid</S> <Obj N="Value" RefId="5"> <TN RefId="4"> <T>PSModuleDevelopment.Template.ParameterScript</T> <T>System.Object</T> </TN> <ToString>PSModuleDevelopment.Template.ParameterScript</ToString> <Props> <S N="StringScript">_x000D__x000A__x0009__x0009__x0009_[System.Guid]::NewGuid().ToString()_x000D__x000A__x0009__x0009_</S> <S N="Name">guid</S> <SBK N="ScriptBlock">_x000D__x000A__x0009__x0009__x0009_[System.Guid]::NewGuid().ToString()_x000D__x000A__x0009__x0009_</SBK> </Props> <MS> <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAwDAAAAX1N5c3RlbS5NYW5hZ2VtZW50LkF1dG9tYXRpb24sIFZlcnNpb249My4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj0zMWJmMzg1NmFkMzY0ZTM1BQEAAAAsUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5QYXJhbWV0ZXJTY3JpcHQCAAAABE5hbWULU2NyaXB0QmxvY2sBBDtTeXN0ZW0uTWFuYWdlbWVudC5BdXRvbWF0aW9uLlNjcmlwdEJsb2NrU2VyaWFsaXphdGlvbkhlbHBlcgMAAAACAAAABgQAAAAEZ3VpZAkFAAAABQUAAAA7U3lzdGVtLk1hbmFnZW1lbnQuQXV0b21hdGlvbi5TY3JpcHRCbG9ja1NlcmlhbGl6YXRpb25IZWxwZXIBAAAAClNjcmlwdFRleHQBAwAAAAYGAAAALA0KCQkJW1N5c3RlbS5HdWlkXTo6TmV3R3VpZCgpLlRvU3RyaW5nKCkNCgkJCw==</BA> </MS> </Obj> </En> <En> <S N="Key">year</S> <Obj N="Value" RefId="6"> <TNRef RefId="4" /> <ToString>PSModuleDevelopment.Template.ParameterScript</ToString> <Props> <S N="StringScript">_x000D__x000A__x0009__x0009__x0009_Get-Date -Format "yyyy"_x000D__x000A__x0009__x0009_</S> <S N="Name">year</S> <SBK N="ScriptBlock">_x000D__x000A__x0009__x0009__x0009_Get-Date -Format "yyyy"_x000D__x000A__x0009__x0009_</SBK> </Props> <MS> <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAwDAAAAX1N5c3RlbS5NYW5hZ2VtZW50LkF1dG9tYXRpb24sIFZlcnNpb249My4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj0zMWJmMzg1NmFkMzY0ZTM1BQEAAAAsUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5QYXJhbWV0ZXJTY3JpcHQCAAAABE5hbWULU2NyaXB0QmxvY2sBBDtTeXN0ZW0uTWFuYWdlbWVudC5BdXRvbWF0aW9uLlNjcmlwdEJsb2NrU2VyaWFsaXphdGlvbkhlbHBlcgMAAAACAAAABgQAAAAEeWVhcgkFAAAABQUAAAA7U3lzdGVtLk1hbmFnZW1lbnQuQXV0b21hdGlvbi5TY3JpcHRCbG9ja1NlcmlhbGl6YXRpb25IZWxwZXIBAAAAClNjcmlwdFRleHQBAwAAAAYGAAAAIA0KCQkJR2V0LURhdGUgLUZvcm1hdCAieXl5eSINCgkJCw==</BA> </MS> </Obj> </En> </DCT> </Obj> <Obj N="Parameters2" RefId="7"> <TN RefId="5"> <T>System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[PSModuleDevelopment.Template.Parameter.ParameterBase, PSModuleDevelopment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]]</T> <T>System.Object</T> </TN> <DCT /> </Obj> <Obj N="Children" RefId="8"> <TN RefId="6"> <T>System.Collections.Generic.List`1[[PSModuleDevelopment.Template.TemplateItemBase, PSModuleDevelopment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]]</T> <T>System.Object</T> </TN> <LST> <Obj RefId="9"> <TN RefId="7"> <T>PSModuleDevelopment.Template.TemplateItemFolder</T> <T>PSModuleDevelopment.Template.TemplateItemBase</T> <T>System.Object</T> </TN> <ToString>PSModuleDevelopment.Template.TemplateItemFolder</ToString> <Props> <Obj N="Children" RefId="10"> <TNRef RefId="6" /> <LST> <S>PSModuleDevelopment.Template.TemplateItemFolder</S> <S>PSModuleDevelopment.Template.TemplateItemFile</S> </LST> </Obj> <S N="Name">.github</S> <S N="RelativePath">.github</S> <S N="Identifier">þ</S> <Obj N="FileSystemParameterFlat" RefId="11"> <TNRef RefId="2" /> <LST /> </Obj> <Obj N="FileSystemParameterScript" RefId="12"> <TNRef RefId="2" /> <LST /> </Obj> </Props> <MS> <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAL1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRm9sZGVyBgAAAAhDaGlsZHJlbgROYW1lDFJlbGF0aXZlUGF0aApJZGVudGlmaWVyF0ZpbGVTeXN0ZW1QYXJhbWV0ZXJGbGF0GUZpbGVTeXN0ZW1QYXJhbWV0ZXJTY3JpcHQDAQEBAwOeAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1CYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAAJAwAAAAYEAAAABy5naXRodWIGBQAAAAcuZ2l0aHViBgYAAAACw74JBwAAAAkIAAAABAMAAACeAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1CYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAvUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1CYXNlW10CAAAACAgJCQAAAAIAAAACAAAABAcAAAB/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uBgAACAgJCgAAAAAAAAAAAAAAAQgAAAAHAAAACQoAAAAAAAAAAAAAAAcJAAAAAAEAAAAEAAAABC1QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UCAAAACQsAAAAJDAAAAA0CEQoAAAAAAAAAAQsAAAABAAAACQ0AAAAGDgAAAAl3b3JrZmxvd3MGDwAAABEuZ2l0aHViXHdvcmtmbG93cwkGAAAACREAAAAJEgAAAAUMAAAALVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRmlsZQkAAAAFVmFsdWUJUGxhaW5UZXh0FENvbnRlbnRQYXJhbWV0ZXJGbGF0FkNvbnRlbnRQYXJhbWV0ZXJTY3JpcHQETmFtZQxSZWxhdGl2ZVBhdGgKSWRlbnRpZmllchdGaWxlU3lzdGVtUGFyYW1ldGVyRmxhdBlGaWxlU3lzdGVtUGFyYW1ldGVyU2NyaXB0AQADAwEBAQMDAX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAYTAAAA0wUjIFRoZXNlIGFyZSBzdXBwb3J0ZWQgZnVuZGluZyBtb2RlbCBwbGF0Zm9ybXMNCg0KZ2l0aHViOiAjIFJlcGxhY2Ugd2l0aCB1cCB0byA0IEdpdEh1YiBTcG9uc29ycy1lbmFibGVkIHVzZXJuYW1lcyBlLmcuLCBbdXNlcjEsIHVzZXIyXQ0KcGF0cmVvbjogIyBSZXBsYWNlIHdpdGggYSBzaW5nbGUgUGF0cmVvbiB1c2VybmFtZQ0Kb3Blbl9jb2xsZWN0aXZlOiAjIFJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBPcGVuIENvbGxlY3RpdmUgdXNlcm5hbWUNCmtvX2ZpOiAjIFJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBLby1maSB1c2VybmFtZQ0KdGlkZWxpZnQ6ICMgUmVwbGFjZSB3aXRoIGEgc2luZ2xlIFRpZGVsaWZ0IHBsYXRmb3JtLW5hbWUvcGFja2FnZS1uYW1lIGUuZy4sIG5wbS9iYWJlbA0KY29tbXVuaXR5X2JyaWRnZTogIyBSZXBsYWNlIHdpdGggYSBzaW5nbGUgQ29tbXVuaXR5IEJyaWRnZSBwcm9qZWN0LW5hbWUgZS5nLiwgY2xvdWQtZm91bmRyeQ0KbGliZXJhcGF5OiAjIFJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBMaWJlcmFwYXkgdXNlcm5hbWUNCmlzc3VlaHVudDogIyBSZXBsYWNlIHdpdGggYSBzaW5nbGUgSXNzdWVIdW50IHVzZXJuYW1lDQpvdGVjaGllOiAjIFJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBPdGVjaGllIHVzZXJuYW1lDQpj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</BA> </MS> </Obj> <Obj RefId="13"> <TNRef RefId="7" /> <ToString>PSModuleDevelopment.Template.TemplateItemFolder</ToString> <Props> <Obj N="Children" RefId="14"> <TNRef RefId="6" /> <LST> <S>PSModuleDevelopment.Template.TemplateItemFile</S> <S>PSModuleDevelopment.Template.TemplateItemFile</S> <S>PSModuleDevelopment.Template.TemplateItemFile</S> </LST> </Obj> <S N="Name">build</S> <S N="RelativePath">build</S> <S N="Identifier">þ</S> <Obj N="FileSystemParameterFlat" RefId="15"> <TNRef RefId="2" /> <LST /> </Obj> <Obj N="FileSystemParameterScript" RefId="16"> <TNRef RefId="2" /> <LST /> </Obj> </Props> <MS> <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAL1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRm9sZGVyBgAAAAhDaGlsZHJlbgROYW1lDFJlbGF0aXZlUGF0aApJZGVudGlmaWVyF0ZpbGVTeXN0ZW1QYXJhbWV0ZXJGbGF0GUZpbGVTeXN0ZW1QYXJhbWV0ZXJTY3JpcHQDAQEBAwOeAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1CYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAAJAwAAAAYEAAAABWJ1aWxkBgUAAAAFYnVpbGQGBgAAAALDvgkHAAAACQgAAAAEAwAAAJ4BU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UsIFBTTW9kdWxlRGV2ZWxvcG1lbnQsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgQAAC9QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2VbXQIAAAAICAkJAAAAAwAAAAMAAAAEBwAAAH9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24GAAAICAkKAAAAAAAAAAAAAAABCAAAAAcAAAAJCgAAAAAAAAAAAAAABwkAAAAAAQAAAAQAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJCwAAAAkMAAAACQ0AAAAKEQoAAAAAAAAABQsAAAAtUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1GaWxlCQAAAAVWYWx1ZQlQbGFpblRleHQUQ29udGVudFBhcmFtZXRlckZsYXQWQ29udGVudFBhcmFtZXRlclNjcmlwdAROYW1lDFJlbGF0aXZlUGF0aApJZGVudGlmaWVyF0ZpbGVTeXN0ZW1QYXJhbWV0ZXJGbGF0GUZpbGVTeXN0ZW1QYXJhbWV0ZXJTY3JpcHQBAAMDAQEBAwMBf1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0CAAAABg4AAACvGzwjDQpUaGlzIHNjcmlwdCBwdWJsaXNoZXMgdGhlIG1vZHVsZSB0byB0aGUgZ2FsbGVyeS4NCkl0IGV4cGVjdHMgYXMgaW5wdXQgYW4gQXBpS2V5IGF1dGhvcml6ZWQgdG8gcHVibGlzaCB0aGUgbW9kdWxlLg0KDQpJbnNlcnQgYW55IGJ1aWxkIHN0ZXBzIHlvdSBtYXkgbmVlZCB0byB0YWtlIGJlZm9yZSBwdWJsaXNoaW5nIGl0IGhlcmUuDQojPg0KcGFyYW0gKA0KCSRBcGlLZXksDQoJDQoJJFdvcmtpbmdEaXJlY3RvcnksDQoJDQoJJFJlcG9zaXRvcnkgPSAnUFNHYWxsZXJ5JywNCgkNCglbc3dpdGNoXQ0KCSRMb2NhbFJlcG8sDQoJDQoJW3N3aXRjaF0NCgkkU2tpcFB1Ymxpc2gsDQoJDQoJW3N3aXRjaF0NCgkkQXV0b1ZlcnNpb24NCikNCg0KI3JlZ2lvbiBIYW5kbGUgV29ya2luZyBEaXJlY3RvcnkgRGVmYXVsdHMNCmlmICgtbm90ICRXb3JraW5nRGlyZWN0b3J5KQ0Kew0KCWlmICgkZW52OlJFTEVBU0VfUFJJTUFSWUFSVElGQUNUU09VUkNFQUxJQVMpDQoJew0KCQkkV29ya2luZ0RpcmVjdG9yeSA9IEpvaW4tUGF0aCAtUGF0aCAkZW52OlNZU1RFTV9ERUZBVUxUV09SS0lOR0RJUkVDVE9SWSAtQ2hpbGRQYXRoICRlbnY6UkVMRUFTRV9QUklNQVJZQVJUSUZBQ1RTT1VSQ0VBTElBUw0KCX0NCgllbHNlIHsgJFdvcmtpbmdEaXJlY3RvcnkgPSAkZW52OlNZU1RFTV9ERUZBVUxUV09SS0lOR0RJUkVDVE9SWSB9DQp9DQppZiAoLW5vdCAkV29ya2luZ0RpcmVjdG9yeSkgeyAkV29ya2luZ0RpcmVjdG9yeSA9IFNwbGl0LVBhdGggJFBTU2NyaXB0Um9vdCB9DQojZW5kcmVnaW9uIEhhbmRsZSBXb3JraW5nIERpcmVjdG9yeSBEZWZhdWx0cw0KDQojIFByZXBhcmUgcHVibGlzaCBmb2xkZXINCldyaXRlLUhvc3QgIkNyZWF0aW5nIGFuZCBwb3B1bGF0aW5nIHB1Ymxpc2hpbmcgZGlyZWN0b3J5Ig0KJHB1Ymxpc2hEaXIgPSBOZXctSXRlbSAtUGF0aCAkV29ya2luZ0RpcmVjdG9yeSAtTmFtZSBwdWJsaXNoIC1JdGVtVHlwZSBEaXJlY3RvcnkgLUZvcmNlDQpDb3B5LUl0ZW0gLVBhdGggIiQoJFdvcmtpbmdEaXJlY3RvcnkpXMO+bmFtZcO+IiAtRGVzdGluYXRpb24gJHB1Ymxpc2hEaXIuRnVsbE5hbWUgLVJlY3Vyc2UgLUZvcmNlDQoNCiNyZWdpb24gR2F0aGVyIHRleHQgZGF0YSB0byBjb21waWxlDQokdGV4dCA9IEAoKQ0KDQojIEdhdGhlciBjb21tYW5kcw0KR2V0LUNoaWxkSXRlbSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw75caW50ZXJuYWxcZnVuY3Rpb25zXCIgLVJlY3Vyc2UgLUZpbGUgLUZpbHRlciAiKi5wczEiIHwgRm9yRWFjaC1PYmplY3Qgew0KCSR0ZXh0ICs9IFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCRfLkZ1bGxOYW1lKQ0KfQ0KR2V0LUNoaWxkSXRlbSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw75cZnVuY3Rpb25zXCIgLVJlY3Vyc2UgLUZpbGUgLUZpbHRlciAiKi5wczEiIHwgRm9yRWFjaC1PYmplY3Qgew0KCSR0ZXh0ICs9IFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCRfLkZ1bGxOYW1lKQ0KfQ0KDQojIEdhdGhlciBzY3JpcHRzDQpHZXQtQ2hpbGRJdGVtIC1QYXRoICIkKCRwdWJsaXNoRGlyLkZ1bGxOYW1lKVzDvm5hbWXDvlxpbnRlcm5hbFxzY3JpcHRzXCIgLVJlY3Vyc2UgLUZpbGUgLUZpbHRlciAiKi5wczEiIHwgRm9yRWFjaC1PYmplY3Qgew0KCSR0ZXh0ICs9IFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCRfLkZ1bGxOYW1lKQ0KfQ0KDQojcmVnaW9uIFVwZGF0ZSB0aGUgcHNtMSBmaWxlICYgQ2xlYW51cA0KW1N5c3RlbS5JTy5GaWxlXTo6V3JpdGVBbGxUZXh0KCIkKCRwdWJsaXNoRGlyLkZ1bGxOYW1lKVzDvm5hbWXDvlzDvm5hbWXDvi5wc20xIiwgKCR0ZXh0IC1qb2luICJgbmBuIiksIFtTeXN0ZW0uVGV4dC5FbmNvZGluZ106OlVURjgpDQpSZW1vdmUtSXRlbSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw75caW50ZXJuYWwiIC1SZWN1cnNlIC1Gb3JjZQ0KUmVtb3ZlLUl0ZW0gLVBhdGggIiQoJHB1Ymxpc2hEaXIuRnVsbE5hbWUpXMO+bmFtZcO+XGZ1bmN0aW9ucyIgLVJlY3Vyc2UgLUZvcmNlDQojZW5kcmVnaW9uIFVwZGF0ZSB0aGUgcHNtMSBmaWxlICYgQ2xlYW51cA0KDQojcmVnaW9uIFVwZGF0aW5nIHRoZSBNb2R1bGUgVmVyc2lvbg0KaWYgKCRBdXRvVmVyc2lvbikNCnsNCglXcml0ZS1Ib3N0ICAiVXBkYXRpbmcgbW9kdWxlIHZlcnNpb24gbnVtYmVycy4iDQoJdHJ5IHsgW3ZlcnNpb25dJHJlbW90ZVZlcnNpb24gPSAoRmluZC1Nb2R1bGUgJ8O+bmFtZcO+JyAtUmVwb3NpdG9yeSAkUmVwb3NpdG9yeSAtRXJyb3JBY3Rpb24gU3RvcCkuVmVyc2lvbiB9DQoJY2F0Y2gNCgl7DQoJCXRocm93ICJGYWlsZWQgdG8gYWNjZXNzICQoJFJlcG9zaXRvcnkpIDogJF8iDQoJfQ0KCWlmICgtbm90ICRyZW1vdGVWZXJzaW9uKQ0KCXsNCgkJdGhyb3cgIkNvdWxkbid0IGZpbmQgw75uYW1lw74gb24gcmVwb3NpdG9yeSAkKCRSZXBvc2l0b3J5KSA6ICRfIg0KCX0NCgkkbmV3QnVpbGROdW1iZXIgPSAkcmVtb3RlVmVyc2lvbi5CdWlsZCArIDENCglbdmVyc2lvbl0kbG9jYWxWZXJzaW9uID0gKEltcG9ydC1Qb3dlclNoZWxsRGF0YUZpbGUgLVBhdGggIiQoJHB1Ymxpc2hEaXIuRnVsbE5hbWUpXMO+bmFtZcO+XMO+bmFtZcO+LnBzZDEiKS5Nb2R1bGVWZXJzaW9uDQoJVXBkYXRlLU1vZHVsZU1hbmlmZXN0IC1QYXRoICIkKCRwdWJsaXNoRGlyLkZ1bGxOYW1lKVzDvm5hbWXDvlzDvm5hbWXDvi5wc2QxIiAtTW9kdWxlVmVyc2lvbiAiJCgkbG9jYWxWZXJzaW9uLk1ham9yKS4kKCRsb2NhbFZlcnNpb24uTWlub3IpLiQoJG5ld0J1aWxkTnVtYmVyKSINCn0NCiNlbmRyZWdpb24gVXBkYXRpbmcgdGhlIE1vZHVsZSBWZXJzaW9uDQoNCiNyZWdpb24gUHVibGlzaA0KaWYgKCRTa2lwUHVibGlzaCkgeyByZXR1cm4gfQ0KaWYgKCRMb2NhbFJlcG8pDQp7DQoJIyBEZXBlbmRlbmNpZXMgbXVzdCBnbyBmaXJzdA0KCVdyaXRlLUhvc3QgICJDcmVhdGluZyBOdWdldCBQYWNrYWdlIGZvciBtb2R1bGU6IFBTRnJhbWV3b3JrIg0KCU5ldy1QU01ETW9kdWxlTnVnZXRQYWNrYWdlIC1Nb2R1bGVQYXRoIChHZXQtTW9kdWxlIC1OYW1lIFBTRnJhbWV3b3JrKS5Nb2R1bGVCYXNlIC1QYWNrYWdlUGF0aCAuDQoJV3JpdGUtSG9zdCAgIkNyZWF0aW5nIE51Z2V0IFBhY2thZ2UgZm9yIG1vZHVsZTogw75uYW1lw74iDQoJTmV3LVBTTURNb2R1bGVOdWdldFBhY2thZ2UgLU1vZHVsZVBhdGggIiQoJHB1Ymxpc2hEaXIuRnVsbE5hbWUpXMO+bmFtZcO+IiAtUGFja2FnZVBhdGggLg0KfQ0KZWxzZQ0Kew0KCSMgUHVibGlzaCB0byBHYWxsZXJ5DQoJV3JpdGUtSG9zdCAgIlB1Ymxpc2hpbmcgdGhlIMO+bmFtZcO+IG1vZHVsZSB0byAkKCRSZXBvc2l0b3J5KSINCglQdWJsaXNoLU1vZHVsZSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw74iIC1OdUdldEFwaUtleSAkQXBpS2V5IC1Gb3JjZSAtUmVwb3NpdG9yeSAkUmVwb3NpdG9yeQ0KfQ0KI2VuZHJlZ2lvbiBQdWJsaXNoAQkPAAAACRAAAAAGEQAAAA52c3RzLWJ1aWxkLnBzMQYSAAAAFGJ1aWxkXHZzdHMtYnVpbGQucHMxCQYAAAAJFAAAAAkVAAAAAQwAAAALAAAABhYAAACABnBhcmFtICgNCiAgICBbc3RyaW5nXQ0KICAgICRSZXBvc2l0b3J5ID0gJ1BTR2FsbGVyeScNCikNCg0KJG1vZHVsZXMgPSBAKCJQZXN0ZXIiLCAiUFNTY3JpcHRBbmFseXplciIpDQoNCiMgQXV0b21hdGljYWxseSBhZGQgbWlzc2luZyBkZXBlbmRlbmNpZXMNCiRkYXRhID0gSW1wb3J0LVBvd2VyU2hlbGxEYXRhRmlsZSAtUGF0aCAiJFBTU2NyaXB0Um9vdFwuLlzDvm5hbWXDvlzDvm5hbWXDvi5wc2QxIg0KZm9yZWFjaCAoJGRlcGVuZGVuY3kgaW4gJGRhdGEuUmVxdWlyZWRNb2R1bGVzKSB7DQogICAgaWYgKCRkZXBlbmRlbmN5IC1pcyBbc3RyaW5nXSkgew0KICAgICAgICBpZiAoJG1vZHVsZXMgLWNvbnRhaW5zICRkZXBlbmRlbmN5KSB7IGNvbnRpbnVlIH0NCiAgICAgICAgJG1vZHVsZXMgKz0gJGRlcGVuZGVuY3kNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAgIGlmICgkbW9kdWxlcyAtY29udGFpbnMgJGRlcGVuZGVuY3kuTW9kdWxlTmFtZSkgeyBjb250aW51ZSB9DQogICAgICAgICRtb2R1bGVzICs9ICRkZXBlbmRlbmN5Lk1vZHVsZU5hbWUNCiAgICB9DQp9DQoNCmZvcmVhY2ggKCRtb2R1bGUgaW4gJG1vZHVsZXMpIHsNCiAgICBXcml0ZS1Ib3N0ICJJbnN0YWxsaW5nICRtb2R1bGUiIC1Gb3JlZ3JvdW5kQ29sb3IgQ3lhbg0KICAgIEluc3RhbGwtTW9kdWxlICRtb2R1bGUgLUZvcmNlIC1Ta2lwUHVibGlzaGVyQ2hlY2sgLVJlcG9zaXRvcnkgJFJlcG9zaXRvcnkNCiAgICBJbXBvcnQtTW9kdWxlICRtb2R1bGUgLUZvcmNlIC1QYXNzVGhydQ0KfQEJFwAAAAkYAAAABhkAAAAWdnN0cy1wcmVyZXF1aXNpdGVzLnBzMQYaAAAAHGJ1aWxkXHZzdHMtcHJlcmVxdWlzaXRlcy5wczEJBgAAAAkcAAAACR0AAAABDQAAAAsAAAAGHgAAAEIjIFJ1biBpbnRlcm5hbCBwZXN0ZXIgdGVzdHMNCiYgIiRQU1NjcmlwdFJvb3RcLi5cdGVzdHNccGVzdGVyLnBzMSIBCR8AAAAJIAAAAAYhAAAAEXZzdHMtdmFsaWRhdGUucHMxBiIAAAAXYnVpbGRcdnN0cy12YWxpZGF0ZS5wczEJBgAAAAkkAAAACSUAAAABDwAAAAcAAAAJJgAAAAEAAAABAAAAARAAAAAHAAAACQoAAAAAAAAAAAAAAAEUAAAABwAAAAkKAAAAAAAAAAAAAAABFQAAAAcAAAAJCgAAAAAAAAAAAAAAARcAAAAHAAAACSgAAAABAAAAAQAAAAEYAAAABwAAAAkKAAAAAAAAAAAAAAABHAAAAAcAAAAJCgAAAAAAAAAAAAAAAR0AAAAHAAAACQoAAAAAAAAAAAAAAAEfAAAABwAAAAkKAAAAAAAAAAAAAAABIAAAAAcAAAAJCgAAAAAAAAAAAAAAASQAAAAHAAAACQoAAAAAAAAAAAAAAAElAAAABwAAAAkKAAAAAAAAAAAAAAARJgAAAAQAAAAGKgAAAARuYW1lDQMRKAAAAAQAAAAGKwAAAARuYW1lDQML</BA> </MS> </Obj> <Obj RefId="17"> <TNRef RefId="7" /> <ToString>PSModuleDevelopment.Template.TemplateItemFolder</ToString> <Props> <Obj N="Children" RefId="18"> <TNRef RefId="6" /> <LST> <S>PSModuleDevelopment.Template.TemplateItemFolder</S> <S>PSModuleDevelopment.Template.TemplateItemFolder</S> <S>PSModuleDevelopment.Template.TemplateItemFile</S> <S>PSModuleDevelopment.Template.TemplateItemFile</S> </LST> </Obj> <S N="Name">tests</S> <S N="RelativePath">tests</S> <S N="Identifier">þ</S> <Obj N="FileSystemParameterFlat" RefId="19"> <TNRef RefId="2" /> <LST /> </Obj> <Obj N="FileSystemParameterScript" RefId="20"> <TNRef RefId="2" /> <LST /> </Obj> </Props> <MS> <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAL1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRm9sZGVyBgAAAAhDaGlsZHJlbgROYW1lDFJlbGF0aXZlUGF0aApJZGVudGlmaWVyF0ZpbGVTeXN0ZW1QYXJhbWV0ZXJGbGF0GUZpbGVTeXN0ZW1QYXJhbWV0ZXJTY3JpcHQDAQEBAwOeAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1CYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAAJAwAAAAYEAAAABXRlc3RzBgUAAAAFdGVzdHMGBgAAAALDvgkHAAAACQgAAAAEAwAAAJ4BU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UsIFBTTW9kdWxlRGV2ZWxvcG1lbnQsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgQAAC9QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2VbXQIAAAAICAkJAAAABAAAAAQAAAAEBwAAAH9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24GAAAICAkKAAAAAAAAAAAAAAABCAAAAAcAAAAJCgAAAAAAAAAAAAAABwkAAAAAAQAAAAQAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJCwAAAAkMAAAACQ0AAAAJDgAAABEKAAAAAAAAAAELAAAAAQAAAAkPAAAABhAAAAAJZnVuY3Rpb25zBhEAAAAPdGVzdHNcZnVuY3Rpb25zCQYAAAAJEwAAAAkUAAAAAQwAAAABAAAACRUAAAAGFgAAAAdnZW5lcmFsBhcAAAANdGVzdHNcZ2VuZXJhbAkGAAAACRkAAAAJGgAAAAUNAAAALVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRmlsZQkAAAAFVmFsdWUJUGxhaW5UZXh0FENvbnRlbnRQYXJhbWV0ZXJGbGF0FkNvbnRlbnRQYXJhbWV0ZXJTY3JpcHQETmFtZQxSZWxhdGl2ZVBhdGgKSWRlbnRpZmllchdGaWxlU3lzdGVtUGFyYW1ldGVyRmxhdBlGaWxlU3lzdGVtUGFyYW1ldGVyU2NyaXB0AQADAwEBAQMDAX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAYbAAAAhhpwYXJhbSAoDQoJJFRlc3RHZW5lcmFsID0gJHRydWUsDQoJDQoJJFRlc3RGdW5jdGlvbnMgPSAkdHJ1ZSwNCgkNCglbVmFsaWRhdGVTZXQoJ05vbmUnLCAnTm9ybWFsJywgJ0RldGFpbGVkJywgJ0RpYWdub3N0aWMnKV0NCglbQWxpYXMoJ1Nob3cnKV0NCgkkT3V0cHV0ID0gIk5vbmUiLA0KCQ0KCSRJbmNsdWRlID0gIioiLA0KCQ0KCSRFeGNsdWRlID0gIiINCikNCg0KV3JpdGUtSG9zdCAiU3RhcnRpbmcgVGVzdHMiDQoNCldyaXRlLUhvc3QgIkltcG9ydGluZyBNb2R1bGUiDQoNCiRnbG9iYWw6dGVzdHJvb3QgPSAkUFNTY3JpcHRSb290DQokZ2xvYmFsOl9fcGVzdGVyX2RhdGEgPSBAeyB9DQoNClJlbW92ZS1Nb2R1bGUgw75uYW1lw74gLUVycm9yQWN0aW9uIElnbm9yZQ0KSW1wb3J0LU1vZHVsZSAiJFBTU2NyaXB0Um9vdFwuLlzDvm5hbWXDvlzDvm5hbWXDvi5wc2QxIg0KSW1wb3J0LU1vZHVsZSAiJFBTU2NyaXB0Um9vdFwuLlzDvm5hbWXDvlzDvm5hbWXDvi5wc20xIiAtRm9yY2UNCg0KIyBOZWVkIHRvIGltcG9ydCBleHBsaWNpdGx5IHNvIHdlIGNhbiB1c2UgdGhlIGNvbmZpZ3VyYXRpb24gY2xhc3MNCkltcG9ydC1Nb2R1bGUgUGVzdGVyDQoNCldyaXRlLUhvc3QgICJDcmVhdGluZyB0ZXN0IHJlc3VsdCBmb2xkZXIiDQokbnVsbCA9IE5ldy1JdGVtIC1QYXRoICIkUFNTY3JpcHRSb290XC4uIiAtTmFtZSBUZXN0UmVzdWx0cyAtSXRlbVR5cGUgRGlyZWN0b3J5IC1Gb3JjZQ0KDQokdG90YWxGYWlsZWQgPSAwDQokdG90YWxSdW4gPSAwDQoNCiR0ZXN0cmVzdWx0cyA9IEAoKQ0KJGNvbmZpZyA9IFtQZXN0ZXJDb25maWd1cmF0aW9uXTo6RGVmYXVsdA0KJGNvbmZpZy5UZXN0UmVzdWx0LkVuYWJsZWQgPSAkdHJ1ZQ0KDQojcmVnaW9uIFJ1biBHZW5lcmFsIFRlc3RzDQppZiAoJFRlc3RHZW5lcmFsKQ0Kew0KCVdyaXRlLUhvc3QgICJNb2R1bGVzIGltcG9ydGVkLCBwcm9jZWVkaW5nIHdpdGggZ2VuZXJhbCB0ZXN0cyINCglmb3JlYWNoICgkZmlsZSBpbiAoR2V0LUNoaWxkSXRlbSAiJFBTU2NyaXB0Um9vdFxnZW5lcmFsIiB8IFdoZXJlLU9iamVjdCBOYW1lIC1saWtlICIqLlRlc3RzLnBzMSIpKQ0KCXsNCgkJaWYgKCRmaWxlLk5hbWUgLW5vdGxpa2UgJEluY2x1ZGUpIHsgY29udGludWUgfQ0KCQlpZiAoJGZpbGUuTmFtZSAtbGlrZSAkRXhjbHVkZSkgeyBjb250aW51ZSB9DQoNCgkJV3JpdGUtSG9zdCAgIiAgRXhlY3V0aW5nICQoJGZpbGUuTmFtZSkiDQoJCSRjb25maWcuVGVzdFJlc3VsdC5PdXRwdXRQYXRoID0gSm9pbi1QYXRoICIkUFNTY3JpcHRSb290XC4uXFRlc3RSZXN1bHRzIiAiVEVTVC0kKCRmaWxlLkJhc2VOYW1lKS54bWwiDQoJCSRjb25maWcuUnVuLlBhdGggPSAkZmlsZS5GdWxsTmFtZQ0KCQkkY29uZmlnLlJ1bi5QYXNzVGhydSA9ICR0cnVlDQoJCSRjb25maWcuT3V0cHV0LlZlcmJvc2l0eSA9ICRPdXRwdXQNCiAgICAJJHJlc3VsdHMgPSBJbnZva2UtUGVzdGVyIC1Db25maWd1cmF0aW9uICRjb25maWcNCgkJZm9yZWFjaCAoJHJlc3VsdCBpbiAkcmVzdWx0cykNCgkJew0KCQkJJHRvdGFsUnVuICs9ICRyZXN1bHQuVG90YWxDb3VudA0KCQkJJHRvdGFsRmFpbGVkICs9ICRyZXN1bHQuRmFpbGVkQ291bnQNCgkJCSRyZXN1bHQuVGVzdHMgfCBXaGVyZS1PYmplY3QgUmVzdWx0IC1uZSAnUGFzc2VkJyB8IEZvckVhY2gtT2JqZWN0IHsNCgkJCQkkdGVzdHJlc3VsdHMgKz0gW3BzY3VzdG9tb2JqZWN0XUB7DQoJCQkJCUJsb2NrICAgID0gJF8uQmxvY2sNCgkJCQkJTmFtZQkgPSAiSXQgJCgkXy5OYW1lKSINCgkJCQkJUmVzdWx0ICAgPSAkXy5SZXN1bHQNCgkJCQkJTWVzc2FnZSAgPSAkXy5FcnJvclJlY29yZC5EaXNwbGF5RXJyb3JNZXNzYWdlDQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KfQ0KI2VuZHJlZ2lvbiBSdW4gR2VuZXJhbCBUZXN0cw0KDQokZ2xvYmFsOl9fcGVzdGVyX2RhdGEuU2NyaXB0QW5hbHl6ZXIgfCBPdXQtSG9zdA0KDQojcmVnaW9uIFRlc3QgQ29tbWFuZHMNCmlmICgkVGVzdEZ1bmN0aW9ucykNCnsNCglXcml0ZS1Ib3N0ICJQcm9jZWVkaW5nIHdpdGggaW5kaXZpZHVhbCB0ZXN0cyINCglmb3JlYWNoICgkZmlsZSBpbiAoR2V0LUNoaWxkSXRlbSAiJFBTU2NyaXB0Um9vdFxmdW5jdGlvbnMiIC1SZWN1cnNlIC1GaWxlIHwgV2hlcmUtT2JqZWN0IE5hbWUgLWxpa2UgIipUZXN0cy5wczEiKSkNCgl7DQoJCWlmICgkZmlsZS5OYW1lIC1ub3RsaWtlICRJbmNsdWRlKSB7IGNvbnRpbnVlIH0NCgkJaWYgKCRmaWxlLk5hbWUgLWxpa2UgJEV4Y2x1ZGUpIHsgY29udGludWUgfQ0KCQkNCgkJV3JpdGUtSG9zdCAiICBFeGVjdXRpbmcgJCgkZmlsZS5OYW1lKSINCgkJJGNvbmZpZy5UZXN0UmVzdWx0Lk91dHB1dFBhdGggPSBKb2luLVBhdGggIiRQU1NjcmlwdFJvb3RcLi5cVGVzdFJlc3VsdHMiICJURVNULSQoJGZpbGUuQmFzZU5hbWUpLnhtbCINCgkJJGNvbmZpZy5SdW4uUGF0aCA9ICRmaWxlLkZ1bGxOYW1lDQoJCSRjb25maWcuUnVuLlBhc3NUaHJ1ID0gJHRydWUNCgkJJGNvbmZpZy5PdXRwdXQuVmVyYm9zaXR5ID0gJE91dHB1dA0KICAgIAkkcmVzdWx0cyA9IEludm9rZS1QZXN0ZXIgLUNvbmZpZ3VyYXRpb24gJGNvbmZpZw0KCQlmb3JlYWNoICgkcmVzdWx0IGluICRyZXN1bHRzKQ0KCQl7DQoJCQkkdG90YWxSdW4gKz0gJHJlc3VsdC5Ub3RhbENvdW50DQoJCQkkdG90YWxGYWlsZWQgKz0gJHJlc3VsdC5GYWlsZWRDb3VudA0KCQkJJHJlc3VsdC5UZXN0cyB8IFdoZXJlLU9iamVjdCBSZXN1bHQgLW5lICdQYXNzZWQnIHwgRm9yRWFjaC1PYmplY3Qgew0KCQkJCSR0ZXN0cmVzdWx0cyArPSBbcHNjdXN0b21vYmplY3RdQHsNCgkJCQkJQmxvY2sgICAgPSAkXy5CbG9jaw0KCQkJCQlOYW1lCSA9ICJJdCAkKCRfLk5hbWUpIg0KCQkJCQlSZXN1bHQgICA9ICRfLlJlc3VsdA0KCQkJCQlNZXNzYWdlICA9ICRfLkVycm9yUmVjb3JkLkRpc3BsYXlFcnJvck1lc3NhZ2UNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQp9DQojZW5kcmVnaW9uIFRlc3QgQ29tbWFuZHMNCg0KJHRlc3RyZXN1bHRzIHwgU29ydC1PYmplY3QgRGVzY3JpYmUsIENvbnRleHQsIE5hbWUsIFJlc3VsdCwgTWVzc2FnZSB8IEZvcm1hdC1MaXN0DQoNCmlmICgkdG90YWxGYWlsZWQgLWVxIDApIHsgV3JpdGUtSG9zdCAgIkFsbCAkdG90YWxSdW4gdGVzdHMgZXhlY3V0ZWQgd2l0aG91dCBhIHNpbmdsZSBmYWlsdXJlISIgfQ0KZWxzZSB7IFdyaXRlLUhvc3QgIiR0b3RhbEZhaWxlZCB0ZXN0cyBvdXQgb2YgJHRvdGFsUnVuIHRlc3RzIGZhaWxlZCEiIH0NCg0KaWYgKCR0b3RhbEZhaWxlZCAtZ3QgMCkNCnsNCgl0aHJvdyAiJHRvdGFsRmFpbGVkIC8gJHRvdGFsUnVuIHRlc3RzIGZhaWxlZCEiDQp9AQkcAAAACR0AAAAGHgAAAApwZXN0ZXIucHMxBh8AAAAQdGVzdHNccGVzdGVyLnBzMQkGAAAACSEAAAAJIgAAAAEOAAAADQAAAAYjAAAAogcjIERlc2NyaXB0aW9uDQoNClRoaXMgaXMgdGhlIGZvbGRlciwgd2hlcmUgYWxsIHRoZSB0ZXN0cyBnby4NCg0KVGhvc2UgYXJlIHN1YmRpdmlkZWQgaW4gdHdvIGNhdGVnb3JpZXM6DQoNCiAtIEdlbmVyYWwNCiAtIEZ1bmN0aW9uDQoNCiMjIEdlbmVyYWwgVGVzdHMNCg0KR2VuZXJhbCB0ZXN0cyBhcmUgZnVuY3Rpb24gZ2VuZXJpYyBhbmQgdGVzdCBmb3IgZ2VuZXJhbCBwb2xpY2llcy4NCg0KVGhlc2UgdGVzdCBzY2FuIGFuc3dlciBxdWVzdGlvbnMgc3VjaCBhczoNCg0KIC0gSXMgbXkgbW9kdWxlIGZvbGxvd2luZyBteSBzdHlsZSBndWlkZXM/DQogLSBEb2VzIGFueSBvZiBteSBzY3JpcHRzIGhhdmUgYSBzeW50YXggZXJyb3I/DQogLSBEbyBteSBzY3JpcHRzIHVzZSBjb21tYW5kcyBJIGRvIG5vdCB3YW50IHRoZW0gdG8gdXNlPw0KIC0gRG8gbXkgY29tbWFuZHMgZm9sbG93IGJlc3QgcHJhY3RpY2VzPw0KIC0gRG8gbXkgY29tbWFuZHMgaGF2ZSBwcm9wZXIgaGVscD8NCg0KQmFzaWNhbGx5LCB0aGVzZSBhbGxvdyBhIGdlbmVyYWwgbW9kdWxlIGhlYWx0aCBjaGVjay4NCg0KVGhlc2UgdGVzdHMgYXJlIGFscmVhZHkgcHJvdmlkZWQgYXMgcGFydCBvZiB0aGUgdGVtcGxhdGUuDQoNCiMjIEZ1bmN0aW9uIFRlc3RzDQoNCkEgaGVhbHRoeSBtb2R1bGUgc2hvdWxkIHByb3ZpZGUgdW5pdCBhbmQgaW50ZWdyYXRpb24gdGVzdHMgZm9yIHRoZSBjb21tYW5kcyAmIGNvbXBvbmVudHMgaXQgc2hpcHMuDQpPbmx5IHRoZW4gY2FuIGJlIGd1YXJhbnRlZWQsIHRoYXQgdGhleSB3aWxsIGFjdHVhbGx5IHBlcmZvcm0gYXMgcHJvbWlzZWQuDQoNCkhvd2V2ZXIsIGFzIGVhY2ggc3VjaCB0ZXN0IG11c3QgYmUgc3BlY2lmaWMgdG8gdGhlIGZ1bmN0aW9uIGl0IHRlc3RzLCB0aGVyZSBjYW5ub3QgYmUgbXVjaCBpbiB0aGUgd2F5IG9mIHRlbXBsYXRlcy4BCSQAAAAJJQAAAAYmAAAACXJlYWRtZS5tZAYnAAAAD3Rlc3RzXHJlYWRtZS5tZAkGAAAACSkAAAAJKgAAAAEPAAAAAwAAAAkrAAAAAQAAAAEAAAABEwAAAAcAAAAJCgAAAAAAAAAAAAAAARQAAAAHAAAACQoAAAAAAAAAAAAAAAEVAAAAAwAAAAktAAAABgAAAAYAAAABGQAAAAcAAAAJCgAAAAAAAAAAAAAAARoAAAAHAAAACQoAAAAAAAAAAAAAAAEcAAAABwAAAAkvAAAAAQAAAAEAAAABHQAAAAcAAAAJCgAAAAAAAAAAAAAAASEAAAAHAAAACQoAAAAAAAAAAAAAAAEiAAAABwAAAAkKAAAAAAAAAAAAAAABJAAAAAcAAAAJCgAAAAAAAAAAAAAAASUAAAAHAAAACQoAAAAAAAAAAAAAAAEpAAAABwAAAAkKAAAAAAAAAAAAAAABKgAAAAcAAAAJCgAAAAAAAAAAAAAABysAAAAAAQAAAAQAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJMQAAAA0DBy0AAAAAAQAAAAgAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJMgAAAAkzAAAACTQAAAAJNQAAAAk2AAAACTcAAAANAhEvAAAABAAAAAY4AAAABG5hbWUNAwExAAAADQAAAAY5AAAA1QEjIERlc2NyaXB0aW9uDQoNClRoaXMgaXMgd2hlcmUgdGhlIGZ1bmN0aW9uIHRlc3RzIGdvLg0KDQpNYWtlIHN1cmUgdG8gcHV0IHRoZW0gaW4gZm9sZGVycyByZWZsZWN0aW5nIHRoZSBhY3R1YWwgbW9kdWxlIHN0cnVjdHVyZS4NCg0KSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gaW50ZXJuYWwgYW5kIHB1YmxpYyBmdW5jdGlvbnMgaGVyZS4BCToAAAAJOwAAAAY8AAAACXJlYWRtZS5tZAY9AAAAGXRlc3RzXGZ1bmN0aW9uc1xyZWFkbWUubWQJBgAAAAk/AAAACUAAAAABMgAAAA0AAAAGQQAAAJAJIyBMaXN0IG9mIGZvcmJpZGRlbiBjb21tYW5kcw0KJGdsb2JhbDpCYW5uZWRDb21tYW5kcyA9IEAoDQoJJ1dyaXRlLU91dHB1dCcNCgkNCgkjIFVzZSBDSU0gaW5zdGVhZCB3aGVyZSBwb3NzaWJsZQ0KCSdHZXQtV21pT2JqZWN0Jw0KCSdJbnZva2UtV21pTWV0aG9kJw0KCSdSZWdpc3Rlci1XbWlFdmVudCcNCgknUmVtb3ZlLVdtaU9iamVjdCcNCgknU2V0LVdtaUluc3RhbmNlJw0KDQoJIyBVc2UgR2V0LVdpbkV2ZW50IGluc3RlYWQNCgknR2V0LUV2ZW50TG9nJw0KDQoJIyBVc2VyIFByZWZlcmVuY2Ugc2hvdWxkIG5vdCBiZSB1c2VkIGluIGF1dG9tYXRpb24NCgknQ2xlYXItSG9zdCcgIyBDb25zb2xlIFNjcmVlbiBiZWxvbmdzIHRvIHRoZSB1c2VyDQoJJ1NldC1Mb2NhdGlvbicgIyBDb25zb2xlIHBhdGggYmVsb25ncyB0byB0aGUgdXNlci4gVXNlICRQU1NjcmlwdFJvb3QgaW5zdGVhZC4NCg0KCSMgRHluYW1pYyBWYXJpYWJsZXMgYXJlIHVuZGVzaXJhYmxlLiBVc2UgaGFzaHRhYmxlIGluc3RlYWQuDQoJJ0dldC1WYXJpYWJsZScNCgknU2V0LVZhcmlhYmxlJw0KCSdDbGVhci1WYXJpYWJsZScNCgknUmVtb3ZlLVZhcmlhYmxlJw0KCSdOZXctVmFyaWFibGUnDQoNCgkjIER5bmFtaWMgQ29kZSBleGVjdXRpb24gc2hvdWxkIG5vdCByZXF1aXJlIHRoaXMNCgknSW52b2tlLUV4cHJlc3Npb24nICMgQ29uc2lkZXIgc3BsYXR0aW5nIGluc3RlYWQuIFllcywgeW91IGNhbiBzcGxhdCBwYXJhbWV0ZXJzIGZvciBleHRlcm5hbCBhcHBsaWNhdGlvbnMhDQopDQoNCjwjDQoJQ29udGFpbnMgbGlzdCBvZiBleGNlcHRpb25zIGZvciBiYW5uZWQgY21kbGV0cy4NCglJbnNlcnQgdGhlIGZpbGUgbmFtZXMgb2YgZmlsZXMgdGhhdCBtYXkgY29udGFpbiB0aGVtLg0KCQ0KCUV4YW1wbGU6DQoJIldyaXRlLUhvc3QiICA9IEAoJ1dyaXRlLVBTRkhvc3RDb2xvci5wczEnLCdXcml0ZS1QU0ZNZXNzYWdlLnBzMScpDQojPg0KJGdsb2JhbDpNYXlDb250YWluQ29tbWFuZCA9IEB7DQoJIldyaXRlLUhvc3QiICA9IEAoKQ0KCSJXcml0ZS1WZXJib3NlIiA9IEAoKQ0KCSJXcml0ZS1XYXJuaW5nIiA9IEAoKQ0KCSJXcml0ZS1FcnJvciIgID0gQCgpDQoJIldyaXRlLU91dHB1dCIgPSBAKCkNCgkiV3JpdGUtSW5mb3JtYXRpb24iID0gQCgpDQoJIldyaXRlLURlYnVnIiA9IEAoKQ0KfQEJQgAAAAlDAAAABkQAAAAcRmlsZUludGVncml0eS5FeGNlcHRpb25zLnBzMQZFAAAAKnRlc3RzXGdlbmVyYWxcRmlsZUludGVncml0eS5FeGNlcHRpb25zLnBzMQkGAAAACUcAAAAJSAAAAAEzAAAADQAAAAZJAAAA4RgkbW9kdWxlUm9vdCA9IChSZXNvbHZlLVBhdGggIiRnbG9iYWw6dGVzdHJvb3RcLi4iKS5QYXRoDQoNCi4gIiRnbG9iYWw6dGVzdHJvb3RcZ2VuZXJhbFxGaWxlSW50ZWdyaXR5LkV4Y2VwdGlvbnMucHMxIg0KDQpEZXNjcmliZSAiVmVyaWZ5aW5nIGludGVncml0eSBvZiBtb2R1bGUgZmlsZXMiIHsNCglCZWZvcmVBbGwgew0KCQlmdW5jdGlvbiBHZXQtRmlsZUVuY29kaW5nDQoJCXsNCgkJPCMNCgkJCS5TWU5PUFNJUw0KCQkJCVRlc3RzIGEgZmlsZSBmb3IgZW5jb2RpbmcuDQoJCQkNCgkJCS5ERVNDUklQVElPTg0KCQkJCVRlc3RzIGEgZmlsZSBmb3IgZW5jb2RpbmcuDQoJCQkNCgkJCS5QQVJBTUVURVIgUGF0aA0KCQkJCVRoZSBmaWxlIHRvIHRlc3QNCgkJIz4NCgkJCVtDbWRsZXRCaW5kaW5nKCldDQoJCQlQYXJhbSAoDQoJCQkJW1BhcmFtZXRlcihNYW5kYXRvcnkgPSAkVHJ1ZSwgVmFsdWVGcm9tUGlwZWxpbmVCeVByb3BlcnR5TmFtZSA9ICRUcnVlKV0NCgkJCQlbQWxpYXMoJ0Z1bGxOYW1lJyldDQoJCQkJW3N0cmluZ10NCgkJCQkkUGF0aA0KCQkJKQ0KCQkJDQoJCQlpZiAoJFBTVmVyc2lvblRhYmxlLlBTVmVyc2lvbi5NYWpvciAtbHQgNikNCgkJCXsNCgkJCQlbYnl0ZVtdXSRieXRlID0gZ2V0LWNvbnRlbnQgLUVuY29kaW5nIGJ5dGUgLVJlYWRDb3VudCA0IC1Ub3RhbENvdW50IDQgLVBhdGggJFBhdGgNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQlbYnl0ZVtdXSRieXRlID0gR2V0LUNvbnRlbnQgLUFzQnl0ZVN0cmVhbSAtUmVhZENvdW50IDQgLVRvdGFsQ291bnQgNCAtUGF0aCAkUGF0aA0KCQkJfQ0KCQkJDQoJCQlpZiAoJGJ5dGVbMF0gLWVxIDB4ZWYgLWFuZCAkYnl0ZVsxXSAtZXEgMHhiYiAtYW5kICRieXRlWzJdIC1lcSAweGJmKSB7ICdVVEY4IEJPTScgfQ0KCQkJZWxzZWlmICgkYnl0ZVswXSAtZXEgMHhmZSAtYW5kICRieXRlWzFdIC1lcSAweGZmKSB7ICdVbmljb2RlJyB9DQoJCQllbHNlaWYgKCRieXRlWzBdIC1lcSAwIC1hbmQgJGJ5dGVbMV0gLWVxIDAgLWFuZCAkYnl0ZVsyXSAtZXEgMHhmZSAtYW5kICRieXRlWzNdIC1lcSAweGZmKSB7ICdVVEYzMicgfQ0KCQkJZWxzZWlmICgkYnl0ZVswXSAtZXEgMHgyYiAtYW5kICRieXRlWzFdIC1lcSAweDJmIC1hbmQgJGJ5dGVbMl0gLWVxIDB4NzYpIHsgJ1VURjcnIH0NCgkJCWVsc2UgeyAnVW5rbm93bicgfQ0KCQl9DQoJfQ0KDQoJQ29udGV4dCAiVmFsaWRhdGluZyBQUzEgU2NyaXB0IGZpbGVzIiB7DQoJCSRhbGxGaWxlcyA9IEdldC1DaGlsZEl0ZW0gLVBhdGggJG1vZHVsZVJvb3QgLVJlY3Vyc2UgfCBXaGVyZS1PYmplY3QgTmFtZSAtbGlrZSAiKi5wczEiIHwgV2hlcmUtT2JqZWN0IEZ1bGxOYW1lIC1Ob3RMaWtlICIkbW9kdWxlUm9vdFx0ZXN0c1wqIg0KCQkNCgkJZm9yZWFjaCAoJGZpbGUgaW4gJGFsbEZpbGVzKQ0KCQl7DQoJCQkkbmFtZSA9ICRmaWxlLkZ1bGxOYW1lLlJlcGxhY2UoIiRtb2R1bGVSb290XCIsICcnKQ0KCQkJDQoJCQlJdCAiWyRuYW1lXSBTaG91bGQgaGF2ZSBVVEY4IGVuY29kaW5nIHdpdGggQnl0ZSBPcmRlciBNYXJrIiAtVGVzdENhc2VzIEB7IGZpbGUgPSAkZmlsZSB9IHsNCgkJCQlHZXQtRmlsZUVuY29kaW5nIC1QYXRoICRmaWxlLkZ1bGxOYW1lIHwgU2hvdWxkIC1CZSAnVVRGOCBCT00nDQoJCQl9DQoJCQkNCgkJCUl0ICJbJG5hbWVdIFNob3VsZCBoYXZlIG5vIHRyYWlsaW5nIHNwYWNlIiAtVGVzdENhc2VzIEB7IGZpbGUgPSAkZmlsZSB9IHsNCgkJCQkoJGZpbGUgfCBTZWxlY3QtU3RyaW5nICJccyQiIHwgV2hlcmUtT2JqZWN0IHsgJF8uTGluZS5UcmltKCkuTGVuZ3RoIC1ndCAwfSkuTGluZU51bWJlciB8IFNob3VsZCAtQmVOdWxsT3JFbXB0eQ0KCQkJfQ0KCQkJDQoJCQkkdG9rZW5zID0gJG51bGwNCgkJCSRwYXJzZUVycm9ycyA9ICRudWxsDQoJCQkkbnVsbCA9IFtTeXN0ZW0uTWFuYWdlbWVudC5BdXRvbWF0aW9uLkxhbmd1YWdlLlBhcnNlcl06OlBhcnNlRmlsZSgkZmlsZS5GdWxsTmFtZSwgW3JlZl0kdG9rZW5zLCBbcmVmXSRwYXJzZUVycm9ycykNCgkJCQ0KCQkJSXQgIlskbmFtZV0gU2hvdWxkIGhhdmUgbm8gc3ludGF4IGVycm9ycyIgLVRlc3RDYXNlcyBAeyBwYXJzZUVycm9ycyA9ICRwYXJzZUVycm9ycyB9IHsNCgkJCQkkcGFyc2VFcnJvcnMgfCBTaG91bGQgLUJlTnVsbE9yRW1wdHkNCgkJCX0NCgkJCQ0KCQkJZm9yZWFjaCAoJGNvbW1hbmQgaW4gJGdsb2JhbDpCYW5uZWRDb21tYW5kcykNCgkJCXsNCgkJCQlpZiAoJGdsb2JhbDpNYXlDb250YWluQ29tbWFuZFsiJGNvbW1hbmQiXSAtbm90Y29udGFpbnMgJGZpbGUuTmFtZSkNCgkJCQl7DQoJCQkJCUl0ICJbJG5hbWVdIFNob3VsZCBub3QgdXNlICRjb21tYW5kIiAtVGVzdENhc2VzIEB7IHRva2VucyA9ICR0b2tlbnM7IGNvbW1hbmQgPSAkY29tbWFuZCB9IHsNCgkJCQkJCSR0b2tlbnMgfCBXaGVyZS1PYmplY3QgVGV4dCAtRVEgJGNvbW1hbmQgfCBTaG91bGQgLUJlTnVsbE9yRW1wdHkNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCgkNCglDb250ZXh0ICJWYWxpZGF0aW5nIGhlbHAudHh0IGhlbHAgZmlsZXMiIHsNCgkJJGFsbEZpbGVzID0gR2V0LUNoaWxkSXRlbSAtUGF0aCAkbW9kdWxlUm9vdCAtUmVjdXJzZSB8IFdoZXJlLU9iamVjdCBOYW1lIC1saWtlICIqLmhlbHAudHh0IiB8IFdoZXJlLU9iamVjdCBGdWxsTmFtZSAtTm90TGlrZSAiJG1vZHVsZVJvb3RcdGVzdHNcKiINCgkJDQoJCWZvcmVhY2ggKCRmaWxlIGluICRhbGxGaWxlcykNCgkJew0KCQkJJG5hbWUgPSAkZmlsZS5GdWxsTmFtZS5SZXBsYWNlKCIkbW9kdWxlUm9vdFwiLCAnJykNCgkJCQ0KCQkJSXQgIlskbmFtZV0gU2hvdWxkIGhhdmUgVVRGOCBlbmNvZGluZyIgLVRlc3RDYXNlcyBAeyBmaWxlID0gJGZpbGUgfSB7DQoJCQkJR2V0LUZpbGVFbmNvZGluZyAtUGF0aCAkZmlsZS5GdWxsTmFtZSB8IFNob3VsZCAtQmUgJ1VURjggQk9NJw0KCQkJfQ0KCQkJDQoJCQlJdCAiWyRuYW1lXSBTaG91bGQgaGF2ZSBubyB0cmFpbGluZyBzcGFjZSIgLVRlc3RDYXNlcyBAeyBmaWxlID0gJGZpbGUgfSB7DQoJCQkJKCRmaWxlIHwgU2VsZWN0LVN0cmluZyAiXHMkIiB8IFdoZXJlLU9iamVjdCB7ICRfLkxpbmUuVHJpbSgpLkxlbmd0aCAtZ3QgMCB9IHwgTWVhc3VyZS1PYmplY3QpLkNvdW50IHwgU2hvdWxkIC1CZSAwDQoJCQl9DQoJCX0NCgl9DQp9AQlKAAAACUsAAAAGTAAAABdGaWxlSW50ZWdyaXR5LlRlc3RzLnBzMQZNAAAAJXRlc3RzXGdlbmVyYWxcRmlsZUludGVncml0eS5UZXN0cy5wczEJBgAAAAlPAAAACVAAAAABNAAAAA0AAAAGUQAAAJ0FIyBMaXN0IG9mIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkDQokZ2xvYmFsOkZ1bmN0aW9uSGVscFRlc3RFeGNlcHRpb25zID0gQCgNCiAgICANCikNCg0KPCMNCiAgTGlzdCBvZiBhcnJheWVkIGVudW1lcmF0aW9ucy4gVGhlc2UgbmVlZCB0byBiZSB0cmVhdGVkIGRpZmZlcmVudGx5LiBBZGQgZnVsbCBuYW1lLg0KICBFeGFtcGxlOg0KDQogICJTcWxjb2xsYWJvcmF0aXZlLkRiYXRvb2xzLkNvbm5lY3Rpb24uTWFuYWdlbWVudENvbm5lY3Rpb25UeXBlW10iDQojPg0KJGdsb2JhbDpIZWxwVGVzdEVudW1lcmF0ZWRBcnJheXMgPSBAKA0KCQ0KKQ0KDQo8Iw0KICBTb21lIHR5cGVzIG9uIHBhcmFtZXRlcnMganVzdCBmYWlsIHRoZWlyIHZhbGlkYXRpb24gbm8gbWF0dGVyIHdoYXQuDQogIEZvciB0aG9zZSBpdCBiZWNvbWVzIHBvc3NpYmxlIHRvIHNraXAgdGhlbSwgYnkgYWRkaW5nIHRoZW0gdG8gdGhpcyBoYXNodGFibGUuDQogIEFkZCBieSBmb2xsb3dpbmcgdGhpcyBjb252ZW50aW9uOiA8Y29tbWFuZCBuYW1lPiA9IEAoPGxpc3Qgb2YgcGFyYW1ldGVyIG5hbWVzPikNCiAgRXhhbXBsZToNCg0KICAiR2V0LURiYUNtT2JqZWN0IiAgICAgICA9IEAoIkRvTm90VXNlIikNCiM+DQokZ2xvYmFsOkhlbHBUZXN0U2tpcFBhcmFtZXRlclR5cGUgPSBAew0KICAgIA0KfQ0KAQlSAAAACVMAAAAGVAAAABNIZWxwLkV4Y2VwdGlvbnMucHMxBlUAAAAhdGVzdHNcZ2VuZXJhbFxIZWxwLkV4Y2VwdGlvbnMucHMxCQYAAAAJVwAAAAlYAAAAATUAAAANAAAABlkAAACMNjwjDQogICAgLk5PVEVTDQogICAgICAgIFRoZSBvcmlnaW5hbCB0ZXN0IHRoaXMgaXMgYmFzZWQgdXBvbiB3YXMgd3JpdHRlbiBieSBKdW5lIEJsZW5kZXIuDQoJCUFmdGVyIHNldmVyYWwgcm91bmRzIG9mIG1vZGlmaWNhdGlvbnMgaXQgc3RhbmRzIG5vdyBhcyBpdCBpcywgYnV0IHRoZSBob25vciByZW1haW5zIGhlcnMuDQoNCgkJVGhhbmsgeW91IEp1bmUsIGZvciBhbGwgeW91IGhhdmUgZG9uZSENCg0KICAgIC5ERVNDUklQVElPTg0KCQlUaGlzIHRlc3QgZXZhbHVhdGVzIHRoZSBoZWxwIGZvciBhbGwgY29tbWFuZHMgaW4gYSBtb2R1bGUuDQoNCgkuUEFSQU1FVEVSIFNraXBUZXN0DQoJCURpc2FibGVzIHRoaXMgdGVzdC4NCgkNCgkuUEFSQU1FVEVSIENvbW1hbmRQYXRoDQoJCUxpc3Qgb2YgcGF0aHMgdW5kZXIgd2hpY2ggdGhlIHNjcmlwdCBmaWxlcyBhcmUgc3RvcmVkLg0KCQlUaGlzIHRlc3QgYXNzdW1lcyB0aGF0IGFsbCBmdW5jdGlvbnMgaGF2ZSB0aGVpciBvd24gZmlsZSB0aGF0IGlzIG5hbWVkIGFmdGVyIHRoZW1zZWx2ZXMuDQoJCVRoZXNlIHBhdGhzIGFyZSB1c2VkIHRvIHNlYXJjaCBmb3IgY29tbWFuZHMgdGhhdCBzaG91bGQgZXhpc3QgYW5kIGJlIHRlc3RlZC4NCgkJV2lsbCBzZWFyY2ggcmVjdXJzaXZlbHkgYW5kIGFjY2VwdHMgd2lsZGNhcmRzLCBtYWtlIHN1cmUgb25seSBmdW5jdGlvbnMgYXJlIGZvdW5kDQoNCgkuUEFSQU1FVEVSIE1vZHVsZU5hbWUNCgkJTmFtZSBvZiB0aGUgbW9kdWxlIHRvIGJlIHRlc3RlZC4NCgkJVGhlIG1vZHVsZSBtdXN0IGFscmVhZHkgYmUgaW1wb3J0ZWQNCg0KCS5QQVJBTUVURVIgRXhjZXB0aW9uc0ZpbGUNCgkJRmlsZSBpbiB3aGljaCBleGNlcHRpb25zIGFuZCBhZGp1c3RtZW50cyBhcmUgY29uZmlndXJlZC4NCgkJSW4gaXQgdGhlcmUgc2hvdWxkIGJlIHR3byBhcnJheXMgYW5kIGEgaGFzaHRhYmxlIGRlZmluZWQ6DQoJCQkkZ2xvYmFsOkZ1bmN0aW9uSGVscFRlc3RFeGNlcHRpb25zDQoJCQkkZ2xvYmFsOkhlbHBUZXN0RW51bWVyYXRlZEFycmF5cw0KCQkJJGdsb2JhbDpIZWxwVGVzdFNraXBQYXJhbWV0ZXJUeXBlDQoJCVRoZXNlIGNhbiBiZSB1c2VkIHRvIHR3ZWFrIHRoZSB0ZXN0cyBzbGlnaHRseSBpbiBjYXNlcyBvZiBuZWVkLg0KCQlTZWUgdGhlIGV4YW1wbGUgZmlsZSBmb3IgZXhwbGFuYXRpb25zIG9uIGVhY2ggb2YgdGhlc2UgdXNhZ2UgYW5kIGVmZmVjdC4NCiM+DQpbQ21kbGV0QmluZGluZygpXQ0KUGFyYW0gKA0KCVtzd2l0Y2hdDQoJJFNraXBUZXN0LA0KCQ0KCVtzdHJpbmdbXV0NCgkkQ29tbWFuZFBhdGggPSBAKCIkZ2xvYmFsOnRlc3Ryb290XC4uXMO+bmFtZcO+XGZ1bmN0aW9ucyIsICIkZ2xvYmFsOnRlc3Ryb290XC4uXMO+bmFtZcO+XGludGVybmFsXGZ1bmN0aW9ucyIpLA0KCQ0KCVtzdHJpbmddDQoJJE1vZHVsZU5hbWUgPSAiw75uYW1lw74iLA0KCQ0KCVtzdHJpbmddDQoJJEV4Y2VwdGlvbnNGaWxlID0gIiRnbG9iYWw6dGVzdHJvb3RcZ2VuZXJhbFxIZWxwLkV4Y2VwdGlvbnMucHMxIg0KKQ0KaWYgKCRTa2lwVGVzdCkgeyByZXR1cm4gfQ0KLiAkRXhjZXB0aW9uc0ZpbGUNCg0KJENvbW1hbmRQYXRoID0gQCgNCiAgICAiJGdsb2JhbDp0ZXN0cm9vdFwuLlzDvm5hbWXDvlxmdW5jdGlvbnMiDQogICAgIiRnbG9iYWw6dGVzdHJvb3RcLi5cw75uYW1lw75caW50ZXJuYWxcZnVuY3Rpb25zIg0KKQ0KDQokaW5jbHVkZWROYW1lcyA9IGZvcmVhY2ggKCRwYXRoIGluICRDb21tYW5kUGF0aCkgeyAoR2V0LUNoaWxkSXRlbSAkcGF0aCAtUmVjdXJzZSAtRmlsZSB8IFdoZXJlLU9iamVjdCBOYW1lIC1saWtlICIqLnBzMSIpLkJhc2VOYW1lIH0NCiRjb21tYW5kVHlwZXMgPSBAKCdDbWRsZXQnLCAnRnVuY3Rpb24nKQ0KaWYgKCRQU1ZlcnNpb25UYWJsZS5QU0VkaXRpb24gLWVxICdEZXNrdG9wJyApIHsgJGNvbW1hbmRUeXBlcyArPSAnV29ya2Zsb3cnIH0NCiRjb21tYW5kcyA9IEdldC1Db21tYW5kIC1Nb2R1bGUgKEdldC1Nb2R1bGUgJE1vZHVsZU5hbWUpIC1Db21tYW5kVHlwZSAkY29tbWFuZFR5cGVzIHwgV2hlcmUtT2JqZWN0IE5hbWUgLUluICRpbmNsdWRlZE5hbWVzDQoNCiMjIFdoZW4gdGVzdGluZyBoZWxwLCByZW1lbWJlciB0aGF0IGhlbHAgaXMgY2FjaGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBzZXNzaW9uLg0KIyMgVG8gdGVzdCwgcmVzdGFydCBzZXNzaW9uLg0KDQoNCmZvcmVhY2ggKCRjb21tYW5kIGluICRjb21tYW5kcykgew0KICAgICRjb21tYW5kTmFtZSA9ICRjb21tYW5kLk5hbWUNCiAgICANCiAgICAjIFNraXAgYWxsIGZ1bmN0aW9ucyB0aGF0IGFyZSBvbiB0aGUgZXhjbHVzaW9ucyBsaXN0DQogICAgaWYgKCRnbG9iYWw6RnVuY3Rpb25IZWxwVGVzdEV4Y2VwdGlvbnMgLWNvbnRhaW5zICRjb21tYW5kTmFtZSkgeyBjb250aW51ZSB9DQogICAgDQogICAgIyBUaGUgbW9kdWxlLXF1YWxpZmllZCBjb21tYW5kIGZhaWxzIG9uIE1pY3Jvc29mdC5Qb3dlclNoZWxsLkFyY2hpdmUgY21kbGV0cw0KICAgICRIZWxwID0gR2V0LUhlbHAgJGNvbW1hbmROYW1lIC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlDQoJDQoJRGVzY3JpYmUgIlRlc3QgaGVscCBmb3IgJGNvbW1hbmROYW1lIiB7DQogICAgICAgIA0KCQkjIElmIGhlbHAgaXMgbm90IGZvdW5kLCBzeW5vcHNpcyBpbiBhdXRvLWdlbmVyYXRlZCBoZWxwIGlzIHRoZSBzeW50YXggZGlhZ3JhbQ0KCQlJdCAic2hvdWxkIG5vdCBiZSBhdXRvLWdlbmVyYXRlZCIgLVRlc3RDYXNlcyBAeyBIZWxwID0gJEhlbHAgfSB7DQoJCQkkSGVscC5TeW5vcHNpcyB8IFNob3VsZCAtTm90IC1CZUxpa2UgJypgW2A8Q29tbW9uUGFyYW1ldGVyc2A+YF0qJw0KCQl9DQogICAgICAgIA0KCQkjIFNob3VsZCBiZSBhIGRlc2NyaXB0aW9uIGZvciBldmVyeSBmdW5jdGlvbg0KCQlJdCAiZ2V0cyBkZXNjcmlwdGlvbiBmb3IgJGNvbW1hbmROYW1lIiAtVGVzdENhc2VzIEB7IEhlbHAgPSAkSGVscCB9IHsNCgkJCSRIZWxwLkRlc2NyaXB0aW9uIHwgU2hvdWxkIC1Ob3QgLUJlTnVsbE9yRW1wdHkNCgkJfQ0KICAgICAgICANCgkJIyBTaG91bGQgYmUgYXQgbGVhc3Qgb25lIGV4YW1wbGUNCgkJSXQgImdldHMgZXhhbXBsZSBjb2RlIGZyb20gJGNvbW1hbmROYW1lIiAtVGVzdENhc2VzIEB7IEhlbHAgPSAkSGVscCB9IHsNCgkJCSgkSGVscC5FeGFtcGxlcy5FeGFtcGxlIHwgU2VsZWN0LU9iamVjdCAtRmlyc3QgMSkuQ29kZSB8IFNob3VsZCAtTm90IC1CZU51bGxPckVtcHR5DQoJCX0NCgkNCgkJIyBTaG91bGQgYmUgYXQgbGVhc3Qgb25lIGV4YW1wbGUgZGVzY3JpcHRpb24NCgkJSXQgImdldHMgZXhhbXBsZSBoZWxwIGZyb20gJGNvbW1hbmROYW1lIiAtVGVzdENhc2VzIEB7IEhlbHAgPSAkSGVscCB9IHsNCgkJCSgkSGVscC5FeGFtcGxlcy5FeGFtcGxlLlJlbWFya3MgfCBTZWxlY3QtT2JqZWN0IC1GaXJzdCAxKS5UZXh0IHwgU2hvdWxkIC1Ob3QgLUJlTnVsbE9yRW1wdHkNCgkJfQ0KICAgICAgICANCiAgICAgICAgQ29udGV4dCAiVGVzdCBwYXJhbWV0ZXIgaGVscCBmb3IgJGNvbW1hbmROYW1lIiB7DQogICAgICAgICAgICANCiAgICAgICAgICAgICRjb21tb24gPSAnRGVidWcnLCAnRXJyb3JBY3Rpb24nLCAnRXJyb3JWYXJpYWJsZScsICdJbmZvcm1hdGlvbkFjdGlvbicsICdJbmZvcm1hdGlvblZhcmlhYmxlJywgJ091dEJ1ZmZlcicsICdPdXRWYXJpYWJsZScsICdQaXBlbGluZVZhcmlhYmxlJywgJ1ZlcmJvc2UnLCAnV2FybmluZ0FjdGlvbicsICdXYXJuaW5nVmFyaWFibGUnLCAnUHJvZ3Jlc3NBY3Rpb24nDQogICAgICAgICAgICANCiAgICAgICAgICAgICRwYXJhbWV0ZXJzID0gJGNvbW1hbmQuUGFyYW1ldGVyU2V0cy5QYXJhbWV0ZXJzIHwgU29ydC1PYmplY3QgLVByb3BlcnR5IE5hbWUgLVVuaXF1ZSB8IFdoZXJlLU9iamVjdCBOYW1lIC1ub3RpbiAkY29tbW9uDQogICAgICAgICAgICAkcGFyYW1ldGVyTmFtZXMgPSAkcGFyYW1ldGVycy5OYW1lDQogICAgICAgICAgICAkSGVscFBhcmFtZXRlck5hbWVzID0gJEhlbHAuUGFyYW1ldGVycy5QYXJhbWV0ZXIuTmFtZSB8IFNvcnQtT2JqZWN0IC1VbmlxdWUNCiAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJhbWV0ZXIgaW4gJHBhcmFtZXRlcnMpIHsNCiAgICAgICAgICAgICAgICAkcGFyYW1ldGVyTmFtZSA9ICRwYXJhbWV0ZXIuTmFtZQ0KICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJIZWxwID0gJEhlbHAucGFyYW1ldGVycy5wYXJhbWV0ZXIgfCBXaGVyZS1PYmplY3QgTmFtZSAtRVEgJHBhcmFtZXRlck5hbWUNCgkJCQ0KCQkJCSMgU2hvdWxkIGJlIGEgZGVzY3JpcHRpb24gZm9yIGV2ZXJ5IHBhcmFtZXRlcg0KCQkJCUl0ICJnZXRzIGhlbHAgZm9yIHBhcmFtZXRlcjogJHBhcmFtZXRlck5hbWUgOiBpbiAkY29tbWFuZE5hbWUiIC1UZXN0Q2FzZXMgQHsgcGFyYW1ldGVySGVscCA9ICRwYXJhbWV0ZXJIZWxwIH0gew0KCQkJCQkkcGFyYW1ldGVySGVscC5EZXNjcmlwdGlvbi5UZXh0IHwgU2hvdWxkIC1Ob3QgLUJlTnVsbE9yRW1wdHkNCgkJCQl9DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgJGNvZGVNYW5kYXRvcnkgPSAkcGFyYW1ldGVyLklzTWFuZGF0b3J5LnRvU3RyaW5nKCkNCgkJCQlJdCAiaGVscCBmb3IgJHBhcmFtZXRlck5hbWUgcGFyYW1ldGVyIGluICRjb21tYW5kTmFtZSBoYXMgY29ycmVjdCBNYW5kYXRvcnkgdmFsdWUiIC1UZXN0Q2FzZXMgQHsgcGFyYW1ldGVySGVscCA9ICRwYXJhbWV0ZXJIZWxwOyBjb2RlTWFuZGF0b3J5ID0gJGNvZGVNYW5kYXRvcnkgfSB7DQoJCQkJCSRwYXJhbWV0ZXJIZWxwLlJlcXVpcmVkIHwgU2hvdWxkIC1CZSAkY29kZU1hbmRhdG9yeQ0KCQkJCX0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBpZiAoJEhlbHBUZXN0U2tpcFBhcmFtZXRlclR5cGVbJGNvbW1hbmROYW1lXSAtY29udGFpbnMgJHBhcmFtZXRlck5hbWUpIHsgY29udGludWUgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICRjb2RlVHlwZSA9ICRwYXJhbWV0ZXIuUGFyYW1ldGVyVHlwZS5OYW1lDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYgKCRwYXJhbWV0ZXIuUGFyYW1ldGVyVHlwZS5Jc0VudW0pIHsNCiAgICAgICAgICAgICAgICAgICAgIyBFbnVtZXJhdGlvbnMgb2Z0ZW4gaGF2ZSBpc3N1ZXMgd2l0aCB0aGUgdHlwZW5hbWUgbm90IGJlaW5nIHJlbGlhYmx5IGF2YWlsYWJsZQ0KICAgICAgICAgICAgICAgICAgICAkbmFtZXMgPSAkcGFyYW1ldGVyLlBhcmFtZXRlclR5cGU6OkdldE5hbWVzKCRwYXJhbWV0ZXIuUGFyYW1ldGVyVHlwZSkNCgkJCQkJCSMgUGFyYW1ldGVyIHR5cGUgaW4gSGVscCBzaG91bGQgbWF0Y2ggY29kZQ0KCQkJCQlJdCAiaGVscCBmb3IgJGNvbW1hbmROYW1lIGhhcyBjb3JyZWN0IHBhcmFtZXRlciB0eXBlIGZvciAkcGFyYW1ldGVyTmFtZSIgLVRlc3RDYXNlcyBAeyBwYXJhbWV0ZXJIZWxwID0gJHBhcmFtZXRlckhlbHA7IG5hbWVzID0gJG5hbWVzIH0gew0KCQkJCQkJJHBhcmFtZXRlckhlbHAucGFyYW1ldGVyVmFsdWVHcm91cC5wYXJhbWV0ZXJWYWx1ZSB8IFNob3VsZCAtYmUgJG5hbWVzDQoJCQkJCX0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZWlmICgkcGFyYW1ldGVyLlBhcmFtZXRlclR5cGUuRnVsbE5hbWUgLWluICRIZWxwVGVzdEVudW1lcmF0ZWRBcnJheXMpIHsNCiAgICAgICAgICAgICAgICAgICAgIyBFbnVtZXJhdGlvbnMgb2Z0ZW4gaGF2ZSBpc3N1ZXMgd2l0aCB0aGUgdHlwZW5hbWUgbm90IGJlaW5nIHJlbGlhYmx5IGF2YWlsYWJsZQ0KICAgICAgICAgICAgICAgICAgICAkbmFtZXMgPSBbRW51bV06OkdldE5hbWVzKCRwYXJhbWV0ZXIuUGFyYW1ldGVyVHlwZS5EZWNsYXJlZE1lbWJlcnNbMF0uUmV0dXJuVHlwZSkNCgkJCQkJSXQgImhlbHAgZm9yICRjb21tYW5kTmFtZSBoYXMgY29ycmVjdCBwYXJhbWV0ZXIgdHlwZSBmb3IgJHBhcmFtZXRlck5hbWUiIC1UZXN0Q2FzZXMgQHsgcGFyYW1ldGVySGVscCA9ICRwYXJhbWV0ZXJIZWxwOyBuYW1lcyA9ICRuYW1lcyB9IHsNCgkJCQkJCSRwYXJhbWV0ZXJIZWxwLnBhcmFtZXRlclZhbHVlR3JvdXAucGFyYW1ldGVyVmFsdWUgfCBTaG91bGQgLWJlICRuYW1lcw0KCQkJCQl9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAjIFRvIGF2b2lkIGNhbGxpbmcgVHJpbSBtZXRob2Qgb24gYSBudWxsIG9iamVjdC4NCiAgICAgICAgICAgICAgICAgICAgJGhlbHBUeXBlID0gaWYgKCRwYXJhbWV0ZXJIZWxwLnBhcmFtZXRlclZhbHVlKSB7ICRwYXJhbWV0ZXJIZWxwLnBhcmFtZXRlclZhbHVlLlRyaW0oKSB9DQoJCQkJCSMgUGFyYW1ldGVyIHR5cGUgaW4gSGVscCBzaG91bGQgbWF0Y2ggY29kZQ0KCQkJCQlJdCAiaGVscCBmb3IgJGNvbW1hbmROYW1lIGhhcyBjb3JyZWN0IHBhcmFtZXRlciB0eXBlIGZvciAkcGFyYW1ldGVyTmFtZSIgLVRlc3RDYXNlcyBAeyBoZWxwVHlwZSA9ICRoZWxwVHlwZTsgY29kZVR5cGUgPSAkY29kZVR5cGUgfSB7DQoJCQkJCQkkaGVscFR5cGUgfCBTaG91bGQgLWJlICRjb2RlVHlwZQ0KCQkJCQl9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZm9yZWFjaCAoJGhlbHBQYXJtIGluICRIZWxwUGFyYW1ldGVyTmFtZXMpIHsNCgkJCQkjIFNob3VsZG4ndCBmaW5kIGV4dHJhIHBhcmFtZXRlcnMgaW4gaGVscC4NCgkJCQlJdCAiZmluZHMgaGVscCBwYXJhbWV0ZXIgaW4gY29kZTogJGhlbHBQYXJtIiAtVGVzdENhc2VzIEB7IGhlbHBQYXJtID0gJGhlbHBQYXJtOyBwYXJhbWV0ZXJOYW1lcyA9ICRwYXJhbWV0ZXJOYW1lcyB9IHsNCgkJCQkJJGhlbHBQYXJtIC1pbiAkcGFyYW1ldGVyTmFtZXMgfCBTaG91bGQgLUJlICR0cnVlDQoJCQkJfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQEJWgAAAAlbAAAABlwAAAAOSGVscC5UZXN0cy5wczEGXQAAABx0ZXN0c1xnZW5lcmFsXEhlbHAuVGVzdHMucHMxCQYAAAAJXwAAAAlgAAAAATYAAAANAAAABmEAAADUFURlc2NyaWJlICJWYWxpZGF0aW5nIHRoZSBtb2R1bGUgbWFuaWZlc3QiIHsNCgkkbW9kdWxlUm9vdCA9IChSZXNvbHZlLVBhdGggIiRnbG9iYWw6dGVzdHJvb3RcLi5cw75uYW1lw74iKS5QYXRoDQoJJG1hbmlmZXN0ID0gKChHZXQtQ29udGVudCAiJG1vZHVsZVJvb3Rcw75uYW1lw74ucHNkMSIpIC1qb2luICJgbiIpIHwgSW52b2tlLUV4cHJlc3Npb24NCglDb250ZXh0ICJCYXNpYyByZXNvdXJjZXMgdmFsaWRhdGlvbiIgew0KCQkkZmlsZXMgPSBHZXQtQ2hpbGRJdGVtICIkbW9kdWxlUm9vdFxmdW5jdGlvbnMiIC1SZWN1cnNlIC1GaWxlIHwgV2hlcmUtT2JqZWN0IE5hbWUgLWxpa2UgIioucHMxIg0KCQlJdCAiRXhwb3J0cyBhbGwgZnVuY3Rpb25zIGluIHRoZSBwdWJsaWMgZm9sZGVyIiAtVGVzdENhc2VzIEB7IGZpbGVzID0gJGZpbGVzOyBtYW5pZmVzdCA9ICRtYW5pZmVzdCB9IHsNCgkJCQ0KCQkJJGZ1bmN0aW9ucyA9IChDb21wYXJlLU9iamVjdCAtUmVmZXJlbmNlT2JqZWN0ICRmaWxlcy5CYXNlTmFtZSAtRGlmZmVyZW5jZU9iamVjdCAkbWFuaWZlc3QuRnVuY3Rpb25zVG9FeHBvcnQgfCBXaGVyZS1PYmplY3QgU2lkZUluZGljYXRvciAtTGlrZSAnPD0nKS5JbnB1dE9iamVjdA0KCQkJJGZ1bmN0aW9ucyB8IFNob3VsZCAtQmVOdWxsT3JFbXB0eQ0KCQl9DQoJCUl0ICJFeHBvcnRzIG5vIGZ1bmN0aW9uIHRoYXQgaXNuJ3QgYWxzbyBwcmVzZW50IGluIHRoZSBwdWJsaWMgZm9sZGVyIiAtVGVzdENhc2VzIEB7IGZpbGVzID0gJGZpbGVzOyBtYW5pZmVzdCA9ICRtYW5pZmVzdCB9IHsNCgkJCSRmdW5jdGlvbnMgPSAoQ29tcGFyZS1PYmplY3QgLVJlZmVyZW5jZU9iamVjdCAkZmlsZXMuQmFzZU5hbWUgLURpZmZlcmVuY2VPYmplY3QgJG1hbmlmZXN0LkZ1bmN0aW9uc1RvRXhwb3J0IHwgV2hlcmUtT2JqZWN0IFNpZGVJbmRpY2F0b3IgLUxpa2UgJz0+JykuSW5wdXRPYmplY3QNCgkJCSRmdW5jdGlvbnMgfCBTaG91bGQgLUJlTnVsbE9yRW1wdHkNCgkJfQ0KCQkNCgkJSXQgIkV4cG9ydHMgbm9uZSBvZiBpdHMgaW50ZXJuYWwgZnVuY3Rpb25zIiAtVGVzdENhc2VzIEB7IG1vZHVsZVJvb3QgPSAkbW9kdWxlUm9vdDsgbWFuaWZlc3QgPSAkbWFuaWZlc3QgfSB7DQoJCQkkZmlsZXMgPSBHZXQtQ2hpbGRJdGVtICIkbW9kdWxlUm9vdFxpbnRlcm5hbFxmdW5jdGlvbnMiIC1SZWN1cnNlIC1GaWxlIC1GaWx0ZXIgIioucHMxIg0KCQkJJGZpbGVzIHwgV2hlcmUtT2JqZWN0IEJhc2VOYW1lIC1JbiAkbWFuaWZlc3QuRnVuY3Rpb25zVG9FeHBvcnQgfCBTaG91bGQgLUJlTnVsbE9yRW1wdHkNCgkJfQ0KCX0NCgkNCglDb250ZXh0ICJJbmRpdmlkdWFsIGZpbGUgdmFsaWRhdGlvbiIgew0KCQlJdCAiVGhlIHJvb3QgbW9kdWxlIGZpbGUgZXhpc3RzIiAtVGVzdENhc2VzIEB7IG1vZHVsZVJvb3QgPSAkbW9kdWxlUm9vdDsgbWFuaWZlc3QgPSAkbWFuaWZlc3QgfSB7DQoJCQlUZXN0LVBhdGggIiRtb2R1bGVSb290XCQoJG1hbmlmZXN0LlJvb3RNb2R1bGUpIiB8IFNob3VsZCAtQmUgJHRydWUNCgkJfQ0KCQkNCgkJZm9yZWFjaCAoJGZvcm1hdCBpbiAkbWFuaWZlc3QuRm9ybWF0c1RvUHJvY2VzcykNCgkJew0KCQkJSXQgIlRoZSBmaWxlICRmb3JtYXQgc2hvdWxkIGV4aXN0IiAtVGVzdENhc2VzIEB7IG1vZHVsZVJvb3QgPSAkbW9kdWxlUm9vdDsgZm9ybWF0ID0gJGZvcm1hdCB9IHsNCgkJCQlUZXN0LVBhdGggIiRtb2R1bGVSb290XCRmb3JtYXQiIHwgU2hvdWxkIC1CZSAkdHJ1ZQ0KCQkJfQ0KCQl9DQoJCQ0KCQlmb3JlYWNoICgkdHlwZSBpbiAkbWFuaWZlc3QuVHlwZXNUb1Byb2Nlc3MpDQoJCXsNCgkJCUl0ICJUaGUgZmlsZSAkdHlwZSBzaG91bGQgZXhpc3QiIC1UZXN0Q2FzZXMgQHsgbW9kdWxlUm9vdCA9ICRtb2R1bGVSb290OyB0eXBlID0gJHR5cGUgfSB7DQoJCQkJVGVzdC1QYXRoICIkbW9kdWxlUm9vdFwkdHlwZSIgfCBTaG91bGQgLUJlICR0cnVlDQoJCQl9DQoJCX0NCgkJDQoJCWZvcmVhY2ggKCRhc3NlbWJseSBpbiAkbWFuaWZlc3QuUmVxdWlyZWRBc3NlbWJsaWVzKQ0KCQl7DQogICAgICAgICAgICBpZiAoJGFzc2VtYmx5IC1saWtlICIqLmRsbCIpIHsNCiAgICAgICAgICAgICAgICBJdCAiVGhlIGZpbGUgJGFzc2VtYmx5IHNob3VsZCBleGlzdCIgLVRlc3RDYXNlcyBAeyBtb2R1bGVSb290ID0gJG1vZHVsZVJvb3Q7IGFzc2VtYmx5ID0gJGFzc2VtYmx5IH0gew0KICAgICAgICAgICAgICAgICAgICBUZXN0LVBhdGggIiRtb2R1bGVSb290XCRhc3NlbWJseSIgfCBTaG91bGQgLUJlICR0cnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgSXQgIlRoZSBmaWxlICRhc3NlbWJseSBzaG91bGQgbG9hZCBmcm9tIHRoZSBHQUMiIC1UZXN0Q2FzZXMgQHsgbW9kdWxlUm9vdCA9ICRtb2R1bGVSb290OyBhc3NlbWJseSA9ICRhc3NlbWJseSB9IHsNCiAgICAgICAgICAgICAgICAgICAgeyBBZGQtVHlwZSAtQXNzZW1ibHlOYW1lICRhc3NlbWJseSB9IHwgU2hvdWxkIC1Ob3QgLVRocm93DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoJCQ0KCQlmb3JlYWNoICgkdGFnIGluICRtYW5pZmVzdC5Qcml2YXRlRGF0YS5QU0RhdGEuVGFncykNCgkJew0KCQkJSXQgIlRhZ3Mgc2hvdWxkIGhhdmUgbm8gc3BhY2VzIGluIG5hbWUiIC1UZXN0Q2FzZXMgQHsgdGFnID0gJHRhZyB9IHsNCgkJCQkkdGFnIC1tYXRjaCAiICIgfCBTaG91bGQgLUJlICRmYWxzZQ0KCQkJfQ0KCQl9DQoJfQ0KfQEJYgAAAAljAAAABmQAAAASTWFuaWZlc3QuVGVzdHMucHMxBmUAAAAgdGVzdHNcZ2VuZXJhbFxNYW5pZmVzdC5UZXN0cy5wczEJBgAAAAlnAAAACWgAAAABNwAAAA0AAAAGaQAAAOUMW0NtZGxldEJpbmRpbmcoKV0NClBhcmFtICgNCglbc3dpdGNoXQ0KCSRTa2lwVGVzdCwNCg0KCVtzdHJpbmdbXV0NCgkkQ29tbWFuZFBhdGggPSBAKCIkZ2xvYmFsOnRlc3Ryb290XC4uXMO+bmFtZcO+XGZ1bmN0aW9ucyIsICIkZ2xvYmFsOnRlc3Ryb290XC4uXMO+bmFtZcO+XGludGVybmFsXGZ1bmN0aW9ucyIpDQopDQoNCkJlZm9yZURpc2NvdmVyeSB7DQoJaWYgKCRTa2lwVGVzdCkgeyByZXR1cm4gfQ0KDQoJJGdsb2JhbDpfX3Blc3Rlcl9kYXRhLlNjcmlwdEFuYWx5emVyID0gTmV3LU9iamVjdCBTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0DQoNCgkjIENyZWF0ZSBhbiBhcnJheSBjb250YWluaW5nIHRoZSBwYXRoIGFuZCBiYXNlbmFtZSBvZiBhbGwgZmlsZXMgdG8gdGVzdA0KCSRjb21tYW5kRmlsZXMgPSAkQ29tbWFuZFBhdGggfCBGb3JFYWNoLU9iamVjdCB7DQoJCUdldC1DaGlsZEl0ZW0gLVBhdGggJF8gLVJlY3Vyc2UgfCBXaGVyZS1PYmplY3QgTmFtZSAtbGlrZSAiKi5wczEiDQoJfSB8IEZvckVhY2gtT2JqZWN0IHsNCgkJQHsNCgkJCUJhc2VOYW1lID0gJF8uQmFzZU5hbWUNCgkJCUZ1bGxOYW1lID0gJF8uRnVsbE5hbWUNCgkJfQ0KCX0NCg0KCSMgQ3JlYXRlIGFuIGFycmF5IGNvbnRhaW4gYWxsIHJ1bGVzDQoJJHNjcmlwdEFuYWx5emVyUnVsZXMgPSBHZXQtU2NyaXB0QW5hbHl6ZXJSdWxlIHwgRm9yRWFjaC1PYmplY3Qgew0KCQlAew0KCQkJUnVsZU5hbWUgPSAkXy5SdWxlTmFtZQ0KCQl9DQoJfQ0KfQ0KDQpEZXNjcmliZSAnSW52b2tpbmcgUFNTY3JpcHRBbmFseXplciBhZ2FpbnN0IGNvbW1hbmRiYXNlJyB7DQoNCglDb250ZXh0ICJBbmFseXppbmcgPEJhc2VOYW1lPiIgLUZvckVhY2ggJGNvbW1hbmRGaWxlcyB7DQoJCUJlZm9yZUFsbCB7DQoJCQkkYW5hbHlzaXMgPSBJbnZva2UtU2NyaXB0QW5hbHl6ZXIgLVBhdGggJEZ1bGxOYW1lIC1FeGNsdWRlUnVsZSBQU0F2b2lkVHJhaWxpbmdXaGl0ZXNwYWNlLCBQU1Nob3VsZFByb2Nlc3MNCgkJfQ0KDQoJCUl0ICJTaG91bGQgcGFzcyA8UnVsZU5hbWU+IiAtRm9yZWFjaCAkc2NyaXB0QW5hbHl6ZXJSdWxlcyB7DQoJCQkjIFRlc3QgaWYgdGhlIHJ1bGUgaXMgcHJlc2VudCBhbmQgaWYgc28gY3JlYXRlIGEgc3RyaW5nIGNvbnRhaW5pbmcgbW9yZSBpbmZvIHdoaWNoIHdpbGwgYmUgc2hvd24gaW4gdGhlIGRldGFpbHMgb2YgdGhlIHRlc3Qgb3V0cHV0LiBJZiBpdCdzIGVtcHR5IHRoZSB0ZXN0IGlzIHN1Y2Nlc2Z1bGwgYXMgdGhlcmUgaXMgbm8gcHJvYmxlbSB3aXRoIHRoaXMgcnVsZS4NCgkJCSRhbmFseXNpcyB8IFdoZXJlLU9iamVjdCBSdWxlTmFtZSAtRVEgJFJ1bGVOYW1lIHwgRm9yZWFjaC1PYmplY3Qgew0KCQkJCSMgQ3JlYXRlIGEgc3RyaW5nDQoJCQkJIiQoJF8uU2V2ZXJpdHkpIGF0IExpbmUgJCgkXy5MaW5lKSBDb2x1bW4gJCgkXy5Db2x1bW4pIHdpdGggJyQoJF8uRXh0ZW50KSciDQoJCQkJIyBBZGQgdGhlIGRhdGEgKGFuZCBzdXByZXNzIHRoZSBvdXRwdXQpIHRvIHRoZSBnbG9iYWwgdmFyaWFibGUgZm9yIGxhdGVyIHVzZQ0KCQkJCSRudWxsID0gJGdsb2JhbDpfX3Blc3Rlcl9kYXRhLlNjcmlwdEFuYWx5emVyLkFkZCgkXykNCgkJCX0gfCBTaG91bGQgLUJlTnVsbE9yRW1wdHkNCgkJfQ0KCX0NCn0BCWoAAAAJawAAAAZsAAAAGlBTU2NyaXB0QW5hbHl6ZXIuVGVzdHMucHMxBm0AAAAodGVzdHNcZ2VuZXJhbFxQU1NjcmlwdEFuYWx5emVyLlRlc3RzLnBzMQkGAAAACW8AAAAJcAAAAAE6AAAABwAAAAkKAAAAAAAAAAAAAAABOwAAAAcAAAAJCgAAAAAAAAAAAAAAAT8AAAAHAAAACQoAAAAAAAAAAAAAAAFAAAAABwAAAAkKAAAAAAAAAAAAAAABQgAAAAcAAAAJCgAAAAAAAAAAAAAAAUMAAAAHAAAACQoAAAAAAAAAAAAAAAFHAAAABwAAAAkKAAAAAAAAAAAAAAABSAAAAAcAAAAJCgAAAAAAAAAAAAAAAUoAAAAHAAAACQoAAAAAAAAAAAAAAAFLAAAABwAAAAkKAAAAAAAAAAAAAAABTwAAAAcAAAAJCgAAAAAAAAAAAAAAAVAAAAAHAAAACQoAAAAAAAAAAAAAAAFSAAAABwAAAAkKAAAAAAAAAAAAAAABUwAAAAcAAAAJCgAAAAAAAAAAAAAAAVcAAAAHAAAACQoAAAAAAAAAAAAAAAFYAAAABwAAAAkKAAAAAAAAAAAAAAABWgAAAAcAAAAJcgAAAAEAAAABAAAAAVsAAAAHAAAACQoAAAAAAAAAAAAAAAFfAAAABwAAAAkKAAAAAAAAAAAAAAABYAAAAAcAAAAJCgAAAAAAAAAAAAAAAWIAAAAHAAAACXQAAAABAAAAAQAAAAFjAAAABwAAAAkKAAAAAAAAAAAAAAABZwAAAAcAAAAJCgAAAAAAAAAAAAAAAWgAAAAHAAAACQoAAAAAAAAAAAAAAAFqAAAABwAAAAl2AAAAAQAAAAEAAAABawAAAAcAAAAJCgAAAAAAAAAAAAAAAW8AAAAHAAAACQoAAAAAAAAAAAAAAAFwAAAABwAAAAkKAAAAAAAAAAAAAAARcgAAAAQAAAAGeAAAAARuYW1lDQMRdAAAAAQAAAAGeQAAAARuYW1lDQMRdgAAAAQAAAAGegAAAARuYW1lDQML</BA> </MS> </Obj> <Obj RefId="21"> <TNRef RefId="7" /> <ToString>PSModuleDevelopment.Template.TemplateItemFolder</ToString> <Props> <Obj N="Children" RefId="22"> <TNRef RefId="6" /> <LST> <S>PSModuleDevelopment.Template.TemplateItemFolder</S> <S>PSModuleDevelopment.Template.TemplateItemFolder</S> <S>PSModuleDevelopment.Template.TemplateItemFile</S> <S>PSModuleDevelopment.Template.TemplateItemFile</S> <S>PSModuleDevelopment.Template.TemplateItemFile</S> </LST> </Obj> <S N="Name">þnameþ</S> <S N="RelativePath">þnameþ</S> <S N="Identifier">þ</S> <Obj N="FileSystemParameterFlat" RefId="23"> <TNRef RefId="2" /> <LST> <S>name</S> </LST> </Obj> <Obj N="FileSystemParameterScript" RefId="24"> <TNRef RefId="2" /> <LST /> </Obj> </Props> <MS> <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAL1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRm9sZGVyBgAAAAhDaGlsZHJlbgROYW1lDFJlbGF0aXZlUGF0aApJZGVudGlmaWVyF0ZpbGVTeXN0ZW1QYXJhbWV0ZXJGbGF0GUZpbGVTeXN0ZW1QYXJhbWV0ZXJTY3JpcHQDAQEBAwOeAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1CYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAAJAwAAAAYEAAAACMO+bmFtZcO+BgUAAAAIw75uYW1lw74GBgAAAALDvgkHAAAACQgAAAAEAwAAAJ4BU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UsIFBTTW9kdWxlRGV2ZWxvcG1lbnQsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgQAAC9QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2VbXQIAAAAICAkJAAAABQAAAAUAAAAEBwAAAH9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24GAAAICAkKAAAAAQAAAAEAAAABCAAAAAcAAAAJCwAAAAAAAAAAAAAABwkAAAAAAQAAAAgAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJDAAAAAkNAAAACQ4AAAAJDwAAAAkQAAAADQMRCgAAAAQAAAAGEQAAAARuYW1lDQMRCwAAAAAAAAABDAAAAAEAAAAJEgAAAAYTAAAACWZ1bmN0aW9ucwYUAAAAEsO+bmFtZcO+XGZ1bmN0aW9ucwkGAAAACRYAAAAJFwAAAAENAAAAAQAAAAkYAAAABhkAAAAIaW50ZXJuYWwGGgAAABHDvm5hbWXDvlxpbnRlcm5hbAkGAAAACRwAAAAJHQAAAAUOAAAALVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRmlsZQkAAAAFVmFsdWUJUGxhaW5UZXh0FENvbnRlbnRQYXJhbWV0ZXJGbGF0FkNvbnRlbnRQYXJhbWV0ZXJTY3JpcHQETmFtZQxSZWxhdGl2ZVBhdGgKSWRlbnRpZmllchdGaWxlU3lzdGVtUGFyYW1ldGVyRmxhdBlGaWxlU3lzdGVtUGFyYW1ldGVyU2NyaXB0AQADAwEBAQMDAX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAYeAAAAxghNSVQgTGljZW5zZQ0KDQpDb3B5cmlnaHQgKGMpIMO+IXllYXIhw74gw75hdXRob3LDvg0KDQpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbA0KY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KDQpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQoNClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwNCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFDQpTT0ZUV0FSRS4NCgEJHwAAAAkgAAAABiEAAAAHTElDRU5TRQYiAAAAEMO+bmFtZcO+XExJQ0VOU0UJBgAAAAkkAAAACSUAAAABDwAAAA4AAAAGJgAAAOIfQHsNCg0KIyBTY3JpcHQgbW9kdWxlIG9yIGJpbmFyeSBtb2R1bGUgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBtYW5pZmVzdC4NClJvb3RNb2R1bGUgPSAnw75uYW1lw74ucHNtMScNCg0KIyBWZXJzaW9uIG51bWJlciBvZiB0aGlzIG1vZHVsZS4NCk1vZHVsZVZlcnNpb24gPSAnMS4wLjAnDQoNCiMgU3VwcG9ydGVkIFBTRWRpdGlvbnMNCiMgQ29tcGF0aWJsZVBTRWRpdGlvbnMgPSBAKCkNCg0KIyBJRCB1c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgbW9kdWxlDQpHVUlEID0gJ8O+IWd1aWQhw74nDQoNCiMgQXV0aG9yIG9mIHRoaXMgbW9kdWxlDQpBdXRob3IgPSAnw75hdXRob3LDvicNCg0KIyBDb21wYW55IG9yIHZlbmRvciBvZiB0aGlzIG1vZHVsZQ0KQ29tcGFueU5hbWUgPSAnw75jb21wYW55w74nDQoNCiMgQ29weXJpZ2h0IHN0YXRlbWVudCBmb3IgdGhpcyBtb2R1bGUNCkNvcHlyaWdodCA9ICcoYykgw75hdXRob3LDvi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4nDQoNCiMgRGVzY3JpcHRpb24gb2YgdGhlIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUNCkRlc2NyaXB0aW9uID0gJ8O+ZGVzY3JpcHRpb27DvicNCg0KIyBNaW5pbXVtIHZlcnNpb24gb2YgdGhlIFBvd2VyU2hlbGwgZW5naW5lIHJlcXVpcmVkIGJ5IHRoaXMgbW9kdWxlDQojIFBvd2VyU2hlbGxWZXJzaW9uID0gJycNCg0KIyBOYW1lIG9mIHRoZSBQb3dlclNoZWxsIGhvc3QgcmVxdWlyZWQgYnkgdGhpcyBtb2R1bGUNCiMgUG93ZXJTaGVsbEhvc3ROYW1lID0gJycNCg0KIyBNaW5pbXVtIHZlcnNpb24gb2YgdGhlIFBvd2VyU2hlbGwgaG9zdCByZXF1aXJlZCBieSB0aGlzIG1vZHVsZQ0KIyBQb3dlclNoZWxsSG9zdFZlcnNpb24gPSAnJw0KDQojIE1pbmltdW0gdmVyc2lvbiBvZiBNaWNyb3NvZnQgLk5FVCBGcmFtZXdvcmsgcmVxdWlyZWQgYnkgdGhpcyBtb2R1bGUuIFRoaXMgcHJlcmVxdWlzaXRlIGlzIHZhbGlkIGZvciB0aGUgUG93ZXJTaGVsbCBEZXNrdG9wIGVkaXRpb24gb25seS4NCiMgRG90TmV0RnJhbWV3b3JrVmVyc2lvbiA9ICcnDQoNCiMgTWluaW11bSB2ZXJzaW9uIG9mIHRoZSBjb21tb24gbGFuZ3VhZ2UgcnVudGltZSAoQ0xSKSByZXF1aXJlZCBieSB0aGlzIG1vZHVsZS4gVGhpcyBwcmVyZXF1aXNpdGUgaXMgdmFsaWQgZm9yIHRoZSBQb3dlclNoZWxsIERlc2t0b3AgZWRpdGlvbiBvbmx5Lg0KIyBDbHJWZXJzaW9uID0gJycNCg0KIyBQcm9jZXNzb3IgYXJjaGl0ZWN0dXJlIChOb25lLCBYODYsIEFtZDY0KSByZXF1aXJlZCBieSB0aGlzIG1vZHVsZQ0KIyBQcm9jZXNzb3JBcmNoaXRlY3R1cmUgPSAnJw0KDQojIE1vZHVsZXMgdGhhdCBtdXN0IGJlIGltcG9ydGVkIGludG8gdGhlIGdsb2JhbCBlbnZpcm9ubWVudCBwcmlvciB0byBpbXBvcnRpbmcgdGhpcyBtb2R1bGUNCiMgUmVxdWlyZWRNb2R1bGVzID0gQCgpDQoNCiMgQXNzZW1ibGllcyB0aGF0IG11c3QgYmUgbG9hZGVkIHByaW9yIHRvIGltcG9ydGluZyB0aGlzIG1vZHVsZQ0KIyBSZXF1aXJlZEFzc2VtYmxpZXMgPSBAKCkNCg0KIyBTY3JpcHQgZmlsZXMgKC5wczEpIHRoYXQgYXJlIHJ1biBpbiB0aGUgY2FsbGVyJ3MgZW52aXJvbm1lbnQgcHJpb3IgdG8gaW1wb3J0aW5nIHRoaXMgbW9kdWxlLg0KIyBTY3JpcHRzVG9Qcm9jZXNzID0gQCgpDQoNCiMgVHlwZSBmaWxlcyAoLnBzMXhtbCkgdG8gYmUgbG9hZGVkIHdoZW4gaW1wb3J0aW5nIHRoaXMgbW9kdWxlDQojIFR5cGVzVG9Qcm9jZXNzID0gQCgpDQoNCiMgRm9ybWF0IGZpbGVzICgucHMxeG1sKSB0byBiZSBsb2FkZWQgd2hlbiBpbXBvcnRpbmcgdGhpcyBtb2R1bGUNCiMgRm9ybWF0c1RvUHJvY2VzcyA9IEAoKQ0KDQojIE1vZHVsZXMgdG8gaW1wb3J0IGFzIG5lc3RlZCBtb2R1bGVzIG9mIHRoZSBtb2R1bGUgc3BlY2lmaWVkIGluIFJvb3RNb2R1bGUvTW9kdWxlVG9Qcm9jZXNzDQojIE5lc3RlZE1vZHVsZXMgPSBAKCkNCg0KIyBGdW5jdGlvbnMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUsIGZvciBiZXN0IHBlcmZvcm1hbmNlLCBkbyBub3QgdXNlIHdpbGRjYXJkcyBhbmQgZG8gbm90IGRlbGV0ZSB0aGUgZW50cnksIHVzZSBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSBhcmUgbm8gZnVuY3Rpb25zIHRvIGV4cG9ydC4NCkZ1bmN0aW9uc1RvRXhwb3J0ID0gQCgNCg0KKQ0KDQojIENtZGxldHMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUsIGZvciBiZXN0IHBlcmZvcm1hbmNlLCBkbyBub3QgdXNlIHdpbGRjYXJkcyBhbmQgZG8gbm90IGRlbGV0ZSB0aGUgZW50cnksIHVzZSBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSBhcmUgbm8gY21kbGV0cyB0byBleHBvcnQuDQojIENtZGxldHNUb0V4cG9ydCA9ICcqJw0KDQojIFZhcmlhYmxlcyB0byBleHBvcnQgZnJvbSB0aGlzIG1vZHVsZQ0KIyBWYXJpYWJsZXNUb0V4cG9ydCA9ICcqJw0KDQojIEFsaWFzZXMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUsIGZvciBiZXN0IHBlcmZvcm1hbmNlLCBkbyBub3QgdXNlIHdpbGRjYXJkcyBhbmQgZG8gbm90IGRlbGV0ZSB0aGUgZW50cnksIHVzZSBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSBhcmUgbm8gYWxpYXNlcyB0byBleHBvcnQuDQojIEFsaWFzZXNUb0V4cG9ydCA9ICcqJw0KDQojIERTQyByZXNvdXJjZXMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUNCiMgRHNjUmVzb3VyY2VzVG9FeHBvcnQgPSBAKCkNCg0KIyBMaXN0IG9mIGFsbCBtb2R1bGVzIHBhY2thZ2VkIHdpdGggdGhpcyBtb2R1bGUNCiMgTW9kdWxlTGlzdCA9IEAoKQ0KDQojIExpc3Qgb2YgYWxsIGZpbGVzIHBhY2thZ2VkIHdpdGggdGhpcyBtb2R1bGUNCiMgRmlsZUxpc3QgPSBAKCkNCg0KIyBQcml2YXRlIGRhdGEgdG8gcGFzcyB0byB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiBSb290TW9kdWxlL01vZHVsZVRvUHJvY2Vzcy4gVGhpcyBtYXkgYWxzbyBjb250YWluIGEgUFNEYXRhIGhhc2h0YWJsZSB3aXRoIGFkZGl0aW9uYWwgbW9kdWxlIG1ldGFkYXRhIHVzZWQgYnkgUG93ZXJTaGVsbC4NClByaXZhdGVEYXRhID0gQHsNCg0KICAgIFBTRGF0YSA9IEB7DQoNCiAgICAgICAgIyBUYWdzIGFwcGxpZWQgdG8gdGhpcyBtb2R1bGUuIFRoZXNlIGhlbHAgd2l0aCBtb2R1bGUgZGlzY292ZXJ5IGluIG9ubGluZSBnYWxsZXJpZXMuDQogICAgICAgICMgVGFncyA9IEAoKQ0KDQogICAgICAgICMgQSBVUkwgdG8gdGhlIGxpY2Vuc2UgZm9yIHRoaXMgbW9kdWxlLg0KICAgICAgICAjIExpY2Vuc2VVcmkgPSAnJw0KDQogICAgICAgICMgQSBVUkwgdG8gdGhlIG1haW4gd2Vic2l0ZSBmb3IgdGhpcyBwcm9qZWN0Lg0KICAgICAgICAjIFByb2plY3RVcmkgPSAnJw0KDQogICAgICAgICMgQSBVUkwgdG8gYW4gaWNvbiByZXByZXNlbnRpbmcgdGhpcyBtb2R1bGUuDQogICAgICAgICMgSWNvblVyaSA9ICcnDQoNCiAgICAgICAgIyBSZWxlYXNlTm90ZXMgb2YgdGhpcyBtb2R1bGUNCiAgICAgICAgIyBSZWxlYXNlTm90ZXMgPSAnJw0KDQogICAgICAgICMgUHJlcmVsZWFzZSBzdHJpbmcgb2YgdGhpcyBtb2R1bGUNCiAgICAgICAgIyBQcmVyZWxlYXNlID0gJycNCg0KICAgICAgICAjIEZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgbW9kdWxlIHJlcXVpcmVzIGV4cGxpY2l0IHVzZXIgYWNjZXB0YW5jZSBmb3IgaW5zdGFsbC91cGRhdGUvc2F2ZQ0KICAgICAgICAjIFJlcXVpcmVMaWNlbnNlQWNjZXB0YW5jZSA9ICRmYWxzZQ0KDQogICAgICAgICMgRXh0ZXJuYWwgZGVwZW5kZW50IG1vZHVsZXMgb2YgdGhpcyBtb2R1bGUNCiAgICAgICAgIyBFeHRlcm5hbE1vZHVsZURlcGVuZGVuY2llcyA9IEAoKQ0KDQogICAgfSAjIEVuZCBvZiBQU0RhdGEgaGFzaHRhYmxlDQoNCn0gIyBFbmQgb2YgUHJpdmF0ZURhdGEgaGFzaHRhYmxlDQoNCiMgSGVs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</BA> </MS> </Obj> <Obj RefId="25"> <TN RefId="8"> <T>PSModuleDevelopment.Template.TemplateItemFile</T> <T>PSModuleDevelopment.Template.TemplateItemBase</T> <T>System.Object</T> </TN> <ToString>PSModuleDevelopment.Template.TemplateItemFile</ToString> <Props> <S N="Value">publish_x000D__x000A_TestResults_x000D__x000A_</S> <B N="PlainText">true</B> <Obj N="ContentParameterFlat" RefId="26"> <TNRef RefId="2" /> <LST /> </Obj> <Obj N="ContentParameterScript" RefId="27"> <TNRef RefId="2" /> <LST /> </Obj> <S N="Name">.gitignore</S> <S N="RelativePath">.gitignore</S> <S N="Identifier">þ</S> <Obj N="FileSystemParameterFlat" RefId="28"> <TNRef RefId="2" /> <LST /> </Obj> <Obj N="FileSystemParameterScript" RefId="29"> <TNRef RefId="2" /> <LST /> </Obj> </Props> <MS> <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAALVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRmlsZQkAAAAFVmFsdWUJUGxhaW5UZXh0FENvbnRlbnRQYXJhbWV0ZXJGbGF0FkNvbnRlbnRQYXJhbWV0ZXJTY3JpcHQETmFtZQxSZWxhdGl2ZVBhdGgKSWRlbnRpZmllchdGaWxlU3lzdGVtUGFyYW1ldGVyRmxhdBlGaWxlU3lzdGVtUGFyYW1ldGVyU2NyaXB0AQADAwEBAQMDAX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAYDAAAAFnB1Ymxpc2gNClRlc3RSZXN1bHRzDQoBCQQAAAAJBQAAAAYGAAAACi5naXRpZ25vcmUGBwAAAAouZ2l0aWdub3JlBggAAAACw74JCQAAAAkKAAAABAQAAAB/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uBgAACAgJCwAAAAAAAAAAAAAAAQUAAAAEAAAACQsAAAAAAAAAAAAAAAEJAAAABAAAAAkLAAAAAAAAAAAAAAABCgAAAAQAAAAJCwAAAAAAAAAAAAAAEQsAAAAAAAAACw==</BA> </MS> </Obj> <Obj RefId="30"> <TNRef RefId="8" /> <ToString>PSModuleDevelopment.Template.TemplateItemFile</ToString> <Props> <S N="Value">MIT License_x000D__x000A__x000D__x000A_Copyright (c) þ!year!þ þauthorþ_x000D__x000A__x000D__x000A_Permission is hereby granted, free of charge, to any person obtaining a copy_x000D__x000A_of this software and associated documentation files (the "Software"), to deal_x000D__x000A_in the Software without restriction, including without limitation the rights_x000D__x000A_to use, copy, modify, merge, publish, distribute, sublicense, and/or sell_x000D__x000A_copies of the Software, and to permit persons to whom the Software is_x000D__x000A_furnished to do so, subject to the following conditions:_x000D__x000A__x000D__x000A_The above copyright notice and this permission notice shall be included in all_x000D__x000A_copies or substantial portions of the Software._x000D__x000A__x000D__x000A_THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR_x000D__x000A_IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,_x000D__x000A_FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE_x000D__x000A_AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER_x000D__x000A_LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,_x000D__x000A_OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE_x000D__x000A_SOFTWARE._x000D__x000A_</S> <B N="PlainText">true</B> <Obj N="ContentParameterFlat" RefId="31"> <TNRef RefId="2" /> <LST> <S>author</S> </LST> </Obj> <Obj N="ContentParameterScript" RefId="32"> <TNRef RefId="2" /> <LST> <S>year</S> </LST> </Obj> <S N="Name">LICENSE</S> <S N="RelativePath">LICENSE</S> <S N="Identifier">þ</S> <Obj N="FileSystemParameterFlat" RefId="33"> <TNRef RefId="2" /> <LST /> </Obj> <Obj N="FileSystemParameterScript" RefId="34"> <TNRef RefId="2" /> <LST /> </Obj> </Props> <MS> <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAALVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRmlsZQkAAAAFVmFsdWUJUGxhaW5UZXh0FENvbnRlbnRQYXJhbWV0ZXJGbGF0FkNvbnRlbnRQYXJhbWV0ZXJTY3JpcHQETmFtZQxSZWxhdGl2ZVBhdGgKSWRlbnRpZmllchdGaWxlU3lzdGVtUGFyYW1ldGVyRmxhdBlGaWxlU3lzdGVtUGFyYW1ldGVyU2NyaXB0AQADAwEBAQMDAX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAYDAAAAxghNSVQgTGljZW5zZQ0KDQpDb3B5cmlnaHQgKGMpIMO+IXllYXIhw74gw75hdXRob3LDvg0KDQpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbA0KY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KDQpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQoNClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwNCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFDQpTT0ZUV0FSRS4NCgEJBAAAAAkFAAAABgYAAAAHTElDRU5TRQYHAAAAB0xJQ0VOU0UGCAAAAALDvgkJAAAACQoAAAAEBAAAAH9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24GAAAICAkLAAAAAQAAAAEAAAABBQAAAAQAAAAJDAAAAAEAAAABAAAAAQkAAAAEAAAACQ0AAAAAAAAAAAAAAAEKAAAABAAAAAkNAAAAAAAAAAAAAAARCwAAAAQAAAAGDgAAAAZhdXRob3INAxEMAAAABAAAAAYPAAAABHllYXINAxENAAAAAAAAAAs=</BA> </MS> </Obj> <Obj RefId="35"> <TNRef RefId="8" /> <ToString>PSModuleDevelopment.Template.TemplateItemFile</ToString> <Props> <S N="Value"># þnameþ_x000D__x000A__x000D__x000A_ADD DESCRIPTION HERE_x000D__x000A_</S> <B N="PlainText">true</B> <Obj N="ContentParameterFlat" RefId="36"> <TNRef RefId="2" /> <LST> <S>name</S> </LST> </Obj> <Obj N="ContentParameterScript" RefId="37"> <TNRef RefId="2" /> <LST /> </Obj> <S N="Name">readme.md</S> <S N="RelativePath">readme.md</S> <S N="Identifier">þ</S> <Obj N="FileSystemParameterFlat" RefId="38"> <TNRef RefId="2" /> <LST /> </Obj> <Obj N="FileSystemParameterScript" RefId="39"> <TNRef RefId="2" /> <LST /> </Obj> </Props> <MS> <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAALVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRmlsZQkAAAAFVmFsdWUJUGxhaW5UZXh0FENvbnRlbnRQYXJhbWV0ZXJGbGF0FkNvbnRlbnRQYXJhbWV0ZXJTY3JpcHQETmFtZQxSZWxhdGl2ZVBhdGgKSWRlbnRpZmllchdGaWxlU3lzdGVtUGFyYW1ldGVyRmxhdBlGaWxlU3lzdGVtUGFyYW1ldGVyU2NyaXB0AQADAwEBAQMDAX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAgAAAAYDAAAAJCMgw75uYW1lw74NCg0KQUREIERFU0NSSVBUSU9OIEhFUkUNCgEJBAAAAAkFAAAABgYAAAAJcmVhZG1lLm1kBgcAAAAJcmVhZG1lLm1kBggAAAACw74JCQAAAAkKAAAABAQAAAB/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uBgAACAgJCwAAAAEAAAABAAAAAQUAAAAEAAAACQwAAAAAAAAAAAAAAAEJAAAABAAAAAkMAAAAAAAAAAAAAAABCgAAAAQAAAAJDAAAAAAAAAAAAAAAEQsAAAAEAAAABg0AAAAEbmFtZQ0DEQwAAAAAAAAACw==</BA> </MS> </Obj> </LST> </Obj> <I32 N="Generation">1</I32> </Props> <MS> <BA N="SerializationData">AAEAAAD/////AQAAAAAAAAAMAgAAAEpQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGUMAAAABE5hbWUEVHlwZQdWZXJzaW9uC0Rlc2NyaXB0aW9uBkF1dGhvcglDcmVhdGVkT24EVGFncwpQYXJhbWV0ZXJzB1NjcmlwdHMLUGFyYW1ldGVyczIIQ2hpbGRyZW4KR2VuZXJhdGlvbgEEAwEBAAMDAwMDAClQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlVHlwZQIAAAAOU3lzdGVtLlZlcnNpb24Nf1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXYACU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeWAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlBhcmFtZXRlclNjcmlwdCwgUFNNb2R1bGVEZXZlbG9wbWVudCwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXYgCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeWAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlBhcmFtZXRlci5QYXJhbWV0ZXJCYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dngFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZSwgUFNNb2R1bGVEZXZlbG9wbWVudCwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXQgCAAAABgMAAAAKTWluaU1vZHVsZQX8////KVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVUeXBlAQAAAAd2YWx1ZV9fAAgCAAAAAQAAAAkFAAAABgYAAABATW9kdWxlIHNjYWZmb2xkIHdpdGggZnVsbCBDSS9DRCBzdXBwb3J0IGFuZCBtaW5pbWFsIGRlcGVuZGVuY2llcwYHAAAAEkZyaWVkcmljaCBXZWlubWFubgCANPKWgtyICQgAAAAJCQAAAAkKAAAACQsAAAAJDAAAAAEAAAAEBQAAAA5TeXN0ZW0uVmVyc2lvbgQAAAAGX01ham9yBl9NaW5vcgZfQnVpbGQJX1JldmlzaW9uAAAAAAgICAgBAAAAAAAAAAAAAAAAAAAABAgAAAB/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uBgAACAgJDQAAAAEAAAAAAAAAAQkAAAAIAAAACQ4AAAAEAAAABAAAAAQKAAAAgAJTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5EaWN0aW9uYXJ5YDJbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuUGFyYW1ldGVyU2NyaXB0LCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dBAAAAAdWZXJzaW9uCENvbXBhcmVyCEhhc2hTaXplDUtleVZhbHVlUGFpcnMAAwADCBZTeXN0ZW0uT3JkaW5hbENvbXBhcmVyCIQCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuUGFyYW1ldGVyU2NyaXB0LCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dW10CAAAACQ8AAAADAAAACRAAAAAECwAAAIgCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeWAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlBhcmFtZXRlci5QYXJhbWV0ZXJCYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAdWZXJzaW9uCENvbXBhcmVyCEhhc2hTaXplAAMACBZTeXN0ZW0uT3JkaW5hbENvbXBhcmVyCAAAAAAJDwAAAAAAAAAEDAAAAJ4BU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UsIFBTTW9kdWxlRGV2ZWxvcG1lbnQsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0DAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgQAAC9QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2VbXQIAAAAICAkSAAAABwAAAAcAAAARDQAAAAEAAAAGEwAAAAZtb2R1bGURDgAAAAQAAAAGFAAAAARuYW1lBhUAAAAGYXV0aG9yBhYAAAAHY29tcGFueQYXAAAAC2Rlc2NyaXB0aW9uBA8AAAAWU3lzdGVtLk9yZGluYWxDb21wYXJlcgEAAAALX2lnbm9yZUNhc2UAAQEHEAAAAAABAAAAAgAAAAOCAlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlBhcmFtZXRlclNjcmlwdCwgUFNNb2R1bGVEZXZlbG9wbWVudCwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXQTo////ggJTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5QYXJhbWV0ZXJTY3JpcHQsIFBTTW9kdWxlRGV2ZWxvcG1lbnQsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0CAAAAA2tleQV2YWx1ZQEELFBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuUGFyYW1ldGVyU2NyaXB0AgAAAAYZAAAABGd1aWQJGgAAAAHl////6P///wYcAAAABHllYXIJHQAAAAcSAAAAAAEAAAAIAAAABC1QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UCAAAACR4AAAAJHwAAAAkgAAAACSEAAAAJIgAAAAkjAAAACSQAAAAKDCUAAABfU3lzdGVtLk1hbmFnZW1lbnQuQXV0b21hdGlvbiwgVmVyc2lvbj0zLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTMxYmYzODU2YWQzNjRlMzUFGgAAACxQU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlBhcmFtZXRlclNjcmlwdAIAAAAETmFtZQtTY3JpcHRCbG9jawEEO1N5c3RlbS5NYW5hZ2VtZW50LkF1dG9tYXRpb24uU2NyaXB0QmxvY2tTZXJpYWxpemF0aW9uSGVscGVyJQAAAAIAAAAJGQAAAAknAAAAAR0AAAAaAAAACRwAAAAJKQAAAAUeAAAAL1BTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtRm9sZGVyBgAAAAhDaGlsZHJlbgROYW1lDFJlbGF0aXZlUGF0aApJZGVudGlmaWVyF0ZpbGVTeXN0ZW1QYXJhbWV0ZXJGbGF0GUZpbGVTeXN0ZW1QYXJhbWV0ZXJTY3JpcHQDAQEBAwOeAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1CYXNlLCBQU01vZHVsZURldmVsb3BtZW50LCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAAJKgAAAAYrAAAABy5naXRodWIGLAAAAAcuZ2l0aHViBi0AAAACw74JLgAAAAkvAAAAAR8AAAAeAAAACTAAAAAGMQAAAAVidWlsZAYyAAAABWJ1aWxkCS0AAAAJNAAAAAk1AAAAASAAAAAeAAAACTYAAAAGNwAAAAV0ZXN0cwY4AAAABXRlc3RzCS0AAAAJOgAAAAk7AAAAASEAAAAeAAAACTwAAAAGPQAAAAjDvm5hbWXDvgY+AAAACMO+bmFtZcO+CS0AAAAJQAAAAAlBAAAABSIAAAAtUFNNb2R1bGVEZXZlbG9wbWVudC5UZW1wbGF0ZS5UZW1wbGF0ZUl0ZW1GaWxlCQAAAAVWYWx1ZQlQbGFpblRleHQUQ29udGVudFBhcmFtZXRlckZsYXQWQ29udGVudFBhcmFtZXRlclNjcmlwdAROYW1lDFJlbGF0aXZlUGF0aApJZGVudGlmaWVyF0ZpbGVTeXN0ZW1QYXJhbWV0ZXJGbGF0GUZpbGVTeXN0ZW1QYXJhbWV0ZXJTY3JpcHQBAAMDAQEBAwMBf1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1/U3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXX9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1df1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0CAAAABkIAAAAWcHVibGlzaA0KVGVzdFJlc3VsdHMNCgEJQwAAAAlEAAAABkUAAAAKLmdpdGlnbm9yZQZGAAAACi5naXRpZ25vcmUJLQAAAAlIAAAACUkAAAABIwAAACIAAAAGSgAAAMYITUlUIExpY2Vuc2UNCg0KQ29weXJpZ2h0IChjKSDDviF5ZWFyIcO+IMO+YXV0aG9yw74NCg0KUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQ0Kb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwNCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwNCmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCg0KVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQpjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KDQpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQpGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQpPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQ0KU09GVFdBUkUuDQoBCUsAAAAJTAAAAAZNAAAAB0xJQ0VOU0UGTgAAAAdMSUNFTlNFCS0AAAAJUAAAAAlRAAAAASQAAAAiAAAABlIAAAAkIyDDvm5hbWXDvg0KDQpBREQgREVTQ1JJUFRJT04gSEVSRQ0KAQlTAAAACVQAAAAGVQAAAAlyZWFkbWUubWQGVgAAAAlyZWFkbWUubWQJLQAAAAlYAAAACVkAAAAFJwAAADtTeXN0ZW0uTWFuYWdlbWVudC5BdXRvbWF0aW9uLlNjcmlwdEJsb2NrU2VyaWFsaXphdGlvbkhlbHBlcgEAAAAKU2NyaXB0VGV4dAElAAAABloAAAAsDQoJCQlbU3lzdGVtLkd1aWRdOjpOZXdHdWlkKCkuVG9TdHJpbmcoKQ0KCQkBKQAAACcAAAAGWwAAACANCgkJCUdldC1EYXRlIC1Gb3JtYXQgInl5eXkiDQoJCQEqAAAADAAAAAlcAAAAAgAAAAIAAAABLgAAAAgAAAAJXQAAAAAAAAAAAAAAAS8AAAAIAAAACV0AAAAAAAAAAAAAAAEwAAAADAAAAAleAAAAAwAAAAMAAAABNAAAAAgAAAAJXQAAAAAAAAAAAAAAATUAAAAIAAAACV0AAAAAAAAAAAAAAAE2AAAADAAAAAlgAAAABAAAAAQAAAABOgAAAAgAAAAJXQAAAAAAAAAAAAAAATsAAAAIAAAACV0AAAAAAAAAAAAAAAE8AAAADAAAAAliAAAABQAAAAUAAAABQAAAAAgAAAAJYwAAAAEAAAABAAAAAUEAAAAIAAAACV0AAAAAAAAAAAAAAAFDAAAACAAAAAldAAAAAAAAAAAAAAABRAAAAAgAAAAJXQAAAAAAAAAAAAAAAUgAAAAIAAAACV0AAAAAAAAAAAAAAAFJAAAACAAAAAldAAAAAAAAAAAAAAABSwAAAAgAAAAJZQAAAAEAAAABAAAAAUwAAAAIAAAACWYAAAABAAAAAQAAAAFQAAAACAAAAAldAAAAAAAAAAAAAAABUQAAAAgAAAAJXQAAAAAAAAAAAAAAAVMAAAAIAAAACWgAAAABAAAAAQAAAAFUAAAACAAAAAldAAAAAAAAAAAAAAABWAAAAAgAAAAJXQAAAAAAAAAAAAAAAVkAAAAIAAAACV0AAAAAAAAAAAAAAAdcAAAAAAEAAAAEAAAABC1QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UCAAAACWoAAAAJawAAAA0CEV0AAAAAAAAAB14AAAAAAQAAAAQAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJbAAAAAltAAAACW4AAAAKB2AAAAAAAQAAAAQAAAAELVBTTW9kdWxlRGV2ZWxvcG1lbnQuVGVtcGxhdGUuVGVtcGxhdGVJdGVtQmFzZQIAAAAJbwAAAAlwAAAACXEAAAAJcgAAAAdiAAAAAAEAAAAIAAAABC1QU01vZHVsZURldmVsb3BtZW50LlRlbXBsYXRlLlRlbXBsYXRlSXRlbUJhc2UCAAAACXMAAAAJdAAAAAl1AAAACXYAAAAJdwAAAA0DEWMAAAAEAAAABngAAAAEbmFtZQ0DEWUAAAAEAAAABnkAAAAGYXV0aG9yDQMRZgAAAAQAAAAGegAAAAR5ZWFyDQMRaAAAAAQAAAAGewAAAARuYW1lDQMBagAAAB4AAAAJfAAAAAZ9AAAACXdvcmtmbG93cwZ+AAAAES5naXRodWJcd29ya2Zsb3dzCS0AAAAJgAAAAAmBAAAAAWsAAAAiAAAABoIAAADTBSMgVGhlc2UgYXJlIHN1cHBvcnRlZCBmdW5kaW5nIG1vZGVsIHBsYXRmb3Jtcw0KDQpnaXRodWI6ICMgUmVwbGFjZSB3aXRoIHVwIHRvIDQgR2l0SHViIFNwb25zb3JzLWVuYWJsZWQgdXNlcm5hbWVzIGUuZy4sIFt1c2VyMSwgdXNlcjJdDQpwYXRyZW9uOiAjIFJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBQYXRyZW9uIHVzZXJuYW1lDQpvcGVuX2NvbGxlY3RpdmU6ICMgUmVwbGFjZSB3aXRoIGEgc2luZ2xlIE9wZW4gQ29sbGVjdGl2ZSB1c2VybmFtZQ0Ka29fZmk6ICMgUmVwbGFjZSB3aXRoIGEgc2luZ2xlIEtvLWZpIHVzZXJuYW1lDQp0aWRlbGlmdDogIyBSZXBsYWNlIHdpdGggYSBzaW5nbGUgVGlkZWxpZnQgcGxhdGZvcm0tbmFtZS9wYWNrYWdlLW5hbWUgZS5nLiwgbnBtL2JhYmVsDQpjb21tdW5pdHlfYnJpZGdlOiAjIFJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBDb21tdW5pdHkgQnJpZGdlIHByb2plY3QtbmFtZSBlLmcuLCBjbG91ZC1mb3VuZHJ5DQpsaWJlcmFwYXk6ICMgUmVwbGFjZSB3aXRoIGEgc2luZ2xlIExpYmVyYXBheSB1c2VybmFtZQ0KaXNzdWVodW50OiAjIFJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBJc3N1ZUh1bnQgdXNlcm5hbWUNCm90ZWNoaWU6ICMgUmVwbGFjZSB3aXRoIGEgc2luZ2xlIE90ZWNoaWUgdXNlcm5hbWUNCmN1c3RvbTogIyBSZXBsYWNlIHdpdGggdXAgdG8gNCBjdXN0b20gc3BvbnNvcnNoaXAgVVJMcyBlLmcuLCBbJ2xpbmsxJywgJ2xpbmsyJ10NCgEJgwAAAAmEAAAABoUAAAALRlVORElORy55bWwGhgAAABMuZ2l0aHViXEZVTkRJTkcueW1sCS0AAAAJiAAAAAmJAAAAAWwAAAAiAAAABooAAACvGzwjDQpUaGlzIHNjcmlwdCBwdWJsaXNoZXMgdGhlIG1vZHVsZSB0byB0aGUgZ2FsbGVyeS4NCkl0IGV4cGVjdHMgYXMgaW5wdXQgYW4gQXBpS2V5IGF1dGhvcml6ZWQgdG8gcHVibGlzaCB0aGUgbW9kdWxlLg0KDQpJbnNlcnQgYW55IGJ1aWxkIHN0ZXBzIHlvdSBtYXkgbmVlZCB0byB0YWtlIGJlZm9yZSBwdWJsaXNoaW5nIGl0IGhlcmUuDQojPg0KcGFyYW0gKA0KCSRBcGlLZXksDQoJDQoJJFdvcmtpbmdEaXJlY3RvcnksDQoJDQoJJFJlcG9zaXRvcnkgPSAnUFNHYWxsZXJ5JywNCgkNCglbc3dpdGNoXQ0KCSRMb2NhbFJlcG8sDQoJDQoJW3N3aXRjaF0NCgkkU2tpcFB1Ymxpc2gsDQoJDQoJW3N3aXRjaF0NCgkkQXV0b1ZlcnNpb24NCikNCg0KI3JlZ2lvbiBIYW5kbGUgV29ya2luZyBEaXJlY3RvcnkgRGVmYXVsdHMNCmlmICgtbm90ICRXb3JraW5nRGlyZWN0b3J5KQ0Kew0KCWlmICgkZW52OlJFTEVBU0VfUFJJTUFSWUFSVElGQUNUU09VUkNFQUxJQVMpDQoJew0KCQkkV29ya2luZ0RpcmVjdG9yeSA9IEpvaW4tUGF0aCAtUGF0aCAkZW52OlNZU1RFTV9ERUZBVUxUV09SS0lOR0RJUkVDVE9SWSAtQ2hpbGRQYXRoICRlbnY6UkVMRUFTRV9QUklNQVJZQVJUSUZBQ1RTT1VSQ0VBTElBUw0KCX0NCgllbHNlIHsgJFdvcmtpbmdEaXJlY3RvcnkgPSAkZW52OlNZU1RFTV9ERUZBVUxUV09SS0lOR0RJUkVDVE9SWSB9DQp9DQppZiAoLW5vdCAkV29ya2luZ0RpcmVjdG9yeSkgeyAkV29ya2luZ0RpcmVjdG9yeSA9IFNwbGl0LVBhdGggJFBTU2NyaXB0Um9vdCB9DQojZW5kcmVnaW9uIEhhbmRsZSBXb3JraW5nIERpcmVjdG9yeSBEZWZhdWx0cw0KDQojIFByZXBhcmUgcHVibGlzaCBmb2xkZXINCldyaXRlLUhvc3QgIkNyZWF0aW5nIGFuZCBwb3B1bGF0aW5nIHB1Ymxpc2hpbmcgZGlyZWN0b3J5Ig0KJHB1Ymxpc2hEaXIgPSBOZXctSXRlbSAtUGF0aCAkV29ya2luZ0RpcmVjdG9yeSAtTmFtZSBwdWJsaXNoIC1JdGVtVHlwZSBEaXJlY3RvcnkgLUZvcmNlDQpDb3B5LUl0ZW0gLVBhdGggIiQoJFdvcmtpbmdEaXJlY3RvcnkpXMO+bmFtZcO+IiAtRGVzdGluYXRpb24gJHB1Ymxpc2hEaXIuRnVsbE5hbWUgLVJlY3Vyc2UgLUZvcmNlDQoNCiNyZWdpb24gR2F0aGVyIHRleHQgZGF0YSB0byBjb21waWxlDQokdGV4dCA9IEAoKQ0KDQojIEdhdGhlciBjb21tYW5kcw0KR2V0LUNoaWxkSXRlbSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw75caW50ZXJuYWxcZnVuY3Rpb25zXCIgLVJlY3Vyc2UgLUZpbGUgLUZpbHRlciAiKi5wczEiIHwgRm9yRWFjaC1PYmplY3Qgew0KCSR0ZXh0ICs9IFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCRfLkZ1bGxOYW1lKQ0KfQ0KR2V0LUNoaWxkSXRlbSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw75cZnVuY3Rpb25zXCIgLVJlY3Vyc2UgLUZpbGUgLUZpbHRlciAiKi5wczEiIHwgRm9yRWFjaC1PYmplY3Qgew0KCSR0ZXh0ICs9IFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCRfLkZ1bGxOYW1lKQ0KfQ0KDQojIEdhdGhlciBzY3JpcHRzDQpHZXQtQ2hpbGRJdGVtIC1QYXRoICIkKCRwdWJsaXNoRGlyLkZ1bGxOYW1lKVzDvm5hbWXDvlxpbnRlcm5hbFxzY3JpcHRzXCIgLVJlY3Vyc2UgLUZpbGUgLUZpbHRlciAiKi5wczEiIHwgRm9yRWFjaC1PYmplY3Qgew0KCSR0ZXh0ICs9IFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCRfLkZ1bGxOYW1lKQ0KfQ0KDQojcmVnaW9uIFVwZGF0ZSB0aGUgcHNtMSBmaWxlICYgQ2xlYW51cA0KW1N5c3RlbS5JTy5GaWxlXTo6V3JpdGVBbGxUZXh0KCIkKCRwdWJsaXNoRGlyLkZ1bGxOYW1lKVzDvm5hbWXDvlzDvm5hbWXDvi5wc20xIiwgKCR0ZXh0IC1qb2luICJgbmBuIiksIFtTeXN0ZW0uVGV4dC5FbmNvZGluZ106OlVURjgpDQpSZW1vdmUtSXRlbSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw75caW50ZXJuYWwiIC1SZWN1cnNlIC1Gb3JjZQ0KUmVtb3ZlLUl0ZW0gLVBhdGggIiQoJHB1Ymxpc2hEaXIuRnVsbE5hbWUpXMO+bmFtZcO+XGZ1bmN0aW9ucyIgLVJlY3Vyc2UgLUZvcmNlDQojZW5kcmVnaW9uIFVwZGF0ZSB0aGUgcHNtMSBmaWxlICYgQ2xlYW51cA0KDQojcmVnaW9uIFVwZGF0aW5nIHRoZSBNb2R1bGUgVmVyc2lvbg0KaWYgKCRBdXRvVmVyc2lvbikNCnsNCglXcml0ZS1Ib3N0ICAiVXBkYXRpbmcgbW9kdWxlIHZlcnNpb24gbnVtYmVycy4iDQoJdHJ5IHsgW3ZlcnNpb25dJHJlbW90ZVZlcnNpb24gPSAoRmluZC1Nb2R1bGUgJ8O+bmFtZcO+JyAtUmVwb3NpdG9yeSAkUmVwb3NpdG9yeSAtRXJyb3JBY3Rpb24gU3RvcCkuVmVyc2lvbiB9DQoJY2F0Y2gNCgl7DQoJCXRocm93ICJGYWlsZWQgdG8gYWNjZXNzICQoJFJlcG9zaXRvcnkpIDogJF8iDQoJfQ0KCWlmICgtbm90ICRyZW1vdGVWZXJzaW9uKQ0KCXsNCgkJdGhyb3cgIkNvdWxkbid0IGZpbmQgw75uYW1lw74gb24gcmVwb3NpdG9yeSAkKCRSZXBvc2l0b3J5KSA6ICRfIg0KCX0NCgkkbmV3QnVpbGROdW1iZXIgPSAkcmVtb3RlVmVyc2lvbi5CdWlsZCArIDENCglbdmVyc2lvbl0kbG9jYWxWZXJzaW9uID0gKEltcG9ydC1Qb3dlclNoZWxsRGF0YUZpbGUgLVBhdGggIiQoJHB1Ymxpc2hEaXIuRnVsbE5hbWUpXMO+bmFtZcO+XMO+bmFtZcO+LnBzZDEiKS5Nb2R1bGVWZXJzaW9uDQoJVXBkYXRlLU1vZHVsZU1hbmlmZXN0IC1QYXRoICIkKCRwdWJsaXNoRGlyLkZ1bGxOYW1lKVzDvm5hbWXDvlzDvm5hbWXDvi5wc2QxIiAtTW9kdWxlVmVyc2lvbiAiJCgkbG9jYWxWZXJzaW9uLk1ham9yKS4kKCRsb2NhbFZlcnNpb24uTWlub3IpLiQoJG5ld0J1aWxkTnVtYmVyKSINCn0NCiNlbmRyZWdpb24gVXBkYXRpbmcgdGhlIE1vZHVsZSBWZXJzaW9uDQoNCiNyZWdpb24gUHVibGlzaA0KaWYgKCRTa2lwUHVibGlzaCkgeyByZXR1cm4gfQ0KaWYgKCRMb2NhbFJlcG8pDQp7DQoJIyBEZXBlbmRlbmNpZXMgbXVzdCBnbyBmaXJzdA0KCVdyaXRlLUhvc3QgICJDcmVhdGluZyBOdWdldCBQYWNrYWdlIGZvciBtb2R1bGU6IFBTRnJhbWV3b3JrIg0KCU5ldy1QU01ETW9kdWxlTnVnZXRQYWNrYWdlIC1Nb2R1bGVQYXRoIChHZXQtTW9kdWxlIC1OYW1lIFBTRnJhbWV3b3JrKS5Nb2R1bGVCYXNlIC1QYWNrYWdlUGF0aCAuDQoJV3JpdGUtSG9zdCAgIkNyZWF0aW5nIE51Z2V0IFBhY2thZ2UgZm9yIG1vZHVsZTogw75uYW1lw74iDQoJTmV3LVBTTURNb2R1bGVOdWdldFBhY2thZ2UgLU1vZHVsZVBhdGggIiQoJHB1Ymxpc2hEaXIuRnVsbE5hbWUpXMO+bmFtZcO+IiAtUGFja2FnZVBhdGggLg0KfQ0KZWxzZQ0Kew0KCSMgUHVibGlzaCB0byBHYWxsZXJ5DQoJV3JpdGUtSG9zdCAgIlB1Ymxpc2hpbmcgdGhlIMO+bmFtZcO+IG1vZHVsZSB0byAkKCRSZXBvc2l0b3J5KSINCglQdWJsaXNoLU1vZHVsZSAtUGF0aCAiJCgkcHVibGlzaERpci5GdWxsTmFtZSlcw75uYW1lw74iIC1OdUdldEFwaUtleSAkQXBpS2V5IC1Gb3JjZSAtUmVwb3NpdG9yeSAkUmVwb3NpdG9yeQ0KfQ0KI2VuZHJlZ2lvbiBQdWJsaXNoAQmLAAAACYwAAAAGjQAAAA52c3RzLWJ1aWxkLnBzMQaOAAAAFGJ1aWxkXHZzdHMtYnVpbGQucHMxCS0AAAAJkAAAAAmRAAAAAW0AAAAiAAAABpIAAACABnBhcmFtICgNCiAgICBbc3RyaW5nXQ0KICAgICRSZXBvc2l0b3J5ID0gJ1BTR2FsbGVyeScNCikNCg0KJG1vZHVsZXMgPSBAKCJQZXN0ZXIiLCAiUFNTY3JpcHRBbmFseXplciIpDQoNCiMgQXV0b21hdGljYWxseSBhZGQgbWlzc2luZyBkZXBlbmRlbmNpZXMNCiRkYXRhID0gSW1wb3J0LVBvd2VyU2hlbGxEYXRhRmlsZSAtUGF0aCAiJFBTU2NyaXB0Um9vdFwuLlzDvm5hbWXDvlzDvm5hbWXDvi5wc2QxIg0KZm9yZWFjaCAoJGRlcGVuZGVuY3kgaW4gJGRhdGEuUmVxdWlyZWRNb2R1bGVzKSB7DQogICAgaWYgKCRkZXBlbmRlbmN5IC1pcyBbc3RyaW5nXSkgew0KICAgICAgICBpZiAoJG1vZHVsZXMgLWNvbnRhaW5zICRkZXBlbmRlbmN5KSB7IGNvbnRpbnVlIH0NCiAgICAgICAgJG1vZHVsZXMgKz0gJGRlcGVuZGVuY3kNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAgIGlmICgkbW9kdWxlcyAtY29udGFpbnMgJGRlcGVuZGVuY3kuTW9kdWxlTmFtZSkgeyBjb250aW51ZSB9DQogICAgICAgICRtb2R1bGVzICs9ICRkZXBlbmRlbmN5Lk1vZHVsZU5hbWUNCiAgICB9DQp9DQoNCmZvcmVhY2ggKCRtb2R1bGUgaW4gJG1vZHVsZXMpIHsNCiAgICBXcml0ZS1Ib3N0ICJJbnN0YWxsaW5nICRtb2R1bGUiIC1Gb3JlZ3JvdW5kQ29sb3IgQ3lhbg0KICAgIEluc3RhbGwtTW9kdWxlICRtb2R1bGUgLUZvcmNlIC1Ta2lwUHVibGlzaGVyQ2hlY2sgLVJlcG9zaXRvcnkgJFJlcG9zaXRvcnkNCiAgICBJbXBvcnQtTW9kdWxlICRtb2R1bGUgLUZvcmNlIC1QYXNzVGhydQ0KfQEJkwAAAAmUAAAABpUAAAAWdnN0cy1wcmVyZXF1aXNpdGVzLnBzMQaWAAAAHGJ1aWxkXHZzdHMtcHJlcmVxdWlzaXRlcy5wczEJLQAAAAmYAAAACZkAAAABbgAAACIAAAAGmgAAAEIjIFJ1biBpbnRlcm5hbCBwZXN0ZXIgdGVzdHMNCiYgIiRQU1NjcmlwdFJvb3RcLi5cdGVzdHNccGVzdGVyLnBzMSIBCZsAAAAJnAAAAAadAAAAEXZzdHMtdmFsaWRhdGUucHMxBp4AAAAXYnVpbGRcdnN0cy12YWxpZGF0ZS5wczEJLQAAAAmgAAAACaEAAAABbwAAAB4AAAAJogAAAAajAAAACWZ1bmN0aW9ucwakAAAAD3Rlc3RzXGZ1bmN0aW9ucwktAAAACaYAAAAJpwAAAAFwAAAAHgAAAAmoAAAABqkAAAAHZ2VuZXJhbAaqAAAADXRlc3RzXGdlbmVyYWwJLQAAAAmsAAAACa0AAAABcQAAACIAAAAGrgAAAIYacGFyYW0gKA0KCSRUZXN0R2VuZXJhbCA9ICR0cnVlLA0KCQ0KCSRUZXN0RnVuY3Rpb25zID0gJHRydWUsDQoJDQoJW1ZhbGlkYXRlU2V0KCdOb25lJywgJ05vcm1hbCcsICdEZXRhaWxlZCcsICdEaWFnbm9zdGljJyldDQoJW0FsaWFzKCdTaG93JyldDQoJJE91dHB1dCA9ICJOb25lIiwNCgkNCgkkSW5jbHVkZSA9ICIqIiwNCgkNCgkkRXhjbHVkZSA9ICIiDQopDQoNCldyaXRlLUhvc3QgIlN0YXJ0aW5nIFRlc3RzIg0KDQpXcml0ZS1Ib3N0ICJJbXBvcnRpbmcgTW9kdWxlIg0KDQokZ2xvYmFsOnRlc3Ryb290ID0gJFBTU2NyaXB0Um9vdA0KJGdsb2JhbDpfX3Blc3Rlcl9kYXRhID0gQHsgfQ0KDQpSZW1vdmUtTW9kdWxlIMO+bmFtZcO+IC1FcnJvckFjdGlvbiBJZ25vcmUNCkltcG9ydC1Nb2R1bGUgIiRQU1NjcmlwdFJvb3RcLi5cw75uYW1lw75cw75uYW1lw74ucHNkMSINCkltcG9ydC1Nb2R1bGUgIiRQU1NjcmlwdFJvb3RcLi5cw75uYW1lw75cw75uYW1lw74ucHNtMSIgLUZvcmNlDQoNCiMgTmVlZCB0byBpbXBvcnQgZXhwbGljaXRseSBzbyB3ZSBjYW4gdXNlIHRoZSBjb25maWd1cmF0aW9uIGNsYXNzDQpJbXBvcnQtTW9kdWxlIFBlc3Rlcg0KDQpXcml0ZS1Ib3N0ICAiQ3JlYXRpbmcgdGVzdCByZXN1bHQgZm9sZGVyIg0KJG51bGwgPSBOZXctSXRlbSAtUGF0aCAiJFBTU2NyaXB0Um9vdFwuLiIgLU5hbWUgVGVzdFJlc3VsdHMgLUl0ZW1UeXBlIERpcmVjdG9yeSAtRm9yY2UNCg0KJHRvdGFsRmFpbGVkID0gMA0KJHRvdGFsUnVuID0gMA0KDQokdGVzdHJlc3VsdHMgPSBAKCkNCiRjb25maWcgPSBbUGVzdGVyQ29uZmlndXJhdGlvbl06OkRlZmF1bHQNCiRjb25maWcuVGVzdFJlc3VsdC5FbmFibGVkID0gJHRydWUNCg0KI3JlZ2lvbiBSdW4gR2VuZXJhbCBUZXN0cw0KaWYgKCRUZXN0R2VuZXJhbCkNCnsNCglXcml0ZS1Ib3N0ICAiTW9kdWxlcyBpbXBvcnRlZCwgcHJvY2VlZGluZyB3aXRoIGdlbmVyYWwgdGVzdHMiDQoJZm9yZWFjaCAoJGZpbGUgaW4gKEdldC1DaGlsZEl0ZW0gIiRQU1NjcmlwdFJvb3RcZ2VuZXJhbCIgfCBXaGVyZS1PYmplY3QgTmFtZSAtbGlrZSAiKi5UZXN0cy5wczEiKSkNCgl7DQoJCWlmICgkZmlsZS5OYW1lIC1ub3RsaWtlICRJbmNsdWRlKSB7IGNvbnRpbnVlIH0NCgkJaWYgKCRmaWxlLk5hbWUgLWxpa2UgJEV4Y2x1ZGUpIHsgY29udGludWUgfQ0KDQoJCVdyaXRlLUhvc3QgICIgIEV4ZWN1dGluZyAkKCRmaWxlLk5hbWUpIg0KCQkkY29uZmlnLlRlc3RSZXN1bHQuT3V0cHV0UGF0aCA9IEpvaW4tUGF0aCAiJFBTU2NyaXB0Um9vdFwuLlxUZXN0UmVzdWx0cyIgIlRFU1QtJCgkZmlsZS5CYXNlTmFtZSkueG1sIg0KCQkkY29uZmlnLlJ1bi5QYXRoID0gJGZpbGUuRnVsbE5hbWUNCgkJJGNvbmZpZy5SdW4uUGFzc1RocnUgPSAkdHJ1ZQ0KCQkkY29uZmlnLk91dHB1dC5WZXJib3NpdHkgPSAkT3V0cHV0DQogICAgCSRyZXN1bHRzID0gSW52b2tlLVBlc3RlciAtQ29uZmlndXJhdGlvbiAkY29uZmlnDQoJCWZvcmVhY2ggKCRyZXN1bHQgaW4gJHJlc3VsdHMpDQoJCXsNCgkJCSR0b3RhbFJ1biArPSAkcmVzdWx0LlRvdGFsQ291bnQNCgkJCSR0b3RhbEZhaWxlZCArPSAkcmVzdWx0LkZhaWxlZENvdW50DQoJCQkkcmVzdWx0LlRlc3RzIHwgV2hlcmUtT2JqZWN0IFJlc3VsdCAtbmUgJ1Bhc3NlZCcgfCBGb3JFYWNoLU9iamVjdCB7DQoJCQkJJHRlc3RyZXN1bHRzICs9IFtwc2N1c3RvbW9iamVjdF1Aew0KCQkJCQlCbG9jayAgICA9ICRfLkJsb2NrDQoJCQkJCU5hbWUJID0gIkl0ICQoJF8uTmFtZSkiDQoJCQkJCVJlc3VsdCAgID0gJF8uUmVzdWx0DQoJCQkJCU1lc3NhZ2UgID0gJF8uRXJyb3JSZWNvcmQuRGlzcGxheUVycm9yTWVzc2FnZQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCn0NCiNlbmRyZWdpb24gUnVuIEdlbmVyYWwgVGVzdHMNCg0KJGdsb2JhbDpfX3Blc3Rlcl9kYXRhLlNjcmlwdEFuYWx5emVyIHwgT3V0LUhvc3QNCg0KI3JlZ2lvbiBUZXN0IENvbW1hbmRzDQppZiAoJFRlc3RGdW5jdGlvbnMpDQp7DQoJV3JpdGUtSG9zdCAiUHJvY2VlZGluZyB3aXRoIGluZGl2aWR1YWwgdGVzdHMiDQoJZm9yZWFjaCAoJGZpbGUgaW4gKEdldC1DaGlsZEl0ZW0gIiRQU1NjcmlwdFJvb3RcZnVuY3Rpb25zIiAtUmVjdXJzZSAtRmlsZSB8IFdoZXJlLU9iamVjdCBOYW1lIC1saWtlICIqVGVzdHMucHMxIikpDQoJew0KCQlpZiAoJGZpbGUuTmFtZSAtbm90bGlrZSAkSW5jbHVkZSkgeyBjb250aW51ZSB9DQoJCWlmICgkZmlsZS5OYW1lIC1saWtlICRFeGNsdWRlKSB7IGNvbnRpbnVlIH0NCgkJDQoJCVdyaXRlLUhvc3QgIiAgRXhlY3V0aW5nICQoJGZpbGUuTmFtZSkiDQoJCSRjb25maWcuVGVzdFJlc3VsdC5PdXRwdXRQYXRoID0gSm9pbi1QYXRoICIkUFNTY3JpcHRSb290XC4uXFRlc3RSZXN1bHRzIiAiVEVTVC0kKCRmaWxlLkJhc2VOYW1lKS54bWwiDQoJCSRjb25maWcuUnVuLlBhdGggPSAkZmlsZS5GdWxsTmFtZQ0KCQkkY29uZmlnLlJ1bi5QYXNzVGhydSA9ICR0cnVlDQoJCSRjb25maWcuT3V0cHV0LlZlcmJvc2l0eSA9ICRPdXRwdXQNCiAgICAJJHJlc3VsdHMgPSBJbnZva2UtUGVzdGVyIC1Db25maWd1cmF0aW9uICRjb25maWcNCgkJZm9yZWFjaCAoJHJlc3VsdCBpbiAkcmVzdWx0cykNCgkJew0KCQkJJHRvdGFsUnVuICs9ICRyZXN1bHQuVG90YWxDb3VudA0KCQkJJHRvdGFsRmFpbGVkICs9ICRyZXN1bHQuRmFpbGVkQ291bnQNCgkJCSRyZXN1bHQuVGVzdHMgfCBXaGVyZS1PYmplY3QgUmVzdWx0IC1uZSAnUGFzc2VkJyB8IEZvckVhY2gtT2JqZWN0IHsNCgkJCQkkdGVzdHJlc3VsdHMgKz0gW3BzY3VzdG9tb2JqZWN0XUB7DQoJCQkJCUJsb2NrICAgID0gJF8uQmxvY2sNCgkJCQkJTmFtZQkgPSAiSXQgJCgkXy5OYW1lKSINCgkJCQkJUmVzdWx0ICAgPSAkXy5SZXN1bHQNCgkJCQkJTWVzc2FnZSAgPSAkXy5FcnJvclJlY29yZC5EaXNwbGF5RXJyb3JNZXNzYWdlDQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KfQ0KI2VuZHJlZ2lvbiBUZXN0IENvbW1hbmRzDQoNCiR0ZXN0cmVzdWx0cyB8IFNvcnQtT2JqZWN0IERlc2NyaWJlLCBDb250ZXh0LCBOYW1lLCBSZXN1bHQsIE1lc3NhZ2UgfCBGb3JtYXQtTGlzdA0KDQppZiAoJHRvdGFsRmFpbGVkIC1lcSAwKSB7IFdyaXRlLUhvc3QgICJBbGwgJHRvdGFsUnVuIHRlc3RzIGV4ZWN1dGVkIHdpdGhvdXQgYSBzaW5nbGUgZmFpbHVyZSEiIH0NCmVsc2UgeyBXcml0ZS1Ib3N0ICIkdG90YWxGYWlsZWQgdGVzdHMgb3V0IG9mICR0b3RhbFJ1biB0ZXN0cyBmYWlsZWQhIiB9DQoNCmlmICgkdG90YWxGYWlsZWQgLWd0IDApDQp7DQoJdGhyb3cgIiR0b3RhbEZhaWxlZCAvICR0b3RhbFJ1biB0ZXN0cyBmYWlsZWQhIg0KfQEJrwAAAAmwAAAABrEAAAAKcGVzdGVyLnBzMQayAAAAEHRlc3RzXHBlc3Rlci5wczEJLQAAAAm0AAAACbUAAAABcgAAACIAAAAGtgAAAKIHIyBEZXNjcmlwdGlvbg0KDQpUaGlzIGlzIHRoZSBmb2xkZXIsIHdoZXJlIGFsbCB0aGUgdGVzdHMgZ28uDQoNClRob3NlIGFyZSBzdWJkaXZpZGVkIGluIHR3byBjYXRlZ29yaWVzOg0KDQogLSBHZW5lcmFsDQogLSBGdW5jdGlvbg0KDQojIyBHZW5lcmFsIFRlc3RzDQoNCkdlbmVyYWwgdGVzdHMgYXJlIGZ1bmN0aW9uIGdlbmVyaWMgYW5kIHRlc3QgZm9yIGdlbmVyYWwgcG9saWNpZXMuDQoNClRoZXNlIHRlc3Qgc2NhbiBhbnN3ZXIgcXVlc3Rpb25zIHN1Y2ggYXM6DQoNCiAtIElzIG15IG1vZHVsZSBmb2xsb3dpbmcgbXkgc3R5bGUgZ3VpZGVzPw0KIC0gRG9lcyBhbnkgb2YgbXkgc2NyaXB0cyBoYXZlIGEgc3ludGF4IGVycm9yPw0KIC0gRG8gbXkgc2NyaXB0cyB1c2UgY29tbWFuZHMgSSBkbyBub3Qgd2FudCB0aGVtIHRvIHVzZT8NCiAtIERvIG15IGNvbW1hbmRzIGZvbGxvdyBiZXN0IHByYWN0aWNlcz8NCiAtIERvIG15IGNvbW1hbmRzIGhhdmUgcHJvcGVyIGhlbHA/DQoNCkJhc2ljYWxseSwgdGhlc2UgYWxsb3cgYSBnZW5lcmFsIG1vZHVsZSBoZWFsdGggY2hlY2suDQoNClRoZXNlIHRlc3RzIGFyZSBhbHJlYWR5IHByb3ZpZGVkIGFzIHBhcnQgb2YgdGhlIHRlbXBsYXRlLg0KDQojIyBGdW5jdGlvbiBUZXN0cw0KDQpBIGhlYWx0aHkgbW9kdWxlIHNob3VsZCBwcm92aWRlIHVuaXQgYW5kIGludGVncmF0aW9uIHRlc3RzIGZvciB0aGUgY29tbWFuZHMgJiBjb21wb25lbnRzIGl0IHNoaXBzLg0KT25seSB0aGVuIGNhbiBiZSBndWFyYW50ZWVkLCB0aGF0IHRoZXkgd2lsbCBhY3R1YWxseSBwZXJmb3JtIGFzIHByb21pc2VkLg0KDQpIb3dldmVyLCBhcyBlYWNoIHN1Y2ggdGVzdCBtdXN0IGJlIHNwZWNpZmljIHRvIHRoZSBmdW5jdGlvbiBpdCB0ZXN0cywgdGhlcmUgY2Fubm90IGJlIG11Y2ggaW4gdGhlIHdheSBvZiB0ZW1wbGF0ZXMuAQm3AAAACbgAAAAGuQAAAAlyZWFkbWUubWQGugAAAA90ZXN0c1xyZWFkbWUubWQJLQAAAAm8AAAACb0AAAABcwAAAB4AAAAJvgAAAAa/AAAACWZ1bmN0aW9ucwbAAAAAEsO+bmFtZcO+XGZ1bmN0aW9ucwktAAAACcIAAAAJwwAAAAF0AAAAHgAAAAnEAAAABsUAAAAIaW50ZXJuYWwGxgAAABHDvm5hbWXDvlxpbnRlcm5hbAktAAAACcgAAAAJyQAAAAF1AAAAIgAAAAbKAAAAxghNSVQgTGljZW5zZQ0KDQpDb3B5cmlnaHQgKGMpIMO+IXllYXIhw74gw75hdXRob3LDvg0KDQpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbA0KY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KDQpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQoNClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwNCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFDQpTT0ZUV0FSRS4NCgEJywAAAAnMAAAABs0AAAAHTElDRU5TRQbOAAAAEMO+bmFtZcO+XExJQ0VOU0UJLQAAAAnQAAAACdEAAAABdgAAACIAAAAG0gAAAOIfQHsNCg0KIyBTY3JpcHQgbW9kdWxlIG9yIGJpbmFyeSBtb2R1bGUgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBtYW5pZmVzdC4NClJvb3RNb2R1bGUgPSAnw75uYW1lw74ucHNtMScNCg0KIyBWZXJzaW9uIG51bWJlciBvZiB0aGlzIG1vZHVsZS4NCk1vZHVsZVZlcnNpb24gPSAnMS4wLjAnDQoNCiMgU3VwcG9ydGVkIFBTRWRpdGlvbnMNCiMgQ29tcGF0aWJsZVBTRWRpdGlvbnMgPSBAKCkNCg0KIyBJRCB1c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgbW9kdWxlDQpHVUlEID0gJ8O+IWd1aWQhw74nDQoNCiMgQXV0aG9yIG9mIHRoaXMgbW9kdWxlDQpBdXRob3IgPSAnw75hdXRob3LDvicNCg0KIyBDb21wYW55IG9yIHZlbmRvciBvZiB0aGlzIG1vZHVsZQ0KQ29tcGFueU5hbWUgPSAnw75jb21wYW55w74nDQoNCiMgQ29weXJpZ2h0IHN0YXRlbWVudCBmb3IgdGhpcyBtb2R1bGUNCkNvcHlyaWdodCA9ICcoYykgw75hdXRob3LDvi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4nDQoNCiMgRGVzY3JpcHRpb24gb2YgdGhlIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUNCkRlc2NyaXB0aW9uID0gJ8O+ZGVzY3JpcHRpb27DvicNCg0KIyBNaW5pbXVtIHZlcnNpb24gb2YgdGhlIFBvd2VyU2hlbGwgZW5naW5lIHJlcXVpcmVkIGJ5IHRoaXMgbW9kdWxlDQojIFBvd2VyU2hlbGxWZXJzaW9uID0gJycNCg0KIyBOYW1lIG9mIHRoZSBQb3dlclNoZWxsIGhvc3QgcmVxdWlyZWQgYnkgdGhpcyBtb2R1bGUNCiMgUG93ZXJTaGVsbEhvc3ROYW1lID0gJycNCg0KIyBNaW5pbXVtIHZlcnNpb24gb2YgdGhlIFBvd2VyU2hlbGwgaG9zdCByZXF1aXJlZCBieSB0aGlzIG1vZHVsZQ0KIyBQb3dlclNoZWxsSG9zdFZlcnNpb24gPSAnJw0KDQojIE1pbmltdW0gdmVyc2lvbiBvZiBNaWNyb3NvZnQgLk5FVCBGcmFtZXdvcmsgcmVxdWlyZWQgYnkgdGhpcyBtb2R1bGUuIFRoaXMgcHJlcmVxdWlzaXRlIGlzIHZhbGlkIGZvciB0aGUgUG93ZXJTaGVsbCBEZXNrdG9wIGVkaXRpb24gb25seS4NCiMgRG90TmV0RnJhbWV3b3JrVmVyc2lvbiA9ICcnDQoNCiMgTWluaW11bSB2ZXJzaW9uIG9mIHRoZSBjb21tb24gbGFuZ3VhZ2UgcnVudGltZSAoQ0xSKSByZXF1aXJlZCBieSB0aGlzIG1vZHVsZS4gVGhpcyBwcmVyZXF1aXNpdGUgaXMgdmFsaWQgZm9yIHRoZSBQb3dlclNoZWxsIERlc2t0b3AgZWRpdGlvbiBvbmx5Lg0KIyBDbHJWZXJzaW9uID0gJycNCg0KIyBQcm9jZXNzb3IgYXJjaGl0ZWN0dXJlIChOb25lLCBYODYsIEFtZDY0KSByZXF1aXJlZCBieSB0aGlzIG1vZHVsZQ0KIyBQcm9jZXNzb3JBcmNoaXRlY3R1cmUgPSAnJw0KDQojIE1vZHVsZXMgdGhhdCBtdXN0IGJlIGltcG9ydGVkIGludG8gdGhlIGdsb2JhbCBlbnZpcm9ubWVudCBwcmlvciB0byBpbXBvcnRpbmcgdGhpcyBtb2R1bGUNCiMgUmVxdWlyZWRNb2R1bGVzID0gQCgpDQoNCiMgQXNzZW1ibGllcyB0aGF0IG11c3QgYmUgbG9hZGVkIHByaW9yIHRvIGltcG9ydGluZyB0aGlzIG1vZHVsZQ0KIyBSZXF1aXJlZEFzc2VtYmxpZXMgPSBAKCkNCg0KIyBTY3JpcHQgZmlsZXMgKC5wczEpIHRoYXQgYXJlIHJ1biBpbiB0aGUgY2FsbGVyJ3MgZW52aXJvbm1lbnQgcHJpb3IgdG8gaW1wb3J0aW5nIHRoaXMgbW9kdWxlLg0KIyBTY3JpcHRzVG9Qcm9jZXNzID0gQCgpDQoNCiMgVHlwZSBmaWxlcyAoLnBzMXhtbCkgdG8gYmUgbG9hZGVkIHdoZW4gaW1wb3J0aW5nIHRoaXMgbW9kdWxlDQojIFR5cGVzVG9Qcm9jZXNzID0gQCgpDQoNCiMgRm9ybWF0IGZpbGVzICgucHMxeG1sKSB0byBiZSBsb2FkZWQgd2hlbiBpbXBvcnRpbmcgdGhpcyBtb2R1bGUNCiMgRm9ybWF0c1RvUHJvY2VzcyA9IEAoKQ0KDQojIE1vZHVsZXMgdG8gaW1wb3J0IGFzIG5lc3RlZCBtb2R1bGVzIG9mIHRoZSBtb2R1bGUgc3BlY2lmaWVkIGluIFJvb3RNb2R1bGUvTW9kdWxlVG9Qcm9jZXNzDQojIE5lc3RlZE1vZHVsZXMgPSBAKCkNCg0KIyBGdW5jdGlvbnMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUsIGZvciBiZXN0IHBlcmZvcm1hbmNlLCBkbyBub3QgdXNlIHdpbGRjYXJkcyBhbmQgZG8gbm90IGRlbGV0ZSB0aGUgZW50cnksIHVzZSBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSBhcmUgbm8gZnVuY3Rpb25zIHRvIGV4cG9ydC4NCkZ1bmN0aW9uc1RvRXhwb3J0ID0gQCgNCg0KKQ0KDQojIENtZGxldHMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUsIGZvciBiZXN0IHBlcmZvcm1hbmNlLCBkbyBub3QgdXNlIHdpbGRjYXJkcyBhbmQgZG8gbm90IGRlbGV0ZSB0aGUgZW50cnksIHVzZSBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSBhcmUgbm8gY21kbGV0cyB0byBleHBvcnQuDQojIENtZGxldHNUb0V4cG9ydCA9ICcqJw0KDQojIFZhcmlhYmxlcyB0byBleHBvcnQgZnJvbSB0aGlzIG1vZHVsZQ0KIyBWYXJpYWJsZXNUb0V4cG9ydCA9ICcqJw0KDQojIEFsaWFzZXMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUsIGZvciBiZXN0IHBlcmZvcm1hbmNlLCBkbyBub3QgdXNlIHdpbGRjYXJkcyBhbmQgZG8gbm90IGRlbGV0ZSB0aGUgZW50cnksIHVzZSBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSBhcmUgbm8gYWxpYXNlcyB0byBleHBvcnQuDQojIEFsaWFzZXNUb0V4cG9ydCA9ICcqJw0KDQojIERTQyByZXNvdXJjZXMgdG8gZXhwb3J0IGZyb20gdGhpcyBtb2R1bGUNCiMgRHNjUmVzb3VyY2VzVG9FeHBvcnQgPSBAKCkNCg0KIyBMaXN0IG9mIGFsbCBtb2R1bGVzIHBhY2thZ2VkIHdpdGggdGhpcyBtb2R1bGUNCiMgTW9kdWxlTGlzdCA9IEAoKQ0KDQojIExpc3Qgb2YgYWxsIGZpbGVzIHBhY2thZ2VkIHdpdGggdGhpcyBtb2R1bGUNCiMgRmlsZUxpc3QgPSBAKCkNCg0KIyBQcml2YXRlIGRhdGEgdG8gcGFzcyB0byB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiBSb290TW9kdWxlL01vZHVsZVRvUHJvY2Vzcy4gVGhpcyBtYXkgYWxzbyBjb250YWluIGEgUFNEYXRhIGhhc2h0YWJsZSB3aXRoIGFkZGl0aW9uYWwgbW9kdWxlIG1ldGFkYXRhIHVzZWQgYnkgUG93ZXJTaGVsbC4NClByaXZhdGVEYXRhID0gQHsNCg0KICAgIFBTRGF0YSA9IEB7DQoNCiAgICAgICAgIyBUYWdzIGFwcGxpZWQgdG8gdGhpcyBtb2R1bGUuIFRoZXNlIGhlbHAgd2l0aCBtb2R1bGUgZGlzY292ZXJ5IGluIG9ubGluZSBnYWxsZXJpZXMuDQogICAgICAgICMgVGFncyA9IEAoKQ0KDQogICAgICAgICMgQSBVUkwgdG8gdGhlIGxpY2Vuc2UgZm9yIHRoaXMgbW9kdWxlLg0KICAgICAgICAjIExpY2Vuc2VVcmkgPSAnJw0KDQogICAgICAgICMgQSBVUkwgdG8gdGhlIG1haW4gd2Vic2l0ZSBmb3IgdGhpcyBwcm9qZWN0Lg0KICAgICAgICAjIFByb2plY3RVcmkgPSAnJw0KDQogICAgICAgICMgQSBVUkwgdG8gYW4gaWNvbiByZXByZXNlbnRpbmcgdGhpcyBtb2R1bGUuDQogICAgICAgICMgSWNvblVyaSA9ICcnDQoNCiAgICAgICAgIyBSZWxlYXNlTm90ZXMgb2YgdGhpcyBtb2R1bGUNCiAgICAgICAgIyBSZWxlYXNlTm90ZXMgPSAnJw0KDQogICAgICAgICMgUHJlcmVsZWFzZSBzdHJpbmcgb2YgdGhpcyBtb2R1bGUNCiAgICAgICAgIyBQcmVyZWxlYXNlID0gJycNCg0KICAgICAgICAjIEZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgbW9kdWxlIHJlcXVpcmVzIGV4cGxpY2l0IHVzZXIgYWNjZXB0YW5jZSBmb3IgaW5zdGFsbC91cGRhdGUvc2F2ZQ0KICAgICAgICAjIFJlcXVpcmVMaWNlbnNlQWNjZXB0YW5jZSA9ICRmYWxzZQ0KDQogICAgICAgICMgRXh0ZXJuYWwgZGVwZW5kZW50IG1vZHVsZXMgb2YgdGhpcyBtb2R1bGUNCiAgICAgICAgIyBFeHRlcm5hbE1vZHVsZURlcGVuZGVuY2llcyA9IEAoKQ0KDQogICAgfSAjIEVuZCBvZiBQU0RhdGEgaGFzaHRhYmxlDQoNCn0gIyBFbmQgb2YgUHJpdmF0ZURhdGEgaGFzaHRhYmxlDQoNCiMgSGVscEluZm8gVVJJIG9mIHRoaXMgbW9kdWxlDQojIEhlbHBJbmZvVVJJID0gJycN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ZWxsDQogICAgLSBuYW1lOiBWYWxpZGF0ZQ0KICAgICAgcnVuOiAuXGJ1aWxkXHZzdHMtdmFsaWRhdGUucHMxDQogICAgICBzaGVsbDogcG93ZXJzaGVsbA0KICAgIC0gbmFtZTogQnVpbGQNCiAgICAgIHJ1bjogLlxidWlsZFx2c3RzLWJ1aWxkLnBzMSAtQXBpS2V5ICRlbnY6QVBJS0VZDQogICAgICBzaGVsbDogcG93ZXJzaGVsbA0KICAgICAgZW52Og0KICAgICAgICBBUElLRVk6ICR7eyBzZWNyZXRzLkFwaUtleSB9fQEJFAEAAAkVAQAABhYBAAAJYnVpbGQueW1sBhcBAAAbLmdpdGh1Ylx3b3JrZmxvd3NcYnVpbGQueW1sCS0AAAAJGQEAAAkaAQAAAfwAAAAiAAAABhsBAACyAm9uOiBbcHVsbF9yZXF1ZXN0XQ0KDQpqb2JzOg0KICB2YWxpZGF0ZToNCg0KICAgIHJ1bnMtb246IHdpbmRvd3MtbGF0ZXN0DQoNCiAgICBzdGVwczoNCiAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjENCiAgICAtIG5hbWU6IEluc3RhbGwgUHJlcmVxdWlzaXRlcw0KICAgICAgcnVuOiAuXGJ1aWxkXHZzdHMtcHJlcmVxdWlzaXRlcy5wczENCiAgICAgIHNoZWxsOiBwb3dlcnNoZWxsDQogICAgLSBuYW1lOiBWYWxpZGF0ZQ0KICAgICAgcnVuOiAuXGJ1aWxkXHZzdHMtdmFsaWRhdGUucHMxDQogICAgICBzaGVsbDogcG93ZXJzaGVsbAEJHAEAAAkdAQAABh4BAAAMdmFsaWRhdGUueW1sBh8BAAAeLmdpdGh1Ylx3b3JrZmxvd3NcdmFsaWRhdGUueW1sCS0AAAAJIQEAAAkiAQAAAf8AAAAiAAAABiMBAADVASMgRGVzY3JpcHRpb24NCg0KVGhpcyBpcyB3aGVyZSB0aGUgZnVuY3Rpb24gdGVzdHMgZ28uDQoNCk1ha2Ugc3VyZSB0byBwdXQgdGhlbSBpbiBmb2xkZXJzIHJlZmxlY3RpbmcgdGhlIGFjdHVhbCBtb2R1bGUgc3RydWN0dXJlLg0KDQpJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBpbnRlcm5hbCBhbmQgcHVibGljIGZ1bmN0aW9ucyBoZXJlLgEJJAEAAAklAQAABiYBAAAJcmVhZG1lLm1kBicBAAAZdGVzdHNcZnVuY3Rpb25zXHJlYWRtZS5tZAktAAAACSkBAAAJKgEAAAEAAQAAIgAAAAYrAQAAkAkjIExpc3Qgb2YgZm9yYmlkZGVuIGNvbW1hbmRzDQokZ2xvYmFsOkJhbm5lZENvbW1hbmRzID0gQCgNCgknV3JpdGUtT3V0cHV0Jw0KCQ0KCSMgVXNlIENJTSBpbnN0ZWFkIHdoZXJlIHBvc3NpYmxlDQoJJ0dldC1XbWlPYmplY3QnDQoJJ0ludm9rZS1XbWlNZXRob2QnDQoJJ1JlZ2lzdGVyLVdtaUV2ZW50Jw0KCSdSZW1vdmUtV21pT2JqZWN0Jw0KCSdTZXQtV21pSW5zdGFuY2UnDQoNCgkjIFVzZSBHZXQtV2luRXZlbnQgaW5zdGVhZA0KCSdHZXQtRXZlbnRMb2cnDQoNCgkjIFVzZXIgUHJlZmVyZW5jZSBzaG91bGQgbm90IGJlIHVzZWQgaW4gYXV0b21hdGlvbg0KCSdDbGVhci1Ib3N0JyAjIENvbnNvbGUgU2NyZWVuIGJlbG9uZ3MgdG8gdGhlIHVzZXINCgknU2V0LUxvY2F0aW9uJyAjIENvbnNvbGUgcGF0aCBiZWxvbmdzIHRvIHRoZSB1c2VyLiBVc2UgJFBTU2NyaXB0Um9vdCBpbnN0ZWFkLg0KDQoJIyBEeW5hbWljIFZhcmlhYmxlcyBhcmUgdW5kZXNpcmFibGUuIFVzZSBoYXNodGFibGUgaW5zdGVhZC4NCgknR2V0LVZhcmlhYmxlJw0KCSdTZXQtVmFyaWFibGUnDQoJJ0NsZWFyLVZhcmlhYmxlJw0KCSdSZW1vdmUtVmFyaWFibGUnDQoJJ05ldy1WYXJpYWJsZScNCg0KCSMgRHluYW1pYyBDb2RlIGV4ZWN1dGlvbiBzaG91bGQgbm90IHJlcXVpcmUgdGhpcw0KCSdJbnZva2UtRXhwcmVzc2lvbicgIyBDb25zaWRlciBzcGxhdHRpbmcgaW5zdGVhZC4gWWVzLCB5b3UgY2FuIHNwbGF0IHBhcmFtZXRlcnMgZm9yIGV4dGVybmFsIGFwcGxpY2F0aW9ucyENCikNCg0KPCMNCglDb250YWlucyBsaXN0IG9mIGV4Y2VwdGlvbnMgZm9yIGJhbm5lZCBjbWRsZXRzLg0KCUluc2VydCB0aGUgZmlsZSBuYW1lcyBvZiBmaWxlcyB0aGF0IG1heSBjb250YWluIHRoZW0uDQoJDQoJRXhhbXBsZToNCgkiV3JpdGUtSG9zdCIgID0gQCgnV3JpdGUtUFNGSG9zdENvbG9yLnBzMScsJ1dyaXRlLVBTRk1lc3NhZ2UucHMxJykNCiM+DQokZ2xvYmFsOk1heUNvbnRhaW5Db21tYW5kID0gQHsNCgkiV3JpdGUtSG9zdCIgID0gQCgpDQoJIldyaXRlLVZlcmJvc2UiID0gQCgpDQoJIldyaXRlLVdhcm5pbmciID0gQCgpDQoJIldyaXRlLUVycm9yIiAgPSBAKCkNCgkiV3JpdGUtT3V0cHV0IiA9IEAoKQ0KCSJXcml0ZS1JbmZvcm1hdGlvbiIgPSBAKCkNCgkiV3JpdGUtRGVidWciID0gQCgpDQp9AQksAQAACS0BAAAGLgEAABxGaWxlSW50ZWdyaXR5LkV4Y2VwdGlvbnMucHMxBi8BAAAqdGVzdHNcZ2VuZXJhbFxGaWxlSW50ZWdyaXR5LkV4Y2VwdGlvbnMucHMxCS0AAAAJMQEAAAkyAQAAAQEBAAAiAAAABjMBAADhGCRtb2R1bGVSb290ID0gKFJlc29sdmUtUGF0aCAiJGdsb2JhbDp0ZXN0cm9vdFwuLiIpLlBhdGgNCg0KLiAiJGdsb2JhbDp0ZXN0cm9vdFxnZW5lcmFsXEZpbGVJbnRlZ3JpdHkuRXhjZXB0aW9ucy5wczEiDQoNCkRlc2NyaWJlICJWZXJpZnlpbmcgaW50ZWdyaXR5IG9mIG1vZHVsZSBmaWxlcyIgew0KCUJlZm9yZUFsbCB7DQoJCWZ1bmN0aW9uIEdldC1GaWxlRW5jb2RpbmcNCgkJew0KCQk8Iw0KCQkJLlNZTk9QU0lTDQoJCQkJVGVzdHMgYSBmaWxlIGZvciBlbmNvZGluZy4NCgkJCQ0KCQkJLkRFU0NSSVBUSU9ODQoJCQkJVGVzdHMgYSBmaWxlIGZvciBlbmNvZGluZy4NCgkJCQ0KCQkJLlBBUkFNRVRFUiBQYXRoDQoJCQkJVGhlIGZpbGUgdG8gdGVzdA0KCQkjPg0KCQkJW0NtZGxldEJpbmRpbmcoKV0NCgkJCVBhcmFtICgNCgkJCQlbUGFyYW1ldGVyKE1hbmRhdG9yeSA9ICRUcnVlLCBWYWx1ZUZyb21QaXBlbGluZUJ5UHJvcGVydHlOYW1lID0gJFRydWUpXQ0KCQkJCVtBbGlhcygnRnVsbE5hbWUnKV0NCgkJCQlbc3RyaW5nXQ0KCQkJCSRQYXRoDQoJCQkpDQoJCQkNCgkJCWlmICgkUFNWZXJzaW9uVGFibGUuUFNWZXJzaW9uLk1ham9yIC1sdCA2KQ0KCQkJew0KCQkJCVtieXRlW11dJGJ5dGUgPSBnZXQtY29udGVudCAtRW5jb2RpbmcgYnl0ZSAtUmVhZENvdW50IDQgLVRvdGFsQ291bnQgNCAtUGF0aCAkUGF0aA0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCVtieXRlW11dJGJ5dGUgPSBHZXQtQ29udGVudCAtQXNCeXRlU3RyZWFtIC1SZWFkQ291bnQgNCAtVG90YWxDb3VudCA0IC1QYXRoICRQYXRoDQoJCQl9DQoJCQkNCgkJCWlmICgkYnl0ZVswXSAtZXEgMHhlZiAtYW5kICRieXRlWzFdIC1lcSAweGJiIC1hbmQgJGJ5dGVbMl0gLWVxIDB4YmYpIHsgJ1VURjggQk9NJyB9DQoJCQllbHNlaWYgKCRieXRlWzBdIC1lcSAweGZlIC1hbmQgJGJ5dGVbMV0gLWVxIDB4ZmYpIHsgJ1VuaWNvZGUnIH0NCgkJCWVsc2VpZiAoJGJ5dGVbMF0gLWVxIDAgLWFuZCAkYnl0ZVsxXSAtZXEgMCAtYW5kICRieXRlWzJdIC1lcSAweGZlIC1hbmQgJGJ5dGVbM10gLWVxIDB4ZmYpIHsgJ1VURjMyJyB9DQoJCQllbHNlaWYgKCRieXRlWzBdIC1lcSAweDJiIC1hbmQgJGJ5dGVbMV0gLWVxIDB4MmYgLWFuZCAkYnl0ZVsyXSAtZXEgMHg3NikgeyAnVVRGNycgfQ0KCQkJZWxzZSB7ICdVbmtub3duJyB9DQoJCX0NCgl9DQoNCglDb250ZXh0ICJWYWxpZGF0aW5nIFBTMSBTY3JpcHQgZmlsZXMiIHsNCgkJJGFsbEZpbGVzID0gR2V0LUNoaWxkSXRlbSAtUGF0aCAkbW9kdWxlUm9vdCAtUmVjdXJzZSB8IFdoZXJlLU9iamVjdCBOYW1lIC1saWtlICIqLnBzMSIgfCBXaGVyZS1PYmplY3QgRnVsbE5hbWUgLU5vdExpa2UgIiRtb2R1bGVSb290XHRlc3RzXCoiDQoJCQ0KCQlmb3JlYWNoICgkZmlsZSBpbiAkYWxsRmlsZXMpDQoJCXsNCgkJCSRuYW1lID0gJGZpbGUuRnVsbE5hbWUuUmVwbGFjZSgiJG1vZHVsZVJvb3RcIiwgJycpDQoJCQkNCgkJCUl0ICJbJG5hbWVdIFNob3VsZCBoYXZlIFVURjggZW5jb2Rpbmcgd2l0aCBCeXRlIE9yZGVyIE1hcmsiIC1UZXN0Q2FzZXMgQHsgZmlsZSA9ICRmaWxlIH0gew0KCQkJCUdldC1GaWxlRW5jb2RpbmcgLVBhdGggJGZpbGUuRnVsbE5hbWUgfCBTaG91bGQgLUJlICdVVEY4IEJPTScNCgkJCX0NCgkJCQ0KCQkJSXQgIlskbmFtZV0gU2hvdWxkIGhhdmUgbm8gdHJhaWxpbmcgc3BhY2UiIC1UZXN0Q2FzZXMgQHsgZmlsZSA9ICRmaWxlIH0gew0KCQkJCSgkZmlsZSB8IFNlbGVjdC1TdHJpbmcgIlxzJCIgfCBXaGVyZS1PYmplY3QgeyAkXy5MaW5lLlRyaW0oKS5MZW5ndGggLWd0IDB9KS5MaW5lTnVtYmVyIHwgU2hvdWxkIC1CZU51bGxPckVtcHR5DQoJCQl9DQoJCQkNCgkJCSR0b2tlbnMgPSAkbnVsbA0KCQkJJHBhcnNlRXJyb3JzID0gJG51bGwNCgkJCSRudWxsID0gW1N5c3RlbS5NYW5hZ2VtZW50LkF1dG9tYXRpb24uTGFuZ3VhZ2UuUGFyc2VyXTo6UGFyc2VGaWxlKCRmaWxlLkZ1bGxOYW1lLCBbcmVmXSR0b2tlbnMsIFtyZWZdJHBhcnNlRXJyb3JzKQ0KCQkJDQoJCQlJdCAiWyRuYW1lXSBTaG91bGQgaGF2ZSBubyBzeW50YXggZXJyb3JzIiAtVGVzdENhc2VzIEB7IHBhcnNlRXJyb3JzID0gJHBhcnNlRXJyb3JzIH0gew0KCQkJCSRwYXJzZUVycm9ycyB8IFNob3VsZCAtQmVOdWxsT3JFbXB0eQ0KCQkJfQ0KCQkJDQoJCQlmb3JlYWNoICgkY29tbWFuZCBpbiAkZ2xvYmFsOkJhbm5lZENvbW1hbmRzKQ0KCQkJew0KCQkJCWlmICgkZ2xvYmFsOk1heUNvbnRhaW5Db21tYW5kWyIkY29tbWFuZCJdIC1ub3Rjb250YWlucyAkZmlsZS5OYW1lKQ0KCQkJCXsNCgkJCQkJSXQgIlskbmFtZV0gU2hvdWxkIG5vdCB1c2UgJGNvbW1hbmQiIC1UZXN0Q2FzZXMgQHsgdG9rZW5zID0gJHRva2VuczsgY29tbWFuZCA9ICRjb21tYW5kIH0gew0KCQkJCQkJJHRva2VucyB8IFdoZXJlLU9iamVjdCBUZXh0IC1FUSAkY29tbWFuZCB8IFNob3VsZCAtQmVOdWxsT3JFbXB0eQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KCQ0KCUNvbnRleHQgIlZhbGlkYXRpbmcgaGVscC50eHQgaGVscCBmaWxlcyIgew0KCQkkYWxsRmlsZXMgPSBHZXQtQ2hpbGRJdGVtIC1QYXRoICRtb2R1bGVSb290IC1SZWN1cnNlIHwgV2hlcmUtT2JqZWN0IE5hbWUgLWxpa2UgIiouaGVscC50eHQiIHwgV2hlcmUtT2JqZWN0IEZ1bGxOYW1lIC1Ob3RMaWtlICIkbW9kdWxlUm9vdFx0ZXN0c1wqIg0KCQkNCgkJZm9yZWFjaCAoJGZpbGUgaW4gJGFsbEZpbGVzKQ0KCQl7DQoJCQkkbmFtZSA9ICRmaWxlLkZ1bGxOYW1lLlJlcGxhY2UoIiRtb2R1bGVSb290XCIsICcnKQ0KCQkJDQoJCQlJdCAiWyRuYW1lXSBTaG91bGQgaGF2ZSBVVEY4IGVuY29kaW5nIiAtVGVzdENhc2VzIEB7IGZpbGUgPSAkZmlsZSB9IHsNCgkJCQlHZXQtRmlsZUVuY29kaW5nIC1QYXRoICRmaWxlLkZ1bGxOYW1lIHwgU2hvdWxkIC1CZSAnVVRGOCBCT00nDQoJCQl9DQoJCQkNCgkJCUl0ICJbJG5hbWVdIFNob3VsZCBoYXZlIG5vIHRyYWlsaW5nIHNwYWNlIiAtVGVzdENhc2VzIEB7IGZpbGUgPSAkZmlsZSB9IHsNCgkJCQkoJGZpbGUgfCBTZWxlY3QtU3RyaW5nICJccyQiIHwgV2hlcmUtT2JqZWN0IHsgJF8uTGluZS5UcmltKCkuTGVuZ3RoIC1ndCAwIH0gfCBNZWFzdXJlLU9iamVjdCkuQ291bnQgfCBTaG91bGQgLUJlIDANCgkJCX0NCgkJfQ0KCX0NCn0BCTQBAAAJNQEAAAY2AQAAF0ZpbGVJbnRlZ3JpdHkuVGVzdHMucHMxBjcBAAAldGVzdHNcZ2VuZXJhbFxGaWxlSW50ZWdyaXR5LlRlc3RzLnBzMQktAAAACTkBAAAJOgEAAAECAQAAIgAAAAY7AQAAnQUjIExpc3Qgb2YgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQNCiRnbG9iYWw6RnVuY3Rpb25IZWxwVGVzdEV4Y2VwdGlvbnMgPSBAKA0KICAgIA0KKQ0KDQo8Iw0KICBMaXN0IG9mIGFycmF5ZWQgZW51bWVyYXRpb25zLiBUaGVzZSBuZWVkIHRvIGJlIHRyZWF0ZWQgZGlmZmVyZW50bHkuIEFkZCBmdWxsIG5hbWUuDQogIEV4YW1wbGU6DQoNCiAgIlNxbGNvbGxhYm9yYXRpdmUuRGJhdG9vbHMuQ29ubmVjdGlvbi5NYW5hZ2VtZW50Q29ubmVjdGlvblR5cGVbXSINCiM+DQokZ2xvYmFsOkhlbHBUZXN0RW51bWVyYXRlZEFycmF5cyA9IEAoDQoJDQopDQoNCjwjDQogIFNvbWUgdHlwZXMgb24gcGFyYW1ldGVycyBqdXN0IGZhaWwgdGhlaXIgdmFsaWRhdGlvbiBubyBtYXR0ZXIgd2hhdC4NCiAgRm9yIHRob3NlIGl0IGJlY29tZXMgcG9zc2libGUgdG8gc2tpcCB0aGVtLCBieSBhZGRpbmcgdGhlbSB0byB0aGlzIGhhc2h0YWJsZS4NCiAgQWRkIGJ5IGZvbGxvd2luZyB0aGlzIGNvbnZlbnRpb246IDxjb21tYW5kIG5hbWU+ID0gQCg8bGlzdCBvZiBwYXJhbWV0ZXIgbmFtZXM+KQ0KICBFeGFtcGxlOg0KDQogICJHZXQtRGJhQ21PYmplY3QiICAgICAgID0gQCgiRG9Ob3RVc2UiKQ0KIz4NCiRnbG9iYWw6SGVscFRlc3RTa2lwUGFyYW1ldGVyVHlwZSA9IEB7DQogICAgDQp9DQoBCTwBAAAJPQEAAAY+AQAAE0hlbHAuRXhjZXB0aW9ucy5wczEGPwEAACF0ZXN0c1xnZW5lcmFsXEhlbHAuRXhjZXB0aW9ucy5wczEJLQAAAAlBAQAACUIBAAABAwEAACIAAAAGQwEAAIw2PCMNCiAgICAuTk9URVMNCiAgICAgICAgVGhlIG9yaWdpbmFsIHRlc3QgdGhpcyBpcyBiYXNlZCB1cG9uIHdhcyB3cml0dGVuIGJ5IEp1bmUgQmxlbmRlci4NCgkJQWZ0ZXIgc2V2ZXJhbCByb3VuZHMgb2YgbW9kaWZpY2F0aW9ucyBpdCBzdGFuZHMgbm93IGFzIGl0IGlzLCBidXQgdGhlIGhvbm9yIHJlbWFpbnMgaGVycy4NCg0KCQlUaGFuayB5b3UgSnVuZSwgZm9yIGFsbCB5b3UgaGF2ZSBkb25lIQ0KDQogICAgLkRFU0NSSVBUSU9ODQoJCVRoaXMgdGVzdCBldmFsdWF0ZXMgdGhlIGhlbHAgZm9yIGFsbCBjb21tYW5kcyBpbiBhIG1vZHVsZS4NCg0KCS5QQVJBTUVURVIgU2tpcFRlc3QNCgkJRGlzYWJsZXMgdGhpcyB0ZXN0Lg0KCQ0KCS5QQVJBTUVURVIgQ29tbWFuZFBhdGgNCgkJTGlzdCBvZiBwYXRocyB1bmRlciB3aGljaCB0aGUgc2NyaXB0IGZpbGVzIGFyZSBzdG9yZWQuDQoJCVRoaXMgdGVzdCBhc3N1bWVzIHRoYXQgYWxsIGZ1bmN0aW9ucyBoYXZlIHRoZWlyIG93biBmaWxlIHRoYXQgaXMgbmFtZWQgYWZ0ZXIgdGhlbXNlbHZlcy4NCgkJVGhlc2UgcGF0aHMgYXJlIHVzZWQgdG8gc2VhcmNoIGZvciBjb21tYW5kcyB0aGF0IHNob3VsZCBleGlzdCBhbmQgYmUgdGVzdGVkLg0KCQlXaWxsIHNlYXJjaCByZWN1cnNpdmVseSBhbmQgYWNjZXB0cyB3aWxkY2FyZHMsIG1ha2Ugc3VyZSBvbmx5IGZ1bmN0aW9ucyBhcmUgZm91bmQNCg0KCS5QQVJBTUVURVIgTW9kdWxlTmFtZQ0KCQlOYW1lIG9mIHRoZSBtb2R1bGUgdG8gYmUgdGVzdGVkLg0KCQlUaGUgbW9kdWxlIG11c3QgYWxyZWFkeSBiZSBpbXBvcnRlZA0KDQoJLlBBUkFNRVRFUiBFeGNlcHRpb25zRmlsZQ0KCQlGaWxlIGluIHdoaWNoIGV4Y2VwdGlvbnMgYW5kIGFkanVzdG1lbnRzIGFyZSBjb25maWd1cmVkLg0KCQlJbiBpdCB0aGVyZSBzaG91bGQgYmUgdHdvIGFycmF5cyBhbmQgYSBoYXNodGFibGUgZGVmaW5lZDoNCgkJCSRnbG9iYWw6RnVuY3Rpb25IZWxwVGVzdEV4Y2VwdGlvbnMNCgkJCSRnbG9iYWw6SGVscFRlc3RFbnVtZXJhdGVkQXJyYXlzDQoJCQkkZ2xvYmFsOkhlbHBUZXN0U2tpcFBhcmFtZXRlclR5cGUNCgkJVGhlc2UgY2FuIGJlIHVzZWQgdG8gdHdlYWsgdGhlIHRlc3RzIHNsaWdodGx5IGluIGNhc2VzIG9mIG5lZWQuDQoJCVNlZSB0aGUgZXhhbXBsZSBmaWxlIGZvciBleHBsYW5hdGlvbnMgb24gZWFjaCBvZiB0aGVzZSB1c2FnZSBhbmQgZWZmZWN0Lg0KIz4NCltDbWRsZXRCaW5kaW5nKCldDQpQYXJhbSAoDQoJW3N3aXRjaF0NCgkkU2tpcFRlc3QsDQoJDQoJW3N0cmluZ1tdXQ0KCSRDb21tYW5kUGF0aCA9IEAoIiRnbG9iYWw6dGVzdHJvb3RcLi5cw75uYW1lw75cZnVuY3Rpb25zIiwgIiRnbG9iYWw6dGVzdHJvb3RcLi5cw75uYW1lw75caW50ZXJuYWxcZnVuY3Rpb25zIiksDQoJDQoJW3N0cmluZ10NCgkkTW9kdWxlTmFtZSA9ICLDvm5hbWXDviIsDQoJDQoJW3N0cmluZ10NCgkkRXhjZXB0aW9uc0ZpbGUgPSAiJGdsb2JhbDp0ZXN0cm9vdFxnZW5lcmFsXEhlbHAuRXhjZXB0aW9ucy5wczEiDQopDQppZiAoJFNraXBUZXN0KSB7IHJldHVybiB9DQouICRFeGNlcHRpb25zRmlsZQ0KDQokQ29tbWFuZFBhdGggPSBAKA0KICAgICIkZ2xvYmFsOnRlc3Ryb290XC4uXMO+bmFtZcO+XGZ1bmN0aW9ucyINCiAgICAiJGdsb2JhbDp0ZXN0cm9vdFwuLlzDvm5hbWXDvlxpbnRlcm5hbFxmdW5jdGlvbnMiDQopDQoNCiRpbmNsdWRlZE5hbWVzID0gZm9yZWFjaCAoJHBhdGggaW4gJENvbW1hbmRQYXRoKSB7IChHZXQtQ2hpbGRJdGVtICRwYXRoIC1SZWN1cnNlIC1GaWxlIHwgV2hlcmUtT2JqZWN0IE5hbWUgLWxpa2UgIioucHMxIikuQmFzZU5hbWUgfQ0KJGNvbW1hbmRUeXBlcyA9IEAoJ0NtZGxldCcsICdGdW5jdGlvbicpDQppZiAoJFBTVmVyc2lvblRhYmxlLlBTRWRpdGlvbiAtZXEgJ0Rlc2t0b3AnICkgeyAkY29tbWFuZFR5cGVzICs9ICdXb3JrZmxvdycgfQ0KJGNvbW1hbmRzID0gR2V0LUNvbW1hbmQgLU1vZHVsZSAoR2V0LU1vZHVsZSAkTW9kdWxlTmFtZSkgLUNvbW1hbmRUeXBlICRjb21tYW5kVHlwZXMgfCBXaGVyZS1PYmplY3QgTmFtZSAtSW4gJGluY2x1ZGVkTmFtZXMNCg0KIyMgV2hlbiB0ZXN0aW5nIGhlbHAsIHJlbWVtYmVyIHRoYXQgaGVscCBpcyBjYWNoZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHNlc3Npb24uDQojIyBUbyB0ZXN0LCByZXN0YXJ0IHNlc3Npb24uDQoNCg0KZm9yZWFjaCAoJGNvbW1hbmQgaW4gJGNvbW1hbmRzKSB7DQogICAgJGNvbW1hbmROYW1lID0gJGNvbW1hbmQuTmFtZQ0KICAgIA0KICAgICMgU2tpcCBhbGwgZnVuY3Rpb25zIHRoYXQgYXJlIG9uIHRoZSBleGNsdXNpb25zIGxpc3QNCiAgICBpZiAoJGdsb2JhbDpGdW5jdGlvbkhlbHBUZXN0RXhjZXB0aW9ucyAtY29udGFpbnMgJGNvbW1hbmROYW1lKSB7IGNvbnRpbnVlIH0NCiAgICANCiAgICAjIFRoZSBtb2R1bGUtcXVhbGlmaWVkIGNvbW1hbmQgZmFpbHMgb24gTWljcm9zb2Z0LlBvd2VyU2hlbGwuQXJjaGl2ZSBjbWRsZXRzDQogICAgJEhlbHAgPSBHZXQtSGVscCAkY29tbWFuZE5hbWUgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWUNCgkNCglEZXNjcmliZSAiVGVzdCBoZWxwIGZvciAkY29tbWFuZE5hbWUiIHsNCiAgICAgICAgDQoJCSMgSWYgaGVscCBpcyBub3QgZm91bmQsIHN5bm9wc2lzIGluIGF1dG8tZ2VuZXJhdGVkIGhlbHAgaXMgdGhlIHN5bnRheCBkaWFncmFtDQoJCUl0ICJzaG91bGQgbm90IGJlIGF1dG8tZ2VuZXJhdGVkIiAtVGVzdENhc2VzIEB7IEhlbHAgPSAkSGVscCB9IHsNCgkJCSRIZWxwLlN5bm9wc2lzIHwgU2hvdWxkIC1Ob3QgLUJlTGlrZSAnKmBbYDxDb21tb25QYXJhbWV0ZXJzYD5gXSonDQoJCX0NCiAgICAgICAgDQoJCSMgU2hvdWxkIGJlIGEgZGVzY3JpcHRpb24gZm9yIGV2ZXJ5IGZ1bmN0aW9uDQoJCUl0ICJnZXRzIGRlc2NyaXB0aW9uIGZvciAkY29tbWFuZE5hbWUiIC1UZXN0Q2FzZXMgQHsgSGVscCA9ICRIZWxwIH0gew0KCQkJJEhlbHAuRGVzY3JpcHRpb24gfCBTaG91bGQgLU5vdCAtQmVOdWxsT3JFbXB0eQ0KCQl9DQogICAgICAgIA0KCQkjIFNob3VsZCBiZSBhdCBsZWFzdCBvbmUgZXhhbXBsZQ0KCQlJdCAiZ2V0cyBleGFtcGxlIGNvZGUgZnJvbSAkY29tbWFuZE5hbWUiIC1UZXN0Q2FzZXMgQHsgSGVscCA9ICRIZWxwIH0gew0KCQkJKCRIZWxwLkV4YW1wbGVzLkV4YW1wbGUgfCBTZWxlY3QtT2JqZWN0IC1GaXJzdCAxKS5Db2RlIHwgU2hvdWxkIC1Ob3QgLUJlTnVsbE9yRW1wdHkNCgkJfQ0KCQ0KCQkjIFNob3VsZCBiZSBhdCBsZWFzdCBvbmUgZXhhbXBsZSBkZXNjcmlwdGlvbg0KCQlJdCAiZ2V0cyBleGFtcGxlIGhlbHAgZnJvbSAkY29tbWFuZE5hbWUiIC1UZXN0Q2FzZXMgQHsgSGVscCA9ICRIZWxwIH0gew0KCQkJKCRIZWxwLkV4YW1wbGVzLkV4YW1wbGUuUmVtYXJrcyB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDEpLlRleHQgfCBTaG91bGQgLU5vdCAtQmVOdWxsT3JFbXB0eQ0KCQl9DQogICAgICAgIA0KICAgICAgICBDb250ZXh0ICJUZXN0IHBhcmFtZXRlciBoZWxwIGZvciAkY29tbWFuZE5hbWUiIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgJGNvbW1vbiA9ICdEZWJ1ZycsICdFcnJvckFjdGlvbicsICdFcnJvclZhcmlhYmxlJywgJ0luZm9ybWF0aW9uQWN0aW9uJywgJ0luZm9ybWF0aW9uVmFyaWFibGUnLCAnT3V0QnVmZmVyJywgJ091dFZhcmlhYmxlJywgJ1BpcGVsaW5lVmFyaWFibGUnLCAnVmVyYm9zZScsICdXYXJuaW5nQWN0aW9uJywgJ1dhcm5pbmdWYXJpYWJsZScsICdQcm9ncmVzc0FjdGlvbicNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgJHBhcmFtZXRlcnMgPSAkY29tbWFuZC5QYXJhbWV0ZXJTZXRzLlBhcmFtZXRlcnMgfCBTb3J0LU9iamVjdCAtUHJvcGVydHkgTmFtZSAtVW5pcXVlIHwgV2hlcmUtT2JqZWN0IE5hbWUgLW5vdGluICRjb21tb24NCiAgICAgICAgICAgICRwYXJhbWV0ZXJOYW1lcyA9ICRwYXJhbWV0ZXJzLk5hbWUNCiAgICAgICAgICAgICRIZWxwUGFyYW1ldGVyTmFtZXMgPSAkSGVscC5QYXJhbWV0ZXJzLlBhcmFtZXRlci5OYW1lIHwgU29ydC1PYmplY3QgLVVuaXF1ZQ0KICAgICAgICAgICAgZm9yZWFjaCAoJHBhcmFtZXRlciBpbiAkcGFyYW1ldGVycykgew0KICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJOYW1lID0gJHBhcmFtZXRlci5OYW1lDQogICAgICAgICAgICAgICAgJHBhcmFtZXRlckhlbHAgPSAkSGVscC5wYXJhbWV0ZXJzLnBhcmFtZXRlciB8IFdoZXJlLU9iamVjdCBOYW1lIC1FUSAkcGFyYW1ldGVyTmFtZQ0KCQkJDQoJCQkJIyBTaG91bGQgYmUgYSBkZXNjcmlwdGlvbiBmb3IgZXZlcnkgcGFyYW1ldGVyDQoJCQkJSXQgImdldHMgaGVscCBmb3IgcGFyYW1ldGVyOiAkcGFyYW1ldGVyTmFtZSA6IGluICRjb21tYW5kTmFtZSIgLVRlc3RDYXNlcyBAeyBwYXJhbWV0ZXJIZWxwID0gJHBhcmFtZXRlckhlbHAgfSB7DQoJCQkJCSRwYXJhbWV0ZXJIZWxwLkRlc2NyaXB0aW9uLlRleHQgfCBTaG91bGQgLU5vdCAtQmVOdWxsT3JFbXB0eQ0KCQkJCX0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAkY29kZU1hbmRhdG9yeSA9ICRwYXJhbWV0ZXIuSXNNYW5kYXRvcnkudG9TdHJpbmcoKQ0KCQkJCUl0ICJoZWxwIGZvciAkcGFyYW1ldGVyTmFtZSBwYXJhbWV0ZXIgaW4gJGNvbW1hbmROYW1lIGhhcyBjb3JyZWN0IE1hbmRhdG9yeSB2YWx1ZSIgLVRlc3RDYXNlcyBAeyBwYXJhbWV0ZXJIZWxwID0gJHBhcmFtZXRlckhlbHA7IGNvZGVNYW5kYXRvcnkgPSAkY29kZU1hbmRhdG9yeSB9IHsNCgkJCQkJJHBhcmFtZXRlckhlbHAuUmVxdWlyZWQgfCBTaG91bGQgLUJlICRjb2RlTWFuZGF0b3J5DQoJCQkJfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGlmICgkSGVscFRlc3RTa2lwUGFyYW1ldGVyVHlwZVskY29tbWFuZE5hbWVdIC1jb250YWlucyAkcGFyYW1ldGVyTmFtZSkgeyBjb250aW51ZSB9DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgJGNvZGVUeXBlID0gJHBhcmFtZXRlci5QYXJhbWV0ZXJUeXBlLk5hbWUNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBpZiAoJHBhcmFtZXRlci5QYXJhbWV0ZXJUeXBlLklzRW51bSkgew0KICAgICAgICAgICAgICAgICAgICAjIEVudW1lcmF0aW9ucyBvZnRlbiBoYXZlIGlzc3VlcyB3aXRoIHRoZSB0eXBlbmFtZSBub3QgYmVpbmcgcmVsaWFibHkgYXZhaWxhYmxlDQogICAgICAgICAgICAgICAgICAgICRuYW1lcyA9ICRwYXJhbWV0ZXIuUGFyYW1ldGVyVHlwZTo6R2V0TmFtZXMoJHBhcmFtZXRlci5QYXJhbWV0ZXJUeXBlKQ0KCQkJCQkJIyBQYXJhbWV0ZXIgdHlwZSBpbiBIZWxwIHNob3VsZCBtYXRjaCBjb2RlDQoJCQkJCUl0ICJoZWxwIGZvciAkY29tbWFuZE5hbWUgaGFzIGNvcnJlY3QgcGFyYW1ldGVyIHR5cGUgZm9yICRwYXJhbWV0ZXJOYW1lIiAtVGVzdENhc2VzIEB7IHBhcmFtZXRlckhlbHAgPSAkcGFyYW1ldGVySGVscDsgbmFtZXMgPSAkbmFtZXMgfSB7DQoJCQkJCQkkcGFyYW1ldGVySGVscC5wYXJhbWV0ZXJWYWx1ZUdyb3VwLnBhcmFtZXRlclZhbHVlIHwgU2hvdWxkIC1iZSAkbmFtZXMNCgkJCQkJfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlaWYgKCRwYXJhbWV0ZXIuUGFyYW1ldGVyVHlwZS5GdWxsTmFtZSAtaW4gJEhlbHBUZXN0RW51bWVyYXRlZEFycmF5cykgew0KICAgICAgICAgICAgICAgICAgICAjIEVudW1lcmF0aW9ucyBvZnRlbiBoYXZlIGlzc3VlcyB3aXRoIHRoZSB0eXBlbmFtZSBub3QgYmVpbmcgcmVsaWFibHkgYXZhaWxhYmxlDQogICAgICAgICAgICAgICAgICAgICRuYW1lcyA9IFtFbnVtXTo6R2V0TmFtZXMoJHBhcmFtZXRlci5QYXJhbWV0ZXJUeXBlLkRlY2xhcmVkTWVtYmVyc1swXS5SZXR1cm5UeXBlKQ0KCQkJCQlJdCAiaGVscCBmb3IgJGNvbW1hbmROYW1lIGhhcyBjb3JyZWN0IHBhcmFtZXRlciB0eXBlIGZvciAkcGFyYW1ldGVyTmFtZSIgLVRlc3RDYXNlcyBAeyBwYXJhbWV0ZXJIZWxwID0gJHBhcmFtZXRlckhlbHA7IG5hbWVzID0gJG5hbWVzIH0gew0KCQkJCQkJJHBhcmFtZXRlckhlbHAucGFyYW1ldGVyVmFsdWVHcm91cC5wYXJhbWV0ZXJWYWx1ZSB8IFNob3VsZCAtYmUgJG5hbWVzDQoJCQkJCX0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICMgVG8gYXZvaWQgY2FsbGluZyBUcmltIG1ldGhvZCBvbiBhIG51bGwgb2JqZWN0Lg0KICAgICAgICAgICAgICAgICAgICAkaGVscFR5cGUgPSBpZiAoJHBhcmFtZXRlckhlbHAucGFyYW1ldGVyVmFsdWUpIHsgJHBhcmFtZXRlckhlbHAucGFyYW1ldGVyVmFsdWUuVHJpbSgpIH0NCgkJCQkJIyBQYXJhbWV0ZXIgdHlwZSBpbiBIZWxwIHNob3VsZCBtYXRjaCBjb2RlDQoJCQkJCUl0ICJoZWxwIGZvciAkY29tbWFuZE5hbWUgaGFzIGNvcnJlY3QgcGFyYW1ldGVyIHR5cGUgZm9yICRwYXJhbWV0ZXJOYW1lIiAtVGVzdENhc2VzIEB7IGhlbHBUeXBlID0gJGhlbHBUeXBlOyBjb2RlVHlwZSA9ICRjb2RlVHlwZSB9IHsNCgkJCQkJCSRoZWxwVHlwZSB8IFNob3VsZCAtYmUgJGNvZGVUeXBlDQoJCQkJCX0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmb3JlYWNoICgkaGVscFBhcm0gaW4gJEhlbHBQYXJhbWV0ZXJOYW1lcykgew0KCQkJCSMgU2hvdWxkbid0IGZpbmQgZXh0cmEgcGFyYW1ldGVycyBpbiBoZWxwLg0KCQkJCUl0ICJmaW5kcyBoZWxwIHBhcmFtZXRlciBpbiBjb2RlOiAkaGVscFBhcm0iIC1UZXN0Q2FzZXMgQHsgaGVscFBhcm0gPSAkaGVscFBhcm07IHBhcmFtZXRlck5hbWVzID0gJHBhcmFtZXRlck5hbWVzIH0gew0KCQkJCQkkaGVscFBhcm0gLWluICRwYXJhbWV0ZXJOYW1lcyB8IFNob3VsZCAtQmUgJHRydWUNCgkJCQl9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9AQlEAQAACUUBAAAGRgEAAA5IZWxwLlRlc3RzLnBzMQZHAQAAHHRlc3RzXGdlbmVyYWxcSGVscC5UZXN0cy5wczEJLQAAAAlJAQAACUoBAAABBAEAACIAAAAGSwEAANQVRGVzY3JpYmUgIlZhbGlkYXRpbmcgdGhlIG1vZHVsZSBtYW5pZmVzdCIgew0KCSRtb2R1bGVSb290ID0gKFJlc29sdmUtUGF0aCAiJGdsb2JhbDp0ZXN0cm9vdFwuLlzDvm5hbWXDviIpLlBhdGgNCgkkbWFuaWZlc3QgPSAoKEdldC1Db250ZW50ICIkbW9kdWxlUm9vdFzDvm5hbWXDvi5wc2QxIikgLWpvaW4gImBuIikgfCBJbnZva2UtRXhwcmVzc2lvbg0KCUNvbnRleHQgIkJhc2ljIHJlc291cmNlcyB2YWxpZGF0aW9uIiB7DQoJCSRmaWxlcyA9IEdldC1DaGlsZEl0ZW0gIiRtb2R1bGVSb290XGZ1bmN0aW9ucyIgLVJlY3Vyc2UgLUZpbGUgfCBXaGVyZS1PYmplY3QgTmFtZSAtbGlrZSAiKi5wczEiDQoJCUl0ICJFeHBvcnRzIGFsbCBmdW5jdGlvbnMgaW4gdGhlIHB1YmxpYyBmb2xkZXIiIC1UZXN0Q2FzZXMgQHsgZmlsZXMgPSAkZmlsZXM7IG1hbmlmZXN0ID0gJG1hbmlmZXN0IH0gew0KCQkJDQoJCQkkZnVuY3Rpb25zID0gKENvbXBhcmUtT2JqZWN0IC1SZWZlcmVuY2VPYmplY3QgJGZpbGVzLkJhc2VOYW1lIC1EaWZmZXJlbmNlT2JqZWN0ICRtYW5pZmVzdC5GdW5jdGlvbnNUb0V4cG9ydCB8IFdoZXJlLU9iamVjdCBTaWRlSW5kaWNhdG9yIC1MaWtlICc8PScpLklucHV0T2JqZWN0DQoJCQkkZnVuY3Rpb25zIHwgU2hvdWxkIC1CZU51bGxPckVtcHR5DQoJCX0NCgkJSXQgIkV4cG9ydHMgbm8gZnVuY3Rpb24gdGhhdCBpc24ndCBhbHNvIHByZXNlbnQgaW4gdGhlIHB1YmxpYyBmb2xkZXIiIC1UZXN0Q2FzZXMgQHsgZmlsZXMgPSAkZmlsZXM7IG1hbmlmZXN0ID0gJG1hbmlmZXN0IH0gew0KCQkJJGZ1bmN0aW9ucyA9IChDb21wYXJlLU9iamVjdCAtUmVmZXJlbmNlT2JqZWN0ICRmaWxlcy5CYXNlTmFtZSAtRGlmZmVyZW5jZU9iamVjdCAkbWFuaWZlc3QuRnVuY3Rpb25zVG9FeHBvcnQgfCBXaGVyZS1PYmplY3QgU2lkZUluZGljYXRvciAtTGlrZSAnPT4nKS5JbnB1dE9iamVjdA0KCQkJJGZ1bmN0aW9ucyB8IFNob3VsZCAtQmVOdWxsT3JFbXB0eQ0KCQl9DQoJCQ0KCQlJdCAiRXhwb3J0cyBub25lIG9mIGl0cyBpbnRlcm5hbCBmdW5jdGlvbnMiIC1UZXN0Q2FzZXMgQHsgbW9kdWxlUm9vdCA9ICRtb2R1bGVSb290OyBtYW5pZmVzdCA9ICRtYW5pZmVzdCB9IHsNCgkJCSRmaWxlcyA9IEdldC1DaGlsZEl0ZW0gIiRtb2R1bGVSb290XGludGVybmFsXGZ1bmN0aW9ucyIgLVJlY3Vyc2UgLUZpbGUgLUZpbHRlciAiKi5wczEiDQoJCQkkZmlsZXMgfCBXaGVyZS1PYmplY3QgQmFzZU5hbWUgLUluICRtYW5pZmVzdC5GdW5jdGlvbnNUb0V4cG9ydCB8IFNob3VsZCAtQmVOdWxsT3JFbXB0eQ0KCQl9DQoJfQ0KCQ0KCUNvbnRleHQgIkluZGl2aWR1YWwgZmlsZSB2YWxpZGF0aW9uIiB7DQoJCUl0ICJUaGUgcm9vdCBtb2R1bGUgZmlsZSBleGlzdHMiIC1UZXN0Q2FzZXMgQHsgbW9kdWxlUm9vdCA9ICRtb2R1bGVSb290OyBtYW5pZmVzdCA9ICRtYW5pZmVzdCB9IHsNCgkJCVRlc3QtUGF0aCAiJG1vZHVsZVJvb3RcJCgkbWFuaWZlc3QuUm9vdE1vZHVsZSkiIHwgU2hvdWxkIC1CZSAkdHJ1ZQ0KCQl9DQoJCQ0KCQlmb3JlYWNoICgkZm9ybWF0IGluICRtYW5pZmVzdC5Gb3JtYXRzVG9Qcm9jZXNzKQ0KCQl7DQoJCQlJdCAiVGhlIGZpbGUgJGZvcm1hdCBzaG91bGQgZXhpc3QiIC1UZXN0Q2FzZXMgQHsgbW9kdWxlUm9vdCA9ICRtb2R1bGVSb290OyBmb3JtYXQgPSAkZm9ybWF0IH0gew0KCQkJCVRlc3QtUGF0aCAiJG1vZHVsZVJvb3RcJGZvcm1hdCIgfCBTaG91bGQgLUJlICR0cnVlDQoJCQl9DQoJCX0NCgkJDQoJCWZvcmVhY2ggKCR0eXBlIGluICRtYW5pZmVzdC5UeXBlc1RvUHJvY2VzcykNCgkJew0KCQkJSXQgIlRoZSBmaWxlICR0eXBlIHNob3VsZCBleGlzdCIgLVRlc3RDYXNlcyBAeyBtb2R1bGVSb290ID0gJG1vZHVsZVJvb3Q7IHR5cGUgPSAkdHlwZSB9IHsNCgkJCQlUZXN0LVBhdGggIiRtb2R1bGVSb290XCR0eXBlIiB8IFNob3VsZCAtQmUgJHRydWUNCgkJCX0NCgkJfQ0KCQkNCgkJZm9yZWFjaCAoJGFzc2VtYmx5IGluICRtYW5pZmVzdC5SZXF1aXJlZEFzc2VtYmxpZXMpDQoJCXsNCiAgICAgICAgICAgIGlmICgkYXNzZW1ibHkgLWxpa2UgIiouZGxsIikgew0KICAgICAgICAgICAgICAgIEl0ICJUaGUgZmlsZSAkYXNzZW1ibHkgc2hvdWxkIGV4aXN0IiAtVGVzdENhc2VzIEB7IG1vZHVsZVJvb3QgPSAkbW9kdWxlUm9vdDsgYXNzZW1ibHkgPSAkYXNzZW1ibHkgfSB7DQogICAgICAgICAgICAgICAgICAgIFRlc3QtUGF0aCAiJG1vZHVsZVJvb3RcJGFzc2VtYmx5IiB8IFNob3VsZCAtQmUgJHRydWUNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICBJdCAiVGhlIGZpbGUgJGFzc2VtYmx5IHNob3VsZCBsb2FkIGZyb20gdGhlIEdBQyIgLVRlc3RDYXNlcyBAeyBtb2R1bGVSb290ID0gJG1vZHVsZVJvb3Q7IGFzc2VtYmx5ID0gJGFzc2VtYmx5IH0gew0KICAgICAgICAgICAgICAgICAgICB7IEFkZC1UeXBlIC1Bc3NlbWJseU5hbWUgJGFzc2VtYmx5IH0gfCBTaG91bGQgLU5vdCAtVGhyb3cNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCgkJDQoJCWZvcmVhY2ggKCR0YWcgaW4gJG1hbmlmZXN0LlByaXZhdGVEYXRhLlBTRGF0YS5UYWdzKQ0KCQl7DQoJCQlJdCAiVGFncyBzaG91bGQgaGF2ZSBubyBzcGFjZXMgaW4gbmFtZSIgLVRlc3RDYXNlcyBAeyB0YWcgPSAkdGFnIH0gew0KCQkJCSR0YWcgLW1hdGNoICIgIiB8IFNob3VsZCAtQmUgJGZhbHNlDQoJCQl9DQoJCX0NCgl9DQp9AQlMAQAACU0BAAAGTgEAABJNYW5pZmVzdC5UZXN0cy5wczEGTwEAACB0ZXN0c1xnZW5lcmFsXE1hbmlmZXN0LlRlc3RzLnBzMQktAAAACVEBAAAJUgEAAAEFAQAAIgAAAAZTAQAA5QxbQ21kbGV0QmluZGluZygpXQ0KUGFyYW0gKA0KCVtzd2l0Y2hdDQoJJFNraXBUZXN0LA0KDQoJW3N0cmluZ1tdXQ0KCSRDb21tYW5kUGF0aCA9IEAoIiRnbG9iYWw6dGVzdHJvb3RcLi5cw75uYW1lw75cZnVuY3Rpb25zIiwgIiRnbG9iYWw6dGVzdHJvb3RcLi5cw75uYW1lw75caW50ZXJuYWxcZnVuY3Rpb25zIikNCikNCg0KQmVmb3JlRGlzY292ZXJ5IHsNCglpZiAoJFNraXBUZXN0KSB7IHJldHVybiB9DQoNCgkkZ2xvYmFsOl9fcGVzdGVyX2RhdGEuU2NyaXB0QW5hbHl6ZXIgPSBOZXctT2JqZWN0IFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QNCg0KCSMgQ3JlYXRlIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHBhdGggYW5kIGJhc2VuYW1lIG9mIGFsbCBmaWxlcyB0byB0ZXN0DQoJJGNvbW1hbmRGaWxlcyA9ICRDb21tYW5kUGF0aCB8IEZvckVhY2gtT2JqZWN0IHsNCgkJR2V0LUNoaWxkSXRlbSAtUGF0aCAkXyAtUmVjdXJzZSB8IFdoZXJlLU9iamVjdCBOYW1lIC1saWtlICIqLnBzMSINCgl9IHwgRm9yRWFjaC1PYmplY3Qgew0KCQlAew0KCQkJQmFzZU5hbWUgPSAkXy5CYXNlTmFtZQ0KCQkJRnVsbE5hbWUgPSAkXy5GdWxsTmFtZQ0KCQl9DQoJfQ0KDQoJIyBDcmVhdGUgYW4gYXJyYXkgY29udGFpbiBhbGwgcnVsZXMNCgkkc2NyaXB0QW5hbHl6ZXJSdWxlcyA9IEdldC1TY3JpcHRBbmFseXplclJ1bGUgfCBGb3JFYWNoLU9iamVjdCB7DQoJCUB7DQoJCQlSdWxlTmFtZSA9ICRfLlJ1bGVOYW1lDQoJCX0NCgl9DQp9DQoNCkRlc2NyaWJlICdJbnZva2luZyBQU1NjcmlwdEFuYWx5emVyIGFnYWluc3QgY29tbWFuZGJhc2UnIHsNCg0KCUNvbnRleHQgIkFuYWx5emluZyA8QmFzZU5hbWU+IiAtRm9yRWFjaCAkY29tbWFuZEZpbGVzIHsNCgkJQmVmb3JlQWxsIHsNCgkJCSRhbmFseXNpcyA9IEludm9rZS1TY3JpcHRBbmFseXplciAtUGF0aCAkRnVsbE5hbWUgLUV4Y2x1ZGVSdWxlIFBTQXZvaWRUcmFpbGluZ1doaXRlc3BhY2UsIFBTU2hvdWxkUHJvY2Vzcw0KCQl9DQoNCgkJSXQgIlNob3VsZCBwYXNzIDxSdWxlTmFtZT4iIC1Gb3JlYWNoICRzY3JpcHRBbmFseXplclJ1bGVzIHsNCgkJCSMgVGVzdCBpZiB0aGUgcnVsZSBpcyBwcmVzZW50IGFuZCBpZiBzbyBjcmVhdGUgYSBzdHJpbmcgY29udGFpbmluZyBtb3JlIGluZm8gd2hpY2ggd2lsbCBiZSBzaG93biBpbiB0aGUgZGV0YWlscyBvZiB0aGUgdGVzdCBvdXRwdXQuIElmIGl0J3MgZW1wdHkgdGhlIHRlc3QgaXMgc3VjY2VzZnVsbCBhcyB0aGVyZSBpcyBubyBwcm9ibGVtIHdpdGggdGhpcyBydWxlLg0KCQkJJGFuYWx5c2lzIHwgV2hlcmUtT2JqZWN0IFJ1bGVOYW1lIC1FUSAkUnVsZU5hbWUgfCBGb3JlYWNoLU9iamVjdCB7DQoJCQkJIyBDcmVhdGUgYSBzdHJpbmcNCgkJCQkiJCgkXy5TZXZlcml0eSkgYXQgTGluZSAkKCRfLkxpbmUpIENvbHVtbiAkKCRfLkNvbHVtbikgd2l0aCAnJCgkXy5FeHRlbnQpJyINCgkJCQkjIEFkZCB0aGUgZGF0YSAoYW5kIHN1cHJlc3MgdGhlIG91dHB1dCkgdG8gdGhlIGdsb2JhbCB2YXJpYWJsZSBmb3IgbGF0ZXIgdXNlDQoJCQkJJG51bGwgPSAkZ2xvYmFsOl9fcGVzdGVyX2RhdGEuU2NyaXB0QW5hbHl6ZXIuQWRkKCRfKQ0KCQkJfSB8IFNob3VsZCAtQmVOdWxsT3JFbXB0eQ0KCQl9DQoJfQ0KfQEJVAEAAAlVAQAABlYBAAAaUFNTY3JpcHRBbmFseXplci5UZXN0cy5wczEGVwEAACh0ZXN0c1xnZW5lcmFsXFBTU2NyaXB0QW5hbHl6ZXIuVGVzdHMu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</BA> </MS> </Obj> </Objs> |