MjAwMi0wMS0zMSAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNEPgoKCSogY29uZmlndXJlLmluOiBSZWNvZ25pemUgdGhlIGRpZmZlcmVuY2VzIGluIGNvcmUgZmlsZXMgZnJvbSBGcmVlQlNECgk0LnswLDF9IGFuZCBsYXRlciB2ZXJzaW9ucyBvZiA0LnguICBUaGlzIHRyZWF0cyA0LjIrIHRoZSBzYW1lIGFzCgk1LUNVUlJFTlQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDEtMTAtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBwZVhYaWdlbi5jIChfYmZkX1hYX3ByaW50X3ByaXZhdGVfYmZkX2RhdGFfY29tbW9uKTogQ29weQoJdGltZXN0YW1wIHRvIHRpbWVfdCBmb3IgY3RpbWUuCgoyMDAxLTEwLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCTIwMDEtMDgtMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfaGFzaF90YWJsZV9jcmVhdGUpOiBDbGVhciBpYTY0X2luZm8uCgoyMDAxLTEwLTA2ICBTdGVwaGFuZSBDYXJyZXogIDxTdGVwaGFuZS5DYXJyZXpAd29ybGRuZXQuZnI+CgoJKiBkd2FyZjIuYyAoY29tcF91bml0X2ZpbmRfbmVhcmVzdF9saW5lKTogQ2hlY2sgZm9yIGVuZCBvZgoJY29tcGlsYXRpb24gdW5pdC4KCjIwMDEtMDgtMjkgIEpvZWwgU2hlcnJpbGwgPGpvZWxAT0FSY29ycC5jb20+CgoJKiBjb25maWcuYmZkIChpWzM0NTZdODYtKi1ydGVtcyosIG02OCotKi1ydGVtcyopOiBDaGFuZ2UgCglkZWZhdWx0IGZyb20gY29mZiB0byBlbGYuCgoyMDAxLTA4LTAzICBCZW4gSGFycmlzIDxiamgyMUBuZXRic2Qub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlKTogSW5jbHVkZSBvZmZzZXQgb2YKCXJlbG9jIGZyb20gc3RhcnQgb2Ygc2VjdGlvbiB3aGVuIGNvbXB1dGluZyB2YWx1ZSBmb3IgUl9BUk1fUkVMMzIKCXJlbG9jLgoKMjAwMS0wNy0wNiAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IENvcnJlY3Qgc2Vuc2Ugb2YKCWBpbnRlcndvcmtpbmcnIHdhcm5pbmcgbWVzc2FnZS4KCjIwMDEtMDctMDUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoKCSogcGVpY29kZS5oIChjb2ZmX3N3YXBfc2NuaGRyX2luKTogRm9yIHNlY3Rpb25zIGNvbnRhaW5pbmcKCXVuaW5pdGlhbGlzZWQgZGF0YSwgb25seSBzZXQgdGhlaXIgc2l6ZSB0byBzX3BhZGRyIGlmIHRoaXMgZG9lcwoJbm90IHJlc2V0IHRoZWlyIHNpemUgdG8gemVyby4gIE1TJ3MgbGF0ZXN0IGNvbXBpbGVycyB3aWxsIHNldAoJc19wYWRkciB0byB6ZXJvLgoKMjAwMS0wNi0yMCAgQm8gVGhvcnNlbiAgPGJvQHN1c2UuY28udWs+CgogICAgICAgICogZWxmNjQteDg2LTY0LmMgKGVsZjY0X3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uKTogRml4IGxpbmtpbmcgb2YKICAgICAgICBzaGFyZWQgbGlicmFyaWVzLgoKMjAwMS0wNi0yMSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBBbHdheXMKCWFsbG9jYXRlIGxvY2FsIC5nb3Qgc3BhY2UuICBVc2Ugc2hvcnRjdXRzIGZyb20gaGFzaCB0YWJsZSBmb3IgLmdvdAoJYW5kIC5wbHQgcmF0aGVyIHRoYW4gY29tcGFyaW5nIHNlY3Rpb24gbmFtZXMuCgkoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBVc2UgbG9jYWxfcGx0X3JlZmNvdW50cyB2YXIgcmF0aGVyIHRoYW4KCWFkanVzdGluZyBpbmRleCBpbnRvIGxvY2FsX2dvdF9yZWZjb3VudHMgdG8gZG9jdW1lbnQgd2hhdCB3ZSBhcmUKCXJlYWxseSBkb2luZy4KCShlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBTaW1pbGFybHkgZm9yIGxvY2FsX3BsdF9vZmZzZXRzLgoJVGlkeSAuZ290IGFuZCAucGx0IGVycm9yIGNoZWNraW5nLgoKMjAwMS0wNi0xOSAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogU2V0IHZlcnNpb24gdG8gMi4xMS4yLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAxLTA2LTE5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJTWVyZ2UgZnJvbSBtYWlubGluZSBzb3VyY2VzOgoJMjAwMS0wNi0xOSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBGaXggY3JlYXRpb24gb2YKCWR5bmFtaWMgc3ltYm9scy4KCTIwMDEtMDYtMDcgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCSogZWxmNjQteDg2LTY0LmMgKGVsZjY0X3g4Nl82NF9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBBZGQgYW4KCWFzc2VydGlvbi4KCShlbGY2NF94ODZfNjRfY2hlY2tfcmVsb2NzKTogU2V0IGFuIGFsaWdubWVudCBvZiA4IGZvciAucmVsYQoJc2VjdGlvbnM7IGhhbmRsZSBmdXJ0aGVyIHJlbG9jYXRpb25zLgoJMjAwMS0wNi0wMSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBBZGQgUEM4CglyZWxvY2F0aW9uLCBzbWFsbCByZWZvcm1hdHRpbmcuCgoyMDAxLTA2LTE0ICBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+CgoJTWVyZ2UgZnJvbSBtYWlubGluZSBzb3VyY2VzOgoJMjAwMS0wNC0yNyAgU2VhbiBNY05laWwgPHNlYW5AbWNuZWlsLmNvbT4KCSogY29uZmlnLmJmZDogQWRkIGFybS12eHdvcmtzIHRhcmdldC4KCSogY29mZi1hcm0gKGNvZmZfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBBZGQgaW4gc3ltYm9sIHZhbHVlIHRvCglhZGRlbmQgKGZybyBWWHdvcmtzIHRhcmdldHMpLgoJMjAwMS0wMy0wNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlKTogQ2xlYXIgYml0IHplcm8KCW9mIG9mZnNldCBpbiBCTFgoMSkgaW5zdHJ1Y3Rpb24uCgkqIGNvZmYtYXJtLmMgKGNvZmZfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBDbGVhciBiaXQgemVybyBvZgoJb2Zmc2V0IGluIEJMWCgxKSBpbnN0cnVjdGlvbi4KICAgICAgICBGaXggZm9ybWF0dGluZy4KCTIwMDEtMDMtMDYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgkqIGNvZmYtYXJtLmMgKGNvZmZfYXJtX3JlbG9jX3R5cGVfbG9va3VwKTogQWRkCglCRkRfUkVMT0NfVEhVTUJfUENSRUxfQkxYLgoJMjAwMS0wNS0wNCAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSk6IFNldAogICAgICAgIEVGX0FSTV9IQVNFTlRSWSBpZiB0aGUgc3RhcnQgYWRkcmVzcyBpcyBzZXQuCgoyMDAxLTA2LTExICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlndXJlLmluICg8Q09SRUZJTEUgY2FzZSBzdG10Pik6IE1vdmUgcG93ZXJwYy0qLSpic2QqIGFmdGVyCglwb3dlcnBjLSotZnJlZWJzZCouCgoJTWVyZ2UgZnJvbSBtYWlubGluZS4KCTIwMDEtMDYtMDIgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX29iamVjdF9wKTogQ2hlY2sgRUxGT1NBQklfTElOVVgKCWFuZCBFTEZPU0FCSV9IUFVYLgoJKiBlbGY2NC1ocHBhLmMgKGVsZjY0X2hwcGFfb2JqZWN0X3ApOiBMaWtld2lzZS4KCgkyMDAxLTA2LTAyICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCSogc2VjdGlvbi5jIChfYmZkX3N0cmlwX3NlY3Rpb25fZnJvbV9vdXRwdXQpOiBIYW5kbGUgTlVMTAoJb3V0cHV0X3NlY3Rpb24uCgoJMjAwMS0wNS0zMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBvbmUubmV0LmF1PgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogRG9uJ3QgTkVFRF9QTFQgZm9yCgltaWxsaWNvZGUuICBEb24ndCBhbGxvY2F0ZSAuZ290IGFuZCAucmVsYS5nb3Qgc3BhY2UgaGVyZS4uCgkoZWxmMzJfaHBwYV9nY19zd2VlcF9ob29rKTogLi5hbmQgbm8gbmVlZCB0byBkZWFsbG9jYXRlIGhlcmUuLgoJKGVsZjMyX2hwcGFfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogLi5hbmQgZG9uJ3QgYWxsb2NhdGUgLnBsdCBhbmQKCS5yZWxhLnBsdCBoZXJlLi4KCShocHBhX2hhbmRsZV9QSUNfY2FsbHMpOiAuLm5vciBoZXJlLi4KCShhbGxvY2F0ZV9wbHRfYW5kX2dvdCk6IC4uaW5zdGVhZCBkbyBpdCBhbGwgaGVyZS4gIE5ldyBmdW5jdGlvbi4KCShlbGYzMl9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IEFsbG9jYXRlIGxvY2FsIC5nb3Qgc3BhY2UgYW5kCgljYWxsIGFsbG9jYXRlX3BsdF9hbmRfZ290LiAgTm8gbmVlZCB0byB6YXAgLmdvdCBpZiBub3QgZHluYW1pYy4KCShlbGYzMl9ocHBhX2ZpbmFsX2xpbmspOiBDYWxsIHJlZ3VsYXIgYmZkX2ZpbmFsX2xpbmsgaW5zdGVhZCBvZgoJZ2NfY29tbW9uX2ZpbmFsX2xpbmsuCgkoV0lMTF9DQUxMX0ZJTklTSF9EWU5BTUlDX1NZTUJPTCk6IERlZmluZS4KCShlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBVc2UgaXQgaGVyZS4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IFJlbW92ZSBzdXBlcmZsdW91cyB0ZXN0IG9mCglkeW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQuCgkoaHBwYV90eXBlX29mX3N0dWIpOiBEb24ndCBMT05HX0JSQU5DSF9WSUFfUExUIGlmIG1pbGxpY29kZSBzeW0uCgoJMjAwMS0wNS0yOCAgVGhpZW1vIFNldWZlciAgPHNldWZlckBjc3YuaWNhLnVuaS1zdHV0dGdhcnQuZGU+CgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfc2l6ZV9yZWxvY19zZWN0aW9uKTogVXNlIGJmZF96bWFsbG9jIGluc3RlYWQgb2YKCWEgemVyb2luZyBsb29wLgoJKGVsZl9saW5rX291dHB1dF9yZWxvY3MpOiBIYW5kbGUgTUlQUyBFTEY2NCByZWxvY2F0aW9ucyBjb3JyZWN0bHkuCgkoZWxmX2xpbmtfaW5wdXRfYmZkKTogTGlrZXdpc2UuCgkoZWxmX3JlbG9jX2xpbmtfb3JkZXIpOiBMaWtld2lzZS4KCShlbGZfZmluaXNoX3BvaW50ZXJfbGlua2VyX3NlY3Rpb24pOiBUeXBvLiBIYW5kbGUgTUlQUyBFTEY2NAoJcmVsb2NhdGlvbnMgY29ycmVjdGx5LgoKCTIwMDEtMDUtMjggIEFsYW4gTW9kcmEgIDxhbW9kcmFAb25lLm5ldC5hdT4KCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBTZXQgdXAgLnBsdCBlbnRyaWVzCglmb3Igc3ltYm9scyBmb3JjZWQgbG9jYWwgdGhhdCBuZWVkIHBsYWJlbHMuCgkoZWxmMzJfaHBwYV9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBEb24ndCBhbGxvY2F0ZSBzcGFjZSBpbgoJLnBsdC5yZWxhIGZvciBsb2NhbCBzeW1zIGlmIG5vbi1zaGFyZWQuCgkoaHBwYV9idWlsZF9vbmVfc3R1Yik6IE1hc2sgbHNiIG9mIHBsdC5vZmZzZXQuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBBYm9ydCBpZiBsc2Igb2YgcGx0Lm9mZnNldCBzZXQuCgkoY2xvYmJlcl9taWxsaWNvZGVfc3ltYm9scyk6IENvcnJlY3QgY29tbWVudC4KCShlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoKCTIwMDEtMDUtMjUgIEFsYW4gTW9kcmEgIDxhbW9kcmFAb25lLm5ldC5hdT4KCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCBhbGxvdwoJdW5kZWZpbmVkIG1pbGxpY29kZSBzeW1zIGluIHNoYXJlZCBsaWJzLgoJKGhwcGFfYnVpbGRfb25lX3N0dWIpOiBUdXJuIEJGRF9BU1NFUlRzIGludG8gYWJvcnRzLgoJKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoKCTIwMDEtMDUtMjMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9zbHVycF9yZWxvY190YWJsZSk6IEZpeCB0eXBvCglzL0VOVElSRVMvRU5UUklFUy8uCgoJMjAwMS0wNS0yMyAgVGhpZW1vIFNldWZlciA8c2V1ZmVyQGNzdi5pY2EudW5pLXN0dXR0Z2FydC5kZT4KCSogcmVsb2MuYyAoYmZkX3JlbG9jX2NvZGVfcmVhbCk6IEFkZCBNSVBTIEVMRjY0IHJlbG9jYXRpb25zLgoJKiBsaWJiZmQuaDogUmVnZW5lcmF0ZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBhb3V0eC5oIChhb3V0X0B2YXJ7c2l6ZX1fbWFjaGluZV90eXBlKTogQWRkIE1JUFMgcjEyayBzdXBwb3J0LgoJKiBhcmNodXJlcy5jIChiZmRfbWFjaF9taXBzMTIwMDApOiBEZWZpbmUuCgkqIGNwdS1taXBzLmMgKGFyY2hfaW5mb19zdHJ1Y3QpOiBBZGQgTUlQUyByMTJrIHN1cHBvcnQuCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogQWRkIE1JUFMgcjEyawoJc3VwcG9ydC4KCShfYmZkX21pcHNfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBvZmZpY2lhbCBiZmQgdHlwZWRlZi4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBlbGZ4eC10YXJnZXQuaDogRG8gbm90IHJlZGVmaW5lIGJmZF9lbGZOTl9iZmRfbWFrZV9kZWJ1Z19zeW1ib2wuCgoJMjAwMS0wNS0yMyAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgkqIGVsZi1iZmQuaCAoTlVNX1NIRFJfRU5UUklFUyk6IE5ldyBtYWNybzogY29tcHV0ZSB0aGUgbnVtYmVyCglvZiBlbnRyaWVzIGluIGEgc3RydWN0dXJlZCBzZWN0aW9uLgogICAgICAgICogZWxmLmM6IFVzZSBuZXcgbWFjcm8uCiAgICAgICAgKiBlbGYzMi1pMzg2LmM6IFVzZSBuZXcgbWFjcm8uCiAgICAgICAgKiBlbGYzMi1taXBzLmM6IFVzZSBuZXcgbWFjcm8uCiAgICAgICAgKiBlbGY2NC1hbHBoYS5jOiBVc2UgbmV3IG1hY3JvLgogICAgICAgICogZWxmNjQtc3BhcmMuYzogVXNlIG5ldyBtYWNyby4KICAgICAgICAqIGVsZmNvZGUuaDogVXNlIG5ldyBtYWNyby4KICAgICAgICAqIGVsZmxpbmsuaDogVXNlIG5ldyBtYWNyby4KCgkyMDAxLTA1LTIxICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgkqIGR3YXJmMi5jIChkZWNvZGVfbGluZV9pbmZvKTogRml4IGVycm9yIG1lc3NhZ2UuCgkocmVhZF9hYmJyZXZzKTogRml4IHRlc3QgZm9yIG9mZnNldCBhcyBzdWdnZXN0ZWQgYnkgQWxhbiBNb2RyYSBhbmQKCWFkanVzdCBlcnJvciBtZXNzYWdlLgoKCTIwMDEtMDUtMTcgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogZWxmbGluay5oIChOQU1FKGJmZF9lbGYsc2l6ZV9keW5hbWljX3NlY3Rpb25zKSk6IFNldCB0aGUKCXZlcnNpb24gZGVmaW5pdGlvbiB0byBiYXNlbmFtZSBvZiB0aGUgb3V0cHV0IGZpbGVuYW1lLgoKCTIwMDEtMDUtMTUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBlbGYtbTEwMzAwLmMgKG1uMTAzMDBfZWxmX3JlbGF4X3NlY3Rpb24pOiBEb24ndCByZWxheAoJbmVnYXRpdmUgMzItYml0IG9wZXJhbmRzIHRvIDE2IG9wZXJhbmRzIHdoZW4gdGhlIG9wZXJhbmQgaXMKCWdvaW5nIHRvIGJlIHplcm8tZXh0ZW5kZWQgYnkgdGhlIG1vZGlmaWVkIG9wY29kZS4KCgkyMDAxLTA1LTExICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCSogZWxmeHgtaWE2NC5jIChpc191bndpbmRfc2VjdGlvbl9uYW1lKTogQ29uc2lkZXIgbGlua29uY2UgdW53aW5kCglzZWN0aW9ucyBhcyB3ZWxsLgoJKGVsZk5OX2lhNjRfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IE1hcCAuZ251LmxpbmtvbmNlLmlhNjR1bncuRk9PCgl0byAuZ251LmxpbmtvbmNlLnQuRk9PIHRleHQgc2VjdGlvbi4KCgkyMDAxLTA1LTExICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCSogZHdhcmYxLmMgKF9iZmRfZHdhcmYxX2ZpbmRfbmVhcmVzdF9saW5lKTogQ2hhbmdlIHR5cGUgb2YgJ2FkZHInCgl0byBiZSB1bnNpZ25lZCBsb25nLCBpbiBvcmRlciB0byBtYXRjaCBpdHMgdXNlLgoKCTIwMDEtMDUtMTAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogbGlua2VyLmMgKF9iZmRfZ2VuZXJpY19saW5rX2FkZF9vbmVfc3ltYm9sKTogQ2hlY2sgbG9vcCBvbgoJaW5kaXJlY3Qgc3ltYm9scy4KCgkyMDAxLTA1LTA5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogRml4IGEgdHlwby4gQWxsb2NhdGUKCXZlcnN5bWhkci0+c2hfc2l6ZSBieXRlcyBmb3IgZXh0dmVyc3ltIGluc3RlYWQgb2YgaGRyLT5zaF9zaXplLgoJUmVtb3ZlIHRoZSB1bnVzZWQgdmVyaWFibGUgYGR5bnZlcicuCgoJMjAwMS0wNS0wNyAgVGhpZW1vIFNldWZlciA8c2V1ZmVyQGNzdi5pY2EudW5pLXN0dXR0Z2FydC5kZT4KCSogZWxmLmMgKF9iZmRfZWxmX3NsdXJwX3ZlcnNpb25fdGFibGVzKTogQ2hhbmdlIG1heGlkeCB0byB1bnNpZ25lZCwgaXQKCWlzIGFsd2F5cyBhIHBvc2l0aXZlIGludGVnZXIuIENhc3QgYXdheSBzaWduIG1pc21hdGNoLgoJKiBlbGYzMi1taXBzLmM6IEZpeCBtaXNsZWFkaW5nIGNvbW1lbnQgYW5kIHR5cG8uCgkoX2JmZF9taXBzX2VsZl9zZWN0aW9uX2Zyb21fYmZkX3NlY3Rpb24pOiBSZW1vdmUgdW51c2VkIGF0dHJpYnV0ZSwgdXNlCgljb3JyZWN0IGRhdGEgdHlwZS4KCSogZWxmbGluay5jOiBGaXggdHlwby4KCShfYmZkX2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IFJlbW92ZSBzdXBlcmZsdW91cyBpbml0aWFsaXphdGlvbi4KCSogZWNvZmZzd2FwLmggKGVjb2ZmX3N3YXBfZmRyX2luKTogQ2FzdCBhd2F5IHNpZ24gbWlzbWF0Y2guCgoJMjAwMS0wNS0wMyAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgkqIHRhcmdldHMuYyAoX2JmZF90YXJnZXRfdmVjdG9yX2VudHJpZXMpOiBDb21wdXRlIHZhbHVlIGJhc2VkIG9uCgl0aGUgc2l6ZSBvZiB0aGUgX2JmZF90YXJnZXRfdmVjdG9yIGFuZCBub3QgYmZkX3RhcmdldF92ZWN0b3IuCgoJMjAwMS0wNS0wMyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoJKiBlbGY2NC1nZW4uYyAoZWxmX2dlbmVyaWNfaW5mb190b19ob3d0byk6IEFkZCB1bnVzZWQgYXR0cmlidXRlLgoJKGVsZl9nZW5lcmljX2luZm9fdG9faG93dG9fcmVsKTogTGlrZXdpc2UuCgkqIGNvZmYtYWxwaGEuYyAocmVsb2NfbmlsKTogTGlrZXdpc2UuCgkoYWxwaGFfZWNvZmZfYmFkX2Zvcm1hdF9ob29rKTogTGlrZXdpc2UuCgkoYWxwaGFfYWRqdXN0X3JlbG9jX291dCk6IExpa2V3aXNlLgoJKGFscGhhX2JmZF9yZWxvY190eXBlX2xvb2t1cCk6IExpa2V3aXNlLgoJKGFscGhhX2NvbnZlcnRfZXh0ZXJuYWxfcmVsb2MpOiBMaWtld2lzZS4KCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfcmVsb2NfbmlsKTogTGlrZXdpc2UuCgkoZWxmNjRfYWxwaGFfcmVsb2NfYmFkKTogTGlrZXdpc2UuCgkoZWxmNjRfYWxwaGFfcmVsb2NfZ3BkaXNwKTogTGlrZXdpc2UuCgkoZWxmNjRfYWxwaGFfYmZkX3JlbG9jX3R5cGVfbG9va3VwKTogTGlrZXdpc2UuCgkoZWxmNjRfYWxwaGFfaW5mb190b19ob3d0byk6IExpa2V3aXNlLgoJKGVsZjY0X2FscGhhX2FkZF9zeW1ib2xfaG9vayk6IExpa2V3aXNlLgoJKGVsZjY0X2FscGhhX2NyZWF0ZV9nb3Rfc2VjdGlvbik6IExpa2V3aXNlLgoJKGVsZjY0X2FscGhhX2lzX2xvY2FsX2xhYmVsX25hbWUpOiBMaWtld2lzZS4KCShlbGY2NF9hbHBoYV9tZXJnZV9pbmRfc3ltYm9scyk6IExpa2V3aXNlLgoJKiBlbGY2NC1taXBzLmMgKG1pcHNfZWxmNjRfcmVsb2NfdHlwZV9sb29rdXApOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2dldF9yZWxvY191cHBlcl9ib3VuZCk6IExpa2V3aXNlLgoJKiBubG0zMi1hbHBoYS5jIChubG1fYWxwaGFfbWFuZ2xlX3JlbG9jcyk6IExpa2V3aXNlLgoJKG5sbV9hbHBoYV9nZXRfcHVibGljX29mZnNldCk6IExpa2V3aXNlLgoKCTIwMDEtMDQtMzAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogZWxmLmMgKF9iZmRfZWxmX2xpbmtfaGFzaF9oaWRlX3N5bWJvbCk6IFNldCBkeW5pbmR4IHRvIC0xCglvbmx5IGZvciBFTEZfTElOS19GT1JDRURfTE9DQUwuCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9oaWRlX3N5bWJvbCk6IExpa2V3aXNlLgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfaGlkZV9zeW1ib2wpOiBMaWtld2lzZS4KCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X2hhc2hfaGlkZV9zeW1ib2wpOiBMaWtld2lzZS4KCSogZWxmbGluay5oIChlbGZfZml4X3N5bWJvbF9mbGFncyk6IFNldCBFTEZfTElOS19GT1JDRURfTE9DQUwKCWlmIHRoZSBzeW1ib2wgaGFzIGhpZGRlbiBvciBpbnRlcm5hbCB2aXNpYmlsaXR5LgoKCTIwMDEtMDQtMTQgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgkqIGNvZmZjb2RlLmggKGNvZmZfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogVXNlCgliZmRfY29mZl9zd2FwX2ZpbGVoZHJfb3V0IGluc3RlYWQgb2YgY29mZl9zd2FwX2ZpbGVoZHJfb3V0LgoKCTIwMDEtMDQtMDkgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoJKiBlbGZsaW5rLmggKGVsZl9maXhfc3ltYm9sX2ZsYWdzKTogRm9yIG5vbi1kZWZhdWx0IHZpc2liaWxpdGllcywKCW9ubHkgaGlkZSBzeW1ib2xzIG1hcmtlZCBTVFZfSU5URVJOQUwgb3IgU1RWX0hJRERFTi4KCgkyMDAxLTA0LTA1ICBTdGV2ZW4gSi4gSGlsbCAgPHNqaGlsbEBjb3R3LmNvbT4KCSogY29uZmlnLmJmZCAobWlwcyplbCotKi1saW51eC1nbnUqKTogVXNlIHRyYWRpdGlvbmFsIGxpdHRsZQoJZW5kaWFuIE1JUFMgRUxGIHRhcmdldC4KCShtaXBzKi0qLWxpbnV4LWdudSopOiBVc2UgdHJhZGl0aW9uYWwgYmlnIGVuZGlhbiBNSVBTIEVMRiB0YXJnZXQuCgkqIGNvbmZpZ3VyZS5pbiAoYmZkX2VsZjY0X3RyYWRiaWdtaXBzX3ZlYyk6IE5ldy4gVHJhZGl0aW9uYWwKCTY0Yml0IGJpZyBlbmRpYW4gTUlQUyBFTEYgdGFyZ2V0LgoJKGJmZF9lbGY2NF90cmFkbGl0dGxlbWlwc192ZWMpOiBOZXcuIFRyYWRpdGlvbmFsIDY0Yml0IGxpdHRsZQoJZW5kaWFuIE1JUFMgRUxGIHRhcmdldC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogZWxmMzItbWlwcy5jIChJUklYX0NPTVBBVCk6IEhhbmRsZSB0cmFkaXRpb25hbCA2NGJpdCBhbmQKCWxpdHRsZSBlbmRpYW4gdGFyZ2V0cy4KCShtaXBzX2VsZl9zeW1faXNfZ2xvYmFsKTogSGFuZGxlIHRyYWRpdGlvbmFsIHRhcmdldHMuCgkqIGVsZjY0LW1pcHMuYyAoYmZkX2VsZjY0X3RyYWRiaWdtaXBzX3ZlYyk6IE5ldy4gVHJhZGl0aW9uYWwKCTY0Yml0IGJpZyBlbmRpYW4gTUlQUyBFTEYgdGFyZ2V0LgoJKGJmZF9lbGY2NF90cmFkbGl0dGxlbWlwc192ZWMpOiBOZXcuIFRyYWRpdGlvbmFsIDY0Yml0IGxpdHRsZQoJZW5kaWFuIE1JUFMgRUxGIHRhcmdldC4KCSogdGFyZ2V0cy5jOiAoX2JmZF90YXJnZXRfdmVjdG9yKTogQWRkIGJmZF9lbGY2NF90cmFkYmlnbWlwc192ZWMKCWFuZCBiZmRfZWxmNjRfdHJhZGxpdHRsZW1pcHNfdmVjLgoKCTIwMDEtMDQtMDQgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgkqIGVsZmxpbmsuaCAoZWxmX2ZpeF9zeW1ib2xfZmxhZ3MpOiBDYWxsIGVsZl9iYWNrZW5kX2hpZGVfc3ltYm9sCgl3aGVuIC1Cc3ltYm9saWMgY2F1c2VzIGEgc3ltYm9sIHRvIG5vIGxvbmdlciBuZWVkIGEgLnBsdCBlbnRyeS4KCgkyMDAxLTA0LTAzICBEYXZpZCBNb3NiZXJnZXIgIDxkYXZpZG1AaHBsLmhwLmNvbT4KCSogZWZpLWFwcC1pYTMyLmMgKEFMSUdOX1NFQ1RJT05TX0lOX0ZJTEUpOiBEZWxldGVkLgoKCTIwMDEtMDMtMzAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogZWZpLWFwcC1pYTMyLmMgKFBFSV9UQVJHRVRfU1VCU1lTVEVNKTogUmVuYW1lIGZyb20gLi4uCgkoUEVJX0RFRkFVTFRfVEFSR0VUX1NVQlNZU1RFTSk6IFRoaXMuCgoJMjAwMS0wMy0yMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCSogTWFrZWZpbGUuYW0gKEJVSUxEX0NGSUxFUyk6IE5ldyB2YXJpYWJsZTogTGlzdCBvZiBDIHNvdXJjZQogICAgICAgIGZpbGVzIGNyZWF0ZWQgaW4gYnVpbGQgZGlyZWN0b3J5LgogICAgICAgIChCVUlMRF9IRklMRVMpOiBOZXcgdmFyaWFibGU6IExpc3Qgb2YgaGVhZGVyIGZpbGVzIGNyZWF0ZWQgaW4KICAgICAgICBidWlsZCBkaXJlY3RvcnkuCiAgICAgICAgKFBPVEZJTEVTKTogRGVsZXRlLgogICAgICAgIChwby9QT1RGSUxFUy5pbik6IFJlcGxhY2UgcnVsZSB3aXRoIGVtcHR5IGVudHJ5LgogICAgICAgIChwby9TUkMtUE9URklMRVMuaW4pOiBOZXcgcnVsZTogQ3JlYXRlIGEgbGlzdCBvZiBzb3VyY2UgZmlsZXMKICAgICAgICBpbiB0aGUgc291cmNlIGRpcmVjdG9yeS4KICAgICAgICAocG8vQkxELVBPVEZJTEVTLmluKTogTmV3IHJ1bGU6IENyZWF0ZSBhIGxpc3Qgb2Ygc291cmNlIGZpbGVzCiAgICAgICAgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KICAgICAgICAoTU9TVExZQ0xFQU4pOiBEbyBub3QgZGVsZXRlIHNvdXJjZSBmaWxlcyBjcmVhdGVkIGluIGJ1aWxkCiAgICAgICAgZGlyZWN0b3J5LgogICAgICAgICogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCiAgICAgICAgKiBjb25maWd1cmUuaW46IEluc2VydCBTUkMtUE9URklMRVMuaW4gYW5kIEJMRC1QT1RGSUxFUy5pbgogICAgICAgIGludG8gcG8vTWFrZWZpbGUuCiAgICAgICAgKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCiAgICAgICAgKiBwby9NYWtlLWluOiBSZXBsYWNlIG9jY3VycmVuY2VzIG9mIFBPVEZJTEVTIHdpdGggU1JDLVBPVEZJTEVTCiAgICAgICAgYW5kIEJMRF9QT1RGSUxFUy4KCUFkZCAuLiB0byB0aGUgc2VhcmNoIHBhdGggd2hlbiBidWlsZGluZyBiZmQucG90LgogICAgICAgIERlbGV0ZSBQT1RGSUxFUyB3aGVuIHBlcmZvcm1pbmcgZGlzdGNsZWFuLgogICAgICAgIEFkZCBjb21tZW50IGRlc2NyaWJpbmcgd2h5IGRpc3RjbGVhbiBpcyBicm9rZW4gaW4gbWFpbnRhaW5lciBtb2RlLgoJKiBwby9QT1RGSUxFUy5pbjogRGVsZXRlLgoJKiBwby9TUkMtUE9URklMRVMuaW46IE5ldyBmaWxlLgoJKiBwby9CTEQtUE9URklMRVMuaW46IE5ldyBmaWxlLgogICAgICAgICogcG8vYmZkLnBvdDogUmVnZW5lcmF0ZS4KCgkyMDAxLTAzLTA2ICBJZ29yIFNoZXZseWFrb3YgIDxpZ29yQHdpbmRyaXZlci5jb20+CgkqIGFyY2h1cmVzLmMgKGJmZF9kZWZhdWx0X3NjYW4pOiBBZGQgQ29sZGZpcmUgQ1BVcy4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBjcHUtbTY4ay5jOiBBZGQgQ29sZGZpcmUgQ1BVcyBmb3IgYXJjaCB0YWJsZS4KCSogaWVlZS5jIChpZWVlX3dyaXRlX3Byb2Nlc3Nvcik6IFNldCBwcm9wZXIgaWQgZm9yCglDb2xkZmlyZSBDUFVzLgoKCTIwMDEtMDItMjcgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogYW91dHguaCAoTkFNRShhb3V0LGJmZF9mcmVlX2NhY2hlZF9pbmZvKSk6IFJldHVybiB0cnVlIGlmCglhYmZkLT50ZGF0YS5hb3V0X2RhdGEgPT0gTlVMTC4KCgkyMDAxLTAyLTI2ICBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+CgkqIGNvZmZjb2RlLmggKHN0eXBfdG9fc2VjX2ZsYWdzKSBbQ09GRl9XSVRIX1BFIHZlcnNpb25dOiBUaWR5Cgl1cCwgcmVwbGFjaW5nIG11bHRpcGxlIGlmIHN0YXRlbWVudHMgd2l0aCBhIHN3aXRjaC4KICAgICAgICAoaGFuZGxlX0NPTURBVCk6IE5ldyBmdW5jdGlvbi4KCgkyMDAxLTAyLTI2ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgkqIGNvZmZjb2RlLmggKHN0eXBfdG9fc2VjX2ZsYWdzKSBbQ09GRl9XSVRIX1BFIHZlcnNpb25dOiBJc3N1ZQoJYSB3YXJuaW5nIGZvciBzZWN0aW9uIGZsYWdzIHdlIGRvIG5vdCBoYW5kbGUgaW5zdGVhZCBvZgoJYWJvcnRpbmcuCgoJMjAwMS0wMi0xOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgkqIGVsZjMyLXNwYXJjLmMgKGVsZjMyX3NwYXJjX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IERvbid0IG1ha2UgUExUCgllbnRyaWVzIHRoYXQgY291bGQgc2VydmUgYXMgYSBkZWZpbml0aW9uIGZvciBhIHdlYWsgc3ltYm9sLgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCgkyMDAxLTAyLTE4ICBKaW0gS2luZ2RvbiAgPGpraW5nZG9uQGVuZ3Iuc2dpLmNvbT4KCSogaXJpeC1jb3JlLmMgKGlyaXhfY29yZV9jb3JlX2ZpbGVfcCk6IFNldCB0aGUgYXJjaGl0ZWN0dXJlIChHREIKCW11bHRpYXJjaCBuZWVkcyBpdCkuCgoJMjAwMS0wMi0xOCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2lucHV0X2JmZCk6IElnbm9yZSBpbnZhbGlkIHNlY3Rpb24gc3ltYm9sCglpbmRleC4KCgkyMDAxLTAyLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCSogdm1zLW1pc2MuYzogRml4IGZvcm1hdHRpbmcuCgoJMjAwMS0wMi0xNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgkqIHZtcy5jOiBGaXggZm9ybWF0dGluZy4KCgkyMDAxLTAyLTE0ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgkqIGVsZi5jIChlbGZfZmluZF9mdW5jdGlvbik6IE5ldyBmdW5jdGlvbi4KCShfYmZkX2VsZl9maW5kX25lYXJlc3RfbGluZSk6IENhbGwgZWxmX2ZpbmRfZnVuY3Rpb24gKCkgdG8gZmluZAoJdGhlIGZpbGUgbmFtZSBhbmQgZnVuY3Rpb24gbmFtZS4KCgkyMDAxLTAyLTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoJKiBNYWtlZmlsZS5hbSAoQkZEMzJfQkFDS0VORFNfQ0ZJTEVTKTogUmVtb3ZlIHBlaWdlbi5jCgkoQkZENjRfQkFDS0VORFMpOiBBZGQgcGVwaWdlbi5jCglBZGQgcnVsZXMgdG8gY3JlYXRlIHBlaWdlbi5jIGFuZCBwZXBpZ2VuLmMgZnJvbSBwZVhYaWdlbi5jLgoKCTIwMDEtMDItMTQgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogbGliY29mZi1pbi5oIChwZV90ZGF0YSk6IEFkZCBtZW1iZXJzIHRhcmdldF9zdWJzeXN0ZW0gYW5kCglmb3JjZV9taW5pbXVtX2FsaWdubWVudC4KCgkyMDAxLTAyLTEzICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCSogdm1zLmMgKHZtc19wcmludF9zeW1ib2wpOiBSZW1vdmUgdW5yZWFjaGFibGUgY29kZS4KCSogcnM2MDAwLWNvcmUuYzogRml4IGZvcm1hdHRpbmcuCgoJMjAwMS0wMi0xMyAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgkqIHBlaWNvZGUuaCAoY29mZl9zd2FwX2ZpbGVoZHJfb3V0KSBbQ09GRl9JTUFHRV9XSVRIX1BFXTogRGVmaW5lCglhcyBfYmZkX1hYaV9vbmx5X3N3YXBfZmlsZWhkcl9vdXQuCgkocGVfbWtvYmplY3QpIFtQRUlfRk9SQ0VfTUlOSU1VTV9BTElHTk1FTlRdOiBTZXQKCXBlLT5mb3JjZV9taW5pbXVtX2FsaWdubWVudCB0byBUUlVFLgoJKHBlX21rb2JqZWN0KSBbUEVJX1RBUkdFVF9TVUJTWVNURU1dOiBTZXQgcGUtPnRhcmdldF9zdWJzeXN0ZW0gdG8KCVBFSV9UQVJHRVRfU1VCU1lTVEVNLgoJKHBlX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBDYWxsCglfYmZkX1hYX3ByaW50X3ByaXZhdGVfYmZkX2RhdGFfY29tbW9uKCkgaW5zdGVhZCBvZgoJX2JmZF9wZV9wcmludF9wcml2YXRlX2JmZF9kYXRhX2NvbW1vbigpLgoJKHBlX2JmZF9jb3B5X3ByaXZhdGVfYmZkX2RhdGEpOiBDYWxsCglfYmZkX1hYX2JmZF9jb3B5X3ByaXZhdGVfYmZkX2RhdGFfY29tbW9uKCkgaW5zdGVhZCBvZgoJX2JmZF9wZV9iZmRfY29weV9wcml2YXRlX2JmZF9kYXRhX2NvbW1vbigpLgoJKGNvZmZfYmZkX2NvcHlfcHJpdmF0ZV9zZWN0aW9uX2RhdGEpOiBEZWZpbmUgYXMKCV9iZmRfWFhfYmZkX2NvcHlfcHJpdmF0ZV9zZWN0aW9uX2RhdGEgaW5zdGVhZCBvZgoJX2JmZF9wZV9iZmRfY29weV9wcml2YXRlX3NlY3Rpb25fZGF0YS4KCShjb2ZmX2dldF9zeW1ib2xfaW5mbyk6IERlZmluZSBhcyBfYmZkX1hYX2dldF9zeW1ib2xfaW5mbyBpbnN0ZWFkCglvZiBhIF9iZmRfcGVfZ2V0X3N5bWJvbF9pbmZvLgoJKiBwZWlnZW4uYzogRGVsZXRlLgoJKiBwZVhYaWdlbi5jOiBSZW5hbWVkIGZyb20gcGVpZ2VuLmMuCgkoQ09GRl9XSVRIX1hYKTogRGVmaW5lIHRoaXMgbWFjcm8gKHdpbGwgZ2V0IGV4cGFuZGVkIGludG8KCUNPRkZfV0lUSF9wZXAgb3IgQ09GRl9XSVRIX3BlLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGlzIGlzIGJlaW5nCgljb21waWxlZCBhcyBwZWlnZW4uYyBvciBwZXBpZ2VuLmMuCglbQ09GRl9XSVRIX3BlcF06IEluY2x1ZGUgImNvZmYvaWE2NC5oIiBpbnN0ZWFkIG9mICJjb2ZmL2kzODYuaCIgdG8KCWRlZmluZSB0aGUgY2Fub25pY2FsIFBFUCBzdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucy4KCShfYmZkX1hYaV9zd2FwX2FvdXRoZHJfb3V0KTogSWYgcGUtPmZvcmNlX21pbmltdW1fYWxpZ25tZW50IGlzIGluCgllZmZlY3QsIGVuZm9yY2UgbWluaW11bSBmaWxlIGFuZCBzZWN0aW9uIGFsaWdubWVudHMuICBJZgoJZXh0cmEtPlN1YnN5c3RlbSBpcyBJTUFHRV9TVUJTWVNURU1fVU5LTk9XTiwgc2V0IGl0IHRvCglwZS0+dGFyZ2V0X3N1YnN5c3RlbSAodGhpcyBkZWZhdWx0cyB0byBJTUFHRV9TVUJTWVNURU1fVU5LTk9XTiwKCXNvLCBieSBkZWZhdWx0LCB0aGlzIGlzIGEgbm8tb3ApLgoJKiBsaWJwZWkuaDogUmVuYW1lIENPRkZfV0lUSF9QRVAgdG8gQ09GRl9XSVRIX3BlcC4KCShfYmZkX1hYX2JmZF9jb3B5X3ByaXZhdGVfYmZkX2RhdGFfY29tbW9uKTogQWRkIG1hY3JvcyB0byBtYXAKCV9iZmRfWFhmb28gdG8gX2JmZF9wZXBmb28gaWYgQ09GRl9XSVRfUEVQIGlzIGRlZmluZWQgYW5kIHRvCglfYmZkX3BlZm9vIGlmIGl0J3Mgbm90IGRlZmluZWQuICBVc2UgdGhlc2UgbWFjcm9zIHRvIGRlZmluZQoJY29mZiBzd2FwIG1hY3Jvcy4KCSogbGliY29mZi5oIChwZV90ZGF0YSk6IEFkZCBtZW1iZXJzIHRhcmdldF9zdWJzeXN0ZW0gYW5kCglmb3JjZV9taW5pbXVtX2FsaWdubWVudC4KCSogZWZpLWFwcC1pYTY0LmMgKENPRkZfV0lUSF9wZXApOiBSZW5hbWUgQ09GRl9XSVRIX1BFUCB0bwoJQ09GRl9XSVRIX3BlcC4KCShQRUlfVEFSR0VUX1NVQlNZU1RFTSk6IFJlbmFtZSBmcm9tIFBFSV9ERUZBVUxUX1RBUkdFVF9TVUJTWVNURU0uCgkqIGNvbmZpZ3VyZS5pbiAoYmZkX2VmaV9hcHBfaWE2NF92ZWMpOiBVc2UgcGVwaWdlbi5sbyBpbnN0ZWFkIG9mCglwZWlnZW4ubG8uCgkqIGNvZmYtaWE2NC5jOiBSZW5hbWUgQ09GRl9XSVRIX1BFUCB0byBDT0ZGX1dJVEhfcGVwLgoJKEFPVVRTWik6IFJlbmFtZSBQRVA2NEFPVVRTWiBhbmQgUEVQNjRBT1VUSERSIHRvIFBFUEFPVVRTWiBhbmQKCVBFUEFPVVRIRFIuCgkqIE1ha2VmaWxlLmluIChCRkQ2NF9CQUNLRU5EUyk6IE1lbnRpb24gcGVwaWdlbi5sby4KCShCRkQ2NF9CQUNLRU5EU19DRklMRVMpOiBNZW50aW9uIHBlcGlnZW4uYwoJKHBlaWdlbi5jKTogQWRkIHJ1bGUgdG8gZ2VuZXJhdGUgZnJvbSBwZVhYaWdlbi5jLgoJKHBlcGlnZW4uYyk6IERpdHRvLgoJKHBlcGlnZW4ubG8pOiBMaXN0IGRlcGVuZGVuY2llcyBmb3IgcGVwaWdlbi5sby4KCgkyMDAxLTAyLTExICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgkqIGVsZmxpbmsuaCAoZWxmX2JmZF9maW5hbF9saW5rKTogVXNlIGZpbGVfYWxpZ24gZm9yIFNZTVRBQgoJYWxpZ25tZW50LgoKCTIwMDEtMDItMTEgIE1hY2llaiBXLiBSb3p5Y2tpICA8bWFjcm9AZHMyLnBnLmdkYS5wbD4KCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jcmVhdGVfZHluYW1pY19yZWxvY2F0aW9uKTogVW5kbyBwYXRjaAoJZnJvbSAyMDAwLTEwLTEzLiAgRG8gbm90IGFkZCB0aGUgc3ltYm9sJ3MgdmFsdWUgZm9yIFJfTUlQU19SRUwzMgoJcmVsb2NhdGlvbnMgYWdhaW5zdCBkeW5zeW0gc3ltYm9scy4KCSogZWxmMzItbWlwcy5jIChlbGZfbWlwc19ob3d0b190YWJsZSk6IEZpeCB0aGUgY29tbWVudCBvbgoJdGhlIFJfTUlQU18yNiByZWxvY2F0aW9uLgoJKG1pcHNfZWxmX2NhbGN1bGF0ZV9yZWxvY2F0aW9uKTogVXNlIChwICsgNCkgaW5zdGVhZCBvZiBwIGZvcgoJdGhlIFJfTUlQU18yNiByZWxvY2F0aW9uLgoJKG1pcHNfZWxmX3BlcmZvcm1fcmVsb2NhdGlvbik6IEZpeCB0aGUgY29tbWVudCBvbiB0aGUgUl9NSVBTMTZfMjYKCXJlbG9jYXRpb24uCgkqIGVsZjY0LW1pcHMuYyAobWlwc19lbGY2NF9ob3d0b190YWJsZV9yZWwpOiBGaXggdGhlIGNvbW1lbnQgb24KCXRoZSBSX01JUFNfMjYgcmVsb2NhdGlvbi4KCShtaXBzX2VsZjY0X2hvd3RvX3RhYmxlX3JlbGEpOiBMaWtld2lzZS4KCSogZWxmMzItbWlwcy5jIChzdHJ1Y3QgbWlwc19lbGZfbGlua19oYXNoX2VudHJ5KTogQWRkZWQgbm9fZm5fc3R1YgoJbWVtYmVyIHRvIG1hcmsgc3ltYm9scyB0aGF0IGhhdmUgbm9uLUNBTEwgcmVsb2NhdGlvbnMgYWdhaW5zdAoJdGhlbS4KCShtaXBzX2VsZl9saW5rX2hhc2hfbmV3ZnVuYyk6IEluaXRpYWxpemUgbm9fZm5fc3R1Yi4KCShtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IEhhbmRsZSBSX01JUFNfQ0FMTDE2IGxpa2UKCVJfTUlQU19HT1QxNi4KCShfYmZkX21pcHNfZWxmX2NoZWNrX3JlbG9jcyk6IFNldCBub19mbl9zdHViIGZvciBhIHN5bWJvbCBpZiBhCglub24tQ0FMTCByZWxvY2F0aW9uIGFnYWluc3QgaXQgaXMgZW5jb3VudGVyZWQuCgkoX2JmZF9taXBzX2VsZl9jb3B5X2luZGlyZWN0X3N5bWJvbCk6IE1lcmdlIG5vX2ZuX3N0dWIgYXMgd2VsbC4KCShfYmZkX21pcHNfZWxmX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IE9ubHkgY3JlYXRlIGEgc3R1YiBpZgoJbm9fZm5fc3R1YiBpcyBub3Qgc2V0LgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX291dHB1dF9leHRzeW0pOiBHZXQgdGhlIG91dHB1dCBzZWN0aW9uCglpbmZvcm1hdGlvbiBmcm9tIHRoZSByZWFsIHN5bWJvbCBmb3IgaW5kaXJlY3Qgb25lcy4KCUNoZWNrIG5vX2ZuX3N0dWIgdG8gZmluZCBvdXQgaWYgYSBzeW1ib2wgaGFzIGEgZnVuY3Rpb24gc3R1YgoJaW5kZWVkLgoKCTIwMDEtMDItMDkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9jb3B5X3ByaXZhdGVfYmZkX2RhdGEpOiBOZXcgZnVuY3Rpb24uCgoJMjAwMS0wMi0wOSAgTWFyayBLZXR0ZW5pcyAgPGtldHRlbmlzQGdudS5vcmc+CgkqIGVsZjMyLXNwYXJjLmMgKF9iZmRfc3BhcmNfZWxmX2hvd3RvX3RhYmxlKTogVHJlYXQgUl9TUEFSQ19VQTMyCglzaW1pbGFyIHRvIFJfU1BBUkNfMzIuCgkqIGVsZjY0LXNwYXJjLmMJKHNwYXJjNjRfZWxmX2hvd3RvX3RhYmxlKTogTGlrZXdpc2UuCgoJMjAwMS0wMi0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCSogZWxmNjQtYWxwaGEuYyAoYWxwaGFfZWxmX2R5bmFtaWNfc3ltYm9sX3ApOiBSZXNwZWN0IHdlYWtuZXNzCgliZWZvcmUgdmlzaWJpbGl0eS4gIExvY2FsbHkgZGVmaW5lZCBwcm90ZWN0ZWQgc3ltYm9scyBhcmUgbm90CglkeW5hbWljLgoKCTIwMDEtMDItMDcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoJKiBlbGZsaW5rLmggKGlzX2dsb2JhbF9zeW1ib2xfZGVmaW5pdGlvbik6IFJlbmFtZSB0bwoJaXNfZ2xvYmFsX2RhdGFfc3ltYm9sX2RlZmluaXRpb24gYW5kIGhhdmUgaXQgcmVqZWN0IGZ1bmN0aW9uCglzeW1ib2xzLgoJKGVsZl9saW5rX2lzX2RlZmluZWRfYXJjaGl2ZV9zeW1ib2wpOiBVc2UgcmVuYW1lZCBmdW5jdGlvbi4KCgkyMDAxLTAyLTA3ICBUb2RkIFZpZXJsaW5nICA8dHZAd2FzYWJpc3lzdGVtcy5jb20+CgkqIGxpYmJmZC1pbi5oIChiZmRfdGFyZ2V0X3ZlY3Rvcik6IENoYW5nZSBleHRlcm4gYXJyYXkgdG8gcG9pbnRlci4KCSogbGliYmZkLmggKGJmZF90YXJnZXRfdmVjdG9yKTogTGlrZXdpc2UuCgkqIHRhcmdldHMuYyAoYmZkX3RhcmdldF92ZWN0b3IpOiBSZW5hbWUgdG8gX2JmZF90YXJnZXRfdmVjdG9yIGFuZAoJbWFrZSBzdGF0aWM7IGNyZWF0ZSBwb2ludGVyIHJlZmVyZW5jZSBuYW1lZCBiZmRfdGFyZ2V0X3ZlY3Rvci4KCShfYmZkX3RhcmdldF92ZWN0b3JfZW50cmllcyk6IENhbGN1bGF0ZSB0aGlzIGJhc2VkIG9uIHRoZSBhcnJheQoJdHlwZWQgX2JmZF90YXJnZXRfdmVjdG9yLgoKCTIwMDEtMDItMDYgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X2R5bmFtaWNfc3ltYm9sX3ApOiBPbmx5IGhpZGRlbiBhbmQKCWludGVybmFsIHN5bWJvbHMgYXJlIG5vdCBkeW5hbWljLgoJKiBlbGY2NC1hbHBoYS5jIChhbHBoYV9lbGZfZHluYW1pY19zeW1ib2xfcCk6IExpa2V3aXNlLgoKCTIwMDEtMDItMDYgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoJKiBlbGYtbTEwMjAwLmM6IEZpeCBmb3JtYXR0aW5nLgoKCTIwMDEtMDItMDEgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoJKiBlbGYtbTEwMzAwLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMS0wNi0xMCAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogU2V0IHZlcnNpb24gdG8gMi4xMS4xLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAxLTA2LTA5ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9wbHQwX2VudHJ5KTogQ29ycmVjdCBlcnJvciBpbiBsYXN0CgljaGFuZ2UuCgkoZWxmMzJfYXJtX3BsdF9lbnRyeSk6IExpa2V3aXNlLgoKMjAwMS0wNi0wNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIE1vc3QgZmlsZXM6IFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlcy4KCjIwMDEtMDUtMjkgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF94ODZfNjRfY2hlY2tfcmVsb2NzKTogSGFuZGxlIFJfWDg2XzY0XzY0LgoJKGVsZjY0X3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgoyMDAxLTA1LTI4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfODZfNjRfc2l6ZV9pbmZvKTogUmVtb3ZlLCB3ZSBjYW4gdXNlIHRoZQoJZ2VuZXJpYyB2ZXJzaW9uIHNpbmNlIHdlIHdhbnQgYSBoYXNoc2l6ZSBvZiA0LgoJKGVsZl9iYWNrZW5kX3NpemVfaW5mbyk6IExpa2V3aXNlLgoKMjAwMS0wNS0yOCAgTmljb2xhcyBQaXRyZSA8bmljb0BjYW0ub3JnPgoKCSogZWxmMzItYXJtLmg6IEZpeCBQTFQgZ2VuZXJhdGlvbiBmb3IgYmlnIGVuZGlhbiBBUk0uCgoyMDAxLTA1LTI4ICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgoJKiByZWxvYy5jOiBBZGQgQkZEX1JFTE9DX1NQQVJDX1VBMTYgYW5kIEJGRF9SRUxPQ19TUEFSQ19VQTY0LgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoJKiBlbGYzMi1zcGFyYy5jOiBFbmFibGUgQkZEX1JFTE9DX1NQQVJDX1VBMTYsIEJGRF9SRUxPQ19TUEFSQ19VQTMyCglhbmQgQkZEX1JFTE9DX1NQQVJDX1VBNjQgbWFwcGluZwoJKiBlbGY2NC1zcGFyYy5jOiBMaWtld2lzZS4KCjIwMDEtMDUtMjMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAb25lLm5ldC5hdT4KCglNZXJnZSBmcm9tIG1haW5saW5lLgoJMjAwMS0wNS0xNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBvbmUubmV0LmF1PgoJKiBlbGYzMi1ocHBhLmMgKGhwcGFfYnVpbGRfb25lX3N0dWIpOiBBZGQgYW4gYXNzZXJ0IHRvIGNoZWNrCglwbHQub2Zmc2V0LgoKCTIwMDEtMDUtMTYgIEFsYW4gTW9kcmEgIDxhbW9kcmFAb25lLm5ldC5hdT4KCSogc2VjdGlvbi5jIChhc2VjdGlvbik6IEFkZCBsaW5rZXJfaGFzX2lucHV0IGZpZWxkLgoJKFNURF9TRUNUSU9OKTogQWRqdXN0IGluaXRpYWxpemF0aW9uIHRvIHN1aXQuCgkqIGVjb2ZmLmMgKGJmZF9kZWJ1Z19zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCgkyMDAxLTA1LTA3ICBUaGllbW8gU2V1ZmVyIDxzZXVmZXJAY3N2LmljYS51bmktc3R1dHRnYXJ0LmRlPgoJKiBlY29mZi5jIChiZmRfZGVidWdfc2VjdGlvbik6IEZpeCBpbml0aWFsaXphdGlvbi4KCgkyMDAxLTA1LTEyICBQZXRlciBUYXJnZXR0ICA8cGV0ZXIudGFyZ2V0dEBhcmNjb3Jlcy5jb20+CgkqIGNwdS1hcmMuYyAoYXJjaF9pbmZvX3N0cnVjdCk6IEFkZCBlbnRyeSAnYmFzZScgcmVwcmVzZW50aW5nIG9sZAoJbmFtZSBmb3IgJ2FyYzUnIGNvcmUgdmVyc2lvbnMuCgkoYmZkX2FyY19hcmNoKTogTWFrZSBiZmRfbWFjaF9hcmNfNiBkZWZhdWx0LgoJKiBlbGYzMi1hcmMuYyAoYXJjX2VsZl9vYmplY3RfcCk6IE1ha2UgRV9BUkNfTUFDSF9BUkM2IGRlZmF1bHQKCWFyY2hpdGVjdHVyZS4KCShhcmNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBNYWtlIGJmZF9tYWNoX2FyY182IGRlZmF1bHQuCgoJMjAwMS0wNS0wOCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgkqIGNvZmYtaTM4Ni5jIChjb2ZmX2kzODZfcmVsb2MpOiBEb24ndCBkdW1wIGNvcmUgaWYgb3V0cHV0X2JmZCBpcwoJTlVMTCBvciBpcyBub3QgQ09GRi4KCShjb2ZmX2kzODZfcnR5cGVfdG9faG93dG8pOiBEb24ndCBkdW1wIGNvcmUgaWYgb3V0cHV0IHNlY3Rpb24KCW93bmVyIGlzIG5vdCBDT0ZGLgoKCTIwMDEtMDQtMTMgIFJvZ2VyIFNheWxlICA8cm9nZXJAbWV0YXBob3JpY3MuY29tPgoJKiBjb2ZmLWkzODYuYyAoVEFSR0VUX1NZTSk6IFNFQ19SRUFET05MWSBpcyBhbiBhcHBsaWNhYmxlIHNlY3Rpb24KCWZsYWcgb24gcGUtaTM4NiB0YXJnZXRzLgoKCTIwMDEtMDQtMjYgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9jaGVja19yZWxvY3MpOiBWZXJpZnkgaWYgcl9zeW1uZHggaXMKCXZhbGlkLgoKCTIwMDEtMDQtMDUgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2Zha2Vfc2VjdGlvbnMpOiBUcmVhdCAiLnJlbG9jIiBhcyBhbgoJb3JkaW5hcnkgInByb2diaXRzIiBzZWN0aW9uLgoKMjAwMS0wNS0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKFNSRUwxNiwgU1JFTDMyLCBTUkVMNjQpOiBTZXQgcGNyZWxfb2Zmc2V0IHRydWUuCgoyMDAxLTA0LTMwICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+LCBBbmRyZWFzIFNjaHdhYiA8c2Nod2FiQHN1c2UuZGU+CgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBDb3JyZWN0IHRlc3QgZm9yCglSX1g4Nl82NF9HT1RQQ1JFTCwgZG9uJ3QgdXNlIGFzc2lnbm1lbnRzIGluc3RlYWQgb2YgY29tcGFyaXNvbnMuCgoyMDAxLTA0LTI3ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogT25seSBzd2FwCglvdXQgaGFuZGxlZCBlbnRyaWVzLgoJKGVsZjY0X3g4Nl82NF9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBTZXQgdXAgR09UIGVudHJpZXMuCgkoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBGaXggR09UUENSRUwgY2FsY3VsYXRpb24uCgkoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBNZXJnZSBlbnRyaWVzIGZvciBHT1RQQ1JFTCBhbmQKCUdPVDMyLgoKMjAwMS0wNC0zMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBvbmUubmV0LmF1PgoKCSogZWxmMzItaHBwYS5jIChmaW5hbF9saW5rX3JlbG9jYXRlKTogQnJhbmNoIHRvIC4rOCBmb3IKCWNhbGxzIHRvIHVuZGVmaW5lZCB3ZWFrIHN5bWJvbHMuCgoyMDAxLTA0LTE5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X3BsdDBfZW50cnkpOiBGaXggaW5zdHJ1Y3Rpb25zLgoJKGVsZjY0X3g4Nl82NF9wbHRfZW50cnkpOiBMaWtld2lzZS4KCShlbGY2NF94ODZfNjRfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBGaXggUExUMCBnZW5lcmF0aW9uLgoJKGVsZjY0X3g4Nl82NF9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBGaXggUExUIGdlbmVyYXRpb24uCgoyMDAxLTAzLTMxICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCUZyb20gMjAwMS0wMy0yNiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoJKiBlbGYzMi1nZW4uYyAoZWxmMzJfZ2VuZXJpY19saW5rX2FkZF9zeW1ib2xzKTogTmV3LiBDaGVjawoJaWYgdGhlcmUgYXJlIGFueSByZWxvY2F0aW9ucyBmb3IgZ2VuZXJpYyBFTEYuCgkoYmZkX2VsZjMyX2JmZF9saW5rX2FkZF9zeW1ib2xzKTogRGVmaW5lZCB0bwoJZWxmMzJfZ2VuZXJpY19saW5rX2FkZF9zeW1ib2xzLgoJKiBlbGY2NC1nZW4uYyAoZWxmNjRfZ2VuZXJpY19saW5rX2FkZF9zeW1ib2xzKTogTmV3LiBDaGVjawoJaWYgdGhlcmUgYXJlIGFueSByZWxvY2F0aW9ucyBmb3IgZ2VuZXJpYyBFTEYuCgkoYmZkX2VsZjY0X2JmZF9saW5rX2FkZF9zeW1ib2xzKTogRGVmaW5lZCB0bwoJZWxmNjRfZ2VuZXJpY19saW5rX2FkZF9zeW1ib2xzLgoKMjAwMS0wMy0yMSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9zZXRfZ3ApOiBDaGVjayBzZWMtPm91dHB1dF9zZWN0aW9uCglub24tTlVMTCBiZWZvcmUgYXR0ZW1wdGluZyB0byBkZXJlZmVyZW5jZS4KCjIwMDEtMDMtMjAgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBlbGYzMi1tNjhrLmMgKGVsZl9tNjhrX3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCBuZWVkIHRoZQoJcmVsb2NhdGlvbiB2YWx1ZSB3aGVuIHJlc29sdmluZyBhIHJlZmVyZW5jZSBmcm9tIGEgZGVidWdnaW5nCglzZWN0aW9uLgoKMjAwMS0wMy0xNiAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDEtMDMtMTYgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfbGlua19oYXNoX2VudHJ5KTogQWRkIG1heWJlX3BpY19jYWxsLgoJKGhwcGFfbGlua19oYXNoX25ld2Z1bmMpOiBJbml0IGl0LgoJKGhwcGFfdHlwZV9vZl9zdHViKTogT25seSB1c2Ugbm9uLVBJQyB0byBQSUMgY2FsbCBzdHViIGlmIGNhbGxlcgoJc2VjdGlvbiBhcHBlYXJzIHRvIGJlIG5vbi1QSUMuCgkoZmluYWxfbGlua19yZWxvY2F0ZSk6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogU2V0IG1heWJlX3BpY19jYWxsIGZvciBhbnkKCXBvc3NpYmxlIGNhbmRpZGF0ZSBmdW5jdGlvbiwgYW5kIHNldCBwaWNfY2FsbCBmb3IgdGhvc2UgdGhhdCB3aWxsCglvbmx5IGhhdmUgYSAucGx0IGVudHJ5IGZvciB0aGUgUElDIGNhbGwgc3R1Yi4KCShocHBhX2hhbmRsZV9QSUNfY2FsbHMpOiBTZXQgbWF5YmVfcGljX2NhbGwuCgoJKiBlbGYzMi1ocHBhLmM6IENvcnJlY3QgZmllbGQgc2VsZWN0b3IgaW4gc3R1YiBjb21tZW50cy4KCShjbG9iYmVyX21pbGxpY29kZV9zeW1ib2xzKTogRm9ybWF0dGluZyBmaXguCgoyMDAxLTAzLTExICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlndXJlLmluOiBTZXQgdmVyc2lvbiB0byAyLjExLgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBEb24ndCBtYWtlIFBMVAoJZW50cmllcyB0aGF0IGNvdWxkIHNlcnZlIGFzIGEgZGVmaW5pdGlvbiBmb3IgYSB3ZWFrIHN5bWJvbC4KCjIwMDEtMDMtMDcgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF94ODZfNjRfcmVsb2NhdGVfc2VjdGlvbik6IEZpeCBoYW5kbGluZyBvZgoJc29tZSByZWxvY2F0aW9uIHZhbHVlcy4KCjIwMDEtMDItMjggIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF94ODZfNjRfcmVsb2NhdGVfc2VjdGlvbik6IEFkZCByZWxvY2F0aW9uCgl0byBhZGRlbmQuCgoyMDAxLTAyLTI2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBlbGY2NC14ODYtNjQuYyAoeDg2XzY0X2VsZl9ob3d0b190YWJsZSk6IEZpeCBvcmRlciBvZiBlbnRyaWVzLgoKMjAwMS0wMi0yMSAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBjcHUtaWE2NC1vcGMuYyAoZWxmNjRfaWE2NF9vcGVyYW5kc306IEZpeCB0eXBvOiBlcnJvciBzdHJpbmcgZm9yCglDOCBzYWlkICIxIiBpbnN0ZWFkIG9mICI4Ii4gIENsYXJpZnkgZXJyb3Igc3RyaW5nIGZvciBJTU0yMjoKCSJzaWduZWQgaW50ZWdlciIgaW5zdGVhZCBvZiBqdXN0ICJpbnRlZ2VyIi4KCjIwMDEtMDItMjAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF94ODZfNjRfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgbWFrZQoJUExUIGVudHJpZXMgdGhhdCBjb3VsZCBzZXJ2ZSBhcyBhIGRlZmluaXRpb24gZm9yIGEgd2VhayBzeW1ib2wuCgoyMDAxLTAyLTE4ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Q+CgoJKiBjb25maWd1cmUuaW46IFJlY29nbml6ZSBGcmVlQlNEL2FybSwgRnJlZUJTRC9Qb3dlclBDLCBhbmQgdHJlYXQKCUZyZWVCU0QvaTM4Ni1DVVJSRU5UIGRpZmZlcmVudGx5IHVudGlsIEkgY2FuIGZpZ3VyZSBvdXQgdGhlIG5lZWRlZAoJY29yZWZpbGUgY2hhbmdlcy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuYmZkOiBSZWNvZ25pemUgRnJlZUJTRC94ODYtNjQsIEZyZWVCU0QvaWE2NCwgRnJlZUJTRC9hcm0sCglGcmVlQlNEL1Bvd2VyUEMsIGFuZCBGcmVlQlNEL3NwYXJjNjQuCgoyMDAxLTAyLTE0ICBQaGlsaXAgQmx1bmRlbGwgIDxwYkBmdXR1cmV0di5jb20+CgoJRnJvbSAyMDAxLTAyLTA2ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgkqIGJmZC9wZWljb2RlLmggKGNvZmZfc3dhcF9maWxlaGRyX2luKTogUmVtb3ZlIHRoZSBlX21hZ2ljCgljaGVja2luZy4KCShwZV9iZmRfb2JqZWN0X3ApOiBSZXdyaXRlIHdpdGggZXh0ZXJuYWxfUEVJX0RPU19oZHIgYW5kCglleHRlcm5hbF9QRUlfSU1BR0VfaGRyLgoKMjAwMS0wMi0xNCAgQm8gVGhvcnNlbiAgPGJvQHN1c2UuZGU+CgogICAgICAgICogZWxmNjQteDg2LTY0LmM6IFNtYWxsIGZvcm1hdHRpbmcgZml4ZXMgYW5kIHJlYXJyYW5nZW1lbnRzIG9mIGNvZGUuCiAgICAgICAgKGVsZjY0Xzg2XzY0X3NpemVfaW5mbyk6IFN0cnVjdCBhZGRlZCB0byBmaXggYSBwcm9ibGVtCiAgICAgICAgd2l0aCB0aGUgaGFzaHRhYmxlIHN0cmluZyBlbnRyaWVzLgogICAgICAgIChlbGY2NF94ODZfNjRfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogQWRkIGdlbmVyYXRpb24gb2YgLmdvdC5wbHQuCiAgICAgICAgKGVsZjY0X3g4Nl82NF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBBIEZJWE1FIHJlbW92ZWQuCiAgICAgICAgKGVsZjY0X3g4Nl82NF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBGaXggYSBkeW5hbWljIGVudHJ5IGFuZAogICAgICAgIHJlbW92ZSB0aGUgRklYTUUgZm9yIHRoaXMuCiAgICAgICAgKGVsZjY0X3g4Nl82NF9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBGaXggY2hlY2sgZm9yIHVubmVlZGVkIC5wbHQKICAgICAgICBzZWN0aW9uLiBBbHNvIHJlbW92ZWQgdGhlIEZJWE1FIGZvciBpdC4KICAgICAgICAoeDg2XzY0X2VsZl9ob3d0b190YWJsZSk6IFVzZSBiZmRfZWxmX2dlbmVyaWNfcmVsb2MuCiAgICAgICAgKEVMRl9EWU5BTUlDX0lOVEVSUFJFVEVSKTogRml4IHRoZSBuYW1lIG9mIHRoZSBkeW5hbWljIGxpbmtlci4KICAgICAgICAoZWxmNjRfeDg2XzY0X2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogRW5hYmxlIC5nb3QucGx0IHdyaXRpbmcuCgoyMDAxLTAyLTE0ICBQaGlsaXAgQmx1bmRlbGwgIDxwYkBmdXR1cmV0di5jb20+CgoJRnJvbSAyMDAxLTAyLTA4ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfY2hlY2tfcmVsb2NzKTogUmVzZXJ2ZSBSXzM4Nl8zMgoJcmVsb2NhdGlvbiBlbnRyaWVzIGZvciB3ZWFrIGRlZmluaXRpb25zIHdoZW4gYnVpbGRpbmcgRFNPIHdpdGgKCS1Cc3ltYm9saWMuCgoyMDAxLTAyLTEzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X2ZpbmFsX2xpbmspOiBTZXQgX19ncCBpZiByZXF1aXJlZAoJYW5kIG5vdCB1c2VyIHByb3ZpZGVkLgoKMjAwMS0wMi0xMyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9zZXRfZ3ApOiBIYW5kbGUgd2VhayAkZ2xvYmFsJC4gIElmCgkkZ2xvYmFsJCByZWZlcmVuY2VkIGJ1dCBub3QgZGVmaW5lZCwgc2V0IGl0cyB2YWx1ZSBoZXJlLgoKMjAwMS0wMi0wOSAgQm8gVGhvcnNlbiAgPGJvQHN1c2UuZGU+CgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X2NoZWNrX3JlbG9jcyk6IFNldCAucmVsYS5nb3Qgc2VjdGlvbgoJYWxpZ25tZW50IHRvIDMuCgkoZWxmNjRfeDg2XzY0X2NoZWNrX3JlbG9jcyk6IFdyaXRlIFJfWDg2XzY0X0dPVFBDUkVMIEdPVCBlbnRyeQoJYW5kIHJlbG9jYXRpb24uCgkoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBGaXggZm9ybWF0dGluZy4KCShlbGY2NF94ODZfNjRfcmVsb2NhdGVfc2VjdGlvbik6IEZpeCBhZGRlbmQgZm9yIHJlbG9jYXRpb24gb2YKCVJfWDg2XzY0Xyg4fDE2fDMyfFBDOHxQQzE2fFBDMzIpLgoKTW9uIEZlYiAxMiAxNzo0NDozOSBDRVQgMjAwMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZWxmNjQteDg2LTY0LmMgKHg4Nl82NF9lbGZfaG93dG8pOiBGaXggbmFtZSBvZiBSX1g4Nl82NF9HT1RQQ1JFTC4KCjIwMDEtMDItMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBlbGYzMi12ODUwLmMgKHY4NTBfZWxmX3JlbG9jKTogRG8gbm90IGNvbnZlcnQgcmVsb2MgYWRkZW5kIHRvIFBDCglyZWwsIGl0IHdpbGwgYmUgaGFuZGxlZCBsYXRlciBvbi4KCjIwMDEtMDItMDkgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoKCSogZWxmeHgtaWE2NC5jIChpc191bndpbmRfc2VjdGlvbl9uYW1lKTogTmV3IGZ1bmN0aW9uLiAgUmV0dXJucwoJdHJ1ZSBpZiBzZWN0aW9uIG5hbWUgaXMgYW4gdW53aW5kIHRhYmxlIHNlY3Rpb24gbmFtZS4KCShlbGZOTl9pYTY0X2FkZGl0aW9uYWxfcHJvZ3JhbV9oZWFkZXJzKTogQ291bnQgZWFjaCB1bndpbmQgc2VjdGlvbgoJc2VwYXJhdGVseS4KCShlbGZOTl9pYTY0X21vZGlmeV9zZWdtZW50X21hcCk6IEluc3RhbGwgb25lIHVud2luZCBwcm9ncmFtIGhlYWRlcgoJZm9yIGVhY2ggdW53aW5kIHNlcGFyYXRlIHNlY3Rpb24uICBOb3RlOiBub3JtYWxseSB0aGUgbGlua2VyCglzY3JpcHQgbWVyZ2VzIHRoZSB1bndpbmQgc2VjdGlvbnMgdGhhdCBnbyBpbnRvIGEgc2luZ2xlIHNlZ21lbnQsCglzbyB0aGlzIHN0aWxsIGdlbmVyYXRlcyBhdCBtb3N0IG9uZSB1bndpbmQgcHJvZ3JhbSBoZWFkZXIgcGVyCglzZWdtZW50LgoKCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X3NlY3Rpb25fZnJvbV9zaGRyKTogQWNjZXB0IGFueSBzZWN0aW9uCgluYW1lIGZvciBTSFRfSUFfNjRfVU5XSU5ELCBub3QganVzdCAuSUFfNjQudW53aW5kLgoJKGVsZk5OX2lhNjRfZmFrZV9zZWN0aW9ucyk6IE1hcmsgc2VjdGlvbnMgd2l0aCBuYW1lcyB0aGF0IHN0YXJ0Cgl3aXRoIC5JQV82NC51bndpbmQgYnV0IG5vdCB3aXRoIC5JQV82NC51bndpbmRfaW5mbyBhcyBhbiBJQS02NAoJdW53aW5kIHNlY3Rpb24uCgoJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IE5ldyBmdW5jdGlvbi4KCVVzZSBpdCB0byBtYWtlIHNoX2luZm8gaW4gdW53aW5kIHNlY3Rpb24gcG9pbnQgdG8gdGhlIHRleHQgc2VjdGlvbgoJaXQgYXBwbGllcyB0by4KCjIwMDEtMDItMDcgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBjb2ZmZ2VuLmMgKGNvZmZfZmluZF9uZWFyZXN0X2xpbmUpOiBJZiBzdGFicyBpbmZvIGlzIHN1Y2Nlc3NmdWxseQoJZm91bmQsIGRvIG5vdCBhdHRlbXB0IHRvIGZpbmQgZHdhcmYyIGluZm8gYmVmb3JlIHJldHVybmluZy4KCjIwMDEtMDEtMzAgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGY2NC1ocHBhLmMgKGVsZjY0X2hwcGFfZWxmX2dldF9zeW1ib2xfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9nZXRfc3ltYm9sX3R5cGUpOiBEZWZpbmUuCgkoZWxmNjRfaHBwYV9vYmplY3RfcCk6IFNldCBhcmNoaXRlY3R1cmUgYW5kIG1hY2hpbmUgZnJvbSBlbGYKCWhlYWRlciBmbGFncy4KCjIwMDEtMDEtMzAgIEN1cnRpcyBMLiBKYW5zc2VuICA8Y2xqYW5zc0BjYS5zYW5kaWEuZ292PgoKCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfZmluZF9uZWFyZXN0X2xpbmUpOiBRdWVyeSBkd2FyZjIKCWJlZm9yZSBtZGVidWcuCgoyMDAxLTAxLTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X2R5bmFtaWNfc3ltYm9sX3ApOiBSZXR1cm4gZmFsc2UKCWZvciBub24tZGVmYXVsdCB2aXNpYmlsaXR5LgoJKiBlbGY2NC1hbHBoYS5jIChhbHBoYV9lbGZfZHluYW1pY19zeW1ib2xfcCk6IExpa2V3aXNlLCBidXQKCWRlbGV0ZSB1Z2x5IG1hY3JvIGFuZCByZXBsYWNlIHdpdGggcHJldHR5IGZ1bmN0aW9uLgoKMjAwMS0wMS0yNSAgTWFyayBFbGJyZWNodCAgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGNvZmYtZ28zMi5jOiBVcGRhdGUgY29weXJpZ2h0LgoJKiBjb2ZmLXN0Z28zMi5jOiBMaWtld2lzZS4KCSogY29mZi1nbzMyLmMgKENPRkZfTE9OR19GSUxFTkFNRVMpOiBEZWZpbmUuCgkqIGNvZmYtc3RnbzMyLmMgKENPRkZfTE9OR19GSUxFTkFNRVMpOiBMaWtld2lzZS4KCSogY29mZi1nbzMyLmMgKENPRkZfU0VDVElPTl9BTElHTk1FTlRfRU5UUklFUyk6IFJlbW92ZSAuYnNzIGVudHJ5LgoJKiBjb2ZmLXN0Z28zMi5jIChDT0ZGX1NFQ1RJT05fQUxJR05NRU5UX0VOVFJJRVMpOiBMaWtld2lzZS4KCjIwMDEtMDEtMjUgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoJKiBsaWJiZmQuaDogTGlrZXdpc2UuCgoyMDAxLTAxLTIzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBiZmQtaW4yLmg6IFJlYnVpbGQuCgoyMDAxLTAxLTIzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiB2bXMtbWlzYy5jIChfYmZkX3Ztc19uZXh0X3JlY29yZCk6IFJldHVybiAtMSBpZiBQUklWKHZtc19idWYpCglpcyBOVUxMIG9yIFBSSVYodm1zX3JlYykgaXMgb3V0c2lkZSBvZiB0aGUgYnVmZmVyLgoKMjAwMS0wMS0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb2ZmNjQtcnM2MDAwLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBjb2ZmLWFybS5jOiBMaWtld2lzZS4KCSogY29mZmdlbi5jOiBMaWtld2lzZS4KCSogY29mZmxpbmsuYzogTGlrZXdpc2UuCgkqIGNvZmYtbWNvcmUuYzogTGlrZXdpc2UuCgkqIGNvZmYtbWlwcy5jOiBMaWtld2lzZS4KCSogY29mZi1wbWFjLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXBwYy5jOiBMaWtld2lzZS4KCSogY29mZi1yczYwMDAuYzogTGlrZXdpc2UuCgkqIGVsZjMyLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1mcjMwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzcwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pODYwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tMzJyLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tNjhrLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tY29yZS5jOiBMaWtld2lzZS4KCSogZWxmMzItcHBjLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1zaC5jOiBMaWtld2lzZS4KCSogZWxmMzItdjg1MC5jOiBMaWtld2lzZS4KCSogZWxmNjQtYWxwaGEuYzogTGlrZXdpc2UuCgkqIGVsZjY0LXNwYXJjLmM6IExpa2V3aXNlLgoJKiBlbGZsaW5rLmM6IExpa2V3aXNlLgoJKiBlbGZsaW5rLmg6IExpa2V3aXNlLgoJKiBlbGYtbTEwMjAwLmM6IExpa2V3aXNlLgoJKiBlbGYtbTEwMzAwLmM6IExpa2V3aXNlLgoJKiBlbGZ4eC1pYTY0LmM6IExpa2V3aXNlLgoKCSogYW91dHguaDogRml4IGZvcm1hdHRpbmcuCgkqIGJmZC5jOiBMaWtld2lzZS4KCSogYmZkLWluMi5oOiBMaWtld2lzZS4KCSogYmZkLWluLmg6IExpa2V3aXNlLgoJKiBjcHUtaTM4Ni5jOiBMaWtld2lzZS4KCSogY3B1LW02OGhjMTEuYzogTGlrZXdpc2UuCgkqIGR3YXJmMi5jOiBMaWtld2lzZS4KCSogZWxmNjQteDg2LTY0LmM6IExpa2V3aXNlLgoJKiBmb3JtYXQuYzogTGlrZXdpc2UuCgkqIGZyZWVic2QuaDogTGlrZXdpc2UuCgkqIGhhc2guYzogTGlrZXdpc2UuCgkqIGhwMzAwaHB1eC5jOiBMaWtld2lzZS4KCSogaHBwYWJzZC1jb3JlLmM6IExpa2V3aXNlLgoJKiBocHV4LWNvcmUuYzogTGlrZXdpc2UuCgoyMDAxLTAxLTIyICBCbyBUaG9yc2VuICA8Ym9Ac3VzZS5kZT4KCgkqIGVsZjY0LXg4Ni02NC5jOiBBZGRlZCBQSUMgc3VwcG9ydCBmb3IgWDg2LTY0LgoJKGVsZjY0X3g4Nl82NF9saW5rX2hhc2hfbmV3ZnVuYyk6IEZ1bmN0aW9uIGFkZGVkLgoJKGVsZjY0X3g4Nl82NF9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogTGlrZXdpc2UuCgkoZWxmNjRfeDg2XzY0X2NoZWNrX3JlbG9jcyk6IExpa2V3aXNlLgoJKGVsZjY0X3g4Nl82NF9nY19tYXJrX2hvb2spOiBMaWtld2lzZS4KCShlbGY2NF94ODZfNjRfZ2Nfc3dlZXBfaG9vayk6IExpa2V3aXNlLgoJKGVsZjY0X3g4Nl82NF9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCShlbGY2NF94ODZfNjRfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkoZWxmNjRfeDg2XzY0X2Rpc2NhcmRfY29waWVzKTogTGlrZXdpc2UuCgkoZWxmNjRfeDg2XzY0X2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKGVsZjY0X3g4Nl82NF9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKGVsZjY0X3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uKTogQWRkIHJlbG9jYXRpb24gb2YgUElDIHNlY3Rpb25zLgoKMjAwMS0wMS0yMSAgTWFjaWVqIFcuIFJvenlja2kgIDxtYWNyb0BkczIucGcuZ2RhLnBsPgoKCSogTWFrZWZpbGUuYW0gKGluc3RhbGwtZGF0YS1sb2NhbCk6IE1ha2UgdXNlIG9mICQoREVTVERJUikuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKMjAwMS0wMS0yMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb2ZmLWEyOWsuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAxLTAxLTE5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2NoZWNrX3JlbG9jcyk6IFJlcG9ydCBmaWxlcyB3aXRoIGJhZAoJcmVsb2NhdGlvbiBzZWN0aW9uIG5hbWVzLgoJKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBSZXBvcnQgZmlsZXMgd2l0aCBiYWQgcmVsb2NhdGlvbgoJc2VjdGlvbiBuYW1lcyBhbmQgcmV0dXJuIGZhbHNlLgoKMjAwMS0wMS0xNyAgQm8gVGhvcnNlbiAgPGJvQHN1c2UuZGU+CgoJKiB0YXJnZXRzLmM6IEFscGhhYmV0aXplIGxpc3Qgb2YgeHZlY3MuCgoyMDAxLTAxLTE0ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogY29uZmlnLmJmZDogQWRkIGxpbnV4IHRhcmdldCB2YXJpYW50IGZvciBlbGZ4eC1ocHBhLgoJKiBjb25maWd1cmUuaW46IFJlY29nbml6ZSBiZmRfZWxmMzJfaHBwYV9saW51eF92ZWMgYW5kCgliZmRfZWxmNjRfaHBwYV9saW51eF92ZWMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogZWxmNjQtaHBwYS5jOiBJbmNsdWRlIGVsZjY0LXRhcmdldC5oIGFnYWluIHRvIHN1cHBvcnQgbGludXgKCXRhcmdldCB2YXJpYW50LgoJKGVsZjY0X2hwcGFfcG9zdF9wcm9jZXNzX2hlYWRlcnMpOiBTZXQgRUxGT1NBQklfTElOVVggZm9yIGxpbnV4LgoJKiBlbGYzMi1ocHBhLmM6IEluY2x1ZGUgZWxmMzItdGFyZ2V0LmggYWdhaW4gdG8gc3VwcG9ydCBsaW51eAoJdGFyZ2V0IHZhcmlhbnQuCgkoZWxmMzJfaHBwYV9wb3N0X3Byb2Nlc3NfaGVhZGVycyk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9wb3N0X3Byb2Nlc3NfaGVhZGVycyk6IERlZmluZS4KCSogdGFyZ2V0cy5jIChiZmRfdGFyZ2V0X3ZlY3Rvcik6IEFkZCBiZmRfZWxmNjRfaHBwYV9saW51eF92ZWMgYW5kCgliZmRfZWxmMzJfaHBwYV9saW51eF92ZWMuCgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfbGlua19oYXNoX3RhYmxlKTogQWRkIHRleHRfc2VnbWVudF9iYXNlLAoJYW5kIGRhdGFfc2VnbWVudF9iYXNlIGZpZWxkcy4KCShlbGYzMl9ocHBhX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUgKTogSW5pdCB0aGVtLgoJKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogVXBkYXRlIGNvbW1lbnRzLgoJKGhwcGFfcmVjb3JkX3NlZ21lbnRfYWRkcik6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBDYWxsIGl0LgoJKGZpbmFsX2xpbmtfcmVsb2NhdGUpOiBIYW5kbGUgUl9QQVJJU0NfU0VHUkVMMzIuCgkoZWxmMzJfaHBwYV9maW5hbF9saW5rKTogTmV3IGZ1bmN0aW9uLgoJKGJmZF9lbGYzMl9iZmRfZmluYWxfbGluayk6IERlZmluZSB0byBjYWxsIGl0LgoJKGhwcGFfdW53aW5kX2VudHJ5X2NvbXBhcmUpOiBOZXcgZnVuY3Rpb24uCgkqIGNhY2hlLmMgKGJmZF9vcGVuX2ZpbGUpOiBDcmVhdGUgZmlsZXMgaW4gd3JpdGUrcmVhZCBtb2RlLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfaG93dG9fdGFibGUpOiBTZXQgYml0c2l6ZSB2YWx1ZSBmb3IKCVNFR1JFTDMyIGFuZCBudW1lcm91cyBvdGhlciByZWxvY3MuICBDaGFuZ2UgZHVwbGljYXRlCglSX1BBUklTQ19OT05FIHJlbG9jcyB0byBSX1BBUklTQ19VTklNUExFTUVOVEVELgoKCSogb3BuY2xzLmMgKGJmZF9mZG9wZW5yKTogQWRkIHBhcmVucyBsaWtlIHRoZSBjb21tZW50IHNheXMgYXJvdW5kCglPX0FDQ01PREUuCgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogRG9uJ3QgY3JlYXRlCgkucGx0IGVudHJpZXMgZm9yIERUX0lOSVQgYW5kIERUX0ZJTkkuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IFJlbW92ZSBzcGVjaWFsIGhhbmRsaW5nIG9mCglEVF9JTklUIGFuZCBEVF9GSU5JLgoKCSogZWxmNjQtaHBwYS5jIChlbGY2NF9ocHBhX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IFVzZSAxNi1iaXQKCW9mZnNldHMgZm9yIHN0dWIgLnBsdCBhY2Nlc3MgaWYgd2lkZSBtb2RlLiAgQ2hlY2sgb2Zmc2V0IGluIHJhbmdlLgoKMjAwMS0wMS0xMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLWZyMzAuYyAoZnIzMF9lbGZfaG93dG9fdGFibGUpOiBSZW1vdmUgc3B1cmlvdXMgYmxhbmsKCWxpbmUuCgoJKiBjb2ZmY29kZS5oIChjb2ZmX2Nhbm9uaWNhbGl6ZV9yZWxvYyk6IFJlbW92ZSBzcHVyaW91cyBibGFuawoJbGluZS4KCjIwMDEtMDEtMTIgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBjb25maWd1cmUuaW4gKFtiZmRfZWxmNjRfeDg2XzY0X3ZlY10pOiBTZXQgdGFyZ2V0NjQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDEtMDEtMTEgIFBldGVyIFRhcmdldHQgIDxwZXRlci50YXJnZXR0QGFyY2NvcmVzLmNvbT4KCgkqIGJmZC1pbjIuaCAoYmZkX2FyY2hpdGVjdHVyZSk6IEFkZCBiZmRfbWFjaF9hcmNfNSwKCWJmZF9tYWNoX2FyY182LCBiZmRfbWFjaF9hcmNfNywgYmZkX21hY2hfYXJjXzggZm9yIEFSQyB2YXJpYW50cy4KCSogY3B1LWFyYy5jIChhcmNoX2luZm9fc3RydWN0KTogQWRkIGVudHJpZXMgZm9yIHZhcmlhbnRzLgoJKGJmZF9hcmNfYXJjaCkgU2V0IGRlZmF1bHQgdG8gYmZkX21hY2hfYXJjXzUuCgkoYXJjX2dldF9tYWNoKSBEb24ndCBhc3N1bWUgbWFjaGluZSBuYW1lcyBwcmVmaXhlZCBhcmMtIGJlZm9yZQoJdGVzdGluZy4KCSogZWxmMzItYXJjLmMgKGFyY19lbGZfb2JqZWN0X3ApOiBTZXQgbWFjaGluZSBudW1iZXIgYmFzZWQgb24gbmV3CglzZWxlY3Rpb25zLgoJKGFyY19lbGZfZmluYWxfd3JpdGVfcHJvY2Vzc2luZykgTGlrZXdpc2UuCgkoRUxGX01BQ0hJTkVfQ09ERSkgVXNlIEVNX0FSQy4KCjIwMDEtMDEtMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb2ZmLWFybS5jIChMT0NBTF9MQUJFTF9QUkVGSVgpOiBDaGFuZ2UgZGVmaW5pdGlvbiB0byAiIi4KCjIwMDEtMDEtMDcgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBSRUFETUU6IFJlcGxhY2UgYGJ1Zy1nbnUtdXRpbHNAZ251Lm9yZycgd2l0aAoJYGJ1Zy1iaW51dGlsc0BnbnUub3JnJy4KCjIwMDEtMDEtMDQgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogc29tLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMS0wMS0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBlY29mZnN3YXAuaDogRml4IGZvcm1hdHRpbmcuCgkqIGVsZi1iZmQuaDogTGlrZXdpc2UuCgkqIGVsZmFybS1uYWJpLmM6IExpa2V3aXNlLgoJKiBlbGZhcm0tb2FiaS5jOiBMaWtld2lzZS4KCSogZWxmY29kZS5oOiBMaWtld2lzZS4KCSogZWxmY29yZS5oOiBMaWtld2lzZS4KCSogZWxmbGluay5jOiBMaWtld2lzZS4KCSogZWxmbGluay5oOiBMaWtld2lzZS4KCSogZWxmeHgtaWE2NC5jOiBMaWtld2lzZS4KCSogZWxmeHgtdGFyZ2V0Lmg6IExpa2V3aXNlLgoJKiBsaWJiZmQuYzogTGlrZXdpc2UKCSogbGlua2VyLmM6IExpa2V3aXNlLgoJKiBseW54LWNvcmUuYzogTGlrZXdpc2UuCgoyMDAxLTAxLTAyICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHBjNTMyLW1hY2guYzogRml4IGZvcm1hdHRpbmcuCgkqIHBlLWFybS5jOiBMaWtld2lzZS4KCSogcGUtaTM4Ni5jOiBMaWtld2lzZS4KCSogcGUtbWlwcy5jOiBMaWtld2lzZS4KCSogcGUtcHBjLmM6IExpa2V3aXNlLgoJKiBwZS1zaC5jOiBMaWtld2lzZS4KCSogcGVpLW1pcHMuYzogTGlrZXdpc2UuCgkqIHBlaS1zaC5jOiBMaWtld2lzZS4KCSogcGVpY29kZS5oOiBMaWtld2lzZS4KCSogcHBjYm9vdC5jOiBMaWtld2lzZS4KCSogcHRyYWNlLWNvcmUuYzogTGlrZXdpc2UuCgoyMDAxLTAxLTAxICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHJlbG9jLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiByaXNjaXguYzogTGlrZXdpc2UuCgkqIHJzNjAwMC1jb3JlLmM6IExpa2V3aXNlLgoJKiB4Y29mZi10YXJnZXQuaDogTGlrZXdpc2UuCgoyMDAwLTEyLTI5ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBlbGZjb2RlLmggKGVsZl9vYmplY3RfcCk6IEFsc28gcmVzdG9yZSB0aGUgYmZkIG1hY2ggZmllbGQgb24KCWVycm9yLCBieSBjYWxsaW5nIGJmZF9kZWZhdWx0X3NldF9hcmNoX21hY2ggd2l0aCBpbmNvbWluZwoJdmFsdWVzLgoKMjAwMC0xMi0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiB2YXhuZXRic2QuYzogRml4IGZvcm1hdHRpbmcuCgkqIHZlcnNhZG9zLmM6IExpa2V3aXNlLgoJKiB2bXMtZ3NkLmM6IExpa2V3aXNlLgoJKiB2bXMtaGRyLmM6IExpa2V3aXNlLgoJKiB2bXMtbWlzYy5jOiBMaWtld2lzZS4KCjIwMDAtMTItMjUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogYXJjaGl2ZS5jIChjb2ZmX3dyaXRlX2FybWFwKTogRG9uJ3Qgd3JpdGUgbW9yZSB0aGFuIHN5bWJvbF9jb3VudAoJYGFyY2hpdmVfbWVtYmVyX2ZpbGVfcHRyJ3MuCgoyMDAwLTEyLTI1ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHZtcy10aXIuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTEyLTIzICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHZtcy5jOiBGaXggZm9ybWF0dGluZy4KCSogdm1zLmg6IExpa2V3aXNlLgoKMjAwMC0xMi0yMSAgU2FudGVyaSBQYWF2b2xhaW5lbiA8c2FudHR1QHNzaC5jb20+CgoJKiB2bXMtaGRyLmM6IEluY2x1ZGUgYWxsb2NhLmggaWYgSEFWRV9BTExPQ0FfSCBpcyBkZWZpbmVkLgoKCSogcGVpY29kZS5oIChwZV9JTEZfb2JqZWN0X3ApOiBBZGQgY29uc3QgdG8gaW1wb3J0IG9mIFRBUkdFVF9MSVRUTEVfU1lNLgoKCSogZWxmMzItbTMyci5jIChtMzJyX2VsZl9nZW5lcmljX3JlbG9jKTogQWRkIGNhc3QgdG8gYXZvaWQgKHZvaWQgKikKCWFyaXRobWV0aWMuCgoJKiBlbGYzMi1mcjMwLmM6IEFkZCBjYXN0cyB0byBhdm9pZCAodm9pZCAqKSBhcml0aG1ldGljLgoKCSogY29mZmNvZGUuaCAoc3R5cF90b19zZWNfZmxhZ3MpOiBBZGQgZW1wdHkgc3RhdGVtZW50IGFmdGVyIGxhYmVsLgoKMjAwMC0xMi0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogbGliYmZkLmMgKGJmZF9nZXRfYml0cyk6IEFkZGVkCgkoYmZkX3B1dF9iaXRzKTogTGlrZXdpc2UKCSogYmZkLWluLmg6IERlY2xhcmVkIHRoZSBhYm92ZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlZC4KCjIwMDAtMTItMjAgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogdGFyZ2V0cy5jOiBGaXggZm9ybWF0dGluZy4KCSogdGVraGV4LmM6IExpa2V3aXNlLgoJKiB0cmFkLWNvcmUuYzogTGlrZXdpc2UuCgoyMDAwLTEyLTE5ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHNjbzUtY29yZS5jOiBGaXggZm9ybWF0dGluZy4KCSogc2VjdGlvbi5jOiBMaWtld2lzZS4KCSogc3BhcmNsaW51eC5jOiBMaWtld2lzZS4KCSogc3BhcmNseW54LmM6IExpa2V3aXNlLgoJKiBzcGFyY25ldGJzZC5jOiBMaWtld2lzZS4KCSogc3JlYy5jOiBMaWtld2lzZS4KCSogc3RhYnMuYzogTGlrZXdpc2UuCgkqIHN0YWItc3ltcy5jOiBMaWtld2lzZS4KCSogc3Vub3MuYzogTGlrZXdpc2UuCgkqIHN5bXMuYzogTGlrZXdpc2UuCgkqIHN5c2RlcC5oOiBMaWtld2lzZS4KCjIwMDAtMTItMTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb2ZmLWFybS5jIChFWFRSQV9TX0ZMQUdTKTogT25seSBkZWZpbmUgaWYgbm90IGFscmVhZHkKCWRlZmluZWQuCgkqIGVwb2MtcGUtYXJtLmMgKEVYVFJBX1NfRkxBR1MpOiBEZWZpbmUuCgkqIGVwb2MtcGVpLWFybS5jIChFWFRSQV9TX0ZMQUdTKTogRGVmaW5lLgoKMjAwMC0xMi0xOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIHZtcy1taXNjLmMgKF9iZmRfdm1zX2dldF9yZWNvcmQpOiBBZGQgZGVmYXVsdCBjYXNlIHRvCglmaWxlX2Zvcm1hdCBzd2l0Y2guCgoyMDAwLTEyLTE1ICBNaWxvc2xhdiBUcm1hYyA8bWl0ckB2b2xueS5jej4KCgkqIGVsZmNvcmUuaCAoZWxmX2NvcmVfZmlsZV9wKTogTW92ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0KCWhlYWRlcnMgYmVmb3JlIGF0dGVtcHRpbmcgdG8gcmVhZCB0aGVtLgoKMjAwMC0xMi0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBwZWlnZW4uYzogRml4IGZvcm1hdHRpbmcuCgkqIHNvbS5jOiBMaWtld2lzZS4KCSogc29tLmg6IExpa2V3aXNlLgoKMjAwMC0xMi0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBwZWlnZW4uYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTEyLTEyICBKaW0gV2lsc29uICA8d2lsc29uQHJlZGhhdC5jb20+CgoJKiAgZWxmeHgtaWE2NC5jIChnZXRfZHluX3N5bV9pbmZvKTogQ2FzdCAlcCBhcmd1bWVudCB0byB2b2lkICouCgoyMDAwLTEyLTA4ICBNYXJrIFNhbHRlciAgPG1zYWx0ZXJAcmVkaGF0LmNvbT4KCgkqIGJpbmFyeS5jIChiaW5hcnlfc2V0X3NlY3Rpb25fY29udGVudHMpOiBJZ25vcmUgc2VjdGlvbnMKCXdpdGggemVybyBzaXplLgoKMjAwMC0xMi0xMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBtNjhrbGludXguYzogRml4IGZvcm1hdHRpbmcuCgkqIG02OGtuZXRic2QuYzogTGlrZXdpc2UuCgkqIG1pcHNic2QuYzogTGlrZXdpc2UuCgkqIG5ldGJzZC1jb3JlLmM6IExpa2V3aXNlLgoJKiBuZXRic2QuaDogTGlrZXdpc2UuCgkqIG5ld3NvczMuYzogTGlrZXdpc2UuCgkqIG5sbTMyLWFscGhhLmM6IExpa2V3aXNlLgoJKiBubG0zMi1pMzg2LmM6IExpa2V3aXNlLgoJKiBubG0zMi1wcGMuYzogTGlrZXdpc2UuCgkqIG5sbTMyLXNwYXJjLmM6IExpa2V3aXNlLgoJKiBubG1jb2RlLmg6IExpa2V3aXNlLgoJKiBubG1zd2FwLmg6IExpa2V3aXNlLgoJKiBubG0tdGFyZ2V0Lmg6IExpa2V3aXNlLgoJKiBuczMya25ldGJzZC5jOiBMaWtld2lzZS4KCjIwMDAtMTItMTAgIEZyZWQgRmlzaCAgPGZuZkBiZS5jb20+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX291dHB1dF9leHRzeW0pOiBEb24ndCBjb21wbGFpbiBhYm91dCB1bmRlZmluZWQKCXN5bWJvbHMgaW4gc2hhcmVkIG9iamVjdHMgaWYgYWxsb3dfc2hsaWJfdW5kZWZpbmVkIGlzIHRydWUuCgoyMDAwLTEyLTEyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY3B1LXNoLmM6IEZpeCBmb3JtYXR0bmcuCgkqIGVsZi5jOiBGaXggZm9ybWF0dG5nLgoJKiBlbGYzMi1taXBzLmM6IEZpeCBmb3JtYXR0bmcuCgkqIGVsZjMyLXNoLmM6IEZpeCBmb3JtYXR0bmcuCgkqIGVsZjY0LWFscGhhLmM6IEZpeCBmb3JtYXR0bmcuCgoyMDAwLTEyLTA5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2ZpbmRfbmVhcmVzdF9saW5lKTogUGFzcwoJZHdhcmYyX2ZpbmRfbGluZV9pbmZvIGFzIGxhc3QgcGFyYW1ldGVyIHRvIGludm9jYXRpb24gb2YKCV9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lLgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2ZpbmRfbmVhcmVzdF9saW5lKTogUGFzcwoJZHdhcmYyX2ZpbmRfbGluZV9pbmZvIGFzIGxhc3QgcGFyYW1ldGVyIHRvIGludm9jYXRpb24gb2YKCV9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lLgoKMjAwMC0xMi0wOCAgTWFyayBFbGJyZWNodCAgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIE1ha2VmaWxlLmFtIChCRkQzMl9CQUNLRU5EUyk6IE1vdmUgZHdhcmYyLmxvIGZyb20gaGVyZS4uLgoJKEJGRF9MSUJTKTogLi4udG8gaGVyZS4KCShCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBNb3ZlIGR3YXJmMi5jIGZyb20gaGVyZS4uLgoJKEJGRF9MSUJTX0NGSUxFUyk6IC4uLnRvIGhlcmUuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmUuaW46IFJlbW92ZSBkd2FyZi5sbyBmcm9tIHRoZSBlbGYgc2hlbGwgdmFyaWFibGUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogbGliY29mZi1pbi5oIChjb2ZmX3RkYXRhKTogQWRkIHBvaW50ZXIgZHdhcmYyX2ZpbmRfbGluZV9pbmZvLgoJKiBsaWJjb2ZmLmg6IFJlZ2VuZXJhdGUuCgkqIGNvZmZnZW4uYyAoY29mZl9maW5kX25lYXJlc3RfbGluZSk6IENhbGwKCV9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lLgoJKiBkd2FyZjIuYyAoX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUpOiBBZGQgcGFyYW1ldGVyLiBVcGRhdGUKCWFjY29yZGluZ2x5LgoJKHJlYWRfYWJicmV2cyk6IExpa2V3aXNlCgkoZGVjb2RlX2xpbmVfaW5mbyk6IExpa2V3aXNlLgoJKHBhcnNlX2NvbXBfdW5pdCk6IExpa2V3aXNlLgoJKGNvbXBfdW5pdF9maW5kX25lYXJlc3RfbGluZSk6IExpa2V3aXNlLgoJKiBsaWJiZmQtaW4uaCAoX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBsaWJiZmQuaDogUmVnZW5lcmF0ZS4KCSogZWxmLmMgKF9iZmRfZWxmX2ZpbmRfbmVhcmVzdF9saW5lKTogVXBkYXRlIGNhbGwuCgkqIGVsZi1iZmQuaCAoZWxmX29ial90ZGF0YSk6IENoYW5nZSBkd2FyZjJfZmluZF9saW5lX2luZm8gdG8gdHlwZSBQVFIuCgkqIGR3YXJmMi5jIChjb25jYXRfZmlsZW5hbWUpOiBVc2UgSVNfQUJTT0xVVEVfUEFUSC4KCSogY29mZmNvZGUuaCAoU1RZUF9YQ09GRl9ERUJVRywgU1RZUF9ERUJVR19JTkZPKTogTmV3IG1hY3Jvcy4KCShzZWNfdG9fc3R5cF9mbGFncyk6IFVzZSB0aGVtLiBIYW5kbGUgRFdBUkYyIHNlY3Rpb25zLgoJKHN0eXBfdG9fc2VjX2ZsYWdzKTogSGFuZGxlIERXQVJGMiBzZWN0aW9ucy4KCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9maW5kX25lYXJlc3RfbGluZSk6IEFkZCBwYXJhbWV0ZXIgdG8gY2FsbAoJdG8gX2JmZF9maW5kX25lYXJlc3RfbGluZS4KCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2ZpbmRfbmVhcmVzdF9saW5lKTogQWRkIHBhcmFtZXRlciB0bwoJY2FsbCB0byBfYmZkX2ZpbmRfbmVhcmVzdF9saW5lLgoKMjAwMC0xMi0wOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb2ZmZ2VuLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBlbGYtbTEwMzAwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzg2LmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pOTYwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tNjhrLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tY29yZS5jOiBMaWtld2lzZS4KCSogZWxmMzItcHBjLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1zaC5jOiBMaWtld2lzZS4KCSogZWxmMzItc3BhcmMuYzogTGlrZXdpc2UuCgkqIGVsZjMyLXY4NTAuYzogTGlrZXdpc2UuCgkqIGVsZjY0LWFscGhhLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1ocHBhLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1taXBzLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1zcGFyYy5jOiBMaWtld2lzZS4KCjIwMDAtMTItMDcgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogZWxmMzItcHBjLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBlbGY2NC14ODYtNjQuYzogTGlrZXdpc2UuCgoyMDAwLTEyLTA2ICBVbGYgQ2FybHNzb24gIDx1bGZjQGVuZ3Iuc2dpLmNvbT4KCglGcm9tICBSYWxmIEJhZWNobGUgIDxyYWxmQGdudS5vcmc+CgoJKiBlbGYzMi1taXBzLmMgKGVsZjMyX21pcHNfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IEFsd2F5cyBwZXJtaXQKCUJGRHMgY29udGFpbmluZyBubyBzZWN0aW9ucyBvciBlbXB0eSAudGV4dCwgLmRhdGEgb3IgLmJzcyBzZWN0aW9ucwoJdG8gYmUgbWVyZ2VkLCByZWdhcmRsZXNzIG9mIHRoZWlyIGZsYWdzLgoKMjAwMC0xMi0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBlbGYzMi1tMzJyLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBlbGYzMi1tNjhoYzExLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tNjhoYzEyLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tNjhrLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1tY29yZS5jOiBMaWtld2lzZS4KCSogZWxmMzItcGouYzogTGlrZXdpc2UuCgkqIGVsZjMyLXBwYy5jOiBMaWtld2lzZS4KCjIwMDAtMTItMDUgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogZWxmMzItZnIzMC5jOiBGaXggZm9ybWF0dGluZy4KCSogZWxmMzItaHBwYS5jOiBMaWtld2lzZS4KCSogZWxmMzItaTM3MC5jOiBMaWtld2lzZS4KCSogZWxmMzItaTM4Ni5jOiBMaWtld2lzZS4KCSogZWxmMzItaTg2MC5jOiBMaWtld2lzZS4KCSogZWxmMzItaTk2MC5jOiBMaWtld2lzZS4KCjIwMDAtMTItMDMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogZWxmMzItYXJtLmg6IEZpeCBmb3JtYXR0aW5nLgoJKiBlbGYzMi1hdnIuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWNyaXMuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWQxMHYuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWQzMHYuYzogTGlrZXdpc2UuCgkqIGVsZi1ocHBhLmg6IExpa2V3aXNlLgoJKiBlbGYtbTEwMjAwLmM6IExpa2V3aXNlLgoJKiBlbGYtbTEwMzAwLmM6IExpa2V3aXNlLgoKMjAwMC0xMi0wMSAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQHNpYnl0ZS5jb20+CgoJKiBhb3V0eC5oIChOQU1FKGFvdXQsbWFjaGluZV90eXBlKSk6IEFkZCBiZmRfbWFjaF9taXBzMzIgYW5kCgliZmRfbWFjaF9taXBzMzJfNGsuICBVcGRhdGUgRklYTUUgY29tbWVudC4KCSogYXJjaHVyZXMuYyAoYmZkX21hY2hfbWlwczMyKTogTmV3IGNvbnN0YW50LgoJKGJmZF9tYWNoX21pcHM0SywgYmZkX21hY2hfbWlwczMyXzRrKSBSZW5hbWUgdGhlIGZvcm1lciB0bwoJdGhlIGxhdHRlciwgcmVudW1iZXIgaXQuCgkqIGJmZC1pbjIuaCAoYmZkX21hY2hfbWlwczMyKTogTmV3IGNvbnN0YW50LgoJKGJmZF9tYWNoX21pcHM0SywgYmZkX21hY2hfbWlwczMyXzRrKSBSZW5hbWUgdGhlIGZvcm1lciB0bwoJdGhlIGxhdHRlciwgcmVudW1iZXIgaXQuCgkqIGNwdS1taXBzLmMgKElfbWlwczMyKTogTmV3IGNvbnN0YW50LgoJKElfbWlwczRLLCBJX21pcHMzMl80ayk6IFJlbmFtZSB0aGUgZm9ybWVyIHRvIHRoZSBsYXR0ZXIuCgkoYXJjaF9pbmZvX3N0cnVjdCk6IEFkZCBiZmRfbWFjaF9taXBzMzIgZW50cnksIHJlcGxhY2UKCWJmZF9tYWNoX21pcHM0SyBlbnRyeSB3aXRoIGJmZF9tYWNoX21pcHMzMl80ayBlbnRyeS4KCSogZWxmMzItbWlwcy5jIChlbGZfbWlwc19pc2EpOiBBZGQgRV9NSVBTX0FSQ0hfMzIgY2FzZS4KCShlbGZfbWlwc19tYWNoKTogTGlrZXdpc2UuICBBbHNvLCByZXBsYWNlIEVfTUlQU19NQUNIX01JUFMzMgoJd2l0aCBFX01JUFNfTUFDSF9NSVBTMzJfNEsuCgkoX2JmZF9taXBzX2VsZl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogUmVwbGFjZQoJYmZkX21hY2hfbWlwczRLIHdpdGggYmZkX21hY2hfbWlwczMyXzRrIGNhc2UsIGFkZAoJYmZkX21hY2hfbWlwczMyIGNhc2UuCgkoX2JmZF9taXBzX2VsZl9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogR2VuZXJhbGl6ZSBJU0EgbWl4aW5nCgljb21wYXJpc29uIHdpdGggc3VwcG9ydCBmb3IgTUlQUzMyLgoJKF9iZmRfbWlwc19lbGZfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IFByaW50IElTQSBuYW1lIGZvcgoJTUlQUzMyLgoKCSogYW91dHguaCAoTkFNRShhb3V0LG1hY2hpbmVfdHlwZSkpOiBBZGQgY2FzZXMgZm9yCgliZmRfbWFjaF9taXBzNSBhbmQgYmZkX21hY2hfbWlwczY0LgoJKiBhcmNodXJlcy5jIChiZmRfbWFjaF9taXBzNSwgYmZkX21hY2hfbWlwczY0KTogTmV3IGNvbnN0YW50cy4KCSogYmZkLWluMi5oIChiZmRfbWFjaF9taXBzNSwgYmZkX21hY2hfbWlwczY0KTogTGlrZXdpc2UuCgkqIGNwdV9taXBzLmMgKElfbWlwczUsIElfbWlwczY0KTogTmV3IGRlZmluaXRpb25zLgoJKGFyY2hfaW5mb19zdHJ1Y3QpOiBBZGQgZW50cmllcyBmb3IgYmZkX21hY2hfbWlwczUgYW5kCgliZmRfbWFjaF9taXBzNjQuCgkqIGVsZjMyLW1pcHMuYyAoZWxmX21pcHNfaXNhLCBlbGZfbWlwc19tYWNoLAoJX2JmZF9taXBzX2VsZl9wcmludF9wcml2YXRlX2JmZF9kYXRhKTogQWRkIGNhc2VzIGZvcgoJRV9NSVBTX0FSQ0hfNSBhbmQgRV9NSVBTX0FSQ0hfNjQuCgkoX2JmZF9taXBzX2VsZl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogQWRkIGNhc2VzIGZvcgoJYmZkX21hY2hfbWlwczUgYW5kIGJmZF9tYWNoX21pcHM2NC4KCgkqIGJmZC9hb3V0eC5oIChOQU1FKGFvdXQsbWFjaGluZV90eXBlKSk6IEFkZCBhCgliZmRfbWFjaF9taXBzX3NiMSBjYXNlLgoJKiBiZmQvYXJjaHVyZXMuYyAoYmZkX21hY2hfbWlwc19zYjEpOiBOZXcgY29uc3RhbnQuCgkqIGJmZC9iZmQtaW4yLmggKGJmZF9tYWNoX21pcHNfc2IxKTogTmV3IGNvbnN0YW50LgoJKiBiZmQvY3B1LW1pcHMuYyAoSV9zYjEpOiBOZXcgY29uc3RhbnQuCgkoYXJjaF9pbmZvX3N0cnVjdCk6IEFkZCBlbnRyeSBmb3IgYmZkX21hY2hfbWlwc19zYjEuCgkqIGJmZC9lbGYzMi1taXBzLmMgKGVsZl9taXBzX21hY2gpOiBBZGQgY2FzZSBmb3IKCUVfTUlQU19NQUNIX1NCMS4KCShfYmZkX21pcHNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBBZGQgY2FzZSBmb3IKCWJmZF9tYWNoX21pcHNfc2IxLgoKMjAwMC0xMi0wMSAgSm9lbCBTaGVycmlsbCA8am9lbEBPQVJjb3JwLmNvbT4KCgkqIGNvbmZpZy5iZmQgKGFybS0qLXJ0ZW1zKiwgYTI5ay0qcnRlbXMqKTogTmV3IHRhcmdldHMuCgkoc3BhcmMqLSotcnRlbXNlbGYqLCBzcGFyYyotKi1ydGVtc2FvdXQqKTogTmV3IHRhcmdldHMuCgkoc3BhcmMqLSotcnRlbXMqKTogU3dpdGNoZWQgZnJvbSBhLm91dCB0byBFTEYuCgoyMDAwLTExLTMwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBNYWtlZmlsZS5hbSAoQkZENjRfQkFDS0VORFMpOiBBZGQgZWxmNjQteDg2LTY0LmxvCglCRkQ2NF9CQUNLRU5EU19DRklMRVMpOiBBZGQgZWxmNjQteDg2LTY0LmMKCShlbGY2NC14ODYtNjQubG8pOiBBZGQgZGVwZW5kZW5jaWVzLgoJKiBhcmNodXJlcy5jIChERVNDUklQVElPTik6IEFkZCBiZmRfbWFjaF94ODZfNjQsCgliZmRfbWFjaF94ODZfNjRfaW50ZWxfc3ludGF4LgoJKiBlbGYuYyAocHJlcF9oZWFkZXJzKTogVXNlIEVNX3g4Nl82NCBmb3IgNjRiaXQgb3V0cHV0LgoJKiBjb25maWcuYmZkICh4ODZfNjQpOiBBZGQuCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHN1cHBvcnQgZm9yIGJmZF9lbGY2NF94ODZfNjRfdmVjLgoJKiBjcHUtaTM4Ni5jIChiZmRfeDg2XzY0X2FyY2hfaW50ZWxfc3ludGF4LCBiZmRfeDg2XzY0X2FyY2gpOiBBZGQuCgkoYmZkX2kzODZfYXJjaCwgaTgwODZfYXIpOiBMaW5rIGluLgoJKiBlbGY2NC14ODYtNjQuYzogTmV3IGZpbGUuCgkqIHJlbG9jLmMgKEVOVU1ET0MpOiBBZGQgQkZEX1JFTE9DX1g4Nl82NCouCgkqIHRhcmdldHMuYyAoYmZkX2VsZjY0X3g4Nl82NF92ZWMpOiBBZGQuCgkoYmZkX3RhcmdldF92ZWN0KTogQWRkIGJmZF9lbGY2NF94ODZfNjRfdmVjLgoKMjAwMC0xMS0zMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiB4Y29mZmxpbmsuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTExLTI4ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGFvdXR4Lmg6IEZpeCBmb3JtYXR0aW5nLgoJKiBiZmQtaW4uaDogTGlrZXdpc2UuCgkqIGJmZC1pbjIuaDogTGlrZXdpc2UuCgkqIGNhY2hlLmM6IExpa2V3aXNlLgoJKiBjaXNjby1jb3JlLmM6IExpa2V3aXNlLgoJKiBjb2ZmNjQtcnM2MDAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmY29kZS5oOiBMaWtld2lzZS4KCSogY29mZnN3YXAuaDogTGlrZXdpc2UuCgkqIGNvcmVmaWxlLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1taXBzLmM6IExpa2V3aXNlLgoKMjAwMC0xMS0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBhb3V0LWFkb2JlLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBjb2ZmNjQtcnM2MDAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmZ2VuLmM6IExpa2V3aXNlLgoJKiBjb2ZmbGluay5jOiBMaWtld2lzZS4KCjIwMDAtMTEtMjcgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQGZ1dHVyZXR2LmNvbT4KCgkqIGxpYmNvZmYtaW4uaCAoY29mZl90ZGF0YSk6IEFkZCBgc3RyaW5nc193cml0dGVuJyBmbGFnLgoJKG9ial9jb2ZmX3N0cmluZ3Nfd3JpdHRlbik6IE5ldyBhY2Nlc3NvciBtYWNybyBmb3IgYWJvdmUuCgkqIGxpYmNvZmYuaDogUmVnZW5lcmF0ZS4KCSogY29mZmxpbmsuYyAoX2JmZF9jb2ZmX2ZpbmFsX2xpbmspOiBTYXkgdGhhdCB3ZSB3cm90ZSB0aGUKCXN0cmluZ3MuCgkqIGNvZmZjb2RlLmggKGNvZmZfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogTm8gbmVlZCB0byB3cml0ZSBvdXQKCXRoZSBzdHJpbmcgdGFibGUgaWYgaXQncyBhbHJlYWR5IGJlZW4gZG9uZS4KCjIwMDAtMTEtMjIgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQGZ1dHVyZXR2LmNvbT4KCgkqIGNvZmZsaW5rLmMgKF9iZmRfY29mZl9nZW5lcmljX3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCBvYmplY3QgdG8KCXdlYWsgdW5kZWZpbmVkIHN5bWJvbHMuCgoyMDAwLTExLTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogYXJjaHVyZXMuYyAoYmZkX21hY2hfYXJtXzVURSk6IERlZmluZS4KCShiZmRfbWFjaF9hcm0rWFNjYWxlKTogRGVmaW5lLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoJKiBjb2ZmLWFybS5jIChjb2ZmX2FybV9yZWxvY190eXBlX2xvb2t1cCk6IEFjY2VwdAoJQkZEX1JFTE9DX0FSTV9QQ1JFTF9CTFguCgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9mbGFncyk6IFNldCBmbGFncyBmb3IgNXQsIDV0ZSBhbmQKCVhTY2FsZSBtYWNoaW5lIG51bWJlcnMuCgoJKiBjb25maWcuYmZkICh4c2NhbGUtZWxmKTogQWRkIHRhcmdldC4KCSh4c2NhbGUtY29mZik6IEFkZCB0YXJnZXQuCgoJKiBjcHUtYXJtLmM6IEFkZCB4c2NhbGUgbWFjaGluZSBuYW1lLgoJQWRkIHY1dCwgdjV0ZSBhbmQgWFNjYWxlIG1hY2hpbmUgbnVtYmVycy4KCjIwMDAtMTEtMjMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogYWl4Mzg2LWNvcmUuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTExLTIyICBKaW0gV2lsc29uICA8d2lsc29uQHJlZGhhdC5jb20+CgoJKiBjb2ZmLWlhNjQuYyAoaG93dG9fdGFibGUpOiBVc2UgRU1QVFlfSE9XVE8uCgkoaW5fcmVsb2NfcCk6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIHVudXNlZCBwYXJhbWV0ZXJzLgoJKiBjcHUtaWE2NC1vcGMuYyAoaW5zX3JzdmQsIGV4dF9yc3ZkLCBpbnNfY29uc3QsIGV4dF9jb25zdCk6IExpa2V3aXNlLgoJKGluc19pbW1zX3NjYWxlZCk6IEluaXRpYWxpemUgc2lnbl9iaXQgYXQgZnVuY3Rpb24gZW50cnkuCgkoZWxmNjRfaWE2NF9vcGVyYW5kcyk6IEFkZCBtaXNzaW5nIGluaXRpYWxpemVycy4KCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X3JlbG9jLCBlbGZOTl9pYTY0X3JlbG9jX3R5cGVfbG9va3VwLAoJZWxmTk5faWE2NF9pbmZvX3RvX2hvd3RvLCBlbGZOTl9pYTY0X2Zha2Vfc2VjdGlvbnMsCgllbGZOTl9pYTY0X2FkZF9zeW1ib2xfaG9vaywgZWxmTk5faWE2NF9pc19sb2NhbF9sYWJlbF9uYW1lLAoJZWxmTk5faWE2NF9sb2NhbF9oYXNoX3RhYmxlX2luaXQsIGdldF9mcHRyLCBnZXRfcGx0b2ZmLAoJZWxmTk5faWE2NF9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBBZGQgQVRUUklCVVRFX1VOVVNFRCBmb3IgdW51c2VkCglwYXJhbWV0ZXJzLgoJKGVsZk5OX2lhNjRfaW5mb190b19ob3d0byk6IEluaXRpYWxpemUgZnJlZV9yZWxvY3MsIGZyZWVfY29udGVudHMsCglhbmQgZnJlZV9leHRzeW1zIGF0IGZ1bmN0aW9uIGVudHJ5LgoJKGVsZk5OX2FkZF9zeW1ib2xfaG9vayk6IEFkZCB1bnNpZ25lZCBjYXN0IHRvIGJmZF9nZXRfZ3Bfc2l6ZSByZXN1bHQuCgkoZWxmTk5faWE2NF9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IERlbGV0ZSB1bnVzZWQgbG9jYWwgaC4KCShnZXRfZ290KTogRGVsZXRlIHVudXNlZCBsb2NhbCBzcmVsLgoJKGVsZk5OX2lhNjRfY2hlY2tfcmVsb2NzKTogSW5pdGlhbGl6ZSBkeW5yZWxfdHlwZSB3aGVuIGRlY2xhcmVkLgoJKGVsZk5OX2lhNjRfcmVsb2NhdGVfc2VjdGlvbik6IERlbGV0ZSB1bnVzZWQgbG9jYWwgZHluaW5keC4KCjIwMDAtMTEtMjEgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29mZi1hMjlrLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBjb2ZmLWg4NTAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWk5NjAuYzogTGlrZXdpc2UuCgkqIGNvZmYtcHBjLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXJzNjAwMC5jOiBMaWtld2lzZS4KCSogY29mZi1zdGdvMzIuYzogTGlrZXdpc2UuCgkqIGNvZmYtdGljNTR4LmM6IExpa2V3aXNlLgoJKiBjb2ZmLXc2NS5jOiBMaWtld2lzZS4KCSogY3B1LWg4NTAwLmM6IExpa2V3aXNlLgoJKiBjcHUtaHBwYS5jOiBMaWtld2lzZS4KCSogY3B1LW5zMzJrLmM6IExpa2V3aXNlLgoJKiBlY29mZi5jOiBMaWtld2lzZS4KCSogZWNvZmZsaW5rLmM6IExpa2V3aXNlLgoKMjAwMC0xMS0yMSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9yZWxvY19sb29wKTogRml4IGNvbXBpbGUgdGltZSB3YXJuaW5nLCBhbmQKCXJlbW92ZSBwb3NzaWJpbGl0eSBvZiBpbmZpbml0ZSBsb29wLgoKMjAwMC0xMS0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBhaXgzODYtY29yZS5jOiBGaXggZm9ybWF0dGluZy4KCSogYW91dC1hZG9iZS5jOiBMaWtld2lzZS4KCSogYW91dC1hcm0uYzogTGlrZXdpc2UuCgkqIGFvdXQtZW5jYXAuYzogTGlrZXdpc2UuCgkqIGFvdXQtbnMzMmsuYzogTGlrZXdpc2UuCgkqIGFvdXQtdGFyZ2V0Lmg6IExpa2V3aXNlLgoJKiBhb3V0LXRpYzMwLmM6IExpa2V3aXNlLgoJKiBhb3V0ZjEuaDogTGlrZXdpc2UuCgkqIGFvdXR4Lmg6IExpa2V3aXNlLgoJKiBhcmNoaXZlLmM6IExpa2V3aXNlLgoJKiBiZmQtaW4uaDogTGlrZXdpc2UuCgkqIGJmZC1pbjIuaDogTGlrZXdpc2UuCgkqIGJmZC5jOiBMaWtld2lzZS4KCSogYm91dC5jOiBMaWtld2lzZS4KCjIwMDAtMTEtMTcgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBEb24ndCBjcmVhdGUKCXBsdG9mZiBlbnRyaWVzIGZvciBEVF9JTklUIGFuZCBEVF9GSU5JLgoJKGVsZk5OX2lhNjRfZmluYWxfbGluayk6IERvbid0IHNldCBEVF9JTklUL0ZJTkkgZW50cmllcy4KCShlbGZOTl9pYTY0X2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogRG9uJ3QgZmlsbCBpbiBEVF9JTklUL0ZJTkkKCWVudHJpZXMuCgoyMDAwLTExLTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X2NoZWNrX3JlbG9jcyk6IEhhbmRsZSBJUExUIHJlbG9jcy4KCShhbGxvY2F0ZV9keW5yZWxfZW50cmllcyk6IExpa2V3aXNlLgoJKGVsZk5OX2lhNjRfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLiAgU2V0IFJFTCBhZGRlbmRzIGNvcnJlY3RseS4KCShzZXRfcGx0b2ZmX2VudHJ5KTogTGlrZXdpc2UuCgkoaWE2NF9ob3d0b190YWJsZSk6IFJlbW92ZSBSX0lBNjRfU0VHQkFTRSwgYW5kIFJfSUE2NF9FUExUW01MXVNCCgkoZWxmTk5faWE2NF9yZWxvY190eXBlX2xvb2t1cCk6IExpa2V3aXNlLgoJKGVsZk5OX2lhNjRfaW5zdGFsbF92YWx1ZSk6IExpa2V3aXNlLgoJKGVsZk5OX2lhNjRfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiByZWxvYy5jIChCRkRfUkVMT0NfSUE2NF9TRUdCQVNFKTogUmVtb3ZlLgoJKEJGRF9SRUxPQ19JQTY0X0VQTFRNU0IsIEJGRF9SRUxPQ19JQTY0X0VQTFRMU0IpOiBSZW1vdmUuCgoyMDAwLTExLTE2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNwdS1hMjlrLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBjcHUtYWxwaGEuYzogTGlrZXdpc2UuCgkqIGNwdS1hcm0uYzogTGlrZXdpc2UuCgkqIGNwdS1hdnIuYzogTGlrZXdpc2UuCgkqIGNwdS1kMTB2LmM6IExpa2V3aXNlLgoJKiBjcHUtaDg1MDAuYzogTGlrZXdpc2UuCgkqIGNwdS1ocHBhLmM6IExpa2V3aXNlLgoJKiBjcHUtaTM3MC5jOiBMaWtld2lzZS4KCSogY3B1LWkzODYuYzogTGlrZXdpc2UuCgkqIGNwdS1pOTYwLmM6IExpa2V3aXNlLgoJKiBjcHUtaWE2NC1vcGMuYzogTGlrZXdpc2UuCgkqIGNwdS1pYTY0LmM6IExpa2V3aXNlLgoJKiBjcHUtbTMyci5jOiBMaWtld2lzZS4KCSogY3B1LW02OGhjMTEuYzogTGlrZXdpc2UuCgkqIGNwdS1tNjhoYzEyLmM6IExpa2V3aXNlLgoJKiBjcHUtbTY4ay5jOiBMaWtld2lzZS4KCSogY3B1LW04OGsuYzogTGlrZXdpc2UuCgkqIGNwdS1taXBzLmM6IExpa2V3aXNlLgoJKiBjcHUtbnMzMmsuYzogTGlrZXdpc2UuCgkqIGNwdS1wai5jOiBMaWtld2lzZS4KCSogY3B1LXBvd2VycGMuYzogTGlrZXdpc2UuCgkqIGNwdS1zaC5jOiBMaWtld2lzZS4KCSogY3B1LXNwYXJjLmM6IExpa2V3aXNlLgoJKiBjcHUtdGljNTR4LmM6IExpa2V3aXNlLgoJKiBjcHUtdjg1MC5jOiBMaWtld2lzZS4KCSogY3B1LXZheC5jOiBMaWtld2lzZS4KCSogY3B1LXc2NS5jOiBMaWtld2lzZS4KCSogY3B1LXdlMzJrLmM6IExpa2V3aXNlLgoJKiBjcHUtejhrLmM6IExpa2V3aXNlLgoJKiBkd2FyZjEuYzogTGlrZXdpc2UuCgkqIGR3YXJmMi5jOiBMaWtld2lzZS4KCjIwMDAtMTEtMTUgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29mZi1hcm0uYzogRml4IGZvcm1hdHRpbmcuCgkqIGNvZmYtcHBjLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXJzNjAwMC5jOiBMaWtld2lzZS4KCSogY29mZi1zaC5jOiBMaWtld2lzZS4KCSogY29mZi1zcGFyYy5jOiBMaWtld2lzZS4KCSogY29mZi10aWMzMC5jOiBMaWtld2lzZS4KCSogY29mZi10aWM1NHguYzogTGlrZXdpc2UuCgkqIGNvZmYtdGljODAuYzogTGlrZXdpc2UuCgkqIGNvZmYtdzY1LmM6IExpa2V3aXNlLgoJKiBjb2ZmLXdlMzJrLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXo4ay5jOiBMaWtld2lzZS4KCjIwMDAtMTEtMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9jaGVja19yZWxvY3MpOiBDcmVhdGUgdGhlIHJlbG9jCglzZWN0aW9uIHdpdGggdGhlIHNhbWUgQUxMT0N8TE9BRCBmbGFncyBhcyB0aGUgc291cmNlIHNlY3Rpb24uCgoyMDAwLTExLTE0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbGF4X29wdF9jYWxsKTogT25seSBjaGVjayBiaXRzIHVzZWQKCWJ5IFNUT19BTFBIQSBjb25zdGFudHMuCgoyMDAwLTExLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvZmYtcG1hYy5jOiBGaXggZm9ybWF0dGluZy4KCSogY29mZi1wcGMuYzogTGlrZXdpc2UuCgoyMDAwLTExLTEzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IEFsc28gYWRkIGluZGlyZWN0CglzeW1ib2xzIGZvciBjb21tb24gc3ltYm9scyB3aXRoIHRoZSBkZWZhdWx0IHZlcnNpb24uCgoyMDAwLTExLTA5ICBQaGlsaXAgQmx1bmRlbGwgIDxwYkBmdXR1cmV0di5jb20+CgoJKiBzZWN0aW9uLmMgKFNURF9TRUNUSU9OKTogU2V0IGdjX21hcmsgZmxhZy4KCjIwMDAtMTEtMTEgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29mZi1pOTYwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLW02OGsuYzogTGlrZXdpc2UuCgkqIGNvZmYtbTg4ay5jOiBMaWtld2lzZS4KCSogY29mZi1tY29yZS5jOiBMaWtld2lzZS4KCSogY29mZi1taXBzLmM6IExpa2V3aXNlLgoKMjAwMC0xMS0xMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IElnbm9yZSBSX1NIX05PTkUgcmVsb2NzLgoKMjAwMC0xMS0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb2ZmLWg4MzAwLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBjb2ZmLWg4NTAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWkzODYuYzogTGlrZXdpc2UuCgkqIGNvZmYtaTg2MC5jOiBMaWtld2lzZS4KCSogY29mZi1pOTYwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWlhNjQuYzogTGlrZXdpc2UuCgoyMDAwLTExLTA5ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGFyY2hpdmUuYzogRml4IGZvcm1hdHRpbmcuCgkqIGFyY2h1cmVzLmM6IExpa2V3aXNlLgoKMjAwMC0xMS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGVsZnh4LWlhNjQuYyAoZWxmNjRfaWE2NF9maW5hbF9saW5rKTogTmV3IGxvY2FsIHVud2luZF9vdXRwdXRfc2VjLgoJU2V0IGl0IGJlZm9yZSBiZmRfZWxmNjRfYmZkX2ZpbmFsX2xpbmsgY2FsbC4gIFVzZSBpdCBhZnRlciB0aGUgY2FsbC4KCSogc2VjdGlvbi5jIChiZmRfc2V0X3NlY3Rpb25fY29udGVudHMpOiBDYWxsIG1lbWNweSBpZgoJc2VjdGlvbi0+Y29udGVudHMgc2V0IGFuZCBsb2NhdGlvbiBub3QgZXF1YWwgdG8gY29udGVudHMgcGx1cyBvZmZzZXQuCgoyMDAwLTExLTA4ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGJmZC1pbi5oOiBGaXggZm9ybWF0dGluZy4KCSogYmZkLWluMi5oOiBMaWtld2lzZS4KCSogYmZkLmM6IExpa2V3aXNlLgoJKiBiaW5hcnkuYzogTGlrZXdpc2UuCgkqIGJvdXQuYzogTGlrZXdpc2UuCgkqIGNvZmYtYTI5ay5jOiBMaWtld2lzZS4KCSogY29mZi1hbHBoYS5jOiBMaWtld2lzZS4KCSogY29mZi1hcG9sbG8uYzogTGlrZXdpc2UuCgkqIGNvZmYtYXV4LmM6IExpa2V3aXNlLgoKMjAwMC0xMS0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBhaXgzODYtY29yZS5jOiBGaXggZm9ybWF0dGluZy4KCSogYW91dGYxLmg6IExpa2V3aXNlLgoJKiBhb3V0eC5oOiBMaWtld2lzZS4KCSogYXJjaHVyZXMuYzogTGlrZXdpc2UuCgkqIGFybW5ldGJzZC5jOiBMaWtld2lzZS4KCjIwMDAtMTEtMDcgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBjb2ZmLWg4MzAwLmMgKHNwZWNpYWwpOiBBZGp1c3QgcmVsb2MgYWRkcmVzcy4KCjIwMDAtMTEtMDYgIFN0ZXZlIEVsbGNleSA8c2plQGN1cC5ocC5jb20+CgoJKiBhcmNodXJlcy5jIChiZmRfbWFjaF9pYTY0X2VsZjY0LCBiZmRfbWFjaF9pYTY0X2VsZjMyKTogQWRkIGRlZmluZXMKCXRvIGRpZmZlcmVudGlhdGUgZWxmMzIgYW5kIGVsZjY0IG9uIGlhNjQuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmJmZDogQWRkIHRhcmdldCBmb3IgImlhNjQqLSotaHB1eCoiLgoJKiBjb25maWd1cmUuaW46IEFkZCBiZmRfZWxmMzJfaWE2NF9iaWdfdmVjIHRvIHNlbHZlY3Mgc3dpdGNoLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNwdS1pYTY0LmMgKGJmZF9pYTY0X2VsZjMyX2FyY2gpOiBBZGQgZWxmMzIgYXJjaCBpbmZvIHN0cnVjdHVyZS4KCSogdGFyZ2V0cy5jOiBBZGQgYmZkX3RhcmdldCBiZmRfZWxmMzJfaWE2NF9iaWdfdmVjLgoKCSogTWFrZWZpbGUuYW06IE1ha2UgZWxmMzItaWE2NC5jIGFuZCBlbGY2NC1pYTY0LmMgZGVyaXZlZCBvYmplY3RzCglmcm9tIGVsZnh4LWlhNjQuYy4gIEFkZCBkZXBlbmVuY3kgcnVsZXMgZm9yIG1ha2luZyBlbGYzMi1pYTY0LmxvLgoJKiBNYWtlZmlsZS5pbjogUmVnbmVyYXRlLgoJKiBlbGY2NC1pYTY0LmM6IERlbGV0ZWQuCgkqIGVsZnh4LWlhNjQuYzogTmV3IGZpbGUsIHBhcmFtYXRlcml6ZWQgdmVyc2lvbiBvZiBlbGY2NC1pYTY0LmMuCgoyMDAwLTExLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGFvdXQtYWRvYmUuYzogRml4IGZvcm1hdHRpbmcuCgkqIGFvdXQtYXJtLmM6IExpa2V3aXNlLgoJKiBhb3V0LWNyaXMuYzogTGlrZXdpc2UuCgkqIGFvdXQtZW5jYXAuYzogTGlrZXdpc2UuCgkqIGFvdXQtbnMzMmsuYzogTGlrZXdpc2UuCgkqIGFvdXQtdGFyZ2V0Lmg6IExpa2V3aXNlLgoJKiBhb3V0LXRpYzMwLmM6IExpa2V3aXNlLgoKMjAwMC0xMS0wNSAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IEFsd2F5cyBwZXJtaXQKCUJGRHMgY29udGFpbmluZyBubyBzZWN0aW9ucyB0byBiZSBtZXJnZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgZmxhZ3MuCgoyMDAwLTExLTA0ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogU3VwcHJlc3MgZXJyb3IgbWVzc2FnZQoJaWYgYSByZWxvY2F0aW9uIGZvciBhbiB1bmRlZmluZWQgc3ltYm9sIGFsc28gcmVzdWx0cyBpbiBhbgoJb3ZlcmZsb3cuCgoyMDAwLTExLTA2ICBDaHJpc3RvcGhlciBGYXlsb3IgPGNnZkBjeWdudXMuY29tPgoKCSogY29uZmlnLmJmZDogQWRkIHN1cHBvcnQgZm9yIFN1biBDaG9ydXMuCgoyMDAwLTExLTA1ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCSogY29uZmlndXJlLmluOiBSZWNvZ25pemUgYWxwaGEtKi1mcmVlYnNkKi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0xMS0wMiAgTHVjaWFubyBHZW1tZSA8aXNoaXRhd2FAeWFob28uY29tPgoKCSogc3JlYy5jIChDSFVOSyk6IFJlbmFtZSB0byBERUZBVUxUX0NIVU5LLgoJKENodW5rKTogTmV3IGdsb2JhbCB2YXJpYWJsZSBzZXQgYnkgYSBwYXJhbWV0ZXIgaW4gb2JqY29weS5jLgoJKFMzRm9yY2VkKTogTmV3IGdsb2JhbCB2YXJpYWJsZSBzZXQgYnkgYSBwYXJhbWV0ZXIgaW4KCW9iamNvcHkuYy4KCShzcmVjX3NldF9zZWN0aW9uX2NvbnRlbnRzKTogSWYgUzNGb3JjZWQgaXMgdHJ1ZSwgYWx3YXlzIGdlbmVyYXRlCglTMyByZWNvcmRzLgoJKHNyZWNfd3JpdGVfc2VjdGlvbik6IFVzZSAnQ2h1bmsnIHRvIGxpbWl0IG1heGltdW0gbGVuZ3RoIG9mIFMKCXJlY29yZHMuCgoyMDAwLTExLTAyICBQZXIgTHVuZGJlcmcgIDxwbHVuZGlzQGNoYW9zZGV2Lm9yZz4KCgkqIGNvbmZpZy5iZmQ6IEFkZCBzdXBwb3J0IGZvciBpWzM0NTZdODYtY2hhb3NkZXYtc3Rvcm0tY2hhb3MuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIHBvL2JmZC5wb3Q6IFJlZ2VuZXJhdGUuCgoyMDAwLTEwLTMxICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogT25seSBoYW5kbGUKCUVGX1NPRlRfRkxPQVQgaWYgaXQgaXMgZGVmaW5lZC4KCjIwMDAtMTAtMjcgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IERvbid0IHJlZnVzZQoJYXR0ZW1wdHMgdG8gbWl4IFBJQyBjb2RlIHdpdGggbm9uLVBJQywganVzdCBtYXJrIHRoZSBvdXRwdXQgYXMKCWJlaW5nIHBvc2l0aW9uIGRlcGVuZGVudC4KCShlbGYzMl9hcm1fbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IExpa2V3aXNlLiAgUHJpbnQgYW4gZXJyb3IKCW1lc3NhZ2UgZm9yIEVGX1NPRlRfRkxPQVQgbWlzbWF0Y2hlcy4gIERpc3BsYXkgZGlhZ25vc3RpY3MgZm9yCglhbGwgbWlzbWF0Y2hlcywgbm90IGp1c3QgdGhlIGZpcnN0IG9uZS4KCjIwMDAtMTAtMjUgIENocmlzIERlbWV0cmlvdSAgPGNnZEBzaWJ5dGUuY29tPgoKCSogaWVlZS5jIChpZWVlX2FyY2hpdmVfcCk6IFBsdWcgb25lIG9mIG1hbnkgcG9zc2libGUKCW1lbW9yeSBsZWFrcyBpbiBlcnJvciBoYW5kbGluZy4KCjIwMDAtMTAtMjAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSwKCWVsZjMyX3NwYXJjX29iamVjdF9wLCBlbGYzMl9zcGFyY19maW5hbF93cml0ZV9wcm9jZXNzaW5nKToKCVN1cHBvcnQgdjhwbHVzYi4KCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSwKCXNwYXJjNjRfZWxmX29iamVjdF9wKTogU3VwcG9ydCB2OWIuCgkqIGFyY2h1cmVzLmM6IERlY2xhcmUgdjhwbHVzYiBhbmQgdjliIG1hY2hpbmVzLgoJKiBiZmQtaW4yLmg6IERpdHRvLgoJKiBjcHUtc3BhcmMuYzogRGl0dG8uCgoyMDAwLTEwLTE2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHNob2dnb3RoLmN5Z251cy5jb20+CgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogQ2xlYXIgdGhlIGxvY2F0aW9uCglvZiBhIEdPVCByZWxvYy4KCgkqIGVsZjMyLXBwYy5jIChTWU1CT0xfUkVGRVJFTkNFU19MT0NBTCk6IE5ldyBtYWNyby4KCShTWU1CT0xfQ0FMTFNfTE9DQUwpOiBOZXcgbWFjcm8uCgkocHBjX2VsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBVc2UgU1lNQk9MX0NBTExTX0xPQ0FMLgoJKHBwY19lbGZfY2hlY2tfcmVsb2NzKTogVXNlIFNZTUJPTF9SRUZFUkVOQ0VTX0xPQ0FMLgoJKHBwY19lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogVXNlIFNZTUJPTF9SRUZFUkVOQ0VTX0xPQ0FMLgoJKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IFVzZSBmbGFnIHZhcmlhYmxlIHRvIGRldGVybWluZQoJd2hldGhlciB0aGUgcmVsb2NhdGlvbiByZWZlcnMgdG8gYSBsb2NhbCBzeW1ib2wuCglUZXN0IHdoZXRoZXIgYSBQTFRSRUwyNCByZWxvYyB3aWxsIHByb2R1Y2UgYSByZWxvYyBieSBsb29raW5nCgl0byBzZWUgd2hldGhlciBhIFBMVCBlbnRyeSB3YXMgbWFkZS4KCjIwMDAtMTAtMTQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAc2hvZ2dvdGguY3lnbnVzLmNvbT4KCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IERvbid0IG1ha2UgUExUCgllbnRyaWVzIHRoYXQgY291bGQgc2VydmUgYXMgYSBkZWZpbml0aW9uIGZvciBhIHdlYWsgc3ltYm9sLgoKMjAwMC0xMC0xMyAgVWxmIENhcmxzc29uICA8dWxmY0BlbmdyLnNnaS5jb20+CgoJRnJvbSAgUmFsZiBCYWVjaGxlICA8cmFsZkBnbnUub3JnPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jcmVhdGVfZHluYW1pY19yZWxvY2F0aW9uKTogTmV3IGFyZ3VtZW50Cglsb2NhbF9wLiAgQWRkIHN5bWJvbCB2YWx1ZSBvbmx5IGZvciBub24tUl9NSVBTX1JFTDMyIHJlbG9jYXRpb25zCglhZ2FpbnN0IGxvY2FsIHN5bWJvbHMuCgkoX2JmZF9taXBzX2VsZl9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IFVuZG8gcGF0Y2ggZnJvbSAyMDAwLTEwLTAxLgoKMjAwMC0xMC0xMiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHNlY3Rpb24uYyAoc3RydWN0IHNlYyk6IEFkZCBrZXB0X3NlY3Rpb24uCgkoc3RydWN0IGJmZF9jb21kYXRfaW5mbyk6IFJlbW92ZSBzZWMsIHdlIGNhbiB1c2UgYWJvdmUuCgkoU1REX1NFQ1RJT04pOiBBZGQgaW5pdGlhbGl6ZXIuCgkoYmZkX21ha2Vfc2VjdGlvbl9hbnl3YXkpOiBJbml0IGhlcmUgdG9vLgoKCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBSZW1vdmUgdW5uZWNlc3NhcnkKCXplcm9pbmcgb2YgYGZsYWdzJy4KCShlbGZfbGlua19pbnB1dF9iZmQpOiBTZXQgYWxsIGFzZWN0aW9uLT5zeW1ib2wtPnZhbHVlJ3MgaGVyZSwgYW5kCglmdWRnZSB2YWx1ZXMgZm9yIGRpc2NhcmRlZCBsaW5rLW9uY2Ugc2VjdGlvbiBzeW1ib2xzLgoKCSogZWxmNjQtaHBwYS5jOiBJbmNsdWRlIGFsbG9jYS1jb25mLmgKCjIwMDAtMTAtMTEgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYuYyAoc3dhcF9vdXRfc3ltcyk6IFJldmVydCAyMDAwLTEwLTA3IGNoYW5nZXMuCgoJKiBpZWVlLmMgKGllZWVfbWFrZV9lbXB0eV9zeW1ib2wpOiBPb3BzLCBiZmRfemFsbG9jIG5lZWRzIGFub3RoZXIgYXJnLgoKMjAwMC0xMC0xMCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGllZWUuYyAoaWVlZV9tYWtlX2VtcHR5X3N5bWJvbCk6IFVzZSBiZmRfemFsbG9jLCBub3QgYmZkX3ptYWxsb2MuCgoyMDAwLTEwLTEwICBUb20gUml4IDx0cml4QHJlZGhhdC5jb20+CgoJKiBzZWN0aW9uLmMgKGJmZF9tYWtlX3NlY3Rpb25fYW55d2F5KTogUmVsZWFzZSBuZXdzZWN0IHB0ciB3aGVuCgluZXdzZWN0LT5zeW1ib2wgZmFpbHMgdG8gYWxsb2MuICBVc2UgYmZkX3JlbGVhc2UgaW5zdGVhZCBvZiBmcmVlLgoKMjAwMC0xMC0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbQoKCSogZWxmNjQtaWE2NC5jIChlbGY2NF9pYTY0X3Vud2luZF9lbnRyeV9jb21wYXJlX2JmZCk6IE5ldy4KCShlbGY2NF9pYTY0X3Vud2luZF9lbnRyeV9jb21wYXJlKTogTmV3LgoJKGVsZjY0X2lhNjRfZmluYWxfbGluayk6IFNvcnQgdGhlIC5JQV82NC51bndpbmQgc2VjdGlvbi4KCjIwMDAtMTAtMDcgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGZsaW5rLmggKHNpemVfZHluYW1pY19zZWN0aW9ucyk6IERvbid0IGNyZWF0ZSB2YXJpb3VzIHRhZ3MgaWYKCS5keW5zdHIgaXMgZXhjbHVkZWQgZnJvbSB0aGUgbGluay4gIERvbid0IHNldCBmaXJzdCBkeW5zeW0gZW50cnkKCWlmIGR5bnN5bWNvdW50IGlzIHplcm8uCgkoZWxmX2JmZF9maW5hbF9saW5rKTogRG9uJ3QgdHJ5IHRvIHN3YXAgb3V0IGR5bmFtaWMgc3ltcyBpZgoJLmR5bnN5bSBleGNsdWRlZCBmcm9tIHRoZSBsaW5rLiAgRG9uJ3QgdHJ5IHRvIHdyaXRlIGFueSBkeW5hbWljCglzZWN0aW9ucyBleGNsdWRlZCBmcm9tIHRoZSBsaW5rLgoKCSogZWxmLmMgKHN3YXBfb3V0X3N5bXMpOiBIYW5kbGUgZ2xvYmFsIHNlY3Rpb24gc3ltYm9scy4KCjIwMDAtMTAtMDUgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogcGVpZ2VuLmMgKF9iZmRfcGVpX3N3YXBfc2NuaGRyX291dCk6IG5vdGUgZXh0ZW5kZWQgcmVsb2NzCgkqIGNvZmZjb2RlLmggKGNvZmZfc2V0X2FsaWdubWVudF9ob29rKTogcmVhZCBleHRlbmRlZCByZWxvYyBjb3VudAoJKGNvZmZfd3JpdGVfcmVsb2NzKTogd3JpdGUgZXh0ZW5kZWQgcmVsb2MgY291bnQKCShjb2ZmX3dyaXRlX29iamVjdF9jb250ZW50cyk6IGFjY291bnQgZm9yIGV4dGVuZGVkIHJlbG9jcwoKMjAwMC0xMC0wNSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSk6IEFkZCBlbGZfYmFja2VuZF9zZWN0aW9uX2ZsYWdzCglmaWVsZC4KCSogZWxmLmMgKF9iZmRfZWxmX21ha2Vfc2VjdGlvbl9mcm9tX3NoZHIpOiBDYWxsIHRoZQoJZWxmX2JhY2tlbmRfc2VjdGlvbl9mbGFncyBmdW5jdGlvbi4KCSogZWxmNjQtaWE2NC5jIChlbGY2NF9pYTY0X3NlY3Rpb25fZnJvbV9zaGRyKTogRGVsZXRlIGZsYWcgY29udmVyc2lvbgoJY29kZS4KCShlbGY2NF9pYTY0X3NlY3Rpb25fZmxhZ3MpOiBOZXcgZnVuY3Rpb24gY29udGFpbmluZyBmbGFnIGNvbnZlcnNpb24KCWNvZGUuCgkoZWxmX2JhY2tlbmRfc2VjdGlvbl9mbGFncyk6IERlZmluZSB0byBlbGY2NF9pYTY0X3NlY3Rpb25fZmxhZ3MuCgkqIGVsZnh4LXRhcmdldC5oIChlbGZfYmFja2VuZF9zZWN0aW9uX2ZsYWdzKTogRGVmaW5lLgoJKGVsZk5OX2JlZCk6IEluaXRpYWxpemUgZWxmX2JhY2tlbmRfc2VjdGlvbl9mbGFncyBmaWVsZC4KCjIwMDAtMTAtMDIgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogQ29ycmVjdCBjYWxsIHRvCglfYmZkX2VsZjMyX2djX3JlY29yZF92dGFibGUuICBDb3JyZWN0IGEgY29tbWVudC4KCjIwMDAtMTAtMDEgIFVsZiBDYXJsc3NvbiAgPHVsZmNAZW5nci5zZ2kuY29tPgoKCUZyb20gIFJhbGYgQmFlY2hsZSAgPHJhbGZAZ251Lm9yZz4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IE1hcmsgZ2xkCglwcm9kdWNlcyBiaW5hcmllcyB3aXRoIGdvdFsxXSA9IDB4ODAwMDAwMDEgdG8gZGlmZmVyZW5jaWF0ZSB0aGVtCglmb3IgdGhlIGR5bmFtaWMgbGlua2VyIGZyb20gdGhlIGJyb2tlbiBiaW5hcmllcyBwcm9kdWNlZCBieSBvbGQKCXZlcnNpb25zLgoKMjAwMC0wOS0zMCAgUGV0ciBTb3JmYSA8cGV0cnNAc2NvLmNvbT4KCgkqIGVsZi5jIChlbGZjb3JlX2dyb2tfcHN0YXR1cyk6IENoZWNrIGZvciBzaXplIG9mIHB4c3RhdHVzX3QuCgkoZWxmY29yZV9ncm9rX2x3cHN0YXR1cyk6IENoZWNrIGZvciBzaXplIG9mIGx3cHhzdGF0dXNfdC4KCSogY29uZmlndXJlLmluOiBBZGQgY2hlY2sgZm9yIHB4c3RhdHVzX3QgYW5kIGx3cHhzdGF0dXNfdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0wOS0yNyAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJRGVmaW5lIHR3byBiZmRfdGFyZ2V0cyBmb3IgYWJzZW5jZSBhbmQgcHJlc2VuY2Ugb2YgbGVhZGluZwoJdW5kZXJzY29yZSBvbiBzeW1ib2xzLiAgTWFrZSBzdXJlIHRvIG9ubHkgbGluayBzYW1lIGtpbmQuCgkqIGVsZjMyLWNyaXMuYyAoY3Jpc19lbGZfb2JqZWN0X3AsCgljcmlzX2VsZl9maW5hbF93cml0ZV9wcm9jZXNzaW5nLCBjcmlzX2VsZl9wcmludF9wcml2YXRlX2JmZF9kYXRhLAoJY3Jpc19lbGZfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IE5ldy4KCShlbGZfYmFja2VuZF9vYmplY3RfcCwgZWxmX2JhY2tlbmRfZmluYWxfd3JpdGVfcHJvY2Vzc2luZywKCWJmZF9lbGYzMl9iZmRfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSwKCWJmZF9lbGYzMl9iZmRfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IERlZmluZS4KCTxUYXJnZXQgdmVjdG9yIGRlZmluaXRpb24+OiBJbmNsdWRlIGVsZjMyLXRhcmdldC5oIHR3aWNlIHdpdGgKCWRpZmZlcmVudCBtYWNybyBzZXR0aW5nczoKCShUQVJHRVRfTElUVExFX1NZTSk6IEZpcnN0IGFzIGJmZF9lbGYzMl9jcmlzX3ZlYywgdGhlbiBhcwoJYmZkX2VsZjMyX3VzX2NyaXNfdmVjLgoJKFRBUkdFVF9MSVRUTEVfTkFNRSk6IEZpcnN0IGFzICJlbGYzMi1jcmlzIiwgdGhlbiAiZWxmMzItdXMtY3JpcyIuCgkoZWxmX3N5bWJvbF9sZWFkaW5nX2NoYXIpOiBGaXJzdCBhcyAwLCB0aGVuICdfJy4KCShJTkNMVURFRF9UQVJHRVRfRklMRSk6IERlZmluZSBmb3Igc2Vjb25kIGluY2x1ZGUgb2YgZWxmMzItdGFyZ2V0LmguCgkqIGNvbmZpZy5iZmQgKGNyaXMtKi0qKTogQWRkIGJmZF9lbGYzMl91c19jcmlzX3ZlYyB0byB0YXJnX3NlbHZlY3MuCgkqIGNvbmZpZ3VyZS5pbiAoYmZkX2VsZjMyX2NyaXNfdmVjLCBjcmlzX2FvdXRfdmVjKTogTmV3IHZlY3Rvci4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiB0YXJnZXRzLmM6IERlY2xhcmUgYmZkX2VsZjMyX3VzX2NyaXNfdmVjLgoJKiBwby9iZmQucG90OiBSZWdlbmVyYXRlLgoKMjAwMC0wOS0yOSAgTW9tY2hpbCBWZWxpa292ICA8dmVsY29AZmFkYXRhLmJnPgoKCSogZWxmMzItYXJtLmggKGFybV9hZGRfdG9fcmVsKTogQ29ycmVjdGx5IGFkanVzdCB0aGUgYWRkZW5kIGZvcgoJUl9BUk1fVEhNX1BDMjIgcmVsb2NhdGlvbnMuCgoyMDAwLTA5LTI5ICBOSUlCRSBZdXRha2EgPGduaWliZUBjaHJvb3Qub3JnPgoKCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBEb24ndCBiZmRfcmVsZWFzZSBydW5wYXRoLgoKMjAwMC0wOS0yOSAgTW9tY2hpbCBWZWxpa292IDx2ZWxjb0BmYWRhdGEuYmc+CgoJKiBlbGYuYyAoZWxmX2Zha2Vfc2VjdGlvbnMpOiBEbyBub3QgbWFyayB0aGUgc2VjdGlvbiBTSFRfTk9CSVRTIGlmCglpcyBoYXMgdGhlIFNFQ19IQVNfQ09OVEVOVFMgZmxhZyBzZXQuCgoyMDAwLTA5LTI4ICDWcmphbiBGcmliZXJnICA8b3JqYW5mQGF4aXMuY29tPgoJICAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogYW91dC1jcmlzLmMgKE5fVFhUQUREUik6IERlZmluZS4KCjIwMDAtMDktMjggIEpvaG4gRGF2aWQgQW5nbGluIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHNvbS5jOiBJbmNsdWRlIGFsbG9jYS1jb25mLmguCgkqIE1ha2VmaWxlLmFtOiAibWFrZSBkZXAtYW0iCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKMjAwMC0wOS0yNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWhwcGEuYyAocGx0X3N0dWIpOiBOZXcuCgkoUExUX1NUVUJfRU5UUlkpOiBEZWZpbmUuCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGUpOiBDaGFuZ2UgbXVsdGlfc3Vic3BhY2UgdG8gcGFja2VkCglib29sZWFuLiAgQWRkIG5lZWRfcGx0X3N0dWIsIGhhc18xMmJpdF9icmFuY2ggYW5kIGhhc18xN2JpdF9icmFuY2guCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogSW5pdCB0byBzdWl0LgoJKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogU2V0IGhhc18xMmJpdF9icmFuY2ggYW5kCgloYXNfMTdiaXRfYnJhbmNoIGFzIGFwcHJvcHJpYXRlLgoJKGVsZjMyX2hwcGFfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogU2V0IG5lZWRfcGx0X3N0dWIgZm9yCglub24tbG9jYWwgZnVuY3Rpb25zLgoJKGVsZjMyX2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogQ29ycmVjdCBzZXR0aW5nIG9mIHJlbHRleHQuCglBZGQgc3BhY2UgZm9yIHBsdF9zdHViIGFzIG5lZWRlZC4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IFBvaW50IC5wbHQgZW50cmllcyBmb3IgZ2xvYmFsCglmdW5jdGlvbnMgYXQgcGx0X3N0dWIuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IFdyaXRlIHBsdF9zdHViLgoJKGVsZjMyX2hwcGFfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMpOiBMZWF2ZSAucGx0IGV4ZWN1dGFibGUuCgoJKiBlbGYzMi1ocHBhLmggKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IEFkZCBncm91cF9zaXplIHBhcmFtLgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IExpa2V3aXNlLiAgVXNlIGl0IGluc3RlYWQKCW9mIGZpeGVkIHNpemUsIGFuZCBpZiBuZWdhdGl2ZSwgZGlzYWJsZSBoYW5kbGluZyBvZiBpbnB1dCBzZWN0aW9ucwoJYmVmb3JlIHN0dWIgc2VjdGlvbi4gIFNldCB1cCBkZWZhdWx0IHN0dWIgZ3JvdXAgc2l6ZSBkZXBlbmRpbmcKCW9uIGRldGVjdGVkIGJyYW5jaCByZWxvY3MuCgkoaHBwYV9idWlsZF9vbmVfc3R1Yik6IFVzZSBscnNlbCBhbmQgcnJzZWwgZm9yIGltcG9ydCBzdHVicyB0bwoJZW5zdXJlIGRpZmZlcmVudCBvZmZzZXRzIGZyb20gc3ltX3ZhbHVlIGFyZW4ndCByb3VuZGVkIHRvCglkaWZmZXJlbnQgMmsgYmxvY2tzLiAgVXNlIGxyc2VsIGFuZCBycnNlbCBmb3Igb3RoZXIgc3R1YnMgdG9vIGZvcgoJY29uc2lzdGVuY3kgcmF0aGVyIHRoYW4gbmVjZXNzaXR5LgoJKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogSGFuZGxlIFJfUEFSSVNDX0RJUjE0Ri4KCShmaW5hbF9saW5rX3JlbG9jYXRlKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9ob3d0b190YWJsZSk6IEFkZCBSX1BBUklTQ19ESVIxNEYgcmVsb2MuCgkoX2JmZF9lbGZfaHBwYV9nZW5fcmVsb2NfdHlwZSk6IEdlbmVyYXRlIHRoZW0uCgkoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IEhhbmRsZSB0aGVtLgoJKGVsZl9ocHBhX3JlbG9jYXRlX2luc24pOiBMaWtld2lzZS4KCShfYmZkX2VsZl9ocHBhX2dlbl9yZWxvY190eXBlKTogQWRkIG1pc3NpbmcgZV9sZHNlbCBhbmQgZV9yZHNlbCBjYXNlcy4KCjIwMDAtMDktMjYgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZWxmY29kZS5oIChlbGZfb2JqZWN0X3ApOiBQcmVzZXJ2ZSBhbmQgY2xlYXIgYWJmZCBzZWN0aW9uCglpbmZvcm1hdGlvbi4gIFJlc3RvcmUgYXQgZXJyb3IuCgoyMDAwLTA5LTI2ICBQYXVsIFNva29sb3Zza3kgIDxQYXVsLlNva29sb3Zza3lAdGVjaG5vbG9naXN0LmNvbT4KCgkqIHBlaWdlbi5jIChfYmZkX3BlaV9zd2FwX2FvdXRoZHJfaW4pOiBJZiBzb21lIERhdGFEaXJlY3RvcnkKCWlzIGVtcHR5LCBtYWtlIHN1cmUgdGhhdCBpdHMgcnZhIGFsc28gMC4gTlQgbG9hZGVyIGRpc2xpa2VzCgloYXZpbmcgb3RoZXJ3aXNlLgoKMjAwMC0wOS0yNiAgU3RldmUgRWxsY2V5IDxzamVAY3VwLmhwLmNvbT4KCgkqIHNvbS5jIChzb21fYmZkX2Rlcml2ZV9taXNjX3N5bWJvbF9pbmZvKTogTWFrZSB3ZWFrIHN5bWJvbHMKCWdsb2JhbCBieSBkZWZhdWx0LgoKMjAwMC0wOS0yMSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBGaXggd2VhayBzeW0gaGFuZGxpbmcgaW4KCWN1cnJlbnRseSB1bnVzZWQgUkVMQVRJVkVfRFlOQU1JQ19SRUxPQ1MgY29kZS4KCShocHBhX2Rpc2NhcmRfY29waWVzKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogU2l6ZSBgaW5wdXRfbGlzdCcgYXJyYXkgY29ycmVjdGx5LiAgQ29ycmVjdAoJY29tbWVudHMuICBEb24ndCBjaGVjayBub24tY29kZSBvdXRwdXQgc2VjdGlvbnMgZm9yIHN0dWIgZ3JvdXBpbmcuCgoyMDAwLTA5LTIwICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogc2VjdGlvbi5jIChiZmRfZ2V0X3VuaXF1ZV9zZWN0aW9uX25hbWUpOiBSZXR1cm4gTlVMTCBpZgoJYmZkX21hbGxvYyBmYWlscy4KCjIwMDAtMDktMTkgIE1pY2hhZWwgU29rb2xvdiAgPG1zb2tvbG92QGl2YW4uSGFyaGFuLk9SRz4KCgkqIGVsZjMyLW02OGsuYyAoZWxmX2NwdTMyX3BsdDBfZW50cnkpOiBDaGFuZ2UgdGhlIFBMVCBlbnRyeSAwCglpbnN0cnVjdGlvbiBzZXF1ZW5jZSB0byBhY3R1YWxseSB3b3JrLgoJKGVsZl9tNjhrX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogQ2hhbmdlIHRoZSBwYXRjaC1pbiBvZmZzZXQKCWFjY29yZGluZ2x5LgoKMjAwMC0wOS0xOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IFVzZQoJX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlIHRvIGFwcGx5IHRoZSByZWxvY2F0aW9uIGFnYWluc3QgYSBzZWN0aW9uCglzeW1ib2wsIHdoZW4gZG9pbmcgcmVsb2NhdGFibGUgbGlua3MuCgoyMDAwLTA5LTE4ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3N0dWJfaGFzaF9lbnRyeSk6IFJlbmFtZSBpbnB1dF9zZWN0aW9uCgl0byBpZF9zZWMuCgkoc3R1Yl9oYXNoX25ld2Z1bmMpOiBIZXJlIHRvby4KCShocHBhX2FkZF9zdHViKTogQW5kIGhlcmUuCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGUpOiBSZW1vdmUgc3R1Yl9zZWN0aW9uX2NyZWF0ZWQsCglyZWxvY19zZWN0aW9uX2NyZWF0ZWQsIGZpcnN0X2luaXRfc2VjIGFuZCBmaXJzdF9maW5pX3NlYy4gIEFkZAoJc3R1Yl9ncm91cC4KCShlbGYzMl9ocHBhX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUpOiBJbml0IHRvIHN1aXQuCgkoaHBwYV9nZXRfc3R1Yl9lbnRyeSk6IEFkZCBzdXBwb3J0IGZvciBncm91cGluZyBzdHViIHNlY3Rpb25zLgoJKGhwcGFfYWRkX3N0dWIpOiBMaWtld2lzZS4gIFJlbW92ZSBzZWNfY291bnQgcGFyYW0gYW5kIGluaXQvZmluaQoJc2VjdGlvbiBjb2RlLiAgSW5kZXggc3R1YiB2YXJzIGJ5IHNlY3Rpb24tPmlkLgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IExpa2V3aXNlLiAgUmVtb3ZlIGR1cGxpY2F0ZWQgZnVuY3Rpb24KCWV4aXQgcGF0aHMuICBaYXAgYWxsb2NhdGlvbiBvZiBhYm92ZSByZW1vdmVkIHZhcnMuICBSZWZpbmUKCWxpbmstb25jZSB0ZXN0LgoKCSogZWxmMzItaHBwYS5oIChlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBBZGQgb3V0cHV0X2JmZCBwYXJhbS4KCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBMaWtld2lzZS4KCShocHBhX2dldF9zdHViX2VudHJ5KTogUGFzcyBpbiBwb2ludGVyIHRvIGVsZjMyX2hwcGFfbGlua19oYXNoX3RhYmxlCglyYXRoZXIgdGhhbiBwb2ludGVyIHRvIGJmZF9saW5rX2luZm8uCgkoaHBwYV9hZGRfc3R1Yik6IExpa2V3aXNlLgoJKGZpbmFsX2xpbmtfcmVsb2NhdGUpOiBMaWtld2lzZS4KCjIwMDAtMDktMTcgIERhdmlkIEh1Z2dpbnMtRGFpbmVzICA8ZGhkQGxpbnV4Y2FyZS5jb20+CgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IERvbid0IHRyeSB0byBidWlsZCBzdHVicyBmb3IgZGlzY2FyZGVkCglsaW5rLW9uY2Ugc2VjdGlvbnMuCgoyMDAwLTA5LTE2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNoLmMgKEVMRl9NQVhQQUdFU0laRSk6IERlZmluZSB0byAxMjgsIHRvIG1hdGNoCglsZC9lbXVscGFyYW1zL3NoZWxmLnNoLgoKMjAwMC0wOS0xMCAgTWljaGFlbCBTb2tvbG92ICA8bXNva29sb3ZAaXZhbi5IYXJoYW4uT1JHPgoKCSogZWxmMzItbTY4ay5jIChiZmRfbTY4a19lbGYzMl9jcmVhdGVfZW1iZWRkZWRfcmVsb2NzKTogTmV3IGZ1bmN0aW9uLgoJKiBiZmQtaW4uaCAoYmZkX202OGtfZWxmMzJfY3JlYXRlX2VtYmVkZGVkX3JlbG9jcyk6IEFkZCBkZWNsYXJhdGlvbi4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wOS0xNSAgS2VubmV0aCBCbG9jayAgPEtlbm5ldGguQmxvY2tAY29tcGFxLmNvbT4KCgkqIGJmZC9lbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9yZWxheF93aXRoX2xpdHVzZSk6IGxkIHBlcmZvcm1zCglMSVRVU0UgcmVsb2NhdGlvbnMgaW5jb3JyZWN0bHkgaWYgLXJlbGF4IGlzIHNwZWNpZmllZCBvbiB0aGUgbGQKCWNvbW1hbmQgbGluZSBhbmQgdGhlIGRpc3BsYWNlbWVudCBmaWVsZCBvZiB0aGUgbG9hZCBvciBzdG9yZQoJaW5zdHJ1Y3Rpb24gaXMgbm9uLXplcm8uIChQYXRjaCBieSBwYXVsLndpbmFsc2tpQGNvbXBhcS5jb20pCgoyMDAwLTA5LTE1ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItaHBwYS5jIChocHBhX2FkZF9zdHViKTogRG9udCBzZXQgZmlyc3RfaW5pdF9zZWMgYW5kCglmaXJzdF9maW5pX3NlYyBoZXJlLgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IEluc3RlYWQgY29ycmVjdGx5IGZpbmQgdGhlIGZpcnN0IC5pbml0CglhbmQgLmZpbmkgc2VjdGlvbiBoZXJlLgoKMjAwMC0wOS0xNSAgRGF2aWQgSHVnZ2lucy1EYWluZXMgIDxkaGRAbGludXhjYXJlLmNvbT4KCgkqIGVsZjMyLWhwcGEuYyAoY2xvYmJlcl9taWxsaWNvZGVfc3ltYm9scyk6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IENhbGwgaXQuCgoyMDAwLTA5LTE0ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX2xpbmtfaGFzaF9lbnRyeSk6IE1ha2UgcGljX2NhbGwKCXBhY2tlZC4gIEFkZCBwbGFiZWwsIHBsdF9hYnMgcGFja2VkIGJvb2xlYW5zLgoJKGhwcGFfbGlua19oYXNoX25ld2Z1bmMpOiBJbml0IG5ldyBmaWVsZHMuCgkoUExBQkVMX1BMVF9FTlRSWV9TSVpFKTogRGVmaW5lLgoJKGhwcGFfc3R1Yl9uYW1lKTogVXNlIHNpemVfdCBsZW4gdmFycy4KCShocHBhX2FkZF9zdHViKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9idWlsZF9zdHVicyk6IExpa2V3aXNlLgoJKGhwcGFfYnVpbGRfb25lX3N0dWIpOiBLaWxsIHNvbWUgY29tcGlsZXIgd2FybmluZ3MuCgkoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBBbHdheXMgZ2VuZXJhdGUgYSBwbHQgZW50cnkgZm9yIFBMQUJFTHMKCWlmIGR5bmFtaWMgbGlua2luZy4gIE11bmdlIHRoZSBsb2NhbCBwbHQgb2Zmc2V0cyBpbnRvCglsb2NhbF9nb3RfcmVmY291bnRzLiAgU2V0IGgtPnBsYWJlbCBmb3IgYWxsIGdsb2JhbCBQTEFCRUxzLiAgVXNlCglzaXplX3QgbGVuIHZhcnMuICBBZGQgYXNzZXJ0IGZvciBwbGFiZWwgYWRkZW5kLgoJKGVsZjMyX2hwcGFfZ2Nfc3dlZXBfaG9vayk6IFN3ZWVwIGxvY2FsIHBsdCBlbnRyaWVzIHRvby4KCShlbGYzMl9ocHBhX2hpZGVfc3ltYm9sKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2hpZGVfc3ltYm9sKTogRGVmaW5lLgoJKGVsZjMyX2hwcGFfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgdGhyb3cgYXdheSBwbHQgZW50cmllcwoJd2l0aCBoLT5wbGFiZWwgc2V0LiAgRG9uJ3QgbWFrZSBwbHQgZW50cmllcyB0byBoYXZlIGR5bmFtaWMgc3ltcwoJd2hlbiB0aGV5IGhhdmUgYmVlbiBmb3JjZWQgbG9jYWwuICBJZiBwbHQgZW50cnkgaXMgdXNlZCBieSBhCglwbGFiZWwsIG1ha2UgaXQgUExBQkVMX1BMVF9FTlRSWV9TSVpFLgoJKGVsZjMyX2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogU2V0IHBsdF9hYnMgZm9yIGluaXQgZm5zLgoJU2V0IHVwIC5wbHQgb2Zmc2V0cyBmb3IgbG9jYWwgc3ltcy4KCShlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBJbml0aWFsaXNlIHBsdCBlbnRyaWVzIGZvciBsb2NhbAoJc3ltcy4gIExlYXZlIHdlYWsgdW5kZWZpbmVkIHBsYWJlbHMgemVyby4gIE1ha2UgZ2xvYmFsIHBsYWJlbAoJcmVsb2NzIGFnYWluc3QgZnVuY3Rpb24gc3ltYm9sLCBhbmQgbGVhdmUgdGhlIGFkZGVuZCB6ZXJvLgoJVXNlICpBQlMqIERJUjMyIHJlbG9jcyBpbnN0ZWFkIG9mIFNFR1JFTDMyIGZvciBkeW5hbWljIGdvdCByZWxvY3MuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBTZXQgdXAgSVBMVCByZWxvY3MgZm9yCglub24tZHluYW1pYyBzeW1zLiAgSW5pdCBleHRyYSBwbHQgZm9yIHBsYWJlbHMuICBVc2UgKkFCUyogRElSMzIKCXJlbG9jcyBpbnN0ZWFkIG9mIFNFR1JFTDMyIGZvciBkeW5hbWljIGdvdCByZWxvY3MuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IFJlc2VydmUgb25lIG1vcmUgLmdvdCBlbnRyeS4KCShlbGZfYmFja2VuZF9nb3RfaGVhZGVyX3NpemUpOiBBZGp1c3QuCgkoZWxmMzJfaHBwYV9zZXRfZ3ApOiBDYWxjdWxhdGUgYW4gImlkZWFsIiBMVFAuCgoJKiBlbGYzMi1ocHBhLmMgKExPTkdfQlJBTkNIX1ZJQV9QTFQpOiBEZWZpbmUuCgkoaHBwYV90eXBlX29mX3N0dWIpOiBVc2UgaXQgaW5zdGVhZCBvZiAjaWYgMAoJKGhwcGFfZGlzY2FyZF9jb3BpZXMpOiBVc2UgaXQgaGVyZSB0b28uCgkoZWxmMzJfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBBbmQgaGVyZS4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGUpOiBSZW1vdmUgYG9mZnNldCcgZmllbGQuCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogQW5kIGhlcmUuCgkoaHBwYV9idWlsZF9vbmVfc3R1Yik6IEFuZCBoZXJlLiAgSW5zdGVhZCBrZWVwIHRyYWNrIG9mIHN0dWIKCW9mZnNldCB1c2luZyBfcmF3X3NpemUuCgkoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9idWlsZF9zdHVicyk6IExpa2V3aXNlLgoJKGhwcGFfc2l6ZV9vbmVfc3R1Yik6IExpa2V3aXNlLiAgUmVzaXplIHJlbG9jIHNlY3Rpb24gdG9vLgoKCSogZWxmMzItaHBwYS5jIChocHBhX2FkZF9zdHViKTogQ29ycmVjdCBmaXJzdF9pbml0X3NlYyBhbmQKCWZpcnN0X2Zpbmlfc2VjIGhhbmRsaW5nLiAgRG9uJ3Qgc2VhcmNoIGZvciByZWxvYyBzZWN0aW9uIG9yIHNldAoJaHBsaW5rLT5yZWxvY19zZWN0aW9uX2NyZWF0ZWQgaGVyZS4KCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBJbnN0ZWFkIHNlYXJjaCBmb3IgcmVsb2Mgc2VjdGlvbnMsIGFuZAoJc2V0IHJlbG9jX3NlY3Rpb25fY3JlYXRlZCBoZXJlLgoJKGhwcGFfaGFuZGxlX1BJQ19jYWxscyk6IFNldCBFTEZfTElOS19IQVNIX05FRURTX1BMVC4KCShlbGYzMl9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IE1ha2UgYSAucGx0IGVudHJ5IGZvciBEVF9JTklUCglhbmQgRFRfRklOSS4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogU2V0IERUX0lOSVQgYW5kIERUX0ZJTkkuCgoJKiBlbGYzMi1ocHBhLmMgKGhwcGFfYnVpbGRfb25lX3N0dWIpOiBSZXBsYWNlIGBlbGZfaGFzaF90YWJsZSAoaW5mbyknCgl3aXRoIGBocGxpbmstPnJvb3QuJy4KCShlbGYzMl9ocHBhX2NoZWNrX3JlbG9jcyk6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfZ2Nfc3dlZXBfaG9vayk6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogTGlrZXdpc2UuCgkoaHBwYV9oYW5kbGVfUElDX2NhbGxzKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX3NldF9ncCk6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoKCUZyb20gIERhdmlkIEh1Z2dpbnMtRGFpbmVzICA8ZGhkQGxpbnV4Y2FyZS5jb20+CgkqIGVsZjMyLWhwcGEuYyAoaHBwYV90eXBlX29mX3N0dWIpOiBHZW5lcmF0ZSBpbXBvcnQgc3R1YnMgZm9yCglkZWZpbmVkIHdlYWsgc3ltYm9scyBpbiBzaGFyZWQgbGlua3MuCgkoZmluYWxfbGlua19yZWxvY2F0ZSk6IENhbGxzIHRvIGRlZmluZWQgd2VhayBzeW1ib2xzIGluIHNoYXJlZAoJb2JqZWN0cyBtdXN0IGdvIHZpYSBpbXBvcnQgc3R1YnMsIGFzIHRoZSB0YXJnZXQgbWlnaHQgbm90IGJlIGtub3duCglhdCBsaW5rIHRpbWUuCgoyMDAwLTA5LTE0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9ob3d0b190YWJsZSk6IE1vdmVkIFJfU0hfR09UMzIsIFJfU0hfUExUMzIsCglSX1NIX0NPUFksIFJfU0hfR0xPQl9EQVQsIFJfU0hfSk1QX1NMT1QsIFJfU0hfUkVMQVRJVkUsCglSX1NIX0dPVE9GRiwgUl9TSF9HT1RQQykgdG8gdGhlIHJhbmdlIGZyb20gMTYwIHRvIDE2Ny4gIFJlcGxhY2VkCgl0aGUgb3JpZ2luYWwgZW50cmllcyB3aXRoIEVNUFRZX0hPV1RPcywgYW5kIGFkZGVkIG5ldyBvbmVzIHRvIGZpbGwKCWluIHRoZSBnYXAuCgkoc2hfZWxmX2luZm9fdG9faG93dG8pOiBNYWtlIHN1cmUgdGhlIG5ldyBnYXAgaXNuJ3QgdXNlZC4KCShzaF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoKMjAwMC0wOS0xMyAgQW5kZXJzIE5vcmxhbmRlciAgPGFub3JsYW5kQGFjYy51bXUuc2U+CgoJKiBjcHUtbWlwcy5jIChhcmNoX2luZm9fc3RydWN0KTogQWRkIG1pcHM6NEsKCSogYmZkLWluMi5oIChiZmRfbWFjaF9taXBzNEspOiBOZXcgZGVmaW5lLgoJKiBhcmNodXJlcy5jOiBBZGQgYmZkX21hY2hfbWlwczRLIHRvIGNvbW1lbnQuCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogUmV0dXJuCglFX01JUFNfQVJDSF8yIGZvciBiZmRfbWFjaF9taXBzNEsuCgoyMDAwLTA5LTEzICBNYXJjbyBGcmFuemVuIDxtYXJjb2ZAdGh5cm9uLmNvbT4KCgkqIHNvbS5jIChzb21fd3JpdGVfc3ltYm9sX3N0cmluZ3MpOiBEbyBub3QgdXNlZCBmaXhlZCBidWZmZXJzLAoJdXNlIHNpemVfdCBhcyBhIGNvdW50ZXIuCgkoc29tX3dyaXRlX3NwYWNlX3N0cmluZ3MpOiBTaW1pbGFybHkuCgoyMDAwLTA5LTEyICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogZWxmMzItaTg2MC5jIChlbGYzMl9pODYwX3JlbG9jYXRlX3BjMjYpOiBOZXcgZnVuY3Rpb24KCWFuZCBwcm90b3R5cGUuCgkoZWxmMzJfaTg2MF9yZWxvY2F0ZV9zZWN0aW9uKTogSW52b2tlIG5ldyBmdW5jdGlvbiBmcm9tIGhlcmUuCgoyMDAwLTA5LTExICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJKiBlbGYuYyAoX2JmZF9lbGZfbWFrZV9zZWN0aW9uX2Zyb21fc2hkcik6IE1ha2UgZGVidWdfc2VjX25hbWVzCglzdGF0aWMuCgoyMDAwLTA5LTEwICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJKiBjb2ZmLW02OGsuYyAoYmZkX202OGtfY29mZl9jcmVhdGVfZW1iZWRkZWRfcmVsb2NzKTogRW1pdCA4IE5VTHMgZm9yCgl0YXJnZXQgc2VjdGlvbiBuYW1lIGluc3RlYWQgb2YgZHVtcGluZyBjb3JlIHdoZW4gdGhlIHRhcmdldCBzeW1ib2wgaXMKCXVuZGVmaW5lZC4KCjIwMDAtMDktMDkgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogcmlzY2l4LmM6IFJlbW92ZSBERUZVTi4KCjIwMDAtMDktMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBEbyBub3QKCWluaXRpYWxpc2UgZmxhZ3MgaW4gb3V0cHV0IGJmZCBpZiB0aGUgaW5wdXQgYmZkIGlzIHRoZSBkZWZhdWx0CglhcmNoaXRlY3R1cmUgd2l0aCB0aGUgZGVmYXVsdCBmbGFncy4KCjIwMDAtMDktMDggIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogYXJjaGl2ZS5jOiBGaXggZm9ybWF0dGluZy4KCSogY29mZi1hcm0uYzogTGlrZXdpc2UuCgkqIGRvYy9jaGV3LmM6IExpa2V3aXNlLgoKMjAwMC0wOS0wOCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHNlY3Rpb24uYyAoYmZkX2dldF91bmlxdWVfc2VjdGlvbl9uYW1lKTogUHV0IGEgZG90IGJlZm9yZSB0aGUKCW51bWVyaWMgc3VmZml4LgoKMjAwMC0wOS0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBkb2MvY2hldy5jOiBSZW1vdmUgYWxsIHVzZXMgb2YgREVGVU4gYW5kIERFRlVOX1ZPSUQuCgkqIGVsZi5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDktMDcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnLmJmZCAoc2gtKi1saW51eCopOiBBZGRlZC4KCSogY29uZmlndXJlLmluIChiZmRfZWxmMzJfc2hsaW5fdmVjLCBiZmRfZWxmMzJfc2hibGluX3ZlYyk6IE5ldy4KCSogdGFyZ2V0cy5jOiBEZWNsYXJlIHRoZW0uCgkqIGVsZjMyLXNoLWxpbi5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuYW06IENvbXBpbGUgaXQuCgkqIGVsZjMyLXNoLmM6IERvbid0IG92ZXJyaWRlIGRlZmluZXMgZnJvbSBlbGYzMi1zaC1saW4uYy4KCSogY29uZmlndXJlLCBNYWtlZmlsZS5pbjogUmVidWlsdC4KCjIwMDAtMDktMDYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHhjb2ZmbGluay5jICh4Y29mZl9saW5rX2lucHV0X2JmZCk6IEluY2x1ZGUgdGhlIC50b2Nic3MKCXBzZWR1by1zZWN0aW9uIHdoZW4gZGV0ZXJtaW5pbmcgd2hlcmUgdGhlIFRPQyBlbmRzLgoKCSogY29mZi1yczYwMDAuYyAoX2JmZF94Y29mZl9zd2FwX2F1eF9vdXQpOiBVc2UgYmZkX2hfcHV0XzE2IHRvCglvdXRwdXQgeF90dm5keCBhcyBpdCBpcyBvbmx5IHR3byBieXRlcyB3aWRlLgoKCSogY29mZi1yczYwMDAuYyAoeGNvZmZfaG93dG9fdGFibGUpOiBBIG1vZGlmaWFibGUgYnJhbmNoLWFic29sdXRlCglyZWxvYyBpcyAyNiBvciAzMiBiaXRzIHdpZGUuCgoJKiBjb2ZmLXJzNjAwMC5jIChfYmZkX3hjb2ZmX3J0eXBlMmhvd3RvKTogVGhlIGJpdHNpemUgaXMgaXJyZWxldmFudAoJZm9yIHJlbG9jcyB0aGF0IGRvbid0IGNoYW5nZSBhbnl0aGluZy4gIEFsc28gbG9vayBhdCB0aGUgZnVsbAoJNiBiaXRzIG9mIGJpdHNpemUuCgoyMDAwLTA5LTA2ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlnLmJmZCAoYXJtKi0qLXVjbGludXgqKTogTmV3IHRhcmdldC4KCjIwMDAtMDktMDYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlndXJlOiBSZWJ1aWx0IHdpdGggbmV3IGxpYnRvb2wubTQuCgoyMDAwLTA5LTA2ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogc2VjdGlvbi5jIChiZmRfZ2V0X3VuaXF1ZV9zZWN0aW9uX25hbWUpOiBBdm9pZCBjKysgcmVzZXJ2ZWQKCXdvcmQgZm9yIHZhcmlhYmxlIG5hbWUuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDktMDUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoJKiBwby9iZmQucG90OiBSZWdlbmVyYXRlLgoJKiBkb2MvYmZkaW50LnRleGk6IFJlbW92ZSBDVlMgZGF0ZSBzdHJpbmcgLSBpdCBmb2lscyBjb21wYXJlcyB3aXRoCglsb2NhbCB2ZXJzaW9ucy4KCjIwMDAtMDktMDUgIFN0ZXZlbiBKb2huc29uICA8c2Jqb2huc29uQG96ZW1haWwuY29tLmF1PgoKCSogY3B1LXBvd2VycGMuYyAgKGFyY2hfaW5mb19zdHJ1Y3QpOiBBZGRlZCBNUEM4NjAgRmFtaWx5IGVudHJ5LgoKMjAwMC0wOS0wNSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCglTaGFyZWQgbGlicmFyeSBhbmQgUElDIHN1cHBvcnQuCgkqIGVsZjMyLWhwcGEuYyAoUExUX0VOVFJZX1NJWkUpOiBOZXcuCgkoR09UX0VOVFJZX1NJWkUpOiBOZXcuCgkoRUxGX0RZTkFNSUNfSU5URVJQUkVURVIpOiBOZXcuCgkoU1RVQl9TVUZGSVgpOiBEZWZpbmUuCgkoTE9OR19CUkFOQ0hfUElDX0lOX1NITElCKTogRGVmaW5lLgoJKFJFTEFUSVZFX0RZTkFNSUNfUkVMT0NTKTogRGVmaW5lLgoJKGVudW0gZWxmMzJfaHBwYV9zdHViX3R5cGUpOiBOZXcuCgkoc3RydWN0IGVsZjMyX2hwcGFfc3R1Yl9oYXNoX2VudHJ5KTogUmVuYW1lIG9mZnNldCB0bwoJc3R1Yl9vZmZzZXQuICBBZGQgYSBudW1iZXIgb2YgbmV3IGZpZWxkcy4KCShzdHJ1Y3QgZWxmMzJfaHBwYV9saW5rX2hhc2hfZW50cnkpOiBOZXcuCgkoc3RydWN0IGVsZjMyX2hwcGFfbGlua19oYXNoX3RhYmxlKTogQWRkIG51bWVyb3VzIGZpZWxkcy4gIFJlbW92ZQoJZ2xvYmFsX3ZhbHVlLgoJKGVsZjMyX2hwcGFfaGFzaF90YWJsZSk6IFJlbmFtZSB0byBocHBhX2xpbmtfaGFzaF90YWJsZS4KCShlbGYzMl9ocHBhX3N0dWJfaGFzaF9sb29rdXApOiBSZW5hbWUgdG8gaHBwYV9zdHViX2hhc2hfbG9va3VwLgoJKGVsZjMyX2hwcGFfc3R1Yl9oYXNoX25ld2Z1bmMpOiBSZW5hbWUgdG8gc3R1Yl9oYXNoX25ld2Z1bmMuICBJbml0CgluZXcgZmllbGRzLgoJKGhwcGFfbGlua19oYXNoX25ld2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogVXNlIGFib3ZlIGZ1bmN0aW9uLiBJbml0IG5ldwoJZmllbGRzLgoJKGVsZjMyX2hwcGFfc3R1Yl9uYW1lKTogUmVuYW1lIHRvIGhwcGFfc3R1Yl9uYW1lLiAgUGFzcyBpbiByZWxvYwoJaW5zdGVhZCBvZiBhZGRlbmQsIGFuZCByZW1vdmUgc3ltX25hbWUgZnJvbSBhcmdzLiAgRG9uJ3QgdXNlCglzeW1ib2wgbmFtZSBmb3IgbG9jYWwgc3ltcywgaW5zdGVhZCB1c2Ugc3ltIGluZGV4LgoJKGVsZjMyX2hwcGFfc2l6ZV9vZl9zdHViKTogUmVuYW1lIHRvIGhwcGFfdHlwZV9vZl9zdHViLCBhbmQgcmV0dXJuCglzdHViIHR5cGUgcmF0aGVyIHRoYW4gc2l6ZS4gIFBhc3MgaW4gaGFzaCBhbmQgaGFuZGxlIGltcG9ydCBzdHViCgljYXNlLiAgQWxzbyBwYXNzIGluIHJlbG9jIGluc3RlYWQgb2Ygb2Zmc2V0IHNvIHdlIGNhbiBjYWxjdWxhdGUKCVBDUkVMMjJGIGFuZCBQQ1JFTDEyRiBicmFuY2hlcyBwcm9wZXJseS4KCShlbGYzMl9ocHBhX2J1aWxkX29uZV9zdHViKTogUmVuYW1lIHRvIGhwcGFfYnVpbGRfb25lX3N0dWIuICBCdWlsZAoJaW1wb3J0IGFuZCBleHBvcnQgc3R1YnMgdG9vLgoJKGVsZjMyX2hwcGFfc2l6ZV9vbmVfc3R1Yik6IFJlbmFtZSB0byBocHBhX3NpemVfb25lX3N0dWIuICBIYW5kbGUKCWltcG9ydCBhbmQgZXhwb3J0IHN0dWIgc2l6aW5nLgoJKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2hwcGFfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogTmV3IGZ1bmN0aW9uLgoJKGhwcGFfZGlzY2FyZF9jb3BpZXMpOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogRGVmaW5lLgoJKGVsZjMyX2hwcGFfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IERlZmluZS4KCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBTdGFzaCBwYXJhbXMgaW4gbGluayBoYXNoIHRhYmxlLCBhbmQgbW92ZQoJc29tZSBsb2NhbCB2YXJzIGludG8gdGhlIGxpbmsgaGFzaCB0YWJsZSB0b28uICBGb3Igc2hhcmVkIGxpbmtzLAoJdHJ1bmRsZSBvdmVyIGZ1bmN0aW9uIHN5bXMsIGdlbmVyYXRpbmcgZXhwb3J0IHN0dWJzLiAgSGFuZGxlCglQQ1JFTDIyRiBicmFuY2hlcy4gIEJyZWFrIG91dCBzdHViIGNyZWF0aW9uIGNvZGUgZnJvbSBoZXJlLi4KCShocHBhX2FkZF9zdHViKTogLi4gdG8gaGVyZS4gIE5ldyBmdW5jdGlvbi4KCShlbGYzMl9ocHBhX2ZpbmFsX2xpbmspOiBSZW5hbWUgdG8gZWxmMzJfaHBwYV9zZXRfZ3AsIGFuZCBkb24ndAoJY2FsbCB0aGUgYmZkIGxpbmtlci4gIFVzZSBlbGZfZ3AgdG8gcmVjb3JkIGdsb2JhbCBwb2ludGVyLgoJQ2FsY3VsYXRlIGEgdmFsdWUgZnJvbSBzZWN0aW9ucyBpZiAkZ2xvYmFsJCBpcyBtaXNzaW5nLgoJKGJmZF9lbGYzMl9iZmRfZmluYWxfbGluayk6IERlZmluZSBhcyBfYmZkX2VsZjMyX2djX2NvbW1vbl9maW5hbF9saW5rLgoJKGVsZjMyX2hwcGFfZ2NfbWFya19ob29rKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2djX21hcmtfaG9vayk6IERlZmluZS4KCShlbGYzMl9ocHBhX2djX3N3ZWVwX2hvb2spOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfZ2Nfc3dlZXBfaG9vayk6IERlZmluZS4KCShlbGYzMl9ocHBhX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlKTogUmVuYW1lIHRvIGZpbmFsX2xpbmtfcmVsb2NhdGUuCglBZGQgcmVsIHRvIGFyZ3MsIGFuZCByZW1vdmUgaG93dG8sIGlucHV0X2JmZCwgb2Zmc2V0LCBhZGRlbmQsCglzeW1fbmFtZSBhcyB3ZSBjYW4gcmVjYWxjdWxhdGUgdGhlc2UgbG9jYWxseS4gIEhhbmRsZSBjYWxscyB0bwoJZHluYW1pYyBvYmplY3RzLCBleHRyYSBQSUMgcmVsb2NzLCBQQ1JFTDIyRiBicmFuY2hlcy4gIENoYW5nZQoJaGFuZGxpbmcgb2YgdW5kZWZpbmVkIHdlYWsgc3ltcy4gIENoZWNrIHRoYXQgc3R1YnMgYXJlIGluIHJhbmdlLgoJT25seSBsb29rIGZvciBpbXBvcnQgc3R1YnMgb24gUENSRUwxN0YgYW5kIFBDUkVMMjJGIHJlbG9jcy4gIEFkZAoJbWVzc2FnZSBvbiBoaXR0aW5nIGEgRFBSRUwyMUwgcmVsb2MgdGhhdCBuZWVkcyBmaXhpbmcuICBTdWJ0cmFjdAoJb2ZmIFBDIGZvciBQQ1JFTDE0Ri4gIEJyZWFrIG91dCBjb2RlIHRoYXQgZG9lcyBhIHN0dWIgbG9va3VwIGZyb20KCWhlcmUuLgoJKGhwcGFfZ2V0X3N0dWJfZW50cnkpOiAuLnRvIGhlcmUuICBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfaHBwYV9yZWxvY2F0ZV9pbnNuKTogTWVyZ2UgaW50byBmaW5hbF9saW5rX3JlbG9jYXRlLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IEhhbmRsZSBnb3QgYW5kIHBsdCByZWxvY3MsIGR5bmFtaWMKCXJlbG9jcywgZXRjLiBldGMuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IERlZmluZS4KCShlbGZfYmFja2VuZF9maW5hbF93cml0ZV9wcm9jZXNzaW5nKSBEZWZpbmUuCgkoaHBwYV9oYW5kbGVfUElDX2NhbGxzKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2hwcGFfYnVpbGRfc3R1YnMpOiBDYWxsIGl0LiAgUGFzcyBsaW5rX2luZm8gdG8KCWhwcGFfYnVpbGRfb25lX3N0dWIuCgkoZWxmMzJfaHBwYV9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IE5ldyBmdW5jdGlvbgoJdG8gY3JlYXRlIC5wbHQgYW5kIC5nb3QgdGhlbiBzZXQgLnBsdCBmbGFncyBjb3JyZWN0bHkuCgkoZWxmX2JhY2tlbmRfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMpOiBEZWZpbmUuCgkoZWxmMzJfaHBwYV9vYmplY3RfcCk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9vYmplY3RfcCk6IERlZmluZS4KCShlbGYzMl9ocHBhX2VsZl9nZXRfc3ltYm9sX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfZ2V0X3N5bWJvbF90eXBlKTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX2Nhbl9nY19zZWN0aW9ucyk6IERlZmluZS4KCShlbGZfYmFja2VuZF93YW50X2dvdF9wbHQpOiBEZWZpbmUuCgkoZWxmX2JhY2tlbmRfcGx0X2FsaWdubWVudCk6IFNldCB0byAyLgoJKGVsZl9iYWNrZW5kX3BsdF9yZWFkb25seSk6IERlZmluZS4KCShlbGZfYmFja2VuZF93YW50X3BsdF9zeW0pOiBEZWZpbmUuCgkoZWxmX2JhY2tlbmRfZ290X2hlYWRlcl9zaXplKTogUmVzZXJ2ZSBvbmUgZW50cnkuCgoJKiBlbGYzMi1ocHBhLmggKGVsZjMyX2hwcGFfYnVpbGRfc3R1YnMpOiBEb24ndCBwYXNzIHN0dWIgYmZkLgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IFBhc3MgaW4gbXVsdGlfc3Vic3BhY2UuCgkoZWxmMzJfaHBwYV9zZXRfZ3ApOiBEZWNsYXJlLgoKCSogc2VjdGlvbi5jIChTRUNfSEFTX0dPVF9SRUYpOiBEZWZpbmUgbmV3IGZsYWcgZm9yIGFzZWN0aW9uLgoJKGJmZF9nZXRfdW5pcXVlX3NlY3Rpb25fbmFtZSk6IE5ldyBmdW5jdGlvbi4KCSogYmZkX2luMi5oOiBSZWdlbmVyYXRlLgoKCSogZWxmNjQtaHBwYS5jIChlbGY2NF9ocHBhX2NoZWNrX3JlbG9jcyk6IEhhbmRsZSBSX1BBUklTQ19QQ1JFTDEyRi4KCShlbGY2NF9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFJlbW92ZSB0aGUgRklYTUUgYXQgYmZkX3phbGxvYwoJY29tbWVudC4KCglGcm9tICBEYXZpZCBIdWdnaW5zLURhaW5lcyAgPGRoZEBsaW51eGNhcmUuY29tPgoJKiBlbGY2NC1ocHBhLmMgKGVsZjY0X2hwcGFfY2hlY2tfcmVsb2NzKTogRml4IGEgd2FybmluZy4KCShlbGY2NF9ocHBhX21hcmtfZXhwb3J0ZWRfZnVuY3Rpb25zKTogU2V0IGR5bl9oLT5zdF9zaG5keC4KCShlbGY2NF9ocHBhX2xpbmtfb3V0cHV0X3N5bWJvbF9ob29rKTogVGVzdCBkeW5faC0+c3Rfc2huZHggaGFzCgliZWVuIHVwZGF0ZWQgaW4gZmluaXNoX2R5bmFtaWNfc3ltYm9sIGJlZm9yZSBtb2RpZnlpbmcgZnVuY3Rpb24KCXN5bWJvbC4KCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX2hvd3RvX3RhYmxlKTogUmVzdHJ1Y3R1cmUgaW50byBncm91cHMgb2YKCWVpZ2h0IGVudHJpZXMuICBSZXBsYWNlIE5VTEwgd2l0aCBiZmRfZWxmX2dlbmVyaWNfcmVsb2MuICBBZGQKCVJfUEFSSVNDX0dOVV9WVEVOVFJZLCBSX1BBUklTQ19HTlVfVlRJTkhFUklUIGFuZCBSX1BBUklTQ19QQ1JFTDEyRi4KCShfYmZkX2VsZl9ocHBhX2dlbl9yZWxvY190eXBlKTogSGFuZGxlIFJfUEFSSVNDX0dOVV9WVCouICBBZGQgc29tZQoJY29tbWVudHMuICBIYW5kbGUgZm9ybWF0ID09IDEyIGZvciBSX0hQUEFfUENSRUxfQ0FMTC4KCShlbGZfaHBwYV9maW5hbF9saW5rX3JlbG9jYXRlKTogSGFuZGxlIFJfUEFSSVNDX1BDUkVMMTJGLgoJKGVsZl9ocHBhX3JlbG9jYXRlX2luc24pOiBMaWtld2lzZS4gIFJlZm9ybWF0IHNvbWUgY29tbWVudHMuCgkoZWxmX2hwcGFfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IEV4cG9zZSBpdCBmb3IgQVJDSF9TSVpFID09IDMyLgoKCUZyb20gRGF2aWQgSHVnZ2lucy1EYWluZXMgIDxkaGRAbGludXhjYXJlLmNvbT4KCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfaXNfbG9jYWxfbGFiZWxfbmFtZSk6IEFjY2VwdCB0aGUgU3lzVi9FTEYKCXN0eWxlIG9mIGxvY2FsIGxhYmVscyBhcyB3ZWxsLgoKMjAwMC0wOS0wMyAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IHRyeSB0byByZWxvY2F0ZQoJcmVmZXJlbmNlcyB0byB1bmRlZmluZWQgc3ltYm9scyBpbiBkZWJ1Z2dpbmcgc2VjdGlvbnMuCgoyMDAwLTA5LTAyICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiByZWxvYy5jIChCRkRfUkVMT0NfU0hfQ09QWSwgQkZEX1JFTE9DX1NIX0dMT0JfREFULAoJQkZEX1JFTE9DX1NIX0pNUF9TTE9ULCBCRkRfUkVMT0NfU0hfUkVMQVRJVkUsCglCRkRfUkVMT0NfU0hfR09UUEMpOiBNb3ZlIHRoZW0gZnJvbSB0aGUgTUlQUyBzZWN0aW9uIHRvIHRoZSBTSAoJc2VjdGlvbi4KCjIwMDAtMDktMDIgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBlbGYzMi1pODYwLmMgKGJmZF9lbGYzMl9iZmRfaXNfbG9jYWxfbGFiZWxfbmFtZSk6IERlZmluZSBtYWNyby4KCShlbGYzMl9pODYwX2lzX2xvY2FsX2xhYmVsX25hbWUpOiBOZXcgZnVuY3Rpb24gYW5kIHByb3RvdHlwZS4KCjIwMDAtMDktMDIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW46IEluY3JlYXNlIHZlcnNpb24gbnVtYmVyIHRvIDIuMTAuOTEuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogYWNsb2NhbC5tNDogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBwby9iZmQucG90OiBSZWdlbmVyYXRlLgoKMjAwMC0wOS0wMiAgRGFuaWVsIEJlcmxpbiA8ZGJlcmxpbkByZWRoYXQuY29tPgoKCSogZWxmLmMgKF9iZmRfZWxmX21ha2Vfc2VjdGlvbl9mcm9tX3NoZHIpOiBBZGQKCS5nbnUubGlua29iY2Uud2kuIHRvIHRoZSBsaXN0IG9mIGRlYnVnIHNlY3Rpb24gbmFtZXMuCgoyMDAwLTA5LTAyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZHdhcmYyLmMgKGZpbmRfZGVidWdfaW5mbyk6IE5ldyBmdW5jdGlvbjogTG9jYXRlIGEgc2VjdGlvbgoJY29udGFpbmluZyBkd2FyZjIgZGVidWcgaW5mb3JtYXRpb24uCgkoYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZSk6IEZpbmQgYWxsIHNlY3Rpb25zIGNvbnRhaW5pbmcKCWRlYnVnIGluZm9ybWF0aW9uIGFuZCBpbmNsdWRlIHRoZW0gaW4gdGhlIHN0YXNoLgoKMjAwMC0wOS0wMSAgTmlpYmUgWXV0YWthICA8Z25paWJlQG0xN24ub3JnPiwgS2F6IEtvamltYSAgPGtrb2ppbWFAcnIuaWlqNHUub3IuanA+LCBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNoLmMgKFJfU0hfR09UMzIsIFJfU0hfUExUMzIsIFJfU0hfQ09QWSwgUl9TSF9HTE9CX0RBVCwKCVJfU0hfSk1QX1NMT1QsIFJfU0hfUkVMQVRJVkUsIFJfU0hfR09UT0ZGLCBSX1NIX0dPVFBDKTogTmV3LgoJKHNoX3JlbG9jX21hcCk6IEFkZCBuZXcgcmVsb2NzLgoJKHNoX2VsZl9jaGVja19yZWxvY3MsIHNoX2VsZl9saW5rX2hhc2hfbmV3ZnVuYywKCXNoX2VsZl9saW5rX2hhc2hfdGFibGVfY3JlYXRlLCBzaF9lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sLAoJc2hfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucywgc2hfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCwKCXNoX2VsZl9maW5pc2hlX2R5bmFtaWNfc2VjdGlvbnMsIHNoX2VsZl9kaXNjYXJkX2NvcGllcyk6IE5ldwoJZnVuY3Rpb25zLgoJKEVMRl9EWU5BTUlDX0lOVEVSUFJFVEVSLCBQTFRfRU5UUllfU0laRSk6IERlZmluZS4KCShlbGZfc2hfcGx0MF9lbnRyeV9iZSwgZWxmX3NoX3BsdDBfZW50cnlfbGUsCgllbGZfc2hfcGx0X2VudHJ5X2JlLCBlbGZfc2hfcGx0X2VudHJ5X2xlLAoJZWxmX3NoX3BpY19wbHRfZW50cnlfYmUsIGVsZl9zaF9waWNfcGx0X2VudHJ5X2xlKToKCU5ldyBhcnJheSBjb25zdGFudHMuCgkoZWxmX3NoX3BsdDBfZW50cnksIGVsZl9zaF9wbHRfZW50cnksIGVsZl9zaF9waWNfcGx0X2VudHJ5KToKCU5ldyB2YXJpYWJsZXMuCgkoZWxmX3NoX3NpemVvZl9wbHQsIGVsZl9zaF9wbHRfcGx0MF9vZmZzZXQsCgllbGZfc2hfcGx0MF9saW5rZXJfb2Zmc2V0LCBlbGZfc2hfcGx0MF9nb3RpZF9vZmZzZXQsCgllbGZfc2hfcGx0X3RlbXBfb2Zmc2V0LCBlbGZfc2hfcGx0X3N5bWJvbF9vZmZzZXQsCgllbGZfc2hfcGx0X3JlbG9jX29mZnNldCk6IERlZmluZS4KCShlbGZfc2hfcGNyZWxfcmVsb2NzX2NvcGllZCwgZWxmX3NoX2xpbmtfaGFzaF9lbnRyeSwKCWVsZl9zaF9saW5rX2hhc2hfdGFibGUpOiBOZXcgc3RydWN0cy4KCShzaF9lbGZfbGlua19oYXNoX3RyYXZlcnNlLCBzaF9lbGZfaGFzaF90YWJsZSk6IE5ldyBtYWNyb3MuCgkoc2hfZWxmX3JlbG9jYXRlX3NlY3Rpb24sIHNoX2VsZl9jaGVja19yZWxvY3MpOiBIYW5kbGUgbmV3CglyZWxvY2F0aW9uIHR5cGVzLgoJKGVsZl9iYWNrZW5kX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zLAoJYmZkX2VsZjMyX2JmZF9saW5rX2hhc2hfdGFibGVfY3JlYXRlLAoJZWxmX2JhY2tlbmRfYWRqdXN0X2R5bmFtaWNfc3ltYm9sLAoJZWxmX2JhY2tlbmRfc2l6ZV9keW5hbWljX3NlY3Rpb25zLAoJZWxmX2JhY2tlbmRfZmluaXNoX2R5bmFtaWNfc3ltYm9sLAoJZWxmX2JhY2tlbmRfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMsIGVsZl9iYWNrZW5kX3dhbnRfZ290X3BsdCwKCWVsZl9iYWNrZW5kX3BsdF9yZWFkb25seSwgZWxmX2JhY2tlbmRfd2FudF9wbHRfc3ltLAoJZWxmX2JhY2tlbmRfZ290X2hlYWRlcl9zaXplLCBlbGZfYmFja2VuZF9wbHRfaGVhZGVyX3NpemUpOgoJRGVmaW5lLgoJKiByZWxvYy5jIChCRkRfUkVMT0NfU0hfQ09QWSwgQkZEX1JFTE9DX1NIX0dMT0JfREFULAoJQkZEX1JFTE9DX1NIX0pNUF9TTE9ULCBCRkRfUkVMT0NfU0hfUkVMQVRJVkUsIEJGRF9SRUxPQ19TSF9HT1RQQyk6CglOZXcgcmVsb2NzLgoJKiBiZmQtaW4yLmgsIGxpYmJmZC5oOiBSZWJ1aWx0LgoKMjAwMC0wOS0wMSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogUmV2ZXJ0IDIwMDAtMDgtMjcKCWNoYW5nZS4KCjIwMDAtMDgtMzEgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9tZXJnZV9wcml2YXRlX2RhdGEpOiBJZiBpYmZkJ3MgZWxmIGhlYWRlciBmbGFncwoJbm90IGluaXRpYWxpemVkLCBzZXQgdGhlbSB0byBpbmRpY2F0ZSB0aGUgU0gxIGluc3RydWN0aW9uIHNldC4KCjIwMDAtMDgtMzEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogYWNpbmNsdWRlLm00OiBJbmNsdWRlIGxpYnRvb2wgYW5kIGdldHRleHQgbWFjcm9zIGZyb20gdGhlCgl0b3AgbGV2ZWwuCgkqIGFjbG9jYWwubTQsIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDgtMjkgIE1pY2hhZWwgU255ZGVyICA8bXNueWRlckBzZWFkb2cuY3lnbnVzLmNvbT4KCgkqIGVsZi5jOiBFbGltaW5hdGUgcmVmZXJlbmNlcyB0byBfX3NwYXJjdjkgbWFjcm87IHJlcGxhY2Ugd2l0aAoJYXV0b2NvbmYgdmFyaWFibGVzIEhBVkVfUFNJTkZPMzJfVCBldGMuCgkqIGNvbmZpZ3VyZS5pbjogQXV0by1jb25maWd1cmUgSEFWRV9QU0lORk9fMzJfVCwgSEFWRV9QUlBTSU5GTzMyX1QsCglIQVZFX1BTVEFUVVMzMl9ULCBIQVZFX1BSU1RBVFVTMzJfVCwgSEFWRV9QUlNUQVRVUzMyX1RfUFJfV0hPLgoJKiBjb25maWcuaW46IERpdHRvLgoJKiBhY2luY2x1ZGUubTQgKEJGRF9IQVZFX1NZU19QUk9DRlNfVFlQRSkgZGVmaW5lIF9TWVNDQUxMMzIgc28gaXQgY2FuCglkZXRlY3QgdGhlIGFib3ZlIHR5cGVkZWZzLiAgKEJGRF9IQVZFX1NZU19QUk9DRlNfVFlQRV9NRU1CRVIpOiBEaXR0by4KCSogYWNsb2NhbC5tNDogRGl0dG8uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDgtMjcgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2NoZWNrX3JlbG9jcyk6IEtlZXAgaW5mbyBvbiByZWxvY3MgY29waWVkCglmb3IgYW55IHNoYXJlZCBsaW5rLCBub3QganVzdCBzaGFyZWQgLUJzeW1ib2xpYy4KCShlbGZfaTM4Nl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBDYWxsIGVsZl9pMzg2X2Rpc2NhcmRfY29waWVzIG9uCglhbnkgc2hhcmVkIGxpbmssIGFuZCBwYXNzIGxpbmsgaW5mbyB0byBpdC4KCShlbGZfaTM4Nl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVcGRhdGUgY29tbWVudC4KCShlbGZfaTM4Nl9kaXNjYXJkX2NvcGllcyk6IE1vZGlmeSB0byBkaXNjYXJkIHJlbG9jcyBmb3Igc3ltYm9scwoJdGhhdCBoYXZlIGJlZW4gZm9yY2VkIGxvY2FsLgoJKGVsZl9pMzg2X2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IERvbid0IGNvcHkgcmVsb2NzIGZvciBzeW1ib2xzCgl0aGF0IGhhdmUgYmVlbiBmb3JjZWQgbG9jYWwuCgoyMDAwLTA4LTI0ICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PiAmIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IEFsbG93IGNvbW1vbgoJc3ltYm9scyB0byBoYXZlIGFuIGFsaWdubWVudCBvZiAxIGlmIGV4cGxpY2l0bHkgcmVxdWVzdGVkLCBhbmQKCW5vdCBvdmVycmlkZGVuIGJ5IG90aGVyIGRlZmluaXRpb25zLgoKMjAwMC0wOC0yMiAgRG91ZyBLd2FuIDxka3dhbkB0cmFuc21ldGEuY29tPgoKCSogY29mZi13NjUuYyAoQ1JFQVRFX0xJVFRMRV9DT0ZGX1RBUkdFVCk6IEZpeCB0eXBvLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9mbGFncyk6IEFkZCBkZXRlY3Rpb24gb2YgdzY1IGFyY2hpdGVjdHVyZS4KCjIwMDAtMDgtMjIgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZi1iZmQuaCAoZWxmX2xpbmtfaGFzaF90YWJsZSk6IEFkZCBydW5wYXRoLgoKCSogYmZkLWluLmggKGJmZF9lbGZfZ2V0X3J1bnBhdGhfbGlzdCk6IE5ldyBwcm90b3R5cGUuCgkqIGJmZC1pbjIuaDogUmVidWlsdC4KCgkqIGVsZi5jIChfYmZkX2VsZl9saW5rX2hhc2hfdGFibGVfaW5pdCk6IEluaXRpYWxpemUgdGhlCgkicnVucGF0aCIgZmllbGQgdG8gTlVMTC4KCShiZmRfZWxmX2dldF9ydW5wYXRoX2xpc3QpOiBOZXcgZnVuY3Rpb24uCgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IFJlY29yZCBEVF9SUEFUSCBhbmQKCURUX1JVTlBBVEggZW50cmllcy4KCjIwMDAtMDgtMjIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZWxmMzItc2guYyAoc2hfZWxmX3JlbG9jYXRlX3NlY3Rpb24pIFtSX1NIX0lORDEyVywKCVJfU0hfRElSOFdQTiwgUl9TSF9ESVI4V1BaLCBSX1NIX0RJUjhXUExdOiBIYW5kbGUgdGhlbQoJZXhwbGljaXRseS4gIEltcHJvdmUgdmFsaWRhdGlvbiBvZiByX3R5cGUuCgoyMDAwLTA4LTIxICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFplcm8gb3V0IHRoZQoJZHluYW1pYyBhbGxvY2F0ZWQgY29udGVudCBzcGFjZS4gIEFkZCBhIGNvbW1lbnQgdG8gcmVtaW5kIHVzIHRoYXQKCW9uZSBkYXkgdGhpcyBvdWdodCB0byBiZSBmaXhlZC4KCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkqIGVsZjY0LWhwcGEuYyAoZWxmNjRfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjEgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBlbGYzMi1pODYwLmMgKGVsZjMyX2k4NjBfcmVsb2NhdGVfcGMxNik6IEp1c3Qgd3JpdGUgdGhlIGltbWVkaWF0ZQoJZmllbGQgd2l0aCB0aGUgbmV3bHkgcmVsb2NhdGVkIHZhbHVlIGluc3RlYWQgb2YgYWRkaW5nIGl0IHRvIHRoZQoJZXhpc3RpbmcgaW1tZWRpYXRlIGZpZWxkLgoJKGVsZjMyX2k4NjBfcmVsb2NhdGVfc3BsaXRuKTogTGlrZXdpc2UuCgkoZWxmMzJfaTg2MF9yZWxvY2F0ZV9oaWdoYWRqKTogTGlrZXdpc2UuCgoyMDAwLTA4LTE2ICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogZWxmMzItaTg2MC5jIChlbGYzMl9pODYwX3JlbG9jYXRlX3BjMTYpOiBJbXBsZW1lbnRlZCBmdW5jdGlvbiAoaXQKCXdhcyBwcmV2aW91c2x5IGp1c3QgYSBzdHViKS4KCjIwMDAtMDgtMTYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZWxmbGluay5jIChfYmZkX2VsZl9jcmVhdGVfZ290X3NlY3Rpb24pOiBEb24ndCBhYm9ydCgpLgoJRm9ybWF0dGluZyBmaXhlcy4KCShfYmZkX2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoKMjAwMC0wOC0xNiAgQW5kcmV3IE1hY2xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IFNldCByZWxvY2F0aW9uIGFkZHJlc3MKCWZvciB1bmRlZmluZWQgc3ltYm9scyB0byBiZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWN0aW9uLgoKCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgYWxsb2NhdGUKCWZvdXIgZXh0cmEgZW50cmllcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSAucmVsYS5wbHQgc2VjdGlvbi4KCShzcGFyYzY0X2VsZl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBBZGp1c3QgdGhlIG9mZnNldCBpbiB0aGUgLnJlbGEucGx0CglzZWN0aW9uIHRvIGFjY291bnQgZm9yIHRoZSBmb3VyIHJlc2VydmVkIGVudHJpZXMgaW4gdGhlIC5wbHQgc2VjdGlvbi4KCjIwMDAtMDgtMTUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHhjb2ZmbGluay5jIChfYmZkX3BwY194Y29mZl9yZWxvY2F0ZV9zZWN0aW9uKTogQWRkIG9yaSByMCxyMCwwCgl0byB0aGUgbGlzdCBvZiBOT1BzIHdlIHJlY29nbml6ZSBhZnRlciBhIGJyYW5jaC1hbmQtbGluay4KCVVzZSB0aGUgb3JpIE5PUCB3aGVuIG9uZSBpcyBuZWVkZWQuCgoJKiBjb2ZmLXJzNjAwMC5jIChfYmZkX3hjb2ZmX3NsdXJwX2FybWFwKTogRmluaXNoIGltcGxlbWVudGF0aW9uCglmb3IgbGFyZ2UgYXJjaGl2ZXMuCgoyMDAwLTA4LTE0ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBlbGY2NC1pYTY0LmMgKGVsZjY0X2lhNjRfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IEhhbmRsZQoJRUZfSUFfNjRfUkVEVUNFREZQLCBFRl9JQV82NF9DT05TX0dQLCBhbmQgRUZfSUFfNjRfTk9GVU5DREVTQ19DT05TX0dQLgoJKGVsZjY0X2lhNjRfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IExpa2V3aXNlLiAgQWxzbyBoYW5kbGUKCUVGX0lBXzY0X0FCU09MVVRFLgoKMjAwMC0wOC0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfc2V0X21hY2hfZnJvbV9mbGFncyk6IE1ha2UgaXQgc3RhdGljLgoKMjAwMC0wOC0xMCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWk4NjAuYyAoZWxmMzJfaTg2MF9yZWxvY2F0ZV9zZWN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGk4NjBfZmluYWxfbGlua19yZWxvY2F0ZSk6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9pODYwX3JlbG9jYXRlX3NwbGl0bik6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9pODYwX3JlbG9jYXRlX3BjMTYpOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfaTg2MF9yZWxvY2F0ZV9oaWdoYWRqKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2k4NjBfaG93dG8pOiBNaW5vciBhZGp1c3RtZW50cyB0byBzb21lIHJlbG9jYXRpb25zLgoJKGVsZl9pbmZvX3RvX2hvd3RvX3JlbCk6IERlZmluZS4KCShlbGZfYmFja2VuZF9yZWxvY2F0ZV9zZWN0aW9uKTogRGVmaW5lLgoKMjAwMC0wOC0xMCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWFybS5oOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDgtMTAgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogZWxmMzItc2guYyAoc2hfZWxmX3JlbG9jX2xvb3ApOiBNYWtlIExBU1RfU1lNQk9MX1NFQ1RJT04gc3RhdGljLgoKMjAwMC0wOC0wOCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWk4NjAuYyAoZWxmMzJfaTg2MF9ob3d0b190YWJsZSk6IFVwZGF0ZWQgc29tZSBmaWVsZHMuCgoyMDAwLTA4LTA3ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGllZWUuYyAoaWVlZV93cml0ZV9kZWJ1Z19wYXJ0KTogUmV3cml0ZSBhIGNvbW1lbnQuCgkqIGVsZjY0LWlhNjQuYzogRml4IGEgdHlwby4KCjIwMDAtMDgtMDUgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBlbGYzMi1pODYwIChlbGYzMl9pODYwX2hvd3RvX3RhYmxlKTogTmV3IHN0cnVjdHVyZS4KCShsb29rdXBfaG93dG8pOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfaTg2MF9yZWxvY190eXBlX2xvb2t1cCk6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9pODYwX2luZm9fdG9faG93dG9fcmVsYSk6IE5ldyBmdW5jdGlvbi4KCShlbGZfY29kZV90b19ob3d0b19pbmRleCk6IE5ldyBzdHJ1Y3R1cmUuCgkoZWxmX2luZm9fdG9faG93dG8pOiBSZS1kZWZpbmUgYXMgZWxmMzJfaTg2MF9pbmZvX3RvX2hvd3RvX3JlbGEuCgkoYmZkX2VsZjMyX2JmZF9yZWxvY190eXBlX2xvb2t1cCk6IFJlLWRlZmluZSBhcwoJZWxmMzJfaTg2MF9yZWxvY190eXBlX2xvb2t1cC4KCjIwMDAtMDgtMDQgIFJvZG5leSBCcm93biAgPFJvZG5leUJyb3duQHBtc2MuY29tPgoKCSogc29tLmMgKHN0cnVjdCBmaXh1cF9mb3JtYXQpOiBDb25zdGlmeSBgZm9ybWF0Jy4KCShzb21faHBwYV9ob3d0b190YWJsZSk6IFVzZSBTT01fSE9XVE8gbWFjcm8uCgkodHJ5X3ByZXZfZml4dXAsIGhwcGFfc29tX3JlbG9jKTogRGVjb3JhdGUgdW51c2VkIHBhcmFtZXRlci4KCShzb21fYmZkX3JlbG9jX3R5cGVfbG9va3VwKTogTGlrZXdpc2UuCgkoY29tcGFyZV9zdWJzcGFjZXMpOiBSZW1vdmUgdW51c2VkIGBjb3VudDEnLCBgY291bnQyJy4KCShzb21fYmVnaW5fd3JpdGluZyk6IFJlbW92ZSB1bnVzZWQgYHRvdGFsX3JlbG9jX3NpemUnLgoJKHNvbV9iZmRfZGVyaXZlX21pc2Nfc3ltYm9sX2luZm8pOiBEZWNvcmF0ZSB1bnVzZWQgcGFyYW1ldGVyLgoJKHNvbV9wcmludF9zeW1ib2wsIHNvbV9iZmRfaXNfbG9jYWxfbGFiZWxfbmFtZSk6IExpa2V3aXNlLgoJKHNvbV9zZXRfcmVsb2NfaW5mbyk6IENvbnN0aWZ5IGBjcCcuIFJlbW92ZSB1bnVzZWQgYGFkZGVuZCcuCgkoc29tX2ZpbmRfbmVhcmVzdF9saW5lKTogRGVjb3JhdGUgdW51c2VkIHBhcmFtZXRlcihzKS4KCShzb21fc2l6ZW9mX2hlYWRlcnMsIHNvbV9nZXRfc3ltYm9sX2luZm8sIHNvbV93cml0ZV9hcm1hcCk6IExpa2V3aXNlLgoJKHNvbV9iZmRfbGlua19zcGxpdF9zZWN0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTA4LTAzICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogc2VjdGlvbi5jOiBSZXN0b3JlIGJhY2tlZCBvdXQgY29kZS4KCSogZWxmLmM6IFJlc3RvcmUgYmFja2VkIG91dCBjb2RlLgoJKGNvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IEZpeCBidWcgcHJldmVudGluZyBzdGlwcGVkIGR5bmFtaWMKCWJpbmFyaWVzIGZyb20gd29ya2luZy4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wOC0wMyAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogc2VjdGlvbi5jOiBCYWNrIG91dCB0aGUgY2hhbmdlIG1hZGUgYnkgTmljayBDbGlmdG9uCgk8bmlja2NAY3lnbnVzLmNvbT4gb24gMjAwMC0wNy0zMS4gSXQgYnJlYWtzIHN0cmlwcGluZyBkeW5hbWljCgliaW5hcmllcy4KCSogYmZkLWluMi5oOiBMaWtld2lzZS4KCSogZWxmLmM6IExpa2V3aXNlLgoKMjAwMC0wOC0wMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfcmVsb2NfbG9vcCk6IFdhcm5pbmcgcmVtb3ZhbC4KCjIwMDAtMDctMzEgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiByZWxvYy5jIChCRkRfUkVMT0NfODYwXyopOiBOZXcgYmZkIHJlbG9jcyBmb3IgaTg2MC4KCSogYmZkLWluMi5oLCBsaWJiZmQuaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDctMzEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBzZWN0aW9uLmMgKHN0cnVjdCBzZWMpOiBBZGQgbmV3IGJvb2xlYW4gZmllbGQgJ3NlZ21lbnRfbWFyaycuCgkoU1REX1NFQ1RJT04pOiBJbml0aWFsaXNlIG5ldyBmaWVsZCB0byB6ZXJvLgoKCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKCSogZWxmLmMgKGNvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IFJlb3JnYW5pc2Ugc2VjdGlvbiB0byBzZWdtZW50CgltYXBwaW5nIHRvIGNvcGUgd2l0aCBtb3ZlZCBzZWN0aW9ucyByZXF1aXJpbmcgbmV3IHNlZ21lbnRzLAoJYW5kIG92ZXJsYXBwaW5nIHNlZ21lbnRzLgoJKFNFR01FTlRfRU5EKTogTmV3IG1hY3JvOiBSZXR1cm4gdGhlIGVuZCBhZGRyZXNzIG9mIGEgc2VnbWVudC4KCShJU19DT05UQUlORURfQllfVk1BKTogTmV3IG1hY3JvOiBEZXRlcm1pbmUgaWYgYSBzZWdtZW50Cgljb250YWlucyBhIHNlY3Rpb24gYnkgY29tcGFyaW5nIHRoZWlyIFZNQSBhZGRyZXNzZXMuCgkoSVNfQ09OVEFJTkVEX0JZX0xNQSk6IE5ldyBtYWNybzogRGV0ZXJtaW5lIGlmIGEgc2VnbWVudAoJY29udGFpbnMgYSBzZWN0aW9uIGJ5IGNvbXBhcmluZyB0aGVpciBMTUEgYWRkcmVzc2VzLgoJKElOQ0xVREVfU0VDVElPTl9JTl9TRUdNRU5UKTogTmV3IG1hY3JvOiBEZXRlcm1pbmUgaWYgYQoJc2VjdGlvbiBzaG91bGQgYmUgaW5jbHVkZWQgaW4gYSBzZWdtZW50LgoJKFNFR01FTlRfQUZURVJfU0VHTUVOVCk6IE5ldyBtYWNybzogRGV0ZXJtaW5lIGlmIG9uZSBzZWdtZW50Cglmb2xsb3dzIGFub3RoZXIgaW4gbWVtb3J5LgoJKFNFR01FTlRfT1ZFUkxBUFNfU0VHTUVOVCk6IE5ldyBtYWNybzogRGV0ZXJtaW5lIGlmIHR3bwoJc2VnbWVudHMgb3ZlcmxhcC4KCjIwMDAtMDctMjIgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBjcHUtaTg2MC5jOiBBZGRlZCBjb21tZW50cy4KCgkqIGVsZjMyLWk4NjAuYyAoVEFSR0VUX0xJVFRMRV9TWU0pOiBEZWZpbmVkIHRvCgliZmRfZWxmMzJfaTg2MF9saXR0bGVfdmVjLgoJKFRBUkdFVF9MSVRUTEVfTkFNRSk6IERlZmluZWQgdG8gImVsZjMyLWk4NjAtbGl0dGxlIi4KCShFTEZfTUFYUEFHRVNJWkUpOiBDaGFuZ2VkIHRvIDQwOTYuCgoJKiB0YXJnZXRzLmMgKGJmZF9lbGYzMl9pODYwX2xpdHRsZV92ZWMpOiBEZWNsYXJhdGlvbiBvZgoJbmV3IHRhcmdldC4KCShiZmRfdGFyZ2V0X3ZlY3Rvcik6IEFkZGVkIGJmZF9lbGYzMl9pODYwX2xpdHRsZV92ZWMuCgoJKiBjb25maWcuYmZkIChpODYwLXN0YXJkZW50LXN5c3Y0KiwgaTg2MC1zdGFyZGVudC1lbGYqKTogQWRkZWQKCWNvbmZpZyBmb3IgbGl0dGxlIGVuZGlhbiBlbGYzMiBpODYwLgoJKHRhcmdfZGVmdmVjKTogRGVmaW5lIGZvciB0aGUgbmV3IGNvbmZpZyBhYm92ZQoJYXMgImJmZF9lbGYzMl9pODYwX2xpdHRsZV92ZWMiLgoJKHRhcmdfc2VsdmVjcyk6IERlZmluZSBmb3IgdGhlIG5ldyBjb25maWcgYWJvdmUKCWFzICJiZmRfZWxmMzJfaTg2MF92ZWMgYmZkX2VsZjMyX2k4NjBfbGl0dGxlX3ZlYyIKCgkqIGNvbmZpZ3VyZS5pbiAoYmZkX2VsZjMyX2k4NjBfbGl0dGxlX3ZlYyk6IEFkZGVkIHJlY29nbml0aW9uCglvZiBuZXcgdGFyZ2V0IHZlYy4KCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAwLTA3LTI3ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGZsaW5rLmggKGVsZl9tZXJnZV9zeW1ib2wpOiBUYWtlIG9uZSBtb3JlIGFyZ3VtZW50LAoJZHRfbmVlZGVkLCB0byBpbmRpY2F0ZSBpZiB0aGUgc3ltYm9sIGNvbWVzIGZyb20gYSBEVF9ORUVERUQKCWVudHJ5LiBEb24ndCBvdmVyaWRlIHRoZSBleGlzdGluZyB3ZWFrIGRlZmluaXRpb24gaWYgZHRfbmVlZGVkCglpcyB0cnVlLgoJKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IFBhc3MgZHRfbmVlZGVkIHRvCgllbGZfbWVyZ2Vfc3ltYm9sICgpLgoKMjAwMC0wNy0yNyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfc2l6ZV9yZWxvY19zZWN0aW9uKTogWmVyb2VzIHRoZSBzZWN0aW9uJ3MKCWFsbG9jYXRlZCBjb250ZW50cy4KCjIwMDAtMDctMjUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5ob3N0ICgqLSotYWl4Kik6IEFJWCBoYXMgJ2xvbmcgbG9uZycgYWx3YXlzLgoKCSogY29mZi1yczYwMDAuYyAoeGNvZmZfd3JpdGVfb25lX2FybWFwX2JpZyk6IE5ldyBwcm9jZWR1cmUuCgkoeGNvZmZfd3JpdGVfYXJtYXBfYmlnKTogV3JpdGUgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBhcm1hcHMuCgkoeGNvZmZfd3JpdGVfYXJjaGl2ZV9jb250ZW50c19iaWcpOiBEb24ndCB1cGRhdGUgdGhlIG9mZnNldAoJb2YgdGhlIHN5bWJvbCB0YWJsZSwgeGNvZmZfd3JpdGVfYXJtYXAgd2lsbCBkbyBpdC4KCjIwMDAtMDctMjMgIFVsZiBDYXJsc3NvbiAgPHVsZmNAZW5nci5zZ2kuY29tPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2NoZWNrX3JlbG9jcyk6IFVzZSBhYmZkIGluc3RlYWQKCW9mIGR5bm9iaiBmb3IgU0dJX0NPTVBBVCBjaGVja3MuCgoyMDAwLTA3LTIxICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJKiBjb2ZmLW02OGsuYyAoYmZkX202OGtfY29mZl9jcmVhdGVfZW1iZWRkZWRfcmVsb2NzKTogTmV3IGZ1bmN0aW9uLgoJKiBiZmQtaW4uaCAoYmZkX202OGtfY29mZl9jcmVhdGVfZW1iZWRkZWRfcmVsb2NzKTogQWRkIGRlY2xhcmF0aW9uLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoyMDAwLTA3LTIxICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2NoZWNrX3JlbG9jcyk6IERldGVjdCBvdXQgb2YKCXJhbmdlIHN5bWJvbCBpbmRpY2VzIGluIHJlbG9jcyBhbmQgaXNzdWUgYW4gZXJyb3IgbWVzc2FnZS4KCjIwMDAtMDctMjAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoTkFNRShiZmRfZWxmLHNpemVfZHluYW1pY19zZWN0aW9ucykpOiBEb24ndCBjaGVjawoJaW5mby0+bmV3X2R0YWdzIHdoZW4gc2V0dGluZyBEVF9GTEFHU18xLiBJdCB3aWxsIG9ubHkgYmUgc2V0CglieSB0aGUgbmV3IGxpbmtlciBvcHRpb25zLiBJdCBzaG91bGRuJ3QgYnJlYWsgYW55dGhpbmcuCgoyMDAwLTA3LTIwICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGZsaW5rLmggKE5BTUUoYmZkX2VsZixzaXplX2R5bmFtaWNfc2VjdGlvbnMpKTogU2V0IERUX0ZMQUdTXzEKCW9ubHkgaWYgaW5mby0+bmV3X2R0YWdzIGlzIHRydWUuCgoyMDAwLTA3LTIwICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGZsaW5rLmggKE5BTUUoYmZkX2VsZixzaXplX2R5bmFtaWNfc2VjdGlvbnMpKTogU2V0CglEVF9SVU5QQVRIIGFuZCBEVF9GTEFHUyBvbmx5IGlmIGluZm8tPm5ld19kdGFncyBpcyB0cnVlLgoKMjAwMC0wNy0yMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBNYWtlZmlsZS5hbSAoQUxMX01BQ0hJTkVTKTogQWRkIGNwdS1jcmlzLmxvLgoJKEFMTF9NQUNISU5FU19DRklMRVMpOiBBZGQgY3B1LWNyaXMuYy4KCShCRkQzMl9CQUNLRU5EUyk6IEFkZCBhb3V0LWNyaXMubG8gYW5kIGVsZjMyLWNyaXMubG8uCgkoQkZEMzJfQkFDS0VORFNfQ0ZJTEVTKTogQWRkIGFvdXQtY3Jpcy5jIGFuZCBlbGYzMi1jcmlzLmMuCgkoY3B1LWNyaXMubG8sIGFvdXQtY3Jpcy5sbywgZWxmMzItY3Jpcy5sbyk6IE5ldyBydWxlcy4KCSogTWFrZWZpbGUuaW46IFJlYnVpbGQuCgkqIGFjbG9jYWwubTQ6IFJlYnVpbGQuCgkqIGFvdXR4LmggKE5BTUUoYW91dCxtYWNoaW5lX3R5cGUpKTogQWRkIGNhc2UgZm9yIGJmZF9hcmNoX2NyaXMuCgkqIGFyY2h1cmVzLmMgKGVudW0gYmZkX2FyY2hpdGVjdHVyZSk6IEFkZCBiZmRfYXJjaF9jcmlzLgoJKGJmZF9jcmlzX2FyY2gpOiBEZWNsYXJlLgoJKGJmZF9hcmNodXJlc19saXN0KTogQWRkIGJmZF9jcmlzX2FyY2guCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCSogY29uZmlnLmJmZDogKGNyaXMtKi0qKTogTmV3IHRhcmdldC4KCSogY29uZmlndXJlLmluIChiZmRfZWxmMzJfY3Jpc192ZWMsIGNyaXNfYW91dF92ZWMpOiBOZXcgdmVjdG9ycy4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoJKiBlbGYuYyAocHJlcF9oZWFkZXJzKTogQWRkIGJmZF9hcmNoX2NyaXMuCgkqIGxpYmJmZC5oOiBSZWJ1aWxkLgoJKiBsaWJhb3V0LmggKGVudW0gbWFjaGluZV90eXBlKTogQWRkIE1fQ1JJUy4KCSogcmVsb2MuYzogQWRkIENSSVMgcmVsb2NhdGlvbnMuCgkqIHRhcmdldHMuYyAoYmZkX2VsZjMyX2NyaXNfdmVjLCBjcmlzX2FvdXRfdmVjKTogRGVjbGFyZS4KCShiZmRfdGFyZ2V0X3ZlY3QpOiBBZGQgYmZkX2VsZjMyX2NyaXNfdmVjIGFuZCBjcmlzX2FvdXRfdmVjLgoJKiBjcHUtY3Jpcy5jLCBhb3V0LWNyaXMuYywgZWxmMzItY3Jpcy5jOiBOZXcgZmlsZXMuCgkqIHBvL1BPVEZJTEVTLmluLCBwby9iZmQucG90OiBSZWdlbmVyYXRlLgoKMjAwMC0wNy0xOSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBBbHNvIHNldAoJREZfVEVYVFJFTCBpZiBEVF9URVhUUkVMIGlzIHNldC4KCSogZWxmMzItaTM3MC5jIChpMzcwX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGY2NC1ocHBhLmMgKGVsZjY0X2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkqIGVsZjY0LWlhNjQuYyAoZWxmNjRfaWE2NF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgoJKiBlbGZsaW5rLmggKE5BTUUoYmZkX2VsZixzaXplX2R5bmFtaWNfc2VjdGlvbnMpKTogQWxzbwoJc2V0IERGX1NZTUJPTElDIGZvciBzeW1ib2xpYyBsaW5rLiBBbHNvIHNldCBEVF9SVU5QQVRIIGlmCglEVF9SUEFUSCBpcyBzZXQuCglTZXQgdGhlIERUX0ZMQUdTIGFuZCBEVF9GTEFHU18xIGVudHJpZXMgaWYgbmVjZXNzYXJ5LgoKMjAwMC0wNy0xOSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogYmZkLWluLmggKGJmZF9lbGZfc2V0X2R0X25lZWRlZF9zb25hbWUpOiBOZXcuCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCgkqIGVsZi1iZmQuaCAoZWxmX29ial90ZGF0YSk6IEFkZCBkdF9zb25hbWUuCgkoZWxmX2R0X3NvbmFtZSk6IE5ldy4KCgkqIGVsZi5jIChiZmRfZWxmX3NldF9kdF9uZWVkZWRfc29uYW1lKTogTmV3LgoKCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBBZGQgdGhlIERUX05FRURFRAoJZW50cnkgaWYgdGhlIHNoYXJlZCBvYmplY3QgbG9hZGVkIGJ5IERUX05FRURFRCBpcyB1c2VkIHRvCglyZXNvbHZlIHRoZSByZWZlcmVuY2UgaW4gYSByZWd1bGFyIG9iamVjdC4KCjIwMDAtMDctMTkgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZi5jIChfYmZkX2VsZl9wcmludF9wcml2YXRlX2JmZF9kYXRhKTogSGFuZGxlIERUX0NPTkZJRywKCURUX0RFUEFVRElUIGFuZCBEVF9BVURJVCBhcyBzdHJpbmdzLgoKMjAwMC0wNy0xOSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGZvcm1hdC5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDctMTkgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZi5jIChfYmZkX2VsZl9wcmludF9wcml2YXRlX2JmZF9kYXRhKTogRml4IERUX0NIRUNLU1VNLgoKMjAwMC0wNy0xOSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmLmMgKF9iZmRfZWxmX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBIYW5kbGUgRFRfQklORF9OT1csCglEVF9JTklUX0FSUkFZLCBEVF9GSU5JX0FSUkFZLCBEVF9JTklUX0FSUkFZU1osIERUX0ZJTklfQVJSQVlTWiwKCURUX1JVTlBBVEgsIERUX0ZMQUdTLCBEVF9QUkVJTklUX0FSUkFZLCBEVF9QUkVJTklUX0FSUkFZU1osCglEVF9QTFRQQURTWiwgRFRfTU9WRUVOVCwgRFRfTU9WRVNaLCBEVF9GRUFUVVJFLCBEVF9QT1NGTEFHXzEsCglEVF9TWU1JTlNaLCBEVF9TWU1JTkVOVCwgRFRfQ09ORklHLCBEVF9ERVBBVURJVCwgRFRfQVVESVQsCglEVF9QTFRQQUQsIERUX01PVkVUQUIsIERUX1NZTUlORk8sIERUX1JFTEFDT1VOVCwgRFRfUkVMQ09VTlQsCglEVF9GTEFHU18xLCBEVF9VU0VEIGFuZCBEVF9DSEVDS1NVTS4KCjIwMDAtMDctMTggIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGVsZi5jIChiZmRfZWxmX2dldF9zaWduX2V4dGVuZF92bWEsIGJmZF9lbGZfZ2V0X2FyY2hfc2l6ZSk6IE1vdmUKCXJlbmFtZWQgZnVuY3Rpb25zIGZyb20gaGVyZS4uLgoJKGFzc2lnbl9zZWN0aW9uX251bWJlcnMpOiBVc2UgcmVuYW1lZCBmdW5jdGlvbnMuCgkocHJlcF9oZWFkZXJzKTogVXNlIHJlbmFtZWQgZnVuY3Rpb25zLgoKCSogYmZkLmMgKGJmZF9nZXRfc2lnbl9leHRlbmRfdm1hLCBiZmRfZ2V0X2FyY2hfc2l6ZSk6IC4uLlRvIGhlcmUuCgkqIGJmZC1pbi5oIChiZmRfZ2V0X3NpZ25fZXh0ZW5kX3ZtYSwgYmZkX2dldF9hcmNoX3NpemUpOiBVcGRhdGUuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDctMTggIFVsZiBDYXJsc3NvbiAgPHVsZmNAZW5nci5zZ2kuY29tPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IEFkZAoJcGFyZW50aGVzaXMgaW4gaWYgc3RhdGVtZW50LgoKMjAwMC0wNy0xNyAgS291bmRpbnlhIEsgIDxra0BkZGVvcmcuc29mdC5uZXQ+CgoJRW5hYmxlIHRoZSBzdXBwb3J0IGZvciBUcmFkaXRpb25hbCBNSVBTLgoJKiBlbGYzMi1taXBzLmMgKElSSVhfQ09NUEFUKTogUmVjb2duaXplIGJmZF9lbGYzMl90cmFkYmlnbWlwc192ZWNhbmQKCXJldHVybiBpY3Rfbm9uZSBhcHByb3ByaWF0ZWx5IGZvciB0cmFkaXRpb25hbCBtaXBzIHRhcmdldHMuCgkoU1RVQl9MVyk6IENoYW5nZSAweDhmOTk4MDAwIHRvIDB4OGY5OTgwMTAgZm9yIHRyYWRpdGlvbmFsIG1pcHMuCgkoU1RVQl9NT1ZFKTogQ29uZGl0aW9uYWxpemUgZm9yIHRyYWRpdG9uYWwgbWlwcy4KCShTVFVCX0xJMTYpOiBMaWtld2lzZS4KCShfYmZkX21pcHNfZWxmX21vZGlmeV9zZWdtZW50X21hcCk6IENvbmRpdGlvbmFsaXplIHRvIGF2b2lkIG1ha2luZwoJcm9vbSBmb3IgUlRQUk9DIGhlYWRlci4KCShfYmZkX21pcHNfZWxmX21vZGlmeV9zZWdtZW50X21hcCk6IEZvciBhIG5vcm1hbCBtaXBzIGV4ZWN1dGFibGUgc2V0Cgl0aGUgcGVybWlzc2lvbiBmb3IgdGhlIFBUX0RZTkFNSUMgYXMgcmVhZCwgd3JpdGUgYW5kIGV4ZWN1dGUuCgkobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBDaGVjayBmb3IgdGhlIHN5bWJvbCBfRFlOQU1JQ19MSU5LSU5HCglmb3IgdHJhZGl0b25hbCBtaXBzLgoJKF9iZmRfbWlwc19lbGZfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMpOiBBZGQgdGhlIHN5bWJvbAoJX0RZTkFNSUNfTElOS0lORyBmb3IgdHJhZGl0b25hbCBtaXBzLgoJKF9iZmRfbWlwc19lbGZfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMpOiBBZGQgdGhlIHN5bWJvbCBfX1JMRF9NQVAKCWluIGNhc2Ugb2YgdHJhZGl0b25hbCBtaXBzLgoJKF9iZmRfbWlwc19lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogQ3JlYXRlIGEgc3R1YiBvbmx5IGlmIGEgUExUCgllbnRyeSBpcyByZXF1aXJlZC4gRm9yIGEgZnVuY3Rpb24gaWYgUExUIGlzIG5vdCByZXF1aXJlZCB0aGVuIHNldCB0aGUKCWNvcnJlc3BvbmRpbmcgaGFzaCB0YWJsZSBlbnRyeSB0byAwLgoJKF9iZmRfbWlwc19lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogQWRkIERUX0RFQlVHIGVudHJ5IGZvcgoJdHJhZGl0b25hbCBtaXBzLgoJKF9iZmRfbWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogZm9yIGEgdW5kZWZpbmVkIHN5bWJvbCBpbiBhCglzaGFyZWQgb2JqZWN0IHNldCB0aGUgdmFsdWUgdG8gMC4KCShfYmZkX21pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IENoZWNrIGZvciB0aGUgc3ltYm9sCglfRFlOQU1JQ19MSU5LSU5HIGZvciB0cmFkaXRvbmFsIG1pcHMuCgkoX2JmZF9taXBzX2VsZl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBDaGVjayBmb3IgdGhlIHN5bWJvbCBfX1JMRF9NQVAKCWZvciB0cmFkaXRvbmFsIG1pcHMuCgoyMDAwLTA3LTE1ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBhb3V0eC5oICh0cmFuc2xhdGVfdG9fbmF0aXZlX3N5bV9mbGFncyk6IEhhbmRsZSBCU0ZfTE9DQUwuCgoyMDAwLTA3LTEyICBDaGFybGVzIFdpbHNvbiAgPGN3aWxzb25AZWNlLmdhdGVjaC5lZHU+CgoJKiBsaWJiZmQuYyAoYmZkX3NlZWspOiBmaXggJ3NlZWsgYmV5b25kIEVPRicgZXJyb3Igd2hlbiB3cml0aW5nCglvdXQgYSBzdHJ1Y3R1cmUgdGhhdCBpcyBCRkRfSU5fTUVNT1JZLgoKMjAwMC0wNy0xMSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjY0LWhwcGEuYyAoZ2V0X2R5bl9uYW1lKTogUGFzcyBpbiBzZWN0aW9uIHBvaW50ZXIgaW5zdGVhZCBvZgoJYmZkIHBvaW50ZXIuICBQcmludCBzZWN0aW9uIGlkIGluc3RlYWQgb2YgYmZkIHBvaW50ZXIgZm9yIGxvY2FsCglzeW1zLiAgUHJlZml4IGFkZGVuZCB3aXRoIGArJyBmb3IgZ2xvYmFsIHN5bXMgYXMgd2VsbCBhcyBsb2NhbC4KCUNvcnJlY3QgY2FsY3VsYXRpb24gb2YgbmFtZSBjb21wb25lbnQgbGVuZ3Rocy4KCShlbGY2NF9ocHBhX2NoZWNrX3JlbG9jcyk6IFVwZGF0ZSBjYWxsIHRvIGdldF9keW5fbmFtZS4KCglGcm9tIERhdmlkIEh1Z2dpbnMtRGFpbmVzICA8ZGhkQGxpbnV4Y2FyZS5jb20+CgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBVcGRhdGUgY2FsbHMgaGVyZSB0b28uCgkqIGVsZjY0LWhwcGEuYyAoZWxmNjRfaHBwYV9jaGVja19yZWxvY3MpOiBGaXggc29tZSB3YXJuaW5ncy4KCShlbGY2NF9ocHBhX21vZGlmeV9zZWdtZW50X21hcCk6IExpa2V3aXNlLgoKMjAwMC0wNy0xMSAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogZWxmLmMgKGJmZF9lbGZfZ2V0X3NpZ25fZXh0ZW5kX3ZtYSk6IFJldHVybiB0ZW5kZW5jeSBvZiBWTUEKCWFkZHJlc3NlcyB0byBiZSAibmF0dXJhbGx5IiBzaWduIGV4dGVuZGVkLiAgUmV0dXJuIC0xIGlmIHVua25vd24uCgkqIGJmZC1pbi5oIChiZmRfZWxmX2dldF9zaWduX2V4dGVuZF92bWEpOiBBZGQgZGVjbGFyYXRpb24uCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDctMTEgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGVjb2Zmc3dhcC5oIChlY29mZl9nZXRfb2ZmLCBlY29mZl9wdXRfb2ZmKTogQWRkIEVDT0ZGX1NJR05FRF8zMgoJYW5kIEVDT0ZfU0lHTkVEXzY0IHRvIGxpc3Qgd2F5cyB0byBleHRyYWN0IGFuIG9mZnNldC4KCShlY29mZl9zd2FwX2Zkcl9pbiwgZWNvZmZfc3dhcF9mZHJfb3V0LCBlY29mZl9zd2FwX3Bkcl9pbiwKCWVjb2ZmX3N3YXBfcGRyX291dCwgZWNvZmZfc3dhcF9leHRfaW4sIGVjb2ZmX3N3YXBfZXh0X291dCk6CglVcGRhdGUuCgkqIGVsZjY0LW1pcHMuYyAoRUNPRkZfU0lHTkVEXzY0KTogRGVmaW5lIGluc3RlYWQgb2YgRUNPRkZfNjQuCgkqIGVsZjMyLW1pcHMuYyAoRUNPRkZfU0lHTkVEXzMyKTogRGVmaW5lIGluc3RlYWQgb2YgRUNPRkZfMzIuCgoyMDAwLTA3LTExICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBlbGZjb2RlLmggKGVsZl9vYmplY3RfcCk6IFVzZSBiZmRfc2V0X3N0YXJ0X2FkZHJlc3MgYW5kIG5vdAoJYmZkX2dldF9zdGFydF9hZGRyZXNzLgoJKGVsZl9zd2FwX2VoZHJfaW4pOiBTaWduIGV4dGVuZCBlX2VudHJ5IHdoZW4gYXBwbGljYWJsZS4KCShlbGZfc3dhcF9laGRyX291dCk6IERpdHRvLgoKMjAwMC0wNy0xMCAgQWxleGFuZGVyIEFnYW5pY2hldiAgPEFBZ2FuaWNoZXZAaHlwZXJjb20uY29tPgoKCSogYXJjaHVyZXMuYyAoYmZkX2RlZmF1bHRfc2Nhbik6IEFkZCBzZXQgb2YgYmZkX21hY2hfIGNhc2VzIGZvcgoJY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGJpbnV0aWxzLgoKMjAwMC0wNy0xMCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHNlY3Rpb24uYyAoYmZkX21ha2Vfc2VjdGlvbl9hbnl3YXkpOiBTdGFydCBzZWN0aW9uX2lkIGF0IDB4MTAuCgkoU1REX1NFQ1RJT04pOiBBdm9pZCBuZWdhdGl2ZSBpZHMsIGluc3RlYWQgdXNlIDAgdG8gMy4KCglGcm9tIFJ5YW4gQnJhZGV0aWNoICA8cmJyYWRldGljaEB1c3dlc3QubmV0PgoJKiBkd2FyZjEuYyAocGFyc2VfZGllKTogQ3VyZSBzaWduZWQvdW5zaWduZWQgY2hhciB3YXJuaW5ncy4KCShwYXJzZV9saW5lX3RhYmxlKTogRGl0dG8uCgkoX2JmZF9kd2FyZjFfZmluZF9uZWFyZXN0X2xpbmUpOiBEaXR0by4KCSogc3ltcy5jIChjbXBpbmRleGVudHJ5KTogUmVtb3ZlIGV4dHJhIGAqJyBmcm9tIHBhcmFtcy4KCjIwMDAtMDctMDkgIEtvdW5kaW55YSBLICA8a2tAZGRlb3JnLnNvZnQubmV0PgoKCSogZWxmMzItbWlwcy5jIChzb3J0X2R5bmFtaWNfcmVsb2NzKTogTmV3IEZ1bmN0aW9uLgoJKF9iZmRfbWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBDYWxsIHNvcnRfZHluYW1pY19yZWxvY3MKCXZpYSBxc29ydCB0byBzb3J0IHRoZSBkeW5hbWljIHJlbG9jYXRpb25zIGluIGluY3JlYXNpbmcgcl9zeW1uZHgKCXZhbHVlLgoKMjAwMC0wNy0wOSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjY0LWhwcGEuYyAoZWxmNjRfaHBwYV9keW5faGFzaF90YWJsZV9pbml0KTogQWRkCglBVFRSSUJVVEVfVU5VU0VEIHRvIHVudXNlZCBhcmdzLgoJKGdldF9vcGQpOiBMaWtld2lzZS4KCShnZXRfcGx0KTogTGlrZXdpc2UuCgkoZ2V0X2RsdCk6IExpa2V3aXNlLgoJKGdldF9zdHViKTogTGlrZXdpc2UuCgkoZWxmNjRfaHBwYV9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCShlbGY2NF9ocHBhX2xpbmtfb3V0cHV0X3N5bWJvbF9ob29rKTogTGlrZXdpc2UuCgkoZWxmNjRfaHBwYV9jaGVja19yZWxvY3MpOiBEZWxldGUgdW51c2VkIHZhci4KCShlbGY2NF9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKGVsZjY0X2hwcGFfZmluYWxpemVfb3BkKTogTGlrZXdpc2UuCgkoZWxmNjRfaHBwYV9maW5hbGl6ZV9keW5yZWxvYyk6IExpa2V3aXNlLgoJKGVsZjY0X2hwcGFfbW9kaWZ5X3NlZ21lbnRfbWFwKTogTGlrZXdpc2UuCgkoZWxmNjRfaHBwYV9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IEFkZAoJQVRUUklCVVRFX1VOVVNFRCB0byB1bnVzZWQgYXJncy4KCShlbGZfaHBwYV9maW5hbF9saW5rX3JlbG9jYXRlKTogTGlrZXdpc2UuCgkoZWxmX2hwcGFfcmVjb3JkX3NlZ21lbnRfYWRkcnMpOiBBZGQgcGFyZXRoZXNlcy4KCShlbGZfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogQ29uc3RpZnkgZHluX25hbWUuCgoJRnJvbSAgRGF2aWQgSHVnZ2lucy1EYWluZXMgIDxkaGRAbGludXhjYXJlLmNvbT4KCSogY29uZmlnLmJmZDogQWRkIGhwcGEqNjQqLSotbGludXgtZ251IDY0LWJpdCB0YXJnZXQsIGFuZAoJcmVhcnJhbmdlIGNhc2Ugc3RhdGVtZW50IHNvIHRoYXQgaXQgZ2V0cyBwcmVmZXJyZWQgdG8gMzItYml0IG9uZXMuCgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBVc2UKCWFzZWN0aW9uLT5pZCBpbnN0ZWFkIG9mIGFkZHJlc3Mgb2YgYXNlY3Rpb24gc3RydWN0dXJlLgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IExpa2V3aXNlLgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBVc2UganVzdCBvbmUgc3R1YiBzZWN0aW9uCglmb3IgLmluaXQqIGFuZCAuZmluaSouCgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBNYXNrIHBvaW50ZXJzCglhbmQgYWRkZW5kcyB1c2VkIGluIHN0dWIgbmFtZXMgdG8gMzIgYml0cy4KCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBMaWtld2lzZS4KCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBEb24ndCBzdW0gYWRkZW5kCgl0d2ljZSBmb3IgUl9QQVJJU0NfR1BSRUw2NC4gIFVzZSBiZmRfcHV0XzMyIGZvciBSX1BBUklTQ19QQ1JFTDMyLAoJbm90IGJmZF9wdXRfNjQuICBGaXggbWlub3IgY29tbWVudCB0eXBvIGFuZCBmb3JtYXR0aW5nLgoKCUNoYW5nZXMgdG8gY3JlYXRlIG11bHRpcGxlIGxpbmtlciBzdHVicywgcG9zaXRpb25lZCBpbW1lZGlhdGVseQoJYmVmb3JlIHRoZSBzZWN0aW9uIHdoZXJlIHRoZXkgYXJlIHJlcXVpcmVkLgoJKiBlbGYzMi1ocHBhLmM6IERvbid0IGluY2x1ZGUgaHBwYV9zdHVicy5oLgoJKGVsZjMyX2hwcGFfc3R1Yl9oYXNoX2VudHJ5KTogQWRkIGEgcG9pbnRlciB0byB0aGUgc3R1YiBzZWN0aW9uLgoJKGVsZjMyX2hwcGFfc3R1Yl9oYXNoX3RhYmxlKTogRGVsZXRlLgoJKGVsZjMyX2hwcGFfbGlua19oYXNoX2VudHJ5KTogRGVsZXRlLgoJKGVsZjMyX2hwcGFfbGlua19oYXNoX3RhYmxlKTogVXNlIHBsYWluIGJmZF9oYXNoX3RhYmxlIGZvcgoJc3R1Yl9oYXNoX3RhYmxlLCBhbmQgc3RvcmUgdGhlIHN0cnVjdCBoZXJlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KCURlbGV0ZSBvdXRwdXRfc3ltYm9sX2NvdW50LiAgQWRkIG9mZnNldCBhcnJheS4gIENoYW5nZQoJZ2xvYmFsX3ZhbHVlIHRvIGEgYmZkX3ZtYS4KCShlbGYzMl9ocHBhX3N0dWJfaGFzaF9sb29rdXApOiBVc2UgdGFibGUgaW5zdGVhZCBvZiB0YWJsZS0+cm9vdC4KCShlbGYzMl9ocHBhX3N0dWJfaGFzaF90cmF2ZXJzZSk6IERlbGV0ZS4KCShlbGYzMl9ocHBhX25hbWVfb2Zfc3R1Yik6IERlbGV0ZS4KCShlbGYzMl9ocHBhX2xpbmtfaGFzaF9sb29rdXApOiBEZWxldGUuCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfdHJhdmVyc2UpOiBEZWxldGUuCgkoZWxmMzJfaHBwYV9zdHViX2hhc2hfdGFibGVfaW5pdCk6IERlbGV0ZS4KCShlbGYzMl9ocHBhX3NpemVfb2Zfc3R1Yik6IFBhc3MgaW5wdXQgc2VjdGlvbiBhbmQgb2Zmc2V0IHJhdGhlcgoJdGhhbiBsb2NhdGlvbiBhbmQgY2FsY3VsYXRlIGxvY2F0aW9uIGhlcmUuICBEb24ndCBwYXNzIG5hbWUgYXMgYWxsCglzdHVicyBhcmUgbm93IHRoZSBzYW1lIHNpemUuCgkoZWxmMzJfaHBwYV9zdHViX2hhc2hfbmV3ZnVuYyk6IEluaXQgbmV3IGZpZWxkcy4KCShlbGYzMl9ocHBhX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUpOiBMaWtld2lzZSwgYW5kIHN0dWJfaGFzaF90YWJsZQoJdG9vLgoJKGVsZjMyX2hwcGFfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBDYXN0IGVudW1zIHRvIGludCBiZWZvcmUKCWNvbXBhcmluZyBhZ2FpbnN0IGludHMuICBSZXdyaXRlIHN0dWIgaGFuZGxpbmcgY29kZS4KCShlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBNYWtlIHJfdHlwZSBhbmQgcl9zeW1uZHggdW5zaWduZWQuCglDYXNlIGVudW1zIHRvIGludCBiZWZvcmUgY29tcGFyaW5nIGFnYWluc3QgaW50cy4gIFJlbW92ZQoJYmZkX3JlbG9jX2Rhbmdlcm91cyBjYXNlLgoJKGVsZjMyX2hwcGFfYnVpbGRfb25lX3N0dWIpOiBSZXdyaXRlLgoJKGVsZjMyX2hwcGFfc2l6ZV9vbmVfc3R1Yik6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9ocHBhX2J1aWxkX3N0dWJzKTogUmV3cml0ZS4KCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBQYXNzIGluIGxpbmtlciBjYWxsLWJhY2sgZnVuY3Rpb25zLgoJUmV3cml0ZSBzdHViLWhhbmRsaW5nIHNwZWNpZmljIGNvZGUuCgoJKiBlbGYzMi1ocHBhLmggKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IFVwZGF0ZSBwcm90b3R5cGUuCgoJKiBlbGY2NC1ocHBhLmMgKGVsZjY0X2hwcGFfZHluX2hhc2hfZW50cnkpOiBGaXggYSBjb21tZW50IHR5cG8uCgoJKiBocHBhX3N0dWJzLmg6IERlbGV0ZS4KCSogTWFrZWZpbGUuYW0gKFNPVVJDRV9IRklMRVMpOiBSZW1vdmUgaHBwYV9zdHVicy5oCgkoZWxmMzItaHBwYS5sbyk6IFJlbW92ZSBocHBhX3N0dWJzLmggZnJvbSBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKCSogZWxmLWhwcGEuaCAoX2JmZF9lbGZfaHBwYV9nZW5fcmVsb2NfdHlwZSk6IEhhbmRsZSBlX25sc2VsIGFuZAoJZV9ubHJzZWwuCgoJKiBsaWJocHBhLmggKGhwcGFfZmllbGRfYWRqdXN0KTogQ29ycmVjdCBlX25zZWwgY2FzZS4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogTWVudGlvbiB0aGUgb2Zmc2V0CglhbmQgc2VjdGlvbiBuYW1lIGZvciBiZmRfcmVsb2Nfbm90c3VwcG9ydGVkIGVycm9yIG1lc3NhZ2UuCgkoZWxmMzJfaHBwYV9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSk6IFByaW50IHJlYXNvbnMgZm9yIHJldHVybmluZwoJYmZkX3JlbG9jX25vdHN1cHBvcnRlZC4KCShlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBBZGQgQVRUUklCVVRFX1VOVVNFRCB0byBvdXRwdXRfYmZkLgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlKTogSGFuZGxlCgl1bmRlZmluZWQgd2VhayBzeW1ib2xzIGZvciBhbGwgcmVsb2NzLgoJKGVsZjMyX2hwcGFfc2l6ZV9vZl9zdHViKTogQWRqdXN0IGNhbGN1bGF0aW9uIGJ5IDggc2luY2UgYnJhbmNoCglvZmZzZXRzIGFyZSByZWxhdGl2ZSB0byBvbmUgcGFzdCB0aGUgZGVsYXkgc2xvdC4KCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBBY2NvdW50IGZvciByZWxvYyBhZGRlbmQgd2hlbiBjYWxjdWxhdGluZwoJYnJhbmNoIGRlc3RpbmF0aW9uLiAgUHV0IGFkZGVuZCBpbnRvIHN0dWIgbmFtZSB0b28uCgkoZWxmMzJfaHBwYV9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSk6IEFjY291bnQgZm9yIHJlbG9jIGFkZGVuZCBhbmQKCWFkanVzdCBieSA4IHdoZW4gZGVjaWRpbmcgd2hldGhlciBhIGxpbmtlciBzdHViIGlzIG5lZWRlZC4gIFB1dAoJYWRkZW5kIGludG8gc3R1YiBuYW1lIGFzIGZvciBhYm92ZS4KCgkqIGVsZjMyLWhwcGEuYyAoaHBwYV9lbGZfcmVsb2NhdGVfaW5zbik6IENoYW5nZSBzaWduZWQvdW5zaWduZWQgb24KCXZhcmlvdXMgYXJncyBhbmQgdmFycy4KCShlbGYzMl9ocHBhX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlKTogSGVyZSB0b28uCgkoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogUmVuYW1lIGluZGV4IC0+IGluZHguICBVc2UgZV9pbmR4IGZvcgoJaW5uZXIgYmxvY2sgdmFyIHRvIGF2b2lkIHNoYWRvd2luZy4KCgkqIGVsZjMyLWhwcGEuaCAoX2JmZF9lbGYzMl9ocHBhX2dlbl9yZWxvY190eXBlKTogIE1ha2UgYGZpZWxkJyBhcmcKCXVuc2lnbmVkLgoJKiBlbGY2NC1ocHBhLmggKF9iZmRfZWxmNjRfaHBwYV9nZW5fcmVsb2NfdHlwZSk6IERpdHRvLgoJKiBlbGYtaHBwYS5oIChfYmZkX2VsZl9ocHBhX2dlbl9yZWxvY190eXBlKTogRGl0dG8uCgkoZWxmX2hwcGFfZmFrZV9zZWN0aW9ucyk6IFJlbmFtZSBsb2NhbCB2YXIgdG8gYXZvaWQgc2hhZG93aW5nLgoKCSogbGliaHBwYS5oOiBDaGFuZ2UgcHJhY3RpY2FsbHkgYWxsIHVuc2lnbmVkIGludHMgdG8gcGxhaW4gaW50cy4KCVJlbW92ZSB0ZXN0cyBvbiBnY2MgdmVyc2lvbi4gIEluc3RlYWQgdXNlIEFUVFJJQlVURV9VTlVTRUQgZm9yCglwcm90b3R5cGVzLgoKCUZyb20gUnlhbiBCcmFkZXRpY2ggIDxyYnJhZGV0aWNoQHVzd2VzdC5uZXQ+CgkqIGxpYmhwcGEuaCAoaHBwYV9vcGNvZGVfdHlwZSk6IE5ldyBlbnVtIHRvIHJlcGxhY2UgI2RlZmluZSdzLgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBNb2RpZnkgdG8KCXN1aXQgYWJvdmUuCglGcm9tICBEYXZpZCBIdWdnaW5zLURhaW5lcyAgPGRoZEBsaW51eGNhcmUuY29tPgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9yZWxvY2F0ZV9pbnNuKTogVXBkYXRlIHRoZSBvcGNvZGUgY29uc3RhbnRzCgl0byB0aGUgbmV3IE9QXyogb25lcy4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogQ29uc29saWRhdGUgZnJlZWluZyBvbgoJZXJyb3IgZXhpdC4gIEJhaWwgb3V0IGVhcmxpZXIgb24gcGxhYmVsIHJlbG9jcyB0aGF0IHdlIGFyZW4ndAoJaW50ZXJlc3RlZCBpbi4gIERvbid0IHRlbGwgZWxmMzJfaHBwYV9zdHViX2hhc2hfbG9va3VwIHRvIGNvcHkKCXN0cmluZywgYW5kIHRoZW4gZG9uJ3QgZnJlZSBvdXIgY29weS4KCShlbGYzMl9ocHBhX2J1aWxkX29uZV9zdHViKTogTWFrZSBpbnNuIHVuc2lnbmVkIGludC4KCgkqIGxpYmhwcGEuaCAoYmZkX2hwcGFfaW5zbjJmbXQpOiAyMiBiaXQgYnJhbmNoZXMgYXJlIG9ubHkKCWF2YWlsYWJsZSB3aXRoIEJMLCBub3QgQkUgYW5kIEJMRS4KCgkqIGVsZjMyLWhwcGEuYyAoaHBwYV9lbGZfcmVsb2NhdGVfaW5zbik6IEFkZCBzb21lIG1vcmUgZXhhbXBsZQoJY29kZSBmb3IgZWxmIGFyZyByZWxvY3MuCgkoZWxmMzJfaHBwYV9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSk6IFJlcGxhY2UgYm9vbGVhbiBpc19sb2NhbAoJYXJndW1lbnQgd2l0aCBlbGZfbGlua19oYXNoX2VudHJ5IGguICBIYW5kbGUgdW5kZWZpbmVkIHdlYWsKCXN5bWJvbHMuICBNb3ZlICRnbG9iYWwkIGxvb2t1cCBmcm9tIGhlcmUuLi4KCShlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiAuLi50byBoZXJlLiAgUmV0dXJuIGNvcnJlY3QgZXJyb3IKCW1lc3NhZ2UgZm9yIG5vbi1oYW5kbGVkIHJlbG9jcy4KCShlbGYzMl9ocHBhX3NpemVfb2Zfc3R1Yik6IENvcnJlY3RseSB0ZXN0IGJyYW5jaCByYW5nZS4gIFByZXZpb3VzCgl3cm9uZyB0ZXN0IHdhcyAtMHgzZmZmZiB0byArMHg0MDAwMC4KCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBSX1BBUklTQ19ESVIxN1IsCglSX1BBUklTQ19ESVIxN0YsIGFuZCBSX1BBUklTQ19ESVIyMUwgYXJlIGZvciBhYnNvbHV0ZSBicmFuY2hlczsKCUhhbmRsZSB0aGVtIGFzIHN1Y2guCgkoZWxmX2hwcGFfcmVsb2NhdGVfaW5zbik6IEZpeCBhIHR5cG8uCgoJKiBsaWJocHBhLmggKEdFVF9GSUVMRCwgR0VUX0JJVCwgTUFTSywgQ0FURU5BVEUsIEVMRVZFTik6IERlbGV0ZS4KCShhc3NlbWJsZV8zLCBhc3NlbWJsZV82LCBhc3NlbWJsZV8xMiwgYXNzZW1ibGVfMTYsIGFzc2VtYmxlXzE2YSwKCWFzc2VtYmxlXzE3LCBhc3NlbWJsZV8yMSk6IERlbGV0ZS4KCVN1cHBseSBkZWZpbmVzIGZvciBhbGwgNjQgcG9zc2libGUgb3Bjb2Rlcy4KCShiZmRfaHBwYV9pbnNuMmZtdCk6IEFkZCBiZmQgYXJndW1lbnQsIGFuZCB1c2UgdG8gc2VsZWN0IHdpZGUgbW9kZQoJZm9ybWF0cy4gIEhhbmRsZSBDT01JQ0xSLgoJKGhwcGFfcmVidWlsZF9pbnNuKTogRGVsZXRlIGJmZCBhcmd1bWVudC4gIEhhbmRsZSBmb3JtYXRzIDEwLCAtMTEsCgktMTAsIC0xNiwgMTYsIDIyLgoKCSogZWxmMzItaHBwYS5jIChocHBhX2VsZl9yZWxvY2F0ZV9pbnNuKTogQ29tcGxldGUgcmV3cml0ZS4KCShlbGYzMl9ocHBhX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlKTogTWFqb3IgcmV3cml0ZS4KCShlbGYzMl9ocHBhX2J1aWxkX29uZV9zdHViKTogTW9kaWZ5IGhwcGFfZWxmX3JlbG9jYXRlX2luc24gY2FsbHMKCXRvIHN1aXQuCgkoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogRG9uJ3QgZnJlZSBzdHViX25hbWUgdHdpY2UuICBSZWFkIGluIGFsbAoJdGhlIGxvY2FsIHN5bXMgLSBkaWQgdGhpcyBjb2RlIGdldCBkZWxldGVkIGFjY2lkZW50YWxseT8gIElnbm9yZQoJdW5kZWZpbmVkIGFuZCB1bmRlZndlYWsgc3ltcy4KCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX2ZpbmFsX2xpbmspOiBNb3ZlIGhwcGFfaW5mbyB0byBvdXRlcm1vc3QKCWJsb2NrLiAgVXNlIGl0IGluc3RlYWQgb2YgZWxmNjRfaHBwYV9oYXNoX3RhYmxlIChpbmZvKS4KCShlbGZfaHBwYV9maW5hbF9saW5rX3JlbG9jYXRlKTogVXNlIGhwcGFfaW5mbyBpbnN0ZWFkIG9mCgllbGY2NF9ocHBhX2hhc2hfdGFibGUgKGluZm8pLgoKCSogbGliaHBwYS5oIChyZV9hc3NlbWJsZV8zLCByZV9hc3NlbWJsZV8xMiwgcmVfYXNzZW1ibGVfMTYsCglyZV9hc3NlbWJsZV8xNywgcmVfYXNzZW1ibGVfMjEsIHJlX2Fzc2VtYmxlXzIyKTogRG9uJ3QgbWFzayBpbnNuLgoJKGhwcGFfcmVidWlsZF9pbnNuKTogTWFzayBpbW1lZGlhdGUgYml0cyBoZXJlIGluc3RlYWQuCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX3JlbG9jYXRlX2luc24pOiBNYXNrIGhlcmUgdG9vLgoKMjAwMC0wNy0wOCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHNlY3Rpb24uYyAoc3RydWN0IHNlYyk6IEFkZCBpZCBmaWVsZC4gIFRpZHkgY29tbWVudCBmb3JtYXR0aW5nLgoJKGJmZF9tYWtlX3NlY3Rpb25fYW55d2F5KTogU2V0IGlkLgoJKFNURF9TRUNUSU9OKTogSW5pdCBpZCB0b28uCglDaGFuZ2UgQ09OU1QgdG8gY29uc3QgdGhyb3VnaG91dC4KCSogYXJjaHVyZXMuYyAoYmZkX2FyY2hfaW5mbyk6IFRpZHkgY29tbWVudC4KCShiZmRfYXJjaF9saXN0KTogQ2hhbmdlIGEgQ09OU1QgdG8gY29uc3QuCgkqIGxpYmJmZC1pbi5oOiBUaWR5IGNvbW1lbnRzIGFuZCByZXBsYWNlIENPTlNUIHdpdGggY29uc3QuCgkqIGVsZi1iZmQuaDogTGlrZXdpc2UuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGxpYmNvZmYuaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDctMDcgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogYXJjaGl2ZS5jIChfYmZkX3dyaXRlX2FyY2hpdmVfY29udGVudHMpOiBBZGQgYW4gaW5mb3JtYXRpdmUKCWNvbW1lbnQuCgoyMDAwLTA3LTA2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHNyZWMuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA2LTA1ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIE1BSU5UQUlORVJTOiBuZXcKCjIwMDAtMDctMDQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29mZi1hcm0uYyAoY29mZl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IERvIG5vdCBpZ25vcmUgdGhlIHN5bWJvbAoJdmFsdWUgb2YgUEMtcmVsYXRpdmUgb2Zmc2V0cy4KCjIwMDAtMDctMDMgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKGFscGhhX2VsZl9zaXplX2luZm8pOiBOZXcuCgkoZWxmX2JhY2tlbmRfc2l6ZV9pbmZvKTogRGVmaW5lIHRvIGFscGhhX2VsZl9zaXplX2luZm8uCgkqIGVsZmNvZGUuaCAoZWxmX3NpemVfaW5mbyk6IENoYW5nZSBoYXNoIGJ1Y2tldCBzaXplIHRvIDQuCgoyMDAwLTA3LTAzICBVbGYgQ2FybHNzb24gIDx1bGZjQGVuZ3Iuc2dpLmNvbT4KCgkqIGVsZjMyLW1pcHMuYzogSW5jbHVkZSBlbGYzMi10YXJnZXQuaCBhZ2FpbiBmb3IgdGhlIHRyYWRpdGlvbmFsCglNSVBTIHRhcmdldHMuCgoyMDAwLTA3LTAzICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGVsZjMyLWF2ci5jIChiZmRfZWxmMzJfYmZkX3JlbG9jX3R5cGVfbG9va3VwKToKCUFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIHVudXNlZCBhcmd1bWVudHMgdG8gYXZvaWQgd2FybmluZ3MuCgkoYXZyX2luZm9fdG9faG93dG9fcmVsYSk6IExpa2V3aXNlLgoJKGVsZjMyX2F2cl9nY19tYXJrX2hvb2spOiBMaWtld2lzZS4KCShlbGYzMl9hdnJfZ2Nfc3dlZXBfaG9vayk6IExpa2V3aXNlLgoJKGVsZjMyX2F2cl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTA3LTAzICBNYXJrIEVsYnJlY2h0ICA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogY29mZmxpbmsuYyAoX2JmZF9jb2ZmX3dyaXRlX2dsb2JhbF9zeW0pOiBUdXJuIGEgd2VhayBzeW1ib2wgaW50bwoJYW4gZXh0ZXJuYWwgc3ltYm9sIGZvciBhIG5vbi1zaGFyZWQsIG5vbi1yZWxvY2F0YWJsZSBsaW5rLgoKMjAwMC0wNy0wMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvZmZsaW5rLmMgKElTX0VYVEVSTkFMKTogTmV3IG1hY3JvOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3ltYm9sCglpcyBhbiBleHRlcm5hbCBzeW1ib2wuCgkoSVNfV0VBS19FWFRFUk5BTCk6IE5ldyBtYWNybzogUmV0dXJuIHRydWUgaWYgdGhlIHN5bWJvbCBpcyBhIHdlYWsKCWV4dGVybmFsIHN5bWJvbC4KCjIwMDAtMDctMDMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogcmVsb2MxNi5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDctMDEgIEtvdW5kaW55YSBLICA8a2tAZGRlb3JnLnNvZnQubmV0PgoKCSogY29uZmlnLmJmZDogQ2hhbmdlIHRhcmdfZGVmdmVjIGFuZCB0YXJnX3NlbHZlY3MgZm9yIG1pcHMqLSotc3lzdjQqCgl0byBhZGQgYSBuZXcgdGFyZ2V0IGZvciB0cmFkaXRpb25hbCBtaXBzIGkuZQoJYmZkX2VsZjMyX3RyYWRiaWdtaXBzX3ZlYyBhbmQgYmZkX2VsZjMyX3RyYWRsaXR0bGVtaXBzX3ZlYy4KCSogY29uZmlndXJlLmluOiBMaWtld2lzZS4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoJKiB0YXJnZXRzLmMgKGJmZF9lbGYzMl90cmFkYmlnbWlwc192ZWMpOiBEZWNsYXJlIGFuZCBwdXQgaW4KCWJmZF90YXJnZXRfdmVjdG9yLgoJKGJmZF9lbGYzMl90cmFkbGl0dGxlbWlwc192ZWMpOiBMaWtld2lzZS4KCSogZWxmeHgtdGFyZ2V0Lmg6IEFkZCBtYWNybyBJTkNMVURFRF9UQVJHRVRfRklMRSB3aGljaCBpcyBtb3JlIGEgdGVzdAoJdG8gc2VlIHRoYXQgZWxmTk5fYmVkIGRvZXMgbm90IGdldCByZWRlZmluZWQgZXZlbiBpZiB0aGUgdGFyZ2V0IGZpbGUKCWlzIGluY2x1ZGVkIHR3aWNlIGZvciBhIGNoaXAuIFNlZSBlbGYzMi1taXBzLmMuCgoyMDAwLTA3LTAxICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogTWFrZWZpbGUuYW0gKERFUCk6IEZpeCAyMDAwLTA2LTIyLiAgZ3JlcCBhZnRlciBydW5uaW5nIGRlcC5zZWQKCShDTEVBTkZJTEVTKTogQWRkIERFUEEuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKMjAwMC0wNi0zMCAgREogRGVsb3JpZSAgPGRqQGN5Z251cy5jb20+CgoJKiBwZWljb2RlLmggKGNvZmZfc3dhcF9maWxlaGRyX2luKTogY2FuJ3QgdXNlIGVfbWFnaWMgYmVjYXVzZSB3ZQoJY2FuJ3QgYXNzdW1lIHRoZSBQRSBoZWFkZXIgaXMgYXQgMHg4MC4KCjIwMDAtMDYtMjkgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBzeW1zLmMgKF9iZmRfc3RhYl9zZWN0aW9uX2ZpbmRfbmVhcmVzdF9saW5lKTogVXNlIElTX0FCU09MVVRFX1BBVEguCgoyMDAwLTA2LTI4ICBNYXJrIEVsYnJlY2h0ICA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogZ28zMnN0dWIuaDogVXBkYXRlIHN0dWIuCgoyMDAwLTA2LTI2ICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGFyY2h1cmVzLmMgKGJmZF9tYWNoX2F2cjUpOiBEZWZpbmUuCgkqIGJmZC1pbjIuaCAoYmZkX21hY2hfYXZyNSk6IERlZmluZS4KCSogY3B1LWF2ci5jIChhcmNoX2luZm9fc3RydWN0KTogUmVuYW1lIGJmZF9tYWNoX2F2cjQgdG8KCWJmZF9tYWNoX2F2cjUsIGFkZCBiZmRfbWFjaF9hdnI0LiAgVXBkYXRlIGNvbW1lbnRzLgoJKGNvbXBhdGlibGUpOiBVcGRhdGUgY29tbWVudC4gIEFkZCBtaXNzaW5nIHRlc3QuCgkqIGVsZjMyLWF2ci5jIChhdnJfZmluYWxfbGlua19yZWxvY2F0ZSk6IFN1cHBvcnQgOEsgd3JhcAoJZm9yIGF2cjIgYW5kIGF2cjQuICBTaW1wbGlmeSA4SyB3cmFwIGNvZGUuCgkoYmZkX2VsZl9hdnJfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IFJlY29nbml6ZSBiZmRfbWFjaF9hdnI1LgoJKGVsZjMyX2F2cl9vYmplY3RfcCk6IFJlY29nbml6ZSBFX0FWUl9NQUNIX0FWUjUuCgoyMDAwLTA2LTI2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvZmYtaDgzMDAuYzogRml4IGZvcm1hdHRpbmcuCgkqIGNwdS1oODMwMC5jOiBMaWtld2lzZS4KCjIwMDAtMDYtMjQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlKTogUHJpbnQgYChsb2NhbCknCglmb3IgbG9jYWwgc3ltYm9scyB3aG9zZSBuYW1lcyBhcmUgdW5rbm93bi4KCjIwMDAtMDYtMjIgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBNYWtlZmlsZS5hbSAoREVQKTogZ3JlcCBmb3IgbGVhZGluZyBgLycgaW4gREVQMSwgYW5kIGZhaWwgaWYgd2UKCWZpbmQgb25lLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCSogZG9jL01ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKMjAwMC0wNi0yMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogTWFrZWZpbGUuYW06IFJlYnVpbGQgZGVwZW5kZW5jeS4KCSogTWFrZWZpbGUuaW46IFJlYnVpbGQuCgoyMDAwLTA2LTIwICBNYWNpZWogVy4gUm96eWNraSAgPG1hY3JvQGRzMi5wZy5nZGEucGw+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfY29weV9pbmRpcmVjdF9zeW1ib2wpOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfY29weV9pbmRpcmVjdF9zeW1ib2wpOiBNYXAgdG8gdGhlIG5ldyBmdW5jdGlvbi4KCjIwMDAtMDYtMjAgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBhcmNoaXZlLmMgKG5vcm1hbGl6ZSk6IENvcnJlY3QgcG9pbnRlciBjb21wYXJpc29uIHdoZW4gY2hlY2tpbmcKCWZvciBiYWNrc2xhc2hlcy4KCShiZmRfYnNkX3RydW5jYXRlX2FybmFtZSk6IExpa2V3aXNlLgoJKGJmZF9nbnVfdHJ1bmNhdGVfYXJuYW1lKTogTGlrZXdpc2UuCgoyMDAwLTA2LTIwICBVbGYgQ2FybHNzb24gIDx1bGZjQGVuZ3Iuc2dpLmNvbT4KCgkqIGVsZi1iZmQuaCAoc3RydWN0IGVsZl9vYmpfdGRhdGEpOiBEZWZpbmUgcGVyIEJGRCBJcml4IDUgdmlydHVhbAoJc2VjdGlvbnMgZWxmX3t0ZXh0LGRhdGF9X3tzZWN0aW9uLHN5bWJvbH0uCgkqIGVsZjMyLW1pcHMuYzogbWlwc19lbGZfe3RleHQsZGF0YX1fe3NlY3Rpb24sc3ltYm9sfXssX3B0cn06IFJlbW92ZS4KCShfYmZkX21pcHNfZWxmX2hpZGVfc3ltYm9sKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2hpZGVfc3ltYm9sKTogTWFwIHRvIHRoZSBuZXcgZnVuY3Rpb24uCgkoX2JmZF9taXBzX2VsZl9hZGRfc3ltYm9sX2hvb2spOiBDaGFuZ2UgdG8gdXNlIG5ldyBwZXIgQkZECglkZWZpbml0aW9ucyBvZiBtaXBzX2VsZl97dGV4dCxkYXRhfV97c2VjdGlvbixzeW1ib2x9LgoJKG1pcHNfZWxmX2xvY2FsX3JlbG9jYXRpb25fcCk6IFRyeSB0byBmaW5kIHRoZSBkaXJlY3Qgc3ltYm9sCgliYXNlZCBvbiBuZXcgY2hlY2tfZm9yY2VkIGFyZ3VtZW50LgoJKG1pcHNfZWxmX2NhbGN1bGF0ZV9yZWxvY2F0aW9uKTogVXNlIG5ldyB2ZXJzaW9uIG9mCgltaXBzX2VsZl9sb2NhbF9yZWxvY2F0aW9uX3AuCgkobWlwc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKF9iZmRfbWlwc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKG1pcHNfZWxmX3NvcnRfaGFzaF90YWJsZSk6IE9ubHkgYXNzZXJ0IHRoYXQgaGF2ZSBlbm91Z2ggR09UCglzcGFjZS4KCShtaXBzX2VsZl9nb3QxNl9lbnRyeSk6IE1hdGNoIGFsbCAzMiBiaXRzIHRvIHRoZSBleGlzdGluZyBHT1QKCWVudHJ5IGlmIHRoZSByZWxvY2F0aW9uIGJhc2VkIG9uIHRoZSBuZXcgZXh0ZXJuYWwgYXJndW1lbnQuCgkobWlwc19lbGZfY3JlYXRlX2R5bmFtaWNfcmVsb2NhdGlvbik6IEFzc2VydCB0aGF0IHdlIGhhdmUgYQoJc2VjdGlvbiBjb250ZW50cyBhbGxvY2F0ZWQgd2hlcmUgd2UgY2FuIHN3YXAgb3V0IHRoZSBkeW5hbWljCglyZWxvY2F0aW9ucy4KCShtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IEZpbmQgdGhlIHJlYWwgaGFzaC10YWJsZSBlbnRyeQoJY29ycmVjdGx5IGJ5IHVzaW5nIGgtPnJvb3Qucm9vdC50eXBlLiAgT25seSBjcmVhdGUgYSBkeW5hbWljCglyZWxvY2F0aW9uIGVudHJ5IGlmIHRoZSBzeW1ib2wgaXMgZGVmaW5lZCBpbiBhIHNoYXJlZCBsaWJyYXJ5LgoJQ3JlYXRlIGFuIGV4dGVybmFsIEdPVCBlbnRyeSBmb3IgdGhlIEdPVDE2IHJlbG9jYXRpb24gaWYgdGhlCglzeW1ib2wgd2FzIGZvcmNlZCBsb2NhbC4KCShfYmZkX21pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IERvbid0IGFzc2VydCB0aGVyZSBpcyBhCglkeW5hbWljIGluZGV4IGlmIHRoZSBzeW1ib2wgd2FzIGZvcmNlZCBsb2NhbC4KCjIwMDAtMDYtMjAgIE1hY2llaiBXLiBSb3p5Y2tpICA8bWFjcm9AZHMyLnBnLmdkYS5wbD4KCgkqIGVsZjMyLW1pcHMuYzogRml4IHR5cG9zIGluIGNvbW1lbnRzLgoKMjAwMC0wNi0xOSAgTWFyayBLZXR0ZW5pcyAgPGtldHRlbmlzQGdudS5vcmc+CgoJKiByczYwMDAtY29yZS5jOiBXcmFwIGRlZmluaXRpb24gb2YgYHVuaW9uIFZtSW5mbycgd2l0aGluICNpZmRlZgoJQ09SRV9WRVJTSU9OXzEuCgoyMDAwLTA2LTE4ICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekB3b3JsZG5ldC5mcj4KCgkqIE1ha2VmaWxlLmluLCBiZmQtaW4yLmgsIGxpYmJmZC5oLCBjb25maWd1cmU6IFJlYnVpbGQuCgkqIE1ha2VmaWxlLmFtIChBTExfTUFDSElORVMsIEFMTF9NQUNISU5FU19DRklMRVMsIEJGRDMyX0JBQ0tFTkRTLAoJQkZEMzJfQkFDS0VORFNfQ0ZJTEVTKTogQWRkIDY4aGMxMiwgNjhoYzExIGZpbGVzLgoJKiBjb25maWd1cmUuaW4gKGJmZF9lbGYzMl9tNjhoYzEyX3ZlYyk6IFJlY29nbml6ZS4KCShiZmRfZWxmMzJfbTY4aGMxMV92ZWMpOiBMaWtld2lzZS4KCSogY29uZmlnLmJmZCAodGFyZ19jcHUpOiBSZWNvZ25pemUgNjhoYzEyIGFuZCA2OGhjMTEuCglTdXBwb3J0cyA2OGhjMTEgJiA2OGhjMTIgIGF0IHRoZSBzYW1lIHRpbWUuCgkqIHRhcmdldHMuYyAoYmZkX2VsZjMyX202OGhjMTJfdmVjKTogRGVjbGFyZSBhbmQgcHV0IGluCgliZmRfdGFyZ2V0X3ZlY3Rvci4KCShiZmRfZWxmMzJfbTY4aGMxMV92ZWMpOiBMaWtld2lzZS4KCSogZWxmLmMgKHByZXBfaGVhZGVycyk6IFJlY29nbml6ZSBiZmRfYXJjaF9tNjhoYzEyIGFuZCA2OGhjMTEuCgkqIGFyY2h1cmVzLmMgKGJmZF9tNjhoYzEyX2FyY2gpOiBEZWZpbmUgYW5kIHJlZ2lzdGVyIGluIGdsb2JhbCBsaXN0CgkoYmZkX202OGhjMTFfYXJjaCk6IExpa2V3aXNlLgoJKiByZWxvYy5jIChCRkRfUkVMT0NfTTY4SEMxMV9ISTgsIEJGRF9SRUxPQ19NNjhIQzExX0xPOCwKCUJGRF9SRUxPQ19NNjhIQzExXzNCKTogRGVmaW5lLgoJKiBjcHUtbTY4aGMxMi5jLCBlbGYzMi1tNjhoYzEyLmM6IE5ldyBmaWxlcyBmb3IgNjhoYzEyIHN1cHBvcnQuCgkqIGNwdS1tNjhoYzExLmMsIGVsZjMyLW02OGhjMTEuYzogTmV3IGZpbGVzIGZvciA2OGhjMTEgc3VwcG9ydC4KCjIwMDAtMDYtMTggIFVsZiBDYXJsc3NvbiAgPHVsZmNAZW5nci5zZ2kuY29tPgoKCSogZWxmX2JmZC5oIChzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSk6IEFkZCBpbmZvIGFyZ3VtZW50IHRvCgllbGZfYmFja2VuZF9oaWRlX3N5bWJvbC4KCShfYmZkX2VsZl9saW5rX2hhc2hfaGlkZV9zeW1ib2wpOiBMaWtld2lzZS4KCSogZWxmLmMgKF9iZmRfZWxmX2xpbmtfaGFzaF9oaWRlX3N5bWJvbCk6IExpa2V3aXNlLgoJKiBlbGY2NC1pYTY0LmMgKGVsZjY0X2lhNjRfaGFzaF9oaWRlX3N5bWJvbCk6IExpa2V3aXNlLgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IExpa2V3aXNlLgoJKGVsZl9saW5rX2Fzc2lnbl9zeW1fdmVyc2lvbik6IExpa2V3aXNlLgoKMjAwMC0wNi0xOCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogY29mZi1pMzg2LmMgKGNvZmZfaTM4Nl9yZWxvYyk6IERvbid0IHJldHVybiBpbiBjYXNlIG9mCglvdXRwdXRfYmZkID09IChiZmQgKikgTlVMTCBpZiBDT0ZGX1dJVEhfUEUgaXMgZGVmaW5lZC4KCUNvbXBlbnNhdGUgUEUgcmVsb2NhdGlvbnMgd2hlbiBsaW5raW5nIHdpdGggbm9uLVBFIG9iamVjdAoJZmlsZXMgdG8gZ2VuZXJhdGUgYSBub24tUEUgZXhlY3V0YWJsZS4KCjIwMDAtMDYtMTcgIFVsZiBDYXJsc3NvbiAgPHVsZmNAZW5nci5zZ2kuY29tPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IEV4cGxpY2l0bHkgd3JpdGUKCUdPVCBlbnRyaWVzIGlmIHdlJ3JlIGRvaW5nIGEgc3RhdGljIGxpbmsgb3IgLUJzeW1ib2xpYyBsaW5rLgoKMjAwMC0wNi0xNSAgVWxmIENhcmxzc29uICA8dWxmY0BlbmdyLnNnaS5jb20+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkanVzdF9yZWxvY3MpOiBDaGVjayBmb3IgYW5kIGNhbGwgYmFja2VuZAoJc3BlY2lmaWZpYyBzd2FwX3JlbG9jX3tpbixvdXR9IGFuZCBzd2FwX3JlbG9jYV97aW4sb3V0fSBpZgoJYXZhaWxhYmxlLgoJKGVsZl9saW5rX291dHB1dF9yZWxvY3MpOiBMaWtld2lzZS4KCShlbGZfcmVsb2NfbGlua19vcmRlcik6IExpa2V3aXNlLgoKMjAwMC0wNi0xNiAgTmljaG9sYXMgRHVmZmVrICA8bnNkQHJlZGhhdC5jb20+CgoJKiBhcmNodXJlcy5jIChlbnVtIGJmZF9hcmNoaXRlY3R1cmUpOiAjZGVmaW5lIGNvbnN0YW50cyBmb3IKCVBvd2VyUGMgYW5kIFJTNjAwMCBtYWNoaW5lIG51bWJlcnMuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCSogY29mZmNvZGUuaCAoY29mZl9zZXRfYXJjaF9tYWNoX2hvb2spOiAjaWZkZWYgWENPRkY2NCwgc2V0IGFyY2gKCXRvIGJmZF9hcmNoX3Bvd2VycGMgaW5zdGVhZCBvZiBiZmRfYXJjaF9yczYwMDAuICBSZWZlciB0byBQb3dlclBjCglhbmQgUlM2MDAwIG1hY2hpbmUgbnVtYmVycyB1c2luZyAjZGVmaW5lZCBjb25zdGFudHMgZnJvbQoJYXJjaHVyZXMuYy4KCSogY3B1LXBvd2VycGMuYyAoYXJjaF9pbmZvX3N0cnVjdCk6IFJlZmVyIHRvIFBvd2VyUGMgYW5kIFJTNjAwMAoJbWFjaGluZSBudW1iZXJzIHVzaW5nICNkZWZpbmVkIGNvbnN0YW50cyBmcm9tIGFyY2h1cmVzLmMuICBBZGQKCWVudHJpZXMgZm9yIEVDNjAzZSwgNjMwLCBBMzUsIFJTNjRJSSwgUlM2NElJSSwgNzQwMC4gIFNwZWNpZnkKCTY0LWJpdCB3b3JkcyBpbiA2MjAgZW50cnkuCgkqIGNwdS1yczYwMDAuYyAoYXJjaF9pbmZvX3N0cnVjdCk6IENyZWF0ZSB3aXRoIGVudHJpZXMgZm9yIFJTMSwKCVJTQywgYW5kIFJTMi4KCShiZmRfcnM2MDAwX2FyY2gpOiBDaGFuZ2UgZGVmYXVsdCBtYWNoaW5lIHRvIDAgKGJmZF9tYWNoX3JzNmspLgoKMjAwMC0wNi0xNiAgTmljaG9sYXMgRHVmZmVrICA8bnNkQGN5Z251cy5jb20+CgoJKiBjb2ZmY29kZS5oIChjb2ZmX21rb2JqZWN0X2hvb2spOiBTZXQgeGNvZmZfdGRhdGEueGNvZmY2NC4KCSogbGliY29mZi1pbi5oIChzdHJ1Y3QgeGNvZmZfdGRhdGEpOiBEZWZpbmUgeGNvZmY2NCBmaWVsZC4KCSogbGliY29mZi5oIChzdHJ1Y3QgeGNvZmZfdGRhdGEpOiBEZWZpbmUgeGNvZmY2NCBmaWVsZC4KCjIwMDAtMDYtMTYgIE5pY2hvbGFzIER1ZmZlayAgPG5zZEByZWRoYXQuY29tPgoKCSogYmZkLWluLmggKGJmZF9mYW1pbHlfY29mZik6IERlZmluZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBjb2ZmZ2VuLmMgKGNvZmZfY291bnRfbGluZW51bWJlcnMsIGNvZmZfc3ltYm9sX2Zyb20sCgljb2ZmX2ZpbmRfbmVhcmVzdF9saW5lKTogQ2hlY2sgQ09GRm5lc3MgdXNpbmcgYmZkX2ZhbWlseV9jb2ZmKCkKCWluc3RlYWQgb2YgYmZkX3RhcmdldF9jb2ZmX2ZsYXZvdXIuCgkqIGNvZmZsaW5rLmMgKF9iZmRfY29mZl9maW5hbF9saW5rKTogTGlrZXdpc2UuCgkqIGNwdS1uczMyay5jIChkb19uczMya19yZWxvYyk6IERvbid0IHN0cmNtcCgpIHRhcmdldCBuYW1lIHRvCglleGNsdWRlIFhDT0ZGIGZpbGVzLgoJKiByZWxvYy5jIChiZmRfcGVyZm9ybV9yZWxvY2F0aW9uLCBiZmRfaW5zdGFsbF9yZWxvY2F0aW9uKToKCUxpa2V3aXNlLgoJKiB0YXJnZXRzLmMgKGVudW0gYmZkX2ZsYXZvdXIpOiBBZGQgYmZkX3RhcmdldF94Y29mZl9mbGF2b3VyLgoJKiB4Y29mZi10YXJnZXQuaCAoVEFSR0VUX1NZTSk6IFVzZSBiZmRfdGFyZ2V0X3hjb2ZmX2ZsYXZvdXIuCgkqIHhjb2ZmbGluay5jIChYQ09GRl9YVkVDUCk6IERlbGV0ZS4KCShiZmRfeGNvZmZfbGlua19yZWNvcmRfc2V0LCBiZmRfeGNvZmZfaW1wb3J0X3N5bWJvbCwKCWJmZF94Y29mZl9leHBvcnRfc3ltYm9sLCBiZmRfeGNvZmZfbGlua19jb3VudF9yZWxvYywKCWJmZF94Y29mZl9yZWNvcmRfbGlua19hc3NpZ25tZW50LAoJYmZkX3hjb2ZmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFJlcGxhY2UgWENPRkZfWFZFQ1AoKSB3aXRoCgljaGVjayBmb3IgYmZkX3RhcmdldF94Y29mZl9mbGF2b3VyLgoKMjAwMC0wNi0xNiAgTmljaG9sYXMgRHVmZmVrICA8bnNkQHJlZGhhdC5jb20+CgoJKiByczYwMDAtY29yZS5jOiBTdXBwb3J0IDY0LWJpdCBjb3JlIGZpbGVzLCBzdXBwb3J0IHByZS00LjMgY29yZQoJZmlsZXMgb24gQUlYIDQuMy4KCShyZWFkX2hkcik6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBjb2ZmX2NvcmVfcCk6IFN0b3JlIG1zdHNhdmUgb3IgX19jb250ZXh0NjQgc3RydWN0IGluc3RlYWQKCW9mIHRyeWluZyB0byBleHRyYWN0IGluZGl2aWR1YWwgcmVnaXN0ZXJzLiAgU2V0IGFiZmQtPmFyY2hfaW5mbwoJdG8gbWF0Y2ggdGhlIGFyY2hpdGVjdHVyZSB0aGF0IGNyZWF0ZWQgdGhlIGNvcmUgZmlsZS4KCShyczYwMDBjb2ZmX2dldF9zZWN0aW9uX2NvbnRlbnRzKTogRGVsZXRlLgoJKiB4Y29mZi10YXJnZXQuaCAocnM2MDAwY29mZl9nZXRfc2VjdGlvbl9jb250ZW50cyk6IERlbGV0ZS4KCjIwMDAtMDYtMTQgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIHZtcy1taXNjLmMgKF9iZmRfdm1zX25leHRfcmVjb3JkKTogUmV0dXJuIC0xIGlmIFBSSVYodm1zX3JlYykKCWlzIE5VTEwuCgoyMDAwLTA2LTEzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTA2LTEzICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBwZWljb2RlLmggKHBlX0lMRl9vYmplY3RfcCk6IFVzZSBUQVJHRVRfTElUVExFX1NZTSBpbnN0ZWFkIG9mCglhcm1wZWlfbGl0dGxlX3ZlYy4KCjIwMDAtMDYtMDggIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBVcGRhdGUgdG8gc2hvdyB0aGlzIGlzIHRoZSBDVlMgbWFpbmxpbmUuCgoyMDAwLTA2LTA3ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItZDEwdi5jOiBJbmNsdWRlIGVsZi9kMTB2LmgKCShlbnVtIHJlbG9jX3R5cGUpOiBEZWxldGUuCgkqIGVsZjMyLWQzMHYuYzogSW5jbHVkZSBlbGYvZDMwdi5oCgkoZW51bSByZWxvY190eXBlKTogRGVsZXRlLgoKCSogTWFrZWZpbGUuYW06IFJ1biAibWFrZSBkZXAtYW0iIHRvIHJlZ2VuZXJhdGUgZGVwZW5kZW5jaWVzLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2hvd3RvX3RhYmxlKTogUmVtb3ZlIEVNUFRZX0hPV1RPcy4KCShlbGYzMl9pMzg2X3Z0aW5oZXJpdF9ob3d0bywgZWxmMzJfaTM4Nl92dGVudHJ5X2hvd3RvKTogRGVsZXRlIGFuZAoJbW92ZSBIT1dUT3MgaW50byBlbGZfaG93dG9fdGFibGUuCgkoUl8zODZfc3RhbmRhcmQsIFJfMzg2X2V4dF9vZmZzZXQpOiBEZWZpbmUuCgkoUl8zODZfZXh0LCBSXzM4Nl92dF9vZmZzZXQsIFJfMzg2X3Z0KTogRGVmaW5lLgoJKGVsZl9pMzg2X3JlbG9jX3R5cGVfbG9va3VwKTogTW9kaWZ5IGNhbGN1bGF0aW9uIG9mIGluZGV4IGludG8KCWVsZl9ob3d0b190YWJsZSBzaW5jZSB3ZSd2ZSByZW1vdmVkIHRoZSBwYWRkaW5nLgoJKGVsZl9pMzg2X2luZm9fdG9faG93dG9fcmVsKTogTGlrZXdpc2UuCgkoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoKMjAwMC0wNi0wNiAgTWljaGFlbCBTbnlkZXIgIDxtc255ZGVyQHNlYWRvZy5jeWdudXMuY29tPgoKCSogZWxmLmMgKGVsZl9ncm9rX3ByX3N0YXR1cyk6IEVsaW1pbmF0ZSByZWZlcmVuY2UgdG8gcHJncmVnc2V0X3QuCgoyMDAwLTA2LTA1ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgZmxhZwoJYW4gZXJyb3Igd2hlbiBzZWVpbmcgYW4gdW5kZWZpbmVkIHN5bWJvbCB3aXRoIGhpZGRlbi9pbnRlcm5hbAoJYXR0cmlidXRlLiBJdCBpcyBoYW5kbGVkIGluICpfcmVsb2NhdGVfc2VjdGlvbiAoKS4KCjIwMDAtMDYtMDUgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoZWxmX2ZpeF9zeW1ib2xfZmxhZ3MpOiBGb2xsb3cgdGhlIGxpbmsgZm9yIHRoZQoJaW5kaXJlY3Qgc3ltYm9sIGZvciB0aGUgRUxGX0xJTktfTk9OX0VMRiBiaXQuCgkoZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSk6IERvbid0IG91dHB1dCB0aGUgaW5kaXJlY3Qgc3ltYm9sIGV2ZW4KCWlmIHRoZSBFTEZfTElOS19OT05fRUxGIGJpdCBpcyBzZXQuCgoyMDAwLTA2LTAxICBKLlQuIENvbmtsaW4gIDxqdGNAcmVkYmFjay5jb20+CgoJKiBjb25maWcuYmZkIChpWzM0NTZdODYtKi1uZXRic2RlbGYqKTogTmV3IHRhcmdldC4KCShpWzM0NTZdODYtKi1uZXRic2Rhb3V0Kik6IE5ldyB0YXJnZXQuCgkoaVszNDU2XTg2LSotbmV0YnNkKik6IEFkZCBiZmRfZWxmMzJfaTM4Nl92ZWMgdG8gdGFyZ19zZWx2ZWNzLgoJKGlbMzQ1Nl04Ni0qLW9wZW5ic2QqKTogTGlrZXdpc2UuCgoyMDAwLTA1LTMwICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiB0cmFkLWNvcmUuYzogRnJvbSBocHV4LWNvcmUuYywgaW5jbHVkZSA8ZGlyZW50Lmg+IG9yCgk8c3lzL25kaXIuaD4gd2hlbiBwb3NzaWJsZS4KCjIwMDAtMDUtMzEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBvcGludGwuaCAoXyhTdHJpbmcpKTogRXhwbGFpbiB3aHkgZGdldHRleHQgaXMgdXNlZCBpbnN0ZWFkCglvZiBnZXR0ZXh0LgoKMjAwMC0wNS0zMSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiBlbGYuYyAoX2JmZF9lbGZfc2x1cnBfdmVyc2lvbl90YWJsZXMpOiBDb3JyZWN0IHJlYWRpbmcgb2YgdmVyc2lvbgoJZGVmaW5pdGlvbnMuICBXZSBtdXN0IG5vdCBhc3N1bWUgdGhleSBhcmUgc29ydGVkIGluIHRoZSBmaWxlCglhY2NvcmRpbmcgdG8gdGhlaXIgaW5kZXggbnVtYmVycy4KCjIwMDAtMDUtMzEgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYtaHBwYS5oOiAoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IFVzZSBlX3JzZWwgZmllbGQKCXNlbGVjdG9yIGZvciBSX1BBUklTQ19QQ1JFTDE3Ui4gIFJfUEFSSVNDX0RJUjE3UiBhbmQKCVJfUEFSSVNDX0RJUjE3RiBhcmUgZm9yIGFic29sdXRlIGJyYW5jaGVzOyBIYW5kbGUgdGhlbSBhcyBzdWNoLgoKMjAwMC0wNS0zMCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNwdS1pOTYwLmMgKHNjYW5fOTYwX21hY2gpOiBBY2NlcHQgODA5NjBLQSwgODA5NjBLQiwKCTgwOTYwQ0EsIDgwOTYwTUMgYXMgdmFsaWQgbWFjaGluZSBuYW1lcy4KCjIwMDAtMDUtMzAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuYyAoX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wpOiBDbGVhciB0aGUKCXZpc2liaWxpdHkgYml0cyBpZiB0aGUgc3ltYm9sIGlzIHVuZGVmaW5lZC4gQ29ycmVjdGx5IGhhbmRsZQoJd2VhayB1bmRlZmluZWQgc3ltYm9scyB3aXRoIGhpZGRlbiBhbmQgaW50ZXJuYWwgYXR0cmlidXRlcy4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogQWx3YXlzIHR1cm4gdGhlCglzeW1ib2wgaW50byBsb2NhbCBpZiBpdCBoYXMgdGhlIGhpZGRlbiBvciBpbnRlcm5hbCBhdHRyaWJ1dGUuCgoyMDAwLTA1LTI5ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogcHBjYm9vdC5jOiAgQWRkIHBhY2tlZCBhdHRyaWJ1dGUgaWYgY29tcGlsaW5nIHdpdGggR0NDLgoKMjAwMC0wNS0yOSAgQW5hdG9seSBWb3JvYmV5ICA8bWVsbG9uQHBvYm94LmNvbT4KCgkqIGVsZi5jIChfYmZkX2VsZl9saW5rX2hhc2hfdGFibGVfaW5pdCk6IEluaXRpYWxpemUgZHlubG9jYWwuCgoyMDAwLTA1LTI2ICBNaWNoYWVsIFNueWRlciAgPG1zbnlkZXJAc2VhZG9nLmN5Z251cy5jb20+CgoJKiBlbGYuYyAoZWxmY29yZV9ncm9rX3Byc3RhdHVzLCBlbGZjb3JlX2dyb2tfcHN0YXR1cywKCWVsZmNvcmVfZ3Jva19wc2luZm8pOiBBZGQgY29kZSB0byBhbGxvdyBkZWJ1Z2dpbmcgYSAzMi1iaXQKCWNvcmVmaWxlIG9uIGEgNjQtYml0IChTcGFyYyBTb2xhcmlzKSBob3N0LiAgQWxzbyBjbGVhbiB1cAoJYSBmZXcgb2xkIGNvbW1lbnRzLgoKMjAwMC0wNS0yNiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIE1ha2VmaWxlLmFtOiBVcGRhdGUgZGVwZW5kZW5jaWVzIHdpdGggIm1ha2UgZGVwLWFtIgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCgkqIHN5c2RlcC5oIChnZXR0ZXh0LCBkZ2V0dGV4dCwgZGNnZXR0ZXh0LCB0ZXh0ZG9tYWluLAoJYmluZHRleHRkb21haW4pOiBSZXBsYWNlIGRlZmluZXMgd2l0aCB0aG9zZSBmcm9tIGludGwvbGliZ2V0dGV4dC5oCgl0byBxdWlldGVuIGdjYyB3YXJuaW5ncy4KCjIwMDAtMDUtMjYgIEVsaSBaYXJldHNraWkgIDxlbGl6QGlzLmVsdGEuY28uaWw+CgoJKiBhb3V0eC5oIChmaW5kX25lYXJlc3RfbGluZSk6IFVzZSBJU19BQlNPTFVURV9QQVRILgoKCSogYXJjaGl2ZS5jIChub3JtYWxpemUsIGJmZF9ic2RfdHJ1bmNhdGVfYXJuYW1lLAoJYmZkX2dudV90cnVuY2F0ZV9hcm5hbWUpIFtIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTV06IFN1cHBvcnQKCWZpbGUgbmFtZXMgd2l0aCBiYWNrc2xhc2hlcy4KCgkqIGNhY2hlLmMgKGJmZF9vcGVuX2ZpbGUpIFtfX01TRE9TX19dOiBEb24ndCB1bmxpbmsgdGhlIGZpbGUKCWJlZm9yZSBvcGVuaW5nIGl0LgoKCSogc3lzZGVwLmg6IEluY2x1ZGUgZmlsZW5hbWVzLmguCgoyMDAwLTA1LTI2ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogb3BuY2xzLmMgKGJmZF9jbG9zZV9hbGxfZG9uZSk6IE1hc2sgZmlsZSBwZXJtcyB3aXRoIDA3Nzcgbm90IDB4Nzc3LgoKMjAwMC0wNS0yNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9yZWxheF9zZWN0aW9uKTogTmV3LgoJKHNwYXJjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBPcHRpbWl6ZSB0YWlsIGNhbGwgaW50byBicmFuY2ggYWx3YXlzCglpZiBwb3NzaWJsZS4KCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKGVsZjMyX3NwYXJjX3JlbGF4X3NlY3Rpb24pOiBOZXcuCgoyMDAwLTA1LTI2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZjY0LXNwYXJjLmM6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIHVudXNlZCBmdW5jdGlvbiBwYXJhbWV0ZXJzLgoJUmVtb3ZlIHVudXN1ZWQgdmFyaWFibGVzLgoJKHNwYXJjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBDaGFuZ2Ugcl9zeW1uZHggdHlwZSB0byB1bnNpZ25lZCBsb25nLgoJKHNwYXJjNjRfZWxmX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBGaXggc2hhcmVkIGxpYnJhcnkgY2FzZSBmcm9tCglwcmV2aW91cyBmaXgsIHNvIHRoYXQgc2hhcmVkIGxpYnMgcmVhbGx5IGRvbid0IGluZmx1ZW5jZSB0YXJnZXRzCglleHRlbnNpb24gbWFzayBhbmQgbWVtb3J5IG1vZGVsLgoKMjAwMC0wNS0yMyAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IENoZWNrCgloLT5yb290Lm90aGVyIG5vdCBoLT5vdGhlci4KCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IExpa2V3aXNlLgoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEZpeCBhIHR5cG8uCgoyMDAwLTA1LTIzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCBhbGxvdyB0aGUKCXVuZGVmaW5lZCBzeW1ib2wgd2l0aCB0aGUgbm9uLWRlZmF1bHQgdmlzaWJpbGl0eSBhdHRyaWJ1dGVzLgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzcwLmMgKGkzNzBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW1jb3JlLmMgKG1jb3JlX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBMaWtld2lzZS4KCSogZWxmMzItcHBjLmMgKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmNjQtaWE2NC5jIChlbGY2NF9pYTY0X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoKMjAwMC0wNS0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZjY0LWlhNjQuYyAoaWE2NF9ob3d0b190YWJsZSk6IEFkZCBQQ1JFTDYwQiwgUENSRUwyMUJJLAoJUENSRUwyMiwgUENSRUw2NEkuICBaZXJvIHNpemUgb2Ygc3BlY2lhbCByZWxvY3MuCgkoZWxmNjRfaWE2NF9yZWxvY190eXBlX2xvb2t1cCk6IExpa2V3aXNlLgoJKFVTRV9CUkwsIG9vcl9icmwsIG9vcl9pcCk6IE5ldy4KCShlbGY2NF9pYTY0X3JlbGF4X3NlY3Rpb24pOiBOZXcuCgkoZWxmNjRfaWE2NF9jaGVja19yZWxvY3MpOiBIYW5kbGUgUENSRUw2MEIsIFBDUkVMMjIsIFBDUkVMNjRJLgoJKGVsZjY0X2lhNjRfaW5zdGFsbF92YWx1ZSk6IExpa2V3aXNlLCBwbHVzIFBDUkVMMjFCSS4KCShlbGY2NF9pYTY0X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCShiZmRfZWxmNjRfYmZkX3JlbGF4X3NlY3Rpb24pOiBOZXcuCgkqIHJlbG9jLmMgKEJGRF9SRUxPQ19JQTY0X1BDUkVMMjFCSSk6IE5ldy4KCShCRkRfUkVMT0NfSUE2NF97UENSRUwyMixQQ1JFTDYwQixQQ1JFTDY0SX0pOiBOZXcuCgkqIGJmZC1pbjIuaCwgbGliYmZkLmg6IFJlZ2VuZXJhdGUuCgoyMDAwLTA1LTIyICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluIDogQWRkIHBlaWdlbi5sbyB0byBNSVBTIFBFIHRhcmdldHMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDUtMjIgIE1vbWNoaWwgVmVsaWtvdiAgPHZlbGNvQGZhZGF0YS5iZz4KCgkqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfdmVyaWZ5X2VuZGlhbl9tYXRjaCk6IENvbXBhcmUgZW5kaWFuZXNzCglvbmx5IGlmIGl0IGlzIGtub3duIGZvciBib3RoIGlucHV0IGFuZCBvdXRwdXQgYmZkcy4gU2VwYXJhdGUKCWVycm9yIG1lc3NhZ2Ugc3RyaW5ncyBhcyBpbiBzb21lIGxhbmd1YWdlcywgaXQgbWF5IGJlIG5lY2Vzc2FyeQoJdG8gY2hhbmdlIG1vcmUgdGhhbiBvbmUgcGxhY2UgaW4gdGhlIHN0cmluZyB0byBjaGFuZ2UgYmV0d2VlbgoJJ2JpZycgYW5kICdsaXR0bGUnLgoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IFJlbW92ZSBpbmxpbmUKCWVuZGlhbmVzcyBjaGVja3MsIGNhbGwgX2JmZF9nZW5lcmljX3ZlcmlmeV9lbmRpYW5fbWF0Y2goKSBpbnN0ZWFkLgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBMaWtld2lzZS4KCgkqIGVsZjMyLW1jb3JlLmMgKG1jb3JlX2VsZl9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogTGlrZXdpc2UuCgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBMaWtld2lzZS4gVmVyaWZ5CgllbmRpYW5lc3MgYmVmb3JlIGNoZWNraW5nIGJmZCBmbGF2b3Vycy4KCjIwMDAtMDUtMjIgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSk6IENsZWFyIHRoZSB2aXNpYmlsaXR5CglmaWVsZCBmb3Igc3ltYm9scyBub3QgZGVmaW5lZCBsb2NhbGx5LgoKMjAwMC0wNS0xOCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGxpYmhwcGEuaCAocmVfYXNzZW1ibGVfMywgcmVfYXNzZW1ibGVfMTIsIHJlX2Fzc2VtYmxlXzE2LAoJcmVfYXNzZW1ibGVfMTcsIHJlX2Fzc2VtYmxlXzIxLCByZV9hc3NlbWJsZV8yMik6IERvbid0IG1hc2sgaW5zbi4KCShocHBhX3JlYnVpbGRfaW5zbik6IE1hc2sgaW1tZWRpYXRlIGJpdHMgaGVyZSBpbnN0ZWFkLgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9yZWxvY2F0ZV9pbnNuKTogTWFzayBoZXJlIHRvby4KCjIwMDAtMDUtMTggIE1vbWNoaWwgVmVsaWtvdiA8dmVsY29AZmFkYXRhLmJnPgoKCSogZWxmbGluay5oIChlbGZfYmZkX2ZpbmFsX2xpbmssIGVsZl9saW5rX2lucHV0X2JmZCk6IFdoZW4gZW1pdGluZwoJcmVsb2NzIGZvciBhbiBleGVjdXRhYmxlLCBlbnN1cmUgdGhhdCB0aGV5IGFyZSB2aXJ0dWFsIGFkZHJlc3Nlcy4KCjIwMDAtMDUtMTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy5iZmQgKGhwcGEqNjQqLSotaHB1eDExKik6IE5ldyB0YXJnZXQgdHJpcGxldC4KCjIwMDAtMDUtMTcgIFMuIEJoYXJhZHdhaiBZYWRhdmFsbGkgIDxzYnlAc2NydWdzLmxrZy5kZWMuY29tPgoJICAgIFJpY2sgR29ydG9uCSAgICAgICAgICAgIDxnb3J0b25Ac2NydWdzLmxrZy5kZWMuY29tPgoKCSogZWxmbGluay5oOiBBZGQgZW1pdHJlbG9jYXRpb25zIHN1cHBvcnQ6IHdoZW4gZW5hYmxlZCwgcmVsb2NhdGlvbgoJaW5mb3JtYXRpb24gYW5kIHJlbG9jYXRpb24gc2VjdGlvbnMgYXJlIHB1dCBpbnRvIGZpbmFsIG91dHB1dAoJZXhlY3V0YWJsZXMuICBJZiB0aGUgZW1pdHJlbG9jYXRpb25zIGZsYWcgaXMgc2V0LCBkbyB0aGUgZm9sbG93aW5nOgoJKGVsZl9iZmRfZmluYWxfbGluayk6IEVtaXQgcmVsb2NhdGlvbiBzZWN0aW9ucy4KCShlbGZfbGlua19pbnB1dF9iZmQpOiBDb21wdXRlIHJlbG9jYXRpb24gc2VjdGlvbiBjb250ZW50cy4KCShlbGZfZ2Nfc2VjdGlvbnMpOiBEb24ndCBjbGVhbiByZWxvY2F0aW9uIHNlY3Rpb25zLgoKMjAwMC0wNS0xNiAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBzb20uYyAoc29tX2RlY29kZV9zeW1jbGFzcyk6ICBSZWNvZ25pemUgd2VhayBzeW1ib2xzLgoKMjAwMC0wNS0xNiAgU3phYm9sY3MgU3pha2Fjc2l0cyA8c3pha2FARi1TZWN1cmUuY29tPgoKCSogcGVpZ2VuLmMgKHBlX3ByaW50X2lkYXRhKTogVW5kbyBwYXJ0IG9mIDIwMDAtMDUtMTIgY2hhbmdlIHRoYXQKCXJlYWQgaWRhdGEgc2VjdGlvbiBvbmx5IGZyb20gZGF0YW9mZi4KCShwZV9wcmludF9lZGF0YSk6IENvcnJlY3RseSBjaGVjayBmb3IgdmFsaWQgZWF0X21lbWJlci4KCjIwMDAtMDUtMTYgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9yZWxheF9kZWxldGVfYnl0ZXMpOiBIYW5kbGUgUl9TSF9TV0lUQ0g4LgoKMjAwMC0wNS0xNCAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZy5iZmQgKGFybWViLSotZWxmLCBhcm0qYi0qLWxpbnV4LWdudSopOiBOZXcgdGFyZ2V0cy4KCjIwMDAtMDUtMTIgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiB0YXJnZXRzLmMgKGJmZF90YXJnZXRfdmVjdG9yKTogI2lmZGVmIEJGRDY0IHJzNjAwMGNvZmY2NF92ZWMKCgkqIHBlaWdlbi5jIChwZV9wcmludF9pZGF0YSk6IExvb2sgZm9yIC5pZGF0YSBzZWN0aW9uIGFuZCBwcmludAoJaW5mbyBldmVuIGlmIGRhdGEgZGlyZWN0b3J5IGhhcyB6ZXJvIGVudHJpZXMuICBSZWFkIGlkYXRhIHNlY3Rpb24KCXN0YXJ0aW5nIGZyb20gZGF0YW9mZiwgYW5kIGFkanVzdCBhbGwgZGF0YSBvZmZzZXRzIHRvIHN1aXQuICBDYXN0CglhbGwgYmZkX3ZtYSB2YXJzIHRvIHVuc2lnbmVkIGxvbmcgYmVmb3JlIHBhc3NpbmcgdG8gZnByaW50Zi4KCSogcGVpZ2VuLmMgKHBlX3ByaW50X2VkYXRhKTogU2ltaWxhcmx5LCBsb29rIGZvciAuZWRhdGEgc2VjdGlvbgoJYW5kIHByaW50IGluZm8gZXZlbiBpZiBkYXRhIGRpcmVjdG9yeSBoYXMgemVybyBlbnRyaWVzLiAgQ2FzdAoJYWxsIGJmZF92bWEgdmFycyB0byB1bnNpZ25lZCBsb25nIGJlZm9yZSBwYXNzaW5nIHRvIGZwcmludGYuCgoJRnJvbSBTemFib2xjcyBTemFrYWNzaXRzIDxzemFrYUBGLVNlY3VyZS5jb20+CgkqIHBlaWdlbi5jIChwZV9wcmludF9pZGF0YSk6IFVzZSBiZmRfc2VjdGlvbl9zaXplIHJhdGhlciB0aGFuIGRhdGEKCWRpcmVjdG9yeSBzaXplIHdoaWNoIG1heSBiZSBib2d1cy4KCSogcGVpZ2VuLmMgKHBlX3ByaW50X2VkYXRhKTogU2ltaWxhcmx5LgoKMjAwMC0wNS0wOSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZi5jIChiZmRfc2VjdGlvbl9mcm9tX3NoZHIpOiBEb24ndCBzZXQgdXNlX3JlbGFfcCBpZiByZWxhCglzZWN0aW9uIGlzIGVtcHR5LgoJKGNvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IEFsbG93IGZvciBzcGFjZSBwb3NzaWJseSB0YWtlbiB1cCBieSBlbGYKCWhlYWRlcnMgd2hlbiBjYWxjdWxhdGluZyBzZWdtZW50IHBoeXNpY2FsIGFkZHJlc3MgZnJvbSBsbWEuCgoyMDAwLTA1LTA4ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogdmVyc2Fkb3MuYyAodmVyc2Fkb3Nfc2Nhbik6IEluaXQgc3RyaW5nbGVuIGFuZCBwYXNzXzJfZG9uZS4KCgkqIHRyYWQtY29yZS5jICh0cmFkX3VuaXhfY29yZV9maWxlX3ApOiBSZXR1cm4KCWJmZF9lcnJvcl93cm9uZ19mb3JtYXQgcmF0aGVyIHRoYW4gYmZkX2Vycm9yX2ZpbGVfdHJ1bmNhdGVkLgoKCSogcGVpZ2VuLmMgKF9iZmRfcGVpX3N3YXBfYW91dGhkcl9vdXQpOiBQYXNzIEltYWdlQmFzZSB0bwoJYWRkX2RhdGFfZW50cnkuICBEYXRhRGlyZWN0b3J5IHZpcnR1YWwgYWRkcmVzcyBpcyByZWxhdGl2ZS4KCShwZV9wcmludF9pZGF0YSk6IEFjY291bnQgZm9yIHJlbGF0aXZlIERhdGFEaXJlY3RvcnkgdmlydHVhbAoJYWRkcmVzc2VzLiAgRG9uJ3QgdHJhc2ggZGF0YXNpemUgaW5zaWRlIFBPV0VSUENfTEVfUEUgY29kZS4KCShwZV9wcmludF9lZGF0YSk6IFNpbWlsYXJseS4KCglGcm9tIFN6YWJvbGNzIFN6YWthY3NpdHMgPHN6YWthQEYtU2VjdXJlLmNvbT4KCSogcGVpZ2VuLmMgKGRpcl9uYW1lcyk6IEFkZCBEZWxheSBJbXBvcnQgRGlyZWN0b3J5LgoJKHBlX3ByaW50X2lkYXRhKTogIEFsd2F5cyBzZWFyY2ggZm9yIGJmZCBzZWN0aW9uIGNvbnRhaW5pbmcKCWlkYXRhIGFkZHJlc3MgcmF0aGVyIHRoYW4gbG9va2luZyB1cCBzZWN0aW9uIG5hbWUuICBQcmludCB0aGlzCglzZWN0aW9uIG5hbWUgcmF0aGVyIHRoYW4gLmlkYXRhLgoJKHBlX3ByaW50X2VkYXRhKTogU2ltaWxhcmx5LiAgQWxzbyBwcmludCBzb21lIGZpZWxkcyBhcyAlMDhseC4KCShfYmZkX3BlX3ByaW50X3ByaXZhdGVfYmZkX2RhdGFfY29tbW9uKTogUHJpbnQgUmVzZXJ2ZWQxIGZpZWxkIGFzCglXaW4zMlZlcnNpb24uCgoyMDAwLTA1LTA1ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIHhjb2ZmLmg6IFJlbmFtZSB0byB4Y29mZi10YXJnZXQuaAoJKiBNYWtlZmlsZS5hbTogQ2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgeGNvZmYuaCB0byB4Y29mZi10YXJnZXQuaAoJKiBjb2ZmLXJzNjAwMC5jOiBEaXR0by4KCSogY29mZjY0LXJzNjAwMC5jOiBEaXR0by4KCSogY29mZi1wbWFjLmM6IERpdHRvLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCjIwMDAtMDUtMDUgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29mZmNvZGUuaCAoY29mZl9zZXRfYXJjaF9tYWNoX2hvb2ssIGNvZmZfc2V0X2ZsYWdzKToKCUNoYW5nZSBVODAyVE9DNjRNQUdJQyB0byBVODAzWFRPQ01BR0lDLgoKMjAwMC0wNS0wNCAgTWljaGFlbCBTbnlkZXIgIDxtc255ZGVyQHNlYWRvZy5jeWdudXMuY29tPgoKCSogZWxmLmMgKGJmZF9lbGZfZ2V0X2FyY2hfc2l6ZSk6IE5ldyBmdW5jdGlvbiwgcmV0dXJuIDMyIHwgNjQgfCAtMS4KCSogYmZkLWluLmg6IFByb3RvdHlwZSBiZmRfZWxmX2dldF9hcmNoX3NpemUuCgkqIGJmZC1pbjIuaDogUHJvdG90eXBlIGJmZF9lbGZfZ2V0X2FyY2hfc2l6ZS4KCjIwMDAtMDUtMDQgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBsaWJocHBhLmggKEhQUEFfUl9DT05TVEFOVCk6IENhc3QgYXJndW1lbnQgdG8gYmZkX3NpZ25lZF92bWEuCgoyMDAwLTA1LTAzICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IFJlc2V0IGR5bmluZHggZm9yCgloaWRkZW4gYW5kIGludGVybmFsIHN5bWJvbHMuCgkoZWxmX2ZpeF9zeW1ib2xfZmxhZ3MpOiBDbGVhciBORUVEU19QTFQgZm9yIHN5bWJvbHMgd2l0aAoJdmlzaWJpbGl0eS4KCSogZWxmbGluay5jIChfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCk6IERvIG5vdAoJYXNzaWduIGEgUExUIG9yIEdPVCBlbnRyeSB0byBzeW1ib2xzIHdpdGggaGlkZGVuIGFuZAoJaW50ZXJuYWwgdmlzaWJpbGl0eS4KCjIwMDAtMDUtMDMgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBiZmQvY29mZi1nbzMyLmMgKENPRkZfU0VDVElPTl9BTElHTk1FTlRfRU5UUklFUyk6IEFkZCBlbnRyeSBmb3IKCXRoZSAuYnNzIHNlY3Rpb24uCgkqIGJmZC9jb2ZmLXN0Z28zMi5jIChDT0ZGX1NFQ1RJT05fQUxJR05NRU5UX0VOVFJJRVMpOiBMaWtld2lzZS4KCjIwMDAtMDUtMDIgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZi5jIChwcmVwX2hlYWRlcnMpOiBVc2UgRUxGT1NBQklfTk9ORSBpbnN0ZWFkIG9mCglFTEZPU0FCSV9TWVNWLgoKMjAwMC0wNS0wMiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHRhcmdldHMuYyAoYmZkX3RhcmdldF92ZWN0b3IpOiBSZXN0b3JlIGJmZF9lbGYzMl9ocHBhX3ZlYy4KCSogTWFrZWZpbGUuYW0gKEJGRDMyX0JBQ0tFTkRTKTogUmVzdG9yZSBlbGYzMi1ocHBhLmxvLiAgUmVnZW5lcmF0ZQoJZGVwZW5kZW5jaWVzLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCjIwMDAtMDUtMDEgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChCRkQzMl9CQUNLRU5EUyk6IEFkZCBlZmktYXBwLWlhMzIubG8uCgkoQkZEMzJfQkFDS0VORFNfQ0ZJTEVTKTogQWRkIGVmaS1hcHAtaWEzMi5jLgoJKEJGRDY0X0JBQ0tFTkRTKTogRGVsZXRlIGNvZmYtaWE2NC5sby4gIEFkZCBlZmktYXBwLWlhNjQubG8uCgkoQkZENjRfQkFDS0VORFNfQ0ZJTEVTKTogRGVsZXRlIGNvZmYtaWE2NC5jLiAgQWRkIGVmaS1hcHAtaWE2NC5jLgoJKiBNYWtlZmlsZS5pbjogUmVidWlsZC4KCjIwMDAtMDUtMDIgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBjb25maWcuYmZkOiBSZS1lbmFibGUgZWxmMzItaHBwYS4gIEl0IG5vdyBjb21waWxlcywgZXZlbiBpZiBpdAoJZG9lc24ndCB3b3JrIHZlcnkgd2VsbC4KCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX2ludGVybmFsX3NoZHIpOiBEZWZpbmUuCgkoZWxmX2hwcGFfZmFrZV9zZWN0aW9ucyk6IGhkciBpcyBlbGZfaHBwYV9pbnRlcm5hbF9zaGRyLgoJU2V0IGhkci0+c190eXBlIHRvIDEgaWYgQVJDSF9TSVpFID09IDMyLgoJKF9iZmRfZWxmX2hwcGFfZ2VuX3JlbG9jX3R5cGUpOiBBZGQgcHJvdG90eXBlLgoJKGVsZl9ocHBhX2luZm9fdG9faG93dG8pOiBMaWtld2lzZS4KCShlbGZfaHBwYV9pbmZvX3RvX2hvd3RvX3JlbCk6IExpa2V3aXNlLgoJKGVsZl9ocHBhX3JlbG9jX3R5cGVfbG9va3VwKTogTGlrZXdpc2UuCgkoZWxmX2hwcGFfaXNfbG9jYWxfbGFiZWxfbmFtZSk6IExpa2V3aXNlLgoJKGVsZl9ocHBhX2Zha2Vfc2VjdGlvbnMpOiBMaWtld2lzZS4KCShlbGZfaHBwYV9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkoZWxmX2hwcGFfaG93dG9fdGFibGUpOiBGdWxseSBpbml0aWFsaXNlIGFsbCBlbnRyaWVzLgoJKF9iZmRfZWxmX2hwcGFfZ2VuX3JlbG9jX3R5cGUpOiBBZGQgQVRUUklCVVRFX1VOVVNFRCB0byBhcmdzLgoJKGVsZl9ocHBhX2luZm9fdG9faG93dG8pOiBMaWtld2lzZS4KCShlbGZfaHBwYV9pbmZvX3RvX2hvd3RvX3JlbCk6IExpa2V3aXNlLgoJKGVsZl9ocHBhX3JlbG9jX3R5cGVfbG9va3VwKTogTGlrZXdpc2UuCgkoZWxmX2hwcGFfZmluYWxfd3JpdGVfcHJvY2Vzc2luZywgZWxmX2hwcGFfYWRkX3N5bWJvbF9ob29rLAoJZWxmX2hwcGFfdW5tYXJrX3VzZWxlc3NfZHluYW1pY19zeW1ib2xzLAoJZWxmX2hwcGFfcmVtYXJrX3VzZWxlc3NfZHluYW1pY19zeW1ib2xzLAoJZWxmX2hwcGFfcmVjb3JkX3NlZ21lbnRfYWRkcnMsIGVsZl9ocHBhX2ZpbmFsX2xpbmssCgllbGZfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uLCBlbGZfaHBwYV9maW5hbF9saW5rX3JlbG9jYXRlLAoJZWxmX2hwcGFfcmVsb2NhdGVfaW5zbik6IENvbXBpbGUgb25seSBpZiBBUkNIX1NJWkUgPT0gNjQgdW50aWwKCWVsZjMyLWhwcGEuYyBtZXNzIGlzIGNsZWFuZWQgdXAuCgkoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IE1ha2UgaW5zbiBhbmQgcl90eXBlIHVuc2lnbmVkCglpbnQuICBEZWxldGUgcl9maWVsZC4gIEluIGNhc2UgUl9QQVJJU0NfUENSRUwyMUwsIGRvbid0IHNldAoJcl9maWVsZCB0aGVuIGNhbGwgaHBwYV9maWVsZF9hZGp1c3QgaW5saW5lIGZ1bmMgd2l0aCB2YXJpYWJsZQoJcl9maWVsZCBhcmcsIGluc3RlYWQgY2FsbCBocHBhX2ZpZWxkX2FkanVzdCB3aXRoIGZpeGVkIGFyZy4KCUluIGNhc2UgUl9QQVJJU0NfUENSRUwyMkYsIGRvbid0IHNldCByX2ZpZWxkLgoJKGVsZl9ocHBhX3JlbG9jYXRlX2luc24pOiBDaGFuZ2UgYXJncyBhbmQgcmV0dXJuIHR5cGUgdG8gdW5zaWduZWQKCWludC4gIENhbGwgcmVfYXNzZW1ibGVfKiBmdW5jcyB0byBkbyB0aGUgd29yay4KCgkqIGVsZjMyLWhwcGEuYyAoaHBwYV9lbGZfcmVsb2NhdGVfaW5zbik6IERvbid0IGFzc3VtZSAzMiBiaXQgd2hlbgoJc2lnbiBleHRlbmRpbmcuCgoJKiBsaWJocHBhLmggKEhQUEFfUl9DT05TVEFOVCk6IERvbid0IGFzc3VtZSAzMiBiaXQgd2hlbiBzaWduCglleHRlbmRpbmcuCgkoc2lnbl9leHRlbmQpOiBNYXNrIGZpcnN0IGJlZm9yZSBzaWduIGV4dGVuZGluZy4KCShsb3dfc2lnbl9leHRlbmQpOiBSZXdyaXRlIHdpdGhvdXQgY29uZGl0aW9uIGV4cHJlc3Npb24uCgkob25lcywgZGlzX2Fzc2VtYmxlXzMsIGRpc19hc3NlbWJsZV8xMiwgZGlzX2Fzc2VtYmxlXzE2LAoJZGlzX2Fzc2VtYmxlXzE3LCBkaXNfYXNzZW1ibGVfMjEsIGRpc19hc3NlbWJsZV8yMik6IERlbGV0ZS4KCShhc3NlbWJsZV8zLCBhc3NlbWJsZV82LCBhc3NlbWJsZV8xMiwgYXNzZW1ibGVfMTYsIGFzc2VtYmxlXzE2YSwKCWFzc2VtYmxlXzE3LCBhc3NlbWJsZV8yMSwgc2lnbl91bmV4dCwgbG93X3NpZ25fdW5leHQpOiBSZXR1cm4KCXJlc3VsdCBhcyBmdW5jdGlvbiByZXR1cm4gdmFsdWUgcmF0aGVyIHRoYW4gdGhyb3VnaCBwb2ludGVyIGFyZy4KCUFjY2VwdCB1bnNpZ25lZCBpbnQgYXJncywgYW5kIHJldHVybiB1bnNpZ25lZCBpbnQuCgkocmVfYXNzZW1ibGVfMyk6IE5ldy4gIENvbWJpbmVzIGZ1bmN0aW9uIG9mIGRpc19hc3NlbWJsZV8zIHdpdGgKCXJlLWFzc2VtYmx5IG9mIG9wY29kZSBhbmQgaW1tZWRpYXRlLgoJKHJlX2Fzc2VtYmxlXzEyKTogTGlrZXdpc2UuCgkocmVfYXNzZW1ibGVfMTYpOiBMaWtld2lzZS4KCShyZV9hc3NlbWJsZV8xNyk6IExpa2V3aXNlLgoJKHJlX2Fzc2VtYmxlXzIxKTogTGlrZXdpc2UuCgkocmVfYXNzZW1ibGVfMjIpOiBMaWtld2lzZS4KCShocHBhX2ZpZWxkX2FkanVzdCk6IFJld3JpdGUgYW5kIGRvY3VtZW50LCBwYXlpbmcgYXR0ZW50aW9uIHRvCglzaXplIG9mIHR5cGVzIGFuZCBzaWduZWQvdW5zaWduZWQgaXNzdWVzLgoJKGdldF9vcGNvZGUpOiBTaGlmdCBiZWZvcmUgbWFza2luZy4KCShGRExXKTogUmVuYW1lIHRvIEZMRFcuCgkoYmZkX2hwcGFfaW5zbjJmbXQpOiBDaGFuZ2UgYXJnIHRvIHVuc2lnbmVkIGludC4gIERlbGV0ZSBmbXQuCgkoaHBwYV9yZWJ1aWxkX2luc24pOiBDaGFuZ2UgYXJncyBhbmQgcmV0dXJuIHZhbHVlIHRvIHVuc2lnbmVkCglpbnQuICBNYWtlIHVzZSBvZiByZV9hc3NlbWJsZV8qLiAgQ29ycmVjdCBjYXNlIDExLgoKCSogZGVwLWluLnNlZDogSGFuZGxlIC4uL29wY29kZXMvLgoJKiBNYWtlZmlsZS5hbSAoU09VUkNFX0hGSUxFUyk6IEFkZCBlbGYtaHBwYS5oLCBlbGYzMi1ocHBhLmgsCgllbGY2NC1ocHBhLmgsIGhwcGFfc3R1YnMuaCwgeGNvZmYuaC4KCShCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBSZXN0b3JlIGVsZjMyLWhwcGEuYy4KCVJlbW92ZSBlbGY2NC1ocHBhLmxvLCBjcHUtaWE2NC5sbywgZWxmNjQtaWE2NC5sbywgZWxmYXJtLW9hYmkubG8sCgllbGZhcm0tbmFiaS5sbyBkZXBlbmRlbmNpZXMgb3V0c2lkZSBvZiBhdXRvLWRlcGVuZGVuY3kgYXJlYS4KCVJlZ2VuZXJhdGUgZGVwZW5kZW5jaWVzLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZ3VyZS5pbiAoVFJBRF9IRUFERVIpOiBUZXN0IG5vbi1udWxsIGJlZm9yZQoJQUNfREVGSU5FX1VOUVVPVEVELgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiByZWxvYy5jOiBGaXggbWlzLXNwZWxsaW5nIGluIGNvbW1lbnQuCgoyMDAwLTA1LTAxICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogY29mZi1zaC5jIChiZmRfY29mZl9zbWFsbF9zd2FwX3RhYmxlKTogRml4IEZyaSBBcHIgMjggY2hhbmdlLgoJKiB2bXMuYyAodm1zX29wZW5yX25leHRfYXJjaGl2ZWRfZmlsZSk6IFJldHVybiBOVUxMLgoKMjAwMC0wNC0yOCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb2ZmY29kZS5oIENvcHkgY2hhbmdlcyBtaXN0YWtlbmx5IGRvbmUgdG8gbGliY29mZi5oIGluCgk0LzI0LzIwMDAgcGF0Y2guCgoyMDAwLTA0LTI5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBsaWJiZmQtaW4uaDogQ29ycmVjdGx5IGNoZWNrIEdDQyB2ZXJzaW9uLgoJKiBiZmQtaW4uaDogTGlrZXdpc2UuCgkqIGxpYmhwcGEuaDogTGlrZXdpc2UuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoyMDAwLTA0LTI4ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChCRkQ2NF9CQUNLRU5EUywgQkZENjRfQkFDS0VORFNfQ0ZJTEVTKTogQWRkCgljb2ZmZHUtcnM2MDAwLntsbyxjfS4KCShjb2ZmLXBtYWMubG8sIGNvZmYtcnM2MDAwLmxvLCBjb2ZmNjQtcnM2MDAwLmxvKTogQWRkIGRlcGVuZGVuY3kKCW9uIHhjb2ZmLmgKCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIHhjb2ZmLmg6IE5ldyBmaWxlLgoJKiBjb2ZmLXBtYWMuYzogVXNlIHhjb2ZmLmggaW5zdGVhZCBvZiBjb2ZmLXJzNjAwMC5jLgoJKiBjb2ZmLXJzNjAwMC5jOiBNb3ZlIGFsbCBkZWNsYXJhdGlvbnMgYW5kIGRlZmluZXMgdGhhdCBhcmUKCWNvbW1vbiB0byB0aGUgeGNvZmYgYmFja2VuZHMgaW50byB4Y29mZi5oCgkqIGNvZmY2NC1yczYwMDAuYzogRGl0dG8sCgoyMDAwLTA0LTI4ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvZmYtbWlwcy5jIChtaXBzX2Vjb2ZmX2JhY2tlbmRfZGF0YSk6ICBBZGQgaW5pdGlhbGl6YXRpb24gb2YKCV9iZmRfY29mZl9mb3JjZV9zeW1uYW1lcyBpbiBzdHJpbmdzIGFuZAoJX2JmZF9jb2ZmX2RlYnVnX3N0cmluZ19wcmVmaXhfbGVuZ3RoIHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzLgoJKiBjb2ZmLXNoLmM6IChiZmRfY29mZl9zbWFsbF9zd2FwX3RhYmxlKTogRGl0dG8uCgoyMDAwLTA0LTI4ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvZmYtYWxwaGEuYyAoYWxwaGFfZWNvZmZfYmFja2VuZF9kYXRhKTogQWRkIGluaXRpYWxpemF0aW9uIG9mCglfYmZkX2NvZmZfZm9yY2Vfc3ltbmFtZXMgaW4gc3RyaW5ncyBhbmQKCV9iZmRfY29mZl9kZWJ1Z19zdHJpbmdfcHJlZml4X2xlbmd0aCB0byB0aGVpciBkZWZhdWx0IHZhbHVlcy4KCjIwMDAtMDQtMjcgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1tNjhrLmMgKGVsZl9tNjhrX2djX3N3ZWVwX2hvb2spOiAgUmV0dXJuIGlmIGR5bm9iaiBOVUxMLgoJQ2hlY2sgbG9jYWxfZ290X3JlZmNvdW50cyBiZWZvcmUgZGVyZWZlcmVuY2luZy4KCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBDaGVjayBzcGx0ICE9IE5VTEwKCWJlZm9yZSBkZWNpZGluZyB3ZSBkb24ndCBuZWVkIFJfUFBDX1BMVDMyIHJlbG9jYXRpb24uCgkocHBjX2VsZl9nY19zd2VlcF9ob29rKTogQ2hlY2sgbG9jYWxfZ290X3JlZmNvdW50cyBiZWZvcmUKCWRlcmVmZXJlbmNpbmcuCgoJKiBlbGZsaW5rLmggKGVsZl9nY19jb21tb25fZmluYWxpemVfZ290X29mZnNldHMpOiBGaXggY29tbWVudC4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfY2hlY2tfcmVsb2NzKTogUmVmZXJlbmNlIGNvdW50IC5nb3QgYW5kCgkucGx0IGVudHJpZXMuCgkoZWxmX2kzODZfZ2Nfc3dlZXBfaG9vayk6IEdhcmJhZ2UgY29sbGVjdCAuZ290IGFuZCAucGx0IGVudHJpZXMuCgkoZWxmX2kzODZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogUmVjb2duaXplIHVudXNlZCAucGx0IGVudHJpZXMuCgkoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IEFsbG93IGZvciAucGx0IHRvIGdvIG1pc3NpbmcuCgkoZWxmX2kzODZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogVXNlIHNhbWUgdGVzdCB0byBkZWNpZGUgaWYgd2UKCWNhbiB1c2UgYSByZWxhdGl2ZSByZWxvYyBmb3IgZ290IGFzIGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24uCgkoYmZkX2VsZjMyX2JmZF9maW5hbF9saW5rKTogRGVmaW5lIHRvIHVzZSBnYyBmb3JtIG9mIGZpbmFsIGxpbmsuCgoyMDAwLTA0LTI2ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy5iZmQ6IFJlbW92ZSBleHRyYW5lb3VzIGJmZF9wb3dlcnBjXzY0X2FyY2guCgoyMDAwLTA0LTI0ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChjb2ZmNjQtcnM2MDAwLmxvKTogTmV3IHJ1bGUuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBjb2ZmLXJzNjAwMC5jICh4Y29mZl9ta29iamVjdCwgeGNvZmZfY29weV9wcml2YXRlX2JmZF9kYXRhLAoJeGNvZmZfaXNfbG9jYWxfbGFiZWxfbmFtZSwgeGNvZmZfcnR5cGUyaG93dG8sCgl4Y29mZl9yZWxvY190eXBlX2xvb2t1cCwgeGNvZmZfc2x1cnBfYXJtYXAsIHhjb2ZmX2FyY2hpdmVfcCwKCXhjb2ZmX3JlYWRfYXJfaGRyLCB4Y29mZl9vcGVucl9uZXh0X2FyY2hpdmVkX2ZpbGUsIHhjb2ZmX3dyaXRlX2FybWFwLAoJeGNvZmZfd3JpdGVfYXJjaGl2ZV9jb250ZW50cyk6IE5vIGxvbmdlciBzdGF0aWMsIGFuZCBwcmVmaXggd2l0aCBfYmZkXy4KCShOT19DT0ZGX1NZTUJPTFMpOiBEZWZpbmUuCgkoeGNvZmY2NF9zd2FwX3N5bV9pbiwgeGNvZmY2NF9zd2FwX3N5bV9vdXQsIHhjb2ZmNjRfc3dhcF9hdXhfaW4sCgl4Y29mZjY0X3N3YXBfYXV4X291dCk6IE5ldyBmdW5jdGlvbnM7IGhhbmRsZSB4Y29mZiBzeW1ib2wgdGFibGVzCglpbnRlcm5hbGx5LgoJKE1JTlVTX09ORSk6IE5ldyBtYWNyby4KCSh4Y29mZl9ob3d0b190YWJsLCB4Y29mZl9yZWxvY190eXBlX2xvb2t1cCk6IEFkZCA2NCBiaXQgUE9TCglyZWxvY2F0aW9uLgoJKGNvZmZfU1dBUF9zeW1faW4sIGNvZmZfU1dBUF9zeW1fb3V0LCBjb2ZmX1NXQVBfYXV4X2luLAoJY29mZl9TV0FQX2F1eF9vdXQpOiBNYXAgdG8gdGhlIG5ldyBmdW5jdGlvbnMuCgkqIGNvZmY2NC1yczYwMDAuYzogTmV3IGZpbGUuCgkqIGxpYmNvZmYuaCAoYmZkX2NvZmZfYmFja2VuZF9kYXRhKTogQWRkIG5ldyBmaWVsZHMKCV9iZmRfY29mZl9mb3JjZV9zeW1uYW1lc19pbl9zdHJpbmdzIGFuZAoJX2JmZF9jb2ZmX2RlYnVnX3N0cmluZ19wcmVmaXhfbGVuZ3RoLgoJKGJmZF9jb2ZmX2ZvcmNlX3N5bW5hbWVzX2luX3N0cmluZ3MsCgliZmRfY29mZl9kZWJ1Z19zdHJpbmdfcHJlZml4X2xlbmd0aCk6IE5ldyBtYWNyb3MgZm9yIGFib3ZlIGZpZWxkcy4KCSogY29mZmNvZGUuaCAoY29mZl9zZXRfYXJjaF9tYWNoX2hvb2spOiBIYW5kbGUgWENPRkY2NCBtYWdpYy4KCVNldCBtYWNoaW5lIHRvIDYyMCBmb3IgWENPRkY2NC4gIFVzZSBiZmRfY29mZl9zd2FwX3N5bV9pbiBpbnN0ZWFkCglvZiB1c2luZyBjb2ZmX3N3YXBfc3ltX2luIGRpcmVjdGx5LgoJKEZPUkNFX1NZTU5BTUVTX0lOX1NUUklOR1MpOiBOZXcgbWFjcm8sIGRlZmluZWQgZm9yIFhDT0ZGNjQuCgkoY29mZl9zZXRfZmxhZ3MpIFNldCBtYWdpYyBmb3IgWENPRkY2NC4KCShjb2ZmX2NvbXB1dGVfc2VjdGlvbl9maWxlX3Bvc2l0aW9ucyk6IEFkZCBzeW1ib2wgbmFtZSBsZW5ndGggdG8KCXN0cmluZyBzZWN0aW9uIGxlbmd0aCBpZiBiZmRfY29mZl9kZWJ1Z19zdHJpbmdfcHJlZml4X2xlbmd0aCBpcwoJdHJ1ZS4KCShjb2ZmX3dyaXRlX29iamVjdF9jb250ZW50cyk6IERvbid0IGRvIHJlbG9jIG92ZXJmbG93IGZvciBYQ09GRjY0LgoJKGNvZmZfc2x1cnBfbGluZV90YWJsZSk6IFVzZSBiZmRfY29mZl9zd2FwX2xpbmVub19pbiBpbnN0ZWFkIG9mCgl1c2luZyBjb2ZmX3N3YXBfbGluZW5vX2luIGRpcmVjdGx5LgoJKGJmZF9jb2ZmX2JhY2tlbmRfZGF0YSk6IEFkZCBfYmZkX2NvZmZfZm9yY2Vfc3ltbmFtZXNfaW5fc3RyaW5ncwoJYW5kIF9iZmRfY29mZl9kZWJ1Z19zdHJpbmdfcHJlZml4X2xlbmd0aCBmaWVsZHMuCgkqIGNvZmZnZW4uYyAoY29mZl9maXhfc3ltYm9sX25hbWUsIGNvZmZfd3JpdGVfc3ltYm9scyk6IEZvcmNlCglzeW1ib2wgbmFtZXMgaW50byBzdHJpbmdzIHRhYmxlIHdoZW4KCWJmZF9jb2ZmX2ZvcmNlX3N5bW5hbWVzX2luX3N0cmluZ3MgaXMgdHJ1ZS4KCSogY29mZnN3YXAuaCAoTUFYX1NDTkhEUl9OUkVMT0MsIE1BWF9TQ05IRFJfTkxOTk8sIEdFVF9SRUxPQ19WQUREUiwKCVNFVF9SRUxPQ19WQUREUik6IE5ldyBtYWNyb3MuCgkoY29mZl9zd2FwX3JlbG9jX2luLCBjb2ZmX3N3YXBfcmVsb2Nfb3V0KTogVXNlIGFib3ZlIG1hY3Jvcy4KCShjb2ZmX3N3YXBfYXV4X2luLCBjb2ZmX3N3YXBfYXV4X291dCk6IFJlbW92ZSBSUzYwMDBDT0ZGX0MKCWNvZGUuCgkoY29mZl9zd2FwX2FvdXRoZHJfaW4sIGNvZmZfc3dhcF9hb3V0aGRyX291dCk6IEhhbmRsZSBYQ09GRjY0CgljaGFuZ2VzIHdpdGhpbiBSUzYwMDBDT0ZGX0Mgc3BlY2lmaWMgY29kZS4KCShjb2ZmX3N3YXBfc2NuaGRyX291dCk6IFVzZSBQVVRfU0NOSERSX05MTk5PLCBQVVRfU0NOSERSX05SRUxPQywKCU1BWF9TQ05IRFJfTlJFTE9DLCBhbmQgTUFYX1NDTkhEUl9OTE5OTy4KCSogcmVsb2MuYyAoYmZkX3BlcmZvcm1fcmVsb2NhdGlvbiwgYmZkX2luc3RhbGxfcmVsb2NhdGlvbik6CglFeHRlbmQgZXhpc3RpbmcgaGFjayBvbiB0YXJnZXQgbmFtZS4KCSogeGNvZmZsaW5rLmMgKFhDT0ZGX1hWRUNQKTogRXh0ZW5kIGV4aXN0aW5nIGhhY2sgb24KCXRhcmdldCBuYW1lLgoJKiBjb2ZmLXRpYzU0eC5jICh0aWNvZik6IEtlZXAgdXAgdG8gZGF0ZSB3aXRoIG5ldyBmaWVsZHMKCWluIGJmZF9jb2ZmX2JhY2tlbmRfZGF0YS4KCSogY29uZmlnLmJmZDogQWRkIGJmZF9wb3dlcnBjXzY0X2FyY2ggdG8gdGFyZ19hcmNoIGFuZCBkZWZpbmUKCXRhcmdfc2VsdmVjcyB0byBpbmNsdWRlIHJzNjAwMGNvZmY2NF92ZWMgZm9yIHJzNjAwMC4KCSogY29uZmlndXJlLmluOiBBZGQgcnM2MDAwY29mZjY0X3ZlYyBjYXNlLgoJKiBjcHUtcG93ZXJwYy5jOiBOZXcgYmZkX2FyY2hfaW5mb190eXBlLgoKMjAwMC0wNC0yNCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY29uZmlnLmJmZDogT25seSBkaXNhYmxlIGVsZjMyLWhwcGEgdmVjdG9ycywgbm90IGFsbCBvZiB0aGUKCUJTRCBhbmQgT1NGIGNvbmZpZ3VyYXRpb24gc3VwcG9ydC4gIFByb3ZpZGUgKGRpc2FibGVkKSBjbGF1c2VzCglmb3IgUEE2NCBzdXBwb3J0LgoJKiBjb25maWd1cmUuaW46IEFkZCBjbGF1c2UgZm9yIFBBNjQgc3VwcG9ydC4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKCSogdGFyZ2V0cy5jIChiZmRfdGFyZ2V0X3ZlY3Rvcik6IEFkZCBiZmRfZWxmNjRfaHBwYV92ZWMuCgkoYmZkX2VsZjY0X2hwcGFfdmVjKTogRGVjbGFyZS4KCgkqIE1ha2VmaWxlLmFtIChCRkQ2NF9CQUNLRU5EUyk6IEFkZCBlbGY2NC1ocHBhLmxvCgkoQkZENjRfQkFDS0VORFNfQ0ZJTEVTKTogQWRkIGVsZjY0LWhwcGEuYwoJKGVsZjY0LWhwcGEubG8pOiBBZGQgZGVwZW5kZW5jaWVzLgoJKiBNYWtlZmlsZS5pbjogUmVidWlsdC4KCgkqIGVsZjY0LWhwcGEuYywgZWxmNjQtaHBwYS5oOiBOZXcgZmlsZXMgd2l0aCBQQTY0IHN1cHBvcnQuCgoyMDAwLTA0LTI0ICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogbGliaHBwYS5oIChkaXNfYXNzZW1ibGVfMTYpOiBOZXcgZnVuY3Rpb24uCgkocGFfYXJjaCk6IEFkZGVkIHBhMjB3IGVsZW1lbnQuCgoyMDAwLTA0LTI0ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KCgkqIGVsZi1iZmQuaDogQWRkIHByb3RvdHlwZXMgZm9yIGJmZF9lbGYzMl93cml0ZV9yZWxvY3MsCgliZmRfZWxmMzJfc2x1cnBfcmVsb2NfdGFibGUsIGJmZF9lbGY2NF93cml0ZV9yZWxvY3MsIGFuZAoJYmZkX2VsZjY0X3NsdXJwX3JlbG9jX3RhYmxlLgoKCSogZWxmY29kZS5oIChlbGZfd3JpdGVfcmVsb2NzLCBlbGZfc2x1cnBfcmVsb2NfdGFibGUpOiBOZXcKCWRlZmluaXRpb25zIHRvIGdldCBleHRlcm5hbCBuYW1lcy4KCShlbGZfd3JpdGVfcmVsb2NzKTogUmVuYW1lZCBmcm9tIHdyaXRlX3JlbG9jcyBhbmQgbWFrZSBnbG9iYWwuCgkoZWxmX3NsdXJwX3JlbG9jX3RhYmxlKTogTWFrZSBnbG9iYWwuCgkoX2JmZF9lbGYsc2l6ZV9pbmZvKTogVXNlIGVsZl93cml0ZV9yZWxvY3MgaW5zdGVhZCBvZiB3cml0ZV9yZWxvY3MuCgoJKiBhcmNoaXZlLmMgKGhwdXhfdWlkX2dpZF9lbmNvZGUpOiBOZXcgZnVuY3Rpb24uCgkoYmZkX2FyX2hkcl9mcm9tX2ZpbGVzeXN0ZW0pOiBVc2UgaXQgaWYgSFBVWF9MQVJHRV9BUl9JRFMgaXMKCWRlZmluZWQgYW5kIHRoZSBJRCBpcyBncmVhdGVyIHRoYW4gOTk5OTkuCgkoYmZkX2dlbmVyaWNfc3RhdF9hcmNoX2VsdCk6IElmIEhQVVhfTEFSR0VfQVJfSURTIGlzIGRlZmluZWQgZGVjb2RlCglzcGVjaWFsIHVpZC9naWQgZmllbGRzIGludG8gMzIgYml0IHZhbHVlcy4KCjIwMDAtMDQtMjEgIE1hdHRoZXcgR3JlZW4gIDxtcmdAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy5iZmQ6IEFkZCBOZXRCU0Qvc3BhcmM2NCBzdXBwb3J0LgoKRnJpIEFwciAyMSAxMzoyMDo1MyAyMDAwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoJCQkgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoJCQkgIFRpbW90aHkgV2FsbCA8dHdhbGxAY3lnbnVzLmNvbT4KCQkJICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5hbSAoQUxMX01BQ0hJTkVTKTogQWRkIGNwdS1pYTY0LmxvLgoJKEFMTF9NQUNISU5FU19DRklMRVMpOiBBZGQgY3B1LWlhNjQuYy4KCShCRkQ2NF9CQUNLRU5EUyk6IEFkZCBlbGY2NC1pYTY0LmxvLgoJKEJGRDY0X0JBQ0tFTkRTX0NGSUxFUyk6IEFkZCBlbGY2NC1pYTY0LmMuCgkoY3B1LWlhNjQubG8sIGVsZjY0LWlhNjQubG8pOiBOZXcgcnVsZXMuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoJKiBhcmNodXJlcy5jIChlbnVtIGJmZF9hcmNoaXRlY3R1cmUpOiBBZGQgYmZkX2FyY2hfaWE2NC4KCShiZmRfaWE2NF9hcmNoKTogRGVjbGFyZS4KCShiZmRfYXJjaHVyZXNfbGlzdCk6IEFkZCBiZmRfaWE2NF9hcmNoLgoJKiBiZmQtaW4yLmg6IFJlYnVpbGQuCgkqIGNvbmZpZy5iZmQ6IChpYTY0Ki0qLWxpbnV4LWdudSosIGlhNjQqLSotZWxmKik6IE5ldyB0YXJnZXRzLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgkqIGNvbmZpZ3VyZS5ob3N0OiAoaWE2NC0qLWxpbnV4Kik6IE5ldyBob3N0LgoJKiBjb25maWd1cmUuaW4gKGJmZF9lbGY2NF9pYTY0X2xpdHRsZV92ZWMsIGJmZF9lbGY2NF9pYTY0X2JpZ192ZWMsCgliZmRfZWZpX2FwcF9pYTY0X3ZlYywgYmZkX2VmaV9hcHBfaWE2NF92ZWMpOiBOZXcgdmVjdG9ycy4KCSogZWxmLmMgKHByZXBfaGVhZGVycyk6IEFkZCBiZmRfYXJjaF9pYTY0LgoJKiBsaWJiZmQuaDogUmVidWlsZC4KCSogcmVsb2MuYzogQWRkIElBLTY0IHJlbG9jYXRpb25zLgoJKiB0YXJnZXRzLmMgKGJmZF9lbGY2NF9pYTY0X2xpdHRsZV92ZWMsIGJmZF9lbGY2NF9pYTY0X2JpZ192ZWMpOgoJRGVjbGFyZS4KCShiZmRfdGFyZ2V0X3ZlY3QpOiBBZGQgYmZkX2VsZjY0X2lhNjRfbGl0dGxlX3ZlYy4KCSogY3B1LWlhNjQtb3BjLmMsIGNwdS1pYTY0LmMsIGVsZjY0LWlhNjQuYzogTmV3IGZpbGVzLgoKMjAwMC0wNC0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWQzMHYuYyAoYmZkX2VsZl9kMzB2X3JlbG9jKTogRG9uJ3QgbW9kaWZ5IHNlY3Rpb24KCWNvbnRlbnRzIHdoZW4gcGVyZm9ybWluZyBhIHBhcnRpYWwgbGluay4KCShiZmRfZWxmX2QzMHZfcmVsb2NfMjEpOiBMaWtld2lzZS4KCjIwMDAtMDQtMjAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IFJlc3RyaWN0IDE5OTgtMTItMTAKCXBhdGNoIHRvIHN5bWJvbHMgZGVmaW5lZCBieSBhIHNoYXJlZCBvYmplY3QuCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBTaW1pbGFybHkuCgoyMDAwLTA0LTE5ICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJSyZSIGNvbXBpbGVyIGZpeGVzLgoJKiBkd2FyZjIuYyAoY29uY2F0X2ZpbGVuYW1lKTogQXZvaWQgc3RyaW5nIGxpdGVyYWwgY29uY2F0ZW5hdGlvbi4KCSogaWVlZS5jIChpZWVlX2dldF9zeW10YWIpOiBEb24ndCBpbml0aWFsaXNlIHVuaW9uIGluIHN0cnVjdC4KCk1vbiBBcHIgMTcgMTk6MTQ6MzYgMjAwMCAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBNYWtlZmlsZS5hbSAoQkZENjRfQkFDS0VORFMpOiBNZW50aW9uIGNvZmYtaWE2NC5sby4KCShCRkQ2NF9CQUNLRU5EU19DRklMRVMpOiBNZW50aW9uIGNvZmYtaWE2NC5jCgkoY29mZi1pYTY0LmxvKTogQWRkIGRlcGVuZGVuY3kuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBjb2ZmLWlhNjQuYzogTmV3IGZpbGUuCgkqIGVmaS1hcHAtaWEzMi5jOiBEaXR0by4KCSogZWZpLWFwcC1pYTY0LmM6IERpdHRvLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vayk6IEhhbmRsZSBJQTY0TUFHSUMuCgkoY29mZl9zZXRfZmxhZ3MpOiBEaXR0by4KCShjb2ZmX3dyaXRlX29iamVjdF9jb250ZW50cykgW0lBNjRdOiBTZXQgbWFnaWMgbnVtYmVyIHRvIFpNQUdJQy4KCSogY29uZmlnLmJmZCAoaVszNDU2XTg2LSotbGludXgtZ251Kik6IE1lbnRpb24gYmZkX2VmaV9hcHBfaWEzMl92ZWMuCgkqIGNvbmZpZ3VyZS5pbiAoZWxmKTogSGFuZGxlIGJmZF9lZmlfYXBwX2lhMzIgYW5kIGJmZF9lZmlfYXBwX2lhNjRfdmVjLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGxpYnBlaS5oIChHRVRfT1BUSERSX0lNQUdFX0JBU0UpOiBOZXcgbWFjcm8uCgkoUFVUX09QVEhEUl9JTUFHRV9CQVNFKTogRGl0dG8uCgkoR0VUX09QVEhEUl9TSVpFX09GX1NUQUNLX1JFU0VSVkUpOiBEaXR0by4KCShQVVRfT1BUSERSX1NJWkVfT0ZfU1RBQ0tfUkVTRVJWRSk6IERpdHRvLgoJKEdFVF9PUFRIRFJfU0laRV9PRl9TVEFDS19DT01NSVQpOiBEaXR0by4KCShQVVRfT1BUSERSX1NJWkVfT0ZfU1RBQ0tfQ09NTUlUKTogRGl0dG8uCgkoR0VUX09QVEhEUl9TSVpFX09GX0hFQVBfUkVTRVJWRSk6IERpdHRvLgoJKFBVVF9PUFRIRFJfU0laRV9PRl9IRUFQX1JFU0VSVkUpOiBEaXR0by4KCShHRVRfT1BUSERSX1NJWkVfT0ZfSEVBUF9DT01NSVQpOiBEaXR0by4KCShQVVRfT1BUSERSX1NJWkVfT0ZfSEVBUF9DT01NSVQpOiBEaXR0by4KCShHRVRfUERBVEFfRU5UUlkpOiBEaXR0by4KCSogcGVpZ2VuLmMgKF9iZmRfcGVpX3N3YXBfYW91dGhkcl9pbikgW0NPRkZfV0lUSF9QRVA2NF06IERvbid0IHJlYWQKCWRhdGFfc3RhcnQuICBVc2UgYWJvdmUgbWFjcm9zIHRvIHJlYWQgZmllbGRzIHRoYXQgYXJlIDY0IGJpdCB3aWRlIGZvcgoJQ09GRl9XSVRIX1BFUDY0LiAgRG9uJ3QgdHJ1bmNhdGUgZW50cnkgYW5kIHRleHRfc3RhcnQgdG8gMzIgYml0cy4KCShfYmZkX3BlaV9zd2FwX2FvdXRoZHJfb3V0KSBbUEVJX0ZPUkNFX01JTklNVU1fQUxJR05NRU5UXTogRm9yY2UKCUZpbGVBbGlnbm1lbnQgYW5kIFNlY3Rpb25BbGlnbm1lbnQgdG8gbWluaW11bSBhbGlnbm1lbnQgaWYgdGhleQoJYXJlIHplcm8uCgkoX2JmZF9wZWlfc3dhcF9hb3V0aGRyX291dCkgW1BFSV9ERUZBVUxUX1RBUkdFVF9TVUJTWVNURU1dOiBTZXQKCVN1YnN5c3RlbSB0byBkZWZhdWx0IFBFSV9ERUZBVUxUX1RBUkdFVF9TVUJTWVNURU0uCgkoX2JmZF9wZWlfc3dhcF9hb3V0aGRyX291dCkgW0NPRkZfV0lUSF9QRVA2NF06IERvbid0IHNldCBkYXRhX3N0YXJ0LgoJVXNlIGFib3ZlIG1hY3JvcyB0byB3cml0ZSBmaWVsZHMgdGhhdCBhcmUgNjQgYml0IHdpZGUgZm9yCglDT0ZGX1dJVEhfUEVQNjQuCgkocGVfcHJpbnRfcGRhdGEpOiBTZXQgUERBVEFfUk9XX1NJWkUgdG8gMyo4IGZvciBDT0ZGX1dJVEhfUEVQNjQsCgk1KjQgb3RoZXJ3aXNlLiAgVGhpcyBzaG91bGQgYmUgcmlnaHQgZm9yIElBLTMyIGFuZCBJQS02NCwgYnV0IG1heQoJYmUgd3JvbmcgZm9yIHBsYXRmb3Jtcy4gIFVzZSBQREFUQV9ST1dfU0laRSBpbnN0ZWFkIG9mIGhhcmRjb2RlZAoJdmFsdWUgb2YgMjAgYnl0ZXMuICBNb2RpZnkgcHJpbnRpbmcgZm9yIENPRkZfV0lUSF9QRVA2NCB0byBwcmludAoJYmVnaW4gYWRkcmVzcywgZW5kIGFkZHJlc3MsIGFuZCB1bndpbmQgaW5mbyBhZGRyZXNzIG9ubHkuICBVc2UKCUdFVF9QREFUQV9FTlRSWSgpIHRvIHJlYWQgLnBkYXRhIGVudHJpZXMuICBVc2UgZnByaW50Zl92bWEoKSB0bwoJcHJpbnQgYWRkcmVzc2VzLgoJKHRibCk6IEFkZCBTRUNUSU9OLCBSRUwzMiwgUkVTRVJWRUQxLCBNSVBTX0pNUEFERFIxNiwgRElSNjQsIGFuZAoJSElHSDNBREogcmVsb2NhdGlvbiBuYW1lcy4KCShfYmZkX3BlX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBQcmludCBTdWJzeXN0ZW0gbmFtZSBpbiBsZWdpYmxlIGZvcm0uCgkqIHRhcmdldHMuYzogRGVjbGFyZSBiZmRfZWZpX2FwcF9pYTMyX3ZlYyBhbmQKCWJmZF9lZmlfYXBwX2lhNjRfdmVjLgoJKGJmZF90YXJnZXRfdmVjdG9yKTogTWVudGlvbiBiZmRfZWZpX2FwcF9pYTMyX3ZlYyBhbmQKCWJmZF9lZmlfYXBwX2lhNjRfdmVjLgoKMjAwMC0wNC0xNyAgVGltb3RoeSBXYWxsICA8dHdhbGxAY3lnbnVzLmNvbT4KCgkqIGJmZC1pbjIuaDogQWRkIHByb3RvdHlwZXMgZm9yIHRpYzU0eCBsb2FkIHBhZ2UgYWNjZXNzLgoJKiBiZmQtaW4uaDogUmVnZW5lcmF0ZS4KCSogY29mZi10aWM1NHguYzogQWRkIGxvYWQgcGFnZSBmdW5jdGlvbnM7IGFsbG93IGJmZF9hcmNoX3Vua25vd24KCWluIGN1c3RvbWl6ZWQgX3NldF9hcmNoX21hY2ggZnVuY3Rpb24uCgkqIGNvZmZjb2RlLmggKGNvZmZfc2V0X2FsaWdubWVudF9ob29rKTogU2V0IHNlY3Rpb24gbG9hZCBwYWdlIGlmCgl0aGUgYXBwcm9wcmlhdGUgbWFjcm8gaXMgZGVmaW5lZC4KCSh3cml0ZV9vYmplY3RfY29udGVudHMpOiBSZWFkIHNlY3Rpb24gbG9hZCBwYWdlLgoKMjAwMC0wNC0xMyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWhwcGEuaDogVXBkYXRlIGNvcHlyaWdodCBkYXRlLgoKCSogZWxmMzItZnIzMC5jIChmcjMwX2VsZl9pMjBfcmVsb2MpOiBEb24ndCB1c2UgVSBzdWZmaXguCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogQW5kIGhlcmUuCgoJKiBlbGYzMi1kMzB2LmMgKE1BWDMyKTogRG9uJ3QgdXNlIExMIHN1ZmZpeC4KCShNSU4zMik6IERlZmluZSBpbiB0ZXJtcyBvZiBNQVgzMi4KCShiZmRfZWxmX2QzMHZfcmVsb2MpOiBNYWtlIHJlbG9jYXRpb24gYSBiZmRfc2lnbmVkX3ZtYS4KCgkqIGNvZmYtYTI5ay5jIChTSUdOX0VYVEVORF9IV09SRCk6IFJlcGxhY2Ugd2l0aCBtb3JlIGNvbmNpc2UKCWV4cHJlc3Npb24uCgoJKiBwZWljb2RlLmggKHBlX0lMRl9idWlsZF9hX2JmZCk6IFJlbW92ZSBVTCBmcm9tIGhleCBjb25zdGFudHMuCgoyMDAwLTA0LTEyICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZGVwLWluLnNlZDogTWF0Y2ggc3BhY2UgYmVmb3JlIGZpbGUgbmFtZSwgbm90IGFmdGVyLgoJKiBNYWtlZmlsZS5hbTogUmVnZW5lcmF0ZSBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKCSogcmVsb2MuYyAoX2JmZF9yZWxvY2F0ZV9jb250ZW50cyk6IEluIGNvbXBsYWluX292ZXJmbG93X2JpdGZpZWxkCgljYXNlLCBhbGxvdyBhZGRyZXNzIHdyYXAtYXJvdW5kIHN0dXBpZGx5IHJlbW92ZWQgMjAwMC0wMy0xNy4gIFNpZ24KCWV4dGVuZCB3aXRob3V0IGFuIGlmIHN0YXRlbWVudC4KCjIwMDAtMDQtMTEgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBjb2ZmLW1pcHMuYyAobWlwc19ncHJlbF9yZWxvYyk6IFRlc3QgZm9yIDE2IGJpdCByYW5nZSB1c2luZwoJc2lnbmVkIHF1YW50aXRlcy4KCSogZWxmMzItbWlwcy5jIChncHJlbDE2X3dpdGhfZ3ApOiBMaWtld2lzZS4KCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlKTogVGVzdCByYW5nZQoJaGVyZSB1c2luZyAtMHg0MDAwMCwgbm90IChpbnQpMHhmZmZjMDAwMC4KCShlbGYzMl9ocHBhX3NpemVfb2Zfc3R1Yik6IExpa2V3aXNlLgoKMjAwMC0wNC0xMSAgVGltb3RoeSBXYWxsICA8dHdhbGxAY3lnbnVzLmNvbT4KCgkqIGNvZmYtdGljNTR4LmM6IE5vdyBidWlsZHMgd2l0aCBhbGwgdGFyZ2V0cy4KCSogTWFrZWZpbGUuYW06IEFkZCBjb2ZmL3RpYzU0eC5oIHRvIGNvZmYtdGljNTR4Lm8gZGVwZW5kZW5jaWVzLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCSogY29mZmNvZGUuaCAoY29mZl9zZXRfYXJjaF9tYWNoX2hvb2spOiBFbGltaW5hdGUgd2FybmluZyBvbgoJdW5pdGlhbGl6ZWQgdmFyaWFibGUuCgpGcmkgQXByICA3IDE1OjU2OjU3IDIwMDAgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoV0FSTl9DRkxBR1MpOiBTZXQgdG8gLVcgLVdhbGwgYnkgZGVmYXVsdC4gIEFkZAoJLS1lbmFibGUtYnVpbGQtd2FybmluZ3Mgb3B0aW9uLgoJKiBNYWtlZmlsZS5hbSAoQU1fQ0ZMQUdTLCBXQVJOX0NGTEFHUyk6IEFkZCBkZWZpbml0aW9ucy4KCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZTogUmUtZ2VuZXJhdGUuCgoyMDAwLTA0LTA3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogcmVsb2MuYzogQWRkIEJGRF9SRUxPQ19BUk1fUENSRUxfQkxYIGFuZAoJQkZEX1JFTE9DX1RIVU1CX1BDUkVMX0JMWC4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSk6IEhhbmRsZQoJUl9BUk1fWFBDMjUgYW5kIFJfQVJNX1RITV9QQzIyLgoKCSogZWxmYXJtLW5hYmkuYyAoZWxmMzJfYXJtX2hvd3RvXyk6IEZpeCBkZWZpbml0aW9ucyBvZgoJUl9BUk1fWFBDMjUgYW5kIFJfQVJNX1RITV9YUEMyMi4KCShlbGYzMl9hcm1fcmVsb2NfbWFwKTogTWFrZSBCRkRfUkVMT0Nfe0FSTXxUSFVNQn1fUENSRUxfQkxYIHRvCglSX0FSTV9bWFBDMjV8VEhNX1hQQzIyXS4KCgkqIGVsZmFybS1vYWJpLmM6IERlZmluZSBPTERfQVJNX0FCSSBhbmQgY2hhbmdlIGluY2x1ZGUgZnJvbQoJZWxmL2FybS1vYWJpLmggdG8gZWxmL2FybS5oCgoJKiBNYWtlZmlsZS5hbTogRml4IGRlcGVuZGVuY3kgZm9yIGVsZmFybS1vYWJpLmMKCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wNC0wNiAgTWljaGFlbCBTbnlkZXIgIDxtc255ZGVyQHNlYWRvZy5jeWdudXMuY29tPgoKCSogZWxmY29yZS5oIChlbGZfY29yZV9maWxlX3ApOiBwcmVzZXJ2ZSB2YWx1ZSBvZiB0ZGF0YSBhdCBlbnRyeSwKCWFuZCByZXN0b3JlIGl0IG9uIGZhaWx1cmUuICBSZWxlYXNlIG5ld2x5IGFsbG9jYXRlZCB0ZGF0YSBvbgoJZmFpbHVyZS4KCkZyaSBBcHIgIDcgMTE6MzM6NDcgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZHdhcmYyLmMgKHN0cnVjdCBkd2FyZjJfZGVidWcpOiBOZXcgZmllbGQgZHdhcmZfbGluZV9zaXplLgoJKGRlY29kZV9saW5lX2luZm8pOiBTZXQgaXQuICBSZXBvcnQgZXJyb3IgaWYgdW5pdC0+bGluZV9vZmZzZXQgaXMKCWVxdWFsIHRvIG9yIGxhcmdlciB0aGFuIGl0LgoKMjAwMC0wNC0wNyAgVGltb3RoeSBXYWxsICA8dHdhbGxAY3lnbnVzLmNvbT4KCgkqIHRhcmdldHMuYzogQWRkZWQgdmVjcyBmb3IgdGljNTR4LgoJKiByZWxvYy5jOiBBZGRlZCByZWxvY3MgZm9yIHRpYzU0eC4KCSogbGliYmZkLmg6IFJlZ2VuZXJhdGVkLgoJKiBjb25maWd1cmU6IEFkZCBUSSBDT0ZGIHZlY3MgZm9yIHRpYzU0eC4KCSogY29uZmlndXJlLmluOiBEaXR0by4KCSogY29uZmlnLmJmZCAodGFyZ19jcHUpOiBSZWNvZ25pemUgbmV3IHRpYzU0eCB0YXJnZXQuCgkqIGNvZmZjb2RlLmggKGNvZmZfc2x1cnBfc3ltYm9sX3RhYmxlKTogQWRkaXRpb25zIGZvciBUSSBDT0ZGIGhhbmRsaW5nLgoJKiBiZmQtaW4yLmg6IEFkZCB0aWM1NHggdGFyZ2V0IGFuZCByZWxvY2F0aW9ucy4KCSogTWFrZWZpbGUuYW0sIE1ha2VmaWxlLmluOiBBZGQgdGljNTR4IHRhcmdldC4KCSogYXJjaHVyZXMuYyAoYmZkX2FyY2h1cmVzX2xpc3QpOiBBZGQgdGljNTR4IHRhcmdldC4KCSogY29mZi10aWM1NHguYzogTmV3LgoJKiBjcHUtdGljNTR4LmM6IE5ldy4KCjIwMDAtMDQtMDYgIE1pY2hhZWwgU255ZGVyICA8bXNueWRlckBzZWFkb2cuY3lnbnVzLmNvbT4KCgkqIGVsZmNvcmUuaCAoZWxmX2NvcmVfZmlsZV9wKTogY2FsbCBiYWNrZW5kX29iamVjdF9wIHdoaWNoCgl0aGVyZWJ5IGdldHMgYW4gb3Bwb3J0dW5pdHkgdG8gdXBkYXRlIHRoZSBhcmNoL21hY2hpbmUgdHlwZS4KCjIwMDAtMDQtMDYgIFRpbW90aHkgV2FsbCAgPHR3YWxsQGN5Z251cy5jb20+CgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NsdXJwX3N5bWJvbF90YWJsZSk6IEhhbmRsZSBDX1NUQVRMQUIgc3RvcmFnZQoJY2xhc3MuICBIYW5kbGUgU0VDX0NMSU5LIGFuZCBTRUNfQkxPQ0sgZmxhZ3MuCgkqIHNlY3Rpb24uYzogQWRkIFNFQ19DTElOSyBhbmQgU0VDX0JMT0NLIGZsYWdzLgoJKiBiZmQtaW4yLmg6IEFkZCBTRUNfQ0xJTksgYW5kIFNFQ19CTE9DSyBmbGFncy4KCjIwMDAtMDQtMDYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX3NldF9wcml2YXRlX2ZsYWdzKTogT25seSBjaGVjayBmb3IKCUVGX0lOVEVSV09SSyBpZiB0aGlzIGlzIGFuIHVua25vd24gRUFCSS4KCShlbGYzMl9hcm1fbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IENoZWNrIEVBQkkgdmVyc2lvbgoJbnVtYmVycy4gIE9ubHkgY2hlY2sgRUZfeHh4IGZsYWdzIGlmIHRoZSBFQUJJIHZlcnNpb24gbnVtYmVyCglpcyB1bmtub3duLgoJKGVsZjMyX2FybV9jaGVja19wcml2YXRlX2JmZF9kYXRhKTogT25seSBjaGVjayBFRl94eHggZmxhZ3MKCWlmIHRoZSBFQUJJIHZlcnNpb24gbnVtYmVyIGlzIHVua25vd24uCgkoZWxmMzJfYXJtX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBPbmx5IGRlY29kZSBFRl94eHggZmxhZ3MKCWlmIHRoZSBFQUJJIHZlcnNpb24gbnVtYmVyIGlzIHVua25vd24uCgpXZWQgQXByICA1IDIyOjA0OjIwIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHJlbG9jLmMgKF9iZmRfcmVsb2NhdGVfY29udGVudHMpOiBBZGQgQkZEX1JFTE9DX1NIX0xPT1BfU1RBUlQgYW5kCglCRkRfUkVMT0NfU0hfTE9PUF9FTkQuCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9ob3d0b190YWIpOiBDaGFuZ2Ugc3BlY2lhbF9mdW5jIHRvCglzaF9lbGZfaWdub3JlX3JlbG9jIGZvciBhbGwgZW50cmllcyB0aGF0IHNoX2VsZl9yZWxvYyB1c2VkIHRvIGlnbm9yZS4KCUFkZCBlbnRyaWVzIGZvciBSX1NIX0xPT1BfU1RBUlQgYW5kIFJfU0hfTE9PUF9FTkQuCgkoc2hfZWxmX3JlbG9jX2xvb3ApOiBOZXcgZnVuY3Rpb24uCgkoc2hfZWxmX3JlbG9jKTogTm8gbmVlZCB0byB0ZXN0IGZvciBhbHdheXMtdG8tYmUtaWdub3JlZCByZWxvY3MKCWFueSBtb3JlLgoJKHNoX3JlbCk6IEFkZCBlbnRyaWVzIGZvciBCRkRfUkVMT0NfU0hfTE9PUF97U1RBUlQsRU5EfS4KCShzaF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEhhbmRsZSBCRkRfUkVMT0NfU0hfTE9PUF97U1RBUlQsRU5EfS4KCSogYmZkLWluMi5oLCBsaWJiZmQuaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDQtMDQgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBwby9iZmQucG90OiBSZWdlbmVyYXRlLgoKCSogTWFrZWZpbGUuYW06IFJlbW92ZSBleHRyYW5lb3VzIG1rZGVwIGNvbW1lbnQuCgkoTUtERVApOiBVc2UgZ2NjIC1NTSByYXRoZXIgdGhhbiBta2RlcC4KCShERVApOiBRdW90ZSB3aGVuIHBhc3NpbmcgdmFycyB0byBzdWItbWFrZS4gIEFkZCB3YXJuaW5nCgltZXNzYWdlIHRvIGVuZC4KCShERVAxKTogUmV3cml0ZSBmb3IgImdjYyAtTU0iLgoJKENMRUFORklMRVMpOiBBZGQgREVQMi4KCVVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKMjAwMC0wNC0wMyAgS2V2aW4gQnVldHRuZXIgIDxrZXZpbmJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkZWQgY29yZWZpbGUgc3VwcG9ydCBmb3IgQUlYIDQuMy4gIEluIHBhcnRpY3VsYXIsCglBSVhfQ09SRV9EVU1QWF9DT1JFIHdpbGwgYmUgZGVmaW5lZCBpbiBhZGRpdGlvbiB0byBBSVhfQ09SRSB3aGVuCgljb21waWxpbmcgcnM2MDAwLWNvcmUuYy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDAtMDQtMDMgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGNhY2hlLmMgKGJmZF9vcGVuX2ZpbGUpOiBVbmxpbmsgdGhlIG91dHB1dCBmaWxlIG9ubHkgaWYKCWl0IGhhcyBub24temVybyBzaXplLgoKMjAwMC0wNC0wMSAgS2VuIEJsb2NrIFVTRyAgPGJsb2NrQHprMy5kZWMuY29tPgoKCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IGVtaXQKCXJlbGF0aXZlIHJlbG9jYXRpb25zIGZvciBub24tbG9hZGVkIHNlY3Rpb25zIGluIHNoYXJlZCBvYmplY3RzLgoJKGVsZjY0X2FscGhhX2NoZWNrX3JlbG9jcyk6IFNpbWlsYXJseS4KCk1vbiBBcHIgIDMgMTM6Mzc6MTUgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBhb3V0eC5oIChOQU1FKGFvdXQscmVsb2NfdHlwZV9sb29rdXApKTogQWRkIEJGRF9SRUxPQ184IGFuZAoJQkZEX1JFTE9DXzE2IHRvIHN3aXRjaCBmb3IgZXh0ZW5kZWQgcmVsb2NzLgoJKE1ZX3N3YXBfZXh0X3JlbG9jX2luKTogTmV3LgoJKE1ZX3N3YXBfZXh0X3JlbG9jX291dCk6IE5ldy4KCShOQU1FKGFvdXQsc2x1cnBfcmVsb2NfdGFibGUpKTogVXNlIE1ZX3N3YXBfZXh0X3JlbG9jX2luIHJhdGhlcgoJdGhhbiBOQU1FKGFvdXQsc3dhcF9leHRfcmVsb2NfaW4pIGZvciBleHRlbmRlZCByZWxvY3MuCgkoTkFNRShhb3V0LHNxdWlydF9vdXRfcmVsb2NzKSk6IFNpbWlsYXJseSB1c2UKCU1ZX3N3YXBfZXh0X3JlbG9jX291dC4KCShhb3V0X2xpbmtfcmVsb2NfbGlua19vcmRlcik6IFVzZSBNWV9wdXRfZXh0X3JlbG9jIGlmIGRlZmluZWQuCgoyMDAwLTA0LTAzICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvZmYtaDgzMDAuYyAoaDgzMDBfcmVsb2MxNl9leHRyYV9jYXNlcyk6IEFkZCBic3I6MTYgLT4gYnNyOjggdG8KCXRoZSBSX1BDUldPUkRfQiBjYXNlLgoKMjAwMC0wMy0zMSAgVGhvbWFzIGRlIExlbGxpcyAgPHRkZWxAd3JzLmNvbT4KCgkqIHNyZWMuYyA6IFNldCBDSFVOSyBzaXplIHRvIDE2IGJ5dGVzIHRvIHByZXZlbnQgZG93bmxvYWQgZmFpbHVyZXMKCW9uIHNvbWUgdGFyZ2V0cy4KCSogaWhleC5jIDogRGl0dG8uCgpXZWQgTWFyIDMwIDE1OjI4OjAwIDIwMDAgIERvbmFsZCBMaW5kc2F5ICA8ZGxpbmRzYXlAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLW0zMnIuYyAobTMycl9lbGZfZ2VuZXJpY19yZWxvYyk6IG5ldyBmdW5jdGlvbi4gIEFsbAoJSE9XVE8gcmVmZXJlbmNlcyB0byBiZmRfZWxmX2dlbmVyaWNfcmVsb2MsIHRoYXQgaGF2ZQoJcGFydGlhbF9pbnBsYWNlID09IHRydWUsIG5vdyB1c2UgdGhlIG5ldyBmdW5jdGlvbi4gIFRoZSBmdW5jdGlvbgoJaXMgYmFzZWQgb24gdGhlIHJlY2VudCByZXdyaXRlIG9mIG0zMnJfZWxmX2xvMTZfcmVsb2MoKSwgYW5kCglleHRlbmRzIGl0cyBmaXhlcyB0byB0aGUgUl9NMzJSX3sxNiwyNCwzMn0gcmVsb2NzLgoJVGhlIG5ldyBsb2dpYyBpbiBtMzJyX2VsZl9sbzE2X3JlbG9jKCkgaGFzIGJlZW4gcmVtb3ZlZCwgYW5kCglpdCBpbnN0ZWFkIGNhbGxzIHRoZSBuZXcgcm91dGluZSB0byBvYnRhaW4gdGhhdCBmdW5jdGlvbmFsaXR5LgoKMjAwMC0wMy0yNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWF2ci5jIChlbGYzMl9hdnJfZ2NfbWFya19ob29rLCBlbGYzMl9hdnJfZ2Nfc3dlZXBfaG9vaywKCWVsZjMyX2F2cl9jaGVja19yZWxvY3MsIGF2cl9maW5hbF9saW5rX3JlbG9jYXRlLAoJZWxmMzJfYXZyX3JlbG9jYXRlX3NlY3Rpb24sIGJmZF9lbGZfYXZyX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcsCgllbGYzMl9hdnJfb2JqZWN0X3ApOiBBZGQgcHJvdG90eXBlcy4KCShlbGYzMl9hdnJfZ2NfbWFya19ob29rKTogQWRkIGRlZmF1bHQgZm9yIGgtPnJvb3QudHlwZS4KCShiZmRfZWxmX2F2cl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogTWFrZSBzdGF0aWMuCgoyMDAwLTAzLTI3ICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY3B1LWF2ci5jOiBOZXcgZmlsZS4gIEJGRCBzdXBwb3J0IHJvdXRpbmVzIGZvciBBVlIgYXJjaGl0ZWN0dXJlLgoJKiBhcmNodXJlcy5jIChiZmRfYXJjaGl0ZWN0dXJlKTogQWRkIEFWUiBhcmNoaXRlY3R1cmUuCgkoYmZkX2FyY2h1cmVzX2xpc3QpOiBBZGQgcmVmZXJlbmNlIHRvIEFWUiBhcmNoaXRlY3R1cmUgaW5mby4KCSogZWxmLmMgKHByZXBfaGVhZGVycyk6IEhhbmRsZSBiZmRfYXJjaF9hdnIuCgkqIHJlbG9jLmM6IEFkZCB2YXJpb3VzIEFWUiByZWxvY2F0aW9uIGVudW1zLgoJKiB0YXJnZXRzLmMgKGJmZF9lbGYzMl9hdnJfdmVjKTogRGVjbGFyZSBhbmQgYWRkIHRvIHRhcmdldCB2ZWN0b3IKCWxpc3QuCgkqIE1ha2VmaWxlLmFtOiBBZGQgc3VwcG9ydCBmb3IgQVZSIGVsZi4KCSogY29uZmlndXJlLmluOiBMaWtld2lzZS4KCSogY29uZmlnLmJmZDogTGlrZXdpc2UuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmU6IFRoaXMgdG9vLgoJKiBiZmQtaW4yLmg6IEFuZCB0aGlzLgoJKiBsaWJiZmQuaDogQW5kIHRoaXMuCgoyMDAwLTAzLTI0ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9tZXJnZV9pbmRfc3ltYm9scyk6IEFkZCBwcm90b3R5cGUuCgkoZWxmNjRfYWxwaGFfZmluZF9yZWxvY19hdF9vZnMpOiBMaWtld2lzZS4KCjIwMDAtMDMtMTcgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiByZWxvYy5jIChiZmRfY2hlY2tfb3ZlcmZsb3cpOiBJbiBjYXNlIGNvbXBsYWluX292ZXJmbG93X2JpdGZpZWxkLAoJZmxhZyBhbiBvdmVyZmxvdyBpZiB0aGUgYml0ZmllbGQgaXMgb3V0c2lkZSAtMioqbiB0byAyKipuLTEuICBUaGUKCWFsbG93YWJsZSByYW5nZSB1c2VkIHRvIGJlIC0yKioobi0xKSB0byAyKipuLTEuCgkqIHJlbG9jLmMgKF9iZmRfcmVsb2NhdGVfY29udGVudHMpOiBTYW1lIGhlcmUuICBBbHNvIHJlcGxhY2UKCSJib29sZWFuIG92ZXJmbG93IiB3aXRoICJiZmRfcmVsb2Nfc3RhdHVzX3R5cGUgZmxhZyIuCgoyMDAwLTAzLTE0ICBEb3VnIEV2YW5zICA8ZGplQGNhc2V5LnRyYW5zbWV0YS5jb20+CgoJKiBlbGYzMi1tMzJyLmMgKG0zMnJfZWxmX2xvMTZfcmVsb2MpOiBSZXdyaXRlLgoKMjAwMC0wMy0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiByZWxvYzE2LmMgKGJmZF9jb2ZmX3JlbG9jMTZfcmVsYXhfc2VjdGlvbik6IENvdW50IHRoZSB0b3RhbCBudW1iZXIKCW9mIHNocmlua3MgcHJvcGVybHksIGluY2x1ZGluZyB0aGUgbGFzdCByZWxvYy4KCjIwMDAtMDMtMTMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29mZi1oODMwMC5jIChoODMwMF9yZWxvYzE2X2V4dHJhX2Nhc2VzKTogRml4IHRoZSBzYW5pdHkKCWNoZWNrIGZvciBSX01PVkwyLgoKMjAwMC0wMy0xMSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGllZWUuYyAoaWVlZV9hcmNoaXZlX3ApOiBSZXR1cm4gYmZkX2Vycm9yX3dyb25nX2Zvcm1hdCBvbgoJYSBmb3JtYXQgbWlzbWF0Y2ggcmF0aGVyIHRoYW4gYW4gImVycm9yIiBmcm9tIGJmZF9yZWFkIHN1Y2ggYXMKCWJmZF9lcnJvcl9maWxlX3RydW5jYXRlZC4KCjIwMDAtMDMtMTAgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogRG8gcHJvcGVyCglzaWduLWV4dGVuc2lvbiBhbmQgYmlnLWVuZGlhbiBjb21wZW5zYXRpb24gZm9yCglSX01JUFNfNjQgZXZlbiBpbiBsZCAtci4KCjIwMDAtMDMtMTAgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfbmV4dF9yZWxvY2F0aW9uKTogUmVuYW1lIGZyb20KCW1pcHNfZWxmX25leHRfbG8xNl9yZWxvY2F0aW9uLCBhbmQgZ2VuZXJhbGl6ZSB0byBsb29rCglmb3IgYW55IHJlbG9jYXRpb24gdHlwZS4KCShlbGZfbWlwc19ob3d0b190YWJsZSk6IE1ha2UgUl9NSVBTX1BDMTYgcGNyZWxfb2Zmc2V0LgoJKGVsZl9taXBzX2dudV9yZWxfaGkxNik6IEhvd3RvIGZvciBSX01JUFNfR05VX1JFTF9ISTE2LgoJKGVsZl9taXBzX2dudV9yZWxfbG8xNik6IEhvd3RvIGZvciBSX01JUFNfR05VX1JFTF9MTzE2LgoJKGVsZl9taXBzX2dudV9yZWwxNl9zMik6IEhvd3RvIGZvciBSX01JUFNfR05VX1JFTDE2X1MyLgoJKGVsZl9taXBzX2dudV9wY3JlbDY0KTogSG93dG8gZm9yIFJfTUlQU19QQzY0LgoJKGVsZl9taXBzX2dudV9wY3JlbDMyKTogSG93dG8gZm9yIFJfTUlQU19QQzMyLgoJKGJmZF9lbGYzMl9iZmRfcmVsb2NfdHlwZV9sb29rdXApOiBBZGQgbmV3IHJlbG9jcy4KCShtaXBzX3J0eXBlX3RvX2hvd3RvKTogTGlrZXdpc2UuCgkobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBIYW5kbGUgbmV3IHJlbG9jcy4KCShfYmZkX21pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBSRUxfSEkxNi9SRUxfTE8xNiByZWxvY3MKCWFyZSBwYWlyZWQuICBUaGUgYWRkZW5kIGZvciBSX01JUFNfR05VX1JFTDE2X1MyCglpcyBzaGlmdGVkIHJpZ2h0IHR3byBiaXRzLgoKMjAwMC0wMy0xMCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHJlbG9jLmMgKGJmZF9wZXJmb3JtX3JlbG9jYXRpb24pOiBVbmRvIGVtYWNzIGZvcm1hdHRpbmcgb2YKCWNvbW1lbnQsIGFuZCBlbnN1cmUgaXQgZG9lc24ndCBoYXBwZW4gYWdhaW4uCgkoYmZkX2luc3RhbGxfcmVsb2NhdGlvbik6IFNhbWUgaGVyZS4KCShfYmZkX3JlbG9jYXRlX2NvbnRlbnRzKTogRG9uJ3QgYm90aGVyIGFzc2lnbmluZyB1bnVzZWQgc2lnbm1hc2sKCXNoaWZ0IHJlc3VsdC4gIEZpeCB0eXBvcyBpbiBjb21tZW50cy4KCVJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIHRocm91Z2hvdXQgZmlsZS4KCjIwMDAtMDMtMDcgIERvdWcgRXZhbnMgIDxkamVAY2FzZXkudHJhbnNtZXRhLmNvbT4KCgkqIHJlbG9jLmMgKHJlbG9jX2hvd3RvX3N0cnVjdCk6IEZpeCBwYXJ0aWFsX2lucGxhY2UgY29tbWVudC4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoKMjAwMC0wMy0wNiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIHBlaWNvZGUuaCAoc3RydWN0IHBlX0lMRl92YXJzKTogQWRkIHN5bV9wdHJfdGFibGUgYW5kCglzeW1fcHRyX3B0ciBmaWVsZHMuCgkoU0laRU9GX0lMRl9TWU1fUFRSX1RBQkxFKTogRGVmaW5lLgoJKFNJWkVPRl9JTEZfU1RSSU5HUyk6IFJlZGVmaW5lLgoJKHBlX0lMRl9tYWtlX2Ffc3ltYm9sLXJlbG9jKTogTmV3IGZ1bmN0aW9uLiAgQ3JlYXRlcyBhIHN5bWJvbAoJcmVsYXRpdmUgcmVsb2MsIGFzIG9wcG9zZWQgdG8gYSBzZWN0aW9uIHJlbGF0aXZlIHJlbG9jLgoJKHBlX0lMRl9tYWtlX2Ffc3ltYm9sKTogU2V0IHRoZSBjbGFzcyBvZiBsb2NhbCBzeW1ib2xzIHRvIENfU1RBVAoJbm90IENfTEFCRUwuCglBZGQgbGVuZ3RoIG9mIHN5bWJvbCdzIHByZWZpeCB0byBzdHJpbmcgcG9pbnRlci4KCVN0b3JlIGEgcG9pbnRlciB0byB0aGUgc3ltYm9sIGluIHRoZSBzeW1ib2wgcG9pbnRlciB0YWJsZS4KCShwZV9JTEZfYnVpbGRfYV9iZmQpOiBEbyBub3QgYnVpbGQgLmlkYXRhJDIgb3IgLmlkYXRhJDcuCglJbml0aWFsaXNlIHRoZSBzeW1ib2wgcG9pbnRlciB0YWJsZS4KCVN0b3JlIHRoZSBoaW50IGluIHRoZSBIaW50L05hbWUgdGFibGUuCglNYWtlIHRoZSBqdW1wIHJlbG9jIGJlIHN5bWJvbCByZWFsdGl2ZSwgbm90IHNlY3Rpb24gcmVsYXRpdmUuCglDcmVhdGUgYW4gaW1wb3J0IHN5bWJvbCBmb3IgaW1wb3J0ZWQgY29kZS4KCjIwMDAtMDMtMDYgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogZWxmLmMgKHN3YXBfb3V0X3N5bXMpOiAgQ2hlY2sgZm9yIG51bGwgdHlwZV9wdHIuCgoyMDAwLTAzLTAxICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGFvdXQtdGFyZ2V0LmggKE1ZKHdyaXRlX29iamVjdF9jb250ZW50cykpOiBSZW1vdmUgdW51c2VkCglhbmQgdW51c2FibGUgIiNpZiBDSE9PU0VfUkVMT0NfU0laRSIuCgkqIHBjNTMyLW1hY2guYyAoTVkod3JpdGVfb2JqZWN0X2NvbnRlbnRzKSk6IERpdHRvLgoJKiBuZXRic2QuaCAoTVkod3JpdGVfb2JqZWN0X2NvbnRlbnRzKSk6IERpdHRvLgoJKiBocDMwMGhwdXguYyAoTVkod3JpdGVfb2JqZWN0X2NvbnRlbnRzKSk6IERpdHRvLgoJKiBmcmVlYnNkLmggKE1ZKHdyaXRlX29iamVjdF9jb250ZW50cykpOiBEaXR0by4KCSogYW91dC10aWMzMC5jICh0aWMzMF9hb3V0X3dyaXRlX29iamVjdF9jb250ZW50cyk6IERpdHRvLgoKMjAwMC0wMi0yOSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogcGVpY29kZS5oIChqdGFiKTogTWFrZSBpdCBzdGF0aWMuCgoJKiBjb2ZmLXNoLmMgKHNoX2FsaWduX2xvYWRfc3Bhbik6IERlY2xhcmVkIGlmIENPRkZfV0lUSF9QRSBpcwoJZGVmaW5lZCBhbmQgQ09GRl9JTUFHRV9XSVRIX1BFIGlzIG5vdCBkZWZpbmVkLgoJKF9iZmRfc2hfYWxpZ25fbG9hZF9zcGFuKTogRGVmaW5lZCBhcyBzaF9hbGlnbl9sb2FkX3NwYW4gaWYKCUNPRkZfV0lUSF9QRSBpcyBkZWZpbmVkIGFuZCBDT0ZGX0lNQUdFX1dJVEhfUEUgaXMgbm90IGRlZmluZWQuCgoyMDAwLTAzLTAxICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi1hcm0uYyAoYmZkX2FybV9wcm9jZXNzX2JlZm9yZV9hbGxvY2F0aW9uKTogTWFrZQoJJ3N5bW5keCcgc2lnbmVkIHRvIHByZXZlbnQgY29tcGlsZSB0aW1lIHdhcm5pbmcuCgoJKiBjb2ZmLW1jb3JlLmM6IFJlbW92ZSB1bnVzZWQgcHJvdG90eXBlIGZvciBwZV9vYmplY3RfcC4KCgkqIGNvZmYtc2guYzogQWRkICIjaWZuZGVmIENPRkZfSU1BR0VfV0lUSF9QRSIgYXJvdW5kIHN0YXRpYwoJZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCB1c2VkIHdoZW4gQ09GRl9JTUFHRV9XSVRIX1BFIGlzCglkZWZpbmVkLgoJKHN0cnVjdCBzaF9vcGNvZGUpOiBDaGFuZ2UgdHlwZSBvZiAnZmxhZ3MnIGZpZWxkIHRvIHVuc2lnbmVkCglsb25nIHNvIHRoYXQgaXQgY2FuIGhvbGQgdGhlIFVTRVNBUyBmbGFnLgoKCSogY29mZmNvZGUuaCAoc3R5cF90b19zZWNfZmxhZ3MpOiBJbml0aWFsaXNlICd0YXJnZXRfbmFtZScuCgoJKiBlbGYtbTEwMzAwLmMgKG1uMTAzMDBfZWxmX3JlbGF4X3NlY3Rpb24pOiBJbml0aWFsaXNlCgknc3ltX3NlYycuCgoJKiBlbGYzMi1pMzcwLmM6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIHVudXNlZCBmdW5jdGlvbgoJcGFyYW1ldGVycy4KCVJlbW92ZSB1bnVzdWVkIHZhcmlhYmxlcyBhbmQgY29kZS4KCShlbGZfYmFja2VuZF9hZGRfc3ltYm9sX2hvb2spOiBGaXggcHJvdG90eXBlLgoKCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19nY19zd2VlcF9ob29rKTogSW5pdGlhbGlzZSAnc2dvdCcgYW5kCgknc3JlbGdvdCcuCgoJKiBlbGYzMi1tY29yZS5jIChtY29yZV9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEluaXRpYWxpc2UKCSdvbGRpbnN0Jy4KCgkqIGVsZjMyLW1pcHMuYzogQWRkIEFUVFJJQlVURV9VTlVTRUQgdG8gdW51c2VkIGZ1bmN0aW9uCglwYXJhbWV0ZXJzLgoJUmVtb3ZlIHVudXN1ZWQgdmFyaWFibGVzIGFuZCBjb2RlLgoJKGVsZl9iYWNrZW5kX2FkZF9zeW1ib2xfaG9vayk6IEZpeCBwcm90b3R5cGUuCgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfc2V0X21hY2hfZnJvbV9mbGFncyk6IFVzZSAnZmxhZ3MnLgoKCSogZWxmbGluay5oIChlbGZfYmZkX2xpbmtfYWRkX3N5bWJvbHMpOiBBZGQgQVRUUklCVVRFX1VOVVNFRAoJdG8gdW51c2VkIGZ1bmN0aW9uIHBhcmFtZXRlci4KCgkqIHBlLW1pcHMuYzogQWRkIEFUVFJJQlVURV9VTlVTRUQgdG8gdW51c2VkIGZ1bmN0aW9uCglwYXJhbWV0ZXJzLgoJVXNlIEVNUFRZX0hPV1RPIHRvIGluaXRpYWxpc2UgZW1wdHkgaG93dG8gc2xvdHMuCglSZW1vdmUgdW51c2VkIHZhcmlhYmxlcy4KCgkqIHBlaWNvZGUuaCAocGVfSUxGX2J1aWxkX2FfYmZkKTogSW5pdGlhbGlzZSBpZDYuCgoyMDAwLTAzLTAxICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBhb3V0eC5oIChhb3V0X2xpbmtfaW5wdXRfc2VjdGlvbl9zdGQpOiBQYXNzICJ0cnVlIiB0bwoJdGhlIHVuZGVmaW5lZF9zeW1ib2wgY2FsbGJhY2suCgkoYW91dF9saW5rX2lucHV0X3NlY3Rpb25fZXh0KTogTGlrZXdpc2UuCgkqIGJvdXQuYyAoZ2V0X3ZhbHVlKTogTGlrZXdpc2UuCgkqIGNvZmYtYTI5ay5jIChjb2ZmX2EyOWtfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb2ZmLWFscGhhLmMgKGFscGhhX2Vjb2ZmX2dldF9yZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW4pOgoJTGlrZXdpc2UuCgkoYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb2ZmLWFybS5jIChjb2ZmX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmYtaTk2MC5jIChjb2ZmX2k5NjBfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb2ZmLW1jb3JlLmMgKGNvZmZfbWNvcmVfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb2ZmLW1pcHMuYyAobWlwc19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmYtcHBjLmMgKGNvZmZfcHBjX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogY29mZi1zaC5jIChzaF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmYtdGljODAuYyAoY29mZl90aWM4MF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmZsaW5rLmMgKF9iZmRfY29mZl9nZW5lcmljX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmLW0xMDIwMC5jIChtbjEwMjAwX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZi1tMTAzMDAuYyAobW4xMDMwMF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1kMTB2LmMgKGVsZjMyX2QxMHZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1mcjMwLmMgKGZyMzBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItaTM3MC5jIChpMzcwX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW0zMnIuYyAobTMycl9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1tY29yZS5jIChtY29yZV9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi12ODUwLmMgKHY4NTBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmbGluay5jIChfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX291dHB1dF9leHRzeW0pOiBMaWtld2lzZS4KCSogcGUtbWlwcy5jIChjb2ZmX3BlX21pcHNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiByZWxvYy5jIChiZmRfZ2VuZXJpY19nZXRfcmVsb2NhdGVkX3NlY3Rpb25fY29udGVuKTogTGlrZXdpc2UuCgkqIHJlbG9jMTYuYyAoX2JmZF9wcGNfeGNvZmZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IFBhc3MgImZhbHNlIiB0byB0aGUKCXVuZGVmaW5lZF9zeW1ib2wgY2FsbGJhY2sgd2hlbiBidWlsZGluZyBzaGFyZWQgbGlicmFyeSB3aXRoCgktQnN5bWJvbGljIGFuZCB1bmRlZmluZWQgc3ltYm9scyBhcmUgYWxsb3dlZC4gT3RoZXJ3aXNlLCBwYXNzCgkidHJ1ZSIuCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBMaWtld2lzZS4KCShlbGYzMl9taXBzX2dldF9yZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW50KTogTGlrZXdpc2UuCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCjIwMDAtMDItMjggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5hbTogQWRkIHJ1bGVzIHRvIGJ1aWxkIHBlW2ldLXtzaHxtaXBzfS5sbyBvYmplY3RzLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHN1cHBvcnQgZm9yIG1pcHMgYW5kIHNoIHBlIHZlY3RvcnMuCgkqIGNvbmZpZ3VyZTogcmVnZW5lcmF0ZS4KCgkqIGNvbmZpZy5iZmQ6IEFkZCBzdXBwb3J0IGZvciBhcm0td2luY2UsIG1pcHMtcGUgYW5kIHNoLXBlCgl0YXJnZXRzLgoKCSogdGFyZ2V0cy5jOiBBZGQgbWlwcyBhbmQgc2ggcGUgdmVjdG9ycy4KCgkqIGxpYnBlaS5oIChjb2ZmX2ZpbmFsX2xpbmtfcG9zdHNjcmlwdCk6IE9ubHkgZGVmaW5lIGlmIG5vdAoJYWxyZWFkeSBkZWZpbmVkLgoKCSogY29mZmNvZGUuaDogQWRkIHN1cHBvcnQgZm9yIFdpbkNFIG1hZ2ljIG51bWJlcnMuCgoJKiBwZWlnZW4uYyAocGVfcHJpbnRfcmVsb2MpOiBVcGRhdGUgY29tbWVudCBhbmQgcmVhcnJhbmdlCglhcHBlbmRpbmcgb2YgbmV3bGluZSBjaGFyYWN0ZXIuCgoJKiBwZWljb2RlLmg6IEFkZCBzdXBwb3J0IGZvciBJbWFnZSBMaWJyYXJ5IEZvcm1hdC4KCShwZV9JTEZfdmFycyk6IFN0cnVjdHVyZSBjb250YWluaW5nIGRhdGEgdXNlZCBieSBJTEYgY29kZS4KCShwZV9JTEZfbWFrZV9hX3NlY3Rpb24pOiBOZXcgZnVuY3Rpb24uICBDcmVhdGUgYSBzZWN0aW9uIGJhc2VkCglvbiBJTEYgZGF0YS4KCShwZV9JTEZfbWFrZV9hX3JlbG9jKTogTmV3IGZ1bmN0aW9uLiAgQ3JlYXRlIGEgcmVsb2MgYmFzZWQgb24KCUlMRiBkYXRhLgoJKHBlX0lMRl9tYWtlX2Ffc3ltYm9sKTogTmV3IGZ1bmN0aW9uLiAgQ3JlYXRlIGEgc3ltYm9sIGJhc2VkCglvbiBJTEYgZGF0YS4KCShwZV9JTEZfc2F2ZV9yZWxvY3MpOiBOZXcgZnVuY3Rpb24uICBTdG9yZSB0aGUgcmVsb2NzIGNyZWF0ZWQKCWJ5IHBlX0lMRl9tYWtlX2FfcmVsb2MgaW4gYSBzZWN0aW9uLgoJKHBlX0lMRl9idWlsZF9hX2JmZCk6IE5ldyBmdW5jdGlvbi4gIENyZWF0ZSBhIEJGRCBkZXNjcmliaW5nCglhbiBJTEYgb2JqZWN0LgoJKHBlX0lMRl9vYmplY3RfcCk6IE5ldyBmdW5jdGlvbi4gIFJldHVybiBhIGJmZF90YXJnZXQgcG9pbnRlcgoJZm9yIGFuIElMRiBvYmplY3QuCgkocGVfYmZkX29iamVjdF9wKTogSWYgYW4gSUxGIG9iamVjdCBpcyBkZXRlY3RlZCBjYWxsCglwZV9JTEZfb2JqZWN0X3Agb24gaXQuCgoJKiBjb2ZmLWFybS5jOiBBZGQgc3VwcG9ydCBmb3IgV2luQ0UgcmVsb2NzIHdoaWNoIGFyZSBkaWZmZXJlbnQKCWZyb20gbm9ybWFsIEFSTSBDT0ZGIHJlbG9jcy4KCSogcGUtYXJtLmM6IFVuc2V0IFRBUkdFVF9VTkRFUlNDT1JFIGZvciBhIFdpbkNFIHRhcmdldC4KCgkqIGNvZmYtc2guYzogQWRkIHN1cHBvcnQgZm9yIHNoLXBlIHRhcmdldC4KCSogcGUtc2guYzogTmV3IGZpbGUuICBTdXBwb3J0IGNvZGUgZm9yIHNoLXBlIHRhcmdldC4KCSogcGVpLXNoLmM6IE5ldyBmaWxlLiAgU3VwcG9ydCBjb2RlIGZvciBzaC1wZSB0YXJnZXQuCgoJKiBwZS1taXBzLmM6IE5ldyBmaWxlLiAgU3VwcG9ydCBjb2RlIGZvciBtaXBzLXBlIHRhcmdldC4KCSogcGVpLW1pcHMuYzogTmV3IGZpbGUuICBTdXBwb3J0IGNvZGUgZm9yIG1pcHMtcGUgdGFyZ2V0LgoKMjAwMC0wMi0yNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogRG9uJ3QgYnVtcAoJYXJjaGl0ZWN0dXJlIGlmIHRoZSBvYmplY3QgY2F1c2luZyB0aGUgYnVtcCBpcyBkeW5hbWljLgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogTGlrZXdpc2UsCglhbmQgYWxzbyBkb24ndCBpdCBmb3IgbWVtb3J5IG9yZGVyaW5nLgoJKHNwYXJjNjRfZWxmX3dyaXRlX3JlbG9jcyk6IFRha2Ugc3JjX3JlbGEgb3V0IG9mIHRoZSBsb29wLgoKMjAwMC0wMi0yNyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBkd2FyZjIuYyAocmVhZF9hYmJyZXZzKTogVXNlIF9yYXdfc2l6ZSBkaXJlY3RseSByYXRoZXIgdGhhbgoJY2FsbGluZyBiZmRfZ2V0X3NlY3Rpb25fc2l6ZV9iZWZvcmVfcmVsb2MuCgkoZGVjb2RlX2xpbmVfaW5mbyk6IExpa2V3aXNlLgoJKF9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lKTogTGlrZXdpc2UuCgoyMDAwLTAyLTI3ICBFbGkgWmFyZXRza2lpICA8ZWxpekBpcy5lbHRhLmNvLmlsPgoKCSogTWFrZWZpbGUuYW0gKHN0YW1wLWxpYik6IFVzZSAkKExJQlRPT0wpIC0tY29uZmlnIHRvIGdldCB0aGUKCW5hbWUgb2YgdGhlIGxpYnRvb2wgZGlyZWN0b3J5LgoJKiBNYWtlZmlsZS5pbjogUmVidWlsZC4KCkZyaSBGZWIgMjUgMTg6Mzk6MjYgMjAwMCAgUm9kbmV5IEJyb3duIChSb2RuZXlCcm93bkBwbXNjLmNvbSkKCgkqIHNvbS5jIChTT01fSE9XVE8pOiBEZWZpbmUuCgkoc29tX2hwcGFfaG93dG9fdGFibGUpOiBVc2UgaXQuCgoyMDAwLTAyLTI1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGNvbmZpZy5iZmQ6IEVuYWJsZSA2NCBiaXQgc3VwcG9ydCBmb3IgR05VL0xpbnV4L3NwYXJjLgoKCSogY29uZmlnLmJmZDogRW5hYmxlIDY0IGJpdCBzdXBwb3J0IGZvciBTb2xhcmlzNysvc3BhcmMuCgoyMDAwLTAyLTI0ICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIHNvbS5jIChzb21fbWlzY19zeW1ib2xfaW5mbyk6ICBBZGQgZmllbGQKCXNlY29uZGFyeV9kZWYuCgkoc29tX2JmZF9kZXJpdmVfbWlzY19zeW1ib2xfaW5mbyk6ICBJbml0aWFsaXplCglzZWNvbmRhcnlfZGVmLgoJKHNvbV9idWlsZF9hbmRfd3JpdGVfc3ltYm9sX3RhYmxlKTogS2VlcCB0cmFjawoJb2Ygc2Vjb25kYXJ5X2RlZiBmaWVsZC4KCShzb21fc2x1cnBfc3ltYm9sX3RhYmxlKTogU2V0IEJTRl9XRUFLIHN5bWJvbCBmbGFnCglpZiBzZWNvbmRhcnlfZGVmIGZpZWxkIGlzIHNldC4KCShzb21fYmZkX2FyX3dyaXRlX3N5bWJvbF9zdHVmZik6IEluaXRpYWxpemUKCXNlY29uZGFyeV9kZWYuCgoyMDAwLTAyLTIzICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekB3b3JsZG5ldC5mcj4KCgkqIGR3YXJmMi5jIChyZWFkX2FkZHJlc3MpOiBSZWFkIDE2LWJpdHMgYWRkcmVzc2VzLgoJKHBhcnNlX2NvbXBfdW5pdCk6IEFjY2VwdCBhZGRyX3NpemUgPT0gMi4KCjIwMDAtMDItMjMgIEFsYW4gTW9kcmEgIDxhbGFuQHNwcmkubGV2ZWxzLnVuaXNhLmVkdS5hdT4KCgkqIGJmZC1pbi5oOiBVcGRhdGUgY29weXJpZ2h0IGRhdGUuCgoyMDAwLTAyLTIzICBMaW5hcyBWZXBzdGFzIDxsaW5hc0BsaW5hcy5vcmc+CgoJKiBjcHUtaTM3MC5jOiBOZXcgZmlsZS4KCSogZWxmMzItaTM3MC5jOiAgTmV3IGZpbGUuCgkqIGFyY2h1cmVzLmMgKGVudW0gYmZkX2FyY2hpdGVjdHVyZSk6IEFkZCBiZmRfYXJjaF9pMzcwLgoJKGJmZF9pMzcwX2FyY2gpOiBOZXcuCgkoYmZkX2FyY2h1cmVzX2xpc3QpOiBBZGQgYmZkX2kzNzBfYXJjaC4KCSogZWxmLmMgKHByZXBfaGVhZGVycyk6IEFkZCBiZmRfYXJjaF9pMzcwLgoJKiBNYWtlZmlsZS5hbTogQWRkIHN1cHBvcnQgZm9yIElCTSAzNzAgZWxmLgoJKiBjb25maWcuYmZkOiBMaWtld2lzZS4KCSogY29uZmlndXJlLmluOiBMaWtld2lzZS4KCSogbGliYmZkLmggKGJmZF9yZWxvY19jb2RlX3JlYWxfbmFtZXMpOiBMaWtld2lzZS4KCSogcmVsb2MuYyAoYmZkX3JlbG9jX2NvZGVfdHlwZSk6IExpa2V3aXNlLgoJKiB0YXJnZXRzLmM6IExpa2V3aXNlLgoKCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wMi0yMiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2luZm9fdG9faG93dG9fcmVsKTogR2l2ZSBhIHdhcm5pbmcgZm9yCglpbnZhbGlkIHJlbG9jYXRpb24gdHlwZXMsIGFuZCBjaGFuZ2UgdGhlbSB0byBSXzM4Nl9OT05FLgoKMjAwMC0wMi0yMiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBJZiBhIHZlcnNpb24gc3ltYm9sIGlzCglub3QgZGVmaW5lZCwgZG9uJ3QgYWRkIGEgc2Vjb25kIEVMRl9WRVJfQ0hSLgoKCSogZWxmbGluay5oIChlbGZfYmZkX2ZpbmFsX2xpbmspOiBDYWxsIG91dHB1dF9leHRzeW0gZm9yIGdsb2JhbAoJc3ltYm9scyBjb252ZXJ0ZWQgdG8gbG9jYWwgc3ltYm9scyBldmVuIHdoZW4gc3RyaXBwaW5nIGFsbAoJc3ltYm9scy4KCShlbGZfbGlua19vdXRwdXRfZXh0c3ltKTogUHJvY2VzcyBnbG9iYWwgc3ltYm9scyBjb252ZXJ0ZWQgdG8KCWxvY2FsIHN5bWJvbHMgZXZlbiBpZiB0aGV5IGFyZSBiZWluZyBzdHJpcHBlZC4KCjIwMDAtMDItMjEgIEFsYW4gTW9kcmEgIDxhbGFuQHNwcmkubGV2ZWxzLnVuaXNhLmVkdS5hdT4KCgkqIGFyY2h1cmVzLmMgKGJmZF9vY3RldHNfcGVyX2J5dGUpOiBSZXR1cm4gdW5zaWduZWQgaW50LgoJKGJmZF9hcmNoX21hY2hfb2N0ZXRzX3Blcl9ieXRlKTogRGl0dG8uCgkqIGxpYmJmZC5jIChiZmRfcmVhZCwgYmZkX3NlZWspOiBRdWVsbCBzaWduZWQgdnMuIHVuc2lnbmVkCgljb21wYXJpc29uIHdhcm5pbmcuCgkqIHNlY3Rpb24uYyAoYmZkX2dldF9zZWN0aW9uX3NpemVfYmVmb3JlX3JlbG9jKTogUXVlbGwgc2lnbmVkCgl2cy4gdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5nLgoJKGJmZF9nZXRfc2VjdGlvbl9zaXplX2FmdGVyX3JlbG9jKTogU2FtZSBoZXJlLiAgRml4IHBhcmVudGhlc2VzIHRvby4KCSogdHJhZC1jb3JlLmMgKHRyYWRfdW5peF9jb3JlX2ZpbGVfcCk6IENvcnJlY3QgMjAwMC0wMS0yNwoJY2hhbmdlLiAgV2hhdCB3YXMgSSB0aGlua2luZz8KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKCSogZWxmbGluay5oIChlbGZfZ2Nfc3dlZXApOiBTa2lwIG5vbi1lbGYgaW5wdXQgYmZkcy4KCShlbGZfZ2Nfc2VjdGlvbnMpOiBTYW1lIGhlcmUuCgkoZWxmX2djX2NvbW1vbl9maW5hbGl6ZV9nb3Rfb2Zmc2V0cyk6IEFuZCBoZXJlLgoKMjAwMC0wMi0yMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJRUxGIEhQUEEgZG9lc24ndCB3b3JrIGF0IHByZXNlbnQ7IHJlbW92ZSBpdCB1bnRpbCBpdCBkb2VzLgoJKiBjb25maWcuYmZkOiBDb21tZW50IG91dCBzZXR0aW5nIHRhcmdfZGVmdmVjIHRvCgliZmRfZWxmMzJfaHBwYV92ZWMuCgkqIE1ha2VmaWxlLmFtOiBSZWJ1aWxkIGRlcGVuZGVuY2llcy4KCShCRkQzMl9CQUNLRU5EUyk6IFJlbW92ZSBlbGYzMi1ocHBhLmxvLgoJKEJGRDMyX0JBQ0tFTkRTX0NGSUxFUyk6IFJlbW92ZSBlbGYzMi1ocHBhLmMuCgkoU09VUkNFX0hGSUxFUyk6IFJlbW92ZSBlbGYzMi1ocHBhLmggYW5kIGhwcGFfc3R1YnMuaC4KCSogTWFrZWZpbGUuaW46IFJlYnVpbGQuCgkqIHRhcmdldHMuYyAoYmZkX3RhcmdldF92ZWN0b3IpOiBDb21tZW50IG91dCBiZmRfZWxmMzJfaHBwYV92ZWMuCgoyMDAwLTAyLTE4ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vayk6IFVzZSBmcmVlKCksIGJlY2F1c2UgdGhlcmUKCWlzIG5vIGJmZF9mcmVlKCkuICBSZXZlcnQgYmZkX2ZyZWUgcGFydCBvZiBwcmV2aW91cyBjaGFuZ2UuCgoyMDAwLTAyLTE4ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vayk6IERvbid0IHVzZSB2YXJpYWJsZS1zaXplCglhcnJheXMuCgkoY29mZl9jb21wdXRlX3NlY3Rpb25fZmlsZV9wb3NpdGlvbnMpOiBVc2UgYmZkX2ZyZWUgdG8gcGFpcgoJYmZkX21hbGxvYy4KCShjb2ZmX3dyaXRlX29iamVjdF9jb250ZW50cyk6IExpa2V3aXNlLgoKCSogY29mZi1yczYwMDAuYyAoeGNvZmZfaG93dG9fdGFibGVfMTYpOiBOZXcgdmFyaWFibGUuCgkoeGNvZmZfcnR5cGUyaG93dG8pOiBIYW5kbGUgMTYtYml0IHZhcmlhbnRzIG9mIDMyLWJpdCByZWxvY3MuCgoyMDAwLTAyLTE4ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KCgkqIGNvZmYtcnM2MDAwLmMgKFhDT0ZGQVJNQUdCSUcpOiBOZXcgbWFjcm8uCgkoeGNvZmZfYXJfZmlsZV9oZHJfYmlnKTogTmV3IHN0cnVjdHVyZS4KCShTSVpFT0ZfQVJfRklMRV9IRFJfQklHKTogTmV3IG1hY3JvLgoJKHhjb2ZmX2FyX2hkcl9iaWcpOiBOZXcgc3RydWN0dXJlLgoJKFNJWkVPRl9BUl9IRFJfQklHKTogTmV3IG1hY3JvLgoJKHhjb2ZmX2JpZ19mb3JtYXRfcCk6IE5ldyBtYWNyby4KCSh4Y29mZl9hcmRhdGFfYmlnKTogTmV3IG1hY3JvLgoJKGFyY2hfeGhkcl9iaWcpOiBOZXcgbWFjcm8uCgkoeGNvZmZfc2x1cnBfYXJtYXApOiBIYW5kbGUgbGFyZ2UgYXJjaGl2ZXMuCgkoeGNvZmZfYXJjaGl2ZV9wKTogRGV0ZWN0IGxhcmdlIGFyY2hpdmVzLgoJKHhjb2ZmX3JlYWRfYXJfaGRyKTogSGFuZGxlIGxhcmdlIGFyY2hpdmVzLgoJKHhjb2ZmX29wZW5yX25leHRfYXJjaGl2ZWRfZmlsZSk6IEhhbmRsZSBsYXJnZSBhcmNoaXZlcy4KCSh4Y29mZl9nZW5lcmljX3N0YXRfYXJjaF9lbHQpOiBIYW5kbGUgbGFyZ2UgYXJjaGl2ZXMuCgkoeGNvZmZfd3JpdGVfYXJtYXBfb2xkKTogUmVuYW1lIGZyb20geGNvZmZfd3JpdGVfYXJtYXAuCgkoeGNvZmZfd3JpdGVfYXJtYXBfYmlnKTogTmV3IGZ1bmN0aW9uLgoJKHhjb2ZmX3dyaXRlX2FybWFwKTogTmV3IGZ1bmN0aW9uLCBkaXNwYXRjaCB0byBfb2xkIG9yIF9iaWcuCgkoeGNvZmZfd3JpdGVfYXJjaGl2ZV9jb250ZW50c19vbGQpOiBSZW5hbWUgZnJvbQoJeGNvZmZfd3JpdGVfYXJjaGl2ZV9jb250ZW50cy4KCSh4Y29mZl93cml0ZV9hcmNoaXZlX2NvbnRlbnRzX2JpZyk6IE5ldyBmdW5jdGlvbi4KCSh4Y29mZl93cml0ZV9hcmNoaXZlX2NvbnRlbnRzKTogTmV3IGZ1bmN0aW9uLCBkaXNwYXRjaCB0byBfb2xkIG9yCglfYmlnLgoKMjAwMC0wMi0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZi1iZmQuaCAoc3RydWN0IGVsZl9saW5rX2hhc2hfdGFibGUpOiBSZW1vdmUgY29weV9pbmRpcmVjdAoJYW5kIGhpZGVfc3ltYm9sIG1lbWJlcnMuCgkoZWxmX2xpbmtfaGFzaF9jb3B5X2luZGlyZWN0KTogUmVtb3ZlLgoJKGVsZl9saW5rX2hhc2hfaGlkZV9zeW1ib2wpOiBSZW1vdmUuCgkoc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEpOiBBZGQgZWxmX2JhY2tlbmRfY29weV9pbmRpcmVjdF9zeW1ib2wKCWFuZCBlbGZfYmFja2VuZF9oaWRlX3N5bWJvbC4KCShfYmZkX2VsZl9saW5rX2hhc2hfY29weV9pbmRpcmVjdCk6IERlY2xhcmUuCgkoX2JmZF9lbGZfbGlua19oYXNoX2hpZGVfc3ltYm9sKTogRGVjbGFyZS4KCSogZWxmLmMgKF9iZmRfZWxmX2xpbmtfaGFzaF9jb3B5X2luZGlyZWN0KTogUmVtb3ZlIHRhYmxlIGFyZ3VtZW50LgoJKF9iZmRfZWxmX2xpbmtfaGFzaF9oaWRlX3N5bWJvbCk6IExpa2V3aXNlLgoJKF9iZmRfZWxmX2xpbmtfaGFzaF90YWJsZV9pbml0KTogRG9uJ3QgaW5pdCBraWxsZWQgbWVtYmVycy4KCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBVc2UgdGhlIGJlZCBmdW5jdGlvbgoJcG9pbnRlcnMgbm90IGVsZl9saW5rX2hhc2hfe2NvcHlfaW5kaXJlY3QsaGlkZV9zeW1ib2x9LgoJKGVsZl9saW5rX2Fzc2lnbl9zeW1fdmVyc2lvbik6IExpa2V3aXNlLgoJKiBlbGZ4eC10YXJnZXQuaCAoZWxmX2JhY2tlbmRfY29weV9pbmRpcmVjdF9zeW1ib2wpOiBEZWZhdWx0LgoJKGVsZl9iYWNrZW5kX2hpZGVfc3ltYm9sKTogTGlrZXdpc2UuCgkoZWxmTk5fYmVkKTogVXBkYXRlIGZvciBuZXcgbWVtYmVycy4KCjIwMDAtMDItMTcgIEtldmluIEJ1ZXR0bmVyICA8a2V2aW5iQHJlZGhhdC5jb20+CgoJKiByczYwMDAtY29yZS5jIChDT1JFX0RBVEFfU0laRV9GSUVMRCwgQ09SRV9DT01NX0ZJRUxELCBTQVZFX0ZJRUxELAoJU1RBQ0tfRU5EX0FERFIpOiBEZWZpbmUgZm9yIG5ldyBjb3JlIGZpbGUgZm9ybWF0LgoJKExPQURFUl9PRkZTRVRfRklFTEQsIExPQURFUl9SRUdJT05fU0laRSwgQ09SRV9EVU1QKTogTmV3IGRlZmluZXMKCWZvciBoYW5kbGluZyB0aGUgdmFnYXJpZXMgb2YgdGhlIHZhcmlvdXMgY29yZSBmaWxlIHN0cnVjdHVyZXMgdXNlZAoJYnkgQUlYIG92ZXIgdGhlIHllYXJzLgoJKHJzNjAwMGNvZmZfY29yZV9wLCByczYwMDBjb2ZmX2NvcmVfZmlsZV9tYXRjaGVzX2V4ZWN1dGFibGUsCglSczZrQ29yRGF0YSk6IFVzZSBhYm92ZSBkZWZpbmVzIHRvIGFkYXB0IGNvZGUgdG8gdXNlIEFJWCA0LjMncwoJY29yZV9kdW1weCBzdHJ1Y3R1cmUuCgpUaHUgRmViIDE3IDAwOjA0OjQ4IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGFyY2h1cmVzLmMgKGJmZF9tYWNoX3NoMiwgYmZkX21hY2hfc2hfZHNwKTogTmV3IG1hY3Jvcy4KCShiZmRfbWFjaF9zaDNfZHNwKTogTGlrZXdpc2UuCgkoYmZkX21hY2hfc2g0KTogUmVpbnN0YXRlLgoJKGJmZF9kZWZhdWx0X3NjYW4pOiBSZWNvZ25pemUgNzQxMCwgNzcwOCwgNzcyOSBhbmQgNzc1MC4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBjb2ZmLXNoLmMgKHN0cnVjdCBzaF9vcGNvZGUpOiBmbGFncyBpcyBubyBsb25nZXIgc2hvcnQuCgkoVVNFU0FTLCBVU0VTQVNfUkVHLCBVU0VTUjgsIFNFVFNBUywgU0VUU0FTX1JFRyk6IE5ldyBtYWNyb3MuCgkoc2hfb3Bjb2RlNDEsIHNoX29wY29kZTQyKTogSW50ZWdyYXRlIGFzIHNoX29wY29kZTQxLgoJKHNoX29wY29kZTAxLCBzaF9vcGNvZGUwMiwgc2hfb3Bjb2RlNDApOiBBZGQgc2gtZHNwIG9wY29kZXMuCgkoc2hfb3Bjb2RlNDEsIHNoX29wY29kZTQsIHNoX29wY29kZTgwKTogTGlrZXdpc2UuCgkoc2hfb3Bjb2Rlcyk6IE5vIGxvbmdlciBjb25zdC4KCShzaF9kc3Bfb3Bjb2RlZjAsIHNoX2RzcF9vcGNvZGVmKTogTmV3IGFycmF5cy4KCShzaF9pbnNuX3VzZXNfcmVnKTogQ2hlY2sgZm9yIFVTRVNBUyBhbmQgVVNFU1I4LgoJKHNoX2luc25fc2V0c19yZWcsIHNoX2luc25zX2NvbmZsaWN0KTogQ2hlY2sgZm9yIFNFVFNBUy4KCShfYmZkX3NoX2FsaWduX2xvYWRfc3Bhbik6IFJldHVybiBlYXJseSBmb3IgU0g0LgoJTW9kaWZ5IHNoX29wY29kZXMgbG9va3VwIHRhYmxlIGZvciBzaC1kc3AgLyBzaDMtZHNwLgoJVGFrZSBpbnRvIGFjY291bnQgdGhhdCBmaWVsZCBiIG9mIGEgcGFyYWxsZWwgcHJvY2Vzc2luZyBpbnNuCgljb3VsZCBiZSBtaXN0YWtlbiBmb3IgYSBzZXBhcmF0ZSBpbnNuLgoJKiBjcHUtc2guYyAoYXJjaF9pbmZvX3N0cnVjdCk6IE5ldyBhcnJheSBlbGVtZW50cyBmb3IKCXNoMiwgc2gtZHNwIGFuZCBzaDMtZHNwLgoJUmVpbnN0YXRlIGVsZW1lbnQgZm9yIHNoNC4KCShTSDJfTkVYVCwgU0hfRFNQX05FWFQsIFNIM19EU1BfTkVYVCk6IE5ldyBtYWNyb3MuCgkoU0g0X05FWFQpOiBSZWluc3RhdGUuCgkoU0gzX05FWFQsIFNIM0VfTkVYVCk6IEFkanVzdC4KCSogZWxmLWJmZC5oIChfc2hfZWxmX3NldF9tYWNoX2Zyb21fZmxhZ3MpOiBEZWNsYXJlLgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfc2V0X3ByaXZhdGVfZmxhZ3MpOiBOZXcgZnVuY3Rpb24uCgkoc2hfZWxmX2NvcHlfcHJpdmF0ZV9kYXRhLCBzaF9lbGZfc2V0X21hY2hfZnJvbV9mbGFncyk6IExpa2V3aXNlLgoJKHNoX2VsZl9tZXJnZV9wcml2YXRlX2RhdGEpOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfb2JqZWN0X3AsIGJmZF9lbGYzMl9iZmRfc2V0X3ByaXZhdGVfYmZkX2ZsYWdzKTogRGVmaW5lLgoJKGJmZF9lbGYzMl9iZmRfY29weV9wcml2YXRlX2JmZF9kYXRhKTogRGVmaW5lLgoJKGJmZF9lbGYzMl9iZmRfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IENoYW5nZSB0bwoJc2hfZWxmX21lcmdlX3ByaXZhdGVfZGF0YS4KCjIwMDAtMDItMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfbGlua19oYXNoX3RhYmxlKTogQWRkIGNvcHlfaW5kaXJlY3QgYW5kCgloaWRlX3N5bWJvbCBtZW1iZXJzLgoJKGVsZl9saW5rX2hhc2hfY29weV9pbmRpcmVjdCk6IE5ldy4KCShlbGZfbGlua19oYXNoX2hpZGVfc3ltYm9sKTogTmV3LgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IEJyZWFrIG91dCBjb3B5IGZyb20KCWluZGlyZWN0IG5ldyBuZXcgc3ltYm9sIHRvIGVsZi5jLgoJKGVsZl9saW5rX2Fzc2lnbl9zeW1fdmVyc2lvbik6IEJyZWFrIG91dCBwcml2YXRpemF0aW9uIG9mCglub24tZXhwb3J0ZWQgc3ltYm9sIHRvIGVsZi5jLgoJKiBlbGYuYyAoX2JmZF9lbGZfbGlua19oYXNoX2NvcHlfaW5kaXJlY3QpOiBOZXcuCgkoX2JmZF9lbGZfbGlua19oYXNoX2hpZGVfc3ltYm9sKTogTmV3LgoJKF9iZmRfZWxmX2xpbmtfaGFzaF90YWJsZV9pbml0KTogSW5pdCBjb3B5X2luZGlyZWN0IGFuZCBoaWRlX3N5bWJvbC4KCjIwMDAtMDItMTMgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogc2VjdGlvbi5jIChfYmZkX3N0cmlwX3NlY3Rpb25fZnJvbV9vdXRwdXQpOiBBZGQgaW5mbyBwYXJhbWV0ZXIuCglJZiBpdCBwYXNzZWQgYXMgbm9uLU5VTEwsIHVzZSBpdCB0byBjaGVjayB3aGV0aGVyIGFueSBpbnB1dCBCRkQKCWhhcyBhbiBpbnB1dCBzZWN0aW9uIHdoaWNoIHVzZXMgdGhpcyBvdXRwdXQgc2VjdGlvbi4gIENoYW5nZSBhbGwKCWNhbGxlcnMuCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCgkqIGJmZC1pbi5oOiBNb3ZlIGRlY2xhcmF0aW9ucyBvZiBiZmRfZ2V0X2VsZl9waGRyX3VwcGVyX2JvdW5kIGFuZAoJYmZkX2dldF9lbGZfcGhkcnMgaW4gZnJvbSBiZmQtaW4yLmgsIGNvcnJlY3RpbmcgcGF0Y2ggb2YKCTE5OTktMTEtMjkuCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCjIwMDAtMDItMTAgIFRpbW90aHkgV2FsbCAgPHR3YWxsQGN5Z251cy5jb20+CgoJKiBjb2Zmc3dhcC5oIChjb2ZmX3N3YXBfc3ltX2luKTogQWRkIGhvb2sgU1dBUF9TWU1fSU5fUE9TVCB0bwoJYWxsb3cgZmluYWwgbW9kaWZpY2F0aW9ucyBvZiBzd2FwcGVkLWluIHN5bWJvbC4KCShjb2ZmX3N3YXBfc3ltX291dCk6IERpdHRvIHdpdGggU1dBUF9TWU1fT1VUX1BPU1QuCgkqIGNvZmZjb2RlLmggKGNvZmZfd3JpdGVfcmVsb2NzKTogVXNlIG1hY3JvCglTRUNUSU9OX1JFTEFUSVZFX0FCU09MVVRFX1NZTUJPTF9QIGlmIGRlZmluZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIKCXN5bWJvbCBpbmRleCBzaG91bGQgYmUgc2V0IHRvIC0xLgoKVGh1IEZlYiAxMCAyMDowNzo1MCBHTVQgMjAwMCAgVG9zaGl5YXN1IE1vcml0YSAodG9zaGkubW9yaXRhQHNlZ2EuY29tKQoKCSogY29mZi1zaC5jIChVU0VTMV9SRUcsIFVTRVMyX1JFRywgU0VUUzFfUkVHLCBTRVRTMl9SRUcsCglVU0VTRjFfUkVHLCBVU0VTRjJfUkVHLCBTRVRTRjFfUkVHLCBTRVRTRjJfUkVHKTogTmV3IG1hY3Jvcy4KCSogKHNoX2luc25fc2V0c19yZWcsIHNoX2luc25fc2V0c19mcmVnKTogTmV3IHByb3RvdHlwZXMuCgkqIChzaF9pbnNuX3NldHNfcmVnLCBzaF9pbnNuX3VzZXNfb3Jfc2V0c19yZWcsIHNoX2luc25zX3NldHNfZnJlZywKCXNoX2luc25zX3VzZXNfb3Jfc2V0c19mcmVnKTogTmV3IGZ1bmN0aW9ucy4KCSogKHNoX2luc25fdXNlc19yZWcsIHNoX2luc25fdXNlc19mcmVnKTogVXNlIG5ldyBtYWNyb3MuCgkqIChzaF9pbnNuc19jb25mbGljdCk6IFVzZSBuZXcgZnVuY3Rpb25zIGFuZCBuZXcgbWFjcm9zIHRvCglkZXRlY3QgY29uZmxpY3RzIHdoZW4gdHdvIGluc3RydWN0aW9ucyBib3RoIHNldCBzYW1lIGludGVnZXIgcmVnaXN0ZXJzLAoJYm90aCBzZXQgc2FtZSBmcCByZWdpc3RlciwgYW5kIGJvdGggc2V0IHNwZWNpYWwgcmVnaXN0ZXIuCgoyMDAwLTAyLTA5ICBUaW1vdGh5IFdhbGwgIDx0d2FsbEBjeWdudXMuY29tPgoKCSogY29mZmdlbi5jIChjb2ZmX3JlYWxfb2JqZWN0X3ApOiBTZXQgYXJjaC9tYWNoIGluZm8gcHJpb3IgdG8KCXN3YXBwaW5nIGluIHNlY3Rpb25zLCBzbyB0aGF0IHRoZSBzd2FwcGluZyByb3V0aW5lcyBoYXZlIGFjY2VzcyB0bwoJdGhlIGFyY2gvbWFjaCBpbmZvLgoKMjAwMC0wMi0wOCBNYXJrIEVsYnJlY2h0IDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBjb2ZmLWdvMzIuYzogVXBkYXRlIGNvbW1lbnQuIFVwZGF0ZSBjb3B5cmlnaHQuCgoyMDAwLTAxLTI3ICBUaG9tYXMgZGUgTGVsbGlzICA8dGRlbEB3aW5kcml2ZXIuY29tPgoKCSogc3ltcy5jIChiZmRfZGVjb2RlX3N5bWNsYXNzKQoJVHdvIG5ldyBjbGFzcyBjaGFyYWN0ZXJzIHdlcmUgYWRkZWQgLSAnVicgYW5kICd2Jy4gIFRoZQoJbWVhbmluZyBvZiAnVycgaXMgbm93IHJlc3RyaWN0ZWQgdG8ganVzdCB3ZWFrIG5vbi1vYmplY3QKCXN5bWJvbHMuICBUaGlzIGFsbG93cyBkaWZmZXJlbnRpYXRpb24gYmV0d2VlbiwgZm9yIGV4YW1wbGUsCgl3ZWFrIGZ1bmN0aW9ucyB2cyB3ZWFrIG9iamVjdHMuICBubSBmb3IgZXhhbXBsZSBub3cgZHVtcHM6CgknVycgPSB3ZWFrIGdsb2JhbAoJJ3cnID0gd2VhayB1bnJlc29sdmVkCgknVicgPSB3ZWFrIGdsb2JhbCBvYmplY3QKCSd2JyA9IHdlYWsgdW5yZXNvbHZlZCBvYmplY3QKCgkoYmZkX2lzX3VuZGVmaW5lZF9zeW1jbGFzcyk6IE5ldyBmdW5jdGlvbi4gIFJldHVybiB0cnVlIGlmIHRoZQoJZ2l2ZW4gc3ltYm9sIGNsYXNzIHJlcHJlc2VudHMgYW5kIHVuZGVmaW5lZC91bnJlc29sdmVkIHN5bWJvbC4KCgkoYmZkX3N5bWJvbF9pbmZvKTogVXNlIGJmZF9pc191bmRlZmluZWRfc3ltY2xhc3MgdG8gY2hlY2sgZm9yCgl1bnJlc29sdmVkIHN5bWJvbHMuCgoJKiBiZmQtaW4yLmg6IEFkZCBwcm90b3R5cGUgZm9yIGJmZF9pc191bmRlZmluZWRfc3ltYm9sKCkuCgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2dldF9zeW1ib2xfdHlwZSk6IElmIGEgc3ltYm9sIGhhcyB0aGUKCVNUVF9BUk1fMTZCSVQgZmxhZyBzZXQsIGJ1dCBpdCBpcyBub3QgYXR0YWNoZWQgdG8gYSBkYXRhIG9iamVjdAoJcmV0dXJuIFNUVF9BUk1fMTZCSVQgc28gdGhhdCBpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgY29kZSBieSB0aGUKCWRpc2Fzc2VtYmxlci4KCjIwMDAtMDEtMjcgIEFsYW4gTW9kcmEgIDxhbGFuQHNwcmkubGV2ZWxzLnVuaXNhLmVkdS5hdT4KCgkqIGNvZmYtaTM4Ni5jIChpM2NvZmZfb2JqZWN0X3ApOiBSZW1vdmUgcHJvdG90eXBlLgoJVXBkYXRlIGNvcHlyaWdodC4KCgkqIGVsZmxpbmsuYyAoX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wpOiBBZGQgY29uc3QKCXRvIG5hbWUuICBVcGRhdGUgY29weXJpZ2h0LgoKCSogdHJhZC1jb3JlLmMgKHRyYWRfdW5peF9jb3JlX2ZpbGVfcCk6IENhc3QgY29yZV9yZWdzZWMKCWFzc2lnbm1lbnQgdG8gYXZvaWQgd2FybmluZy4gIFVwZGF0ZSBjb3B5cmlnaHQuCgoyMDAwLTAxLTI0ICBSb2JlcnQgTGlwZSAgKHJvYmVydGxAc2NvLmNvbSkKCgkqIGNvZmZjb2RlLmggKGNvZmZfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogR2V0IGJ1ZmYgdmlhIGJmZF9tYWxsb2MKCWluc3RlYWQgb2YgdXNpbmcgR05VIEMgZXh0ZW5zaW9uLgoKMjAwMC0wMS0yMSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGxpYmJmZC5jIChiZmRfcmVhZCk6IERvIG5vdCBhdHRlbXB0IHRvIGdldCBhIG5lZ2F0aXZseSBzaXplZAoJYW1vdW50IGZyb20gYSBiZmRfaW5fbWVtb3J5IHN0cnVjdHVyZS4KCShiZmRfc2Vlayk6IERvIG5vdCBhbGxvdyBzZWVrcyBwYXN0IHRoZSBlbmQgb2YgYSBiZmRfaW5fbWVtb3J5CglzdHJ1Y3R1cmUuCgoyMDAwLTAxLTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogbGlua2VyLmMgKGRlZmF1bHRfaW5kaXJlY3RfbGlua19vcmRlcik6IG9vcHMgLSBmaXggaW5jb3JyZWN0bHkKCWFwcGxpZWQgcGF0Y2ggZnJvbSBUaW0gV2FsbC4KCjIwMDAtMDEtMTMgIFRpbW90aHkgV2FsbCAodHdhbGxAdGlhYy5uZXQ+CgoJKiBjb2ZmY29kZS5oOiBVc2UgYmZkX2NvZmZfeHh4IGluc3RlYWQgb2YgdGhlIG1hY3JvIFhYWCAod2hlcmUgeHh4Cgk9IHNjbmhzeiwgZmlsaHN6LCByZWxzeiwgYW91dHN6LCBldGMpCgoJKiBjb2Zmc3dhcC5oOiBEaXR0by4KCjIwMDAtMDEtMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfdGh1bWJfdG9fYXJtX3N0dWIpOiBGaXggb2Zmc2V0IGluIGJyYW5jaCB0bwoJaW50ZXJ3b3JrIHRodW1iIHRvIGFybSBzdHViLgoKMjAwMC0wMS0xMyAgVGltb3RoeSBXYWxsICh0d2FsbEB0aWFjLm5ldD4KCgkqIGFyY2h1cmVzLmMgKGJmZF9vY3RldHNfcGVyX2J5dGUpOiBOZXcgZnVuY3Rpb246IFJldHVybgoJdGFyZ2V0IGJ5dGUgc2l6ZS4KCShiZmRfYXJjaF9tYWNoX29jdGV0c19wZXJfYnl0ZSk6IE5ldyBmdW5jdGlvbjogUmV0dXJuIHRhcmdldAoJYnl0ZSBzaXplLgoKCSogc2VjdGlvbi5jOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIG9jdGV0cyBhbmQgYnl0ZXMgZm9yIHVzYWdlIG9mCglfY29va2VkX3NpemUsICBfcmF3X3NpemUsIGFuZCBvdXRwdXRfb2Zmc2V0LiAgQ2xhcmlmeQoJZGVzY3JpcHRpb24gb2YgYmZkX3NldF9zZWN0aW9uX2NvbnRlbnRzLgoKCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKCSogY29mZmdlbi5jOiBJbmRpY2F0ZSB0aGF0IHRoZSBvZmZzZXQgcGFyYW1ldGVyIGlzIGluIGJ5dGVzLCBub3QKCW9jdGV0cy4KCgkqIGNvZmZsaW5rLmMgKGJmZF9jb2ZmX2xpbmtfaW5wdXRfYmZkKTogVXNlIGJmZF9vY3RldHNfcGVyX2J5dGUKCXdoZXJlIGFwcHJvcHJpYXRlIHRvIGdldCB0aGUgb2N0ZXQgb2Zmc2V0IHdoZW4gY2FsbGluZwoJYmZkX3NldF9zZWN0aW9uX2NvbnRlbnRzLgoJKGJmZF9jb2ZmX3JlbG9jX2xpbmtfb3JkZXIpOiBEaXR0by4KCgkqIGxpbmtlci5jIChiZmRfZ2VuZXJpY19yZWxvY19saW5rX29yZGVyKTogRGl0dG8uCgkoX2JmZF9kZWZhdWx0X2xpbmtfb3JkZXIpOiBEaXR0by4KCgkqIHJlbG9jLmMgKGJmZF9wZXJmb3JtX3JlbG9jYXRpb24pOiAgRGlzdGluZ3Vpc2ggYmV0d2VlbiBvY3RldHMKCWFuZCBieXRlcy4gIFVzZSBvY3RldHMgd2hlbiBpbmRleGluZyBpbnRvIG9jdGV0IGRhdGE7IHVzZSBieXRlcwoJd2hlbiBjYWxjdWxhdGluZyB0YXJnZXQgYWRkcmVzc2VzLgoJKGJmZF9pbnN0YWxsX3JlbG9jYXRpb24pOiBEaXR0by4KCgkqIHNyZWMuYyAoc3JlY193cml0ZV9zZWN0aW9uKTogRGl0dG8uCgoyMDAwLTAxLTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi1tY29yZS5jIChDT0ZGX0RFRkFVTFRfU0VDVElPTl9BTElHTk1FTlRfUE9XRVIpOiBDaGFuZ2UgZnJvbQoJMyB0byAyLiAgVGhpcyBhbGxvd3MgNCBieXRlIHNpemVkIHNlY3Rpb25zLCB3aGljaCBpcyBuZWNlc3NhcnkgZm9yCglkbGx0b29sIHRvIGJ1aWxkIGZ1bmN0aW9uaW5nIERMTHMuCgoyMDAwLTAxLTEwICBQaGlsaXAgQmx1bmRlbGwgIDxwYkBmdXR1cmV0di5jb20+CgoJKiBjb25maWcuYmZkIChhcm0qLSotbGludXgtZ251Kik6IE1hdGNoIGluc3RlYWQgb2YgYXJtKi0qLWxpbnV4LWdudS4KCShhcm0qLSotY29uaXgqKTogTmV3IHRhcmdldC4KCjIwMDAtMDEtMTAgIEVnb3IgRHVkYSAgPGRlb0Bsb2dvcy1tLnJ1PgoKCSogY29uZmlnLmJmZDogSW5jbHVkZSBlbGYzMl9pMzg2IHZlY3RvciB0byB0YXJnZXQgbGlzdCBmb3IgY3lnd2luCglhbmQgbWluZ3cuCgoJKiBjb25maWcuaW46IFVuZGVmaW5lIEhBVkVfV0lOMzJfUFNUQVRVU19ULgoJKiBjb25maWd1cmUuaW46IFRlc3QgZm9yIHN0cnVjdHVyZSB3aW4zMl9wc3RhdHVzX3QgaW4KCTxzeXMvcHJvY2ZzLmg+CgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGVsZi5jIChlbGZjb3JlX2dyb2tfd2luMzJwc3RhdHVzKTogTmV3IGZ1bmN0aW9uOiBwcm9jZXNzCgl3aW4zMl9wc3RhdHVzX3Qgbm90ZXMgaW4gZWxmIGNvcmUgZmlsZS4KCShlbGZjb3JlX2dyb2tfbm90ZSk6IERldGVjdCB3aW4zMl9wc3RhdHVzIG5vdGVzLgoKMjAwMC0wMS0wMyAgTWFydGluIHYuIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGVsZmxpbmsuYyAoX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wpOiBQcm9jZXNzIHN5bWJvbAoJdmlzaWJpbGl0eS4KCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBDb21iaW5lIHZpc2liaWxpdGllcy4KCSogZWxmLmMgKGJmZF9lbGZfcHJpbnRfc3ltYm9sKTogSW50ZXJwcmV0IHN0X290aGVyIGFzIHZpc2liaWxpdHkuCgpGb3Igb2xkZXIgY2hhbmdlcyBzZWUgQ2hhbmdlTG9nLTk4OTkKDApMb2NhbCBWYXJpYWJsZXM6Cm1vZGU6IGNoYW5nZS1sb2cKbGVmdC1tYXJnaW46IDgKZmlsbC1jb2x1bW46IDc0CnZlcnNpb24tY29udHJvbDogbmV2ZXIKRW5kOgo=