UKqJWDEgeyB9CkRFRklOSVRJT05TIElNUExJQ0lUIFRBR1MgOjo9CkJFR0lOCmlkLWNlIE9CSkVDVCBJREVOVElGSUVSICA6Oj0gIHtqb2ludC1pc28tY2NpdHQoMikgZHMoNSkgMjl9CmlkLWNlLWF1dGhvcml0eUtleUlkZW50aWZpZXIgT0JKRUNUIElERU5USUZJRVIgOjo9ICB7IGlkLWNlIDM1IH0KQXV0aG9yaXR5S2V5SWRlbnRpZmllciA6Oj0gU0VRVUVOQ0UgewogICAgICBrZXlJZGVudGlmaWVyICAgICAgICAgICAgIFswXSBLZXlJZGVudGlmaWVyICAgICAgICAgICAgT1BUSU9OQUwsCiAgICAgIGF1dGhvcml0eUNlcnRJc3N1ZXIgICAgICAgWzFdIEdlbmVyYWxOYW1lcyAgICAgICAgICAgICBPUFRJT05BTCwKICAgICAgYXV0aG9yaXR5Q2VydFNlcmlhbE51bWJlciBbMl0gQ2VydGlmaWNhdGVTZXJpYWxOdW1iZXIgIE9QVElPTkFMIH0KICAgIC0tIGF1dGhvcml0eUNlcnRJc3N1ZXIgYW5kIGF1dGhvcml0eUNlcnRTZXJpYWxOdW1iZXIgc2hhbGwwYm90aAogICAgLS0gYmUgcHJlc2VudCBvciBib3RoIGJlIGFic2dlbnQKS2V5SWRlbnRpZmllciA6Oj0gT0NURVQgU1RSSU5HCmlkLWNlLXN1YmplY3RLZXlJZGVudGlmaWVyIE9CSkVDVCBJREVOVElGSUVSIDo6PSAgeyBpZC1jZSAxNCB9ClN1YmplY3RLZXlJZGVudGlmaWVyIDo6PSBLZXlJZGVudGlmaWVyCmlkLWNlLWtleVVzYWdlIE9CSkVDVCBJREVOVElGSUVSIDo6PSAgeyBpZC1jZSAxNSB9CktleVVzYWdlIDo6PSBCSVQgU1RSSU5HIHsKICAgICBkaWdpdGFsU2lnbmF0dXJlICAgICAgICAoMCksCiAgICAgbm9uUmVwdWRpYXRpb24gICAgICAgICAgKDEpLAogICAgIGtleUVuY2lwaGVybWVudCAgICAgICAgICgyKSwKICAgICBkYXRhRW5jaXBoZXJtZW50ICAgICAgICAoMyksCiAgICAga2V5QWdyZWVtZW50ICAgICAgICAgICAgKDQpLAogICAgIGtleUNlcnRTaWduICAgICAgICAgICAgICg1KSwKICAgICBjUkxTaWduICAgICAgICAgICAgICAgICAoNiksCiAgICAgZW5jaXBoZXJPbmx5ICAgICAgICAgICAgKDcpLAogICAgIGRlY2lwaGVyT25seSAgICAgICAgICAgICg4KSB9CmlkLWNlLXByaXZhdGVLZXlVc2FnZVBlcmlvZCBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gIHsgaWQtY2UgMTYgfQpQcml2YXRlS2V5VXNhZ2VQZXJpb2QgOjo9IFNFUVVFTkNFIHsKICAgICBub3RCZWZvcmUgICAgICAgWzBdICAgICBHZW5lcmFsaXplZFRpbWUgT1BUSU9OQUwsCiAgICAgbm90QWZ0ZXIgICAgICAgIFsxXSAgICAgR2VuZXJhbGl6ZWRUaW1lIE9QVElPTkFMIH0KICAgICAtLSBlaXxoZXIgbm90QmVmb3JlIG9yIG5vdEFmdGVyIHNoYWxsIGJlIHByZXNlbnQKaWQtY2UtY2VydGlmaWNhdGVQb2xpY2llcyBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gIHsgaWQtY2UgMzIgfQpDZXJ0aWZpY2F0ZVBvbGljaWVzIDo6PSBTRVFVRU5DRSBTSVpFICgxLi5NQVgpIE9GIFBvbGljeUluZm9ybWF0aW9uClBvbGljeUluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7CiAgICAgcG9saWN5SWRlbnRpZmllciAgIENlcnRQb2xpY3lJZCwKICAgICBwb2xpY3lRdWFsaWZpZXJzICAgU0VRVUVOQ0UgU0laRSAoMS4uTUFYKSBPRgogICAgICAgICAgICAgUG9saWN5UXVhbGlmaWVySW5mbyBPUFRJT05BTCB9CkNlcnRQb2xpY3lJZCA6Oj0gT0JKRUNUIElERU5USUZJRVIKUG9saWN5UXVhbGlmaWVySW5mbyA6Oj0gU0VRVUVOQ0UgewogICAgICAgcG9saWN5UXVhbGlmaWVySWQgIFBvbGljeVF1YWxpZmllcklkLAogICAgICAgcXVhbGlmaWVyICAgICAgICBBTlkgREVGSU5FRCBCWSBwb2xpY3lRdWFsaWZpZXJJZCB9ClBvbGljeVF1YWxpZmllcklkIDo6PQogICAgT0JKRUNUIElERU5USUZJRVIgIC0tICggaWQtcXQtY3BzIHwgaWQtcXQtdW5vdGljZSApCkNQU3VyaSA6Oj0gSUE1U3RyaW5nClVzZXJOb3RpY2UgOjo9IFNFUVVFTkNFIHsKICAgICBub3RpY2VSZWYgICAgICAgIE5vdGljZVJlZmVyZW5jZSBPUFRJT05BTCwKICAgICBleHBsaWNpdFRleHQgICAgIERpc3BsYXlUZXh0IE9QVElPTkFMfQpOb3RpY2VSZWZlcmVuY2UgOjo9IFNFUVVFTkNFIHsKICAgICBvcmdhbml6YXRpb24gICAgIERpc3BsYXlUZXh0LAogICAgIG5vdGljZU51bWJlcnMgICAgU0VRVUVOQ0UgT0YgSU5URUdFUiB9CkRpc3BsYXlUZXh0IDo6PSBDSE9JQ0UgewogICAgIHZpc2libGVTdHJpbmcgICAgVmlzaWJsZVN0cmluZyAgKFNJWkUgKDEuLjIwMCkpLAogICAgIGJtcFN0cmluZyAgICAgICAgQk1QU3RyaW5nICAgICAgKFNJWkUgKDEuLjIwMCkpLAogICAgIHV0ZjhTdHJpbmcgICAgICAgICAgIElBNVN0cmluZywKICAgICBkTlNOYW1lICAgICAgICAgICAgICAgICAgICAgICAgIFsyXSAgICAgSUE1U3RyaW5nLAogICAgIHg0MDBBZGRyZXNzICAgICAgICAgICAgICAgICAgICAgWzNdICAgICBPUkFkZHJlc3MsCiAgICAgZGlyZWN0b3J5TmFtZSAgICAgICAgICAgICAgICAgICBbNF0gICAgIEVYUExJQ0lUIFJETlNlcXVlbmNlLCAtLU5hbWUsCiAgICAgZWRpUGFydHlOYW1lICAgICAgICAgICAgICAgICAgICBbNV0gU3RyaW5nICAgICAgICAgICAgICAgSUE1U3RyaW5nIChTSVpFKDEuLk1BWCkpIH0KaWQtY2Utc3ViamVjdEFsdE5hbWUgT0JKRUNUIElERU5USUZJRVIgOjo9ICB7IGlkLWNlIDE3IH0KU3ViamVjdEFsdE5hbWUgOjo9IEdlbmVyYWxOYW1lcwpHZW5lcmFsTmFtZXMgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLk1BWCkgT0YgR2VuZXJhbE5hbWUKR2VuZXJhbE5hbWUgOjo9IENIT0lDRSB7CiAgICAgb3RoZXJOYW1lICAgICAgICAgICAgICAgICAgICAgICBbMF0gICAgIEFub3RoZXJOYW1lLAogICAgIHJmYzgyMk5hbWUgICAgICAgICAgICAgICAgICAgICAgWzFdICAgICBJQTVTdHJpbmcsCiAgICAgZE5TTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICBbMl0gICAgIElBNVN0cmluZywKICAgICB4NDAwQWRkcmVzcyAgICAgICAgICAgICAgICAgICAgIFszXSAgICAgT1JBZGRyZXNzLAogICAgIGRpcmVjdG9yeU5hbWUgICAgICAgICAgICAgICAgICAgWzRdICAgICBFWFBMSUNJVCBSRE5TZXF1ZW5jZSwgLS1OYW1lLAogICAgIGVkaVBhcnR5TmFtZSAgICAgICAgICAgICAgICAgICAgWzVdICAgICBFRElQYXJ0eU5hbWUsCiAgICAgdW5pZm9ybVJlc291cmNlSWRlbnRpZmllciAgICAgICBbNl0gICAgIElBNVN0cmluZywKICAgICBpUEFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgIFs3XSAgICAgT0NURVQgU1RSSU5HLAogICAgIHJlZ2lzdGVyZWRJRCAgICAgICAgICAgICAgICAgICAgWzhdICAgICBPQkpFQ1QgSURFTlRJRklFUiB9CkFub3RoZXJOYW1lIDo6PSBTRVFVRU5DRSB7CiAgICAgdHN0YW5jZSA6Oj0gSU5URUdFUiAoMC4uTUFYKQppZC1jZS1wb2xpY3lDb25zdHJhaW50ZSwKICAgICBuZXh0VXBkYXRlICAgICAgICAgICAgICBUaW1lIE9QVElPTkFMLAogICAgIHJldm9rZWRDZXJ0aWZpY2F0ZXMgICAgIFNFUVVFTkNFIE9GIFNFUVVFTkNFICB7CiAgICAgICAgICB1c2VyQ2VydGlmaWNhdGUgICAgICAgICBDZXJ0aWZpY2F0ZVNlcmlhbE51bWJlciwKICAgICAgICAgIHJldm9jYXRpb25EYXRlICAgICAgICAgIFRpbWUsCiAgICAgICAgICBjcmxFbnRyeUV4dGVuc2lvbnMgICAgICBFeHRlbnNpb25zIE9QVElPTkFMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gaWYgcHJlc2VudCwgc2hhbGwgYmUgdjIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIE9QVElPTkFMLAogICAgIGNybEV4dGVuc2lvbnMgICAgICAgICAgIFswXSBFWFBMSUNJVCBFeHRlbnNpb25zIE9QVElPTkFMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gaWYgcHJlc2VudCwgc2hhbGwgYmUgdjIgLS0KfQpBbGdvcml0aG1JZGVudGlmaWVyICA6bnNpZGVyaW5nIGRyb3BwaW5nIGl0LiAtLQogICAgICBpYTVTdHJpbmcgICAgICAgICAgICAgICBJQTVTdHJpbmcgKFNJWkUoMS4uTUFYKSkgfQppZC1jZS1zdWJqZWN0QWx0TmFtZSBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gIHsgaWQtY2UgMTcgfQpTdWJqZWN0QWx0TmFtZSA6Oj0gR2VuZXJhbE5hbWVzCkdlbmVyYWxOYW1lcyA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4uTUFYKSBPRiBHZW5lcmFsTmFtZQpHZW5lcmFsTmFtZSA6Oj0gQ0hPSUNFIHsKICAgICBvdGhlck5hbWUgICAgICAgICAgICAgICAgICAgICAgIFswXSAgICAgQW5vdGhlck5hbWUsCiAgICAgcmZjODIyTmFtZSAgICAgICAgICAgICAgICAgICAgICBbMV0gICAgIElBNVN0cmluZywKICAgICBkTlNOYW1lICAgICAgICAgICAgICAgICAgICAgICAgIFsyXSAgICAgSUE1U3RyaW5nLAogICAgIHg0MDBBZGRyZXNzICAgICAgICAgICAgICAgICAgICAgWzNdICAgICBPUkFkZHJlc3MsCiAgICAgZGlyZWN0b3J5TmFtZSAgICAgICAgICAgICAgICAgICBbNF0gICAgIEVYUExJQ0lUIFJETlNlcXVlbmNlLCAtLU5hbWUsCiAgICAgZWRpUGFydHlOYW1lICAgICAgICAgICAgICAgICAgICBbNV0gICAgIEVESVBhcnR5TmFtZSwKICAgICB1bmlmb3JtUmVzb3VyY2VJZGVudGlmaWVyICAgICAgIFs2XSAgICAgSUE1U3RyaW5nLAogICAgIGlQQWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgWzddICAgICBPQ1RFVCBTVFJJTkcsCiAgICAgcmVnaXN0ZXJlZElEICAgICAgICAgICAgICAgICAgICBbOF0gICAgIE9CSkVDVCBJREVOVElGSUVSIH0KQW5vdGhlck5hbWUgOjo9IFNFUVVFTkNFIHsKICAgICB0c3RhbmNlIDo6PSBJTlRFR0VSICgwLi5NQVgpCmlkLWNlLXBvbGljeUNvbnN0cmFpbnRlLAogICAgIG5leHRVcGRhdGUgICAgICAgICAgICAgIFRpbWUgT1BUSU9OQUwsCiAgICAgcmV2b2tlZENlcnRpZmljYXRlcyAgICAgU0VRVUVOQ0UgT0YgU0VRVUVOQ0UgIHsKICAgICAgICAgIHVzZXJDZXJ0aWZpY2F0ZSAgICAgICAgIENlcnRpZmljYXRlU2VyaWFsTnVtYmVyLAogICAgICAgICAgcmV2b2NhdGlvbkRhdGUgICAgICAgICAgVGltZSwKICAgICAgICAgIGNybEVudHJ5RXh0ZW5zaW9ucyAgICAgIEV4dGVuc2lvbnMgT1BUSU9OQUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBpZiBwcmVzZW50LCBzaGFsbCBiZSB2MgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgT1BUSU9OQUwsCiAgICAgY3JsRXh0ZW5zaW9ucyAgICAgICAgICAgWzBdIEVYUExJQ0lUIEV4dGVuc2lvbnMgT1BUSU9OQUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBpZiBwcmVzZW50LCBzaGFsbCBiZSB2MiAtLQp9CkFsZ29yaXRobUlkZW50aWZpZXIgIDo6PSAgU0VRVUVOQ0UgIHsKICAgICBhbGdvcml0aG0gICAgICAgICAgICAgICBPQkpFQ1QgSURFTlRJRklFUiwKICAgICBwYXJhbWV0ZXJzICAgICAgICAgICAgICBBTlkgREVGSU5FRCBCWSBhbGdvcml0aG0gT1BUSU9OQUwgIH0KICAgICAgICAgICAgZXIgICAgICAgIFsxXSAgICAgR2VuZXJhbGl6ZWRUaW1lIE9QVElPTkFMIH0KICAgICAtLSBlaXxoZXIgbm90QmVmb3JlIG9yIG5vdEFmdGVyIHNoYWxsIGJlIHByZXNlbnQKaWQtY2UtY2VydGlmaWNhdGVQb2xpY2llcyBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gIHsgaWQtY2UgMzIgfQpDZXJ0aWZpY2F0ZVBvbGljaWVzIDo6PSBTRVFVRU5DRSBTSVpFICgxLi5NQVgpIE9GIFBvbGljeUluZm9ybWF0aW9uClBvbGljeUluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7CiAgICAgcG9scywKICBidGhpc1VwZGF0ZSAgICAgICAgICAgICAgICAgICBHZW5lcmFsaXplZFRpbWUsCiAgIG5leHRVcGRhdGUgICAgICAgICAgIFswXSAgICAgRVhQTElDSVQgR2VuZXJhbGl6ZWRUaW1lIE9QVElPTkFMLAogICBzaW5nbGVFeHRlbnNpb25zICAgICBbMV0gICAgIEVYUExJQ0lUIEV4dGVuc2lvbnMgT1BUSU9OQUwgfQpSZXZva2VkSW5mbyA6Oj0gU0VRVUVOQ0UgewogICAgcmV2b2NhdGlvblRpbWUgICAgICAgICAgICAgIEdlbmVyYWxpemVkVGltZSwKICAgIHJldm9jYXRpb25SZWFzb24gICAgWzBdICAgICBFWFBMSUNJVCBDUkxSZWFzb24gT1BUSU9OQUwgfQpVbmtub3duSW5mbyA6Oj0gTlVMTCAtLSB0aGlzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGFuIGVudW1lcmF0aW9uCkVORAo=