UERFRklOeyB9CkRFRklOSVRJT05TIElNUExJQ0lUIFRBR1MgOjo9CkJFR0lOCmlkLWNlIE9CSkVDVCBJREVOVElGSUVSICA6Oj0gIHtqb2ludC1pc28tY2NpdHQoMikgZHMoNSkgMjl9CmlkLWNlLWF1dGhvcml0eUtleUlkZW50aWZpZXIgT0JKRUNUIElERU5USUZJRVIgOjo9ICB7IGlkLWNlIDM1IH0KQXV0aG9yaXR5S2V5SWRlbnRpZmllciA6Oj0gU0VRVUVOQ0UgewogICAgICBrZXlJZGVudGlmaWVyICAgICAgICAgICAgIFswXSBLZXlJZGVudGlmaWVyICAgICAgICAgICAgT1BUSU9OQUwsCiAgICAgIGF1dGhvcml0eUNlcnRJc3N1ZXIgICAgICAgWzFdIEdlbmVyYWxOYW1lcyAgICAgICAgICAgICBPUFRJT05BTCwKICAgICAgYXV0aG9yaXR5Q2VydFNlcmlhbE51bWJlciBbMl0gQ2VydGlmaWNhdGVTZXJpYWxOdW1iZXIgIE9QVElPTkFMIH0KICAgIC0tIGF1dGhvcml0eUNlcnRJc3N1ZXIgYW5kIGF1dGhvcml0eUNlcnRTZXJpYWxOdW1iZXIgc2hhbGwgYm90aAogICAgLS0gYmUgcHJlc2VudCBvciBib3RoIGJlIGFic2dlbnQKS2V5SWRlbnRpZmllciA6Oj0gT0NURVQgU1RSSU5HCmlkLWNlLXN1YmplY3RLZXlJZGVudGlmaWVyIE9CSkVDVCBJREVOVElGSUVSIDo6PSAgeyBpZC1jZSAxNCB9ClN1YmplY3RLZXlJZGVudGlmaWVyIDo6PSBLZXlJZGVudGlmaWVyCmlkLWNlLWtleVVzYWdlIE9CSkVDVCBJREVOVElGSUVSIDo6PSAgeyBpZC1jZSAxNSB9CktleVVzYWdlIDo6PSBCSVQgU1RSSU5HIHsKICAgICBkaWdpdGFsU2lnbmF0dXJlICAgICAgICAoMCksCiAgICAgbu5uUmVwdWRpYXRpb24gICAgICAgICAgKDEpLAogICAgIGtleUVuY2lwaGVybWVudCAgICAgICAgICgyKSwKICAgICBkYXRhRW5jaXBoZXJtZW50ICAgICAgICAoMyksCiAgICAga2V5QWdyZWVtZW50ICAgICAgICAgICAgKDQpLAogICAgIGtleUNlcnRTaWduICAgICAgICAgICAgICg1KSwKICAgICBjUkxTaWduICAgICAgICAgICAgICAgICAoNiksCiAgICAgZW5jaXBoZXJPbmx5ICAgICAgICAgICAgKDcpLAogICAgIGRlY2lwaGWhT25weSAgICAgICAgICAgICg4KSB9CmlkLWNlLXByaXZhdGVLZXlVc2FnZVBlcmlvZCBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gIHsgaWQtY2UgMTYgfQpQcml2YXRlS2V5VXNhZ2VQZXJpb2QgOjo9IFNFUVVFTkNFIHsKICAgICBub3RCZWZvcmUgICAgICAgWzBdICAgICBHZW5lcmFsaXplZFRpbWUgT1BUSU9OQUwsCiAgICAgbm90QWZ0ZXIgICAgICAgIFsxXSAgICAgR2VuZXJhbGl6ZWRUaW1lIE9QVElPTkFMIH0KICAgICAtLSBlaXRoZXIgbm90QmVmb3JlIG9yIG5vdEFmdGVyIHNoYWxsIGJlIHByZXNlbnQKaWQtY2UtY2VydGlmaWNhdGVQb2xpY2llcyBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gIHsgaWQtY2UgMzIgfQpDZXJ0aWZpY2F0ZVBvbGljaWVzIDo6PSBTRVFVRU5DRSBTSVpFICgxLi5NQVgpIE9GIFBvbGljeUluZm9ybWF0aW9uClBvbGljeUluZm9ybWF0aW9uIHJzICAgIFNFUVVFTkNFIE9GIElOVEVHRVIgfQpEaXNwbGF5VGV4dCA6Oj0gQ0hPSUNFIHsKICAgICB2aXNpYmxlU3RyaW5nICAgIFZpc2libGVTdHJpbmcgIChTSVpFICgxLi4yMDApKSwKICAgICBibXBTdHJpbmcgICAgICAgIEJNUFN0cmluZyAgICAgIChTSVpFICgxLi4yMDApKSwKICAgICB1dGY4U3RyaW5nICAgIBogIFVURjhTdHJpbmcgICAgIChTSVpFICgxLi4yMDApKSB9CmlkLWNlLXBvbGljeU1hcHBpbmdzIE9CSkVDVCBJREVOVElGSUVSIDo6PSAgeyBpZC1jZSAzMyB9ClBvbGljeU1hcHBpbmdzIDo6PSBTRVFVRU5DRSBTSVpFICgxLi5NQVgpIE9GIFNFUVVFTkNFIHsKICAgICBpc3N1ZXJEb21haW5Qb2xpY3kgICAgICBDZXJ0UG9saWN5SWQsCiAgICAgc3ViamVjdERvbWFpblBvbGljeSAgICAgQ2VydFBvbGljeUlkIH0KRGlyZWN0b3J5U3RyaW5nIDo6PSBDSE9JQ0UgewogICAgICB0ZWxldGV4U3RyaW5nICAgICAgICAgICAgIFRlbGV0ZXhTdHJpbmcgKFNJWkUgKDEuLk1BWCkpLAogICAgICBwcmludGFibGVTdHJpbmcgICAgICAgICAgIFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4uTUFYKSksCiAgICAgIHVuaXZlcnNhbFN0cmluZyAgICAgICAgICAgVW5pdmVyc2FsU3RyaW5nIChTSVpFICgxLi5NQVgpKSwKICAgICAgdXRmOFN0cmluZyAgICAguCAgICAgICAgVVRGOFN0cmluZyAoU0laRSAoMS4uTUFYKSksCiAgICAgIGJtcFN0cmluZyAgICAgICAgICAgICAgIEJNUFN0cmluZyAoU0laRSgxLi5NQVgpKSwKICAgICAgLS0gSUE1U3RyaW5nIGlzIGFkZGVkIGhlcmUgdG8gaGFuZGxlIG9sZCBVSUQgZW5jb2RlZCBhcyBpYTVTdHJpbmcgLS0KICIgICAgLS0gU2VlIHRlc3RzL3VzZXJpZC8gZm9yIG1vcmUgaW5mb3JtYXRpb24uICBJdCBzaG91bGRuJ3QgYmUgaGVyZSwgLS0KIFBMSUNJVCBJTlRFR0VSIERFRkFVTFQgMCwKICAgcmVzcG9uZGVySUQgICAgICAgICAgICAgIFJlc3BvbmRlcklELAogICBwcm9kdWNlZEF0ICAgICAgICAgICAgICAgR2VuZXJhbGl6ZWRUaW1lLAogICByZXNwb25zZXMgICAgICAgICAgICAgICAgU0VRVUVOQ0UgT0YgU2luZ2xlUmVzcG9uc2UsCiAgIHJlc3BvbnNlRXh0ZW5zaW9ucyAgIFsxXSBFWFBMSUNJVCBFeHRlYWxpZmllciAgICAgICAgQU5ZIERFRklORUQgQlkgcG9saWN5UXWfk5aSaWVySWQgfQpQb2xpY3lRdWFsaWZpZXJJZCA6Oj0KICAgIE9CSkVDVCBJREVOVElGSUVSICAtLSAoIGlkLXF0LWNwcyB8IGlkLXF0LXVub3RpY2UgKQpDUFN1cmkgOjo9IElBNVN0cmluZwpVc2VyTm90aWNlIDo6PSBTRVFVRU5DRSB7CiAgICAgbm90aWNlUmVmICAgICAgICBOb3RpY2VSZWZlcmVuY2UgT1BUSU9OQUwsCiAgICAgZXhwbGljaXRUZXh0ICAgICBEaXNwbGF5VGV4dCBPUFRJT05BTH0KTm90aWNlUmVmZXJlbmNlIDo6PSBTRVFVRU5DRSB7CiAgICAgb3JnYW5pemF0aW9uICAgICBEaXNwbGF5VGV4dCwKICAgICBub3RpY2VOdW1iZXJzICAgIFNFUVVFTkNFIE9GIElOVEVHRVIgfQpEaXNwbGF5VGV4dCA6Oj0gQ0hPSUNFIHsKICAgICB2aXNpYmxlU3RyaW5nICAgIFZpc2libGVTdHJpbmcgIChTSVpFICgxLi4yMDApKSwKICAgICBibXBTdHJpbmcgICAgICAgIEJNUFN0cmluZyAgICAgIChTSVpFICgxLi4yMDApKSwKICAgICB1dGY4U3RyaW5nICAgIBogIFVURjhTdHJpbmcgICAgIChTSVpFICgxLi4yMDApKSB9CmlkLWNlLXBvbGljeU1hcHBpbmdzIE9CSkVDVCBJREVOVElGSUVSIDo6PSAgeyBpZC1jZSAzMyB9ClBvbGljeU1hcHBpbmdzIDo6PSBTRVFVRU5DRSBTSVpFICgxLi5NQVgpIE9GIFNFUVVFTkNFIHsKICAgICBpc3N1ZXJEb21haW5Qb2xpY3kgICAgICBDZXJ0UG9saWN5SWQsCiAgICAgc3ViamVjdERvbWFpblBvbGljeSAgICAguZqNi6+Qk5ZjeUlkIH0KRGlyZWN0b3J5U3RyaW5nIDo6PSBDSE9JQ0UgewogICAgICB0ZWxldGV4U3RyaW5nICAgICAgICAgICAgIFRlbGV0ZXhTdHJpbmcgKFNJWkUgKDEuLk1BWCkpLAogICAgICBwcmludGFibGVTdHJpbmcgICAgICAgICAgIFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4uTUFYKSksCiAgICAgIHVuaXZlcnNhbFN0cmluZyAgICAgICAgICAgVW5pdmVyc2FsCiAgICByZXZvY2F0aW9uUmVhc29uICAgIFswXSAgICAgRVhQTElDSVQgQ1JMUmVhc29uIE9QVElPTkFMIH0KVW5rbm93bkluZm8gOjo9IE5VTEwgLS0gdGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhbiBlbnVtZXJhdGlvbgpFTkQK