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tJFDAAAAAAAAAAAAAAAAADwMAAASAAAAAAAAAAAAAAAAAAAAAAAAAE4LAAASAAAAAAAAAAAAAAAAAAAAAAAAAHAIAAASAAAAAAAAAAAAAAAAAAAAAAAAAO0BAAASAAAAAAAAAAAAAAAAAAAAAAAAAGsKAAASAAAAAAAAAAAAAAAAAAAAAAAAAJAIAAASAAAAAAAAAAAAAAAAAAAAAAAAAIkMAAASAAAAAAAAAAAAAAAAAAAAAAAAAKQKAAASAAAAAAAAAAAAAAAAAAAAAAAAAOkKAAASAAAAAAAAAAAAAAAAAAAAAAAAAFEBAAASAAAAAAAAAAAAAAAAAAAAAAAAAFgFAAASAAAAAAAAAAAAAAAAAAAAAAAAAKsLAAASAAAAAAAAAAAAAAAAAAAAAAAAAIIJAAASAAAAAAAAAAAAAAAAAAAAAAAAAJELAAASAAAAAAAAAAAAAAAAAAAAAAAAAOsGAAASAAAAAAAAAAAAAAAAAAAAAAAAAH8FAAARABkAwENvAAAAAAAAAgAAAAAAABICAAASAAAAAAAAAAAAAAAAAAAAAAAAAF0IAAASAAAAAAAAAAAAAAAAAAAAAAAAAHYMAAASAA4AsI1DAAAAAAARAAAAAAAAAHoIAAASAAAAAAAAAAAAAAAAAAAAAAAAAKUFAAARABkAwEpvAAAAAAAAAQAAAAAAAM4LAAARABkA4EtvAAAAAAAIAAAAAAAAAAkCAAASAAAAAAAAAAAAAAAAAAAAAAAAAKgEAAASAAAAAAAAAAAAAAAAAAAAAAAAAFEEAAASAAAAAAAAAAAAAAAAAAAAAAAAAN0BAAASAAAAAAAAAAAAAAAAAAAAAAAAAPYKAAASAAAAAAAAAAAAAAAAAAAAAAAAANQMAAASAAAAAAAAAAAAAAAAAAAAAAAAAKwJAAASAAAAAAAAAAAAAAAAAAAAAAAAAA8JAAASAAAAAAAAAAAAAAAAAAAAAAAAAL0BAAASAAAAAAAAAAAAAAAAAAAAAAAAAP8BAAASAAAAAAAAAAAAAAAAAAAAAAAAACoJAAASAAAAAAAAAAAAAAAAAAAAAAAAAIsKAAASAAAAAAAAAAAAAAAAAAAAAAAAAJgLAAASAAAAAAAAAAAAAAAAAAAAAAAAAOcGAAASAAAAAAAAAAAAAAAAAAAAAAAAAJsKAAASAAAAAAAAAAAAAAAAAAAAAAAAAHsEAAASAAAAAAAAAAAAAAAAAAAAAAAAAJcGAAASAAAAAAAAAAAAAAAAAAAAAAAAAJcHAAASAAAAAAAAAAAAAAAAAAAAAAAAANAFAAASAAAAAAAAAAAAAAAAAAAAAAAAAKEJAAASAAAAAAAAAAAAAAAAAAAAAAAAAGMDAAASAAAAAAAAAAAAAAAAAAAAAAAAAPMMAAAQAPH/YENvAAAAAAAAAAAAAAAAAEoDAAASAAAAAAAAAAAAAAAAAAAAAAAAADsJAAASAAAAAAAAAAAAAAAAAAAAAAAAAL0HAAASAAAAAAAAAAAAAAAAAAAAAAAAACkLAAASAAAAAAAAAAAAAAAAAAAAAAAAABkCAAASAAAAAAAAAAAAAAAAAAAAAAAAANwLAAASAA4A0I1DAAAAAAAVAAAAAAAAAJAEAAASAAAAAAAAAAAAAAAAAAAAAAAAAJIBAAASAAAAAAAAAAAAAAAAAAAAAAAAAI8DAAASAAAAAAAAAAAAAAAAAAAAAAAAAEkMAAARABgAUENvAAAAAAAIAAAAAAAAADQMAAASAAAAAAAAAAAAAAAAAAAAAAAAABsLAAASAAAAAAAAAAAAAAAAAAAAAAAAAOkIAAASAAAAAAAAAAAAAAAAAAAAAAAAANsDAAASAAAAAAAAAAAAAAAAAAAAAAAAAEwHAAASAAAAAAAAAAAAAAAAAAAAAAAAAEIEAAASAAAAAAAAAAAAAAAAAAAAAAAAACoAAAASAAAAAAAAAAAAAAAAAAAAAAAAANYAAAASAAAAAAAAAAAAAAAAAAAAAAAAAEcIAAASAAAAAAAAAAAAAAAAAAAAAAAAADoJAAASAAAAAAAAAAAAAAAAAAAAAAAAAGcLAAARABkAgENvAAAAAAAIAAAAAAAAAJcCAAASAAAAAAAAAAAAAAAAAAAAAAAAANwEAAASAAAAAAAAAAAAAAAAAAAAAAAAACIDAAASAAAAAAAAAAAAAAAAAAAAAAAAAJ4EAAASAAAAAAAAAAAAAAAAAAAAAAAAALILAAASAA4AII9DAAAAAAAwAAAAAAAAAA0HAAASAAAAAAAAAAAAAAAAAAAAAAAAACcEAAASAAAAAAAAAAAAAAAAAAAAAAAAADULAAASAAAAAAAAAAAAAAAAAAAAAAAAADEKAAASAAAAAAAAAAAAAAAAAAAAAAAAAC4LAAASAAAAAAAAAAAAAAAAAAAAAAAAAHgGAAASAAAAAAAAAAAAAAAAAAAAAAAAAD0FAAASAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAF4AAAARABkAAEZvAAAAAABgBAAAAAAAAKgIAAASAAAAAAAAAAAAAAAAAAAAAAAAAKIGAAASAAAAAAAAAAAAAAAAAAAAAAAAAP8FAAASAAAAAAAAAAAAAAAAAAAAAAAAAGEFAAASAAAAAAAAAAAAAAAAAAAAAAAAAAUKAAASAAAAAAAAAAAAAAAAAAAAAAAAABALAAASAAAAAAAAAAAAAAAAAAAAAAAAAHcDAAASAAAAAAAAAAAAAAAAAAAAAAAAAP8LAAASAAAAAAAAAAAAAAAAAAAAAAAAAGcBAAASAAAAAAAAAAAAAAAAAAAAAAAAAMwGAAASAAAAAAAAAAAAAAAAAAAAAAAAAGYMAAASAAAAAAAAAAAAAAAAAAAAAAAAAPEDAAASAAAAAAAAAAAAAAAAAAAAAAAAAO0LAAASAA4A8I1DAAAAAAAkAQAAAAAAAJ0MAAARABkAwEtvAAAAAAAEAAAAAAAAAAcBAAASAAAAAAAAAAAAAAAAAAAAAAAAAAsMAAASAAAAAAAAAAAAAAAAAAAAAAAAAOMKAAARABkAsENvAAAAAAAIAAAAAAAAAD0LAAASAAAAAAAAAAAAAAAAAAAAAAAAALQKAAASAAAAAAAAAAAAAAAAAAAAAAAAAFQLAAASAAAAAAAAAAAAAAAAAAAAAAAAAFkGAAASAAAAAAAAAAAAAAAAAAAAAAAAACIIAAASAAAAsEVAAAAAAAAAAAAAAAAAADcCAAASAAAAAAAAAAAAAAAAAAAAAAAAAJQMAAASAAAAAAAAAAAAAAAAAAAAAAAAAGUEAAASAAAAAAAAAAAAAAAAAAAAAAAAAEAJAAASAAAAAAAAAAAAAAAAAAAAAAAAAH8LAAASAAAAAAAAAAAAAAAAAAAAAAAAAL0MAAASAAAAAAAAAAAAAAAAAAAAAAAAAPgEAAASAAAAAAAAAAAAAAAAAAAAAAAAAG4LAAASAAAAAAAAAAAAAAAAAAAAAAAAAAsLAAASAAAAAAAAAAAAAAAAAAAAAAAAAB0FAAASAAAA0EVAAAAAAAAAAAAAAAAAAKMHAAASAAAAAAAAAAAAAAAAAAAAAAAAAG4MAAASAAAAAAAAAAAAAAAAAAAAAAAAAEYGAAASAAAAAAAAAAAAAAAAAAAAAAAAAKgDAAASAAAAAAAAAAAAAAAAAAAAAAAAADIDAAASAAAAAAAAAAAAAAAAAAAAAAAAAH4LAAASAAAAAAAAAAAAAAAAAAAAAAAAANULAAASAAAAAAAAAAAAAAAAAAAAAAAAANUKAAASAAAAAAAAAAAAAAAAAAAAAAAAALECAAASAAAAAAAAAAAAAAAAAAAAAAAAABAIAAASAAAAAAAAAAAAAAAAAAAAAAAAAAQLAAASAAAAAAAAAAAAAAAAAAAAAAAAAOwHAAASAAAAAAAAAAAAAAAAAAAAAAAAAG8AAAASAAAAAAAAAAAAAAAAAAAAAAAAACQBAAASAAAAAAAAAAAAAAAAAAAAAAAAAFsLAAASAAAAAAAAAAAAAAAAAAAAAAAAAGgHAAASAAAAAAAAAAAAAAAAAAAAAAAAAPEGAAASAAAAAAAAAAAAAAAAAAAAAAAAAH0KAAASAAAAAAAAAAAAAAAAAAAAAAAAAMcLAAARABkAwEVvAAAAAAAIAAAAAAAAAEsAAAASAAAAoEVAAAAAAAAAAAAAAAAAAMkCAAASAAAAAAAAAAAAAAAAAAAAAAAAAP0KAAASAAAAAAAAAAAAAAAAAAAAAAAAAFYKAAASAAAAAAAAAAAAAAAAAAAAAAAAAOcCAAASAAAAAAAAAAAAAAAAAAAAAAAAABIMAAASAA4A0I9DAAAAAAAmAAAAAAAAAAYNAAAQAPH/QGBvAAAAAAAAAAAAAAAAANsKAAASAAAAAAAAAAAAAAAAAAAAAAAAADIGAAASAAAAAAAAAAAAAAAAAAAAAAAAAMsKAAASAAAAAAAAAAAAAAAAAAAAAAAAAKQMAAASAAAAAAAAAAAAAAAAAAAAAAAAAMsMAAASAAAAAAAAAAAAAAAAAAAAAAAAAO0AAAASAAAAAAAAAAAAAAAAAAAAAAAAAPoMAAAQAPH/YENvAAAAAAAAAAAAAAAAALIFAAASAAAAAAAAAAAAAAAAAAAAAAAAAMQGAAASAAAAAAAAAAAAAAAAAAAAAAAAAAYDAAASAAAAAAAAAAAAAAAAAAAAAAAAAM8CAAASAAAAAAAAAAAAAAAAAAAAAAAAAHQLAAASAAAAAAAAAAAAAAAAAAAAAAAAAIQBAAASAAAAAAAAAAAAAAAAAAAAAAAAACcMAAASAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAASAAAAAAAAAAAAAAAAAAAAAAAAAC8MAAASAAAAAAAAAAAAAAAAAAAAAAAAALIBAAASAAAAAAAAAAAAAAAAAAAAAAAAANsHAAASAAAAAAAAAAAAAAAAAAAAAAAAAIQLAAASAAAAAAAAAAAAAAAAAAAAAAAAAOIFAAASAAAAAAAAAAAAAAAAAAAAAAAAAIoLAAASAAAAAAAAAAAAAAAAAAAAAAAAALUDAAASAAAAAAAAAAAAAAAAAAAAAAAAAC4MAAASAAAAAAAAAAAAAAAAAAAAAAAAAKwGAAASAAAAAAAAAAAAAAAAAAAAAAAAAGYJAAASAAAAAAAAAAAAAAAAAAAAAAAAAMMGAAASAAAAAAAAAAAAAAAAAAAAAAAAAJMKAAASAAAAAAAAAAAAAAAAAAAAAAAAAMQCAAASAAAAAAAAAAAAAAAAAAAAAAAAAJcAAAASAAAAAAAAAAAAAAAAAAAAAAAAAJoIAAASAAAAAAAAAAAAAAAAAAAAAAAAAC8HAAASAAAAAAAAAAAAAAAAAAAAAAAAAMkEAAASAAAAAAAAAAAAAAAAAAAAAAAAAIUMAAASAAAAAAAAAAAAAAAAAAAAAAAAAIECAAASAAAAAAAAAAAAAAAAAAAAAAAAAOgJAAASAAAAAAAAAAAAAAAAAAAAAAAAAOUMAAASAA4AUI9DAAAAAAB9AAAAAAAAACoCAAASAAAAAAAAAAAAAAAAAAAAAAAAADsMAAASAAAAAAAAAAAAAAAAAAAAAAAAAFgCAAASAAAAAAAAAAAAAAAAAAAAAAAAAKALAAASAAAAAAAAAAAAAAAAAAAAAAAAAJkBAAASAAAAAAAAAAAAAAAAAAAAAAAAAK8KAAASAAAAAAAAAAAAAAAAAAAAAAAAAE0JAAASAAAAAAAAAAAAAAAAAAAAAAAAABULAAASAAAAAAAAAAAAAAAAAAAAAAAAAGUKAAASAAAAAAAAAAAAAAAAAAAAAAAAANEIAAASAAAAAAAAAAAAAAAAAAAAAAAAALwKAAARABkAuENvAAAAAAAEAAAAAAAAAPwCAAASAAAAAAAAAAAAAAAAAAAAAAAAAHkCAAASAAAAAAAAAAAAAAAAAAAAAAAAAEgCAAASAAAAAAAAAAAAAAAAAAAAAAAAAMMKAAASAAAAAAAAAAAAAAAAAAAAAAAAAAgFAAASAAAAAAAAAAAAAAAAAAAAAAAAALoIAAASAAAAAAAAAAAAAAAAAAAAAAAAAKYCAAASAAAAAAAAAAAAAAAAAAAAAAAAAK4KAAASAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAASAAAAAAAAAAAAAAAAAAAAAAAAABcKAAASAAAAAAAAAAAAAAAAAAAAAAAAAMQJAAASAAAAAAAAAAAAAAAAAAAAAAAAAIQKAAASAAAAAAAAAAAAAAAAAAAAAAAAAPcHAAASAAAAAAAAAAAAAAAAAAAAAAAAAPYIAAASAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAASAAAAAAAAAAAAAAAAAAAAAAAAACILAAASAAAAAAAAAAAAAAAAAAAAAAAAAK0AAAASAAAAAAAAAAAAAAAAAAAAAAAAADMIAAARABkAgEpvAAAAAAAEAAAAAAAAAIwFAAASAAAAAAAAAAAAAAAAAAAAAAAAAPEKAAASAAAAAAAAAAAAAAAAAAAAAAAAABgHAAASAAAAAAAAAAAAAAAAAAAAAAAAABkGAAARABkAoENvAAAAAAAEAAAAAAAAABECAAASAAAAwEVAAAAAAAAAAAAAAAAAAFsFAAASAAsAeEVAAAAAAAAAAAAAAAAAAHsHAAASAAAAAAAAAAAAAAAAAAAAAAAAALEEAAASAAAAAAAAAAAAAAAAAAAAAAAAAF4KAAASAAAAAAAAAAAAAAAAAAAAAAAAAPwJAAASAAAAAAAAAAAAAAAAAAAAAAAAAEMMAAASAAAAAAAAAAAAAAAAAAAAAAAAAHoCAAASAAAAAAAAAAAAAAAAAAAAAAAAAABsaWJiZmQtMi4yNy4wLjIwMTcwMzE1LnNvAF9fZ21vbl9zdGFydF9fAGJmZF9zZWN0aW9uX2FscmVhZHlfbGlua2VkX3RhYmxlX2ZyZWUAYmZkX3NldF9lcnJvcgBfYmZkX3N0ZF9zZWN0aW9uAG9iamFsbG9jX2ZyZWVfYmxvY2sAYmZkX2hhc2hfdGFibGVfZnJlZQBiZmRfaGFzaF90YWJsZV9pbml0X24AYmZkX3ByaW50YWJsZV9uYW1lAGJmZF9saW5rX2NoZWNrX3JlbG9jcwBiZmRfc2V0X2RlZmF1bHRfdGFyZ2V0AGJmZF9lbGZfZ2V0X2R5bl9saWJfY2xhc3MAYmZkX29wZW5yX25leHRfYXJjaGl2ZWRfZmlsZQBiZmRfcHV0bDY0AF9iZmRfZWxmX21hcF9zZWN0aW9uc190b19zZWdtZW50cwBiZmRfc2V0X2Vycm9yX2hhbmRsZXIAYmZkX2dldF9uZXh0X3NlY3Rpb25fYnlfbmFtZQBiZmRfc2Nhbl9hcmNoAGNvbmNhdABiZmRfZWxmX2dldF9ydW5wYXRoX2xpc3QAYmZkX2Vycm1zZwBiZmRfZWxmX3NpemVfZHluc3ltX2hhc2hfZHluc3RyAGJmZF9yZWNvcmRfcGhkcgBiZmRfc2V0X2FyY2hfaW5mbwBodGFiX2ZpbmQAeGNhbGxvYwB4bWFsbG9jAGJmZF9jaGVja19mb3JtYXQAYmZkX2dldF9hcmNoAGJmZF9jcmVhdGUAX2ZpbmkAYmZkX2dldF9ncF9zaXplAGJmZF9tYWtlX3dyaXRhYmxlAGJmZF9zZXRfc3ltdGFiAHhzdHJkdXAAYmZkX3JlbG9jX3R5cGVfbG9va3VwAGh0YWJfZmluZF9zbG90AGJmZF9id3JpdGUAYmZkX2Nsb3NlX2FsbF9kb25lAF9iZmRfYWJvcnQAYmZkX2dldF9yZWxvY19jb2RlX25hbWUAYmZkX2xpbmtfaGFzaF9sb29rdXAAYmZkX2FsbG9jAGJmZF9lbGZfZ2V0X2JmZF9uZWVkZWRfbGlzdABiZmRfc2V0X2dwX3NpemUAYmZkX2VsZl9nZXRfbmVlZGVkX2xpc3QAeG1hbGxvY19zZXRfcHJvZ3JhbV9uYW1lAGJmZF9jYWNoZV9jbG9zZV9hbGwAYmZkX21ha2Vfc2VjdGlvbl9hbnl3YXkAYmZkX2NoZWNrX2Zvcm1hdF9tYXRjaGVzAGZpbGVuYW1lX2NtcABiZmRfc2VjdGlvbl9hbHJlYWR5X2xpbmtlZF90YWJsZV9pbml0AGJmZF9zZWFyY2hfZm9yX3RhcmdldABfYmZkX2VsZl90bHNfc2V0dXAAYmZkX21ha2Vfc2VjdGlvbl9hbnl3YXlfd2l0aF9mbGFncwBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZV9pZgBiZmRfc2V0X2Zvcm1hdABiZmRfaGFzaF90YWJsZV9pbml0AGJmZF9zZXRfc3RhcnRfYWRkcmVzcwBtYWtlX3JlbGF0aXZlX3ByZWZpeABmaWxlbmFtZV9uY21wAGxyZWFscGF0aABiZmRfc3RhdABiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZQBiZmRfbmV3X2xpbmtfb3JkZXIAYmZkX2dldF91bmlxdWVfc2VjdGlvbl9uYW1lAGJmZF90YXJnZXRfbGlzdABiZmRfZWxmX2Rpc2NhcmRfaW5mbwBfYmZkX2VsZl9tYXRjaF9zZWN0aW9uc19ieV90eXBlAGJmZF9zZXRfZXJyb3JfcHJvZ3JhbV9uYW1lAGJmZF9pbml0AGJmZF9lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zAF9zY2hfaXN0YWJsZQBjcGx1c19kZW1hbmdsZV9zZXRfc3R5bGUAX3NjaF90b2xvd2VyAGJmZF9nZW5lcmljX2xpbmtfcmVhZF9zeW1ib2xzAGJmZF9oYXNoX3RyYXZlcnNlAGJmZF93cmFwcGVkX2xpbmtfaGFzaF9sb29rdXAAYmZkX2hhc2hfc2V0X2RlZmF1bHRfc2l6ZQBjdXJyZW50X2RlbWFuZ2xpbmdfc3R5bGUAYmZkX3BsdWdpbl90YXJnZXRfcABiZmRfbGlua19hZGRfdW5kZWYAX2JmZF9lbGZfbGlua19oYXNoX2hpZGVfc3ltYm9sAGJmZF9lbGZfcmVjb3JkX2xpbmtfYXNzaWdubWVudABiZmRfZ2V0YjE2AGxiYXNlbmFtZQBiZmRfc2V0X2Fzc2VydF9oYW5kbGVyAHhyZWFsbG9jAF9iZmRfZml4X2V4Y2x1ZGVkX3NlY19zeW1zAGJmZF9jbG9zZQByZWdpc3Rlcl9sZF9wbHVnaW5fb2JqZWN0X3AAYmZkX2dldGIzMgBiZmRfbGlua19oYXNoX3RyYXZlcnNlAGNwbHVzX2RlbWFuZ2xlX25hbWVfdG9fc3R5bGUAYmZkX2VtdWxfc2V0X2NvbW1vbnBhZ2VzaXplAHVubGlua19pZl9vcmRpbmFyeQBiZmRfbWFrZV9zZWN0aW9uX3dpdGhfZmxhZ3MAaHRhYl9jcmVhdGUAYmZkX2dldF9yZWxvY191cHBlcl9ib3VuZABiZmRfYXJjaF9tYWNoX29jdGV0c19wZXJfYnl0ZQBodGFiX2hhc2hfc3RyaW5nAGJmZF9nZXRiNjQAYmZkX2VtdWxfZ2V0X21heHBhZ2VzaXplAGJmZF9oYXNoX2FsbG9jYXRlAGJmZF9oYXNoX25ld2Z1bmMAYmZkX3VzZV9yZXNlcnZlZF9pZABiZmRfZWxmX2dldF9kdF9zb25hbWUAYmZkX2dldF9yZWxvY19zaXplAGJmZF9vcGVucgBiZmRfbWFwX292ZXJfc2VjdGlvbnMAYmZkX29wZW53AGJmZF9nZXRfZXJyb3IAYmZkX2dldF9hcmNoX2luZm8AYmZkX2Nhbm9uaWNhbGl6ZV9yZWxvYwBiZmRfaGlkZV9zeW1fYnlfdmVyc2lvbgBiZmRfZGVtYW5nbGUAYmZkX2VtdWxfc2V0X21heHBhZ2VzaXplAGJmZF9lbGZfc2V0X2R0X25lZWRlZF9uYW1lAGJmZF9oYXNoX2xvb2t1cAB4ZXhpdABiZmRfc2Nhbl92bWEAYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzAGJmZF9lbXVsX2dldF9jb21tb25wYWdlc2l6ZQBiZmRfZWxmX3BhcnNlX2VoX2ZyYW1lX2VudHJpZXMAYmZkX3B1dGwxNgBiZmRfYXJjaF9nZXRfY29tcGF0aWJsZQBiZmRfaTM4NmxpbnV4X3NpemVfZHluYW1pY19zZWN0aW9ucwBiZmRfb2N0ZXRzX3Blcl9ieXRlAGJmZF9zZWVrAGJmZF9tYWtlX3JlYWRhYmxlAGJmZF9lbGZfc2V0X2R5bl9saWJfY2xhc3MAYmZkX3B1dGwzMgBfeGV4aXRfY2xlYW51cABsaWJkbC5zby4yAGRsY2xvc2UAZGxvcGVuAGRsc3ltAGRsZXJyb3IAbGliYy5zby42AGZmbHVzaABzdHJjcHkAZm5tYXRjaABzcHJpbnRmAF9JT19wdXRjAHNldGxvY2FsZQBmb3BlbgBzdHJuY21wAG9wdGluZABzdHJyY2hyAGRjZ2V0dGV4dABmdGVsbABwdXRjaGFyAHN0ZGluAHN0cnBicmsAc2JyawByZXdpbmQAc3RydG9sAGlzYXR0eQBtbWFwAGZlb2YAZmdldHMAc3RybGVuAG1lbXNldABnbG9iAHN0cnN0cgBzdHJjc3BuAF9fZXJybm9fbG9jYXRpb24AZnNlZWsAbWVtY21wAGdldHBhZ2VzaXplAHN0ZG91dABmcHV0YwBnZXRydXNhZ2UAZnB1dHMA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/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JfrjLgBmkP8l+uMuAGaQ/yX64y4AZpD/JQLkLgBmkP8lAuQuAGaQ/yUC5C4AZpD/JQLkLgBmkP8lAuQuAGaQ/yUC5C4AZpD/JQLkLgBmkP8lAuQuAGaQ/yUC5C4AZpD/JQLkLgBmkP8lAuQuAGaQ/yUC5C4AZpD/JQLkLgBmkP8lAuQuAGaQ/yUC5C4AZpD/JQLkLgBmkP8lCuQuAGaQ/yUK5C4AZpD/JQrkLgBmkP8lCuQuAGaQ/yUK5C4AZpD/JQrkLgBmkP8lCuQuAGaQ/yUK5C4AZpD/JQrkLgBmkP8lCuQuAGaQ/yUK5C4AZpD/JQrkLgBmkP8lCuQuAGaQ/yUK5C4AZpD/JQrkLgBmkP8lCuQuAGaQ/yUK5C4AZpD/JQrkLgBmkP8lCuQuAGaQ/yUK5C4AZpD/JQrkLgBmkP8lCuQuAGaQ/yUS5C4AZpD/JRLkLgBmkP8lEuQuAGaQ/yUS5C4AZpD/JRLkLgBmkP8lEuQuAGaQ/yUS5C4AZpD/JRLkLgBmkP8lEuQuAGaQ/yUS5C4AZpD/JRLkLgBmkP8lEuQuAGaQ/yUS5C4AZpD/JRLkLgBmkP8lEuQuAGaQ/yUS5C4AZpD/JRLkLgBmkP8lEuQuAGaQ/yUS5C4AZpD/JRLkLgBmkP8lEuQuAGaQ/yUS5C4AZpD/JRLk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AABPi3QUCIPDAWYPH0QAAIPDATndD44YAQAASGPDuQIAAABMie9NizzETI0UxQAAAABMif7zpnXXQYB/AgB0uL8N5EQAuQcAAABMif7zpnS/vhTkRABMif/oOvT//4XAdK6+G+REAEyJ/+gp9P//hcB0nb4i5EQATIn/6Bj0//+FwHSMvinkRABMif/oB/T//4XAD4R3////vjDkRABMif/o8vP//4XAD4Ri////vjjkRABMif/o3fP//4XAD4RN////vkLkRABMif/oyPP//4XAD4Q4////vkzkRABMif/os/P//4XAD4Qj////vlTkRABMif/onvP//4XAD4QO////vl7kRABMif/oifP//4XAD4T5/v//vmjkRABMif/odPP//0mNVwKFwEwPRfLp3f7//0yJ9+hlkQEASIt0JBCLfCQc6DePAQBIicdIiQWVCS8A6Bjx//9Iiz2JCS8ASIkFcgkvAOgt8P//SIkFbgkvAOipxAAA6NSMAQDob40BAIt8JBxIi3QkEMcFnPkuAAAAAADoN1UAAEiLPTAJLwBIhf8PhYQCAADoUtUBAOidjQEASIM9VfwuAAAPhC4EAACDPTAJLwAAD4SeAAAAugUAAAC+heREADH/6AHx//9IiccxwOjXnwEAMcC/QN9EAOjLnwEASIM9E/wuAAAPhAwGAAC/ASAAAOhT7///SIs9/PsuAEiJw+gs8f//6xBmkMYEAwBIid8xwOiSnwEASIsN2/suALoAIAAAvgEAAABIid/oMfD//0iFwHXUSIs9vfsuAOjw8P//SInf6ODu//+/QN9EADHA6FSfAQCDPZEHLwAAD4VoBAAA6FL1AACDfCQcAg+EcQQAAIM9oPguAAB1aIM9BwYvAAB1CYM9YgcvAAB0OzH/6IXz//8x/7oFAAAAvu/jRADoJPD//0iJxzHA6JqfAQDpRf3//0iJx+jt7///SIkFJggvAOku+///Mf+6BQAAAL7B5EQA6PDv//9IiccxwOhmnwEAgz0HCC8AAA+FuwIAAOjUiwEASIsdnQcvAEiF23QjvlqtRgBIid/oc/H//4XAD4VUAwAASIsF7OsuAEiJBX0HLwDokBUBAA+2BZkFLwCD4AM8AkiLBd0FLwAPhMADAACDSERAiw2JBS8A9sEBdC5IizXBBS8Ai1ZEidDB6AUl//8PAIP5BQ+EbQQA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f8HgBwnQiAVg6C4A6Wvv//8PtgVU6C4AicKDyIDA6geIBUboLgAPttJIiVQkMOlJ7///D7YVMuguAEEPtkXAg+J/weAHCdCIBR/oLgDpKu///w+2BRPoLgCJwoPIgMDqB4gFBeguAA+20kiJVCQw6Qjv//8PthXx5y4AQQ+2RcCD4n/B4AcJ0IgF3ucuAOnp7v//D7YF0ucuAInCg8iAwOoHiAXE5y4AD7bSSIlUJDDpx+7//0mLfQAx0jH26OqSAADpte7//0mLfQAx0jH26NiSAADpo+7//0mLfQAx0jH26MaSAADpke7//0mLfQAx0r4EAAAA6LGSAADpfO7//0mLfQAx0r4EAAAA6JySAADpZ+7//0mLfQAx0r4EAAAA6IeSAADpUu7//+i9NAAA6Uju///oYzMAAOk+7v//SYt94OgFFAEA6TDu//9Ji3XgSYt9oOhjogAA6R7u//9Ji30AvgEAAADoQOsAAOkL7v//SYt9ADH26DDrAADp++3//0mLfeDocu0AAOnt7f//SYt94Ogk7QAA6d/t///oSjQAAOnV7f//6MAyAABJi30A6FeRAQDpwu3//0mLfeDoeeAAAOm07f//6K/rAADpqu3//+gl6wAA6aDt///HBVroLgABAAAA6ZHt///HBUfoLgABAAAA6YLt//9Ji33gMfbol5EBAOly7f//SYtV4EmLdaC5AQAAAEmLvWD////oSeoAAOlU7f//SYt94LkBAAAAMdIx9ugy6gAA6T3t//9Ji33gvgEAAADoP9QAAOkq7f//xwWI1i4AAwAAAOkb7f//xwV51i4AAgAAAOkM7f//6HczAADpAu3//+jtMQAASYt9AOiEkAEA6e/s///oWjMAAEmLdQAx0r9hrkYA6GpkAQBIicfo4uAAAOnN7P//6NgyAADpw+z//+guMwAASYtNoEmLvaD+//9Ni03ATYtF4EmLVQBBi7WA/v//6LvuAADpluz//+gBMwAA6JwyAADph+z//0mLdcBJi71g////6DfsAADpcuz//+jdMgAA6FgxAADpY+z//+huMgAA6Vns//9IixXS1C4AMcm+PJNDADH/6ATwAABIiUQkMOk67P//6KUyAABJi03ASYtV4EmLdaBJi30A6BDhAADpG+z//+iGMgAA6CEyAADpDOz//0GLRYBJi41g////SYu1IP///0mL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uwYBAADpXfv//8cFyMsuAAUBAAC7BQEAAOlJ+///xwW0yy4AFAEAALsUAQAA6TX7///HBaDLLgATAQAAuxMBAADpIfv//8cFjMsuABEBAAC7EQEAAOkN+///xwV4yy4AEgEAALsSAQAA6fn6///HBWTLLgAQAQAAuxABAADp5fr//8cFUMsuAA8BAAC7DwEAAOnR+v//xwU8yy4ADQEAALsNAQAA6b36///HBSjLLgAKAQAAuwoBAADpqfr//8cFFMsuAAkBAAC7CQEAAOmV+v//xwUAyy4AJgEAALsmAQAA6YH6///HBezKLgAlAQAAuyUBAADpbfr//8cF2MouACQBAAC7JAEAAOlZ+v//xwXEyi4AFwEAALsXAQAA6UX6///HBbDKLgBPAQAAu08BAADpMfr//8cFnMouABkBAAC7GQEAAOkd+v//xwWIyi4AGAEAALsYAQAA6Qn6///HBXTKLgB4AQAAu3gBAADp9fn//8cFYMouAE0BAAC7TQEAAOnh+f//xwVMyi4ANAEAALs0AQAA6c35///HBTjKLgAzAQAAuzMBAADpufn//8cFJMouADIBAAC7MgEAAOml+f//xwUQyi4AOwAAALs7AAAA6ZH5///HBfzJLgA6AAAAuzoAAADpffn//8cF6MkuACgAAAC7KAAAAOlp+f//xwXUyS4AKQAAALspAAAA6VX5///HBcDJLgB7AAAAu3sAAADpQfn//8cFrMkuAH0AAAC7fQAAAOkt+f//xwWYyS4APQAAALs9AAAA6Rn5///HBYTJLgA8AAAAuzwAAADpBfn//8cFcMkuACUAAAC7JQAAAOnx+P//xwVcyS4ALwAAALsvAAAA6d34///HBUjJLgBkAQAAu2QBAADpyfj//8cFNMkuAGMBAAC7YwEAAOm1+P//xwUgyS4AaAEAALtoAQAA6aH4///HBQzJLgBgAQAAu2ABAADpjfj//8cF+MguAGwBAAC7bAEAAOl5+P//xwXkyC4AawEAALtrAQAA6WX4///HBdDILgBqAQAAu2oBAADpUfj//8cFvMguAFwBAAC7XAEAAOk9+P//xwWoyC4AFwEAALsXAQAA6Sn4///HBZTILgBVAQAAu1UBAADpFfj//8cFgMguAGIBAAC7YgEAAOkB+P//xwVsyC4AXwEAALtfAQAA6e33///HBVjILgBeAQAA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AAC7JgAAAOnP8P//xwU6wS4ALAAAALssAAAA6bvw///HBSbBLgA+AAAAuz4AAADpp/D//8cFEsEuAH4BAAC7fgEAAOmT8P//xwX+wC4ATwEAALtPAQAA6X/w///HBerALgBPAQAAu08BAADpa/D//8cF1sAuAE0BAAC7TQEAAOlX8P//xwXCwC4ATQEAALtNAQAA6UPw///HBa7ALgB9AQAAu30BAADpL/D//8cFmsAuAHwBAAC7fAEAAOkb8P//xwWGwC4AewEAALt7AQAA6Qfw///HBXLALgA5AQAAuzkBAADp8+///8cFXsAuADgBAAC7OAEAAOnf7///xwVKwC4ANwEAALs3AQAA6cvv///HBTbALgA2AQAAuzYBAADpt+///8cFIsAuADUBAAC7NQEAAOmj7///xwUOwC4AKQEAALspAQAA6Y/v///HBfq/LgAqAQAAuyoBAADpe+///8cF5r8uACcBAAC7JwEAAOln7///xwXSvy4AKAEAALsoAQAA6VPv///HBb6/LgAnAQAAuycBAADpP+///8cFqr8uADkBAAC7OQEAAOkr7///xwWWvy4ATAEAALtMAQAA6Rfv///HBYK/LgBLAQAAu0sBAADpA+///8cFbr8uAEoBAAC7SgEAAOnv7v//xwVavy4AHgEAALseAQAA6dvu///HBUa/LgAdAQAAux0BAADpx+7//8cFMr8uABwBAAC7HAEAAOmz7v//xwUevy4AGwEAALsbAQAA6Z/u///HBQq/LgAaAQAAuxoBAADpi+7//8cF9r4uAEkBAAC7SQEAAOl37v//xwXivi4ASAEAALtIAQAA6WPu///HBc6+LgBHAQAAu0cBAADpT+7//8cFur4uAC4BAAC7LgEAAOk77v//xwWmvi4ALAEAALssAQAA6Sfu///HBZK+LgBGAQAAu0YBAADpE+7//8cFfr4uAE4BAAC7TgEAAOn/7f//xwVqvi4AIwEAALsjAQAA6evt///HBVa+LgAiAQAAuyIBAADp1+3//8cFQr4uACEBAAC7IQEAAOnD7f//xwUuvi4AHwEAALsfAQAA6a/t///HBRq+LgAvAQAAuy8BAADpm+3//8cFBr4uAC0BAAC7LQEAAOmH7f//xwXyvS4AVAEAALtUAQAA6XPt///HBd69LgBQAQAAu1ABAADpX+3//8cFyr0uADoBAAC7OgEAAOlL7f//xwW2vS4AWwEAALtbAQAA6Tft///HBaK9LgBSAQAAu1IBAADpI+3//8cFjr0uAFEBAAC7UQEAAOkP7f//xwV6vS4AUwEAALtTAQAA6fvs///HBWa9LgA8AQAAuzwBAADp5+z//8cFUr0uADsBAAC7OwEAAOnT7P//xwU+vS4AQAEAALtAAQAA6b/s///HBSq9LgA9AQAAuz0BAADpq+z//8cFFr0uADABAAC7MAEAAOmX7P//xwUCvS4AKwEAALsrAQAA6YPs///HBe68LgArAQAAuysBAADpb+z//8cF2rwuAEMBAAC7QwEAAOlb7P//xwXGvC4AQgEAALtCAQAA6Ufs//+/MPRDAOi3rf//ZpBIhf90W0iLBdyvLgBTSIXAdBBIixXfry4ASI0E0Eg7OHQui0cgSIn7hcB1DEiJ31vpG6b//w8fAEiLfwjoD6b//0iJ31vpBqb//2YPH0QAAEjHAAAAAADryQ8fgAAAAADzww8fQABmLg8fhAAAAAAASIX/dEVIi0cIx0ccAAAAAMYAAEiLRwjGQAEASItHCMdHKAEAAADHRzgAAAAASIlHEEiLBUCvLgBIhcB0DUiLFUSvLgBIOzzQdAbzww8fQADpy+X//5BmLg8fhAAAAAAASIX/D4StAAAAU0iJ++j+5f//SIsFD68uAEiLDfiuLgBIweADSIXJdE5IixX4ri4ASI001QAAAABIjQQxSIM4AHQ1RA+2BcquLgBIiz23ri4ASIPCAUiJFcyuLgBEiAdMiwBJiXgQiz2kri4ASIsAiXgcSI1EMQiLUxxIiRjHBXWuLgABAAAAiRWDri4ASItTEFtIiRVnuy4ASIsASIkVZa4uAEiLAEiJBUusLgAPtgKIBV6uLgDzww8fhAAAAAAAQVVBVFVTSIPsCEiLLUeuLgBIhe0PhI4AAABIix1Hri4ATI1s3QBNi2UATYXkdHlBi0QkIEnHRQAAAAAAhcB1eEyJ5+h4pP//ScdFAAAAAABIhdt0U0iD6wFIjVTdAEiJHQOuLgBIiwJIhcB0O4tIHEiLQBDHBb6tLgABAAAASIkFu7ouAEiLEkiJBbmtLgCJDbutLgBIixJIiRWZqy4AD7YAiAWsrS4ASIPECFtdQVxBXcMPH0QAAEmLfCQI6P6j///pef///2YPH4QAAAAAAEFUVUiJ9VNIg/4BdnOAfDf+AEmJ/HVpgHw3/wB1Yr9AAAAA6Nin//9IicNIhcB0V4PtAkyJYAhMiWAQiWgYiWgcSInHx0AgAAAAAEjHAAAAAADHQCQAAAAAx0AoAQAAAMdANAAAAADHQDgAAAAA6O3l//9IidhbXUFcww8fRAAAWzHAXUFcw79o9EMA6MSq//8PH0QAAGYuDx+EAAAAAABBVFVIif1TSGPeRI1jAk1j5EyJ5+hHp///SIXAD4SlAQAAhdsPjmwBAACNS/CNc//B6QSDwQGJysHiBIP+Dg+GfAEAADH2Mf/zD29ENQCDxwEPEQQwSIPGEDn5d+s52g+EMQEAAEhjyg+2dA0AQIg0CI1KATnLD44aAQAASGPJD7Z0DQBAiDQIjUoCOcsPjgMBAABIY8kPtnQNAECINAiNSgM5yw+O7AAAAEhjyQ+2dA0AQIg0CI1KBDnLD47VAAAASGPJD7Z0DQBAiDQIjUoFOcsPjr4AAABIY8kPtnQNAECINAiNSgY5yw+OpwAAAEhjyQ+2dA0AQIg0CI1KBznLD46QAAAASGPJD7Z0DQBAiDQIjUoIOct+fUhjyQ+2dA0AQIg0CI1KCTnLfmpIY8kPtnQNAECINAiNSgo5y35XSGPJD7Z0DQBAiDQIjUoLOct+REhjyQ+2dA0AQIg0CI1KDDnLfjFIY8kPtnQNAECINAiNSg05y34eSGPJg8IOD7Z0DQBAiDQIOdN+C0hj0g+2TBUAiAwQxkQYAQDGBBgATInmSInH6Lb9//9IhcB0IsdAIAEAAABbXUFcww8fRAAAMdLpnv7//7+Y9EMA6OSo//+/HfVDAOjaqP//Dx9EAABTSIn76B+j//9Iid+JxlvpDP7//2aQZi4PH4QAAAAAAIsFxosuAMNmDx+EAAAAAABIiwWxqC4Aww8fhAAAAAAASIsFmaguAMMPH4QAAAAAAIsFprcuAMNmDx+EAAAAAABIiwWJty4Aww8fhAAAAAAAiT12iy4Aw2YPH4QAAAAAAEiJPWGoLgDDDx+EAAAAAABIiT1JqC4Aww8fhAAAAAAAiwUyqC4Aw2YPH4QAAAAAAIk9IqguAMNmDx+EAAAAAABBVEyLJT+qLgBVU02F5HUd605mDx9EAABIid/okKD//0jHRQAAAAAA6MP7//9IiwUkqi4ASY0sxEiLXQBIhdt0H4tDIEjHRQAAAAAAhcB0yEiLewjoV6D//+u9Dx9EAABMiefoSKD//1sxwEjHBdKpLgAAAAAASMcF16kuAAAAAABdSMcFw6kuAAAAAABIxwWgqS4AAAAAAMcFkqkuAAAAAADHBYSpLgAAAAAASMcFcacuAAAAAABIxwVepy4AAAAAAEFcw5BmLg8fhAAAAAAA6euj//+QZi4PH4QAAAAAAOlDpP//kGYuDx+EAAAAAADpu5///5BmLg8fhAAAAAAAVVNIif1Ig+wYiwWVpy4Ag/gJD4fQAAAAiw0Kii4AicdIiTT9QE5vAIkMveBNbwAPtg1Kti4AwOkDg+EBiQy9oE1vAEiLDf6oLgBIhckPhL0AAABIizX+qC4ASIsM8YPAAYPiAUiJDP3ATm8AiQUypy4AD7YFB7YuAMHiA79AAAAAxwWdiS4AAQAAAEiJLZamLgCD4PcJwogV47UuAOgeo///SInDSIXAdG3HQBgAQAAAvwJAAADoBaP//0iJQwhIhcB0U0iJ30iJ7sdDIAEAAADoGuD//0iDxBhIid9bXek84f//Dx9AADHAv8j0QwCJVCQMSIk0JOjUTwEAiwWipi4Ai1QkDEiLNCTpCf///5AxyelH////v9DyQwDo9KX//w8fRAAAZi4PH4QAAAAAAEFVQVRJif1VU0iD7BiLBWGmLgDHBeenLgAAAAAAg/gJD4fqAAAAicFIiTTNQE5vAIs1woguAIk0jeBNbwBIizXUpy4ASIX2D4TzAAAASIs91KcuAEiLNP5Mie+DwAFIiTTNwE5vAIkVjIguAIkFAqYuAOjBn///v0AAAABIicXoDKL//419A4loGEjHAAAAAABIicPo96H//0iNVQFIjXgBTInuxgAKSYnESIlDCOhtof//SItDCEHGRCwBAEiJ30HGRCwCAIPFAcdDIAEAAACJaxzHQyQAAAAASIPAAcdDKAEAAADHQzQAAAAASIlDEMdDOAAAAABIg8QYW11BXEFd6erf//9mLg8fhAAAAAAAMcC/O/VDAIlUJAxIiTQk6HxOAQCLBUqlLgCLVCQMSIs0JOnv/v//Zg8fhAAAAAAAMfbpEf///2YPH4QAAAAAAEiLBZmHLgBIjVAESIkVjocuAIsVmKYuAMcFjqYuAAMAAACJEMOQZi4PH4QAAAAAAEiLBWmHLgBIjVAESIkVXocuAIsVaKYuAMcFXqYuAAUAAACJEMOQZi4PH4QAAAAAAEiLBTmHLgBIjVAESIkVLocuAIsVOKYuAMcFLqYuAA0AAACJEMOQZi4PH4QAAAAAAEiLBQmHLgBIjVAESIkV/oYuAIsVCKYuAMcF/qUuAA8AAACJEMOQZi4PH4QAAAAAAEiLBdmGLgBIjVAESIkVzoYuAIsV2KUuAMcFzqUuABEAAACJEMOQZi4PH4QAAAAAAEiLBamGLgBIjVAESIkVnoYuAIsVqKUuAMcFnqUuAAsAAACJEMOQZi4PH4QAAAAAAEiLBXmGLgBIjVAESIkVboYuAIsVeKUuAMcFbqUuAAcAAACJEMOQZi4PH4QAAAAAAEiLBUmGLgBIjVAESIkVPoYuAIsVSKUuAMcFPqUuAAkAAACJEMOQZi4PH4QAAAAAAEiLBRmGLgBIjVD8i0D8SIkVC4YuAIkFFaUuAMMPH0AAiwV+oy4AMdKFwA+VwinQSIsExUBObwDDZi4PH4QAAAAAAGYuDx+EAAAAAAAPH0AAQVVBVLoQAAAAVVNIifNJifxIid9Ig+wYSI10JAjovpv//0mJxUiLRCQIgDgAD4WNAAAASIsdnrUuAEmNbCQBSIXbdRTrKmYuDx+EAAAAAABIixtIhdt0GEiLewhIie7oVJ7//4XAdehMiWsQ6y9mkL8gAAAA6KZWAABIicNIiWgITIloEMdAGAAAAABIiwVFtS4ASIkDSIkdO7UuAEyJ7+jbKwEASInaTInnSInG6G2qAABIg8QYW11BXEFdw2aQMf+6BQAAAL5gVkQA6C+c//9Iid5IiccxwOiiSwEA6VD///8PHwBmLg8fhAAAAAAAQVdBVkFVQVRVU4n9vwYCAABIifNIgezoAAAA6HCa//+/oBUAAEiJRCQ46GGa//+/oBUAAEiJRCRA6EKe//9IiUQkSEiLRCQ4RTHAMdK/AQAAAMYALbhAkkQAZg8fRAAAD7ZIIITJdCJMi0wkOEhj90GIDDGLcAiNTwFEjU7/QYP5AQ+G8AEAAInPSIM4AHQ3g3g4Aw+EDgIAAEhjykiLMIPCAUjB4QVIA0wkQEiJMUiLcAhIiXEISItwEEiJcRBIi3AYSIlxGEiDwEBIPUC9RAB1jUiLTCQ4SGPHTI1MJEhIjXQkOMYEAQBIY8JIjUwkQEjB4AVIA0QkQEjHAAAAAABJY8BIweAFSANEJEhIxwAAAAAA6Pc3AQCD/QEPhrsAAABMjWMISItzCLgCAAAAQbqrekQAQbkDAAAA6wwPHwCJwkiLNNODwAFMiddMiclEjUD/86Z1HznFdhOJwkiLNNMPthb2hBLAQ28ABHXYSscEw656RAA5xXfGjUX+TI1swxDrDQ8fQABJg8QITTnsdExJizwkgD8tde6AfwFsdeiAfwIAdOLofZr//0iNeBRJg8QI6NiY//9JicZJi0Qk+L63ekQATIn3SI1QAjHA6B2e//9NiXQk+E057HW0x0QkIAMAAABBvP////9FMfZFMe0PH4AAAAAARDkliZYuAHQVSIneie/oRTcBAIXAdelEiyVyli4ASItMJEBIi1QkOEyNRCQ0SIneie/HBVyeLgAAAAAA6C+b//9BicdBg/8/D4SaAAAARIn/6OI2AQCFwHWmQYP//w+EsAIAAEGB/wsBAAAPhwkBAABC/yT9wIlEAA8fgAAAAABMi0wkOEhjyUHGBAk6jU8Cg/4CD4X3/f//SIt0JDhIY8mDxwPGBA466eX9//8PHwBJY8hIizBBg8ABSMHhBUgDTCRISIkxSItwCEiJcQhIi3AQSIlxEEiLcBhIiXEY6ez9//8PH0QAAEiLTCRITI1EJDS6Wq1GAEiJ3onvRIkljZUuAOhImf//QYnH6T7///9JY8RBvwC9RABIiwTDSIlEJAjrFQ8fQABJg+9ASYH/AJJEAA+EkB8AAEGDfwgBdehJizdIhfZ04EGLfzhIA3wkCOh6mv//hcB1zroFAAAAvsR6RAAx/+itmP//SIt0JAhIiccxwOgeSAEAMf+6BQAAAL6AVkQA6I2Y//9IiccxwOgDSAEASIs9/JYuADHSvgUAAADo4FgAAOlT/v//gA1ori4AgA+2BV2uLgCoAXQyg+ADQb+vekQAvghkRAA8A7imekQAugUAAABMD0X4Mf/oNJj//0yJ/kiJxzHA6KdHAQAPtgUgri4AxwWiry4AAQAAAMcFjK8uAAAAAADHBbKvLgAAAAAAgCUrrS4A34Pg/IPIAogF760uAOnS/f//TIs9M68uAE2F/w+EQyEAAEyJ/+jql///SIlEJChIiwVGli4ASInHSIlEJBDo0Zf//0iJRCQID74Fda8uAIhEJCeJRCQY6wlIg8ABSYnHdENIi1QkCEiLfCQQTIn+6KCW//+FwHUcSItEJAhBD7YEB4TAD4Ra/f//OkQkJw+EUP3//4t0JBhMif/orJf//0iFwHW0SItEJChIi3wkCEiNfDgC6MOV//8Pvg0Ery4ATIsFtZUuAEiJx0iLFXuuLgBJice+PXxEADHA6Pya//9Iiz1lri4A6HCV//9MiT1Zri4A6ez8//9IiwVFri4ATInzSIXAdAmAOAAPhGkcAABFhe10Eg8fgAAAAADoG7EAAEGD7QF19U2F9nUM605mDx9EAABIjVgBvjoAAABIid/oB5f//0iFwHQhxgAAgDsAdOK+AQAAAEiJ30iJRCQI6JhKAQBIi0QkCOvJgDsAD4W9GwAATIn36OCU//8PtgV7rC4AqBh1Fw+2XCQgg+DnjRTdAAAAAAnQiAVgrC4AqGB1Gg+2FVWsLgAPtkQkIIPin8HgBQnQiAVCrC4AD7YVOawuAInQg+ADPAIPhK4AAACLDV6tLgCD+QEPhGQbAACD+QIPhbAAAACD4gEPhKcAAADHBT2tLgABAAAAgA37qy4ABIAN+KsuAAQ8A3RKSIM9R60uAAB0GzH/ugUAAAC+qGZEAOjUlf//SInHMcDoSkUBAEiDPSqtLgAAdBsx/7oFAAAAvthmRADor5X//0iJxzHA6CVFAQAPtwWeqy4AZiUDGGY9AhgPhJkaAABIgcToAAAAW11BXEFdQV5BX8OAPZOsLgAAD4hCHQAAgz2irC4AAQ+EqxoAAIsVmqwuAIP6AQ+EVP///4P6Ag+EUv///+lU////xwW9rC4AAAAAAIAlZqouAN/pGfv//0iLPaqTLgAx9uhzmAAA6Qb7//+ADRqrLgAC6fr6//+ADQyrLgAY6e76///HBSStLgABAAAA6d/6//9Iiz1wky4AvgEAAADo5oMAAOnJ+v//Mf/oWjYBAMcFkKouAAEAAADps/r//4ANxaouAGDpp/r//0iLPTiTLgDoc/cAAOmW+v//TIs9J5MuAL+ig0QAuQwAAABMif7zpg+Eevr//7/mekQAuQ4AAABMif7zpg+EZfr//7/0ekQAuQsAAABMif7zpg+EUPr//7//ekQAuQoAAABMif7zpg+EO/r//zH/ugUAAAC+4FZEAOhClP//TIn+SInHMcDotUMBAOkY+v//gA1ZqS4AIOkM+v//xwUqqy4AAQAAAIANE6ouAIDp9vn//4sFGJwuAEiLPYGSLgC+CXtEAI1QAUiJPbKZLgCJFfybLgDox/P//8cFxaguAAUAAADoqKz//0jHBY2ZLgAAAAAA6bD5//9Iiz1Bki4AxwV7qS4AAQAAAEiF/w+Elvn//+h5kv//QYnHhcB1LEiLBRuSLgC+CFdEADH/ugUAAABIiUQkCOiFk///SIt0JAhIiccxwOj2QgEARIn/6CaT///pUfn//4ANaKkuAAjpRfn//8cFg6ouAAEAAADpNvn//8cFeKouAAEAAADpJ/n//8cFaaouAAIAAADpGPn//8cFLqouAAEAAADpCfn//4AlGqkuAO/p/fj//0iLHR6rLgC6BQAAAL4te0QAMf/o/ZL//0iJ3kiJxzHA6EiT//+6BQAAAL5Ke0QAMf/o35L//0iJxzHA6C2T//9Ix0QkCLCSRADHRCQgAAAAAA8fQABMi2wkCEmLRcBIiUQkEEiFwA+EGxAAAL8f1UQAMcC7AgAAAOjwkv//RItkJCAxyemmAAAADx9AAL5n60QAv857RAAxwOjPkv//uAQAAABIweUGAcNMi7VokkQASIHFQJJEAE2F9g+EPRcAAIN9CAJ0Db8gAAAAg8MB6DKR//+6BQAAAEyJ9jH/6DOS//+/ydREAEiJxjHA6HyS//+6BQAAAEyJ9jH/6BWS//9IicfoJZL//7kBAAAAAcNBg8QBQYH8rAAAAA+ExRUAAEmDxUBJg33AAA+FthUAAESJ5UiJ6EjB4AYPvpBgkkQASAVAkkQAhNJ0xYN4OAR0v4XJD4U1////vmj5RAC/zntEADHA6ASS//+4AgAAAOkw////SIsFG5AuAEiJBWSpLgDpd/f//8cFSacuAAAAAADpaPf//4AlfKcuAP7pXPf//8cFfqguAAAAAADpTff//8cFc6guAAAAAADpPvf//8cFbJwuAAEAAADpL/f//4AlcKYuAN/pI/f//4AlZaYuAP7pF/f//0iLPaiPLgAxyTHSMfboTaoAAOkA9///xwUmpy4AAAAAAOnx9v//xwUXpy4AAgAAAOni9v//D7YF9KYuAIPg54PICIgF6KYuAOnK9v//SIsFC5wuAEiLPVSPLgBIiQX1my4A6JhQAQDHBaalLgABAAAA6Imp//9IxwXWmy4AAAAAAOmR9v//vwEAAADoHzIBAMcFVaYuAAEAAADpePb//w+2BYqmLgCD4J+DyECIBX6mLgDpYPb//0yLPfGOLgC/znxEALkCAAAATIn+86Z1C0mDxwJMiT3Vji4ATYX2dAhMiffoqI7//0yJ/+g4kf//SYnG6SD2//9Miz2xji4Av26ERAC5CAAAAEyJ/vOmD4UfFgAAgCVFpS4A3+n49f//SIs9iY4uAOjEngAA6ef1//9Iiz14ji4A6MNPAQDHBdGkLgACAAAA6LSo///px/X//8cF1aYuAAEAAADpuPX//0iLPUmOLgC+AQAAAOg/ngAA6aL1//9Iiz0bpy4ASIX/D4S6GAAAMdJIgz8ASIn4D4SZGAAADx8ASIPACIPCAUiDOAB184PCAkhj8kjB5gNIjVbwTI1++EiJVCQI6O+P//9Iiw3ojS4ASItUJAhIiQXEpi4ASIkMEEiLBbmmLgBKxwQ4AAAAAOks9f//xwVmpi4AAAAAAOkd9f//RDklposuAA+EBRcAAA+2BSGlLgCoAXQyg+ADQb+vekQAvghkRAA8A7imekQAugUAAABMD0X4Mf/o+I7//0yJ/kiJxzHA6Gs+AQAPtgXkpC4AxwVmpi4AAAAAAMcFUKYuAAAAAADHBXamLgAAAAAAgCXvoy4A34Pg/IPIAogFs6QuAOmW9P//SIs9J40uADHSMfboDk8AAOmB9P//SIsFEo0uAIA4AHUVSIsVzqUuAEiF0nQJgDoAD4WdFgAASIkFuaUuAOlU9P//xwWOpS4AAQAAAOlF9P//SIsF1owuAEiJBa+lLgDpMvT//0iLPcOMLgBIjXQkUDHS6LeR//+JBSl4LgBIi0QkUIA4AA+EC/T//0yLPZyMLgAx/7oFAAAAvhJ7RADoC47//0yJ/kiJxzHA6H49AQDp4fP//0iLBXKMLgCAJfGjLgD3SIkFJKUuAOnH8///SIs9WIwuAL4BAAAA6M5BAQDpsfP//0jHBY6lLgBarUYA6aHz///HBV+lLgAAAAAAxwUlpS4AAAAAAIAlzqIuAN/pgfP//0iLPRKMLgAx0jH26AmR//8PthWHoy4ASIXAD5XAweAFg+LfCdCIBXOjLgDpUfP//0iLNeKLLgBIjVQkUL8BAAAA6JuP//+FwA+IYfX//4tEJGglAPAAAD0AQAAAD4RN9f//SIs9sIsuADHSvgEAAADolE0AAOkH8///xwU5pC4AAQAAAOn48v//SIs96aMuAIA/AA+FjRQAADH/6EmQ//9IizVyiy4Av0BdbwDoWPAAAOnL8v//uhAAAAC+EAAAAL9wXG8A6H/WAgBIiQUAoi4A6avy//9Iiz30oS4ASIX/D4S6FAAASIsHSIkF2aEuAEiLRwhIiQXWoS4A6PmK///pfPL//8cFsqMuAAEAAADpbfL//0iLPf6KLgDoSXwAAOlc8v//TIs97YouAL7RfEQATIn/6FiL//+FwA+F0BIAAMcF6qMuAAAAAADpMfL//8cF46MuAAEAAADpIvL//0iLPbOKLgBIhf8PhIgTAAAx0jH26KGP//+JBfujLgDp/vH//0iLPY+KLgBIhf8PhPUSAAAx0jH26N2K//9IiQXeoy4A6dnx//+AJRqhLgB/6c3x//+ADQ+hLgAB6cHx//+ADQKhLgBA6bXx//+AJfagLgC/6anx//+ADeqgLgCA6Z3x///GBcqiLgAB6ZHx///GBb6iLgAA6YXx//8PthWYoS4AD7ZEJCCD4ufB4AMJ0IgFhaEuAOlm8f//SIsF94kuAEiJBfChLgDpU/H//0iLBeSJLgBIiQXloS4A6UDx//9Miz3RiS4Avj0AAABMif/olIv//0iJwUiFwA+EcBQAAEGAPwBIjUEBSIlEJAh0BoB5AQB1IroFAAAAvnhlRAAx/+gSi///SInHMcDoiDoBAEyLPYGJLgBIi1QkCEwp+khjykiJVCQYSInPSIlMJBDoZIn//0iLVCQYSIs1WIkuAEiJx0mJx4PqAUhj0ujHjP//SItMJBBIi3wkCEiNdCRQuhAAAABBxkQP/wDoiIn//0iJRCQQSItEJFCAOAB0IL5gVkQAMf+6BQAAAOiIiv//SIt0JAhIiccxwOj5OQEASIt8JBDo7xkBADHSSInGTIn/6IKYAADpRfD//0iLPdaILgBIhf8PhC0RAADoeMoAAOkr8P//SIs9fIYuAOjHKgEAMf/oGI7//4AlKaAuAL/pDPD//4ANIqAuAEDpAPD//4AlFqAuAL/p9O///0iLPYWILgAx0jH26HyN//9IhcAPhCARAABIiQXcoS4A6c/v///HBemgLgABAAAA6cDv//9Iiz1RiC4A6NzvAADpr+///4ANwJ8uAEDpo+///w+2BbafLgCD4J+DyCCIBaqfLgDpi+///w+2FZ6fLgAPtkQkIIPin8HgBQnQiAWLny4A6Wzv//+ADYKfLgAB6WDv//+AJXafLgD96VTv//+ADWWfLgAg6Ujv//+ADV2fLgAQ6Tzv//8PtgVOny4Ag+Cfg8ggiAVCny4A6STv//9Iiz21hy4AMdIx9uisjP//iQXOny4A6Qnv///HBRugLgABAAAA6fru///oHcoAAIM9QqAuAAF0CscFNqAuAAIAAACDPSugLgABD4XV7v//xwUboC4AAAAAAOnG7v//gz0PoC4AAccFCaAuAAEAAAAPha/u///HBfWfLgAAAAAA6aDu///HBUKgLgABAAAA6ZHu///HBS+gLgABAAAA6YLu///HBTigLgABAAAA6XPu///HBSmgLgAAAAAA6WTu///HBRKgLgABAAAA6VXu///HBfufLgABAAAA6Ubu//9Miz2Hky4ASIs90IYuAOgbSAEATIk9dJMuAMcFIp0uAAMAAADoBaH//+kY7v//SIsFqYYuAEiJBZKfLgDpBe7//0yLPUaTLgBIiz2Phi4A6NpHAQBMiT0zky4AxwXhnC4ABAAAAOjEoP//gz0pny4AAXQKxwUdny4AAgAAAIM9Ep8uAAEPhbzt///HBQKfLgAAAAAA6a3t///oUMkAAIM99Z4uAAF0CscF6Z4uAAIAAACDPd6eLgABD4WI7f//xwXOni4AAAAAAOl57f//vwEAAADoBykBAEiLPQCGLgDHBTadLgABAAAAxwWEny4AAQAAAMcFonAuAP7///9Ihf8PhEHt//9IjXQkUDHS6M2K//9IiUQkCEiLRCRQgDgAdCVMiz23hS4AvhJ7RAAx/7oFAAAA6CaH//9Mif5IiccxwOiZNgEAMcCDfCQIAQ+fwIkFAaAuAOns7P//vwIAAADoeigBAOn1+f//gA3ynC4ABOnR7P//6KSgAABBg8UB6cPs///HBQmeLgACAAAA6bTs//9IizVFhS4Av5B8RADou+n//+me7P//SIs1L4UuAL+VfEQA6KXp///piOz//0iLNRmFLgC/m3xEAOiP6f//6XLs//9IizUDhS4Av6F8RADoeen//+lc7P//SIs17YQuAL+vfEQA6GPp///pRuz//0iLNdeELgC/v3xEAOhN6f//6TDs//9Miz3BhC4ATYX/D4TgCwAAv3t8RAC5CwAAAEyJ/vOmD4TLCwAAv4Z8RAC5CgAAAEyJ/vOmD4XFDgAAxwWwnS4AAQAAAOnn6///TIs9eIQuAL+ffkQAuQUAAABMif7zpg+FNwwAAMcF9Z0uAAEAAADpvOv//w+2Bc+bLgCJwoPiGID6EA+EvgwAAIPgYMdEJCADAAAAPEAPhZTr//+ADaebLgBg6Yjr///HBUadLgABAAAAxwUMnS4AAQAAAOlv6///SIs9AIQuAOhrRQEA6V7r///HBaScLgABAAAA6U/r//9Iiz24nC4ASIX/D4T2DQAA6GqF//9Iiz3Lgy4ASYnH6FuF//9JjXwHAui5g///D74N+pwuAEyLBauDLgBIicdIixV5nC4ASYnHvj18RAAxwOjyiP//SIs9Y5wuAOhmg///TIk9V5wuAOni6v//ixV8nC4AhdIPhKwLAAAPtgXlmi4Ag+ADPAIPhHsOAAAPtgXVmi4AgA3Mmi4AA6gYdQyD4OeDyAiIBb6aLgCoYA+FnOr//w+2Ba+aLgCD4J+DyCCIBaOaLgDphOr//8cFTpwuAAEAAADpder//8cFN5wuAAEAAADpZur//8cFlJsuAAAAAADpV+r//4sF8ZsuAIXAD4RuCwAAD7YFWpouAIPgAzwCD4TQDQAAD7YFSJouAIPg/IPIAYgFPJouAOkf6v//TIs9sIIuAL/ce0QAuQsAAABMif7zpg+F0gkAAA+2BRaaLgCD4IeDyCiIBQqaLgDp6+n//w+2Bf6ZLgCJwoPiGID6GA+EOwsAAIPgYMdEJCACAAAAPGAPhcPp//8PtgXWmS4Ag+Cfg8hAiAXKmS4A6avp//+AJb2ZLgD96Z/p//+ADbGZLgAC6ZPp///HBcGaLgABAAAA6YTp//9Iiz0Vgi4A6GBmAQDpc+n//0iLPQSCLgDo/2YBAIXAD4Rf6f//Mf+6BQAAAL4ffEQA6GaD//9IiccxwOjcMgEA6T/p//9IiwXQgS4ASIkFwZouAOks6f//RYXtD4SoCgAA6HadAABBg+0B6RXp//+ADSuZLgCA6Qnp//+ADRqZLgAQ6f3o//9Iiz2OgS4A6MnpAADp7Oj//4ANAJkuACDp4Oj//4AN9ZguAAJIgz3Zmi4AAA+Fy+j//0jHBciaLgD9AwAA6bvo//8PHwCD+x0Pj78HAAAPH4AAAAAASIs1+X4uAL8gAAAAg8MB6ByD//+D+x5150iLdCQQMf+6BQAAAOiWgv//SInH6M6B//+DRCQgAUiDRCQIQItEJCA9rAAAAA+FtO///7oFAAAAvlh7RAAx/+hjgv//uxcAAABIiccxwOisgv//Zi4PH4QAAAAAAGYuDx+EAAAAAABIizV5fi4AvyAAAADon4L//4PrAXXqugUAAAC+YHtEADH/6BmC//9IiccxwOhngv//SIsdGJouALoFAAAAvnh7RAAx/+j3gf//SIneSInHMcDoQoL//+ilgv//SIswSInFSInDSIX2dB8PH4AAAAAAv1R7RAAxwEiDwwjoGIL//0iLM0iF9nXoSInv6BCA//+/CgAAAOiWgP//SIsdr5kuALoFAAAAMf++j3tEAOiOgf//SIneSInHMcDo2YH//0iLPbp9LgDo5SABAL8KAAAA6FuA//9Iix10mS4AugUAAAAx/74wV0QA6FOB//9Iid5IiccxwOiegf//SIsdf30uALoFAAAAvqp7RAAx/+gugf//SInHMcDofIH//7oFAAAAMf++WFdEAOgTgf//SInfSInGMcDozoL//7oFAAAAMf++EFhEAOj1gP//SInfSInGMcDosIL//7oFAAAAMf++SFhEAOjXgP//SInfSInGMcDokoL//7oFAAAAMf++0FhEAOi5gP//SInfSInGMcDodIL//7oFAAAAvgBZRAAx/+ibgP//SInfSInGMcDoVoL//7oFAAAAMf++QFlEAOh9gP//SInfSInGMcDoOIL//7oFAAAAMf++gFlEAOhfgP//SInfSInGMcDoGoL//7oFAAAAMf++0FlEAOhBgP//SInfSInGMcDo/IH//7oFAAAAMf++EFpEAOgjgP//SInfSInGMcDo3oH//7oFAAAAMf++YFpEAOgFgP//SInfSInGMcDowIH//7oFAAAAMf++uFpEAOjnf///SInfSInGMcDoooH//7oFAAAAMf++AFtEAOjJf///SInfSInGMcDohIH//7oFAAAAMf++SFtEAOirf///SInfSInGMcDoZoH//7oFAAAAMf++gFtEAOiNf///SInfSInGMcDoSIH//7oFAAAAMf++uFtEAOhvf///SInfSInGMcDoKoH//7oFAAAAMf+++FtEAOhRf///SInfSInGMcDoDIH//7oFAAAAMf++OFxEAOgzf///SInfSInGMcDo7oD//7oFAAAAMf++gFxEAOgVf///SInfSInGMcDo0ID//7oFAAAAMf++4FxEAOj3fv//SInfSInGMcDosoD//7oFAAAAMf++MF1EAOjZfv//SInfSInGMcDolID//7oFAAAAMf++gF1EAOi7fv//SInfSInGMcDodoD//7oFAAAAMf++6F1EAOidfv//SInfSInGMcDoWID//7oFAAAAMf++OF5EAOh/fv//SInfSInGMcDoOoD//7oFAAAAMf++iF5EAOhhfv//SInfSInGMcDoHID//7oFAAAAMf++2F5EAOhDfv//SInfSInGMcDo/n///7oFAAAAMf++IF9EAOglfv//SInfSInGMcDo4H///7oFAAAAMf++WF9EAOgHfv//SInfSInGMcDown///7oFAAAAMf++qF9EAOjpff//SInfSInGMcDopH///7oFAAAAMf++8F9EAOjLff//SInfSInGMcDohn///zH/ugUAAAC+MGBEAOitff//SInfSInGMcDoaH///7oFAAAAMf++cGBEAOiPff//SInfSInGMcDoSn///7oFAAAAMf++uGBEAOhxff//SInfSInGMcDoLH///7oFAAAAMf++IGFEAOhTff//SInfSInGMcDoDn///7oFAAAAMf++aGFEAOg1ff//SInfSInGMcDo8H7//7oFAAAAMf++sGFEAOgXff//SInfSInGMcDo0n7//7oFAAAAMf++AGJEAOj5fP//SInfSInGMcDotH7//7oFAAAAMf++UGJEAOjbfP//SInfSInGMcDoln7//7oFAAAAvpBiRAAx/+i9fP//SInfSInGMcDoeH7//7oFAAAAvuBiRAAx/+iffP//SInfSInGMcDoWn7//7oFAAAAvjBjRAAx/+iBfP//SInfSInGMcDoPH7//0iLPa14LgDo+BwBAL8KAAAA6E57//+6BQAAAL67e0QAMf/oTXz//76AY0QASInHMcDolnz//zH/6Id///8PH4AAAAAAi2wkIESLfCQg6aQAAABmkEyJ8b5n60QAv9R7RAAxwEG8AwAAAOhefP//TIn3RQHl6BN8//9NifgBw0nB4AZEAetNi6BokkQATYXkdDm6BQAAAEyJ5jH/6NR7//+/VHtEAEiJxjHA6B18//+6BQAAAEyJ5jH/6LZ7//9Iicfoxnv//41cAwG5AQAAAIPFAYH9rAAAAA+Exvj//0GJ70yJ+EjB4AZIg7hwkkQAAA+Frvj//0yJ+EjB4AZMi7BAkkQATYX2dMaLgHiSRACD+AR0u4PoArparUYAg/gBD5bAhMBED7bouGj5RABID0TQhckPhRv///9MifG+aPlEAL/Ue0QAMcBBvAEAAADoeXv//+kW////Dx9AALkBAAAA6Qjp//9mDx9EAAC/CgAAADHb6Ox5///pN/j//w+2BfGQLgCD4OeJwoPKCIgV45AuAIPiYA+FSeX//4PIaIgF0ZAuAOk75f//vgEAAABIid/ovi4BAOkx5P//g+IBD4RM5f//D7YFqZAuAEjHBW6RLgAAAAAAxwXQkS4AAAAAAIPIBIgFi5AuAIPgA+mQ5P//ugUAAAC+eGZEADH/6HJ6//9IiccxwOjoKQEASMcFpZEuAAAAAADpbOP//8cF+pEuAAIAAADpMeD//7/ne0QAuQsAAABMif7zpg+E2gEAAL/ye0QAuRcAAABMif7zpg+FZAIAAA+2BRqQLgAPtlQkIIPgh8HiBYPICAnQiAUEkC4A6eXf//+/sHpEALkHAAAATIn+86Z0NL/eekQAuQgAAABMif7zpnQjMf+6BQAAAL64VkQA6Mp5//9Mif5IiccxwOg9KQEA6aDf//+ADeGOLgAg6ZTf//+/7tZEALkKAAAATIn+86YPhRMCAADHBamRLgACAAAA6XDf//++13xEAEyJ/+hzeP//hcAPhAoBAAC+UpNDAEyJ/+heeP//hcAPhTgCAADHBfCQLgADAAAA6Tff//+6BQAAAL7kfEQA6Yzg//8x/7oFAAAAvkR8RADoL3n//0iJxzHA6KUoAQDpCN///8cFzpAuAAEAAADp+d7//0jHBe6QLgABAAAA6ene//+DyBiIBfqOLgDpNPP//zH/ugUAAAC+YXxEAOjieP//SInHMcDoWCgBAOm73v//Mf+6BQAAAL7oZUQA6MJ4//9IiccxwOg4KAEA6Zve//+D4OeDyBCIBamOLgDptPT//8cFeJAuAACAAADpe97//zH/ugUAAAC+sGVEAOiCeP//SInHMcDo+CcBAOk49f//6K53///paev//8cF+48uAAIAAADpQt7//w+2RCQgD7YNUI4uAIPgA4Phh40UxQAAAADB4AUJygnQiAU2ji4A6Rfe///GBUSPLgAA6bLi//9JY8Qx/7oFAAAATIs8w77oY0QA6At4//9IiccxwEyJ/uh+JwEA6dHo//+6BQAAAL4YZkQA6Op3//9IiccxwOhgJwEA6cPd//8x/7oFAAAAvphkRADoynf//0iJxzHA6EAnAQDpo93//78JfEQAuRYAAABMif7zpg+FZwEAAA+2FaGNLgAPtkQkIIPih8HgAwnQg8ggiAWLjS4A6Wzd//8x/7oFAAAAvhBlRADoc3f//0yJ/kiJxzHA6OYmAQDpSd3//0iLPdp1LgDoTXj//0iJBaaOLgDpMd3//zH/ugUAAAC+2GREAOg4d///TIn+SInHMcDoqyYBAOkO3f//vtx8RABMif/oEXb//4XAD4X1AAAAxwWjji4AAQAAAOnq3P//Qb8IAAAAMdK+EAAAAOl35///vxAAAADoZnX//0iLFV91LgBIiQVAji4ASMdACAAAAABIiRDpsNz//7oFAAAAvkBlRAAx/0iJRCQI6LJ2//9IiccxwOgoJgEATIs9IXUuAEiLTCQI6V/r//9Iiz0QdS4A6IN3//9IiQXUjS4A6Wfc//8x/7oFAAAAvmhkRADobnb//0iJxzHA6OQlAQDpEPL//zH/ugUAAAC+OGREAOhOdv//SInHMcDoxCUBAOll8f//Mf+6BQAAAL64Y0QA6C52//9Mif5IiccxwOihJQEA6QTc//8x/7oFAAAAvkBmRADoC3b//0iJxzHA6IElAQDp5Nv//2YuDx+EAAAAAABmLg8fhAAAAAAADx+EAAAAAABIgzoAdBLHQggBAAAAuAEAAADDDx9EAABIiTIxwMNmkEUxwEg5PQaLLgBIixdIifhBD5TASIXSdE8x9oN6CA93R4tKCP8kzUC9RAAPH0QAAEiF9nRrRTHASInQSIsSSIXSddjzww8fAEiJ0EiLEjH2SIXSdcbr7GYPH4QAAAAAAEiJyA8fRAAA88NmDx9EAABIicFIifBIhfZ05UiLUjhIhdJ05EiDuggBAAAAdNr2QiABSA9EwcNmDx+EAAAAAABIi0oQg3kQCHSLSItJGIA5LnWCRYXAD4V5////gHkBAA+Fb////0iJxuln////ZpBIixZIiw9Ii0IwSDlBMLr/////D5fAD7bAD0LCww8fAEiLFkiLD0iLQjBIOUEwciC4AQAAAHchi0IIOUEIuv////8Pl8APtsAPQsLDDx9AALj/////Dx8A88NmDx9EAABIixZIiw9Ii0IoSDlBKHIguAEAAAB3IYtCCDlBCLr/////D5fAD7bAD0LCww8fQAC4/////w8fAPPDZg8fRAAA88MPH0AAZi4PH4QAAAAAAItHKIXAdAeBSiAAACAA88NVU0iJ/UiJ80iD7AhIiwdIOQZ0D74CGgAAv0DFRADoTSQBAEiLQwhIixBIiRNIi1UISIlTCEiJRQhIxwAAAAAASIPECFtdw2YPH4QAAAAAAFNIifNIg+wQSIX/D4S/AAAASIne6Ddy//9IicJIhcAPhNMAAABIjXAYSI14IEjHQBgAAAAASMeAqAAAAAAAAAAxwEiD5/hIifFIKfmBwZgAAADB6QPzSKtIjUIox0IgAAAAAMeClAAAAP/////HgpgAAAD/////x4KQAAAAAQAAAEiJQjBIiwVEXC4ASMdCKAAAAABIi0gISIkxSIM9jYguAABIiXAISIsFioguAHQISI1I4EiJSkBIiTBIjUI4SIkFcoguAEiDxBBIidBbw5BIid++sAAAAEiJVCQI6KZ0//9IhcBIicdIi1QkCA+FHv///w8fRAAASIPEEDHAW8NIg+wISIs/6Ix0//+FwA+UwEiDxAgPtsDDDx+AAAAAAEiD7AhIi3YISIt/COhndP//hcAPlMBIg8QID7bAw2aQiwW2ii4AhcAPhIkAAACD+AIPh4kAAABVU70GAAAASIn7SIPsCEiF/3Uk62UPH0AAg/gNdEuD+A91DEiLPc+HLgDouv///0iLG0iF23RDi0MIg/gEdFp32IXAdepIi0Mwv5LTRABIielIicbzpnTXv5jTRABIicZIienzpnTIZpBIi3sQ6Hf///9IixtIhdt1vUiDxAhbXfPDDx+AAAAAAL7EDQAAv0DFRADpMSIBAJBIi0Mgiw0Cii4ASIXAdS3rhQ8fgAAAAAByPoP6AnURg/kBdDxmkGYuDx+EAAAAAABIiwBIhcAPhFr///+LUBiD+gF11IP5AnXnx0AYAwAAAOveZg8fRAAAiUgY69MPHwDHQBgEAAAA68cPH4AAAAAAU4n7QPbHAXVX9sMQdUL2wwh1LfbDIHUYg+MCdQNbw5Bbv/XVRAAxwOnTIQEADx8AvzCIRAAxwOjEIQEA69pmkL8jgEQAMcDotCEBAOvFZpC/UWZLADHA6KQhAQDrsGaQvzP2RAAxwOiUIQEA65tmkEFUVUmJ9FNIidVIiftIg+wQSIlMJAhIhf8PhKkAAAAPH4AAAAAAZi4PH4QAAAAAAIN7CA8Ph14CAACLQwj/JMXAvUQADx9AAEiLQzhIhcB0Z/aDkAAAAAh1XkiLSChIi1NQSIneSIt7EEiJTCQI6I3///9Ii1M4i0IgJQIEAAA9AAQAAA+E9gIAAEiLQjiLDaR5LgBI0+hIAUQkCEiLe2hIhf90E0iNVCQIvjBIbwDozAABAA8fQABIixtIhdsPhWz///8PH0AASItEJAhIg8QQW11BXMNmLg8fhAAAAAAASItDEPZAIYB1zkiLQDiLDUR5LgBI0+hIAUQkCEiLG0iF2w+FKP///+u+Zg8fRAAASIt7MEiLTCQISInqTInm6Nz+//9IiUQkCEiLG0iF2w+F+/7//+uRZg8fhAAAAAAASIt7EOvOZi4PH4QAAAAAAEiLTCQISIs9JIUuAEiJ6kyJ5uiZ/v//SIlEJAhIixtIhdsPhbj+///pS////w8fAEiLexBJi3QkOEiNVCQI6O3/AABIixtIhdsPhZH+///pJP///w8fQABIi0MYiw2GeC4ASNPoSAFEJAhIixtIhdsPhWr+///p/f7//w8fRAAASIt7MEiNVCQIvjBIbwDonf8AAIsFj4cuAIXAD4RvAQAASIsFaIcuAEiJQzhIi3sY6Ctv//+LDS14LgDT6EgBRCQISIsbSIXbD4US/v//6aX+//8PH0QAAEiLexhIjVQkCL4wSG8A6EX/AACLFTeHLgCF0g+E1wAAAEiLBRCHLgBIiUMgSIsVFYcuAEiF0nQISANCKEiJQyCLQxAtGgEAAIP4BA+H0wAAAP8kxUC+RABIi2sQSIsbSIXbD4Wg/f//6TP+//8PHwC+XhYAAL9AxUQA6KkeAQBIixtIhdsPhX39///pEP7//w8fhAAAAAAAuAgAAACLDW13LgC6AQAAANPiOdAPQsLT6EgBRCQISIsbSIXbD4VG/f//6dn9//+QuAIAAADrzmYPH4QAAAAAALgEAAAA675mDx+EAAAAAAC4AQAAAOuuZg8fhAAAAAAAugUAAAC+ntNEADH/6N9t//9IiccxwOhVHQEAi0MQLRoBAACD+AQPhi3///+6wMREAL4ZFgAAv0DFRADocG3//zH/ugUAAAC+sMVEAOifbf//SInHMcDoFR0BAOl8/v//D7YFiYMuAIPgAzwCD4UK/f//6fP8//9mDx+EAAAAAABIif5Iiz2Ogy4AU0G4AQAAADHJugEAAADou27//0iJw0iFwHQrgHsYAHQFW8MPHwBIx0MoAAAAAMZDGAFIid5bSIs9UYMuAOmEbv//Dx9AADH/ugUAAAC+0MVEAOgPbf//SInHMcDohRwBAOu4Dx8AVVNIifVIg+wI6GJx//9IicNIhcB0J0iJ7+j6bP//SAHYD7YQhNJ0EkiDwwFIg8ABiFP/D7YQhNJ17sYDAEiDxAhbXcNmkGYuDx+EAAAAAABBVUFUSYn9VVNIifVIg+wI6LNs//9IjXgB6BJr//9Iie9IicPon2z//0iNeAHo/mr//0EPtlUASYnESY19AUiJ2YTSdCWQZi4PH4QAAAAAAEiDxwEPtoLASm8ASIPBAQ+2V/+IQf+E0nXmD7ZVAMYBAEiNfQFMieGE0nQuZi4PH4QAAAAAAGYuDx+EAAAAAABIg8cBD7aCwEpvAEiDwQEPtlf/iEH/hNJ15sYBAL5t1UQASInf6Pb+//++gdVEAEiJ3+jp/v//vm3VRABMiefo3P7//76B1UQATInn6M/+//8PtgNBOgQkdU6EwHRKMdLrDmYPH0QAAEiDwgGEyXQwD7ZMEwGNagFBOkwUAXTpSInf6Plp//9Miefo8Wn//0iDxAiJ6FtdQVxBXcMPH0AAjWytAAHt69cx7evTDx9AAEiLN0iF9g+EeQEAAEFXQVZIifJBVUFUVVMx20iD7BiLbxgPH0AAZi4PH4QAAAAAAA+2QhBIixKJwYPhAYD5AUiD2//A6AOD4AcJxUiF0nXgiW8YSIXbdRhIiXcQSIPEGFtdQVxBXUFeQV/DDx9EAABJif5IiTwkSI08G75g3UAAMcm6gNRAAOi0bv//TIn2SYlGCEyJdCQITIs+TY12EE2F/3Ua6YcAAAAPH4AAAAAATYk+TYn+TYnvTYXtdHJNiy9B9kcQAXToSIsEJLoBAAAATIn+SIt4COhTbP//TIsgTYXkD4SHAAAAQQ+2bxDrHUmLHCRIhdt0Z0mLdwhIi3sI6CJs//+FwHVWSYnciehBMkQkEKg4ddhMif9Nie/orWj//02F7XWWDx+EAAAAAABIiwQkSccGAAAAAEiLVCQISItAEEiJAkiDxBhbXUFcQV1BXkFfw2YuDx+EAAAAAABJiR9NiTwk6Ur///8PH0AATIk4SItEJAhMiXwkCEyJOOkx////SIl3EMNmDx9EAABIi38I6a9o//8PH4AAAAAAQVdBVkmJ/kFVQVS//////1VTSYnVTYnsSIPsOIsdDmYuAEiJdCQI6Fxp//9Iiz3tfy4AMdJMie7ou2z//4nfSInFSIXASQ9E7eg6af//QYtGGKgCD4VeAQAAqAQPhYYBAABMietJi34ISIX/D4SOAAAASItEJAhIhcAPhJABAAAPtkAQqAEPhBQBAADA6AOD4Ac8AQ+ExgEAAA+CcAEAADwCdVxBi0YYqAR0VEmLfghIjXQkEEiJXCQY6Mls//9JicdIhcB1Ies3Dx+AAAAAAEEPtkcQg+A4PCAPhIAAAABNiz9Nhf90GEmLfwhIid7olGr//4XAdNgPH4QAAAAAAEiLRCQISIXAdAr2QBABD4SMAAAATYt+EOssZg8fRAAAQQ+2RxBIid6D4Dg8IHQJPBBIie5JD0T0MdLoSWn//4XAdB1Niz9Nhf90ZUmLfwhIhf9074A/KnXHgH8BAHXBkEw57XQISInv6MNm//9NOex0CEyJ5+i2Zv//TDnrdAhIid/oqWb//0iDxDhMifhbXUFcQV1BXkFfww8fgAAAAABIi0QkCEyLOE2F/3WeDx8ARTH/66sPHwBIiz1hfi4AugMAAABMie7oLGv//0mJxEGLRhhNheQPhX7+//9Niezpdv7//w8fQABIiz0xfi4AugQAAABMie7o/Gr//0iJw0iFwA+FXf7//+lV/v//Dx8AQYtGGKgBdExIjXQkEEiJbCQY6GFr//9JicdIhcB1IesvDx+AAAAAAEEPtkcQg+A4PAgPhBj///9Niz9Nhf90EEmLfwhIie7oLGn//4XAdNhBi0YYqAIPhDz+//9Ji34ISI10JBBMiWQkGOgJa///SYnHSIXAdSXpGP7//w8fQABBD7ZHEIPgODwQD4TA/v//TYs/TYX/D4T4/f//SYt/CEyJ5ujQaP//hcB01Onj/f//Dx9EAABmLg8fhAAAAAAASInw9kJIEHUn9kdFCHQJ88MPH4AAAAAASItXCEiLihADAAC6QF1vAP/hZg8fRAAASItXCL5AXW8ASInHSIuSwAIAAP/ikGYuDx+EAAAAAABIi0JoSIXAdBBIiw3wfC4ASDmI8AAAAHQH88MPH0QAAPZAIYB184tCIKgBdOwlAgQAAD0ABAAAdOBIg3o4AHTZQccBAQAAAMMPH4QAAAAAAEFVQVRVU0iD7AhIi144SItGIEyLRihIOcNyC0mJ2UkpwU05wXYNTAHASDnDdRJIhcl0DUiDxAhbXUFcQV3DZpBIhdJ0S0iLB0yLLroFAAAAvvjFRAAx/0yLIEiLqPAAAADo+mX//0iDxAhNiehIid5MieFIiepIicdbXUFcQV0xwOlaFQEAZi4PH4QAAAAAAItGUIXAdZxIiwdMiya6BQAAAMdGUAEAAAAx/75AxkQASIsoSIuY8AAAAOihZf//SIPECEyJ4UiJx0iJ6kiJ3jHAW11BXEFd6QQVAQAPH0AAVVNIif27EAAAAEiD7AgPH4QAAAAAAGYuDx+EAAAAAADoWxcBAIPrAXX2SItFKEiLdTC/vNNEAEgDcGBIi0BoSANwKDHA6LYVAQBIi3UIMcC/xNNEAOimFQEASIPECFtdww8fRAAAZi4PH4QAAAAAAA+2RxiD6AM8AXYNuAEAAADDDx+AAAAAAEg7dyh17UiD7Ajoaf///7gBAAAASIPECMMPH0QAAGYuDx+EAAAAAABIg+wISIs1rX0uAIs9n30uAOgaZP//xwXYbS4AAAAAAIP4AXYcugEAAACoAXQE6xaJytHojUoBqAF09YkVt20uAIP4AXQavqAMAAC/QMVEAEiDxAjptxQBAA8fgAAAAABIg8QIw5BmLg8fhAAAAAAAQVdBVkGJ9kFVQVRVU0iJ/UiD7AhMi2c46HP////oPhYBAEiLdQC/ydREADHA6K4UAQBIi30A6D1k//+NWAGD+w4Pj9EAAACQg8MB6BAWAQCD+xB180iLRWhIhcB0FEiLNUt6LgBIObDwAAAAD4T+AAAATIstl20uAEWF9rgAAAAATA9E4EiLjfAAAAAxwEyJ4kyJ7r/V00QA6EIUAQBIi0VASTnEdEVIhcB0QLsjAAAADx9EAABmLg8fhAAAAAAA6JsVAQCD6wF19kiLXUC+4dNEADH/ugUAAADogWP//0iJ3kiJxzHA6PQTAQBIi0VoSIXAdBBIixW0eS4ASDmQ8AAAAHQjSIPECFtdQVxBXUFeQV/DDx9AAOhjFQEAMdvpJP///w8fQAD2BTV5LgACdExIiz1QeS4ASInqvjDiQADo22X//4sNPWwuAEnT7E0B7Ew7JbhsLgB2q0yJJa9sLgBIg8QIW11BXEFdQV5BX8NMi2goTANtYOkI////TIu9qAAAAE2F/3S8SYtHCEmLdxBIxwAAAAAASIsV4WwuAEiNHPUAAAAASIsNymwuAEiJ0EgpyEg5ww+HCQEAAEyLNaxsLgBIActMOfMPhBoBAABIiwW5bC4ASIsNimwuAEgBw0j30Egh2EiJ00iJx0gpy0iJBYFsLgBIKc9IOd8Ph6EAAABIiQVmbC4ASYsHMdJIhcB0IWaQZi4PH4QAAAAAAEiLOInRg8IBSYk8zkiLQAhIhcB167lQ0kAAuggAAABMiffoiWH//zHbMcBJg38QAHUS6ywPH0AAjUMBSInDSTtHEHMcSYs8xg+2RxiD6AM8AXflSDtvKHXf6GL8///r2Ew7NeFrLgB2CUw7NfBrLgByIUyJ9r9AUW8A6NGpAgDpof7//0iJFc1rLgBIidDpUP///0yJNbZrLgBMiTW3ay4A6X/+//9Iid6/QFFvAOg9qAIASIsNnmsuAEiLFZ9rLgBJi3cQ6dP+//+ADb9rLgAC6dr+//9mLg8fhAAAAAAAQVVBVFVTSIn9SIPsCItfCIP7Dw+HPwcAAEmJ9f8k3Wi+RAAPH0QAALsQAAAAZg8fhAAAAAAAZi4PH4QAAAAAAOgbEwEAg+sBdfZIi0UQi1AQg/oID4RuBwAASItIGIA5Lg+EiwgAAEiJDTp5LgBFMeRJi3U4SIt4ILgwSG8ASIX2SA9E8IP6BQ+FTgcAAMcFMHkuAAAAAAC/+9READHA6DwRAQC/GdVEADHA6DARAQC/EdVEADHASMcF5nguAAAAAADoGREBAEiLfRDpBgQAAEiLVxBIhdIPhLoAAABIi0cgSIXAdAr2QEYCD4WnAAAAvjjVRADp5wIAAGYPH0QAALsQAAAA6Ib7//9mDx9EAADoSxIBAIPrAXX2SItFQEyLZUhIhcB0BEwDYChIi30Y6Exg//+Jw0iLRRiLDUhpLgBIidpMiea/odREAEiLQChI0+pIicExwOiEEAEASIt1KEiF9g+E4wYAAL+z1EQAMcDoaxABAEiLfTDo4vQAAOj9EQEAiw3/aC4ASNPrSo0EI0iJBXlpLgBIg8QIW11BXEFdw2YPH0QAAEiLfxBIg8QIMfZbXUFcQV3pQ/v//w8fAEiLDXF3LgC6DAAAAL4BAAAAv0HVRADodWP//0iLXRBIhdt0Fw8fQABIid9Mie7oDf7//0iLG0iF23XtSIsNNncuAEiDxAi6CgAAAFtdQVxBXb4BAAAAv07VRADpMGP//4tHGL6ylEMASItXEL9Z1UQAhcC4uJRDAEgPRfBIg8QIMcBbXUFcQV3pkw8BAA8fAEiDPXh0LgAAD4Q5////RIsNe3QuAEWFyQ+FJwUAAL8g1EQAMcDoZg8BAEiLHU90LgBIhdsPhA3///9mDx9EAABIid9Mie7oZf3//0iLG0iF23Xt6e/+//8PH4QAAAAAAEg7PclzLgBMi2c4D4SyAAAASIt3MDHAv8jURADoDw8BAE2F5A+ElAAAAEmLRCQoSIt9MEiJBSZoLgDoiV7//4nDg/gOD48NBgAAZg8fRAAAg8MB6FgQAQCD+xB184sNdWcuAEmLVCQ4v8zURABJi3QkKDHASNPq6LQOAQBJi1wkMEk5XCQodB6+1NREADH/ugUAAADoF17//0iJ3kiJxzHA6IoOAQBIi31oSIX/dA+68FBvAL4wSG8A6GLuAADoDRABAEiLXRBIhdsPhBf+//9Iid9Iie7odfz//0iLG0iF23Xt6f/9//8PH4QAAAAAAEiLdxAxwL8u1UQA6DAOAQBIizXxci4ASIX2dAy/VHtEADHA6BgOAQC/HdREAOnbAQAAZg8fRAAASItXEL4i1UQASIs9UHUuAEiDxAgxwFtdQVxBXekvX///Dx+AAAAAAOiL+P//uwkAAAC/t9READHA6MoNAQBmLg8fhAAAAAAA6DsPAQCD6wF19kiLRSBMi20QSIXAdARMA2goiw1HZi4ASItVGEyJ7r+/1EQAMcBI0+roiQ0BAEiLXShMiyNIg8MITYXkdCGQD7YTSIs9xnQuAL6M1EQAMcBIg8MB6KZe//9Jg+wBdeDo8w4BAEiLRRiLDfFlLgBI0+hJAcVMiS1sZi4A6e78//8PH4AAAAAASItfELoFAAAAvkjURAAx/+ibXP//SIneSInHMcDoDg0BAEiLfRjohfEAAEiDxAhbXUFcQV3plg4BAGYPH0QAAEiLDUF0LgC6DQAAAL4BAAAAv37URADoRWD//0iLRRBIixhIjWgISIXbdCYPH0QAAA+2VQBIiz0NdC4AvozURAAxwEiDxQHo7V3//0iD6wF130iLNfBzLgBIg8QIvwoAAABbXUFcQV3pDF3//w8fQAC7EAAAAOgm9///Zg8fRAAA6OsNAQCD6wF19kiLRShMi2UwSIXAdARMA2Aoi0UQLRoBAACD+AQPh0IDAAD/JMXovkQADx9EAAC/ZtREAEiDxAgxwFtdQVxBXekiDAEAZpDomw0BAESLRRhFhcAPhdQBAABIi3UQSIX2D4Q0AwAAv8nURAAxwOj1CwEAi30Yhf8PhcEBAAC/cetEADHA6N4LAQBMi2UgTYXkD4TBAAAADx+AAAAAAGYuDx+EAAAAAABBi3QkGIX2D4XjAAAASYtEJBBIhcB0TUiLML811EQAMcDomgsBAEmLRCQQSItYCEiF23QkZpBmLg8fhAAAAAAASIszv1R7RAAxwOhxCwEASItbCEiF23Xov0XURAAxwOhcCwEASYt0JAhIhfYPhK4AAAC/ydREADHA6EILAQBBi0wkGIXJD4V9AAAASYM8JAB0Hr8g1UQAMcDoIgsBAE2LJCRNheQPhVX///8PH0QAAL859UMAMcDoBAsBAOifDAEASItdMEiF2w+Eqfr//0iJ30yJ7ugH+f//SIsbSIXbde3pkfr//2YuDx+EAAAAAAC/L9READHA6MQKAQDpDP///w8fgAAAAAC/OfVDADHA6KwKAQDpcv///w8fgAAAAAC/BdZEADHA6JQKAQDpTf///w8fgAAAAAC6BQAAAL7800QAMf/o91n//0iLPchxLgBIicaJ2jHA6Kxb//9Ig8QIvosRAAC/QMVEAFtdQVxBXekLCgEAvwrURAAxwOg/CgEA6dT6//+/L9READHA6C4KAQDpG/7//7859UMAMcDoHQoBAOku/v//SYt1OEiLeBhFMeRIhfYPhEgBAAC68FBvAOjq6QAAixXccS4AhdIPhDoBAABIi0UQRYXkdRSDeBAIdA5Igz2dcS4AAA+EPAEAAEiLBahxLgBIix2RcS4ASIXAdARIA1goMcBIid6/4tREAOipCQEARYXkD4Rw+P//SIkdyWIuAOlk+P//SItFIEiLMOkR+f//vpuUQwC7AQAAAIsNIGIuALgBAAAATItFIL+R1EQA0+BIOcNID0LYMcBIidpI0+pIifFMieboTgkBAEiLRRiDeBAHD4Te+P//6LsKAQBIi30Y6cv4//++i5RDALsIAAAA66i+kJRDALsEAAAA65y+ipRDALsIAAAA65C+lZRDALsCAAAA64S6EMVEAL7FEAAAv0DFRADoLlj//4B5AQAPhWv3//9BvAEAAADpavf//+h0CgEAMdvp7fn//78F1kQAMcDowQgBAOnH/P//vjBIbwDprv7//0iLRRCDeBAFD4Rc9///vwbVRAAxwOiYCAEA6Vf3//9Ii3AYSIs9MG4uADHJMdJBuAEAAADoYVn//0iFwHQlSItQKL/n1EQASItKaEiLcShIA3AwMcBIA3Jg6FQIAQDpH/f//7/u1EQAMcDoQwgBAOkO9///Dx9AAGYuDx+EAAAAAACLBd5uLgBIifpJifCD+AEPhLsAAACD+AIPhKIAAABBi0AIOUIIdAkxwMNmDx9EAABIiwK/Z9VEALkKAAAASInG86Z0479x1UQAuQoAAABIicbzpnTSv3vVRAC5DQAAAEiJxvOmdMG/iNVEALkNAAAASInG86Z0sEiDPRFgLgAAQVRVTInFU0iJ03QmSYswSInH6Grq//9BicRIiwXwXy4ASIt1AEiLOOhU6v//QTnEfgdIiR3YXy4AWzHAXUFcw5CDfwwBD4RU////McDDDx8Ai0cMhcAPhUz///9Bi0AIOUIID4U/////6UP///8PHwCAfxgFdAq4AQAAAMMPH0AAQVVBVFVTSIPsSEiLRyiLFUhuLgBIi28wiwiD+gIPhBUCAACD+gF1CDsOD4dRAQAASIn7SIs9xmwuAEyLYAhIidq+QF1vAEiLRwj/kBgDAACFwA+EWAEAAEiDPShuLgAAD4QbAQAAiwXEXi4AhcAPhGwBAABIi3MISIs9gWwuALoDAAAA6E9Z//9JicVIhcAPhLMBAABIica/ydREADHA6IwGAQBMie/oHFb//0yJ74nD6FpU//+D+xIPj2kBAAAPH4AAAAAAZi4PH4QAAAAAAIPDAejYBwEAg/sUdfMxwL+J1EQASInj6EQGAQC4/////0iJ6kg5xQ+GmwAAAL611UQASInnMcDohFn//0iJ3r/J1EQAMcDoFQYBAEiJ2osKSIPCBI2B//7+/vfRIcglgICAgHTpicHB6RCpgIAAAA9EwUiNSgJID0TRAMBIg9oDSCnaidOD+g9/E2YPH0QAAIPDAehIBwEAg/sQdfNJi7Qk8AAAAL/d00QAMcDorwUBAEiDxEi4AQAAAFtdQVxBXcMPH4AAAAAAvrHVRABIiecxwOjpWP//6WD///8PH0AATItrCDH/ugUAAAC+eMZEAOjrVP//TInuSInHMcDoXgQBAOmB/v//Zg8fhAAAAAAAugUAAAC+ldVEADH/6L9U//9IiccxwOg1BQEAugUAAAC+qMZEADH/6KRU//9IiccxwOgaBQEAxwUQXS4AAQAAAOlP/v//Dx8A6KMGAQAx2+mc/v//Dx9AADsOD4Pw/f//6Tz///8PHwBIi3MIv8nURAAxwOjYBAEASIt7COhnVP//icPpTv7//w8fhAAAAAAAVVNIifW+vNVEAEiJ+0iD7Ajo2lb//0iFwHQVSIPECEiJ7kiJ31tdMdLpylT//2aQSIPECEiJ7kiJ31td6bdV//8PH0QAAGYuDx+EAAAAAABIifhIg+wYv8DVRAC5DAAAAEiJxvOmdBG/zdVEALkMAAAASInG86Z1L0iNdCQISI14DLoKAAAA6DRX//9Ii1QkCIA6ALoAAAAASA9FwkiDxBjDZg8fRAAAv9rVRAC5BwAAAEiJxvOmdBG/4tVEALkHAAAASInG86Z1NkiNeAdIjXQkCLoKAAAA6ONW//9Ii1QkCIA6AHUZuv//AABIg8QYSCnCSInQw2YPH4QAAAAAADHASIPEGMNmDx+EAAAAAABVU0iD7BiD/wYPh6EAAACJ/0iJ9f8k/RC/RAAPH0QAAEiLPkiJDCToFP///0iLDCRIicNIiznoBf///0iFwEiLDCR0DEiF23QHKcOJ2HVAkEiLfQBIizFIg8QYW13phlT//2YPH0QAAEiLMUiLfQBMiUQkCEiJFCToa1T//4XASIsUJEyLRCQIdQVBiwArAkiDxBhbXcNmLg8fhAAAAAAAQYsAKwJ16OunDx+AAAAAALqwxEQAvqkBAAC/QMVEAOgsUv//ZpBmLg8fhAAAAAAAQVVBVEmJzVVTSIn9SInzSYnUSIPsGEiLfiBIhf90Dr4CAAAA6C9W//+FwHUT9kNIEHRtSIPEGFtdQVxBXcNmkEiLeyAx9ugVVv//SIXAdONIi7AAAQAASIX2dSEPH0AASIt7IEiJxuj0Vf//SIXAdMJIi7AAAQAASIX2dOP2RkgQdd1IiUQkCEyJ6UyJ4kiJ7/9VQEiLRCQI68UPH0QAAEiLRUBIg8QYTInpTIniSIneSInvW11BXEFd/+APH0AAD7YFmWcuAEFUVVNIifuD4AM8AnR7TIsjSIsduVouAEiF23Ul61pmLg8fhAAAAAAAMdJMieZIie/oG1L//4XAdC1IixtIhdt0N0iLawi+vNVEAEiJ7+j2U///SIXAddFMieZIie/o7lL//4XAddNbuAEAAABdQVzDDx+EAAAAAAAxwFtdQVzDZg8fhAAAAAAASIu/8AAAAEiF/w+Edf///0iLRwhIifVIid7/kAADAACFwA+EXf///0iF7XSxSIt1ML/q1UQAuQoAAADzpg+VwA+2wOutkGYuDx+EAAAAAABVU0yJzkiJ10iJ00yJzUiD7AjoCf///4XAdQdIg3toAHQOSIPECFtdww8fgAAAAAD2QyAIdeyApZAAAAD76+OQQVZBVUmJ/UFUVUmJ9FNMic5IiddIidXoxP7//4XAdBBbXUFcQV1BXsMPH4AAAAAAvxgAAABJjV1o6MJO//9Bi1UYSYnGSMdACAAAAABIx0AQAAAAAEiJKIXSdTxNheR0CUGLRCQYhcB1LkmLVWhIhdJ1COthDx8ASInCSItCEEiFwHX0SI1aEEyJM1tdQVxBXUFeww8fQABMjW1wSIsDSIXAdORIiwhBi3wkGEyJ6kiJ7kyNQXDolfz//0iLG4XAeA5Ig8MQSIsDSIXAddbruEiDwwjrxkiF2w+EQf///+unDx9EAABmLg8fhAAAAAAAQVdBVkFVQVRJicxVU0iJ80iD7ChMi3EQSIk8JEiJVCQITIlEJBBMiUwkGE2F9g+FowAAAOkXAQAADx+AAAAAAEyJ/+iYT///SYnFSIXAD4SWAAAAgHgBAEiLcxAPhc4AAABIi0MgTTnvQA+UxjHSSIXAdAtIg7jQAAAAAA+VwkA41nRKTTnvD4STAAAASIuA0AAAAL681UQATIn/SIsoQcZFAADol1H//0iFwA+EzgAAADHSSInuTIn/6IlP//8PthXTZC4AQYhVAIXAdFJNi3YITYX2dHkPvjW7ZC4ATYs+QIT2D4VW////SItzEEyJ/+ha+v//hcB0JkiLQyBIhcB0y0iLgNAAAABIhcB0v0iLMEmLPug2+v//hcB1sGaQSIPEKFtdQVxBXUFeQV/DkEiNeAHoF/r//4XAD4Qh////TYt2CE2F9nWNZg8fRAAASIsEJEyLTCQYSYnYSItUJAhMieZIi0hwSInHSItEJBBIg8QoW11BXEFdQV5BX//gSInuTIn/6L1P///pL////0FXQVZJidZBVUFUSYnNVVNJifxIifVIg+wISItGIEyLf0hIi5iQAAAASIXbdQvreUiLWxBIhdt0cEiLE0mLRwgPtjpAODh16A+2cgFAOHABdd4PtkoCOEgCddUPtkoDOEgDdcwxyesWDx+EAAAAAAAPtnwKBEiDwQFAOPd1sg+2dAgEQID+KnXnSInaTYnpTYnwTIn5SInuTInn6ND9//9Ii1sQSIXbdZBIg8QIW11BXEFdQV5BX8MPH4QAAAAAAEFXQVZBVUFUSYn1VVNJifxIg+wYSItGIEiJFCRIiUwkCEiLqJAAAABIhe0PhIIAAAAPH0QAAGYuDx+EAAAAAABNi3QkIE2F9nU16YYAAACQvrzVRABMif9Ii10A6I9P//9IhcB0YjHSSIneTIn/6IVN//+FwHQRTYs2TYX2dCtNi34ITYX/dchMi0wkCEyLBCRMifFIiepMie5MiefoDv3//02LNk2F9nXVSIttEEiF7XWNSIPEGFtdQVxBXUFeQV/DZg8fRAAASIneTIn/6CVO///rnkiJ6kmLTCRwTItMJAhNiegx9kyJ50iLBCT/0EiLbRBIhe0PhUP////rtJBBV0FWQVVBVFVTSIn7SIn1SIPsSEiLR0hIi39QSIlMJBhIjUwkMEiJVCQQumDRQABMi2NYTItzYEiJfCQgSIt+IEiLcAhIiUQkKEjHRCQwAAAAAMdEJDgAAAAA6KhK//+LVCQ4TItsJDCF0g+F9wAAAEiLRCQgSIt9IEiNTCQwumDRQABIi3AISMdEJDAAAAAAx0QkOAAAAADoakr//0iLRCQwSIlEJAiLRCQ4hcAPhbQAAABIi0UgTIu4kAAAAE2F/w+EtQAAAEiJ6EiJ3UyJ+0mJx+sfZi4PH4QAAAAAAEmLdgg6DnRYSItbEEiF2w+EiAAAAEw56w+E+gAAAEg7XCQID4THAAAASIsTSYt0JAgPtgo4DnXID7ZCAThGAXW/D7ZCAjhGAnW2D7ZCAzH/OEYDdG5Ji3YIOg51qw8fAA+2QgE4RgF1nw+2QgI4RgJ1lg+2QgMxyThGA3WL6dAAAABmDx9EAABIi0wkGEiLVCQQSInuSInf6IP9//9Ig8RIW11BXEFdQV5BX8MPH0AARA+2RDoESIPHAUE4wA+FPf///w+2RD4EPCp15EyLTCQYTItEJBBMieFIidpMif5Iie/o6fr//+kc////Dx9AAEyLTCQYTItEJBBIidpIi0wkIEyJ/kiJ7+jD+v//6fb+//9mDx9EAABMi0wkGEyLRCQQSInaSItMJChMif5Iie/om/r//+nO/v//Zg8fRAAAD7Z8CgRIg8EBQDjHD4W2/v//D7ZEDgQ8KnXlTItMJBhMi0QkEEyJ8UiJ2kyJ/kiJ7+ha+v//6Y3+//8PH0QAAEFXQVZJifZBVUFUVVNIif1Ig+w4SItHSEiLX1BMi29YSIt+IEiJTCQQSI1MJCBIiVQkCEiLcAi6YNFAAEiJRCQYSMdEJCAAAAAAx0QkKAAAAADoUUj//4tEJChMi2QkIIXAD4VoAQAASYtGIEyLuJAAAABNhf91HenTAAAADx8ASYt1CDoOdFhNi38QTYX/D4S7AAAATTnnD4TCAAAASYsXSItzCA+2CjgOddQPtkIBOEYBdcsPtkICOEYCdcIPtkIDMf84RgMPhM4AAABJi3UIOg51s5BmLg8fhAAAAAAAD7ZCAThGAXWfD7ZCAjhGAnWWD7ZCAzHJOEYDdYvrFJBED7ZECgRIg8EBQTj4D4V1////D7Z8DgRAgP8qdeJMi0wkEEyLRCQITIn6TInpTIn2SInv6Bf5//9Ni38QTYX/D4VP////Zi4PH4QAAAAAAEiDxDhbXUFcQV1BXkFfw5BMi0wkEEyLRCQITIn6SItMJBhMifZIie/o0/j//+kG////Zg8fRAAARA+2TDoESIPHAUU4wQ+F5f7//0QPtkQ+BEGA+Cp14UyLTCQQTItEJAhIidlMifpMifZIie/ojvj//+nB/v//Zg8fhAAAAAAASItMJBBIi1QkCEyJ9kiJ7+i7+v//SIPEOFtdQVxBXUFeQV/DZpBmLg8fhAAAAAAAQVdBVkmJzkFVQVRJifRVU0iJ/UiD7ChIi0dITIt/UEiLfiBIjUwkEEiJFCS6YNFAAEjHRCQQAAAAAEiLcAhIiUQkCMdEJBgAAAAA6FhG//+LRCQYTItsJBCFwA+FzwAAAEmLRCQgSIuYkAAAAEiF23UP60wPH0AASItbEEiF23Q/TDnrdEpIixNJi0cID7YKOAh15A+2egFAOHgBddoPtnICQDhwAnXQD7ZyAzHJQDhwA3ROSItbEEiF23XEDx8ASIPEKFtdQVxBXUFeQV/DkEyLBCRIi0wkCE2J8UiJ2kyJ5kiJ7+hm9///64wPH0AAD7Z8CgRIg8EBQDj3D4V2////D7Z0CARAgP4qdeNMiwQkTYnxTIn5SInaTInmSInv6Cv3///pTv///2YPH0QAAEiLFCRMifFMieZIie/oXvn//0iDxChbXUFcQV1BXkFfww8fRAAAZi4PH4QAAAAAAEFWQVVJic5BVFVIifVTSIn7SYnVumDRQABIg+wQTItnSEiLfiBIieFIxwQkAAAAAEmLdCQIx0QkCAAAAADoBkX//4tEJAhIixQkhcB1KkiF0nQUTYnxTYnoTInhSInuSInf6In2//9Ig8QQW11BXEFdQV7DDx9AAEyJ8UyJ6kiJ7kiJ3+i3+P//SIPEEFtdQVxBXUFew2YuDx+EAAAAAABIiw15UC4ASIsFalAuAFNIiftIicpIKcJIOdd3U0gBw0iLBUlQLgBIOcN0bkiLFV1QLgBIizUuUC4ASAHTSPfSSCHaSInLSInXSCnzSIkVJVAuAEgp90g533YKSIkNFlAuAEiJykiJFQRQLgBbw2aQSIn+v8BRbwDoE4wCAEiLBfRPLgBIiw31Ty4ASAHDSIsF208uAEg5w3WSgA0PUC4AAuuJDx8AZi4PH4QAAAAAAA+2RxiD6AM8AXYNuAEAAADDDx+AAAAAAEiLVyhIi4LwAAAASDsFVlsuAHTfSIXAdNpVU0iJ+0iD7AhIi6qoAAAASIXtD4TuAAAASIN9CAAPhNMAAABIizX0Ti4ASIsN5U4uAEiJ8EgpyEiD+A8Phn0AAABIiwXGTi4ASIPBEEg5wQ+EkQAAAEiLFdJOLgBJifBIAdFI99JIIcpIiw2XTi4ASInXSIkVnU4uAEgpz0kpyEw5x3YKSIk1i04uAEiJ8kiJFXlOLgBIi1UISIkYSIkCSIPACEiDRRABSIlFCEiDxAi4AQAAAFtdw2YPH0QAAL4QAAAAv0BRbwDo4YoCAEiLDUJOLgBIizVDTi4A6WH///9mDx9EAACADWFOLgAC6WP///8PH0AASIltCOkk////Dx+AAAAAAL8YAAAA6A7+//9IicVIi0MoSImoqAAAAEiJbQhIx0UQAAAAAOn0/v//Dx9EAABmLg8fhAAAAAAAQVZNicZBVUmJzUFUSYn0VUiJ/VNIidNIgf/QUG8AdA9Ihf90CoN/CAwPhIEAAABIi0UASIXAdAaDeAgMdGK/MAAAAOiY/f//SItVAE2F5EiJELrQT28ASIlFAEwPROLHQAgMAAAATIloIEyJYChJi1UoTInxSIlYGEgp0UiJSBCLDWJMLgBI0+tNjQQeW0kp0EnT4F1NiUU4QVxBXUFew0w5aCB1mOvGDx+EAAAAAABIOU8gD4V1////SIn466+QQVbHBURLLgABAAAAQVVJidVBVEGJ9FVIif1ThckPhL0AAABMizXGKy4Av1gAAADo7Pz//0iJw0jHAAAAAADHQAgCAAAASYtGCEiJGEmJXghIjXsoidhIx0MgAAAAAEjHQ1AAAAAASIPn+Cn4jUhYMcDB6QPzSKtMiWtAD7YFrlcuAA+2c0iJwonBg+afg+Igg+FAg+CACdYPtlNJCc4Ptg2MVy4Ag+Z3CfCD4v6D4QEJ0YhLSQ+2FXRXLgCD4ggJ0IhDSEGD/AUPhwoBAABC/yTlSL9EAGYuDx+EAAAAAAC/WAAAAOg2/P//SInDx0AIAgAAAEjHAAAAAADpUP///4BLSASDyQRIiWsQSIlrGIhLSWYPH0QAAEiLBflWLgBIiRhIjUM4SIkF61YuAEiJ2FtdQVxBXUFeww8fgAAAAACDyQRIiWsQSIlrGIhLSevIgH0AOkiJ6A+EkwAAAEiJQxAx0kiJ7r/01UQAMcDoNkL//0iJQxgPtkNIgEtJBIPIBYhDSOuSZi4PH4QAAAAAAIPJBEiJaxBIiWsYiEtJgEtIEOlx////Zg8fhAAAAAAASIlrEEiJaxiAS0gE6Vf///8PH4AAAAAASIlrEEiJaxjpQ////w8fAL5YBAAAv0DFRADoWfEAAOks////Dx9AAIB9AQAPhGP///9IjUUBgEtIAulW////Zg8fhAAAAAAAVVNIif1IifNIg+wISIX2dDYPH4AAAAAASInf/9WDewgPd22LQwj/JMV4v0QADx8ASIs1KVYuAEiJ7+jB////SIsbSIXbddFIg8QIW13DZpCDu4QAAAD/dOZIi3MQSInv6Jv///9IixtIhdt1q+vYkEiLczBIie/ohP///0iLG0iF23WU68FmLg8fhAAAAAAAvtIDAAC/QMVEAOiR8AAASIsbSIXbD4Vt////65oPHwBIizXJSS4A6UT///8PH0AASMcHAAAAAEiJfwjDDx9AAEiLBREpLgBIPdBQbwBzHUiNUAhIiRX+KC4ASIsV7yguAEiJEEiJPeUoLgDDULoyxUQAvusDAAC/QMVEAOifP///Dx9EAABmLg8fhAAAAAAASIsFwSguAEg9gFBvAHYXSI1Q+EiLQPhIiRWqKC4ASIkFmyguAMNQuiXFRAC+9AMAAL9AxUQA6FU///8PH0QAAEiF/3QFgD89dA65AQAAAOl8/P//Dx9AAEFUVTHAU4nzSI13AUiLPUVWLgBIidUx0ugDQP//D7YVhFQuAIneuQEAAABIicdBidSD4veIFW5ULgBIiepBwOwD6DL8//8PthVbVC4AQYPkAUHB5ANbXYPi90EJ1ESIJURULgBBXMOQv0BQbwDplj///2YPH0QAAEFVQVRVU0iD7AhIhf8PhEABAABMiyXWRy4AQYn1SIn9TYXkdClMieNIiztIie7ohUD//4XAD4TlAAAASItbCEiF23XkTYtkJBBNheR110WF7XUxv7aSQwC5CgAAAEiJ7vOmdCC6BQAAAL4Qx0QAMf/oiz7//0iJ6kiJxzH2McDo/O0AAL9YAAAA6JL4//9Iie9JicToXz///0mJBCRIiwU8Jy4AScdEJAgAAAAAScdEJBAAAAAAScdEJBgAAAAAScdEJCAAAAAAScdEJDAAAAAAScdEJCj/////ScdEJDgAAAAAScdEJEAAAAAAQcdEJEgAAAAAQcdEJEwAAAAAQcdEJFAAAAAATIkgSY1EJBBIiQXKJi4A6y0PH4QAAAAAAEWF7XQgugUAAAC+2MZEADH/6Mo9//9IiepIiccx9jHA6DvtAABIg8QITIngW11BXEFdw0Ux5OvtDx+EAAAAAABBV0FWSYn/QVVBVEmJ9VVTSInVTInDRYnMSIPsOEyLN0iJTCQYTYX2D4QVAQAADx+EAAAAAABmLg8fhAAAAAAAQYN+CA8Ph10GAABBi0YI/yTF+L9EAGYuDx+EAAAAAABJi3YQSIXbdDFIi77wAAAASI1MJCi6QF1vAEiLRwj/kKgCAACFwA+ENAcAAItEJCiFwHQGxwMBAAAASYsHTItEJBhNi004SItAEA+3UCRmgeKAA2aB+gACD4RqBwAA9kAhgA+FiAYAAEGLTXyD+f8PhOsHAACJSHBBOUlwcwdBiUlwi0hwugEAAABI0+JJjUwQ/0j32kghykmJ0kwpwg+FPAgAAEmLUShMicFIKdFIiUhgiw2wRS4ASItAOEjT6EkBwEyJwEgp0EjT4EmJQThMiUQkGE2J902LNk2F9g+F/f7//0iLRCQYSIPEOFtdQVxBXUFeQV/DZg8fhAAAAAAASYtVOEiLRCQYSYt+GEgrQihJiUZISYtFOEmJRkDoPjz//4sNQEUuANP4SJhIA0QkGEmLVThNifdIiUQkGEgrQihI0+BIiUI4641mDx9EAABJi1U4SItEJBi+MEhvAEmLfhhIK0IoSI1UJBhJiUYwSYtFOEmJRijoNMwAAEGLRhAtGgEAAIP4BA+HIgYAAP8kxXjARAAPHwBJi0U4SYtuEE2J90mJRiDpK////w8fQABJi0U4TYn3SIkF6lEuAOkU////Dx9EAABJjX4wSItMJBhFieFJidhIiepMie5Niffou/3//0iJRCQY6ej+//+QQYO+hAAAAP9NifcPhNb+//9Ji35YSIX/D4QdBwAAQYCmkAAAAP5IjVQkGL4wSG8A6IvLAACLPX1TLgCF/w+ELQQAAEiLBVZTLgBIixVfUy4ASIlEJBhIhdJ0CUgDQihIiUQkGEmLTjhIicpIhckPhHD+//9IiwUlUS4ASItACItACIPoAoP4AQ+GYgUAAEiLRCQYSIH6MEhvAA+E4AYAAEmDflgAD4T2BgAARYu+gAAAAEWF/w+OcAYAAESJ+b4BAAAASNPmSInxSI10MP9I99lIIfFIic5IKcZIiTQkdFiLNQ5SLgCF9g+EqAUAAIM9m1IuAAF0QUmLRjC6BQAAAL5gyEQAMf9IiUwkEEiJRCQI6Do6//9IixQkSIt0JAhIiccxwOin6QAASYtWOEiLTCQQZg8fRAAAgEokAUiJSjBIiUooSMdCYAAAAABJi1ZQSY1+EEWJ4UmJ2EyJ9uhO/P//QQ+2hpAAAABJi1Y4g8gBQYiGkAAAAEiB+jBIbwAPhJMDAACoCA+FiwMAAEGLRnhIi3ooiw3dQi4ASItyOEiJfCQYTI1EB/9I0+5I99hMAcZIIfBIKfhI0+BIiUI4TYtGQE2FwA+EvAcAAEmLfmBIhf8PhOcEAAC699VEADH2TIkEJOgn1AAASYtWOEyLBCRIiUIwQQ+2hpAAAABNifeDyAJBiIaQAAAASIH6MEhvAA+E0Pz//6gID4XI/P//i0IgqAEPhE4EAAAlAgQAAD0ABAAAD4TWBgAASItCOEiFwA+E8wYAAEiLVCQYSYN+SAAPhFoIAACLDRtCLgBI0+hJi35oTI0EAkyJRCQYSIX/dBdIjVQkGL4wSG8ASIkEJOg7yQAASIsEJEmLdkBIhfYPhE78//9Ji1Y4TYn39kIgAw+EQPz//0iLTCQYSIlOOEWF5A+FCQcAAEmLdkhIhfYPhB78//9JO3ZAD4QU/P//SYtWOPZCIAIPhH0GAABIi0owTYn3SAHISIlGOEWF5A+E8vv//0mNfjgx0ujw0f//6eL7//8PHwBJx0YYAAAAAEmLVThNifdIi0QkGEgrQihJiUYQ6b77//8PH4AAAAAASItMJBhFieFJidhIiepMie6/sFxvAE2J9+hi+v//SIlEJBjpj/v//w8fhAAAAAAASItEJBhJi3U4SI1UJChIiUQkKE2LfhDHBY9QLgAAAAAATIn/6DfIAACLBYFQLgCD+AEPhKgBAACD+AIPhO8BAADHBWVQLgAAAAAAQYtHEIPg/YP4BHUVSYtHGIA4Lg+EnAIAAEGAjZAAAAAQQfaFkAAAAAgPhQr7//9MOy2PTC4AD4S1BQAASItUJChMi0QkGEw5wg+E5fr//4sNeEAuAEwpwkyJ90iJ7kjT4kmLTTjoe/P//0GLhYwAAABNizaD+AN0EYP4Ag+EeQIAAEmLRTiDSCABTItEJChMiUQkGOmg+v//Dx9AAEmNfhDpi/v//w8fgAAAAAC+QRUAAL9AxUQATYn36CbnAADpePr//5CDPRlPLgABD4Tn+///SYtGWE2LfjAx/7oFAAAAvkjHRABIiQQk6LY2//9IizQkSInHTIn6McDoJeYAAOm0+///uAgAAACLDb0/LgC6AQAAANPiOdAPQsLT6Olu+v//ZpC4AgAAAOveZg8fhAAAAAAAuAQAAADrzmYPH4QAAAAAALgBAAAA675mDx+EAAAAAABMicJJK1EoTIlEJBhIiVBg6c/5//8PHwBIg3o4AA+EnPz//77ZEwAAv0DFRADoXuYAAOmI/P//Zg8fhAAAAAAASIsF0U4uAEiFwA+E3gMAAEk5xg+ESP7//77qFAAAv0DFRADoKOYAAOk0/v//Dx8AMf+6BQAAAL7IyEQA6M81//9IiccxwOhF5QAA6az4//9IiwWJTi4ASIXAD4QWBAAASTnGD4T4/f//vvMUAAC/QMVEAOjY5QAA6eT9//8PHwC64MREAL6GFAAAv0DFRADoPDX//w8fQABIi1AoSStRKEyJRCQYSIlQYOn2+P//ZpD2QSMED4SU+v//SYtGEEiFwHQKSIM4AA+ElQQAAE2LfjC6BQAAAL6Yx0QAMf/oLjX//0yJ/kiJxzHA6KHkAABJi0YQSYtOOEiLQBBNifdIi1AoSItAOIBJJAFIiVEwSIlRKEiJQTjpjPj//w8fRAAAgHgBAA+EYv3//+lV/f//kItIcOkQ+P//JQIEAAA9AAQAAA+EiAIAAEiLQjhIi1QkGOnB+///SYN+WAAPhU36///pkvr//0iLBfNKLgBIi0AIg3gIBQ+Fev3//+lt/f//SYtWSEiF0g+EEwMAAEiLQjhB9oaQAAAAIA+E/QEAAEgDBCRJi1Y4SIlCMOkF+///iw2CPS4ASInuTIn/TIlUJBBIiUQkCEyJDCRI0+JMicnoe/D//0yLVCQQSItEJAhMiwwkTYnQ6Yn3//9IicFIxwQkAAAAAOn9+f//D7YFDkouAIPgAzwCD4UX+f//SIsFTEouAEiLQAiDeAgCD4UC+f//6GnDAABIicdJiUZYSIXAD4Tt+P//6aL4//8PH0AASIM94DQuAAAPheoCAABIicFFMf9IxwQkAAAAAOmr+f//SYtGQEiFwA+EVwMAAESLQiBB9sADdFxIizCAPip1VL+2kkMAuQoAAADzpnVGRInBic6JyIPmGYPIIIP+AQ9EyEiLBVg8LgBIhcB0E4VISHQFhUhMdBlIi0AQSIXAde0x9r+2kkMA6ET0//9Ji1Y4SYlGQEH2hpAAAAAID4WtAAAAi0og9sEBD4ShAAAAgeECBAAAgfkABAAAD4SPAAAARYXkD4SGAAAAD7YNAEkuAIPhA4D5AnR3SIswQbm2kkMAuQoAAABMic/zpnViTIsFzDsuAE2FwHRWSYswuQoAAABMic/zpnUHSYN4EAB0QIM9+kouAAF0N4A9zUkuAABMizq+0MdEALoFAAAAdQW+GMhEADH/6JYy//9Mif5IiccxwOgJ4gAASYtGQEmLVjhIi0A4RIt6cOnW9///STtWQHQHRYu+gAAAAEWF/w+O8f3//0SJ+b4BAAAASNPmSInxSI1EMP9I99lIIcjp0/3//w+2BTlILgCD4AM8Ag+EZv3//0iLVCQYMcDpMvn//0yJNeNKLgDpZ/r//0mLSEBIhcl0LkiLSThIi1QkGEg5USgPhwH5///p8fj//02J90H2hpAAAAAgD4R79f//6W35//9Ii3IwSDlyKA+FyPj//+kI/f//Dx9AADH2v7aSQwDovPL//0mJwOkw+P//Mfa/tpJDAOio8v//TItEJChMiUA46Sn1//9MiTVjSi4A6d/5//9Ii0ooSYtWWEmNfjhIiQQk6BnL//9IiwQk6dn4//9Ji0BASYtWOEiFwA+EBPj///ZCIAEPhPr3//9Ii3A4SItEJBhIi34oSDnHD4a8AAAATItKOE2FyQ+ErwAAAIsNVDouAEnT6UyJyUgBwUg5zw+ClwAAAEg7fjAPhLX3//9Ni34wugUAAAC+mMhEADH/TIkEJOj3MP//TIn+SInHMcDoauAAAEmLVjhMiwQk6YL3//8PH0QAAL5+EwAAv0DFRABIiQQk6AXhAABIiwQkRTH/SMcEJAAAAABIicHpqvb//4N4CAUPhWH7///phvv//w+2DZhGLgCD4QOA+QIPhJP3//9NiXBA6Yr3//9Bg76MAAAAAXQ2SANGMEgp+EWF/34ZRIn5vgEAAABI0+ZIifFIjUQw/0j32UghyEiJQjDp8Pb//4tKIOnE/P//iw1lOS4ASItGOEjT6EgDRjDrvkFXQVZJifdBVUFUMfZVU0mJ/EiJy0iJz0iJ1UiD7AhFicVFic7oBvH//0iF20mJBw+Vw3RTRYX2dU6/tpJDALkKAAAASInu86Z1PUmJBCSE23RHRYXtdEK+6MhEADH/ugUAAADoxy///0iDxAhIiccx9ltdQVxBXUFeQV8xwOkt3wAADx9EAAAx9kiJ7+ie8P//SYkEJITbdblIg8QIW11BXEFdQV5BX8MPH4AAAAAAQVdBVri2kkMAQVVBVEmJ/VVTuQoAAABIicdJifdIg+wI86YPhM8AAAC5CgAAAEyJ7kiJx/OmD4S8AAAATIs1LTguAE2F9g+E2QAAAEUx5A8fgAAAAABmLg8fhAAAAAAATInz6wwPHwBIi1sISIXbdERIiytNheQPhNMAAABMie5Iie/osDD//4XAddy6BQAAAL5gyUQAMf/o4y7//0yJ6kiJxzH2McDoVN4AAEiLWwhIhdt1vE2LdhBNhfZ1ok2F5HRivxAAAADo0+j//0yJ70iJw+igL///SIkDSYtEJAhIiUMISYlcJAhIg8QIW11BXEFdQV5BX8O6BQAAAL4oyUQAMf/ody7//zH2SInHMcDo690AAEyLNVQ3LgBNhfYPhSf///+6BQAAAL6gyUQAMf/oSi7//0yJ6UiJx0yJ+jH2McBFMeTotd0AAOlz////TIn+SInv6N0v//+FwE0PRObpF////2YuDx+EAAAAAABIi4eoAAAAww8fhAAAAAAAQVdBVjHJQVVBVEmJ/lVTifVIif6/QFBvAEGJ10iD7Ajo4y///0iJw0iFwA+ErwAAAEyLYEhNheQPhNIAAABFhf90doH9fQEAAHVuMf9MieK+QFBvAOjGuf//SIXAD4S1AAAASIsTSIkQSItTCEiJUAhIi1MQSIlQEEiJA0yNaBhMiWBIiaicAAAASIPECEyJ6FtdQVxBXUFeQV/DDx9AAIXtdQSFwHkbSIsDSIXAdCBMO2BIdRpIicOLg5wAAAA56HXdTI1rGOvBDx+AAAAAAEUx7UWF/3Sy6W7///8PHwBFMe1Fhf90ojH/ugUAAAC+6MlEAOgHLf//TIn2SInHMcDoetwAAOuCDx+EAAAAAABNifTpZP///7oFAAAAvujJRAAx/+jXLP//TInmSInHMcDoStwAAEUx7elM////ZpAx0kiD7Ai5wEVAAL7oAwAAv8BRbwBBuKBFQADoEHMCALk9AAAAurAAAAC+YNNAAL9AUG8ASMcFcRUuANBQbwDo9C3//4XAdRsx/7oFAAAAvhDKRADoZyz//0iJxzHA6N3bAABIiwVGFS4AuQEAAAAx0r4CAAAAMf9IxwAAAAAASIlACEjHBUJBLgAAAAAASMcFP0EuAFBcbwBIxwVsQS4AAAAAAEjHBWlBLgCQXG8ASMcFdjQuAAAAAABIxwVzNC4AsE9vAOj26P//ugEAAAAx9r8B1kQASIkFizUuAOje/f//SMcFAzUuAAAAAABIiQXsQC4ASMdAODBIbwBIxwW5QC4AcFBvAEiDxAjDDx9AAFNIifuDexAIdx6LQxD/JMWgwEQADx9AAEiLWxiDexAIduhmDx9EAABbw2YPH0QAAEiLexjox////0iLWyDrxZBIi3sY6Lf///9Ii3sg6K7///9Ii1so66wPH4QAAAAAAIsDjYjA/v//g/kDd7u4AQAAAEjT4KgNdK9Ii3sYMdIx9ugq/f//SIXAdJ1Ig3g4AHWWWzH2SInH6wZmDx9EAABBVFWJ9VNIi3cwSIn7uQoAAAC/6tVEAPOmD4SBAAAAgbuEAAAAfQEAAHRlSItzMEiLPSpBLgDo7Sv//0iJQzhIhcAPhIAAAABIi3tYSIlAaEjHQGAAAAAASImYqAAAAEiF/3QF6Pf+//9Ii3tgSIX/dAXo6f7//4uDgAAAAIP4/3QHSItTOIlCcFtdQVzDZpBIi0M466lmLg8fhAAAAAAAMf+6BQAAAL44ykQA6F8q//++6tVEAEiJxzHA6NDZAADpWv///w8fAEiLczBIiz2NQC4Aiero1in//0iJQzhIhcAPhWH///9IiwVyQC4ATItjMLoFAAAAvmDKRAAx/0iLQAhIiyjoBir//0yJ4kiJxzHASInu6HbZAABIi0M46SX///8PHwBmLg8fhAAAAAAAQVRVifVTSI1f6EyLZzBMOWfwdBS+zwUAAL9AxUQA6P3ZAAAPH0QAAEiLG0iF23QoTDljSHUii4OcAAAAOeh0C4XtdeTB6B+EwHXdSI1DGFtdQVzDDx9AAFsxwF1BXMOQQVdBVonwQVVBVIPgEVVTSYn+ifNJic9Ig+woiUQkEInwSIlUJAiD4AmJRCQUifAlAQQAAIlEJBiJ8CUBAEAAiUQkHEiLBYY+LgBIi2ggSIXtD4TDAQAASYnsSMcEJAAAAABmDx9EAABJi3QkOEWLrCSIAAAASIX2dCFEi24gTYX/dBhJi5bwAAAATInxSIs9PD8uAEH/14XAdEVBMd1BgeUbBUAAdTlMiSQkTYtkJCBNheR1s0iLRCQISIXAdAdIizwkSIk4SIsEJEiDxChbXUFcQV1BXkFfww8fgAAAAABNi2QkIE2F5A+Fev///0iDPCQAdcCDfCQQEUyLLCQPhMwAAACDfCQUCQ+EoAEAAIF8JBgBBAAAD4QSAgAAgXwkHAEAQAAPhAkBAACJ2CUBAQAAPQEBAAAPhL8CAAD2wwEPhFoCAABIxwQkAAAAAEyLLCRIhe0PhNIAAAAPH0QAAEiLdThEi6WIAAAASIX2dCFEi2YgTYX/dBhJi5bwAAAATInxSIs9Rj4uAEH/14XAdAtBMdxBg+QBTA9E7UiLbSBIhe11u02F7UyJLCQPlcBNhf9Ix0QkCAAAAAAPlMJFMf8I0A+F/f7//+l1/v//ZpBIi3U4RIuliAAAAEiF9nQhRItmIE2F/3QYSYuW8AAAAEyJ8UiLPdY9LgBB/9eFwHQOQTHcQYHkEwVAAEwPRO1Ii20gSIXtdbjri4N8JBARD4Xf/v//SMcEJAAAAAAxwOl7////SIXtdOyJ2DHJJQABAABJicyJBCTrI0GB5QAAQAB0DYsEJIXATA9E5Q8fQABIi20gSIXtD4SAAQAASIt1OESLrYgAAABIhfZ0IUSLbiBNhf90GEmLlvAAAABMifFIiz05PS4AQf/XhcB0wkSJ6DHYqQMFAAB1oEmJ7OuxSIXtD4Rt////RTHt6zAPHwCpCwEAAHUZQYHkAABAAEwPRO0PH0AAZi4PH4QAAAAAAEiLbSBIhe0PhLj+//9Ii3U4RIuliAAAAEiF9nQhRItmIE2F/3QYSYuW8AAAAEyJ8UiLPbk8LgBB/9eFwHTCRIngMdipCwFAAHWWSYnt67FIhe0PhB0BAACJ2TH2Mf+ByQIBAACD4wLrIA8fgAAAAACoAnUEhdt1P0iJ774BAAAASIttIEiF7XQuSItVOIuFiAAAAEiF0nQDi0IgicIxyvfCAQQAAHTJhfZ1DIHiAwEAAEgPRP3ryUiJPCTpJv3//0iJLCQxyUiF7Q+EF/3//w8fgAAAAABmLg8fhAAAAAAASItVOIuFiAAAAEiF0nQDi0IgMdj2xCBID0TNSIttIEiF7XXcSIkMJOnZ/P//TYXkTIkkJA+VwOmz/f//SIXtD4Qg/v//RTHtSIt1OESLpYgAAABIhfZ0IUSLZiBNhf90GEmLlvAAAABMifFIiz2eOy4AQf/XhcB0DkEx3EGB5AMFQABMD0TtSIttIEiF7XW46VD9//9IxwQkAAAAAOlk/P//Dx9AAGYuDx+EAAAAAABBVFVFMeRTSIPscEiLLW4tLgBIhe0PhKIAAAAPH0QAAEiLVSCLQkTB6AWpQBAAAHV/9kVIEHV5SIuakAAAAEiF23Ub62sPHwC+AQAAAEiJ3+hbwP//SItbEEiF23RSSItDaEiFwHQQSIsN8jouAEg5iPAAAAB03vdDIAAAMAB11UWF5HXDugUAAAC+U9ZEADH/6Hok//9Iiz1LPC4ASInGMcBBtAHoLib//+ucDx9AAEiLbTBIhe0PhWP///+6BQAAAL4H1kQAMf/oQiT//0iJxzHA6LjUAAC6BQAAAL4f1kQAMf/oJyT//7oFAAAAvirWRAAx/0mJxOgTJP//ugUAAAC+MdZEADH/SInF6P8j//+6BQAAAL441kQAMf9IicPo6yP//0iLPbw7LgBNieFJiehIicJIidm+PdZEADHASYnk6JEl//9Iiy2yLC4ASIXtD4TFAAAAkEiLVQBIiz2FOy4Avm/WRAAxwOhpJf//SItVIL611UQATInnMcDobif//0yJ5r921kQAMcDo/9MAAEyJ4osKSIPCBI2B//7+/vfRIcglgICAgHTpicHB6RCpgIAAAA9EwUiNSgJID0TRAMBIg9oDTCniidOD+g9/DYPDAeg41QAAg/sQdfNIi3UoMcC/4tREAOij0wAASIN9SAB0FotVSIXSD4XpAAAAi0VMhcAPhb4AAADoIdUAAEiLbRBIhe0PhTz///8x/76gykQAugUAAADo4yL//0iLPbQ6LgBIicYxwOiaJP//9gXPOC4AAnUvMdK+6AMAAL9AUW8AQbigRUAAucBFQADoHWkCAEiLPc44LgAx0r4QAkEA6Fol//9Iix0jLC4AgwXMKi4AAUiLLaU3LgBIhdt0E0iJ30iJ7ugVwf//SIsbSIXbde1IixU+Oi4ASIs9rzguAL5AXW8A6LXDAABIg8RwW11BXMMPH0AAv3zWRAAxwOi80gAAi31M6LSw///pKf///w8fgAAAAADoI9QAAIt9SOibsP//6QX///9mDx9EAABBVUFUSInwVVNJiflIic2/6tVEAEiD7AiLXiBIi3EwuQoAAABMixU1OC4AQYnYQYHgAIAAAPOmdRdIg3hoAA+EfAEAAEiDxAhbXUFcQV3DkPYFujcuAAh0BfbHIHXbRYXAddZIidZJicVNicxIhdJ0FkmLQghMieq/QF1vAP+Q8AIAAIXAdL1Jg31oAHW2D7YFezcuAInageP7/fH/gOb9g+ADPAKLhYwAAAAPRNqD+AIPhFkBAACJ2oPi/oP4Aw9E2kiLTThIhckPhKcBAACJ2A+2USSDyPcjQSCJQSD2wgQPhekAAACDygQJ2EmLvfAAAACIUSRIixVjNy4AQbhAXW8AiUEgTInuSItCCP+QSAEAAPfDAACAAHQVQYuVxAAAAEiLRTiJkMQAAAAPH0AAgeMAAAAQD4X0AAAASItFOEGLVXA7UHB2A4lQcIsVhiouAEmJRWiF0nUwSIuQEAEAAEyJqBABAABJx4UIAQAAAAAAAEmJlRABAABIhdIPhOcAAABMiaoIAQAAvxgAAADonNr//8dACAUAAABIxwAAAAAASYtUJAhIiQJJiUQkCEyJaBDpjP7//w8fhAAAAAAASMdAaDBIbwDpd/7//w8fAInaicaD4vcx1oHmAACAAXUX98MAAIAAdG9Bi73EAAAAObnEAAAAdGAl//9//oHj9/9//gnYiUEg6SP///8PHwBIiwVJNi4ASItACIN4CAV0O4Pj/IDPAumW/v//Dx9AAEmLvfAAAADoFCL//4P4LQ+F9/7//8dFeIAAAADp6/7//w8fgAAAAACJ0+ungeP9/v//gM8C6Vj+//9MiagIAQAA6RT///+J3kiJ7+iA9P//SItNOOlG/v//Dx+AAAAAAEFXQVZBVUFUVVNIifVIiftMic5IiddIg+xISIlUJBBIiUwkGEyJBCRMiUwkIOiuzf//hcB0EkiDxEhbXUFcQV1BXkFfww8fAIt7GEyNezCF/w+E0QEAAEyLczBNhfYPhNwBAABIi0QkEEiDwHBIiUQkKOsQDx9AAE2LNk2F9g+EvAEAAEGDfggFde2LSxiFyQ+EsgAAAEiLBCRIi0AgSIXAD4RpAQAASIuA0AAAAEiFwA+EWQEAAEyLIMdEJAgBAAAASYtGEEiLkPAAAABIi4LQAAAASIXAD4STAQAATIsox0QkDAEAAABMie5MiefoNR7//4P4AH+AD4WGAAAAi0QkDAtEJAh0QItUJAiF0nQISIsEJEyLYBCLRCQMhcB0DkmLRhBIi4DwAAAATIsoTInuTInn6O8d//+D+AAPjzb///91QA8fQABIhe0PhCf///+LfRiF/w+EHP///4P/BQ+EE////0mLThBIi1QkKEiLdCQQTI1BcOjUyv//hcAPifT+//9IjUQkMEiLTCQgSItUJBhIi3QkEEjHRCQwAAAAAEiJx0iJRCQ46ML7//9Ii0QkMEiFwA+Eev7//0iDOAB0D74pCgAAv0DFRADo780AAEiLQzBJOcZ0GmYPH0QAAEiFwA+ElwAAAE2LP0mLB0w58HXsSItEJDBMiTBJiQdIg8RIW11BXEFdQV5BX8NmkEiLBCTHRCQIAAAAAEyLYBDpnf7//w8fAEiF7XQTi3UYhfYPhR/+//8PH4QAAAAAAEiLTCQgSItUJBhMif9Ii3QkEOgZ+///SIPESFtdQVxBXUFeQV/DZi4PH4QAAAAAAEyLKsdEJAwAAAAA6Wj+//++LgoAAL9AxUQA6DHNAADpVf///2aQZi4PH4QAAAAAAEFXQVZJifZBVUFUSYn8VVNIjW8wSInTSIPsGEyLbghNhe0PhA0DAABNi30ISI1vME2F/w+EIAEAAEmLRwhIjW8wSIXAdFNIi3AISIX2dA1IiQQk6Kj///9IiwQkSIswSY1sJDBIidkx0kiJBCRIie/oW/r//0iLBCRIi3AQSIX2dA9IidpMiefoc////0iLBCRIicfopxr//0mLN0iJ2THSSInv6Cf6//9Ji0cQSIkEJEiFwA+ElwAAAEiLcAhIhfZ0C0iJ2kyJ5+gy////SIsEJEiJ2THSSInvSIsw6O75//9IiwQkSItAEEiFwHRZSItwCEiF9nQVSInaTInnSIlEJAjo+P7//0iLRCQISIswSInZMdJIie9IiUQkCOiu+f//SItEJAhIi3AQSIX2dBBIidpMiefoxf7//0iLRCQISInH6PgZ//9Iizwk6O8Z//9Mif/o5xn//0mLdQBIidkx0kiJ7+hm+f//TYt9EE2F/w+EtgEAAEmLRwhIiQQkSIXAD4SXAAAASItwCEiF9nQLSInaTInn6GT+//9IiwQkSInZMdJIie9IizDoIPn//0iLBCRIi0AQSIXAdFlIi3AISIX2dBVIidpMiedIiUQkCOgq/v//SItEJAhIizBIidkx0kiJ70iJRCQI6OD4//9Ii0QkCEiLcBBIhfZ0EEiJ2kyJ5+j3/f//SItEJAhIicfoKhn//0iLPCToIRn//0mLN0iJ2THSSInv6KH4//9Ji0cQSIkEJEiFwA+E5QAAAEiLQAhIhcB0WUiLcAhIhfZ0FUiJ2kyJ50iJRCQI6J79//9Ii0QkCEiLMEiJ2THSSInvSIlEJAjoVPj//0iLRCQISItwEEiF9nQQSInaTInn6Gv9//9Ii0QkCEiJx+ieGP//SIsEJEiJ2THSSInvSIsw6Br4//9IiwQkSItAEEiFwHRZSItwCEiF9nQVSInaTInnSIlEJAjoJP3//0iLRCQISIswSInZMdJIie9IiUQkCOja9///SItEJAhIi3AQSIX2dBBIidpMiefo8fz//0iLRCQISInH6CQY//9Iizwk6BsY//9Mif/oExj//0yJ7+gLGP//SYs2SInZMdJIie/oi/f//02LbhBNhe0PhO0DAABNi30ITYX/D4S2AQAASYtHCEiJBCRIhcAPhJcAAABIi3AISIX2dAtIidpMiefofPz//0iLBCRIidkx0kiJ70iLMOg49///SIsEJEiLQBBIhcB0WUiLcAhIhfZ0FUiJ2kyJ50iJRCQI6EL8//9Ii0QkCEiLMEiJ2THSSInvSIlEJAjo+Pb//0iLRCQISItwEEiF9nQQSInaTInn6A/8//9Ii0QkCEiJx+hCF///SIs8JOg5F///SYs3SInZMdJIie/oufb//0mLRxBIiQQkSIXAD4TlAAAASItACEiFwHRZSItwCEiF9nQVSInaTInnSIlEJAjotvv//0iLRCQISIswSInZMdJIie9IiUQkCOhs9v//SItEJAhIi3AQSIX2dBBIidpMiefog/v//0iLRCQISInH6LYW//9IiwQkSInZMdJIie9IizDoMvb//0iLBCRIi0AQSIXAdFlIi3AISIX2dBVIidpMiedIiUQkCOg8+///SItEJAhIizBIidkx0kiJ70iJRCQI6PL1//9Ii0QkCEiLcBBIhfZ0EEiJ2kyJ5+gJ+///SItEJAhIicfoPBb//0iLPCToMxb//0yJ/+grFv//SYt1AEiJ2THSSInv6Kr1//9Ni30QTYX/D4QEAgAASYtHCEiJBCRIhcAPhOUAAABIi0AISIXAdFlIi3AISIX2dBVIidpMiedIiUQkCOia+v//SItEJAhIizBIidkx0kiJ70iJRCQI6FD1//9Ii0QkCEiLcBBIhfZ0EEiJ2kyJ5+hn+v//SItEJAhIicfomhX//0iLBCRIidkx0kiJ70iLMOgW9f//SIsEJEiLQBBIhcB0WUiLcAhIhfZ0FUiJ2kyJ50iJRCQI6CD6//9Ii0QkCEiLMEiJ2THSSInvSIlEJAjo1vT//0iLRCQISItwEEiF9nQQSInaTInn6O35//9Ii0QkCEiJx+ggFf//SIs8JOgXFf//SYs3SInZMdJIie/ol/T//0mLRxBIiQQkSIXAD4TlAAAASItACEiFwHRZSItwCEiF9nQVSInaTInnSIlEJAjolPn//0iLRCQISIswSInZMdJIie9IiUQkCOhK9P//SItEJAhIi3AQSIX2dBBIidpMiefoYfn//0iLRCQISInH6JQU//9IiwQkSInZMdJIie9IizDoEPT//0iLBCRIi0AQSIXAdFlIi3AISIX2dBVIidpMiedIiUQkCOga+f//SItEJAhIizBIidkx0kiJ70iJRCQI6NDz//9Ii0QkCEiLcBBIhfZ0EEiJ2kyJ5+jn+P//SItEJAhIicfoGhT//0iLPCToERT//0yJ/+gJFP//TInv6AEU//9Ig8QYTIn3W11BXEFdQV5BX+nrE///kGYuDx+EAAAAAABBVUFUVVNIif1Ig+wIgD8AdWPpiQAAAGYPH4QA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SI1YDulL////SI17C0iNdCQIMdLo63L9/0iJwkiJBXGFLABIweo/hNJ1XUiLVCQIgDoAdVNIhcAPhR3+//9IxwVLhSwA/////+kN/v//D7YFNIUsAIPICIPg74gFKIUsALgBAAAA6dn4//8PtgUXhSwAg8gQg+D3iAULhSwAuAEAAADpvPj//0iLBXVtLAC6BQAAAL4AqEYAMf9IjVgL6OBu/f9Iid5IiccxwOhTHv//SIsF3IQsAOl4////SIMNd4UsAAK4AQAAAOl1+P//SIMNZYUsACC4AQAAAOlj+P//SIENUIUsAAAEAAC4AQAAAOlO+P//SIMNPoUsABCwAek/+P//SIENLIUsAAAIAACwAekt+P//SIMNHYUsAAiwAeke+P//SIMNDoUsAECwAekP+P//SIEN/IQsAAAQAACwAen99///ugUAAAC+kKhGAOn+/f//SI17EEiNdCQIMdLonnH9/4gFH4QsAEiLRCQIgDgAdClIiwWHbCwAviCoRgAx/7oFAAAASI1YEOjybf3/SIneSInHMcDoZR3//4Al5IMsAN+4AQAAAOmU9///SIMlfIQsAPdIgyV8hCwA/rAB6X33//9Igw1lhCwACEiDDWWELAABsAHpZvf//4ANpYMsACDGBZ+DLACQsAHpUff//4AlkIMsAN/GBYqDLACQsAHpPPf//4Ale4MsAN/GBXWDLABnsAHpJ/f//7oFAAAAvmutRgDpKP3//8cF6oMsAAAAAACwAekH9///xwXVgywAAAAAALAB6fb2//+AJTKDLAC/uAEAAADp5fb//4ANIYMsAECwAenX9v//iwURgywAJf9//v8NAAABAIkFAYMsALgBAAAA6bf2//+LBfGCLAAl/3/+/4DMgIkF44IsALgBAAAA6Zn2//+AJdWCLAD7sAHpi/b//4ANx4IsAASwAel99v//gA22giwACLAB6W/2//+AJayCLAD3sAHpYfb//4ANnoIsAAiwAelT9v//SIMNO4MsAAFIgQ04gywAgAAAALAB6Tn2//9mDx+EAAAAAABBVUFUSYn1VVNIY+9IjXUFSYnMSGPaSIPsCEmLfQBIg8MNSMHjBejFbP3/SYlFAMcEKHo6UDpIid7GRCgEAEmLPCToqWz9/0mJBCRIjYwYYP7//0iLBRaJCAC+QGRLAEiNeQhIiQFIiwWbiggASIPn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dGFydGluZyBwYXJzZQoAU3RhY2sgc2l6ZSBpbmNyZWFzZWQgdG8gJWx1CgBFbnRlcmluZyBzdGF0ZSAlZAoAUmVhZGluZyBhIHRva2VuOiAATm93IGF0IGVuZCBvZiBpbnB1dC4KAE5leHQgdG9rZW4gaXMAU2hpZnRpbmcAICAgJCVkID0gAE1SSSBzdHlsZSBzY3JpcHQAPwBmaWxsIHZhbHVlACpkZWZhdWx0KgBQVF9OVUxMAFBUX0xPQUQAUFRfRFlOQU1JQwBQVF9JTlRFUlAAUFRfTk9URQBQVF9TSExJQgBQVF9QSERSAFBUX1RMUwBQVF9HTlVfU1RBQ0sARklMRUhEUgBQSERSUwBWRVJTSU9OIHNjcmlwdABnbG9iYWwAbG9jYWwAZXh0ZXJuAC0+ICQkID0Ac3ludGF4IGVycm9yAEVycm9yOiBkaXNjYXJkaW5nAEVycm9yOiBwb3BwaW5nAG1lbW9yeSBleGhhdXN0ZWQAQ2xlYW51cDogZGlzY2FyZGluZyBsb29rYWhlYWQAQ2xlYW51cDogcG9wcGluZwBQVF9HTlVfRUhfRlJBTUUAJGVuZAAkdW5kZWZpbmVkAElOVABMTkFNRQBQTFVTRVEATUlOVVNFUQBNVUxURVEARElWRVEAJz0nAExTSElGVEVRAFJTSElGVEVRAEFOREVRAE9SRVEAJz8nACc6JwBPUk9SAEFOREFORAAnfCcAJ14nACcmJwAnPCcAJz4nAEdFAExTSElGVABSU0hJRlQAJysnACctJwAnKicAJy8nACclJwBVTkFSWQAnKCcAQUxJR05fSwBCTE9DSwBCSU5EAFNRVUFEAExPTkcAU0hPUlQAQllURQBTRUNUSU9OUwBJTlNFUlRfSwBBRlRFUgBCRUZPUkUAREFUQV9TRUdNRU5UX0FMSUdOAERBVEFfU0VHTUVOVF9SRUxST19FTkQAREFUQV9TRUdNRU5UX0VORABTT1JUX0JZX05BTUUAU09SVF9CWV9BTElHTk1FTlQAU09SVF9OT05FAFNPUlRfQllfSU5JVF9QUklPUklUWQAneycAJ30nAFNJWkVPRl9IRUFERVJTAE9VVFBVVF9GT1JNQVQARk9SQ0VfQ09NTU9OX0FMTE9DQVRJT04AT1VUUFVUX0FSQ0gASU5ISUJJVF9DT01NT05fQUxMT0NBVElPTgBTRUdNRU5UX1NUQVJUAElOQ0xVREUATUVNT1JZAFJFR0lPTl9BTElBUwBMRF9GRUFUVVJFAE5PTE9BRABEU0VDVABDT1BZAElORk8AT1ZFUkxBWQBERUZJTkVEAFRBUkdFVF9LAFNFQVJDSF9ESVIATUFQAEVOVFJZAE5FWFQAU0laRU9GAEFMSUdOT0YATE9BREFERFIATUFYX0sATUlOX0sAU1RBUlRVUABITEwAU1lTTElCAE5PRkxPQVQATk9DUk9TU1JFRlMATk9DUk9TU1JFRlNfVE8AT1JJR0lOAEZJTEwATEVOR1RIAENSRUFURV9PQkpFQ1RfU1lNQk9MUwBHUk9VUABPVVRQVVQAQ09OU1RSVUNUT1JTAEFMSUdOTU9EAFNVQkFMSUdOAFBST1ZJREUAUFJPVklERV9ISURERU4AQVNfTkVFREVEAENISVAAQUJTT0xVVEUATkVXTElORQBFTkRXT1JEAE9SREVSAE5BTUVXT1JEAEFTU0VSVF9LAExPRzJDRUlMAFBVQkxJQwBERUZTWU1FTkQAQkFTRQBUUlVOQ0FURQBSRUwASU5QVVRfU0NSSVBUAElOUFVUX01SSV9TQ1JJUFQASU5QVVRfREVGU1lNAENBU0UARVhURVJOAFZFUlNfVEFHAFZFUlNfSURFTlRJRklFUgBHTE9CQUwATE9DQUwAVkVSU0lPTksASU5QVVRfVkVSU0lPTl9TQ1JJUFQAS0VFUABPTkxZX0lGX1JPAE9OTFlfSUZfUlcAU1BFQ0lBTABJTlBVVF9TRUNUSU9OX0ZMQUdTAEFMSUdOX1dJVEhfSU5QVVQARVhDTFVERV9GSUxFAENPTlNUQU5UAElOUFVUX0RZTkFNSUNfTElTVAAnLCcAJzsnACcpJwAnWycAJ10nACchJwAnficAJGFjY2VwdABmaWxlbmFtZQBkZWZzeW1fZXhwcgAkQDEAbXJpX3NjcmlwdF9maWxlACRAMgBtcmlfc2NyaXB0X2xpbmVzAG1yaV9zY3JpcHRfY29tbWFuZAAkQDMAb3JkZXJuYW1lbGlzdABtcmlfbG9hZF9uYW1lX2xpc3QAbXJpX2Fic19uYW1lX2xpc3QAY2FzZXN5bWxpc3QAZXh0ZXJuX25hbWVfbGlzdAAkQDQAZXh0ZXJuX25hbWVfbGlzdF9ib2R5ACRANQBpZmlsZV9saXN0AGlmaWxlX3AxACRANgAkQDcAaW5wdXRfbGlzdAAkQDgAaW5wdXRfbGlzdDEAQDkAQDEwAEAxMQBzZWNfb3JfZ3JvdXBfcDEAc3RhdGVtZW50X2FueXdoZXJlACRAMTIAd2lsZGNhcmRfbmFtZQB3aWxkY2FyZF9zcGVjAHNlY3RfZmxhZ19saXN0AHNlY3RfZmxhZ3MAZXhjbHVkZV9uYW1lX2xpc3QAZmlsZV9OQU1FX2xpc3QAaW5wdXRfc2VjdGlvbl9zcGVjX25vX2tlZXAAaW5wdXRfc2VjdGlvbl9zcGVjACRAMTMAc3RhdGVtZW50ACRAMTQAJEAxNQBzdGF0ZW1lbnRfbGlzdABzdGF0ZW1lbnRfbGlzdF9vcHQAbGVuZ3RoAGZpbGxfZXhwAGZpbGxfb3B0AGFzc2lnbl9vcABhc3NpZ25tZW50AG9wdF9jb21tYQBtZW1vcnlfc3BlY19saXN0X29wdABtZW1vcnlfc3BlY19saXN0AG1lbW9yeV9zcGVjACRAMTYAJEAxNwBvcmlnaW5fc3BlYwBsZW5ndGhfc3BlYwBhdHRyaWJ1dGVzX29wdABhdHRyaWJ1dGVzX2xpc3QAYXR0cmlidXRlc19zdHJpbmcAc3RhcnR1cABoaWdoX2xldmVsX2xpYnJhcnkAaGlnaF9sZXZlbF9saWJyYXJ5X05BTUVfbGlzdABsb3dfbGV2ZWxfbGlicmFyeQBsb3dfbGV2ZWxfbGlicmFyeV9OQU1FX2xpc3QAZmxvYXRpbmdfcG9pbnRfc3VwcG9ydABub2Nyb3NzcmVmX2xpc3QAbXVzdGJlX2V4cAAkQDE4AG1lbXNwZWNfYXRfb3B0AG9wdF9hdABvcHRfYWxpZ24Ab3B0X2FsaWduX3dpdGhfaW5wdXQAb3B0X3N1YmFsaWduAHNlY3RfY29uc3RyYWludAAkQDE5ACRAMjAAJEAyMQAkQDIyACRAMjMAJEAyNAAkQDI1ACRAMjYAJEAyNwAkQDI4ACRAMjkAJEAzMAAkQDMxAGF0eXBlAG9wdF9leHBfd2l0aF90eXBlAG9wdF9leHBfd2l0aG91dF90eXBlAG9wdF9ub2Nyb3NzcmVmcwBtZW1zcGVjX29wdABwaGRyX29wdABvdmVybGF5X3NlY3Rpb24AJEAz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BAICAAQCAAcBAQEBBQQEBAcHBwcIBAEDBAIBAwEBAgMEBAUBAAUCAQEBBAEEBAAIAAUCAQABAQEBAQEBAgABAQEBAQEBAQEBAwMGBgYBAAQBAAMBAAcABQMDAAMBAgECBAQDAwEEAwABAQACAwACAgMEAgICAwMDAwMDAwMDAwMDAwMDAwUDAwQBAQQEBAQEBAQGBgYEBgQBBgYGBAQEAwAEAAQAAQAEAAEBAQAAAAAAABQAAAAAABIAAAcABQEBAQEBAwACAwIGCgIBAAECAAADAAAAAAsEAAIAAAYBAAMFAAMAAgECBAIAAgAFAQIEBQYBAgACBAQIAQEDAwAJAAcBAwEDAQMAAQAAAAAAAAAAAAAAAACbAJwAnACcAJwAnACdAJ8AngChAKAAogCiAKMAowCjAKMAowCjAKMAowCjAKMAowCjAKMAowCjAKMAowCjAKMAowCjAKMAowCjAKMAowCkAKMAowCjAKUApQClAKYApgCnAKcAqACoAKgAqgCpAKsAqwCrAK0ArACuAK4ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCwAK8ArwCxAK8ArwCvAK8ArwCvAK8ArwCzALIAtAC0ALQAtAC0ALQAtQC0ALYAtAC3ALQAuAC5ALkAuQC6ALoAuwC6ALwAvAC8AL0AvQC9AL0AvQC9AL0AvQC9AL0AvQC+AL4AvwDAAMAAwQDBAMIAwgDCAMIAwgDCAMMAxADDAMUAxQDFAMUAxQDFAMUAxQDGAMUAxwDFAMgAyADJAMkAygDKAMoAygDKAMsAzADMAM0AzQDNAM0AzQDNAM0AzQDOAM4AzwDPAM8AzwDPANAA0ADRANIA0gDTANMA1QDUANYA1ADXANgA2QDZANoA2gDbANsA3ADdAN0A3gDeAN8A4ADgAOEA4QDiAOIA4gDkAOMA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5gDmAOcA5wDoAOgA6QDpAOoA6gDrAOsA6wDrAO0A7gDvAPAA8QDsAPIA8wD0APUA9gDsAPcA+ADsAPkA7AD6APoA+gD6APoA+wD7APsA/AD8APwA/AD9AP0A/gD+AP8A/wAAAQABAQECAQMBBAEBAQUBBgEGAQgBCQEHAQoBCwELAQsBDAEMAQ4BDQEPAQ8BEAERARMBEgEVARQBFgEWARcBFwEXARgBGAEZARkBGQEZARkBGgEaARoBGgEbARoBHAEaARoBGgEaARoBGgEaAR0BHQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/AIAAgQCKAJMAnACsAK0AoAChAJ4AnwASARMBDQEOAQAArgCiAAQAOgCFABYBFwE6AA8BEAEEAC4ALwAwAD0APgA/AEAAQgBDAEQARQBMAE0ATgBPAFcAWABZAFoAWwBcAF0AYgBjAGQAaQBqAGsAdgCDAJUArwC4ALoAzwDRANwA3QDfAOEABQEUARUBBAAmAEIAZgBtAG4AbwBwAHEAcwB0AHUAeAB5AHsAfAB9AIIAgwCEAKMACgAEAIMAhgCHAIgAGQEaAToAFwGHAIgAEQEaARABBgAHAAgACQAKAAsADAANAA4AzQA6ADoAMQAyACUAJQAEAJ0AOgAlACUAJQAlACUAJQAlACUAJQAlACUAJQCwACUAJQAlACUAuwAlAJQAlQDOAIkABACdAAQAAwAEAB4AHwAlACYAJwAzADQANQA8AEEASwBQAFEAUgBTAFQAVQBWAF4AYABwAHYAdwCSAJkAmgDlAAQABACnAAQApgClAAQABAAEAOUABAADAAQAqACpAKoABAByAOUABAAQABAAOwCVABkBOwCVAOMA5ADjALkABgEEAAQABAAEALEABABCANIA0wDUAAQABAAEAJ0AnQAEAJ0AlgCdAN4A4AAEAOIA4gCyALMAJQCdAAQABAAEACUAqQA6AAoAlACkAAoAlADlAOUA5QAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUA5QDlAA8AEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAlAAKAJQA5QCUAJQABACUAAoAlADlAJQAlAAEAKsAOgAaARoBlQAEAIMAhgCHAIgAOwCVAOUABAA7AEIASgBjALoA7AAEADsABwGUAJYAlgCuANUAnQA7AJQA0ACUAJYAlgCWAJYAlgCWAJYA0ACWANAAlADiAJYAlgCWAAQABQBsALQAsgCWAAoACgAKAOUAlgAWAeUA5QCiAOUA5QCWAOUA5QDlAOUA5QAEAAQA5QAEAAQABAAEAOUA5QAEAAQA5QDlAOUABADlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAOUA5QDlAAQABAAEAOUA5QADAAQABAAEAJQAHAGVAJUABACFAJUAGAHtAJ0A8gD3AAgBBAAkACUA2QDWANQABACdAJ0A4gAlAAQABQBsAJQAlgDjAOMA4wCUADsAJACUAJYAlgCUAJQAlgCUAJYAlgCWAJYAlgCWAJQAlACWAJYAlgCUAJYAlgAQAAQAGgGIADoAhQCVACUAKADlAPsA/AD5ABAA5QD9APwA5QAKAZQABACZANoA2wAQANIAlgC1ACUABAAFAGwAlgCWAJYABADlAOUA5QDlAOUA5QAEAOUAlQAdARAAGwFGAEcASABJAEoAlgD6ACUAJQD7ABAAZwDnALkAEABcAP4A+AAEAGcACwEEAAQAlgDbAF4A1wAkALQAtwAlAJYAlgCWAJYAlgCWAJYAlgA7ABoBGgGWAOUAEAAlACYA6AAkAOcAOgAlAAwBJQAJAZYACgDQAJYAtAC2AJUAHQGWAOUAJQCQAOkAaADqALkA5QALAeUAlQDjAGAA2ACWALQAOwAnAPsAlgDlAOoAJQDzADsAlgCWAAoAlgAlABAAlgDuAOUAOgALAeMA5QCMAI0AjgDrAJYA9ACWADoAAQH7AO8ABAA7ABAABAAPACAAKQAqACsALAAtADYANwA4ADkAQgBfAGEAZQB2AIsAjwCRAJUAlwC8AL0AvwDCAMMAxQDIAMkAygDPAAIB9QAlACUAJQAlAJ0AJQDGACUAJQAlAAQANgC9AMEAJQAEAJcAvQDFADsAJQDOADoAGQD/ADYANwBlAJEAvAA2ADcAvAC8ALwAxwDLAOMAJQDEAAQAvgC8AMAAJQCYANAAwQDBACUA8ADjAMkABABnAOYAJQAlAJYAJQCWACUAJQCWAJYAlgDJAJYA5QAEAMIAFQCWAJYAvAC9AJYAmADBAP8AlgA7ABkAAAG8ALwAwAC8ALwAJACUAJYABAC8AJYA5gADAQQACgAQAMwAlgCWAJYAlgCWAAQAAAEAAcsABAD2AJYAlgC8AJYAlgCWAMwAzADQAJYAzgDxAAQB0ADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAHAA3gAXABIABAB1AEoAGQCJAFYABAAEAOkA6gDtAacCXQAEAAQABAAFAPABDwAEAAUABAAEAAQADwAEAP8BBAAEAAUAOgAkAA8ABAAPACAABADAAgQABQAEACAABAAEAAUASAIEAAUABAAgAM0CIAAEAA8AOwCEAgoACgCCAIMAAACFAIYANgA3ADgAOQAKAIwABAAgADYANwAQAJsAnAAxApQAlAAEAA8AmACYAG4ClAAEAJYApAI7AAQAFQA7ADYANwA4ADkADwAgALMAtAAPALYA6wBGAgQAhQCUAFAClgC+AAQAOgBTAiAAQgDAAgQAIABlAGwAOgA6ADsAbABnACAAIQAiAM0C0gAKAB8DbAAxADIANgA3ADgAOQA2ADcABABsAJQAAwAEAJYAbADcAJkAbAAlAI8AlgCRAJkAOgCAApQAlACXAJYAkQCUAPUAlgCUAPgA+QCWAPsA/ACUAJYAlgAAAQEBAgEDAQQBygDLAAcBkQCUAJQAlQAMAQ0BlwCUABABEQESAZQAlACFABYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBlgA6AGIBhQCFADEBMgGRACUAAwAEAJEAgwA6AAQAhgCHAIgAgwCVAJUAhgCHAIgAgwAPACUAhgCHAIgAbQFuAW8BFQMWA0YBHgAfALgClAC6ApYAIAAlACYAJwCMAI0AjgCDAAkDCgOGAIcAiAAlACUAMwA0ADUAXwElAGEBJwA2ADcAPACUAJQAlgCWAEEAJQDbAiUAJQBGAEcASABJAEoASwCdAiUAJQCgAlAAUQBSAFMAVABVAFYARgBHAEgASQBKACUAUQFeACUAYAAeAB8AIAAhACIAJQC4AokAugIlACUALgIlACUAJQBwACUABAByAAQABAB2AHcAcgEGAAcACAAJAAoACwAMAA0ADgC0AQQAtgG3AbgB2AIEAAQA2wIcAB0AHgAfACAAIQAiAJIABAAEAAQAlgAEACUAmQCaAAMAEADPAQMABADSAdMBBADVAQQACgAEAJYAOwAQANwB3QGVADsAlQAEAAQABADkAX8AgACBAK0BJAAEAB4AHwAEAAQABACKAAQAJQAmACcABAAlAAQABACTAAQAJQAlACUAOgAlADMANAA1AJQAlAAlACUAQgAlADwAJQAEACUAJQBBAEoAOwAlAJUAJQBPACUAlAAlAEsAlAAlABsCJQBQAFEAUgBTAFQAVQBWACUAJQAlACUAYwBMAiUAXgCVAGAAaQBqAGsABgAHAAgACQAKAAsADAANAA4ACgB2AJYAcAA6AJQAlgBBApYAdgB3ADsAlgBHApYASQKWAJYAbwISAhMClgCWAAMABACWAAoAVQKWAAoACgAEAAQABACWAAQABACSAAQAlAAEAAQABAAEAJkAmgAEAAQAagIEAB4AHwCVAAQAlQBxAgQAJQAmACcAJQAEACUABACWADoAEACqAqsCrAKtAjMANAA1AAQAlgCzAiUABAAZAzwAEACUAJQAJQBBAJYAlgCWAJYAlgAlAyYDEACVAEsAZwC+ApYAlAJQAFEAUgBTAFQAVQBWAAMABACWANUC1gKWAJYAXgCWAGAAlgBcAAQABAAkAJYA4gLjAiUA5QJeAOcC6AKWADsAcACWAB4AHwAQACUAdgB3APMCJQAmACcAKAAmACUAOgAlAJYA0AIKAJQAAAOVADMANAA1ACUAkABoAJUAYAAlADwAOwCSAAoAlABBABEDJQAQAJkAmgA6ADoAJQAQAEsAJQAlACUAJQBQAFEAUgBTAFQAVQBWAAMABAAZADsAJQAlACUAXgAEAGAAJQAlACUAEAAYABkAGgAbABwAHQAeAB8AIAAhACIAcAAlAB4AHwAlADoAdgB3ACUAJQAmACcAJQAEAGcAJQCWACUAJQAlAJYAJQA7ADMANAA1AJYAlgCWAJYAlgAZADwAJACSAJYAlgBBAAQABAAEAJkAmgAEAJYA+gCWAEsAlgDlAtoAkQBQAFEAUgBTAFQAVQBWAAMABADRApYAlgCWAJYAXgCWAGAAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAcACWAB4AHwCWAKQCdgB3APAAJQAmACcAVgEMAyQCvQFXAtwCGgD6AfcA+QJlADMANAA1ALcB//89Av///////zwA//+SAP////9BAP///////5kAmgD//////////0sABAD///////9QAFEAUgBTAFQAVQBWAA8A////////////////XgD//2AA//////////////////8gAP//////////////////cAApACoAKwAsAC0AdgB3AP///////////////zYANwA4ADkA/////////////////////0IA//////////////////+SAP///////////////5kAmgD///////////////////////////////9fAP//YQAEAP////9lAP///////2kAagBrAP//////////////////////////dgAPAP//EQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAiwAuAC8AMACPAP//kQD///////+VAP//lwD///////89AD4APwBAAP//QgBDAEQARQAEAP////////////9MAE0ATgBPAP//////////////////VwBYAFkAWgBbAFwAXQD//////////2IAYwBkAP//JAD/////aQBqAGsA//////////8uAC8AMAD///////92AP////////////////////89AD4APwBAAIMAQgBDAEQARQD//4kA//////////9MAE0ATgBPAP///////5UA////////VwBYAFkAWgBbAFwAXQCWAP///////2IAYwBkAP//////////aQBqAGsA//////////////////////////92AP///////////////////////////////4MAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAJUAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwD//xEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAA8A//8RABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAP//EQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwD//xEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAA8A//8RABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAJQADwCWABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAA8AlgARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAJYAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwCWABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAA8AlgARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAJYAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAA8AlgARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAJYAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwCWABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAA8AlgARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAJYAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwCWABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAP////////////////////////////////////8PAJYAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwCWABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAA8AlgARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAJYAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIADwCWABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAA8AlgARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgD///////////////////////////////////////+WAP//////////////////////////////////////////DwCUABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAA8AlAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPAJQAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIA//+UAP//////////////////BAD/////////////////////////////lAD/////////////////////////////BAD/////////////////////DwAmABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAP////8lACQA//8mAP///////0IADwCUABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAP//lAD//0IABAD///////8EAP///////////////2YA/////////////5QAbQBuAG8AcABxAHIAcwB0AHUA/////3gAeQD//3sAfAB9AGYA////////ggCDAIQAbQBuAG8AcABxAP//cwB0AHUA/////3gAeQA7AHsAfAB9ADsA/////0IAggCDAIQAQgD///////9KAP///////0oATwD///////9PAP///////////////////////////////////////2MA////////YwD//2kAagBrAP//aQBqAGsA////////////////dgD///////92AA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQDRAFYBZgA+APgB0wCXAGoA7QC/APgBtAJfAWEBHQK/AsgA7wIvAcQBxQEhAokCxAHFAbQC6wC0AokCJgIwAnwAxAHFARUARP+JAksBiQKKAoUC3gJnAWgBqwGKArkCAQICAlwCxAHFARQAigLsAooC2wCJAkT/pwL4APsA4wDkABEA5gDoALUCkQKSApMCDAPxALQCigLDAsQCDQP9AP4ATwJVAVUBfACJAtcC9wJ3Ak4BtAJPAacCTAG0AvEChgK1ApECkgKTAokCigIUARUBiQIsAWMBWgJeABYAVQFjAl4BMwFeABkAZgKKAtwApwI8AYoCxQLGAWUAFQDNAcYBJwImAScBKAGnAkMBXQAkA8YBeAB5ALUCkQKSApMCwwLEAjwBaQFVAagBqQErAgMCUwH5AcYBegCaAvMCmwL5AXYAgwIwAccBnQJOAsYCxwFwAWICYgFzAXQBEQN2AXcBxwHnAHACeQF6AXsBfAF9ATkBOgGAAZsCrAGSAJMAhQGGAboCxwGJAYoBiwH5APwAFgCNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAfICdwDCAbEB6QGmAacBmwJ7AJkAmgDGAl8AfgC0AmAAYQBiAF8AsgHqAWAAZwBoAD0BiQJ/AD4BPwFAAckBygHLASADIQO1AZsAnADZAlUB2gJgAYoCnQCeAJ8AegJ7AnwCPQEVAxYDPgE/AecBgACBAKAAoQCiAMABHALBAWUCyALJAqMAVQFVAfYCCAOkAIIA+AKDAIQAFAIVAhYCFwIYAqUAtgKFAIYAuwKmAKcAqACpAKoAqwCsABQCFQIWAhcCGAKHAD4ArQCIAK4AJAElASYBJwEoAYkAtgKVALYCigCMAE0CjQCOAI8ArwCRAJYAxwCYALYAsACxAGYAbABtAG4AbwBwAHEAcgBzAHQA7QG3APIB7QH1AfUCuQC8ALYCIgEjASQBJQEmAScBKAGyAL0AvgDAABkCRAGM/7MAtADBAMoACAKZAJoACQIKAsIACwLGACoByQAZAswAywAMAg0CzQDPANAA1gDXANgADwIBAAIAAwDmAUQC2QCbAJwA4ADhAOIABADlAJ0AngCfAOsA8ADyAPMABQD0APUAAAEBAfcAAgGgAKEAogAtAS4BAwEEAUYBBQGjAAYBNgEHAQgBpABHAUEBCQE7AQoBKwALATQBDAGlADUBDQE/Ag4BpgCnAKgAqQCqAKsArAAPARABEQESAUgBXwITAa0AQgGuADYANwA4AGwAbQBuAG8AcABxAHIAcwB0AG0BOQBQAa8AOAFXAVgBVAJZAbAAsQBUAVoBWwJbAV0CXAFdAXgCPAI9AmQBZQGZAJoAZgFuAWgCbAFvATEBfgF/AYEBcQGCAYMBsgCEASsBhwGIAYwBowGzALQApAGlAXUCqgGbAJwArgGwAa8BeQK5AZ0AngCfALsBvwHDAeUByAHoAfwBxwLKAssCzAKgAKEAogAHAtYB1AIAAg4CIgOjABIC1QH3ARsCpADYAdkB2gHbAd4BJwMoAx4CEAKlAB8C3QLfAa4CpgCnAKgAqQCqAKsArACZAJoA4wH0AscC/gEEAq0ABQKuAAYCIwIpAioCLwIzAv4C/wIyAtQCLQIBAwIDOgI7Aq8APgKbAJwAQAJBArAAsQAHA+sBngCfAOwBQgJHAkYCSQJLAu4CTAJVAfQCUQKgAKEAogBVAlYCWAJeAmACagKjAGQCsgBvAjIBpAAcA3ECcgKzALQAdgKBAhwChwKlAKoCqwKsAq0CpgCnAKgAqQCqAKsArACZAJoAwQK9Aq8CsQKyAq0A0gKuALMCuAK+AvEBHgEfASABIQEiASMBJAElASYBJwEoAa8A0AKbAJwA1gLAArAAsQCM/50AngCfANsC3wLgAuIC5ALjAuUC5wLmAugC+wKgAKEAogDpAuoC6wLtAvoC/AKjAAMDsgB3/wUDpAAGAwsDFAOzALQAGAMPA3UBEAOlABIDAANRAfYApgCnAKgAqQCqAKsArACZAJoA8AITAxoDGwMdA60AHgOuABoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoAa8AHwObAJwAIwO8ArAAsQBrAZ0AngCfAL4BFwNFAv0BaQL5AmsALAJyAQkDzgCgAKEAogD0AQAAUgIAAAAAAACjAAAAsgAAAAAApAAAAAAAAACzALQAAAAAAAAAAAClAIgCAAAAAAAApgCnAKgAqQCqAKsArACJAgAAAAAAAAAAAAAAAK0AAACuAAAAAAAAAAAAAAAAAAAAigIAAAAAAAAAAAAAAAAAAK8AiwKMAo0CjgKPArAAsQAAAAAAAAAAAAAAAACQApECkgKTAgAAAAAAAAAAAAAAAAAAAACUAgAAAAAAAAAAAAAAAAAAsgAAAAAAAAAAAAAAAACzALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlQIAAJYCHAAAAAAAlwIAAAAAAAA2ADcAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgCFgEAABcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoAZkCHQAeAB8AmgIAAJsCAAAAAAAAnAIAAJ0CAAAAAAAAIAAhACIAIwAAACQAJQAmACcAHAAAAAAAAAAAAAAAKAApACoAKwAAAAAAAAAAAAAAAAAAACwALQAuAC8AMAAxADIAAAAAAAAAAAAzADQANQAAALoBAAAAADYANwA4AAAAAAAAAAAAHQAeAB8AAAAAAAAAOQAAAAAAAAAAAAAAAAAAAAAAIAAhACIAIwA6ACQAJQAmACcAAACp/gAAAAAAAAAAKAApACoAKwAAAAAAAAA7AAAAAAAAACwALQAuAC8AMAAxADIAeAEAAAAAAAAzADQANQAAAAAAAAAAADYANwA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6ABkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBFgE7ABcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoARYBAAAXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEWAQAAFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBFgEAABcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoARYBAAAXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEWAQAAFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAHPARYB0AEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEWAdEBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBFgHUARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoARYB1wEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEWAeABFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBFgHiARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEWATQCFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBFgE1AhcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoARYBNgIXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEWATcCFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBFgE4AhcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoARYBOQIXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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YJ1DAAAAAABqnUMAAAAAAHGdQwAAAAAAep1DAAAAAACFnUMAAAAAAImdQwAAAAAAjZ1DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmAKYApwCoAKkAqgCuALIAsgC8ALwAyQDKAM4AzwDQANMA1gDXANgA2gDcAN4A4ADiAOQA5gDoAOoA7ADuAO8A8ADyAPQA9gD4APoA+wD9APwAAAECAQYBBwEIAQwBDgESARQBGQEaARsBIAEgASUBJwEpAS4BLgE0ATUBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUYBSAFKAU0BTwFRAVMBVQFXAVYBWgFdAVwBYAFkAWgBaQFrAW0BbwF0AXQBeQF8AX8BggGFAYgBjAGLAZEBkAGWAZUBnQGhAaIBowGnAakBqgGqAbIBtgG6AcEByAHPAdYB3QHkAesB8gH5AQACBwIQAiICNwJEAk0CWAJhAmwCdQJ+AoICiwKPApcCmQKYAp8CoAKkAqUCqgKvArACtQK5ArkCvQK8AsMCxALHAskCzQLPAtEC0wLVAtoC4QLjAucC6QLrAu0C7wLxAvMC9QL6AvoC/wIDAwsDDwMTAxsDGwMfAyIDIgMlAyYDKwMqAzADLwM2Az4DRgNHA0sDTANQA1IDVwNcA10DYgNkA2oDbANuA3IDdAN6A30DhgORA5EDlwOZA5sDnQOfA6EDpAOmA6gDqgOsA64DsAOyA7QDtgO4A7oDvAO+A8ADwgPEA8YDyAPKA8wDzgPRA9MD1QPXA9kD2wPdA98D4QPjA+UD5wPwA/ID9AP2A/gD+gP8A/4DBAQFBAkECgQOBA8EEwQUBBgEGQQdBB4EHwQgBCMEKAQrBDEEMwQjBDoEPAQ+BEMERQQ5BE8EUQRPBFcEVgRdBF4EXwRgBGEEZQRmBGcEawRsBHEEcgR3BHgEfQR+BIMEhQSKBI0EmgSeBKMEpQScBK0EsASyBLYEtwS2BMAE7QTwBP0EBgUJBRAFEAUcBR0FIQUlBS4FLgU8BTwFRgVHBUsFTwVTBVoFXgVmBWkFbQVxBXUFfAWABYQFiAWNBYwFmgWZBaMFpwWrBa8FswW3Bb0FvwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICmQICAiIVAiWWIB6UHwIhAgICAgICAgICAhCVGAoZDwICAgICAgICAgICAgICAgICAgICAgICAgICApcCmBQCAgICAgICAgICAgICAgICAgICAgICAgICAgICOhM7mgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgECAwQFBgcICQsMDQ4REhYXGhscHSMkJicoKSorLC0uLzAxMjM0NTY3ODk8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTAAAAAAAlRiVzOiBmaWxlIG5vdCByZWNvZ25pemVkOiAlRQoAACVQOiVTOiBpZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlciBgJXMnJXMKAAAAAAAAAG91dCBvZiBkeW5hbWljIG1lbW9yeSBpbiB5eWVuc3VyZV9idWZmZXJfc3RhY2soKQAAAAAAAAAAb3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHl5X2NyZWF0ZV9idWZmZXIoKQAAAAAAZmF0YWwgZmxleCBzY2FubmVyIGludGVybmFsIGVycm9yLS1lbmQgb2YgYnVmZmVyIG1pc3NlZABmYXRhbCBlcnJvciAtIHNjYW5uZXIgaW5wdXQgYnVmZmVyIG92ZXJmbG93AAAAAAAlRiVQOiByZWFkIGluIGZsZXggc2Nhbm5lciBmYWlsZWQKAAAAAAAAb3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHl5X2dldF9uZXh0X2J1ZmZlcigpAAAAL3Zhci90bXAvcG9ydGFnZS9jcm9zcy14ODZfNjQtY3Jvcy1saW51eC1nbnUvYmludXRpbHMtMi4yNy4wLXIyNi93b3JrL2JpbnV0aWxzLTIuMjcuMC9iaW51dGlscy0yLjI3L2xkL2xkbGV4LmwAAGZhdGFsIGZsZXggc2Nhbm5lciBpbnRlcm5hbCBlcnJvci0tbm8gYWN0aW9uIGZvdW5kAAAAAAAAb3V0IG9mIGR5bmFtaWMgbWVtb3J5IGlu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BwAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAIQAiAALAAsACwALAAsACwALAAsACwAoACgAKACJAcEAcACKAHAAJwN+AMEAiQFwAH4AcQBwAHEAtgCKACgAfgAoAHAAcABxAH4ACwBxAAsACwCSAHEAcQCSAIgAmACSAJcAlwCYAJkAWgHeAJgAtgCEAN8AWgGXACgAmQAoAAsACwALAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAOAA1QEMAAwADAAMAAwADAAMAAwADAByAHIAkAByAHIAcwCQAHMArgL8AMUAcgDfACgDdABzAHQA3gByAHIAkAD8AHMAcwB0AMUADABzAAwADACbAHQAdACNAJoAjQC+AI0AmgDgAJsAmgCaAI0A1QECAb4AAgEpA64CjQCNAAwADAAMAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0AEQARABEAEQARABEAXgERABEAEQARABEAEQARABEAXgERABEAEQARABEAEQARABEAEQARAIEAjgCBALwAvACOAMoACAGOABMBgQAqA70AvQC8ACwDygCBAIEAvQBLAY4AEwG9AAgBvwARABEAEQARAJ4AgQBLAZ4AngC/AMoAvwDAAC0DngCeAJ4ALgM/AZ4AngC/AMAA1gGeAMAAEQARABEAEQASABIAEgASABIAEgAwAxIAEgASABIAEgASABIAEgA/ARIAEgASABIAEgASABIAEgASABIAJwAnACcAyQDNAMsA6AAPAegAUAEPAVABDwHJAM0AywBpAdYBaQEnAA8BJwAXAQ8BjwIXARIAEgASABIAjwIXAScAsALJAMsA6ABXAegAIAFXASABywDJADEDIAFpAc0AaQEnAFcBJwASABIAEgASABMAEwATACcAEwATADIDEwATABMAEwDXARMAEwCwAswAEwATABMAEwATABMAEwATABMAzACLAIsAiwB9AXEBRgEzA0YBRwF3AUcBdwEhAjUDIQJGAXEBNwNHAYsAfQGLAEYBRgHXAUcBRwGIAZYBrwKWAcwAiwCIAZYBEwCNARMAzACNAYgBEwAhAjgDIQKNATkDOgM7A4sAPAOLABMAEwATABMAFAAUABQAiwAUABQAPQMUABQAFAAUAK8CFAAUAD4DPwMUABQAFAAUABQAFAAUABQAFACMAIwAjABBA58CQgNDA0gBRANIAZ8C8ADwAPAAQAFAAUABSAFFA4wARgOMAEcDSANIAUgBSQNNAUoDTQHwAEsD8ABAAUwDQAEUAE0BFABNA04DTwMUAFADTQFNAUABUQNSA4wAUwOMAFcDFAAUABQAFAAcABwAHADwAFgD8ABAAVwDQAEcABwAHAAcABwAHABRAUABUQFSAV0DUgFnAVIBZwFfA1EBYANhA1IBYgNjA2cBUQFRAWcDUgFSAWgDZwFnARwAHAAcABwAHAAcAFwAXABcAGsBawFrAWwDbQNvA1wAXABcAFwAXABcAIQBcAMjAoQBIwKEAWcBawFxA2sBcwNyAyMChAF0A3cDhAF4AyMCIwIjAnkDdgN8A30DXABcAFwAXABcAFwAZwBnAGcAfgOBA3sDawF2A2sBZwBnAGcAZwBnAGcAggNnAHIDLAJnACwCZwB7A2cAhAMsAnMDhgMsAnEDhwOIA2cAiQOKAywCLAKLA4wDjQNnAGcAZwBnAGcAZwCOA2cAjwNnAJADZwCRA2cAkgOTA5QDlQOXA2cAbwBvAG8AmAOZA5oDmwOdA58DbwBvAG8AbwBvAG8AoQNvAJ4DogOjA28ApAOlA28ApgOnA6gDbwBvAJ4DqQOrA28AqgOsA64DrwOwA7IDtANvAG8AbwBvAG8AbwC1A28AtgOqA7cDuAO5A28AugO7A7wDvQO+A28AhwCHAIcAvwPAA8EDwgPDA8QDhwCHAIcAhwCHAIcAxQPGA8gDyQPKA8wDzQPOA88D0gPTA9UD1wPYA9kD2gPbA9wDyAPdA94D3wPMA+AD4QOHAIcAhwCHAIcAhwCmAKYApgDiA+MD5APlA+YD5wOmAKYApgCmAKYApgDpA+oD6wPsA+0D7wPwA/ED8wP0A/UD9gP3A/gD+QP6A/wD/QPwA/4DAgQEBAUEBwQIBKYApgCmAKYApgCmAK4ArgCuAAkEDQQPBBEEEgQTBK4ArgCuAK4ArgCuABAEFAQVBBcEGQQaBBsEHAQdBB4EIAQiBCMEJAQmBCgEKgQrBC0ELwQwBDEEMgQzBDQErgCuAK4ArgCuAK4AuwC7ALsANQQ2BDcEOAQRBDkEuwC7ALsAuwC7ALsAOgS7ADsEEAQ+BLsAPwRABLsAQQRCBEMERARGBEcESARJBLsASgRMBE0ETwRQBFEEUwS7ALsAuwC7ALsAuwBVBLsAVgRXBFgEWQRaBLsAWwRcBF0EXgRfBLsAOQE5ATkBYgRjBGQEZQRmBGcEOQE5ATkBOQE5ATkBaQRrBGwEbQQ5AW8EOQFxBHIEdAR1BHcEeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQQ5ATkBOQE5ATkBOQGIBIkEigQ5AYsEOQGmAaYBpgGMBJAEkQSSBJYElwSmAaYBpgGmAaYBpgGYBJkEmwScBKYBnQSmAZ4EnwSgBKIEowSlBKYEpwSoBKkEqwSsBK4ErwSwBLEErASyBKYBpgGmAaYBpgGmAbMEtAS1BKYBuASmAaoBqgGqAboEuwS8BL0EvwTABKoBqgGqAaoBqgGqAcEEwgTEBMYEqgHHBKoByATJBMoEzATNBM4E0ATRBNIE0wTVBNYE1wTYBNkE2wTcBN4EqgGqAaoBqgGqAaoB3wTgBOEEqgHiBKoBrgGuAa4B4wTlBOgE6QTqBOsErgGuAa4BrgGuAa4B5gSuAewE7QTuBOYE7wTyBK4B9AT1BPYE9wT4BPkE+gT7BK4B/QT+BAAFAQUCBQMFBAWuAa4BrgGuAa4BrgEFBa4BBgUHBQkFCgULBa4BDAUNBQ4FDwURBa4BWQNZAxIFWQNZA1kDEwVZA1kDWQNZA1kDFAVZAxMFFwUYBRoFGwUTBR0FWQNZA1kDWQNZAx4FHwUiBSMFJAUlBSYFKQUrBS0FLgUvBTAFMQUyBTMFNAU3BTgFOQU6BTsFPAU9BT8FQAVBBUIFRQVZA0wFTgVPBVAFQQVRBVIFUwVUBUEFVQVWBVcFWAVZBVoFWwVcBV0FXgVXBV8FWQNZA1kDaQNpA2AFaQNpA2kDYQVpA2kDaQNpA2kDYwVpA2UFZwVoBWkFagVrBWwFaQNpA2kDaQNpA20FawVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFegWCBYMFhAWGBYcFiAVpA4kFigWLBYwFjQWOBZAFkwWUBZUFlgWYBZkFmgWbBZwFnQWeBZ8FoAWhBaIFaQNpA2kDAAQABKUFAAQABAAEpgUABAAEAAQABAAEpwUABKgFqQWqBasFrAWtBa4FAAQABAAEAAQABK8FsAWyBbUFtgW3BbgFugW7BbwFvQW+Bb8FwAXBBcIFwwXEBcUFxgXHBcgFygXLBcwFzQXOBc8F0AUABNEF0gXTBdQF1QXWBdcF2AXZBdoF2wXcBd0F3gXfBeAF4QXiBeMF5AXmBecFAAQABAAECwQLBOgFCwQLBAsE6QULBAsECwQLBAsE6gULBOsF7AXtBe4F7wXxBfIFCwQLBAsECwQLBPQF9QX2BfcF+AX5BfsF/AX9Bf4FAAYBBgIGBAYFBgYGBwYIBgkGCgYMBg0GDwYQBhEGEgYTBhQGFgYLBBcGGAYZBhsGHAYdBh8GIAYeBiEGIgYkBh4GJgYnBigGKQYqBiwGLQYuBjAGCwQLBAsEHgYrBjEGMgYzBisGNAY1BjYGNwY0BjgGOgY8Bj0GPgY/BkAGKwZBBkIGQwZEBjQGRQZGBkcGSwZMBk4GTwZQBlEGUgZXBlgGWQZaBlsGXAZdBl4GYgZjBmUGZgZnBmgGaQZqBmsGbAZtBm4GbwZwBnEGcgZzBnQGdQZ2BncGeAZ5BnoGewZ8Bn0GfwaABoIGgwaEBoUGhgaHBokGiwaMBo4GjwaRBpIGkwaUBpUGlgaXBpgGmQaaBpsGnAaeBp8GoAahBqIGowakBqUGpganBqkGqgasBq0GrgavBrAGsgazBrQGtga3BrgGuQa6BrsGvAa9Br4GwAbBBsMGxAbFBsYGyAbJBsoGywbMBs0GzgbPBtAG0QbSBtMG1QbWBtcG2QbbBtwG3QbgBuEG5AblBucG6QbqBusG7wbvBu8G7wbvBu8G7wbvBu8G7wbvBvAG8AbwBvAG8AbwBvAG8AbwBvAG8AbxBvEG8QbxBvEG8QbxBvEG8QbxBvEG8gbyBvIG8gbyBvIG8gbyBvIG8gbyBvMG8wbzBvMG8wbzBvMG8wbzBvMG8wb0BvQG9Ab0BvQG9Ab0BvQG9Ab0BvQG9Qb1BvUG9Qb1BvUG9Qb1BvUG9gb2BvYG9gb2BvYG9gb2BvYG9gb2BvcG9wb3BvcG9wb3BvcG9wb4BiADHwMeA/gG+AYcA/gG+Qb5BhoD+Qb5BvkG+Qb5BvoGGAMXAxYD+gb6BvoG+gb7BvsG+wb7BvsG+wb7BvsG+wb7BvsG/Ab8BhUD/Ab8BvwG/Ab8Bv0GEwP9Bv0G/Qb9Bv0G/Qb9Bv0G/Qb+BhID/gb+Bv4G/gb+Bv4G/gb+Bv4G/wYRA/8G/wb/Bv8G/wb/Bv8G/wb/BgAHEAMABwAHAQcBBw8DDgMBBwEHDQMBBwEHAgcCBwIHAgcCBwIHAgcCBwMHAwcDBwMHAwcDBwMHAwcEBwQHDAMEBwQHBAcEBwQHBQcFBwYHCwMGBwYHBgcGBwYHBgcGBwYHBgcHBwoDBwcHBwcHBwcHBwcHBwcHBwcHCAcJAwgHCAcIBwgHCAcIBwgHCAcIBwkHCAMJBwkHCgcKBwcDBQMKBwoHBAMKBwoHCwcDAwsHCwcLBwsHCwcLBwsHCwcLBwwHAQMMBwwHDAcMBwwHDAcMBwwHDAcNB/8CDQcNBw0HDQcNBw0HDQcNBw0HDgf+Ag4HDgcOBw4HDgcOBw4HDgcOB/0C/AL7AvoC+QL3AvYC9ALzAvIC8ALvAu4C7QLsAusC6gLpAugC5wLmAuUC5ALjAuIC4QLgAt8C3QLcAtsC2gLZAtgC1wLWAtUC0wLRAtACzwLNAswCywLJAsgCxwLGAsUCwwLCAsECwAK/Ar4CvQK7ArkCtwK2ArUCtAKzArECrQKsAqsCqgKpAqgCpwKmAqUCpAKiAqECoAKeAp0CnAKbApoCmQKYApcClgKVApQCkgKRApACjgKLAogChwKGAoUChAKDAoICgQKAAn8CfgJ9AnwCewJ6AnkCeAJ3AnYCdQJ0AnMCcgJxAnACbwJtAmoCaQJoAmcCZgJlAmQCYwJiAmECYAJeAl0CXAJbAloCWQJYAlcCVgJVAlQCUwJSAlECUAJPAk4CTQJMAksCSgJJAkgCRgJFAkQCQwJCAkECQAI/Aj4CPQI8AjsCOgI3AjYCNQI0AjMCMgIxAjACLwIuAi0CKwIqAikCKAInAiYCJQIkAiICHgIbAhgCFwIWAhUCFAITAhICEQIQAg8CDgINAgwCCwIKAgkCCAIHAgYCBQIEAgMCAgIBAgAC/wH+AfwB+wH6AfkB+AH3AfYB9QH0AfMB8QHwAe8B7gHtAewB6wHqAekB6AHnAeYB5QHkAeMB4gHhAeAB3wHeAd0B3AHbAdoB1AHTAdABzwHOAc0BzAHLAcoByQHIAccBxgHFAcQBwwHCAcEBwAG/Ab4BvQG8AbsBugG5AbgBtwG2AbUBtAGzAbIBrwGnAaQBowGiAaEBoAGfAZ4BnQGcAZsBmgGZAZgBlwGVAZQBkwGSAZEBkAGPAY4BjAGLAYoBhwGGAYUBgwGCAYEBgAF/AX4BfAF7AXoBeQF4AXYBdQF0AXMBcAFvAW4BbQFoAWYBZQFkAWMBYgFhAWABXwFdAVwBWwFZAVgBVgFVAVQBUwFPAU4BSgE2ATEBLgEtASwBKwEqASkBKAEnASYBJQEkASMBIgEhAR8BHgEdARwBGwEaARkBGAEWARUBFAESAREBEAEOAQ0BDAELAQoBCQEHAQYBBQEEAQMBAQEAAf8A/gD7APoA+QD4APcA8wDmAOMA3QDXANUA0wDRANAAzwDGAMQAwwDCALkAtACyALAArwCtAKwApACjAKIAoQCgAJ8AnQCcAJYAlQCTAIIAfQB4AHcAdgB1AGwAYgBhAFsAWgBZAFcAVQBUAE8ATQBIAEcARgBFAEIAQQA/AD4AOAA3ADUALAAkACIAIQAbABoAGAAVAO4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gYAAAAAAAAAAAAAFwAYABkAGgAbABcAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ACUAOAA5ADoAOwA8AD0APgA/AEAAQQAlAEIAJQAlACUAJQBDACUARAAlACUARQAlACUAJQAlACUAJQAlACUAJQBGACUAJQBHACUAJQBIACUAJQAlACUASQBKAEsATAAWAE0ATgAWAE8AFgA8ARYAFgBRAFIAFgAWAFMAVADpAFUAFgAWABYAFgAWABYAVgAWABYAVwDuAPMA9ADqANUATgDVAE4A1gDpANYAFAHvAPYA9wAVAfgA0AP5ANcA+gDXAFsBPQHqABYA+wAWABYAAgFcAQQBAwH8AP0ABQEHAc4BDQEJAf4ADgEKAS8B/wALAQgBAAHRAwYBzwEWABYAFgAWAE0ATgAWAE8AFgABARYAFgBRAFIAFgAWAFMAVABCAVUAFgAWABYAFgAWABYAVgAWABYAVwDYABYB2AARARIBGAEcAVkBNAEZAdIDFwEaARsBEwFCAR0BWgEwASABPgF3ASEBIgF4ARYA0wMWABYAIwEkASUB8wD0ACYBJwH2APcAXQEoAXwBXwHJAYIB1ANgAYMBygFeAWEBfQEWABYAFgBYAFkAGQBaAFsAWABcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcAZQB4AHkAegB7AHwAfQBlAGUAfgBlAGUAZQBlAGUAZQBlAH8AZQCAAFgAZQCBAHQAdAB0AHQAdABlAGUAZQBlAGUAZQBlAGUAZQBlAIIAZQBlAGUAZQCDAIQAhQCGAFgAWQAZAFoAWwBYAIcAXQBeAF8AYABhAGIAYwCIAIkAigCLAIwAjABpAGoAawBsAG0AbgCNAI4AjwCQAJEAkgCTAJQAlQCJAJYAlwCYAJkAmgCbAJwAnQCeAJ8AiQCgAIkAiQCJAIkAfwCJAIAAWACJAKEAiQCJAIkAiQCJAIkAiQCJAIkAogCJAIkAowCJAIkApACJAIkAiQCJAIMAhACFAKUAWABYABYAWABYAFgApgBYAFgAWABYAFgApwBYAKgALwE8AYsAjACMAFgAWABYAKoAWABYAPAA8ADwAGsCuQFNATQBTQHVA2MBugFsAk4BZAFNAU8BTQFCAWoB8QBlAfEAOAE4ATgBZgFYAFABWABYAH4BOAE4AX8BMwGJAYABhgGHAYoBjAE2AtQBiwFCATAB1AE3AogB8QCNAfEAWABYAFgAWABYABYAWABYAFgApgBYAFgAWABYAFgApwBYAKgA1AHUAYsAjACMAFgAWABYAKoAWABYAFEBTQF5AU0BUgFNAXoBTQHUAd4BvgE4AdYB1gNNATgBTQHVAVMBOAF7Ad8BOAE4ATgBvwFYAFQBWABYAJIBOAE4AW0BjgFuAbABbwGPAdcBkwGQAZEBcAGuAuQBqQHlAdcDcQNxAXIBWABYAFgAFwAYAKsArAAXAK0ArgAdAB4AHwAgAK8AsACxALIAswC0ALUAtgC2ALcAuAArALkALQC6ALsAvAC9AL4AvwDAALMAswCzALMAswDBALMAwgDDAMQAswCzAMUAxgCzALMAswCzALMAswDHALMAyAAXALMAyQDKAMsAvgDMAM0AswCzALMAswDOALMAzwDQANEAswDSANMAswCzALMASQBKAEsA1AAXANUATgAXABcA1gA7AhcAFwAXABcAFwAXANoAFwA8AtcAFwAXABcA2gDaABcAFwAXABcATQFzAU0BswGwAXQBsAHrAXUB+wE4AdgDtAGwAakB2QOpATgBOAG1ASUCdgH8AakB7AGwARcAFwAXABcAlgFnASYClwGYAakBwwG2AbAB2gOZAZoBmwHbA0IBnAGdAbcBqQHUAZ4BuAHbABcA3AAXABcA1QBOABcAFwDWANwDFwAXABcAFwAXABcA2gAXAEIB1wAXABcAFwDaANoAFwAXABcAFwDwAPAA8ACwAbABsAHxAPMB8QApAvQBKgL1AakBqQGpAUcCrwJHAvEA9gHxAAAC9wFSAwECFwAXABcAFwBTAwIC8gDUAcEBxAHxADEC8QALAjICDALFAcIB3QMNAkcCyAFHAvEAMwLxANsAFwDcABcAFwDVAE4A8gAbANYA3gMXABcAFwAXANQBFwDaAHMDsAHXABcAFwAXANoA2gAXABcAFwCpAWsBawFrAVgCTAJNAd8DTQFNAVECTQFSAkMB4ANDATgBHgLhAzgBQwFZAkMBOAE4AbACIgI4AWgCewLUAXwCxgFsAWkCfQLeAHAC3wDHAXECagLgAEMB4gNDAXIC4wPkA+UDQwHmA0MB4QAXAOIAFwAXANUATgBsARsA1gDnAxcAFwAXABcAcgMXANoA6APpA9cAFwAXABcA2gDaABcAFwAXAGsBawFrAeoDYgPrA+wDTQHtAyMCYwPwAPAA8ABAAUABQAE4Ae4DQwHvA0MB8APxAzgBOAHyA00B8wNNAfEA9APxAO4G9QPuBt4AOAHfAPYD9wP4A+AA+QM4ATgBQgH6A/sDQwH8A0MB/QPhABcA4gAXAOgA6ADoAPEA/gPxAO4GAQTuBugA6ADoAOgA6ADoAE0BQgFNAU0BAgRNAU0BLAJNAQMEOAEEBAUEOAEGBAcEOAE4ASsCCAQ4ATgBCQQ4ATgB6ADoAOgA6ADoAOgAOQE5ATkBawFrAWsBDAQNBA4EOQE5ATkBOQE5ATkBYAIPBE0BYQJNAWICRQJDAdQBQwHUAdQBOAFjAhMEFgRkAhcE8QI4ATgBGAQUBBsEHAQ5ATkBOQE5ATkBOQE/AT8BPwEdBB4EGQRDARUEQwFAAUEBQAFBAUABQAEfBEIBEQRNAUMBTQFDARoEQgEgBPoCEgQhBDgBEAQiBCMERAEkBCUEOAE4ASYEJwQoBEABQQFAAUEBQAFAASkEQgEqBEMBKwRDASwEQgEtBC4ELwQwBDEERAFGAUYBRgEyBDMENAQ1BDYEOQRGAUcBRgFIAUYBRgE6BEkBNwQ7BDwESgE9BD4ESQE/BEAEQQRLAUwBOARCBEUESQFDBEYERwRIBEkESgRLBEYBTQFGAU0BRgFGAUwESQFNBEQETgRPBFAESQFRBFIEUwRUBFUESQFpAWkBaQFWBFcEWARZBFoEWwRpAWkBaQFpAWkBaQFcBF0EXgRgBGEEYgRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRfBHAEcQRyBGMEcwR0BGkBaQFpAWkBaQFpAaYBpgGmAXUEdgR3BHgEeQR6BKYBpgGmAaYBpgGmAXsEfAR9BH4EfwSABIEEgwSEBIUEhgSHBIgEiQSKBIsEjASNBIIEjgSPBJAEkQSSBJMEpgGmAaYBpgGmAaYBqgGqAaoBlASVBJYE1AHUAZkEqgGqAaoBqgGqAaoB1AGaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSqAaoBqgGqAaoBqgGuAa4BrgGyBLMEtAS1BJgEtgSuAa8BrgGwAa4BrgG3BLEBuASXBLkEsgG6BLsEsQG8BL0EvgS/BMAEwQTCBMMEsQHEBMUExgTHBMgEyQTKBK4BsAGuAbABrgGuAcsEsQHMBM0EzgTPBNAEsQHRBNIE0wTUBNUEsQE5ATkBOQHWBNcE2ATZBNoE2wQ5ATkBOQE5ATkBOQHcBN0E3gTfBB8C4AQfAuEE4gTjBOQE5QTmBOcE6ATpBOoE6wTsBO0E7gTvBPAE8QTyBDkBOQE5ATkBOQE5AfME9AT1BB8C9gQfAqYBpgGmAfcE+AT5BPoE+wTUAaYBpgGmAaYBpgGmAdQB/AT9BP4EjAL/BIwCAAUBBQIFAwUEBQUFBgUHBQgFCQUKBQsFDQUOBQ8FEAUMBREFpgGmAaYBpgGmAaYBEgUTBRQFjAIVBYwCqgGqAaoBFgUXBRgFGQUaBRsFqgGqAaoBqgGqAaoBHAUdBR4FHwWNAiAFjQIhBSIFIwUkBSUFJgUnBSgFKQUqBSsFLAUtBS4FLwUwBTEFMgWqAaoBqgGqAaoBqgEzBTQFNQWNAjYFjQKuAa4BrgE3BTgFOwU8BT0FPgWuAbABrgGwAa4BrgE5BbEBPwVABUEFOgVCBUMFsQFEBUUFRgVHBUgFSQVKBUsFsQFMBU0FTgVPBVAFUQVSBa4BsAGuAbABrgGuAVMFsQFUBVUFVgVXBVgFsQFZBVoFWwVcBV0FsQH/A/8DXgX/A/8D/wNfBf8D/wP/A/8D/wNiBf8DYAVjBWQFZQVmBWEFZwX/A/8D/wP/A/8DaAVpBWoFawVsBW0FbgVvBXAFcQVyBXMFdAV1BXYFdwV4BXkFegV7BXwFfQV+BX8FgAWBBYIFhQWGBf8DhwWIBYkFigWDBYsFjAWNBY4FhAWPBZAFkQWTBZQFlQWWBZcFmAWZBZIFmgX/A/8D/wMKBAoEmwUKBAoECgScBQoECgQKBAoECgSdBQoEngWfBaAFoQWiBaMFpQUKBAoECgQKBAoEpgWkBacFqAWpBaoFqwWsBa0FrgWvBbAFsQWyBbMFtQW2BbcFuAW5BboFuwW0BbwFvQW+Bb8FwAXBBQoEwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wUKBAoECgT/A/8D2AX/A/8D/wPZBf8D/wP/A/8D/wPaBf8D2wXcBd0F3gXfBeAF4QX/A/8D/wP/A/8D4gXjBeQF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/QX+Bf8D/wUABgEGAgYDBgQGBQYGBgcGCAYJBgoGCwYMBg0GDgYPBhAGEQYSBhMGFAb/A/8D/wMKBAoEFQYKBAoECgQWBgoECgQKBAoECgQXBgoEGAYZBhoGGwYcBh0GHgYKBAoECgQKBAoEHwYgBiEGIgYjBiQGJQYmBicGKAYpBioGKwYsBi0GLgYvBjAGMQYyBjMGNAY1BjYGNwY4BjkGOgY7BgoEPAY9Bj4GPwZABkEGRQZGBkIGRwZIBkkGQwZKBksGTAZNBk4GUgZTBlQGVQYKBAoECgREBk8GVgZXBlgGUAZZBlwGXQZeBloGXwZgBmEGYgZjBmQGZQZRBmYGZwZoBmkGWwZqBmsGbAZtBm4GbwZwBnEGcgZzBnQGdQZ2BncGeAZ5BnoGewZ8Bn0GfgZ/BoAGgQaCBoMGhAaFBoYGhwaIBokGigaLBowGjQaOBo8GkAaRBpIGkwaUBpUGlgaXBpgGmQaaBpsGnAadBp4GnwagBqEGogajBqQGpQamBqcGqAapBqoGqwasBq0GrgavBrAGsQayBrMGtAa1BrYGtwa4BrkGuga7BrwGvQa+Br8GwAbBBsIGwwbEBsUGxgbHBsgGyQbKBssGzAbNBs4GzwbQBtEG0gbTBtQG1QbWBtcG2AbZBtoG2wbcBt0G3gbfBuAG4QbiBuMG5AblBuYG5wboBukG6gbrBuwG7QYWABYAFgAWABYAFgAWABYAFgAWABYAUABQAFAAUABQAFAAUABQAFAAUABQAKkAqQCpAKkAqQCpAKkAqQCpAKkAqQAXABcAFwAXABcAFwAXABcAFwAXABcA2QDZANkA2QDZANkA2QDZANkA2QDZAN0A3QDdAN0A3QDdAN0A3QDdAN0A3QDkAOQA5ADkAOQA5ADkAOQA5ADmAOYA5gDmAOYA5gDmAOYA5gDmAOYAMgEyATIBMgEyATIBMgEyATUBzwPOA80DNQE1AcwDNQE4ATgBywM4ATgBOAE4ATgBpQHKA8kDyAOlAaUBpQGlAacBpwGnAacBpwGnAacBpwGnAacBpwGpAakBxwOpAakBqQGpAakBqwHGA6sBqwGrAasBqwGrAasBqwGrAa0BxQOtAa0BrQGtAa0BrQGtAa0BrQHRAcQD0QHRAdEB0QHRAdEB0QHRAdEB0gHDA9IB0gHTAdMBwgPBA9MB0wHAA9MB0wEcAhwCHAIcAhwCHAIcAhwCHQIdAh0CHQIdAh0CHQIdAiACIAK/AyACIAIgAiACIAIhAiECqwG+A6sBqwGrAasBqwGrAasBqwGrAa0BvQOtAa0BrQGtAa0BrQGtAa0BrQHRAbwD0QHRAdEB0QHRAdEB0QHRAdEB0gG7A9IB0gHTAdMBugO5A9MB0wG4A9MB0wEABLcDAAQABAAEAAQABAAEAAQABAAECwS2AwsECwQLBAsECwQLBAsECwQLBP8DtQP/A/8D/wP/A/8D/wP/A/8D/wMKBLQDCgQKBAoECgQKBAoECgQKBAoEswOyA7EDsAOvA64DrQOsA6sDqgOpA6gDpwOmA6UDpAOjA6IDoQOgA58DngOdA5wDmwOaA5kDmAOXA5YDlQOUA5MDkgORA5ADjwOOA40DjAOLA4oDiQOIA4cDhgOFA4QDgwOCA4EDgAN/A34DfQN8A3sDegN5A3gDdwN2A3UDdANwA28DbgNtA2wDawNqA2kDaANnA2YDZQNkA2EDYANfA14DXQNcA1sDWgNZA1gDVwNWA1UDVANRA1ADTwNOA00DTANLA0oDSQNIA0cDRgNFA0QDQwNCA0EDQAM/Az4DPQM8AzsDOgM5AzgDNwM2AzUDNAMzAzIDMQMwAy8DLgMtAywDKwMqAykDKAMnAyYDJQMkAyMDIgMhAyADHwMeAx0DHAMbAxoDGQMYAxcDFgMVAxQDEwMSAxEDEAMPAw4DDQMMAwsDCgMJAwgDBwMGAwUDBAMDAwIDAQMAA/8C/gL9AvwC+wL5AvgC9wL2AvUC9ALzAvIC8ALvAu4C7QLsAusC6gLpAugC5wLmAuUC5ALjAuIC4QLgAt8C3gLdAtwC2wLaAtkC2ALXAtYC1QLUAtMC0gLRAtACzwLOAs0CzALLAsoCyQLIAscCxgLFAsQCwwLCAsECwAK/Ar4CvQK8ArsCugK5ArgCtwK2ArUCtAKzArICsQLTAdQBrQKsAqsCqgKpAqgCpwKmAqUCpAKjAqICoQKgAp8CngKdApwCmwKaApkCmAKXApYClQKUApMCkgKRApACjwKOAqgBiwKKAokCiAKHAoYChQKEAoMCggKBAoACfwJ+AnoCeQJ4AncCdgJ1AnQCcwJvAm4CbQJnAmYCZQJfAl4CXQJcAlsCWgJXAlYCVQJUAlMCUAJPAk4CTQJLAkoCSQJIAkYCRAJDAkICQQJAAj8CPgI9AjoCOQI4AjUCNAIwAi8CLgItAigCJwIkAh4CMQEbAhoCGQIYAhcCFgIVAhQCEwISAhECEAIPAg4CCgIJAggCBwIGAgUCBAIDAv8B/gH9AfoB+QH4AfIB8QHwAe8B7gHtAeoB6QHoAecB5gHjAeIB4QHgAd0B3AHbAdoB2QHYAecA4wDUATQBMQHQAc0BzAHLAcABvQG8AbsBRQE+ATwBOwGsAagBNwGkAaMBogGhAaABnwGVAZQBhQGEAYEBaAFiAVgBVwFWAVUBRQE7AToB5wA3AeMANgE0ATMB5wAxAS4BLQEsASsBKgEpAR8BHgEQAQ8BDAH1AO0A7ADrAOcA5QDjAO4GFQDuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBu4G7gbuBgAAAAAAAAAAAADvBu8G7gYDAPAG8AbuBgcA7gYJAPEG8QbuBg0A8gbyBvMG8wb0BvQG7gbuBu4G7gbuBvUG9gb1Bu4G7gbuBu4G9Qb1BvUG9Qb1BvUG9Qb1BvUG7gbuBvUG7gb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9QbuBu4G7gb1Bu4G7gb2BvcG7gbuBu4G7gb3BvgG9wbuBu4G7gb2BvkG7gbuBu4G7gbuBu4G7gbuBvkG+QbuBmcA7gbuBu4G7gbuBu4G+QZvAG8AbwBvAG8A+Qb5BvkG+Qb5BvkG+Qb5BvkG+QbuBu4GbwD5Bu4G7gbuBvkG9wbuBvcG9wbuBu4G9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb6Bu4G7gb6Bu4G7gbuBvsG/Ab9Bu4G7gbuBvwG/AZnAGcA7gb+Bu4G7gb8BrsAuwC7ALsAuwD8BvwG/Ab8BvwG/AbuBu4GuwC7ALsAuwC7APwG/Ab8BvwG/Ab8BvwG7gb/Bu4G7gYAB+4G7gbuBgEHAQcBBwEH7gbuBu4G9Qb1BvYG7gYcAO4G7gb1BvUG9Qb1BvUG9Qb1BhwA7gbuBvUG7gbuBvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG7gbuBu4G9wYCB+4GAwf3Bu4G+Qb5Bu4G7gbuBgQH7gZnAGcAQAHuBu4GBQfuBm8AbwBvAPkG+Qb5BvkGbwD5BvkG+QZvAG8A+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5Bm8A+QaHAPcG7gYFB/cG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb6BvoG+wbuBvwG/AYGBwYHBwf8Bq4BrgH8BvwGrgGuAfwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8Bq4B/AauAa4B/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwGCAcJBwoH7gYKBwoHCgfuBu4G9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUGAgcDB/cG+QYEBwUH+QZvAPkG+Qb5BvkG+Qb5BvkG+QZvAPkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb6BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BgoHCgcKB/UG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb3BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG/Ab8BvwG/Ab8BvwG/Ab8BgsH/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwGDAf8BvwG/Ab8BvwG/Ab8BgoHCgcKB/UG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9wb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb8BvwG/Ab8BvwGDQcLB/wG/Ab8BvwG/Ab8BvwG/Ab8Bg4HDAf8BvwG/Ab8BgoHCgcKB/UG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9wb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BgoHCgf1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9wb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb8BvwG/Ab8BvwG/Ab1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvcG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG/Ab8BvwG/Ab8BvwG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9wb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb5BvkG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG+Qb5BvkG+Qb5BvkG+Qb5BvkG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb5BvkG+Qb5BvkG+Qb5BvkG+Qb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG+Qb5BvkG+Qb5BvkG+Qb5BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG9Qb1BvUG+Qb5BvkG+Qb5BvkG+Qb5BvkG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvcG9wb3BvUG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fQUAAAAAAAB5BV0FYgUAAAAAAABfBZYFnQWUBQAAkQWWBYkFnAWRBZoFAACDBZQFAACFBaAFkQWVBZYFAACKBakFAACMBasFqQWbBZEFrwWZBasFAAAAAK0FAACcBZoFvQW+BQAAuwXABbgFxgUAAK8FAADKBb8FxwXCBbYFAAC3BbgF0AUAAMsFtgW0BdcFAADUBcoF3AXRBdoFAADDBdQFAADFBeYF1wXbBeMF4gUAANYF/wUAANcF9gX0BeYF4wX7BeUF+AUAAAAA+QUAAOUF4wUGBggGCAbqBewF7AUAAP4FDwYAAAAGEwYJBhEGCwYcBh4GEAYAAB4GEgYTBhgGIAYdBiEGAAAYBioGMgY0BgAAAAAYBjkGAAAqBjsGAAA0BkEGRQYAAAAARAY4BkMGOQZIBgAAAAAqBgAAOwYAADwGTwZFBk0GRwZSBlMGRQYAAAAAUwZHBkgGTAZUBlEGVQYAAEwGWwZgBl0GAAAAAD8GAAAAAAAAAAAAAAAAXQYAAFcGXQZjBmEGXgZdBlkGagZqBmIGbwZhBmsGbAZkBmMGdwZuBnIGgwYAAGoGAACEBgAAiAaFBnsGigaCBokGhAaZBnsGlAaOBpQGmgaXBpQGkwaPBp8GnwaXBqQGlgagBqEGmQaYBqwGowaiBrAGAACSBpQGogaxBqkGrAaqBq0GsgYAAKkGAAAAALUGsQa7Br8GAADABr4Guga7BrgGowaoBroGvQbBBrgGAAAAAM0G1AbXBroGvwbNBtsG0wbWBtQG3AbhBgAA2AYAAAAA5AbgBuoG7gYAAO8G7QbpBuoG5wbSBu0G5Ab1BuUG9QbtBu8G7gbfBgAA/gb8Bu4G8Ab+Bv0G8QYCB+QGAAf2BgYH/QbuBgoH/QYLB+0GCQcABxEHAQcRBwkHCwcKB/sGAAAaBxgHDwcUBycHJwcbBysHDQckBwAAHwcVBwAAGwcsBy4HKQcqBzoHAAAsBy8HNAckBwAAFQc3BycHAAA5BzQHRAc2BzkHHQc/BwAAOgcwBwAAMQdCB0QHPwdAB1AHAABCB0YHSwc7BwAALAdMBz4HXwddB1EHQgdTBwAAVQcAAFIHWQdXBzgHWQdxB0sHXAdeBwAAWgdDB2QHVgd2B3cHawdbB20HAABvBwAAawdyB3AHUQdtB3EHeQd4B4IHfQdrB4UHAAAAAAAAhwd7BwAAeQeDB4IHjAeMBwAAAAAAAAAAfgeBB4kHiAeSB4wHegeUBwAAAAAAAJYHigcAAIkHhQeWB5wHlQeWB6IHmAeXB50HkwefB6UHngefB5gHlAelB6sHpAelB7EHpwemB6wHAACpB7AHAACmB6oHrge6B6gHrgcAALcHAACtB78HAAC0B7sHAACxB7UHuQfFB7MHuQfHB7wHvAfJB8EHxwcAAL0HwgfCB8sH0QfGB8YH0wfLB9EHAADHB8sHAAC8B9sHzgfLB9YHAADBB84H0wcAAMQH4wfWB9MH3gfcB+QH1gfoBwAA2AfoBwAA4gfqB9wH7gcAAN4H4AfmB+wH9QfeB+oH5gfsB/IH+wfkBwAA+gfwB+wHAAD9BwAA/gf0B/AHAAAAAPcH/QcAAAAA+Qf/BwAA+gcAAPsH/Qf+BwAAAAApCyYIMQg8CEcIUghdCGYIcQh5CIEIiQiRCJwIpAivCLoIxQjJCNII2gjiCOoI7Aj3CAIJDQkRCRoJJQkwCTsJRgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgMBAQQBAQEBAwUGBwgJCgoKBwEBBgEDCwsLCwsLCAgICAgICAgICAgICAgICAgICAgHBAcDCAsLCwsLCwgICAgICAgICAgICAgICAEBAQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQECAwEBAgEBAQEBAQEBAQEBAQEBAQEBAQIEBQYHCAkBCgsMDQ4PEBESExQTExMTExMTFRYXGBkaARscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODkBOjs8PT4/QEFCEENERUZHSBBJSktMEBBNEE5PUFFSAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAswCzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyADHAMUAtgC1ACAAxQCzACYAHQAsACsAIgAjABwAJACzACUACAAIAC0ALgAnACgAGwAhALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswAKAAkAswB4AHYAswAqAB4AKQAfAMQAwgDHAK4ALAArABwAxwCuAMcArgDGALYAIADGALEAJgAdACwAKwAiACMAHAAkALEAJQAIAAgALQAuACcAKAAbACEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQAKAAkAsQCxACoAHgApAB8ArgAkAK4AJQAIAAgArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4AeAB2AK4AHwAEAAMAAgAEAAUAhwAgAIYArQAiACMAHAAkAK0AJQAIAAgALQAuACgAIQCtAK0ArQCtAK0ArQCtAK0ArQCtAK0ArQAKAAkArQCtAK0ArQCtAK0ArQCtAK0ArQCtAB8AxADDAMUAvQC8ALcAvgC/ALsAuwC7ALsAwADBALYAswAPAAAAtAAIABoAGAAWABQAFQABABcACAAIALMAEgARAA4AEAATALMAswCzALMAswB9ALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAGQANAMQArgAAAAEArwCuAA8AsQAGABYAFAAVAAAAFwAIAAAABwAHAAgABwAOALEABwAHAAcAsQCxAH0ABwCxALEABwCxALEAsQAHALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxAAcAsQAIABcACAAAAK4ArgCuAK4ArgB9AK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgAEAAQAhgCGAK0ABgCIABYAiQCtAAcABwAHAK0ArQCtAAcArQAHAAcArQCtAK0ArQCtAK0ArQCtAAcArQCtAK0ABwCtAAcABwCtAK0ArQCtAK0ArQCtAK0AwwC8ALsAAAC7ALsAuwALAAwAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAXQCzALMAswCzALMAswCzALMAswCzAEgAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAeQB3ALMAsACvAK4ACACyAAgAsQAHALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQA+AD8AsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQAIAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgBdAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgBIAD4ArgA/AK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgB5AHcArgAEAAgArQCtAK0ArQCtAIoArQCtAK0ArQCtAK0ArQCtAK0ArQCtAK0ArQCtAK0AmwCtAK0ArQCtAK0ArQCtAK0ArQCtALsAuwC7ALMAOwCzALMAswCzALMANQCzAGQAswBwALMAswCzALMAswCzALMAWQCzALMAswCzALMAcQCzALMAswCDALMAswCzAGIAswBEALMAswCzALMAswCzALMAswCzAGAAswCzALMAswCzALMAawCzALMAswCzALMAswCzALMAswCuALEAOwCxALEAsQA1ALEAsQBwALEAsQCxALEAsQCxALEAcQCxAIMAsQCxALEARACxALEAsQCxALEAsQCxALEAsQCxALEAsQCuADsArgCuAK4ArgA1AK4AZACuAHAArgCuAK4ArgCuAK4ArgBZAK4ArgCuAK4ArgBxAK4ArgCuAIMArgCuAK4ArgBiAK4ARACuAK4ArgCuAK4ArgCuAK4ArgBgAK4ArgCuAK4ArgCuAGsArgCuAK4ArgCuAK4ArgCuAK4ArQCtAK0AjgCWAI0ArQCtAJgAkQCUAK0ArQCZAK0ArQCtAK0ArQCfAKcAngCtAK0AqgCiAKUArQCtAKsArQCtALsAuwC7ALMAVwA3ALMAswCzADQAswCzALMAswBvAEIAswCzAF8AswBOALMAswCzAE0AswCzALMAswCzALMAswCzALMAswCzALMAfACzALMAswCzALMAYwCzALMAswBhALMAswCzALMAswCzALMArgCxADcAsQCxADQAsQCxALEAbwCxAE4AsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEArgBXADcArgCuADQArgCuAK4ArgBvAEIArgCuAF8ArgBOAK4ArgCuAE0ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgB8AK4ArgCuAK4ArgBjAK4ArgCuAGEArgCuAK4ArgCuAK4ArgCtAI8AjACtAK0AmACYAJMArQCXAK0ArQCgAJ0ArQCtAKoAqgCkAK0AqQCtALsAuwC5ALMAswCzAEEAswBYALMAswCzALMAswCzAEMAswCAALMAswCzAFYAswA2ALMALwCzALMAbgCzADIATACzALMAswCzALMAswBJALMAswCzALMAswBeAEoAswCzALMArgCxALEAsQBBALEAsQCxALEAsQCAALEAsQA2ALEAsQCxAG4AsQAyALEAsQCxAEkAsQCxALEAsQCuAK4ArgBBAFgArgCuAK4ArgCuAK4AQwCuAIAArgCuAK4AVgCuADYArgCuAC8ArgCuAG4ArgAyAEwArgCuAK4ArgCuAK4ASQCuAK4ArgCuAK4AXgBKAK4ArgCuAK0ArQBDAJUAkgCtAK0ArQCoAKYAowCtALoAuACzAD0AswCzALMAswCzALMAUACzALMAewCzALMAswCzALMAZQCzALMAaACBALMAswCzALMAswCzALMAdQBaALMAMwCzALMArgCxAD0AsQCxALEAsQBQALEAewCxALEAsQCxALEAcgCBALEAsQB1ALEAsQCxAK4APQCuAK4ArgCuAK4AUACuAK4AewCuAK4ArgCuAK4ArgBlAK4ArgBoAIEArgCuAK4ArgCuAK4ArgB1AFoArgAzAK4ArgCtAK0ArQCtAK0ArQCaALMAswCFALMAswCzALMAswCzALMAswA8ALMAswCzALMAswCzALMAVQCzALMAswCzAH8ArACzAK4AmgCxALEAhQCxALEAsQA8AEAAsQCxALEAsQCxAH8ArACxAJoArgCFAK4ArgCuAK4ArgCuAK4ArgA8AEAArgCuAK4ArgCuAK4ArgBVAK4ArgCuAK4AfwCsAK4AmgCLAJAArACcAKEAswBPALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswBtALMATwCxAE8AsQCxALEAsQCxALEAsQCxALEArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4ArgCuAK4AbQCuALMAswCzALMAswCzALMAswAxALMAcwB0ALMAswCzALMASwCzALMAswCzALMAswCxALEAsQCxALEAcwB0ALEAsQCxALEArgCuAK4ArgCuAK4ArgCuADEArgBzAHQArgCuAK4ArgBLAK4ArgCuAK4ArgCuALMAswCzALMAswCzALMAswBmAFwAswCzALMAswCzALMAswCzALMAsQCxALEAsQBmALEAsQCxALEArgCuAK4ArgCuAK4ArgCuAGYAXACuAK4ArgCuAK4ArgCuAK4ArgCzAFIAswCzAIQAswCzALMAswCzALMAMACzALMAswCzAGkAswCxALEAhACxALEAsQCxALEAsQCuAFIArgCuAIQArgCuAK4ArgCuAK4AMACuAK4ArgCuAGkArgCzALMAswCzALMAswCzAFsAswBHALMAswCzALMAsQCxALEAsQCxAEcAsQCxAK4ArgCuAK4ArgCuAK4AWwCuAEcArgCuAK4ArgCzALMAswCzALMAswCzALMAZwCCAEYAswCzAEUAsQCxALEAsQCxAGcAggBGAEUArgCuAK4ArgCuAK4ArgCuAGcAggBGAK4ArgBFALMAswCzALMAswCzALMAswCzALMAsQCxALEAsQCxAK4ArgCuAK4ArgCuAK4ArgCuAK4AfgCzALMAOgCzALMAswCzALMAswB+ALEAOgCxALEAfgCuAK4AOgCuAK4ArgCuAK4ArgCzALMAswCzALMAswBqALMAsQCxALEArgCuAK4ArgCuAK4AagCuALMAOACzALMAswCzALMAOACxALEArgA4AK4ArgCuAK4ArgCzALMAswCzAHoAswCxAHoArgCuAK4ArgB6AK4AswCzALMAswCzALEArgCuAK4ArgCuAFEAswCzALMAbACxAFEArgCuAK4AbAA5ALMAswA5ADkArgCuAFMAswBTAK4AswCuAFQAVAAAAAAAJVAlRjogaW52YWxpZCBoZXggbnVtYmVyIGAlcycKAAAlUCVGOiB1c2UgdGhlIC0taGVscCBvcHRpb24gZm9yIHVzYWdlIGluZm9ybWF0aW9uCgAAAAAAACVQJUY6IHVucmVjb2duaXplZCAtYSBvcHRpb24gYCVzJwoAAAAAAAAlUCVGOiB1bnJlY29nbml6ZWQgLWFzc2VydCBvcHRpb24gYCVzJwoAJUYlUDogdW5rbm93biBkZW1hbmdsaW5nIHN0eWxlIGAlcycKAAAAACVzOiBlbXVsYXRpb24gc3BlY2lmaWMgb3B0aW9uczoKAAAAAAAAAAAgIC0tbGQtZ2VuZXJhdGVkLXVud2luZC1pbmZvICBHZW5lcmF0ZSBleGNlcHRpb24gaGFuZGxpbmcgaW5mbyBmb3IgUExUCiAgLS1uby1sZC1nZW5lcmF0ZWQtdW53aW5kLWluZm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9uJ3QgZ2VuZXJhdGUgZXhjZXB0aW9uIGhhbmRsaW5nIGluZm8gZm9yIFBMVAoAAAAAICAtLWJ1aWxkLWlkWz1TVFlMRV0gICAgICAgICAgR2VuZXJhdGUgYnVpbGQgSUQgbm90ZQoAAAAgIC0tY29tcHJlc3MtZGVidWctc2VjdGlvbnM9W25vbmV8emxpYnx6bGliLWdudXx6bGliLWdhYmldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzIERXQVJGIGRlYnVnIHNlY3Rpb25zIHVzaW5nIHpsaWIKAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQ6IG5vbmUKAAAAICAteiBjb21tb24tcGFnZS1zaXplPVNJWkUgICAgU2V0IGNvbW1vbiBwYWdlIHNpemUgdG8gU0laRQoAAAAAACAgLXogbWF4LXBhZ2Utc2l6ZT1TSVpFICAgICAgIFNldCBtYXhpbXVtIHBhZ2Ugc2l6ZSB0byBTSVpFCgAAAAAgIC16IGRlZnMgICAgICAgICAgICAgICAgICAgICBSZXBvcnQgdW5yZXNvbHZlZCBzeW1ib2xzIGluIG9iamVjdCBmaWxlcy4KAAAAAAAAACAgLXogbXVsZGVmcyAgICAgICAgICAgICAgICAgIEFsbG93IG11bHRpcGxlIGRlZmluaXRpb25zCgAAAAAAAAAgIC16IGV4ZWNzdGFjayAgICAgICAgICAgICAgICBNYXJrIGV4ZWN1dGFibGUgYXMgcmVxdWlyaW5nIGV4ZWN1dGFibGUgc3RhY2sKAAAAACAgLXogbm9leGVjc3RhY2sgICAgICAgICAgICAgIE1hcmsgZXhlY3V0YWJsZSBhcyBub3QgcmVxdWlyaW5nIGV4ZWN1dGFibGUgc3RhY2sKAAAAAAAAAAAgIC0tYXVkaXQ9QVVESVRMSUIgICAgICAgICAgICBTcGVjaWZ5IGEgbGlicmFyeSB0byB1c2UgZm9yIGF1ZGl0aW5nCgAAAAAgIC1CZ3JvdXAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RzIGdyb3VwIG5hbWUgbG9va3VwIHJ1bGVzIGZvciBEU08KAAAgIC0tZGlzYWJsZS1uZXctZHRhZ3MgICAgICAgICBEaXNhYmxlIG5ldyBkeW5hbWljIHRhZ3MKACAgLS1lbmFibGUtbmV3LWR0YWdzICAgICAgICAgIEVuYWJsZSBuZXcgZHluYW1pYyB0YWdzCgAAICAtLWVoLWZyYW1lLWhkciAgICAgICAgICAgICAgQ3JlYXRlIC5laF9mcmFtZV9oZHIgc2VjdGlvbgoAAAAAACAgLS1leGNsdWRlLWxpYnM9TElCUyAgICAgICAgIE1ha2UgYWxsIHN5bWJvbHMgaW4gTElCUyBoaWRkZW4KAAAgIC0taGFzaC1zdHlsZT1TVFlMRSAgICAgICAgICBTZXQgaGFzaCBzdHlsZSB0byBzeXN2LCBnbnUgb3IgYm90aAoAAAAAAAAgIC1QIEFVRElUTElCLCAtLWRlcGF1ZGl0PUFVRElUTElCCgkJCSAgICAgIFNwZWNpZnkgYSBsaWJyYXJ5IHRvIHVzZSBmb3IgYXVkaXRpbmcgZGVwZW5kZW5jaWVzCgAgIC16IGNvbWJyZWxvYyAgICAgICAgICAgICAgICBNZXJnZSBkeW5hbWljIHJlbG9jcyBpbnRvIG9uZSBzZWN0aW9uIGFuZCBzb3J0CgAAACAgLXogbm9jb21icmVsb2MgICAgICAgICAgICAgIERvbid0IG1lcmdlIGR5bmFtaWMgcmVsb2NzIGludG8gb25lIHNlY3Rpb24KAAAAAAAAICAteiBnbG9iYWwgICAgICAgICAgICAgICAgICAgTWFrZSBzeW1ib2xzIGluIERTTyBhdmFpbGFibGUgZm9yIHN1YnNlcXVlbnRseQoJCQkgICAgICAgbG9hZGVkIG9iamVjdHMKAAAgIC16IGluaXRmaXJzdCAgICAgICAgICAgICAgICBNYXJrIERTTyB0byBiZSBpbml0aWFsaXplZCBmaXJzdCBhdCBydW50aW1lCgAAAAAAACAgLXogaW50ZXJwb3NlICAgICAgICAgICAgICAgIE1hcmsgb2JqZWN0IHRvIGludGVycG9zZSBhbGwgRFNPcyBidXQgZXhlY3V0YWJsZQoAICAteiBsYXp5ICAgICAgICAgICAgICAgICAgICAgTWFyayBvYmplY3QgbGF6eSBydW50aW1lIGJpbmRpbmcgKGRlZmF1bHQpCgAAAAAAAAAgIC16IGxvYWRmbHRyICAgICAgICAgICAgICAgICBNYXJrIG9iamVjdCByZXF1aXJpbmcgaW1tZWRpYXRlIHByb2Nlc3MKAAAgIC16IG5vY29weXJlbG9jICAgICAgICAgICAgICBEb24ndCBjcmVhdGUgY29weSByZWxvY3MKACAgLXogbm9kZWZhdWx0bGliICAgICAgICAgICAgIE1hcmsgb2JqZWN0IG5vdCB0byB1c2UgZGVmYXVsdCBzZWFyY2ggcGF0aHMKAAAAAAAAICAteiBub2RlbGV0ZSAgICAgICAgICAgICAgICAgTWFyayBEU08gbm9uLWRlbGV0YWJsZSBhdCBydW50aW1lCgAAAAAAAAAAICAteiBub2Rsb3BlbiAgICAgICAgICAgICAgICAgTWFyayBEU08gbm90IGF2YWlsYWJsZSB0byBkbG9wZW4KACAgLXogbm9kdW1wICAgICAgICAgICAgICAgICAgIE1hcmsgRFNPIG5vdCBhdmFpbGFibGUgdG8gZGxkdW1wCgAgIC16IG5vdyAgICAgICAgICAgICAgICAgICAgICBNYXJrIG9iamVjdCBub24tbGF6eSBydW50aW1lIGJpbmRpbmcKAAAAAAAgIC16IG9yaWdpbiAgICAgICAgICAgICAgICAgICBNYXJrIG9iamVjdCByZXF1aXJpbmcgaW1tZWRpYXRlICRPUklHSU4KCQkJCXByb2Nlc3NpbmcgYXQgcnVudGltZQoAAAAAAAAAACAgLXogcmVscm8gICAgICAgICAgICAgICAgICAgIENyZWF0ZSBSRUxSTyBwcm9ncmFtIGhlYWRlciAoZGVmYXVsdCkKAAAAACAgLXogbm9yZWxybyAgICAgICAgICAgICAgICAgIERvbid0IGNyZWF0ZSBSRUxSTyBwcm9ncmFtIGhlYWRlcgoAAAAAAAAAACAgLXogY29tbW9uICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIGNvbW1vbiBzeW1ib2xzIHdpdGggU1RUX0NPTU1PTiB0eXBlCgAAAAAAICAteiBub2NvbW1vbiAgICAgICAgICAgICAgICAgR2VuZXJhdGUgY29tbW9uIHN5bWJvbHMgd2l0aCBTVFRfT0JKRUNUIHR5cGUKAAAAAAAgIC16IHN0YWNrc2l6ZT1TSVpFICAgICAgICAgICBTZXQgc2l6ZSBvZiBzdGFjayBzZWdtZW50CgAAAAAAAAAAICAteiB0ZXh0ICAgICAgICAgICAgICAgICAgICAgVHJlYXQgRFRfVEVYVFJFTCBpbiBzaGFyZWQgb2JqZWN0IGFzIGVycm9yCgAAAAAAAAAgIC16IG5vdGV4dCAgICAgICAgICAgICAgICAgICBEb24ndCB0cmVhdCBEVF9URVhUUkVMIGluIHNoYXJlZCBvYmplY3QgYXMgZXJyb3IKACAgLXogdGV4dG9mZiAgICAgICAgICAgICAgICAgIERvbid0IHRyZWF0IERUX1RFWFRSRUwgaW4gc2hhcmVkIG9iamVjdCBhcyBlcnJvcgoAPGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS1vcy9pc3N1ZXMvZW50cnk+AAAAAAAlUCVGOiBiYWQgLS11bnJlc29sdmVkLXN5bWJvbHMgb3B0aW9uOiAlcwoAAAAAAAAlUCVGOiB1bnJlY29nbmlzZWQgb3B0aW9uOiAlcwoAACVQJUY6IC1yIGFuZCAlcyBtYXkgbm90IGJlIHVzZWQgdG9nZXRoZXIKAAAAAAAAACVQJUY6IC1yIGFuZCAtc2hhcmVkIG1heSBub3QgYmUgdXNlZCB0b2dldGhlcgoAACVQJUY6IC1yIGFuZCAtcGllIG1heSBub3QgYmUgdXNlZCB0b2dldGhlcgoAAAAAACVQOiBTT05BTUUgbXVzdCBub3QgYmUgZW1wdHkgc3RyaW5nOyBrZWVwaW5nIHByZXZpb3VzIG9uZQoAAAAAAAAlUCVGOiBpbnZhbGlkIGNvbW1vbiBzZWN0aW9uIHNvcnRpbmcgb3B0aW9uOiAlcwoAAAAAAAAAACVQJUY6IGludmFsaWQgc2VjdGlvbiBzb3J0aW5nIG9wdGlvbjogJXMKAAAAAAAAACVQJUY6IGludmFsaWQgYXJndW1lbnQgdG8gb3B0aW9uICItLXNlY3Rpb24tc3RhcnQiCgAAAAAAJVAlRjogbWlzc2luZyBhcmd1bWVudChzKSB0byBvcHRpb24gIi0tc2VjdGlvbi1zdGFydCIKAAAlUCVGOiBncm91cCBlbmRlZCBiZWZvcmUgaXQgYmVnYW4gKC0taGVscCBmb3IgdXNhZ2UpCgAAACVQJVg6IC0taGFzaC1zaXplIG5lZWRzIGEgbnVtZXJpYyBhcmd1bWVudAoAAAAAACVQJUY6IG5vIHN0YXRlIHB1c2hlZCBiZWZvcmUgcG9wcGluZwoAAAAlUCVGOiBpbnZhbGlkIGFyZ3VtZW50IHRvIG9wdGlvbiAiLS1vcnBoYW4taGFuZGxpbmciCgAAACVQOiBTT05BTUUgbXVzdCBub3QgYmUgZW1wdHkgc3RyaW5nOyBpZ25vcmVkCgAAACVQJUY6IC1GIG1heSBub3QgYmUgdXNlZCB3aXRob3V0IC1zaGFyZWQKAAAAAAAAACVQJUY6IC1mIG1heSBub3QgYmUgdXNlZCB3aXRob3V0IC1zaGFyZWQKAAAAAAAAAFNoYXJlZCBsaWJyYXJ5IGNvbnRyb2wgZm9yIEhQL1VYIGNvbXBhdGliaWxpdHkAAFNwZWNpZnkgdGFyZ2V0IGZvciBmb2xsb3dpbmcgaW5wdXQgZmlsZXMAAAAAAAAAAEZvcmNlIGNvbW1vbiBzeW1ib2xzIHRvIGJlIGRlZmluZWQAAAAAAABVbmRvIHRoZSBlZmZlY3Qgb2YgLS1leHBvcnQtZHluYW1pYwAAAAAAQXV4aWxpYXJ5IGZpbHRlciBmb3Igc2hhcmVkIG9iamVjdCBzeW1ib2wgdGFibGUARmlsdGVyIGZvciBzaGFyZWQgb2JqZWN0IHN5bWJvbCB0YWJsZQAAAFNtYWxsIGRhdGEgc2l6ZSAoaWYgbm8gc2l6ZSwgc2FtZSBhcyAtLXNoYXJlZCkAAFNldCBpbnRlcm5hbCBuYW1lIG9mIHNoYXJlZCBsaWJyYXJ5AAAAAABTZXQgUFJPR1JBTSBhcyB0aGUgZHluYW1pYyBsaW5rZXIgdG8gdXNlAAAAAAAAAABQcm9kdWNlIGFuIGV4ZWN1dGFibGUgd2l0aCBubyBwcm9ncmFtIGludGVycHJldGVyIGhlYWRlcgAAAAAAAAAAQWRkIERJUkVDVE9SWSB0byBsaWJyYXJ5IHNlYXJjaCBwYXRoAAAAAE92ZXJyaWRlIHRoZSBkZWZhdWx0IHN5c3Jvb3QgbG9jYXRpb24AAABQcmludCBtYXAgZmlsZSBvbiBzdGFuZGFyZCBvdXRwdXQAAAAAAAAARG8gbm90IHBhZ2UgYWxpZ24gZGF0YSwgZG8gbm90IG1ha2UgdGV4dCByZWFkb25seQAAAAAAAABQYWdlIGFsaWduIGRhdGEsIG1ha2UgdGV4dCByZWFkb25seQAAAAAAU2VuZCBhcmcgdG8gbGFzdC1sb2FkZWQgcGx1Z2luAABJZ25vcmVkIGZvciBHQ0MgTFRPIG9wdGlvbiBjb21wYXRpYmlsaXR5AAAAAAAAAABJZ25vcmVkIGZvciBHQ0MgbGlua2VyIG9wdGlvbiBjb21wYXRpYmlsaXR5AAAAAABJZ25vcmVkIGZvciBnb2xkIG9wdGlvbiBjb21wYXRpYmlsaXR5AAAASWdub3JlZCBmb3IgU1ZSNCBjb21wYXRpYmlsaXR5AABHZW5lcmF0ZSByZWxvY2F0aW9ucyBpbiBmaW5hbCBvdXRwdXQAAAAASnVzdCBsaW5rIHN5bWJvbHMgKGlmIGRpcmVjdG9yeSwgc2FtZSBhcyAtLXJwYXRoKQAAAAAAAABTdHJpcCBzeW1ib2xzIGluIGRpc2NhcmRlZCBzZWN0aW9ucwAAAAAARG8gbm90IHN0cmlwIHN5bWJvbHMgaW4gZGlzY2FyZGVkIHNlY3Rpb25zAAAAAAAAU3RhcnQgd2l0aCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIFNZTUJPTAAAAAAAAAAAUmVxdWlyZSBTWU1CT0wgYmUgZGVmaW5lZCBpbiB0aGUgZmluYWwgb3V0cHV0AAAARG9uJ3QgbWVyZ2UgaW5wdXQgW1NFQ1RJT04gfCBvcnBoYW5dIHNlY3Rpb25zAAAAQnVpbGQgZ2xvYmFsIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgdGFibGVzAAAAAAAAUHJpbnQgdmVyc2lvbiBhbmQgZW11bGF0aW9uIGluZm9ybWF0aW9uAERpc2NhcmQgdGVtcG9yYXJ5IGxvY2FsIHN5bWJvbHMgKGRlZmF1bHQpAAAAAAAAAERvbid0IGRpc2NhcmQgYW55IGxvY2FsIHN5bWJvbHMARGVmYXVsdCBzZWFyY2ggcGF0aCBmb3IgU29sYXJpcyBjb21wYXRpYmlsaXR5AAAAQWNjZXB0IGlucHV0IGZpbGVzIHdob3NlIGFyY2hpdGVjdHVyZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZAAAAAAAAFJlamVjdCBpbnB1dCBmaWxlcyB3aG9zZSBhcmNoaXRlY3R1cmUgaXMgdW5rbm93bgAAAAAAAAAAT25seSBzZXQgRFRfTkVFREVEIGZvciBmb2xsb3dpbmcgZHluYW1pYyBsaWJzIGlmIHVzZWQAAABBbHdheXMgc2V0IERUX05FRURFRCBmb3IgZHluYW1pYyBsaWJyYXJpZXMgbWVudGlvbmVkIG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbW1hbmQgbGluZQAAAAAAAAAASWdub3JlZCBmb3IgU3VuT1MgY29tcGF0aWJpbGl0eQBEbyBub3QgbGluayBhZ2FpbnN0IHNoYXJlZCBsaWJyYXJpZXMAAAAAQmluZCBnbG9iYWwgcmVmZXJlbmNlcyBsb2NhbGx5AABCaW5kIGdsb2JhbCBmdW5jdGlvbiByZWZlcmVuY2VzIGxvY2FsbHkAQ2hlY2sgc2VjdGlvbiBhZGRyZXNzZXMgZm9yIG92ZXJsYXBzIChkZWZhdWx0KQAARG8gbm90IGNoZWNrIHNlY3Rpb24gYWRkcmVzc2VzIGZvciBvdmVybGFwcwAAAAAAQ29weSBEVF9ORUVERUQgbGlua3MgbWVudGlvbmVkIGluc2lkZSBEU09zIHRoYXQgZm9sbG93AABEbyBub3QgY29weSBEVF9ORUVERUQgbGlua3MgbWVudGlvbmVkIGluc2lkZSBEU09zIHRoYXQgZm9sbG93AAAARGVtYW5nbGUgc3ltYm9sIG5hbWVzIFt1c2luZyBTVFlMRV0AAAAAAERvIG5vdCB0cmVhdCB3YXJuaW5ncyBhcyBlcnJvcnMgKGRlZmF1bHQpAAAAAAAAAEZvcmNlIGdlbmVyYXRpb24gb2YgZmlsZSB3aXRoIC5leGUgc3VmZml4AAAAAAAAAFJlbW92ZSB1bnVzZWQgc2VjdGlvbnMgKG9uIHNvbWUgdGFyZ2V0cykAAAAAAAAAAERvbid0IHJlbW92ZSB1bnVzZWQgc2VjdGlvbnMgKGRlZmF1bHQpAABMaXN0IHJlbW92ZWQgdW51c2VkIHNlY3Rpb25zIG9uIHN0ZGVycgAARG8gbm90IGxpc3QgcmVtb3ZlZCB1bnVzZWQgc2VjdGlvbnMAAAAAAFNldCBkZWZhdWx0IGhhc2ggdGFibGUgc2l6ZSBjbG9zZSB0byA8TlVNQkVSPgAAAFVzZSBsZXNzIG1lbW9yeSBhbmQgbW9yZSBkaXNrIEkvTwAAAAAAAABEbyBub3QgYWxsb3cgdW5yZXNvbHZlZCByZWZlcmVuY2VzIGluIG9iamVjdCBmaWxlcwAAAAAAAEFsbG93IHVucmVzb2x2ZWQgcmVmZXJlbmNlcyBpbiBzaGFyZWQgbGlicmFyaWVzAERvIG5vdCBhbGxvdyB1bnJlc29sdmVkIHJlZmVyZW5jZXMgaW4gc2hhcmVkIGxpYnMAAAAAAAAAQ3JlYXRlIGRlZmF1bHQgc3ltYm9sIHZlcnNpb24gZm9yIGltcG9ydGVkIHN5bWJvbHMAAAAAAABEb24ndCB3YXJuIGFib3V0IG1pc21hdGNoZWQgaW5wdXQgZmlsZXMARG9uJ3Qgd2FybiBvbiBmaW5kaW5nIGFuIGluY29tcGF0aWJsZSBsaWJyYXJ5AAAAQ3JlYXRlIGFuIG91dHB1dCBmaWxlIGV2ZW4gaWYgZXJyb3JzIG9jY3VyAAAAAAAAT25seSB1c2UgbGlicmFyeSBkaXJlY3RvcmllcyBzcGVjaWZpZWQgb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29tbWFuZCBsaW5lAAAAAAAASWdub3JlZCBmb3IgTGludXggY29tcGF0aWJpbGl0eQBSZWR1Y2UgbWVtb3J5IG92ZXJoZWFkcywgcG9zc2libHkgdGFraW5nIG11Y2ggbG9uZ2VyAAAAAFJlZHVjZSBjb2RlIHNpemUgYnkgdXNpbmcgdGFyZ2V0IHNwZWNpZmljIG9wdGltaXphdGlvbnMARG8gbm90IHVzZSByZWxheGF0aW9uIHRlY2huaXF1ZXMgdG8gcmVkdWNlIGNvZGUgc2l6ZQAAAABLZWVwIG9ubHkgc3ltYm9scyBsaXN0ZWQgaW4gRklMRQAAAAAAAAAAU2V0IHJ1bnRpbWUgc2hhcmVkIGxpYnJhcnkgc2VhcmNoIHBhdGgAAFNldCBsaW5rIHRpbWUgc2hhcmVkIGxpYnJhcnkgc2VhcmNoIHBhdGgAAAAAAAAAAENyZWF0ZSBhIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUAAAAAAAAAAFNvcnQgY29tbW9uIHN5bWJvbHMgYnkgYWxpZ25tZW50IFtpbiBzcGVjaWZpZWQgb3JkZXJdAAAAU29ydCBzZWN0aW9ucyBieSBuYW1lIG9yIG1heGltdW0gYWxpZ25tZW50AAAAAAAASG93IG1hbnkgdGFncyB0byByZXNlcnZlIGluIC5keW5hbWljIHNlY3Rpb24AAAAAU3BsaXQgb3V0cHV0IHNlY3Rpb25zIGV2ZXJ5IFNJWkUgb2N0ZXRzAFNwbGl0IG91dHB1dCBzZWN0aW9ucyBldmVyeSBDT1VOVCByZWxvY3MAAAAAAAAAAERpc3BsYXkgdGFyZ2V0IHNwZWNpZmljIG9wdGlvbnMAVXNlIHNhbWUgZm9ybWF0IGFzIG5hdGl2ZSBsaW5rZXIAAAAAAAAAAEhvdyB0byBoYW5kbGUgdW5yZXNvbHZlZCBzeW1ib2xzLiAgPG1ldGhvZD4gaXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlLWFsbCwgcmVwb3J0LWFsbCwgaWdub3JlLWluLW9iamVjdC1maWxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUtaW4tc2hhcmVkLWxpYnMAAABPdXRwdXQgbG90cyBvZiBpbmZvcm1hdGlvbiBkdXJpbmcgbGluawAAUmVhZCB2ZXJzaW9uIGluZm9ybWF0aW9uIHNjcmlwdABUYWtlIGV4cG9ydCBzeW1ib2xzIGxpc3QgZnJvbSAuZXhwb3J0cywgdXNpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTWU1CT0wgYXMgdGhlIHZlcnNpb24uAAAAAEFkZCBkYXRhIHN5bWJvbHMgdG8gZHluYW1pYyBsaXN0AAAAAAAAAABVc2UgQysrIG9wZXJhdG9yIG5ldy9kZWxldGUgZHluYW1pYyBsaXN0AAAAAAAAAABXYXJuIGFib3V0IGR1cGxpY2F0ZSBjb21tb24gc3ltYm9scwAAAAAAV2FybiBpZiBnbG9iYWwgY29uc3RydWN0b3JzL2Rlc3RydWN0b3JzIGFyZSBzZWVuAAAAAAAAAABXYXJuIGlmIHRoZSBtdWx0aXBsZSBHUCB2YWx1ZXMgYXJlIHVzZWQAV2FybiBvbmx5IG9uY2UgcGVyIHVuZGVmaW5lZCBzeW1ib2wAAAAAAFdhcm4gaWYgc3RhcnQgb2Ygc2VjdGlvbiBjaGFuZ2VzIGR1ZSB0byBhbGlnbm1lbnQAAAAAAAAAV2FybiBpZiBzaGFyZWQgb2JqZWN0IGhhcyBEVF9URVhUUkVMAAAAAFdhcm4gaWYgYW4gb2JqZWN0IGhhcyBhbHRlcm5hdGUgRUxGIG1hY2hpbmUgY29kZQAAAAAAAAAAUmVwb3J0IHVucmVzb2x2ZWQgc3ltYm9scyBhcyB3YXJuaW5ncwAAAFJlcG9ydCB1bnJlc29sdmVkIHN5bWJvbHMgYXMgZXJyb3JzAAAAAABJbmNsdWRlIGFsbCBvYmplY3RzIGZyb20gZm9sbG93aW5nIGFyY2hpdmVzAAAAAABVc2Ugd3JhcHBlciBmdW5jdGlvbnMgZm9yIFNZTUJPTAAAAAAAAAAAVW5yZXNvbHZlZCBTWU1CT0wgd2lsbCBub3QgY2F1c2UgYW4gZXJyb3Igb3Igd2FybmluZwAAAABQdXNoIHN0YXRlIG9mIGZsYWdzIGdvdmVybmluZyBpbnB1dCBmaWxlIGhhbmRsaW5nAAAAAAAAAFBvcCBzdGF0ZSBvZiBmbGFncyBnb3Zlcm5pbmcgaW5wdXQgZmlsZSBoYW5kbGluZwAAAAAAAAAAQ29udHJvbCBob3cgb3JwaGFuIHNlY3Rpb25zIGFyZSBoYW5kbGVkLgAAAAAAAAAAd2Fybi1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzAABXYXJuIGZvciAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcwAAAABuby13YXJuLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMAAAAAAAAARG8gbm90IHdhcm4gZm9yIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzAAAAAABlcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzAEdpdmUgYW4gZXJyb3IgZm9yIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzAC1waWUALUcALS1zaGFyZWQALS1saWJyYXJ5PSVzACVQOiAlczogbWlzc2luZyBhcmd1bWVudAoAZGVmYXVsdABub2RlZmluaXRpb25zAG5vc3ltYm9saWMAcHVyZS10ZXh0AC0tZGVmc3ltACVQJUY6IGludmFsaWQgbnVtYmVyIGAlcycKAFVzYWdlOiAlcyBbb3B0aW9uc10gZmlsZS4uLgoAT3B0aW9uczoKACAlcwAgIEBGSUxFAFJlYWQgb3B0aW9ucyBmcm9tIEZJTEUKACVzOiBzdXBwb3J0ZWQgdGFyZ2V0czoAJXM6IHN1cHBvcnRlZCBlbXVsYXRpb25zOiAARUxGIGVtdWxhdGlvbnM6CgBSZXBvcnQgYnVncyB0byAlcwoAJXMtJWMAJXMtJXMlcwBpZ25vcmUtYWxsAHJlcG9ydC1hbGwAaWdub3JlLWluLW9iamVjdC1maWxlcwBpZ25vcmUtaW4tc2hhcmVkLWxpYnMAJVAlRjogYmFkIC1wbHVnaW4tb3B0IG9wdGlvbgoAJXMlYyVzACVQJUY6IC1zaGFyZWQgbm90IHN1cHBvcnRlZAoAJVAlRjogLXBpZSBub3Qgc3VwcG9ydGVkCgBkZXNjZW5kaW5nAGFzY2VuZGluZwAuYnNzAC5kYXRhAC50ZXh0AC50ZXh0LXNlZ21lbnQALnJvZGF0YS1zZWdtZW50AC5sZGF0YS1zZWdtZW50AFAsAHBsYWNlAHdhcm4AZGlzY2FyZAAlUDogdW5yZWNvZ25pemVkIG9wdGlvbiAnJXMnCgBLRVlXT1JEAFNldCBhcmNoaXRlY3R1cmUAbXJpLXNjcmlwdABSZWFkIE1SSSBmb3JtYXQgbGlua2VyIHNjcmlwdABkYwBkcABTZXQgc3RhcnQgYWRkcmVzcwBFeHBvcnQgYWxsIGR5bmFtaWMgc3ltYm9scwBuby1leHBvcnQtZHluYW1pYwBFQgBMaW5rIGJpZy1lbmRpYW4gb2JqZWN0cwBMaW5rIGxpdHRsZS1lbmRpYW4gb2JqZWN0cwBhdXhpbGlhcnkAZmlsdGVyAElnbm9yZWQAZ3BzaXplAHNvbmFtZQBGSUxFTkFNRQBQUk9HUkFNAG5vLWR5bmFtaWMtbGlua2VyAFNlYXJjaCBmb3IgbGlicmFyeSBMSUJOQU1FAGxpYnJhcnktcGF0aABESVJFQ1RPUlkAc3lzcm9vdD08RElSRUNUT1JZPgBTZXQgZW11bGF0aW9uAHByaW50LW1hcABubWFnaWMARG8gbm90IHBhZ2UgYWxpZ24gZGF0YQBuby1vbWFnaWMAU2V0IG91dHB1dCBmaWxlIG5hbWUAT3B0aW1pemUgb3V0cHV0IGZpbGUAUExVR0lOAExvYWQgbmFtZWQgcGx1Z2luAHBsdWdpbi1vcHQAQVJHAGZsdG8AZmx0by1wYXJ0aXRpb249AGZ1c2UtbGQ9AG5vLW1hcC13aG9sZS1maWxlcwBReQBlbWl0LXJlbG9jcwByZWxvY2F0YWJsZQBHZW5lcmF0ZSByZWxvY2F0YWJsZSBvdXRwdXQAanVzdC1zeW1ib2xzAHN0cmlwLWFsbABTdHJpcCBhbGwgc3ltYm9scwBzdHJpcC1kZWJ1ZwBTdHJpcCBkZWJ1Z2dpbmcgc3ltYm9scwBuby1zdHJpcC1kaXNjYXJkZWQAdHJhY2UAVHJhY2UgZmlsZSBvcGVucwBSZWFkIGxpbmtlciBzY3JpcHQAZGVmYXVsdC1zY3JpcHQAUmVhZCBkZWZhdWx0IGxpbmtlciBzY3JpcHQAZFQAcmVxdWlyZS1kZWZpbmVkAHVuaXF1ZQBbPVNFQ1RJT05dAFVyAFByaW50IHZlcnNpb24gaW5mb3JtYXRpb24AZGlzY2FyZC1hbGwARGlzY2FyZCBhbGwgbG9jYWwgc3ltYm9scwBkaXNjYXJkLWxvY2FscwBkaXNjYXJkLW5vbmUAdHJhY2Utc3ltYm9sAFRyYWNlIG1lbnRpb25zIG9mIFNZTUJPTABzdGFydC1ncm91cABTdGFydCBhIGdyb3VwAGVuZC1ncm91cABFbmQgYSBncm91cABuby1hY2NlcHQtdW5rbm93bi1pbnB1dC1hcmNoAG5vLWFkZC1uZWVkZWQAbm8tYXMtbmVlZGVkAGFzc2VydABCZHluYW1pYwBMaW5rIGFnYWluc3Qgc2hhcmVkIGxpYnJhcmllcwBjYWxsX3NoYXJlZABCc3RhdGljAGRuAG5vbl9zaGFyZWQAQnN5bWJvbGljAEJzeW1ib2xpYy1mdW5jdGlvbnMAbm8tY2hlY2stc2VjdGlvbnMAbm8tY29weS1kdC1uZWVkZWQtZW50cmllcwBjcmVmAE91dHB1dCBjcm9zcyByZWZlcmVuY2UgdGFibGUAU1lNQk9MPUVYUFJFU1NJT04ARGVmaW5lIGEgc3ltYm9sAFs9U1RZTEVdAGVtYmVkZGVkLXJlbG9jcwBHZW5lcmF0ZSBlbWJlZGRlZCByZWxvY3MAVHJlYXQgd2FybmluZ3MgYXMgZXJyb3JzAG5vLWZhdGFsLXdhcm5pbmdzAENhbGwgU1lNQk9MIGF0IHVubG9hZC10aW1lAGZvcmNlLWV4ZS1zdWZmaXgAbm8tZ2Mtc2VjdGlvbnMAbm8tcHJpbnQtZ2Mtc2VjdGlvbnMAaGFzaC1zaXplPTxOVU1CRVI+AFByaW50IG9wdGlvbiBoZWxwAENhbGwgU1lNQk9MIGF0IGxvYWQtdGltZQBNYXAAV3JpdGUgYSBtYXAgZmlsZQBuby1kZWZpbmUtY29tbW9uAERvIG5vdCBkZWZpbmUgQ29tbW9uIHN0b3JhZ2UAbm8tZGVtYW5nbGUARG8gbm90IGRlbWFuZ2xlIHN5bWJvbCBuYW1lcwBuby1rZWVwLW1lbW9yeQBuby11bmRlZmluZWQAbm8tYWxsb3ctc2hsaWItdW5kZWZpbmVkAGFsbG93LW11bHRpcGxlLWRlZmluaXRpb24AQWxsb3cgbXVsdGlwbGUgZGVmaW5pdGlvbnMAbm8tdW5kZWZpbmVkLXZlcnNpb24ARGlzYWxsb3cgdW5kZWZpbmVkIHZlcnNpb24AZGVmYXVsdC1zeW12ZXIAQ3JlYXRlIGRlZmF1bHQgc3ltYm9sIHZlcnNpb24AZGVmYXVsdC1pbXBvcnRlZC1zeW12ZXIAbm8td2Fybi1taXNtYXRjaABuby13YXJuLXNlYXJjaC1taXNtYXRjaABuby13aG9sZS1hcmNoaXZlAFR1cm4gb2ZmIC0td2hvbGUtYXJjaGl2ZQBub2luaGliaXQtZXhlYwBub2luaGliaXRfZXhlYwBub3N0ZGxpYgBvZm9ybWF0AFNwZWNpZnkgdGFyZ2V0IG9mIG91dHB1dCBmaWxlAHByaW50LW91dHB1dC1mb3JtYXQAUHJpbnQgZGVmYXVsdCBvdXRwdXQgZm9ybWF0AHByaW50LXN5c3Jvb3QAUHJpbnQgY3VycmVudCBzeXNyb290AHFtYWdpYwByZWR1Y2UtbWVtb3J5LW92ZXJoZWFkcwBuby1yZWxheAByZXRhaW4tc3ltYm9scy1maWxlAHJwYXRoAHJwYXRoLWxpbmsAQ3JlYXRlIGEgc2hhcmVkIGxpYnJhcnkAQnNoYXJlYWJsZQBwaWMtZXhlY3V0YWJsZQBzb3J0LWNvbW1vbgBbPWFzY2VuZGluZ3xkZXNjZW5kaW5nXQBzb3J0X2NvbW1vbgBzb3J0LXNlY3Rpb24AbmFtZXxhbGlnbm1lbnQAc3BhcmUtZHluYW1pYy10YWdzAENPVU5UAHNwbGl0LWJ5LWZpbGUAWz1TSVpFXQBzcGxpdC1ieS1yZWxvYwBbPUNPVU5UXQBzdGF0cwBQcmludCBtZW1vcnkgdXNhZ2Ugc3RhdGlzdGljcwB0YXJnZXQtaGVscAB0YXNrLWxpbmsARG8gdGFzayBsZXZlbCBsaW5raW5nAHRyYWRpdGlvbmFsLWZvcm1hdABzZWN0aW9uLXN0YXJ0AFNFQ1RJT049QUREUkVTUwBTZXQgYWRkcmVzcyBvZiBuYW1lZCBzZWN0aW9uAFRic3MAU2V0IGFkZHJlc3Mgb2YgLmJzcyBzZWN0aW9uAFRkYXRhAFNldCBhZGRyZXNzIG9mIC5kYXRhIHNlY3Rpb24AVHRleHQAU2V0IGFkZHJlc3Mgb2YgLnRleHQgc2VjdGlvbgBUdGV4dC1zZWdtZW50AFNldCBhZGRyZXNzIG9mIHRleHQgc2VnbWVudABUcm9kYXRhLXNlZ21lbnQAU2V0IGFkZHJlc3Mgb2Ygcm9kYXRhIHNlZ21lbnQAVGxkYXRhLXNlZ21lbnQAU2V0IGFkZHJlc3Mgb2YgbGRhdGEgc2VnbWVudAB1bnJlc29sdmVkLXN5bWJvbHM9PG1ldGhvZD4AWz1OVU1CRVJdAGRsbC12ZXJib3NlAHZlcnNpb24tc2NyaXB0AHZlcnNpb24tZXhwb3J0cy1zZWN0aW9uAGR5bmFtaWMtbGlzdC1kYXRhAGR5bmFtaWMtbGlz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1ApBAAAAAAAgD0EAAAAAAKAQQQAAAAAAoBBBAAAAAADQEEEAAAAAAMAQQQAAAAAA4BBBAAAAAADAG0EAAAAAANAbQQAAAAAAqBtBAAAAAADwG0EAAAAAAMkbQQAAAAAAyRtBAAAAAAC4G0EAAAAAALgbQQAAAAAAqBtBAAAAAAAgOkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAEDpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAAAA6QQAAAAAAODpBAAAAAAA4OkEAAAAAAAA6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAAPA5QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAADgOUEAAAAAALg5QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAABA6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAAAAOkEAAAAAADg6QQAAAAAAODpBAAAAAAAAOkEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAAODpBAAAAAADwOUEAAAAAADg6QQAAAAAAODpBAAAAAAA4OkEAAAAAADg6QQAAAAAA4DlBAAAAAAC4OUEAAAAAAIBFQQAAAAAAYEVBAAAAAAAwRkEAAAAAAOhFQQAAAAAA6ERBAAAAAABoREEAAAAAADBGQQAAAAAAMEZBAAAAAACQREEAAAAAADBGQQAAAAAAgERBAAAAAABoREEAAAAAADBGQQAAAAAA0ERBAAAAAABoREEAAAAAAFBEQQAAAAAAeEhBAAAAAABYSEEAAAAAAMhIQQAAAAAA4EdBAAAAAACQSEEAAAAAAOBHQQAAAAAA4EdBAAAAAADgR0EAAAAAAOBHQQAAAAAA4EdBAAAAAABISEEAAAAAAOBHQQAAAAAA4EdBAAAAAAAQSEEAAAAAAOBHQQAAAAAAwEdBAAAAAAAAAAAAAAAAAGNvbXBhcmVfc2VjdGlvbgBsYW5nX2RvX2Fzc2lnbm1lbnRzXzEAAAAAAAAAAAAAAGxhbmdfc2l6ZV9zZWN0aW9uc18xAGxvYWRfc3ltYm9scwAAAAAAAAAAAAAAAAAAAHByaW50X2RhdGFfc3RhdGVtZW50AHBvcF9zdGF0X3B0cgBwdXNoX3N0YXRfcHRyAC92YXIvdG1wL3BvcnRhZ2UvY3Jvc3MteDg2XzY0LWNyb3MtbGludXgtZ251L2JpbnV0aWxzLTIuMjcuMC1yMjYvd29yay9iaW51dGlscy0yLjI3LjAvYmludXRpbHMtMi4yNy9sZC9sZGxhbmcuYwAlRiVQOiBpbnZhbGlkIHJlbG9jIHN0YXRlbWVudAoAACVQJUY6IGJmZF9saW5rX2hhc2hfbG9va3VwIGZhaWxlZDogJUUKAAAlWCVQOiBhZGRyZXNzIDB4JXYgb2YgJUIgc2VjdGlvbiBgJXMnIGlzIG5vdCB3aXRoaW4gcmVnaW9uIGAlcycKAAAAAAAAAAAlWCVQOiAlQiBzZWN0aW9uIGAlcycgd2lsbCBub3QgZml0IGluIHJlZ2lvbiBgJXMnCgAAAAAAACVQJUY6IENvdWxkIG5vdCBkZWZpbmUgY29tbW9uIHN5bWJvbCBgJVQnOiAlRQoAAENvbW1vbiBzeW1ib2wgICAgICAgc2l6ZSAgICAgICAgICAgICAgZmlsZQoKAAAAACVQOiVTOiB3YXJuaW5nOiByZWRlY2xhcmF0aW9uIG9mIG1lbW9yeSByZWdpb24gYCVzJwoAAAAAJVA6JVM6IHdhcm5pbmc6IG1lbW9yeSByZWdpb24gYCVzJyBub3QgZGVjbGFyZWQKAAAAAAAAAAAlRiVTOiBub24gY29uc3RhbnQgb3IgZm9yd2FyZCByZWZlcmVuY2UgYWRkcmVzcyBleHByZXNzaW9uIGZvciBzZWN0aW9uICVzCgAAAAAAACVQJVg6IEludGVybmFsIGVycm9yIG9uIENPRkYgc2hhcmVkIGxpYnJhcnkgc2VjdGlvbiAlcwoAJVAlRjogZXJyb3I6IG5vIG1lbW9yeSByZWdpb24gc3BlY2lmaWVkIGZvciBsb2FkYWJsZSBzZWN0aW9uIGAlcycKAAAAAAAAJVA6IHdhcm5pbmc6IG5vIG1lbW9yeSByZWdpb24gc3BlY2lmaWVkIGZvciBsb2FkYWJsZSBzZWN0aW9uIGAlcycKAAAAAAAAJVA6IHdhcm5pbmc6IGNoYW5naW5nIHN0YXJ0IG9mIHNlY3Rpb24gJXMgYnkgJWx1IGJ5dGVzCgAlUDogd2FybmluZzogZG90IG1vdmVkIGJhY2t3YXJkcyBiZWZvcmUgYCVzJwoAAAAlUCVGOiBjYW4ndCByZWxheCBzZWN0aW9uOiAlRQoAACVYJVA6JVM6IHNlY3Rpb24gaGFzIGJvdGggYSBsb2FkIGFkZHJlc3MgYW5kIGEgbG9hZCByZWdpb24KAAAAAAAlRiVQOiVTOiBlcnJvcjogYWxpYXMgZm9yIGRlZmF1bHQgbWVtb3J5IHJlZ2lvbgoAAAAAAAAAACVGJVA6JVM6IGVycm9yOiByZWRlZmluaXRpb24gb2YgbWVtb3J5IHJlZ2lvbiBhbGlhcyBgJXMnCgAAAAAAAAAlRiVQOiVTOiBlcnJvcjogbWVtb3J5IHJlZ2lvbiBgJXMnIGZvciBhbGlhcyBgJXMnIGRvZXMgbm90IGV4aXN0CgAAAAAAAAAlUCVGOiBmYWlsZWQgY3JlYXRpbmcgc2VjdGlvbiBgJXMnOiAlRQoAJVAlRjogY2FuIG5vdCBjcmVhdGUgaGFzaCB0YWJsZTogJUUKAAAAACVQJUY6IElsbGVnYWwgdXNlIG9mIGAlcycgc2VjdGlvbgoAAAAAAAAlUCVGOiBvdXRwdXQgZm9ybWF0ICVzIGNhbm5vdCByZXByZXNlbnQgc2VjdGlvbiBjYWxsZWQgJXM6ICVFCgAACkxpbmtlciBzY3JpcHQgYW5kIG1lbW9yeSBtYXAKCgAlUDogd2FybmluZzogY291bGQgbm90IGZpbmQgYW55IHRhcmdldHMgdGhhdCBtYXRjaCBlbmRpYW5uZXNzIHJlcXVpcmVtZW50CgAAAAAAACVQJUY6IGNhbm5vdCBvcGVuIG91dHB1dCBmaWxlICVzOiAlRQoAAAAlUCVGOiVzOiBjYW4gbm90IG1ha2Ugb2JqZWN0IGZpbGU6ICVFCgAAJVAlRjolczogY2FuIG5vdCBzZXQgYXJjaGl0ZWN0dXJlOiAlRQoAACVQJUY6IGludmFsaWQgY2hhcmFjdGVyICVjICglZCkgaW4gZmxhZ3MKAAAAAAAAACVGJUI6IGZpbGUgbm90IHJlY29nbml6ZWQ6ICVFCgAAJUYlQjogbWVtYmVyICVCIGluIGFyY2hpdmUgaXMgbm90IGFuIG9iamVjdAoAAAAAJUYlQjogZXJyb3IgYWRkaW5nIHN5bWJvbHM6ICVFCgAlUDogd2FybmluZzogJXMgY29udGFpbnMgb3V0cHV0IHNlY3Rpb25zOyBkaWQgeW91IGZvcmdldCAtVD8KAAAAJUYlUDolUzogZXJyb3I6IGFsaWduIHdpdGggaW5wdXQgYW5kIGV4cGxpY2l0IGFsaWduIHNwZWNpZmllZAoAACVYJVA6JVM6IFBIRFJTIGFuZCBGSUxFSERSIGFyZSBub3Qgc3VwcG9ydGVkIHdoZW4gcHJpb3IgUFRfTE9BRCBoZWFkZXJzIGxhY2sgdGhlbQoAAAAAAAAlWCVQOiB1bmtub3duIGxhbmd1YWdlIGAlcycgaW4gdmVyc2lvbiBpbmZvcm1hdGlvbgoAAAAAACVYJVA6IGFub255bW91cyB2ZXJzaW9uIHRhZyBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB2ZXJzaW9uIHRhZ3MKACVYJVA6IGR1cGxpY2F0ZSB2ZXJzaW9uIHRhZyBgJXMnCgAAAAAAAAAlWCVQOiBkdXBsaWNhdGUgZXhwcmVzc2lvbiBgJXMnIGluIHZlcnNpb24gaW5mb3JtYXRpb24KACVQJUY6IEZhaWxlZCB0byBjcmVhdGUgaGFzaCB0YWJsZQoAAAAAAAAlUCVGOiAlczogcGx1Z2luIHJlcG9ydGVkIGVycm9yIGFmdGVyIGFsbCBzeW1ib2xzIHJlYWQKAApBcy1uZWVkZWQgbGlicmFyeSBpbmNsdWRlZCB0byBzYXRpc2Z5IHJlZmVyZW5jZSBieSBmaWxlIChzeW1ib2wpCgoAAAAAACVQJUY6IFJlbG9jYXRhYmxlIGxpbmtpbmcgd2l0aCByZWxvY2F0aW9ucyBmcm9tIGZvcm1hdCAlcyAoJUIpIHRvIGZvcm1hdCAlcyAoJUIpIGlzIG5vdCBzdXBwb3J0ZWQKAAAAAAAAJVAlWDogJXMgYXJjaGl0ZWN0dXJlIG9mIGlucHV0IGZpbGUgYCVCJyBpcyBpbmNvbXBhdGlibGUgd2l0aCAlcyBvdXRwdXQKAAAAAAAAAAAlUCVYOiBmYWlsZWQgdG8gbWVyZ2UgdGFyZ2V0IHNwZWNpZmljIGRhdGEgb2YgZmlsZSAlQgoAACVYJVA6IHVuYWJsZSB0byByZWFkIC5leHBvcnRzIHNlY3Rpb24gY29udGVudHMKACVGJVA6IGludmFsaWQgb3JpZ2luIGZvciBtZW1vcnkgcmVnaW9uICVzCgAAAAAAACVGJVA6IGludmFsaWQgbGVuZ3RoIGZvciBtZW1vcnkgcmVnaW9uICVzCgAAAAAAACVGJVA6ICVzIG5vdCBmb3VuZCBmb3IgaW5zZXJ0CgAAJVglUDogZXJyb3I6IHVucGxhY2VkIG9ycGhhbiBzZWN0aW9uIGAlQScgZnJvbSBgJUInLgoAAAAlUDogd2FybmluZzogb3JwaGFuIHNlY3Rpb24gYCVBJyBmcm9tIGAlQicgYmVpbmcgcGxhY2VkIGluIHNlY3Rpb24gYCVzJy4KAAAAAAAAACVGJVA6IGJmZF9yZWNvcmRfcGhkciBmYWlsZWQ6ICVFCgAAAAAAAAAlWCVQOiBzZWN0aW9uIGAlcycgYXNzaWduZWQgdG8gbm9uLWV4aXN0ZW50IHBoZHIgYCVzJwoAACVGJVA6IG5vIHNlY3Rpb25zIGFzc2lnbmVkIHRvIHBoZHJzCgAAAAAlWCVQOiBzZWN0aW9uICVzIExNQSBbJVYsJVZdIG92ZXJsYXBzIHNlY3Rpb24gJXMgTE1BIFslViwlVl0KAAAAJVglUDogc2VjdGlvbiAlcyBWTUEgWyVWLCVWXSBvdmVybGFwcyBzZWN0aW9uICVzIFZNQSBbJVYsJVZdCgAAACVYJVA6IHJlZ2lvbiBgJXMnIG92ZXJmbG93ZWQgYnkgJWxkIGJ5dGVzCgAAAAAAACVQJVg6IHJlcXVpcmVkIHN5bWJvbCBgJXMnIG5vdCBkZWZpbmVkCgAlUCVGOiBnYy1zZWN0aW9ucyByZXF1aXJlcyBlaXRoZXIgYW4gZW50cnkgb3IgYW4gdW5kZWZpbmVkIHN5bWJvbAoAAAAAAAAlUCVGOiVzOiBjYW4ndCBzZXQgc3RhcnQgYWRkcmVzcwoAAAAAAAAAJVAlRjogY2FuJ3Qgc2V0IHN0YXJ0IGFkZHJlc3MKAAAlUDogd2FybmluZzogY2Fubm90IGZpbmQgZW50cnkgc3ltYm9sICVzOyBkZWZhdWx0aW5nIHRvICVWCgAAAAAAJVA6IHdhcm5pbmc6IGNhbm5vdCBmaW5kIGVudHJ5IHN5bWJvbCAlczsgbm90IHNldHRpbmcgc3RhcnQgYWRkcmVzcwoAAAAAJVglUDogdW5hYmxlIHRvIGZpbmQgdmVyc2lvbiBkZXBlbmRlbmN5IGAlcycKAAAATWVtb3J5IHJlZ2lvbiAgICAgICAgIFVzZWQgU2l6ZSAgUmVnaW9uIFNpemUgICUlYWdlIFVzZWQKAC5pbml0AC5maW5pACVGJVA6IGludmFsaWQgZGF0YSBzdGF0ZW1lbnQKADB4JVYgICAAICAgICAgICAgICAgICVUCgAweCVWICVXICVCCgAlVyAoc2l6ZSBiZWZvcmUgcmVsYXhpbmcpCgBGYWlsIHdpdGggJWQKACBTT1JUIChDT05TVFJVQ1RPUlMpCgAgQ09OU1RSVUNUT1JTCgBTT1JUKABFWENMVURFX0ZJTEUoJXMAKSAAQWRkcmVzcyBvZiBzZWN0aW9uICVzIHNldCB0byAAIENSRUFURV9PQkpFQ1RfU1lNQk9MUwoAIEZJTEwgbWFzayAweAAlMDJ4ADB4JVYgJVcgJXMgMHgldgAweCVWICVXIFJFTE9DICVzIAAlcysAICpmaWxsKgAweCVWICVXIAAKJXMAMHglViAlVwAgbG9hZCBhZGRyZXNzIDB4JVYAWzB4JVZdAFt1bnJlc29sdmVkXQBbIXByb3ZpZGVdACp1bmRlZiogICAAICAgICAgICAgICAgICAgIABUQVJHRVQoJXMpCgBPVVRQVVQoJXMATE9BRCAlcwoAU1RBUlQgR1JPVVAKAEVORCBHUk9VUAoASU5TRVJUICVzICVzCgBlbGYzMi1iaWcAZWxmNjQtYmlnAGVsZjMyLWxpdHRsZQBlbGY2NC1saXR0bGUACkFsbG9jYXRpbmcgY29tbW9uIHN5bWJvbHMKACVseAAlMDE2bHgAPypbAC5pbml0X2FycmF5LgAuZmluaV9hcnJheS4ALmN0b3JzLgAuZHRvcnMuAC9ESVNDQVJELwAtbABsb2FkIGJhc2UAKkFCUyoACk1lbW9yeSBDb25maWd1cmF0aW9uCgoAQXR0cmlidXRlcwBMZW5ndGgAT3JpZ2luAE5hbWUAJS0xNnMgJS0xOHMgJS0xOHMgJXMKAApEaXNjYXJkZWQgaW5wdXQgc2VjdGlvbnMKCgAlLTE2cyAAMHglcyAAICEALDoAJVAlRjogdGFyZ2V0ICVzIG5vdCBmb3VuZAoAJUI6IGZpbGUgbm90IHJlY29nbml6ZWQ6ICVFCgAlQjogbWF0Y2hpbmcgZm9ybWF0czoAJUYKACVJCgBBTEwAQ09NTU9OAHN1YnNlY3Rpb24gYWxpZ25tZW50ACo/WwAlUCVGOiBtdWx0aXBsZSBTVEFSVFVQIGZpbGVzCgBfX3N0b3BfJXMAX19zdGFydF8lcwBwcm9ncmFtIGhlYWRlciB0eXBlAF9fbG9hZF9zdGFydF8lcwBfX2xvYWRfc3RvcF8lcwBDKysASmF2YQAlQiAAKCVUKQoALmV4cG9ydHMAcGhkciBmbGFncwBwaGRyIGxvYWQgYWRkcmVzcwAuc3RhcnRvZi4lcwAuc2l6ZW9mLiVzAHR5cGVpbmZvIG5hbWUgZm9yKgB0eXBlaW5mbyBmb3IqAG9wZXJhdG9yIG5ldyoAb3BlcmF0b3IgZGVsZXRlKgBTQU5FX0VYUFIAJVglUDogdW5rbm93biBmZWF0dXJlIGAlcycKACUxNnM6IAAlMTBsdSBHQgAlMTBsdSBNQgAlMTBsdSBLQgAgJTEwbHUgQgAgICAgJTYuMmYlJQoAAAAAAAAAWUBzcmVjAElFRUUAaWVlZQBDT0ZGAGNvZmYtbTY4awAlUCVGOiB1bmtub3duIGZvcm1hdCB0eXBlICVzCgBHTE9CQUxfAApTZXQgICAgICAgICAgICAgICAgIFN5bWJvbAoKACVHCgAAACVQJVg6IERpZmZlcmVudCByZWxvY3MgdXNlZCBpbiBzZXQgJXMKAAAlUCVYOiBEaWZmZXJlbnQgb2JqZWN0IGZpbGUgZm9ybWF0cyBjb21wb3Npbmcgc2V0ICVzCgAAACVQJVg6ICVzIGRvZXMgbm90IHN1cHBvcnQgcmVsb2MgJXMgZm9yIHNldCAlcwoAACVQJVg6IFVuc3VwcG9ydGVkIHNpemUgJWQgZm9yIHNldCAlcwoAAAAlWCVIOiByZWxvYyByZWZlcnMgdG8gc3ltYm9sIGAlVCcgd2hpY2ggaXMgbm90IGJlaW5nIG91dHB1dAoAAAAAJVglSDogZGFuZ2Vyb3VzIHJlbG9jYXRpb246ICVzCgAlSTogbm8gbmV3IElSIHN5bWJvbHMgdG8gY2xhaW1pCgAAAAAAAAAAQXJjaGl2ZSBtZW1iZXIgaW5jbHVkZWQgdG8gc2F0aXNmeSByZWZlcmVuY2UgYnkgZmlsZSAoc3ltYm9sKQoKACBhZGRpdGlvbmFsIHJlbG9jYXRpb24gb3ZlcmZsb3dzIG9taXR0ZWQgZnJvbSB0aGUgb3V0cHV0CgAAAAAAAAAgcmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiAlcyBhZ2FpbnN0IHVuZGVmaW5lZCBzeW1ib2wgYCVUJwAAIHJlbG9jYXRpb24gdHJ1bmNhdGVkIHRvIGZpdDogJXMgYWdhaW5zdCBzeW1ib2wgYCVUJyBkZWZpbmVkIGluICVBIHNlY3Rpb24gaW4gJUIAAAAAAAAAAC92YXIvdG1wL3BvcnRhZ2UvY3Jvc3MteDg2XzY0LWNyb3MtbGludXgtZ251L2JpbnV0aWxzLTIuMjcuMC1yMjYvd29yay9iaW51dGlscy0yLjI3LjAvYmludXRpbHMtMi4yNy9sZC9sZG1haW4uYwAgcmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiAlcyBhZ2FpbnN0IGAlVCcAAAAlWCVDOiBtdWx0aXBsZSBkZWZpbml0aW9uIG9mIGAlVCcKAAAAAAAAJVA6IERpc2FibGluZyByZWxheGF0aW9uOiBpdCB3aWxsIG5vdCB3b3JrIHdpdGggbXVsdGlwbGUgZGVmaW5pdGlvbnMKAAAAJUIlRjogY291bGQgbm90IHJlYWQgcmVsb2NzOiAlRQoAAAAAAAAAACVQOiB3YXJuaW5nOiBnbG9iYWwgY29uc3RydWN0b3IgJXMgdXNlZAoAAAAAAAAAACVQJUY6IEJGRCBiYWNrZW5kIGVycm9yOiBCRkRfUkVMT0NfQ1RPUiB1bnN1cHBvcnRlZAoAAAAAJUI6IHdhcm5pbmc6IGRlZmluaXRpb24gb2YgYCVUJyBvdmVycmlkaW5nIGNvbW1vbgoAAAAAAAAlQjogd2FybmluZzogY29tbW9uIG9mIGAlVCcgb3ZlcnJpZGRlbiBieSBkZWZpbml0aW9uCgAAACVCOiB3YXJuaW5nOiBjb21tb24gb2YgYCVUJyBvdmVycmlkZGVuIGJ5IGxhcmdlciBjb21tb24KAAAAAAAAAAAlQjogd2FybmluZzogbGFyZ2VyIGNvbW1vbiBpcyBoZXJlCgAAAAAAJUI6IHdhcm5pbmc6IGNvbW1vbiBvZiBgJVQnIG92ZXJyaWRpbmcgc21hbGxlciBjb21tb24KAAAlQjogd2FybmluZzogc21hbGxlciBjb21tb24gaXMgaGVyZQoAAAAAJUI6IHdhcm5pbmc6IG11bHRpcGxlIGNvbW1vbiBvZiBgJVQnCgAAACVCOiB3YXJuaW5nOiBwcmV2aW91cyBjb21tb24gaXMgaGVyZQoAAAAlQiVGOiBjb3VsZCBub3QgcmVhZCBzeW1ib2xzOiAlRQoAAAAAAAAAL3Vzci9zaGFyZS9iaW51dGlscy1kYXRhL3g4Nl82NC1jcm9zLWxpbnV4LWdudS8yLjI3LjAvbG9jYWxlAAAAAC91c3IveDg2XzY0LXBjLWxpbnV4LWdudS94ODZfNjQtY3Jvcy1saW51eC1nbnUvYmludXRpbHMtYmluLzIuMjcuMAAAAAAAAC91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2JpbgAAJVglUDogY2FuJ3Qgc2V0IEJGRCBkZWZhdWx0IHRhcmdldCB0byBgJXMnOiAlRQoACj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgAAAAAlUCVGOiBjYW5ub3Qgb3BlbiBtYXAgZmlsZSAlczogJUUKAAAAAAAAJVA6IGxpbmsgZXJyb3JzIGZvdW5kLCBkZWxldGluZyBleGVjdXRhYmxlIGAlcycKAAAAAAAAAAAlUCVGOiB1bmFibGUgdG8gb3BlbiBmb3Igc291cmNlIG9mIGNvcHkgYCVzJwoAAAAlUCVGOiB1bmFibGUgdG8gb3BlbiBmb3IgZGVzdGluYXRpb24gb2YgY29weSBgJXMnCgAAAAAAACVzOiB0b3RhbCB0aW1lIGluIGxpbms6ICVsZC4lMDZsZAoAAAAAAAAlUCVGOiBiZmRfaGFzaF90YWJsZV9pbml0IGZhaWxlZDogJUUKAAAAJVAlRjogYmZkX2hhc2hfbG9va3VwIGZhaWxlZDogJUUKAAAAAAAAACVYJUM6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYCVUJwoAAAAAAAAlQzogd2FybmluZzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgJVQnCgAAAAAAAAAlWCVEOiBtb3JlIHVuZGVmaW5lZCByZWZlcmVuY2VzIHRvIGAlVCcgZm9sbG93CgAlRDogd2FybmluZzogbW9yZSB1bmRlZmluZWQgcmVmZXJlbmNlcyB0byBgJVQnIGZvbGxvdwoAACVYJUI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYCVUJwoAAAAAAAAlQjogd2FybmluZzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgJVQnCgAAAAAAAAAlWCVCOiBtb3JlIHVuZGVmaW5lZCByZWZlcmVuY2VzIHRvIGAlVCcgZm9sbG93CgAlQjogd2FybmluZzogbW9yZSB1bmRlZmluZWQgcmVmZXJlbmNlcyB0byBgJVQnIGZvbGxvdwoAACVYJVA6IGVycm9yOiBkdXBsaWNhdGUgcmV0YWluLXN5bWJvbHMtZmlsZQoAAAAAACVQJUY6IGJmZF9oYXNoX2xvb2t1cCBmb3IgaW5zZXJ0aW9uIGZhaWxlZDogJUUKACVQOiBgLXJldGFpbi1zeW1ib2xzLWZpbGUnIG92ZXJyaWRlcyBgLXMnIGFuZCBgLVMnCgAlQjogcmVmZXJlbmNlIHRvICVzCgAlQjogZGVmaW5pdGlvbiBvZiAlcwoAJXMoJXMpAC91c3IveDg2XzY0LWNyb3MtbGludXgtZ251ACVYJUg6ACsldgAlRDogZmlyc3QgZGVmaW5lZCBoZXJlCgAlQzogJXMlcwoAJUI6IHdhcm5pbmc6IGNvbW1vbiBpcyBoZXJlCgAlQjogd2FybmluZzogZGVmaW5lZCBoZXJlCgB1c2luZyBtdWx0aXBsZSBncCB2YWx1ZXMAJVA6ICVzJXMKACVCOiAlcyVzCgBlbGZfeDg2XzY0AC0tc3lzcm9vdD0AQ09MTEVDVF9OT19ERU1BTkdMRQBfaW5pdABfZmluaQBMREVNVUxBVElPTgAtbQAlUCVGOiBtaXNzaW5nIGFyZ3VtZW50IHRvIC1tCgAtbWlwczEALW1pcHMyAC1taXBzMwAtbWlwczQALW1pcHM1AC1taXBzMzIALW1pcHMzMnIyAC1taXBzMzJyNgAtbWlwczY0AC1taXBzNjRyMgAtbWlwczY0cjYALW00ODYAYnVpbHQgaW4gbGlua2VyIHNjcmlwdAB1c2luZyBleHRlcm5hbCBsaW5rZXIgc2NyaXB0OgB1c2luZyBpbnRlcm5hbCBsaW5rZXIgc2NyaXB0OgAlUCVGOiBubyBpbnB1dCBmaWxlcwoAJVA6IG1vZGUgJXMKACVGJUI6IGZpbmFsIGNsb3NlIGZhaWxlZDogJUUKAC5leGUALmRsbAAlUDogRXJyb3Igd3JpdGluZyBmaWxlIGAlcycKACVQOiBFcnJvciBjbG9zaW5nIGZpbGUgYCVzJwoAJXM6IGRhdGEgc2l6ZSAlbGQKACVYJVA6ICVzOiAlRQoAYS5vdXQAAAAAWJ1BAAAAAAAwnUEAAAAAADCdQQAAAAAA0JxBAAAAAADQnEEAAAAAALCbQQAAAAAAbXVsdGlwbGVfZGVmaW5pdGlvbgByZWxvY19vdmVyZmxvdwAAAAAAAC92YXIvdG1wL3BvcnRhZ2UvY3Jvc3MteDg2XzY0LWNyb3MtbGludXgtZ251L2JpbnV0aWxzLTIuMjcuMC1yMjYvd29yay9iaW51dGlscy0yLjI3LjAvYmludXRpbHMtMi4yNy9sZC9sZHdyaXRlLmMAAAAAAAAAACVQJUY6IGJmZF9uZXdfbGlua19vcmRlciBmYWlsZWQKAAAAAAAAAAAlRiVQOiBjYW5ub3QgY3JlYXRlIHNwbGl0IHNlY3Rpb24gbmFtZSBmb3IgJXMKAAAlRiVQOiBjbG9uZSBzZWN0aW9uIGZhaWxlZDogJUUKAC5zdGFiAHN0cgAkR0RCX1NUUklOR1MkACRHREJfU1lNQk9MUyQAJUYlUDogZmluYWwgbGluayBmYWlsZWQ6ICVFCgAAAAAAACSzQQAAAAAAJLNBAAAAAABrtEEAAAAAAFC0QQAAAAAAQLNBAAAAAADgs0EAAAAAAOCzQQAAAAAAsLNBAAAAAACAs0EAAAAAABC0QQAAAAAAYnVpbGRfbGlua19vcmRlcgAAAAAAAAAAJVAlRjogYmZkX2hhc2hfYWxsb2NhdGUgZmFpbGVkIGNyZWF0aW5nIHN5bWJvbCAlcwoAAAAAAAAvdmFyL3RtcC9wb3J0YWdlL2Nyb3NzLXg4Nl82NC1jcm9zLWxpbnV4LWdudS9iaW51dGlscy0yLjI3LjAtcjI2L3dvcmsvYmludXRpbHMtMi4yNy4wL2JpbnV0aWxzLTIuMjcvbGQvbGRleHAuYwAAJVA6IHdhcm5pbmc6IGFkZHJlc3Mgb2YgYCVzJyBpc24ndCBtdWx0aXBsZSBvZiBtYXhpbXVtIHBhZ2Ugc2l6ZQoAAAAAAAAAJUYlUyBjYW4gbm90IFBST1ZJREUgYXNzaWdubWVudCB0byBsb2NhdGlvbiBjb3VudGVyCgAAAAAlRiVTIGludmFsaWQgYXNzaWdubWVudCB0byBsb2NhdGlvbiBjb3VudGVyCgAAAAAlRiVTIGFzc2lnbm1lbnQgdG8gbG9jYXRpb24gY291bnRlciBpbnZhbGlkIG91dHNpZGUgb2YgU0VDVElPTlMKAAAAAAAAAAAlRiVTIGNhbm5vdCBtb3ZlIGxvY2F0aW9uIGNvdW50ZXIgYmFja3dhcmRzIChmcm9tICVWIHRvICVWKQoAAAAAJVAlRjolczogaGFzaCBjcmVhdGlvbiBmYWlsZWQKAAAlUCVGOiBiZmRfaGFzaF9sb29rdXAgZmFpbGVkIGNyZWF0aW5nIHN5bWJvbCAlcwoAAAAAAAAAACVYJVM6IHVucmVzb2x2YWJsZSBzeW1ib2wgYCVzJyByZWZlcmVuY2VkIGluIGV4cHJlc3Npb24KAAAAAAAAAAAlRiVTOiB1bmRlZmluZWQgc3ltYm9sIGAlcycgcmVmZXJlbmNlZCBpbiBleHByZXNzaW9uCgAAACVGJVM6IHVuZGVmaW5lZCBzZWN0aW9uIGAlcycgcmVmZXJlbmNlZCBpbiBleHByZXNzaW9uCgAAJUYlUzogdW5kZWZpbmVkIE1FTU9SWSByZWdpb24gYCVzJyByZWZlcmVuY2VkIGluIGV4cHJlc3Npb24KAAAAACVGJVM6IHVua25vd24gY29uc3RhbnQgYCVzJyByZWZlcmVuY2VkIGluIGV4cHJlc3Npb24KAAAAJUYlUzogbm9uY29uc3RhbnQgZXhwcmVzc2lvbiBmb3IgJXMKADxjb2RlICVkPgAlWCVQOiAlcwoAJUYlUyAlJSBieSB6ZXJvCgAlRiVTIC8gYnkgemVybwoATUFYUEFHRVNJWkUAQ09NTU9OUEFHRVNJWkUATlVMTCBUUkVFCgAlQjoAJXMrMHgldgBQUk9WSURFICglcywgACAoIgAiLCAAQVNTRVJUICgALCAlcykAICglcykAKz0ALT0AKj0ALz0APDw9AD4+PQAmPQB8PQB8fAAmJgA9PQAhPQA8PAA+PgBNQVgATUlOAEFTU0VSVAAAAAAAAABovUEAAAAAAGC+QQAAAAAA2L5BAAAAAACAv0EAAAAAAJC/QQAAAAAAkL9BAAAAAACQv0EAAAAAALDAQQAAAAAA8LxBAAAAAAAgvUEAAAAAAOjcQQAAAAAAYN1BAAAAAADA3UEAAAAAAADeQQAAAAAAeN5BAAAAAABA3kEAAAAAAEDeQQAAAAAAYN5BAAAAAABw3EEAAAAAALDcQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAQAAAAAAAPKbQwAAAAAAAwEAAAAAAAAffkQAAAAAAAUBAAAAAAAAf+tEAAAAAAAGAQAAAAAAAILrRAAAAAAABwEAAAAAAACF60QAAAAAAAgBAAAAAAAAiOtEAAAAAAAJAQAAAAAAAIvrRAAAAAAACgEAAAAAAACP60QAAAAAAAsBAAAAAAAAk+tEAAAAAAAMAQAAAAAAAJbrRAAAAAAADQEAAAAAAACZ60QAAAAAAA4BAAAAAAAAnOtEAAAAAAAPAQAAAAAAAJ/rRAAAAAAAEAEAAAAAAACi60QAAAAAABEBAAAAAAAAjOtEAAAAAAASAQAAAAAAAJDrRAAAAAAAEwEAAAAAAACl60QAAAAAABQBAAAAAAAAqOtEAAAAAABmAQAAAAAAACGXQwAAAAAAFwEAAAAAAADElkMAAAAAABgBAAAAAAAAf5RDAAAAAAAaAQAAAAAAAIuUQwAAAAAAGwEAAAAAAACKlEMAAAAAABwBAAAAAAAAkJRDAAAAAAAdAQAAAAAAAJWUQwAAAAAAHgEAAAAAAACblEMAAAAAAB8BAAAAAAAAoJRDAAAAAAArAQAAAAAAAEGVQwAAAAAAMgEAAAAAAACylUMAAAAAADoBAAAAAAAA8JVDAAAAAAA7AQAAAAAAALPvRAAAAAAAPAEAAAAAAAABlkMAAAAAAD0BAAAAAAAADJZDAAAAAAA+AQAAAAAAABCWQwAAAAAAPwEAAAAAAAAWlkMAAAAAAEEBAAAAAAAAIpZDAAAAAABAAQAAAAAAABuWQwAAAAAAQgEAAAAAAAAulkMAAAAAAEMBAAAAAAAAKpZDAAAAAACBAQAAAAAAAB2YQwAAAAAAXwEAAAAAAADwlkMAAAAAAEQBAAAAAAAAq+tEAAAAAABFAQAAAAAAAK/rRAAAAAAAZQEAAAAAAACz60QAAAAAAG0BAAAAAAAAIX9EAAAAAAAkAQAAAAAAAL+UQwAAAAAAJQEAAAAAAADSlEMAAAAAACYBAAAAAAAA6ZRDAAAAAABNAQAAAAAAAHWWQwAAAAAATwEAAAAAAACBlkMAAAAAADABAAAAAAAAnJVDAAAAAABHTlVUQVJHRVQAJVMgU1lTTElCIGlnbm9yZWQKACVTIEhMTCBpZ25vcmVkCgBTdXBwb3J0ZWQgZW11bGF0aW9uczogACVzOiAKAAAAAAAAACVQOiB1bnJlY29nbmlzZWQgZW11bGF0aW9uIG1vZGU6ICVzCgAAAAAgIG5vIGVtdWxhdGlvbiBzcGVjaWZpYyBvcHRpb25zLgoAR05VIGxkICVzCgAgIFN1cHBvcnRlZCBlbXVsYXRpb25zOgoAICAgJXMKAAAAAChiaW51dGlscy0yLjI3LjAtcjI2LWNjZTY5YzFiMWJmYzQ2ZGU1ZTFjZGQ0OTIzZjg3MjE1YzBlZGI4ODRfY29zX2dnKSAyLjI3LjAuMjAxNzAzMTUAAABDb3B5cmlnaHQgKEMpIDIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCgAAAAAAAFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgbWF5IHJlZGlzdHJpYnV0ZSBpdCB1bmRlciB0aGUgdGVybXMgb2YKdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBvciAoYXQgeW91ciBvcHRpb24pIGEgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGhhcyBhYnNvbHV0ZWx5IG5vIHdhcnJhbnR5LgoAMHglcwBubyBzeW1ib2wAWyVzXQAlcyBnZW5lcmF0ZWQAJXM6JXUAJXMrMHgldiAodHlwZSAlcykAJUI6IEluIGZ1bmN0aW9uIGAlVCc6CgAlczoAJVQAJXUlcwAoJUErMHgldikAJXAAJWxkACVsdQAlJSVjACVGJVA6IGludGVybmFsIGVycm9yICVzICVkCgAlUCVGOiBwbGVhc2UgcmVwb3J0IHRoaXMgYnVnCgAAAAAAAAAlUDogaW50ZXJuYWwgZXJyb3I6IGFib3J0aW5nIGF0ICVzOiVkIGluICVzCgAAAAAlUDogaW50ZXJuYWwgZXJyb3I6IGFib3J0aW5nIGF0ICVzOiVkCgAAxutBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAADg60EAAAAAAHjsQQAAAAAAyuxBAAAAAADK7EEAAAAAADDuQQAAAAAAfe9BAAAAAADK7EEAAAAAAMrsQQAAAAAAke9BAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAAU70EAAAAAADvrQQAAAAAAMO9BAAAAAAAP8EEAAAAAAFrwQQAAAAAAO+tBAAAAAABU7kEAAAAAAIvuQQAAAAAAsPBBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAA760EAAAAAADvrQQAAAAAAx/BBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAA760EAAAAAADvrQQAAAAAAO+tBAAAAAAA760EAAAAAACbrQQAAAAAAO+tBAAAAAAA760EAAAAAADvrQQAAAAAACPFBAAAAAAA760EAAAAAADvrQQAAAAAA6/BBAAAAAAA760EAAAAAAC3xQQAAAAAAV+tBAAAAAAAvbGRzY3JpcHRzAGNhbm5vdCBmaW5kIHNjcmlwdCBmaWxlICVzCgBvcGVuZWQgc2NyaXB0IGZpbGUgJXMKAC91c3IvbG9jYWwvbGliAC91c3IvWDExUjYvbGliAGF0dGVtcHQgdG8gb3BlbiAlcyBmYWlsZWQKAGF0dGVtcHQgdG8gb3BlbiAlcyBzdWNjZWVkZWQKACVQOiBjYW5ub3QgZmluZCAlcyAoJXMpOiAlRQoAJVA6IGNhbm5vdCBmaW5kICVzOiAlRQoALmEAJVA6IGNhbm5vdCBmaW5kICVzIGluc2lkZSAlcwoAJVA6IGNhbm5vdCBmaW5kICVzCgAAJVglUDogZXJyb3I6IGxpYnJhcnkgc2VhcmNoIHBhdGggIiVzIiBpcyB1bnNhZmUgZm9yIGNyb3NzLWNvbXBpbGF0aW9uCgAAJVA6IHdhcm5pbmc6IGxpYnJhcnkgc2VhcmNoIHBhdGggIiVzIiBpcyB1bnNhZmUgZm9yIGNyb3NzLWNvbXBpbGF0aW9uCgAAL3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliAAAlUCVGOiBjYW5ub3Qgb3BlbiBsaW5rZXIgc2NyaXB0IGZpbGUgJXM6ICVFCgAAAAAlRiVQOiBpbnZhbGlkIEJGRCB0YXJnZXQgYCVzJwoAACVQOiBza2lwcGluZyBpbmNvbXBhdGlibGUgJXMgd2hlbiBzZWFyY2hpbmcgZm9yICVzCgAAAAAAJUYlUDogYXR0ZW1wdGVkIHN0YXRpYyBsaW5rIG9mIGR5bmFtaWMgb2JqZWN0IGAlcycKAAAAAAAlUCVGOiBjYW5ub3QgcmVwcmVzZW50IG1hY2hpbmUgYCVzJwoAAAAAL3Zhci90bXAvcG9ydGFnZS9jcm9zcy14ODZfNjQtY3Jvcy1saW51eC1nbnUvYmludXRpbHMtMi4yNy4wLXIyNi93b3JrL2JpbnV0aWxzLTIuMjcuMC9iaW51dGlscy0yLjI3L2xkL2xkY3JlZi5jACVYJUM6IHByb2hpYml0ZWQgY3Jvc3MgcmVmZXJlbmNlIGZyb20gJXMgdG8gYCVUJyBpbiAlcwoAJVA6IHN5bWJvbCBgJVQnIG1pc3NpbmcgZnJvbSBtYWluIGhhc2ggdGFibGUKAAAAJVglUDogYmZkX2hhc2hfdGFibGVfaW5pdCBvZiBjcmVmIHRhYmxlIGZhaWxlZDogJUUKAAAAAAAlWCVQOiBjcmVmX2hhc2hfbG9va3VwIGZhaWxlZDogJUUKACVYJVA6IGNyZWYgYWxsb2MgZmFpbGVkOiAlRQoACkNyb3NzIFJlZmVyZW5jZSBUYWJsZQoKAFN5bWJvbABGaWxlCgBObyBzeW1ib2xzCgAAAAAAAAAlUCVGOiBwbHVnaW5fc3RyZHVwIGZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnk6ICVzCgAAAAAAAC92YXIvdG1wL3BvcnRhZ2UvY3Jvc3MteDg2XzY0LWNyb3MtbGludXgtZ251L2JpbnV0aWxzLTIuMjcuMC1yMjYvd29yay9iaW51dGlscy0yLjI3LjAvYmludXRpbHMtMi4yNy9sZC9wbHVnaW4uYwAlUCVGOiB1bnN1cHBvcnRlZCBpbnB1dCBmaWxlIHNpemU6ICVzICglbGQgYnl0ZXMpCgAAAAAAACVQJUY6IHVua25vd24gRUxGIHN5bWJvbCB2aXNpYmlsaXR5OiAlZCEKAAAAAAAAACVQJUY6ICVzOiBub24tRUxGIHN5bWJvbCBpbiBFTEYgQkZEIQoAAAAlUCVGOiAlczogcGx1Z2luIHN5bWJvbCB0YWJsZSBjb3JydXB0IChzeW0gdHlwZSAlZCkKAAAAACVQOiAlQjogc3ltYm9sIGAlcycgZGVmaW5pdGlvbjogJWQsIHZpc2liaWxpdHk6ICVkLCByZXNvbHV0aW9uOiAlZAoAAAAAAGNvdWxkIG5vdCBjcmVhdGUgZHVtbXkgSVIgYmZkOiAlRiVFCgAAAAAlUCVGOiBwbHVnaW4gZmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgaW5wdXQ6ICVzCgAAACVQJUY6ICVzOiBwbHVnaW4gcmVwb3J0ZWQgZXJyb3IgY2xhaW1pbmcgZmlsZQoAACVQJUY6ICVzOiBlcnJvciBsb2FkaW5nIHBsdWdpbjogJXMKAAAAAAAlUDogJXM6IGVycm9yIGluIHBsdWdpbiBjbGVhbnVwOiAlZCAoaWdub3JlZCkKAEAALmdudS5saW5rb25jZS50LgAlUCVGACVQJVgAJVA6IHdhcm5pbmc6IAA6IGVycm9yOiAAIChzeW1ib2wgZnJvbSBwbHVnaW4pADxubyBwbHVnaW4+AHBhc3MtdGhyb3VnaD0AX29ubG9hZAAlUCVGOiAlczogcGx1Z2luIGVycm9yOiAlZAoAAAAAAAAAAAAAAAAAAAAAAGAeQgAAAAAA4B9CAAAAAADIH0IAAAAAADAfQgAAAAAAAB9CAAAAAACjLkIAAAAAAJYuQgAAAAAAoy5CAAAAAABtLkIAAAAAAKMuQgAAAAAAYC5CAAAAAABTLkIAAAAAAEYuQgAAAAAAOS5CAAAAAAAsLkIAAAAAAB8uQgAAAAAAEi5CAAAAAAAFLkIAAAAAAPgtQgAAAAAA6y1CAAAAAADbLUIAAAAAAM4tQgAAAAAAwS1CAAAAAAC0LUIAAAAAAKMuQgAAAAAAoy5CAAAAAACjLkIAAAAAAKMuQgAAAAAAoy5CAAAAAACjLkIAAAAAANwrQgAAAAAAZ2V0X3N5bWJvbHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAARAAAAAwAAAA8AAAAFAAAABgAAAAcAAAAIAAAADAAAABIAAAANAAAACQAAABkAAAAKAAAADgAAABAAAABtZDUAc2hhMQB1dWlkAC9kZXYvdXJhbmRvbQAALyogU2NyaXB0IGZvciBsZCAtVXI6IGxpbmsgdy9vdXQgcmVsb2NhdGlvbiwgZG8gY3JlYXRlIGNvbnN0cnVjdG9ycyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCiAvKiBGb3Igc29tZSByZWFzb24sIHRoZSBTb2xhcmlzIGxpbmtlciBtYWtlcyBiYWQgZXhlY3V0YWJsZXMKICBpZiBnbGQgLXIgaXMgdXNlZCBhbmQgdGhlIGludGVybWVkaWF0ZSBmaWxlIGhhcyBzZWN0aW9ucyBzdGFydGluZwogIGF0IG5vbi16ZXJvIGFkZHJlc3Nlcy4gIENvdWxkIGJlIGEgU29sYXJpcyBsZCBidWcsIGNvdWxkIGJlIGEgR05VIGxkCiAgYnVnLiAgQnV0IGZvciBub3cgYXNzaWduaW5nIHRoZSB6ZXJvIHZtYXMgd29ya3MuICAqLwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLmludGVycCAgICAgICAwIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAwIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAwIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgMCA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAwIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gIDAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgMDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgMDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAwIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgIDAgOiB7ICooLnJlbGEudGV4dCkgfQogIC5yZWxhLmZpbmkgICAgMCA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAwIDogeyAqKC5yZWxhLnJvZGF0YSkgfQogIC5yZWxhLmRhdGEucmVsLnJvIDAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8pIH0KICAucmVsYS5kYXRhICAgIDAgOiB7ICooLnJlbGEuZGF0YSkgfQogIC5yZWxhLnRkYXRhCTAgOiB7ICooLnJlbGEudGRhdGEpIH0KICAucmVsYS50YnNzCTAgOiB7ICooLnJlbGEudGJzcykgfQogIC5yZWxhLmN0b3JzICAgMCA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgMCA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgMCA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgIDAgOiB7ICooLnJlbGEuYnNzKSB9CiAgLnJlbGEubGRhdGEgICAwIDogeyAqKC5yZWxhLmxkYXRhKSB9CiAgLnJlbGEubGJzcyAgICAwIDogeyAqKC5yZWxhLmxic3MpIH0KICAucmVsYS5scm9kYXRhIDAgOiB7ICooLnJlbGEubHJvZGF0YSkgfQogIC5yZWxhLmlmdW5jICAgMCA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgMCA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgfQogIC5pbml0ICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAwIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAwIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuYm5kICAgICAgMCA6IHsgKigucGx0LmJuZCkgfQogIC50ZXh0ICAgICAgICAgMCA6CiAgewogICAgKigudGV4dCAuc3R1YikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgLnJvZGF0YSAgICAgICAwIDogeyAqKC5yb2RhdGEpIH0KICAucm9kYXRhMSAgICAgIDAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICB9CiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAwIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ251X2V4dGFiICAgIDAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCTAgOiB7ICooLnRkYXRhKSB9CiAgLnRic3MJCTAgOiB7ICooLnRic3MpIH0KICAucHJlaW5pdF9hcnJheSAgIDAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuamNyICAgICAgICAgIDAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZHluYW1pYyAgICAgIDAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgIDAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgMCA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAwIDoKICB7CiAgICAqKC5kYXRhKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgMCA6IHsgKiguZGF0YTEpIH0KICAuYnNzICAgICAgICAgIDAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MpCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogIH0KICAubGJzcyAwIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcykKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAubHJvZGF0YSAwICA6CiAgewogICAgKigubHJvZGF0YSkKICB9CiAgLmxkYXRhIDAgIDoKICB7CiAgICAqKC5sZGF0YSkKICB9CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbykgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KfQoKAAAAAAAALyogU2NyaXB0IGZvciBsZCAtcjogbGluayB3aXRob3V0IHJlbG9jYXRpb24gKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQogLyogRm9yIHNvbWUgcmVhc29uLCB0aGUgU29sYXJpcyBsaW5rZXIgbWFrZXMgYmFkIGV4ZWN1dGFibGVzCiAgaWYgZ2xkIC1yIGlzIHVzZWQgYW5kIHRoZSBpbnRlcm1lZGlhdGUgZmlsZSBoYXMgc2VjdGlvbnMgc3RhcnRpbmcKICBhdCBub24temVybyBhZGRyZXNzZXMuICBDb3VsZCBiZSBhIFNvbGFyaXMgbGQgYnVnLCBjb3VsZCBiZSBhIEdOVSBsZAogIGJ1Zy4gIEJ1dCBmb3Igbm93IGFzc2lnbmluZyB0aGUgemVybyB2bWFzIHdvcmtzLiAgKi8KU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC5pbnRlcnAgICAgICAgMCA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgMCA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgMCA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgIDAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgMCA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAwIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kIDA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yIDA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgMCA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAwIDogeyAqKC5yZWxhLnRleHQpIH0KICAucmVsYS5maW5pICAgIDAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgMCA6IHsgKigucmVsYS5yb2RhdGEpIH0KICAucmVsYS5kYXRhLnJlbC5ybyAwIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvKSB9CiAgLnJlbGEuZGF0YSAgICAwIDogeyAqKC5yZWxhLmRhdGEpIH0KICAucmVsYS50ZGF0YQkwIDogeyAqKC5yZWxhLnRkYXRhKSB9CiAgLnJlbGEudGJzcwkwIDogeyAqKC5yZWxhLnRic3MpIH0KICAucmVsYS5jdG9ycyAgIDAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgIDAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgIDAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAwIDogeyAqKC5yZWxhLmJzcykgfQogIC5yZWxhLmxkYXRhICAgMCA6IHsgKigucmVsYS5sZGF0YSkgfQogIC5yZWxhLmxic3MgICAgMCA6IHsgKigucmVsYS5sYnNzKSB9CiAgLnJlbGEubHJvZGF0YSAwIDogeyAqKC5yZWxhLmxyb2RhdGEpIH0KICAucmVsYS5pZnVuYyAgIDAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgIDAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgMCA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgMCA6IHsgKigucGx0LmdvdCkgfQoucGx0LmJuZCAgICAgIDAgOiB7ICooLnBsdC5ibmQpIH0KICAudGV4dCAgICAgICAgIDAgOgogIHsKICAgICooLnRleHQgLnN0dWIpCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIC5yb2RhdGEgICAgICAgMCA6IHsgKigucm9kYXRhKSB9CiAgLnJvZGF0YTEgICAgICAwIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAgfQogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgMCA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICB9CiAgLmdudV9leHRhYiAgICAwIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkwIDogeyAqKC50ZGF0YSkgfQogIC50YnNzCQkwIDogeyAqKC50YnNzKSB9CiAgLnByZWluaXRfYXJyYXkgICAwIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmpjciAgICAgICAgICAwIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmR5bmFtaWMgICAgICAwIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAwIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuZ290LnBsdCAgICAgIDAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgMCA6CiAgewogICAgKiguZGF0YSkKICB9CiAgLmRhdGExICAgICAgICAwIDogeyAqKC5kYXRhMSkgfQogIC5ic3MgICAgICAgICAgMCA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcykKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgfQogIC5sYnNzIDAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC5scm9kYXRhIDAgIDoKICB7CiAgICAqKC5scm9kYXRhKQogIH0KICAubGRhdGEgMCAgOgogIHsKICAgICooLmxkYXRhKQogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQp9CgoAAAAALyogU2NyaXB0IGZvciAtTjogbWl4IHRleHQgYW5kIGRhdGEgb24gc2FtZSBwYWdlOyBkb24ndCBhbGlnbiBkYXRhICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LmJuZCAgICAgICAgOiB7ICooLnBsdC5ibmQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gLjsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAtbjogbWl4IHRleHQgYW5kIGRhdGEgb24gc2FtZSBwYWdlICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LmJuZCAgICAgICAgOiB7ICooLnBsdC5ibmQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm86IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LmJuZCAgICAgICAgOiB7ICooLnBsdC5ibmQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2M6IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LmJuZCAgICAgICAgOiB7ICooLnBsdC5ibmQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciBsZCAtcGllOiBsaW5rIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LmJuZCAgICAgICAgOiB7ICooLnBsdC5ibmQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciAtLXNoYXJlZCAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvOiBzaGFyZWQgbGlicmFyeSwgY29tYmluZSAmIHNvcnQgcmVsb2NzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5ibmQgICAgICAgIDogeyAqKC5wbHQuYm5kKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciAtLXNoYXJlZCAteiBjb21icmVsb2M6IHNoYXJlZCBsaWJyYXJ5LCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgICooLnJlbGEuaXBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LmJuZCAgICAgICAgOiB7ICooLnBsdC5ibmQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAAAC8qIFNjcmlwdCBmb3IgbGQgLS1zaGFyZWQ6IGxpbmsgc2hhcmVkIGxpYnJhcnkgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9Ci5wbHQuYm5kICAgICAgICA6IHsgKigucGx0LmJuZCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvOiBjb21iaW5lIGFuZCBzb3J0IHJlbG9jIHNlY3Rpb25zICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC14ODYtNjQiLCAiZWxmNjQteDg2LTY0IiwKCSAgICAgICJlbGY2NC14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong4Ni02NCkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliNjQiKTsgU0VBUkNIX0RJUigiPS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5ibmQgICAgICAgIDogeyAqKC5wbHQuYm5kKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2M6IGNvbWJpbmUgYW5kIHNvcnQgcmVsb2Mgc2VjdGlvbnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LXg4Ni02NCIsICJlbGY2NC14ODYtNjQiLAoJICAgICAgImVsZjY0LXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWI2NCIpOyBTRUFSQ0hfRElSKCI9L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQoucGx0LmJuZCAgICAgICAgOiB7ICooLnBsdC5ibmQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAC8qIERlZmF1bHQgbGlua2VyIHNjcmlwdCwgZm9yIG5vcm1hbCBleGVjdXRhYmxlcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQteDg2LTY0IiwgImVsZjY0LXg4Ni02NCIsCgkgICAgICAiZWxmNjQteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4ODYtNjQpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjY0Iik7IFNFQVJDSF9ESVIoIj0vbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliNjQiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KLnBsdC5ibmQgICAgICAgIDogeyAqKC5wbHQuYm5kKSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAACVQJUY6IC0tanVzdC1zeW1ib2xzIG1heSBub3QgYmUgdXNlZCBvbiBEU086ICVCCgAAAAAAAAAAICAteiBub2V4dGVybi1wcm90ZWN0ZWQtZGF0YSAgRG8gbm90IHRyZWF0IHByb3RlY3RlZCBkYXRhIHN5bWJvbCBhcyBleHRlcm5hbAoAAAAgIC16IG5vZHluYW1pYy11bmRlZmluZWQtd2VhayBEbyBub3QgdHJlYXQgdW5kZWZpbmVkIHdlYWsgc3ltYm9sIGFzIGR5bmFtaWMKAAAAACAgLXogbm9yZWxvYy1vdmVyZmxvdyAgICAgICAgIERpc2FibGUgcmVsb2NhdGlvbiBvdmVyZmxvdyBjaGVjawoAAAAAAAAAACAgLXogY2FsbC1ub3A9UEFERElORyAgICAgICAgIFVzZSBQQURESU5HIGFzIDEtYnl0ZSBOT1AgZm9yIGJyYW5jaAoAAAAAACAgLXogYm5kcGx0ICAgICAgICAgICAgICAgICAgIEFsd2F5cyBnZW5lcmF0ZSBCTkQgcHJlZml4IGluIFBMVCBlbnRyaWVzCgAAAAAAAAAAJVAlRjogaW52YWxpZCAtLWNvbXByZXNzLWRlYnVnLXNlY3Rpb25zIG9wdGlvbjogYCVzJwoAAAAlUCVGOiBpbnZhbGlkIGhhc2ggc3R5bGUgYCVzJwoAACVQJUY6IGludmFsaWQgbWF4aXVtIHBhZ2Ugc2l6ZSBgJXMnCgAAAAAlUCVGOiBpbnZhbGlkIGNvbW1vbiBwYWdlIHNpemUgYCVzJwoAAAAAJVAlRjogaW52YWxpZCBzdGFjayBzaXplIGAlcycKAAAlUCVGOiBpbnZhbGlkIG51bWJlciBmb3IgLXogY2FsbC1ub3A9cHJlZml4LTogJXMKAAAAAAAAACVQJUY6IGludmFsaWQgbnVtYmVyIGZvciAteiBjYWxsLW5vcD1zdWZmaXgtOiAlcwoAAAAAAAAAJVAlRjogdW5zdXBwb3J0ZWQgb3B0aW9uOiAteiAlcwoAAAAAAAAAACVQJUY6IGZhaWxlZCB0byBzZXQgZHluYW1pYyBzZWN0aW9uIHNpemVzOiAlRQoAACVGJUI6IENhbid0IHJlYWQgY29udGVudHMgb2Ygc2VjdGlvbiAuZ251Lndhcm5pbmc6ICVFCgAAJVAlRjogZmFpbGVkIHRvIHJlY29yZCBhc3NpZ25tZW50IHRvICVzOiAlRQoAAAAAJVglUDogLmVoX2ZyYW1lLy5zdGFiIGVkaXQ6ICVFCgAlRiVQOiBtYXAgc2VjdGlvbnMgdG8gc2VnbWVudHMgZmFpbGVkOiAlRQoAAAAAAAAlUDogd2FybmluZzogLm5vdGUuZ251LmJ1aWxkLWlkIHNlY3Rpb24gZGlzY2FyZGVkLCAtLWJ1aWxkLWlkIGlnbm9yZWQuCgAlRiVQOiVCOiBiZmRfZWxmX2dldF9iZmRfbmVlZGVkX2xpc3QgZmFpbGVkOiAlRQoAAAAAAAAAACVQOiB3YXJuaW5nOiAlcywgbmVlZGVkIGJ5ICVCLCBtYXkgY29uZmxpY3Qgd2l0aCAlcwoAAAAAJVAlRjogY29tcGFjdCBmcmFtZSBkZXNjcmlwdGlvbnMgaW5jb21wYXRpYmxlIHdpdGggRFdBUkYyIC5laF9mcmFtZSBmcm9tICVCCgAAAAAlUDogd2FybmluZzogQ2Fubm90IGNyZWF0ZSAuZWhfZnJhbWVfaGRyIHNlY3Rpb24sIC0tZWgtZnJhbWUtaGRyIGlnbm9yZWQuCgAAAAAAACVQOiB3YXJuaW5nOiAlcywgbmVlZGVkIGJ5ICVCLCBub3QgZm91bmQgKHRyeSB1c2luZyAtcnBhdGggb3IgLXJwYXRoLWxpbmspCgAAAAAAJVAlRjogRmFpbGVkIHRvIHBhcnNlIEVIIGZyYW1lIGVudHJpZXMuCgAAAAAAAAAAJVA6IHdhcm5pbmc6IHVucmVjb2duaXplZCAtLWJ1aWxkLWlkIHN0eWxlIGlnbm9yZWQuCgAAAAAlUDogd2FybmluZzogQ2Fubm90IGNyZWF0ZSAubm90ZS5nbnUuYnVpbGQtaWQgc2VjdGlvbiwgLS1idWlsZC1pZCBpZ25vcmVkLgoAemxpYgB6bGliLWdudQB6bGliLWdhYmkAc3lzdgBib3RoAG11bGRlZnMAbWF4LXBhZ2Utc2l6ZT0AY29tbW9uLXBhZ2Utc2l6ZT0Ac3RhY2stc2l6ZT0Abm9leGVjc3RhY2sAaW5pdGZpcnN0AGludGVycG9zZQBsb2FkZmx0cgBub2RlZmF1bHRsaWIAbm9kZWxldGUAbm9kbG9wZW4Abm9kdW1wAGxhenkAb3JpZ2luAG5vY29tYnJlbG9jAG5vY29weXJlbG9jAG5vcmVscm8Abm9jb21tb24Abm90ZXh0AHRleHRvZmYAbm9leHRlcm4tcHJvdGVjdGVkLWRhdGEAbm9keW5hbWljLXVuZGVmaW5lZC13ZWFrAG5vcmVsb2Mtb3ZlcmZsb3cAY2FsbC1ub3A9AHByZWZpeC1hZGRyAHByZWZpeC1ub3AAc3VmZml4LW5vcABwcmVmaXgtAHN1ZmZpeC0AYm5kcGx0ACVQOiB3YXJuaW5nOiAteiAlcyBpZ25vcmVkLgoAJXMvJXMAJXMvbGliJXMlcy5zbwBlZWxmX3g4Nl82NC5jAF9fZWhkcl9zdGFydABMRF9SVU5fUEFUSAAuZ251Lndhcm5pbmcAJVAlRjogbG9vcGluZyBpbiBtYXBfc2VnbWVudHMAaW5jbHVkZQBsaWJjLnNvACVGJVA6JUI6IGJmZF9zdGF0IGZhaWxlZDogJUUKAGZvdW5kICVzIGF0ICVzCgAuc28uAGkzODY6eDg2LTY0AC5yZWxhLmR5bgAucmVsLmR5bgAucmVsAC5nbnUud2FybmluZy4ALm5vdGUALnBsdAAubm90ZS5HTlUtc3RhY2sALmVoX2ZyYW1lX2VudHJ5AC5laF9mcmFtZQAuZWhfZnJhbWVfaGRyACVzIG5lZWRlZCBieSAlQgoAL3Vzci9ldGMvbGQuc28uY29uZgAubm90ZS5nbnUuYnVpbGQtaWQALnJvZGF0YQAudGRhdGEALmludGVycAAuc2RhdGEALmNvbW1lbnQAQmdyb3VwAGNvbXByZXNzLWRlYnVnLXNlY3Rpb25zAGRlcGF1ZGl0AGRpc2FibGUtbmV3LWR0YWdzAGVuYWJsZS1uZXctZHRhZ3MAZWgtZnJhbWUtaGRyAGV4Y2x1ZGUtbGlicwBoYXNoLXN0eWxlAG5vLWxkLWdlbmVyYXRlZC11bndpbmQtaW5mbwBlbGY2NC14ODYtNjQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBJQgAAAAAAEElCAAAAAAAASUIAAAAAAPBIQgAAAAAA0EhCAAAAAABASUIAAAAAAEBJQgAAAAAAAAAAAAAAAAAnr0YAAAAAAAEAAAAAAAAAAAAAAAAAAACXAQAAAAAAAAWvRgAAAAAAAAAAAAAAAAAAAAAAAAAAAJIBAAAAAAAA1a5GAAAAAAACAAAAAAAAAAAAAAAAAAAAlgEAAAAAAAAMr0YAAAAAAAEAAAAAAAAAAAAAAAAAAACYAQAAAAAAACSvRgAAAAAAAQAAAAAAAAAAAAAAAAAAAFAAAAAAAAAALa9GAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAEAAAAAAAA/r0YAAAAAAAAAAAAAAAAAAAAAAAAAAACRAQAAAAAAAFCvRgAAAAAAAAAAAAAAAAAAAAAAAAAAAJMBAAAAAAAAXa9GAAAAAAABAAAAAAAAAAAAAAAAAAAAlAEAAAAAAABqr0YAAAAAAAEAAAAAAAAAAAAAAAAAAACVAQAAAAAAAHivRgAAAAAAAAAAAAAAAAAAAAAAAAAAAC0BAAAAAAAAda9GAAAAAAAAAAAAAAAAAAAAAAAAAAAALgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8qIFNjcmlwdCBmb3IgbGQgLVVyOiBsaW5rIHcvb3V0IHJlbG9jYXRpb24sIGRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQogLyogRm9yIHNvbWUgcmVhc29uLCB0aGUgU29sYXJpcyBsaW5rZXIgbWFrZXMgYmFkIGV4ZWN1dGFibGVzCiAgaWYgZ2xkIC1yIGlzIHVzZWQgYW5kIHRoZSBpbnRlcm1lZGlhdGUgZmlsZSBoYXMgc2VjdGlvbnMgc3RhcnRpbmcKICBhdCBub24temVybyBhZGRyZXNzZXMuICBDb3VsZCBiZSBhIFNvbGFyaXMgbGQgYnVnLCBjb3VsZCBiZSBhIEdOVSBsZAogIGJ1Zy4gIEJ1dCBmb3Igbm93IGFzc2lnbmluZyB0aGUgemVybyB2bWFzIHdvcmtzLiAgKi8KU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC5pbnRlcnAgICAgICAgMCA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgMCA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgMCA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgIDAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgMCA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAwIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kIDA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yIDA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgMCA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAwIDogeyAqKC5yZWxhLnRleHQpIH0KICAucmVsYS5maW5pICAgIDAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgMCA6IHsgKigucmVsYS5yb2RhdGEpIH0KICAucmVsYS5kYXRhLnJlbC5ybyAwIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvKSB9CiAgLnJlbGEuZGF0YSAgICAwIDogeyAqKC5yZWxhLmRhdGEpIH0KICAucmVsYS50ZGF0YQkwIDogeyAqKC5yZWxhLnRkYXRhKSB9CiAgLnJlbGEudGJzcwkwIDogeyAqKC5yZWxhLnRic3MpIH0KICAucmVsYS5jdG9ycyAgIDAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgIDAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgIDAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAwIDogeyAqKC5yZWxhLmJzcykgfQogIC5yZWxhLmxkYXRhICAgMCA6IHsgKigucmVsYS5sZGF0YSkgfQogIC5yZWxhLmxic3MgICAgMCA6IHsgKigucmVsYS5sYnNzKSB9CiAgLnJlbGEubHJvZGF0YSAwIDogeyAqKC5yZWxhLmxyb2RhdGEpIH0KICAucmVsYS5pZnVuYyAgIDAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgIDAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgMCA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAwIDoKICB7CiAgICAqKC50ZXh0IC5zdHViKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICAucm9kYXRhICAgICAgIDAgOiB7ICooLnJvZGF0YSkgfQogIC5yb2RhdGExICAgICAgMCA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgIH0KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiIDAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAgfQogIC5nbnVfZXh0YWIgICAgMCA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJMCA6IHsgKigudGRhdGEpIH0KICAudGJzcwkJMCA6IHsgKigudGJzcykgfQogIC5wcmVpbml0X2FycmF5ICAgMCA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5qY3IgICAgICAgICAgMCA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5keW5hbWljICAgICAgMCA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgMCA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLmdvdC5wbHQgICAgICAwIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgIDAgOgogIHsKICAgICooLmRhdGEpCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAwIDogeyAqKC5kYXRhMSkgfQogIC5ic3MgICAgICAgICAgMCA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcykKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgfQogIC5sYnNzIDAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC5scm9kYXRhIDAgIDoKICB7CiAgICAqKC5scm9kYXRhKQogIH0KICAubGRhdGEgMCAgOgogIHsKICAgICooLmxkYXRhKQogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQp9CgoAAC8qIFNjcmlwdCBmb3IgbGQgLXI6IGxpbmsgd2l0aG91dCByZWxvY2F0aW9uICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKIC8qIEZvciBzb21lIHJlYXNvbiwgdGhlIFNvbGFyaXMgbGlua2VyIG1ha2VzIGJhZCBleGVjdXRhYmxlcwogIGlmIGdsZCAtciBpcyB1c2VkIGFuZCB0aGUgaW50ZXJtZWRpYXRlIGZpbGUgaGFzIHNlY3Rpb25zIHN0YXJ0aW5nCiAgYXQgbm9uLXplcm8gYWRkcmVzc2VzLiAgQ291bGQgYmUgYSBTb2xhcmlzIGxkIGJ1ZywgY291bGQgYmUgYSBHTlUgbGQKICBidWcuICBCdXQgZm9yIG5vdyBhc3NpZ25pbmcgdGhlIHplcm8gdm1hcyB3b3Jrcy4gICovClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuaW50ZXJwICAgICAgIDAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgIDAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgIDAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAwIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgIDAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgMCA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAwOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAwOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgIDAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgMCA6IHsgKigucmVsYS50ZXh0KSB9CiAgLnJlbGEuZmluaSAgICAwIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgIDAgOiB7ICooLnJlbGEucm9kYXRhKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gMCA6IHsgKigucmVsYS5kYXRhLnJlbC5ybykgfQogIC5yZWxhLmRhdGEgICAgMCA6IHsgKigucmVsYS5kYXRhKSB9CiAgLnJlbGEudGRhdGEJMCA6IHsgKigucmVsYS50ZGF0YSkgfQogIC5yZWxhLnRic3MJMCA6IHsgKigucmVsYS50YnNzKSB9CiAgLnJlbGEuY3RvcnMgICAwIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAwIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAwIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgMCA6IHsgKigucmVsYS5ic3MpIH0KICAucmVsYS5sZGF0YSAgIDAgOiB7ICooLnJlbGEubGRhdGEpIH0KICAucmVsYS5sYnNzICAgIDAgOiB7ICooLnJlbGEubGJzcykgfQogIC5yZWxhLmxyb2RhdGEgMCA6IHsgKigucmVsYS5scm9kYXRhKSB9CiAgLnJlbGEuaWZ1bmMgICAwIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAwIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgIDAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgMCA6CiAgewogICAgKigudGV4dCAuc3R1YikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgLnJvZGF0YSAgICAgICAwIDogeyAqKC5yb2RhdGEpIH0KICAucm9kYXRhMSAgICAgIDAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICB9CiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAwIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ251X2V4dGFiICAgIDAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCTAgOiB7ICooLnRkYXRhKSB9CiAgLnRic3MJCTAgOiB7ICooLnRic3MpIH0KICAucHJlaW5pdF9hcnJheSAgIDAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuamNyICAgICAgICAgIDAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZHluYW1pYyAgICAgIDAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgIDAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgMCA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAwIDoKICB7CiAgICAqKC5kYXRhKQogIH0KICAuZGF0YTEgICAgICAgIDAgOiB7ICooLmRhdGExKSB9CiAgLmJzcyAgICAgICAgICAwIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICB9CiAgLmxic3MgMCA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MpCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLmxyb2RhdGEgMCAgOgogIHsKICAgICooLmxyb2RhdGEpCiAgfQogIC5sZGF0YSAwICA6CiAgewogICAgKigubGRhdGEpCiAgfQogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8pIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciAtTjogbWl4IHRleHQgYW5kIGRhdGEgb24gc2FtZSBwYWdlOyBkb24ndCBhbGlnbiBkYXRhICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSAuOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAvKiBTY3JpcHQgZm9yIC1uOiBtaXggdGV4dCBhbmQgZGF0YSBvbiBzYW1lIHBhZ2UgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvOiBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlLCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2M6IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAvKiBTY3JpcHQgZm9yIGxkIC1waWU6IGxpbmsgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgLS1zaGFyZWQgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybzogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgICooLnJlbGEuaXBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciAtLXNoYXJlZCAteiBjb21icmVsb2M6IHNoYXJlZCBsaWJyYXJ5LCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciBsZCAtLXNoYXJlZDogbGluayBzaGFyZWQgbGlicmFyeSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAAAC8qIFNjcmlwdCBmb3IgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybzogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzIteDg2LTY0IiwgImVsZjMyLXg4Ni02NCIsCgkgICAgICAiZWxmMzIteDg2LTY0IikKT1VUUFVUX0FSQ0goaTM4Njp4NjQtMzIpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2M6IGNvbWJpbmUgYW5kIHNvcnQgcmVsb2Mgc2VjdGlvbnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLXg4Ni02NCIsICJlbGYzMi14ODYtNjQiLAoJICAgICAgImVsZjMyLXg4Ni02NCIpCk9VVFBVVF9BUkNIKGkzODY6eDY0LTMyKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAALyogRGVmYXVsdCBsaW5rZXIgc2NyaXB0LCBmb3Igbm9ybWFsIGV4ZWN1dGFibGVzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi14ODYtNjQiLCAiZWxmMzIteDg2LTY0IiwKCSAgICAgICJlbGYzMi14ODYtNjQiKQpPVVRQVVRfQVJDSChpMzg2Ong2NC0zMikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGlieDMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYngzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWJ4MzIiKTsgU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgBlZWxmMzJfeDg2XzY0LmMAaTM4Njp4NjQtMzIAZWxmMzJfeDg2XzY0AGVsZjMyLXg4Ni02NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB8QgAAAAAA8HtCAAAAAADge0IAAAAAANB7QgAAAAAAsHtCAAAAAAAgfEIAAAAAACB8QgAAAAAAAAAAAAAAAAAnr0YAAAAAAAEAAAAAAAAAAAAAAAAAAACXAQAAAAAAAAWvRgAAAAAAAAAAAAAAAAAAAAAAAAAAAJIBAAAAAAAA1a5GAAAAAAACAAAAAAAAAAAAAAAAAAAAlgEAAAAAAAAMr0YAAAAAAAEAAAAAAAAAAAAAAAAAAACYAQAAAAAAACSvRgAAAAAAAQAAAAAAAAAAAAAAAAAAAFAAAAAAAAAALa9GAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAEAAAAAAAA/r0YAAAAAAAAAAAAAAAAAAAAAAAAAAACRAQAAAAAAAFCvRgAAAAAAAAAAAAAAAAAAAAAAAAAAAJMBAAAAAAAAXa9GAAAAAAABAAAAAAAAAAAAAAAAAAAAlAEAAAAAAABqr0YAAAAAAAEAAAAAAAAAAAAAAAAAAACVAQAAAAAAAHivRgAAAAAAAAAAAAAAAAAAAAAAAAAAAC0BAAAAAAAAda9GAAAAAAAAAAAAAAAAAAAAAAAAAAAALgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8qIFNjcmlwdCBmb3IgbGQgLVVyOiBsaW5rIHcvb3V0IHJlbG9jYXRpb24sIGRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCiAvKiBGb3Igc29tZSByZWFzb24sIHRoZSBTb2xhcmlzIGxpbmtlciBtYWtlcyBiYWQgZXhlY3V0YWJsZXMKICBpZiBnbGQgLXIgaXMgdXNlZCBhbmQgdGhlIGludGVybWVkaWF0ZSBmaWxlIGhhcyBzZWN0aW9ucyBzdGFydGluZwogIGF0IG5vbi16ZXJvIGFkZHJlc3Nlcy4gIENvdWxkIGJlIGEgU29sYXJpcyBsZCBidWcsIGNvdWxkIGJlIGEgR05VIGxkCiAgYnVnLiAgQnV0IGZvciBub3cgYXNzaWduaW5nIHRoZSB6ZXJvIHZtYXMgd29ya3MuICAqLwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLmludGVycCAgICAgICAwIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAwIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAwIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgMCA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAwIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gIDAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgMDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgMDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAwIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgMCA6IHsgKigucmVsLnRleHQpIH0KICAucmVsLmZpbmkgICAgIDAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAwIDogeyAqKC5yZWwucm9kYXRhKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAwIDogeyAqKC5yZWwuZGF0YS5yZWwucm8pIH0KICAucmVsLmRhdGEgICAgIDAgOiB7ICooLnJlbC5kYXRhKSB9CiAgLnJlbC50ZGF0YQkwIDogeyAqKC5yZWwudGRhdGEpIH0KICAucmVsLnRic3MJMCA6IHsgKigucmVsLnRic3MpIH0KICAucmVsLmN0b3JzICAgIDAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgMCA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAwIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAwIDogeyAqKC5yZWwuYnNzKSB9CiAgLnJlbC5pZnVuYyAgICAwIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgIDAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgfQogIC5pbml0ICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAwIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAwIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAwIDoKICB7CiAgICAqKC50ZXh0IC5zdHViKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICAucm9kYXRhICAgICAgIDAgOiB7ICooLnJvZGF0YSkgfQogIC5yb2RhdGExICAgICAgMCA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgIH0KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiIDAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAgfQogIC5nbnVfZXh0YWIgICAgMCA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJMCA6IHsgKigudGRhdGEpIH0KICAudGJzcwkJMCA6IHsgKigudGJzcykgfQogIC5wcmVpbml0X2FycmF5ICAgMCA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5qY3IgICAgICAgICAgMCA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5keW5hbWljICAgICAgMCA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgMCA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLmdvdC5wbHQgICAgICAwIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgIDAgOgogIHsKICAgICooLmRhdGEpCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAwIDogeyAqKC5kYXRhMSkgfQogIC5ic3MgICAgICAgICAgMCA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcykKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgfQogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8pIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9Cn0KCgAAAAAALyogU2NyaXB0IGZvciBsZCAtcjogbGluayB3aXRob3V0IHJlbG9jYXRpb24gKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCiAvKiBGb3Igc29tZSByZWFzb24sIHRoZSBTb2xhcmlzIGxpbmtlciBtYWtlcyBiYWQgZXhlY3V0YWJsZXMKICBpZiBnbGQgLXIgaXMgdXNlZCBhbmQgdGhlIGludGVybWVkaWF0ZSBmaWxlIGhhcyBzZWN0aW9ucyBzdGFydGluZwogIGF0IG5vbi16ZXJvIGFkZHJlc3Nlcy4gIENvdWxkIGJlIGEgU29sYXJpcyBsZCBidWcsIGNvdWxkIGJlIGEgR05VIGxkCiAgYnVnLiAgQnV0IGZvciBub3cgYXNzaWduaW5nIHRoZSB6ZXJvIHZtYXMgd29ya3MuICAqLwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLmludGVycCAgICAgICAwIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAwIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAwIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgMCA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAwIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gIDAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgMDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgMDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAwIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgMCA6IHsgKigucmVsLnRleHQpIH0KICAucmVsLmZpbmkgICAgIDAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAwIDogeyAqKC5yZWwucm9kYXRhKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAwIDogeyAqKC5yZWwuZGF0YS5yZWwucm8pIH0KICAucmVsLmRhdGEgICAgIDAgOiB7ICooLnJlbC5kYXRhKSB9CiAgLnJlbC50ZGF0YQkwIDogeyAqKC5yZWwudGRhdGEpIH0KICAucmVsLnRic3MJMCA6IHsgKigucmVsLnRic3MpIH0KICAucmVsLmN0b3JzICAgIDAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgMCA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAwIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAwIDogeyAqKC5yZWwuYnNzKSB9CiAgLnJlbC5pZnVuYyAgICAwIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgIDAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgfQogIC5pbml0ICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAwIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAwIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAwIDoKICB7CiAgICAqKC50ZXh0IC5zdHViKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICAucm9kYXRhICAgICAgIDAgOiB7ICooLnJvZGF0YSkgfQogIC5yb2RhdGExICAgICAgMCA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgIH0KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiIDAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAgfQogIC5nbnVfZXh0YWIgICAgMCA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJMCA6IHsgKigudGRhdGEpIH0KICAudGJzcwkJMCA6IHsgKigudGJzcykgfQogIC5wcmVpbml0X2FycmF5ICAgMCA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5qY3IgICAgICAgICAgMCA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5keW5hbWljICAgICAgMCA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgMCA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLmdvdC5wbHQgICAgICAwIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgIDAgOgogIHsKICAgICooLmRhdGEpCiAgfQogIC5kYXRhMSAgICAgICAgMCA6IHsgKiguZGF0YTEpIH0KICAuYnNzICAgICAgICAgIDAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MpCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC1OOiBtaXggdGV4dCBhbmQgZGF0YSBvbiBzYW1lIHBhZ2U7IGRvbid0IGFsaWduIGRhdGEgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1jcm9zLWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IC47CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAC8qIFNjcmlwdCBmb3IgLW46IG1peCB0ZXh0IGFuZCBkYXRhIG9uIHNhbWUgcGFnZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWNyb3MtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgICAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAgIDogeyAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopIH0KICAucmVsLmZpbmkgICAgICAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAgIDogeyAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsLmRhdGEgICAgICAgOiB7ICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWwudGRhdGEJICA6IHsgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbC50YnNzCSAgOiB7ICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsLmN0b3JzICAgICAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgICA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAgIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAgIDogeyAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbC5pZnVuYyAgICAgIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm86IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWNyb3MtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jOiBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlLCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1jcm9zLWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIGxkIC1waWU6IGxpbmsgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWNyb3MtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgICAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAgIDogeyAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopIH0KICAucmVsLmZpbmkgICAgICAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAgIDogeyAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsLmRhdGEgICAgICAgOiB7ICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWwudGRhdGEJICA6IHsgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbC50YnNzCSAgOiB7ICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsLmN0b3JzICAgICAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgICA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAgIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAgIDogeyAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbC5pZnVuYyAgICAgIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAvKiBTY3JpcHQgZm9yIC0tc2hhcmVkIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm86IHNoYXJlZCBsaWJyYXJ5LCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1jcm9zLWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICAqKC5yZWwuaXBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAALyogU2NyaXB0IGZvciAtLXNoYXJlZCAteiBjb21icmVsb2M6IHNoYXJlZCBsaWJyYXJ5LCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1jcm9zLWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICAqKC5yZWwuaXBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMTIgPyAxMiA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAvKiBTY3JpcHQgZm9yIGxkIC0tc2hhcmVkOiBsaW5rIHNoYXJlZCBsaWJyYXJ5ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pMzg2IiwgImVsZjMyLWkzODYiLAoJICAgICAgImVsZjMyLWkzODYiKQpPVVRQVVRfQVJDSChpMzg2KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2kzODYtY3Jvcy1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliMzIiKTsgU0VBUkNIX0RJUigiPS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWNyb3MtbGludXgtZ251L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvOiBjb21iaW5lIGFuZCBzb3J0IHJlbG9jIHNlY3Rpb25zICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pMzg2IiwgImVsZjMyLWkzODYiLAoJICAgICAgImVsZjMyLWkzODYiKQpPVVRQVVRfQVJDSChpMzg2KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL2kzODYtY3Jvcy1saW51eC1nbnUvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliMzIiKTsgU0VBUkNIX0RJUigiPS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWNyb3MtbGludXgtZ251L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDA4MDQ4MDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbC5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgICA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2M6IGNvbWJpbmUgYW5kIHNvcnQgcmVsb2Mgc2VjdGlvbnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsCgkgICAgICAiZWxmMzItaTM4NiIpCk9VVFBVVF9BUkNIKGkzODYpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1jcm9zLWxpbnV4LWdudS9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIzMiIpOyBTRUFSQ0hfRElSKCI9L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2kzODYtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAC8qIERlZmF1bHQgbGlua2VyIHNjcmlwdCwgZm9yIG5vcm1hbCBleGVjdXRhYmxlcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2IiwKCSAgICAgICJlbGYzMi1pMzg2IikKT1VUUFVUX0FSQ0goaTM4NikKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci9pMzg2LWNyb3MtbGludXgtZ251L2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYjMyIik7IFNFQVJDSF9ESVIoIj0vbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliMzIiKTsgU0VBUkNIX0RJUigiPS91c3IvaTM4Ni1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgICAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAgIDogeyAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopIH0KICAucmVsLmZpbmkgICAgICAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAgIDogeyAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsLmRhdGEgICAgICAgOiB7ICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWwudGRhdGEJICA6IHsgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbC50YnNzCSAgOiB7ICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsLmN0b3JzICAgICAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgICA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAgIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAgIDogeyAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbC5pZnVuYyAgICAgIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgBlZWxmX2kzODYuYwBlbGZfaTM4NgBlbGYzMi1pMzg2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCuQgAAAAAAkK5CAAAAAACArkIAAAAAAHCuQgAAAAAAUK5CAAAAAADArkIAAAAAAMCuQgAAAAAAAAAAAAAAAAAnr0YAAAAAAAEAAAAAAAAAAAAAAAAAAACXAQAAAAAAAAWvRgAAAAAAAAAAAAAAAAAAAAAAAAAAAJIBAAAAAAAA1a5GAAAAAAACAAAAAAAAAAAAAAAAAAAAlgEAAAAAAAAMr0YAAAAAAAEAAAAAAAAAAAAAAAAAAACYAQAAAAAAACSvRgAAAAAAAQAAAAAAAAAAAAAAAAAAAFAAAAAAAAAALa9GAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAEAAAAAAAA/r0YAAAAAAAAAAAAAAAAAAAAAAAAAAACRAQAAAAAAAFCvRgAAAAAAAAAAAAAAAAAAAAAAAAAAAJMBAAAAAAAAXa9GAAAAAAABAAAAAAAAAAAAAAAAAAAAlAEAAAAAAABqr0YAAAAAAAEAAAAAAAAAAAAAAAAAAACVAQAAAAAAAHivRgAAAAAAAAAAAAAAAAAAAAAAAAAAAC0BAAAAAAAAda9GAAAAAAAAAAAAAAAAAAAAAAAAAAAALgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8qIFNjcmlwdCBmb3IgbGQgLVVyOiBsaW5rIHcvb3V0IHJlbG9jYXRpb24sIGRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQogLyogRm9yIHNvbWUgcmVhc29uLCB0aGUgU29sYXJpcyBsaW5rZXIgbWFrZXMgYmFkIGV4ZWN1dGFibGVzCiAgaWYgZ2xkIC1yIGlzIHVzZWQgYW5kIHRoZSBpbnRlcm1lZGlhdGUgZmlsZSBoYXMgc2VjdGlvbnMgc3RhcnRpbmcKICBhdCBub24temVybyBhZGRyZXNzZXMuICBDb3VsZCBiZSBhIFNvbGFyaXMgbGQgYnVnLCBjb3VsZCBiZSBhIEdOVSBsZAogIGJ1Zy4gIEJ1dCBmb3Igbm93IGFzc2lnbmluZyB0aGUgemVybyB2bWFzIHdvcmtzLiAgKi8KU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC5pbnRlcnAgICAgICAgMCA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgMCA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgMCA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgIDAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgMCA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAwIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kIDA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yIDA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgMCA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgIDAgOiB7ICooLnJlbC50ZXh0KSB9CiAgLnJlbC5maW5pICAgICAwIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgMCA6IHsgKigucmVsLnJvZGF0YSkgfQogIC5yZWwuZGF0YS5yZWwucm8gMCA6IHsgKigucmVsLmRhdGEucmVsLnJvKSB9CiAgLnJlbC5kYXRhICAgICAwIDogeyAqKC5yZWwuZGF0YSkgfQogIC5yZWwudGRhdGEJMCA6IHsgKigucmVsLnRkYXRhKSB9CiAgLnJlbC50YnNzCTAgOiB7ICooLnJlbC50YnNzKSB9CiAgLnJlbC5jdG9ycyAgICAwIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgIDAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgMCA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgMCA6IHsgKigucmVsLmJzcykgfQogIC5yZWwuaWZ1bmMgICAgMCA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAwIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgMCA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgMCA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgMCA6CiAgewogICAgKigudGV4dCAuc3R1YikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgLnJvZGF0YSAgICAgICAwIDogeyAqKC5yb2RhdGEpIH0KICAucm9kYXRhMSAgICAgIDAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICB9CiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAwIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ251X2V4dGFiICAgIDAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCTAgOiB7ICooLnRkYXRhKSB9CiAgLnRic3MJCTAgOiB7ICooLnRic3MpIH0KICAucHJlaW5pdF9hcnJheSAgIDAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuamNyICAgICAgICAgIDAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZHluYW1pYyAgICAgIDAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgIDAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgMCA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAwIDoKICB7CiAgICAqKC5kYXRhKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgMCA6IHsgKiguZGF0YTEpIH0KICAuYnNzICAgICAgICAgIDAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MpCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQp9CgoALyogU2NyaXB0IGZvciBsZCAtcjogbGluayB3aXRob3V0IHJlbG9jYXRpb24gKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQogLyogRm9yIHNvbWUgcmVhc29uLCB0aGUgU29sYXJpcyBsaW5rZXIgbWFrZXMgYmFkIGV4ZWN1dGFibGVzCiAgaWYgZ2xkIC1yIGlzIHVzZWQgYW5kIHRoZSBpbnRlcm1lZGlhdGUgZmlsZSBoYXMgc2VjdGlvbnMgc3RhcnRpbmcKICBhdCBub24temVybyBhZGRyZXNzZXMuICBDb3VsZCBiZSBhIFNvbGFyaXMgbGQgYnVnLCBjb3VsZCBiZSBhIEdOVSBsZAogIGJ1Zy4gIEJ1dCBmb3Igbm93IGFzc2lnbmluZyB0aGUgemVybyB2bWFzIHdvcmtzLiAgKi8KU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC5pbnRlcnAgICAgICAgMCA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgMCA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgMCA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgIDAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgMCA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAwIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kIDA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yIDA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuaW5pdCAgICAgMCA6IHsgKigucmVsLmluaXQpIH0KICAucmVsLnRleHQgICAgIDAgOiB7ICooLnJlbC50ZXh0KSB9CiAgLnJlbC5maW5pICAgICAwIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgMCA6IHsgKigucmVsLnJvZGF0YSkgfQogIC5yZWwuZGF0YS5yZWwucm8gMCA6IHsgKigucmVsLmRhdGEucmVsLnJvKSB9CiAgLnJlbC5kYXRhICAgICAwIDogeyAqKC5yZWwuZGF0YSkgfQogIC5yZWwudGRhdGEJMCA6IHsgKigucmVsLnRkYXRhKSB9CiAgLnJlbC50YnNzCTAgOiB7ICooLnJlbC50YnNzKSB9CiAgLnJlbC5jdG9ycyAgICAwIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgIDAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgMCA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgMCA6IHsgKigucmVsLmJzcykgfQogIC5yZWwuaWZ1bmMgICAgMCA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAwIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgMCA6IHsgKigucGx0KSAqKC5pcGx0KSB9Ci5wbHQuZ290ICAgICAgMCA6IHsgKigucGx0LmdvdCkgfQogIC50ZXh0ICAgICAgICAgMCA6CiAgewogICAgKigudGV4dCAuc3R1YikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgLnJvZGF0YSAgICAgICAwIDogeyAqKC5yb2RhdGEpIH0KICAucm9kYXRhMSAgICAgIDAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICB9CiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAwIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ251X2V4dGFiICAgIDAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCTAgOiB7ICooLnRkYXRhKSB9CiAgLnRic3MJCTAgOiB7ICooLnRic3MpIH0KICAucHJlaW5pdF9hcnJheSAgIDAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuamNyICAgICAgICAgIDAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZHluYW1pYyAgICAgIDAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgIDAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgMCA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAwIDoKICB7CiAgICAqKC5kYXRhKQogIH0KICAuZGF0YTEgICAgICAgIDAgOiB7ICooLmRhdGExKSB9CiAgLmJzcyAgICAgICAgICAwIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICB9CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbykgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgLU46IG1peCB0ZXh0IGFuZCBkYXRhIG9uIHNhbWUgcGFnZTsgZG9uJ3QgYWxpZ24gZGF0YSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgICAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAgIDogeyAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopIH0KICAucmVsLmZpbmkgICAgICAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAgIDogeyAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsLmRhdGEgICAgICAgOiB7ICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWwudGRhdGEJICA6IHsgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbC50YnNzCSAgOiB7ICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsLmN0b3JzICAgICAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgICA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAgIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAgIDogeyAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbC5pZnVuYyAgICAgIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gLjsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAAAC8qIFNjcmlwdCBmb3IgLW46IG1peCB0ZXh0IGFuZCBkYXRhIG9uIHNhbWUgcGFnZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHgwODA0ODAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgICAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAgIDogeyAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopIH0KICAucmVsLmZpbmkgICAgICAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAgIDogeyAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsLmRhdGEgICAgICAgOiB7ICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWwudGRhdGEJICA6IHsgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbC50YnNzCSAgOiB7ICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsLmN0b3JzICAgICAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgICA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAgIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAgIDogeyAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbC5pZnVuYyAgICAgIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvOiBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlLCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2M6IHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUsIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmR5biAgICAgICAgOgogICAgewogICAgICAqKC5yZWwuaW5pdCkKICAgICAgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWwuZmluaSkKICAgICAgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQogICAgICAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsLmN0b3JzKQogICAgICAqKC5yZWwuZHRvcnMpCiAgICAgICooLnJlbC5nb3QpCiAgICAgICooLnJlbC5ic3MgLnJlbC5ic3MuKiAucmVsLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbC5pZnVuYykKICAgIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIGxkIC1waWU6IGxpbmsgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsLmluaXQgICAgICAgOiB7ICooLnJlbC5pbml0KSB9CiAgLnJlbC50ZXh0ICAgICAgIDogeyAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopIH0KICAucmVsLmZpbmkgICAgICAgOiB7ICooLnJlbC5maW5pKSB9CiAgLnJlbC5yb2RhdGEgICAgIDogeyAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbC5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsLmRhdGEgICAgICAgOiB7ICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWwudGRhdGEJICA6IHsgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbC50YnNzCSAgOiB7ICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsLmN0b3JzICAgICAgOiB7ICooLnJlbC5jdG9ycykgfQogIC5yZWwuZHRvcnMgICAgICA6IHsgKigucmVsLmR0b3JzKSB9CiAgLnJlbC5nb3QgICAgICAgIDogeyAqKC5yZWwuZ290KSB9CiAgLnJlbC5ic3MgICAgICAgIDogeyAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbC5pZnVuYyAgICAgIDogeyAqKC5yZWwuaWZ1bmMpIH0KICAucmVsLnBsdCAgICAgICAgOgogICAgewogICAgICAqKC5yZWwucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWwuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAALyogU2NyaXB0IGZvciAtLXNoYXJlZCAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvOiBzaGFyZWQgbGlicmFyeSwgY29tYmluZSAmIHNvcnQgcmVsb2NzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIC0tc2hhcmVkIC16IGNvbWJyZWxvYzogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmMzItaWFtY3UiLCAiZWxmMzItaWFtY3UiLAoJICAgICAgImVsZjMyLWlhbWN1IikKT1VUUFVUX0FSQ0goaWFtY3UpCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWwuZHluICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5pbml0KQogICAgICAqKC5yZWwudGV4dCAucmVsLnRleHQuKiAucmVsLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbC5maW5pKQogICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWwuZGF0YS5yZWwucm8gLnJlbC5kYXRhLnJlbC5yby4qIC5yZWwuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopCiAgICAgICooLnJlbC5kYXRhIC5yZWwuZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWwuY3RvcnMpCiAgICAgICooLnJlbC5kdG9ycykKICAgICAgKigucmVsLmdvdCkKICAgICAgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsLmlmdW5jKQogICAgfQogIC5yZWwucGx0ICAgICAgICA6CiAgICB7CiAgICAgICooLnJlbC5wbHQpCiAgICAgICooLnJlbC5pcGx0KQogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAvKiBTY3JpcHQgZm9yIGxkIC0tc2hhcmVkOiBsaW5rIHNoYXJlZCBsaWJyYXJ5ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGYzMi1pYW1jdSIsICJlbGYzMi1pYW1jdSIsCgkgICAgICAiZWxmMzItaWFtY3UiKQpPVVRQVVRfQVJDSChpYW1jdSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgKigucmVsLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQoucGx0LmdvdCAgICAgICAgOiB7ICooLnBsdC5nb3QpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDEyID8gMTIgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oMzIgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC4gPSBBTElHTigzMiAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm86IGNvbWJpbmUgYW5kIHNvcnQgcmVsb2Mgc2VjdGlvbnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTigzMiAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAALyogU2NyaXB0IGZvciAteiBjb21icmVsb2M6IGNvbWJpbmUgYW5kIHNvcnQgcmVsb2Mgc2VjdGlvbnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5keW4gICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLmluaXQpCiAgICAgICooLnJlbC50ZXh0IC5yZWwudGV4dC4qIC5yZWwuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsLmZpbmkpCiAgICAgICooLnJlbC5yb2RhdGEgLnJlbC5yb2RhdGEuKiAucmVsLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbC5kYXRhLnJlbC5ybyAucmVsLmRhdGEucmVsLnJvLiogLnJlbC5nbnUubGlua29uY2UuZC5yZWwucm8uKikKICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWwudGRhdGEgLnJlbC50ZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbC50YnNzIC5yZWwudGJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbC5jdG9ycykKICAgICAgKigucmVsLmR0b3JzKQogICAgICAqKC5yZWwuZ290KQogICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWwuaWZ1bmMpCiAgICB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAAAvKiBEZWZhdWx0IGxpbmtlciBzY3JpcHQsIGZvciBub3JtYWwgZXhlY3V0YWJsZXMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjMyLWlhbWN1IiwgImVsZjMyLWlhbWN1IiwKCSAgICAgICJlbGYzMi1pYW1jdSIpCk9VVFBVVF9BUkNIKGlhbWN1KQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4MDgwNDgwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbC5pbml0ICAgICAgIDogeyAqKC5yZWwuaW5pdCkgfQogIC5yZWwudGV4dCAgICAgICA6IHsgKigucmVsLnRleHQgLnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbC5maW5pICAgICAgIDogeyAqKC5yZWwuZmluaSkgfQogIC5yZWwucm9kYXRhICAgICA6IHsgKigucmVsLnJvZGF0YSAucmVsLnJvZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWwuZGF0YS5yZWwucm8gICA6IHsgKigucmVsLmRhdGEucmVsLnJvIC5yZWwuZGF0YS5yZWwucm8uKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbC5kYXRhICAgICAgIDogeyAqKC5yZWwuZGF0YSAucmVsLmRhdGEuKiAucmVsLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsLnRkYXRhCSAgOiB7ICooLnJlbC50ZGF0YSAucmVsLnRkYXRhLiogLnJlbC5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWwudGJzcwkgIDogeyAqKC5yZWwudGJzcyAucmVsLnRic3MuKiAucmVsLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbC5jdG9ycyAgICAgIDogeyAqKC5yZWwuY3RvcnMpIH0KICAucmVsLmR0b3JzICAgICAgOiB7ICooLnJlbC5kdG9ycykgfQogIC5yZWwuZ290ICAgICAgICA6IHsgKigucmVsLmdvdCkgfQogIC5yZWwuYnNzICAgICAgICA6IHsgKigucmVsLmJzcyAucmVsLmJzcy4qIC5yZWwuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWwuaWZ1bmMgICAgICA6IHsgKigucmVsLmlmdW5jKSB9CiAgLnJlbC5wbHQgICAgICAgIDoKICAgIHsKICAgICAgKigucmVsLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbF9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KLnBsdC5nb3QgICAgICAgIDogeyAqKC5wbHQuZ290KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAxMiA/IDEyIDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyAzMiAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDMyIC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAuID0gQUxJR04oMzIgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAZWVsZl9pYW1jdS5jAGVsZl9pYW1jdQBlbGYzMi1pYW1jdQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUOFCAAAAAAAw4UIAAAAAACDhQgAAAAAAEOFCAAAAAADw4EIAAAAAAGDhQgAAAAAAYOFCAAAAAAAAAAAAAAAAACevRgAAAAAAAQAAAAAAAAAAAAAAAAAAAJcBAAAAAAAABa9GAAAAAAAAAAAAAAAAAAAAAAAAAAAAkgEAAAAAAADVrkYAAAAAAAIAAAAAAAAAAAAAAAAAAACWAQAAAAAAAAyvRgAAAAAAAQAAAAAAAAAAAAAAAAAAAJgBAAAAAAAAJK9GAAAAAAABAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAtr0YAAAAAAAAAAAAAAAAAAAAAAAAAAACQAQAAAAAAAD+vRgAAAAAAAAAAAAAAAAAAAAAAAAAAAJEBAAAAAAAAUK9GAAAAAAAAAAAAAAAAAAAAAAAAAAAAkwEAAAAAAABdr0YAAAAAAAEAAAAAAAAAAAAAAAAAAACUAQAAAAAAAGqvRgAAAAAAAQAAAAAAAAAAAAAAAAAAAJUBAAAAAAAAeK9GAAAAAAAAAAAAAAAAAAAAAAAAAAAALQEAAAAAAAB1r0YAAAAAAAAAAAAAAAAAAAAAAAAAAAAuAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbGRzY3JpcHRzL2kzODZsaW51eC54cgBsZHNjcmlwdHMvaTM4NmxpbnV4Lnh1AGxkc2NyaXB0cy9pMzg2bGludXgueGJuAGxkc2NyaXB0cy9pMzg2bGludXgueG4AbGRzY3JpcHRzL2kzODZsaW51eC54ACVzL2xpYiVzJXMuc2EAZWkzODZsaW51eC5jAGkzODZsaW51eABhLm91dC1pMzg2LWxpbnV4AAAAAAAAAAAvKiBTY3JpcHQgZm9yIGxkIC1VcjogbGluayB3L291dCByZWxvY2F0aW9uLCBkbyBjcmVhdGUgY29uc3RydWN0b3JzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1sMW9tIiwgImVsZjY0LWwxb20iLAoJICAgICAgImVsZjY0LWwxb20iKQpPVVRQVVRfQVJDSChsMW9tKQogLyogRm9yIHNvbWUgcmVhc29uLCB0aGUgU29sYXJpcyBsaW5rZXIgbWFrZXMgYmFkIGV4ZWN1dGFibGVzCiAgaWYgZ2xkIC1yIGlzIHVzZWQgYW5kIHRoZSBpbnRlcm1lZGlhdGUgZmlsZSBoYXMgc2VjdGlvbnMgc3RhcnRpbmcKICBhdCBub24temVybyBhZGRyZXNzZXMuICBDb3VsZCBiZSBhIFNvbGFyaXMgbGQgYnVnLCBjb3VsZCBiZSBhIEdOVSBsZAogIGJ1Zy4gIEJ1dCBmb3Igbm93IGFzc2lnbmluZyB0aGUgemVybyB2bWFzIHdvcmtzLiAgKi8KU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC5pbnRlcnAgICAgICAgMCA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgMCA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgMCA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgIDAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgMCA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAwIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kIDA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yIDA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgMCA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAwIDogeyAqKC5yZWxhLnRleHQpIH0KICAucmVsYS5maW5pICAgIDAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgMCA6IHsgKigucmVsYS5yb2RhdGEpIH0KICAucmVsYS5kYXRhLnJlbC5ybyAwIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvKSB9CiAgLnJlbGEuZGF0YSAgICAwIDogeyAqKC5yZWxhLmRhdGEpIH0KICAucmVsYS50ZGF0YQkwIDogeyAqKC5yZWxhLnRkYXRhKSB9CiAgLnJlbGEudGJzcwkwIDogeyAqKC5yZWxhLnRic3MpIH0KICAucmVsYS5jdG9ycyAgIDAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgIDAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgIDAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAwIDogeyAqKC5yZWxhLmJzcykgfQogIC5yZWxhLmxkYXRhICAgMCA6IHsgKigucmVsYS5sZGF0YSkgfQogIC5yZWxhLmxic3MgICAgMCA6IHsgKigucmVsYS5sYnNzKSB9CiAgLnJlbGEubHJvZGF0YSAwIDogeyAqKC5yZWxhLmxyb2RhdGEpIH0KICAucmVsYS5pZnVuYyAgIDAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgIDAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgMCA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAwIDoKICB7CiAgICAqKC50ZXh0IC5zdHViKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICAucm9kYXRhICAgICAgIDAgOiB7ICooLnJvZGF0YSkgfQogIC5yb2RhdGExICAgICAgMCA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgIH0KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiIDAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAgfQogIC5nbnVfZXh0YWIgICAgMCA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJMCA6IHsgKigudGRhdGEpIH0KICAudGJzcwkJMCA6IHsgKigudGJzcykgfQogIC5wcmVpbml0X2FycmF5ICAgMCA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5qY3IgICAgICAgICAgMCA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5keW5hbWljICAgICAgMCA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgMCA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLmdvdC5wbHQgICAgICAwIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgIDAgOgogIHsKICAgICooLmRhdGEpCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAwIDogeyAqKC5kYXRhMSkgfQogIC5ic3MgICAgICAgICAgMCA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcykKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgfQogIC5sYnNzIDAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC5scm9kYXRhIDAgIDoKICB7CiAgICAqKC5scm9kYXRhKQogIH0KICAubGRhdGEgMCAgOgogIHsKICAgICooLmxkYXRhKQogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQp9CgoAAAAAAAAALyogU2NyaXB0IGZvciBsZCAtcjogbGluayB3aXRob3V0IHJlbG9jYXRpb24gKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWwxb20iLCAiZWxmNjQtbDFvbSIsCgkgICAgICAiZWxmNjQtbDFvbSIpCk9VVFBVVF9BUkNIKGwxb20pCiAvKiBGb3Igc29tZSByZWFzb24sIHRoZSBTb2xhcmlzIGxpbmtlciBtYWtlcyBiYWQgZXhlY3V0YWJsZXMKICBpZiBnbGQgLXIgaXMgdXNlZCBhbmQgdGhlIGludGVybWVkaWF0ZSBmaWxlIGhhcyBzZWN0aW9ucyBzdGFydGluZwogIGF0IG5vbi16ZXJvIGFkZHJlc3Nlcy4gIENvdWxkIGJlIGEgU29sYXJpcyBsZCBidWcsIGNvdWxkIGJlIGEgR05VIGxkCiAgYnVnLiAgQnV0IGZvciBub3cgYXNzaWduaW5nIHRoZSB6ZXJvIHZtYXMgd29ya3MuICAqLwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLmludGVycCAgICAgICAwIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAwIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAwIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgMCA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAwIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gIDAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgMDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgMDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAwIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgIDAgOiB7ICooLnJlbGEudGV4dCkgfQogIC5yZWxhLmZpbmkgICAgMCA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAwIDogeyAqKC5yZWxhLnJvZGF0YSkgfQogIC5yZWxhLmRhdGEucmVsLnJvIDAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8pIH0KICAucmVsYS5kYXRhICAgIDAgOiB7ICooLnJlbGEuZGF0YSkgfQogIC5yZWxhLnRkYXRhCTAgOiB7ICooLnJlbGEudGRhdGEpIH0KICAucmVsYS50YnNzCTAgOiB7ICooLnJlbGEudGJzcykgfQogIC5yZWxhLmN0b3JzICAgMCA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgMCA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgMCA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgIDAgOiB7ICooLnJlbGEuYnNzKSB9CiAgLnJlbGEubGRhdGEgICAwIDogeyAqKC5yZWxhLmxkYXRhKSB9CiAgLnJlbGEubGJzcyAgICAwIDogeyAqKC5yZWxhLmxic3MpIH0KICAucmVsYS5scm9kYXRhIDAgOiB7ICooLnJlbGEubHJvZGF0YSkgfQogIC5yZWxhLmlmdW5jICAgMCA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgMCA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgfQogIC5pbml0ICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAwIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgIDAgOgogIHsKICAgICooLnRleHQgLnN0dWIpCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIC5yb2RhdGEgICAgICAgMCA6IHsgKigucm9kYXRhKSB9CiAgLnJvZGF0YTEgICAgICAwIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAgfQogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgMCA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgMCA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICB9CiAgLmdudV9leHRhYiAgICAwIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkwIDogeyAqKC50ZGF0YSkgfQogIC50YnNzCQkwIDogeyAqKC50YnNzKSB9CiAgLnByZWluaXRfYXJyYXkgICAwIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmpjciAgICAgICAgICAwIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmR5bmFtaWMgICAgICAwIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAwIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuZ290LnBsdCAgICAgIDAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgMCA6CiAgewogICAgKiguZGF0YSkKICB9CiAgLmRhdGExICAgICAgICAwIDogeyAqKC5kYXRhMSkgfQogIC5ic3MgICAgICAgICAgMCA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcykKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgfQogIC5sYnNzIDAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC5scm9kYXRhIDAgIDoKICB7CiAgICAqKC5scm9kYXRhKQogIH0KICAubGRhdGEgMCAgOgogIHsKICAgICooLmxkYXRhKQogIH0KICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQp9CgoAAAAAAC8qIFNjcmlwdCBmb3IgLU46IG1peCB0ZXh0IGFuZCBkYXRhIG9uIHNhbWUgcGFnZTsgZG9uJ3QgYWxpZ24gZGF0YSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbDFvbSIsICJlbGY2NC1sMW9tIiwKCSAgICAgICJlbGY2NC1sMW9tIikKT1VUUFVUX0FSQ0gobDFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IC47CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLW46IG1peCB0ZXh0IGFuZCBkYXRhIG9uIHNhbWUgcGFnZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbDFvbSIsICJlbGY2NC1sMW9tIiwKCSAgICAgICJlbGY2NC1sMW9tIikKT1VUUFVUX0FSQ0gobDFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAC8qIFNjcmlwdCBmb3IgLXBpZSAteiBjb21icmVsb2MgLXogbm93IC16IHJlbHJvOiBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlLCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWwxb20iLCAiZWxmNjQtbDFvbSIsCgkgICAgICAiZWxmNjQtbDFvbSIpCk9VVFBVVF9BUkNIKGwxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdC5wbHQpICooLmlnb3QucGx0KSAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoMCwgLik7CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jOiBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlLCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWwxb20iLCAiZWxmNjQtbDFvbSIsCgkgICAgICAiZWxmNjQtbDFvbSIpCk9VVFBVVF9BUkNIKGwxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgbGQgLXBpZTogbGluayBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1sMW9tIiwgImVsZjY0LWwxb20iLAoJICAgICAgImVsZjY0LWwxb20iKQpPVVRQVVRfQVJDSChsMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAC8qIFNjcmlwdCBmb3IgLS1zaGFyZWQgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybzogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbDFvbSIsICJlbGY2NC1sMW9tIiwKCSAgICAgICJlbGY2NC1sMW9tIikKT1VUUFVUX0FSQ0gobDFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAC8qIFNjcmlwdCBmb3IgLS1zaGFyZWQgLXogY29tYnJlbG9jOiBzaGFyZWQgbGlicmFyeSwgY29tYmluZSAmIHNvcnQgcmVsb2NzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1sMW9tIiwgImVsZjY0LWwxb20iLAoJICAgICAgImVsZjY0LWwxb20iKQpPVVRQVVRfQVJDSChsMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgICooLnJlbGEuaXBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAvKiBTY3JpcHQgZm9yIGxkIC0tc2hhcmVkOiBsaW5rIHNoYXJlZCBsaWJyYXJ5ICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1sMW9tIiwgImVsZjY0LWwxb20iLAoJICAgICAgImVsZjY0LWwxb20iKQpPVVRQVVRfQVJDSChsMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAAAC8qIFNjcmlwdCBmb3IgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybzogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtbDFvbSIsICJlbGY2NC1sMW9tIiwKCSAgICAgICJlbGY2NC1sMW9tIikKT1VUUFVUX0FSQ0gobDFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAC8qIFNjcmlwdCBmb3IgLXogY29tYnJlbG9jOiBjb21iaW5lIGFuZCBzb3J0IHJlbG9jIHNlY3Rpb25zICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1sMW9tIiwgImVsZjY0LWwxb20iLAoJICAgICAgImVsZjY0LWwxb20iKQpPVVRQVVRfQVJDSChsMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmR5biAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEuaW5pdCkKICAgICAgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKQogICAgICAqKC5yZWxhLmZpbmkpCiAgICAgICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopCiAgICAgICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikKICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKQogICAgICAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKQogICAgICAqKC5yZWxhLmN0b3JzKQogICAgICAqKC5yZWxhLmR0b3JzKQogICAgICAqKC5yZWxhLmdvdCkKICAgICAgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikKICAgICAgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopCiAgICAgICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopCiAgICAgICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopCiAgICAgICooLnJlbGEuaWZ1bmMpCiAgICB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9zdGFydCA9IC4pOwogICAgICAqKC5yZWxhLmlwbHQpCiAgICAgIFBST1ZJREVfSElEREVOIChfX3JlbGFfaXBsdF9lbmQgPSAuKTsKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7CiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAvKiBEZWZhdWx0IGxpbmtlciBzY3JpcHQsIGZvciBub3JtYWwgZXhlY3V0YWJsZXMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWwxb20iLCAiZWxmNjQtbDFvbSIsCgkgICAgICAiZWxmNjQtbDFvbSIpCk9VVFBVVF9BUkNIKGwxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAg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YSBTb2xhcmlzIGxkIGJ1ZywgY291bGQgYmUgYSBHTlUgbGQKICBidWcuICBCdXQgZm9yIG5vdyBhc3NpZ25pbmcgdGhlIHplcm8gdm1hcyB3b3Jrcy4gICovClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuaW50ZXJwICAgICAgIDAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgIDAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgIDAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAwIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgIDAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgMCA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAwOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAwOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgIDAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgMCA6IHsgKigucmVsYS50ZXh0KSB9CiAgLnJlbGEuZmluaSAgICAwIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgIDAgOiB7ICooLnJlbGEucm9kYXRhKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gMCA6IHsgKigucmVsYS5kYXRhLnJlbC5ybykgfQogIC5yZWxhLmRhdGEgICAgMCA6IHsgKigucmVsYS5kYXRhKSB9CiAgLnJlbGEudGRhdGEJMCA6IHsgKigucmVsYS50ZGF0YSkgfQogIC5yZWxhLnRic3MJMCA6IHsgKigucmVsYS50YnNzKSB9CiAgLnJlbGEuY3RvcnMgICAwIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAwIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAwIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgMCA6IHsgKigucmVsYS5ic3MpIH0KICAucmVsYS5sZGF0YSAgIDAgOiB7ICooLnJlbGEubGRhdGEpIH0KICAucmVsYS5sYnNzICAgIDAgOiB7ICooLnJlbGEubGJzcykgfQogIC5yZWxhLmxyb2RhdGEgMCA6IHsgKigucmVsYS5scm9kYXRhKSB9CiAgLnJlbGEuaWZ1bmMgICAwIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAwIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgIDAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgMCA6CiAgewogICAgKigudGV4dCAuc3R1YikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgMCA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgLnJvZGF0YSAgICAgICAwIDogeyAqKC5yb2RhdGEpIH0KICAucm9kYXRhMSAgICAgIDAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICB9CiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAwIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgMCA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAwIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgIH0KICAuZ251X2V4dGFiICAgIDAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgMCA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCTAgOiB7ICooLnRkYXRhKSB9CiAgLnRic3MJCTAgOiB7ICooLnRic3MpIH0KICAucHJlaW5pdF9hcnJheSAgIDAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuamNyICAgICAgICAgIDAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZHluYW1pYyAgICAgIDAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgIDAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC5nb3QucGx0ICAgICAgMCA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAwIDoKICB7CiAgICAqKC5kYXRhKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgMCA6IHsgKiguZGF0YTEpIH0KICAuYnNzICAgICAgICAgIDAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MpCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogIH0KICAubGJzcyAwIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcykKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAubHJvZGF0YSAwICA6CiAgewogICAgKigubHJvZGF0YSkKICB9CiAgLmxkYXRhIDAgIDoKICB7CiAgICAqKC5sZGF0YSkKICB9CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbykgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KfQoKAAAAAAAAAC8qIFNjcmlwdCBmb3IgbGQgLXI6IGxpbmsgd2l0aG91dCByZWxvY2F0aW9uICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1rMW9tIiwgImVsZjY0LWsxb20iLAoJICAgICAgImVsZjY0LWsxb20iKQpPVVRQVVRfQVJDSChrMW9tKQogLyogRm9yIHNvbWUgcmVhc29uLCB0aGUgU29sYXJpcyBsaW5rZXIgbWFrZXMgYmFkIGV4ZWN1dGFibGVzCiAgaWYgZ2xkIC1yIGlzIHVzZWQgYW5kIHRoZSBpbnRlcm1lZGlhdGUgZmlsZSBoYXMgc2VjdGlvbnMgc3RhcnRpbmcKICBhdCBub24temVybyBhZGRyZXNzZXMuICBDb3VsZCBiZSBhIFNvbGFyaXMgbGQgYnVnLCBjb3VsZCBiZSBhIEdOVSBsZAogIGJ1Zy4gIEJ1dCBmb3Igbm93IGFzc2lnbmluZyB0aGUgemVybyB2bWFzIHdvcmtzLiAgKi8KU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC5pbnRlcnAgICAgICAgMCA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgMCA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgMCA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgIDAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgMCA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAwIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kIDA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yIDA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgMCA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAwIDogeyAqKC5yZWxhLnRleHQpIH0KICAucmVsYS5maW5pICAgIDAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgMCA6IHsgKigucmVsYS5yb2RhdGEpIH0KICAucmVsYS5kYXRhLnJlbC5ybyAwIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvKSB9CiAgLnJlbGEuZGF0YSAgICAwIDogeyAqKC5yZWxhLmRhdGEpIH0KICAucmVsYS50ZGF0YQkwIDogeyAqKC5yZWxhLnRkYXRhKSB9CiAgLnJlbGEudGJzcwkwIDogeyAqKC5yZWxhLnRic3MpIH0KICAucmVsYS5jdG9ycyAgIDAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgIDAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgIDAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAwIDogeyAqKC5yZWxhLmJzcykgfQogIC5yZWxhLmxkYXRhICAgMCA6IHsgKigucmVsYS5sZGF0YSkgfQogIC5yZWxhLmxic3MgICAgMCA6IHsgKigucmVsYS5sYnNzKSB9CiAgLnJlbGEubHJvZGF0YSAwIDogeyAqKC5yZWxhLmxyb2RhdGEpIH0KICAucmVsYS5pZnVuYyAgIDAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgIDAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgIDAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgMCA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAwIDoKICB7CiAgICAqKC50ZXh0IC5zdHViKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAwIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICAucm9kYXRhICAgICAgIDAgOiB7ICooLnJvZGF0YSkgfQogIC5yb2RhdGExICAgICAgMCA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgIH0KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAgfQogIC5nY2NfZXhjZXB0X3RhYmxlIDAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiIDAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAwIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgIDAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAgfQogIC5nbnVfZXh0YWIgICAgMCA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAwIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzIDAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJMCA6IHsgKigudGRhdGEpIH0KICAudGJzcwkJMCA6IHsgKigudGJzcykgfQogIC5wcmVpbml0X2FycmF5ICAgMCA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5qY3IgICAgICAgICAgMCA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5keW5hbWljICAgICAgMCA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgMCA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLmdvdC5wbHQgICAgICAwIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgIDAgOgogIHsKICAgICooLmRhdGEpCiAgfQogIC5kYXRhMSAgICAgICAgMCA6IHsgKiguZGF0YTEpIH0KICAuYnNzICAgICAgICAgIDAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MpCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogIH0KICAubGJzcyAwIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcykKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAubHJvZGF0YSAwICA6CiAgewogICAgKigubHJvZGF0YSkKICB9CiAgLmxkYXRhIDAgIDoKICB7CiAgICAqKC5sZGF0YSkKICB9CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbykgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KfQoKAAAAAAAvKiBTY3JpcHQgZm9yIC1OOiBtaXggdGV4dCBhbmQgZGF0YSBvbiBzYW1lIHBhZ2U7IGRvbid0IGFsaWduIGRhdGEgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWsxb20iLCAiZWxmNjQtazFvbSIsCgkgICAgICAiZWxmNjQtazFvbSIpCk9VVFBVVF9BUkNIKGsxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSAuOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIC1uOiBtaXggdGV4dCBhbmQgZGF0YSBvbiBzYW1lIHBhZ2UgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWsxb20iLCAiZWxmNjQtazFvbSIsCgkgICAgICAiZWxmNjQtazFvbSIpCk9VVFBVVF9BUkNIKGsxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAvKiBTY3JpcHQgZm9yIC1waWUgLXogY29tYnJlbG9jIC16IG5vdyAteiByZWxybzogcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSwgY29tYmluZSAmIHNvcnQgcmVsb2NzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1rMW9tIiwgImVsZjY0LWsxb20iLAoJICAgICAgImVsZjY0LWsxb20iKQpPVVRQVVRfQVJDSChrMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5pZ290LnBsdCkgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKDAsIC4pOwogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAAAAALyogU2NyaXB0IGZvciAtcGllIC16IGNvbWJyZWxvYzogcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSwgY29tYmluZSAmIHNvcnQgcmVsb2NzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1rMW9tIiwgImVsZjY0LWsxb20iLAoJICAgICAgImVsZjY0LWsxb20iKQpPVVRQVVRfQVJDSChrMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIGxkIC1waWU6IGxpbmsgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtazFvbSIsICJlbGY2NC1rMW9tIiwKCSAgICAgICJlbGY2NC1rMW9tIikKT1VUUFVUX0FSQ0goazFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuaW5pdCAgICAgIDogeyAqKC5yZWxhLmluaXQpIH0KICAucmVsYS50ZXh0ICAgICAgOiB7ICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikgfQogIC5yZWxhLmZpbmkgICAgICA6IHsgKigucmVsYS5maW5pKSB9CiAgLnJlbGEucm9kYXRhICAgIDogeyAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJlbGEuZGF0YS5yZWwucm8gICA6IHsgKigucmVsYS5kYXRhLnJlbC5ybyAucmVsYS5kYXRhLnJlbC5yby4qIC5yZWxhLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLnJlbGEuZGF0YSAgICAgIDogeyAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopIH0KICAucmVsYS50ZGF0YQkgIDogeyAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopIH0KICAucmVsYS50YnNzCSAgOiB7ICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopIH0KICAucmVsYS5jdG9ycyAgICAgOiB7ICooLnJlbGEuY3RvcnMpIH0KICAucmVsYS5kdG9ycyAgICAgOiB7ICooLnJlbGEuZHRvcnMpIH0KICAucmVsYS5nb3QgICAgICAgOiB7ICooLnJlbGEuZ290KSB9CiAgLnJlbGEuYnNzICAgICAgIDogeyAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKSB9CiAgLnJlbGEubGRhdGEgICAgIDogeyAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikgfQogIC5yZWxhLmxic3MgICAgICA6IHsgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikgfQogIC5yZWxhLmxyb2RhdGEgICA6IHsgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikgfQogIC5yZWxhLmlmdW5jICAgICA6IHsgKigucmVsYS5pZnVuYykgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAvKiBTY3JpcHQgZm9yIC0tc2hhcmVkIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm86IHNoYXJlZCBsaWJyYXJ5LCBjb21iaW5lICYgc29ydCByZWxvY3MgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWsxb20iLCAiZWxmNjQtazFvbSIsCgkgICAgICAiZWxmNjQtazFvbSIpCk9VVFBVVF9BUkNIKGsxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgKigucmVsYS5pcGx0KQogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgfQogIC5maW5pX2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmZpbmlfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5maW5pX2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAvKiBTY3JpcHQgZm9yIC0tc2hhcmVkIC16IGNvbWJyZWxvYzogc2hhcmVkIGxpYnJhcnksIGNvbWJpbmUgJiBzb3J0IHJlbG9jcyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtazFvbSIsICJlbGY2NC1rMW9tIiwKCSAgICAgICJlbGY2NC1rMW9tIikKT1VUUFVUX0FSQ0goazFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICAqKC5yZWxhLmlwbHQpCiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgfQogIC5pbml0X2FycmF5ICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5pbml0X2FycmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAAAAAALyogU2NyaXB0IGZvciBsZCAtLXNoYXJlZDogbGluayBzaGFyZWQgbGlicmFyeSAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtazFvbSIsICJlbGY2NC1rMW9tIiwKCSAgICAgICJlbGY2NC1rMW9tIikKT1VUUFVUX0FSQ0goazFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5pbml0ICAgICAgOiB7ICooLnJlbGEuaW5pdCkgfQogIC5yZWxhLnRleHQgICAgICA6IHsgKigucmVsYS50ZXh0IC5yZWxhLnRleHQuKiAucmVsYS5nbnUubGlua29uY2UudC4qKSB9CiAgLnJlbGEuZmluaSAgICAgIDogeyAqKC5yZWxhLmZpbmkpIH0KICAucmVsYS5yb2RhdGEgICAgOiB7ICooLnJlbGEucm9kYXRhIC5yZWxhLnJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5yLiopIH0KICAucmVsYS5kYXRhLnJlbC5ybyAgIDogeyAqKC5yZWxhLmRhdGEucmVsLnJvIC5yZWxhLmRhdGEucmVsLnJvLiogLnJlbGEuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAucmVsYS5kYXRhICAgICAgOiB7ICooLnJlbGEuZGF0YSAucmVsYS5kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmQuKikgfQogIC5yZWxhLnRkYXRhCSAgOiB7ICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikgfQogIC5yZWxhLnRic3MJICA6IHsgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikgfQogIC5yZWxhLmN0b3JzICAgICA6IHsgKigucmVsYS5jdG9ycykgfQogIC5yZWxhLmR0b3JzICAgICA6IHsgKigucmVsYS5kdG9ycykgfQogIC5yZWxhLmdvdCAgICAgICA6IHsgKigucmVsYS5nb3QpIH0KICAucmVsYS5ic3MgICAgICAgOiB7ICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopIH0KICAucmVsYS5sZGF0YSAgICAgOiB7ICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKSB9CiAgLnJlbGEubGJzcyAgICAgIDogeyAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKSB9CiAgLnJlbGEubHJvZGF0YSAgIDogeyAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKSB9CiAgLnJlbGEuaWZ1bmMgICAgIDogeyAqKC5yZWxhLmlmdW5jKSB9CiAgLnJlbGEucGx0ICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5wbHQpCiAgICAgICooLnJlbGEuaXBsdCkKICAgIH0KICAuaW5pdCAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5pbml0KSkpCiAgfQogIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSAqKC5pcGx0KSB9CiAgLnRleHQgICAgICAgICAgIDoKICB7CiAgICAqKC50ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKICAgICooLnRleHQuZXhpdCAudGV4dC5leGl0LiopCiAgICAqKC50ZXh0LnN0YXJ0dXAgLnRleHQuc3RhcnR1cC4qKQogICAgKigudGV4dC5ob3QgLnRleHQuaG90LiopCiAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCiAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KICAgICooLmdudS53YXJuaW5nKQogIH0KICAuZmluaSAgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9OT05FKC5maW5pKSkpCiAgfQogIFBST1ZJREUgKF9fZXRleHQgPSAuKTsKICBQUk9WSURFIChfZXRleHQgPSAuKTsKICBQUk9WSURFIChldGV4dCA9IC4pOwogIC5yb2RhdGEgICAgICAgICA6IHsgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yb2RhdGExICAgICAgICA6IHsgKigucm9kYXRhMSkgfQogIC5laF9mcmFtZV9oZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgKiguZWhfZnJhbWVfZW50cnkgLmVoX2ZyYW1lX2VudHJ5LiopIH0KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JPIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUk8geyAqKC5nY2NfZXhjZXB0X3RhYmxlCiAgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5nbnVfZXh0YWIgICA6IE9OTFlfSUZfUk8geyAqKC5nbnVfZXh0YWIqKSB9CiAgLyogVGhlc2Ugc2VjdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0aGUgU3VuL09yYWNsZSBDKysgY29tcGlsZXIuICAqLwogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JPIHsgKiguZXhjZXB0aW9uX3JhbmdlcwogIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIEFkanVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0IHVwIHRvCiAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4gICovCiAgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1PTlBBR0VTSVpFKSk7CiAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLwogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUlcgeyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ251X2V4dGFiICAgICAgOiBPTkxZX0lGX1JXIHsgKiguZ251X2V4dGFiKSB9CiAgLmdjY19leGNlcHRfdGFibGUgICA6IE9OTFlfSUZfUlcgeyAqKC5nY2NfZXhjZXB0X3RhYmxlIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9SVyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogVGhyZWFkIExvY2FsIFN0b3JhZ2Ugc2VjdGlvbnMgICovCiAgLnRkYXRhCSAgOiB7ICooLnRkYXRhIC50ZGF0YS4qIC5nbnUubGlua29uY2UudGQuKikgfQogIC50YnNzCQkgIDogeyAqKC50YnNzIC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CiAgLnByZWluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgfQogIC5jdG9ycyAgICAgICAgICA6CiAgewogICAgLyogZ2NjIHVzZXMgY3J0YmVnaW4ubyB0byBmaW5kIHRoZSBzdGFydCBvZgogICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzCiAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUKICAgICAgIGxpbmtlciB3b24ndCBsb29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQogICAgICAgd2lsZGNhcmQuICBUaGUgd2lsZGNhcmQgYWxzbyBtZWFucyB0aGF0IGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubwogICAgICAgaXMgaW4uICAqLwogICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQogICAgLyogV2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoZSAuY3RvciBzZWN0aW9uIGZyb20KICAgICAgIHRoZSBjcnRlbmQubyBmaWxlIHVudGlsIGFmdGVyIHRoZSBzb3J0ZWQgY3RvcnMuCiAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUKICAgICAgIGVuZCBvZiBjdG9ycyBtYXJrZXIgYW5kIGl0IG11c3QgYmUgbGFzdCAqLwogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmN0b3JzKSkKICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQogICAgS0VFUCAoKiguY3RvcnMpKQogIH0KICAuZHRvcnMgICAgICAgICAgOgogIHsKICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkKICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmR0b3JzKSkKICB9CiAgLmpjciAgICAgICAgICAgIDogeyBLRUVQICgqKC5qY3IpKSB9CiAgLmRhdGEucmVsLnJvIDogeyAqKC5kYXRhLnJlbC5yby5sb2NhbCogLmdudS5saW5rb25jZS5kLnJlbC5yby5sb2NhbC4qKSAqKC5kYXRhLnJlbC5ybyAuZGF0YS5yZWwucm8uKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KICAuZ290ICAgICAgICAgICAgOiB7ICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EIChTSVpFT0YgKC5nb3QucGx0KSA+PSAyNCA/IDI0IDogMCwgLik7CiAgLmdvdC5wbHQgICAgICAgIDogeyAqKC5nb3QucGx0KSAgKiguaWdvdC5wbHQpIH0KICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAAAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYyAteiBub3cgLXogcmVscm86IGNvbWJpbmUgYW5kIHNvcnQgcmVsb2Mgc2VjdGlvbnMgKi8KLyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHNjcmlwdCwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CiAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gICovCk9VVFBVVF9GT1JNQVQoImVsZjY0LWsxb20iLCAiZWxmNjQtazFvbSIsCgkgICAgICAiZWxmNjQtazFvbSIpCk9VVFBVVF9BUkNIKGsxb20pCkVOVFJZKF9zdGFydCkKU0VBUkNIX0RJUigiPS91c3IveDg2XzY0LWNyb3MtbGludXgtZ251L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9sb2NhbC9saWIiKTsgU0VBUkNIX0RJUigiPS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbGliIik7ClNFQ1RJT05TCnsKICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICBQUk9WSURFIChfX2V4ZWN1dGFibGVfc3RhcnQgPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkpOyAuID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApICsgU0laRU9GX0hFQURFUlM7CiAgLmludGVycCAgICAgICAgIDogeyAqKC5pbnRlcnApIH0KICAubm90ZS5nbnUuYnVpbGQtaWQgOiB7ICooLm5vdGUuZ251LmJ1aWxkLWlkKSB9CiAgLmhhc2ggICAgICAgICAgIDogeyAqKC5oYXNoKSB9CiAgLmdudS5oYXNoICAgICAgIDogeyAqKC5nbnUuaGFzaCkgfQogIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9CiAgLmR5bnN0ciAgICAgICAgIDogeyAqKC5keW5zdHIpIH0KICAuZ251LnZlcnNpb24gICAgOiB7ICooLmdudS52ZXJzaW9uKSB9CiAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9kKSB9CiAgLmdudS52ZXJzaW9uX3IgIDogeyAqKC5nbnUudmVyc2lvbl9yKSB9CiAgLnJlbGEuZHluICAgICAgIDoKICAgIHsKICAgICAgKigucmVsYS5pbml0KQogICAgICAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCiAgICAgICooLnJlbGEuZmluaSkKICAgICAgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikKICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKQogICAgICAqKC5yZWxhLnRkYXRhIC5yZWxhLnRkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnRkLiopCiAgICAgICooLnJlbGEudGJzcyAucmVsYS50YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnRiLiopCiAgICAgICooLnJlbGEuY3RvcnMpCiAgICAgICooLnJlbGEuZHRvcnMpCiAgICAgICooLnJlbGEuZ290KQogICAgICAqKC5yZWxhLmJzcyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQogICAgICAqKC5yZWxhLmxkYXRhIC5yZWxhLmxkYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmwuKikKICAgICAgKigucmVsYS5sYnNzIC5yZWxhLmxic3MuKiAucmVsYS5nbnUubGlua29uY2UubGIuKikKICAgICAgKigucmVsYS5scm9kYXRhIC5yZWxhLmxyb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2UubHIuKikKICAgICAgKigucmVsYS5pZnVuYykKICAgIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290LnBsdCkgKiguaWdvdC5wbHQpICooLmdvdCkgKiguaWdvdCkgfQogIC4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgwLCAuKTsKICAuZGF0YSAgICAgICAgICAgOgogIHsKICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKICAgIFNPUlQoQ09OU1RSVUNUT1JTKQogIH0KICAuZGF0YTEgICAgICAgICAgOiB7ICooLmRhdGExKSB9CiAgX2VkYXRhID0gLjsgUFJPVklERSAoZWRhdGEgPSAuKTsKICBfX2Jzc19zdGFydCA9IC47CiAgLmJzcyAgICAgICAgICAgIDoKICB7CiAgICooLmR5bmJzcykKICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKICAgKihDT01NT04pCiAgIC8qIEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFjZSB1cCB0bwogICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUKICAgICAgLmJzcyBzZWN0aW9uIGRpc2FwcGVhcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXQgc2VjdGlvbnMuCiAgICAgIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CiAgICAgIHBhZCB0aGUgLmRhdGEgc2VjdGlvbi4gICovCiAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLmxic3MgICA6CiAgewogICAgKiguZHlubGJzcykKICAgICooLmxic3MgLmxic3MuKiAuZ251LmxpbmtvbmNlLmxiLiopCiAgICAqKExBUkdFX0NPTU1PTikKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgLiA9IFNFR01FTlRfU1RBUlQoImxkYXRhLXNlZ21lbnQiLCAuKTsKICAubHJvZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubHJvZGF0YSAubHJvZGF0YS4qIC5nbnUubGlua29uY2UubHIuKikKICB9CiAgLmxkYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5sZGF0YSAubGRhdGEuKiAuZ251LmxpbmtvbmNlLmwuKikKICAgIC4gPSBBTElHTiguICE9IDAgPyA2NCAvIDggOiAxKTsKICB9CiAgLiA9IEFMSUdOKDY0IC8gOCk7CiAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOwogIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsKICAvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0KICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9CiAgLnN0YWIuZXhjbCAgICAgMCA6IHsgKiguc3RhYi5leGNsKSB9CiAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9CiAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRleCkgfQogIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCiAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCiAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KICAvKiBEV0FSRiAxICovCiAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9CiAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCiAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQogIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwogIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9CiAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9CiAgLyogRFdBUkYgMiAqLwogIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQogIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19saW5lX2VuZCApIH0KICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9CiAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQogIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9CiAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCiAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQogIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CiAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQogIC8qIERXQVJGIDMgKi8KICAuZGVidWdfcHVidHlwZXMgMCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0KICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9CiAgLyogRFdBUkYgRXh0ZW5zaW9uLiAgKi8KICAuZGVidWdfbWFjcm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0KICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQogIC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH0KICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVfZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0KfQoKAAAvKiBTY3JpcHQgZm9yIC16IGNvbWJyZWxvYzogY29tYmluZSBhbmQgc29ydCByZWxvYyBzZWN0aW9ucyAqLwovKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgc2NyaXB0LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgKi8KT1VUUFVUX0ZPUk1BVCgiZWxmNjQtazFvbSIsICJlbGY2NC1rMW9tIiwKCSAgICAgICJlbGY2NC1rMW9tIikKT1VUUFVUX0FSQ0goazFvbSkKRU5UUlkoX3N0YXJ0KQpTRUFSQ0hfRElSKCI9L3Vzci94ODZfNjQtY3Jvcy1saW51eC1nbnUvbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCI9L2xpYiIpOyBTRUFSQ0hfRElSKCI9L3Vzci9saWIiKTsKU0VDVElPTlMKewogIC8qIFJlYWQtb25seSBzZWN0aW9ucywgbWVyZ2VkIGludG8gdGV4dCBzZWdtZW50OiAqLwogIFBST1ZJREUgKF9fZXhlY3V0YWJsZV9zdGFydCA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSk7IC4gPSBTRUdNRU5UX1NUQVJUKCJ0ZXh0LXNlZ21lbnQiLCAweDQwMDAwMCkgKyBTSVpFT0ZfSEVBREVSUzsKICAuaW50ZXJwICAgICAgICAgOiB7ICooLmludGVycCkgfQogIC5ub3RlLmdudS5idWlsZC1pZCA6IHsgKigubm90ZS5nbnUuYnVpbGQtaWQpIH0KICAuaGFzaCAgICAgICAgICAgOiB7ICooLmhhc2gpIH0KICAuZ251Lmhhc2ggICAgICAgOiB7ICooLmdudS5oYXNoKSB9CiAgLmR5bnN5bSAgICAgICAgIDogeyAqKC5keW5zeW0pIH0KICAuZHluc3RyICAgICAgICAgOiB7ICooLmR5bnN0cikgfQogIC5nbnUudmVyc2lvbiAgICA6IHsgKiguZ251LnZlcnNpb24pIH0KICAuZ251LnZlcnNpb25fZCAgOiB7ICooLmdudS52ZXJzaW9uX2QpIH0KICAuZ251LnZlcnNpb25fciAgOiB7ICooLmdudS52ZXJzaW9uX3IpIH0KICAucmVsYS5keW4gICAgICAgOgogICAgewogICAgICAqKC5yZWxhLmluaXQpCiAgICAgICooLnJlbGEudGV4dCAucmVsYS50ZXh0LiogLnJlbGEuZ251LmxpbmtvbmNlLnQuKikKICAgICAgKigucmVsYS5maW5pKQogICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5nbnUubGlua29uY2Uuci4qKQogICAgICAqKC5yZWxhLmRhdGEgLnJlbGEuZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5kLiopCiAgICAgICooLnJlbGEudGRhdGEgLnJlbGEudGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UudGQuKikKICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVsYS5nbnUubGlua29uY2UudGIuKikKICAgICAgKigucmVsYS5jdG9ycykKICAgICAgKigucmVsYS5kdG9ycykKICAgICAgKigucmVsYS5nb3QpCiAgICAgICooLnJlbGEuYnNzIC5yZWxhLmJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5iLiopCiAgICAgICooLnJlbGEubGRhdGEgLnJlbGEubGRhdGEuKiAucmVsYS5nbnUubGlua29uY2UubC4qKQogICAgICAqKC5yZWxhLmxic3MgLnJlbGEubGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS5sYi4qKQogICAgICAqKC5yZWxhLmxyb2RhdGEgLnJlbGEubHJvZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sci4qKQogICAgICAqKC5yZWxhLmlmdW5jKQogICAgfQogIC5yZWxhLnBsdCAgICAgICA6CiAgICB7CiAgICAgICooLnJlbGEucGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfc3RhcnQgPSAuKTsKICAgICAgKigucmVsYS5pcGx0KQogICAgICBQUk9WSURFX0hJRERFTiAoX19yZWxhX2lwbHRfZW5kID0gLik7CiAgICB9CiAgLmluaXQgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguaW5pdCkpKQogIH0KICAucGx0ICAgICAgICAgICAgOiB7ICooLnBsdCkgKiguaXBsdCkgfQogIC50ZXh0ICAgICAgICAgICA6CiAgewogICAgKigudGV4dC51bmxpa2VseSAudGV4dC4qX3VubGlrZWx5IC50ZXh0LnVubGlrZWx5LiopCiAgICAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogICAgKigudGV4dC5zdGFydHVwIC50ZXh0LnN0YXJ0dXAuKikKICAgICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogICAgKigudGV4dCAuc3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovCiAgICAqKC5nbnUud2FybmluZykKICB9CiAgLmZpbmkgICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQogIH0KICBQUk9WSURFIChfX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoX2V0ZXh0ID0gLik7CiAgUFJPVklERSAoZXRleHQgPSAuKTsKICAucm9kYXRhICAgICAgICAgOiB7ICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopIH0KICAucm9kYXRhMSAgICAgICAgOiB7ICooLnJvZGF0YTEpIH0KICAuZWhfZnJhbWVfaGRyIDogeyAqKC5laF9mcmFtZV9oZHIpICooLmVoX2ZyYW1lX2VudHJ5IC5laF9mcmFtZV9lbnRyeS4qKSB9CiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9STyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZQogIC5nY2NfZXhjZXB0X3RhYmxlLiopIH0KICAuZ251X2V4dGFiICAgOiBPTkxZX0lGX1JPIHsgKiguZ251X2V4dGFiKikgfQogIC8qIFRoZXNlIHNlY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIFN1bi9PcmFjbGUgQysrIGNvbXBpbGVyLiAgKi8KICAuZXhjZXB0aW9uX3JhbmdlcyAgIDogT05MWV9JRl9STyB7ICooLmV4Y2VwdGlvbl9yYW5nZXMKICAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bwogICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0IHBhZ2UgdXAuICAqLwogIC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSksIENPTlNUQU5UIChDT01NT05QQUdFU0laRSkpOwogIC8qIEV4Y2VwdGlvbiBoYW5kbGluZyAgKi8KICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSAqKC5laF9mcmFtZS4qKSB9CiAgLmdudV9leHRhYiAgICAgIDogT05MWV9JRl9SVyB7ICooLmdudV9leHRhYikgfQogIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUlcgeyAqKC5leGNlcHRpb25fcmFuZ2VzIC5leGNlcHRpb25fcmFuZ2VzKikgfQogIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLwogIC50ZGF0YQkgIDogeyAqKC50ZGF0YSAudGRhdGEuKiAuZ251LmxpbmtvbmNlLnRkLiopIH0KICAudGJzcwkJICA6IHsgKigudGJzcyAudGJzcy4qIC5nbnUubGlua29uY2UudGIuKikgKigudGNvbW1vbikgfQogIC5wcmVpbml0X2FycmF5ICAgICA6CiAgewogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwogICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCiAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5pbml0X2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguY3RvcnMuKikpKQogICAgS0VFUCAoKiguaW5pdF9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogIH0KICAuZmluaV9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5LiopIFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZmluaV9hcnJheSBFWENMVURFX0ZJTEUgKCpjcnRiZWdpbi5vICpjcnRiZWdpbj8ubyAqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5kdG9ycykpCiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwogIH0KICAuY3RvcnMgICAgICAgICAgOgogIHsKICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YKICAgICAgIHRoZSBjb25zdHJ1Y3RvcnMsIHNvIHdlIG1ha2Ugc3VyZSBpdCBpcwogICAgICAgZmlyc3QuICBCZWNhdXNlIHRoaXMgaXMgYSB3aWxkY2FyZCwgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICBhY3R1YWxseSBsaW5rIGFnYWluc3QgY3J0YmVnaW4ubzsgdGhlCiAgICAgICBsaW5rZXIgd29uJ3QgbG9vayBmb3IgYSBmaWxlIHRvIG1hdGNoIGEKICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdAogICAgICAgZG9lc24ndCBtYXR0ZXIgd2hpY2ggZGlyZWN0b3J5IGNydGJlZ2luLm8KICAgICAgIGlzIGluLiAgKi8KICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCiAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmN0b3JzKSkKICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlvbiBmcm9tCiAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLgogICAgICAgVGhlIC5jdG9yIHNlY3Rpb24gZnJvbSB0aGUgY3J0ZW5kIGZpbGUgY29udGFpbnMgdGhlCiAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3QgKi8KICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpCiAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmN0b3JzKSkKICB9CiAgLmR0b3JzICAgICAgICAgIDoKICB7CiAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5kdG9ycykpCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCiAgICBLRUVQICgqKC5kdG9ycykpCiAgfQogIC5qY3IgICAgICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQogIC5kYXRhLnJlbC5ybyA6IHsgKiguZGF0YS5yZWwucm8ubG9jYWwqIC5nbnUubGlua29uY2UuZC5yZWwucm8ubG9jYWwuKikgKiguZGF0YS5yZWwucm8gLmRhdGEucmVsLnJvLiogLmdudS5saW5rb25jZS5kLnJlbC5yby4qKSB9CiAgLmR5bmFtaWMgICAgICAgIDogeyAqKC5keW5hbWljKSB9CiAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QpICooLmlnb3QpIH0KICAuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoU0laRU9GICguZ290LnBsdCkgPj0gMjQgPyAyNCA6IDAsIC4pOwogIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgICooLmlnb3QucGx0KSB9CiAgLmRhdGEgICAgICAgICAgIDoKICB7CiAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCiAgICBTT1JUKENPTlNUUlVDVE9SUykKICB9CiAgLmRhdGExICAgICAgICAgIDogeyAqKC5kYXRhMSkgfQogIF9lZGF0YSA9IC47IFBST1ZJREUgKGVkYXRhID0gLik7CiAgX19ic3Nfc3RhcnQgPSAuOwogIC5ic3MgICAgICAgICAgICA6CiAgewogICAqKC5keW5ic3MpCiAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCiAgICooQ09NTU9OKQogICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8KICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25tZW50IGV2ZW4gaWYgdGhlCiAgICAgIC5ic3Mgc2VjdGlvbiBkaXNhcHBlYXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0IHNlY3Rpb25zLgogICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkb24ndAogICAgICBwYWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLwogICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC5sYnNzICAgOgogIHsKICAgICooLmR5bmxic3MpCiAgICAqKC5sYnNzIC5sYnNzLiogLmdudS5saW5rb25jZS5sYi4qKQogICAgKihMQVJHRV9DT01NT04pCiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIC4gPSBTRUdNRU5UX1NUQVJUKCJsZGF0YS1zZWdtZW50IiwgLik7CiAgLmxyb2RhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxyb2RhdGEgLmxyb2RhdGEuKiAuZ251LmxpbmtvbmNlLmxyLiopCiAgfQogIC5sZGF0YSAgIEFMSUdOKENPTlNUQU5UIChNQVhQQUdFU0laRSkpICsgKC4gJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKSA6CiAgewogICAgKigubGRhdGEgLmxkYXRhLiogLmdudS5saW5rb25jZS5sLiopCiAgICAuID0gQUxJR04oLiAhPSAwID8gNjQgLyA4IDogMSk7CiAgfQogIC4gPSBBTElHTig2NCAvIDgpOwogIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsKICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7CiAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KICAuc3RhYiAgICAgICAgICAwIDogeyAqKC5zdGFiKSB9CiAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQogIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkgfQogIC5zdGFiLmV4Y2xzdHIgIDAgOiB7ICooLnN0YWIuZXhjbHN0cikgfQogIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5kZXgpIH0KICAuc3RhYi5pbmRleHN0ciAwIDogeyAqKC5zdGFiLmluZGV4c3RyKSB9CiAgLmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQogIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgogICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwogICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCiAgLyogRFdBUkYgMSAqLwogIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQogIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9CiAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9CiAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQogIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQogIC8qIERXQVJGIDIgKi8KICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CiAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQgKSB9CiAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CiAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQogIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQogIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwogIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9CiAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQogIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KICAvKiBEV0FSRiAzICovCiAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9CiAgLmRlYnVnX3JhbmdlcyAgIDAgOiB7ICooLmRlYnVnX3JhbmdlcykgfQogIC8qIERXQVJGIEV4dGVuc2lvbi4gICovCiAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CiAgLmRlYnVnX2FkZHIgICAgIDAgOiB7ICooLmRlYnVnX2FkZHIpIH0KICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9Cn0KCgAALyogRGVmYXVsdCBsaW5rZXIgc2NyaXB0LCBmb3Igbm9ybWFsIGV4ZWN1dGFibGVzICovCi8qIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBzY3JpcHQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAogICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAqLwpPVVRQVVRfRk9STUFUKCJlbGY2NC1rMW9tIiwgImVsZjY0LWsxb20iLAoJICAgICAgImVsZjY0LWsxb20iKQpPVVRQVVRfQVJDSChrMW9tKQpFTlRSWShfc3RhcnQpClNFQVJDSF9ESVIoIj0vdXNyL3g4Nl82NC1jcm9zLWxpbnV4LWdudS9saWIiKTsgU0VBUkNIX0RJUigiPS91c3IvbG9jYWwvbGliIik7IFNFQVJDSF9ESVIoIj0vbGliIik7IFNFQVJDSF9ESVIoIj0vdXNyL2xpYiIpOwpTRUNUSU9OUwp7CiAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0gU0VHTUVOVF9TVEFSVCgidGV4dC1zZWdtZW50IiwgMHg0MDAwMDApKTsgLiA9IFNFR01FTlRfU1RBUlQoInRleHQtc2VnbWVudCIsIDB4NDAwMDAwKSArIFNJWkVPRl9IRUFERVJTOwogIC5pbnRlcnAgICAgICAgICA6IHsgKiguaW50ZXJwKSB9CiAgLm5vdGUuZ251LmJ1aWxkLWlkIDogeyAqKC5ub3RlLmdudS5idWlsZC1pZCkgfQogIC5oYXNoICAgICAgICAgICA6IHsgKiguaGFzaCkgfQogIC5nbnUuaGFzaCAgICAgICA6IHsgKiguZ251Lmhhc2gpIH0KICAuZHluc3ltICAgICAgICAgOiB7ICooLmR5bnN5bSkgfQogIC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CiAgLmdudS52ZXJzaW9uICAgIDogeyAqKC5nbnUudmVyc2lvbikgfQogIC5nbnUudmVyc2lvbl9kICA6IHsgKiguZ251LnZlcnNpb25fZCkgfQogIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQogIC5yZWxhLmluaXQgICAgICA6IHsgKigucmVsYS5pbml0KSB9CiAgLnJlbGEudGV4dCAgICAgIDogeyAqKC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopIH0KICAucmVsYS5maW5pICAgICAgOiB7ICooLnJlbGEuZmluaSkgfQogIC5yZWxhLnJvZGF0YSAgICA6IHsgKigucmVsYS5yb2RhdGEgLnJlbGEucm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnIuKikgfQogIC5yZWxhLmRhdGEucmVsLnJvICAgOiB7ICooLnJlbGEuZGF0YS5yZWwucm8gLnJlbGEuZGF0YS5yZWwucm8uKiAucmVsYS5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5yZWxhLmRhdGEgICAgICA6IHsgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5nbnUubGlua29uY2UuZC4qKSB9CiAgLnJlbGEudGRhdGEJICA6IHsgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnJlbGEudGJzcwkgIDogeyAqKC5yZWxhLnRic3MgLnJlbGEudGJzcy4qIC5yZWxhLmdudS5saW5rb25jZS50Yi4qKSB9CiAgLnJlbGEuY3RvcnMgICAgIDogeyAqKC5yZWxhLmN0b3JzKSB9CiAgLnJlbGEuZHRvcnMgICAgIDogeyAqKC5yZWxhLmR0b3JzKSB9CiAgLnJlbGEuZ290ICAgICAgIDogeyAqKC5yZWxhLmdvdCkgfQogIC5yZWxhLmJzcyAgICAgICA6IHsgKigucmVsYS5ic3MgLnJlbGEuYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmIuKikgfQogIC5yZWxhLmxkYXRhICAgICA6IHsgKigucmVsYS5sZGF0YSAucmVsYS5sZGF0YS4qIC5yZWxhLmdudS5saW5rb25jZS5sLiopIH0KICAucmVsYS5sYnNzICAgICAgOiB7ICooLnJlbGEubGJzcyAucmVsYS5sYnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLmxiLiopIH0KICAucmVsYS5scm9kYXRhICAgOiB7ICooLnJlbGEubHJvZGF0YSAucmVsYS5scm9kYXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLmxyLiopIH0KICAucmVsYS5pZnVuYyAgICAgOiB7ICooLnJlbGEuaWZ1bmMpIH0KICAucmVsYS5wbHQgICAgICAgOgogICAgewogICAgICAqKC5yZWxhLnBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X3N0YXJ0ID0gLik7CiAgICAgICooLnJlbGEuaXBsdCkKICAgICAgUFJPVklERV9ISURERU4gKF9fcmVsYV9pcGx0X2VuZCA9IC4pOwogICAgfQogIC5pbml0ICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmluaXQpKSkKICB9CiAgLnBsdCAgICAgICAgICAgIDogeyAqKC5wbHQpICooLmlwbHQpIH0KICAudGV4dCAgICAgICAgICAgOgogIHsKICAgICooLnRleHQudW5saWtlbHkgLnRleHQuKl91bmxpa2VseSAudGV4dC51bmxpa2VseS4qKQogICAgKigudGV4dC5leGl0IC50ZXh0LmV4aXQuKikKICAgICooLnRleHQuc3RhcnR1cCAudGV4dC5zdGFydHVwLiopCiAgICAqKC50ZXh0LmhvdCAudGV4dC5ob3QuKikKICAgICooLnRleHQgLnN0dWIgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKICAgIC8qIC5nbnUud2FybmluZyBzZWN0aW9ucyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgZWxmMzIuZW0uICAqLwogICAgKiguZ251Lndhcm5pbmcpCiAgfQogIC5maW5pICAgICAgICAgICA6CiAgewogICAgS0VFUCAoKihTT1JUX05PTkUoLmZpbmkpKSkKICB9CiAgUFJPVklERSAoX19ldGV4dCA9IC4pOwogIFBST1ZJREUgKF9ldGV4dCA9IC4pOwogIFBST1ZJREUgKGV0ZXh0ID0gLik7CiAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CiAgLnJvZGF0YTEgICAgICAgIDogeyAqKC5yb2RhdGExKSB9CiAgLmVoX2ZyYW1lX2hkciA6IHsgKiguZWhfZnJhbWVfaGRyKSAqKC5laF9mcmFtZV9lbnRyeSAuZWhfZnJhbWVfZW50cnkuKikgfQogIC5laF9mcmFtZSAgICAgICA6IE9OTFlfSUZfUk8geyBLRUVQICgqKC5laF9mcmFtZSkpICooLmVoX2ZyYW1lLiopIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9STyB7ICooLmdjY19leGNlcHRfdGFibGUKICAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CiAgLmdudV9leHRhYiAgIDogT05MWV9JRl9STyB7ICooLmdudV9leHRhYiopIH0KICAvKiBUaGVzZSBzZWN0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBTdW4vT3JhY2xlIEMrKyBjb21waWxlci4gICovCiAgLmV4Y2VwdGlvbl9yYW5nZXMgICA6IE9OTFlfSUZfUk8geyAqKC5leGNlcHRpb25fcmFuZ2VzCiAgLmV4Y2VwdGlvbl9yYW5nZXMqKSB9CiAgLyogQWRqdXN0IHRoZSBhZGRyZXNzIGZvciB0aGUgZGF0YSBzZWdtZW50LiAgV2Ugd2FudCB0byBhZGp1c3QgdXAgdG8KICAgICB0aGUgc2FtZSBhZGRyZXNzIHdpdGhpbiB0aGUgcGFnZSBvbiB0aGUgbmV4dCBwYWdlIHVwLiAgKi8KICAuID0gREFUQV9TRUdNRU5UX0FMSUdOIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsKICAvKiBFeGNlcHRpb24gaGFuZGxpbmcgICovCiAgLmVoX2ZyYW1lICAgICAgIDogT05MWV9JRl9SVyB7IEtFRVAgKCooLmVoX2ZyYW1lKSkgKiguZWhfZnJhbWUuKikgfQogIC5nbnVfZXh0YWIgICAgICA6IE9OTFlfSUZfUlcgeyAqKC5nbnVfZXh0YWIpIH0KICAuZ2NjX2V4Y2VwdF90YWJsZSAgIDogT05MWV9JRl9SVyB7ICooLmdjY19leGNlcHRfdGFibGUgLmdjY19leGNlcHRfdGFibGUuKikgfQogIC5leGNlcHRpb25fcmFuZ2VzICAgOiBPTkxZX0lGX1JXIHsgKiguZXhjZXB0aW9uX3JhbmdlcyAuZXhjZXB0aW9uX3JhbmdlcyopIH0KICAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSBzZWN0aW9ucyAgKi8KICAudGRhdGEJICA6IHsgKigudGRhdGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CiAgLnRic3MJCSAgOiB7ICooLnRic3MgLnRic3MuKiAuZ251LmxpbmtvbmNlLnRiLiopICooLnRjb21tb24pIH0KICAucHJlaW5pdF9hcnJheSAgICAgOgogIHsKICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQogICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmluaXRfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmN0b3JzLiopKSkKICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmZpbmlfYXJyYXkgICAgIDoKICB7CiAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7CiAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguZmluaV9hcnJheS4qKSBTT1JUX0JZX0lOSVRfUFJJT1JJVFkoLmR0b3JzLiopKSkKICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuZHRvcnMpKQogICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKICB9CiAgLmN0b3JzICAgICAgICAgIDoKICB7CiAgICAvKiBnY2MgdXNlcyBjcnRiZWdpbi5vIHRvIGZpbmQgdGhlIHN0YXJ0IG9mCiAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtlIHN1cmUgaXQgaXMKICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0CiAgICAgICBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdXNlciBkb2VzIG5vdAogICAgICAgYWN0dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQogICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhCiAgICAgICB3aWxkY2FyZC4gIFRoZSB3aWxkY2FyZCBhbHNvIG1lYW5zIHRoYXQgaXQKICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9yeSBjcnRiZWdpbi5vCiAgICAgICBpcyBpbi4gICovCiAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQogICAgS0VFUCAoKmNydGJlZ2luPy5vKC5jdG9ycykpCiAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQogICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBjdG9ycy4KICAgICAgIFRoZSAuY3RvciBzZWN0aW9uIGZyb20gdGhlIGNydGVuZCBmaWxlIGNvbnRhaW5zIHRoZQogICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovCiAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQogICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCiAgICBLRUVQICgqKC5jdG9ycykpCiAgfQogIC5kdG9ycyAgICAgICAgICA6CiAgewogICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguZHRvcnMpKQogICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkKICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQogICAgS0VFUCAoKiguZHRvcnMpKQogIH0KICAuamNyICAgICAgICAgICAgOiB7IEtFRVAgKCooLmpjcikpIH0KICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEucmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVsLnJvIC5kYXRhLnJlbC5yby4qIC5nbnUubGlua29uY2UuZC5yZWwucm8uKikgfQogIC5keW5hbWljICAgICAgICA6IHsgKiguZHluYW1pYykgfQogIC5nb3QgICAgICAgICAgICA6IHsgKiguZ290KSAqKC5pZ290KSB9CiAgLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKFNJWkVPRiAoLmdvdC5wbHQpID49IDI0ID8gMjQgOiAwLCAuKTsKICAuZ290LnBsdCAgICAgICAgOiB7ICooLmdvdC5wbHQpICAqKC5pZ290LnBsdCkgfQogIC5kYXRhICAgICAgICAgICA6CiAgewogICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQogICAgU09SVChDT05TVFJVQ1RPUlMpCiAgfQogIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOwogIF9fYnNzX3N0YXJ0ID0gLjsKICAuYnNzICAgICAgICAgICAgOgogIHsKICAgKiguZHluYnNzKQogICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQogICAqKENPTU1PTikKICAgLyogQWxpZ24gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgLmJzcyBzZWN0aW9uIG9jY3VwaWVzIHNwYWNlIHVwIHRvCiAgICAgIF9lbmQuICBBbGlnbiBhZnRlciAuYnNzIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWdubWVudCBldmVuIGlmIHRoZQogICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KICAgICAgRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGl0PyBXaGVuIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbiwgd2UgZG9uJ3QKICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8KICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAubGJzcyAgIDoKICB7CiAgICAqKC5keW5sYnNzKQogICAgKigubGJzcyAubGJzcy4qIC5nbnUubGlua29uY2UubGIuKikKICAgICooTEFSR0VfQ09NTU9OKQogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICAuID0gU0VHTUVOVF9TVEFSVCgibGRhdGEtc2VnbWVudCIsIC4pOwogIC5scm9kYXRhICAgQUxJR04oQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSkgKyAoLiAmIChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gMSkpIDoKICB7CiAgICAqKC5scm9kYXRhIC5scm9kYXRhLiogLmdudS5saW5rb25jZS5sci4qKQogIH0KICAubGRhdGEgICBBTElHTihDT05TVEFOVCAoTUFYUEFHRVNJWkUpKSArICguICYgKENPTlNUQU5UIChNQVhQQUdFU0laRSkgLSAxKSkgOgogIHsKICAgICooLmxkYXRhIC5sZGF0YS4qIC5nbnUubGlua29uY2UubC4qKQogICAgLiA9IEFMSUdOKC4gIT0gMCA/IDY0IC8gOCA6IDEpOwogIH0KICAuID0gQUxJR04oNjQgLyA4KTsKICBfZW5kID0gLjsgUFJPVklERSAoZW5kID0gLik7CiAgLiA9IERBVEFfU0VHTUVOVF9FTkQgKC4pOwogIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCiAgLnN0YWIgICAgICAgICAgMCA6IHsgKiguc3RhYikgfQogIC5zdGFic3RyICAgICAgIDAgOiB7ICooLnN0YWJzdHIpIH0KICAuc3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KICAuc3RhYi5leGNsc3RyICAwIDogeyAqKC5zdGFiLmV4Y2xzdHIpIH0KICAuc3RhYi5pbmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9CiAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQogIC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwogIC8qIERXQVJGIDEgKi8KICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQogIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQogIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CiAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCiAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KICAvKiBEV0FSRiAyICovCiAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9CiAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQogIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lIC5kZWJ1Z19saW5lLiogLmRlYnVnX2xpbmVfZW5kICkgfQogIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQogIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9CiAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQogIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CiAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9CiAgLyogRFdBUkYgMyAqLwogIC5kZWJ1Z19wdWJ0eXBlcyAwIDogeyAqKC5kZWJ1Z19wdWJ0eXBlcykgfQogIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5kZWJ1Z19yYW5nZXMpIH0KICAvKiBEV0FSRiBFeHRlbnNpb24uICAqLwogIC5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19tYWNybykgfQogIC5kZWJ1Z19hZGRyICAgICAwIDogeyAqKC5kZWJ1Z19hZGRyKSB9CiAgLmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQogIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmdudV9kZWJ1Z2xpbmspICooLmdudS5sdG9fKikgfQp9CgoAZWVsZl9rMW9tLmMAZWxmX2sxb20AZWxmNjQtazFvbQAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBdQAAAAAAA0F1AAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAEsKAAAAAAAAAQAAAAAAAABzCgAAAAAAAA8AAAAAAAAACw0AAAAAAAAMAAAAAAAAAHhFQAAAAAAADQAAAAAAAAC0kUMAAAAAABkAAAAAAAAAcCdvAAAAAAAbAAAAAAAAAAgAAAAAAAAAGgAAAAAAAAB4J28AAAAAABwAAAAAAAAACAAAAAAAAAD1/v9vAAAAAJgCQAAAAAAABQAAAAAAAAAwIkAAAAAAAAYAAAAAAAAAYA1AAAAAAAAKAAAAAAAAAGANAAAAAAAACwAAAAAAAAAYAAAAAAAAABUAAAAAAAAAAAAAAAAAAAADAAAAAAAAAKgpbwAAAAAAAgAAAAAAAABgAAAAAAAAABQAAAAAAAAABwAAAAAAAAAXAAAAAAAAABhFQAAAAAAABwAAAAAAAACwMUAAAAAAAAgAAAAAAAAAaBMAAAAAAAAJAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAPv//28AAAAAAQAAAAAAAAD+//9vAAAAAFAxQAAAAAAA////bwAAAAACAAAAAAAAAPD//28AAAAAkC9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIJ28AAAAAAAAAAAAAAAAAAAAAAAAAAACmRUAAAAAAALZFQAAAAAAAxkVAAAAAAADWRUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBNbwAAAAAAAQAAAAEAAAAwUG8AAAAAAJt8RAAAAAAA0FBvAAAAAACAUG8AAAAAAJSGRAAAAAAA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