MjAwMS0xMC0xNyAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBhZGRyMmxpbmUuMTogUmVtb3ZlIC5UUCBtYWNybyBmcm9tIFNZTk9QU0lTIHNlY3Rpb24gLSBpdAoJcHJldmVudHMgc3VjY2Vzc2Z1bCB0cmFuc2xhdGlvbiB0byBEb2NCb29rIGZvcm1hdC4KCSogbmxtY29udi4xOiBBcyBhYm92ZS4KCSogbm0uMTogQXMgYWJvdmUuCgkqIG9iamR1bXAuMTogQXMgYWJvdmUuCgkqIHNpemUuMTogQXMgYWJvdmUuCgkqIHN0cmluZ3MuMTogQXMgYWJvdmUuCgkqIHN0cmlwLjE6IEFzIGFib3ZlLgoKMjAwMS0xMC0wMiAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiByZWFkZWxmLmMgKGRpc3BsYXlfZGVidWdfbGluZSwgZGlzcGxheV9kZWJ1Z19wdWJuYW1lcywKCWRpc3BsYXlfZGVidWdfaW5mbywgZGlzcGxheV9kZWJ1Z19mcmFtZXMpOiBEZXRlY3QgYW5kIHdhcm4KCWFib3V0IDY0LWJpdCBmb3JtYXQgZW50cmllcy4KCShkaXNwbGF5X2RlYnVnX2FyYW5nZXMpOiBSZXdvcmQgNjQtYml0IHdhcm5pbmcuCgkoZGVidWdfZGlzcGxheXMpOiBBZGQgLmRlYnVnX3B1YnR5cGVzIGFzIGEga25vd24sIGJ1dCBub3QgeWV0CglzdXBwb3J0ZWQsIGRlYnVnIHNlY3Rpb24uCgoyMDAxLTEwLTAxICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIHJlYWRlbGYuYyAoZGlzcGxheV9kZWJ1Z19hcmFuZ2VzKTogV2FybiBhYm91dCBEV0FSRjY0IGZvcm1hdAoJLmRlYnVnX2FyYW5nZSBzZWN0aW9ucy4KCjIwMDEtMDgtMDUgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBiaW51dGlscy50ZXhpIChvYmpkdW1wKTogRml4IHR5cG9zLiAgVXNlICJUaHVtYiIgbm90ICJUSFVNQiIuCgoyMDAxLTA3LTMxICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCSogcmVhZGVsZi4xOiBOZXcgZmlsZS4KCjIwMDEtMDYtMjkgIEphbWVzIENvd25pZSA8amNvd25pZUBldG51cy5jb20+CgoJKiByZWFkZWxmLmM6IFN1cHBvcnQgRFdBUkYgMi4xIGF0dHJpYnV0ZXMuCgoyMDAxLTA2LTI3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIG9iamNvcHkuYyAoc3RyaXBfbWFpbik6IEFjY2VwdCAtbyBjb21tYW5kIGxpbmUgc3dpdGNoLgoKMjAwMS0wNi0xMSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglNZXJnZSBmcm9tIG1haW5saW5lLgoJMjAwMS0wMi0yNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCSogY29uZmlndXJlLmluIChCRkRfVkVSU0lPTik6IE5ldy4KCShBTV9JTklUX0FVVE9NQUtFKTogVXNlICRCRkRfVkVSU0lPTi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCTIwMDEtMDQtMjcgIE1pY2hhbCBTdmVjIDxyZWJlbEBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgkqIHN0cmluZ3MuYyAoaXNncmFwaGljKTogRG8gbm90IHVzZSBpc2FzY2lpKCkgdW5sZXNzIGl0IGlzIG5lZWRlZAoJZm9yIGlzcHJpbnQoKSB0byB3b3JrLgoJKG1haW4pOiBTZXQgdGhlIGxvY2FsZSBkb21haW4gdG8gTENfQUxMIG5vdCBqdXN0IExDX01FU1NBR0VTLgoKCTIwMDEtMDQtMTAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAb25lLm5ldC5hdT4KCSogbm0uYyAocHJpbnRfc3ltYm9sX2luZm9fYnNkKTogVXNlIGEgc2ltcGxlIHByaW50ZiBzdHJpbmcuCgoJMjAwMS0wMi0wNyAgVG9kZCBWaWVybGluZyAgPHR2QHdhc2FiaXN5c3RlbXMuY29tPgoJKiBidWNvbW0uYyAoYmZkX3RhcmdldF92ZWN0b3IpOiBDaGFuZ2UgZXh0ZXJuIGFycmF5IHRvIHBvaW50ZXIuCgkqIG9iamR1bXAuYyAoYmZkX3RhcmdldF92ZWN0b3IpOiBMaWtld2lzZS4KCjIwMDEtMDYtMTAgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBjb25maWd1cmUuaW46IFNldCB2ZXJzaW9uIHRvIDIuMTEuMS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMS0wNi0wOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIE5FV1M6IE1lbnRpb24gaHBwYTY0LWVsZi4gIEFkZCBiaW51dGlscy0yLjExIG1hcmtlci4KCgkqIE1BSU5UQUlORVJTOiBSZXBsYWNlIHdpdGggbWFpbmxpbmUgdmVyc2lvbi4KCjIwMDEtMDYtMDcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBNb3N0IGZpbGVzOiBVcGRhdGUgY29weXJpZ2h0IG5vdGljZXMuCgoyMDAxLTA1LTMwICBIb25kYSBIaXJva2kgIDxoaG9uZGFAa29iZS1jYXR2Lm5lLmpwPgoKCSogb2JqY29weS5jOiBBZGQgbmV3IHN3aXRjaGVzOiAtLWtlZXAtZ2xvYmFsLXN5bWJvbCwKCS0ta2VlcC1zeW1ib2xzLCAtLWxvY2FsaXplLXN5bWJvbHMsIC0ta2VlcC1nbG9iYWwtc3ltYm9scyBhbmQKCS0td2Vha2VuLXN5bWJvbHMuCgkqIGJpbnV0aWxzLnRleGk6IERvY3VtZW50IG5ldyBzd2l0Y2hlcy4KCSogb2JqY29weS4xOiBSZWdlbmVyYXRlLgoJKiBORVdTOiBBbm5vdW5jZSBuZXcgZmVhdHVyZS4KCjIwMDEtMDUtMjggIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJRnJvbSAyMDAxLTA1LTI4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgkqIHJlYWRlbGYuYyAoZGlzcGxheV9kZWJ1Z19mcmFtZXMpOiBGaXggd2FybmluZ3M6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlcywgZml4IGZvcm1hdCBzdHJpbmdzLgoKCUZyb20gMjAwMS0wNS0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCSogcmVhZGVsZi5jIChkb19kZWJ1Z19mcmFtZXNfaW50ZXJwKTogTmV3LgoJKGJ5dGVfZ2V0X2xpdHRsZV9lbmRpYW4pOiBJZiBCRkQ2NCwgYWx3YXlzIHJlYWQgZW50aXJlIDgtYnl0ZSBmaWVsZHMuCgkoYnl0ZV9nZXRfYmlnX2VuZGlhbik6IExpa2V3aXNlLgoJKHBhcnNlX2FyZ3MpIFsnRiddOiBTZXQgZG9fZGVidWdfZnJhbWVzX2ludGVycC4KCShGcmFtZV9DaHVuayk6IE1ha2UgZGF0YV9mYWN0b3Igc2lnbmVkLCBhZGQgZmRlX2VuY29kaW5nLgoJKGZyYW1lX2Rpc3BsYXlfcm93KTogRG9uJ3QgdHJ1bmMgcGNfYmVnaW4gdG8gaW50LgoJKHNpemVfb2ZfZW5jb2RlZF92YWx1ZSk6IE5ldy4KCShkaXNwbGF5X2RlYnVnX2ZyYW1lcyk6IEhhbmRsZSA2NC1iaXQgdGFyZ2V0cy4gIFByaW50IHJhdyBkYXRhCgl1bmxlc3MgZG9fZGVidWdfZnJhbWVzX2ludGVycC4KCShkZWJ1Z19kaXNwbGF5cyk6IFJlbW92ZSBkdXBsaWNhdGUgLmRlYnVnX2ZyYW1lLgoKCUZyb20gMjAwMS0wNS0xNSAgUmFsZiBCYWVjaGxlICA8cmFsZkBnbnUub3JnPgoJKiByZWFkZWxmLmM6IFJlcGxhY2UgdXNlcyBvZiBFTV9NSVBTX1JTNF9CRSB3aXRoIEVNX01JUFNfUlMzX0xFLgoJVGhlIGZvcm1lciBjb25zdGFudCB3YXMgbmV2ZXIgaW4gYWN0aXZlIHVzZSBhbmQgaXMgdXNlZCBvdGhlcndpc2UKCWJ5IHRoZSBBQkkuCgoJRnJvbSAyMDAxLTA1LTExICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCSogcmVhZGVsZi5jIChwcm9jZXNzX3Vud2luZCk6IFByaW50IGFsbCB1bndpbmQgc2VjdGlvbnMsIG5vdCBqdXN0CglvbmUuCgoJRnJvbSAyMDAxLTA1LTA3ICBUaGllbW8gU2V1ZmVyIDxzZXVmZXJAY3N2LmljYS51bmktc3R1dHRnYXJ0LmRlPgoJKiByZWFkZWxmLmMgKHByb2Nlc3NfdW53aW5kKTogUmVtb3ZlIGNvbnN0IHNwZWNpZmllci4KCglGcm9tIDIwMDEtMDMtMzAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogcmVhZGVsZi5jIChwcm9jZXNzX3Vud2luZCk6IEp1c3QgcmV0dXJuIGlmIGRvX3Vud2luZCBpcyAwLgoKCUZyb20gMjAwMS0wMy0yOSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoJKiByZWFkZWxmLmMgKHByb2Nlc3NfdW53aW5kKTogT25seSBkbyB1bndpbmQgc2VjdGlvbnMgZm9yCglJQTY0LgoKCUZyb20gMjAwMS0wMi0yOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCSogcmVhZGVsZi5jOiAoc3RydWN0IHVud19hdXhfaW5mbyk6IFJlbW92ZSBjb25zdCBtb2RpZmllciBmb3IKCSdzdHJ0YWInIGZpZWxkLgoJKHByb2Nlc3NfdW53aW5kKTogUmVtb3ZlIG5vbi1LJlIgY29tcGxpYW50IExIUyB0eXBlIGNhc3QgaW4gY2FsbAoJdG8gR0VUX0RBVEFfQUxMT0MgbWFjcm8uCgoJRnJvbSAyMDAxLTAyLTExICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgkqIHJlYWRlbGYuYyAoc3RydWN0IHVud19hdXhfaW5mbyk6IFJlbW92ZSBjb25zdCBmcm9tIHRoZSBpbmZvIG1lbWJlci4KCShwcm9jZXNzX3Vud2luZCk6IERvbid0IHR5cGUtY2FzdCB0aGUgdGhpcmQgYXJndW1lbnQgdG8gdGhlCglHRVRfREFUQV9BTExPQyBtYWNyby4KCglGcm9tIDIwMDEtMDItMTEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgkqIHJlYWRlbGYuYyAoZHVtcF9yZWxvY2F0aW9ucyk6IEZyZWUgY29ycmVjdGVkIGFsbG9jYXRlZAoJYXJyYXkuCgkocHJvY2Vzc191bndpbmQpOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmcuCgoJRnJvbSAyMDAxLTAyLTA3ICBEYXZpZCBNb3NiZXJnZXIgIDxkYXZpZG1AaHBsLmhwLmNvbT4KCSogcmVhZGVsZi5jIChwcm9jZXNzX3Vud2luZCk6IE5ldyBmdW5jdGlvbi4KCShzbHVycF9pYTY0X3Vud2luZF90YWJsZSk6IERpdHRvLgoJKGR1bXBfaWE2NF91bndpbmQpOiBEaXR0by4KCShmaW5kX3N5bWJvbF9mb3JfYWRkcmVzcyk6IERpdHRvLgoJKHNsdXJwX3JlbGFfcmVsb2NzKTogTmV3IGZ1bmN0aW9uIChzcGxpdCBvZmYgZnJvbSBkdW1wX3JlbG9jYXRpb25zKCkpLgoJKHNsdXJwX3JlbF9yZWxvY3MpOiBEaXR0by4KCShwYXJzZV9hcmdzKTogSGFuZGxlICctdScgb3B0aW9uLgoJKiB1bndpbmQtaWE2NC5jOiBOZXcgZmlsZS4KCSogdW53aW5kLWlhNjQuaDogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmFtOiBJbmNsdWRlIHVud2luZC1pYTY0LmMgaW4gcmVhZGVsZiBidWlsZC4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIHBvL2JpbnV0aWxzLnBvdDogUmVnZW5lcmF0ZS4KCjIwMDEtMDQtMDYgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogcmVhZGVsZi5jIChkaXNwbGF5X2RlYnVnX2xpbmVzKTogRml4IHR5cG8gZm9yICJQcm9sb2d1ZSIuCgoyMDAxLTAzLTE2ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMS0wMy0xMSAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogU2V0IHZlcnNpb24gdG8gMi4xMS4KCjIwMDEtMDItMTMgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGFjaW5jbHVkZS5tNCAoQU1fUFJPR19MRVgpOiBPdmVycmlkZSBpbnN0YWxsZWQgZGVmaW5pdGlvbi4KCSogYWNsb2NhbC5tNDogUmVnZW5lcmF0ZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMS0wMi0xMCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIG5tLmMgKHByaW50X3N5bWJvbF9pbmZvX2JzZCk6IERvbid0ICNpZmRlZiBpbnNpZGUgcHJpbnRmIGluIGNhc2UKCXByaW50ZiBpcyBhIG1hY3JvLgoKMjAwMS0wMi0wNCAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoT0JKRFVNUF9ERUZTKTogTWF0Y2ggYGFybSotKicsIG5vdCBqdXN0IGBhcm0tKicuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDEtMDEtMzEgIFN0ZXZlIGRlUm9zaWVyICA8c2Rlcm9zaWVyQHZhcmktbGl0ZS5jb20+CgoJKiBpZWVlLmMgKGllZWVfYWRkX2JiMTEpOiBEb24ndCBjaGVjayBmb3IgYmFja3NsYXNoZXMKCXVubGVzcyBIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSBpcyBkZWZpbmVkLgoKMjAwMS0wMS0yNCAgTWFyayBFbGJyZWNodCAgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGllZWUuYzogVXBkYXRlIGNvcHlyaWdodC4KCShpZWVlX3N0YXJ0X2NvbXBpbGF0aW9uX3VuaXQpOiBEb24ndCBjaGVjayBmb3IgYmFja3NsYXNoZXMKCXVubGVzcyBIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSBpcyBkZWZpbmVkLgoKCSogc3RhYnMuYzogVXBkYXRlIGNvcHlyaWdodC4gSW5jbHVkZSAiZmlsZW5hbWVzLmgiLgoJKHBhcnNlX3N0YWIpOiBVc2UgSVNfQUJTT0xVVEVfUEFUSC4gSWdub3JlIE5fV0FSTklORyBzdGFicy4KCjIwMDEtMDEtMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogcmVhZGVsZi5jIChwcm9jZXNzX3ZlcnNpb25fc2VjdGlvbnMpOiBDaGVjayBpZiBWRVJERUYgb3IgVkVSTkVFRAoJc2VjdGlvbnMgYXJlIHByZXNlbnQgYmVmb3JlIHVzaW5nIHRoZW0uICBSZW1vdmUgY29kZSBkdXBsaWNhdGlvbi4KCShwcm9jZXNzX3N5bWJvbF90YWJsZSk6IENoZWNrIGlmIFZFUkRFRiBvciBWRVJORUVEIHNlY3Rpb25zIGFyZQoJcHJlc2VudCBiZWZvcmUgdXNpbmcgdGhlbS4KCjIwMDEtMDEtMTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBvYmpjb3B5LmMgKGNvcHlfb2JqZWN0KTogRmFpbCBpZiBhdHRlbXB0aW5nIHRvIGNvbnZlcnQgdGhlCgllbmRpYW5uZXNzIG9mIHRoZSBpbnB1dCBvYmplY3QgZmlsZS4KCgkqIGJpbnV0aWxzLnRleGk6IEV4cGxhaW4gdGhhdCBvYmpjb3B5IGNhbm5vdCBjb252ZXJ0IGVuZGlhbm5lc3MuCgoyMDAxLTAxLTE2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogcmVhZGVsZi5jIChzdHJpbmdfdGFibGVfbGVuZ3RoKTogTmV3IHZhcmlhYmxlLgoJKFNFQ1RJT05fTkFNRSk6IENhdGNoIG91dCBvZiByYW5nZSBpbmRpY2VzIGFuZCBtaXNzaW5nIHNlY3Rpb24KCXBvaW50ZXJzLgoJKHByb2Nlc3Nfc2VjdGlvbl9oZWFkZXJzKTogRGVsZXRlIHVzZWxlc3MgbG9jYWwgdmFyaWFibGUKCXN0cmluZ190YWJsZV9vZmZzZXQuICBTZXQgdGhlIHZhbHVlIG9mIHN0cmluZ190YWJsZV9sZW5ndGgKCWFmdGVyIGxvYWRpbmcgdGhlIHN0cmluZyB0YWJsZS4KCShwcm9jZXNzX21pcHNfc3BlY2lmaWMpOiBVc2UgU0VDVElPTl9OQU1FIG1hY3JvLgoJKHByb2Nlc3NfZmlsZSk6IFNldCBzdHJpbmdfdGFibGVfbGVuZ3RoIHRvIDAgd2hlbiBpdCBpcyBmcmVlZC4KCjIwMDEtMDEtMTIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiB2ZXJzaW9uLmMgKHByaW50X3ZlcnNpb24pOiBVcGRhdGUgY29weXJpZ2h0IGRhdGUuCgoyMDAxLTAxLTExICBQZXRlciBUYXJnZXR0ICA8cGV0ZXIudGFyZ2V0dEBhcmNjb3Jlcy5jb20+CgoJKiByZWFkZWxmLmMgKGR1bXBfcmVsb2NhdGlvbnMpOiBJbmNsdWRlIHNlbGVjdGlvbiB3aXRoIEVNX0FSQy4KCShnZXRfbWFjaGluZV9uYW1lKSBVcGRhdGUgbmFtZSB0byAiQVJDIi4KCjIwMDEtMDEtMDkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5hbTogQWRkIHJ1bGUgdG8gYnVpbGQgb2JqZHVtcC5vIGZyb20gb2JqZHVtcC5jIGFuZAoJdXNpbmcgT0JKRFVNUF9ERUZTLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZ3VyZS5pbjogRGVmaW5lIE9CSkRVTVBfREVGUy4gIERlZmF1bHQgdG8gZW1wdHkuCgkoYXJtLCB4c2NhbGUsIGQxMHYpOiBGb3IgdGhlc2UgdGFyZ2V0cyBkZWZpbmUgT0JKRFVNUF9ERUZTIHRvCgktRERJU0FTU0VNQkxFUl9ORUVEU19SRUxPQ1MuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIG9iamR1bXAuYyAoZGlzYXNzZW1ibGVfYnl0ZXMpOiBJZiBESVNBU1NFTUJMRVJfTkVFRFNfUkVMT0NTCglpcyBkZWZpbmVkIHJlYWQgaW4gdGhlIHJlbG9jcyBldmVuIGlmIGR1bXBfcmVsb2NfaW5mbyBpcwoJZmFsc2UuCgoyMDAxLTAxLTA3ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogYmludXRpbHMudGV4aSAoQnVnIFJlcG9ydGluZyk6IFJlcGxhY2UgYGJ1Zy1nbnUtdXRpbHMnIHdpdGgKCWBidWctYmludXRpbHMnLgoJKiBSRUFETUU6IExpa2V3aXNlLgoKMjAwMC0xMi0xOSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGRsbHRvb2wuYzogQWRkIG1pc3Npbmcgc3VwcG9ydCBmb3IgYXJtLWVwb2MtcGUuCgkqIGNvbmZpZ3VyZS5pbjogQWRkIG1pc3Npbmcgc3VwcG9ydCBmb3IgYXJtLWVwb2MtcGUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMTItMTUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBNQUlOVEFJTkVSUzogQWRkIERpZWdvIE5vdmlsbG8gYXMgYSBtYWludGFpbmVyIGZvciB0aGUgSW50ZWwKCU1vZGUgcGFydHMgb2YgdGhlIHg4NiBwb3J0LgoKMjAwMC0xMi0wNCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogcmVhZGVsZi5jIChndWVzc19pc19yZWxhKTogQWRkIEVNX1g4Nl82NC4KCShkdW1wX3JlbG9jYXRpb25zKTogQWRkIEVNX1g4Nl82NC4KCShnZXRfbWFjaGluZV9uYW1lKTogQWRkIEVNX1g4Nl82NC4KCUluY2x1ZGUgImVsZi94ODYtNjQuaCIuCgoyMDAwLTEyLTEyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogcmVhZGVsZi5jOiBGaXggZm9ybWF0dGluZy4KCk1vbiBEZWMgMTEgMTQ6MzA6MjEgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIE1BSU5UQUlORVJTOiBBZGQgbXlzZWxmIGFuZCBBbmRyZWFzIEphZWdlciBhcyB4ODZfNjQgbWFpbnRhaW5lci4KCjIwMDAtMTItMDcgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogcmVhZGVsZi5jIChkaXNwbGF5X2RlYnVnX2ZyYW1lcyk6IE9ubHkgZGlzcGxheSBjb2x1bW5zIHRoYXQgYXJlCglyZWZlcmVuY2VkIGJ5IHRoZSBmcmFtZSBkZWJ1ZyBpbmZvLgoKMjAwMC0xMi0wNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIE1BSU5UQUlORVJTOiBBZGQgSmFzb24gTWVycmlsbCBhcyBEV0FSRjIgbWFpbnRhaW5lci4KCjIwMDAtMTItMDQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogcmVhZGVsZi5jIChwcm9jZXNzX3NlY3Rpb25faGVhZGVycyk6IEhhbmRsZSBsaW5rb25jZS53aSBzZWN0aW9ucy4KCShkaXNwbGF5X2RlYnVnX3NlY3Rpb24pOiBMaWtld2lzZS4KCShkaXNwbGF5X2RlYnVnX2luZm8pOiBEaXNwbGF5IENVIGhlYWRlciBiZWZvcmUgYmFpbGluZy4KCjIwMDAtMTItMDEgIENocmlzIERlbWV0cmlvdSAgPGNnZEBzaWJ5dGUuY29tPgoKCSogcmVhZGVsZi5jIChnZXRfbWFjaGluZV9mbGFncyk6IFJlY29nbml6ZSBNSVBTMzIgSVNBIGluCglFRl9NSVBTX0FSQ0guICBSZXBsYWNlIHVzZSBvZiBFX01JUFNfTUFDSF9NSVBTMzIgd2l0aAoJRV9NSVBTX01BQ0hfTUlQUzMyXzRLIGFuZCBhZGp1c3QgcHJpbnRlZCBDUFUgbmFtZSBzaW1pbGFybHkuCgoJKiByZWFkZWxmLmMgKGdldF9tYWNoaW5lX2ZsYWdzKTogQWRkIGNhc2VzIGZvciBFX01JUFNfQVJDSF81LAoJYW5kIEVfTUlQU19BUkNIXzY0LgoKCSogcmVhZGVsZi5jIChnZXRfbWFjaGluZV9mbGFncyk6IEFkZCBjYXNlIGZvcgoJRV9NSVBTX01BQ0hfU0IxLgoKMjAwMC0xMS0zMCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiByZWFkZWxmLmMgKGZyYW1lX2Rpc3BsYXlfcm93KTogT3V0cHV0ICdzJyBmb3IgRFdfQ0ZBX3NhbWVfdmFsdWUuCgoyMDAwLTExLTI4ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBNQUlOVEFJTkVSUzogQWRkIEr2cm4gUmVubmVja2UgYW5kIHNlbGYgYXMgU0ggbWFpbnRhaW5lcnMuCglDaGFuZ2Ugc291cmNld2FyZS5jeWdudXMuY29tIHRvIHNvdXJjZXMucmVkaGF0LmNvbS4KCUZpeCB0eXBvIGZvciAiYW1vbmdzdCIuCgoyMDAwLTExLTI4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogc3RyaXAuMSAoQ09QWUlORyk6IE1lbnRpb24gdGhhdCB0aGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbgoJTGljZW5zZSBpcyBwcmVzZW50IGluIHRoZSBzb3VyY2VzLCBidXQgbm90IHRoZSBvdXRwdXQsIGFuZAoJYWxzbyBhdmFpbGFibGUgZnJvbSB0aGUgR05VIHdlYnNpdGUuCgkoR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlKTogQ29tbWVudCBvdXQgdGhpcyBzZWN0aW9uLgoJKiBzdHJpbmdzLjE6IERpdHRvLgoJKiBzaXplLjE6IERpdHRvLgoJKiByYW5saWIuMTogRGl0dG8uCgkqIG9iamR1bXAuMTogRGl0dG8uCgkqIG9iamNvcHkuMTogRGl0dG8uCgkqIG5tLjE6IERpdHRvLgoJKiBubG1jb252LjE6IERpdHRvLgoJKiBhci4xOiBEaXR0by4KCSogYWRkcjJsaW5lLjE6IERpdHRvLgoKMjAwMC0xMS0yNyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiByZWFkZWxmLmMgKHVzYWdlKTogQWRkIC13ZiAoLS1kZWJ1Zy1kdW1wPWZyYW1lcykgb3B0aW9uLgoJKHBhcnNlX2FyZ3MpOiBTdXBwb3J0IC13ZiBvcHRpb24uCgkocHJvY2Vzc19zZWN0aW9uX2hlYWRlcnMpOiBEaXR0by4KCShkZWJ1Z19kaXNwbGF5cyk6IERpdHRvLgoJKGRpc3BsYXlfZGVidWdfZnJhbWVzKTogTmV3LCBkdW1wICpfZnJhbWUgc2VjdGlvbnMuCgkoZnJhbWVfbmVlZF9zcGFjZSk6IFN1cHBvcnQgZm9yIGFib3ZlLgoJKGZyYW1lX2Rpc3BsYXlfcm93KTogRGl0dG8uCgkqIGJpbnV0aWxzLnRleGk6IERvY3VtZW50IGl0LgoKMjAwMC0xMS0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIE5FV1M6IEFubm91bmNlIHN1cHBvcnQgZm9yIHY1dCwgdjV0ZSBhbmQgWFNjYWxlLgoKMjAwMC0xMS0yMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIHJlYWRlbGYuYyAoZ2V0X21hY2hpbmVfbmFtZSk6IEFkZCBFTV9KQVZFTElOLCBFTV9GSVJFUEFUSCwKCUVNX1pTUCwgRU1fTU1JWCwgRU1fSFVBTlksIEVNX1BSSVNNLgoJKGdldF9zZWN0aW9uX3R5cGVfbmFtZSk6IEFkZCBTSFRfR1JPVVAgYW5kIFNIVF9TWU1UQUJfU0hORFguCgkoZ2V0X2VsZl9zZWN0aW9uX2ZsYWdzOiBBZGQgU0hGX0dST1VQLgoJKHByb2Nlc3Nfc2VjdGlvbl9oZWFkZXJzKTogQWRqdXN0IG91dHB1dCBmb3IgMzItYml0IGJpbmFyaWVzCgl0byBsb29rIG5pY2Ugb24gYW4gODAgY29sdW1uIHRlcm1pbmFsLgoKMjAwMC0xMS0yMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogcmVhZGVsZi5jIChnZXRfb3NhYmlfbmFtZSk6IENoYW5nZSBFTEZPU0FCSV9NT05URVJFWSB0bwoJRUxGT1NBQklfQUlYLgoKMjAwMC0xMS0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHJlYWRlbGYuYyAoZGlzcGxheV9kZWJ1Z19saW5lcyk6IEFkanVzdCBsYXN0IGNoYW5nZSB0bwoJdXNlIHNpemVvZiAoZXh0ZXJuYWwtPmxpX2xlbmd0aCkuCgoyMDAwLTExLTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogcmVhZGVsZi5jIChkaXNwbGF5X2RlYnVnX2xpbmVzKTogRml4IHNlY3Rpb24gbGVuZ3RoIGNoZWNrCglhbmQgZW5kX29mX3NlcXVlbmNlIGNvbXB1dGF0aW9uLgoKMjAwMC0xMS0wNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGJpbnV0aWxzLnRleGk6IEFkZCBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UuCgkqIG9iamNvcHkuMTogQWRkIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZS4KCSogb2JqZHVtcC4xOiBBZGQgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLgoJKiBhZGRyMmxpbmUuMTogQWRkIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZS4KCSogYXIuMTogQWRkIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZS4KCSogbmxtY29udi4xOiBBZGQgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLgoJKiBubS4xOiBBZGQgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLgoJKiByYW5saWIuMTogQWRkIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZS4KCSogc2l6ZS4xOiBBZGQgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLgoJKiBzdHJpbmdzLjE6IEFkZCBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UuCgkqIHN0cmlwLjE6IEFkZCBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UuCgoyMDAwLTEwLTA2ICBMdWNpYW5vIEdlbW1lIDxpc2hpdGF3YUB5YWhvby5jb20+CgoJKiBvYmpjb3B5LmMgKC0tc3JlYy1sZW49bm4pOiBOZXcgcGFyYW1ldGVyIHRvIHNldCB0aGUKCW1heGltdW0gbGVuZ3RoIG9mIGdlbmVyYXRlZCBTcmVjb3Jkcy4KCSgtLXNyZWMtZm9yY2VTMyk6IE5ldyBwYXJhbWV0ZXIgdGhhdCByZXN0cmljdHMgdGhlIGdlbmVyYXRpb24gb2YKCVNyZWNvcmRzIHRvIHR5cGUgUzMgb25seS4KCSogYmludXRpbHMudGV4aTogRG9jdW1lbnQgbmV3IGNvbW1hbmQgbGluZSBzd2l0Y2hlcy4KCSogb2JqY29weS4xOiBEb2N1ZW1udCB0aGUgbmV3IGNvbW1hbmQgbGluZSBzd2l0Y2hlcy4KCSogTkVXUzogQW5ub3VuY2UgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgbmV3IGNvbW1hbmQgbGluZSBzd2l0Y2hlcy4KCjIwMDAtMTAtMzEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBNQUlOVEFJTkVSUzogQWRkIEppbSBXaWxzb24gYXMgdGhlIG1haW50YWluZXIgZm9yIHRoZSBJQTY0Cgljb2RlLiAgQWRkIEVyaWMgQ2hyaXNvcGhlciBhcyBtYWludGFpbmVyIG9mIE1OMTAzMDAgcG9ydC4KCjIwMDAtMTAtMTIgIFJvZ2VyIFNheWxlICA8cm9nZXJAbWV0YXBob3JpY3MuY29tPgoKCSogTWFrZSBjb21tYSBhZnRlciBzdHJpbmcgYWZ0ZXIgaWNvbi9jb250cm9sIG9wdGlvbmFsLgoKMjAwMC0wOS0xMyAgQW5kZXJzIE5vcmxhbmRlciAgPGFub3JsYW5kQGFjYy51bXUuc2U+CgoJKiByZWFkZWxmLmMgKGdldF9tYWNoaW5lX2ZsYWdzKTogQWxzbyBwcmludCBFRl9NSVBTX01BQ0ggZmllbGQuCgoJKiBORVdTOiBNZW50aW9uIHN1cHBvcnQgZm9yIE1JUFMzMi4KCjIwMDAtMDktMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBNQUlOVEFJTkVSUzogQWRkIFN0ZXBoYW5lIENhcnJleiBhcyBtYWludGFpbmVyIGZvciA2OEhDWzExfDEyXS4KCjIwMDAtMDktMDcgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfSVNDX1BPU0lYKTogUHV0IGFmdGVyIEFDX0NBTk9OSUNBTF9TWVNURU0uCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KCjIwMDAtMDktMDYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlndXJlOiBSZWJ1aWx0IHdpdGggbmV3IGxpYnRvb2wubTQuCgoyMDAwLTA5LTA1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogYWNsb2NhbC5tNDogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTA5LTA0ICBUb2RkIFZpZXJsaW5nICA8dHZAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBzdHJpcC4xOiBGaXggc3RyYXkgJ1wnIGluIC1vIGZvcm1hdHRpbmcuCgoyMDAwLTA5LTAyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluOiBJbmNyZWFzZSB2ZXJzaW9uIG51bWJlciB0byAyLjEwLjkxLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGFjbG9jYWwubTQ6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCSogcG8vYmludXRpbHMucG90OiBSZWdlbmVyYXRlLgoKMjAwMC0wOC0zMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBhY2luY2x1ZGUubTQ6IEluY2x1ZGUgbGlidG9vbCBhbmQgZ2V0dGV4dCBtYWNyb3MgZnJvbSB0aGUKCXRvcCBsZXZlbC4KCSogYWNsb2NhbC5tNCwgY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wOC0zMCAgSmFtaWUgR3VpbmFuICA8Z3VpbmFuQGJsdWVidXR0b24uY29tPgoKCSogcmVzcmMuYyAoY2xvc2VfaW5wdXRfc3RyZWFtKTogRGVsZXRlIGV4dHJhbmVvdXMgbG9naWMKCjIwMDAtMDgtMjQgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogTkVXUzogTWVudGlvbiBzdXBwb3J0IGZvciBDUklTLgoKMjAwMC0wOC0yMSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGFkZHIybGluZS5jOiBDaGFuZ2VkIGVtYWlsIGFkZHJlc3MgZm9yIFVscmljaCBMYXV0aGVyLgoKMjAwMC0wOC0xNyAgQ2hyaXN0b3BoZXIgQy4gQ2hpbWVsaXMgPGNocmlzQGRlYmlhbi5vcmc+CgoJKiBvYmpkdW1wLmMgKExPTkdFU1RfQVJDSCk6IFNldCB0byBzaXplb2YoInBvd2VycGM6Y29tbW9uIikuCgoyMDAwLTA4LTE3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogcmVhZGVsZi5jIChkaXNwbGF5X2RlYnVnX3B1Ym5hbWVzKTogT25seSBpc3N1ZSB3YXJuaW5nCgltZXNzYWdlIG9uY2UuICBUZXJtaW5hdGUgbWVzc2FnZSB3aXRoIGEgbmV3IGxpbmUuCgkoZGlzcGxheV9kZWJ1Z19hcmFuZ2VzKTogT25seSBkaXNwbGF5IHZlcnNpb24gMiBkZWJ1ZyBpbmZvLgoKMjAwMC0wOC0xNCAgVG9kZCBWaWVybGluZyA8dHZAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBvYmpjb3B5LmMgKHN0cmlwX21haW4pOiBTaWxlbnRseSBhY2NlcHQgLWQgYXMgYW4gYWxpYXMgZm9yIC1nCglmb3IgY29tcGF0YWJpbGl0eSB3aXRoIG9sZCBCU0Qgc3lzdGVtcy4KCjIwMDAtMDgtMTQgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBORVdTOiBNZW50aW9uIGk4NjAgc3VwcG9ydC4KCjIwMDAtMDgtMTEgIENhcmxvIFdvb2QgPGNhcmxvQGFsaW5vZS5jb20+CgoJKiBhZGRyMmxpbmUuYyAobWFpbik6IEFkZCBjb25zdCB0byBjaGFyICouCgoyMDAwLTA4LTExICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBhci5jIChtYWluKTogRG9uJ3QgY3Jhc2ggaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzCglvciBvbmx5ICctWDMyXzY0JyBhcyBhbiBhcmd1bWVudC4KCjIwMDAtMDgtMDggIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogcmVzcmMuYzogdXNlICJnY2MgLXhjIiBpbnN0ZWFkIG9mIC14Yy1oZWFkZXIKCjIwMDAtMDgtMDUgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiByZWFkZWxmLmMgKGVsZi9pODYwLmgpOiBJbmNsdWRlLgoJKGR1bXBfcmVsb2NhdGlvbnMpOiBBZGQgcmVjb2duaXRpb24gb2YgaTg2MCBhcmNoaXRlY3R1cmUuCgkoZ3Vlc3NfaXNfcmVsYSk6IEFkZCByZWNvZ25pdGlvbiBvZiBpODYwIGFyY2hpdGVjdHVyZS4KCjIwMDAtMDgtMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBNQUlOVEFJTkVSUzogQWRkIGluZm9ybWF0aW9uIGFib3V0IENHRU4gbWFpbnRhaW5lcnMuCgoyMDAwLTA3LTI2ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBubS5jIChtYWluKTogSWdub3JlICctWDMyXzY0JyBhcyBhbiBvcHRpb24uCgkqIGFyLmMgKG1haW4pOiBMaWtld2lzZS4KCSogYmludXRpbHMudGV4aSAobm0pOiBEb2N1bWVudCBuZXcgb3B0aW9uLgoJKGFyKTogTGlrZXdpc2UuCgoyMDAwLTA3LTIzICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJKiByZGNvZmYuYyAoZXh0ZXJuYWxfY29mZl9zeW1ib2xfcCk6IEsmUi1pc2UuCgoyMDAwLTA3LTIwICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBiaW51dGlscy50ZXhpOiBQdXQgYmFjayAiQGVuZCB0YWJsZSIgZGVsZXRlZCBieQoJYWNjaWRlbnQuCgoyMDAwLTA3LTA1ICBLZW5uZXRoIEJsb2NrICA8a3JibG9ja0Bjb21wdXRlci5vcmc+CgoJKiBubS5jOiBBZGQgb3B0aW9uYWwgc3R5bGUgdG8gZGVtYW5nbGUgc3dpdGNoLgoJKiBvYmpkdW1wLmM6IEFkZCBvcHRpb25hbCBzdHlsZSB0byBkZW1hbmdsZSBzd2l0Y2guCgkqIGFkZHIybGluZS5jOiBBZGQgb3B0aW9uYWwgc3R5bGUgdG8gZGVtYW5nbGUgc3dpdGNoLgoJKiBiaW51dGlscy50ZXhpOiBEb2N1bWVudCBvcHRpb25hbCBzdHlsZSB0byBkZW1hbmdsZQoJc3dpdGNoLgoKMjAwMC0wNy0yMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBNQUlOVEFJTkVSUzogQWRkIHNlbGYgYXMgQ1JJUyBwb3J0IG1haW50YWluZXIuCgkqIHJlYWRlbGYuYzogSW5jbHVkZSBlbGYvY3Jpcy5oLgoJKGd1ZXNzX2lzX3JlbGEpOiBIYW5kbGUgRU1fQ1JJUy4KCShkdW1wX3JlbG9jYXRpb25zKTogRGl0dG8uCgkoZ2V0X21hY2hpbmVfbmFtZSk6IERpdHRvLgoJKiBNYWtlZmlsZS5hbTogUmVidWlsZCBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBwby9iaW51dGlscy5wb3Q6IFJlZ2VuZXJhdGUuCgoyMDAwLTA3LTE5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiByZWFkZWxmLmMgKGdldF9keW5hbWljX3R5cGUpOiBDaGFuZ2UgIkFVWElMQVJZIiB0bwoJIkFVWElMSUFSWSIuCgkocHJvY2Vzc19keW5hbWljX3NlZ21lbnQpOiBQcmludCBvdXQgc3RyaW5ncyBmb3IgRFRfQ09ORklHLAoJRFRfREVQQVVESVQsIERUX0FVRElUIGFuZCBEVF9SVU5QQVRILgoKMjAwMC0wNy0xOSAgTWFyayBLZXR0ZW5pcyAgPGtldHRlbmlzQGdudS5vcmc+CgoJKiBubS5jICh1c2FnZSk6IENoYW5nZSBvdXRwdXQgb2YgYG5tIC0taGVscCcgdG8gaW5jbHVkZSBhCglkZXNjcmlwdGlvbiBvZiB0aGUgcHVycG9zZSBvZiB0aGUgcHJvZ3JhbSBhbmQgYSBkZXRhaWxlZAoJZGVzY3JpcHRpb24gb2YgdGhlIGFjY2VwdGVkIG9wdGlvbnMuCgoyMDAwLTA3LTE5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiByZWFkZWxmLmMgKHByb2Nlc3NfZHluYW1pY19zZWdtZW50KTogQ2hhbmdlIERGXzFfTk9ERVBMSUIKCXRvIERGXzFfTk9ERUZMSUIuCgoyMDAwLTA3LTE5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiByZWFkZWxmLmMgKGdldF9keW5hbWljX3R5cGUpOiBGaXggRFRfQ0hFQ0tTVU0uCgoyMDAwLTA3LTE5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiByZWFkZWxmLmMgKGdldF9keW5hbWljX3R5cGUpOiBDaGFuZ2UgRFRfRkVBVFVSRV8xIHRvCglEVF9GRUFUVVJFLgoJKHByb2Nlc3NfZHluYW1pY19zZWdtZW50KTogTGlrZXdpc2UuCgoJKiByZWFkZWxmLmMgKGdldF9keW5hbWljX3R5cGUpOiBIYW5kbGUgRFRfQ09ORklHLCBEVF9ERVBBVURJVCwKCURUX0FVRElULCBEVF9QTFRQQUQsIERUX01PVkVUQUIgYW5kIERUX0NIRUNLU1VNLgoJKHByb2Nlc3NfZHluYW1pY19zZWdtZW50KTogSGFuZGxlIERURl8xX0NPTkZFWFAsIERGXzFfTk9ERVBMSUIsCglERl8xX05PRFVNUCBhbmQgREZfMV9DT05MRkFULgoKMjAwMC0wNy0xOCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGJpbnV0aWxzLnRleGkgKHJlYWRlbGYpOiBGaXggc3BlbGxpbmcgdHlwby4KCjIwMDAtMDctMTEgIE1hcmsgS2V0dGVuaXMgIDxrZXR0ZW5pc0BnbnUub3JnPgoKCSogb2JqZHVtcC5jICh1c2FnZSk6IE1ha2Ugb3V0cHV0IG9mIGBvYmpkdW1wIC0taGVscCcgbW9yZQoJY29uc2lzdGVudCB3aXRoIHRoZSByZXN0IG9mIHRoZSBHTlUgd29ybGQuICBBZGQgYSBsaW5lIGRlc2NyaWJpbmcKCXRoZSBwdXJwb3NlIG9mIHRoZSBwcm9ncmFtLgoKMjAwMC0wNy0xMCAgRGF2aWQgSHVnZ2lucy1EYWluZXMgIDxkaGRAbGludXhjYXJlLmNvbT4KCgkqIHN0YWJzLmMgKHBhcnNlX3N0YWJfcmFuZ2VfdHlwZSk6IENhc3QgdG8gcHJvcGVyIHR5cGUgdG8gZml4Cgl3YXJuaW5nLgoKMjAwMC0wNy0xMCAgUnlhbiBCcmFkZXRpY2ggIDxyYnJhZGV0aWNoQHVzd2VzdC5uZXQ+CgoJKiByZWFkZWxmLmMgKGdldF9keW5hbWljX2RhdGEpOiBBZGQgY2FzdHMgYW5kIHVzZSB1bnNpZ25lZCBjaGFycwoJdG8gZml4IHdhcm5pbmdzLgoJKHByb2Nlc3Nfc3ltYm9sX3RhYmxlKTogRGl0dG8uCgkocHJvY2VzU19leHRlbmRlZF9saW5lX29wKTogRGl0dG8uCgkoZGlzcGxheV9kZWJ1Z19saW5lcyk6IERpdHRvLgoJKGRpc3BsYXlfZGVidWdfcHVibmFtZXMpOiBEaXR0by4KCShyZWFkX2FuZF9kaXNwbGF5X2F0dHIpOiBEaXR0by4KCjIwMDAtMDctMDkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBNQUlOVEFJTkVSUzogQWRkIHNldmVyYWwgbW9yZSBwb3J0IHNwZWNpZmljIG1haW50YWluZXJzLgoKMjAwMC0wNy0wNSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIE1BSU5UQUlORVJTOiBBZGQgYmxhbmtldCB3cml0ZSBwcml2cyBmb3IgTWljaGFlbCBNZWlzc25lci4KCjIwMDAtMDYtMDUgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogTUFJTlRBSU5FUlM6IE5ldy4KCjIwMDAtMDctMDEgIEVyaWMgRmlmZXIgIDxFRmlmZXJAc2Fud2FpbnQuY29tPgoKCSogZGxsd3JhcC5jOiBDaGFuZ2VkIG1pc3Rha2VuIGR5bl9zdHJpbmdfYXBwZW5kKCkgY2FsbHMKCXRvIGR5bl9zdHJpbmdfYXBwZW5kX2NzdHIoKS4KCjIwMDAtMDctMDEgIEFsZXhhbmRlciBBZ2FuaWNoZXYgPEFBZ2FuaWNoZXZAaHlwZXJjb20uY29tPgoKCSogc3RhYnMuYyAocGFyc2Vfc3RhYl90eXBlKTogRGl2aWRlIHNpemUgaW4gYml0cyBieSA4IGFzIGJpbnV0aWxzCglzdHJ1Y3QgZGVidWdfdHlwZSBzdG9yZXMgc2l6ZSBpbiBieXRlcy4KCjIwMDAtMDctMDEgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBNYWtlZmlsZS5hbSAoREVQKTogRml4IDIwMDAtMDYtMjIuICBncmVwIGFmdGVyIHJ1bm5pbmcgZGVwLnNlZAoJKENMRUFORklMRVMpOiBBZGQgREVQQS4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoyMDAwLTA2LTI3ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogYXIuYzogUmV2ZXJ0IGluY29ycmVjdCAyMDAwLTA2LTI1IHBhdGNoLgoJKiBidWNvbW0uYzogTGlrZXdpc2UuCgoyMDAwLTA2LTI1IE1hcmsgRWxicmVjaHQgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIHJkY29mZiAocGFyc2VfY29mZl9zeW1ib2wpOiBUcmVhdCBHTlUgd2VhayBzeW1ib2xzIGFzIGV4dGVybmFsLgoJKGV4dGVybmFsX2NvZmZfc3ltYm9sX3ApOiBOZXcgZnVuY3Rpb24uCgkocGFyc2VfY29mZik6IFVzZSBpdC4KCjIwMDAtMDYtMjUgIEFsZXhhbmRlciBBZ2FuaWNoZXYgPEFBZ2FuaWNoZXZAaHlwZXJjb20uY29tPgoKCSogYXIuYyAobm9ybWFsaXplKTogQWR2YW5jZSBwYXN0IGJvdGggY2hhcmFjdGVycyBpbiBhIERPUyBiYXNlZAoJPGxldHRlcj46IGZpbGVwYXRoIHByZWZpeC4KCShtYWluKTogTGlrZXdpc2UuCgkqIGJ1Y29tbS5jIChtYWtlX3RlbXBuYW1lKTogTGlrZXdpc2UuCgoyMDAwLTA2LTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogb2JqZHVtcC5jICh1c2FnZSk6IEZpeCBkZXNjcmlwdGlvbiBvZiAtLXN0YWJzIHN3aXRjaC4KCjIwMDAtMDYtMjIgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBNYWtlZmlsZS5hbSAoREVQKTogZ3JlcCBmb3IgbGVhZGluZyBgLycgaW4gREVQMSwgYW5kIGZhaWwgaWYgd2UKCWZpbmQgb25lLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCjIwMDAtMDYtMjAgIEFsZXhhbmRlciBBZ2FuaWNoZXYgPEFBZ2FuaWNoZXZAaHlwZXJjb20uY29tPgoKCSogYXIuYyAobm9ybWFsaXplKTogQ29ycmVjdCBwb2ludGVyIGNvbXBhcmlzb24gd2hlbiBjaGVja2luZyBmb3IKCWJhY2tzbGFzaGVzLgoJKG1haW4pOiBMaWtld2lzZS4KCSogYnVjb21tLmMgKG1ha2VfdGVtcG5hbWUpOiBMaWtld2lzZS4KCgkqIGllZWUuYyAoaWVlZV9zdGFydF9jb21waWxhdGlvbl91bml0KTogQ29ycmVjdCBwb2ludGVyIGNvbXBhcmlzb24KCWFuZCBzZWFyY2ggZm9yIGJhY2tzbGFzaGVzIGluIHRoZSBvcmlnaW5hbCBwYXRobmFtZS4KCShpZWVlX2FkZF9iYjExKTogTGlrZXdpc2UuCgoyMDAwLTA2LTE4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogYXIuYyAocHJpbnRfY29udGVudHMpOiBJbXByb3ZlIHZlcmJvc2UgbWVzc2FnZS4KCjIwMDAtMDYtMTUgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGR5bi1zdHJpbmcuYzogUmVtb3ZlZC4gTm90IG5lZWRlZCB3aXRoIGR5bi1zdHJpbmcuYyBpbgoJbGliaWJlcnR5LgoJKiBkeW4tc3RyaW5nLmg6IExpa2V3aXNlLgoKCSogTWFrZWZpbGUuYW06IFJlbW92ZSByZWZlcmVuY2VzIHRvIGR5bi1zdHJpbmcuYyBhbmQKCWR5bi1zdHJpbmcuaC4gUmVidWlsZCBkZXBlbmRlbmN5LgoJKiBNYWtlZmlsZS5pbjogUmVidWlsZC4KCjIwMDAtMDYtMTUgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGJpbnV0aWxzLnRleGk6IFB1dCBhIHdhcm5pbmcgb24gY29weWluZyByZWxvY2F0YWJsZSBvYmplY3QKCWZpbGVzIGJldHdlZW4gdHdvIGRpZmZlcmVudCBmb3JtYXRzLgoKMjAwMC0wNi0xMyAgREogRGVsb3JpZSAgPGRqQGN5Z251cy5jb20+CgoJKiByY3BhcnNlLnkgKGNvbnRyb2wpOiBJQ09OIGNvbnRyb2xzIHRha2UgYW4gaWQgYXMgdGhlIGZpcnN0CglwYXJhbWV0ZXIsIG5vdCBhbiBvcHRpb25hbCBzdHJpbmcuICBBbHNvLCBjYWxsIG5ldyBjb252ZW5pZW5jZQoJZnVuY3Rpb24gdGhhdCB0YWtlcyByZXNfaWQncy4KCSogcmVzcmMuYyAoZGVmaW5lX2NvbnRyb2wpOiBtaXNzaW5nIHRleHQgbWVhbnMgemVyby1sZW5ndGggc3RyaW5nLAoJbm90IHplcm8gSUQuCgkoZGVmaW5lX2ljb25fY29udHJvbCk6IE5ldy4KCSogd2luZHJlcy5oOiBkZWNsYXJlIGRlZmluZV9pY29uX2NvbnRyb2wuCgoyMDAwLTA2LTEzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTA2LTA4ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCSogY29uZmlndXJlLmluIChWRVJTSU9OKTogVXBkYXRlIHRvIHNob3cgdGhpcyBpcyB0aGUgQ1ZTIG1haW5saW5lLgoKMjAwMC0wNi0wMiAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIHN0cmluZ3MuYyAoaXNncmFwaGljKTogSW50ZXJwcmV0IDxUQUI+IGFzIGEgcHJpbnRhYmxlIGNoYXJhY3RlciwKCWFuYWxvZ291cyB0byA8U1BBQ0U+LgoKMjAwMC0wNS0zMCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIG9iamR1bXAuYyAoZGlzcGxheV90YXJnZXRfbGlzdCk6IFVzZSBiZmRfY2xvc2VfYWxsX2RvbmUsIG5vdAoJYmZkX2Nsb3NlIHRvIGZpeCBjcmFzaCBjYXVzZWQgYnkgMjAwMC0wNS0yNCBjaGFuZ2UuCgoyMDAwLTA1LTI1ICBESiBEZWxvcmllICA8ZGpAY3lnbnVzLmNvbT4KCgkqIHJlc3JjLmMgKGNsb3NlX2lucHV0X3N0cmVhbSk6IHplcm8gb3V0IGNwcF9waXBlIGFmdGVyIGNsb3NpbmcgaXQuCgoyMDAwLTA1LTI2ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogTWFrZWZpbGUuYW06IFVwZGF0ZSBkZXBlbmRlbmNpZXMgd2l0aCAibWFrZSBkZXAtYW0iCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKMjAwMC0wNS0yNiAgRWxpIFphcmV0c2tpaSAgPGVsaXpAaXMuZWx0YS5jby5pbD4KCgkqIGFyLmM6IEluY2x1ZGUgZmlsZW5hbWVzLmguCgkobm9ybWFsaXplKSBbSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU1dOiBTdXBwb3J0IGJhY2tzbGFzaGVzCglhbmQgZHJpdmUgbGV0dGVycyBpbiBmaWxlIG5hbWVzLgoJKG1haW4pOiBTdXBwb3J0IGJhY2tzbGFzaGVzIGFuZCBkcml2ZSBsZXR0ZXJzIGluIGFyZ3ZbMF0uICBEcm9wCgl0aGUgLmV4ZSBzdWZmaXgsIGlmIGFueSwgaW4gYXJndlswXSBpZiBpc19yYW5saWIgaXMgbmVnYXRpdmUuICBVc2UKCUZJTEVOQU1FX0NNUCBpbnN0ZWFkIG9mIHN0cmNtcCB0byBjb21wYXJlIGZpbGUgbmFtZXMuCgkob3Blbl9pbmFyY2gpIFtfX0dPMzJfX106IERvbid0IGlmZGVmIGVycm5vICE9IEVOT0VOVCB0ZXN0IGZvcgoJREpHUFAgdjIuCgkoZG9fcXVpY2tfYXBwZW5kKSBbX19HTzMyX19dOiBEaXR0by4KCShnZXRfcG9zX2JmZCwgZGVsZXRlX21lbWJlcnMsIG1vdmVfbWVtYmVycywgcmVwbGFjZV9tZW1iZXJzKToKCUNvbXBhcmUgZmlsZSBuYW1lcyB3aXRoIEZJTEVOQU1FX0NNUC4KCgkqIGJ1Y29tbS5jOiBJbmNsdWRlIGZpbGVuYW1lcy5oLgoJKG1ha2VfdGVtcG5hbWUpIFtIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTV06IFN1cHBvcnQgbWl4ZWQKCWZvcndhcmQvYmFja3dhcmQgc2xhc2hlcyBhbmQgZHJpdmUgbGV0dGVycyBpbiBmaWxlIG5hbWVzLgoKCSogaWVlZS5jIChpZWVlX3N0YXJ0X2NvbXBpbGF0aW9uX3VuaXQsIGllZWVfYWRkX2JiMTEpOiBTdXBwb3J0CgltaXhlZCBmb3J3YXJkL2JhY2t3YXJkIHNsYXNoZXMgYW5kIGRyaXZlIGxldHRlcnMgaW4gZmlsZSBuYW1lcy4KCgkqIHN0cmluZ3MuYyAoT19CSU5BUlksIHNldG1vZGUsIFNFVF9CSU5BUlkpOiBEZWZpbmUuCgkobWFpbikgW1NFVF9CSU5BUlldOiBVc2UgU0VUX0JJTkFSWSB0byBzd2l0Y2ggc3RkaW4gaW50byBiaW5hcnkKCW1vZGUuCgoJKiBvYmpjb3B5LmM6IEluY2x1ZGUgZmlsZW5hbWVzLmguCgkobWFpbikgW0hBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNXTogRHJvcCB0aGUgLmV4ZSBzdWZmaXgKCWJlZm9yZSBjb21wYXJpbmcgdG8gInN0cmlwIi4KCVVzZSBGSUxFTkFNRV9DTVAgdG8gY29tcGFyZSBmaWxlIG5hbWVzLgoKCSogYXJzdXAuYzogSW5jbHVkZSBmaWxlbmFtZXMuaC4KCShtYXBfb3Zlcl9saXN0LCBhcl9kZWxldGUsIGFyX3JlcGxhY2UsIGFyX2V4dHJhY3QpOiBVc2UKCUZJTEVOQU1FX0NNUCB0byBjb21wYXJlIGZpbGUgbmFtZXMuCgkoYXJfb3Blbik6IFByZXBlbmQgInRtcC0iIGluc3RlYWQgb2YgYXBwZW5kaW5nICItdG1wIiwgdG8gY3JlYXRlCgl0aGUgdGVtcG9yYXJ5IGZpbGUgbmFtZS4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIHNldG1vZGUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDUtMjQgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBvYmpkdW1wLmMgKGRpc3BsYXlfdGFyZ2V0X2xpc3QpOiBDbG9zZSB0aGUgYmZkLgoJKGRpc3BsYXlfaW5mb190YWJsZSk6IExpa2V3aXNlLgoKMjAwMC0wNS0xNCAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogb2JqY29weS5jIChmaWx0ZXJfc3ltYm9scyk6IERvbid0IHN0cmlwIGdsb2JhbCBzeW1ib2xzIGluCglyZWxvY2F0YWJsZSBvYmplY3QgZmlsZXMuCgoyMDAwLTA1LTE0ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogc2l6ZS5jICh1c2FnZSk6IEFzc29jaWF0ZSBzaG9ydCBvcHRpb25zIHdpdGggY29ycmVzcG9uZGluZyBsb25nCglvcHRpb24gdG8gZ2l2ZSBhIGNsdWUgYXMgdG8gdGhlaXIgZnVuY3Rpb24uCgoyMDAwLTA1LTE0ICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIHNpemUuYyAobWFpbik6IEFjY2VwdCBhbmQgaWdub3JlIGAtZicgb3B0aW9uLgoKMjAwMC0wNS0xMyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGJ1Y29tbS5oIChnZXR0ZXh0LCBkZ2V0dGV4dCwgZGNnZXR0ZXh0LCB0ZXh0ZG9tYWluLAoJYmluZHRleHRkb21haW4pOiBSZXBsYWNlIGRlZmluZXMgd2l0aCB0aG9zZSBmcm9tIGludGwvbGliZ2V0dGV4dC5oCgl0byBxdWlldGVuIGdjYyB3YXJuaW5ncy4KCjIwMDAtMDUtMTIgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIG5sbWNvbnYuYyAodGVtcF9maWxlbmFtZSk6IFJlbW92ZWQuCgoJKiBubG1jb252LmMgKGxpbmtfaW5wdXRzKTogVXNlIG1ha2VfdGVtcF9maWxlICgpIGluc3RlYWQgb2YKCWNob29zZV90ZW1wX2Jhc2UgKCkuCgkqIG9iamR1bXAuYyAoZGlzcGxheV90YXJnZXRfbGlzdCk6IExpa2V3aXNlLgoJKGRpc3BsYXlfaW5mb190YWJsZSk6IExpa2V3aXNlLgoKMjAwMC0wNS0wOCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIG9iamNvcHkuYyAoc2V0dXBfc2VjdGlvbik6IEFkZCBjb25zdCBhbmQgZ2V0dGV4dCBjYWxscyBmb3IgZXJyLgoKMjAwMC0wNS0wMiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogcmVhZGVsZi5jIChnZXRfb3NhYmlfbmFtZSk6IEhhbmRsZSBFTEZPU0FCSV9OT05FIGluc3RlYWQgb2YKCUVMRk9TQUJJX1NZU1YuIEFsc28gaGFuZGxlIEVMRk9TQUJJX05FVEJTRCwgRUxGT1NBQklfSFVSRCwKCUVMRk9TQUJJX1NPTEFSSVMsIEVMRk9TQUJJX01PTlRFUkVZLCBFTEZPU0FCSV9JUklYLAoJRUxGT1NBQklfRlJFRUJTRCwgRUxGT1NBQklfVFJVNjQsIEVMRk9TQUJJX01PREVTVE8KCWFuZCBFTEZPU0FCSV9PUEVOQlNELgoKMjAwMC0wNS0wMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb2ZmZ3Jvay5jOiBBZGQgQVRUUklCVVRFX1VOVVNFRCBhcyBhcHByb3ByaWF0ZS4KCSogc3Jjb252LmM6IExpa2V3aXNlLgoJKiBzeXNkdW1wLmM6IExpa2V3aXNlLgoKU3VuIEFwciAyMyAxNDoyMzoyNiAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogcmVhZGVsZi5jIChndWVzc19pc19yZWxhKTogQVZSIHVzZXMgUkVMQSByZWxvY2F0aW9ucy4KCShnZXRfbWFjaGluZV9uYW1lKTogbWFjaGluZSBuYW1lIGZvciBFTV9BVlIgYWRkZWQuCgpGcmkgQXByIDIxIDEzOjIwOjUzIDIwMDAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgkJCSAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBNYWtlZmlsZS5hbSAocmVhZGVsZi5vKTogQWRkIGVsZi9pYTY0LmguCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoJKiByZWFkZWxmLmM6IEluY2x1ZGUgZWxmL2lhNjQuaC4KCShndWVzc19pc19yZWxhLCBkdW1wX3JlbG9jYXRpb25zKTogSGFuZGxlIEVNX0lBXzY0LgoKMjAwMC0wNC0xNyAgVGltb3RoeSBXYWxsICA8dHdhbGxAY3lnbnVzLmNvbT4KCgkqIG9iamR1bXAuYyAoZGlzYXNzZW1ibGVfZGF0YSk6IFNldCBvY3RldHMgcGVyIGJ5dGUgKmFmdGVyKgoJcmVzb2x2aW5nIGFyY2gvbWFjaCBmb3IgYmluYXJ5IGZpbGVzLgoKMjAwMC0wNC0xNCAgTWljaGFlbCBTb2tvbG92ICA8bXNva29sb3ZAaXZhbi5IYXJoYW4uT1JHPgoKCSogYXJsZXgubDogQWRkIGRpcmVjdGl2ZXMgdG8gaW5jcmVhc2UgbGV4IGJ1ZmZlciBzaXplLgoKCSogb2JqZHVtcC5jLCByZWFkZWxmLmM6IERvbid0IGluY2x1ZGUgc3RyYXJnLmggb3IgdmFyYXJncy5oLiBUaGV5IGFyZQoJYWxyZWFkeSBpbmNsdWRlZCBieSBidWNvbW0uaC4KCjIwMDAtMDQtMTAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogcmVhZGVsZi5jIChkeW5hbWljX3NlZ21lbnRfbWlwc192YWwpOiBDYWxsIGBzcHJpbnRmJywgbm90Cglgc3RyZnRpbWUnIHNpbmNlIHN0cmZ0aW1lIGlzIG5vdCBhdmFpbGFibGUgb24gYWxsIHN5c3RlbXMuCgkocHJvY2Vzc19taXBzX3NwZWNpZmljKTogRGl0dG8uCgpGcmkgQXByICA3IDE1OjU2OjU3IDIwMDAgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoV0FSTl9DRkxBR1MpOiBTZXQgdG8gLVcgLVdhbGwgYnkgZGVmYXVsdC4gIEFkZAoJLS1lbmFibGUtYnVpbGQtd2FybmluZ3Mgb3B0aW9uLgoJKiBNYWtlZmlsZS5hbSAoQU1fQ0ZMQUdTLCBXQVJOX0NGTEFHUyk6IEFkZCBkZWZpbml0aW9ucy4KCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZTogUmUtZ2VuZXJhdGUuCgoyMDAwLTA0LTA2ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogYWRkcjJsaW5lLmM6IFVwZGF0ZSBjb3B5cmlnaHQuCgkqIG9iamNvcHkuMTogTGlrZXdpc2UsIGFuZCB0aXRsZS4KCSogc3RyaW5ncy4xOiBMaWtld2lzZS4KCgkqIHZlcnNpb24uYyAocHJpbnRfdmVyc2lvbik6IEFkZCAyMDAwLgoKCSogcmRkYmcuYyAocmVhZF9zZWN0aW9uX3N0YWJzX2RlYnVnZ2luZ19pbmZvKTogRG9uJ3QgdXNlCgliZmRfc2l6ZV90eXBlIGZvciBzdHJ4IHRvIGF2b2lkIHByaW50ZiBwcm9ibGVtcyBpZiBCRkQ2NC4KCgkqIGJ1Y29tbS5jOiAocmVwb3J0KTogUmVtb3ZlIGBzdGF0aWMnLgoJTW92ZSBpbmNsdXNpb24gb2Ygc3RkYXJnLmgvdmFyYXJnLmggZnJvbSBoZXJlLgoJKiBidWNvbW0uaDogVG8gaGVyZS4KCShDT05TVCk6IENoYW5nZSBhbGwgb2NjdXJlbmNlcyB0byBjb25zdC4KCShyZXBvcnQpOiBEZWNsYXJlIGl0LgoJKGJmZF9mYXRhbCk6IEFkZCBBVFRSSUJVVEVfTk9SRVRVUk4uCgkoZmF0YWwpOiBBZGQgQVRUUklCVVRFX1BSSU5URl8xIEFUVFJJQlVURV9OT1JFVFVSTi4KCShub25fZmF0YWwpOiBBZGQgQVRUUklCVVRFX1BSSU5URl8xLgoKCSogYXIuYyAobWFpbik6IFVzZSBmYXRhbCBvciBub25fZmF0YWwgaW5zdGVhZCBvZiBmcHJpbnRmLgoJQ29ycmVjdCBhIHR5cG8gaW4gYW4gZXJyb3IgbWVzc2FnZS4KCShkb19xdWlja19hcHBlbmQpOiBVc2Ugbm9uX2ZhdGFsIGluc3RlYWQgb2YgZnByaW50Zi4KCShtb3ZlX21lbWJlcnMpOiBVc2UgZmF0YWwgaW5zdGVhZCBvZiBmcHJpbnRmLCBleGl0LgoJKiBjb2ZmZHVtcC5jIChtYWluKTogU2FtZSBoZXJlLgoKCSogZGxsdG9vbC5jIChkaXNwbGF5KTogRGVsZXRlLgoJKHdhcm4pOiBEZWxldGUuCgkoaW5mb3JtKTogVXNlIGByZXBvcnQnIGluc3RlYWQgb2YgYGRpc3BsYXknLgoJKHJ2YWFmdGVyKTogUmVtb3ZlIHRyYWlsaW5nIFxuIGZyb20gZmF0YWwgZXJyb3IgbXNnLgoJKHJ2YWJlZm9yZSk6IERpdHRvLgoJKGFzbV9wcmVmaXgpOiBEaXR0by4KCSh5eWVycm9yKTogUmVwbGFjZSBgd2Fybicgd2l0aCBgbm9uX2ZhdGFsJywgYW5kIHJlbW92ZSBcbi4KCShkZWZfbmFtZSk6IExpa2V3aXNlLgoJKHJ1bik6IExpa2V3aXNlLgoJKHNjYW5fYWxsX3N5bWJvbHMpOiBMaWtld2lzZS4KCShnZW5fbGliX2ZpbGUpOiBMaWtld2lzZS4KCShkZWZfbGlicmFyeSk6IExpa2V3aXNlLiAgUmVtb3ZlIGV4dHJhIHByb2dyYW1fbmFtZSB0b28uCgkocnVuKTogUmVtb3ZlIFxuIGZyb20gaW5mb3JtIHN0cmluZ3MuCgkoc2Nhbl9kcmVjdHZlX3N5bWJvbHMpOiBMaWtld2lzZS4KCShhZGRfZXhjbHVkZXMpOiBMaWtld2lzZS4KCShzY2FuX29wZW5fb2JqX2ZpbGUpOiBMaWtld2lzZS4KCShnZW5fZXhwX2ZpbGUpOiBMaWtld2lzZS4KCShnZW5fbGliX2ZpbGUpOiBMaWtld2lzZS4KCShwcm9jZXNzX2R1cGxpY2F0ZXMpOiBMaWtld2lzZS4KCgkqIE1ha2VmaWxlLmFtIChkbGx3cmFwX1NPVVJDRVMpOiBBZGQgdmVyc2lvbi5jLgoJKiBkbGx3cmFwLmMgKHByb2dyYW1fdmVyc2lvbik6IERlbGV0ZS4KCShwcmludF92ZXJzaW9uKTogRGVsZXRlLgoJKGRpc3BsYXkpOiBBbHdheXMgcHJpbnQgdHJhaWxpbmcgXG4uCgkod2Fybik6IE5ldy4KCShkZWxldGVfdGVtcF9maWxlcyk6IFVzZSB3YXJuIGluc3RlYWQgb2YgZnByaW50Zi4gIFVzZSBnZXR0ZXh0LgoJKHJ1bik6IEhlcmUgdG9vLgoJKG1haW4pOiBBbmQgaGVyZS4KCSh1c2FnZSk6IGdldHRleHQnaWZ5LgoJKGxvbmdfb3B0aW9ucyk6IEFkZCBtaXNzaW5nIGluaXRpYWxpc2Vycy4KCgkqIG5sbWNvbnYuYyAobWFpbik6IFVzZSBmYXRhbC9ub25fZmF0YWwgaW5zdGVhZCBvZiBmcHJpbnRmLgoJKHNlbGVjdF9vdXRwdXRfZm9ybWF0KTogTGlrZXdpc2UuCgkocG93ZXJwY19tYW5nbGVfcmVsb2NzKTogTGlrZXdpc2UuCgkobGlua19pbnB1dHMpOiBMaWtld2lzZS4KCgkqIG5tLmMgKHNldF9wcmludF9yYWRpeCk6IFVzZSBmYXRhbCBpbnN0ZWFkIG9mIGZwcmludGYsIGV4aXQuCgkoc2V0X291dHB1dF9mb3JtYXQpOiBMaWtld2lzZS4KCShtYWluKTogVXNlIG5vbl9mYXRhbCBpbnN0ZWFkIG9mIGZwcmludGYuCgkoZGlzcGxheV9yZWxfZmlsZSk6IExpa2V3aXNlLgoKCSogb2JqZHVtcC5jIChzbHVycF9zeW10YWIpOiBVc2Ugbm9uX2ZhdGFsIGluc3RlYWQgb2YgZnByaW50Zi4KCShzbHVycF9keW5hbWljX3N5bXRhYik6IFNhbWUgaGVyZS4KCShkaXNhc3NlbWJsZV9kYXRhKTogQW5kIGhlcmUuCgkocmVhZF9zZWN0aW9uX3N0YWJzKTogQW5kIGhlcmUuCgkocmVhZF9zZWN0aW9uX3N0YWJzKTogQW5kIGhlcmUuCgkoZHVtcF9iZmQpOiBBbmQgaGVyZS4KCShtYWluKTogQW5kIGhlcmUuCgkob2JqZHVtcF9zcHJpbnRmKTogVXNlIGZhdGFsIGluc3RlYWQgb2YgZnByaW50ZiwgZXhpdC4KCShkaXNhc3NlbWJsZV9kYXRhKTogU2FtZSBoZXJlLgoKCSogcmRjb2ZmLmMgKHBhcnNlX2NvZmZfdHlwZSk6IFVzZSBub25fZmF0YWwgaW5zdGVhZCBvZiBmcHJpbnRmLgoJKHBhcnNlX2NvZmZfc3RydWN0X3R5cGUpOiBTYW1lIGhlcmUuCgkocGFyc2VfY29mZl9lbnVtX3R5cGUpOiBBbmQgaGVyZS4KCShwYXJzZV9jb2ZmKTogQW5kIGhlcmUuCgkqIHJkZGJnLmMgKHJlYWRfZGVidWdnaW5nX2luZm8pOiBBbmQgaGVyZS4KCSogc2l6ZS5jIChtYWluKTogQW5kIGhlcmUuCgkqIHdpbmRyZXMuYyAoZm9ybWF0X2Zyb21fbmFtZSk6IEFuZCBoZXJlLgoJKiB3cnN0YWJzLmMgKHN0YWJfd3JpdGVfc3ltYm9sKTogSGVyZSB0b28uCgkod3JpdGVfc3RhYnNfaW5fc2VjdGlvbnNfZGVidWdnaW5nX2luZm8pOiBBbmQgaGVyZS4KCShzdGFiX2ludF90eXBlKTogQW5kIGhlcmUuCgkoc3RhYl9zdHJ1Y3RfZmllbGQpOiBBbmQgaGVyZS4KCShzdGFiX3R5cGRlZik6IEFuZCBoZXJlLgoKCSogcmVzY29mZi5jIChyZWFkX2NvZmZfcnNyYyk6IFVzZSBmYXRhbCBpbnN0ZWFkIG9mIGZwcmludGYsIGV4aXQuCgkqIHNyY29udi5jIChtYWluKTogU2FtZSBoZXJlLgoJKiBzdHJpbmdzLmMgKG1haW4pOiBBbmQgaGVyZS4KCShpbnRlZ2VyX2FyZyk6IEFuZCBoZXJlLgoJKiBzeXNkdW1wLmMgKG1haW4pOiBBbmQgaGVyZS4KCjIwMDAtMDQtMDYgIFRpbW90aHkgV2FsbCAgPHR3YWxsQGN5Z251cy5jb20+CgoJKiBvYmpkdW1wLmMgKGR1bXBfc2VjdGlvbl9oZWFkZXIpOiBQcmludCBDTElOSyBhbmQgQkxPQ0sgZmxhZ3MuCgoyMDAwLTA0LTA2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiByZWFkZWxmLmMgKGRlY29kZV9sb2NhdGlvbl9leHByZXNzaW9uKTogTG9vcCB0aHJvdWdoIG11bHRpcGxlCglvcGVyYXRpb25zLgoJKHJlYWRfYW5kX2Rpc3BsYXlfYXR0cik6IFBhc3MgaW4gbGVuZ3RoLgoKCSogcmVhZGVsZi5jIChyZWFkX2FuZF9kaXNwbGF5X2F0dHIpOiBBZGQgQ1Ugb2Zmc2V0IHRvIHJlZmVyZW5jZXMuCgkoZGlzcGxheV9kZWJ1Z19pbmZvKTogUGFzcyBpdCBpbi4KCjIwMDAtMDQtMDYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiByZWFkZWxmLmMgKGRlY29kZV9BUk1fbWFjaGluZV9mbGFncyk6IE5ldyBmdW5jdGlvbi4KCShnZXRfbWFjaGluZV9mbGFncyk6IENhbGwgZGVjb2RlX0FSTV9tYWNoaW5lX2ZsYWdzIGZvciBBUk0KCXRhcmdldHMuCgoJKGdldF9tYWNoaW5lX25hbWUpOiBDYXRjaCBFTV9BVlIKCjIwMDAtMDQtMDUgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBiaW51dGlscy50ZXhpOiBSZW1vdmUgb3B0aW9uYWwgYD0nIGZyb20gbG9uZyBvcHRpb25zIHRoYXQgaGF2ZQoJYW4gYD0nIGluIHRoZSBhcmd1bWVudC4KCSogb2JqY29weS4xOiBIZXJlIHRvby4gIFJlbW92ZSBleHRyYSBzcGFjZSBvbiBkaXNjYXJkLWFsbC4KCgkqIGJpbnV0aWxzLnRleGkgKG9iamNvcHkpOiBNZW50aW9uIC0tcmVkZWZpbmUtc3ltLgoJKiBvYmpjb3B5LjE6IEhlcmUgdG9vLgoJKiBORVdTOiBBbmQgaGVyZS4KCgkqIG9iamNvcHkuYyAocGFyc2VfZmxhZ3MpOiBTcGxpdCBvZmYgZmxhZyBuYW1lcyBmcm9tIGVycm9yIG1lc3NhZ2UKCWdldHRleHQgYXMgdGhleSBhcmUgbm90IHRyYW5zbGF0ZWQuCgkoY29weV9tYWluKTogU2ltaWxhcmx5IHNwbGl0IG9mZiBvcHRpb24gbmFtZSBmb3IgLS1hZGQtc2VjdGlvbiwKCS0tc2V0LXNlY3Rpb24tZmxhZ3MsIC0tY2hhbmdlLXNlY3Rpb24tdm1hLCAtLWNoYW5nZS1zZWN0aW9uLWxtYQoJZXJyb3IgbWVzc2FnZXMuCglTb21lIHdoaXRlIHNwYWNlIGNoYW5nZXMuCgoJZnJvbSBNYXR0aGV3IEJlbmphbWluIDxtYXR0QGxpbnV4Ym94Lm51PgoJKiBvYmpjb3B5LmMgKHN0cnVjdCByZWRlZmluZV9ub2RlKTogTmV3LgoJKHJlZGVmaW5lX3N5bV9saXN0KTogTmV3LgoJKHJlZGVmaW5lX2xpc3RfYXBwZW5kKTogTmV3LgoJKGxvb2t1cF9zeW1fcmVkZWZpbml0aW9uKTogTmV3LgoJKE9QVElPTl9SRURFRklORV9TWU0pOiBOZXcuCgkoY29weV9vcHRpb25zKTogQWRkIC0tcmVkZWZpbmUtc3ltIG9wdGlvbi4KCShjb3B5X3VzYWdlKTogTWVudGlvbiBpdC4KCShmaWx0ZXJfc3ltYm9scyk6IFJlbmFtZSBzeW1ib2xzIG9uIHJlZGVmaW5lX3N5bV9saXN0LgoJKGNvcHlfb2JqZWN0KTogQ2FsbCBmaWx0ZXJfc3ltYm9scyBpZiByZWRlZmluZV9zeW1fbGlzdCAhPSBOVUxMLgoJKGNvcHlfbWFpbik6IEhhbmRsZSBPUFRJT05fUkVERUZJTkVfU1lNLgoKMjAwMC0wNC0wNCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogcmVhZGVsZi5jIChwcm9jZXNzX3N5bWJvbF90YWJsZSk6IENvcnJlY3RseSByZWFkIGluIHN5bWJvbAoJdmVyc2lvbmluZyBpbmZvcm1hdGlvbi4KCjIwMDAtMDQtMDQgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBwby9iaW51dGlscy5wb3Q6IFJlZ2VuZXJhdGUuCgoJKiBhZGRyMmxpbmUuYyAodXNhZ2UpOiBSZXN0b3JlIHRyYW5zbGF0ZWQgcGFydCBvZiBidWcgc3RyaW5nLgoJKiBhci5jICh1c2FnZSk6IExpa2V3aXNlLgoJKiBubG1jb252LmMgKHNob3dfdXNhZ2UpOiBMaWtld2lzZS4KCSogbm0uYyAodXNhZ2UpOiBMaWtld2lzZS4KCSogb2JqY29weS5jIChjb3B5X3VzYWdlKTogTGlrZXdpc2UuCgkoc3RyaXBfdXNhZ2UpOiBMaWtld2lzZS4KCSogb2JqZHVtcC5jICh1c2FnZSk6IExpa2V3aXNlLgoJKiByZWFkZWxmLmMgKHVzYWdlKTogTGlrZXdpc2UuCgkqIHNpemUuYyAodXNhZ2UpOiBMaWtld2lzZS4KCSogc3RyaW5ncy5jICh1c2FnZSk6IExpa2V3aXNlLgoJKiB3aW5kcmVzLmMgKHVzYWdlKTogTGlrZXdpc2UuCgoJKiBNYWtlZmlsZS5hbSAoTUtERVApOiBVc2UgZ2NjIC1NTSByYXRoZXIgdGhhbiBta2RlcC4KCShERVApOiBRdW90ZSB3aGVuIHBhc3NpbmcgdmFycyB0byBzdWItbWFrZS4gIEFkZCB3YXJuaW5nCgltZXNzYWdlIHRvIGVuZC4KCShERVAxKTogUmV3cml0ZSBmb3IgImdjYyAtTU0iLgoJKENMRUFORklMRVMpOiBBZGQgREVQMi4KCVVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKMjAwMC0wNC0wNCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogTWFrZWZpbGUuYW0gKEdFTkVSQVRFRF9IRklMRVMpOiBBZGQgcmNwYXJzZS5oCgkoYXJwYXJzZS5oKTogRGVwZW5kIG9uIGFycGFyc2UuYwoJKGRlZnBhcnNlLmgsIG5sbWhlYWRlci5oLCByY3BhcnNlLmgsIHN5c2luZm8uaCk6IFNpbWlsYXJseS4KCjIwMDAtMDQtMDMgIEguSi4gTHUgIChoamxAZ251Lm9yZykKCgkqIHNpemUuYyAodXNhZ2UpOiBVc2UgUkVQT1JUX0JVR1NfVE8uCgoyMDAwLTA0LTAzICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogYnVjb21tLmg6ICNpbmNsdWRlICJiaW4tYnVncy5oIgoJKiBhZGRyMmxpbmUuYyAodXNhZ2UpOiBVc2UgUkVQT1JUX0JVR1NfVE8uCgkqIGFyLmMgKHVzYWdlKTogTGlrZXdpc2UuCgkqIG5sbWNvbnYuYyAoc2hvd191c2FnZSk6IExpa2V3aXNlLgoJKiBubS5jICh1c2FnZSk6IExpa2V3aXNlLgoJKE9QVElPTl9UQVJHRVQpOiBEZWZpbmUuCgkobG9uZ19vcHRpb25zKTogVXNlIE9QVElPTl9UQVJHRVQgcmF0aGVyIHRoYW4gMjAwLgoJKG1haW4pOiBMaWtld2lzZS4KCgkqIG9iamNvcHkuYyAoY29weV91c2FnZSk6IFVzZSBSRVBPUlRfQlVHU19UTy4KCShzdHJpcF91c2FnZSk6IExpa2V3aXNlLgoJKiBvYmpkdW1wLmMgKHVzYWdlKTogTGlrZXdpc2UuCgkqIHJlYWRlbGYuYyAodXNhZ2UpOiBMaWtld2lzZS4KCSogc3RyaW5ncy5jICh1c2FnZSk6IExpa2V3aXNlLgoJKiB3aW5kcmVzLmMgKHVzYWdlKTogTGlrZXdpc2UuCgoyMDAwLTAzLTMxICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogcmVhZGVsZi5jOiBJbmNsdWRlIHN5cy90eXBlcy5oIGJlZm9yZSBzeXMvc3RhdC5oIGZvciB1bHRyaXguCgoyMDAwLTAzLTI3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogcmRkYmcuYyAocmVhZF9zZWN0aW9uX3N0YWJzX2RlYnVnZ2luZ19pbmZvKTogQ2F0Y2ggb3V0IG9mIHJhbmdlCglzdHJpbmcgb2Zmc2V0cyBpbiBjb3JydXB0IHN0YWJzIGVudHJpZXMuCgoyMDAwLTAzLTI3ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogcmVhZGVsZi5jOiBJbmNsdWRlIGVsZi9hdnIuaAoJKGR1bXBfcmVsb2NhdGlvbnMpOiBBZGQgRU1fQVZSIGNhc2UuCgoyMDAwLTAzLTA5ICBUaW0gV2F1Z2ggIDx0d2F1Z2hAcmVkaGF0LmNvbT4KCgkqIHN0cmluZ3MuMTogQ29ycmVjdCAnLWJ5dGVzJyB0byAnLS1ieXRlcycuCgoyMDAwLTAzLTA4ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5hbSAoaW5zdGFsbC1leGVjLWxvY2FsKTogRGVwZW5kIG9uCglpbnN0YWxsLWJpblBST0dSQU1TIGZvciBwYXJhbGxlbCBtYWtlLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZWQuCgoyMDAwLTAyLTI3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCglGcm9tIEJyYWQgTHVjaWVyIDxsdWNpZXJAbWF0aC5wdXJkdWUuZWR1PjoKCSogcmVhZGVsZi5jIChwcm9jZXNzX2R5bmFtaWNfc2VnbWVudCk6IEFkZCBjYXN0IHRvIG1ha2Ugc3VyZQoJYXJndW1lbnQgdG8gJSogaXMgaW50LgoKMjAwMC0wMi0yNSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogY29uZmlndXJlLmluIChBQ19TRUFSQ0hfTElCUyk6IFBhc3MgbSwgbm90IC1sbS4KCjIwMDAtMDItMjQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IEFkZCBhcm0td2luY2UsIG1pcHMtcGUgYW5kIHNoLXBlIHRhcmdldHMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGRsbHRvb2wuYzogQWRkIHN1cHBvcnQgZm9yIHNoLXBlIGFuZCBtaXBzLXBlIHRhcmdldHMuCgkqIHJlc2NvZmYuYzogQWRkIHN1cHBvcnQgZm9yIHNoLXBlIGFuZCBtaXBzLXBlIHRhcmdldHMuCgoyMDAwLTAyLTIzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiByZWFkZWxmLmMgKGdldF9vc2FiaV9uYW1lKTogSGFuZGxlIEVMRk9TQUJJX0xJTlVYLgoKMjAwMC0wMi0yMiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIHJlYWRlbGYuYyAocHJvY2Vzc19zeW1ib2xfdGFibGUpOiBSZW1vdmUgdXNlIG9mIEVMRl9TVF9PVEhFUi4KCjIwMDAtMDItMjIgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCUZyb20gQnJhZCBMdWNpZXIgPGx1Y2llckBtYXRoLnB1cmR1ZS5lZHU+OgoJKiByZWFkZWxmLmMgKHByb2Nlc3NfdmVyc2lvbl9zZWN0aW9ucyk6IEFkZCBjYXN0cyB0byBtYWtlIHN1cmUKCWFyZ3VtZW50IHRvICUqIGlzIGFuIGludC4KCShwcm9jZXNzX21pcHNfc3BlY2lmaWMpOiBBZGQgY2FzdHMgdG8gbWFrZSBwcmludGYgYXJndW1lbnRzIG1hdGNoCglmb3JtYXQuCgoyMDAwLTAyLTIxICBBbGFuIE1vZHJhICA8YWxhbkBzcHJpLmxldmVscy51bmlzYS5lZHUuYXU+CgoJKiBvYmpkdW1wLmMgKGR1bXBfc2VjdGlvbl9oZWFkZXIpOiBDaGFuZ2UgYG9wYicgdG8gdW5zaWduZWQuCgkoZmluZF9zeW1ib2xfZm9yX2FkZHJlc3MpOiBTYW1lIGhlcmUuCgkoZGlzYXNzZW1ibGVfZGF0YSk6IEFuZCBoZXJlLiAgQ2hhbmdlIGBhZGRyX29mZnNldCcsCglgc3RvcF9vZmZzZXQnLCBgbmV4dHN0b3Bfb2Zmc2V0JyB0byB1bnNpZ25lZCBsb25nLgoJKGR1bXBfZGF0YSk6IENoYW5nZSBvcGIgdG8gdW5zaWduZWQuCgoyMDAwLTAyLTE4ICBGcmFuayBDaC4gRWlnbGVyICA8ZmNoZUByZWRoYXQuY29tPgoKCSogcmVzcmMuYzogUmVtb3ZlIHVubWF0Y2hlZCAjaWYgZm9yIGN5Z3dpbi4KCjIwMDAtMDItMTQgIEZlcm5hbmRvIE5hc3NlciAgPGZuYXNzZXJAdG90ZW0udG8uY3lnbnVzLmNvbT4KCgkqIGJpbnV0aWxzLnRleGk6IERvY3VtZW50IHRoZSBjaGFuZ2Ugb2YgZmxhdm9yIG5hbWUgZnJvbSBhdHBjcy1zcGVjaWFsCgl0byBzcGVjaWFsLWF0cGNzIHRvIHByZXZlbnQgbmFtZSBjb25mbGljdCBpbiBnZGIuCgoyMDAwLTAyLTA4ICBUaW1vdGh5IFdhbGwgIDx0d2FsbEByZWRoYXQuY29tPgoKCSogb2JqZHVtcC5jIChzaG93X2xpbmUpOiBGaXggYnVnIHByZXZlbnRpbmcgcHJpbnRpbmcgb2YgdGhlIHZlcnkKCWZpcnN0IGxpbmUgKGxpbmUgemVybykgb2YgYSBmaWxlIHdoZW4gaW50ZXJsaXN0aW5nIHNvdXJjZSBhbmQKCWFzc2VtYmx5LiAgQWRkZWQgb3B0aW9uIHRvIHByaW50IGVudGlyZSBjb250ZXh0IGZyb20gc3RhcnQgb2YgZmlsZQoJd2hlbiB0aGUgZmlyc3QgbGluZSBmcm9tIHRoYXQgZmlsZSBpcyBlbmNvdW50ZXJlZC4KCjIwMDAtMDItMDMgIFRpbW90aHkgV2FsbCA8dHdhbGxAcmVkaGF0LmNvbT4KCgkqIG9iamR1bXAuYyAoZHVtcF9zZWN0aW9uX2hlYWRlciwgZmluZF9zeW1ib2xfZm9yX2FkZHJlc3MsCglzaG93X2xpbmUsIGRpc2Fzc2VtYmxlX2J5dGVzLCBkaXNhc3NlbWJsZV9kYXRhLCBkdW1wX2RhdGEpOgoJZGlzdGluZ3Vpc2ggYmV0d2VlbiBvY3RldHMgYW5kIGJ5dGVzLgoKMjAwMC0wMS0yNyAgVGhvbWFzIGRlIExlbGxpcyAgPHRkZWxAd2luZHJpdmVyLmNvbT4KCgkqIG5tLmMgKHByaW50X3N5bWJvbF9pbmZvX2JzZCk6IFVzZSBiZmRfaXNfdW5kZWZpbmVkX3N5bWNsYXNzIHRvCgljaGVjayB0byB1bnJlc29sdmVkIHN5bWJvbHMuCgkocHJpbnRfc3ltYm9sX2luZm9fc3lzdik6ICBEaXR0by4KCShwcmludF9zeW1ib2xfaW5mb19wb3NpeCk6ICBEaXR0by4KCgkqIGJpbnV0aWxzLnRleGk6IERvY3VtZW50IG5ldyAnVicgc3ltY2xhc3MgZmxhZyBmb3Igbm0uCgoyMDAwLTAxLTI3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogYmludXRpbHMudGV4aSAob2JqZHVtcCk6IERvY3VtZW50IG5ldyBBUk0gc3BlY2lmaWMKCWRpc2Fzc2VtYmxlciBvcHRpb25zLgoKCSogb2JqZHVtcC5jICh1c2FnZSk6IENhbGwgZGlzYXNzZW1ibGVyX3VzYWdlKCkuCgoyMDAwLTAxLTI3ICBBbGFuIE1vZHJhICA8YWxhbkBzcHJpLmxldmVscy51bmlzYS5lZHUuYXU+CgoJKiByZWFkZWxmLmMgKGdldF9keW5hbWljX2ZsYWdzKTogUmV0dXJuIGJ1ZmYuCgkocHJvY2Vzc19keW5hbWljX3NlZ21lbnQpOiBEb24ndCBwYXNzIGVycm9yIHN0cmluZ3MgdG8gcHJpbnRmCglhcyBmb3JtYXQgYXJnLgoJKHJlYWRfYW5kX2Rpc3BsYXlfYXR0cik6IFVzZSBseCBhbmQgbGQgdG8gcHJpbnQgbG9uZ3MuCgkocHJvY2Vzc19jb3JlZmlsZV9ub3RlX3NlZ21lbnQpOiBDYXN0IGJmZF92bWEgdG8gdW5zaWduZWQgbG9uZwoJYmVmb3JlIHByaW50aW5nLgoJVXBkYXRlIGNvcHlyaWdodC4KCjIwMDAtMDEtMTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiByZWFkZWxmLmMgKGdldF9vc2FiaV9uYW1lKTogUmVjb2duaXNlIEVMRk9TQUJJX0FSTS4KCjIwMDAtMDEtMTUgIEFsYW4gTW9kcmEgIDxhbGFuQHNwcmkubGV2ZWxzLnVuaXNhLmVkdS5hdT4KCgkqIGRlYnVnLmMgKGRlYnVnX25hbWVfdHlwZSk6IFJldHVybiBERUJVR19UWVBFX05VTEwgcmF0aGVyIHRoYW4KCWZhbHNlLgoJKGRlYnVnX3RhZ190eXBlKTogSGVyZSB0b28uCgkqIGllZWUuYyAoaWVlZV9idWlsdGluX3R5cGUpOiBBbmQgaGVyZS4KCSogc3RhYnMuYyAocGFyc2Vfc3RhYl90eXBlLCBwYXJzZV9zdGFiX2FycmF5X3R5cGUpOiBBbmQgaGVyZS4KCjIwMDAtMDEtMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiByZWFkZWxmLmMgKGdldF9tYWNoaW5lX25hbWUpOiBDaGFuZ2UgRU1fUzM3MCB0byByZXR1cm4gIklCTQoJU3lzdGVtLzM3MCIuCgoyMDAwLTAxLTExICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogcmVhZGVsZi5jIChnZXRfZHluYW1pY190eXBlKTogUmVtb3ZlIERUX0VOQ09ESU5HLgoKMjAwMC0wMS0xMCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIHJlYWRlbGYuYyAoZ2V0X25vdGVfdHlwZSk6IERpc3BsYXkgTlRfV0lOMzJQU1RBVFVTIG5vdGVzLgoKMjAwMC0wMS0wNyAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiB3aW5kcmVzLmMgKGxvbmdfb3B0aW9ucyk6IEFkZCAtLXVzZS10ZW1wLWZpbGUgYW5kCgktLW5vLXVzZS10ZW1wLWZpbGUgb3B0aW9ucy4KCSh1c2FnZSk6IERvY3VtZW50LgoJKG1haW4pOiBIYW5kbGUuCgoJKiB3aW5kcmVzLmg6IFVwZGF0ZSByZWFkX3JjX2ZpbGUgcHJvdG90eXBlLgoKCSogcmVzcmMuYyAoY3BwX3RlbXBfZmlsZSk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoaXN0cmVhbV90eXBlKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShjbG9zZV9waXBlKTogRGVsZXRlIGZ1bmN0aW9uLgoJKHJ1bl9jbWQpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKG9wZW5faW5wdXRfc3RyZWFtKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShjbG9zZV9pbnB1dF9zdHJlYW0pOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGxvb2tfZm9yX2RlZmF1bHQpOiBIYW5kbGUgRE9TIGRpcmVjdG9yeSBzZXBhcmF0b3IuIFVzZQoJb3Blbl9pbnB1dF9zdHJlYW0gaW5zdGVhZCBvZiBwb3Blbi4KCShyZWFkX3JjX2ZpbGUpOiBMaWtld2lzZS4KCgkqIGJpbnV0aWxzLnRleGk6IERvY3VtZW50IC0tdXNlLXRlbXAtZmlsZSwgLS1uby11c2UtdGVtcC1maWxlCglvcHRpb25zLgoKMjAwMC0wMS0wNCAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBkbGx0b29sLmMgKGNyZWF0ZV9jb21wYXRfaW1wbGliKTogTmV3IHZhcmlhYmxlLgoJKGdlbl9leHBfZmlsZSk6IFVzZS4KCShtYWtlX29uZV9saWJfZmlsZSk6IFVzZS4KCShsb25nX29wdGlvbnMpOiBBZGQgLS1jb21wYXQtaW1wbGliIG9wdGlvbi4KCSh1c2FnZSk6IEhhbmRsZS4KCShtYWluKTogSGFuZGxlLgoKCSogZGxsd3JhcC5jIChlbnVtIHRhcmdldF90eXBlKTogUmVuYW1lIE1JTkdXMzJfVEFSR0VUIHRvIE1JTkdXX1RBUkdFVC4KCShtYWluKTogVXNlLiBEb24ndCBsb29rIGZvciAiMzIiIGluIGN5Z3dpbiBhbmQgbWluZ3cgdGFyZ2V0IG5hbWVzLgoKMjAwMC0wMS0wMyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGJpbnV0aWxzLnRleGk6IERvY3VtZW50IG5ldywgQVJNIHNwZWNpZmljIGRpc2Fzc2VtYmxlcgoJY29tbWFuZCBsaW5lIHN3aXRjaCAiLU0gZm9yY2UtdGh1bWIiLgoKRm9yIG9sZGVyIGNoYW5nZXMgc2VlIENoYW5nZUxvZy05ODk5CgwKTG9jYWwgVmFyaWFibGVzOgptb2RlOiBjaGFuZ2UtbG9nCmxlZnQtbWFyZ2luOiA4CmZpbGwtY29sdW1uOiA3NAp2ZXJzaW9uLWNvbnRyb2w6IG5ldmVyCkVuZDoK