MjAwMy0xMi0zMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgpOiBGb3IgaGFyZCByZWdpc3Rlciwgd3JpdGUgb3V0IHJlZ2lzdGVyCgludW1iZXIgYW5kIHJlZ2lzdGVyIG5hbWUgaW5zdGVhZCBvZiBjYWxsaW5nIFBSSU5UX1JFRy4KCSogZGVmYXVsdHMuaCAoUFJJTlRfUkVHKTogRGVsZXRlZC4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChwcmludF9yZWcpOiBSZW1vdmUgaGFuZGxpbmcgb2YgQ09ERSBvZiAtMS4KCU1vdmUgY29tbWVudHMgaGVyZSBmcm9tIGkzODYuaC4KCShwcmludF9vcGVyYW5kLCBwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBDYWxsIHByaW50X3JlZyBkaXJlY3RseS4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChQUklOVF9SRUcpOiBEZWxldGVkLgoKMjAwMy0xMi0zMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvaWE2NC9ocHV4LmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBEZWZpbmUKCV9JTkNMVURFX0xPTkdMT05HLgoKMjAwMy0xMi0zMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdjYy5jIChpbml0X3NwZWMpOiBBZGQgLWx1bndpbmQgdG8gc2hhcmVkIGNhc2UgdG9vIGlmCglVU0VfTElCVU5XSU5EX0VYQ0VQVElPTlMuCgoyMDAzLTEyLTMxICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGRvYy9pbmNsdWRlL3RleGluZm8udGV4OiBVcGRhdGUgdG8gdmVyc2lvbiAyMDAzLTEyLTIxLjEwLgoJKiBkb2MvZ2NjLnRleGksIGRvYy9nY2NpbnQudGV4aTogRG9uJ3Qgc2V0IGZvbnQgZm9yCglAZGVmLi4uIGNvbW1hbmRzLgoJKiBkb2MvaW52b2tlLnRleGk6IERvbid0IHVzZSBlbXB0eSBAb3BpbmRleC4KCjIwMDMtMTItMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5jIChjX2V4cGFuZF9leHByKTogUmVtb3ZlIGNvZGUgdG8gcmV0dXJuIGEgdmFsdWUKCWRpZmZlcmVudCBmcm9tIHRoYXQgcmV0dXJuZWQgYnkgZXhwYW5kX2V4cHIuCgkqIGV4cHIuYyAoc3RvcmVfZXhwcik6IFVzZSB0aGUgdmFsaWRpdHkgb2YgYSB0YXJnZXQgTUVNLCByYXRoZXIKCXRoYW4gY2hlY2tpbmcgREVDTF9SVEwgKGV4cCksIHRvIGZpZ3VyZSBvdXQgaWYgYSBjb3B5IGlzCglyZXF1aXJlZC4KCjIwMDMtMTItMzEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvdjg1MC9saWIxZnVuY3MuYXNtOiBGaXggY29tbWVudCBmb3JtYXR0aW5nLgoJKiBjb25maWcvdjg1MC92ODUwLmM6IExpa2V3aXNlLgoJKiBjb25maWcvdjg1MC92ODUwLmg6IExpa2V3aXNlLgoJKiBjb25maWcvdjg1MC92ODUwLm1kOiBMaWtld2lzZS4KCjIwMDMtMTItMzEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqbW92cWlfaW5zdl8yKTogUmVtb3ZlIEFORCBpbiB0aGUKCXNldCBzb3VyY2UuCgoyMDAzLTEyLTMxICBLYXp1aGlybyBJbmFva2EgIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CgoJKiBjb25maWcuZ2NjOiBBZGRlZCBtMzJyLWxpbnV4IG0zMnJsZS1lbGYgYW5kIG0zMmxlLWxpbnV4IHRhcmdldHMuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLW1mbHVzaC1mdW5jLCAtbWZsdXNoLXRyYXAgb3B0aW9ucy4KCUFsc28gYWRkIGRvY3VtZW50YXRpb24gZm9yIC1tZGVidWcsIC1tYWxpZ24tbG9vcHMsIC1taXNzdWUtcmF0ZSwKCWFuZCAtbWJyYW5jaC1jb3N0IG9wdGlvbnMuCgkqIGNvbmZpZy9tMzJyL3QtbGludXg6IE5ldyBmaWxlOiBtMzJyLWxpbnV4IHN1cHBvcnQuCgkqIGNvbmZpZy9tMzJyL3htLWxpbnV4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyci94bS1tMzJyLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyci9saW51eC5oOiBMaWtld2lzZS4KCSogY29uZmlnL20zMnIvbGl0dGxlLmg6IE5ldyBmaWxlOiBMaXR0bGUgZW5kaWFuIGNvZGUgZ2VuZXJhdGlvbgoJc3VwcG9ydC4KCSogY29uZmlnL20zMnIvbTMyci1wcm90b3MuaCAobTMycl9sZWdpdGltaXplX3BpY19hZGRyZXNzLAoJbTMycl9sZWdpdGltYXRlX3BpY19vcGVyYW5kX3AsIGxvYWRfcGljX3JlZ2lzdGVyKTogQWRkCglwcm90b3R5cGVzLgoJKiBjb25maWcvbTMyci9tMzJyLmMgKG0zMnJfaW5pdCk6IEFkZCBvcHRpb25zIGZvciBjYWNoZS1mbHVzaC4KCShhZGRyMjRfb3BlcmFuZCk6IENoYW5nZXMgZm9yIFBJQyBjb2RlIGdlbmVyYXRpb24uCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoTEFCRUxfQUxJR04pOiBEZWZpbmUgdG8gY2FsY3VsYXRlIFBOT1AKCWxlbmd0aCBhdCBsYWJlbHMuCgkoQVNNX1NQRUMpOiBBZGQgUElDIHN1cHBvcnQuCgkoRlVOQ1RJT05fUFJPRklMRVIpOiBOZXcgZGVmaW5lLgoJKFRSQU1QT0xJTkVfU0laRSwgSU5JVElBTElaRV9UUkFNUE9MSU5FKTogQ2hhbmdlZCB0byBzdXBwb3J0Cgl0cmFtcG9saW5lLgoJKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFLCBDT05TVEFOVF9BRERSRVNTX1AsCgkgTEVHSVRJTUlaRV9BRERSRVNTLCBKVU1QX1RBQkxFU19JTl9URVhUX1NFQ1RJT04sCgkgUElDX09GRlNFVF9UQUJMRV9SRUdOVU0sIEZJTkFMSVpFX1BJQywgTEVHSVRJTUFURV9QSUNfT1BFUkFORF9QLAoJIEFTTV9PVVRQVVRfQUREUl9ESUZGX0VMVCwgQ0FTRV9WRUNUT1JfTU9ERSk6IERlZmluZSBmb3IgUElDLgoJKG1vdmVfc3JjX29wZXJhbmQsIG0zMnJfY29tcHV0ZV9mcmFtZV9zaXplLCBtMzJyX2V4cGFuZF9wcm9sb2d1ZSwKCSBtMzJyX2ZpbmFsaXplX3BpYyk6IENoYW5nZXMgZm9yIFBJQyBhbmQgcHJvZmlsZSBzdXBwb3J0LgoJKGdsb2JhbF9vZmZzZXRfdGFibGUsIGxvYWRfcGljX3JlZ2lzdGVyLCBtMzJyX2xlZ2l0aW1hdGVfcGljX29wZXJhbmRfcCwKCSBtMzJyX2xlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBBZGQgZm9yIFBJQyBzdXBwb3J0LgoJKG0zMnJfZmlsZV9zdGFydCk6IENoYW5nZWQgZm9yIGxpdHRsZS1lbmRpYW4tdGFyZ2V0LgoJKiBjb25maWcvbTMyci9tMzJyLm1kIChtdnFpLCBtb3ZoaSwgbW92c2ksIG1vdmRpLCBtb3ZzZiwgbW92ZGYsCgl0YWJsZWp1bXAsIHRhYmxlanVtcF9pbnNuLCBjYWxsLCBjYWxsX3ZhbHVlLCBjYWxsX3ZhbHVlX3ZpYV9sYWJlbCk6CglDaGFuZ2VzIGZvciBQSUMuCgkocGljX2xvYWRfYWRkciwgZ2V0X3BjLCBidWlsdGluX3NldGptcF9yZWNlaXZlcik6IEFkZGVkIGZvciBQSUMuCgkoZmx1c2hfaWNhY2hlKTogQ2hhbmdlcyBmb3IgY2FjaGUtZmx1c2ggdHJhcC4KCjIwMDMtMTItMzAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lmg6IFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSAjdW5kZWYuCgoyMDAzLTEyLTMwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNwcGZpbGVzLmMgKHBjaF9vcGVuX2ZpbGUpOiBNaW5vciB0d2VhayB0byB3b3JrLWFyb3VuZCBuYXRpdmUKCUhQUEEgY29tcGlsZXIgYnVnLgoKMjAwMy0xMi0zMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9yczYwMDAvYWl4Lmg6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLW1vZGVzLmRlZjogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmM6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IExpa2V3aXNlLgoKMjAwMy0xMi0zMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmg6IFJlbW92ZSBwcm90b3R5cGUgZm9yCgljb25zdF9pbnRfMV9vcGVyYW5kLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGNvbnN0X2ludF8xX29wZXJhbmQpOiBSZW1vdmUuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoUFJFRElDQVRFX0NPREVTKTogUmVtb3ZlCgljb25zdF9pbnRfMV9vcGVyYW5kLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBSZXBsYWNlIGFsbCB1c2VzIG9mIGNvbnN0X2ludF8xX29wZXJhbmQKCXdpdGggY29uc3QxX29wZXJhbmQuCgkqIGNvbmZpZy9pMzg2L3BlbnRpdW0ubWQ6IExpa2V3aXNlLgoKMjAwMy0xMi0zMCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BncmVlZC5sb2NhbD4KCgkqIGRvYy90bS50ZXhpIChQUkVGRVJSRURfUkVMT0FEX0NMQVNTKTogRGVzY3JpYmUgdXNlIG9mIE5PX1JFR1MKCXdpdGggY29uc3RhbnRzLgoKMjAwMy0xMi0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF9kZWNsKTogVHVybiBiaXRmaWVsZHMgaW50byBvcmRpbmFyeQoJZmllbGRzLCBldmVuIGlmIHRoZXkgYXJlIHRoZSBmaXJzdCBmaWVsZCBpbiBhIHN0cnVjdHVyZS4KCjIwMDMtMTItMzAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkKSA8Q09ORF9FWFBSPjogRG9uJ3QgcmVxdWlyZSBzdHJpY3QgdHlwZQoJZXF1YWxpdHksIGluc3RlYWQganVzdCBwcmV2ZW50IHJlcGxhY2luZyBhIENPTkRfRVhQUiBvZiBub24tdm9pZAoJdHlwZSBieSBvbmUgb2YgaXRzIG9wZXJhbmRzIG9mIHZvaWQgdHlwZS4KCjIwMDMtMTItMzAgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBkb2MvYy10cmVlLnRleGk6IEZpeCBAaXRlbSB2cy4gQGl0ZW14LgoJKiBkb2MvY3BwLnRleGk6IExpa2V3aXNlLgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBMaWtld2lzZS4KCSogZG9jL2ludm9rZS50ZXhpOiBMaWtld2lzZS4KCjIwMDMtMTItMzAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9hcHBseV9hcmdzXzEpOiBGaXggdHlwbyBpbiBwcmV2aW91cwoJY2hhbmdlLgoKMjAwMy0xMi0zMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIHRhcmdldC8xMTkzNgoJKiBpMzg2LmggKENMQVNTX0xJS0VMWV9TUElMTEVEX1ApOiBSZXR1cm4gdHJ1ZSBmb3IKCUZQX1RPUF9SRUcvRlBfU0VDT05EX1JFRy4KCjIwMDMtMTItMzAgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCglCYWNrcG9ydCBmcm9tIHRyZWUtc3NhIChyZWxldmFudCBjaGFuZ2VzIG9ubHkpOgoJMjAwMy0xMi0xOCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogZXQtZm9yZXN0LmggKGV0X2ZvcmVzdF9jcmVhdGUsIGV0X2ZvcmVzdF9kZWxldGUsCglldF9mb3Jlc3RfYWRkX25vZGUsIGV0X2ZvcmVzdF9hZGRfZWRnZSwgZXRfZm9yZXN0X3JlbW92ZV9ub2RlLAoJZXRfZm9yZXN0X3JlbW92ZV9lZGdlLCBldF9mb3Jlc3RfcGFyZW50LAoJZXRfZm9yZXN0X2NvbW1vbl9hbmNlc3RvciwgZXRfZm9yZXN0X25vZGVfdmFsdWUsCglldF9mb3Jlc3RfZW51bWVyYXRlX3NvbnMpOiBEZWNsYXJhdGlvbnMgcmVtb3ZlZC4KCShzdHJ1Y3QgZXRfbm9kZSk6IE5ldy4KCShldF9uZXdfdHJlZSwgZXRfZnJlZV90cmVlLCBldF9zZXRfZmF0aGVyLCBldF9zcGxpdCwgZXRfbmNhLAoJZXRfYmVsb3cpOiBEZWNsYXJlLgoJKiBldC1mb3Jlc3QuYyAoc3RydWN0IGV0X2ZvcmVzdF9vY2N1cnJlbmNlLCBzdHJ1Y3QgZXRfZm9yZXN0LAoJc3RydWN0IGV0X2ZvcmVzdF9ub2RlKTogUmVtb3ZlZC4KCShldF9mb3Jlc3RfY3JlYXRlLCBldF9mb3Jlc3RfZGVsZXRlLAoJZXRfZm9yZXN0X2FkZF9ub2RlLCBldF9mb3Jlc3RfYWRkX2VkZ2UsIGV0X2ZvcmVzdF9yZW1vdmVfbm9kZSwKCWV0X2ZvcmVzdF9yZW1vdmVfZWRnZSwgZXRfZm9yZXN0X3BhcmVudCwKCWV0X2ZvcmVzdF9jb21tb25fYW5jZXN0b3IsIGV0X2ZvcmVzdF9ub2RlX3ZhbHVlLAoJZXRfZm9yZXN0X2VudW1lcmF0ZV9zb25zLCBzcGxheSwgcmVtb3ZlX2FsbF9vY2N1cnJlbmNlcywKCWZpbmRfbGVmdG1vc3Rfbm9kZSwgZmluZF9yaWdodG1vc3Rfbm9kZSwgY2FsY3VsYXRlX3ZhbHVlKTogUmVtb3ZlZC4KCShzdHJ1Y3QgZXRfb2NjKTogTmV3LgoJKGV0X25vZGVzLCBldF9vY2N1cmVuY2VzKTogTmV3LgoJKHNldF9kZXB0aCwgc2V0X2RlcHRoX2FkZCwgc2V0X3ByZXYsIHNldF9uZXh0LCBldF9yZWNvbXBfbWluLAoJZXRfY2hlY2tfb2NjX3Nhbml0eSwgZXRfY2hlY2tfc2FuaXR5LCBldF9jaGVja190cmVlX3Nhbml0eSwKCXJlY29yZF9wYXRoX2JlZm9yZV8xLCByZWNvcmRfcGF0aF9iZWZvcmUsIGNoZWNrX3BhdGhfYWZ0ZXJfMSwKCWNoZWNrX3BhdGhfYWZ0ZXIsIGV0X3NwbGF5LCBldF9uZXdfb2NjLCBldF9uZXdfdHJlZSwKCWV0X2ZyZWVfdHJlZSwgZXRfc2V0X2ZhdGhlciwgZXRfc3BsaXQsIGV0X25jYSwgZXRfYmVsb3cpOiBOZXcuCgkqIGJhc2ljLWJsb2NrLmggKHN0cnVjdCBiYXNpY19ibG9ja19kZWYpOiBOZXcgZmllbGQgZG9tLgoJKHN0cnVjdCBkb21pbmFuY2VfaW5mbyk6IFR5cGUgcmVtb3ZlZC4KCShjYWxjdWxhdGVfZG9taW5hbmNlX2luZm8sIGZyZWVfZG9taW5hbmNlX2luZm8sCgluZWFyZXN0X2NvbW1vbl9kb21pbmF0b3IsIHNldF9pbW1lZGlhdGVfZG9taW5hdG9yLAoJZ2V0X2ltbWVkaWF0ZV9kb21pbmF0b3IsIGRvbWluYXRlZF9ieV9wLCBnZXRfZG9taW5hdGVkX2J5LAoJYWRkX3RvX2RvbWluYW5jZV9pbmZvLCBkZWxldGVfZnJvbV9kb21pbmFuY2VfaW5mbywKCXJlY291bnRfZG9taW5hdG9yLCByZWRpcmVjdF9pbW1lZGlhdGVfZG9taW5hdG9ycywKCWl0ZXJhdGVfZml4X2RvbWluYXRvcnMsIHZlcmlmeV9kb21pbmF0b3JzKTogRGVjbGFyYXRpb25zCgljaGFuZ2VkLgoJKGVudW0gZG9tX3N0YXRlKTogTmV3LgoJKGRvbV9jb21wdXRlZCk6IE5ldyB2YXJpYWJsZS4KCShmaXJzdF9kb21fc29uLCBuZXh0X2RvbV9zb24pOiBEZWNsYXJlLgoJKiBkb21pbmFuY2UuYyAoc3RydWN0IGRvbWluYW5jZV9pbmZvKTogUmVtb3ZlZC4KCShCQl9OT0RFLCBTRVRfQkJfTk9ERSk6IFJlbW92ZWQuCgkoY2FsY3VsYXRlX2RvbWluYW5jZV9pbmZvLCBmcmVlX2RvbWluYW5jZV9pbmZvLAoJbmVhcmVzdF9jb21tb25fZG9taW5hdG9yLCBzZXRfaW1tZWRpYXRlX2RvbWluYXRvciwKCWdldF9pbW1lZGlhdGVfZG9taW5hdG9yLCBkb21pbmF0ZWRfYnlfcCwgZ2V0X2RvbWluYXRlZF9ieSwKCWFkZF90b19kb21pbmFuY2VfaW5mbywgZGVsZXRlX2Zyb21fZG9taW5hbmNlX2luZm8sCglyZWNvdW50X2RvbWluYXRvciwgcmVkaXJlY3RfaW1tZWRpYXRlX2RvbWluYXRvcnMsCglpdGVyYXRlX2ZpeF9kb21pbmF0b3JzLCB2ZXJpZnlfZG9taW5hdG9ycywKCWRlYnVnX2RvbWluYW5jZV9pbmZvKTogV29yayBvdmVyIG5ldyBkYXRhc3RydWN0dXJlLiAgQWNjZXNzCglkb21pbmFuY2UgZGF0YXN0cnVjdHVyZXMgdGhyb3VnaCBDRkcuCgkoYXNzaWduX2Rmc19udW1iZXJzLCBjb21wdXRlX2RvbV9mYXN0X3F1ZXJ5LCBmaXJzdF9kb21fc29uLAoJbmV4dF9kb21fc29uKTogTmV3LgoJKiBidC1sb2FkLmMgKGRvbSk6IFZhcmlhYmxlIHJlbW92ZWQuCgkoYXVnbWVudF9saXZlX3JhbmdlLCBjb21iaW5lX2J0cl9kZWZzLCBtaWdyYXRlX2J0cl9kZWYsCgltaWdyYXRlX2J0cl9kZWZzLCBicmFuY2hfdGFyZ2V0X2xvYWRfb3B0aW1pemUpOiBVcGRhdGVkIGZvciB0aGUKCW5ldyBpbnRlcmZhY2UgZm9yIGRvbWluYW5jZSBpbmZvcm1hdGlvbi4KCSogY2ZnLmMge2V4aXRfZW50cnlfYmxvY2tzKTogVXBkYXRlIGluaXRpYWxpemVyLgoJKiBjZmdsYXlvdXQuYyAoY29weV9iYnMpOiBSZW1vdmVkIGxvb3BzIGFyZ3VtZW50LiBVcGRhdGVkIGZvcgoJdGhlIG5ldyBpbnRlcmZhY2UgZm9yIGRvbWluYW5jZSBpbmZvcm1hdGlvbi4KCSogY2ZnbGF5b3V0LmggKGNvcHlfYmJzKTogRGVjbGFyYXRpb24gY2hhbmdlZC4KCSogY2ZnbG9vcC5jIChmbG93X2xvb3BfcHJlX2hlYWRlcl9maW5kLCBmbG93X2xvb3BzX2NmZ19kdW1wLAoJZmxvd19sb29wX3NjYW4sIGNhbm9uaWNhbGl6ZV9sb29wX2hlYWRlcnMsIGZsb3dfbG9vcHNfZmluZCk6IFVwZGF0ZWQKCWZvciB0aGUgbmV3IGludGVyZmFjZSBmb3IgZG9taW5hbmNlIGluZm9ybWF0aW9uLgoJKGZsb3dfbG9vcF9zY2FuKTogTG9vcHMgYXJndW1lbnQgcmVtb3ZlZC4KCShmbG93X2xvb3BzX2ZyZWUpOiBEb24ndCByZWxlYXNlIGRvbWluYXRvcnMuCgkqIGNmZ2xvb3AuaCAoc3RydWN0IGNmZyk6IERvbSBmaWVsZCByZW1vdmVkLgoJKGZsb3dfbG9vcF9zY2FuLCBsb29wX3NwbGl0X2VkZ2Vfd2l0aCwgc2ltcGxlX2xvb3BfcCwKCWp1c3Rfb25jZV9lYWNoX2l0ZXJhdGlvbl9wLCBzcGxpdF9sb29wX2JiKTogRGVjbGFyYXRpb24gY2hhbmdlZC4KCSogY2ZnbG9vcGFuYWwuYyAoc2ltcGxlX2xvb3BfZXhpdF9wLCBzaW1wbGVfaW5jcmVtZW50LAoJanVzdF9vbmNlX2VhY2hfaXRlcmF0aW9uX3AsIHNpbXBsZV9sb29wX3ApOiBSZW1vdmUgbG9vcHMgYXJndW1lbnQuCglVcGRhdGVkIGZvciB0aGUgbmV3IGludGVyZmFjZSBmb3IgZG9taW5hbmNlIGluZm9ybWF0aW9uLgoJKiBjZmdsb29wbWFuaXAuYyAocmVtb3ZlX2JicywgZmluZF9wYXRoLCBjcmVhdGVfcHJlaGVhZGVyLAoJc3BsaXRfbG9vcF9iYiwgbG9vcGlmeSwgZHVwbGljYXRlX2xvb3BfdG9faGVhZGVyX2VkZ2UsCglmb3JjZV9zaW5nbGVfc3VjY19sYXRjaGVzLCBsb29wX3NwbGl0X2VkZ2Vfd2l0aCk6IERpdHRvLgoJKiBnY3NlLmMgKGRvbWluYXRvcnMpOiBWYXJpYWJsZSByZW1vdmVkLgoJKGZyZWVfY29kZV9ob2lzdF9tZW0sIGNvbXB1dGVfY29kZV9ob2lzdF9kYXRhLCBob2lzdF9jb2RlKToKCVVwZGF0ZWQgZm9yIHRoZSBuZXcgaW50ZXJmYWNlIGZvciBkb21pbmFuY2UgaW5mb3JtYXRpb24uCgkqIGlmY3Z0LmMgKHBvc3RfZG9taW5hdG9ycyk6IFZhcmlhYmxlIHJlbW92ZWQuCgkobWFya19sb29wX2V4aXRfZWRnZXMsIG1lcmdlX2lmX2Jsb2NrLCBmaW5kX2lmX2hlYWRlciwKCWZpbmRfY29uZF90cmFwLCBmaW5kX2lmX2Nhc2VfMSwgZmluZF9pZl9jYXNlXzIsIGlmX2NvbnZlcnQpOgoJVXBkYXRlZCBmb3IgdGhlIG5ldyBpbnRlcmZhY2UgZm9yIGRvbWluYW5jZSBpbmZvcm1hdGlvbi4KCSogbG9vcC1pbml0LmMgKHJ0bF9sb29wX29wdGltaXplcl9pbml0LAoJcnRsX2xvb3Bfb3B0aW1pemVyX2ZpbmFsaXplKTogRGl0dG8uCgkqIGxvb3AtdW5yb2xsLmMgKGRlY2lkZV9wZWVsX3NpbXBsZSwgZGVjaWRlX3BlZWxfb25jZV9yb2xsaW5nLAoJZGVjaWRlX3BlZWxfY29tcGxldGVseSwgZGVjaWRlX3Vucm9sbF9zdHVwaWQsCglkZWNpZGVfdW5yb2xsX2NvbnN0YW50X2l0ZXJhdGlvbnMsCglkZWNpZGVfdW5yb2xsX3J1bnRpbWVfaXRlcmF0aW9ucyk6IExvb3BzIGFyZ3VtZW50IHJlbW92ZWQuCglVcGRhdGVkIGZvciB0aGUgbmV3IGludGVyZmFjZSBmb3IgZG9taW5hbmNlIGluZm9ybWF0aW9uLgoJKHVucm9sbF9hbmRfcGVlbF9sb29wcywgcGVlbF9sb29wc19jb21wbGV0ZWx5LAoJdW5yb2xsX2xvb3BfcnVudGltZV9pdGVyYXRpb25zKTogVXBkYXRlZCBmb3IgdGhlIG5ldyBpbnRlcmZhY2UgZm9yCglkb21pbmFuY2UgaW5mb3JtYXRpb24uCgkqIGxvb3AtdW5zd2l0Y2guYyAobWF5X3Vuc3dpdGNoX29uX3AsIHVuc3dpdGNoX2xvb3BzLAoJdW5zd2l0Y2hfc2luZ2xlX2xvb3AsIHVuc3dpdGNoX2xvb3ApOiBVcGRhdGVkIGZvciB0aGUgbmV3CglpbnRlcmZhY2UgZm9yIGRvbWluYW5jZSBpbmZvcm1hdGlvbi4KCSogcHJlZGljdC5jIChwcm9jZXNzX25vdGVfcHJlZGljdGlvbnMsIHByb2Nlc3Nfbm90ZV9wcmVkaWN0aW9uLAoJZXN0aW1hdGVfcHJvYmFiaWxpdHksIG5vdGVfcHJlZGljdGlvbl90b19icl9wcm9iKTogRGl0dG8uCgkqIHNjaGVkLXJnbi5jIChmaW5kX3JnbnMsIGluaXRfcmVnaW9ucyk6IERpdHRvLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9oYW5kbGVfYnJhbmNoX3Byb2IpOiBGcmVlIHRoZSBkb21pbmF0b3JzLgoKMjAwMy0xMi0zMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIHRhcmdldC8xMzQ1NgoJKiBpMzg2Lm1kIChhbGxvY2F0ZV9zdGFja193b3JrZXIpOiAgVXNlIGRpZmZlcmVudCBwYXR0ZXJuIGZvciBwcmUgYW5kCglwb3N0IHJlbG9hZCBleHBhbnNpb24uCgkoYWxsb2NhdGVfc3RhY2tfd29ya2VyXzEsIGFsbG9jYXRlX3N0YWNrX3dvcmtlcl9yZXg2NCk6IFVzZQoJbWF0Y2hfc2NyYXRjaC4KCShhbGxvY2F0ZV9zdGFja193b3JkZXJfMV9wb3N0cmVsb2FkLAoJYWxsb2NhdGVfc3RhY2tfd29ya2VyX3JleDY0X3Bvc3RyZWxvYWQpOiBOZXcuCgoyMDAzLTEyLTI5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fYXBwbHlfYXJnc18xKTogQWRkIHByZXRlbmQgYXJncyBzaXplCgl0byB0aGUgdmlydHVhbCBpbmNvbWluZyBhcmdzIHBvaW50ZXIgZm9yIGRvd253YXJkIHN0YWNrcy4KCjIwMDMtMTItMjkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIGZvcnRyYW4vMTI2MzIKCSogZm9sZC1jb25zdC5jIChmb2xkKSA8Q09ORF9FWFBSPjogRG9uJ3QgZm9sZCBhIGNvbnN0YW50IGNvbmRpdGlvbiwKCWlmIHRoZSB0eXBlIG9mIHRoZSBzZWxlY3RlZCBicmFuY2ggZG9lc24ndCBtYXRjaCBpdHMnIHBhcmVudC4KCjIwMDMtMTItMjkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNvdmVyYWdlLmMgKHJlYWRfY291bnRzX2ZpbGUpOiBCZXR0ZXIgZXJyb3IgbWVzc2FnZXM7IGNhdXNlIGNvcnJ1cHRlZAoJcHJvZmlsZXMgdG8gcHJvZHVjZSBoYXJkIGVycm9ycywgbm90IGp1c3Qgd2FybmluZ3MKCShnZXRfY292ZXJhZ2VfY291bnRzKTogU2ltaWxhcmx5LgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfaGFuZGxlX2xvb3Bfb3B0aW1pemUpOiBFbmFibGUgTE9PUF9BVVRPX1VOUk9MTC4KCjIwMDMtMTItMjkgIFBoaWwgRWR3YXJkcyAgPHBoaWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9jcHBvcHRzLnRleGk6ICBVc2Ugb2YgLWlkaXJhZnRlciwgLWlwcmVmaXgsIC1pd2l0aHByZWZpeCwgYW5kCgktaXdpdGhwcmVmaXhiZWZvcmUgaXMgbm90IGRpc2NvdXJhZ2VkLgoKMjAwMy0xMi0yOCAgTW9zdGFmYSBIYWdvZyAgPG11c3RhZmFAaWwuaWJtLmNvbT4KCgkqIHNiaXRtYXAuYyAoc2JpdG1hcF91bmlvbl9vZl9kaWZmX2NnLCBzYml0bWFwX2FfYW5kX2JfY2csCglzYml0bWFwX2FfeG9yX2JfY2cpOiBBY2N1bXVsYXRlICJjaGFuZ2VkIiBwcm9wZXJseS4KCShzYml0bWFwX25vdCk6IFplcm8gYWxsIGJpdHMgcGFzdCBuX2JpdC4KCjIwMDMtMTItMjcgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCglQUiBvcHQvMTMxNTkKCSogY2ZnbG9vcGFuYWwuYyAobWFya19pcnJlZHVjaWJsZV9sb29wcyk6IEZpeCB0aGUgc3Ryb25nbHkgY29ubmVjdGVkCgljb21wb25lbnRzIGRldGVjdGlvbi4KCSogbG9vcC11bnN3aXRjaC5jICh1bnN3aXRjaF9sb29wKTogUHJlc2VydmUgc2ltcGxlIHByZWhlYWRlcnMuCgoyMDAzLTEyLTI3ICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBjb25maWcvbTY4ay91Y2xpbnV4LmggKExJQl9TUEVDKTogQWRkIGVsZjJmbHQgbWFnaWMgcmVxdWlyZWQgZm9yCgljb3JyZWN0IGxpbmtpbmcgb2YgZXhlY3V0YWJsZXMgdXNpbmcgaWQtYmFzZWQgc2hhcmVkIGxpYnJhcmllcy4KCjIwMDMtMTItMjcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaTM4Ni9pMzg2LWludGVyaXguaDogUmVtb3ZlIHVzZXMgb2YgInJlZ2lzdGVyIgoJc3BlY2lmaWVyIGluIGRlY2xhcmF0aW9ucyBvZiBhcmd1bWVudHMgYW5kIGxvY2FsIHZhcmlhYmxlcy4KCSogY29uZmlnL2kzODYvaTM4Ni5jOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4NmVsZi5oOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvcHR4NC1pLmg6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9zeXN2NC5oOiBMaWtld2lzZS4KCjIwMDMtMTItMjYgIEZhcmlib3J6IEphaGFuaWFuIDxmamFoYW5pYW5AYXBwbGUuY29tPgoJICAgIEdlb2ZmcmV5IEtlYXRpbmcgPGdlb2Zma0BhcHBsZS5jb20+CgkgICAgRGF2aWQgRWRlbHNvaG4gPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChsZWdpdGltYXRlX29mZnNldF9hZGRyZXNzX3ApOiBEbyBub3QKCXJlc3RyaWN0IERGbW9kZSBhbmQgVEZtb2RlIHRvIHdvcmQgYWxpZ25tZW50LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92ZGZfaGFyZGZsb2F0NjQpOiBVc2UgJ28nIGNvbnN0cmFpbnQKCWZvciBsZC9zdGQgYW5kIG9yZGVyIGJlZm9yZSBtci4KCjIwMDMtMTItMjYgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY29uZmlnL2Rhcndpbi5oIChMSU5LX0NPTU1BTkRfU1BFQyk6IEFycmFuZ2UKCS1mcHJvZmlsZS1nZW5lcmF0ZSB0byBpbXBseSAtbGdjb3YuCgoyMDAzLTEyLTI2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChsZG1faDgzMDBzXzJfbm9ybWFsKTogVXNlIEhJbW9kZSBmb3IKCWFkZHJlc3Nlcy4KCjIwMDMtMTItMjUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbTMyci9tMzJyLm1kOiBSZW1vdmUgYSBjb25zdHJhaW50IGZyb20gYSBzcGxpdHRlci4KCjIwMDMtMTItMjUgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIEMrKy8xMzQyOSwgQy8xMTk0NAoJKiBjLWNvbW1vbi5jIChjX2J1aWxkX3F1YWxpZmllZF90eXBlKTogUmV0dXJuIGVhcmx5IHdoZW4gdHlwZSBpcwoJZXJyb3JfbWFya19ub2RlLgoJKGNfYXBwbHlfdHlwZV9xdWFsc190b19kZWNsKTogTGlrZXdpc2UuCgoyMDAzLTEyLTI1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2FscGhhL2FscGhhLW1vZGVzLmRlZjogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogY29uZmlnL2FscGhhL2FscGhhLmM6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9lbGYuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9saWIxZnVuY3MuYXNtOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL29wZW5ic2QuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS92bXMtY2MuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS92bXMtY3J0MC02NC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL3Ztcy1jcnQwLmM6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvdm1zLWxkLmM6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvdm1zLXBzeGNydDAtNjQuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS92bXMtcHN4Y3J0MC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL3Ztcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL2FyYy9hcmMuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYW9mLmg6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS1tb2Rlcy5kZWY6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5jOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9saW51eC1lbGYuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vdnh3b3Jrcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL2F2ci9hdnIuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9hdnIvYXZyLmg6IExpa2V3aXNlLgoKMjAwMy0xMi0yNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy94dGVuc2EvZWxmLmg6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLXByb3Rvcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmg6IExpa2V3aXNlLgoKMjAwMy0xMi0yNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9hdnIvYXZyLmM6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkqIGNvbmZpZy9hdnIvYXZyLm1kOiBMaWtld2lzZS4KCjIwMDMtMTItMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJUFIgdGFyZ2V0LzEyNzIxLgoJKiBjb25maWcvYXZyL2F2ci5jOiBJbmNsdWRlIGdnYy5oLgoJKHRtcF9yZWdfcnR4KTogRGVjbGFyZSB3aXRoIEdUWS4KCSh6ZXJvX3JlZ19ydHgpOiBMaWtld2lzZS4KCShsZGlfcmVnX3J0eCk6IFJlbW92ZS4KCShhdnJfb3ZlcnJpZGVfb3B0aW9ucyk6IEluaXRpYWxpemUgemVyb19yZWdfcnR4IGFuZAoJbGRpX3JlZ19ydHguCgkoYXZyX2luaXQpOiBSZW1vdmUuCglJbmNsdWRlIGd0LWF2ci5oLgoJKiBjb25maWcvYXZyL2F2ci5oIChMRElfUkVHX1JFR05PKTogUmVtb3ZlLgoJUmVtb3ZlIGV4dGVybnMgZm9yIHRtcF9yZWdfcnR4LCB6ZXJvX3JlZ19ydHgsIGFuZCBsZGlfcmVnX3J0eC4KCjIwMDMtMTItMjQgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGRvYy9tZC50ZXhpOiBEb2N1bWVudCBQb3dlclBDIHZlY3RvciByZWdpc3RlciBjb25zdHJhaW50IGxldHRlci4KCjIwMDMtMTItMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IFJlY29nbml6ZSBjYWxscyB0byAic3FydCIgYW5kIGNyZWF0ZQoJY29ycmVzcG9uZGluZyBub3Rlcy4KCjIwMDMtMTItMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFVzZSBgaW5mb3JtJyBpbnN0ZWFkCglvZiBgd2FybmluZycgZm9yIC1nIC1tYWJpPTMyIGFuZCBuYXRpdmUgYXNzZW1ibGVyLgoKCSogY29uZmlnL21pcHMvdC1pcmlzNiAoQ1JUU1RVRkZfVF9DRkxBR1MsIFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6CglEb24ndCBwYXNzIC1Xbm8tZXJyb3IuCgoyMDAzLTEyLTIzICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBVcGRhdGUgbWF4X3Bhcm1fcmVnIGFuZAoJcGFybV9yZWdfc3RhY2tfbG9jIHdoZW4gYWRkaW5nIG5ldyBwYXJtIHJlZy4KCjIwMDMtMTItMjMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbnMzMmsvbnMzMmsuYzogQ29udmVydCB0byBJU08tQy4KCjIwMDMtMTItMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfdmFfYXJnKTogUGFzcyBwb2ludGVyIGZvcgoJdmFyaWFibGUtc2l6ZWQgdHlwZSB0aHJvdWdoIGNvbnZlcnRfbWVtb3J5X2FkZHJlc3MuCgkoaWE2NF9pbl9zbWFsbF9kYXRhX3ApOiBBbHdheXMgcmV0dXJuIGZhbHNlIGZvciBGVU5DVElPTl9ERUNMcy4KCjIwMDMtMTItMjMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNvbW1vbi5vcHQgKGZwcm9maWxlLWdlbmVyYXRlLGZwcm9maWxlLXVzZSk6IEFkZC4KCSogZ2NjLmMgKExJTktfQ09NTUFORF9TUEVDKTogQXJyYW5nZSAtZnByb2ZpbGUtZ2VuZXJhdGUgdG8gaW1wbHkgLWxnY292CgkqIG9wdHMuYyAocHJvZmlsZV9hcmNfZmxhZ19zZXQsIGZsYWdfcHJvZmlsZV92YWx1ZXNfc2V0LAoJZmxhZ191bnJvbGxfbG9vcHNfc2V0LCBmbGFnX3RyYWNlcl9zZXQsCglmbGFnX3ZhbHVlX3Byb2ZpbGVfdHJhbnNmb3JtYXRpb25zX3NldCwKCWZsYWdfcGVlbF9sb29wc19zZXQpOiBOZXcgc3RhdGljIHZhcmlhYmxlcy4KCShjb21tb25faGFuZGxlX29wdGlvbik6IERlYWwgd2l0aCAtZnByb2ZpbGUtZ2VuZXJhdGUvLWZwcm9maWxlLXVzZQoJKiBpbnZva2UudGV4aSAoLWZwcm9maWxlLWdlbmVyYXRlLCAtZnByb2ZpbGUtdXNlKTogRGVzY3JpYmUuCgoyMDAzLTEyLTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMtY29tbW9uKTogUmVtb3ZlIGR3YXJmb3V0Lm8uCgkoZHdhcmZvdXQubyk6IFJlbW92ZS4KCSogY29tbW9uLm9wdDogUmVtb3ZlIC1nZHdhcmYsIC1nZHdhcmYrLgoJKiBkZWZhdWx0cy5oIChQUkVGRVJSRURfREVCVUdHSU5HX1RZUEUpOiBEbyBub3QgY2hlY2sgZm9yCglEV0FSRl9ERUJVR0dJTkdfSU5GTy4KCSogZHdhcmYyb3V0LmM6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkqIGR3YXJmb3V0LmM6IFJlbW92ZS4KCSogb3B0cy5jIChjb21tb25faGFuZGxlX29wdGlvbik6IFJlbW92ZSBPUFRfZ2R3YXJmLCBPUFRfZ2R3YXJmXy4KCSogdG9wbGV2LmMgKHByb2Nlc3Nfb3B0aW9ucyk6IFJlbW92ZSBjaGVjayBmb3IKCURXQVJGX0RFQlVHR0lOR19JTkZPLgoJKiBjb25maWcvZWxmb3MuaCAoRFdBUkZfREVCVUdHSU5HX0lORk8pOiBEbyBub3QgI2RlZmluZSBpdCBvcgoJI3VuZGVmIGl0LgoJKiBjb25maWcvbmV0d2FyZS5oIChEV0FSRl9ERUJVR0dJTkdfSU5GTyk6IExpa2V3aXNlLgoJKiBjb25maWcvcHR4NC5oIChEV0FSRl9ERUJVR0dJTkdfSU5GTyk6IExpa2V3aXNlLgoJKiBjb25maWcvdnh3b3Jrcy5oIChEV0FSRl9ERUJVR0dJTkdfSU5GTyk6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvdW5pY29zbWsuaCAoRFdBUkZfREVCVUdHSU5HX0lORk8pOiBMaWtld2lzZS4KCSogY29uZmlnL2FyYy9hcmMuaCAoRFdBUkZfREVCVUdHSU5HX0lORk8pOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvc2NvNS5oIChEV0FSRl9ERUJVR0dJTkdfSU5GTyk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni94ODYtNjQuaCAoRFdBUkZfREVCVUdHSU5HX0lORk8pOiBMaWtld2lzZS4KCSogY29uZmlnL20zMnIvbTMyci5oIChEV0FSRl9ERUJVR0dJTkdfSU5GTyk6IExpa2V3aXNlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUtZWxmLmggKERXQVJGX0RFQlVHR0lOR19JTkZPKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9saW51eDY0LmggKERXQVJGX0RFQlVHR0lOR19JTkZPKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9saXRlZWxmLmggKERXQVJGX0RFQlVHR0lOR19JTkZPKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zb2wyNi1zbGQuaCAoRFdBUkZfREVCVUdHSU5HX0lORk8pOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NwODZ4LWVsZi5oIChEV0FSRl9ERUJVR0dJTkdfSU5GTyk6IExpa2V3aXNlLgoJKiBkb2MvaW52b2tlLnRleGk6IERvIG5vdCBtZW50aW9uIC1nZHdhcmYsIC1nZHdhcmYtMSwgLWdkd2FyZi0xKywKCW9yIC1nZHdhcmYrLgoJKiBkb2MvdG0udGV4aTogTGlrZXdpc2UuCgoJKiBjLWNvbW1vbi5jIChmbGFnX2FiaV92ZXJzaW9uKTogRGVmYXVsdCB0byAyLgoJKiBjLWNwcGJ1aWx0aW4uYyAoY19jcHBfYnVpbHRpbnMpOiBEZWZpbmUgX19HWFhfQUJJX1ZFUlNJT04KCXVuaWZvcm1seSBmb3IgdmVyc2lvbnMgYWJvdmUgMi4KCSogZG9jL2ludm9rZS50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBmb3IgLWZhYmktdmVyc2lvbi4KCjIwMDMtMTItMjIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IENoYW5nZSBtYW55IGluc3RhbmNlcyBvZiAnIQoJVEFSR0VUX1BPV0VSUEM2NCcgdG8gJ1RBUkdFVF8zMkJJVCcgd2hlbiB0aGUgcGF0dGVybiBiZWluZyBndWFyZGVkCgl3YXMgZ3VhcmRlZCBvbmx5IGJlY2F1c2UgaXQgY2hhbmdlZCBDUjAgb3IgdGhlIGNhcnJ5IGJpdCBpbiBYRVIuCgoyMDAzLTEyLTIzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMzM5NAoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IE1vdmUgY2FsbCB0bwoJY2hlY2tfZnVuY3Rpb25fcmV0dXJuX3dhcm5pbmdzIHJpZ2h0IGFmdGVyIHRoZSBzaWJjYWxsCglvcHRpbWl6YXRpb24gcGFzcy4KCjIwMDMtMTItMjMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgYy8xMzM4MgoJKiBjLXR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogV2hlbiBjb252ZXJ0aW5nIGZyb20KCWludGVncmFsIHR5cGUgdG8gcG9pbnRlciB0eXBlLCBhbHdheXMgY2FsbCBjb252ZXJ0LgoKMjAwMy0xMi0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogRGVwcmVjYXRlIC1md3JpdGFibGUtc3RyaW5ncy4KCgkqIGMtY29tbW9uLmMgKGZsYWdfZXh0ZXJuYWxfdGVtcGxhdGVzKTogUmVtb3ZlLgoJKGZsYWdfYWx0X2V4dGVybmFsX3RlbXBsYXRlcyk6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5oIChmbGFnX2V4dGVybmFsX3RlbXBsYXRlcyk6IFJlbW92ZS4KCShmbGFnX2FsdF9leHRlcm5hbF90ZW1wbGF0ZXMpOiBMaWtld2lzZS4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBVbnN1cHBvcnQKCS1mYWx0LWV4dGVybmFsLXRlbXBsYXRlcyBhbmQgLWZ0ZW1wbGF0ZXMuCgkqIGRvYy9pbnZva2UudGV4aTogUmVtb3ZlIG1lbnRpb24gb2YgLWZleHRlcm5hbC10ZW1wbGF0ZXMgYW5kCgktZmFsdC1leHRlcm5hbC10ZW1wbGF0ZXMuCgoyMDAzLTEyLTIyICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0YXJnZXQvMTM0NjYKCSogY29uZmlnLmdjYyAocG93ZXJwYy0qLWRhcndpbik6IFJlbW92ZSBvdmVycmlkZGVuIHZhbHVlIG9mIG5lZWRfNjRiaXRfaHdpbnQuCgoJKiBlbWl0LXJ0bC5jIChjb3B5X3J0eF9pZl9zaGFyZWQpOiBBZGQgY29tbWVudCBhYm91dCBpdHMgdXNlIG9mCgljb3B5X3J0eF9pZl9zaGFyZWRfMS4KCShjb3B5X3J0eF9pZl9zaGFyZWRfMSk6IEFkZCBjb21tZW50IGFib3V0IHdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMuCgoJKiBjLWRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogQ2hhbmdlIG9yZGVyIG9mIGNoZWNrcy4KCShjX2V4cGFuZF9ib2R5KTogTGlrZXdpc2UuCgoyMDAzLTEyLTIyICBGYXJpYm9yeiBKYWhhbmlhbiA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGxlZ2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCk6IENvcnJlY3QKCWNoZWNrIGZvciB0aGUgbGVnaXRpbWF0ZSBvZmZzZXQgd2hlbiBtZW1vcnkgb2YKCURJbW9kZS9ERm1vZGUvVEZtb2RlL1RJbW9kZSBtb2RlIGlzIGJlaW5nIHJlZmVyZW5jZWQgYW5kIHRhcmdldAoJaXMgVEFSR0VUX1BPV0VSUEM2NC4KCjIwMDMtMTItMjIgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCgkqIHJlbG9hZDEuYzogIEFkZCByZWdfcmVsb2FkZWRfY2FsbF9wYXJ0X2Nsb2JiZXJlZC4KCShyZWxvYWRfYXNfbmVlZGVkKTogIFVzZSBpdC4KCShmb3JnZXRfb2xkX3JlbG9hZHNfMSk6ICBEaXR0by4KCShlbWl0X3JlbG9hZF9pbnNucyk6ICBEaXR0by4KCjIwMDMtMTItMjIgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTI4MjgKCSogbG9vcC5jOiAgQWRkIGZpbmRfcmVnc19uZXN0ZWQgdG8gbG9vayBpbnNpZGUgQ0xPQkJFUihNRU0pLgoJKHNjYW5fbG9vcCk6ICBDYWxsIGl0LgoJKiByZWdjbGFzcy5jIChyZWdfc2Nhbl9tYXJrX3JlZ3MpOiAgTG9vayBpbnNpZGUgQ0xPQkJFUihNRU0pLgoKMjAwMy0xMi0yMiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgYy85MTYzCgkqIGMtZGVjbC5jIChwb3BsZXZlbCk6IE9ubHkgc2V0IERFQ0xfSU5JVElBTCBvZiBhIGN1cnJlbnQgZnVuY3Rpb24KCWlmIGl0IGlzIG5vbi1udWxsLgoJKGZpbmlzaF9mdW5jdGlvbik6IENoZWNrIGZvciBlcnJvcl9tYXJrX25vZGUgb3IgbnVsbCBvbiBERUNMX1JFU1VMVCBhbmQKCURFQ0xfUkVTVUxUIG9mIGZuZGVjbC4KCShjX2V4cGFuZF9ib2R5KTogT25seSBleHBhbmQgd2hlbiBERUNMX0lOSVRJQUwgb2YgZm5kZWNsIGlzIG5vdAoJZXJyb3JfbWFya19ub2RlIGFuZCBub3QgbnVsbC4KCjIwMDMtMTItMjEgIERhbiBOaWNvbGFlc2N1ICA8ZGFubkBpY3MudWNpLmVkdT4KCgkqIHJ0bC5oIChkdW1wX3J0eF9zdGF0aXN0aWNzKTogRGVjbGFyZSBpdC4KCSogcnRsLmMgKHJ0eF9hbGxvY19jb3VudHMsIHJ0eF9hbGxvY19zaXplcywgcnR2ZWNfYWxsb2NfY291bnRzLAoJcnR4X2FsbG9jX3NpemVzKTogTmV3IHN0YXRpYyB2YXJzLgoJKHJ0eF9hbGxvYywgcnR2ZWNfYWxsb2MpOiBVcGRhdGUgdGhlbS4KCShkdW1wX3J0eF9zdGF0aXN0aWNzKTogTmV3IGZ1bmN0aW9uLgoJKiB0b3BsZXYuYyAoZmluYWxpemUpOiBDYWxsIGl0LgoJKiBnZ2MtcGFnZS5jIChzdHJ1Y3QgZ2xvYmFscyk6IEZpeCBjb21tZW50cy4gQWRkIG5ldyBtZW1iZXIKCXRvdGFsX2FsbG9jYXRlZF9wZXJfb3JkZXIuCgkoZ2djX2FsbG9jKTogS2VlcCB0cmFjayBvZiB0aGUgdG90YWwgYWxsb2NhdGVkIG1lbW9yeS4KCShnZ2NfcHJpbnRfc3RhdGlzdGljcyk6IENsYXJpZnkgbWVzc2FnZS4gUHJpbnQgdG90YWwgYWxsb2NhdGVkCgltZW1vcnkgc3RhdHMuCgkqIGNvbmZpZ3VyZS5pbiAoZ2F0aGVyLWRldGFpbGVkLW1lbS1zdGF0cyk6IE5ldyBmbGFnLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCSogZG9jL2luc3RhbGwudGV4aSAoQ29uZmlndXJhdGlvbik6IERvY3VtZW50CgktLWVuYWJsZS1nYXRoZXItZGV0YWlsZWQtbWVtLXN0YXRzLgoKMjAwMy0xMi0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHN5c3RlbS5oIChDT05WRVJUX0hBUkRfUkVHSVNURVJfVE9fU1NBX1ApOiBQb2lzb24uCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoQ09OVkVSVF9IQVJEX1JFR0lTVEVSX1RPX1NTQV9QKTogUmVtb3ZlLgoKMjAwMy0xMi0yMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvaWE2NC9ocHV4LmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBEZWZpbmUgX0lMUDMyCgl3aGVuIGNvbXBpbGluZyBpbiBJTFAzMiBtb2RlLgoKMjAwMy0xMi0yMSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfdGxzX3JlZmVyZW5jZWRfcCk6IFJldHVybiBlYXJseSBpZgoJVEFSR0VUX0hBVkVfVExTIGlzIGZhbHNlLgoKMjAwMy0xMi0yMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9pcDJrL2lwMmstcHJvdG9zLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJYXNtX291dHB1dF9zZWN0aW9uX25hbWUuCgkqIGNvbmZpZy9pcDJrL2lwMmsuYyAoYXNtX291dHB1dF9zZWN0aW9uX25hbWUpOiBSZW1vdmUuCgoyMDAzLTEyLTIxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYWxpYXMuYzogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogYWxsb2MtcG9vbC5jOiBMaWtld2lzZS4KCSogYml0bWFwLmM6IExpa2V3aXNlLgoJKiBiaXRtYXAuaDogTGlrZXdpc2UuCgkqIGJ0LWxvYWQuYzogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmM6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5oOiBMaWtld2lzZS4KCSogYy1kZWNsLmM6IExpa2V3aXNlLgoJKiBjLW9wdHMuYzogTGlrZXdpc2UuCgkqIGMtcHJldHR5LXByaW50LmM6IExpa2V3aXNlLgoJKiBjYWxsZXItc2F2ZS5jOiBMaWtld2lzZS4KCSogY2ZnaG9va3MuaDogTGlrZXdpc2UuCgkqIGNncmFwaC5jOiBMaWtld2lzZS4KCSogY29sbGVjdDIuYzogTGlrZXdpc2UuCgkqIGNwcGZpbGVzLmM6IExpa2V3aXNlLgoJKiBjcHBsaWIuaDogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jOiBMaWtld2lzZS4KCSogZHdhcmZvdXQuYzogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmM6IExpa2V3aXNlLgoJKiBmaW5hbC5jOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYzogTGlrZXdpc2UuCgkqIGdjb3YuYzogTGlrZXdpc2UuCgkqIGdjc2UuYzogTGlrZXdpc2UuCgkqIGdlbmVtaXQuYzogTGlrZXdpc2UuCgkqIGdnYy5oOiBMaWtld2lzZS4KCSogaGFpZmEtc2NoZWQuYzogTGlrZXdpc2UuCgkqIGlmY3Z0LmM6IExpa2V3aXNlLgoJKiBsaWJnY2MyLmg6IExpa2V3aXNlLgoJKiBsb29wLmM6IExpa2V3aXNlLgoJKiBwcmVkaWN0Lmg6IExpa2V3aXNlLgoJKiB1bndpbmQtbGlidW53aW5kLmM6IExpa2V3aXNlLgoJKiB2YXJhc20uYzogTGlrZXdpc2UuCgoyMDAzLTEyLTIxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChtbjEwMzAwX2VuY29kZV9zZWN0aW9uX2luZm8pOiBGaXgKCWEgd2FybmluZy4KCjIwMDMtMTItMjEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYXJtL2FybS5jOiBDb252ZXJ0IHRvIElTTy1DLgoJKiBjb25maWcvYXZyL2F2ci5oOiBMaWtld2lzZS4KCSogY29uZmlnL2ZyMzAvZnIzMC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2lwMmsvaXAyay5jOiBMaWtld2lzZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jOiBMaWtld2lzZS4KCjIwMDMtMTItMjAgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdjYy5nbnUub3JnPgoJICAgIE1hdHQgVGhvbWFzICA8bWF0dEAzYW0tc29mdHdhcmUuY29tPgoKCVBSIHRhcmdldC8xMjc0OQoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHByaW50X29wZXJhbmQpOiBQcmludCBvbmx5IHRoZSBmaXJzdAoJOCBjaGFyYWN0ZXJzIG9mIHRoZSBmbG9hdCBpbiBoZXguCgoyMDAzLTEyLTIwICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEuaCAoVFJBTVBPTElORV9URU1QTEFURSk6IFNob3J0ZW4gc2VxdWVuY2Ugd2hlbiBnZW5lcmF0aW5nIFBBCgkyLjAgY29kZS4KCShUUkFNUE9MSU5FX0NPREVfU0laRSwgTUlOX0NBQ0hFTElORV9TSVpFKTogTmV3IGRlZmluZXMuCgkoSU5JVElBTElaRV9UUkFNUE9MSU5FKTogUmV3b3JrIHRvIHBhc3MgbGluZSBsZW5ndGgsIGFuZCBhbGlnbmVkIHN0YXJ0CglhbmQgZW5kIGFkZHJlc3NlcyB0byBJIGFuZCBEIGNhY2hlIGluc3RydWN0aW9uIHBhdHRlcm5zLgoJKiBwYS5tZCAoYW5kZGkzLCBpb3JkaTMpOiBDaGFuZ2UgcHJlZGljYXRlcyBvZiBvcGVyYW5kcyAxIGFuZCAyIHRvCglhbmRfb3BlcmFuZCBhbmQgaW9yX29wZXJhbmQsIHJlc3BlY3RpdmVseS4gIFdoZW4gZ2VuZXJhdGluZyA2NC1iaXQKCWNvZGUsIG9ubHkgb25lIG9wZXJhbmQgbmVlZHMgdG8gYmUgYSByZWdpc3RlciBvcGVyYW5kLgoJKHhvcmRpMyk6IENoYW5nZSBwcmVkaWNhdGVzIG9mIG9wZXJhbmRzIDEgYW5kIDIgdG8gcmVnaXN0ZXJfb3BlcmFuZC4KCShvbmVfY21wbGRpMik6IENoYW5nZSBwcmVkaWNhdGUgb2Ygb3BlcmFuZCAxIHRvIHJlZ2lzdGVyX29wZXJhbmQuCgkoZGNhY2hlZmx1c2gsIGljYWNoZWZsdXNoKTogUmV2aXNlIHRvIGZsdXNoIGFuIGFyYml0cmFyeSBudW1iZXIgb2YKCWNhY2hlIGxpbmVzLgoKMjAwMy0xMi0yMCAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCVBSIG9wdGltaXphdGlvbi8xMzQzMCwgUFIgb3B0aW1pemF0aW9uLzEyMzIyCgkqIGJiLXJlb3JkZXIuYyAoY29weV9iYl9wKTogRG8gbm90IGFsbG93IGJsb2NrIHdpdGggbWFueSBzdWNjZXNzb3JzIHRvCgliZSBjb3BpZWQuCgkoZmluZF90cmFjZXNfMV9yb3VuZCk6IFN1cnJvdW5kIGNoZWNrIGZvciBmYWtlIGVkZ2VzIGJ5CgkjaWZkZWYgRU5BQkxFX0NIRUNLSU5HICNlbmRpZi4KCjIwMDMtMTItMjAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3RoZXIvNzk1NgoJKiBnZW5tdWx0aWxpYjogTmV3IHZhcmlhYmxlIGRpc2FibGVfbXVsdGlsaWIuICBTZXQgaXQgdG8gJ3llcycKCWlmIGVuYWJsZV9tdWx0aWxpYiB3YXMgc2V0IHRvICdubycuICBFbWl0IERJU0FCTEVfTVVMVElMSUIKCWlmIGRpc2FibGVfbXVsdGlsaWIgd2FzIHNldCB0byAneWVzJy4KCSogZ2NjLmM6IEluY2x1ZGUgbXVsdGlsaWIuaCBiZWZvcmUgdG0uaC4KCSogY29uZmlnL3NwYXJjL3NvbDItYmkuaCAoTElOS19BUkNIX1NQRUMpOiBFbWl0IGFuIGVycm9yCgltZXNzYWdlIGZvciBtdWx0aWFyY2ggb3B0aW9ucyBpZiBESVNBQkxFX01VTFRJTElCIGlzIHNldC4KCSogY29uZmlnL3NwYXJjL3NvbDItZ2xkLWJpLmggKExJTktfQVJDSF9TUEVDKTogTGlrZXdpc2UuCgoyMDAzLTEyLTIwICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIGMvMTIwODUKCSogYy10eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbCk6IElzc3VlIGEgd2FybmluZyBpZiBhCglmdW5jdGlvbiBpcyBjYWxsZWQgdGhyb3VnaCBhbiBpbmNvbXBhdGlibGUgcHJvdG90eXBlIGFuZAoJcmVwbGFjZSB0aGUgY2FsbCBieSBhIHRyYXAgaW4gdGhpcyBjYXNlLgoKMjAwMy0xMi0xOSAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogaW5zdGFsbC50ZXhpIChpYTY0LSotbGludXgpOiBEb2N1bWVudCBtaW5pbXVtIGxpYnVud2luZCB2ZXJzaW9uCgludW1iZXIuCgoyMDAzLTEyLTE5ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCgkqIGxhbmdob29rcy5jIChsaGRfcHJpbnRfZXJyb3JfZnVuY3Rpb24pOiAgRml4IGZvciBQUiBjLzEzMTEwLgoJRG9uJ3QgZG8gcHBfbmV3bGluZTsgaXQgY2F1c2VzIGFuIGV4dHJhIGJsYW5rIGxpbmUuCgkqIHByZXR0eS1wcmludC5jIChwcF9iYXNlX2ZsdXNoKTogIENsZWFyIHBwX25lZWRzX25ld2xpbmUuCgoyMDAzLTEyLTE5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHRyZWUuYyAoZ2V0X3Vud2lkZW5lZCk6IERlY2lkZSB3aGV0aGVyIHRvIG5hcnJvdyBhIGJpdGZpZWxkCglyZWZlcmVuY2UgYmFzZWQgb24gVFlQRV9TSVpFLCBub3QgVFlQRV9QUkVDSVNJT04uCgoJKiBzdG10LmMgKHBhcnNlX291dHB1dF9jb25zdHJhaW50KTogV2FybiBhYm91dCBpbi1vdXQgY29uc3RyYWludAoJdGhhdCBkb2Vzbid0IGFsbG93IGEgcmVnaXN0ZXIuCgkocGFyc2VfaW5wdXRfY29uc3RyYWludCk6IFdhcm4gYWJvdXQgbWF0Y2hpbmcgY29uc3RyYWludCB0aGF0Cglkb2Vzbid0IGFsbG93IGEgcmVnaXN0ZXIuCgoyMDAzLTEyLTE5ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBmbG93LmMgKG1hcmtfc2V0X3JlZ3MsIGNhc2UgUEFSQUxMRUwpOiBTY2FuIGxvb3AgZm9yd2FyZHMuCglBZGQgY2FzZSBmb3IgQVNNX09QRVJBTkRTLgoJKiBnbG9iYWwuYyAoZ2xvYmFsX2FsbG9jKTogU2V0IHJlZ3NfZXZlcl9saXZlIGZvciByZWdzX2FzbV9jbG9iYmVyZWQKCXJlZ2lzdGVycy4KCjIwMDMtMTItMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBleHByLmMgKGNoZWNrX21heF9pbnRlZ2VyX2NvbXB1dGF0aW9uX21vZGUpOiBSZW1vdmUuCgkqIGRvanVtcC5jIChkb19qdW1wKTogRG9uJ3QgdXNlIE1BWF9JTlRFR0VSX0NPTVBVVEFUSU9OX01PREUuCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IExpa2V3aXNlLgoJKiBzeXN0ZW0uaCAoTUFYX0lOVEVHRVJfQ09NUFVUQVRJT05fTU9ERSk6IFBvaXNvbi4KCSogZG9jL3RtLnRleGkgKE1BWF9JTlRFR0VSX0NPTVBVVEFUSU9OX01PREUpOiBSZW1vdmUuCgoyMDAzLTEyLTE5ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBjb25maWd1cmUuaW46IERlbGV0ZSBsaWJ1bndpbmRfaGFzX2VoX3N1cHBvcnQgdGVzdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuZ2NjIChpYTY0Ki0qLWxpbnV4Kik6IERlbGV0ZSByZWZlcmVuY2UgdG8gdC1saWJ1bndpbmQtbm8tZWgKCWFuZCBsaWJ1bndpbmRfaGFzX2VoX3N1cHBvcnQgY2hlY2suCgkqIGNvbmZpZy90LWxpYnVud2luZC1uby1laDogRGVsZXRlLgoKMjAwMy0xMi0xOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLWZvcm1hdC5jIChwcmludF9jaGFyX3RhYmxlKTogQWxsb3cgJ0knIGZsYWcgb24gZmxvYXRpbmcgcG9pbnQKCWRlY2ltYWwgZm9ybWF0cy4KCjIwMDMtMTItMTkgIFN0dWFydCBIYXN0aW5ncyAgPHN0dWFydEBhcHBsZS5jb20+CgoJKiBnY2MvY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9jYWxsLCB4ODZfb3V0cHV0X21pX3RodW5rKToKCVRyaXZpYWwgZml4ZXMgZm9yIGkzODYuYyBvbiBEYXJ3aW4veDg2LgoKMjAwMy0xMi0xOSAgRmFyaWJvcnogSmFoYW5pYW4gPGZqYWhhbmlhbkBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChsZWdpdGltYXRlX2xvX3N1bV9hZGRyZXNzX3ApOiBBZGQgY29kZSB0bwoJcmVjb2duaXplIG1hY2hvLXN0eWxlIGxvX3N1bSBhZHJyZXNzIHBhdHRlcm5zLgoKMjAwMy0xMi0xOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGR3YXJmb3V0LmM6IFJlbW92ZSB1c2VzIG9mICJyZWdpc3RlciIgc3BlY2lmaWVyIGluCglkZWNsYXJhdGlvbnMgb2YgYXJndW1lbnRzIGFuZCBsb2NhbCB2YXJpYWJsZXMuCgkqIGdlbnN1cHBvcnQuYzogTGlrZXdpc2UuCgkqIGxvY2FsLWFsbG9jLmM6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jOiBMaWtld2lzZS4KCjIwMDMtMTItMTkgIEtlbGxleSBDb29rICA8a2VsbGV5Y29va0B3aWRlb3Blbndlc3QuY29tPgoKCSogY29uZmlnLmd1ZXNzOiBSZW1vdmUuCgoyMDAzLTEyLTE5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L3Vud2luZC1pYTY0LmMgKGlhNjRfY29weV9yYnMpOiBOZXcgZnVuY3Rpb24uCgkodW53X2FjY2Vzc19ncik6IE9ubHkgY2FsbCBpYTY0X3JzZV9ybmF0X2FkZHIgaWYgYWRkciBpcyBhYm92ZQoJcmVnc3RrX3RvcC4KCSh1d19mcmFtZV9zdGF0ZV9mb3IpOiBIYW5kbGUgbG9jYXRpb25zIGluc2lkZSBidW5kbGVzLgoJKHV3X2luaXRfY29udGV4dF8xKTogSW5pdGlhbGl6ZSBjb250ZXh0LT5ybmF0LgoJU2V0IGNvbnRleHQtPnJlZ3N0a190b3AgdG8gbG93ZXN0IHJicyBhZGRyZXNzIHdoaWNoIGhhcyBuYXQgY29sbGVjdGlvbgoJaW4gY29udGV4dC0+cm5hdC4KCSh1d19pbnN0YWxsX2NvbnRleHQpOiBGaXggcm5hdCByZXN0b3JpbmcuCglSZXN0b3JlIGFyLnJzYyB0byBwcmV2aW91cyBzdGF0ZS4KCSogY29uZmlnL2lhNjQvbGludXguaCAoTURfRkFMTEJBQ0tfRlJBTUVfU1RBVEVfRk9SLAoJTURfSEFORExFX1VOV0FCSSk6IEhhbmRsZSB1bndpbmRpbmcgdGhyb3VnaCBTQV9PTlNUQUNLIGZyYW1lcy4KCjIwMDMtMTItMTkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8xMzIzOQoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9leHBlY3RfanVtcCk6IFVwZGF0ZQoJVFJFRV9WQUxVRSAoYXJnbGlzdCkgaWYgdW5zYXZlX2V4cHJfbm93IGxhbmdob29rCgljcmVhdGVkIGEgbmV3IHRyZWUuCgoyMDAzLTEyLTE5ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jICh0aHVtYl9iYXNlX3JlZ2lzdGVyX3J0eF9wKTogVXNlIHJlZ25vIGluIGNvbXBhcmlzb24gYWdhaW5zdAoJRklSU1RfUFNFVURPX1JFR0lTVEVSLgoKMjAwMy0xMi0xOCAgSGFydG11dCBQZW5uZXIgIDxocGVubmVyQGRlLmlibS5jb20+CgoJKiBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoVVNFX0FMVElWRUNfRk9SX0FSR19QKTogRG9uJ3QgY2hlY2sKCWZvciBTVlI0IEFCSS4KCjIwMDMtMTItMTggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9haXguaCAoT1NfTUlTU0lOR19QT1dFUlBDNjQpOiBEZWZpbmUuCgkoT1NfTUlTU0lOR19BTFRJVkVDKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChBU01fU1BFQyk6IEJlIGdlbmVyb3VzIGFib3V0IHN1cHBseWluZwoJLWZvcmNlX2NwdXN1YnR5cGVfQUxMLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IFJlYXJyYW5nZQoJQ1BVIGluZm9ybWF0aW9uIHRhYmxlOyBub3cgYWx3YXlzIHNldCBhbGwgQ1BVLXNwZWNpZmljIHZhbHVlcy4KCUFsc28sIHVzZSBBbHRpdmVjIGFuZCBwb3dlcnBjNjQgd2hlbiBjaGlwIGFuZCBPUyBzdXBwb3J0cyB0aGVtLgoKMjAwMy0xMi0xOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChkYXJ3aW5fbWFjaG9fZHlsZGgpOiBOZXcuCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoyMDAzLTEyLTE4ICBEYXJhIEhhemVnaGkgIDxkaGF6ZWdoaUB5YWhvby5jb20+CgoJKiB2ZXJzaW9uLmMgKHZlcnNpb25fc3RyaW5nKTogUmVudW1iZXIgYXMgMy40LjAKCSogZG9jL2luY2x1ZGUvZ2NjLWNvbW1vbi50ZXhpOiBMaWtld2lzZQoKMjAwMy0xMi0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGdlbnJlY29nLmMgKHByaW50X2hvc3Rfd2lkZV9pbnQpOiBOZXcuCgkod3JpdGVfc3dpdGNoLCB3cml0ZV9jb25kKTogVXNlIGl0LgoKMjAwMy0xMi0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtZGVjbC5jIChjaGVja19iaXRmaWVsZF90eXBlX2FuZF93aWR0aCk6IFJlbW92ZSBlbnVtIHNwZWNpYWwKCWNhc2Ugc3VwcHJlc3Npb24gb2YgcGVkd2Fybi4KCSogc3lzdGVtLmggKEVOVU1fQklURklFTEQpOiBVc2UgX19leHRlbnNpb25fXy4KCShDSEFSX0JJVEZJRUxEKTogTGlrZXdpc2UuCgoyMDAzLTEyLTE4ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgkgICAgTWFyayBEZXR0aW5nZXIgIDxkZXR0aW5nZUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoVU5TUEVDX1NSU1QpOiBOZXcgY29uc3RhbnQuCgkoInN0cmxlbmRpIiwgInN0cmxlbnNpIik6IE5ldyBleHBhbmRlcnMuCgkoIipzdHJsZW5kaSIsICIqc3RybGVuc2kiKTogTmV3IGluc25zLgoKMjAwMy0xMi0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9zb2wyLmggKExJTktfQVJDSDMyX1NQRUMpOiBEZWZpbmUgaW4gdGVybXMgb2YgLi4uCgkoTElOS19BUkNIMzJfU1BFQ19CQVNFKTogLi4uIHRoaXMgbmV3IG1hY3JvLgoJKiBjb25maWcvc3BhcmMvc29sMi1iaS5oIChMSU5LX0FSQ0g2NF9TUEVDKTogRGVmaW5lIGluIHRlcm1zIG9mCgkuLi4KCShMSU5LX0FSQ0g2NF9TUEVDX0JBU0UpOiAuLi4gdGhpcyBuZXcgbWFjcm8uCgkqIGNvbmZpZy9zcGFyYy9zb2wyLWdsZC1iaS5oIChMSU5LX0FSQ0gzMl9TUEVDKTogTmV3IG1hY3JvLgoJKExJTktfQVJDSDY0X1NQRUMpOiBMaWtld2lzZS4KCjIwMDMtMTItMTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMTMyMzQKCSogdHJlZS1kdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBIYW5kbGUgJ3InIGFuZCAncycgY29kZQoJY2xhc3Nlcy4KCjIwMDMtMTItMTggIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluICh0cmFjZXIubywgYmItcmVvcmRlci5vKTogRGVwZW5kIG9uIHRpbWV2YXIuaAoJKiB0b3BsZXYuYyAocmVzdF9vZl9oYW5kbGVfcmVvcmRlcl9ibG9ja3MsIHJlc3Rfb2ZfaGFuZGxlX3RyYWNlcik6CglEb24ndCBwdXNoIGFuZCBwb3AgVFZfUkVPUkRFUl9CTE9DS1MgdGltZXZhcnMsIGRvIGl0Li4uCgkqIGJiLXJlb3JkZXIuYyAocmVvcmRlcl9iYXNpY19ibG9ja3MpOiAuLi5oZXJlLCBhbmQuLi4KCSogdHJhY2VyLmMgKHRyYWNlcik6IGhlcmUuCgoyMDAzLTEyLTE4ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBsb29wLmMgKG1vdmVfbW92YWJsZXMpOiBIYW5kbGUgY29tYmluYXRpb24gb2YgbS0+Y29uc2VjLAoJbS0+bW92ZV9pbnNuX2ZpcnN0LCBhbmQgbS0+aW5zZXJ0X3RlbXAgYWxsIG5vbnplcm8gY29ycmVjdGx5LgoKMjAwMy0xMi0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNhbGxzLmMgKGxvYWRfcmVnaXN0ZXJfcGFyYW1ldGVycyk6IERvbid0IHVzZQoJTE9BRF9BUkdTX1JFVkVSU0VELgoJKiBzeXN0ZW0uaCAoTE9BRF9BUkdTX1JFVkVSU0VEKTogUG9pc29uLgoJKiBkb2MvdG0udGV4aSAoTE9BRF9BUkdTX1JFVkVSU0VEKTogUmVtb3ZlLgoKMjAwMy0xMi0xNyAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBlbWl0LXJ0bC5jIChzZXRfbmV3X2ZpcnN0X2FuZF9sYXN0X2xhYmVsX251bSk6ICBSZW1vdmUgZnVuY3Rpb24uCgkqIHJ0bC5oIChzZXRfbmV3X2ZpcnN0X2FuZF9sYXN0X2xhYmVsX251bSk6ICBSZW1vdmUgZGVjbGFyYXRpb24uCgoyMDAzLTEyLTE3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9pZmN2dF9tb2RpZnlfaW5zbik6IERvbid0IGxlYXZlIGFsb25lCglzY3JhdGNoIGluc25zIG9mIHRoZSB0aGVuIGJyYW5jaCB0aGF0IGNsb2JiZXIgcmVncyBuZWVkZWQgYnkgdGhlCgllbHNlIGJyYW5jaC4KCjIwMDMtMTItMTcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IFVwZGF0ZSBjb21tZW50cy4KCSogc3lzdGVtLmggKFBSRVRFTkRfT1VUR09JTkdfVkFSQVJHU19OQU1FRCk6IFBvaXNvbi4KCSogdGFyZ2hvb2tzLmM6IERvIG5vdCByZWZlciB0byBQUkVURU5EX09VVEdPSU5HX1ZBUkFSR1NfTkFNRUQuCgoyMDAzLTEyLTE3ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgkgICAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZ2NzZS5vKTogQWRkICQoVFJFRV9IKSB0byBkZXBlbmRlbmNpZXMuCgkqIGdjc2UuYzogSW5jbHVkZSB0cmVlLmguCgkoaW1wbGljaXRfc2V0X2NvbmRfcCk6IE5ldy4KCShmaW5kX2ltcGxpY2l0X3NldHMpOiBDYWxsIGl0LgoKMjAwMy0xMi0xNyAgU2FudGlhZ28gVmlsYSAgPHNhbnZpbGFAdW5leC5lcz4KCgkqIGNvbmZpZy9rZnJlZWJzZGdudS5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogUmVuYW1lIGZyb20KCVRBUkVUX09TX0NQUF9CVUlMVElOUy4KCjIwMDMtMTItMTYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBlbWl0LXJ0bC5jOiBGaXggc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3MuCgoyMDAzLTEyLTE3ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIHByZWRpY3QuYyAoc3RydWN0IGJsb2NrX2luZm9fZGVmLCBzdHJ1Y3QgZWRnZV9pbmZvX2RlZik6IENoYW5nZQoJYml0LWZpZWxkcyBvZiB3aWR0aCAxIHRvIHVuc2lnbmVkIGludC4KCjIwMDMtMTItMTYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCVBSIDEyNDgwCgkqIGMtcGNoLmMgKHBjaF9pbml0KTogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4gcHJlY29tcGlsZWQKCWhlYWRlciBjYW4ndCBiZSB3cml0dGVuLgoKCVBSIDEyNjA2CgkqIGMtcGNoLmMgKHBjaF9pbml0KTogTWFrZSBhIFBDSCBmaWxlIGFwcGVhciBpbnZhbGlkIHdoaWxlIGl0J3MKCWJlaW5nIHdyaXR0ZW4uCgkoY19jb21tb25fd3JpdGVfcGNoKTogTWFrZSBpdCB2YWxpZCBvbmNlIGl0J3MgZG9uZS4KCjIwMDMtMTItMTcgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCglQUiB0YXJnZXQvMTE5OTIKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIipjbXBtZW1fbG9uZ182NCIpOiBVc2UgQ0xDTEUgaW5zdHJ1Y3Rpb24KCWluc3RlYWQgb2YgQ0xDTC4KCSgiKmNtcG1lbV9sb25nXzMxIik6IExpa2V3aXNlLgoKMjAwMy0xMi0xNyAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmM6IEFkZCBtb3JlIGNvbW1lbnRzIGFib3V0IGluc24gYnVuZGxpbmcuCgoyMDAzLTEyLTE3ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTA1OTIKCSogY2FsbGVyLXNhdmUuYyAobWFya19yZWZlcmVuY2VkX3JlZ3MpOiBEb24ndCBzaG9ydC1jaXJjdWl0IGEgcmVnCglvciBzdWJyZWcgaW4gU0VUX0RFU1QgaWYgaXQgaXNuJ3QgYSBoYXJkIHJlZ2lzdGVyLgoKMjAwMy0xMi0xNyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29sbGVjdDIuYyAobWFpbik6IEFkZCAtZm5vLXByb2ZpbGUtYXJjcyAtZm5vLXRlc3QtY292ZXJhZ2UKCS1mbm8tYnJhbmNoLXByb2JhYmlsaXRpZXMgdG8gYXJndW1lbnRzIHdoZW4gY29tcGlsaW5nIGN0b3JzIGFuZAoJZHRvcnMuCgoyMDAzLTEyLTE3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NvbDIuaDogU2V0IFNVUFBPUlRTX0lOSVRfUFJJT1JJVFkgdG8gMC4KCSogY29uZmlnL3NwYXJjL3NvbDItZ2xkLmg6IFNldCBTVVBQT1JUU19JTklUX1BSSU9SSVRZIHRvIDEuCgoyMDAzLTEyLTE3ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jICh0aHVtYl9iYXNlX3JlZ2lzdGVyX3J0eF9wKTogRG9uJ3QgYWxsb3cgdmlydHVhbCByZWdpc3RlcnMKCWFzIGJhc2UgcmVnaXN0ZXJzIGZvciBzdWItd29yZCBvcGVyYXRpb25zLgoJKHRodW1iX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogU2ltcGxpZnkgUkVHK1JFRyB0ZXN0LgoKMjAwMy0xMi0xNyAgU2VnaGVyIEJvZXNzZW5rb29sICA8Ym9lc3NlbkBkZS5pYm0uY29tPgoKCSogb3B0cy5jICh3cmFwX2hlbHApOiBGaXggb3ZlcmZsb3cuCgoyMDAzLTEyLTE3ICBGcmVkIEZpc2ggIDxmbmZAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlIGNvZGUgdG8gZXhhbWluZSBsaW5rZXIgc2NyaXB0cyBhbmQgc2V0CglIQVZFX01JUFNfTElCR0xPU1NfU1RBUlRVUF9ESVJFQ1RJVkVTLgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCjIwMDMtMTItMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzEyMjE4CgkqIHZhcmFzbS5jIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogQWxsb3cgYSBjb252ZXJzaW9uIGZyb20KCWFuIGludGVncmFsIGNvbnN0YW50IHRvIGFuIE9GRlNFVF9UWVBFLgoKMjAwMy0xMi0xNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCglQUiB0YXJnZXQvMTEwMTIKCSogY29uZmlnL20zMnIvbTMyci5jIChnZW5fY29tcGFyZSk6IENhbGwgZ2VuX2FkZHNpMyBpbnN0ZWFkIG9mCglnZW5fY21wX25lX3NtYWxsX2NvbnN0X2luc24uCgkqIGNvbmZpZy9tMzJyL20zMnIubWQgKGNtcF9uZV9zbWFsbF9jb25zdF9pbnNuKTogUmVtb3ZlLgoKMjAwMy0xMi0xNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoJICAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCVBSIGMvMzM0NwoJKiBjLWRlY2wuYyAoZW51bV9kZWNsX2NvbnRleHQpOiBSZW1vdmUgQklURklFTEQuCgkoZ3Jva2RlY2xhcmF0b3IpOiBUYWtlIGJpdC1maWVsZCB3aWR0aCBhcyBhbiBpbnB1dC4KCVBlcmZvcm0gYml0LWZpZWxkIHdpZHRoIHZhbGlkYXRpb24gd2l0aAoJY2hlY2tfYml0ZmllbGRfdHlwZV9hbmRfd2lkdGggcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IKCWZpbmlzaF9zdHJ1Y3QuCgkoZ3Jva3R5cGVuYW1lLCBncm9rdHlwZW5hbWVfaW5fcGFybV9jb250ZXh0LCBzdGFydF9kZWNsLAoJcHVzaF9wYXJtX2RlY2wsIGdyb2tmaWVsZCwgc3RhcnRfZnVuY3Rpb24pOiBVcGRhdGUgY2FsbHMgdG8KCWdyb2tkZWNsYXJhdG9yLgoJKGNoZWNrX2JpdGZpZWxkX3R5cGVfYW5kX3dpZHRoKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9zdHJ1Y3QpOiBNb3ZlIGJpdC1maWVsZCB2YWxpZGF0aW9uIHRvIGdyb2tkZWNsYXJhdG9yCglhbmQgY2hlY2tfYml0ZmllbGRfdHlwZV9hbmRfd2lkdGguCgoyMDAzLTEyLTE2ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIGJvb3RzdHJhcC8xMzM4NgoJKiBjb25maWd1cmUuaW4gKGdjY19jdl9sZF9oaWRkZW4pOiBTZXQgdG8geWVzIG9uIGhwcGE2NCotKi1ocHV4KiB3aGVuCgl1c2luZyBIUCBuYXRpdmUgbGlua2VyLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAzLTEyLTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xMzI3NQoJKiBjLWNvbW1vbi5oIChlbnVtIHJpZCk6IEFkZCBSSURfT0ZGU0VUT0YuCgkqIGMtcGFyc2VyLmluIChyaWRfdG9feXkpOiBJZ25vcmUgUklEX09GRlNFVE9GLgoJKiBnaW5jbHVkZS9zdGRkZWYuaCAob2Zmc2V0b2YpOiBSZWltcGxlbWVudCBmb3IgQysrLCB1c2luZwoJX19vZmZzZXRvZl9fLgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IF9fb2Zmc2V0b2ZfXy4KCjIwMDMtMTItMTYgIFN0YW4gQ294ICA8c2NveEByZWRoYXQuY29tPgoKCSogY29uZmlnL2lxMjAwMC9pcTIwMDAuaDogRm9ybWF0dGluZy4KCShNQVhfSU5UX1RZUEVfU0laRSwgTUFYX0lOVF9UWVBFX1NJWkUsIENPTlNUX0NPU1RTLCBSVFhfQ09TVFMpCgkoQUREUkVTU19DT1NULCBBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMLCBBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMKQoJKElNUExJQ0lUX0ZJWF9FWFBSLCBFQVNZX0RJVl9FWFBSLCBTTE9XX1pFUk9fRVhURU5EKTogUmVtb3ZlCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmM6IEZvcm1hdHRpbmcuCgkoaXEyMDAwX3J0eF9jb3N0cyk6IE5ldy4KCjIwMDMtMTItMTYgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChhZGRzaTNfY2Fycnlpbl9zaGlmdCk6IEFkZCBtaXNzaW5nIHJlZ2lzdGVyIGNvbnN0cmFpbnRzLgoKMjAwMy0xMi0xNiAgTG9yZW4gSmFtZXMgUml0dGxlICA8bGpyaXR0bGVAYWNtLm9yZz4KCgkqIHRlc3RzdWl0ZS9nKysub2xkLWRlamEvZysrLmVoL2JhZGFsbG9jMS5DOiBUd2VhayB0bwoJcGFzcyB3aXRoIC1wdGhyZWFkIG9uIEZyZWVCU0Qgc3lzdGVtcy4KCjIwMDMtMTItMTYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19maWxlX2VuZCk6IE9ubHkgd3JpdGUgc3ltYm9scyB0aGF0IGhhdmUKCWJlZW4gcmVmZXJlbmNlZCBhdCBzb21lIHBvaW50LgoKMjAwMy0xMi0xNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jOiBJbmNsdWRlIGxhbmdob29rcy5oCgkobWlwc19idWlsZF9idWlsdGluX3ZhX2xpc3QpOiBVc2UgbGFuZ19ob29rcy50eXBlcy5tYWtlX3R5cGUuCgoyMDAzLTEyLTE2ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMzMxMwoJKiBjb21iaW5lLmMgKG1ha2VfZXh0cmFjdGlvbikgW1JFR106IERvIG5vdCB1c2UKCWdlbl9sb3dwYXJ0X2Zvcl9jb21iaW5lIHdoZW4gUE9TIGlzIG5vbi16ZXJvLgoKMjAwMy0xMi0xNiAgSGFydG11dCBQZW5uZXIgIDxocGVubmVyQGRlLmlibS5jb20+CgoJKiBhbHRpdmVjLmggKHZlY19jbXBsZSwgdmVjX2FsbF9udW1lcmljKTogRml4IHR5cG8uCgkqIHRlc3RzdWl0ZS9nY2MuZGcvYWx0aXZlYy0xMC5jOiBUZXN0IGZvciBhYm92ZS4KCjIwMDMtMTItMTUgIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoQ1BQRkxBR1MpOiBJbml0aWFsaXplIGZyb20gY29uZmlndXJlLgoKMjAwMy0xMi0xNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8xMzQwMAoJKiBpZmN2dC5jIChub2NlX3Byb2Nlc3NfaWZfYmxvY2spOiBEaXNhYmxlIHVuY29uZGl0aW9uYWwgd3JpdGUKCW9wdGltaXphdGlvbnMgaWYgd2UgY291bGQgaW50cm9kdWNlIGEgc3RvcmUgdG8gdHJhcHBpbmcgbWVtb3J5Cgl0aGF0IHdhc24ndCBwcmVzZW50IHByZXZpb3VzbHkuCgoyMDAzLTEyLTE1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogc3lzdGVtLmggKERFRkFVTFRfQ0FMTEVSX1NBVkVTKTogUG9pc29uLgoJKiB0b3BsZXYuYyAoZmxhZ19jYWxsZXJfc2F2ZXMpOiBBbHdheXMgaW5pdGlhbGl6ZSB3aXRoIDAuCgkqIGRvYy90bS50ZXhpIChERUZBVUxUX0NBTExFUl9TQVZFUyk6IFJlbW92ZS4KCjIwMDMtMTItMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBmbG93LmMgKEVYSVRfSUdOT1JFX1NUQUNLKTogTW92ZSB0byAuLi4KCSogZGVmYXVsdHMuaCAoRVhJVF9JR05PUkVfU1RBQ0spOiAuLi4gaGVyZS4KCSogZG9qdW1wLmMgKGNsZWFyX3BlbmRpbmdfc3RhY2tfYWRqdXN0KTogRG9uJ3QgdXNlICNpZmRlZgoJRVhJVF9JR05PUkVfU1RBQ0suCgkqIGZ1bmN0aW9uLmMgKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBMaWtld2lzZS4KCSogZ2xvYmFsLmMgKGdsb2JhbF9hbGxvYyk6IExpa2V3aXNlLgoJKiByYS5jIChpbml0X3JhKTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAoaW5pdF9lbGltX3RhYmxlKTogTGlrZXdpc2UuCgkqIHJlb3JnLmMgKGZpbGxfc2ltcGxlX2RlbGF5X3Nsb3RzKTogTGlrZXdpc2UuCgkqIHJlc291cmNlLmMgKGluaXRfcmVzb3VyY2VfaW5mbyk6IExpa2V3aXNlLgoJKiBkb2MvdG0udGV4aSAoRVhJVF9JR05PUkVfU1RBQ0spOiBEb2N1bWVudCB0aGF0IHRoZSBkZWZhdWx0CglpcyAwLgoKMjAwMy0xMi0xNSAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiByZWxvYWQuYyAocmVnX292ZXJsYXBfbWVudGlvbmVkX2Zvcl9yZWxvYWRfcCk6CglXaGVuIGxvb2tpbmcgYXQgYSBQTFVTIGluIFgsIGF2b2lkIHNwdXJpb3VzbHkgcmV0dXJuaW5nIG5vbnplcm8KCXdoZW4gSU4gaXMgYSBSRUcgb3IgYW5vdGhlciBzaW1wbGUgUExVUywgb3IgYSBNRU0gY29udGFpbmluZyBvbmUuCgoJKiBsb29wLmMgKGxvb3BfaW52YXJpYW50X3ApOiBBbWVuZCBjb21tZW50IGFib3V0IHdoZXJlIG5ldyByZWdpc3RlcnMKCW1pZ2h0IGNvbWUgZnJvbS4KCjIwMDMtMTItMTUgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBSZW1vdmUKCWhhbmRsaW5nIG9mIG9ic29sZXRlIGxhbmd1YWdlIENISUxMLgoKMjAwMy0xMi0xNSAgV2FsZGVrIEhlYmlzY2ggIDxoZWJpc2NoQG1hdGgudW5pLndyb2MucGw+CgoJKiB0cmVlLmMgKGluaXRpYWxpemVyX3plcm9wKTogQWRkIHRlc3QgZm9yIGVtcHR5IHNldC4KCSogaW50ZWdyYXRlLmMgKGZ1bmN0aW9uX2Nhbm5vdF9pbmxpbmVfcCk6IEZvcmJpZCBpbmxpbmluZwoJZnVuY3Rpb25zIGNhbGxpbmcgYGxvbmdqbXAnLgoKMjAwMy0xMi0xNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTE3NzMKCSogZG9jL2djb3YudGV4aSAoR2NvdiBhbmQgT3B0aW1pemF0aW9uKTogRG9jdW1lbnQgaW5saW5lIGZ1bmN0aW9uCgliZWhhdmlvdXIuIEZpeCBzb21lIGZpbGUgc3VmZml4ZXMuCgoyMDAzLTEyLTE0ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChfX2FtZDY0LCBfX2FtZDY0X18pOiBSZW1vdmUgZHVwbGljYXRlcy4KCjIwMDMtMTItMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChjX3BhcnNlX2Vycm9yKTogRGVjbGFyZSBpdC4KCSogYy1jb21tb24uYyAoY19wYXJzZV9lcnJvcik6IE5ldyBmdW5jdGlvbi4KCSogYy1wYXJzZS55ICh5eWVycm9yKTogVXNlIGl0LgoKMjAwMy0xMi0xNCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiB0YXJnZXQvMTMwNTQKCSogcGEtcHJvdG9zLmggKGluZGV4ZWRfbWVtb3J5X29wZXJhbmQsIGJvcnhfcmVnX29wZXJhbmQsCgltb3ZlX2Rlc3Rfb3BlcmFuZCwgbW92ZV9zcmNfb3BlcmFuZCk6IE5ldyBwcm90eXBlcy4KCShiYXNlcmVnX29wZXJhbmQsIG1vdmVfb3BlcmFuZCwgcmVnX29yX25vbnN5bWJfbWVtX29wZXJhbmQpOiBEZWxldGVkLgoJKiBwYS5jIChjb3B5X3JlZ19wb2ludGVyLCBpbmRleGVkX21lbW9yeV9vcGVyYW5kLCBtb3ZlX2Rlc3Rfb3BlcmFuZCwKCW1vdmVfc3JjX29wZXJhbmQpOiBOZXcgZnVuY3Rpb25zLgoJKGJhc2VyZWdfb3BlcmFuZCwgcmVnX29yX25vbnN5bWJfbWVtX29wZXJhbmQsIG1vdmVfb3BlcmFuZCk6IERlbGV0ZS4KCShyZWdfb3JfMF9vcl9ub25zeW1iX21lbV9vcGVyYW5kKTogUmV0dXJuIGZhbHNlIGZvciB1bnNjYWxlZCBpbmRleGVkCglhZGRyZXNzIHVudGlsIGNzZSBpcyBub3QgZXhwZWN0ZWQgb24gdGFyZ2V0cyB3aXRoIG5vbi1lcXVpdmFsZW50CglzcGFjZSByZWdpc3RlcnMuCgkoaHBwYV9sZWdpdGltaXplX2FkZHJlc3MpOiBDYW5vbmljYWxpemUgdW5zY2FsZWQgaW5kZXhlZCBhZGRyZXNzZXMKCW9uIHRhcmdldHMgbm9uLWVxdWl2YWxlbnQgc3BhY2UgcmVnaXN0ZXJzLgoJKGVtaXRfbW92ZV9zZXF1ZW5jZSk6IEJyZWFrIG91dCBpbmRleGVkIGFkZHJlc3NlcyBmcm9tIGRlc3RpbmF0aW9uCglvcGVyYW5kLiAgU2ltaWxhcmx5LCBicmVhayBvdXQgdW5zY2FsZWQgaW5kZXhlZCBhZGRyZXNzZXMgZnJvbQoJc291cmNlIG9wZXJhbmQgb24gdGFyZ2V0cyB3aXRoIG5vbi1lcXVpdmFsZW50IHNwYWNlIHJlZ2lzdGVycy4gIEZpeAoJUkVHX1BPSU5URVIgZmxhZyB3aGVuIHBvc3NpYmxlLiAgTWFyayByZWdpc3RlciBwb2ludGVyIHdoZW4gY3JlYXRpbmcKCW5ldyBwb2ludGVycy4KCShwcmludF9vcGVyYW5kKTogSGFuZGxlIHVuc2NhbGVkIGluZGV4IGFkZHJlc3Nlcy4KCSogcGEuaCAoSVNfSU5ERVhfQUREUl9QLCBJU19MT19TVU1fRExUX0FERFJfUCk6IE5ldyBtYWNybyBzdWJyb3V0aW5lcwoJZm9yIEVYVFJBX0NPTlNUUkFJTlQuCgkoRVhUUkFfQ09OU1RSQUlOVCk6IFJld29yayB0byBtYWtlIG1vcmUgcmVhZGFibGUuCgkoTU9ERV9PS19GT1JfU0NBTEVEX0lOREVYSU5HX1AsIE1PREVfT0tfRk9SX1VOU0NBTEVEX0lOREVYSU5HX1ApOiBOZXcKCXN1YnJvdXRpbmVzIGZvciBHT19JRl9MRUdJVElNQVRFX0FERFJFU1MuCgkoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogUmV3b3JrIHVzaW5nIG5ldyBzdWJyb3V0aW5lcy4gIEFsbG93IHNjYWxlZAoJYW5kIHVuc2NhbGVkIGFkZHJlc3Nlcy4gIENhbm9uaWNhbGl6ZSB1bnNjYWxlZCBpbmRleGVkIGFkZHJlc3NlcyBvbgoJdGFyZ2V0cyB3aXRoIG5vbi1lcXVpdmFsZW50IHNwYWNlIHJlZ2lzdGVycy4gIERvY3VtZW50IGlzc3VlcyBpbgoJaGFuZGxpbmcgaW5kZXhlZCBhZGRyZXNzIG1vZGVzIG9uIFBBLVJJU0MuCgkoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlIGZvciBuZXcgYW5kIGRlbGV0ZWQgcHJlZGljYXRlcy4KCSogcGEubWQgKG1vdmVfZGVzdF9vcGVyYW5kLCBtb3ZlX3NyY19vcGVyYW5kLCBpbmRleGVkX21lbW9yeV9vcGVyYW5kKToKCVVzZSBuZXcgcHJlZGljYXRlcyBpbiBtb3ZlIHBhdHRlcm5zLgoJQWRkIHBlZXBob2xlMiBwYXR0ZXJucyB0byBvcHRpbWl6ZSBmbG9hdGluZyBwb2ludCBzdG9yZXMuICBGaXgKCWNvbnN0cmFpbiBwcmVmZXJlbmNpbmcgaW4gbW92ZSBwYXR0ZXJucy4gIERlbGV0ZSBwYXR0ZXJucyBmb3IgaGFuZGxpbmcKCXVuc2NhbGVkIGluZGV4ZWQgbWVtb3J5IGxvYWRzLiAgQWRkIG1pc3NpbmcgbG9hZCBhbmQgc3RvcmUgd2l0aAoJYmFzZS1yZWdpc3RlciBtb2RpZmljYXRpb24gcGF0dGVybnMuICBDb3JyZWN0IFNGbW9kZSBmbG9hdGluZyBwb2ludAoJc3RvcmUgcGF0dGVybi4gIEFkZCBtaXNzaW5nIHplcm8gZXh0ZW5zaW9uIGxvYWRzLgoKMjAwMy0xMi0xMyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogZ2djLXpvbmUuYyAoc3RydWN0IGFsbG9jX3pvbmUpOiBEb24ndCBwcmUtZGVjbGFyZSwgaXQgYWxyZWFkeQoJY29tZXMgaW4gd2l0aCBnZ2MuaC4gIEFkZCBhIG5ldyBib29sIGZpZWxkIGBkZWFkJy4KCShkZXN0cm95X2dnY196b25lKTogRG9uJ3QgZGVzdHJveSBhIHpvbmUgYXQgb25jZS4gIEluc3RlYWQsIG9ubHkKCXNldCB0aGUgYGRlYWQnIGZsYWcgZm9yIHRoZSBkZWFkIHpvbmUuICBXcmFwIGEgc2FuaXR5IGNoZWNrIGluCglFTkFCTEVfQ0hFQ0tJTkcuCgkoZ2djX2NvbGxlY3RfMSk6IEFsd2F5cyBtYXJrIGFuZCBzd2VlcCBpZiBhIHpvbmUgaGFzIHRoZSBgZGVhZCcKCWZsYWcgc2V0LgoJKGdnY19jb2xsZWN0KTogRnJlZSBkZWFkIHpvbmVzIGFmdGVyIGNvbGxlY3RpbmcuCgoyMDAzLTEyLTEzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjb3ZlcmFnZS5jIChnZXRfY292ZXJhZ2VfY291bnRzKTogIFVzZSBpbmZvcm0gaW5zdGVhZCBvZiB3YXJuaW5nCglhYm91dCBtaXNzaW5nIHByb2ZpbGUuCgoyMDAzLTEyLTEyICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAob3B0cy5vLCBleHBsb3cubyk6IERlcGVuZCBvbiBsYW5naG9va3MuaAoKMjAwMy0xMi0xMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcuZ2NjIDxpWzM0NTY3XTg2LSotZGFyd2luKj46IERvbid0IHVzZSBmaXhwcm90by4KCTxwb3dlcnBjLSotZGFyd2luKj46IExpa2V3aXNlLgoKMjAwMy0xMi0xMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9saW51eC5oIChJQTY0X0dBVEVfQVJFQV9FTkQpOiBJbmNyZWFzZSBieSA2NEsuCgkoTURfRkFMTEJBQ0tfRlJBTUVfU1RBVEVfRk9SKTogU2V0IGZwc3JfbG9jLCBicl9sb2NbNl0gYW5kCglicl9sb2NbN10uICBVcGRhdGUgY29tbWVudC4KCShNRF9IQU5ETEVfVU5XQUJJKTogRGVmaW5lLgoJKiBjb25maWcvaWE2NC91bndpbmQtaWE2NC5jIChzdHJ1Y3QgdW53X3N0YXRlX3JlY29yZCk6IEFkZAoJdW53YWJpIGZpZWxkLgoJKHN0cnVjdCBfVW53aW5kX0NvbnRleHQpOiBJbmNyZWFzZSBicl9sb2MgYXJyYXkgc2l6ZSB0byA4IGVudHJpZXMuCgkoZGVzY19hYmkpOiBTZXQgdW53YWJpLgoJKHV3X3VwZGF0ZV9yZWdfYWRkcmVzcyk6IEFsbG93IGJyIHVwIHRvIDcuCgkodXdfdXBkYXRlX2NvbnRleHQpOiBJbnZva2UgTURfSEFORExFX1VOV0FCSSBpZiBkZWZpbmVkLgoJKHV3X2luc3RhbGxfY29udGV4dCk6IExvYWQgYjEuLmI1IGZyb20gY29ycmVjdCBsb2NhdGlvbnMuCglGaXggaW5zbiBsb2FkaW5nIGFyLmZwc3IuCgkqIGRvYy90bS50ZXhpOiBEb2N1bWVudCBNRF9IQU5ETEVfVU5XQUJJLgoKMjAwMy0xMi0xMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzEzMDM3CgkqIGxvb3AuYyAodXBkYXRlX2dpdl9kZXJpdmUpOiBJZ25vcmUgcmVkdW5kYW50IHNldHMgb2YgYSBiaXYgd2hlbgoJY2FsY3VsYXRpbmcgaG93IHRvIGRlcml2ZSBhIGdpdiBmcm9tIGEgYml2LgoKMjAwMy0xMi0xMiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCVBSIHByZXByb2Nlc3Nvci8xMjkzNSBwcmVwcm9jZXNzb3IvMTI5NTIgcHJlcHJvY2Vzc29yLzEzMDQ2CgkqIGNwcGxpYi5jIChwcmVwYXJlX2RpcmVjdGl2ZV90cmFkKTogQ2xlYXIgc2tpcHBpbmcgb25seSBpbgoJI2lmIGFuZCAjZWxpZiBkaXJlY3RpdmVzLgoJKGRvX3VuZGVmKTogQ2FsbCB0aGUgaGFuZGxlciBldmVuIGlmIHRoZSBpZGVudGlmaWVyIGlzIG5vdCBhIG1hY3JvLgoJKiBjcHB0cmFkLmMgKHNjYW5fcGFyYW1ldGVycyk6IEVtaXQgYW4gZXJyb3IgbWVzc2FnZS4KCShfY3BwX2NyZWF0ZV90cmFkX2RlZmluaXRpb24pOiBSZW1lbWJlciB0aGUgcGFyYW1zIGxpc3QgZXZlbiBvbgoJZmFpbHVyZS4KCjIwMDMtMTItMTEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBhcm0uYyAoQVJNX0FERFJFU1NfQ09TVCwgVEhVTUJfQUREUkVTU19DT1NUKTogQ29udmVydCBtYWNyb3MKCXRvIGlubGluZSBmdW5jdGlvbnM6IGFybV9hcm1fYWRkcmVzc19jb3N0LCBhcm1fdGh1bWJfYWRkcmVzc19jb3N0CglyZXNwZWN0aXZlbHkuCgkoYXJtX2FkZHJlc3NfY29zdCk6IFVzZSAnZW0uCgoyMDAzLTEyLTEyICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZy9hbHBoYS9vc2YuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZQoJX19TVERDX1ZFUlNJT05fXyB0byBJU08gQzk0IGZvciBDKysuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChhbHBoYV93Y2hhcik6IE5ldyBmaXguCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgkqIGZpeGluYy90ZXN0cy9iYXNlL3djaGFyLmg6IE5ldyBmaWxlLgoKMjAwMy0xMi0xMSAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiB1bndpbmQtbGlidW53aW5kLmMgKF9VbndpbmRfU2V0R1IpOiBDbGVhciB0aGUgTmFUIGJpdCBhcwoJcmVxdWlyZWQgYnkgQysrIEFCSSBmb3IgSXRhbml1bS4KCSogY29uZmlnL3QtbGlidW53aW5kIChMSUIyQURERUgpOiBSZW1vdmUgdW53aW5kLWxpYnVud2luZC5jLgoJKiBjb25maWcvdC1saWJ1bndpbmQtbm8tZWg6IE5ldyBmaWxlLgoJKiBjb25maWd1cmUuaW46IENoZWNrIGxpYnVud2luZCBmb3IgX1Vud2luZF9SZXN1bWUoKSBhbmQgaWYgaXQncwoJcHJlc2VudCwgc2V0IGxpYnVud2luZF9oYXNfZWhfc3VwcG9ydCB0byAieWVzIi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuZ2NjIChpYTY0Ki0qLWxpbnV4Kik6IElmICRsaWJ1bndpbmRfaGFzX2VoX3N1cHBvcnQgaXMKCXNldCB0byB5ZXMsIHVzZSB0LWxpYnVud2luZCwgb3RoZXJ3aXNlLCB1c2UgdC1saWJ1bndpbmQtbm8tZWguCgoyMDAzLTEyLTExICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZ2xvYmFsX3BvaW50ZXIpOiBGb3JjZSBmdW5jdGlvbnMgd2l0aAoJYSBub25sb2NhbCBnb3RvIHRvIHNldCB1cCAkZ3AuCgoyMDAzLTEyLTExICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJUFIgdGFyZ2V0LzEzMTMyCgkqIGZ1bmN0aW9uLmMgKGdlbl9tZW1fYWRkcmVzc29mKTogV2hlbiBubyBkZWNsLCBleHBsaWNpdGx5IGNsZWFyIGZsYWcKCWJpdHMuCgoyMDAzLTEyLTEyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL20zMnIvbTMyci5jOiBDb252ZXJ0IHRvIElTTy1DCgoyMDAzLTEyLTEyICBLYXp1aGlybyBJbmFva2EgIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CgoJKiBkb2MvaW52b2tlLnRleGk6IFJlcGxhY2UgTWl0c3ViaXNoaSB3aXRoIFJlbmVzYXMuCgkqIGNvbmZpZy9tMzJyL20zMnIuaDogRGl0dG8uCgkqIGNvbmZpZy9tMzJyL20zMnIuYzogRGl0dG8uCgkqIGNvbmZpZy9tMzJyL20zMnIubWQ6IERpdHRvLgoKMjAwMy0xMi0xMSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogYmFzaWMtYmxvY2suaCAoQkxPQ0tfSEVBRCwgQkxPQ0tfRU5EKTogUmVtb3ZlLgoJKEJMT0NLX0hFQURfVFJFRSwgQkxPQ0tfRU5EX1RSRUUpOiBSZW1vdmUuCgkoYmFzaWNfYmxvY2tfZGVmKTogUmVuYW1lIGBoZWFkJyB0byBgaGVhZF8nIGFuZCBgZW5kJyB0byBgZW5kXycuCgkoQkJfSEVBRCwgQkJfRU5EKTogTmV3IGFjY2Vzc29yIG1hY3JvcyBmb3IgdGhlIGBoZWFkXycgYW5kIGBlbmRfJwoJZmllbGRzIG9mIGEgYmFzaWMgYmxvY2suCgkqIGJiLXJlb3JkZXIuYywgYnQtbG9hZC5jLCBjYWxsZXItc2F2ZS5jLCBjZmcuYywgY2ZnYW5hbC5jLAoJY2ZnYnVpbGQuYywgY2ZnY2xlYW51cC5jLCBjZmdsYXlvdXQuYywgY2ZnbG9vcC5jLCBjZmdsb29wYW5hbC5jLAoJY2ZnbG9vcG1hbmlwLmMsIGNmZ3J0bC5jLCBjb21iaW5lLmMsIGNvbmZsaWN0LmMsIGRmLmMsIGVtaXQtcnRsLmMsCglmaW5hbC5jLCBmbG93LmMsIGZ1bmN0aW9uLmMsIGdjc2UuYywgZ2xvYmFsLmMsIGdyYXBoLmMsCgloYWlmYS1zY2hlZC5jLCBpZmN2dC5jLCBsY20uYywgbG9jYWwtYWxsb2MuYywgbG9vcC11bnN3aXRjaC5jLAoJbG9vcC5jLCBwb3N0cmVsb2FkLmMsIHByZWRpY3QuYywgcHJvZmlsZS5jLCByYS1idWlsZC5jLCByYS1kZWJ1Zy5jLAoJcmEtcmV3cml0ZS5jLCByYS5jLCByZWNvZy5jLCByZWctc3RhY2suYywgcmVnY2xhc3MuYywgcmVnbW92ZS5jLAoJcmVncmVuYW1lLmMsIHJlbG9hZDEuYywgcmVzb3VyY2UuYywgc2NoZWQtZWJiLmMsIHNjaGVkLXJnbi5jLAoJc2liY2FsbC5jLCB0cmFjZXIuYywgY29uZmlnL2Zydi9mcnYuYywgY29uZmlnL2kzODYvaTM4Ni5jLAoJY29uZmlnL2lhNjQvaWE2NC5jOiBVc2UgdGhlIEJCX0hFQUQgYW5kIEJCX0VORCBtYWNyb3MgaW5zdGVhZCBvZgoJYWNjZXNzaW5nIHRoZSBgaGVhZCcgYW5kIGBlbmQnIGZpZWxkcyBvZiBhIGJhc2ljIGJsb2NrIGRpcmVjdGx5LgoKCSogZ2VuZ3R5cGUuYzogVGVhY2ggYWJvdXQgInZvaWQqKiIgcG9pbnRlcnMgYW5kICJ2b2lkICoiIGZ1bmN0aW9uCgl0eXBlcy4gIEZpeGVzIGVhcmxpZXIgY29tbWl0LgoKMjAwMy0xMi0xMCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKFZlY3RvciBFeHRlbnNpb25zKTogRG9jdW1lbnQgdGhhdCBiaXR3aXNlCglvcGVyYXRpb25zIGFsc28gd29yayBvbiB2ZWN0b3JzLgoKMjAwMy0xMi0xMCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0ubWQ6IE5ldyBzcGxpdCBwYXR0ZXJucyBmb3Igb3B0aW1pemluZyBiaXRmaWVsZCBhY2Nlc3Nlcy4KCjIwMDMtMTItMTAgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIFJFQURNRS5Qb3J0YWJpbGl0eTogUmVtb3ZlIEsrUiBzZWN0aW9uLgoKCSogZ2VuZ3R5cGUtbGV4Lmw6IFRlYWNoIGFib3V0ICJ2b2lkKioiIHBvaW50ZXJzIGFuZAoJInZvaWQqIiBmdW5jdGlvbiB0eXBlcy4KCjIwMDMtMTItMTAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgdGFyZ2V0LzEzMzU0CgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19vdXRwdXRfbWlfdGh1bmspOiBMb2FkIERFTFRBCgltYW51YWxseSBpZiBvbmUgY2FuIGRvIHRoYXQgd2l0aCBvbmx5IG9uZSBpbnN0cnVjdGlvbi4KCjIwMDMtMTItMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjIChhcm0tbGludXgpOiBJbmNsdWRlIGxpbnV4LmggaW4gdG1fZmlsZSBzbyB0aGF0CglMSU5VWF9UQVJHRVRfT1NfQ1BQX0JVSUxUSU5TIGlzIGRlZmluZWQuCgkqIGNvbmZpZy9hcm0vbGludXgtZWxmLmggKExJQl9TUEVDKTogUHJvdGVjdCB0aGUgZGVmaW5pdGlvbi4KCjIwMDMtMTItMDkgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIHJ0bC5kZWYgKENPREVfTEFCRUwsIE5PVEUpOiBDb3JyZWN0IG9wZXJhbmQgbnVtYmVycyBpbiBjb21tZW50cy4KCjIwMDMtMTItMDkgIE1hdHQgQXVzdGVybiAgPGF1c3Rlcm5AYXBwbGUuY29tPgoKCVBSIGMvMTMxMzQKCSogYy1kZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IENvcHkgdmlzaWJpbGl0eSBmbGFnIHdoZW4gYXBwcm9wcmlhdGUuCgoyMDAzLTEyLTA5ICBLYXp1aGlybyBJbmFva2EgPGluYW9rYS5rYXp1aGlyb0ByZW5lc2FzLmNvbT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuaDogQWRkIHN1cHBvcnQgZm9yIG0zMnIyIHByb2Nlc3Nvci4gIEluY2x1ZGluZwoJYSBuZXcgY29tbWFuZCBsaW5lIG9wdGlvbiAtbTMycjIgdG8gc2VsZWN0IGl0LgoJKiBjb25maWcvbTMyci9tMzJyLmM6IEFkZCBzdXBwb3J0IGZvciB0aGUgbmV3IHByb2Nlc3NvciB2YXJpYW50LgoJKiBjb25maWcvbTMyci9tMzJyLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL20zMnIvdC1tMzJyOiBBZGQgbTMycjIgbXVsdGlsaWJzLgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IHRoZSBuZXcgY29tbWFuZCBsaW5lIHN3aXRjaC4KCjIwMDMtMTItMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkZWZhdWx0cy5oIChMT0NBTF9SRUdOTyk6IEdpdmUgdGhlIGRlZmF1bHQgZGVmaW5pdGlvbi4KCSogZmxvdy5jIChMT0NBTF9SRUdOTyk6IFJlbW92ZS4KCSogcmVsb2FkMS5jIChMT0NBTF9SRUdOTyk6IExpa2V3aXNlLgoKMjAwMy0xMi0wOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJUFIgdGFyZ2V0LzExODQ4CgkqIHJzNjAwMC5oIChDQU5OT1RfQ0hBTkdFX01PREVfQ0xBU1MpOiBBbGxvdyBjaGFuZ2Ugb2YgbW9kZQoJaW4gZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzIGJldHdlZW4gVEZtb2RlIGFuZCBESW1vZGUuCgkqIHJzNjAwMC5jIChyczYwMDBfZW1pdF9tb3ZlKTogU3BsaXQgbW92ZXMgZWFybHkuCgkoc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IFJhbmRvbSBXaGl0ZXNwYWNlIENoYW5nZS4KCShyczYwMDBfc3BsaXRfbXVsdGlyZWdfbW92ZSk6IFN1cHBvcnQgbW92ZXMgaW52b2x2aW5nIEZQIHJlZ2lzdGVycy4KCUVtaXQgaW5zdHJ1Y3Rpb25zIGRpcmVjdGx5LgoJKiByczYwMDAtcHJvdG9zLmggKHJzNjAwMF9zcGxpdF9tdWx0aXJlZ19tb3ZlKTogVXBkYXRlIHByb3RvdHlwZS4KCSogYWx0aXZlYy5tZDogVXBkYXRlIGZvciBjaGFuZ2VzIHRvIHJzNjAwMF9zcGxpdF9tdWx0aXJlZ19tb3ZlLgoJKiByczYwMDAubWQ6IFVwZGF0ZSBmb3IgY2hhbmdlcyB0byByczYwMDBfc3BsaXRfbXVsdGlyZWdfbW92ZS4KCShtb3Z0Zl9pbnRlcm5hbCk6IFN1cHBvcnQgbW92ZXMgdG8vZnJvbSBHUFJzLgoKMjAwMy0xMi0wOCAgU3R1YXJ0IEhhc3RpbmdzICA8c3R1YXJ0QGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQ6IFR5cG8gaW4gc3BsaXQgb2YgZnAtdmFsdWVkIGlmX3RoZW5fZWxzZS4KCjIwMDMtMTItMDggIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCglQUiB0YXJnZXQvMTMxMzIKCSogZXhwbWVkLmMgKGV4dHJhY3RfYml0X2ZpZWxkKTogT25seSBjYWxsIG1vZGVfZm9yX3NpemUgZm9yIHNjYWxhcgoJaW50ZWdlciBtb2Rlcy4KCjIwMDMtMTItMDggIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aTogUmV2ZXJ0IGNoYW5nZSBvZiBEZWMgNzsgZ2NjIGlzIHN0aWxsIGEgMi4xMwoJZGlyZWN0b3J5LgoKMjAwMy0xMi0wOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5tZCAoc3ViZGkyKTogTWVyZ2Ugd2l0aCBfaW50ZXJuYWwgaW5zbl9hbmRfc3BsaXQsCglieSB1c2luZyBtYXRjaF9zY3JhdGNoLgoJKG5lZ2RpMik6IE5ldy4KCjIwMDMtMTItMDggIEphc29uIE1lcnJpbGwgPGphc29uQHJlZGhhdC5jb20+CgkgICAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJUFIgZGVidWcvMTExMTQKCVN1cHBvcnQgbmFtZXNwYWNlcyBpbiBEV0FSRiAyIG91dHB1dC4KCSogZHdhcmYyb3V0LmMgKGdlbl9uYW1lc3BhY2VfZGllKTogTmV3IGZ1bmN0aW9uLgoJKGZvcmNlX25hbWVzcGFjZV9kaWUsIHNldHVwX25hbWVzcGFjZV9jb250ZXh0KTogTmV3IGZucy4KCShkZWNsYXJlX2luX25hbWVzcGFjZSk6IE5ldyBmbi4KCShnZW5fZGVjbF9kaWUpOiBDYWxsIGRlY2xhcmVfaW5fbmFtZXNwYWNlLiAgSGFuZGxlIG5hbWVzcGFjZXMuCgkoZHdhcmYyb3V0X2RlY2wpOiBIYW5kbGUgbmFtZXNwYWNlcy4KCShzY29wZV9kaWVfZm9yKTogUGFzcyB0aHJvdWdoIGEgbmFtZXNwYWNlIHNjb3BlLgoJKGNsYXNzX3Njb3BlX3ApOiBSZW5hbWUgdG8gY2xhc3Nfb3JfbmFtZXNwYWNlX3Njb3BlX3AuCgkoZ2VuX3N1YnByb2dyYW1fZGllLCBnZW5fdmFyaWFibGVfZGllKTogQWRqdXN0LgoJKGdlbl9zdHJ1Y3Rfb3JfdW5pb25fZGllKTogQWx3YXlzIGVtaXQgYSBkZWNsYXJhdGlvbgoJaWYgY29udGV4dF9kaWUgaXMgYSBuYW1lc3BhY2UuCgoyMDAzLTEyLTA4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB1bndpbmQtcGUuaCAocmVhZF91bGViMTI4KTogRml4IGhhbmRsaW5nIG9mIGxhcmdlIHZhbHVlcwoJKHJlYWRfc2xlYjEyOCk6IEZpeCBoYW5kbGluZyBvZiBsYXJnZSB2YWx1ZXMKCjIwMDMtMTItMDggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG1pZGRsZS1lbmQvMTAwNjAKCSogZW1pdC1ydGwuYyAoY29weV9ydHhfaWZfc2hhcmVkKTogU3BsaXQgb3V0IGludG8gLi4uCgkoY29weV9ydHhfaWZfc2hhcmVkXzEpOiBoZXJlIGFuZCBvcHRpbWl6ZSB0aGUgbGFzdCBvbmUKCWluIHRoZSBzZXF1ZW5jZSBpbnRvIHRhaWwtcmVjdXJzaW9uLgoJKHJlc2V0X3VzZWRfZmxhZ3MpOiBPcHRpbWl6ZSB0aGUgbGFzdCBvbmUKCWluIHRoZSBzZXF1ZW5jZSBpbnRvIHRhaWwtcmVjdXJzaW9uLgoKMjAwMy0xMi0wOCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0ubWQ6IE5ldyBzcGxpdCB0byB0cmFuc2Zvcm0gKChYIDw8IHkpIC0gMSkgaW50byB+KH4oWC0xKSA8PCB5KQoJZm9yIGNvbnN0YW50IFguCgoyMDAzLTEyLTA4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERvbid0IHRyeSB1c2luZyB0YWlsIG9yIHJlY3Vyc2l2ZSBjYWxscwoJYWZ0ZXIgdGhlIGZ1bmN0aW9uIGJvZHkgaGFzIGJlZW4gZXhwYW5kZWQuCgoyMDAzLTEyLTA4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChjbXBzdHIgZXhwYW5kZXIpOiBPYmV5IFRBUkdFVF9JTkxJTkVfQUxMX1NUUklOR09QUwoKMjAwMy0xMi0wOCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJUFIgYWRhLzEzMzI0LCBQUiBhZGEvMTI2MTQKCSogZG9jL2luc3RhbGwudGV4aTogVXBkYXRlIHJlcXVpcmVtZW50cyBmb3IgYnVpbGRpbmcgQWRhLgoKMjAwMy0xMi0wNyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoJICAgIEdyYWhhbSBSZWVkIDxncmVlZEBwb2JveC5jb20+CgoJKiBjb2xsZWN0Mi5jIChHQ0NfT0tfU1lNQk9MKTogQWRkIHN1cHBvcnQgZm9yIEFJWCBDX1dFQUtFWFQuCgkoR0NDX1VOREVGX1NZTUJPTCk6IFNhbWUuCgoyMDAzLTEyLTA3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogRG9uJ3QgdXNlIEZJTkFMX1BSRVNDQU5fTEFCRUwuCgkqIHN5c3RlbS5oIChGSU5BTF9QUkVTQ0FOX0xBQkVMKTogUG9pc29uLgoJKiBkb2MvdG0udGV4aSAoRklOQUxfUFJFU0NBTl9MQUJFTCk6IFJlbW92ZS4KCjIwMDMtMTItMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChjb21wYXJlKTogQ29tYmluZSB0b3BsZXZlbCBhbmQgJChTVUJESVJTKSBjYXNlcy4KCjIwMDMtMTItMDcgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlndXJlLmluLCBhY2xvY2FsLm00OiBSZXZlcnQgdG8gcHJlLTIuNXggY29udmVyc2lvbiBzdGF0dXMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZSB3aXRoIGF1dG9jb25mIDIuMTMuCgoJKiBjb25maWd1cmUuaW46IFJlcGxhY2UgQUNfSU5JVCwgQUNfT1VUUFVULCBBQ19DQU5PTklDQUxfU1lTVEVNCgl3aXRoIG1vZGVybiBlcXVpdmFsZW50cy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogY29uZmlndXJlLmluOiBSZXBsYWNlIGdjY19BQ19DSEVDS19UWVBFIHdpdGggQUNfQ0hFQ0tfVFlQRS4KCSogYWNsb2NhbC5tNCAoZ2NjX0FDX0NIRUNLX1RZUEUpOiBSZW1vdmUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZSB3aXRoIChwcmVmZXJyZWQpIGF1dG9jb25mIDIuNTcuCgkqIGRvYy9pbnN0YWxsLnRleGk6IE5vdGUgdGhhdCAnZ2NjJyBpcyBub3cgYSAyLjU3IGRpcmVjdG9yeS4KCjIwMDMtMTItMDcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzEyOTY1CgkqIGNhbGxlci1zYXZlLmMgKHNhdmVfY2FsbF9jbG9iYmVyZWRfcmVncyk6IERvIG5vdCBzYXZlL3Jlc3RvcmUKCXJlZ2lzdGVycyBhcm91bmQgbm8tcmV0dXJuIGNhbGxzLgoKMjAwMy0xMi0wNyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWd1cmUuaW46IE1ha2UgbWluaW11bSBuZWNlc3NhcnkgY2hhbmdlcyBmb3IgYXV0b2NvbmYgMi41eC4KCSogYWNsb2NhbC5tNDogTWFrZSBtaW5pbXVtIG5lY2Vzc2FyeSBjaGFuZ2VzIGZvciBhdXRvY29uZiAyLjV4LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUgd2l0aCBhdXRvY29uZiAyLjU4LgoKMjAwMy0xMi0wNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vMTMzMTgKCSogbG9vcC5jIChleHByZXNzX2Zyb20pOiBQcm90ZWN0IGludGVnZXIgZGl2aXNpb24gZnJvbSBvdmVyZmxvdy4KCjIwMDMtMTItMDcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzEzMDYwCgkqIGZ1bmN0aW9uLmMgKGZpeHVwX3Zhcl9yZWZzXzEpIFtTVUJSRUddOiBSZWNvZ25pemUgZXZlbiBpZiBhCglyZXBsYWNlbWVudCBhbHJlYWR5IGV4aXN0cy4gIEZpeCBhZ2FpbiB0aGUgd2hvbGUgaW5zbiBpZiB0aGF0IGZhaWxzLgoKMjAwMy0xMi0wNiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChtYWNob19icmFuY2hfaXNsYW5kcyk6IFVzZQoJSE9TVF9XSURFX0lOVF9QUklOVF9VTlNJR05FRC4KCjIwMDMtMTItMDYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIHZhcmFzbS5jIChpbmNvcnBvcmVhbF9mdW5jdGlvbl9wKTogTmV3LgoJKGFzc2VtYmxlX2V4dGVybmFsKTogVXNlIGl0IGFzIGEgZmlsdGVyLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfb3V0cHV0X2V4dGVybmFsKTogRG9uJ3QgY2hlY2sgZm9yIGJ1aWx0aW4KCWZ1bmN0aW9ucyBoZXJlLgoKMjAwMy0xMi0wNiAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYW5yc2hhQGFybS5jb20+CgoJKiBhcm0ubWQgKElPUiAoQ09NUEFSSVNPTikgKEFORCkpOiBOZXcgZGVmaW5lX3NwbGl0cy4KCjIwMDMtMTItMDYgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAocHJvZ3JhbV90cmFuc2Zvcm1fY3Jvc3NfbmFtZSk6IERlbGV0ZS4KCShHQ0NfQ1JPU1NfTkFNRSwgQ1BQX0NST1NTX05BTUUpOiBEZWxldGUuCgkoUFJPVE9JWkVfQ1JPU1NfTkFNRSwgVU5QUk9UT0laRV9DUk9TU19OQU1FKTogRGVsZXRlLgoJKEFSX0ZPUl9UQVJHRVQsIFJBTkxJQl9GT1JfVEFSR0VULCBOTV9GT1JfVEFSR0VUKTogQWRqdXN0IGZvciBhYm92ZS4KCShpbnN0YWxsX2NwcCwgaW5zdGFsbF9kcml2ZXIsIGluc3RhbGwtbWFuLCB1bmluc3RhbGwpOiBMaWtld2lzZS4KCjIwMDMtMTItMDYgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgMTMxNjkKCSogYmFzaWMtYmxvY2suaCAoUFJPUF9BU01fU0NBTik6IERlZmluZS4KCSogZmluYWwuYyAocmVnc19hc21fY2xvYmJlcmVkKTogTmV3IGFycmF5LgoJKiByZWdzLmggKHJlZ3NfYXNtX2Nsb2JiZXJlZCk6IERlY2xhcmUuCgkqIGZsb3cuYyAobGlmZV9hbmFseXNpcyk6IEluaXQgaXQuCgkobWFya19zZXRfcmVncyk6IFNldCBQUk9QX0FTTV9TQ0FOIGZvciBhc21zLgoJKG1hcmtfc2V0XzEpOiBTZXQgcmVnc19hc21fY2xvYmJlcmVkLgoJKiBnbG9iYWwuYyAoZ2xvYmFsX2FsbG9jKTogRG9uJ3Qgc2V0IGVsaW1pbmFibGVfcmVnc2V0IHdoZW4KCXJlZ3NfYXNtX2Nsb2JiZXJlZC4KCjIwMDMtMTItMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKE1VU1RfUEFTU19JTl9TVEFDSyk6IERlZmluZS4KCglQUiBjKysvMTMzMTQKCSogZW1pdC1ydGwuYyAoc2V0X21lbV9hdHRyaWJ1dGVzX21pbnVzX2JpdHBvcyk6IFJvYnVzdGlmeS4KCjIwMDMtMTItMDUgIEFuZHJldyBQaW5za2kgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgZHJpdmVyLzEzMjExCgkqIGdjYy5jIChleGVjdXRlKSBJbmNyZW1lbnQgZXhlY3V0aW9uX2NvdW50IHdoZW4gcmV0dXJuaW5nCgllYXJseSBiZWNhdXNlIHZlcmJvc2Vfb25seV9mbGFnIGlzIHRydWUuCgoyMDAzLTEyLTA1ICBQZXIgQm90aG5lciAgPHBib3RobmVyQGFwcGxlLmNvbT4KCgkqIGNwcGZpbGVzLmMgKGZpbGVfaGFzaF9oYXNoKTogIE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoaGFzaF9zdHJpbmdfZXEpOiAgUmVuYW1lZCBzdGF0aWMgZnVuY3Rpb24gdG8gZmlsZV9oYXNoX2VxLgoJKF9jcHBfaW5pdF9maWxlcyk6ICBDcmVhdGUgZmlsZV9oYXNoIHRhYmxlIHdpdGggYWJvdmUgY2FsbGJhY2tzLgoJKGNwcF9pbmNsdWRlZCk6ICBNdXN0IHVzZSBodGFiX2ZpbmRfd2l0aF9oYXNoIGluc2VhZCBvZiBodGFiX2ZpbmQuCgkoX2NwcF9maW5kX2ZpbmQsIG1ha2VfY3BwX2Rpcik6ICBNdXN0IHVzZSBodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2guCgoyMDAzLTEyLTA1ICBQZXIgQm90aG5lciAgPHBib3RobmVyQGFwcGxlLmNvbT4KCgkqIGxpbmUtbWFwLmggKHNvdXJjZV9sb2NhdGlvbik6ICBOZXcgdHlwZWRlZi4KCShmaWxlbGluZSk6ICBSZWRlZmluZWQgYXMgc291cmNlX2xvY2F0aW9uLgoJKHN0cnVjdCBsaW5lX21hcCwgbGluZW1hcF9hZGQsIGxpbmVtYXBfbG9va3VwKTogIFJlcGxhY2UgZmlsZWZpbGUKCWJ5IHNvdXJjZV9sb2NhdGlvbi4KCSogbGluZS1tYXAuYyAobGluZW1hcF9hZGQsIGxpbmVtYXBfbG9va3VwKTogIFVzZSBzb3VyY2VfbG9jYXRpb24uCgoyMDAzLTEyLTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2J1aWxkX2J1aWx0aW5fdmFfbGlzdCk6IEFkZCBkdW1teQoJZmllbGQgdG8gc3VwcHJlc3MgLVdwYWRkZWQgd2FybmluZ3MuCgoyMDAzLTEyLTA1ICBTdHVhcnQgSGFzdGluZ3MgIDxzdHVhcnRAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IENvcnJlY3QgbWFjcm8gdGVzdCBvZiBUQVJHRVRfTUFDSE8uCgoyMDAzLTEyLTA1ICBTdHVhcnQgTWVuZWZ5IDxzdHVhcnQubWVuZWZ5QHN0LmNvbT4KCSAgICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCglQUiB0YXJnZXQvMTMzMDIKCSogc2guYyAoc2hfYnVpbGRfYnVpbHRpbl92YV9saXN0KTogVXNlICgqbGFuZ19ob29rcy50eXBlcy5tYWtlX3R5cGUpLgoKMjAwMy0xMi0wNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkb2p1bXAuYyAoZG9fanVtcCk6IElmIHRoZSBleHByZXNzaW9uIGJlaW5nIGNvbXBhcmVkIGFnYWluc3QKCXplcm8sIGlzIHRoZSBzdWJyZWcgb2YgYSBwcm9tb3RlZCB2YXJpYWJsZSwgcGVyZm9ybSB0aGUgY29tcGFyaXNvbgoJaW4gdGhlIHByb21vdGVkIG1vZGUuCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24pOiBPcHRpbWl6ZSBzaWduIGFuZAoJemVyby1leHRlbnNpb25zIG9mIHN1YnJlZ3Mgb2YgcHJvbW90ZWQgdmFyaWFibGVzIHdoZXJlIHRoZQoJZXh0ZW5zaW9uIGlzIGlkZW50aWNhbCB0byB0aGF0IHVzZWQgdG8gcHJvbW90ZSB0aGUgdmFyaWFibGUuCgoyMDAzLTEyLTA1ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCglQUiB0YXJnZXQvMTMyNTYKCSogcmVzb3VyY2UuaCAoZW51bSBtYXJrX3Jlc291cmNlX3R5cGUpOiBSZW1vdmUgbWVtYmVyIE1BUktfREVTVC4KCVRoZSBvbmx5IHVzZXIgY2hhbmdlZCBhcyBmb2xsb3dzOgoJKiByZXNvdXJjZS5jIChtYXJrX3NldF9yZXNvdXJjZXMpIDxjYXNlIFNFVD46IEFsd2F5cyByZWN1cnNlIGZvcgoJU0VUX1NSQyAoeCkuCgk8Y2FzZSBTSUdOX0VYVFJBQ1QsIGNhc2UgWkVST19FWFRSQUNUPjogQWx3YXlzIHJlY3Vyc2Ugb24KCW9wZXJhbmRzLgoJPGNhc2UgU1RSSUNUX0xPV19QQVJUPjogRGVsZXRlLCBkZWZlcnJpbmcgdG8gZGVmYXVsdCBjb2RlLgoKMjAwMy0xMi0wNSAgV2FsZGVrIEhlYmlzY2ggPGhlYmlzY2hAbWF0aC51bmkud3JvYy5wbD4KCgkqIHN0bXQuYyAoZXhwYW5kX25sX2dvdG9fcmVjZWl2ZXIpOiBDb3B5IGhhcmQgcmVnaXN0ZXIgY2xvYmJlcnMKCWFuZCBBU01fSU5QVVQgYmFycmllciBmcm9tIGV4cGFuZF9idWlsdGluX3NldGptcF9yZWNlaXZlci4KCjIwMDMtMTItMDUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19leHBhbmRfY2FsbCk6IERvbid0IGFsbG93IGxheml5IGJpbmRpbmcKCWZvciBuMzIgJiBuNjQgYWJpY2FsbHMuCgoyMDAzLTEyLTA1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgYm9vdHN0cmFwLzEzMTQ1CgkqIGNvbmZpZy9taXBzL21pcHMuaCAoRklSU1RfUFNFVURPX1JFR0lTVEVSKTogQWRqdXN0IGNvbW1lbnQuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19yZWdfbmFtZXMsIG1pcHNfc3dfcmVnX25hbWVzKTogQWRkICRmY2FsbC4KCShtaXBzX2xvYWRfZ290KTogQWx3YXlzIGNyZWF0ZSBhIGNvbnN0YW50IE1FTS4KCShtaXBzX2V4cGFuZF9jYWxsKTogVXNlIGxvYWRfY2FsbHNpIGFuZCBsb2FkX2NhbGxkaS4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoVU5TUEVDX0xPQURfQ0FMTCwgRkFLRV9DQUxMX1JFR05PKTogTmV3IGNvbnN0cy4KCShsb2FkX2NhbGxzaSwgbG9hZF9jYWxsZGkpOiBOZXcgcGF0dGVybnMuCgoyMDAzLTEyLTA1ICBQZXRlciBHZXJ3aW5za2kgPHBldGVyQGdlcndpbnNraS5kZT4KCgkqIHRyZWUuZGVmIChQTEFDRUhPTERFUl9FWFBSKTogQ2xhcmlmeSBjb21tZW50YXJ5LgoKMjAwMy0xMi0wNSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogY29uZmlnL2QzMHYvZDMwdi1wcm90b3MuaCAsIGNvbmZpZy9kMzB2L2QzMHYuYywKCWNvbmZpZy9kc3AxNnh4L2RzcDE2eHgtcHJvdG9zLmgsIGNvbmZpZy9kc3AxNnh4L2RzcDE2eHguYywKCWNvbmZpZy9mcjMwL2ZyMzAtcHJvdG9zLmgsIGNvbmZpZy9mcjMwL2ZyMzAuYywKCWNvbmZpZy9pMzcwL2kzNzAtcHJvdG9zLmgsIGNvbmZpZy9pMzcwL2kzNzAuYywKCWNvbmZpZy9pOTYwL2k5NjAtcHJvdG9zLmgsIGNvbmZpZy9pOTYwL2k5NjAuYywKCWNvbmZpZy9pcDJrL2lwMmstcHJvdG9zLmgsIGNvbmZpZy9pcDJrL2lwMmsuYywKCWNvbmZpZy9tMzJyL20zMnItcHJvdG9zLmgsIGNvbmZpZy9tMzJyL20zMnIuYywKCWNvbmZpZy9tbjEwMzAwL21uMTAzMDAtcHJvdG9zLmgsIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYywKCWNvbmZpZy9uczMyay9uczMyay1wcm90b3MuaCwgY29uZmlnL25zMzJrL25zMzJrLmM6CglDb252ZXJ0IHRvIElTTyBDOTAgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGFuZCBkZWZpbml0aW9ucy4KCjIwMDMtMTItMDUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKENvbnN0cnVjdGluZyBDYWxscyk6IEFkZCB3YXJuaW5nIGFib3V0Cgl0aGUgbGltaXRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucy4KCjIwMDMtMTItMDUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgbWlkZGxlLWVuZC8xMTE1MQoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZnVuY3Rpb24pOiBOZXcgZmllbGQgJ3hfbmFrZWRfcmV0dXJuX2xhYmVsJy4KCSogZnVuY3Rpb24uYyAoZnJlZV9hZnRlcl9jb21waWxhdGlvbik6IFNldCBpdCB0byBOVUxMLgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBFbWl0ICduYWtlZF9yZXR1cm5fbGFiZWwnIGlmIGl0IGV4aXN0cy4KCSogcnRsLmggKGV4cGFuZF9uYWtlZF9yZXR1cm4pOiBEZWNsYXJlLgoJKiBzdG10LmMgKGV4cGFuZF9uYWtlZF9yZXR1cm4pOiBOZXcgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgYQoJanVtcCB0byAnbmFrZWRfcmV0dXJuX2xhYmVsJy4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fcmV0dXJuKTogQ2FsbCBleHBhbmRfbmFrZWRfcmV0dXJuCglpbnN0ZWFkIG9mIGV4cGFuZF9udWxsX3JldHVybi4KCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kICh1bnR5cGVkX3JldHVybik6IExpa2V3aXNlLgoKMjAwMy0xMi0wNCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdGFyZ2V0LzExMzIyCgkqIGNvbmZpZy9zaC9uZXRic2QtZWxmLmggKE5PX1BST0ZJTEVfQ09VTlRFUlMpOiBEZWZpbmUuCgoJUFIgdGFyZ2V0LzEyNDY3CgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAoYWx0aXZlY192bXN1bW1ibSk6IEZpeCB0eXBvLgoKMjAwMy0xMi0wNCAgU3R1YXJ0IEhhc3RpbmdzICA8c3R1YXJ0QGFwcGxlLmNvbT4KCgkqIHJzNjAwMC5jIChvdXRwdXRfY2FsbCwgbWFjaG9fYnJhbmNoX2lzbGFuZHMsCglhZGRfY29tcGlsZXJfYnJhbmNoX2lzbGFuZCwgbm9fcHJldmlvdXNfZGVmLCBnZXRfcHJldmlvdXNfbGFiZWwpCglSZXZpc2lvbnMgb2YgeHhfc3R1YiBmdW5jdGlvbnMgZm9yIGJyYW5jaCBpc2xhbmRzLAoJYWRkIC1mUElDIHN1cHBvcnQgZm9yIERhcndpbi4KCSogcnM2MDAwLXByb3Rvcy5oIChvdXRwdXRfY2FsbCkgUHJvdG90eXBlLgoJKiByczYwMDAubWQgVXNlIG91dHB1dF9jYWxsLgoJKiBpbnZva2UudGV4aSBFeHBsYWluIERhcndpbiBzZW1hbnRpY3Mgb2YgLWxvbmdjYWxsLgoJKiB0ZXN0c3VpdGUvZ2NjLmRnL2Rhcndpbi1hYmktMS5jIFJldmlzZSB0ZXN0Y2FzZSBmb3IgLWxvbmdjYWxsL2pic3IuCgoyMDAzLTEyLTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoYWRkcWkzX2NhcnJ5KTogVXNlIHEgbm90IHIgY29uc3RyYWludHMuCgkoc3VicWkzX2NhcnJ5KTogTGlrZXdpc2UuCgoyMDAzLTEyLTA0ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTMyNjAKCSogc2gtcHJvdG9zLmggKHNoX2V4cGFuZF90X3NjYyk6IERlY2xhcmUuCgkqIHNoLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBjbXBzaV9vcGVyYW5kLgoJKiBzaC5jIChjbXBzaV9vcGVyYW5kLCBzaF9leHBhbmRfdF9zY2MpOiBOZXcgZnVuY3Rpb25zLgoJKiBzaC5tZCAoY21wc2kpOiBVc2UgY21wc2lfb3BlcmFuZC4gIElmIFRfUkVHIGlzIGNvbXBhcmVkIHRvCglzb21ldGhpbmcgdGhhdCBpcyBub3QgYSBDT05TVF9JTlQsIGNvcHkgaXQgaW50byBhIHBzZXVkbyByZWdpc3Rlci4KCShzdWJjKTogRml4IGRlc2NyaXB0aW9uIG9mIG5ldyBUIHZhbHVlLgoJKHNsdCwgc2d0LCBzZ2UsIHNndHUpOiBEb24ndCBjbG9iYmVyIFQgYWZ0ZXIgcnRsIGdlbmVyYXRpb24gaXMgb3Zlci4KCShzbHR1LCBzbGV1LCBzZ2V1KTogTGlrZXdpc2UuCgkoc2VxLCBzbmUpOiBMaWtld2lzZS4gVXNlIHNoX2V4cGFuZF90X3NjYy4KCjIwMDMtMTItMDQgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlndXJlLmluOiBHZW5lcmFsaXplIHRoZSBDT05GSUdfSEVBREVSUyBwYXR0ZXJuIHVuZGVyIHdoaWNoCgl3ZSBzdGFtcCBjc3RhbXAtaC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogY29uZmlndXJlLmluOiBQdWxsIEFDX0NIRUNLX0hFQURFUiBjYWxsIG91dCBvZiBzaGVsbCBpZiBzdGF0ZW1lbnQKCXRvIGF2b2lkIHRyb3VibGUgd2hlbiB1cGRhdGluZyB0byBhdXRvY29uZiAyLjV4LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUgKHdpdGggYXV0b2NvbmYgMi4xMyBzdGlsbCkuCgoyMDAzLTEyLTA0ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIHNoLm1kICh0cnVuY2RpcWkyKTogVXNlIGFuZGkgb3Bjb2RlIGZvciBpbW1lZGlhdGUuCgkocmVsb2FkX291dGRmKzEscmVsb2FkX291dGRmKzIpOiBSZW1vdmUgY29uc3RyYWludHMuCgkobW92djE2c2ZfaSk6IEZ4aSBtdWx0aXBsaWVyIGZvciBTVUJSRUdfQllURS4KCShtb3Z2OHFpX2krMik6IFplcm8tZXh0ZW5kIGxvdyBieXRlIGJlZm9yZSBhZGRpbmcgaXQgdG8gaGlnaCBieXRlLgoJKGZpcHIsIGZ0cnYpOiBBZGQgLnMgc3VmZml4IHRvIG9wY29kZS4KCjIwMDMtMTItMDQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTMxODYKCglSZXZlcnQgYWxsIG9mIHRoZSBmb2xsb3dpbmcgcGF0Y2gsIGV4Y2VwdCB0aGUgYWRkaXRpb24gb2YKCWhvb2tfYm9vbF9tYWNoaW5lX21vZGVfdHJ1ZToKCgkyMDAzLTExLTAyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAodGFyZ2hvb2tzLm8sIHJlbG9hZC5vKTogVXBkYXRlIGRlcGVuZGVuY2llcy4KCShHVEZJTEVTKTogQWRkIHRhcmdob29rcy5jLgoJKGd0LXRhcmdob29rcy5oKTogTmV3IHJ1bGU7IGRlcGVuZCBvbiBzLWd0eXBlLgoJKiB0YXJnZXQuaCAoZGlyZWN0X3Bvb2xfbG9hZF9wKTogTmV3IGhvb2suCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0RJUkVDVF9QT09MX0xPQURfUCk6IE5ldyBtYWNyby4KCShUQVJHRVRfSU5JVElBTElaRVIpOiBJbmNsdWRlIGl0LgoJKiB0YXJnaG9va3MuaCAoZGVmYXVsdF9kaXJlY3RfcG9vbF9sb2FkX3ApOiBEZWNsYXJlLgoJKGhvb2tfYm9vbF9tYWNoaW5lX21vZGVfdHJ1ZSk6IERlY2xhcmUuCgkqIHRhcmdob29rcy5jOiBJbmNsdWRlIGluc24tY29uZmlnLmgsIHJlY29nLmgsIGdnYy5oIGFuZAoJZ3QtdGFyZ2hvb2tzLmguCgkocG9vbF9zeW1ib2wpOiBOZXcgdmFyaWFibGUuCgkoZGVmYXVsdF9kaXJlY3RfcG9vbF9sb2FkX3ApOiBOZXcgZnVuY3Rpb24uCgkoaG9va19ib29sX21hY2hpbmVfbW9kZV90cnVlKTogTmV3IGZ1bmN0aW9uLgoJKiByZWxvYWQuYzogSW5jbHVkZSB0YXJnZXQuaC4KCShmaW5kX3JlbG9hZHMpOiBJZiBhbiBhbHRlcm5hdGl2ZSB3aWxsIGZvcmNlIGEgY29uc3RhbnQgaW50byBtZW1vcnksCgljb3VudCBhbiBleHRyYSByZWxvYWQgaWYgY29uc3RhbnQgcG9vbCBzeW1ib2xzIGFyZSBub3QgdmFsaWQKCWFkZHJlc3Nlcy4gIElmIGFuIGFsdGVybmF0aXZlIHVzZXMgbWVtb3J5IHRvIG1vdmUgdmFsdWVzIGJldHdlZW4KCXJlZ2lzdGVycywgY291bnQgdGhlIG1vdmUgYXMgdHdvIHJlbG9hZHMgcmF0aGVyIHRoYW4gb25lLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKFRBUkdFVF9ESVJFQ1RfUE9PTF9MT0FEX1ApOiBEZWZpbmUuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfRElSRUNUX1BPT0xfTE9BRF9QKTogRG9jdW1lbnQuCgoyMDAzLTEyLTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2lhNjQvaHB1eC5oIChUQVJHRVRfSEFWRV9UTFMpOiBEZWZpbmUgaXQgdG8gZmFsc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoVEFSR0VUX0hBVkVfVExTKTogRGVmaW5lIGl0IHRvIHRydWUgaWYKCUhBVkVfQVNfVExTIGlzIHRydWUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoVEFSR0VUX0hBVkVfVExTKTogRG8gbm90IGRlZmluZSBpdC4KCjIwMDMtMTItMDMgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIGdjYy5jIChpbml0X3NwZWMpOiBQYXNzIC1sdW53aW5kIHRvIGluaXRfZ2NjX3NwZWNzIGluIGVoX25hbWUuCgoJKiBnY2MtcGFnZS5jIChleHRyYV9vcmRlcl9zaXplX3RhYik6IENvcnJlY3QgY29tbWVudC4KCjIwMDMtMTItMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAocHVzaCk6IENhbGwgZ2VuX3B1c2hfaDgzMDBoc19hZHZhbmNlZAoJaW5zdGVhZCBvZiBnZW5fcHVzaF9oODMwMGhzLgoJKHBvcCk6IENhbGwgZ2VuX3BvcF9oODMwMGhzX2FkdmFuY2VkIGluc3RlYWQgb2YKCWdlbl9wb3BfaDgzMDBocy4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmggKFRSQU1QT0xJTkVfU0laRSk6IFVzZSBQbW9kZS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICgqdGFibGVqdW1wX2g4MzAwaHNfYWR2YW5jZWQpOgoJVGlnaHRlbiB0aGUgcHJlZGljYXRlLgoJKCp0YWJsZWp1bXBfaDgzMDBoc19ub3JtYWwpOiBUaWdodGVuIHRoZSBwcmVkaWNhdGUuCgkocHVzaF9oODMwMGhzKTogQ2hhbmdlIHRvCglwdXNoX2g4MzAwaHNfYWR2YW5jZWQuCgkocG9wX2g4MzAwaHMpOiBDaGFuZ2UgdG8gcG9wX2g4MzAwaHNfYWR2YW5jZWQuCgoyMDAzLTEyLTAzICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIHJ0bC5jOiBGaXggdHlwby4KCSogY29uZmlnL21pcHMvbWlwcy5oOiBEaXR0by4gRml4IGZvcm1hdHRpbmcuCgoyMDAzLTEyLTA0ICBCZW4gRWxsaXN0b24gIDxiamVAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBmdXR1cmUub3B0aW9uczogUmVtb3ZlLiBNb3ZlIHRvIGdudS5vcmcgd2ViIHBhZ2VzLgoKMjAwMy0xMi0wMyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjLXBhcnNlLmluIChjX2luX2l0ZXJhdGlvbl9zdG10LCBjX2luX2Nhc2Vfc3RtdCk6IE1vdmUKCWZyb20gaGVyZS4uLgoJKiBjLXRyZWUuaDogdG8gaGVyZS4KCjIwMDMtMTItMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBvcHRpbWl6YXRpb24vMTIzMjQKCSogdG9wbGV2LmMgIChyZXN0X29mX2RlY2xfY29tcGlsYXRpb24pOiBEbyBub3QgZGVmZmVyIHdoZW4gY29tcGlsaW5nCglpbiB1bml0LWF0LWEtdGltZSBtb2RlLgoKMjAwMy0xMi0wMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogT25seSBzZXQgUlRYX1VOQ0hBTkdJTkdfUCBmb3IKCXJlYWQtb25seSBmaWVsZCBpZiBjbGVhcmVkIGlzIDAuCgoyMDAzLTEyLTAzICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2M6IE1hcmsgb2Jzb2xldGUgdGFyZ2V0cyBmb3IgR0NDIDMuNC4KCjIwMDMtMTItMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBhY2xvY2FsLm00IChBTV9JQ09OVik6IEFkZCBleHBsaWNpdCBjaGVjayBmb3IgaWNvbnYuaC4KCSogY29uZmlnLmluLCBjb25maWd1cmUuaW46IFJlZ2VuZXJhdGUuCgkqIGNwcGhhc2guaDogQ2hlY2sgYm90aCBIQVZFX0lDT05WIGFuZCBIQVZFX0lDT05WX0ggYmVmb3JlCglpbmNsdWRpbmcgaWNvbnYuaC4KCjIwMDMtMTItMDMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgdGFyZ2V0LzExMjI5CgkqIGNzZS5jIChjc2VfaW5zbik6IFNldCBjbGFzc3AgdXNpbmcgc3JjX2NvbnN0X2VsdCBpZgoJc3JjX2Vxdl9lbHQgaXMgTlVMTC4KCjIwMDMtMTItMDMgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogZ2NzZS5jIChyZWdfY2xlYXJfbGFzdF9zZXQpOiBOZXcgZnVuY3Rpb24uCgkocmVnX3NldF9pbmZvKTogSWYgZGF0YSBpcyBub24tbnVsbCwgdHJlYXQgaXQgYXMgYW4gc2JpdG1hcCBvZgoJcmVnaXN0ZXJzLCBzZXQgdGhlIGJpdCBmb3IgdGhlIHJlZ2lzdGVyIGJlaW5nIHNldC4KCShjb21wdXRlX3N0b3JlX3RhYmxlKTogQWxsb2NhdGUgbGFzdF9zZXRfaW4gd2l0aCB4Y2FsbG9jLiAgRG8gbm90CgltZW1zZXQgdGhpcyBhcnJheSBvbiBlYWNoIGl0ZXJhdGlvbi4gIFBhc3MgcmVnX3NldF9pbl9ibG9ja1tiYi0+aW5kZXhdCgl0byBub3RlX3N0b3JlcyB3aGlsZSBjb21wdXRpbmcgbGFzdF9zZXRfaW4gaW5zdGVhZCBvZiBzY2FubmluZwoJbGFzdF9zZXRfaW4gYWZ0ZXIgdGhlIGZpcnN0IHBhc3MgdGhyb3VnaCB0aGUgaW5zbnMuCglDbGVhciBsYXN0X3NldF9pbiB1c2luZyByZWdfY2xlYXJfbGFzdF9zZXQgaW5zdGVhZCBvZiBleHBsaWNpdGx5CglyZXNjYW5uaW5nIGFmdGVyIGVhY2ggaW5zbi4gIElmIGNoZWNraW5nIGlzIGVuYWJsZWQsIGFzc2VydCB0aGF0CglsYXN0X3NldF9pbiBpcyBjb21wbGV0ZWx5IHplcm9lZCBhZnRlciBlYWNoIGJiIGhhcyBiZWVuIHByb2Nlc3NlZC4KCjIwMDMtMTItMDIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAZ2VvZmZrLm9yZz4KCgkqIGRmLmMgKGRmX3VzZXNfcmVjb3JkKSA8TUVNPjogVGhlIGFyZ3VtZW50IG9mIGEgTUVNIGlzIHJlYWQtb25seSwKCW5ldmVyIHJlYWQtd3JpdGUuCgk8UkVHPjogRGVsZXRlIGluY29ycmVjdCBjb21tZW50LgoJPFNFVD46IFJlbW92ZSAndXNlX2ZsYWdzJyB2YXJpYWJsZS4KCjIwMDMtMTItMDMgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IE1ha2Ugc3VyZSBwYXJtIFBBUkFMTEVMIGNvbWJpbmVkCglpbiByZWcgaXMgY29tcG9zZWQgb2YgbW9yZSB0aGFuIG9uZSBvYmplY3QgYW5kIHRoZSBtb2RlIHJlYWxseQoJcHJvZHVjZXMgYSByZWcuCgoyMDAzLTEyLTAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKGNsYXNzaWZ5X2FyZ3VtZW50KTogTWFrZSBpdCA2NGJpdCBjbGVhbi4KCjIwMDMtMTItMDIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19vdXRwdXRfZXh0ZXJuYWwpOiBSZXBsYWNlIGNoZWNrcyBmb3IKCXNwZWNpZmljIGJ1aWx0aW4taW4gZnVuY3Rpb25zIHdpdGggYSBjaGVjayBmb3IgREVDTF9CVUlMVElOX0lOLgoKMjAwMy0xMi0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHJ0bC5oIChQVVRfQ09ERSwgUFVUX01PREUpOiBSZW1vdmUgRU5VTV9CSVRGSUVMRCBjYXN0LgoJKiB0cmVlLmggKFRSRUVfU0VUX0NPREUpOiBMaWtld2lzZS4KCSogcmVjb2cuaCAoc3RydWN0IGluc25fb3BlcmFuZF9kYXRhKTogTW92ZSBjb25zdCBhZnRlciBFTlVNX0JJVEZJRUxELgoKMjAwMy0xMi0wMiAgQmVuIEVsbGlzdG9uICA8YmplQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogZGJ4c3RjbGFzcy5oOiBSZW5hbWUgZnJvbSB0aGlzIC4uCgkqIHhjb2ZmLmg6IC4uIHRvIHRoaXMuCgkqIHhjb2Zmb3V0LmM6IEluY2x1ZGUgeGNvZmYuaC4KCjIwMDMtMTItMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChHQ0NfQ0ZMQUdTKTogQWRkIC1Xb2xkLXN0eWxlLWRlZmluaXRpb24uCgoyMDAzLTEyLTAxICBKYW1lcyBMZW1rZSA8amltQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX3J0eF9jb3N0cyk6IEltcHJvdmUgZm9yIHhzY2FsZSBtdWx0aXBseS4KCjIwMDMtMTItMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG9wdGltaXphdGlvbi8xMTYzNAoJKiByZWNvZy5jIChzcGxpdF9pbnNuKTogRmFjdG9yIHRlc3Qgb2YgSU5TTl9QIGFuZCBoYW5kbGluZyBvZgoJc2V0X25vb3BfcCBvdXQgb2YgaGVyZSBpbnRvIHRoZSB0d28gY2FsbGVycy4KCShzcGxpdF9hbGxfaW5zbnMpOiBBZGQgSU5TTl9QIHRlc3QgYW5kIHNldF9ub29wX3AgaGFuZGxpbmcgaGVyZS4KCUlmIGRlbGV0aW5nIGEgbm8tb3Agc2V0IGFmdGVyIHJlbG9hZCB0aGF0IGhhcyBhIFJFR19VTlVTRUQgbm90ZSwKCW1hcmsgdGhlIGJhc2ljIGJsb2NrIGFzIGNoYW5nZWQgYW5kIHJlY2FsY3VsYXRlIGxpZmUgaW5mb3JtYXRpb24uCgkoc3BsaXRfYWxsX2luc25zX25vZmxvdyk6IEFkZCBJTlNOX1AgdGVzdCBhbmQgc2V0X25vb3BfcCBoYW5kbGluZwoJaGVyZS4KCjIwMDMtMTItMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG9wdGltaXphdGlvbi8xMjMyMgoJKiBnY3NlLmMgKHN0cnVjdCBsc19leHByKTogQ2hhbmdlIHR5cGUgb2YgaGFzaF9pbmRleCBmcm9tIGludCB0bwoJdW5zaWduZWQgaW50LgoJKGhhc2hfZXhwcik6IERvY3VtZW50IGhhc2hfdGFibGVfc2l6ZSBwYXJhbWV0ZXIgYW5kIHdyYXAgbG9uZyBsaW5lLgoJKGxkc3RfZW50cnkpOiBDYWxjdWxhdGUgZXhwcmVzc2lvbidzIGhhc2hfaW5kZXggYW5kIHJlY29yZCBpbiBwdHIuCgkodHJpbV9sZF9tb3Rpb25fbWVtcyk6IFVzZSBoYXNoX2luZGV4IHRvIHNlYXJjaCBhIHNpbmdsZSBidWNrZXQKCWluc3RlYWQgb2Ygc2Nhbm5pbmcgdGhlIGVudGlyZSBoYXNoX3RhYmxlLiAgUmVtb3ZlIHRoZSAiZGVsIiBsb2NhbAoJdmFyaWFibGUgYW5kIHVzZSB0aGUgZXF1aXZhbGVudCAiZXhwciA9PSAwIiBpbnN0ZWFkLiAgQ2hhbmdlIGxhc3QKCXRvIGJlIGEgcG9pbnRlciB0byB0aGUgcG9pbnRlciB0byB0aGUgY3VycmVudCBlbGVtZW50LCB0byBzaW1wbGlmeQoJYW5kIHNwZWVkLXVwIGRlbGV0aW5nIGZyb20gYSBsaW5rZWQgbGlzdC4KCjIwMDMtMTItMDEgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIGRvYy9jb250cmliLnRleGk6IFVwZGF0ZSBEYXZpZCBNb3NiZXJnZXIuCgoJKiBkb2MvYy10cmVlLnRleGkgKENPTlNUUlVDVE9SKTogQ2xhcmlmeSBlbGVtZW50IG9yZGVyIGFuZCBoYW5kbGluZwoJb2YgbWlzc2luZyBmaWVsZHMuCgoJUFIgdGFyZ2V0Lzg0MDcKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2Z1bmN0aW9uX2FyZyk6IEZvciBzaW5nbGUtcmVnIEhGQSwgY2FsbAoJZ2VuX3J0eF9SRUcgdG8gY3JlYXRlIG5ldyByZWcgd2l0aCBhcmd1bWVudCBtb2RlLgoKMjAwMy0xMi0wMSAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogZ2djLmggKHN0cnVjdCBhbGxvY196b25lKTogTW92ZSBmb3J3YXJkIGRlY2xhcmF0aW9uIHVwLgoJKG5ld19nZ2Nfem9uZSk6IE5ldyBmdW5jdGlvbiBwcm90b3R5cGUuCgkoZGVzdHJveV9nZ2Nfem9uZSk6IERpdHRvLgoJKiBnZ2Mtc2ltcGxlLmMgKG5ld19nZ2Nfem9uZSk6IE5ldyBmdW5jdGlvbiwgZG9lcyBub3RoaW5nLgoJKGRlc3Ryb3lfZ2djX3pvbmUpOiBEaXR0by4KCSogZ2djLXBhZ2UuYyAobmV3X2dnY196b25lKTogTmV3IGZ1bmN0aW9uLCBkb2VzIG5vdGhpbmcuCgkoZGVzdHJveV9nZ2Nfem9uZSk6IERpdHRvLgoJKiBnZ2Mtem9uZS5jIChzdHJ1Y3QgcGFnZV9lbnRyeSk6IEZpeCBjb21tZW50LgoJKGdnY19hbGxvY190eXBlZCk6IFVzZSBhIHN3aXRjaCBzdGF0ZW1lbnQgaW5zdGVhZCBvZiBpZnMuCgkobmV3X2dnY196b25lKTogTmV3IGZ1bmN0aW9uIHRvIHNldCB1cCBhIG5ldyBHQyB6b25lLgoJKGRlc3Ryb3lfZ2djX3pvbmUpOiBOZXcgZnVuY3Rpb24gdG8gcmVtb3ZlIGEgR0Mgem9uZS4KCWluaXRfZ2djKTogVXNlIG5ld19nZ2Nfem9uZSB0byBzZXQgdXAgdGhlIGRlZmF1bHQgem9uZXMuCgkoZ2djX2NvbGxlY3QpOiBXYWxrIGEgbGlzdCBvZiB6b25lcywgaW5zdGVhZCBvZiBqdXN0IHRoZQoJZGVmYXVsdCB6b25lcy4gIFJlcG9ydCBzdGF0aXN0aWNzIHVzaW5nIHRoZSB6b25lIG5hbWUuCgoyMDAzLTEyLTAxICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiB1bnJvbGwuYyAoZmluZF9zcGxpdHRhYmxlX2dpdnMpOiBBZGQgbWlzc2luZyBleHRlbmRfdmFsdWVfZm9yX2dpdi4KCjIwMDMtMTItMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG9wdGltaXphdGlvbi8xMjYyOAoJKiB0b3BsZXYuYyAocmVzdF9vZl9oYW5kbGVfanVtcF9ieXBhc3MpOiBDYWxsIHJlZ19zY2FuLgoJKiByZWdjbGFzcy5jIChyZWdfc2Nhbik6IEluY2x1ZGUgYWxsb2NhdGVfcmVnX2luZm8gdGltZSBpbgoJVFZfUkVHX1NDQU4uICBNaW5vciBjbGVhbi11cHMuCgkocmVnX3NjYW5fdXBkYXRlKTogTWlub3IgY2xlYW4tdXBzLgoKMjAwMy0xMi0wMSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnLmdjYyAoczM5MHgtaWJtLXRwZiopOiBBZGQgZXh0cmFfcGFydHMuCgoyMDAzLTEyLTAxICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEZVTkNUSU9OX0FSR19SRUdOT19QKTogVXNlIEFSX1JFR19GSVJTVCBub3QKCUdSX0FSR19GSVJTVC4KCjIwMDMtMTItMDEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb21tb24ub3B0OiBSZW1vdmUgLWZnbnUtbGlua2VyLgoJKiBmbGFncy5oOiBSZW1vdmUgZmxhZ19nbnVfbGlua2VyLgoJKiBvcHRzLmM6IERvbid0IGhhbmRsZSBPUFRfZmdudV9saW5rZXIuCgkqIHRvcGxldi5jOiBEb24ndCBpbml0aWFsaXplIGZsYWdfZ251X2xpbmtlci4KCVJlbW92ZSBnbnUtbGlua2VyIGVudHJ5IGZyb20gZl9vcHRpb25zLgoJKiBjb25maWcvZHNwMTZ4eC9kc3AxNnh4LmggKE9QVElNSVpBVElPTl9PUFRJT05TKToKCURvbid0IHJlc2V0IGZsYWdfZ251X2xpbmtlci4KCSogY29uZmlnL21pcHMvbWlwcy5jIChvdmVycmlkZV9vcHRpb25zKTogTGlrZXdpc2UuCgkqIGRvYy9pbnZva2UudGV4aTogUmVtb3ZlIGFsbCBtZW50aW9uIG9mIC1mZ251LWxpbmtlci4KCjIwMDMtMTItMDEgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogZ2djLXpvbmUuYyAoZ2djX3BjaF93cml0ZV9vYmplY3QpOiBDYWxjdWxhdGUgb2JqZWN0IHNpemUgdXNpbmcKCWdnY19nZXRfc2l6ZSAod2hpY2ggYWNjb3VudHMgZm9yIGxhcmdlIG9iamVjdHMgcHJvcGVybHkpLgoKMjAwMy0xMi0wMSAgSmVmZiBTdHVybSAgPGpzdHVybUBvbmUtcG9pbnQuY29tPgoKCVBSIG9wdGltaXphdGlvbi8xMzAyNAoJKiB0b3BsZXYuYyAocmVzdF9vZl9oYW5kbGVfbmV3X3JlZ2FsbG9jKTogUmVtb3ZlIHJlYnVpbGRfbm90ZXMKCXBhcmFtZXRlci4KCShyZXN0X29mX2hhbmRsZV9vbGRfcmVnYWxsb2MpOiBMaWtld2lzZS4gIEFkZCByZWJ1aWxkX25vdGVzCglkZWNsYXJhdGlvbi4gIFJlYnVpbGQganVtcCBsYWJlbHMgZm9sbG93aW5nIGxvY2FsX2FsbG9jIGlmIG5lY2Vzc2FyeS4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogUmVtb3ZlIHJlYnVpbGRfbGFiZWxfbm90ZXNfYWZ0ZXJfcmVsb2FkCglkZWNsYXJhdGlvbi4gIERvbid0IHBhc3MgcmVidWlsZF9ub3RlcyBwYXJhbWV0ZXIgdG8KCXJlc3Rfb2ZfaGFuZGxlX25ld19yZWdhbGxvYyBhbmQgcmVzdF9vZl9oYW5kbGVfb2xkX3JlZ2FsbG9jLgoJRG9uJ3QgcmVidWlsZCBqdW1wIGxhYmVscy4KCjIwMDMtMTItMDEgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiBmbG93LmMgKGNvdW50X29yX3JlbW92ZV9kZWF0aF9ub3Rlc19iYik6IE5ldy4gIEV4dHJhY3RlZCBmcm9tCgljb3VudF9vcl9yZW1vdmVfZGVhdGhfbm90ZXMuCgkoY291bnRfb3JfcmVtb3ZlX2RlYXRoX25vdGVzKTogVXNlIEVYRUNVVEVfSUZfU0VUX0lOX1NCSVRNQVAuCgoyMDAzLTEyLTAxICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbG9uZ2ptcCk6IEFkZGVkIHR3byBtZW1vcnkgY2xvYmJlcnMuCgoyMDAzLTEyLTAxICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzX2FkZHJlc3MpOiBTcGxpdCBhZGRyZXNzZXMgb2YgdHlwZQoJKHBsdXMgKHBsdXMgKHJlZykgKHJlZykpIChjb25zdF9pbnQpKSBvbmx5IGlmIG9uZSByZWdpc3RlcgoJaXMgZWl0aGVyIGEgdmFsaWQgYmFzZSByZWdpc3RlciBvciBlbHNlIG9uZSBvZiB0aGUgc3RhY2sKCWZyYW1lIHJlbGF0ZWQgcmVnaXN0ZXJzIChzcC9mcC9hcCkuCgoyMDAzLTEyLTAxICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBmdW5jdGlvbi5jICh1cGRhdGVfZXBpbG9ndWVfY29uc3RzKTogRG9uJ3QgdXNlIFBBUkFNUy4KCSogcnRsLmggKHdlYl9tYWluKTogRGl0dG8uCgkqIHRhcmdldC5oIChpc19jb3N0bHlfZGVwZW5kZW5jZSk6IERpdHRvCgoyMDAzLTEyLTAxICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG1pZGRsZS1lbmQvNzg0NwoJKiBleHByLmMgKGV4cGFuZF9leHByKSBbbm9ybWFsX2lubmVyX3JlZl06IFdoZW4gJ29mZnNldCcgaXMgbm9uLXplcm8sCglkbyBub3QgcmVjaGVjayB0aGF0ICdvcDAnIGlzIGEgTUVNLiAgTW92ZSBjb21tZW50LiAgV2hlbiB0ZXN0aW5nIGZvcgoJdW5hbGlnbmVkIG9iamVjdHMsIHRha2UgYWxzbyBpbnRvIGFjY291bnQgdGhlIGFsaWdubWVudCBvZiAnb3AwJyBhbmQKCSdtb2RlMScgaWYgJ29wMCcgaXMgYSBNRU0uCgoyMDAzLTEyLTAxIEdhYnJpZWwgRG9zIFJlaXMgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBkb2MvYy10cmVlLnRleGkgKEZ1bmN0aW9uIEJvZGllcyk6IFVwZGF0ZSBIQU5ETEVSIGRvY3VtZW50YXRpb24uCgoyMDAzLTEyLTAxICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aTogTm90ZSB0aGF0IGZhc3RqYXIgaXMgYnVpbHQgd2l0aCBhdXRvbWFrZSAxLjcueAoJYW5kIGF1dG9jb25mIDIuNTcuCgoyMDAzLTEyLTAxICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKFNVQlNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKTogVGVzdAoJdGFyZ2V0X2ZsYWdzIGRpcmVjdGx5IHJhdGhlciB0aGFuIHVzaW5nIFRBUkdFVF8qIGRlZmluZXMuCgoyMDAzLTExLTMwICBCZW4gRWxsaXN0b24gIDxiamVAd2FzYWJpc3lzdGVtcy5jb20+CgoJKiBkb3NjaGsuYzogUmVtb3ZlLgoKMjAwMy0xMS0zMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xMjcyNwoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc2F2ZV9yZWcpOiBGaXggZnJhbWUgaW5mb3JtYXRpb24gZm9yIHNkYzEKCW9uIDMyLWJpdCBiaWctZW5kaWFuIHRhcmdldHMuCgoyMDAzLTExLTMwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZ2VuZW1pdC5jIChyZWdpc3Rlcl9jb25zdHJhaW50cyk6IFJlbW92ZS4KCjIwMDMtMTEtMzAgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgidG1kaV9yZWciLCAidG1zaV9yZWciLCAiKm1vdmRpXzY0IiwgIiptb3ZkaV8zMSIsCgkiaW9yZGkzIik6IEluc25zIG5vdyB1c2UgbXVsdGlwbGUgbGV0dGVyIGNvbnN0cmFpbnRzLgoJKCIqbW92ZGlfbGhpIiwgIiptb3ZkaV9sbGkiLCAiKm1vdmRpX2xheSIpOiBJbnNucyBkZWxldGVkLiBUaGV5IGFyZSBub3cKCWNvdmVyZWQgYnkgIiptb3ZkaV82NCIuCgkoIiptb3ZzaV9saGkiLCAiKm1vdnNpX2xsaSIsICIqbW92c2lfbGF5Iik6IEluc25zIGRlbGV0ZWQuIFRoZXkgYXJlIG5vdwoJY292ZXJlZCBieSAiKm1vdnNpX3phcmNoIiBhbmQgIiptb3ZzaV9lc2EiLgoJKCIqbW92c2lfemFyY2giLCAiKm1vdnNpXyF6YXJjaCIpOiBOZXcgaW5zbnMuCgkoIipsbGd0X3Npc2lfc3BsaXQiLCAiKmxsZ3RfZGlkaV9zcGxpdCIpOiBJbnNucyBkZWxldGVkLiBOb3cgY292ZXJlZAoJYnkgIiphbmRzaTNfemFyY2giIGFuZCAiYW5kZGkzIi4KCSgiKmFuZGRpM19uaSIpOiBJbnNuIG1lcmdlZCB3aXRoICJhbmRkaTMiLgoJKCIqYW5kc2kzX25pIik6IEluc24gbWVyZ2VkIHdpdGggIiphbmRzaTNfemFyY2giLgoJKCIqYW5kc2kzX3phcmNoIiwgIiphbmRzaTNfZXNhIik6IE5ldyBpbnNucy4KCSgiKmlvcmRpM19vaSIpOiBJbnNuIG1lcmdlZCB3aXRoICJpb3JkaTMiLgoJKCIqaW9yc2kzX29pIik6IEluc24gbWVyZ2VkIHdpdGggIippb3JzaTNfemFyY2giLgoJKCIqaW9yc2kzX3phcmNoIiwgIippb3JzaTNfZXNhIik6IE5ldyBpbnNucy4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9zaW5nbGVfcWksIHMzOTBfc2luZ2xlX2hpKTogRnVuY3Rpb25zCgltZXJnZWQgdG8gczM5MF9zaW5nbGVfcGFydC4KCShzMzkwX3NpbmdsZV9wYXJ0KTogTmV3IGZ1bmN0aW9uLgoJTk9URTogU2VtYW50aWNzIGhhdmUgY2hhbmdlZCBhIGJpdC4gTm93IHRoZSB2YWx1ZSBvZiB0aGUgcGFydCBtdXN0CgliZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3RoZXJzIHRvIGdldCBhIG5vbi1uZWdhdGl2ZSByZXR1cm4gdmFsdWUuCgkoczM5MF9leHRyYWN0X3FpLCBzMzkwX2V4dHJhY3RfaGkpOiBGdW5jdGlvbnMgbWVyZ2VkIHRvCglzMzkwX2V4dHJhY3RfcGFydC4KCShzMzkwX2V4dHJhY3RfcGFydCwgczM5MF9leHRyYV9jb25zdHJhaW50X3N0ciwKCXMzOTBfY29uc3Rfb2tfZm9yX2NvbnN0cmFpbnRfcCk6IE5ldyBmdW5jdGlvbnMuIFRoZSBMIGNvbnN0cmFpbnQgZ290IGEKCW5ldyBtZWFuaW5nIGFuZCB0aGUgTiBjb25zdHJhaW50IHdhcyBhZGRlZCBhcyBhIG11bHRpcGxlIGxldHRlcgoJY29uc3RyYWludC4KCShzMzkwX2V4dHJhX2NvbnN0cmFpbnQpOiBGdW5jdGlvbiBkZWxldGVkLgoJKHByaW50X29wZXJhbmQpOiBOZXcgb3V0cHV0IG1vZGlmaWVyICdpJyBhbmQgJ2onIGFkZGVkLgoJQWxsIHVzZXMgb2YgQ09OU1RfT0tfRk9SX0xFVFRFUl9QIHdlcmUgcmVwbGFjZWQgYnkKCUNPTlNUX09LX0ZPUl9DT05TVFJBSU5UX1AuCgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oOiBGdW5jdGlvbiBwcm90b3R5cGVzIGFkYXB0ZWQuCgkqIGRvYy9tZC50ZXhpOiBEb2N1bWVudGF0aW9uIGZvciBuZXcgY29uc3RyYWludCBsZXR0ZXJzIGFkZGVkLgoKMjAwMy0xMS0zMCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluICgkKERFU1RESVIpJChpbmZvZGlyKS8lLmluZm8pOiBGaXggbWlzc2luZyBzZW1pY29sb24uCgoyMDAzLTExLTI5ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeGluYy5jb20+CgoJKiBnY2MuYyAoaW5pdF9zcGVjKTogUGFzcyAtbHVud2luZCB0byBpbml0X2djY19zcGVjcyBpbiBlaF9uYW1lCglpbnN0ZWFkIG9mIGluIHNoYXJlZF9uYW1lLgoKCSogZmluYWwuYyAoZmluYWxfc3RhcnRfZnVuY3Rpb24pOiBEZWxldGUgY29kZSBmb3IgTk9OX1NBVklOR19TRVRKTVAuCgkqIHJlbG9hZDEuYyAocmVsb2FkKTogUmUtYWRkIGl0IGhlcmUuCgoyMDAzLTExLTMwICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VsZl9zZWN0aW9uX3R5cGVfZmxhZ3MpOiBEb24ndAoJc2V0IFNFQ1RJT05fV1JJVEUgb24gVEFSR0VUX1JFTE9DQVRBQkxFLgoKMjAwMy0xMS0yOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChMSUJDQUxMX1ZBTFVFKTogVXNlIFIwX1JFRy4KCjIwMDMtMTEtMjggIEd1bnRoZXIgTmlrbCAgPGduaUBnZWNrby5kZT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAoTU9UT1JPTEEpOiBNb3ZlIGZyb20gaGVyZS4uLgoJKiBjb25maWcvbTY4ay9tNjhrLmggKE1PVE9ST0xBKTogLi4uIHRvIGhlcmUuCgkoT1VUUFVUX0pVTVApOiBVc2UgZG8gey4uLn0gd2hpbGUgKDApLgoJKiBjb25maWcvbTY4ay9tNjhrLm1kOiBSZXBsYWNlICNpZmRlZiBNT1RPUk9MQSB3aXRoIEMgc3RhdGVtZW50cy4KCjIwMDMtMTEtMjggIEd1bnRoZXIgTmlrbCAgPGduaUBnZWNrby5kZT4KCgkqIGNvbmZpZy5nY2MgKG02ODAyMC0qLWVsZiosIG02OGstKi1lbGYqLCBtNjgwMTAtKi1uZXRic2RlbGYqLAoJbTY4ayotKi1uZXRic2RlbGYqLCBtNjhrLSotcnRlbXMqKTogQWRkIHRtX2RlZmluZXMgY29udGFpbmluZwoJTU9UT1JPTEEgYW5kIFVTRV9HQVMuCgkqIGNvbmZpZy9tNjhrL3J0ZW1zZWxmLmggKE1PVE9ST0xBKTogRGVsZXRlLgoJKiBjb25maWcvbTY4ay9uZXRic2QtZWxmLmggKE1PVE9ST0xBLCBVU0VfR0FTKTogRGVsZXRlLgoJKiBjb25maWcvbTY4ay9tNjhrZWxmLmggKE1PVE9ST0xBLCBVU0VfR0FTLCBTR1NfQ01QX09SREVSKTogRGVsZXRlLgoKMjAwMy0xMS0yOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChXT1JEU19CSUdfRU5ESUFOKTogVXBkYXRlIHRoZSBjb21tZW50LgoKMjAwMy0xMS0yOSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWluZm8pOiBJbnN0YWxsIGdjY2luc3RhbGwuaW5mbyB0b28uCgoyMDAzLTExLTI5ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiY21waW50X2RpIik6IEZpeCBpbmNvcnJlY3QgaW5zdHJ1Y3Rpb24gbGVuZ3Rocy4KCjIwMDMtMTEtMjkgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJtb3ZoaSIpOiBEbyBub3QgZW1pdCBleHRlbmRlciBwYXR0ZXJuCgl3aGVuIGxvYWRpbmcgZnJvbSBhIChNRU0gKEFERFJFU1NPRiAuLi4pKS4KCSgibW92cWkiKTogTGlrZXdpc2UuCgoyMDAzLTExLTI5ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCglQUiBjLzEwMzMzCgkqIGMtcGFyc2UuaW4gKHR5cGVzcGVjX3Jlc2VydmVkX25vbmF0dHIpOiBSZWplY3QgdHlwZW9mIG9uCgliaXQtZmllbGRzLgoKMjAwMy0xMS0yOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogQ2hlY2sgd2hldGhlciBmb3JjZV9jb25zdF9tZW0KCXN1Y2NlZWRlZC4KCjIwMDMtMTEtMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZy9nbnUuaCAoSFVSRF9UQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogTmV3LgoJKiBjb25maWcvbGludXguaCAoTElOVVhfVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IE5ldy4KCgkqIGNvbmZpZy9hbHBoYS9nbnUuaCwgY29uZmlnL2FscGhhL2xpbnV4LmgsCgljb25maWcvYXJtL2xpbnV4LWVsZi5oLCBjb25maWcvY3Jpcy9jcmlzLmgsIGNvbmZpZy9jcmlzL2xpbnV4LmgsCgljb25maWcvaTM3MC9saW51eC5oLCBjb25maWcvaTM4Ni9nbnUuaCwgY29uZmlnL2kzODYvaTM4Ni5oLAoJY29uZmlnL2kzODYvbGludXgtYW91dC5oLCBjb25maWcvaTM4Ni9saW51eC5oLAoJY29uZmlnL2kzODYvbGludXg2NC5oLCBjb25maWcvaWE2NC9saW51eC5oLCBjb25maWcvbTY4ay9saW51eC5oLAoJY29uZmlnL202OGsvdWNsaW51eC5oLCBjb25maWcvbWlwcy9saW51eC5oLAoJY29uZmlnL21uMTAzMDAvbGludXguaCwgY29uZmlnL3BhL3BhLWxpbnV4LmgsCgljb25maWcvcnM2MDAwL3N5c3Y0LmgsIGNvbmZpZy9zMzkwL2xpbnV4LmgsIGNvbmZpZy9zaC9saW51eC5oLAoJY29uZmlnL3NwYXJjL2xpbnV4LmgsIGNvbmZpZy9zcGFyYy9saW51eDY0LmgsCgljb25maWcveHRlbnNhL2xpbnV4LmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBVc2UKCUhVUkRfVEFSR0VUX09TX0NQUF9CVUlMVElOUy9MSU5VWF9UQVJHRVRfT1NfQ1BQX0JVSUxUSU5TIG9yIGVuc3VyZQoJYWxsIG5lY2Vzc2FyeSBhc3NlcnRpb25zIGFyZSBpbmNsdWRlZC4KCjIwMDMtMTEtMjggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGVtaXQtcnRsLmMgKHNldF91c2VkX2ZsYWdzKTogTmV3LgoJKHZlcmlmeV9ydHhfc2hhcmluZywgdmVyaWZ5X3J0bF9zaGFyaW5nKTogTmV3LgoJKHVuc2hhcmVfYWxsX3J0bF8xKTogUmVuYW1lIHRvLi4uLgoJKHVuc2hhcmVfYWxsX3J0bF9pbl9jaGFpbik6IC4uLiB0aGlzIG9uZTsgbWFrZSBzdGF0aWMuCgkoY29weV9ydHhfaWZfc2hhcmVkKTogTEFCRUxfUkVGIGNoYW4gYmUgc2hhcmVkLgoJKiBpZmN2dC5jICh1bnNoYXJlX2lmY3Z0X3NlcXVlbmNlKTogTmV3LgoJKG5vY2VfdHJ5X21vdmUsIG5vY2VfdHJ5X3N0b3JlX2ZsYWcsIG5vY2VfdHJ5X3N0b3JlX2ZsYWdfY29uc3RhbnRzLAoJbm9jZV90cnlfYWRkY2MsIG5vY2VfdHJ5X2FkZGNjLCBub2NlX3RyeV9zdG9yZV9mbGFnX21hc2ssCglub2NlX3RyeV9jbW92ZSwgbm9jZV90cnlfc3RvcmVfZmxhZ19tYXNrLCBub2NlX3RyeV9taW5tYXgsCglub2NlX3RyeV9hYnMsIG5vY2VfcHJvY2Vzc19pZl9ibG9jaywgZmluZF9jb25kX3RyYXAKCSogcnRsLmggKHZlcmlmeV9ydGxfc2hhcmluZywgc2V0X3VzZWRfZmxhZ3MsIHVuc2hhcmVfYWxsX3J0bF9pbl9jaGFpbik6CglEZWNsYXJlLgoKMjAwMy0xMS0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogRml4IGEgY29tbWVudCB0eXBvLgoKMjAwMy0xMS0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoKm1vdnNmX2g4MzAwaCk6IENoYW5nZSB0bwoJKm1vdnNmX2g4MzAwaHMuCgkoYWRkc2lfaDgzMDApOiBDaGFuZ2UgdG8gKmFkZHNpX2g4MzAwLgoJKGFkZHNpX2g4MzAwaCk6IENoYW5nZSB0byAqYWRkc2lfaDgzMDBocy4KCShzdWJzaTNfaDgzMDApOiBDaGFuZ2UgdG8gKnN1YnNpM19oODMwMC4KCShzdWJzaTNfaDgzMDBoKTogQ2hhbmdlIHRvICpzdWJzaTNfaDgzMDBocy4KCShuZWdoaTJfaDgzMDBoKTogQ2hhbmdlIHRvICpuZWdoaTJfaDgzMDBocy4KCShuZWdzaTJfaDgzMDBoKTogQ2hhbmdlIHRvICpuZWdzaTJfaDgzMDBocy4KCjIwMDMtMTEtMjggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCpzdWJoaTNfaDgzMDApOiBSZW1vdmUgJyYnIGZyb20gdGhlCgljb25zdHJhaW50LgoJKCpzdWJoaTNfaDgzMDBocyk6IExpa2V3aXNlLgoKMjAwMy0xMS0yOCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoTUFTS19NRkNSRik6IE5ldy4KCShUQVJHRVRfTUZDUkYpOiBUZXN0IHRhcmdldF9mbGFncywgbm90IHByb2Nlc3NvciB0eXBlLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBtZmNyZiBhbmQgbm8tbWZjcmYuCglDaGFuZ2UgRG9uJ3QgdG8gRG8gbm90LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChwcm9jZXNzb3JzX3RhcmdldF90YWJsZSk6IEFkZCBNQVNLX01GQ1JGCgl0byBwb3dlcjQsIDk3MCwgRzUuCgoyMDAzLTExLTI3ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGNzZS5jIChjc2Vfc2V0X2Fyb3VuZF9sb29wKTogV2hlbiBjaGFuZ2luZyBhIGNvbnN0YW50IGxvYWQKCXRvIGEgcmVnaXN0ZXIgLXJlZ2lzdGVyIGNvcHksIGFkZCBhIFJFR19FUVVBTCBub3RlLgoKMjAwMy0xMS0yNyAgUmFuZG9scGggQ2h1bmcgIDx0YXVzcUBkZWJpYW4ub3JnPgoJICAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jIChocHBhX3Byb2ZpbGVfaG9vayk6IFNwbGl0IGdlbl9jYWxsX3Byb2ZpbGVyIGludG8gc2VwYXJhdGUKCWluc25zLiAgVXNlIHRoZSByZWd1bGFyIGNhbGwgZXhwYW5kZXIgZm9yIHRoZSBjYWxsIHRvIHRoZSBwcm9maWxlci4KCSogcGEubWQgKGNhbGxfcHJvZmlsZXIpOiBEZWxldGUuCgkobG9hZF9vZmZzZXRfbGFiZWxfYWRkcmVzcyk6IE5ldyBpbnNuIHRvIGxvYWQgdGhlIGFkZHJlc3Mgb2YgdGhlCgljdXJyZW50IGZ1bmN0aW9uIGZvciB0aGUgcHJvZmlsZXIuCgkobGNsYTEsIGxjbGEyKTogTmV3IGluc25zIHRvIG91dHB1dCBhIGNvZGUgbGFiZWwgYW5kIGxvYWQgaXRzIGFkZHJlc3MuCgoyMDAzLTExLTI3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogUmVtb3ZlIGNvbW1lbnRlZC1vdXQgY29kZS4KCjIwMDMtMTEtMjcgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aTogUmVtb3ZlIEFEQUMgcmVmZXJlbmNlIGFuZCBtYWtlIGFjY3VyYXRlLgoKMjAwMy0xMS0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChGVU5DVElPTl9WQUxVRSk6IFVzZSBSMF9SRUcuCgkoRlVOQ1RJT05fVkFMVUVfUkVHTk9fUCk6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IERlZmluZSBSMF9SRUcuCgoyMDAzLTExLTI3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IExpa2V3aXNlLgoKMjAwMy0xMS0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChFTElNSU5BQkxFX1JFR1MpOiBVcGRhdGUgYSBjb21tZW50LgoKMjAwMy0xMS0yNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogR2l2ZSBuYW1lcyB0byBhbm9ueW1vdXMgaW5zbnMuCgoyMDAzLTExLTI3ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChleHRlbmRxaXNpMik6IFJlbW92ZSBjb25zdHJhaW50cy4KCjIwMDMtMTEtMjcgIEd1bnRoZXIgTmlrbCAgPGduaUBnZWNrby5kZT4KCgkqIGRvYy90bS50ZXhpIChTWVNST09UX0hFQURFUlNfU1VGRklYX1NQRUMpOiBGaXggdHlwby4KCjIwMDMtMTEtMjcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzEzMDQxCgkqIGZpbmFsLmMgKGZyYW1lX3BvaW50ZXJfbmVlZGVkKTogRml4IGNvbW1lbnQuCgkqIHJlbG9hZDEuYyAocmVsb2FkKTogRGVjcmVhc2UgYWxpZ25tZW50IG9mIHRoZSBmcmFtZQoJcG9pbnRlciBpZiBpdCB3YXMgdXNlZCBmb3IgcmVnaXN0ZXIgYWxsb2NhdGlvbi4KCjIwMDMtMTEtMjcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgdGFyZ2V0LzEyOTAwCgkqIHJlZy1zdGFjayAobW92ZV9mb3Jfc3RhY2tfcmVnKTogTmV3IHByb3RvdHlwZS4gIFJldHVybgoJd2hldGhlciBhIGNvbnRyb2wgZmxvdyBpbnNuIHdhcyBkZWxldGVkLgoJKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogTGlrZXdpc2UsIHVzaW5nIHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZAoJYnkgbW92ZV9mb3Jfc3RhY2tfcmVnLgoJKHN1YnN0X3N0YWNrX3JlZ3MpOiBMaWtld2lzZSwgdXNpbmcgdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkCglieSBzdWJzdF9zdGFja19yZWdzX3BhdC4KCShjb252ZXJ0X3JlZ3NfMSk6IFJlY29yZCB3aGV0aGVyIGEgY29udHJvbCBmbG93IGluc24gd2FzIGRlbGV0ZWQsCgl1c2luZyB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQgYnkgc3Vic3Rfc3RhY2tfcmVncy4gIFB1cmdlIGRlYWQKCWVkZ2VzIG9ubHkgaWYgYSBjb250cm9sIGZsb3cgaW5zbiB3YXMgZGVsZXRlZC4KCjIwMDMtMTEtMjcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgbWlkZGxlLWVuZC84MDI4CglQUiBtaWRkbGUtZW5kLzk4OTAKCVBSIG1pZGRsZS1lbmQvMTExNTEKCVBSIG1pZGRsZS1lbmQvMTIyMTAKCVBSIG1pZGRsZS1lbmQvMTI1MDMKCVBSIG1pZGRsZS1lbmQvMTI2OTIKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fYXBwbHkpOiBVc2UgdmlydHVhbF9vdXRnb2luZ19hcmdzX3J0eAoJYXMgdGhlIGJhc2UgYWRkcmVzcyB0byBjb3B5IHRoZSBtZW1vcnkgYXJndW1lbnRzIHRvLgoKMjAwMy0xMS0yNiAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGNvbmZpZy9pMzg2L2N5Z21pbmcuaCAoQVNNX09VVFBVVF9ERUZfRlJPTV9ERUNMUyk6IERlY2xhcmUKCWZ1bmN0aW9uIGFsaWFzZXMgYXMgZnVuY3Rpb25zLgoKMjAwMy0xMS0yNiAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBhY2xvY2FsLm00IChnY2NfQUNfUFJPR19HTkFUKTogUmV3cml0ZSB0byBhY2NvdW50IGZvciByZW1vdmFsCglvZiBBREFDLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gQURBQy4KCgkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlIGNoZWNrIGZvciB3aGV0aGVyICR7QURBQ30gYWNjZXB0cyAtV25vLWxvbmctbG9uZy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0xMS0yNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCSAgICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJUFIgdGFyZ2V0LzY0NjYKCSogY29uZmlnL3NwYXJjL3NwYXJjLXByb3Rvcy5oIChjb21wdXRlX2ZyYW1lX3NpemUpOiBOZXcgcHJvdG90eXBlLgoJKHNwYXJjX2ZsYXRfY29tcHV0ZV9mcmFtZV9zaXplKTogTGlrZXdpc2UuCgkoc3BhcmNfZmxhdF9zYXZlX3Jlc3RvcmUpOiBNb3ZlIHByb3RvdHlwZS4uLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfZmxhdF9zYXZlX3Jlc3RvcmUpOiAuLi5oZXJlLgoJKHNhdmVfcmVncyk6IE5ldyBwcm90b3R5cGUuCgkoYnVpbGRfYmlnX251bWJlcik6IExpa2V3aXNlLgoJKGFwcGFyZW50X2ZzaXplKTogQ2hhbmdlIHR5cGUgdG8gSE9TVF9XSURFX0lOVC4KCShhY3R1YWxfZnNpemUpOiBMaWtld2lzZS4KCShmcmFtZV9iYXNlX29mZnNldCk6IExpa2V3aXNlLgoJKGJ1aWxkX2JpZ19udW1iZXIpOiBBZGQgc3VwcG9ydCBmb3IgSE9TVF9CSVRTX1BFUl9XSURFX0lOVCA9PSA2NC4KCUNoYW5nZSBzdHJpbmcgZGVzY3JpcHRvciB0byBIT1NUX1dJREVfSU5UX1BSSU5UX0RFQy4KCVtUQVJHRVRfQVJDSDY0XTogVXNlIHRoZSBzZXF1ZW5jZSBvZiBzcGFyY19lbWl0X3NldF9jb25zdDY0X2xvbmd3YXkKCXRvIGxvYWQgYSA2NC1iaXQgY29uc3RhbnQuCgkoc3BhcmNfbm9uZmxhdF9mdW5jdGlvbl9wcm9sb2d1ZSk6IENoYW5nZSBzdHJpbmcgZGVzY3JpcHRvciB0bwoJSE9TVF9XSURFX0lOVF9QUklOVF9ERUMuICBDaGFuZ2Ugb2Zmc2V0IHR5cGUgdG8gSE9TVF9XSURFX0lOVC4KCShvdXRwdXRfcmVzdG9yZV9yZWdzKTogQ2hhbmdlIG9mZnNldCB0eXBlIHRvIEhPU1RfV0lERV9JTlQuCgkoc3BhcmNfbm9uZmxhdF9mdW5jdGlvbl9lcGlsb2d1ZSk6IENoYW5nZSBzdHJpbmcgZGVzY3JpcHRvciB0bwoJSE9TVF9XSURFX0lOVF9QUklOVF9ERUMuICBVc2UgYnVpbGRfYmlnX251bWJlci4KCShvdXRwdXRfc2liY2FsbCk6IENoYW5nZSBzaXplIHR5cGUgdG8gSE9TVF9XSURFX0lOVC4gIFVzZQoJYnVpbGRfYmlnX251bWJlci4gIENoYW5nZSBzdHJpbmcgZGVzY3JpcHRvciB0byBIT1NUX1dJREVfSU5UX1BSSU5UX0RFQy4KCShzcGFyY19mcmFtZV9pbmZvKTogQ2hhbmdlIHR5cGVzIGZvciBzZXZlcmFsIGNvbXBvbmVudHMuCgkoc3BhcmNfZmxhdF9jb21wdXRlX2ZyYW1lX3NpemUpOiBVcGRhdGUgdHlwZXMgYWNjb3JkaW5nIHRvIHByZXZpb3VzCgljaGFuZ2UuCgkoc3BhcmNfZmxhdF9mdW5jdGlvbl9wcm9sb2d1ZSk6IENoYW5nZSBzdHJpbmcgZGVzY3JpcHRvciB0bwoJSE9TVF9XSURFX0lOVF9QUklOVF9ERUMuICBDaGFuZ2Ugb2Zmc2V0IHR5cGUgdG8gaW50LiAgVXNlCglidWlsZF9iaWdfbnVtYmVyLgoJKHNwYXJjX2ZsYXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBDaGFuZ2Ugb2Zmc2V0IHR5cGUgdG8gaW50LgoJUmVuYW1lICdzaXplMScgaW50byAncmVnX29mZnNldDEnLiAgQ2hhbmdlIHN0cmluZyBkZXNjcmlwdG9yIHRvCglIT1NUX1dJREVfSU5UX1BSSU5UX0RFQy4gIFVzZSBidWlsZF9iaWdfbnVtYmVyLiAgQ2hhbmdlIGJpZyBudW1iZXIKCWxpbWl0IHRvIDQwOTYgaW5zdGVhZCBvZiA0MDk1LgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKG1lbXNfb2tfZm9yX2xkZF9wZWVwKTogQ2hhbmdlIG9mZnNldCB0eXBlIHRvCglIT1NUX1dJREVfSU5ULgoKMjAwMy0xMS0yNCAgV2FsZGVrIEhlYmlzY2ggPGhlYmlzY2hAbWF0aC51bmkud3JvYy5wbD4KCgkqIGZ1bmN0aW9uLmM6IE1ha2Ugb3V0ZXJfZnVuY3Rpb24tY2hhaW4gZXh0ZXJuYWwuCgkqIGZ1bmN0aW9uLmg6IExpa2V3aXNlLgoKMjAwMy0xMS0yNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYyAobWlwcy1zZ2ktaXJpeDYqKTogQWRkIHQtaXJpczZnbGQgdG8gdG1ha2VfZmlsZSB3aGVuCgl1c2luZyBHTlUgbGQuCgkqIGNvbmZpZy9taXBzL2lyaXM2LmggKElSSVg2X1NUQVJURklMRV9TUEVDKTogTmV3LCB0YWtpbmcgdGhlCgl3aG9sZSBvZiB0aGUgcHJldmlvdXMgU1RBUlRGSUxFX1NQRUMgZXhjZXB0IGNydGJlZ2luLm8lcy4KCShJUklYNl9FTkRGSUxFX1NQRUMpOiBMaWtld2lzZSBFTkRGSUxFX1NQRUMgYW5kIGNydGVuZC5vJXMuCgkoU1RBUlRGSUxFX1NQRUMsIEVOREZJTEVfU1BFQyk6IERlZmluZSBpbiB0ZXJtcyBvZiB0aGUgYWJvdmUuCgkoU1VCVEFSR0VUX0VYVFJBX1NQRUNTKTogRGVmaW5lLgoJKiBjb25maWcvbWlwcy9pcmlzNmdsZC5oIChMSU5LX1NQRUMpOiBDaGFuZ2UgLWluaXQgZnVuY3Rpb24KCXRvIF9fZ2NjX2luaXQgYW5kIC1maW5pIGZ1bmN0aW9uIHRvIF9fZ2NjX2ZpbmkuCgkoU1RBUlRGSUxFX1NQRUMpOiBSZWRlZmluZSwgaW5jbHVkaW5nIGlyaXg2LWNydGkubyBiZWZvcmUgY3J0YmVnaW4uby4KCShFTkRGSUxFX1NQRUMpOiBMaWtld2lzZSwgaW5jbHVkaW5nIGlyaXg2LWNydG4ubyBhZnRlciBjcnRlbmQuby4KCShJTklUX1NFQ1RJT05fQVNNX09QLCBGSU5JX1NFQ1RJT05fQVNNX09QKTogRGVmaW5lLgoJKiBjb25maWcvbWlwcy90LWlyaXM2Z2xkLAoJKiBjb25maWcvbWlwcy9pcml4Ni1jcnRpLmFzbSwKCSogY29uZmlnL21pcHMvaXJpeDYtY3J0bi5hc206IE5ldyBmaWxlcy4KCjIwMDMtMTEtMjQgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCVBSIEMvMTMwMTQKCSogYy1kZWNsLmMgKGNfaW5faXRlcmF0aW9uX3N0bXQsIGNfaW5fY2FzZV9zdG10KTogTmV3LgoJKHN0YXJ0X2Z1bmN0aW9uKTogVXNlLgoJKGNfcHVzaF9mdW5jdGlvbl9jb250ZXh0KTogRGl0dG8uCgkoYy1wb3BfZnVuY3Rpb25fY29udGV4dCk6IERpdHRvLgoJKGxhbmd1YWdlX2Z1bmN0aW9uKTogTW92ZS4uLgoJKiBjLXRyZWUuaDogLi4uIGhlcmUuIEFkZCB4X2luX2l0ZXJhdGlvbl9zdG10LCBhbmQKCXhfaW5fY2FzZV9zdG10LgoJKiBjLXBhcnNlLmluIChkb19zdG10X3N0YXJ0LCBzZWxlY3Rfb3JfaXRlcl9zdG10LCBzdG10KTogVXNlCgljX2luX2l0ZXJhdGlvbl9zdG10LCBjX2luX2Nhc2Vfc3RtdCBmb3IgcGFyc2VyIHN0YXRlLiBNb3ZlCgljaGVjayBmb3IgdmFsaWQgYnJlYWsgb3IgY29udGludWUgc3RhdG1lbnQgaGVyZS4uLgoJKiBjLXNlbWFudGljcy5jIChnZW5ydGxfYnJlYWtfc3RtdCwgZ2VucnRsX2NvbnRpbnVlX3N0bXQpOiBGcm9tCgloZXJlLiBDaGFuZ2Ugb3JpZ2luYWwgZXJyb3JzIHRvIGFib3J0LgoKMjAwMy0xMS0yNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogIERvIG5vdCByZXR1cm4gZWFybHkgd2hlbiBvcHRpbWl6aW5nCglDT01QT05FTlRfUkVGIGFuZCBjb25zdGFudC4KCjIwMDMtMTEtMjQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKHRhYmxlanVtcF9oODMwMCk6IENoYW5nZSB0bwoJKnRhYmxlanVtcF9oODMwMC4KCSh0YWJsZWp1bXBfaDgzMDBoKTogQ2hhbmdlIHRvICp0YWJsZWp1bXBfaDgzMDBoc19hZHZhbmNlZC4KCSh0YWJsZWp1bXBfbm9ybWFsX21vZGUpOiBDaGFuZ2UgdG8gKnRhYmxlanVtcF9oODMwMGhzX25vcm1hbC4KCShpbmRpcmVjdF9qdW1wX2g4MzAwKTogQ2hhbmdlIHRvICppbmRpcmVjdF9qdW1wX2g4MzAwLgoJKGluZGlyZWN0X2p1bXBfaDgzMDBoKTogQ2hhbmdlIHRvCgkqaW5kaXJlY3RfanVtcF9oODMwMGhzX2FkdmFuY2VkLgoJKGluZGlyZWN0X2p1bXBfbm9ybWFsX21vZGUpOiBDaGFuZ2UgdG8KCSppbmRpcmVjdF9qdW1wX2g4MzAwaHNfbm9ybWFsLgoKMjAwMy0xMS0yNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogUmVtb3ZlIGNvbnN0cmFpbnRzIGZyb20gZXhwYW5kZXJzLgoKMjAwMy0xMS0yNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogKHN0bV9oODMwMHNfMik6IENoYW5nZSB0aGUgbmFtZSB0bwoJc3RtX2g4MzAwc18yX2FkdmFuY2VkLgoJKHN0bV9oODMwMHNfMl9ub3JtYWwpOiBOZXcuCgkoc3RtX2g4MzAwc18yKTogTGlrZXdpc2UuCgkoc3RtX2g4MzAwc18zKTogQ2hhbmdlIHRoZSBuYW1lIHRvIHN0bV9oODMwMHNfM19hZHZhbmNlZC4KCShzdG1faDgzMDBzXzNfbm9ybWFsKTogTmV3LgoJKHN0bV9oODMwMHNfMyk6IExpa2V3aXNlLgoJKHN0bV9oODMwMHNfNCk6IENoYW5nZSB0aGUgbmFtZSB0byBzdG1faDgzMDBzXzRfYWR2YW5jZWQuCgkoc3RtX2g4MzAwc180X25vcm1hbCk6IE5ldy4KCShzdG1faDgzMDBzXzQpOiBMaWtld2lzZS4KCShsZG1faDgzMDBzXzIpOiBDaGFuZ2UgdGhlIG5hbWUgdG8gbGRtX2g4MzAwc18yX2FkdmFuY2VkLgoJKGxkbV9oODMwMHNfMl9ub3JtYWwpOiBOZXcuCgkobGRtX2g4MzAwc18yKTogTGlrZXdpc2UuCgkobGRtX2g4MzAwc18zKTogQ2hhbmdlIHRoZSBuYW1lIHRvIGxkbV9oODMwMHNfM19hZHZhbmNlZC4KCShsZG1faDgzMDBzXzNfbm9ybWFsKTogTmV3LgoJKGxkbV9oODMwMHNfMyk6IExpa2V3aXNlLgoJKGxkbV9oODMwMHNfNCk6IENoYW5nZSB0aGUgbmFtZSB0byBsZG1faDgzMDBzXzRfYWR2YW5jZWQuCgkobGRtX2g4MzAwc180X25vcm1hbCk6IE5ldy4KCShsZG1faDgzMDBzXzQpOiBMaWtld2lzZS4KCSh0d28gcGVlcGhvbGUyJ3MpOiBFbmFibGUgb25seSB3aXRoICFUQVJHRVRfTk9STUFMX01PREUuCgkodHdvIHBlZXBob2xlMidzKTogTmV3LgoKMjAwMy0xMS0yNCAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogZ2VuYXR0cnRhYi5jIChzaW1wbGlmeV9jb25kKTogVXBkYXRlIGluZGljZXMgY29ycmVjdGx5LgoJKGF0dHJfYWx0X3N1YnNldF9wLCBhdHRyX2FsdF9zdWJzZXRfb2ZfY29tcGxfcCwgYXR0cl9hbHRfaW50ZXJzZWN0aW9uLAoJYXR0cl9hbHRfdW5pb24sIGF0dHJfYWx0X2NvbXBsZW1lbnQsIGF0dHJfYWx0X2JpdF9wLCBta19hdHRyX2FsdCk6IE5ldy4KCShjaGVja19hdHRyX3Rlc3QsIGVuY29kZV91bml0c19tYXNrLCBjb21wdXRlX2FsdGVybmF0aXZlX21hc2ssCgltYWtlX2FsdGVybmF0aXZlX2NvbXBhcmUsIHNpbXBsaWZ5X2FuZF90cmVlLAoJYXR0cl9ydHhfY29zdCwgc2ltcGxpZnlfdGVzdF9leHAsIGdlbl9hdHRyLAoJd3JpdGVfdGVzdF9leHByLCB3YWxrX2F0dHJfdmFsdWUpOiBIYW5kbGUgRVFfQVRUUl9BTFQuCgkqIHJ0bC5kZWYgKEVRX0FUVFJfQUxUKTogTmV3LgoKMjAwMy0xMS0yMyAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogZ2VuYXR0cnRhYi5jIChzdHJjbXBfY2hlY2ssIERFRl9BVFRSX1NUUklORyk6IE5ldyBtYWNyb3MuCgkobGVuZ3RoX3N0ciwgZGVsYXlfdHlwZV9zdHIsIGRlbGF5XzFfMF9zdHIsIG51bV9kZWxheV9zbG90c19zdHIpOgoJTmV3IHZhcmlhYmxlcy4KCShtYWluKTogSW5pdGlhbGl6ZSB0aGVtLgoJKGZpbmRfYXR0cik6IENhbm9uaWNhbGl6ZSB0aGUgYXR0cmlidXRlIG5hbWUgc3RyaW5nLgoJKGF0dHJfcnR4XzEsIGNvcHlfYm9vbGVhbiwgZXhwYW5kX2RlbGF5cywgZ2VuX3VuaXQpOiBBbHdheXMgY2Fub25pY2FsaXplCglzdHJpbmcgYXJndW1lbnRzLgoJKGF0dHJfcHJpbnRmLCBhdHRyX2VxKTogVXNlIERFRl9BVFRSX1NUUklORy4KCShjaGVja19hdHRyX3Rlc3QsIGNoZWNrX2F0dHJfdmFsdWUsIG1ha2VfbGVuZ3RoX2F0dHJzLAoJd3JpdGVfbGVuZ3RoX3VuaXRfbG9nLCBzaW1wbGlmeV9ieV9leHBsb2RpbmcsIGdlbl9hdHRyLAoJd3JpdGVfdGVzdF9leHByLCB3cml0ZV9hdHRyX3ZhbHVlLCB3cml0ZV9lbGlnaWJsZV9kZWxheSwKCXdyaXRlX2NvbXBsZXhfZnVuY3Rpb24sIG1ha2VfaW50ZXJuYWxfYXR0ciwKCXdyaXRlX2NvbnN0X251bV9kZWxheV9zbG90cyk6IENoYW5nZWQgZHVlIHRvIGNoYW5nZSBvZiB0eXBlIG9mCglmaW5kX2F0dHIuCgkoZmlsbF9hdHRyLCBldmFsdWF0ZV9lcV9hdHRyLCBzaW1wbGlmeV9hbmRfdHJlZSwKCWF0dHJfcnR4X2Nvc3QsIHNpbXBsaWZ5X2J5X2V4cGxvZGluZywgd2Fsa19hdHRyX3ZhbHVlKTogVXNlCglzdHJjbXBfY2hlY2suCgoyMDAzLTExLTIzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCVBSIHRhcmdldC8xMzEyMgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAocHVzaCk6IENhbGwgcHVzaF9oODMwMGhzX25vcm1hbCBpbgoJbm9ybWFsIG1vZGUuCgkocG9wKTogQ2FsbCBwb3BfaDgzMDBoc19ub3JtYWwgaW4gbm9ybWFsIG1vZGUuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogTGlrZXdpc2UuCgkocHVzaHFpMV9oODMwMGhzX25vcm1hbCk6IE5ldy4KCShwdXNocWkxKTogQ2FsbCBwdXNocWkxX2g4MzAwaHNfbm9ybWFsIGluIG5vcm1hbCBtb2RlLgoJKHB1c2hoaTFfaDgzMDBoc19ub3JtYWwpOiBOZXcuCgkocHVzaGhpMSk6IENhbGwgcHVzaGhpMV9oODMwMGhzX25vcm1hbCBpbiBub3JtYWwgbW9kZS4KCShwdXNoX2g4MzAwaHNfbm9ybWFsKTogTmV3LgoJKHBvcF9oODMwMGhzX25vcm1hbCk6IExpa2V3aXNlLgoKMjAwMy0xMS0yMyAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogZ2VuYXR0cnRhYi5jIChjb3VudF9zdWJfcnR4cyk6IFJlbW92ZWQuCgoyMDAzLTExLTIzICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIHJlY29nLmMgKHByZXByb2Nlc3NfY29uc3RyYWludHMpOiBPbmx5IHplcm8gdGhvc2UgZWxlbWVudHMgb2YKCXJlY29nX29wX2FsdCB0aGF0IGFyZSBuZWVkZWQgZm9yIHRoaXMgaW5zbi4KCSogYXJtLmMgKG5vdGVfaW52YWxpZF9jb25zdGFudHMpOiBBIGZ1bmN0aW9uIGNhbid0IGNvbnRhaW4gaW52YWxpZAoJY29uc3RhbnRzIGlmIGl0IGhhcyBubyBjb25zdHJhaW50cy4KCjIwMDMtMTEtMjIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoY2xhc3NpZnlfYXJndW1lbnQpOiBQYXNzIF9fZmxvYXQxMjggaW4gbWVtb3J5LgoJKGl4ODZfcmV0dXJuX2luX21lbW9yeSk6IExpa2V3aXNlLgoJKGl4ODZfbGliY2FsbF92YWx1ZSk6IExpa2V3c2llLgoKMjAwMy0xMS0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChkb3NpemUpOiBDb252ZXJ0IHRvIElTTy1DLgoKMjAwMy0xMS0yMiAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBmbG93LmMgKHVwZGF0ZV9saWZlX2luZm8pOiBBbWVuZCBjb21tZW50IGFib3V0IHdoZW4gYSByZWdpc3RlcgoJY2FuIGJlY29tZSBkZWFkLgoKMjAwMy0xMS0yMSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGRvYy8uY3ZzaWdub3JlOiBEZWxldGUuCgoyMDAzLTExLTIxICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCSAgICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBkd2FyZjJvdXQuYyAoYWRkX2xvY2F0aW9uX29yX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IEFkZCBzdXBwb3J0Cglmb3IgUEFSQUxMRUwuCgoyMDAzLTExLTIxICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZy9taXBzL3QtaXJpczYgKENSVFNUVUZGX1RfQ0ZMQUdTKTogQWRkIC1Xbm8tZXJyb3IuCgkoVEFSR0VUX0xJQkdDQzJfQ0ZMQUdTKTogRGVmaW5lLgoKCSogY3J0c3R1ZmYuYyBbSEFTX0lOSVRfU0VDVElPTl0gKF9fZG9fZ2xvYmFsX2R0b3JzKTogRGVjbGFyZS4KCShfX2RvX2dsb2JhbF9jdG9ycyk6IExpa2V3aXNlLgoKMjAwMy0xMS0yMSAgTWFyayBXaWVsYWFyZCAgPG1hcmtAa2xvbXAub3JnPgoKCSogZG9jL2ludm9rZS50ZXhpICgtTzIpOiBEb2Vzbid0IGVuYWJsZSAtZndlYi4KCjIwMDMtMTEtMjEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvaW52b2tlLnRleGk6IE1lbnRpb24gZFYgYW5kIGRaLgoKMjAwMy0xMS0yMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy9pbnZva2UudGV4aTogVXBkYXRlIGR1bXAgZmlsZSBuYW1lcy4KCVJlbW92ZSBkZSwgZFcsIGFuZCBkWC4KCjIwMDMtMTEtMjAgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCglQUiBjLzEzMTMzCgkqIHJlbG9hZDEuYyAocmVsb2FkKTogRGVsZXRlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHNldGptcC4KCjIwMDMtMTEtMjEgIEFuZHJlYXMgVG9ibGVyICA8YS50b2JsZXJAc2Nod2Vpei5jaD4KCgkqIG1rbGliZ2NjLmluOiBFdmFsdWF0ZSBzaGxpYl9zbGliZGlyX3F1YWwgZHVyaW5nIGxpbmsKCXN0ZXAgdG9vLgoJKiBjb25maWcvdC1zbGliZ2NjLWRhcndpbjogQWRqdXN0IGluc3RhbGwgcGF0aC4KCSogY29uZmlnL3JzNjAwMC90LWRhcndpbjogUmV2ZXJ0IG11bHRpbGliIG1hdGNoZXMgc2luY2UKCWl0IGlzIG5vdCB1c2VkIG9uIGRhcndpbi4KCjIwMDMtMTEtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBzc2EuYywgc3NhLWRjZS5jLCBzc2EtY2NwLmM6IFJlbW92ZSBmaWxlcy4KCSogTWFrZWZpbGUuaW4gKE9CSlMtY29tbW9uLCBHVEZJTEVTKTogRG9uJ3QgcmVmZXJlbmNlIHRoZW0uCgkoZ3R5cGUtZGVzYy5vLCB0b3BsZXYubywgZmxvdy5vKTogUmVtb3ZlIHNzYS5oLgoJKHNzYS5vLCBzc2EtZGNlLm8sIHNzYS1jY3Aubyk6IFJlbW92ZS4KCSogZmxvdy5jOiBEb24ndCBpbmNsdWRlIHNzYS5oLgoJKHNldF9waGlfYWx0ZXJuYXRpdmVfcmVnKTogUmVtb3ZlLgoJKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogRG9uJ3QgY2FsbCBpdC4KCShtYXJrX3VzZWRfcmVncyk6IERvbid0IGhhbmRsZSBQSEkuCgkqIGdlbmd0eXBlLmMgKG9wZW5fYmFzZV9maWxlcyk6IERvbid0IHJlZmVyZW5jZSBzc2EuaC4KCSogcnRsLmRlZiAoUEhJKTogUmVtb3ZlLgoJKiB0aW1ldmFyLmRlZiAoVFZfVE9fU1NBLCBUVl9TU0FfQ0NQLCBUVl9TU0FfRENFLCBUVl9GUk9NX1NTQSk6IEtpbGwuCgkqIGNvbW1vbi5vcHQ6IFJlbW92ZSAtZnNzYSwgLWZzc2EtY2NwLCAtZnNzYS1kY2UuCgkqIG9wdHMuYyAoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKGZfb3B0aW9ucyk6IExpa2V3aXNlLgoJKERGSV9zc2EsIERGSV9zc2FfY2NwLCBERklfc3NhX2RjZSwgREZJX3Vzc2EpOiBSZW1vdmUuCgkoZHVtcF9maWxlKTogVXBkYXRlIHRvIG1hdGNoLgoJKGZsYWdfc3NhLCBmbGFnX3NzYV9jY3AsIGZsYWdfc3NhX2RjZSk6IFJlbW92ZS4KCShyZXN0X29mX2hhbmRsZV9zc2EpOiBSZW1vdmUuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IERvbid0IGNhbGwgaXQuCgkqIHRvcGxldi5oIChmbGFnX3NzYSwgZmxhZ19zc2FfZGNlLCBmbGFnX3NzYV9jY3ApOiBSZW1vdmUuCgkqIGRvYy9pbnZva2UudGV4aTogUmVtb3ZlIC1mc3NhLCAtZnNzYS1jY3AsIC1mc3NhLWRjZS4KCSogZG9jL3Bhc3Nlcy50ZXhpIChTU0Egb3B0aW1pemF0aW9ucyk6IFJlbW92ZS4KCjIwMDMtMTEtMjAgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWd1cmUuaW46IEFkZCB4dGVuc2EtKi0qIHRhcmdldHMgdG8gdGVzdCBmb3IgZHdhcmYyIGRlYnVnX2xpbmUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMTEtMjAgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoTWFrZWZpbGUpOiBQYXNzIGFsb25nIENPTkZJR19TSEVMTC4KCjIwMDMtMTEtMjAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBjb25maWcvdC1saWJ1bndpbmQgKExJQjJBRERFSCk6IEFkZCB1bndpbmQtYy5jLgoJKFNITElCX0xDKTogRGVmaW5lLgoJKiB1bndpbmQtbGlidW53aW5kLmMgKF9VbndpbmRfR2V0Q0ZBKTogSW1wbGVtZW50LgoJKF9VbndpbmRfR2V0QlNQKSBbVU5XX1RBUkdFVF9JQTY0XTogTmV3IGZ1bmN0aW9uLgoKMjAwMy0xMS0yMCAgRmFyaWJvcnogSmFoYW5pYW4gIDxmamFoYW5pYW5AYXBwbGUuY29tPgoJICAgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogQWxsb2NhdGUgbmV3IHRlbXAgaW4gcGFzczEuCgkoc3RvcmVfb25lX2FyZyk6IElmIFBBUkFMTEVMLCBjYWxjdWxhdGUgZXhjZXNzIHVzaW5nIG1vZGUgc2l6ZSBvZgoJcnR2ZWMgZWx0LgoJKiBleHByLmMgKGVtaXRfcHVzaF9pbnNuKTogSWYgUEFSQUxMRUwsIGNhbGN1bGF0ZSBvZmZzZXQgdXNpbmcKCW1vZGUgc2l6ZSBvZiBydHZlYyBlbHQuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IFVzZSBwYXJtIGluIHJlZ2lzdGVyLCBpZiBhdmFpbGFibGUuCgoyMDAzLTExLTIwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2xpYjFmdW5jcy5hc20gKE1PVlApOiBSZW1vdmUuCgkoQUREUCk6IExpa2V3aXNlLgoJKENNUFApOiBMaWtld2lzZS4KCjIwMDMtMTEtMjAgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKHVzZV9yZXR1cm5faW5zbik6IE5ldyBhcmd1bWVudCwgU0lCTElORy4gIFN1cHBvcnQgcmV0dXJuaW5nCgl3aXRoIGEgc2luZ2xlIGluc3RydWN0aW9uIGlmIHRoZSBzdGFjayBoYXMgYmVlbiBkZWNyZW1lbnRlZCBieSA0CglhbmQgd2UgaGF2ZSBhIGZyYW1lIHBvaW50ZXIuICBVcGRhdGUgYWxsIGNhbGxlcnMuCgkob3V0cHV0X3JldHVybl9pbnN0cnVjdGlvbik6IExpa2V3aXNlLgoJKGFybV9vdXRwdXRfZXBpbG9ndWUpOiBDaGFuZ2UgYXJndW1lbnQgdG8gU0lCTElORy4gIENhbGN1bGF0ZQoJcmVhbGx5X3JldHVybiBmcm9tIHRoZSBuZXcgYXJndW1lbnQuICBVcGRhdGUgYWxsIGNhbGxlcnMuCgkqIGFybS5oIChVU0VfUkVUVVJOX0lOU04pOiBQYXNzIE5VTEwgZm9yIHRoZSBzaWJsaW5nLgoJKiBhcm0ubWQgKHNpYmNhbGxfZXBpbG9ndWUpOiBDYWxsIHVzZV9yZXR1cm5faW5zbiBkaXJlY3RseSwgYW5kCglwYXNzIHRoZSBzaWJsaW5nIGNhbGwuCgkqIGFybS1wcm90b3MuaCAodXNlX3JldHVybl9pbnNuLCBhcm1fb3V0cHV0X2VwaWxvZ3VlKTogVXBkYXRlCglwcm90b3R5cGVzLgoKMjAwMy0xMS0yMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBNYWtlZmlsZS5pbiAoZXh0cmFjbGVhbik6IERlbGV0ZS4KCSogY29uZmlndXJlLmluICh0YXJnZXRfbGlzdCk6IFJlbW92ZSBleHRyYWNsZWFuLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGRvYy9tYWtlZmlsZS50ZXhpLCBkb2Mvc291cmNlYnVpbGQudGV4aTogVXBkYXRlLgoJKiBvYmpjL01ha2UtbGFuZy5pbiAob2JqYy5leHRyYWNsZWFuKTogRGVsZXRlLgoKMjAwMy0xMS0yMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBNYWtlZmlsZS5pbiAobGFuZ19jaGVja3MpOiBBZGQuCgkoY2hlY2stYysrLCBjaGVjay1mNzcsIGNoZWNrLWphdmEsIGNoZWNrLWcrKywgY2hlY2stZzc3LAoJY2hlY2stb2JqYyk6IFJlbW92ZSBoYXJkY29kZWQgdGFyZ2V0cy4KCSogZG9jL3NvdXJjZWJ1aWxkLnRleGk6IERvY3VtZW50IHRlc3RzdWl0ZSBob29rcy4KCSogb2JqYy9NYWtlLWxhbmcuaW4gKGNoZWNrLW9iamMsIGxhbmdfY2hlY2tzKTogQWRkLgoKMjAwMy0xMS0xOSAgU2NvdHQgU255ZGVyICA8c255ZGVyQGZuYWwuZ292PgoKCVBSIHRhcmdldC8xMzEzMQoJKiBkd2FyZjJvdXQuYyAoZ2VuX2FycmF5X3R5cGVfZGllKTogRFdfQVRfZGVjbGFyYXRpb24gc2hvdWxkIGJlIGEKCWZsYWcsIG5vdCBhIGNvbnN0YW50LgoKMjAwMy0xMS0xOSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9hcmMvYXJjLXByb3Rvcy5oOiBVcGRhdGUgdG8gQzkwIHByb3RvdHlwZXMuCgkqIGNvbmZpZy9hcmMvYXJjLmM6IExpa2V3aXNlLgoJKiBjb25maWcvYXJjL2luaXRmaW5pLmM6IExpa2V3aXNlLgoKMjAwMy0xMS0xOSAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX2dvdG8pOiBNZW1vcnkgY2xvYmJlcnMgYWRkZWQuCgoyMDAzLTExLTE5ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkcyk6IEFkZGVkIG1pc3NpbmcgdHlwZSBjYXN0cy4KCjIwMDMtMTEtMTkgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIGNvbWJpbmUuYyAoc2V0c19mdW5jdGlvbl9hcmdfcCk6IERlbGV0ZSB1bnVzZWQgZnVuY3Rpb24uCgoyMDAzLTExLTE5ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIHJlbG9hZDEuYyAocmVsb2FkKTogUmV2ZXJ0IDIgcHJldmlvdXMgY2hlY2tpbnMuCgoyMDAzLTExLTE5ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNwcHRyYWQuYyAoX2NwcF9zY2FuX291dF9sb2dpY2FsX2xpbmUpOiBJbXByb3ZlIHRlc3QgZm9yCgl3aGV0aGVyIGRpcmVjdGl2ZSBiZWdpbnMgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUuCgoyMDAzLTExLTE5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfaW5pdF9saWJmdW5jcyk6IENvcnJlY3QgdWZpeF9vcHRhYiBlbnRyaWVzLgoKMjAwMy0xMS0xOSAgR2VyYWxkIFBmZWlmZXIgIDxncEBzdXNlLmRlPgoKCSogZG9jL2luc3RhbGwudGV4aSAoU3BlY2lmaWMpOiBSZW1vdmUgaW5mb3JtYXRpb24gb24gb2xkIHZlcnNpb25zCglvZiBnbGliYyB2ZXJzdXMgb2xkIHZlcnNpb25zIG9mIEdDQy4KCjIwMDMtMTEtMTkgIFJpY2hhcmQgU0FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGVtaXQtcnRsLmMgKGdlbl9sb3dwYXJ0KTogRG9uJ3QgZm9yY2UgTUVNcyBpbnRvIGEgcmVnaXN0ZXIgdW5sZXNzCgl0aGUgcmVnaXN0ZXIgbG93cGFydCBpcyBhIFRSVUxZX05PT1BfVFJVTkNBVElPTi4KCjIwMDMtMTEtMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHByaW50X3JlZyk6IEhhbmRsZSBRSSBhbmQgSEkgbW9kZXMgZm9yCglub24gUSByZWdzLgoKMjAwMy0xMS0xOSAgQW5kcmVhcyBUb2JsZXIgIDxhLnRvYmxlckBzY2h3ZWl6LmNoPgoKCSogY29uZmlnL2NvbmZpZy5nY2MgKHBvd2VycGMtKi1kYXJ3aW4qKTogQWRkIGxpYmdjYyBidWlsZAoJc3BlY2lmaWNhdGlvbiBmaWxlLgoJKiBjb25maWcvdC1zbGliZ2NjLWRhcndpbjogTmV3IGZpbGUsIGxpYmdjYyBidWlsZCBzcGVjaWZpY2F0aW9uLgoJKiBjb25maWcvdC1kYXJ3aW46IEFkZCBsaWJnY2MyIGZsYWcgLWZQSUMuCgkqIGNvbmZpZy9yczYwMDAvdC1kYXJ3aW46IE11bHRpbGliIG1hdGNoZXMgZmxvYXQuCgkqIGxpYmdjYy1kYXJ3aW4udmVyOiBOZXcgZmlsZSwgY29udGFpbnMgbGliZ2NjIHN5bWJvbHMuCgoyMDAzLTExLTE4ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9uczMyay9uczMyay5oOiBSZW1vdmUgb2Jzb2xldGUgY29tbWVudC4KCjIwMDMtMTEtMTggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTE4MjEKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX3J0eF9jb3N0c18xKTogSW1wcm92ZSBlc3RpbWF0ZSBvZiB0aGUgY29kZQoJc2l6ZSBmb3IgY2FsbHMgdG8gbGliZ2NjJ3MgZGl2ICYgbW9kIHN1YnJvdXRpbmVzIHdoZW4gdXNpbmcgLU9zLgoKMjAwMy0xMS0xOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBoLmMgKGNoYW5nZV9kZWNsX2Fzc2VtYmxlcl9uYW1lKTogQXZvaWQgYm9ndXMgd2FybmluZ3MuCgoyMDAzLTExLTE4ICBNYXJjIEVzcGllICA8ZXNwaWVAb3BlbmJzZC5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0Lmg6IE9wZW5CU0QgaG9va3MuCgoyMDAzLTExLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZXhwci5jIChleHBhbmRfZXhwcik6IERvbid0IGxvb2sgdGhyb3VnaCBjb25zdGFudCBhcnJheXMgaWYKCXRoZXkgZG9uJ3QgYmluZCBsb2NhbGx5LgoKMjAwMy0xMS0xNyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoY29udmVydF9tb3ZlKTogVXNlIEdFVF9NT0RFX1BSRUNJU0lPTiBpbnN0ZWFkIG9mIGJpdHNpemUKCXdoZW4gc2VlaW5nIGlmIHRydW5jYXRpb24gb3IgZXh0ZW5zaW9uLgoKMjAwMy0xMS0xNyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiByZWxvYWQxLmMgKHJlbG9hZCk6IEZpeCBwcmV2aW91cyBjaGFuZ2UuCgoyMDAzLTExLTE3ICBTY290dCBTbnlkZXIgIDxzbnlkZXJAZm5hbC5nb3Y+CgoJUFIgZGVidWcvMTEzMjUKCSogZHdhcmYyb3V0LmMgKHN0cnVjdCBkaWVfc3RydWN0KTogQWRkIGRpZV9kZWZpbml0aW9uIGZpZWxkLgoJKGFkZF9BVF9zcGVjaWZpY2F0aW9uKTogTmV3LgoJKGdlbl9zdWJwcm9ncmFtX2RpZSwgZ2VuX3ZhcmlhYmxlX2RpZSwKCWdlbl9zdHJ1Y3Rfb3JfdW5pb25fdHlwZV9kaWUpOiBVc2UgaXQuCgkocHJ1bmVfdW51c2VkX3R5cGVzX21hcmspOiBJZiB3ZSdyZSBtYXJraW5nIGEgZm9yd2FyZCBkZWNsYXJhdGlvbiwKCWFsc28gbWFyayB0aGUgZnVsbCBkZWZpbml0aW9uLCBpZiBpdCBleGlzdHMuCgoyMDAzLTExLTE2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmggKEJVSUxEX1ZBX0xJU1RfVFlQRSk6IERlbGV0ZS4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LXByb3Rvcy5oICh4c3Rvcm15MTZfYnVpbGRfdmFfbGlzdCk6CglSZW1vdmUgcHJvdG90eXBlLgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYyAoeHN0b3JteTE2X2J1aWxkX3ZhX2xpc3QpOiBSZW5hbWUKCXRvIHhzdG9ybXkxNl9idWlsZF9idWlsdGluX3ZhX2xpc3QgYW5kIG1ha2Ugc3RhdGljLgoJKFRBUkdFVF9CVUlMRF9CVUlMVElOX1ZBX0xJU1QpOiBEZWZpbmUuCgoyMDAzLTExLTE2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oOiBBZGQgdGhlIHByb3RvdHlwZSBmb3IKCXNhbWVfY21wX2ZvbGxvd2luZ19wLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYyAoc2FtZV9jbXBfZm9sbG93aW5nX3ApOiBOZXcuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAocGVlcGhvbGUyKTogVXNlIGl0LgoKMjAwMy0xMS0xNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogRG9uJ3QgdXNlIFJFR05PIHdoZW4gaXRzIG9wZXJhbmQgaXMKCW5vdCBndWFyYW50ZWVkIHRvIGJlIGEgUkVHLgoKMjAwMy0xMS0xNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKGV4cHIubyk6IERlcGVuZCBvbiAkKFRBUkdFVF9IKS4KCSogdGFyZ2V0LmggKHJldHVybl9pbl9tc2IpOiBOZXcgdGFyZ2V0IGhvb2suCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX1JFVFVSTl9JTl9NU0IpOiBOZXcgbWFjcm8uCgkoVEFSR0VUX0NBTExTKTogSW5jbHVkZSBpdC4KCSogY2FsbHMuYyAoc2hpZnRfcmV0dXJuZWRfdmFsdWUpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2NhbGwpOiBVc2UgaXQuCgkqIGV4cHIuYzogSW5jbHVkZSB0YXJnZXQuaC4KCShjb3B5X2Jsa21vZGVfZnJvbV9yZWcpOiBDaGVjayB0YXJnZXRtLmNhbGxzLnJldHVybl9pbl9tc2Igd2hlbgoJZGVjaWRpbmcgd2hhdCBwYWRkaW5nIGlzIG5lZWRlZC4gIENoYW5nZSB0aGUgbmFtZSBvZiB0aGUgbG9jYWwKCXBhZGRpbmcgdmFyaWFibGUgZnJvbSBiaWdfZW5kaWFuX2NvcnJlY3Rpb24gdG8gcGFkZGluZ19jb3JyZWN0aW9uLgoJKiBzdG10LmMgKHNoaWZ0X3JldHVybl92YWx1ZSk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfcmV0dXJuKTogVXNlIGl0LiAgQWRqdXN0IG1lbW9yeS0+cmVnaXN0ZXIgY29weSBpbiB0aGUgc2FtZQoJd2F5IGFzIGNvcHlfYmxrbW9kZV9mcm9tX3JlZy4gIE9ubHkgY2hhbmdlIHRoZSByZXR1cm4gcmVnaXN0ZXIncwoJbW9kZSBpZiBpdCB3YXMgb3JpZ2luYWxseSBCTEttb2RlLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX1JFVFVSTl9JTl9NU0IpOiBEb2N1bWVudC4KCSogY29uZmlnL21pcHMvbWlwcy5jIChUQVJHRVRfUkVUVVJOX0lOX01TQik6IERlZmluZS4KCShtaXBzX2Zwcl9yZXR1cm5fZmllbGRzKTogTmV3LCBzcGxpdCBvdXQgZnJvbSBtaXBzX2Z1bmN0aW9uX3ZhbHVlLgoJKG1pcHNfcmV0dXJuX2luX21zYiwgbWlwc19yZXR1cm5fZnByX3BhaXIpOiBOZXcgZnVuY3Rpb25zLgoJKG1pcHNfZnVuY3Rpb25fdmFsdWUpOiBSZXdvcmsgdG8gdXNlIHRoZSBmdW5jdGlvbnMgYWJvdmUuCgkqIGNvbmZpZy9taXBzL2lyaXg2LWxpYmMtY29tcGF0LmM6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvdC1pcmlzNiAoTElCMkZVTkNTX1NUQVRJQ19FWFRSQSk6IFVuZGVmaW5lLgoKMjAwMy0xMS0xNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKC0tZW5hYmxlLWNoZWNraW5nKTogVXBkYXRlIHZhbGdyaW5kJ3MgVVJMLgoKMjAwMy0xMS0xNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogRml4IHdhcm5pbmdzIGJ5IHJlcGxhY2luZyAtMjE0NzQ4MzY0OAoJd2l0aCAtMjE0NzQ4MzY0NyAtIDEuCgoyMDAzLTExLTE2ICBHZXJhbGQgUGZlaWZlciAgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCglGaXggbGlua3MgaW4gb25saW5lIG1hbnVhbHMuCgkqIGRvYy9pbnZva2UudGV4aSAoSDgvMzAwIE9wdGlvbnMpOiBAeHJlZiB0byBsZCwgbm90IGxkLmluZm8uCgkoUHJlY29tcGlsZWQgSGVhZGVycyk6IEBweHJlZiB0byBjcHAsIG5vdCBjcHAuaW5mby4KCjIwMDMtMTEtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4sIG9iamMvTWFrZS1sYW5nLmluIChvYmpjLnRhZ3MpOiBDcmVhdGUgVEFHUy5zdWIKCWZpbGVzIGluIGVhY2ggZGlyZWN0b3J5IGFuZCBUQUdTIGZpbGVzIHRoYXQgaW5jbHVkZSB0aGVtIGZvciBlYWNoCglmcm9udCBlbmQuCgoyMDAzLTExLTE1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2xpYjFmdW5jcy5hc20gKGRpdm5vcm0pOiBTdG9yZSB0aGUgc2lnbiBpbiBiaXQKCTMgb2YgUzJMLgoJKG1vZG5vcm0pOiBMaWtld2lzZS4KCShleGl0ZGl2KTogTG9vayBhdCBiaXQgMyBvZiBTMkwgb25seS4KCjIwMDMtMTEtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoRE9fR0xPQkFMX0NUT1JTX0JPRFkpOiBGaXggd2FybmluZ3MuCgkoRE9fR0xPQkFMX0RUT1JTX0JPRFkpOiBMaWtld2lzZS4KCjIwMDMtMTEtMTUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogZG9jL2luc3RhbGwudGV4aSAoUHJlcmVxdWlzaXRlcyk6IFJlZmluZSBkb2N1bWVudGF0aW9uIG9mCglhdXRvY29uZiwgYXV0b21ha2UgYW5kIHBlcmwgcmVxdWlyZW1lbnRzLiAgRG9jdW1lbnQgcmVxdWlyZWQKCWdldHRleHQgdmVyc2lvbi4KCjwyMDAzLTExLTE0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IFVzZSBUUkVFX1RZUEUgdG8gZGV0ZXJtaW5lIHRoZSByZWFsCgl0eXBlIG9mIHRoZSBhcmd1bWVudCBvYmplY3QuCgoyMDAzLTExLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2xpYjFmdW5jcy5hc20gKF9fX3VkaXZzaTMpOiBQZWVsIG9mZiB0aGUgZmlyc3QKCWl0ZXJhdGlvbi4KCjIwMDMtMTEtMTQgIEZhcmlib3J6IEphaGFuaWFuIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX21vdmVfYmxvY2tfZnJvbV9yZWcpOgoJICBOZXcgcm91dGluZSB0byBzYXZlIHZhcmFyZyByZWdpc3RlcnMgb24gc3RhY2suIFN1cHBvcnQgZm9yCgkgIC1tcG93ZXJwYzY0IGluIG1peGVkIG1vZGUuCgoyMDAzLTExLTE0ICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmM6IFVzZSBDIHN0YXRlbWVudHMgaW5zdGVhZCBvZiAjaWZkZWYncyB3aGVuIHRlc3RpbmcKCWZvciBNT1RPUk9MQSB2ZXJzdXMgTUlUIHN5bnRheC4gIEltcHJvdmVzIHJlYWRhYmlsaXR5IGFuZCBwcm92aWRlcwoJYmV0dGVyIGNvbXBpbGUtdGltZSBlcnJvciBjaGVja2luZyBmb3IgYm90aCBjb2RlIHBhdGhzLgoKMjAwMy0xMS0xNCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9mcnYvZnJ2LXByb3Rvcy5oOiBVcGRhdGUgZm9yIEM5MC4KCSogY29uZmlnL2Zydi9mcnYuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9mcnYvZnJ2YmVnaW4uYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9mcnYvZnJ2LmM6IExpa2V3aXNlLgoJKGZydl9hZGp1c3RfZmllbGRfYWxpZ24pOiBEZWxldGUgdW51c2VkIHZhcmlhYmxlLgoKMjAwMy0xMS0xNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogQWRkICdERUZBVUxUX0FCSSA9PSBBQklfREFSV0lOJwoJdG8gZWFjaCBwbGFjZSB3aGVyZSBUQVJHRVRfTE9OR19ET1VCTEVfMTI4IGlzIHVzZWQgd2l0aAoJREVGQVVMVF9BQkkgPT0gQUJJX0FJWC4KCgkqIGNwcGZpbGVzLmMgKF9jcHBfZmluZF9maWxlKTogTWFrZSAnb25lIG9yIG1vcmUgUENIIGZpbGVzIHdlcmUgZm91bmQnCgltZXNzYWdlIGNvbXBseSB3aXRoIEdOVSBzdGFuZGFyZHMuCgoyMDAzLTExLTE0ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCVBSLzY1NTIKCSogZnVuY3Rpb24uYyAoc3RydWN0IGVwaV9pbmZvKTogTmV3IGZpZWxkIGNvbnN0X2VxdWl2LgoJKHVwZGF0ZV9lcGlsb2d1ZV9jb25zdHMpOiBOZXcgZnVuY3Rpb24uCgkoa2VlcF9zdGFja19kZXByZXNzZWQpOiBDbGVhciBuZXcgZmllbGQgYW5kIHZlcmlmeSBzY3JhdGNoIHJlZ2lzdGVyCglkb2Vzbid0IGhhdmUgaXQgc2V0LgoJQ2FsbCBuZXcgZnVuY3Rpb24gdmlhIG5vdGVfc3RvcmVzLgoJKGhhbmRsZV9lcGlsb2d1ZV9zZXQpOiBBbGxvdyBzZXR0aW5nIFNQIGVxdWl2IHJlZyBpbiBkaWZmZXJlbnQgbW9kZS4KCUFsbG93IFBMVVMgd2hlcmUgc2Vjb25kIG9wZXJhbmQgaXMgcmVnaXN0ZXIga25vd24gc2V0IHRvIGNvbnN0YW50LgoJKGVtaXRfZXF1aXZfbG9hZCk6IFdyaXRlIGxvYWQgdXNpbmcgcHJvcGVyIG1vZGUgaWYgc291cmNlIGRpZmZlcmVudC4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAocmV0dXJuX2ludGVybmFsKTogUHV0IChyZXR1cm4pIGZpcnN0LgoKMjAwMy0xMS0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtIChfX191ZGl2c2kzKTogQWRkIGEgY29tbWVudC4KCjIwMDMtMTEtMTQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvbGliMWZ1bmNzLmFzbSAobW9kc2kzKTogRG9uJ3Qgc2F2ZSB1bnVzZWQKCXJlZ2lzdGVycy4KCShkaXZzaTMpOiBMaWtld2lzZS4KCShyZXRpKTogRG9uJ3QgcmVzdG9yZSB1bnVzZWQgcmVnaXN0ZXJzLgoKMjAwMy0xMS0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcjMwL2ZyMzAuYzogSW5jbHVkZSB0b3BsZXYuaAoKMjAwMy0xMS0xNCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBleGNlcHQuYyAoc2psal9lbWl0X2Z1bmN0aW9uX2VudGVyKTogTWFyayBpbnRlcm5hbCBsYWJlbCBhcyBMT0NBTC4KCjIwMDMtMTEtMTQgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKGFybV9lbWl0X3ZlY3Rvcl9jb25zdCwgYXJtX291dHB1dF9sb2FkX2dyKTogVXNlIElTTyBDCglmdW5jdGlvbiBkZWZpbml0aW9uIHN5bnRheC4KCjIwMDMtMTEtMTQgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogcmVsb2FkMS5jIChyZWxvYWQpOiBSZXZlcnQgcHJldmlvdXMgcGF0Y2guIE1ha2UKCWNoZWNrIGZvciBhc3NpZ25tZW50IGludG8gcmVnX2VxdWl2X2FkZHJlc3Mgc3RyaWN0ZXIuCgoyMDAzLTExLTE0ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmluIChQT1NUU1RBR0UxX0ZMQUdTX1RPX1BBU1MpOiBQYXNzIEFEQUZMQUdTLgoKMjAwMy0xMS0xNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X2luX3NtYWxsX2RhdGFfcCk6IFJldHVybiBmYWxzZSBmb3IgdW5rbm93bgoJc2VjdGlvbiBuYW1lcy4KCjIwMDMtMTEtMTQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMTI1MjYKCSogdHJlZS5jIChidWlsZCk6IEEgQ0FMTF9FWFBSIGhhcyBzaWRlLWVmZmVjdHMgaWYgaXRzIGFyZ3VtZW50cyBkby4KCSogY2FsbHMuYyAoY2FsbF9leHByX2ZsYWdzKTogTmV3IGZuLgoJKiB0cmVlLmg6IERlY2xhcmUgaXQuCgoyMDAzLTExLTEzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2xpYjFmdW5jcy5hc20gKF9fdWRpdnNpMyk6IFJlbW92ZS4KCShkaXZtb2RzaTMpOiBDaGFuZ2UgdGhlIG5hbWUgdG8gX19fdWRpdnNpMy4KCVVwZGF0ZSBhbGwgY2FsbGVycy4KCjIwMDMtMTEtMTMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmdjYzIuYyAoX19uZWdkaTIsIF9fYWRkdnNpMywgX19hZGR2ZGkzLCBfX3N1YnZzaTMsIF9fc3VidmRpMywKCV9fbXVsdnNpMywgX19uZWd2c2kyLCBfX25lZ3ZkaTIsIF9fbXVsdmRpMywgX19sc2hyZGkzLCBfX2FzaGxkaTMsCglfX2FzaHJkaTMsIF9fZmZzREkyLCBfX211bGRpMywgX19jbHpESTIsIF9fY3R6REkyLCBfX3Bhcml0eURJMiwKCV9fdWRpdm1vZGRpNCwgX19kaXZkaTMsIF9fbW9kZGkzLCBfX2NtcGRpMiwgX191Y21wZGkyLAoJX19maXh1bnN0ZkRJLCBfX2ZpeHVuc3hmREksIF9fZml4dW5zZGZESSwgX19maXh1bnNzZkRJLAoJX19mbG9hdGRpeGYsIF9fZmxvYXRkaXRmLCBfX2Zsb2F0ZGlkZiwgX19mbG9hdGRpc2YsIF9fZ2NjX2JjbXApOgoJQ29uc3QtaWZ5IGFuZC9vciBpbml0aWFsaXplIGF1dG9tYXRpYyB2YXJpYWJsZXMgYXQgZGVjbGFyYXRpb24uCgoyMDAzLTExLTEzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2xpYjFmdW5jcy5hc20gKGRpdm1vZHNpNCk6IFJlcGxhY2UgYWxsIHRoZSB1c2VzCglvZiBlcjQgd2l0aCBlcjMuICBBZGp1c3QgYWxsIGNhbGxlcnMuCgoyMDAzLTExLTEzICBBbmRyZXcgUGluc2tpIDxhcGluc2tpQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9waWNfb3V0cHV0X3Bvc3NpYmxlX3N0dWJfbGFiZWwpOgoJQWxsb3cgc3R1YiBzeW1ib2wgYmUgbm90IGRlZmluZWQgd2hlbiBvdXRwdXR0aW5nIHBvc3NpYmxlCglzdHViIGxhYmVsLgoKMjAwMy0xMS0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtIChfX191ZGl2c2kzKTogSnVtcCB0byByZXRpCglpbnN0ZWFkIG9mIGV4aXRkaXYuCgkoX19fdW1vZHNpMyk6IExpa2V3aXNlLgoJKGV4aXRkaXYpOiBEbyBub3QgcmVzdG9yZSBhbnkgcmVnaXN0ZXIuCgkocmV0aSk6IFJlc3RvcmUgcmVnaXN0ZXJzLgoKMjAwMy0xMS0xMyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogdHJlZS1pbmxpbmUuYyAod2Fsa190cmVlKTogSGFuZGxlIFBMQUNFSE9MREVSX0VYUFIuCgoyMDAzLTExLTEzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2xpYjFmdW5jcy5hc206IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwMy0xMS0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtICh1ZGl2c2kzKTogRG9uJ3Qgc2F2ZS9yZXN0b3JlCgl1bnVzZWQgcmVnaXN0ZXJzLiAgRG9uJ3QganVtcCB0byBleGl0ZGl2LgoJKHVtb2RzaTMpOiBMaWtld2lzZS4KCjIwMDMtMTEtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgS2VhbiBKb2huc3RvbiA8amtqQHNjby5jb20+CgoJUFIgYy8xMzAyOQoJKiB0b3BsZXYuYyAoY2hlY2tfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IERvIG5vdCB3YXJuIGFib3V0IHVudXNlZAoJc3RhdGljIGNvbnN0cy4KCjIwMDMtMTEtMTMgIFBhdmVsIFBpc2EgIDxwaXNhQGNtcC5mZWxrLmN2dXQuY3o+CgkgICAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtIChEZW5IaWdoTm9uWmVybyk6IE9wdGltaXplIHVzaW5nCgl0aGUgYXBwcm94aW1hdGUgcXVvdGllbnQgbWV0aG9kLgoKMjAwMy0xMS0xMyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBjb21iaW5lLmMgKGRpc3RyaWJ1dGVfbm90ZXMpOiBXaGVuIHJlLWRpc3RyaWJ1dGluZyB0aGUgbm90ZXMgZnJvbQoJYW4gaW5zbiB3ZSBhcmUgYWJvdXQgdG8gZGVsZXRlLCBlbnN1cmUgd2UgY2FuJ3QgZW5kIHVwIHdpdGggYSBjeWNsaWMKCWxpc3Qgb2Ygbm90ZXMuCgoyMDAzLTExLTEzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMjkyNgoJKiBleHByLmMgKGV4cGFuZF9hc3NpZ25tZW50KSBbQ09NUE9ORU5UX1JFRl06IERvbid0IHB1dAoJdGhlIFVOQ0hBTkdJTkdfUlRYX1AgZmxhZyBvbiBtZW1vcnkgcmVmZXJlbmNlcyB0byByZWFkLW9ubHkKCWNvbXBvbmVudHMgdGhhdCBhcmUgbm90IGFkZHJlc3NhYmxlLgoKMjAwMy0xMS0xMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtIChkaXZtb2RzaTQpOiBDbGVhciBTMFAgaW4KCURlbkhpZ2hOb25aZXJvLgoKMjAwMy0xMS0xMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIG9wdC8xMjI3NQoJKiBjLWRlY2wuYyAoZmluaXNoX2RlY2wpOiBVc2UgY2hhbmdlX2RlY2xfYXNzZW1ibGVyX25hbWUuCgkqIGMtcHJhZ21hLmMgKGhhbmRsZV9wcmFnbWFfcmVkZWZpbmVfZXh0bmFtZSk6IExpa2V3aXNlLgoJKiB2YXJhc20uYyAobWFrZV9kZWNsX3J0bCk6IExpa2V3aXNlLgoJKiBjZ3JhcGguYyAoY2hhbmdlX2RlY2xfYXNzZW1ibGVyX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuaCAoc2V0X2RlY2xfYXNzZW1ibGVyX25hbWUpOiBLaWxsIGRlYWQgZGVjbGFyYXRpb24uCgkoY2hhbmdlX2RlY2xfYXNzZW1ibGVyX25hbWUpOiBEZWNsYXJlLgoKCSogZGVjbC5jIChtYWtlX3J0bF9mb3Jfbm9ubG9jYWxfZGVjbCk6IFVzZSBjaGFuZ2VfZGVjbF9hc3NlbWJsZXJfbmFtZS4KCSogZGVjbDIuYyAobWFrZV9ydGxfZm9yX25vbmxvY2FsX2RlY2wpOiBVc2UgY2hhbmdlX2RlY2xfYXNzZW1ibGVyX25hbWUuCgoyMDAzLTExLTEyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2xpYjFmdW5jcy5hc20gKF9fX211bHNpMyk6IERvbid0IHNhdmUvcmVzdG9yZQoJYW4gdW51c2VkIHJlZ2lzdGVyLgoKMjAwMy0xMS0xMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIGJvb3RzdHJhcC8xMjc1MgoJKiBjb25maWcvbWlwcy90LWlyaXM2IChNVUxUSUxJQl9PUFRJT05TKTogUHV0IC1tYWJpPW4zMiBmaXJzdC4KCShNVUxUSUxJQl9PU0RJUk5BTUVTKTogUmVvcmRlciBhY2NvcmRpbmdseS4KCjIwMDMtMTEtMTIgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogcnM2MDAwLXByb3Rvcy5oIChyczYwMDBfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBBZGQuCgkocnM2MDAwX3N0YWNrX2luZm8pOiBSZW1vdmUuICAoZGVidWdfc3RhY2tfaW5mbyk6IFJlbW92ZS4KCShyczYwMDBfZW1pdF9laF9yZWdfcmVzdG9yZSk6IEFkZAoJKiByczYwMDAuYyAocnM2MDAwX3N0YWNrX3QpOiBNb3ZlIGZyb20gcnM2MDAwLmgsIGNoYW5nZSBkYXRhIHR5cGUKCW9mIHZhcnNfc2l6ZSBhbmQgdG90YWxfc2l6ZSB0byBIT1NUX1dJREVfSU5ULgoJKGVtaXRfZnJhbWVfc2F2ZSk6IENoYW5nZSBwYXJhbWV0ZXIgc2l6ZSB0byBIT1NUX1dJREVfSU5ULgoJKHJzNjAwMF9zdGFja19pbmZvKTogTWFrZSBzdGF0aWM7IGNoYW5nZSBkYXRhIHNpemUgdG8gSE9TVF9XSURFX0lOVC4KCShkZWJ1Z19zdGFja19pbmZvKTogTWFrZSBzdGF0aWM7IGNoYW5nZSBvdXRwdXQgZm9ybWF0IG9mIEhPU1RfV0lERV9JTlQKCXZhbHVlcy4KCShyczYwMDBfZW1pdF9laF9yZWdfcmVzdG9yZSk6IE5ldywgd2l0aCBjb2RlIGZvcm1lcmx5IGluIHJzNjAwMC5tZC4KCShyczYwMDBfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBOZXcsIHdpdGggY29kZSBmb3JtZXJseSBpbgoJSU5JVElBTF9FTElNSU5BVElPTl9PRkZTRVQuCgkqIHJzNjAwMC5oIChyczYwMDBfc3RhY2tfdCk6IFJlbW92ZS4KCShJTklUSUFMX0VMSU1JTkFUSU9OX09GRlNFVCk6IFJlcGxhY2UgY29kZSB3aXRoIGNhbGwgdG8gZnVuY3Rpb24KCXJzNjAwMF9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldC4KCSogcnM2MDAwLm1kIChVTlNQRUNWX0VIX1JSIHNwbGl0KTogUmVwbGFjZSBjb2RlIHdpdGggY2FsbCB0bwoJcnM2MDAwX2VtaXRfZWhfcmVnX3Jlc3RvcmUuCgoyMDAzLTExLTEyICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGMtdHlwZWNrLmMgKGNfY29udmVydF9wYXJtX2Zvcl9pbmxpbmluZyk6IEFkZCBhcmdudW0sIHdoaWNoCglpcyB0aGUgYXJndW1udCB3ZSBhcmUgcHJvY2Vzc2luZyBzbyB0aGF0IHdhcm5pbmdzIGFuZCBlcnJvcnMKCXdpbGwgaGF2ZSB0aGF0IGluZm9ybWF0aW9uLgoJKiBjLXRyZWUuaCAoY19jb252ZXJ0X3Bhcm1fZm9yX2lubGluaW5nKTogQWRkIGFyZ251bS4KCSogbGFuZy1ob29rcy1kZWYuaAoJKGxoZF90cmVlX2lubGluaW5nX2NvbnZlcnRfcGFybV9mb3JfaW5saW5pbmcpOiBMaWtld3NlLgoJKiBsYW5naG9va3MuYyAobGhkX3RyZWVfaW5saW5pbmdfY29udmVydF9wYXJtX2Zvcl9pbmxpbmluZyk6IExpa2V3aXNlLgoJKiBsYW5naG9va3MuaCAoY29udmVydF9wYXJtX2Zvcl9pbmxpbmluZyk6IExpa2V3aXNlLgoJKiB0cmVlLWlubGluZS5jIChpbml0aWFsaXplX2lubGluZWRfcGFyYW1ldGVycyk6IENvbXB1dGUgYW5kCglwYXNzIGFyZ251bSBkb3duLgoKMjAwMy0xMS0xMiAgQWxleGV5IFN0YXJvdm95dG92ICA8YWxleGV5LnN0YXJvdm95dG92QHN1bi5jb20+CgkgICAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzEyOTUzCgkqIHRyZWUtaW5saW5lLmMgKGlubGluZV9mb3JiaWRkZW5fcF8xKTogQWRkZWQgY2hlY2sgZm9yIEJVSUxUX0lOCgliZWZvcmUgc3dpdGNoIGJ5IEZVTkNUSU9OX0NPREUuCgoyMDAzLTExLTEyICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5tZCAoc3RvcmVoaSk6IEF2b2lkIHVzZSBvZiBleHBsaWNpdCBzdWJyZWcuCgkoc3RvcmVoaV9iaWdlbmQsIHN0b3JlaW50aGksIG1vdmhpX2JpZ2VuZCk6IExpa2V3aXNlLgoKMjAwMy0xMS0xMiAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBjb25maWcvc2gvc2gubWQgKHByZWZldGNoKTogTmV3IHBhdHRlcm4uCgoyMDAzLTExLTExICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIHJlbG9hZDEuYyAocmVsb2FkKTogVmVyaWZ5IHRoYXQgYWRkcmVzc2VzIGZvcgoJcmVnX2VxdWl2XyogYXJlIHZhbGlkIGZvciB0aGUgYXJjaGl0ZWN0dXJlLgoKMjAwMy0xMS0xMSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChwdXJnZV9hZGRyZXNzb2ZfMSk6IEFkZCBsaWJjYWxsIGNoZWNrLgoJUmVtb3ZlIHRlc3QgZm9yIGNhY2hlZCByZXBsYWNlbWVudHMgb24gZmFsbGJhY2sgY2FzZS4KCVNpbXBsaWZ5IG1vZGUgY29tcGFyaXNvbnMuIEFkZCBsaWJjYWxsIHRlc3QgZm9yCglwYXJhZG94aWNhbCBzdWJyZWdzLgoKMjAwMy0xMS0xMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC90LWg4MzAwOiBGaXggYW4gb2Jzb2xldGUgY29tbWVudC4KCjIwMDMtMTEtMTEgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIGV4cG1lZC5jIChzdG9yZV9iaXRfZmllbGQsIGV4dHJhY3RfYml0X2ZpZWxkKTogUmV2ZXJ0IGxhc3QgdHdvCgljaGFuZ2VzLgoKMjAwMy0xMS0xMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtOiBSZXBsYWNlIERlbkhpZ2haZXJvIHdpdGgKCURlbkhpZ2hOb25aZXJvLgoKMjAwMy0xMS0xMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZnVuY3Rpb25fcG9zc2libHlfaW5saW5lZF9wKTogVXNlCglyZWFsbHlfbm9faW5saW5lLgoKMjAwMy0xMS0xMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLmggKFRSQU1QT0xJTkVfVEVNUExBVEUpOiBGaXggZmx1c2hpbmcgb2YgY2FjaGUgbGluZXMgd2hlbgoJZ2VuZXJhdGluZyA2NC1iaXQgY29kZS4KCjIwMDMtMTEtMTAgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGxlZ2l0aW1hdGVfbG9fc3VtX2FkZHJlc3NfcCk6IFJlbW92ZQoJYWNjaWRlbnRhbCBjb21taXQgaW4gcHJldmlvdXMgY2hhbmdlLgoKMjAwMy0xMS0xMCAgRmFyaWJvcnogSmFoYW5pYW4gPGZqYWhhbmlhbkBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChTVEFDS19TSVpFX01PREUpOiBBZGQgZGVmaW5pdGlvbi4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocmVnX29yX21lbV9vcGVyYW5kKTogQWRkIG1hY2hvLXN0eWxlCglhZGRyZXNzIHJlY29nbml0aW9uLgoJKG1hY2hvX2xvX3N1bV9tZW1vcnlfb3BlcmFuZCk6IFJvdXRpbmUgdG8gcmVjb2duaXplIG1hY2hvLXN0eWxlCglhZGRyZXNzIHJlY29nbml0aW9uLgoKMjAwMy0xMS0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChnZW5fbGFiZWxfZGllKTogQ29wZSB3aXRoIERFQ0xfUlRMIG5vdCBzZXQuCgoyMDAzLTExLTEwICBNYXR0IEF1c3Rlcm4gIDxhdXN0ZXJuQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4tcHJvdG9zLmggKGRhcndpbl9hc3NlbWJsZV92aXNpYmlsaXR5KTogRGVjbGFyZS4KCSogY29uZmlnL2Rhcndpbi5jIChkYXJ3aW5fYXNzZW1ibGVfdmlzaWJpbGl0eSk6IERlZmluZS4gIFdhcm4gZm9yCglhbnl0aGluZyBvdGhlciB0aGFuIFZJU0lCSUxJVFlfREVGQVVMVCBhbmQgVklTSUJJTElUWV9ISURERU4uCgkqIGNvbmZpZy9kYXJ3aW4uaCAoVEFSR0VUX0FTTV9BU1NFTUJMRV9WSVNJQklMSVRZKTogVXNlCglkYXJ3aW5fYXNzZW1ibGVfdmlzaWJpbGl0eSBpbnN0ZWFkIG9mIGRlZmF1bHQuCgoyMDAzLTExLTEwICBXYWxkZWsgSGViaXNjaCAgPGhlYmlzY2hAbWF0aC51bmkud3JvYy5wbD4KCglQUiB0YXJnZXQvMTI4NjUKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX2luaXRpYWxpemVfdHJhbXBvbGluZSk6IENhbGwKCV9fZW5hYmxlX2V4ZWN1dGVfc3RhY2sgb25seSBhZnRlciB3cml0aW5nIG9udG8gdGhlIHN0YWNrLgoJKHNwYXJjNjRfaW5pdGlhbGl6ZV90cmFtcG9saW5lKTogTGlrZXdpc2UuCgoyMDAzLTExLTA5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGxvb3AuYyAoY2hlY2tfZGJyYV9sb29wKTogVHJ5IHN3YXBwaW5nIHRoZSBjb21wYXJpc29uIG9wZXJhbmRzCglvZiB0aGUgbG9vcCBjb25kaXRpb24gdG8gaWRlbnRpZnkgYSBzdWl0YWJsZSBpbmR1Y3Rpb24gdmFyaWFibGUuCgkqIHVucm9sbC5jIChsb29wX2l0ZXJhdGlvbnMpOiBMaWtld2lzZS4KCjIwMDMtMTEtMDkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IEZpeCBzcGFyYyB2cwoJc3BhcmM2NCAjY3B1IGFuZCAjbWFjaGluZSBhc3NlcnRpb25zLgoKMjAwMy0xMS0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChydGxhbmFsLm8pOiBEZXBlbmQgb24gQkFTSUNfQkxPQ0tfSC4KCjIwMDMtMTEtMDkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtb3B0aW1pemUuYyAodHJlZV9yZXN0X29mX2NvbXBpbGF0aW9uKTogRml4IHdhcm5pbmcuCgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9leHBhbmRfZnVuY3Rpb24pOiBVc2UKCWNncmFwaF9wb3NzaWJseV9pbmxpbmVkX3AuCgkqIHRyZWUtb3B0aW1pemUuYyAodHJlZV9yZXN0X29mX2NvbXBpbGF0aW9uKTogRG8gbm90IGtpbGwgc2F2ZWQgdHJlZS4KCgkqIG9wdHMuYyAoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBEbyBub3Qgc2V0IG1heC1pbmxpbmUtaW5zbnMuCgkqIHBhcmFtcy5kZWY6IFVwZGF0ZSBjb21tZW50cy4KCShQQVJBTV9NQVhfSU5MSU5FX0lOU05TKTogS2lsbC4KCSogaW52b2tlLnRleGkgKG1heC1pbmxpbmUtaW5zbnMpOiBLaWxsLgoKMjAwMy0xMS0wOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgYy8zMTkwCglQUiBjLzg3MTQKCSogYy1mb3JtYXQuYyAoc2V0X1dmb3JtYXQpOiBEbyBub3QgZW5hYmxlIC1XZm9ybWF0LXkyayBieSBkZWZhdWx0LgoJKiBpbnZva2UudGV4aTogVXBkYXRlLgoKMjAwMy0xMS0wOCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBvcHRpbWl6YXRpb24vMTI2MzAKCSogcGEuYyAoY29tcHV0ZV9tb3ZzdHJzaV9sZW5ndGgpOiBSZW5hbWUgdG8gY29tcHV0ZV9tb3ZzdHJfbGVuZ3RoLgoJSGFuZGxlIGxlbmd0aCBjb21wdXRhdGlvbiA2NC1iaXQgbW92ZXMuCgkoY29tcHV0ZV9jbHJzdHJfbGVuZ3RoLCBvdXRwdXRfYmxvY2tfY2xlYXIpOiBJbXBsZW1lbnQgYmxvY2sgY2xlYXIuCgkob3V0cHV0X2Jsb2NrX21vdmUpOiBIYW5kbGUgNjQtYml0IG1vdmVzLgoJKHBhX2FkanVzdF9pbnNuX2xlbmd0aCk6IFVzZSBjb21wdXRlX21vdnN0cl9sZW5ndGggYW5kCgljb21wdXRlX2NscnN0cl9sZW5ndGguCgkqIHBhLm1kIChtb3ZzdHJzaSk6IFJldmlzZSBvcGVyYW5kIG9yZGVyIGFuZCBjb21tZW50cy4gIERvbid0IHVzZQoJbWF0Y2hfc2NyYXRjaC4KCShtb3ZzdHJzaV9pbnRlcm5hbCk6IERlbGV0ZS4KCShtb3ZzdHJzaV9wcmVyZWxvYWQsIG1vdnN0cnNpX3Bvc3RyZWxvYWQpOiBOZXcgaW5zbnMuICBEZWZpbmUgc3BsaXR0ZXIKCWFuZCBwZWVwaG9sZTIgcGF0dGVybnMgdG8gdHJhbnNmb3JtIHByZXJlbG9hZCB0byBwb3N0cmVsb2FkIGZvcm0uCgkobW92c3RyZGksIG1vdnN0cmRpX3ByZXJlbG9hZCwgbW92c3RyZGlfcG9zdHJlbG9hZCwgY2xyc3Ryc2ksCgljbHJzdHJzaV9wcmVyZWxvYWQsIGNscnN0cnNpX3Bvc3RyZWxvYWQsIGNscnN0cmRpLCBjbHJzdHJkaV9wcmVyZWxvYWQsCgljbHJzdHJkaV9wb3N0cmVsb2FkKTogTmV3IHBhdHRlcm5zIGZvciA2NC1iaXQgYmxvY2sgbW92ZSwgYW5kIGJsb2NrCgljbGVhci4KCSogcGEtcHJvdG9zLmggKG91dHB1dF9ibG9ja19jbGVhcik6IE5ldyBwcm90b3R5cGUuCgoyMDAzLTExLTA4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogZGJ4b3V0LmMgKGN1cnJlbnRfZmlsZSk6IEFsc28gd3JhcCBpbnNpZGUgREJYX0RFQlVHR0lOR19JTkZPIHx8CglYQ09GRl9ERUJVR0dJTkdfSU5GTy4KCjIwMDMtMTEtMDggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRieG91dC5jIChjdXJyZW50X2ZpbGUpOiBXcmFwIGRlY2xhcmF0aW9uIGluIERCWF9VU0VfQklOQ0wuCgoyMDAzLTExLTA3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MpOiBSZW1vdmUKCXJlZHVuZGFudCBwYXJlbnMuCgoJKiBjcHBmaWxlcy5jIChwY2hfb3Blbl9maWxlKTogTmV3IHBhcmFtZXRlciAnaW52YWxpZF9wY2gnLCBzZXQgaXQuCgkoZmluZF9maWxlX2luX2Rpcik6IExpa2V3aXNlLgoJKF9jcHBfZmluZF9maWxlKTogUHJpbnQgbWVzc2FnZSBpZiBubyBoZWFkZXIgZmlsZSBpcyBmb3VuZAoJYnV0IGFuIGludmFsaWQgUENIIGZpbGUgd2FzLgoKMjAwMy0xMS0wOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLXR5cGVjay5jIChwZWRhbnRpY19sdmFsdWVfd2FybmluZyk6IERlcHJlY2F0ZSBjb21wb3VuZAoJZXhwcmVzc2lvbnMgYXMgbHZhbHVlcy4KCShpbnRlcm5hbF9idWlsZF9jb21wb3VuZF9leHByKTogUmVtb3ZlIHNwZWNpYWwgaGFuZGxpbmcgZm9yCglub24tcGVkYW50aWMgY2FzZS4KCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCB0aGF0IGFsbCBleHRlbmRlZCBsdmFsdWVzIGFyZSBub3cKCWRlcHJlY2F0ZWQuCgoyMDAzLTExLTA3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCglQUiAxMTY1NAoJKiBkYnhvdXQuYyAoc3RydWN0IGRieF9maWxlKTogRG8gbm90IHNhdmUgZm9yIFBDSC4KCShjdXJyZW50X2ZpbGUpOiBMaWtld2lzZS4KCShkYnhvdXRfaW5pdCk6IERvbid0IGFsbG9jYXRlIHN0cnVjdCBkYnhfZmlsZSB1c2luZyBHQy4KCShkYnhvdXRfc3RhcnRfc291cmNlX2ZpbGUpOiBMaWtld2lzZS4KCjIwMDMtMTEtMDcgIEZhbGsgSHVlZmZuZXIgIDxmYWxrQGRlYmlhbi5vcmc+CgoJKiBjb25maWcvYWxwaGEvZWxmLmgsIGNvbmZpZy9hbHBoYS91bmljb3Ntay5oLAoJY29uZmlnL2FscGhhL3Ztcy5oOiBDb252ZXJ0IHRvIElTTyBDOTAuCgoyMDAzLTExLTA3ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9hcm0vcGUuaDogQ29udmVydCB0byBJU08gQzkwLgoKMjAwMy0xMS0wNyAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBzaC1wcm90b3MuaCAoc2hfcGNoX3ZhbGlkX3ApOiBEZWNsYXJlLgoJKiBzaC5jICgiaW50bC5oIik6IEluY2x1ZGUuCgkoVEFSR0VUX1BDSF9WQUxJRF9QKTogT3ZlcnJpZGUuCgkoc2hfdGFyZ2V0X3N3aXRjaGVzKTogTmV3IHZhcmlhYmxlLgoJKHRhcmdldF9zd2l0Y2hlcyk6IERlZmluZS4KCShzaF9wY2hfdmFsaWRfcCk6IE5ldyBmdW5jdGlvbi4KCgkqIHNoLmggKE1PREVfQUZURVIpOiBEb24ndCBjaGFuZ2UgbW9kZSB1bmxlc3MgVEFSR0VUX0hJVEFDSEkuCgoyMDAzLTExLTA3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmMgKHg4Nl82NF9zaWduX2V4dGVuZGVkX3ZhbHVlKTogIFJldHVybiBmYWxzZSBmcm9tIHRscyB2YXJpYWJsZXMuCgkoeDg2XzY0X3plcm9fZXh0ZW5kZWRfdmFsdWUpOiAgbGlrZXdpc2UuCgoyMDAzLTExLTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChsb2FkZ3ApOiBUYWtlICQyNSBhcyBhIHNlY29uZCBvcGVyYW5kLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZXhwYW5kX3Byb2xvZ3VlKTogTW9kaWZ5IGFjY29yZGluZ2x5LgoKMjAwMy0xMS0wNiAgTWF0dCBBdXN0ZXJuIDxhdXN0ZXJuQGFwcGxlLmNvbT4KCgkqIGMtY29tbW9uLmMgKGhhbmRsZV92aXNpYmlsaXR5X2F0dHJpYnV0ZSk6IFNldCBERUNMX1ZJU0lCSUxJVFkKCWZpZWxkIGluc3RlYWQgb2YgaGFuZ2luZyBhbiBhdHRyaWJ1dGUgb2JqZWN0IG9mZiB0aGUgZGVjbC4KCSogdHJlZS5oIChERUNMX1ZJU0lCTElUWSk6IE5ldyBhY2Nlc3NvciBtYWNybyBmb3IKCXN5bWJvbF92aXNpYmlsaXR5IGZpZWxkIGluIHN0cnVjdCB0cmVlX2RlY2wuCgkoZW51bSBzeW1ib2xfdmlzaWJpbGl0eSk6IE1vdmUgZGVmaW5pdGlvbiB0byBiZWZvcmUgdHJlZV9kZWNsLgoJKHN0cnVjdCB0cmVlX2RlY2wpOiBEZWZpbmUgbmV3IHR3by1iaXQgZmllbGQsIHN5bWJvbF92aXNpYmlsaXR5LgoJKGRlY2xfdmlzaWJpbGl0eSk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSogdmFyYXNtLmMgKG1heWJlX2Fzc2VtYmxlX3Zpc2liaWxpdHkpOiBVc2UgREVDTF9WSVNJQklMSVRZCglpbnN0ZWFkIG9mIGRlY2xfdmlzaWJpbGl0eS4KCShkZWZhdWx0X2JpbmRzX2xvY2FsX3BfMSk6ICBVc2UgREVDTF9WSVNJQklMSVRZCWluc3RlYWQgb2YKCWRlY2xfdmlzaWJpbGl0eS4KCShkZWNsX3Zpc2liaWxpdHkpOiBSZW1vdmUuCgoyMDAzLTExLTA2ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfZW1pdF9lcGlsb2d1ZSk6IFJlY29nbml6ZSBtb3JlIGNhc2VzCgl3aGVyZSByZWdpc3RlciAxNCB3aWxsIGJlIHNhdmVkLgoKMjAwMy0xMS0wNiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChVU0VfRlBfRk9SX0FSR19QKTogTW92ZSB0byByczYwMDAuYy4KCShVU0VfQUxUSVZFQ19GT1JfQVJHX1ApOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoVVNFX0ZQX0ZPUl9BUkdfUCk6IE1vdmUgZnJvbSByczYwMDAuaC4KCVRha2UgYSBwb2ludGVyIGFzIHRoZSBDVU0gcGFyYW1ldGVyLiAgVXBkYXRlIGNhbGxlcnMuCgkoVVNFX0FMVElWRUNfRk9SX0FSR19QKTogTGlrZXdpc2UuICBBbHNvIGNvcnJlY3QgZm9yIERhcndpbi9BSVgKCTMyLWJpdCBBQklzLgoJKGZ1bmN0aW9uX2FyZ19hZHZhbmNlKTogVXNlIFVTRV9BTFRJVkVDX0ZPUl9BUkdfUC4gIENvcnJlY3QgY2FzZQoJb2YgdmVjdG9yIHBhcmFtZXRlcnMgYXMgbmFtZWQgYXJndW1lbnRzIG9mIHN0ZGFyZyBmdW5jdGlvbi4KCShmdW5jdGlvbl9hcmcpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKEFTTV9TUEVDKTogVXNlIC1mb3JjZV9jcHVzdWJ0eXBlX0FMTCB3aGVuCgktbWFsdGl2ZWMgaXMgc3BlY2lmaWVkLCBub3QgdGhlIG5vbi1leGlzdGVudCAtZmFsdGl2ZWMuCgoyMDAzLTExLTA2ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oIChzMzkwX2Z1bmN0aW9uX3ZhbHVlKTogRGVjbGFyZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChUQVJHRVRfUkVUVVJOX0lOX01FTU9SWSk6IERlZmluZS4KCShzMzkwX3JldHVybl9pbl9tZW1vcnkpOiBOZXcgZnVuY3Rpb24uCgkoczM5MF9mdW5jdGlvbl92YWx1ZSk6IE5ldyBmdW5jdGlvbi4KCShzMzkwX2Z1bmN0aW9uX2FyZ19mbG9hdCk6IFJldHVybiBmYWxzZSBmb3IgYWxsIGFyZ3VtZW50cyBsYXJnZXIKCXRoYW4gOCBieXRlcy4KCShzMzkwX2Z1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZSk6IExpa2V3aXNlLiAgUmV0dXJuIHRydWUgZm9yCglhbGwgdmVjdG9yIGFyZ3VtZW50cy4KCShzMzkwX2Z1bmN0aW9uX2FyZ19pbnRlZ2VyKTogTmV3IGZ1bmN0aW9uLgoJKHMzOTBfZnVuY3Rpb25fYXJnX2FkdmFuY2UpOiBDYWxsIGl0LiAgQWRkIHNhbml0eSBjaGVja3MuCgkoczM5MF9mdW5jdGlvbl9hcmcpOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5oIChGVU5DVElPTl9WQUxVRSk6IENhbGwgczM5MF9mdW5jdGlvbl92YWx1ZS4KCShMSUJDQUxMX1ZBTFVFKTogTGlrZXdpc2UuCgkoUkVUX1JFRyk6IFJlbW92ZS4KCShSRVRVUk5fSU5fTUVNT1JZKTogUmVtb3ZlLgoKMjAwMy0xMS0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IENoYW5nZQoJcmV0dXJuIHR5cGUgdG8gSE9TVF9XSURFX0lOVC4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2ZyYW1lX2luZm8pOiBHaXZlIHNpemVzIHR5cGUgSE9TVF9XSURFX0lOVC4KCU1ha2UgaW5pdGlhbGl6ZWQgYSBib29sLiAgTWFrZSByZWdpc3RlciBtYXNrcyB1bnNpZ25lZCBpbnRzLgoJKGNvbXB1dGVfZnJhbWVfc2l6ZSk6IE1ha2Ugc2FtZSBtYXNrIGNoYW5nZSBoZXJlLiAgVXNlIEhPU1RfV0lERV9JTlQKCXdoZXJlIGFwcHJvcHJpYXRlLgoJKG1pcHNfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBSZXR1cm4gYSBIT1NUX1dJREVfSU5ULgoJKG1pcHNfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogUHJpbnQgc2l6ZXMgYXMgSE9TVF9XSURFX0lOVHMuCgoyMDAzLTExLTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBSZW1vdmUgYm9ndXMKCW5lZ2F0aW9uLgoKMjAwMy0xMS0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2Zydi9mcnYuaCAoQVNNX09VVFBVVF9BTElHTl9XSVRIX05PUCk6IERlZmluZS4KCjIwMDMtMTEtMDYgIE1vbWNoaWwgVmVsaWtvdiAgPHZlbGNvQGZhZGF0YS5iZz4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFNldCBNQVNLX1NPRlRfRkxPQVQKCWZvciBWUjQxMTEgdG9vLgoKMjAwMy0xMS0wNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogYnVpbHRpbnMuYyAoc2ltcGxpZnlfYnVpbHRpbl9zdHJyY2hyLCBzaW1wbGlmeV9idWlsdGluX3N0cnBicmspOiBBZGQKCW1pc3NpbmcgY2FzdHMuCgoyMDAzLTExLTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2VubW9kZXMuYzogQ2hhbmdlIHRoZSB3b3JkICJiaXRzaXplIiB0byAicHJlY2lzaW9uIiB0aHJvdWdob3V0LgoJKiBtYWNobW9kZS5kZWY6IExpa2V3aXNlLgoJKiBtYWNobW9kZS5oIChHRVRfTU9ERV9TSVpFKTogQ2FzdCB2YWx1ZSB0byB1bnNpZ25lZCBzaG9ydC4KCShHRVRfTU9ERV9CSVRTSVpFKTogRGVmaW5lIGFzIEdFVF9NT0RFX1NJWkUgKiBCSVRTX1BFUl9VTklULgoJKEdFVF9NT0RFX1BSRUNJU0lPTik6IE5ldyBtYWNyby4KCShtb2RlX2JpdHNpemUpOiBSZW5hbWVkIG1vZGVfcHJlY2lzaW9uLgoJKiBzdG9yLWxheW91dC5jIChtb2RlX2Zvcl9zaXplLCBzbWFsbGVzdF9tb2RlX2Zvcl9zaXplKToKCVVzZSBHRVRfTU9ERV9QUkVDSVNJT047IGNsYXJpZnkgY29tbWVudHMuCgoyMDAzLTExLTA1ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGRvYy9pbnN0YWxsLW9sZC50ZXhpOiBSZW1vdmUgb2xkIGRvY3VtZW50YXRpb24gb2YgYnVpbGRpbmcKCWNyb3NzLWNvbXBpbGVycy4KCSogZG9jL2luc3RhbGwudGV4aTogTW92ZSBzb21lIG9mIGl0IHRvIGhlcmUuCgoyMDAzLTExLTA1ICBQZXIgQm90aG5lciAgPHBib3RobmVyQGFwcGxlLmNvbT4KCglQUiBwcmVwcm9jZXNzb3IvMTI4OTEKCSogYy1vcHRzLmMgKGZpbmlzaF9vcHRpb25zKTogIFNldCBpbmNsdWRlX2N1cnNvciB0byBkaXNhYmxlIHByZW1hdHVyZQoJY2FsbHMgdG8gcHVzaF9jb21tYW5kX2xpbmVfaW5jbHVkZSBmcm9tIGNwcF9zY2FuX25vb3V0cHV0LgoJRml4ZXMgYnVnIHJlcG9ydGVkIGJ5IERKIERlbG9yaWUuCgoyMDAzLTExLTA1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHNldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBSZW1vdmUKCWNvZGUgc3VwcG9ydGluZyBvbGQtc3R5bGUgdmFyYXJncy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9tYWNob3BpY19sZWdpdGltaXplX3BpY19hZGRyZXNzKTogVXNlCglhbiBpbnRlcm1lZGlhdGUgcmVnaXN0ZXIgZm9yIGJldHRlciBvcHRpbWlzYXRpb24uCgoyMDAzLTExLTA1ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJUFIgb3B0aW1pemF0aW9uLzEwMDgwCgkqIGNmZ2xvb3BhbmFsLmMgKHZhcmlhYmxlX2luaXRpYWxfdmFsdWUsIHZhcmlhYmxlX2luaXRpYWxfdmFsdWVzLAoJc2ltcGxlX2xvb3BfZXhpdF9wKTogUmVjb3JkIHRoZSBmYWN0IHRoYXQgaW5pdGlhbCB2YWx1ZSBpcyBleHRlbmRlZAoJZnJvbSBpbm5lciBtb2RlLgoJKGNvdW50X3N0cmFuZ2VfbG9vcF9pdGVyYXRpb25zLCBjb3VudF9sb29wX2l0ZXJhdGlvbnMpOiBIYW5kbGUKCWl2cyB0aGF0IGl0ZXJhdGUgaW4gYSBuYXJyb3dlciBtb2RlLiBGaXggaGFuZGxpbmcgb2Ygb3ZlcmZsb3dzLgoJSW1wcm92ZSBoYW5kbGluZyBvZiBORSBjb25kaXRpb25zLgoJKGludmVyc2UsIGZpdHNfaW5fbW9kZV9wKTogTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoc2ltcGxlX2luY3JlbWVudCk6IERldGVjdCB2YXJpYWJsZXMgdGhhdCBpdGVyYXRlIGluIGEgbmFycm93ZXIgbW9kZS4KCSogY2ZnbG9vcC5oIChzdHJ1Y3QgbG9vcF9kZXNjKTogRmllbGRzIGlubmVyX21vZGUgYW5kIGV4dGVuZCBhZGRlZC4KCjIwMDMtMTEtMDUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoY29tcHV0ZV92cnNhdmVfbWFzayk6IENvcnJlY3Qgb2ZmLWJ5LW9uZQoJZXJyb3IuCgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IERhcndpbgoJbmVlZHMgVlJTQVZFLgoKMjAwMy0xMS0wNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLXR5cGVjay5jIChwZWRhbnRpY19sdmFsdWVfd2FybmluZyk6IERlcHJlY2F0ZSB1c2Ugb2YKCWNvbmRpdGlvbmFsIGV4cHJlc3Npb25zIGFzIGx2YWx1ZXMuCgoyMDAzLTExLTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHN5c3RlbS5oOiBBZGQgdGhlIHByb3RvdHlwZSBvZiBzdHJsZW4uCgkqIHVud2luZC1wZS5oIChyZWFkX2VuY29kZWRfdmFsdWVfd2l0aF9iYXNlKTogQWRkIGFuCglhcHByb3ByaWF0ZSBjYXN0IHRvIGhhbmRsZSBhIGNhc2Ugd2hlcmUgdGhlIHBvaW50ZXIgc2l6ZSBpcwoJc21hbGxlciB0aGFuIHNpemVvZiAoaW50KS4KCjIwMDMtMTEtMDQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfZ2xvYmFsX3BpY19jb25zdGFudF9wKTogRGVsZXRlLgoJKG1pcHNfZGVsZWdpdGltaXplX2FkZHJlc3MpOiBEZWxldGUuCgkobWlwc19nb3RvZmZfZ2xvYmFsLCBtaXBzX2xvYWRfZ290X3BhZ2UpOiBEZWNsYXJlLgoJKG1pcHNfbG9hZF9nb3RfZ2xvYmFsLCBtaXBzX3Jld3JpdGVfc21hbGxfZGF0YSk6IERlY2xhcmUuCgoJKiBjb25maWcvbWlwcy9taXBzLmggKEZJTkRfQkFTRV9URVJNKTogUmVtb3ZlIGRlZmluaXRpb24uCgkoREFOR0VST1VTX0ZPUl9MQTI1X1ApOiBVc2UgZ2xvYmFsX2dvdF9vcGVyYW5kLgoJKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBnbG9iYWxfZ290X29wZXJhbmQsIGxvY2FsX2dvdF9vcGVyYW5kIGFuZAoJc21hbGxfZGF0YV9wYXR0ZXJuLiAgUmVtb3ZlIENPTlNUIGZyb20gY29uc3RfYXJpdGhfb3BlcmFuZCdzIGVudHJ5LgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChVTlNQRUNfQUREUkVTU19QLCBDT05TVF9HUF9QKTogTmV3IG1hY3Jvcy4KCShVTlNQRUNfQUREUkVTUywgVU5TUEVDX0FERFJFU1NfVFlQRSk6IExpa2V3aXNlLgoJKG1pcHNfY29uc3RhbnRfdHlwZSk6IERlbGV0ZS4KCShtaXBzX3N5bWJvbF90eXBlKTogQWRkIFNZTUJPTF9HT1RPRkZfUEFHRSwgU1lNQk9MX0dPVE9GRl9HTE9CQUwsCglTWU1CT0xfR09UT0ZGX0NBTEwgYW5kIFNZTUJPTF9HT1RPRkZfTE9BREdQLgoJKE5VTV9TWU1CT0xfVFlQRVMpOiBOZXcgbWFjcm8uCgkobWlwc19hZGRyZXNzX3R5cGUpOiBSZW1vdmUgQUREUkVTU19JTlZBTElELgoJKG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgaGFzX2dwX2luc25fcC4KCShtaXBzX2NvbnN0YW50X2luZm8pOiBEZWxldGUuCgkobWlwc19hZGRyZXNzX2luZm8pOiBBZGQgdGhlIGFkZHJlc3MgdHlwZSBhcyBhbiBleHRyYSBmaWVsZC4gIFJlcGxhY2UKCXRoZSBjIGZpZWxkIHdpdGggc3ltYm9sX3R5cGUuCgkobWlwc19zcGxpdF9wLCBtaXBzX2xvX3JlbG9jcywgbWlwc19oaV9yZWxvY3MpOiBOZXcgYXJyYXlzLgoJKFRBUkdFVF9ERUxFR0lUSU1JWkVfQUREUkVTUyk6IFJlbW92ZSBkZWZpbml0aW9uLgoJKG1pcHNfcmVsb2Nfb2Zmc2V0X29rX3AsIG1pcHNfY2xhc3NpZnlfY29uc3RhbnQpOiBEZWxldGUuCgkobWlwc19zcGxpdF9jb25zdCwgbWlwc19zeW1ib2xpY19jb25zdGFudF9wKTogTmV3IGZ1bmN0aW9ucy4KCShtaXBzX3N5bWJvbGljX2FkZHJlc3NfcCk6IFRha2UgdGhlIHN5bWJvbCB0eXBlIGFuZCBtb2RlIGFzIGFyZ3VtZW50cy4KCShtaXBzX2NsYXNzaWZ5X2FkZHJlc3MpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyB2YWxpZCwgc3RvcmluZwoJaXRzIHR5cGUgaW4gSU5GTy4gIFVzZSBtaXBzX3N5bWJvbGljX2NvbnN0YW50X3AuICBVc2UgbWlwc19sb19yZWxvY3NbXQoJdG8gdGVzdCB3aGV0aGVyIGEgTE9fU1VNIGFkZHJlc3MgaXMgYWxsb3dlZC4KCShtaXBzX3N5bWJvbF9pbnNucyk6IFJldHVybiAwIGZvciBnZW5lcmFsIG1pcHMxNiBzeW1ib2xzLgoJUmVvcmRlciBTWU1CT0xfR09UX0dMT0JBTCBjYXNlIHRvIG1hdGNoIG1pcHNfc3ltYm9sX3R5cGUgZGVmaW5pdGlvbi4KCUhhbmRsZSB0aGUgbmV3IFNZTUJPTF9HT1RPRkZfKnMuCgkobWlwc19hZGRyZXNzX2luc25zKTogVXBkYXRlIGNhbGwgdG8gbWlwc19jbGFzc2lmeV9hZGRyZXNzLgoJKG1pcHNfY29uc3RfaW5zbnMpOiBCZSBtb3JlIGZ1c3N5IGFib3V0IEhJR0ggY29uc3RhbnRzLiAgUmVtb3ZlIHVzZQoJb2YgbWlwc19jbGFzc2lmeV9jb25zdGFudC4gIEJlIG1vcmUgYWNjdXJhdGUgYWJvdXQgQ09OU1RzLgoJKG1pcHNfZ2xvYmFsX3BpY19jb25zdGFudF9wKTogRGVsZXRlLgoJKGNvbnN0X2FyaXRoX29wZXJhbmQpOiBPbmx5IGFjY2VwdCBDT05TVF9JTlRzLgoJKGNhbGxfaW5zbl9vcGVyYW5kKTogUmVtb3ZlIGNhbGwgdG8gbWlwc19jbGFzc2lmeV9jb25zdGFudC4KCUxldCBtaXBzX3N5bWJvbGljX2NvbnN0YW50X3AgY2hlY2sgZm9yIGludmFsaWQgb2Zmc2V0cy4KCShtb3ZlX29wZXJhbmQpOiBDaGVjayBmb3IgZ2VuZXJhbF9vcGVyYW5kcyBmaXJzdC4gIE9ubHkgYWNjZXB0IHN5bWJvbGljCgljb25zdGFudHMgaWYgdGhleSBzYXRpc2Z5IG1pcHNfc3ltYm9saWNfY29uc3RhbnRfcCBhbmQgY2Fubm90IGJlIHNwbGl0LgoJKHN5bWJvbGljX2NvbnN0YW50KTogVXNlIG1pcHNfc3ltYm9saWNfY29uc3RhbnRfcC4KCShnbG9iYWxfZ290X29wZXJhbmQsIGxvY2FsX2dvdF9vcGVyYW5kKTogTmV3IHByZWRpY2F0ZXMuCgkoc3RhY2tfb3BlcmFuZCk6IFVwZGF0ZSBjYWxsIHRvIG1pcHNfY2xhc3NpZnlfYWRkcmVzcy4KCShtaXBzX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogTGlrZXdpc2UuCgkobWlwc19yZWxvYywgbWlwc19sdWlfcmVsb2MpOiBEZWxldGUuCgkobWlwc19mb3JjZV90ZW1wb3JhcnkpOiBPbmx5IHVzZSB0aGUgZ2l2ZW4gdGVtcG9yYXJ5IGlmIG5vX25ld19wc2V1ZG9zLgoJVXNlIGVtaXRfbW92ZV9pbnNuLgoJKG1pcHNfc3BsaXRfc3ltYm9sLCBtaXBzX3Vuc3BlY19hZGRyZXNzKTogTmV3IGZ1bmN0aW9ucy4KCShtaXBzX3Vuc3BlY19vZmZzZXRfaGlnaCk6IE5ldyBmdW5jdGlvbi4KCShtaXBzX2xvYWRfZ290KTogUmVwbGFjZSByZWxvYyBhcmd1bWVudCB3aXRoIGEgc3ltYm9sX3R5cGUuCglVc2UgbWlwc191bnNwZWNfYWRkcmVzcyB0byBjcmVhdGUgdGhlIGFkZHJlc3MgYW5kIHB1dCBpdCBpbiBhCglMT19TVU0gd2l0aCB0aGUgYmFzZSByZWdpc3Rlci4KCShtaXBzX2xvYWRfZ290MTYsIG1pcHNfbG9hZF9nb3QzMik6IERlbGV0ZS4KCShtaXBzX2VtaXRfaGlnaCwgbWlwc19sZWdpdGltaXplX3N5bWJvbCk6IERlbGV0ZS4KCShtaXBzX2dvdG9mZl9nbG9iYWwpOiBOZXcgZnVuY3Rpb24uCgkobWlwc19sb2FkX2dvdF9wYWdlLCBtaXBzX2xvYWRfZ290X2dsb2JhbCk6IE5ldyBmdW5jdGlvbnMuCgkobWlwc19sZWdpdGltaXplX3N5bWJvbCk6IElubGluZSBoYW5kbGluZyBvZiBMT19TVU0gc3BsaXRzLgoJKG1pcHNfbGVnaXRpbWl6ZV9jb25zdF9tb3ZlKTogTGlrZXdpc2UuICBSZW1vdmUgSElHSCBoYW5kbGluZy4KCUlubGluZSBjb2RlIHRvIGhhbmRsZSBjb25zdGFudHMgcGx1cyBpbnZhbGlkIG9mZnNldHMuICBVc2UKCW1pcHNfc3BsaXRfc3ltYm9sIHRvIGxlZ2l0aW1pemUgY29uc3RhbnQgcG9vbCBhZGRyZXNzZXMuCgkobWlwc19kZWxlZ2l0aW1pemVfYWRkcmVzcyk6IERlbGV0ZS4KCShtaXBzX3J0eF9jb3N0cyk6IEdpdmUgbGVnaXRpbWF0ZSBzeW1ib2xpYyBjb25zdGFudHMgYW5kIENPTlNUX0RPVUJMRXMKCWEgY29zdCBvZiAxIGluc24uICBHaXZlIHRoZSByZXN0IGEgY29zdCBvZiBDT05TVEFOVF9QT09MX0FERFJFU1MuCgkobWlwc19zdWJ3b3JkKTogUGFzcyBtZW1yZWZzIHRocm91Z2ggbWlwc19yZXdyaXRlX3NtYWxsX2RhdGEuCgkobWlwc19vdXRwdXRfbW92ZSk6IFJlbW92ZSB1c2Ugb2YgbWlwc19jbGFzc2lmeV9jb25zdGFudC4KCShtaXBzX2V4cGFuZF9jYWxsKTogVXNlIG1pcHNfdW5zcGVjX29mZnNldF9oaWdoIHRvIGNhbGN1bGF0ZSB0aGUKCWhpZ2ggcGFydCBvZiB0aGUgR09UIGFkZHJlc3MgZm9yIGNhbGxzIHRvIGdsb2JhbCBmdW5jdGlvbnMuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IEluaXRpYWxpemUgbWlwc19zcGxpdF9wW10sIG1pcHNfbG9fcmVsb2NzW10KCWFuZCBtaXBzX2hpX3JlbG9jc1tdLgoJKHByaW50X29wZXJhbmQpOiBVc2UgcHJpbnRfb3BlcmFuZF9yZWxvYyB0byBoYW5kbGUgJyVoJyBhbmQgJyVSJy4KCVJlbW92ZSB1c2Ugb2YgbWlwc19jbGFzc2lmeV9jb25zdGFudC4KCShtaXBzX3JlbG9jX3N0cmluZyk6IERlbGV0ZS4KCShwcmludF9vcGVyYW5kX3JlbG9jKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X29wZXJhbmRfYWRkcmVzcyk6IFVwZGF0ZSBjYWxsIHRvIG1pcHNfY2xhc3NpZnlfYWRkcmVzcy4KCShtaXBzX3Jld3JpdGVfc21hbGxfZGF0YV9wLCBzbWFsbF9kYXRhX3BhdHRlcm5fMSk6IE5ldyBmdW5jdGlvbnMuCgkoc21hbGxfZGF0YV9wYXR0ZXJuKTogTmV3IHByZWRpY2F0ZS4KCShtaXBzX3Jld3JpdGVfc21hbGxfZGF0YV8xLCBtaXBzX3Jld3JpdGVfc21hbGxfZGF0YSk6IE5ldyBmdW5jdGlvbnMuCgkobWlwc19mdW5jdGlvbl9oYXNfZ3BfaW5zbik6IE5ldyBmdW5jdGlvbi4KCShtaXBzX2dsb2JhbF9wb2ludGVyKTogVXNlIGl0LgoJKG1pcHNfZ3BfaW5zbik6IERlbGV0ZS4KCShtaXBzX2V4cGFuZF9wcm9sb2d1ZSk6IFdoZW4gY29tcGlsaW5nIGZvciBuMzIvbjY0IGFiaWNhbGxzLCB1c2UgYQoJc2luZ2xlIGxvYWRncCBwYXR0ZXJuIHRvIGluaXRpYWxpemUgJGdwLiAgUGFzcyBpdCB0aGUgb2Zmc2V0IG9mIF9ncAoJZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCgkobWlwczE2X2dwX3BzZXVkb19yZWcpOiBSZXZlcnQgbGFzdCBwYXRjaC4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKFJFTE9DXyopOiBEZWxldGUuCgkoVU5TUEVDX0xPQURHUCwgVU5TUEVDX0ZJUlNUX0FERFJFU1MpOiBOZXcgY29uc3RhbnRzLgoJKGdvdCk6IE5ldyBpbnNuIGF0dHJpYnV0ZS4KCSh0eXBlKTogU2V0IHRvICJsb2FkIiBpZiBnb3QgPT0gbG9hZC4KCShsZW5ndGgpOiBTZXQgdG8gNCBpZiBnb3QgPT0gbG9hZCwgOCBpZiBnb3QgPT0geGdvdF9oaWdoLgoJKGx1aVtzZF1pKTogRGVsZXRlLgoJKCp4Z290X2hpW3NkXWksICp4Z290X2xvW3NkXWkpOiBOZXcgcGF0dGVybnMuCgkoKmdvdF9kaXNwW3NkXWksICpnb3RfcGFnZVtzZF1pKTogTGlrZXdpc2UuCgkoKmxvd1tzZF1pKTogQ2hhbmdlIGNvbnN0cmFpbnRzIHRvICJkIi4gIEFkZCBhIG5ldyBkZWZpbmVfc3BsaXQgdG8KCXJld3JpdGUgc21hbGwgZGF0YSBjb25zdGFudHMgaW50byBMT19TVU1zLgoJKGxvYWRncCk6IE5ldyBpbnNucy4KCjIwMDMtMTEtMDQgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnL21pcHMvX3RpbGliLmM6IFVzZSBfQUJJKiBpbiBfTUlQU19TSU0gdGVzdHMuCgoyMDAzLTExLTA0ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy92ODUwL3Y4NTAubWQgKG11bGhpc2kzKTogRXhwYW5kIHRoZSBjb25zdF9pbnQgY2FzZQoJc2VwYXJhdGVseSB0byBhdm9pZCB0cnlpbmcgdG8gc2lnbiBleHRlbmQgdGhlIGNvbnN0LgoKMjAwMy0xMS0wNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogZW1pdC1ydGwuYyAoY29weV9ydHhfaWZfc2hhcmVkKTogRG9uJ3QgYWxsb3cgTUVNcyB3aXRoIGNvbnN0YW50CglhZGRyZXNzZXMgdG8gYmUgc2hhcmVkLgoJKGZvcmNlX2NvbnN0X21lbSk6IFJldHVybiBhIGNvcHkgb2YgdGhlIHBvb2wgZW50cnkuCgoyMDAzLTExLTAzICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAoR0NDX0NGTEFHUyk6IFJlbW92ZSBAV0VSUk9SQCBhZ2Fpbi4KCjIwMDMtMTEtMDMgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoY3BwLmR2aSk6IE5ldyB0YXJnZXQgc3BsaXQgZnJvbSBjcHAuaW5mby4KCShnY2MuZHZpKTogIE5ldyB0YXJnZXQgc3BsaXQgZnJvbSBnY2MuaW5mby4KCShnY2NpbnQuZHZpKTogTmV3IHRhcmdldCBzcGxpdCBmcm9tIGdjY2ludC5pbmZvLgoJKGNwcGludGVybmFscy5kdmkpOiBOZXcgdGFyZ2V0IHNwbGl0IGZyb20gY3BwaW50ZXJuYWxzLmluZm8KCShnY2NpbnN0YWxsLmluZm8pOiBOZXcgc3BlY2lmaWMgcnVsZS4KCShnY2NpbnN0YWxsLmR2aSk6IExpa2V3aXNlLgoJKGR2aSk6IE1vdmUgdGFyZ2V0cyB0byAkKGRvY29iamRpcikuCgkoJChkb2NvYmpkaXIpLyUuZHZpKTogTmV3IGltcGxpY2l0IHJ1bGUuCgoyMDAzLTExLTAzICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZG9jL2d0eS50ZXhpICh0YWcsIGRlc2MpOiBTYXkgbW9yZSBhYm91dCByb2xlIG9mIGRlc2MgdmFsdWVzIGluCglzZWxlY3RpbmcgYmV0d2VlbiB0YWdzLgoKMjAwMy0xMS0wMyAgQWxleGFuZGVyIEthYmFldiAgPGFrMDNAZ3RlLmNvbT4KCgkqIHJlYWwuYyAoZW5jb2RlX2llZWVfc2luZ2xlKTogRW5zdXJlIHByb3BlciBwcm9tb3Rpb24uCgoyMDAzLTExLTAzICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogZG9jL2NvbnRyaWIudGV4aTogQWRkIEdpb3Zhbm5pIEJham8sIERhcmEgSGF6ZWdoaSwgRmFsayBIdWVmZm5lciwKCWFuZCBBbmRyZXcgUGluc2tpLgoKMjAwMy0xMS0wMyAgU3lkIFBvbGsgIDxzcG9sa0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IEFkZCBHMywgRzQsIGFuZCBHNQoJbWFya2V0aW5nIG5hbWVzIHRvIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBwcm9jZXNzb3JzLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oOiBEaXR0by4KCSogZG9jL2ludm9rZS50ZXhpOiBEaXR0by4KCSogY29uZmlnLmdjYzogRGl0dG8uCgoyMDAzLTExLTAzICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHN0ZGlvX3ZhX2xpc3QpOiBBbGxvdyB0YWIgYmVmb3JlIHZhX2xpc3QuCglNZXJnZSB0d28gc3Vic3RpdHV0aW9ucy4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCUZpeGVzIFBSIGJvb3RzdHJhcC8xMjY2Ni4KCjIwMDMtMTEtMDMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogZG9jL2luc3RhbGwtb2xkLnRleGk6IFJlbW92ZSBWTVMgZG9jdW1lbnRhdGlvbi4KCjIwMDMtMTEtMDMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6ICBSZW1vdmUgaGFjayBlbmFibGluZyAxMjhiaXQgbG9uZyBkb3VibGUKCWNvbW1pdGVkIGJ5IGFjY2lkZW50LgoKMjAwMy0xMS0wMiAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBjLW9wdHMuYyAobmVlZFZhbHVlKTogIERvIGNwcF9maW5kX21haW5fZmlsZSBiZWZvcmUgcHJvY2Vzc2luZwoJYW55IGltYWNyb3MgZmxhZ3MsIHNvIHBmaWxlLT5tYWluX2ZpbGUgaXMgc2V0IGZvciB0aGUgbGF0dGVyLgoKMjAwMy0xMS0wMyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoJICAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoR0NDX0NGTEFHUyk6IEFsbG93IGJsYWNrbGlzdGluZyBvZiB3YXJuaW5ncy4KCShTWVNDQUxMUy5jLlgtd2Fybik6IFN1cHByZXNzIHdhcm5pbmdzLgoKMjAwMy0xMS0wMiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBvcHRpbWl6YXRpb24vMTI4NDUKCSogcGEuYyAob3V0cHV0X2NicmFuY2gpOiBVc2UgY21wYiBmb3IgREltb2RlIGNvbXBhcmlzb25zIHdpdGggMC4KCjIwMDMtMTEtMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogQ2FsbCBQUklOVF9SRUcgd2l0aCBzZWNvbmQgYXJndW1lbnQgLTEuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAocHJpbnRfcmVnKTogQWJvcnQgb24gYSB2aXJ0dWFsIHJlZ2lzdGVyCglpZiBjb2RlICE9IC0xOyBub3QgaWYgZmlsZSA9PSBhc21fb3V0X2ZpbGUuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoUFJJTlRfUkVHKTogRG9jdW1lbnQgbWVhbmluZyBvZiBDT0RFID09IC0xLgoJKERFQlVHX1BSSU5UX1JFRyk6IERlbGV0ZSwgdW51c2VkLgoKMjAwMy0xMS0wMiAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZy9pYTY0L2ZkZS1nbGliYy5jIChfR05VX1NPVVJDRSk6IERlZmluZSB0byAxIGluc3RlYWQgb2YKCWVtcHR5IHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggdGhlIGRlZmluaXRpb24gZnJvbSBjb25maWd1cmUuCgoyMDAzLTExLTAyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTA4MTcKCSogaWZjdnQuYyAobm9jZV9lbWl0X21vdmVfaW5zbik6IEltcHJvdmUgZG9jdW1lbnRhdGlvbiBjb21tZW50LgoJKG5vY2VfdHJ5X21vdmUpOiBOZXcgZnVuY3Rpb24gdG8gb3B0aW1pemUgYW4gaWYtdGhlLWVsc2UgaW50byBhbgoJdW5jb25kaXRpb25hbCBtb3ZlLCBpLmUuICJpZiAoYSE9YikgeD1hOyBlbHNlIHg9YiIgaW50byAieD1hIi4KCShub2NlX3Byb2Nlc3NfaWZfYmxvY2spOiBBdHRlbXB0IHNpbXBsaWZpY2F0aW9uIHdpdGggbm9jZV90cnlfbW92ZS4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV90ZXJuYXJ5X29wZXJhdGlvbik6IFNvbWUgbWlub3IgZml4ZXMKCWFuZCBpbXByb3ZlbWVudHMgdG8gdGhlIG9wdGltaXphdGlvbnMgb2YgSUZfVEhFTl9FTFNFIGV4cHJlc3Npb25zLgoJKHNpbXBsaWZ5X3N1YnJlZyk6IFNpbGVuY2Ugc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZy4KCjIwMDMtMTEtMDIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluICh0YXJnaG9va3MubywgcmVsb2FkLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKEdURklMRVMpOiBBZGQgdGFyZ2hvb2tzLmMuCgkoZ3QtdGFyZ2hvb2tzLmgpOiBOZXcgcnVsZTsgZGVwZW5kIG9uIHMtZ3R5cGUuCgkqIHRhcmdldC5oIChkaXJlY3RfcG9vbF9sb2FkX3ApOiBOZXcgaG9vay4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfRElSRUNUX1BPT0xfTE9BRF9QKTogTmV3IG1hY3JvLgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IEluY2x1ZGUgaXQuCgkqIHRhcmdob29rcy5oIChkZWZhdWx0X2RpcmVjdF9wb29sX2xvYWRfcCk6IERlY2xhcmUuCgkoaG9va19ib29sX21hY2hpbmVfbW9kZV90cnVlKTogRGVjbGFyZS4KCSogdGFyZ2hvb2tzLmM6IEluY2x1ZGUgaW5zbi1jb25maWcuaCwgcmVjb2cuaCwgZ2djLmggYW5kCglndC10YXJnaG9va3MuaC4KCShwb29sX3N5bWJvbCk6IE5ldyB2YXJpYWJsZS4KCShkZWZhdWx0X2RpcmVjdF9wb29sX2xvYWRfcCk6IE5ldyBmdW5jdGlvbi4KCShob29rX2Jvb2xfbWFjaGluZV9tb2RlX3RydWUpOiBOZXcgZnVuY3Rpb24uCgkqIHJlbG9hZC5jOiBJbmNsdWRlIHRhcmdldC5oLgoJKGZpbmRfcmVsb2Fkcyk6IElmIGFuIGFsdGVybmF0aXZlIHdpbGwgZm9yY2UgYSBjb25zdGFudCBpbnRvIG1lbW9yeSwKCWNvdW50IGFuIGV4dHJhIHJlbG9hZCBpZiBjb25zdGFudCBwb29sIHN5bWJvbHMgYXJlIG5vdCB2YWxpZAoJYWRkcmVzc2VzLiAgSWYgYW4gYWx0ZXJuYXRpdmUgdXNlcyBtZW1vcnkgdG8gbW92ZSB2YWx1ZXMgYmV0d2VlbgoJcmVnaXN0ZXJzLCBjb3VudCB0aGUgbW92ZSBhcyB0d28gcmVsb2FkcyByYXRoZXIgdGhhbiBvbmUuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoVEFSR0VUX0RJUkVDVF9QT09MX0xPQURfUCk6IERlZmluZS4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9ESVJFQ1RfUE9PTF9MT0FEX1ApOiBEb2N1bWVudC4KCjIwMDMtMTEtMDIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzEyNzk5CgkqIHBvc3RyZWxvYWQuYyAocmVsb2FkX2NzZV9tb3ZlMmFkZCk6IEdlbmVyYXRlIHRoZSBhZGQyCglwYXR0ZXJucyBtYW51YWxseS4KCjIwMDMtMTEtMDIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MpIFtUQVJHRVRfQVJDSDY0XToKCVJldHVybiAwIGZvciBhbGwgY29tcGxleCBtb2RlcyB3aG9zZSBzaXplIGlzIGxlc3NlciBvciBlcXVhbCB0bwoJYSB3b3JkLiAgQWRkIGEgPz8/IGNvbW1lbnQgZm9yIHRoZSBjb25kaXRpb24gdXNlZCB3aXRoIDE2LWJ5dGUKCWFsaWduZWQgbW9kZXMuCgoyMDAzLTExLTAxICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogLmN2c2lnbm9yZTogUmVtb3ZlIGMtcGFyc2UqIGFuZCB0cmFkY2lmLmMuCgkqIG9iamMvLmN2c2lnbm9yZTogRGVsZXRlLgoKMjAwMy0xMS0wMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB1bndpbmQtc2psai5jIChfVW53aW5kX0dldENGQSk6IFJldHVybiAoX1Vud2luZF9Xb3JkKTAgaW5zdGVhZAoJb2YgTlVMTC4KCjIwMDMtMTEtMDEgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBzb20uaCAoRE9fR0xPQkFMX0RUT1JTX0JPRFkpOiBDaGFuZ2UgdG8gQzkwIGRlY2xhcmF0aW9uLgoKCSogbGliZ2NjMi5jIChTWU1CT0xfX01BSU4pOiBQcm92aWRlIEM5MCBkZWNsYXJhdGlvbi4KCgkqIGNvbGxlY3QyLmMgKHNjYW5fbGlicmFyaWVzKTogRml4IHR5cG9zLgoKCVBSIHByZXByb2Nlc3Nvci8xMjg0NwoJKiBjcHBmaWxlcy5jLCBjcHBleHAuYywgY3BwZXJyb3IuYywgY3BwbGliLmgsIGNwcGxpYi5jLCBjcHBsZXguYywKCWNwcGluaXQuYywgY3BwdHJhZC5jLCBjcHBtYWNyby5jLCBmaXgtaGVhZGVyLmMsIGNwcHBjaC5jLCBjLXBjaC5jLAoJYy1pbmNwYXRoLmMsIGNwcGNoYXJzZXQuYyAoRExfV0FSTklORywgRExfV0FSTklOR19TWVNIRFIsIERMX1BFRFdBUk4sCglETF9FUlJPUiwgRExfSUNFLCBETF9FWFRSQUNULCBETF9XQVJOSU5HX1ApOiBQcmVmaXggbWFjcm8gbmFtZXMgd2l0aAoJIkNQUF8iLgoKMjAwMy0xMS0wMSAgRmFyaWJvcnogSmFoYW5pYW4gIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX21peGVkX2Z1bmN0aW9uX2FyZyk6IENvcnJlY3QKCW5vX3VuaXRzIGNhbGN1bGF0aW9uLgoKMjAwMy0xMS0wMSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogdW53aW5kLWR3Mi5jIChfVW53aW5kX0ZyYW1lU3RhdGUpOiBSZW1vdmUgY29tbWFzIGF0IGVuZCBvZgoJZW51bWVyYXRpb24gbGlzdC4KCjIwMDMtMTEtMDEgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvaWE2NC9zeXN2NC5oIChTREFUQV9TRUNUSU9OX0ZVTkNUSU9OKTogVXBkYXRlIHRvIEM5MAoJcHJvdG90eXBlcy4KCShTQlNTX1NFQ1RJT05fRlVOQ1RJT04pOiBMaWtld2lzZS4KCjIwMDMtMTEtMDEgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluIChHQ0NfQ0ZMQUdTKTogQWRkIEBXRVJST1JAIGZvciB0YXJnZXQgZmlsZXMuCgoyMDAzLTExLTAxICBBbmRyZWFzIFRvYmxlciAgPGEudG9ibGVyQHNjaHdlaXouY2g+CgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKEVYVFJBX1NFQ1RJT05fRlVOQ1RJT05TKTogVXBkYXRlIHRvIEM5MAoJcHJvdG90eXBlcy4KCjIwMDMtMTEtMDEgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHVud2luZC1kdzIuYyAoX1Vud2luZF9GaW5kRW5jbG9zaW5nRnVuY3Rpb24pOiBDb25zdGlmeSB2YXJpYWJsZS4KCSh1d19mcmFtZV9zdGF0ZV9mb3IpOiBDb25zdGlmeSB2YXJpYWJsZXMuCgkoZXh0cmFjdF9jaWVfaW5mbyk6IENvbnN0aWZ5IGZpcnN0IGFyZ3VtZW50LgoKCSogdW53aW5kLWR3Mi1mZGUtZGFyd2luLmM6IEFkanVzdCBwcm90b3R5cGUgb2YKCV9VbndpbmRfRmluZF9yZWdpc3RlcmVkX0ZERSBmb3IgcmVjZW50IGNoYW5nZXMuCgkoZXhhbWluZV9vYmplY3RzKTogQ29uc3RpZnkgcmV0dXJuIHZhbHVlIGFuZCBsb2NhbCB2YXJpYWJsZSByZXN1bHQuCgkoX1Vud2luZF9GaW5kX0ZERSk6IENvbnN0aWZ5IHJldHVybiB2YWx1ZSBhbmQgbG9jYWwgdmFyaWFibGUgcmV0LgoKMjAwMy0xMC0zMSAgUGVyIEJvdGhuZXIgIDxwYm90aG5lckBhcHBsZS5jb20+CgoJKiBjLW9wdHMuYyAoZmluaXNoX29wdGlvbnMpOiAgQ2hhbmdlIHRvIHJldHVybnMgYm9vbGVhbiAtIGZhbHNlIGlmZgoJdGhlIGNhbGwgdG8gY3BwX2ZpbmRfbWFpbl9maWxlIGZhaWxzLgoJKGNfY29tbW9uX2luaXQpOiAgU2tpcCBwcmVwcm9jZXNzX2ZpbGUgaWYgZmluaXNoX29wdGlvbnMgZmFpbGVkLgoJKGNfY29tbW9uX3BhcnNlX2ZpbGUpOiAgQnJlYWsgaWYgZmluaXNoX29wdGlvbnMgZmFpbGVkLgoJRml4ZXMgUFIgcHJlcHJvY2Vzc29yLzEyNTQ1LgoKMjAwMy0xMC0zMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIGFjbG9jYWwubTQ6IEJsYWNrbGlzdCB1bHRyaXgqIGZvciBtbWFwIGZpbGUuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIHZhcmlhYmxlCglyZWdfcGFybV9zdGFja19zcGFjZS4KCSogdG9wbGV2LmMgKGRlZmF1bHRfZ2V0X3BjaF92YWxpZGl0eSk6IEZpeCB3YXJuaW5nLgoKCSogdmF4LmM6IEluY2x1ZGUgdG9wbGV2LmguCgkodmF4X2luaXRfbGliZnVuY3MpOiBGaXggdHlwbyAodW1vZCkuCgkqIHZheC5oIChBU01fQ09NTUVOVF9TVEFSVCk6IERlZmluZS4KCShQUklOVF9PUEVSQU5EKTogRml4IHdhcm5pbmcgd2hlbiBIT1NUX1dJREVfSU5UIGlzIGEgbG9uZyBsb25nLgoKMjAwMy0xMC0zMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8xMTk2OAoJKiBleHByLmMgKGV4cGFuZF9leHByIDxNVUxUX0VYUFI+KTogUmVtb3ZlIGluYXBwcm9wcmlhdGUgYW5kCgljb25mdXNpbmcgY29tbWVudDsgZGlzdHJpYnV0aXZpdHkgaXNuJ3QgaGFuZGxlZCBpbiBleHBhbmRfZXhwci4KCSogZm9sZC1jb25zdC5jIChleHRyYWN0X211bGRpdl8xIDxQTFVTX0VYUFI+KTogIEFsbG93IG92ZXJmbG93CglpbiBkaXN0cmlidXRpdml0eSwgaWYgd3JhcC1hcm91bmQgc2VtYW50aWNzIGFyZSBzcGVjaWZpZWQgd2l0aAoJLWZ3cmFwdi4KCjIwMDMtMTEtMDEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgMTIzMTUKCSogZmluYWwuYyAocHJvZmlsZV9mdW5jdGlvbik6IEFsbG93IGZvciBOVUxMIHN2cnR4LgoKMjAwMy0xMC0zMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLmMgKHBhX3NlbGVjdF9zZWN0aW9uKTogVXNlIG5ldyBzdHlsZSBkZWNsYXJhdGlvbi4KCSogc29tLmggKHJlYWRvbmx5X2RhdGEpOiBMaWtld2lzZS4KCjIwMDMtMTAtMzEgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBVcGRhdGUgdG8gQzkwIHByb3RvdHlwZXMuCgoyMDAzLTEwLTMxICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCglQUiB0YXJnZXQvNzUxMwoJKiBhcm0uaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBEaXNhYmxlIHVzZSBvZiBMUiBpbiBUaHVtYgoJY29kZS4KCjIwMDMtMTAtMzEgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4sCgkgICAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgoJKiBjcnRzdHVmZi5jIChfX3JlZ2lzdGVyX2ZyYW1lX2luZm8sIF9fcmVnaXN0ZXJfZnJhbWVfaW5mb19iYXNlcykKCShfX2RlcmVnaXN0ZXJfZnJhbWVfaW5mbywgX19kZXJlZ2lzdGVyX2ZyYW1lX2luZm9fYmFzZXMpOgoJQ29uc3RpZnkgdm9pZCAqIGFyZ3VtZW50LgoJKiB1bndpbmQtZHcyLWZkZS5oIChzdHJ1Y3QgZmRlX3ZlY3Rvcik6CglDb25zdGlmeSAnb3JpZ19kYXRhJyBhbmQgJ2FycmF5JyBmaWVsZHMuCgkoX19yZWdpc3Rlcl9mcmFtZV9pbmZvLCBfX3JlZ2lzdGVyX2ZyYW1lX2luZm9fYmFzZXMpCgkoX19kZXJlZ2lzdGVyX2ZyYW1lX2luZm8sIF9fZGVyZWdpc3Rlcl9mcmFtZV9pbmZvX2Jhc2VzKToKCUNvbnN0aWZ5IHZvaWQgKiBhcmd1bWVudC4KCShnZXRfY2llLCBuZXh0X2ZkZSwgX1Vud2luZF9GaW5kX0ZERSk6IENvbnN0aWZ5IGFyZ3VtZW50cywKCXJldHVybiB2YWx1ZXMsIGFuZCBjYXN0cyBvZiB0eXBlIGZkZSAqLCBzdHJ1Y3QgZHdhcmZfZmRlICosCglhbmQgc3RydWN0IGR3YXJmX2NpZSAqLgoJKiB1bndpbmQtZHcyLWZkZS5jIChfX3JlZ2lzdGVyX2ZyYW1lX2luZm8sIF9fcmVnaXN0ZXJfZnJhbWVfaW5mb19iYXNlcykKCShfX2RlcmVnaXN0ZXJfZnJhbWVfaW5mbywgX19kZXJlZ2lzdGVyX2ZyYW1lX2luZm9fYmFzZXMpOgoJQ29uc3RpZnkgdm9pZCAqIGFyZ3VtZW50LgoJKGdldF9jaWVfZW5jb2RpbmcsICk6IENvbnN0aWZ5IHN0cnVjdCBkd2FyZl9jaWUgKiBhcmd1bWVudC4KCShnZXRfZmRlX2VuY29kaW5nLCBmZGVfdW5lbmNvZGVkX2NvbXBhcmUsIGZkZV9zaW5nbGVfZW5jb2RpbmdfY29tcGFyZSkKCShmZGVfbWl4ZWRfZW5jb2RpbmdfY29tcGFyZSwgZmRlX2NvbXBhcmVfdCwgc3RhcnRfZmRlX3NvcnQsIGZkZV9pbnNlcnQpCglmZGVfc3BsaXQsIFNXQVAsIGZyYW1lX2Rvd25oZWFwLCBmcmFtZV9oZWFwc29ydCkKCShjbGFzc2lmeV9vYmplY3Rfb3Zlcl9mZGVzLCBhZGRfZmRlcywgbGluZWFyX3NlYXJjaF9mZGVzLAoJYmluYXJ5X3NlYXJjaF91bmVuY29kZWRfZmRlcywgYmluYXJ5X3NlYXJjaF9zaW5nbGVfZW5jb2RpbmdfZmRlcywKCWJpbmFyeV9zZWFyY2hfbWl4ZWRfZW5jb2RpbmdfZmRlcywgc2VhcmNoX29iamVjdCwgX1Vud2luZF9GaW5kX0ZERSk6CglDb25zdGlmeSBhcmd1bWVudHMsIGxvY2FsIHZhcmlhYmxlcywgcmV0dXJuIHZhbHVlcywgYW5kIGNhc3RzCglvZiB0eXBlIGZkZSAqLCBmZGUgKiosIHN0cnVjdCBkd2FyZl9mZGUgKiwgYW5kIHN0cnVjdCBkd2FyZl9jaWUgKi4KCVVzZSBjb25zdCBwb2ludGVyIHR5cGVzIGluIHNpemVvZiBleHByZXNzaW9ucywgZm9yIGNsYXJpdHkuCgkqIHVud2luZC1kdzItZmRlLWdsaWJjLmMKCShfVW53aW5kX2ZpbmRfcmVnaXN0ZXJlZF9GREUsIF9VbndpbmRfZmluZF9GREUpOiBDb25zdGlmeSByZXR1cm4gdmFsdWUuCgkoc3RydWN0IHVud19laF9jYWxsYmFja19kYXRhKTogQ29uc3RpZnkgJ3JldCcgZmllbGQuCgoyMDAzLTEwLTMxICBGYXJpYm9yeiBKYWhhbmlhbiAgPGZqYWhhbmlhbkBhcHBsZS5jb20+CgkgICAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX21peGVkX2Z1bmN0aW9uX2FyZyk6IE5ldy4KCShmdW5jdGlvbl9hcmcpOiBDYWxsIGl0LgoJKHJzNjAwMF9mdW5jdGlvbl92YWx1ZSk6IFdpZGVuIGludGVncmFsIHJldHVybiB2YWx1ZSB0byBtb2RlIGJhc2VkCglvbiBUQVJHRVRfMzJCSVQsIG5vdCB3b3JkX21vZGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFBST01PVEVfTU9ERSk6IExpa2V3aXNlLgoJKFVOSVRTX1BFUl9BUkcpOiBOZXcuCgkoUlM2MDAwX0FSR19TSVpFKTogVXNlIGl0LgoKMjAwMy0xMC0zMSAgR2VyYWxkIFBmZWlmZXIgIDxnZXJhbGRAcGZlaWZlci5jb20+CgoJKiAuY3ZzaWdub3JlOiBObyBsb25nZXIgaWdub3JlIGdlbmd0eXBlLWxleC5jLCBnZW5ndHlwZS15YWNjLmMsCglhbmQgZ2VuZ3R5cGUteWFjYy5oLgoKMjAwMy0xMC0zMSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzg4OTYKCSogcG9zdHJlbG9hZC5jIChyZWxvYWRfY29tYmluZSk6IENoZWNrIHRoYXQgUkVHWSBkb2Vzbid0IGRpZSBpbiBhbgoJaW5zbiBvZiB0aGUgZm9ybSAoc2V0IChyZWd4KSAocGx1cyAocmVneCkgKHJlZ3kpKSksIGllIFJFR1ggIT0gUkVHWS4KCjIwMDMtMTAtMzEgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCglQUi8xMDIzOQoJKiBjZmdydGwuYyAoZGVsZXRlX2luc24pOiBEZWNyZWFzZSBMQUJFTF9OVVNFUyBmb3IgYWxsIFJFR19MQUJFTCBub3Rlcy4KCjIwMDMtMTAtMzEgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCglQUi8xMTY0MAoJKiBjZmdydGwuYyAodHJ5X3JlZGlyZWN0X2J5X3JlcGxhY2luZ19qdW1wKTogTW92ZSBqdW1wCglpbW1lZGlhdGVsbHkgYmVmb3JlIEJBUlJJRVIuCgoyMDAzLTEwLTMxICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKFNUUklDVDJfV0FSTik6IEFkZCAtV29sZC1zdHlsZS1kZWZpbml0aW9uLgoKMjAwMy0xMC0zMSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJUFIgdGFyZ2V0LzExMjcxCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHNfYWRkcmVzcyk6IEhhbmRsZSBhbnkgcmVnaXN0ZXIgaW4KCShQTFVTIChQTFVTIChSRUcpIChSRUcpKSAoQ09OU1RfSU5UKS4KCjIwMDMtMTAtMzEgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogZ2djLXBhZ2UuYyAoZ2djX3BjaF9yZWFkKTogV3JhcCBjYWxsIHRvIHBvaXNvbl9wYWdlcyBpbgoJRU5BQkxFX0dDX0NIRUNLSU5HIG5vdCBpbiBHR0NfUE9JU09OLgoKMjAwMy0xMC0zMSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJUFIgYm9vdHN0cmFwLzk4NjMKCSogY29uZmlndXJlLmluOiBCYWlsIG91dCBpZiBhd2sgaXMgbWlzc2luZy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCVBSIGFkYS8xMjc2MQoJKiBNYWtlZmlsZS5pbjogTW92ZSBkZWZhdWx0IGRlZmluaXRpb25zIG9mIFhfQURBX0NGTEFHUywKCVRfQURBX0NGTEFHUywgWF9BREFGTEFHUywgVF9BREFGTEFHUyBmcm9tIGFkYS9NYWtlLWxhbmcuaW4gdG8gaGVyZS4KCjIwMDMtMTAtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLW9iamMtY29tbW9uLmMgKGNfdHJlZV9wcmludGVyKTogSGFuZGxlIHR5cGVzIGNvcnJlY3RseS4KCUZhY3RvciBjb2RlIGEgYml0LgoKMjAwMy0xMC0zMCBLZWxsZXkgQ29vayA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiB2YWx1ZS1wcm9mLmMsIHdlYi5jOiBVcGRhdGUgdG8gQzkwLgoKMjAwMy0xMC0zMCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChwdXJnZV9hZGRyZXNzb2ZfMSk6IEFkZCBjYXNlIGZvciBSRUdfUkVUVkFMCglub3RlcyB3aGVuIG1vZGVzIGFyZSB1bmVxdWFsLgoKMjAwMy0xMC0zMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni1tb2Rlcy5kZWY6IEFkZCBYRm1vZGUgZm9ybWF0IGFkanVzdG1lbnQuCgoyMDAzLTEwLTMwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWFsLmMgKGVuY29kZV9pZWVlX2V4dGVuZGVkKTogQmFjayBvdXQgcHJldmlvdXMgcGF0Y2guCgoyMDAzLTEwLTMwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWFsLmMgKGVuY29kZV9pZWVlX2V4dGVuZGVkKTogSW5pdGlhbGl6ZSB3aG9sZSBhcnJheS4KCSogcmVnLXN0YWNrLmMgKG1vdmVfZm9yX3N0YWNrX3JlZzA6IFVzZSBhbHdheXMgWEZtb2RlLgoJKiBpMzg2LW1vZGVzLmRlZjogQ2hhbmdlIGRlZmluaXRpb25zIG9mIFRGbW9kZSBhbmQgWEZtb2RlLgoJKiBpMzg2LmMgKGNsYXNzaWZ5X2FyZ3VtZW50KTogUmVuYW1lIFRGbW9kZXMgdG8gWEZtb2RlczsgYWRkIG5ldyBURm1vZGUKCWNvZGUuCgkoY29uc3RydWN0X2NvbnRhaW5lcik6IEFsbG93IGNvbnN0cnVjdGluZyBvZiBURm1vZGUgaW50ZWdlciBjb250YWluZXJzLgoJKGl4ODZfcmV0dXJuX2luX21lbW9yeSk6ICBYRm1vZGUgaXMgbm90IHJldHVybmVkIGluIG1lbW9yeS4KCShpbml0X2V4dF84MDM4N19jb25zdGFudHMpOiBBbHdheXMgdXNlIFhGbW9kZS4KCShwcmludF9vcGVyYW5kKTogTGlrZXdpc2UuCgkoaXg4Nl9wcmVwYXJlX2ZwX2NvbXBhcmVfcmVncyk6IExpa2V3aXNlLgoJKHNwbGl0X3RvX3BhcnRzKTogRGVhbCB3aXRoIFRGbW9kZS4KCShzcGxpdF9sb25nX21vdmUpOiBTaW1wbGlmeS4KCShpeDg2X2luaXRfbW14X3NzZV9idWlsdGlucyk6IEFkZCBfX2Zsb2F0ODAsIF9fZmxvYXQxMjguCgkoaXg4Nl9tZW1vcnlfbW92ZV9jb3N0KTogRG8gbm90IGNvbmZ1c2UgVEZtb2RlLgoJKiBpMzg2LmggKExPTkdfRE9VQkxFX1RZUEVfU0laRSk6IFNldCB0byA5Ni4KCShJU19TVEFDS19NT0RFKTogVEZtb2RlIGlzIG5vdCBzdGFjayBtb2RlLgoJKEhBUkRfUkVHTk9fTlJFR1MsIENMQVNTX01BWF9OUkVHUyk6IERlYWwgbmljZWx5IHdpdGggWEZtb2RlLgoJKFZBTElEX1NTRV9SRUdfTU9ERSk6IEFsbG93IFRGbW9kZS4KCShWQUxJRF9GUF9NT0RFX1ApOiBEaXNhbGxvdyBURm1vZGUuCgkoVkFMSURfSU5UX01PREVfUCk6IEFsbG93IFRGbW9kZSBpbiA2NGJpdCBtb2RlLgoJKiBpMzg2Lm1kIChURm1vZGUgcGF0dGVybnMpOiBLaWxsLgoJKG1vdnRmLCBtb3RmX3JleDY0KTogTmV3IHBhdHRlcm5zLgoKMjAwMy0xMC0zMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoYWRkZGkzKTogRml4IHR5cG8gaW4gbWlwczE2IHN0YWNrIHBvaW50ZXIgY29kZS4KCjIwMDMtMTAtMzAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKG1vdl9sd2wpOiBVc2UgbWVtb3J5X29wZXJhbmQgd2hlcmUgYXBwcm9wcmlhdGUuCgkobW92X2x3ciwgbW92X3N3bCwgbW92X3N3cik6IExpa2V3aXNlLgoJKG1vdl9sZGwsIG1vdl9sZHIsIG1vdl9zZGwsIG1vdl9zZHIpOiBMaWtld2lzZS4KCjIwMDMtMTAtMzAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19nbG9iYWxfcG9pbnRlcik6IERvbid0IHRyeSB0byB1c2UgJDI1LgoKMjAwMy0xMC0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19idWlsZF9idWlsdGluX3ZhX2xpc3QpOiBVc2UgcnVudGltZQoJdGVzdCBmb3IgaXJpeDYgcmF0aGVyIHRoYW4gcHJlcHJvY2Vzc29yIHRlc3QuCgoyMDAzLTEwLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY3BwY2hhcnNldC5jIChvbmVfdXRmOF90b191dGYxNik6IEluaXRpYWxpemUgJ3MnIHRvIHNpbGVuY2Ugd2FybmluZy4KCjIwMDMtMTAtMzAgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBVc2Ugc2F2ZV9yZXR1cm5fYWRkcl9wCglhcyBhIGdlbmVyYWwgZmxhZyB0aGF0IHRoZSByZXR1cm4gYWRkcmVzcyByZWdpc3RlciBuZWVkcyB0byBiZSBzYXZlZCwKCW5vdCBuZWNlc3NhcmlseSBiZWNhdXNlIG9mIF9fYnVpbHRpbl9yZXR1cm5fYWRkciAoMCkuCgkoczM5MF9zcGxpdF9icmFuY2hlcyk6IFJlbW92ZSBURU1QX1JFRyBhbmQgVEVNUF9VU0VEIGFyZ3VtZW50cywKCXJlbW92ZSBzcGVjaWFsIGhhbmRsaW5nIG9mIHpTZXJpZXMgbWFjaGluZXMuCgkoczM5MF9vcHRpbWl6ZV9wcm9sb2cpOiBSZW1vdmUgVEVNUF9VU0VEIGFyZ3VtZW50LCB0cmVhdCB0aGUgcmV0dXJuCglyZWdpc3RlciBhcyBhIHJlZ3VsYXIgcmVnaXN0ZXIgb24gelNlcmllcyBtYWNoaW5lcy4KCShzMzkwX3Jlb3JnKTogQWRqdXN0IGNhbGxzIHRvIHMzOTBfc3BsaXRfYnJhbmNoZXMgYW5kCglzMzkwX29wdGltaXplX3Byb2xvZy4KCShzMzkwX2ZyYW1lX2luZm8pOiBPbiB6U2VyaWVzIG1hY2hpbmVzLCBkbyBub3QgYXNzdW1lIHRoZSByZXR1cm4KCXJlZ2lzdGVyIGlzIGFsd2F5cyB1c2VkLiAgVXBkYXRlIHJlZ3NfZXZlcl9saXZlIHdpdGggY3VycmVudCBkYXRhCglmb3IgdGhlIHNwZWNpYWwgcmVnaXN0ZXJzLgoJKHMzOTBfZW1pdF9lcGlsb2d1ZSk6IFVzZSBzYXZlX3JldHVybl9hZGRyX3AgdG8gZGV0ZXJtaW5lIHdoZXRoZXIKCXRoZSByZXR1cm4gcmVnaXN0ZXIgd2FzIHNhdmVkLgoJKiBjb25maWcvczM5MC9zMzkwLmggKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogRG8gbm90IG1hcmsKCVJFVFVSTl9SRUdOVU0gZml4ZWQgb24gelNlcmllcyBtYWNoaW5lcy4KCShSRUdfQUxMT0NfT1JERVIpOiBVc2UgUkVUVVJOX1JFR05VTSBsYXN0LgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKmRvbG9vcF9zaSIpOiBIYW5kbGUgYnJhbmNoIG92ZXJmbG93Cgl2aWEgYWhpLWpnbmUgcGFpciBvbiB6U2VyaWVzIG1hY2hpbmVzLgoJKCIqZG9sb29wX2RpIik6IExpa2V3aXNlLgoJKCIqZG9sb29wX2RpX2xvbmciKTogUmVtb3ZlLgoKMjAwMy0xMC0zMCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBSZXZlcnQgY2hhbmdlIG9mIGFybV9jb25zdGFudF9saW1pdAoJd2hlbiBvcHRpbWl6aW5nIGZvciBzaXplLgoKMjAwMy0xMC0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9zaW5nbGVfYml0X3Rlc3QpOiBDb252ZXJ0IHRoZSBpbnB1dCB0byB0aGUKCW9wZXJhdGlvbmFsIGludGVybWVkaWF0ZSB0eXBlLgoKMjAwMy0xMC0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKHN0ZF9idWlsZF9idWlsdGluX3ZhX2xpc3QpOiBOZXcuCgkqIGV4cHIuaCAoc3RkX2J1aWxkX2J1aWx0aW5fdmFfbGlzdCk6IERlY2xhcmUuCgkqIGRlZmF1bHRzLmggKEJVSUxEX1ZBX0xJU1RfVFlQRSk6IE5ldy4KCSogc3lzdGVtLmggKEJVSUxEX1ZBX0xJU1RfVFlQRSk6IFBvaXNvbi4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfQlVJTERfQlVJTFRJTl9WQV9MSVNUKTogTmV3LgoJKiB0YXJnZXQuaCAoc3RydWN0IGdjY190YXJnZXQpOiBBZGQgYnVpbGRfYnVpbHRpbl92YV9saXN0LgoJKiB0cmVlLmMgKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIpOiBVc2UgaXQuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmgsIGNvbmZpZy9hbHBoYS9hbHBoYS5jLAoJY29uZmlnL2FscGhhL2FscGhhLmgsIGNvbmZpZy9hbHBoYS91bmljb3Ntay5oLAoJY29uZmlnL2QzMHYvZDMwdi1wcm90b3MuaCwgY29uZmlnL2QzMHYvZDMwdi5jLCBjb25maWcvZDMwdi9kMzB2LmgsCgljb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oLCBjb25maWcvaTM4Ni9pMzg2LmMsIGNvbmZpZy9pMzg2L2kzODYuaCwKCWNvbmZpZy9pODYwL2k4NjAtcHJvdG9zLmgsIGNvbmZpZy9pODYwL2k4NjAuYywgY29uZmlnL2k4NjAvaTg2MC5oLAoJY29uZmlnL2k5NjAvaTk2MC1wcm90b3MuaCwgY29uZmlnL2k5NjAvaTk2MC5jLCBjb25maWcvaTk2MC9pOTYwLmgsCgljb25maWcvbWlwcy9pcmlzNi5oLCBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oLCBjb25maWcvbWlwcy9taXBzLmMsCgljb25maWcvbWlwcy9taXBzLmgsIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oLAoJY29uZmlnL3JzNjAwMC9yczYwMDAuYywgY29uZmlnL3JzNjAwMC9yczYwMDAuaCwKCWNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmgsIGNvbmZpZy9zMzkwL3MzOTAuYywgY29uZmlnL3MzOTAvczM5MC5oLAoJY29uZmlnL3NoL3NoLXByb3Rvcy5oLCBjb25maWcvc2gvc2guYywgY29uZmlnL3NoL3NoLmgsCgljb25maWcveHRlbnNhL3h0ZW5zYS1wcm90b3MuaCwgY29uZmlnL3h0ZW5zYS94dGVuc2EuYywKCWNvbmZpZy94dGVuc2EveHRlbnNhLmg6IFJlbmFtZSBmb29fYnVpbGRfdmFfbGlzdCB0bwoJZm9vX2J1aWxkX2J1aWx0aW5fdmFfbGlzdDsgbWFrZSBpdCBzdGF0aWMuICBEZWZpbmUKCVRBUkdFVF9CVUlMRF9CVUlMVElOX1ZBX0xJU1QuICBSZW1vdmUgQlVJTERfVkFfTElTVF9UWVBFLgoJVXBkYXRlIHByb3Rvcy4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfY2FycnlfZmxhZ19jb21wYXJlKTogTWFrZSBzdGF0aWMuCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmggKEJVSUxEX1ZBX0xJU1RfVFlQRSk6IFJlbW92ZS4KCjIwMDMtMTAtMjkgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4aW5jLmNvbT4KCgkqIHJlY29nLmMgKGFzbV9vcGVyYW5kX29rKTogQWRkIG1pc3NpbmcgYnJlYWsgYWZ0ZXIgY2FzZSAnWCcuCglDaGFuZ2UgaWYgc3RhdGVtZW50cyB0byBlbHNlIGlmIHN0YXRlbWVudHMgaW4gZGVmYXVsdCBjYXNlLgoJKGV4dHJhY3RfY29uc3RyYWluX2luc25fY2FjaGVkKTogRml4IG1pc3NwZWxsaW5nIG9mIGNvbnN0cmFpbl9vcGVyYW5kcwoJaW4gY29tbWVudC4KCShjb25zdHJhaW5fb3BlcmFuZHNfY2FjaGVkKTogTGlrZXdpc2UuCgkoY29uc3RyYWluX29wZXJhbmRzKTogQ2hhbmdlIGlmIHN0YXRlbWVudHMgdG8gZWxzZSBpZiBzdGF0ZW1lbnRzIGluCglkZWZhdWx0IGNhc2UuCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHMpOiBMaWtld2lzZS4KCjIwMDMtMTAtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG5vdGljZV91cGRhdGVfY2MpOiBDbGVhciBjYyBzdGF0dXMgZm9yCglzaGlmdHMgYW5kIHJvdGF0ZXMuCgoyMDAzLTEwLTMwICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IFJlbW92ZSBkdXBsaWNhdGUgcGF0dGVybi4KCjIwMDMtMTAtMjkgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogcmVhbC5jIChkb19kaXZpZGUpOiBJbml0aWFsaXplIHJlc3VsdCB3aXRoIGEgMC4KCgkqIGNvbmZpZ3VyZS5pbiA8ZW5hYmxlLWNoZWNraW5nIGZvciB2YWxncmluZD46IExvb2sgZm9yCgk8dmFsZ3JpbmQvbWVtY2hlY2suaD4gZmlyc3QuICBBQ19ERUZJTkUgSEFWRV9WQUxHUklORF9NRU1DSEVDS19ICglpZiBpdCBleGlzdHMuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBnZ2MtY29tbW9uLmMgW0VOQUJMRV9WQUxHUklORF9DSEVDS0lORyAmJgoJSEFWRV9WQUxHUklORF9NRU1DSEVDS19IXTogSW5jbHVkZSA8dmFsZ3JpbmQvbWVtY2hlY2suaD4uICBVc2UKCSNlbGlmIGZvciBvdGhlciBhbHRlcm5hdGl2ZXMuCgkqIGdnYy1wYWdlLmM6IERpdHRvLgoJKiBnZ2Mtem9uZS5jOiBEb24ndCBhc3N1bWUgPHZhbGdyaW5kL21lbWNoZWNrLmg+OyBpbnN0ZWFkIGNvcHkKCWluY2x1ZGUgc3RydWN0dXJlIGZyb20gZ2djLWNvbW1vbi5jLgoKMjAwMy0xMC0yOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLWxpbnV4LmggKEFTTV9PVVRQVVRfQUREUl9WRUNfRUxUKTogVXNlIGxhYmVsIGluIGJpZyBzd2l0Y2ggRUxUcy4KCShBU01fT1VUUFVUX0FERFJfRElGRl9FTFQpOiBVc2UgbGFiZWwgZGlmZmVyZW5jZSBpbiBiaWcgc3dpdGNoIEVMVHMuCgkqIHBhLmMgKHBhX2FkanVzdF9pbnNuX2xlbmd0aCk6IENoZWNrIGZvciBidGFibGUgYnJhbmNoZXMgdXNpbmcKCWF0dHJpYnV0ZSBUWVBFX0JUQUJMRV9CUkFOQ0guCgkocGFfcmVvcmcpOiBTaW1wbGlmeS4KCSogcGEuaCAoQ0FTRV9WRUNUT1JfTU9ERSk6IENoYW5nZSBiaWcgc3dpdGNoIG1vZGUgdG8gU0ltb2RlLgoJKEFTTV9PVVRQVVRfQUREUl9WRUNfRUxUKTogQXMgYWJvdmUuCgkoQVNNX09VVFBVVF9BRERSX0RJRkZfRUxUKTogQXMgYWJvdmUuCgkqIHBhLm1kIChidGFibGVfYnJhbmNoKTogTmV3IGluc3RydWN0aW9uIHR5cGUuCgkoaW5fYnJhbmNoX2RlbGF5LCBpbl9udWxsaWZpZWRfYnJhbmNoX2RlbGF5LCBpbl9jYWxsX2RlbGF5KTogRGlzYWxsb3cKCWJ0YWJsZSBicmFuY2hlcy4KCShkZWZpbmVfZGVsYXkpOiBBZGQgYnRhYmxlIGJyYW5jaGVzIHRvIGluc24gdHlwZXMgdGhhdCBtYXkgaGF2ZSBhbgoJaW5zbiBpbiB0aGUgZGVsYXkgcG9zaXRpb24uCgkoWjIsIFozKTogQWRkIGJ0YWJsZSBicmFuY2ggdG8gbGlzdC4KCVNpbXBsaWZ5IHVuYW1lZCBwYXR0ZXJuIHNldCBjb3B5IHBpY19sYWJlbF9vcGVyYW5kIHRvIHJlZ2lzdGVyLiAgQWRkCglQQSAyLjAgdmFyaWFudC4KCShzaG9ydF9qdW1wKTogTmV3IGp1bXAgZm9yIHVzZSBpbiBicmFuY2ggdGFibGVzLgoJKGNhc2VzaSwgY2FzZXNpMCk6IFJldmlzZSBmb3IgbmV3IGJyYW5jaCB0YWJsZSBmb3JtYXRzLgoJKGNhc2VzaTMyLCBjYXNlc2kzMnAsIGNhc2VzaTY0cCk6IE5ldyBjYXNlc2kgcGF0dGVybnMuCgkoaW5kaXJlY3RfanVtcCk6IE1vdmUuCgoyMDAzLTEwLTI5ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChVTklUU19QRVJfV09SRCk6IFJldmVydCB0bwoJIVRBUkdFVF9QT1dFUlBDNjQuCgkoVU5JVFNfUEVSX0dQUl9XT1JEKTogRGVsZXRlLgoJKEhBUkRfUkVHTk9fTlJFR1MpOiBSZXZlcnQgdG8gVU5JVFNfUEVSX1dPUkQuCgkoSEFSRF9SRUdOT19NT0RFX09LKTogU2FtZS4KCShDTEFTU19NQVhfTlJFR1MpOiBTYW1lLgoKMjAwMy0xMC0yOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLmggKEFTTV9DT01NRU5UX1NUQVJUKTogRGVmaW5lLgoKMjAwMy0xMC0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdlbm1vZGVzLmMgKGNvbXBsZXRlX21vZGUpOiBSZWNvcmQgTU9ERV9DQywgTU9ERV9JTlQsCglNT0RFX0ZMT0FULCBhbmQgTU9ERV9QQVJUSUFMX0lOVCBtb2RlcyBhcyBoYXZpbmcgb25lCgljb21wb25lbnQsIG5vdCB6ZXJvLgoKMjAwMy0xMC0yOSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZy9pYTY0L3QtaWE2NCAoTElCMkFEREVIKTogQWRkICQoc3JjZGlyKS9ndGhyLWduYXQuYy4KCjIwMDMtMTAtMjkgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MpIFtUQVJHRVRfQVJDSDY0XToKCU5ldmVyIHJldHVybiAxIGZvciBjb21wbGV4IGludGVncmFsIG1vZGVzIHdob3NlIHNpemUgaXMgbGVzc2VyIG9yCgllcXVhbCB0byBhIHdvcmQuCgkoZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlKSBbVEFSR0VUX0FSQ0g2NF06IE1lbnRpb24gQ1RJbW9kZQoJaW4gdGhlIGNvbW1lbnQuCgkoZnVuY3Rpb25fYXJnX2FkdmFuY2UpIFtUQVJHRVRfQVJDSDY0XTogRG9uJ3Qgc3BlY2lhbC1jYXNlIGNvbXBsZXgKCW1vZGVzLgoJKHNwYXJjX3ZhX2FyZykgW1RBUkdFVF9BUkNINjRdOiBIYW5kbGUgYW55IHR5cGVzIHdob3NlIHNpemUgaXMKCWdyZWF0ZXIgdGhhbiAxNiBieXRlcyBieSByZWZlcmVuY2UuCgoyMDAzLTEwLTI5ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2Fzc2VtYmxlX2ludGVnZXIpOiBUZXN0IFBPSU5URVJfU0laRSwKCW5vdCBUQVJHRVRfSUxQMzIuCgkoaWE2NF9pbml0aWFsaXplX3RyYW1wb2xpbmUpOiBVc2UgZ2xvYmFsaXplX2xhYmVsIHRhcmdldCBjYWxsLgoKMjAwMy0xMC0yOSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKEJ1aWxkaW5nKTogQWRkIGEgc2VudGVuY2UgYWJvdXQgYnVpbGRpbmcgQWRhCglmb3IgYSBjYW5hZGlhbiBjcm9zcy4KCjIwMDMtMTAtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGNtcHRmX2xpYmZ1bmMpOiBOZXcgc3RhdGljLgoJKGlhNjRfZXhwYW5kX2NvbXBhcmUpOiBBZGQgbG9naWMgdG8gb3Blbi1jb2RlIGNhbGxzIHRvCglfVV9RZmNtcCBmb3IgVEZtb2RlIGNvbXBhcmlzb25zLgoJKGlhNjRfaHB1eF9pbml0X2xpYmZ1bmNzKTogSW5pdGlhbGl6ZSBjbXB0Zl9saWJmdW5jLgoJU2V0IGxpYmZ1bmNzIGZvciBURm1vZGUgZXEvbmUvZ3QvZ2UvbHQvZ3QgdG8gMDsgdGhlc2Ugc2hvdWxkCgluZXZlciBiZSBnZW5lcmF0ZWQgYW55bW9yZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoY21wdGYpOiBOZXcgZXhwYW5kZXIuCgoyMDAzLTEwLTI4ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaWE2NC5tZCAoVU5TUEVDX1NFVEZfRVhQLFVOU1BFQ19GUl9TUVJUX1JFQ0lQX0FQUFJPWCk6IE5ldyBjb25zdGFudHMuCgkoKnNxcnRfYXBwcm94KTogTmV3IGluc3RydWN0aW9uIHBhdHRlcm4gZm9yIGFwcHJveGltYXRlIHNxdWFyZSByb290cy4KCSgqc2V0Zl9leHBfeGYpOiBOZXcgaW5zdHJ1Y3Rpb24gcGF0dGVybiBmb3IgZXhwb25lbnRpYXRpb24uCgkoKm1hZGR4ZjRfYWx0c190cnVuY3NmKTogTmV3IGluc3RydWN0aW9uIHBhdHRlcm4gZm9yIHRydW5jYXRpb24uCgkoc3FydHNmMl9pbnRlcm5hbF90aHIpOiBOZXcgZGVmaW5lX2FuZF9zcGxpdCBpbXBsZW1lbnRpbmcKCXRocm91Z2hwdXQtb3B0aW1pemVkIGlubGluZSBjYWxjdWxhdGlvbiBvZiBTRm1vZGUgc3F1YXJlIHJvb3QuCgkoc3FydGRmMl9pbnRlcm5hbF90aHIpOiBMaWtld2lzZSBmb3IgREZtb2RlLgoJKHNxcnR4ZjJfaW50ZXJuYWxfdGhyKTogTGlrZXdpc2UgZm9yIFhGbW9kZS4KCShzcXJ0c2YyLCBzcXJ0ZGYyLCBzcXJ0eGYyKTogTmV3IGV4cGFuZGVycyB0byBjaG9vc2UgYmV0d2VlbgoJbGF0ZW5jeS0gYW5kIHRocm91Z2hwdXQtb3B0aW1pemVkIHNxdWFyZSByb290IGFsZ29yaXRobXMuCgkqIGlhNjQuaCAoTUFTS19JTkxJTkVfU1FSVF9MQVQsIE1BU0tfSU5MSU5FX1NRUlRfVEhSLAoJVEFSR0VUX0lOTElORV9TUVJUX0xBVCwgVEFSR0VUX0lOTElORV9TUVJUX1RIUiwgVEFSR0VUX0lOTElORV9TUVJUKToKCU5ldyBtYWNyb3MuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1taW5saW5lLXNxcnQtbWluLWxhdGVuY3kgYW5kCgktbWlubGluZS1zcXJ0LW1heC10aHJvdWdocHV0LgoJKiBpYTY0LmMgKGlhNjRfb3ZlcnJpZGVfb3B0aW9ucyk6IElmIGJvdGggLW1pbmxpbmUtc3FydC1taW4tbGF0ZW5jeQoJYW5kIC1taW5saW5lLXNxcnQtbWF4LXRocm91Z2hwdXQgYXJlIGdpdmVuLCBub3RpZnkgdGhlIHVzZXIKCXRoYXQgYm90aCBvcHRpb25zIGNhbm5vdCBiZSB1c2VkIHNpbXVsdGFuZW91c2x5LgoJSWYgLW1pbmxpbmUtc3FydC1taW4tbGF0ZW5jeSBpcyBnaXZlbiwgbm90aWZ5IHRoZSB1c2VyIHRoYXQKCXRoaXMgbW9kZSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgoJKHJ0eF9uZWVkc19iYXJyaWVyKTogUmVmb3JtYXQgaW5pdGlhbCBjb21tZW50IHRvIG9iZXkKCTcyLWNoYXJhY3RlciB3aWR0aCBsaW1pdC4gIFN1cHBvcnQgVU5TUEVDX1NFVEZfRVhQIGFuZAoJVU5TUEVDX0ZSX1NRUlRfUkVDSVBfQVBQUk9YLgoKMjAwMy0xMC0yOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3ZkZl9zb2Z0ZmxvYXQ2NCk6IEFsbG93IGR1bW15IGN0cixjdHIKCW1vdmVzLgoKMjAwMy0xMC0yOCAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCVBSIHRhcmdldC8xMTU5OAoJUFIgbGliZ2NqLzEwNjEwCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoUFJFRkVSUkVEX1NUQUNLX0JPVU5EQVJZKTogTmV3IG1hY3JvLgoKMjAwMy0xMC0yOCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAoYXJtX291dHB1dF9lcGlsb2d1ZSk6IFdoZW4gdXNpbmcgYSBmcmFtZSBwb2ludGVyLCBkb24ndCBlbWl0CglhbiBleHRyYSBzdGFjayBhZGp1c3RtZW50IGluc24gaWYgdGhlIHN0YWNrIHBvaW50ZXIgaXMgYWxyZWFkeQoJcG9pbnRpbmcgYXQgdGhlIHJpZ2h0IHBsYWNlLgoJKHVzZV9yZXR1cm5faW5zbik6IEFsbG93IGEgcmV0dXJuIGluc24gdG8gYmUgdXNlZCB3aGVuIHdlIGhhdmUgYQoJZnJhbWUgcG9pbnRlciBpZiB0aGUgc3RhY2sgcG9pbnRlciBpcyBpbiB0aGUgcmlnaHQgcGxhY2UuCgkob3V0cHV0X3JldHVybl9pbnN0cnVjdGlvbik6IEhhbmRsZSBpdC4KCjIwMDMtMTAtMjggIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGdnYy16b25lLmMgKGNoZWNrX2Nvb2tpZXMpOiBBZGQgbWlzc2luZyB2YXJpYWJsZS4KCUFkZCB2b2lkIHRvIHByb3RvdHlwZXMuCgoyMDAzLTEwLTI3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWcvbWlwcy9pcml4Ni1saWJjLWNvbXBhdC5jIChpbmV0X21ha2VhZGRyKTogUHJvdG90eXBlLgoJKiBjcnRzdHVmZi5jIChfX2RvX2dsb2JhbF9jdG9yc18xKTogTW92ZSBwcm90b3R5cGUuCgkqIHVud2luZC1kdzIuYyAoTk9fU0laRV9PRl9FTkNPREVEX1ZBTFVFKTogRGVmaW5lIHdoZW4KCWFwcHJvcHJpYXRlLgoJKiB1bndpbmQtc2psai5jIChfVW53aW5kX0dldENGQSwgX1Vud2luZF9GaW5kRW5jbG9zaW5nRnVuY3Rpb24pOgoJTWFyayBwYXJhbWV0ZXIgd2l0aCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKS4KCjIwMDMtMTAtMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYyAocHVzaGRlY2wpOiBDbGFyaWZ5IGNvbW1lbnQuCgoyMDAzLTEwLTI3ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IFVwZGF0ZSBpbnN0cnVjdGlvbnMgZm9yIEFkYSBjcm9zcyBidWlsZHMKCglQUiBhZGEvNTkwOToKCSogZG9jL3NvdXJjZWJ1aWxkLnRleGk6IERvY3VtZW50IEFkYSB0ZXN0IHN1aXRlLgoKMjAwMy0xMC0yNyAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmM6IENvbnZlcnQgdG8gSVNPIEM5MC4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS1wcm90b3MuaDogTGlrZXdpc2UuCgoyMDAzLTEwLTI3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIHRvcGxldi5jIChlbnVtIGR1bXBfZmlsZV9pbmRleCwgZHVtcF9maWxlKTogRml4IG9yZGVyaW5nIG9mCgl3ZWJpemVyIHBhc3MgZHVtcC4KCjIwMDMtMTAtMjcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoJICAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlbG9hZDEuYyAoc3RydWN0IGVsaW1fdGFibGUpOiBDaGFuZ2Ugb2Zmc2V0LCBpbml0aWFsX29mZnNldCBhbmQKCXByZXZpb3VzX29mZnNldCBmaWVsZHMgdG8gSE9TVF9XSURFX0lOVC4KCShvZmZzZXRzX2F0KTogQ2hhbmdlIGZyb20gaW50IHRvIEhPU1RfV0lERV9JTlQuCgkocmVsb2FkKTogQWRqdXN0IG9mZnNldHNfYXQgaW5pdGlhbGl6YXRpb24uCgkoZWxpbWluYXRlX3JlZ3NfaW5faW5zbik6IENoYW5nZSB0eXBlIG9mIG9mZnNldCB0byBIT1NUX1dJREVfSU5ULgoJKHZlcmlmeV9pbml0aWFsX2VsaW1fb2Zmc2V0cyk6IENoYW5nZSB0eXBlIG9mIHQgdG8gSE9TVF9XSURFX0lOVC4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0KTogQ2hhbmdlIG9mZnNldCB0eXBlCgl0byBIT1NUX1dJREVfSU5ULiAgRG9uJ3Qgc2F2ZSByZWdzIHVzaW5nIG1vdiBmb3IgaHVnZSBmcmFtZSBzaXplcwoJaWYgVEFSR0VUXzY0QklULgoJKHByb19lcGlsb2d1ZV9hZGp1c3Rfc3RhY2spOiBOZXcgZnVuY3Rpb24uCgkoaXg4Nl9leHBhbmRfcHJvbG9ndWUsIGl4ODZfZXhwYW5kX2VwaWxvZ3VlKTogVXNlIGl0LgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChwcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrKTogUmVtb3ZlLgoJKHByb19lcGlsb2d1ZV9hZGp1c3Rfc3RhY2tfMSk6IFJlbW92ZSAqIGluIGZyb250IG9mIG5hbWUuCgkocHJvX2VwaWxvZ3VlX2FkanVzdF9zdGFja19yZXg2NCk6IEhhbmRsZSAtMjE0NzQ4MzY0OCBwcm9wZXJseS4KCShwcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrX3JleDY0XzIpOiBOZXcgaW5zbi4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfZXBpbG9ndWUpOiBGaXggY29tbWVudCB0eXBvLgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9jYWxsKTogUmVwbGFjZSA0MCB3aXRoCglGSVJTVF9SRVhfSU5UX1JFRyArIDMgLyogUjExICovLgoKMjAwMy0xMC0yNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoYXR0ciBjYW5ub3RfY29weSk6IE5ldy4KCShjYWxsX29zZl8yX2VyLCBjYWxsX3ZhbHVlX29zZl8yX2VyLCBsZGdwX2VyXzEsIGxkZ3BfZXJfMiwKCXByb2xvZ3VlX2xkZ3BfZXJfMiwgcHJvbG9ndWVfbGRncF8xKTogU2V0IGl0LgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfY2Fubm90X2NvcHlfaW5zbl9wKTogVGVzdCBpdC4KCjIwMDMtMTAtMjYgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogZ2djLXpvbmUuYzogIE5ldyBmaWxlLCB6b25lIGFsbG9jYXRpbmcgY29sbGVjdG9yLgoJKiBjb25maWd1cmU6IEFjY2VwdCB6b25lIG9wdGlvbiBmb3IgLS13aXRoLWdjCgkqIGNvbmZpZ3VyZS5pbjogRGl0dG8uCgkqIGdnYy5oIChnZ2NfcGNoX2NvdW50X29iamVjdCk6IFBhc3MgYm9vbCBpbmRpY2F0aW5nCglzdHJpbmdpbmVzcy4gVXBkYXRlIGFsbCBjYWxsZXJzLgoJKGdnY19wY2hfYWxsb2Nfb2JqZWN0KTogRGl0dG8uCgkoZ2djX3BjaF93cml0ZV9vYmplY3QpOiBEaXR0by4KCShnZ2NfYWxsb2NfcnR4KTogVXNlIHR5cGVkIGFsbG9jYXRpb24sIHNpbmNlIGFsbCBSVFgncyBhcmUgb2YgYSBzaW5nbGUKCXR5cGUuCgkoZ2djX2FsbG9jX3J0dmVjKTogRGl0dG8uCgkoZ2djX2FsbG9jX3RyZWUpOiBVc2Ugem9uZSBhbGxvY2F0aW9uLCBzaW5jZSBzb21lIHRoaW5ncyB1c2luZyB0aGlzIG1hY3JvCglhcmVuJ3QgYSBzaW5nbGUgdHlwZWNvZGUuCgkqIGdnYy1ub25lLmMgKGdnY19hbGxvY190eXBlZCk6IE5ldyBmdW5jdGlvbi4KCShnZ2NfYWxsb2Nfem9uZSk6IERpdHRvLgoJKiBnZ2MtcGFnZS5jOiBEaXR0byBvbiBib3RoIGZ1bmN0aW9ucy4KCjIwMDMtMTAtMjYgIEd1bnRoZXIgTmlrbCAgPGduaUBnZWNrby5kZT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19jb21wdXRlX2ZyYW1lX2xheW91dCk6IEVuc3VyZSBGUFUgcmVsYXRlZAoJZnJhbWUgaW5mb3JtYXRpb24gaXMgYWx3YXlzIHZhbGlkLgoJKG02OGtfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogUmVtb3ZlIHN1cGVyZmx1b3VzIFRBUkdFVF82ODg4MQoJdGVzdDsgZml4IGZvcm1hdHRpbmcuCgoyMDAzLTEwLTI2ICBHdW50aGVyIE5pa2wgIDxnbmlAZ2Vja28uZGU+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfY29tcHV0ZV9mcmFtZV9sYXlvdXQpOiBTd2FwIHJlZ19tYXNrIGFuZAoJcmVnX3Jldl9tYXNrIGNvbXB1dGF0aW9uLgoJKG02OGtfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogRml4IHVzYWdlIG9mIGN1cnJlbnRfZnJhbWUgKG9uZSB0eXBvCglhbmQgb25lIG1pc3NpbmcpOyB1c2UgcmVnX3Jldl9tYXNrIG5vdCByZWdfbWFzay4KCShtNjhrX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IEZpeCB1c2FnZSBvZiBjdXJyZW50X2ZyYW1lOwoJdXNlIGZwdV9yZXZfbWFzayBub3QgZnB1X21hc2suCgoyMDAzLTEwLTI2ICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogRWxpbWluYXRlCgludW1fc2F2ZWRfcmVncywgdXNlIGN1cnJlbnRfZnJhbWUucmVnX25vIGluc3RlYWQuCgoyMDAzLTEwLTI2ICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgkgICAgUGF1bCBEYWxlICA8cGF1bGlAc25hcGdlYXIuY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpIChpbnRlcnJ1cHRfaGFuZGxlcik6IEFkZCBtNjhrIHRvIHRoZQoJbGlzdCBvZiBwcm9jZXNzb3JzIGltcGxlbWVudGluZyBpdC4KCSogZG9jL2ludm9rZS50ZXhpICgtbXNlcC1kYXRhKTogRG9jdW1lbnQgbmV3IG02OGsgb3B0aW9uLgoJKC1tbm8tc2VwLWRhdGEpOiBMaWtld2lzZS4KCSgtbWlkLXNoYXJlZC1saWJyYXJ5KTogTGlrZXdpc2UuCgkoLW1uby1pZC1zaGFyZWQtbGlicmFyeSk6IExpa2V3aXNlLgoJKC1tc2hhcmVkLWxpYnJhcnktaWQpOiBMaWtld2lzZS4KCjIwMDMtMTAtMjYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHVud2luZC1kdzIuYyAoX1Vud2luZF9HZXRHUik6IEF2b2lkIHdhcm5pbmcgYWJvdXQgdW5zaWduZWQKCWNvbXBhcmlzb24uCgkoX1Vud2luZF9TZXRHUik6IExpa2V3aXNlLgoKMjAwMy0xMC0yNiAgT3R0YXZpbyBDYW1wYW5hIDxvdHRhdmlvQGNhbXBhbmEudmkuaXQ+CgoJUFIgdGFyZ2V0LzEyNjkwCgkqIGNvbmZpZy9pMzg2L21taW50cmluLmggKF9tbV9zZXQxX3BpOCk6IEZpeCBjb21tZW50LgoKMjAwMy0xMC0yNiAgR3VudGhlciBOaWtsICA8Z25pQGdlY2tvLmRlPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IE1vdmUgZnJvbnQKCWNvbW1lbnQgZnJvbSBoZXJlIHRvLi4uCgkobTY4a19zYXZlX3JlZyk6IC4uLmhlcmUuIEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkobTY4a19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBGaXggY29tbWVudCBmb3JtYXR0aW5nLgoJKG02OGtfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkoY29uc3RfbWV0aG9kKTogTGlrZXdpc2UuCgoyMDAzLTEwLTI2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdG9wbGV2LmMgKGRlZmF1bHRfZ2V0X3BjaF92YWxpZGl0eSk6IEd1YXJkIHRoZSB1c2Ugb2YKCXRhcmdldF9vcHRpb25zIHdpdGggI2lmZGVmIFRBUkdFVF9PUFRJT05TLgoJKGRlZmF1bHRfcGNoX3ZhbGlkX3ApOiBMaWtld2lzZS4KCjIwMDMtMTAtMjYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCSAgICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoJICAgIEFuZHJlYXMgVG9ibGVyIDx0b2FAcG9wLmFncmkuY2g+CgoJKiBkd2FyZjJvdXQuYyAob3V0cHV0X2NmaSk6IFVzZSBIT1NUX1dJREVfSU5UX1BSSU5ULgoJKG91dHB1dF9kaWUpOiBMaWtld2lzZS4KCShwcmludF9kaWUpOiBMaWtld2lzZS4KCjIwMDMtMTAtMjYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHRyZWUuaCAoZHdhcmYyb3V0X2RlZl9jZmEsIGR3YXJmMm91dF9hcmdzX3NpemUsCglkd2FyZjJvdXRfcmVnX3NhdmUsIG5ld19sb2NfZGVzY3IpOiBVcGRhdGUgcHJvdG90eXBlcyBmb3IgcmVjZW50Cglkd2FyZjJvdXQuYyBjaGFuZ2UuCgoJKiB0b3BsZXYuYyAoZGVmYXVsdF9wY2hfdmFsaWRfcCk6IEZpeCB3YXJuaW5nLgoKMjAwMy0xMC0yNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVwbGFjZV9ydHgpOiBBdm9pZCBhbGxvY2F0aW5nIGR1cGxpY2F0ZQoJUlRMIG5vZGVzLiAgSWYgYW4gb3BlcmF0b3IncyBvcGVyYW5kcyBhcmUgdW5jaGFuZ2VkLCByZXR1cm4gdGhlCglvcmlnaW5hbCBhcmd1bWVudCB1bmNoYW5nZWQuCgoyMDAzLTEwLTI2ICBHcmFoYW0gU3RvdHQgIDxncmFoYW0uc3RvdHRAYnRpbnRlcm5ldC5jb20+CgoJRml4IGJvb3RzdHJhcCBmYWlsdXJlLgoJKiBleHBtZWQuYyAoc3RvcmVfYml0X2ZpZWxkKTogRG9uJ3QgY29tcGFyZSBiaXRzaXplIGFnYWluc3QKCW1vZGVzIHdpdGggemVybyBiaXQtc2l6ZS4KCgkoZXh0cmFjdF9iaXRfZmllbGQpOiBMaWtld2lzZQoKMjAwMy0xMC0yNSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZHdhcmYyb3V0LmMgKGR3X2NmaV9vcHJuZF9zdHJ1Y3QpOiBPZmZzZXQgaXMgSE9TVF9XSURFX0lOVC4KCShjZmFfbG9jKTogTGlrZXdpc2UuCgkocmVnX3NhdmUsIHN0YWNrX2FkanVzdF9vZmZzZXQsIHF1ZXVlX3JlZ19zYXZlKTogUmVwbGFjZSBsb25nIGJ5CglIT1NUX1dJREVfSU5ULgoJKGFyZ3Nfc2l6ZSwgb2xkX2FyZ3Nfc2l6ZSk6IGNoYW5nZSB0eXBlIHRvIEhPU1RfV0lERV9JTlQuCgkoZHdhcmYyb3V0X2RlZl9jZmEsIGR3YXJmMm91dF9hcmdzX3NpemUsCglkd2FyZjJvdXRfcmVnX3NhdmUsIG5ld19sb2NfZGVzY3IpOiBvZmZzZXQgaXMgSE9TVF9XSURFX0lOVC4KCShkd192YWxfc3RydWN0KTogaW50ZWdlcnMsIHVuc2lnbmVkcyBhbmQgb2Zmc2V0cyBhcmUgSE9TVF9XSURFX0lOVC4KCShhZGRfQVRfaW50LCBhZGRfQVRfdW5zaWduZWQsIGF0dF9BVF9vZmZzZXQsIEFUX2ludCwgQVRfdW5zaWduZWQsCglBVF9vZmZzZXQpOiBVc2UgSE9TVF9XSURFX0lOVC4KCShiYXNlZF9sb2NfZGVzY3IpOiBvZmZzZXQgaXMgSE9TVF9XSURFX0lOVC4KCShhZGRfZGF0YV9tZW1iZXIpOiBMaWtld2lzZS4KCShhZGRfY29uc3RfdmFsdWVfYXR0cmlidXRlKTogU2ltcGxpZnkuCgoyMDAzLTEwLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2VheF9saXZlX2F0X3N0YXJ0X3ApOiBOZXcuCgkoaXg4Nl9leHBhbmRfcHJvbG9ndWUpOiBTYXZlIGFuZCByZXN0b3JlIGVheCBhcm91bmQgc3RhY2sgcHJvYmUKCWlmIGl0J3MgbGl2ZS4KCjIwMDMtMTAtMjUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNwcGNoYXJzZXQuYyAob25lX3V0ZjhfdG9fdXRmMzIpOiBJbml0aWFsaXplICdzJyB0byBzaWxlbmNlIHdhcm5pbmcuCgoyMDAzLTEwLTI1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xMjcxMgoJKiByZWctc3RhY2suYyAoY29udmVydF9yZWdzXzEpOiBDcmVhdGUgYW4gYXJiaXRyYXJ5IGlucHV0IHN0YWNrCglpZiB0aGUgYmxvY2sgaGFzIG5vIHByZWRlY2Vzc29ycy4KCShjb252ZXJ0X3JlZ3NfMik6IERvY3VtZW50IHRoZSBwcm9ibGVtIHdpdGggc3VjY2Vzc29ycyB3aG9zZQoJb25seSBwcmVkZWNlc3NvciBpcyB0aGUgYmxvY2sgdG8gYmUgcHJvY2Vzc2VkLgoJKGNvbnZlcnRfcmVncyk6IERvbid0IGNyZWF0ZSB0aGUgYXJiaXRyYXJ5IGlucHV0IHN0YWNrIGhlcmUuCgoyMDAzLTEwLTI0ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2VubW9kZXMuYyAoc3RydWN0IG1vZGVfZGF0YSk6IEFkZCBjb250YWluZWQgYW5kIG5leHRfY29udAoJZmllbGRzLgoJKGNvbXBsZXRlX21vZGUpOiBNYWludGFpbiBsaW5rZWQgbGlzdCBvZiBtb2RlcyB0aGF0IGhhdmUgYQoJZ2l2ZW4gY29tcG9uZW50LgoJKGVtaXRfbW9kZV91bml0X3NpemUpOiBEZWxldGUuCgkoZW1pdF9tb2RlX251bml0cyk6IE5ldy4KCShlbWl0X2luc25fbW9kZXNfYyk6IFVwZGF0ZSB0byBtYXRjaC4KCShlbWl0X21vZGVfYWRqdXN0bWVudHMpOiBQcm9wYWdhdGUgc2l6ZSBhbmQgYWxpZ25tZW50CglhZGp1c3RtZW50cyBmcm9tIGNvbXBvbmVudCBtb2RlcyB0byB0aGVpciBjb250YWluZXJzLgoJKiBtYWNobW9kZS5oIChtb2RlX3VuaXRfc2l6ZSk6IERlbGV0ZS4KCShtb2RlX251bml0cyk6IE5ldy4KCShHRVRfTU9ERV9OVU5JVFMpOiBKdXN0IHJldHVybiB0aGUgdmFsdWUgaW4gdGhlIHRhYmxlLgoJKEdFVF9NT0RFX1VOSVRfU0laRSk6IENvbXB1dGUgdXNpbmcgR0VUX01PREVfSU5ORVIgYW5kCglHRVRfTU9ERV9TSVpFLgoJKiBleHBtZWQuYyAoc3RvcmVfYml0X2ZpZWxkLCBleHRyYWN0X2JpdF9maWVsZCk6IENhbiB1c2UgYQoJcGxhaW4gbW92ZSBpbnN0cnVjdGlvbiBpZiBiaXRzaXplID49IEdFVF9NT0RFX0JJVFNJWkUgb2YKCWRlc3RpbmF0aW9uL3NvdXJjZSBtb2RlLCByZXNwZWN0aXZlbHkuCgkqIHZhcmFzbS5jIChhc3NlbWJsZV9yZWFsKTogV3JpdGUgb3V0IHRoZSBmdWxsIHNpemUgb2YgdGhlCgljb25zdGFudCwgbm90IGp1c3QgaXRzIGJpdHNpemUuCgkob3V0cHV0X2NvbnN0YW50KTogSG9ub3IgVFlQRV9NT0RFIG9mIFRSRUVfUkVBTF9DU1RzLgoKCSogY29uZmlnL2lhNjQvaWE2NC1tb2Rlcy5kZWY6IERlZmluZSBYRm1vZGUgYXMgd2VsbCBhcyBURm1vZGUuCglVc2UgQURKVVNUX0JZVEVTSVpFIGFuZCBBREpVU1RfQUxJR05NRU5UIHRvIHNldCBzaXplIGFuZAoJYWxpZ25tZW50IG9mIFhGIGFuZCBURiBtb2RlcyBpbiBjb21wbGlhbmNlIHdpdGggaWE2NCBBQklzLgoJQ2FuIG5vdyBoYXJkd2lyZSB0aGUgZm9ybWF0IG9mIGJvdGggbW9kZXMuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYzogQ2hhbmdlIFRGbW9kZSB0byBYRm1vZGUgd2hlcmV2ZXIgYXBwcm9wcmlhdGUuCgkoZ2VuZXJhbF90Zm1vZGVfb3BlcmFuZCwgZGVzdGluYXRpb25fdGZtb2RlX29wZXJhbmQpCgkodGZyZWdfb3JfZnAwMV9vcGVyYW5kLCBzcGlsbF90Zm1vZGVfb3BlcmFuZCk6IFJlbmFtZSB0bwoJZ2VuZXJhbF94Zm1vZGVfb3BlcmFuZCwgZGVzdGluYXRpb25feGZtb2RlX29wZXJhbmQsCgl4ZnJlZ19vcl9mcDAxX29wZXJhbmQsIHNwaWxsX3hmbW9kZV9vcGVyYW5kIHJlc3BlY3RpdmVseS4KCShpYTY0X2luaXRfYnVpbHRpbnMpOiBNYWtlIFRZUEVfUFJFQ0lTSU9OIG9mIGZwcmVnX3R5cGUKCWFuZCBmbG9hdDgwX3R5cGUgYmUgOTYgc28gdGhleSBnZXQgWEZtb2RlLiAgVXNlICFUQVJHRVRfSFBVWCwKCW5vdCBJTlRFTF9FWFRFTkRFRF9JRUVFX0ZPUk1BVCwgdG8gZGVjaWRlIGhvdyB0byBkZWZpbmUKCV9fZmxvYXQxMjguCgkqIGNvbmZpZy9pYTY0L2lhNjQuaDogRGVmYXVsdCBUQVJHRVRfSFBVWCB0byAwLgoJQ2hhbmdlIFRGbW9kZSB0byBYRm1vZGUgd2hlcmV2ZXIgYXBwcm9wcmlhdGUuICBSZW1vdmUgYWxsCglyZWZlcmVuY2VzIHRvIElOVEVMX0VYVEVOREVEX0lFRUVfRk9STUFULgoJKExPTkdfRE9VQkxFX1RZUEVfU0laRSk6IFZhcmllcyB3aXRoIFRBUkdFVF9IUFVYLgoJKExJQkdDQzJfTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogRGVmaW5lIChhbHdheXMgOTYpLgoJKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZSB0byBtYXRjaCBmdW5jdGlvbiByZW5hbWVzLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kOiBDaGFuZ2UgVEYgdG8gWEYgdGhyb3VnaG91dDsgcmVuYW1lIGFsbAoJcGF0dGVybnMgdG8gbWF0Y2guICBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8KCUlOVEVMX0VYVEVOREVEX0lFRUVfRk9STUFULiAgVXBkYXRlIHByZWRpY2F0ZSBjYWxscyB0byBtYXRjaAoJZnVuY3Rpb24gcmVuYW1lcy4KCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuYzogVXBkYXRlIGFsbCBwcm90b3R5cGVzIHRvIG1hdGNoCglyZW5hbWVkIGZ1bmN0aW9ucy4KCSogY29uZmlnL2lhNjQvaHB1eC5oOiBSZWRlZmluZSBUQVJHRVRfSFBVWCB0byAxLgoJUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIElOVEVMX0VYVEVOREVEX0lFRUVfRk9STUFULgoJKiBjb25maWcvaWE2NC9saWIxZnVuY3MuYXNtOiBBZGQgX19kaXZ4ZjMgYXMgbmV3IG5hbWUgZm9yCglfX2RpdnRmMzsga2VlcCBvbGQgbmFtZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KCShMX19jb21wYXQpOiBOZXcgc2VjdGlvbiBwcm92aWRpbmcgZm9yd2FyZGluZyBzdHVicyBmb3IKCV9fZml4dGZ0aSwgX19maXh1bnN0ZnRpLCBfX2Zsb2F0dGl0Zi4KCSogY29uZmlnL2lhNjQvdC1pYTY0OiBBZGQgX19jb21wYXQgdG8gTElCMUFTTUZVTkNTLgoKMjAwMy0xMC0yNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJUFIgMTA3NTcKCSogYy1wY2guYzogSW5jbHVkZSB0YXJnZXQuaC4gIEltcHJvdmUgY29tbWVudHMuCgkoc3RydWN0IGNfcGNoX3ZhbGlkaXR5KTogQWRkIHRhcmdldF9kYXRhX2xlbmd0aC4KCShwY2hfaW5pdCk6IEFkZCB0YXJnZXQncyB2YWxpZGl0eSBkYXRhLgoJKGNfY29tbW9uX3ZhbGlkX3BjaCk6IENoZWNrIHRhcmdldCdzIHZhbGlkaXR5IGRhdGEuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0dFVF9QQ0hfVkFMSURJVFkpOiBOZXcuCgkoVEFSR0VUX1BDSF9WQUxJRF9QKTogTmV3LgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IEFkZCBuZXcgZmllbGRzLgoJKiB0YXJnZXQuaDogSW5jbHVkZSB0bS5oLgoJKHN0cnVjdCBnY2NfdGFyZ2V0KTogQWRkIGdldF9wY2hfdmFsaWRpdHksIHBjaF92YWxpZF9wLgoJKiB0b3BsZXYuaCAoZGVmYXVsdF9nZXRfcGNoX3ZhbGlkaXR5KTogTmV3IHByb3RvdHlwZS4KCShkZWZhdWx0X3BjaF92YWxpZF9wKTogTmV3IHByb3RvdHlwZS4KCSogdG9wbGV2LmMgKGRlZmF1bHRfZ2V0X3BjaF92YWxpZGl0eSk6IE5ldyByb3V0aW5lLgoJKGRlZmF1bHRfcGNoX3ZhbGlkX3ApOiBOZXcgcm91dGluZS4KCSogTWFrZWZpbGUuaW4gKFRBUkdFVF9IKTogQWRkIFRNX0guICBSZXBsYWNlIGFsbCB1c2VycyBvZgoJdGFyZ2V0Lmggd2l0aCAkKFRBUkdFVF9IKS4KCShjLXBjaC5vKTogQWRkIFRBUkdFVF9ILgoJKiBkb2MvdG0udGV4aSAoUENIIFRhcmdldCk6IE5ldyBub2RlLgoJKFRBUkdFVF9HRVRfUENIX1ZBTElESVRZKTogRG9jdW1lbnQuCgkoVEFSR0VUX1BDSF9WQUxJRF9QKTogRG9jdW1lbnQuCgoyMDAzLTEwLTI0ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW46IERlZmluZSBhIHZwYXRoIGZvciAlLnRleGkuICBSZW1vdmUgZXhwbGljaXQgJChkb2NkaXIpCglhbmQgJChkb2NkaXIpL2luY2x1ZGUgZnJvbSBhbnkgKi50ZXhpIGRlcGVuZGVuY2llcy4KCSgkKGRvY29iamRpcikvJS5kdmkpOiBEZXBlbmQgb24gc3RtcC1kb2NvYmpkaXIuCgkoJChkb2NvYmpkaXIpLyUuMSk6IERlcGVuZCBvbiAucG9kIGluc3RlYWQgb2YgLnRleGkuCgkoJChkb2NvYmpkaXIpLyUuNyk6IExpa2V3aXNlLgoJKCUucG9kKTogTmV3IGltcGxpY2l0IHJ1bGUuCgkoY3BwLnBvZCk6IE5ldyBkZXBlbmRlbmN5IG9ubHkgcnVsZS4KCShnY2MucG9kKTogTmV3IGludGVybWVkaWF0ZSBydWxlIHdpdGggZGVwZW5kZW5jaWVzIGFuZCBjb21tYW5kcy4KCShnZmRsLnBvZCk6IExpa2V3aXNlLgoJKGZzZi1mdW5kaW5nLnBvZCk6IExpa2V3aXNlLgoKMjAwMy0xMC0yNCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6IFJlbW92ZSBzcGVjaWFsIGNhc2VzIGZvciBzdnI0IGFuZCBwdHgsIGFuZAoJcmVsYXRlZCBjb2RlLgoJKiBmaXhpbmMvZml4aW5jLnB0eDogUmVtb3ZlLgoJKiBmaXhpbmMvZml4aW5jLnN2cjQ6IFJlbW92ZS4KCjIwMDMtMTAtMjQgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAobG9hZF9tdWx0aXBsZV9vcGVyYXRpb24pOiBBbGxvdyBib3RoIFNJbW9kZQoJYW5kIERJbW9kZSBpZiB3b3JkX21vZGUgaXMgREltb2RlLgoJKHN0b3JlX211bHRpcGxlX29wZXJhdGlvbik6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgibG9hZF9tdWx0aXBsZSIsICJzdG9yZV9tdWx0aXBsZSIpOiBMaWtld2lzZS4KCSgiKmxvYWRfbXVsdGlwbGVfZGkiKTogQWxsb3cgb25seSBpZiB3b3JkX21vZGUgPT0gREltb2RlLgoJKCJtb3ZxaSIpOiBVc2UgTExHQyB3aGVuZXZlciBUQVJHRVRfWkFSQ0guCgkoImZpeF90cnVuY2Rmc2kyIik6IEZpeCBpbmNvcnJlY3QgdGVtcG9yYXJ5IHNpemUuCgkoImZpeF90cnVuY3Nmc2kyIik6IExpa2V3aXNlLgoJKCIqYnJhc19yIiwgIipicmFzbF9yIiwgIipiYXNyX3IiKTogUmVtb3ZlIHByZWRpY2F0ZSBhbmQgY29uc3RyYWludAoJc3RyaW5nIGZvciBmdW5jdGlvbiByZXR1cm4gdmFsdWUgb3BlcmFuZC4KCSgiKmJyYXNfdGxzIiwgIipicmFzbF90bHMiLCAiKmJhc3JfdGxzIik6IExpa2V3aXNlLgoKMjAwMy0xMC0yNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLXBhcnNlLmluIChhcnJheV9kZWNsYXJhdG9yKTogVXNlIGV4cHJfbm9fY29tbWFzLgoJRml4ZXMgUFIgYy8xMTk0My4KCjIwMDMtMTAtMjQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4Lmg6IFdyYXAgTURfRkFMTEJBQ0tfRlJBTUVfU1RBVEVfRk9SIGFuZAoJYXNzb2NpYXRlZCBpbmNsdWRlcyBpbiAjaWZuZGVmIGluaGliaXRfbGliYy4KCjIwMDMtMTAtMjQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZG9jL2xpYmdjYy50ZXhpOiBEb2N1bWVudCBzb21lIG1vcmUgb2YgdGhlIGxpYmdjYyBBUEkuCgoyMDAzLTEwLTI0ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChhcm1fcnR4X2Nvc3RzXzEsIGNhc2UgVEFSR0VUX1RIVU1CKTogQWRqdXN0IGNvc3RzIGZvcgoJY29tcGFyaW5nIGEgY29uc3RhbnQgd2l0aCBzbWFsbCBuZWdhdGl2ZSBudW1iZXJzIGFuZCBhZGQgY29zdGluZwoJZm9yIGNvbnN0YW50cyBpbiBjb25qdW5jdGlvbiB3aXRoIEFORC4KCShub3RlX2ludmFsaWRfY29uc3RhbnRzKTogVGlkeSBwcmV2aW91cyBjaGFuZ2UuCgkodGh1bWJfY21wX29wZXJhbmQpOiBUaWR5LgoJKHRodW1iX2NtcG5lZ19vcGVyYW5kKTogTmV3IGZ1bmN0aW9uLgoJKiBhcm0uaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBEb24ndCB1c2UgSEkgcmVncyBpZiBvcHRpbWl6aW5nCglmb3Igc2l6ZS4KCShGSVJTVF9MT19SRUdOVU0sIEZJUlNUX0hJX1JFR05VTSwgTEFTVF9ISV9SRUdOVU0pOiBEZWZpbmUuCgkoUFJFRElDQVRFX0NPREVTKTogQWRkIHRodW1iX2NtcG5lZ19vcGVyYW5kLgoJKiBhcm0ubWQgKGNicmFuY2hzaTQpOiBDb252ZXJ0IHRvIGRlZmluZV9leHBhbmQuICBIYW5kbGUgY29tcGFyaXNvbgoJd2l0aCBhIG5lZ2F0aXZlIGNvbnN0YW50LgoJKGNicmFuY2hzaTRfaW5zbik6IE1hdGNoZXIgZm9yIGNicmFuY2hzaTQuCgkoY2JyYW5jaHNpNF9zY3JhdGNoKTogU2ltaWxhciwgYnV0IGEgc2NyYXRjaCBpcyBhdmFpbGFibGUgZm9yCgloYW5kbGluZyBuZWdhdGl2ZSBjb25zdGFudHMuCgkobW92c2lfY2JyYW5jaHNpNCk6IE5ldyBwYXR0ZXJuLgoJKHRzdHNpM19jYnJhbmNoKTogUmVuYW1lZCBmcm9tIGFuZHNpM19jYnJhbmNoX3NjcmF0Y2gsIHJlbW92ZSBzY3JhdGNoCglhbmQgdXNlIHRoZSBUU1QgaW5zdHJ1Y3Rpb24uCgkoYW5kc2kzX2NicmFuY2gsIG9ycnNpM19jYnJhbmNoLCB4b3JzaTNfY2JyYW5jaCwgY2JyYW5jaG5lX2RlY3IxKQoJKGFkZHNpM19jYnJhbmNoLCBzdWJzaTNfY2JyYW5jaCk6IEVuc3VyZSB0aGF0IHJlZ2lzdGVyIHByZWZlcmVuY2luZwoJY2Fubm90IHNlZSBoaWdoIHJlZ3Mgb3IgbWVtb3J5IGFsdGVybmF0aXZlcy4KCShiaWNzaTNfY2JyYW5jaF9zY3JhdGNoLCBiaWNzaTNfY2JyYW5jaCk6IE5ldyBwYXR0ZXJucy4KCjIwMDMtMTAtMjQgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKG5vdGVfaW52YWxpZF9jb25zdGFudHMpOiBUcnkgdG8gZXh0cmFjdCB0aGUgY29uc3RhbnQKCXBvb2wgdmFsdWUgdXNpbmcgYXZvaWRfY29uc3RhbnRfcG9vbF9yZWZlcmVuY2U7IG9ubHkgdXNlCglnZXRfcG9vbF9jb25zdGFudCBpZiB0aGF0IHJldHVybnMgdGhlIG9yaWdpbmFsIHJlZmVyZW5jZS4KCjIwMDMtMTAtMjQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBjKysvMTI2MjQKCSogdmFyYXNtLmMgKG5vdGljZV9nbG9iYWxfc3ltYm9sKTogRGlzcXVhbGlmeSBnbG9iYWwgcmVnaXN0ZXJzLgoKMjAwMy0xMC0yMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8xMTQxNAoJKiBsb29wLmMgKGxvYWRfbWVtcyk6IFVzZSByZWRpcmVjdF9qdW1wIHRvIGZvcndhcmQganVtcHMgZnJvbQoJdGhlIG9yaWdpbmFsIGxvb3AgZW5kIGxhYmVsIHRvIHRoZSBuZXcgImxvb3Agc2luayIgYmxvY2sncyBsYWJlbC4KCjIwMDMtMTAtMjMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTI3MDUKCSogb3B0YWJzLmMgKGV4cGFuZF9iaW5vcCk6IFdoZW4gZXhwYW5kaW5nIGNvbXBsZXggb3BlcmF0aW9ucwoJaW5saW5lLCBhbHdheXMgY2FsY3VsYXRlIHJlc3VsdCBpbnRvIGEgbmV3IHRlbXBvcmFyeSByZWdpc3Rlci4KCU1pbm9yIGNvZGUgY2xlYW4tdXBzLgoKMjAwMy0xMC0yNCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBvYmpjL2xhbmctc3BlY3MuaDogSGFuZGxlIC1wcmludC1vYmpjLXJ1bnRpbWUtaW5mby4KCSogZG9jL2ludm9rZS50ZXhpIChPYmplY3RpdmUtQyBEaWFsZWN0IE9wdGlvbnMpOiBEb2N1bWVudCBpdC4KCjIwMDMtMTAtMjQgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBjb25maWcvaTM4Ni9jeWd3aW4uYXNtOiBBZGQgY29weXJpZ2h0IG5vdGljZS4gQWRkIGNvbW1lbnQKCW9uIHdoeSB0aGlzIGNvZGUgaXMgbmVlZGVkLgoKMjAwMy0xMC0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9jbHpoaTIuYzogRml4IHdhcm5pbmdzLgoJKiBjb25maWcvaDgzMDAvY3R6aGkyLmM6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvZml4dW5zc2ZzaS5jOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL3Bhcml0eWhpMi5jOiBMaWtld2lzZS4KCSogY29uZmlnL2g4MzAwL3BvcGNvdW50aGkyLmM6IExpa2V3aXNlLgoKMjAwMy0xMC0yMyAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXhpbmMuY29tPgoKCSogZ2NjLmMgKG9wdGlvbl9tYXApOiBEZWxldGUgLS10YXJnZXQgYW5kIC0tdXNlLXZlcnNpb24uCgoyMDAzLTEwLTIzICBGYXJpYm9yeiBKYWhhbmlhbiAgPGZqYWhhbmlhbkBhcHBsZS5jb20+CgkgICAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoVU5JVFNfUEVSX1dPUkQpOiBVc2UgVEFSR0VUXzMyQklULCBub3QKCVRBUkdFVF9QT1dSRVBDNjQuCgkoVU5JVFNfUEVSX0dQUl9XT1JEKTogRGVmaW5lLgoJKEhBUkRfUkVHTk9fTlJFR1MpOiBVc2UgVU5JVFNfUEVSX0dQUl9XT1JELgoJKEhBUkRfUkVHTk9fQ0FMTF9QQVJUX0NMT0JCRVJFRCk6IERlZmluZS4KCShIQVJEX1JFR05PX01PREVfT0spOiBVc2UgVU5JVFNfUEVSX0dQUl9XT1JELgoJKENMQVNTX01BWF9OUkVHUyk6IFVzZSBVTklUU19QRVJfR1BSX1dPUkQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGZ1bmN0aW9uX2FyZyk6IEdlbmVyYXRlIFBBUkFMTEVMIGZvcgoJREZtb2RlIGFuZCBESW1vZGUgaW4gMzItYml0IEFCSSAvIDY0LWJpdCBjb21wdXRhdGlvbiBtb2RlLgoJKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogU2VsZWN0IHJlZ19tb2RlIGFuZCByZWdfc2l6ZSB1c2luZwoJVEFSR0VUXzMyQklULCBub3QgVEFSR0VUX1BPV0VSUEM2NC4KCShyczYwMDBfZnVuY3Rpb25fdmFsdWUpOiBHZW5lcmF0ZSBQQVJBTExFTCBmb3IgREltb2RlIGluIDMyLWJpdAoJQUJJIC8gNjQtYml0IGNvbXB1dGF0aW9uIG1vZGUKCjIwMDMtMTAtMjIgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogdG9wbGV2LmMgKG91dHB1dF9maWxlX2RpcmVjdGl2ZSk6IEFsbG93IGZvciBudWxsIGlucHV0X25hbWUuCgoyMDAzLTEwLTIyICBXYWxkZWsgSGViaXNjaCA8aGViaXNjaEBtYXRoLnVuaS53cm9jLnBsPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChjbGFzc2lmeV9hcmd1bWVudCk6IEhhbmRsZSBTRVRfVFlQRS4KCjIwMDMtMTAtMjIgIENocmlzIERlbWV0cmlvdSAgPGNnZEBicm9hZGNvbS5jb20+CgoJKiBjb25maWd1cmUuaW46IEluIC0tZW5hYmxlLWdlbmVyYXRlZC1maWxlcy1pbi1zcmNkaXIgb3B0aW9uCgloYW5kbGluZywgZml4IGRlZmF1bHQgY2FzZSBoYW5kbGluZy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0xMC0yMiAgUGhpbCBFZHdhcmRzICA8cGhpbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYzogIFVwZGF0ZSAqLSotdnh3b3JrcyogZ2VuZXJpYyBob29rIGFuZCBjb21tZW50cy4KCShhcm0td3JzLXZ4d29ya3MsIGlbNDU2N104Ni13cnMtdnh3b3JrcywgbWlwcy13cnMtdnh3b3JrcywKCW1pcHMtd3JzLXdpbmRpc3MsIHNoLXdycy12eHdvcmtzKTogIE5ldyBzdGFuemFzLgoJKiBnZW5tdWx0aWxpYjogIEFsbG93IHRoZSBNVUxUSUxJQl9PU0RJUk5BTUVTIHRvIGJlIG1hcHBlZCBkaXJlY3RseS4KCSogY29uZmlnL3N2cjQuaCAoU1dJVENIX1RBS0VTX0FSRyk6ICBVbmRlZmluZSBpdCBiZWZvcmUgcmVkZWZpbmluZyBpdC4KCSogY29uZmlnL3dpbmRpc3MuaDogIE5ldyBmaWxlLgoJKiBjb25maWcvYXJtL3Qtdnh3b3JrczogIE5ldyBmaWxlLgoJKiBjb25maWcvYXJtL3Z4d29ya3MuaDogIE5ldyBmaWxlLgoJKiBjb25maWcvaTM4Ni90LXZ4d29ya3M6ICBOZXcgZmlsZS4KCSogY29uZmlnL2kzODYvdnh3b3Jrcy5oOiAgTmV3IGZpbGUuCgkqIGNvbmZpZy9taXBzL3Qtdnh3b3JrczogIE5ldyBmaWxlLgoJKiBjb25maWcvbWlwcy92eHdvcmtzLmg6ICBOZXcgZmlsZS4KCSogY29uZmlnL21pcHMvd2luZGlzcy5oOiAgTmV3IGZpbGUuCgkqIGNvbmZpZy9zaC90LXZ4d29ya3M6ICBOZXcgZmlsZS4KCSogY29uZmlnL3NoL3Z4d29ya3MuaDogIE5ldyBmaWxlLgoKMjAwMy0xMC0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChoODMwMF9vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBSZW1vdmUuCgkoaDgzMDBfc2F2ZWFsbF9mdW5jdGlvbl9wKTogTmV3LgoJKGg4MzAwX2luc2VydF9hdHRyaWJ1dGVzKTogSW5zZXJ0IHRoZSBzYXZlYWxsIGF0dHJpYnV0ZSBpZgoJI3ByYWdtYSBzYXZlYWxsIGlzIHNwZWNpZmllZC4KCShoODMwMF9hdHRyaWJ1dGVfdGFibGUpOiBBZGQgc2F2ZWFsbC4KCShUQVJHRVRfQVNNX0ZVTkNUSU9OX0VQSUxPR1VFKTogUmVtb3ZlLgoJKiBkb2MvZXh0ZW5kLnRleGk6IE1lbnRpb24gdGhlIHNhdmVhbGwgYXR0cmlidXRlLgoKMjAwMy0xMC0yMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBjLXR5cGVjay5jIChwZWRhbnRpY19sdmFsdWVfd2FybmluZyk6IFVuY29uZGl0aW9uYWxseSB3YXJuIG9mCglkZXByZWNhdGlvbiBvZiBjYXN0cyBhcyBsdmFsdWVzLgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChvYnN0YWNrX2x2YWx1ZV9jYXN0KTogTmV3IGZpeC4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCSogZml4aW5jL3Rlc3RzL2Jhc2Uvb2JzdGFjay5oOiBOZXcgdGVzdC4KCjIwMDMtMTAtMjIgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJUFIgdGFyZ2V0LzEyNjc2CgkqIGNvbmZpZy9tNjhrL202OGsuYyAob3V0cHV0X2FkZHNpMyk6IEZpeCByYW5nZSBjaGVjayB0byB3b3JrIG9uCglMUDY0IHBsYXRmb3Jtcy4KCjIwMDMtMTAtMjIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfYWJzdHJhY3RfZnVuY3Rpb24pOiBVc2UgRFdfQVQgdG8gY2hlY2sKCXByZXNlbmNlIG9mIERXX0FUX2lubGluZS4KCShnZW5fc3VicHJvZ3JhbV9kaWUpOiBMaWtld2lzZTsgZG8gbm90IGFib3J0IGluc3RlYWQgb2YgZW1pdHRpbmcKCURXX0FUX25vdF9pbmxpbmUuCgoyMDAzLTEwLTIyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGguYyAoY2dyYXBoX2Z1bmN0aW9uX3Bvc3NpYmx5X2lubGluZWRfcCk6IEJlIGNvbnNlcnZhdGl2ZSB3aGVuCglnbG9iYWwgaW5mbyBpcyBub3QgcmVhZHkuCgoyMDAzLTEwLTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2V4dGVuZC50ZXhpOiBNZW50aW9uIEg4UyB3aGVyZXZlciBIOC8zMDBIIGlzIG1lbnRpb25lZC4KCjIwMDMtMTAtMjIgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJtb3ZzdHJfc2hvcnRfNjQiLCAibW92c3RyX3Nob3J0XzMxIik6IE1lcmdlIC4uLgoJKCIqbW92c3RyX3Nob3J0Iik6IC4uLiBpbnRvIHRoaXMgaW5zbiBwYXR0ZXJuLgoJKCJtb3ZzdHJfc2hvcnQiKTogTmV3IGV4cGFuZGVyLgoJKCIqbW92c3RyX2xvbmdfNjQiKTogUmVuYW1lIGZyb20gIm1vdnN0cl9sb25nXzY0Iiwgc2ltcGxpZnkuCgkoIiptb3ZzdHJfbG9uZ18zMSIpOiBSZW5hbWUgZnJvbSAibW92c3RyX2xvbmdfMzEiLCBzaW1wbGlmeS4KCSgibW92c3RyX2xvbmciKTogTmV3IGV4cGFuZGVyLgoJKCJjbHJzdHJfc2hvcnRfNjQiLCAiY2xyc3RyX3Nob3J0XzMxIik6IE1lcmdlIC4uLgoJKCIqY2xyc3RyX3Nob3J0Iik6IC4uLiBpbnRvIHRoaXMgaW5zbiBwYXR0ZXJuLgoJKCJjbHJzdHJfc2hvcnQiKTogTmV3IGV4cGFuZGVyLgoJKCIqY2xyc3RyX2xvbmdfNjQiKTogUmVuYW1lIGZyb20gImNscnN0cl9sb25nXzY0Iiwgc2ltcGxpZnkuCgkoIipjbHJzdHJfbG9uZ18zMSIpOiBSZW5hbWUgZnJvbSAiY2xyc3RyX2xvbmdfMzEiLCBzaW1wbGlmeS4KCSgiY2xyc3RyX2xvbmciKTogTmV3IGV4cGFuZGVyLgoJKCJjbXBtZW1fc2hvcnRfNjQiLCAiY21wbWVtX3Nob3J0XzMxIik6IE1lcmdlIC4uLgoJKCIqY21wbWVtX3Nob3J0Iik6IC4uLiBpbnRvIHRoaXMgaW5zbiBwYXR0ZXJuLgoJKCJjbXBtZW1fc2hvcnQiKTogTmV3IGV4cGFuZGVyLgoJKCIqY21wbWVtX2xvbmdfNjQiKTogUmVuYW1lIGZyb20gImNtcG1lbV9sb25nXzY0Ii4KCSgiKmNtcG1lbV9sb25nXzMxIik6IFJlbmFtZSBmcm9tICJjbXBtZW1fbG9uZ18zMSIuCgkoImNtcG1lbV9sb25nIik6IE5ldyBleHBhbmRlci4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2V4cGFuZF9tb3ZzdHIpOiBVc2UgbmV3IGV4cGFuZGVycy4KCShzMzkwX2V4cGFuZF9jbHJzdHIpOiBMaWtld2lzZS4KCShzMzkwX2V4cGFuZF9jbXBtZW0pOiBMaWtld2lzZS4KCjIwMDMtMTAtMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXBjaC5jIChzdHJ1Y3QgY19wY2hfdmFsaWRpdHkpOiBBZGQgcGNoX2luaXQgZmllbGQuCgkocGNoX2luaXQpOiBTZXQgaXQuCgkoY19jb21tb25fdmFsaWRfcGNoKTogQ2hlY2sgaXQuCgoyMDAzLTEwLTIyICBEYXZpZCBUYXlsb3IgPGR0YXlsb3JAZW1jLmNvbT4KCglQUiBkZWJ1Zy8xMjUwMAoJKiBkYnhvdXQuYyAoZGJ4b3V0X3R5cGVkZWZzKTogVXNlIENPTVBMRVRFX09SX1ZPSURfVFlQRV9QLgoKMjAwMy0xMC0yMiAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChmdW5jdGlvbl92YWx1ZSBbRU5BQkxFX0NIRUNLSU5HXSk6IERvbid0IGNhbGwKCWFscGhhX3JldHVybl9pbl9tZW1vcnkgaWYgbm8gVkFMVFlQRSBzcGVjaWZpZWQuCgoyMDAzLTEwLTIyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgZGVidWcvMTIzODkKCSogTWFrZWZpbGUuaW4gKGR3YXJmMm91dC5vKTogRGVwZW5kIG9uIGNncmFwaC5oLgoJKiBjZ3JhcGguYyAoY2dyYXBoX2Z1bmN0aW9uX3Bvc3NpYmx5X2lubGluZWRfcCk6IE5ldyBmdW5jdGlvbi4KCSogY2dyYXBoLmggKGNncmFwaF9mdW5jdGlvbl9wb3NzaWJseV9pbmxpbmVkX3ApOiBEZWNsYXJlLgoJKGNncmFwaF9nbG9iYWxfaW5mbyk6IEFkZCBmbGFnIGlubGluZWQKCSogZHdhcmYyb3V0LmMgKGdlbl9zdWJwcm9ncmFtX2RpZSwgZ2VuX2RlY2xfZGllKTogVXNlCgljZ3JhcGhfZnVuY3Rpb25fcG9zc2libHlfaW5kZWRfcAoJKiBjZ3JhcGh1bml0LmMgKG1hcmtfaW5saW5lKTogU2V0IGlubGluZWQgZmxhZy4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbik6IENhbGwgb3V0bGluaW5nX2lubGluZV9mdW5jdGlvbgoJb25seSBmb3IgcG9zc2libHkgaW5saW5lZCBmdW5jdGlvbnMuCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBOZXZlciBvdXRwdXQgYWJzdHJhY3QgRElFIHJlcHJlc2VudGluZyBvbGQKCWJvZHkgb2YgZnVuY3Rpb24uCgoyMDAzLTEwLTIyICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHZhcmFzbS5jIChvdXRwdXRfY29uc3RydWN0b3IpOiBNYWtlIGNvbnN0cnVjdG9yIGFubm90YXRpb24KCWNvbmRpdGlvbmFsIG9uIEFTTV9DT01NRU5UX1NUQVJULgoKMjAwMy0xMC0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiB0cmVlLmMgKGdldF91bndpZGVuZWQpOiBDaGVjayBUUkVFX1VOU0lHTkVEIG9uIHRoZSBmaWVsZCdzIHR5cGUuCgkoZ2V0X25hcnJvd2VyKTogTGlrZXdpc2UuCgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IERvIHBhY2tlZCBmaWVsZCBhbGlnbm1lbnQgZm9yCgliaXQtZmllbGRzLCB0b28uCgoyMDAzLTEwLTIxICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoY29udmVydF9tb3ZlKTogVXNlIEZMT0FUX0VYVEVORCBmb3IgZXh0ZW5zaW9ucy4KCjIwMDMtMTAtMjEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogYy1wY2guYzogQWRkIGNvbW1lbnRzIGluIHZhcmlvdXMgcGxhY2VzLgoJKHN0cnVjdCBjX3BjaF92YWxpZGl0eSk6IEFkZCB0aGUgbGVuZ3RocyBvZiB2YXJpb3VzIHN0cmluZ3MuCgkoaG9zdF9tYWNoaW5lKTogTmV3IHN0YXRpYy4KCSh0YXJnZXRfbWFjaGluZSk6IE5ldyBzdGF0aWMuCgkoZ2V0X2lkZW50KTogQnVtcCB2ZXJzaW9uIG51bWJlci4KCShwY2hfaW5pdCk6IFdyaXRlIG91dCB2ZXJzaW9uLCBob3N0LCB0YXJnZXQgdmFsaWRpdHkgZGF0YS4KCShjX2NvbW1vbl92YWxpZF9wY2gpOiBDaGVjayB2ZXJzaW9uLCBob3N0LCB0YXJnZXQuCgkqIE1ha2VmaWxlLmluIChjLXBjaC5vKTogQWRkIHZlcnNpb24uaDsgZGVmaW5lIEhPU1RfTUFDSElORSBhbmQKCVRBUkdFVF9NQUNISU5FLgoKMjAwMy0xMC0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiB0cmVlLmggKElTX0VYUFJfQ09ERV9DTEFTUyk6IFVzZSBzdHJjaHIuCgkoRVhQUl9QKTogTmV3IG1hY3JvLgoKMjAwMy0xMC0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGNtcHhjaGdfYWNxX3NpKTogTWFyayBvcGVyYW5kIDMgYXMgREltb2RlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZXhwYW5kX2ZldGNoX2FuZF9vcCwKCWlhNjRfZXhwYW5kX29wX2FuZF9mZXRjaCk6IE1ha2Ugc3VyZSB0aGUgUkVHIGZvciBhci5jY3YgaXMKCURJbW9kZS4gICBVc2UgY29udmVydF9tb3ZlIHRvIGxvYWQgYXIuY2N2LgoJKGlhNjRfZXhwYW5kX2NvbXBhcmVfYW5kX3N3YXApOiBMaWtld2lzZS4KCUlmIGV4cGFuZF9leHByIGRvZXNuJ3QgcHV0ICdvbGQnIGFuZCAnbmV3JyBpbiB0aGUgcHJvcGVyCgltb2RlcywgcnVuIHRoZW0gdGhyb3VnaCBjb252ZXJ0X3RvX21vZGUuCgoyMDAzLTEwLTIxICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcnYvZnJ2LmMgKGZydl9hZGp1c3RfZmllbGRfYWxpZ24pOiBDaGVjayBERUNMX0FSVElGSUNJQUwKCWZvciB0b28gbGFyZ2UgYml0ZmllbGRzLgoKMjAwMy0xMC0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluICgkKGRvY29iamRpcikvJS5pbmZvKTogSG9ub3IgQlVJTERfSU5GTy4KCjIwMDMtMTAtMjEgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgoKCSogdmFyYXNtLmMgKG91dHB1dF9jb25zdHJ1Y3Rvcik6IEFubm90YXRlIGNvbnN0cnVjdG9yLgoKMjAwMy0xMC0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluICgkKERFU1RESVIpJChpbmZvZGlyKS8lLmluZm8pOiBDb25kaXRpb25hbGl6ZSBjaG1vZAoJb24gZXhpc3RlbmNlIG9mIGRlc3RpbmF0aW9uIGZpbGUuCgoyMDAzLTEwLTIxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBoYWlmYS1zY2hlZC5jIChjaG9vc2VfcmVhZHkpOiBJbml0aWFsaXplIGluZGV4LgoKMjAwMy0xMC0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiB0cmVlLmMgKGJ1aWxkMSk6IEZpeCBvZmYtYnktb25lIGVycm9yLgoKMjAwMy0xMC0yMSAgUm9iZXJ0IE1pbGxhbiAgPHJvYmVydG1oQGdudS5vcmc+CgoJKiBjb25maWcvaTM4Ni9rZnJlZWJzZGdudS5oOiBOZXcuIGkzODYtKi1rZnJlZWJzZC1nbnUgZGVmaW5pdGlvbnMuCgkqIGNvbmZpZy9rZnJlZWJzZGdudS5oOiBOZXcuICotKi1rZnJlZWJzZC1nbnUgZGVmaW5pdGlvbnMuCgkqIGNvbmZpZy90LWtmcmVlYnNkLWdudTogTmV3LiAqLSota2ZyZWVic2QtZ251IHRtYWtlX2ZpbGUuCgkqIGNvbmZpZy5nY2M6IEFkZCAqLSota2ZyZWVic2QqLWdudSBhbmQgaVszNDU2N104Ni0qLWtmcmVlYnNkKi1nbnUuCgoyMDAzLTEwLTIxICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogd2ViLmM6IEZpeCB2YXJpb3VzIGNvbW1lbnRzLgoKMjAwMy0xMC0yMCAgTmljb2xhcyBQaXRyZSA8bmljb0BjYW0ub3JnPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBTZXQgYXJtX2NvbnN0YW50X2xpbWl0Cgl0byAyIGluc3RlYWQgb2YgMSB3aGVuIG9wdGltaXplX3NpemUgaXMgdHJ1ZS4gIEdhdGhlciBjb2RlIGJhc2VkIG9uCglvcHRpbWl6ZV9zaXplIHRvZ2V0aGVyLiAgQWRkIGNvbW1lbnQgYWJvdXQgWFNjYWxlIGxvYWQgbGF0ZW5jeS4KCjIwMDMtMTAtMjEgIEd1bnRoZXIgTmlrbCAgPGduaUBnZWNrby5kZT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBSZW1vdmUKCW9ic29sZXRlIGNvbW1lbnRzLgoKMjAwMy0xMC0yMCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluOiBHZXQgcGFyc2VkaXIgYW5kIGRvY29iamRpciBmcm9tIGNvbmZpZ3VyZS4KCSogY29uZmlndXJlLmluOiBSZWNvZ29uaXplIC0tZW5hYmxlLWdlbmVyYXRlZC1maWxlcy1pbi1zcmNkaXIuCglQYXNzIGFsb25nIHBhcnNlZGlyIGFuZCBkb2NvYmpkaXIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogZG9jL2luc3RhbGwudGV4aTogRG9jdW1lbnQgLS1lbmFibGUtZ2VuZXJhdGVkLWZpbGVzLWluLXNyY2Rpci4KCjIwMDMtMTAtMjAgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbjogRGVmaW5lICQoZG9jZGlyKSBiZWZvcmUgdGhlIE1ha2UtbGFuZy5pbiBmcmFnbWVudHMgYXJlCglpbmNsdWRlZC4KCjIwMDMtMTAtMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogYy1jb21tb24uYyAoZXhwYW5kX3RyZWVfYnVpbHRpbik6IEVuc3VyZSBjcmVhbCBhbmQgY2ltYWcKCWZ1bmN0aW9ucyBkbyBub3QgcmV0dXJuIGx2YWx1ZXMuCgoyMDAzLTEwLTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjLzEyNTUzCgkqIHRyZWUuYyAoYnVpbGQxKSA8QUREUl9FWFBSPjogU2V0IFRSRUVfU0lERV9FRkZFQ1RTCglhcHByb3ByaWF0ZWx5LgoKCVBSIGMvMTE0NDYKCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X2RlY2wpOiBGaXggYWxpZ25tZW50IGhhbmRsaW5nLgoKMjAwMy0xMC0yMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBkb2MvZXh0ZW5kLnRleGk6IERlcHJlY2F0ZSBjYXN0cyBhcyBsdmFsdWVzLgoKMjAwMy0xMC0yMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBGaXggd2ViaXplciBwYXNzIG9yZGVyaW5nLgoKCSogY2dyYXBodW5pdC5jIChkZWNpZGVfaXNfZnVuY3Rpb25fbmVlZGVkKTogIEZpeCB0ZXN0IGRlYWxpbmcKCXdpdGggZnVuY3Rpb25zIGltcGxpY2l0bHkgbWFkZSBpbmxpbmUuCgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9kZWNpZGVfaW5saW5pbmdfaW5jcmVtZW50YWxseSk6ICBOZXcgZnVuY3Rpb24uCgkoY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uKTogVXNlIGl0LgoJKGNncmFwaF9tYXJrX2lubGluZSk6IEFsbG93IGluY3JtZW50YWwgZGVjaXNpb25zCgkqIGludm9rZS50ZXhpIChtYXgtaW5saW5lLXNsb3BlLCBtaW4taW5saW5lLWluc25zKTogS2lsbC4KCSogcGFyYW1zLmRlZiAoUEFSQU1fTUFYX0lOTElORV9TTE9QRSwgUEFSQU1fTUlOX0lOTElORV9JTlNOUyk6IEtpbGwuCgkqIHRyZWUtaW5saW5lLmMgKGxpbWl0c19hbGxvd19pbmxpbmluZyk6IEtpbGwuCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogQWx3YXlzIHVzZSB1bml0LWF0LWEtdGltZSBwYXRoLgoKMjAwMy0xMC0yMCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGhwdXgxMV9zbnByaW50Zik6IE5ldyBlZGl0LgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9zdGRpby5oOiBBZGQgdGVzdCBmb3IgaHB1eDExX3NucHJpbnRmLgoKMjAwMy0xMC0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWluZm8pOiBTaW1wbGlmeS4KCSgkKERFU1RESVIpJChpbmZvZGlyKS8lLmluZm8pOiBOZXcgcnVsZS4KCSogY29uZmlndXJlLmluICh0YXJnZXRfbGlzdCk6IFJlbW92ZSBpbnN0YWxsLWluZm8uCgkqIGRvYy8uY3ZzaWdub3JlIChnY2MuaW5mbyopOiBSZW1vdmUuCgkoZ2NjaW50LmluZm8qKTogTGlrZXdpc2UuCgkoZ2NjaW5zdGFsbC5pbmZvKik6IExpa2V3aXNlLgoJKGNwcC5pbmZvKik6IExpa2V3aXNlLgoJKGNwcGludGVybmFscy5pbmZvKik6IExpa2V3aXNlLgoJKCouaW5mbyopOiBBZGQgaXQuCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpOiBVcGRhdGUgZGVzY3JpcHRpb24gb2YgaW5zdGFsbC1pbmZvLgoJKiBvYmpjL01ha2UtbGFuZy5pbiAob2JqYy5pbnN0YWxsLWluZm8pOiBSZW1vdmUuCgoyMDAzLTEwLTIwICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4LmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBEZWZpbmUgX0FCSU8zMi4KCVVzZSBpdCBpbiBfTUlQU19TSU0gZGVmaW5pdGlvbi4KCSogY29uZmlnL21pcHMvbWlwcy5oIChDUlRfQ0FMTF9TVEFUSUNfRlVOQ1RJT04pOiBMaWtld2lzZS4KCjIwMDMtMTAtMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHByaW50X3JlZyk6IEFib3J0IGlmIFJFR05PICh4KSBpcyBhCgl2aXJ0dWFsIHJlZ2lzdGVyLCBidXQgb25seSBpZiBmaWxlID09IGFzbV9vdXRfZmlsZS4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChISV9SRUdJU1RFUl9OQU1FUyk6IFVzZSAiYXJncCIsIG5vdCAiIiwKCWZvciBBUkdfUE9JTlRFUl9SRUdOVU0uCgoyMDAzLTEwLTIwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uYyAocmVnaXN0ZXJlZF9idWlsdGluX3R5cGVzKTogTmV3IHN0YXRpYy4KCShjX2NvbW1vbl90eXBlX2Zvcl9tb2RlKTogQ29uc3VsdCByZWdpc3RlcmVkX2J1aWx0aW5fdHlwZXMuCgkoY19yZWdpc3Rlcl9idWlsdGluX3R5cGUpOiBBZGQgdHlwZSB0byByZWdpc3RlcmVkX2J1aWx0aW5fdHlwZXMuCgkqIG9wdGFicy5jIChpbml0X2Zsb2F0aW5nX2xpYmZ1bmNzKTogSW5pdGlhbGl6ZSBsaWJmdW5jcyBmb3IKCWFsbCBNT0RFX0ZMT0FUIG1vZGVzLCBub3QganVzdCB0aGUgb25lcyBjb3JyZXNwb25kaW5nIHRvCglmbG9hdF90eXBlX25vZGUsIGRvdWJsZV90eXBlX25vZGUsIGFuZCBsb25nX2RvdWJsZV90eXBlX25vZGUuCgoyMDAzLTEwLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBub3JtYWxfbWVtb3J5X29wZXJhbmQuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS1wcm90b3MuaDogUmVtb3ZlIFBSRURJQ0FURV9DT0RFUyBwcm90b3R5cGVzLgoKMjAwMy0xMC0yMCAgRG9yaXQgTmFpc2hsb3MgIDxkb3JpdEBpbC5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogKHJzNjAwMF9zY2hlZF9pbnNlcnRfbm9wcyk6CglzdXBwb3J0IG5ldyBmbGFnIC1taW5zZXJ0LXNjaGVkLW5vcHMuCgkoREVGQVVMVF9TQ0hFRF9GSU5JU0hfTk9QX0lOU0VSVElPTl9TQ0hFTUUpOiBEZWZpbmUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmM6IChyczYwMDBfc2NoZWRfaW5zZXJ0X25vcHMpOgoJc3VwcG9ydCBuZXcgZmxhZyAtbWluc2VydC1zY2hlZC1ub3BzLgoJKGlzX2NyYWNrZWRfaW5zbiwgaXNfbWljcm9jb2RlZF9pbnNuKTogTmV3IGZ1bmN0aW9ucy4KCShyczYwMDBfc2NoZWRfZmluaXNoKTogTmV3IGZ1bmN0aW9uLgoJKHJzNjAwMF9pc3N1ZV9yYXRlKTogUmV0dXJuIDUgZm9yIHBvd2VyNC4KCShnZXRfbmV4dF9hY3RpdmVfaW5zbiwgaW5zbl90ZXJtaW5hdGVzX2dyb3VwX3ApOiBOZXcKCWZ1bmN0aW9ucy4KCShpc19jb3N0bHlfZ3JvdXAsIGZvcmNlX25ld19ncm91cCk6IE5ldyBmdW5jdGlvbnMuCgkocmVkZWZpbmVfZ3JvdXBzLCBwYWRfZ3JvdXBzKTogTmV3IGZ1bmN0aW9ucy4KCShyczYwMDBfdmFyaWFibGVfaXNzdWUpOiBVc2UgbmV3IGZ1bmN0aW9ucy4KCSogZG9jL2ludm9rZS50ZXhpICgtbWluc2VydC1zY2hlZC1ub3BzKTogRG9jdW1lbnQgbmV3CglvcHRpb24uCgoyMDAzLTEwLTIwICBEYXZpZCBTLiBNaWxsZXIgIDxkYXZlbUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kICh0eXBlIGF0dHJpYnV0ZSk6IEFkZCBuZXcgaW5zbiB0eXBlcwoJZnBhLCBmcG1fcGFjaywgZmdtX211bCwgZmdtX3BkaXN0LCBhbmQgZmdtX2NtcCBmb3IgVklTLgoJKHBhdHRlcm5zIGVtaXR0aW5nIFZJUyBpbnNucyk6IFVzZSB0aGVtLgoJKiBjb25maWcvc3BhcmMvdWx0cmExXzIubWQ6IEFkZCBWSVMgc2NoZWR1bGluZyBydWxlcy4KCSogY29uZmlnL3NwYXJjL3VsdHJhMy5tZDogTGlrZXdpc2UuCgoyMDAzLTEwLTIwICBGYWxrIEh1ZWZmbmVyICA8ZmFsa0BkZWJpYW4ub3JnPgoKCVBSIHRhcmdldC8xMjY1NAoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZW1pdF9jb25kaXRpb25hbF9icmFuY2gpOiBEb24ndCBkbwoJY29tcGFyaXNvbiBhZ2FpbnN0IGNvbnN0YW50IGJ5IGFkanVzdGluZyB0aGUgYXJndW1lbnQgZXhjZXB0IGZvcgoJRVEgYW5kIE5FLgoKMjAwMy0xMC0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2M6IEFkZCBzdXBwb3J0IGZvciBhcm05MjZlanMsIGFybTEwMjZlanMsIGFybTExMzZqcywKCWFybTExMzZqZnMsIGFuZCBhcm12NmouCgkqIGNvbmZpZy9hcm0vYXJtLmMgKEZMX0FSQ0g2Sik6IE5ldyBtYWNyby4KCShGTF9WRlBWMik6IExpa2V3aXNlLgoJKGFsbF9jb3Jlcyk6IEFkZCBlbnRyaWVzIGZvciBhcm05MjZlanMsIGFybTEwMjZlanMsIGFybTExMzZqcywKCWFuZCBhcm0xMTM2amZzLgoJKGFsbF9hcmNoaXRlY3R1cmVzKTogQWRkIGVudHJ5IGZvciBhcm12NmouCgkoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBBZGQgZW50cmllcyBmb3IgYXJtOTI2ZWpzLCBhcm0xMDI2ZWpzLAoJYXJtMTEzNmpzLCBhbmQgYXJtMTEzNmpmcy4KCSogY29uZmlnL2FybS9hcm0uaCAoVEFSR0VUX0NQVV9hcm05MjZlal9zKTogTmV3IG1hY3JvLgoJKFRBUkdFVF9DUFVfYXJtMTAyNmVqX3MpOiBMaWtld2lzZS4KCShUQVJHRVRfQ1BVX2FybTExMzZqX3MpOiBMaWtld2lzZS4KCShUQVJHRVRfQ1BVX2FybTExMzZqZl9zKTogTGlrZXdpc2UuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgbmV3IEFSTSBjb3JlcyBhbmQgYXJjaGl0ZWN0dXJlCgl2YXJpYW50cy4KCjIwMDMtMTAtMTkgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIE1ha2VmaWxlLmluICh0b3BsZXYubyk6IEFkZCB2YWx1ZS1wcm9mLmggZGVwZW5kZW5jeS4KCSh2YWx1ZS1wcm9mLm8pOiBBZGQgUkVHU19IIGRlcGVuZGVuY3kuCgkqIGNvbW1vbi5vcHQgKGZwcm9maWxlLXZhbHVlcywgZnZwdCk6IE5ldy4KCSogZmxhZ3MuaCAoZmxhZ192YWx1ZV9wcm9maWxlX3RyYW5zZm9ybWF0aW9ucyk6IERlY2xhcmUuCgkqIG9wdHMuYyAoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgLWZwcm9maWxlX3ZhbHVlcyBhbmQKCS1mdnB0LgoJKiBwcm9maWxlLmMgKGJyYW5jaF9wcm9iKTogRG9uJ3QgcmVtb3ZlIGRlYXRoIG5vdGVzIGhlcmUuCgkqIHRpbWV2YXIuZGVmIChUVl9WUFQpOiBOZXcuCgkqIHZhbHVlLXByb2YuYzogSW5jbHVkZSByZWdzLmguCgkoaW5zbl9kaXZtb2RfdmFsdWVzX3RvX3Byb2ZpbGUsIGdlbl9kaXZtb2RfZml4ZWRfdmFsdWUsIGdlbl9tb2RfcG93MiwKCWdlbl9tb2Rfc3VidHJhY3QsIGRpdm1vZF9maXhlZF92YWx1ZV90cmFuc2Zvcm0sbW9kX3BvdzJfdmFsdWVfdHJhbnNmb3JtLAoJbW9kX3N1YnRyYWN0X3RyYW5zZm9ybSwgdmFsdWVfcHJvZmlsZV90cmFuc2Zvcm1hdGlvbnMpOiBOZXcuCgkoaW5zbl92YWx1ZXNfdG9fcHJvZmlsZSk6IENhbGwgaW5zbl9kaXZtb2RfdmFsdWVzX3RvX3Byb2ZpbGUuCgkoZmluZF92YWx1ZXNfdG9fcHJvZmlsZSk6IEFkZCBkdW1wcy4KCSogdmFsdWUtcHJvZi5oICh2YWx1ZV9wcm9maWxlX3RyYW5zZm9ybWF0aW9ucyk6IERlY2xhcmUuCgkqIHRvcGxldi5jOiBJbmNsdWRlIHZhbHVlLXByb2YuaC4KCShyZXN0X29mX2hhbmRsZV92YWx1ZV9wcm9maWxlX3RyYW5zZm9ybWF0aW9ucyk6IE5ldy4KCShlbnVtIGR1bXBfZmlsZV9pbmRleCk6IEFkZCBERklfdnB0LgoJKGR1bXBfZmlsZSk6IEFkZCB2cHQgZHVtcC4KCShmbGFnX3ZhbHVlX3Byb2ZpbGVfdHJhbnNmb3JtYXRpb25zKTogTmV3LgoJKGxhbmdfaW5kZXBlbmRlbnRfb3B0aW9ucyk6IEFkZCBmbGFnX3Byb2ZpbGVfdmFsdWVzIGFuZAoJZmxhZ192YWx1ZV9wcm9maWxlX3RyYW5zZm9ybWF0aW9ucy4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2FsbAoJcmVzdF9vZl9oYW5kbGVfdmFsdWVfcHJvZmlsZV90cmFuc2Zvcm1hdGlvbnMuCgkocHJvY2Vzc19vcHRpb25zKTogTGV0IC1mdnB0IGltcGx5IC1mcHJvZmlsZS12YWx1ZXMuCgkqIGRvYy9pbnZva2UudGV4aSAoLWZ2cHQpOiBEb2N1bWVudC4KCjIwMDMtMTAtMTkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAocHJpbnRfcmVnKTogRG8gbm90IGFib3J0IG9uIGNlcnRhaW4gcmVnaXN0ZXJzLgoKCVBSIG9wdGltaXphdGlvbi8xMjYxMgoJKiByZWctc3RhY2suYyAoc3Vic3Rfc3RhY2tfcmVnc19wYXQpOiAgVXNlIHN0KDEpIGZvciBjbG9iYmVycy4KCSogaTM4Ni5tZCAoZnBhdGFuLCBmeWwyeCwgZnNjYWxlIHBhdHRlcm5zIGFuZCBleHBhbmRlcnMpOiBVc2UKCW1hdGNoX3NjcmF0Y2g7IGF2b2lkIGJvZ3VzIHBhcmFsbGVzLgoKCVBSIHRhcmdldC8xMjY3NAoJKiBpMzg2LmMgKGl4ODZfZnVuY3Rpb25fcmVncGFybSk6IERpc2FibGUgaW1wbGljaXQgcmVnaXN0ZXIgcGFzc2luZwoJY29udmVudGlvbnMgd2hlbiBwcm9maWxpbmcuCgoyMDAzLTEwLTE5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoJICAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzgxNzgKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoKm1vdnNpX3plcm8pOiBEZWxldGUuCgkoKmZmc19ub19jbW92ZSk6IFVzZSBpeDg2X2V4cGFuZF9jbGVhciB0byB6ZXJvIHRoZSB0aGlyZCBvcGVyYW5kLgoKMjAwMy0xMC0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChmaXhfb3BlcmF0b3IpOiBOZXcuCgkoZGl2bW9kX29wZXJhdG9yKTogVGlkeS4KCShhbHBoYV9lbWl0X3hmbG9hdGluZ19jdnQpOiBIYW5kbGUgVU5TSUdORURfRklYLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoRklYVU5TX1RSVU5DX0xJS0VfRklYX1RSVU5DKTogUmVtb3ZlLgoJKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChmaXhfdHJ1bmNkZnNpX2llZWUpOiBVc2UgbWF0Y2hfb3BlcmF0b3IuCgkoZml4X3RydW5jZGZzaV9pbnRlcm5hbCwgZml4X3RydW5jZGZkaV9pZWVlKTogTGlrZXdpc2UuCgkoZml4X3RydW5jc2ZzaV9pZWVlLCBmaXhfdHJ1bmNzZnNpX2ludGVybmFsKTogTGlrZXdpc2UuCgkoZml4X3RydW5jc2ZkaV9pZWVlKTogTGlrZXdpc2UuCgkoZml4X3RydW5jZGZkaTIsIGZpeF90cnVuY3NmZGkyKTogVHVybiBpbnRvIGRlZmluZV9leHBhbmQuCgkoZml4dW5zX3RydW5jZGZkaTIsIGZpeHVuc190cnVuY3NmZGkyLCBmaXh1bnNfdHJ1bmN0ZmRpMik6IE5ldy4KCSogY29uZmlnL2FscGhhL2FscGhhLXByb3Rvcy5oOiBVcGRhdGUuCgoyMDAzLTEwLTE5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKElOSVRJQUxJWkVfVFJBTVBPTElORSk6IFNpbXBsaWZ5LgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfbG9hZF9nb3QpOiBBc3N1bWUgUG1vZGUgPT0gcHRyX21vZGUuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKGV4dGVuZHNpZGkyLCAqZXh0ZW5kc2lkaTIpOiBNZXJnZS4gRG9uJ3QgYWNjZXB0Cgljb25zdGFudCBvcGVyYW5kcy4KCjIwMDMtMTAtMTggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvZXh0ZW5kLnRleGk6IEZpeCB0eXBvcy4KCSogZG9jL2ludm9rZS50ZXhpOiBMaWtld2lzZS4KCjIwMDMtMTAtMTggIE5pY29sYXMgUGl0cmUgPG5pY29AY2FtLm9yZz4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9vdmVycmlkZV9vcHRpb25zKTogVXNlIGFybV90dW5lX3hzY2FsZSBmb3IKCVhTY2FsZSBvcHRpbWl6YXRpb25zIG5vdCBhcm1fYXJjaF94c2NhbGUuCgkqIGNvbmZpZy9hcm0vYXJtLmggKENPTlNUQU5UX0FMSUdOTUVOVF9GQUNUT1IsIE1PVkVfUkFUSU8pOiBMaWtld2lzZS4KCjIwMDMtMTAtMTggIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAtcHJvdG9zLmggKHNoaWZ0X2NvdW50X29wZXJhbmQpOiBBZGQgcHJvdG90eXBlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHNoaWZ0X2NvdW50X29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkoczM5MF9leHRyYV9jb25zdHJhaW50KTogVXNlIGl0IHRvIGltcGxlbWVudCAnWScgY29uc3RyYWludC4KCShwcmludF9zaGlmdF9jb3VudF9vcGVyYW5kKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X29wZXJhbmQpOiBVc2UgaXQgdG8gaW1wbGVtZW50ICclWScuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoRVhUUkFfQUREUkVTU19DT05TVFJBSU5UKTogQWRkICdZJyBjb25zdHJhaW50LgoJKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBzaGlmdF9jb3VudF9vcGVyYW5kLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgicm90bGRpMyIpOiBNZXJnZSBhbHRlcm5hdGl2ZXMsCgl1c2luZyAic2hpZnRfY291bnRfb3BlcmFuZCIgcHJlZGljYXRlIGFuZCAiWSIgY29uc3RyYWludCwKCWFuZCAiJVkiIHRvIG91dHB1dCB0aGUgY29tYmluZWQgc2hpZnQgY291bnQuCgkoInJvdGxzaTMiKTogTGlrZXdpc2UuCgkoImFzaGxkaTMiLCAiKmFzaGxkaTNfMzEiLCAiKmFzaGxkaTNfNjQiKTogTGlrZXdpc2UuCgkoImFzaHJkaTMiLCAiKmFzaHJkaTNfMzEiLCAiKmFzaHJkaTNfNjQiLCAiKmFzaHJkaTNfY2NfMzEiLAoJIiphc2hyZGkzX2NjXzY0IiwgIiphc2hyZGkzX2Njb25seV8zMSIsICIqYXNocmRpM19jY29ubHlfNjQiKTogTGlrZXdpc2UuCgkoImFzaGxzaTMiLCAiYXNocnNpMyIsICIqYXNocnNpM19jYyIsICIqYXNocnNpM19jY29ubHkiKTogTGlrZXdpc2UuCgkoImxzaHJkaTMiLCAiKmxzaHJkaTNfMzEiLCAiKmxzaHJkaTNfNjQiKTogTGlrZXdpc2UuCgkoImxzaHJzaTMiKTogTGlrZXdpc2UuCgoyMDAzLTEwLTE4ICBHdW50aGVyIE5pa2wgIDxnbmlAZ2Vja28uZGU+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogQWRkIG1pc3NpbmcKCWFyZ3VtZW50IHRvIGFzbV9mcHJpbnRmIHN0YXRlbWVudC4KCjIwMDMtMTAtMTggIEZhcmlib3J6IEphaGFuaWFuICA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIHJzNjAwMC5tZDogU2VwYXJhdGUgVEFSR0VUX1BPV0VSUEM2NCBwYXR0ZXJucyBmb3IgVEFSR0VUXzY0QklUIG9yIFRBUkdFVF8zMkJJVC4KCShhc2hyZGlzaTNfbm9wcGM2NCkgR2VuZXJhdGUgbW9yZSBlZmZpY2llbnQgY29kZSBmb3IgMzItYml0IHJpZ2h0LXNoaWZ0IG9mCglhICJsb25nIGxvbmciIGFyZ3VtZW50LgoKMjAwMy0xMC0xOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBmaW5hbC5jIChmaW5hbF9zY2FuX2luc24pOiBSdW4gRklOQUxfUFJFU0NBTl9JTlNOUyBvbiBhc20gaW5zbnMKCWFzIHdlbGwuCgoyMDAzLTEwLTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBydGwuaCAocnRsX3NpemUpOiBEZWNsYXJlLgoJKHJ0dW5pb24pOiBSZW1vdmUgcnR3aW50LgoJKHJ0eF9kZWYpOiBSZXBsYWNlICdmbGQnIHdpdGggYSB1bmlvbiBvZiBhbiBydHVuaW9uIG9yIGEgSE9TVF9XSURFX0lOVC4KCShSVFhfSERSX1NJWkUsIFJUWF9TSVpFKTogTmV3IG1hY3Jvcy4KCShSVExfQ0hFQ0sxKTogQWRqdXN0IGZvciBuZXcgcnR4X2RlZiBsYXlvdXQuCgkoUlRMX0NIRUNLMiwgUlRMX0NIRUNLQzEsIFJUTF9DSEVDS0MyKTogTGlrZXdpc2UuCgkoWFdJTlQsIFhDV0lOVCk6IExpa2V3aXNlLiAgQWNjZXNzIHRoZSBydHggc3RydWN0dXJlIGRpcmVjdGx5LgoJKFgwV0lOVCk6IFJlbW92ZS4KCShYMEFOWSk6IE5ldyBtYWNyby4KCSogcnRsLmRlZjogQWRqdXN0IGNvbW1lbnRzIGZvciBuZXcgcnR4X2RlZiBsYXlvdXQuCgkqIGdnYy5oIChnZ2NfYWxsb2NfcnR4KTogVGFrZSB0aGUgcnR4IGNvZGUgYXMgYXJndW1lbnQsIG5vdCB0aGUKCW51bWJlciBvZiBzbG90cy4KCSogcnRsLmMgKHJ0eF9zaXplKTogTmV3IGFycmF5LgoJKHJ0eF9hbGxvYyk6IEFkanVzdCBjYWxsIHRvIGdnY19hbGxvY19ydHguICBVc2UgUlRYX0hEUl9TSVpFLgoJKGNvcHlfcnR4KTogVXNlIFJUWF9IRFJfU0laRS4gIEFkanVzdCBmb3IgbmV3IHJ0eF9kZWYgbGF5b3V0LgoJKHNoYWxsb3dfY29weV9ydHgpOiBBZGp1c3QgY2FsbCB0byBnZ2NfYWxsb2NfcnR4LiAgVXNlIFJUWF9TSVpFLgoJKiBpbnRlZ3JhdGUuYyAoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBVc2UgWDBBTlkgdG8gY29weSAnMCcgZmllbGRzLgoJKiBlbWl0LXJ0bC5jIChjb3B5X21vc3RfcnR4KTogTGlrZXdpc2UuCgkoY29weV9ydHhfaWZfc2hhcmVkKTogVXNlIFJUWF9TSVpFLgoJKGNvcHlfaW5zbl8xKTogVXNlIFJUWF9IRFJfU0laRS4gIEFkanVzdCBmb3IgbmV3IHJ0eF9kZWYgbGF5b3V0LgoJKiBnZW5nZW5ydGwuYyAoZ2VuZGVmKTogQWRqdXN0IGdnY19hbGxvY19ydHggY2FsbC4gIFVzZSBSVFhfSERSX1NJWkUuCgkqIGdlbmd0eXBlLmMgKHdyaXRlX3J0eF9uZXh0KTogVXNlIFJUWF9IRFJfU0laRS4KCShhZGp1c3RfZmllbGRfcnR4X2RlZik6IEV4cGVjdCAicnR4X2RlZiIgdG8gYmUgYSB1bmlvbiByYXRoZXIgdGhhbgoJYW4gYXJyYXkuICBBZGp1c3Qgb3V0cHV0IGZvciBuZXcgcnR4X2RlZiBsYXlvdXQuCgkqIGdnYy1wYWdlLmMgKFJUTF9TSVpFKTogVXNlIFJUWF9IRFJfU0laRS4KCSogcmVsb2FkMS5jIChlbGltaW5hdGVfcmVncyk6IFVzZSBSVFhfU0laRS4KCSogcnRsYW5hbC5jIChsb2NfbWVudGlvbmVkX2luX3ApOiBBZGp1c3QgZm9yIG5ldyBydHhfZGVmIGxheW91dC4KCSogZ2RiaW5pdC5pbiAocGkpOiBMaWtld2lzZS4KCjIwMDMtMTAtMTggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGludGVncmF0ZS5jIChjb3B5X2RlY2xfZm9yX2lubGluaW5nKTogUmV2ZXJ0IHByZXZpb3VzIHBhdGNoLgoKMjAwMy0xMC0xOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaW50ZWdyYXRlLmMgKGNvcHlfZGVjbF9mb3JfaW5saW5pbmcpOiBGaXggY29weWluZyBvZiBjb3BpZXMuCgoyMDAzLTEwLTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGxpYmdjYy50ZXhpOiBHcm91cCBtdWx0aS13b3JkIHR5cGVzLCBzdWNoIGFzICJsb25nIGRvdWJsZSIgYW5kCgkidW5zaWduZWQgaW50IiwgdXNpbmcgYnJhY2VzIGluIEBkZWZ0eXBlZm4gYW5kIEBkZWZ0eXBlZm54IG5vZGVzLgoJRG9jdW1lbnQgX191bm9yZD9mMiBhcyByZXR1cm5pbmcgYSBub24temVybyB2YWx1ZSwgbm90IGp1c3Qgb25lLgoKMjAwMy0xMC0xOCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogY29uZmlnL21taXgvdC1tbWl4IChDUlRTVFVGRl9UX0NGTEFHUyk6IERlZmluZS4KCSgkKFQpY3J0aS5vLCAkKFQpY3J0bi5vKTogUGFzcyBDUlRTVFVGRl9UX0NGTEFHUyBoZXJlIHRvby4KCjIwMDMtMTAtMTggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvaTM4Ni9rNi5tZCAoazZfYWx1eCk6IFVzZSB0aGUgJ21vZGUnIGF0dHJpYnV0ZSBpbnN0ZWFkIG9mCgltYXRjaF9vcGVyYW5kLgoKMjAwMy0xMC0xOCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChmdW5jdGlvbl9hcmdfcmVjb3JkX3ZhbHVlXzEpOiBOZXcgZm91cnRoCglwYXJhbWV0ZXIgcGFja2VkX3AuICBTZWFyY2ggZm9yIGEgREVDTF9QQUNLRUQgZmllbGQgb25seSBpZgoJcGFja2VkX3AgaXMgZmFsc2UuICBQYXNzIHBhY2tlZF9wIHJlY3Vyc2l2ZWx5LgoJKGZ1bmN0aW9uX2FyZ19yZWNvcmRfdmFsdWVfMik6IExpa2V3aXNlLgoJKGZ1bmN0aW9uX2FyZ19yZWNvcmRfdmFsdWUpOiBVcGRhdGUgY2FsbHMgdG8KCWZ1bmN0aW9uX2FyZ19yZWNvcmRfdmFsdWVfMSBhbmQgZnVuY3Rpb25fYXJnX3JlY29yZF92YWx1ZV8yLgoKMjAwMy0xMC0xOCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIGNzZS5jIChjc2VfaW5zbikgW3NyY19mb2xkZWRdOiBDaGVjayB0aGF0IHRoZSB0ZW50YXRpdmUgcmVwbGFjZW1lbnQKCXdhcyBzdWNjZXNzZnVsbHkgZm9yY2VkIHRvIG1lbW9yeSBiZWZvcmUgdXNpbmcgdGhlIHJlc3VsdC4KCjIwMDMtMTAtMTggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzgxNzgKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoKm1vdnNpX3plcm8pOiBOZXcgaW5zbiB0byBzZXQKCWEgcmVnaXN0ZXIgdG8gemVybyBvbiBUQVJHRVRfVVNFX01PVjAgdGFyZ2V0cy4KCjIwMDMtMTAtMTggIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoTWFrZWZpbGUpOiBEZXBlbmQgb24gdGhlIGFsbCBNYWtlLWxhbmcuaW4gZnJhZ21lbnRzLgoJKFBPU1RTVEFHRTFfRkxBR1NfVE9fUEFTUyk6IFBhc3MgZG93biBNQUtFSU5GTyBhbmQgTUFLRUlORk9GTEFHUy4KCjIwMDMtMTAtMTcgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGRvYy9pbnZva2UudGV4aSAoZ2NzZS1sYXMpOiBGaXggdHlwby4KCjIwMDMtMTAtMTcgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogZG9jL2luc3RhbGwudGV4aTogUmVtb3ZlIGZpcnN0IHBhcnQgb2YgdGhlIHNlbnRlbmNlIGZvcgoJenNoIG5vdCB3b3JraW5nLiAgQ2hhbmdlIGdjYyB0byBHQ0MuCgoJUFIgYm9vdHN0cmFwLzEyNTQ2CgkqIGRvYy9pbnN0YWxsLnRleGk6IERvY3VtZW50IHRoYXQgenNoIGRvZXMgbm90IHdvcmsgd2hlbgoJY29uZmlndXJpbmcgZ2NjLgoKMjAwMy0xMC0xNyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvcHR4NC5oOiBTd2l0Y2ggdG8gRFdBUkYgMjsgdXBkYXRlIGNvbW1lbnRzLgoKMjAwMy0xMC0xNyAgU2VnaGVyIEJvZXNzZW5rb29sICA8Ym9lc3NlbkBkZS5pYm0uY29tPgoJICAgIEhhcnRtdXQgUGVubmVyICA8aHBlbm5lckBkZS5pYm0uY29tPgoKCVBSIDEwNDA0LCBwYXJ0aWFsIDExNTkxLCBwYXJ0aWFsIDExNjAxCgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAoImFsdGl2ZWNfZHN0IiwgImFsdGl2ZWNfZHN0dCIsCgkiYWx0aXZlY19kc3RzdCIsICJhbHRpdmVjX2RzdHN0dCIsICJhbHRpdmVjX2x2c2wiLCAiYWx0aXZlY19sdnNyIiwKCSJhbHRpdmVjX2x2ZWJ4IiwgImFsdGl2ZWNfbHZlaHgiLCAiYWx0aXZlY19sdmV3eCIsICJhbHRpdmVjX2x2eGwiLAoJImFsdGl2ZWNfbHZ4IiwgImFsdGl2ZWNfc3R2eCIsICJhbHRpdmVjX3N0dnhsIiwgImFsdGl2ZWNfc3R2ZWJ4IiwKCSJhbHRpdmVjX3N0dmVoeCIsICJhbHRpdmVjX3N0dmV3eCIpOiBVc2UgYSBtZW1vcnlfb3BlcmFuZC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoYWx0aXZlY19leHBhbmRfbHZfYnVpbHRpbik6IE5ldyBmdW5jdGlvbi4KCShhbHRpdmVjX2V4cGFuZF9zdHZfYnVpbHRpbik6IEFkanVzdCBmb3IgdGhlIG1lbW9yeV9vcGVyYW5kLgoJKGFsdGl2ZWNfZXhwYW5kX2J1aWx0aW4pOiBDYWxsIGFsdGl2ZWNfZXhwYW5kX2x2X2J1aWx0aW4uCgkoYWx0aXZlY19pbml0X2J1aWx0aW5zKTogVXNlIGBsb25nIGludCcgZm9yIG1lbW9yeSBvZmZzZXRzLgoKMjAwMy0xMC0xNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogb3B0cy5jICAoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgT1BUX2Z3ZWIKCSogaW52b2tlLnRleGkgKC1md2ViKTogQWRkIG1pc3NpbmcgcGFydHMgb2YgZG9jdW1lbnRhdGlvbi4KCjIwMDMtMTAtMTcgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnL21pcHMvbGludXguaCAoRlVOQ1RJT05fTkFNRV9BTFJFQURZX0RFQ0xBUkVEKTogVW5kZWYKCWJlZm9yZSByZWRlZmluaXRpb24uCgoyMDAzLTEwLTE3ICBNb3N0YWZhIEhhZ29nICA8bXVzdGFmYUBpbC5pYm0uY29tPgoKCSogY29tbW9uLm9wdDogQWRkIGRlc2NyaXB0aW9uIG9mIHRoZSBuZXcgLWZnY3NlLWxhcyBmbGFnLgoJKiBmbGFncy5oIChmbGFnX2djc2VfbGFzKTogRGVjbGFyYXRpb24gb2YgZ2xvYmFsIGZsYWdfZ2NzZV9sYXMuCgkqIGdjc2UuYyAoaGFzaF9zY2FuX3NldCk6IEhhbmRsZSB0aGUgY2FzZSBvZiBzdG9yZSBleHByZXNzaW9uIGFuZAoJaW5zZXJ0IHRoZSBtZW1vcnkgZXhwcmVzc2lvbiB0byB0aGUgaGFzaCB0YWJsZSwgdGhpcyB3YXkgd2UgbWFrZSBpdAoJcG9zc2libGUgdG8gZGlzY292ZXIgcmVkdW5kYW50IGxvYWRzIGFmdGVyIHN0b3JlcyBhbmQgcmVtb3ZlIHRoZW0uCgkocHJlX2luc2VydF9jb3B5X2luc24pOiBtb3ZlZCB0aGUgY2FsbCB0byB1cGRhdGVfbGRfbW90aW9uX3N0b3JlcywKCXRvIHByZV9pbnNlcnRfY29waWVzLCBpdCBpcyBub3QgdGhlIGNvcnJlY3QgcGxhY2UgdG8gY2FsbCBpdCBhZnRlcgoJYWRkaW5nIHN0b3JlcyB0byBiZSBpbiB0aGUgYXZhaWxhYmxlIGV4cHJlc3Npb24gaGFzaCB0YWJsZS4KCShwcmVfaW5zZXJ0X2NvcGllcyk6IEFkZGVkIHRoZSBjYWxsIHRvIHVwZGF0ZV9sZF9tb3Rpb25fc3RvcmVzIHdoZW4KCW9uZSBvciBtb3JlIGNvcGllcyB3ZXJlIGluc2VydGVkLgoJKiBvcHRzLmMgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlIHRoZSAtZmdjc2UtbGFzIGZsYWcuCgkqIHRvcGxldi5jIChmbGFnX2djc2VfbGFzKTogSW5pdGlhbGl6YXRpb24gb2YgZmxhZ19nY3NlX2xhcy4KCgkqIGRvYy9pbnZva2UudGV4OiBEb2N1bWVudCBuZXcgLWZnY3NlLWxhcyBmbGFnLgoKMjAwMy0xMC0xOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvY3J0c2F2cmVzLmFzbTogQ29ycmVjdCBhbGlnbm1lbnQgb2YgcG93ZXJwYzY0IGNvZGUKCWZvciBwb3N0ZXJpdHksIHRoZW4gcmVtb3ZlIGl0LgoKMjAwMy0xMC0xNyAgUmljaGFyZCBFYXJuc2hhdyA8cmVhcm5zaGFAYXJtLmNvbT4KCSAgICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAodXNlX3JldHVybl9pbnNuKTogTm90IGEgc2luZ2xlIGluc3RydWN0aW9uLCBpZgoJdGhlcmUncyBhIGZyYW1lIHBvaW50ZXIuCgkoYXJtX291dHB1dF9lcGlsb2d1ZSk6IFByb3RlY3Qgc3RhY2sgcG9pbnRlciBmcm9tIGJlaW5nIGNvcnJ1cHRlZAoJb24gaW50ZXJydXB0LgoKMjAwMy0xMC0xNyAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogaWZjdnQuYyAobm9jZV90cnlfYWRkY2MpOiBIYW5kbGUgaWZzIHdpdGggJ2Vsc2UnIGNhc2UuCgoyMDAzLTEwLTE3ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X3NldCk6IERvIG5vdCBjbGVhciBvdXQgdW5kb2J1Zi5vdGhlcl9pbnNuCglhbHJlYWR5IHNldCBlbHNld2hlcmUuCgoyMDAzLTEwLTE3ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9wcm9sb2d1ZSk6ICBVc2UKCWdlbl9hbGxvY2F0ZV9zdGFja193b3JrZXIuCgoyMDAzLTEwLTE3ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZy5nY2MgKG1pcHMtc2dpLWlyaXg2Km8zMik6IE9ubHkgZW5hYmxlIHVzZV9jb2xsZWN0MgoJd2l0aG91dCBnYXMuCgkobWlwcy1zZ2ktaXJpeDYqKTogTGlrZXdpc2UuCgoJKiBjb25maWcvbWlwcy9pcmlzNmdhcy5oOiBOZXcgZmlsZS4KCSogZ2NjL2NvbmZpZy5nY2MgKG1pcHMtc2dpLWlyaXg2Kik6IFVzZSBpdC4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoVEFSR0VUX0lSSVgpOiBQcm92aWRlIGRlZmF1bHQuCgkoVEFSR0VUX0lSSVg1KTogTGlrZXdpc2UuCgkoVEFSR0VUX1NHSV9PMzJfQVMpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvaXJpczUuaCAoVEFSR0VUX0lSSVgpOiBSZWRlZmluZSBhcyAxLgoJKFRBUkdFVF9JUklYNSk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChUQVJHRVRfSVJJWDYpOiBSZW1vdmUuCgkoVEFSR0VUX0lSSVg1KTogUmVkZWZpbmUgYXMgMC4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19vdXRwdXRfZXh0ZXJuYWwpOiBUZXN0IGZvciBJUklYIDYgTzMyCglsaW5rZXIgd29ya2Fyb3VuZCB3aXRoIFRBUkdFVF9JUklYIGFuZCBtaXBzX2FiaSBpbnN0ZWFkIG9mCglBU01fT1VUUFVUX1VOREVGX0ZVTkNUSU9OLgoJKG1pcHNfZmlsZV9lbmQpOiBJbmxpbmUgb2xkIEFTTV9PVVRQVVRfVU5ERUZfRlVOQ1RJT04gZGVmaW5pdGlvbiwKCXRlc3RpbmcgVEFSR0VUX0lSSVggYW5kIG1pcHNfYWJpIGV4cGxpY2l0bHkuCgkqIGNvbmZpZy9taXBzL2lyaXM1LmggKEFTTV9PVVRQVVRfVU5ERUZfRlVOQ1RJT04pOiBSZW1vdmUuCgkqIGNvbmZpZy9taXBzL2lyaXM2LmggKEFTTV9PVVRQVVRfVU5ERUZfRlVOQ1RJT04pOiBSZW1vdmUgdW5kZWYuCgoJKiBjb25maWcvbWlwcy9taXBzLmMgKGlyaXhfb3V0cHV0X2V4dGVybmFsX2xpYmNhbGwpOiBSZW5hbWVkIGZyb20KCW1pcHNfb3V0cHV0X2V4dGVybmFsX2xpYmNhbGwuCglVc2UgbmV3IFRBUkdFVF9JUklYIGluIGd1YXJkLgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChpcml4X291dHB1dF9leHRlcm5hbF9saWJjYWxsKTogTWF0Y2gKCXRoaXMuCgkqIGNvbmZpZy9taXBzL2lyaXM1LmggKFRBUkdFVF9BU01fRVhURVJOQUxfTElCQ0FMTCk6IExpa2V3aXNlLgoKCSogY29uZmlnL21pcHMvaXJpczVnYXMuaCAoSEFWRV9HQVNfU0hGX01FUkdFKTogVXBkYXRlIGNvbW1lbnQuCglEZWZpbmUgYXMgMC4KCgkqIGNvbmZpZy9taXBzL2lyaXM2LmggKEZVTkNUSU9OX05BTUVfQUxSRUFEWV9ERUNMQVJFRCk6IERlZmluZQoJZGVwZW5kaW5nIG9uIG1pcHNfYWJpLgoJKiBjb25maWcvbWlwcy9saW51eC5oIChGVU5DVElPTl9OQU1FX0FMUkVBRFlfREVDTEFSRUQpOiBEZWZpbmUgYXMgMS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IFRlc3QKCUZVTkNUSU9OX05BTUVfQUxSRUFEWV9ERUNMQVJFRCBhdCBydW50aW1lLgoJKG1pcHNfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkoYnVpbGRfbWlwczE2X2Z1bmN0aW9uX3N0dWIpOiBMaWtld2lzZS4KCShidWlsZF9taXBzMTZfY2FsbF9zdHViKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoRlVOQ1RJT05fTkFNRV9BTFJFQURZX0RFQ0xBUkVEKTogUHJvdmlkZQoJZGVmYXVsdC4KCgkqIGNvbmZpZy9taXBzL2lyaXM2LmggKERXQVJGMl9VTldJTkRfSU5GTyk6IERvbid0IGRlZmluZSBmb3IgbmF0aXZlCglJUklYIDYgTzMyIGFzc2VtYmxlci4KCShTVUJUQVJHRVRfQ0MxX1NQRUMpOiBFbmZvcmNlIG1pcHMyIElTQSB3aXRoIE8zMiBBQkkuCgkoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZSBfQUJJTzMyLCB1c2UgaXQgdG8gZGVmaW5lCglfTUlQU19TSU0gZm9yIE8zMiBBQkkuCgkoRFdBUkYyX0ZSQU1FX0lORk8pOiBEb24ndCBkZWZpbmUgZm9yIG5hdGl2ZSBJUklYIDYgTzMyIGFzc2VtYmxlci4KCShBU01fREVDTEFSRV9GVU5DVElPTl9OQU1FKTogSW50ZWdyYXRlIG1pcHMuaCB2ZXJzaW9uLgoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX1NJWkUpOiBNb3ZlIHVuZGVmIGJlZm9yZSByZWRlZmluaXRpb24uCglJbnRlZ3JhdGUgTzMyIHZlcnNpb24uCgkoU1VCVEFSR0VUX0FTTV9TUEVDKTogSGFuZGxlIC1tYWJpPTMyLgoJKFNVQlRBUkdFVF9BU01fREVCVUdHSU5HX1NQRUMpOiBBZGQgbWRlYnVnX2FzbV9zcGVjIGZvciBnYXMgd2l0aAoJTzMyIEFCSS4KCShCU1NfU0VDVElPTl9BU01fT1BfMzIpOiBEZWZpbmUuCgkoQlNTX1NFQ1RJT05fQVNNX09QXzY0KTogTGlrZXdpc2UuCgkoQlNTX1NFQ1RJT05fQVNNX09QKTogRGVmaW5lIGRpZmZlcmVudGx5IGZvciBPMzIgYW5kIE4zMi9ONjQgQUJJcwoJdXNpbmcgdGhlbS4KCShUQVJHRVRfQVNNX05BTUVEX1NFQ1RJT04pOiBSZWZsZWN0IHJlbmFtaW5nLgoJTW92ZSB1cCB0byBhbGxvdyBvdmVycmlkZSBmb3IgTzMyIEFCSSB3aXRob3V0IEdOVSBhcy4KCShFSF9GUkFNRV9TRUNUSU9OX05BTUUpOiBEZWZpbmUgZXhwbGljaXRseS4KCShNVVNUX1VTRV9TSkxKX0VYQ0VQVElPTlMpOiBEZWZpbmUuCglbX01JUFNfU0lNID09IF9BQklPMzIgJiYgIUdBU10gKENUT1JTX1NFQ1RJT05fQVNNX09QLAoJRFRPUlNfU0VDVElPTl9BU01fT1ApOiBEdW1teSBkZWZpbml0aW9ucy4KCShUQVJHRVRfQVNNX05BTUVEX1NFQ1RJT04pOiBVbmRlZiBzdGF0aWNhbGx5LgoJKEVIX0ZSQU1FX1NFQ1RJT05fTkFNRSk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfRklMRU5BTUUpOiBJbnRlZ3JhdGUgbWlwcy5oIHZlcnNpb24uCgkoTElOS19TUEVDKTogT25seSB1c2UgZGVmYXVsdCBvcHRpb25zIC1jYWxsX3NoYXJlZCAtbm9fdW5yZXNvbHZlZAoJd2l0aG91dCAtci4KCURvbid0IHBhc3MgLWluaXQsIC1maW5pIHdpdGggLW1hYmk9MzIuCgkoQ09MTEVDVF9QQVJTRV9GTEFHKTogRGVmaW5lLgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChpcmlzNl9hc21fbmFtZWRfc2VjdGlvbl8xKTogQ2hhbmdlZCBndWFyZCB0bwoJVEFSR0VUX0lSSVguCglSZW5hbWVkIHRvIHVzZSBpcml4XyBwcmVmaXguCgkoaXJpczZfYXNtX25hbWVkX3NlY3Rpb24pOiBMaWtld2lzZS4KCShpcmlzX3NlY3Rpb25fYWxpZ25fZW50cnlfZXEpOiBMaWtld2lzZS4KCShpcmlzX3NlY3Rpb25fYWxpZ25fZW50cnlfaGFzaCk6IExpa2V3aXNlLgoJKGlyaXM2X2ZpbGVfc3RhcnQpOiBMaWtld2lzZS4KCShpcmlzNl9zZWN0aW9uX2FsaWduXzEpOiBMaWtld2lzZS4KCShpcmlzNl9maWxlX2VuZCk6IExpa2V3aXNlLgoJKGlyaXM2X3NlY3Rpb25fdHlwZV9mbGFncyk6IExpa2V3aXNlLgoJKGlyaXNfc2VjdGlvbl9hbGlnbl9odGFiKTogTGlrZXdpc2UuCgkoaXJpc19vcmlnX2FzbV9vdXRfZmlsZSk6IExpa2V3aXNlLgoJW1RBUkdFVF9JUklYXSAoVEFSR0VUX0FTTV9GSUxFX1NUQVJUKTogUmVmbGVjdCByZW5hbWUuCgkoVEFSR0VUX0FTTV9GSUxFX0VORCk6IExpa2V3aXNlLgoJKFRBUkdFVF9TRUNUSU9OX1RZUEVfRkxBR1MpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyBbVEFSR0VUX0lSSVg1ICYmICFUQVJHRVRfSVJJWDZdCgkoVEFSR0VUX0FTTV9VTkFMSUdORURfSElfT1ApOiBVc2UgcnVudGltZSBpbml0aWFsaXphdGlvbiBpbgoJb3ZlcnJpZGVfb3B0aW9ucyBpbnN0ZWFkLgoJKFRBUkdFVF9BU01fVU5BTElHTkVEX1NJX09QKTogTGlrZXdpc2UuCgkoVEFSR0VUX0FTTV9VTkFMSUdORURfRElfT1ApOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChvdmVycmlkZV9vcHRpb25zKSBbVVNFX0NPTExFQ1QyXTogUmVzdG9yZQoJZmxhZ19nbnVfbGlua2VyIHRvIGRlZmF1bHRzIHdpdGhvdXQgVVNFX0NPTExFQ1QyIGZvciBub24tSVJJWCBPMzIKCWFzc2VtYmxlcnMuCglMaWtld2lzZSBmb3IgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBoYW5kbGluZy4KCShvdmVycmlkZV9vcHRpb25zKTogSGFuZGxlIElSSVggTzMyIGFzc2VtYmxlciBxdWlya3MuCglbVEFSR0VUX0lSSVhdIChpcml4X2FzbV9uYW1lZF9zZWN0aW9uKTogSGFuZGxlIE8zMiBBQkkgd2l0aCBhbmQKCXdpdGhvdXQgZ2FzLgoJKG1pcHNfZmlsZV9zdGFydCk6IFVzZSBuZXcgVEFSR0VUX0lSSVguCgkobWlwc19kZWNsYXJlX29iamVjdF9uYW1lKTogTm8gc3BlY2lhbCBwcm9jZXNzaW5nIGZvciBJUklYIE8zMgoJYXNzZW1ibGVyLgoJKG1pcHNfZmluaXNoX2RlY2xhcmVfb2JqZWN0KTogTGlrZXdpc2UuCgkoaXJpeF9hc21fb3V0cHV0X2FsaWduKTogUmVuYW1lZCBmcm9tIGlyaXM2X2FzbV9vdXRwdXRfYWxpZ24uCglEb24ndCByZWNvcmQgYWxpZ25tZW50IGZvciBPMzIgQUJJLgoJKGlyaXhfZmlsZV9zdGFydCk6IFJlbmFtZWQgZnJvbSBpcmlzNl9maWxlX3N0YXJ0LgoJUmV0dXJuIGVhcmx5IGZvciBPMzIgQUJJLgoJKGlyaXhfZmlsZV9lbmQpOiBSZW5hbWVkIGZyb20gaXJpczZfZmlsZV9lbmQuCglEb24ndCBlbWl0IC5zZWN0aW9uIGRpcmVjdGl2ZXMgZm9yIE8zMiBBQkkuCgkqIGNvbmZpZy9taXBzL2lyaXM2LmggKEFTTV9PVVRQVVRfQUxJR04pOiBSZWZsZWN0IHJlbmFtaW5nLgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChpcml4X2FzbV9vdXRwdXRfYWxpZ24pOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9taXBzL3QtaXJpczYgKE1VTFRJTElCX09QVElPTlMpOiBBZGQgbWFiaT0zMi4KCShNVUxUSUxJQl9PU0RJUk5BTUVTKTogTGlrZXdpc2UuCgoyMDAzLTEwLTE3ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbGxlY3QyLmMgKENPTExFQ1RfUEFSU0VfRkxBRyk6IFByb3ZpZGUgZGVmYXVsdC4KCShtYWluKTogVXNlIGl0LgoJKiBkb2MvdG0udGV4aSAoQ09MTEVDVF9QQVJTRV9GTEFHKTogRG9jdW1lbnQgaXQuCgoyMDAzLTEwLTE3ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS1tb2Rlcy5kZWYgKENDX05tb2RlKTogTmV3IGNvbmRpdGlvbiBjb2RlIG1vZGUuCgkqIGFybS5jICh0aHVtYl9jb25kaXRpb25fY29kZSk6IERlbGV0ZS4KCShhcm1fc2VsZWN0X2NjX21vZGUpOiBIYW5kbGUgc2luZ2xlLWJpdCB0ZXN0IGZvciBUaHVtYi4KCShhcm1fcHJpbnRfb3BlcmFuZCwgY2FzZXMgJ2QnIGFuZCAnRCcpOiBEb24ndCBzcGVjaWFsIGNhc2UgdGhlCgljb25kaXRpb24gY29kZSBsb2dpYyBmb3IgVGh1bWIuCgkoZ2V0X2FybV9jb25kaXRpb25fY29kZSk6IEhhbmRsZSBDQ19ObW9kZS4KCSh0aHVtYl9jYnJjaF90YXJnZXRfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCSogYXJtLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCB0aHVtYl9jYnJjaF90YXJnZXRfb3BlcmFuZC4KCSogYXJtLXByb3Rvcy5oICh0aHVtYl9jYnJjaF90YXJnZXRfb3BlcmFuZCk6IEFkZCBwcm90b3R5cGUuCgkqIGFybS5tZDogQWRkIFRodW1iIHNwbGl0IHBhdHRlcm5zIGZvciB6ZXJvX2V4dHJhY3QgYW5kCglzaWduX2V4dHJhY3QuCgkodGJpdF9jYnJhbmNoLCBhbmRzaTNfY2JyYW5jaF9zY3JhdGNoLCBhbmRzaTNfY2JyYW5jaCkKCShvcnJzaTNfY2JyYW5jaF9zY3JhdGNoLCBvcnJzaTNfY2JyYW5jaCwgeG9yc2kzX2NicmFuY2hfc2NyYXRjaCkKCSh4b3JzaTNfY2JyYW5jaCwgYWRkc2kzX2NicmFuY2gsIGFkZHNpM19jYnJhbmNoX3NjcmF0Y2gpCgkoc3Vic2kzX2NicmFuY2gsIHN1YnNpM19jYnJhbmNoX3NjcmF0Y2gpOiBOZXcgVGh1bWIgcGF0dGVybnMuCgkoY2JyYW5jaG5lX2RlY3IxKTogUmUtd29yayB0byB1c2UgQ0NfTm1vZGUuCgoJKiBhcm0uYyAodGh1bWJfZXhwYW5kX2VwaWxvZ3VlKTogQWRkIGNsb2JiZXJzIG9mIHJlZ2lzdGVycyByZXN0b3JlZAoJYnkgdGhlIHJldHVybiBpbnN0cnVjdGlvbi4gIEFkZCBhIHVzZSBvZiB0aGUgbGluayByZWdpc3RlciBpZiBpdAoJd2Fzbid0IHN0b3JlZC4KCjIwMDMtMTAtMTcgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogZmxvdy5jIChpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogRG9uJ3QgYWJvcnQgaWYgYSBjb25kaXRpb25hbAoJanVtcCBpcyBub3QgYSBjb21wYXJpc29uIG9mIGEgcmVnaXN0ZXIuICBJbnN0ZWFkLCBqdXN0IGRvbid0IHJlY29yZAoJY29uZGl0aW9uYWwgbGlmZSBpbmZvcm1hdGlvbi4KCjIwMDMtMTAtMTYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBvcHRpbWl6YXRpb24vMTI2MzAKCSogcGEubWQgKG1vdnN0cnNpLCBtb3ZzdHJzaV9pbnRlcm5hbCk6IFVzZSBtYXRjaF9zY3JhdGNoIGluIGNsb2JiZXJzCglmb3Igb3BlcmFuZHMgNyBhbmQgOC4KCjIwMDMtMTAtMTYgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBvYmpjL01ha2UtbGFuZy5pbiAob2JqYy1wYXJzZS5vKTogSG9ub3IgJChwYXJzZWRpcikgZm9yIG9iamMtcGFyc2UuYy4KCjIwMDMtMTAtMTYgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBjb25maWcvaTM4Ni9jeWdtaW5nLmggKEFTTV9PVVRQVVRfREVGX0ZST01fREVDTFMpOiBEZWZpbmUuCgoJKiBjb25maWcvaTM4Ni93aW5udC5jIChnZW5fc3RkY2FsbF9zdWZmaXgpOiBNYWtlIHN0YXRpYwoJKGdlbl9mYXN0Y2FsbF9zdWZmaXgpOiBMaWtld2lzZS4KCShpMzg2X3BlX2RsbGV4cG9ydF9wKTogTGlrZXdpc2UuCgkoaTM4Nl9wZV9kbGxpbXBvcnRfcCk6IExpa2V3aXNlLgoJKGkzODZfcGVfbWFya19kbGxleHBvcnQpOiBMaWtld2lzZS4KCShpMzg2X3BlX21hcmtfZGxsaW1wb3J0KTogTGlrZXdpc2UuCgkoaTM4Nl9wZV9hc21fbmFtZWRfc2VjdGlvbik6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMy0xMC0xNiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHNucHJpbnRmIHRvIGdjY19BQ19DSEVDS19ERUNMUyBsaXN0LgoJKiBzeXN0ZW0uaDogRGVjbGFyZSBzbnByaW50ZiBpZiBuZWNlc3NhcnkuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKMjAwMy0xMC0xNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3ZhX2FyZyk6IE9ubHkgYWxpZ24gdmVjdG9yCglhcmd1bWVudHMgaWYgVEFSR0VUX0FMVElWRUNfQUJJLgoKMjAwMy0xMC0xNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fbWVtY3B5LCBmb2xkX2J1aWx0aW5fbWVtcGNweSwKCWZvbGRfYnVpbHRpbl9tZW1tb3ZlLCBmb2xkX2J1aWx0aW5fc3RyY3B5LCBmb2xkX2J1aWx0aW5fc3RybmNweSwKCWZvbGRfYnVpbHRpbl9tZW1jbXAsIGZvbGRfYnVpbHRpbl9zdHJjbXAsIGZvbGRfYnVpbHRpbl9zdHJuY21wKToKCU5ldyBmdW5jdGlvbnMuCgkoZXhwYW5kX2J1aWx0aW5fbWVtY3B5KTogVXNlIGludGVnZXJfemVyb3AgaW5zdGVhZCBvZiB0ZXN0aW5nCglob3N0X2ludGVnZXJwIGFuZCB0cmVlX2xvd19jc3QgZGlyZWN0bHkuICBNb3ZlIG1pc2FwcGxpZWQgaHVuawoJZm9yIG9wdGltaXphdGlvbiB3aGVyIFNSQyBhbmQgREVTVCBwb2ludCB0byB0aGUgc2FtZSBsb2NhdGlvbi4KCShleHBhbmRfYnVpbHRpbl9tZW1wY3B5KTogRnJvbSBoZXJlLgoJKGV4cGFuZF9idWlsdGluX21lbW1vdmUpOiBVc2UgaW50ZWdlcl96ZXJvcCBpbnN0ZWFkIG9mIHRlc3RpbmcKCWhvc3RfaW50ZWdlcnAgYW5kIHRyZWVfbG93X2NzdF9kaXJlY3RseS4KCShleHBhbmRfYnVpbHRpbl9tZW1zZXQpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9tZW1jbXApOiBMaWtld2lzZSAoYW5kIGZvciBpbnRlZ2VyX29uZXApLgoJKGV4cGFuZF9idWlsdGluX3N0cm5jbXApOiBMaWtld2lzZS4KCShmb2xkX2J1aWx0aW4pOiBDYWxsIHRoZSBhcHByb3ByaWF0ZSBmb2xkX2J1aWx0aW5fZm9vIGZ1bmN0aW9ucwoJdG8gb3B0aW1pemUgbWVtY3B5LCBtZW1wY3B5LCBtZW1tb3ZlLCBzdHJjcHksIHN0cm5jcHksIG1lbWNtcCwKCXN0cmNtcCBhbmQgc3RybmNtcC4KCjIwMDMtMTAtMTUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi1wcm90b3MuaCAobWFjaG9waWNfbm9uX2xhenlfcHRyX25hbWUpOiBEZWxldGUKCXByb3RvdHlwZS4gIENsZWFuIHVwIHNvbWUgd2hpdGVzcGFjZS4KCSogY29uZmlnL2Rhcndpbi5jOiBVc2UgZ2VuX3J0eF9GT08gKC4uLikgcmF0aGVyIHRoYW4KCWdlbl9ydHggKEZPTywgLi4uKS4KCShtYWNob3BpY19ub25fbGF6eV9wdHJfbmFtZSk6IE1ha2Ugc3RhdGljLgoJKG5hbWVfbmVlZHNfcXVvdGVzKTogQWxsb3cgJy4nIGFuZCAnJCcgdW5xdW90ZWQuCgkobWFjaG9waWNfbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IEltcHJvdmUgY29kZWdlbiBpbiBkeW5hbWljLW5vLXBpYwoJY2FzZS4KCjIwMDMtMTAtMTUgIEfhYm9yIEzza2kgIDxhbGdhQHJnYWkuaHU+CgoJKiBmb2xkLWNvbnN0LmMgKHRyZWVfc3dhcF9vcGVyYW5kc19wKTogRGlzYWJsZSBzb21lIGZlYXR1cmVzCgl3aGVuIG9wdGltaXppbmcgZm9yIHNpemUuCgoyMDAzLTEwLTE1ICBEYXZpZCBEYW5leSAgPGRkYW5leUBhdnRyZXguY29tPgoKCSogY29uZmlnL21pcHMvbGludXguaCAoTURfRkFMTEJBQ0tfRlJBTUVfU1RBVEVfRk9SKTogTmV3CgkqIGNvbmZpZy9taXBzL21pcHMuaCAoRFdBUkZfRlJBTUVfUkVHTlVNKTogRml4ZWQgdG8gYWxsb3cgdW53aW5kCglmcm9tIGxlYWYgZnVuY3Rpb25zLgoJKERXQVJGX0ZSQU1FX1JFVFVSTl9DT0xVTU4pOiBEaXR0by4KCShTSUdOQUxfVU5XSU5EX1JFVFVSTl9DT0xVTU4pOiBOZXcsIHVzZWQKCWJ5IE1EX0ZBTExCQUNLX0ZSQU1FX1NUQVRFX0ZPUi4KCSogdGVzdHN1aXRlL2djYy5kZy9jbGVhbnVwLTkuYzogQWRkZWQgbWlwcyotKi1saW51eCogdGFyZ2V0LgoKMjAwMy0xMC0xNSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdlbm1vZGVzLmM6IEluY2x1ZGUgaGFzaHRhYi5oLgoJKG1vZGVzX2J5X25hbWUsIGhhc2hfbW9kZSwgZXFfbW9kZSwgc3RydWN0IG1vZGVfYWRqdXN0KQoJKGFkal9ieXRlc2l6ZSwgYWRqX2FsaWdubWVudCwgYWRqX2Zvcm1hdCwgbmV3X2FkanVzdCkKCShfQUREX0FESlVTVCwgQURKVVNUX0JZVEVTSVpFLCBBREpVU1RfQUxJR05NRU5ULCBBREpVU1RfRk9STUFUKQoJKHByaW50X21heWJlX2NvbnN0X2RlY2wsIGVtaXRfbW9kZV9hZGp1c3RtZW50cyk6IE5ldy4KCShrbm93bl9tb2Rlcyk6IFJlbmFtZSB0byBtb2Rlcy4KCShmaW5kX21vZGUpOiBLaWxsIGNsYXNzIGFyZ3VtZW50OyBsb29rIHVwIGluIGhhc2ggdGFibGUuCgkobmV3X21vZGUpOiBJbnNlcnQgaW50byBoYXNoIHRhYmxlIGFsc28uCgkobmV3X2FkanVzdCk6IE5ldy4KCShyZXNldF9mbG9hdF9mb3JtYXQsIG1ha2VfcGFydGlhbF9pbnRlZ2VyX21vZGUpCgkobWFrZV92ZWN0b3JfbW9kZSk6IFR3ZWFrIGVycm9yIHJlcG9ydGluZy4KCShyZXNldF9mbG9hdF9mb3JtYXQpOiBDb3JyZWN0IHR5cGUgb2YgZm91cnRoIGFyZ3VtZW50LgoJKGVtaXRfaW5zbl9tb2Rlc19oKTogQWRkICNkZWZpbmVzIHRvIGhlbHAgbWFrZSBtb2RlX3NpemUsCgltb2RlX2Jhc2VfYWxpZ24sIGFuZCByZWFsX2Zvcm1hdF9mb3JfbW9kZSBjb25kaXRpb25hbGx5IGNvbnN0LgoJKGVtaXRfbW9kZV9zaXplLCBlbWl0X21vZGVfYmFzZV9hbGlnbik6IFVzZSBwcmludF9tYXliZV9jb25zdF9kZWNsLgoJKGVtaXRfcmVhbF9mb3JtYXRfZm9yX21vZGUpOiBMaWtld2lzZSwgYnV0IHRlbXBvcmFyaWx5IGRpc2FibGVkLgoJKGVtaXRfaW5zbl9tb2Rlc19jKTogQ2FsbCBlbWl0X21vZGVfYWRqdXN0bWVudHMuCgkobWFpbik6IEluaXRpYWxpemUgbW9kZXNfYnlfbmFtZS4KCSogTWFrZWZpbGUuaW46IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkqIG1hY2htb2RlLmRlZjogRG9jdW1lbnQgRVhQUiBhcmd1bWVudHMgYW5kIG5ldyBBREpVU1RfKiBzdGF0ZW1lbnRzLgoJKiBtYWNobW9kZS5oOiBVc2UgQ09OU1RfTU9ERV9TSVpFIGFuZCBDT05TVF9NT0RFX0JBU0VfQUxJR04gaW4KCWRlY2xhcmF0aW9ucyBvZiBtb2RlX3NpemUgYW5kIG1vZGVfYmFzZV9hbGlnbi4gIERlY2xhcmUKCWluaXRfYWRqdXN0X21hY2hpbmVfbW9kZXMuCgkqIHRvcGxldi5jIChiYWNrZW5kX2luaXQpOiBDYWxsIGluaXRfYWRqdXN0X21hY2hpbmVfbW9kZXMuCgoyMDAzLTEwLTE1ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBnZW5tb2Rlcy5jIChjYWxjX3dpZGVyX21vZGUpOiBBbGxvY2F0ZSBlbm91Z2ggcm9vbSBmb3IgYWxsIHRoZQoJZW50cmllcyB3ZSdsbCBwb3NzaWJseSBhc3NpZ24gaW4gdGhlIHNvcnQgYnVmZmVyLgoKMjAwMy0xMC0xNSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnLmdjYyAoczM5MHgtaWJtLXRwZiopOiBOZXcgdGFyZ2V0LgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEb2N1bWVudCBpdC4KCSogY29uZmlnL3MzOTAvdC10cGY6IE5ldyBmaWxlLgoJKiBjb25maWcvczM5MC90cGYuaDogTmV3IGZpbGUuCgoyMDAzLTEwLTE1ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCglQUiB0YXJnZXQvMTI1OTgKCSogY29uZmlnL2NyaXMvY3Jpcy5tZCAoZGVmaW5lX3NwbGl0ICIqbW92X3NpZGVzaV9iaWFwX21lbSIrMSkKCShkZWZpbmVfc3BsaXRzICIqbW92X3NpZGVzaV9tZW0iKzEsICJjYXNlc2kiKzksICsxMCwgKzExLCArMTIpOgoJVXNlIGNyaXNfbWVtX29wIGFuZCByZXBsYWNlX2VxdWl2X2FkZHJlc3MsIG5vdCBnZW5fcnR4X01FTS4KCSgiY2FsbCIsICJjYWxsX3ZhbHVlIiwgZGVmaW5lX3NwbGl0ICIqbW92X3NpZGVzaV9tZW0iKzE5LCArMjApCgkoZGVmaW5lX3NwbGl0ICIqbW92X3NpZGVzaV9tZW0iKzIxLCArMjIsICsyMywgKzI0LCArMjUsICsyNiwgKzI3KQoJKGRlZmluZV9zcGxpdCAiKm1vdl9zaWRlc2lfbWVtIisyOCwgKzI5LCArMzApOiBVc2UKCXJlcGxhY2VfZXF1aXZfYWRkcmVzcywgbm90IGdlbl9ydHhfTUVNLgoJKiBjb25maWcvY3Jpcy9jcmlzLmMgKGNyaXNfbWVtX29wKTogTmV3IG1hdGNoX29wZXJhdG9yIGZ1bmN0aW9uLgoJKGNyaXNfbm90aWNlX3VwZGF0ZV9jYyk6IFVzZSByZXBsYWNlX2VxdWl2X2FkZHJlc3MsIG5vdAoJZ2VuX3J0eF9NRU0uCgkqIGNvbmZpZy9jcmlzL2NyaXMuaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIGNyaXNfbWVtX29wLgoKMjAwMy0xMC0xNSAgQmVybmFyZG8gSW5ub2NlbnRpIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmggKE1BU0tfU0VQX0RBVEEsIFRBUkdFVF9TRVBfREFUQSwKCU1BU0tfSURfU0hBUkVEX0xJQlJBUlksIFRBUkdFVF9JRF9TSEFSRURfTElCUkFSWSk6IE1vdmUKCWRlZmluaXRpb25zIGFmdGVyIHRoZSBvdGhlciBmbGFncy4KCjIwMDMtMTAtMTQgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIGMtcGFyc2UuaW4gKG1ldGhvZGRlZiwgbWV0aG9kcHJvdG8pOiBDYWxsIG9iamNfYWRkX21ldGhvZCgpCglpbnN0ZWFkIG9mIGFkZF9tZXRob2QoKS4KCSogb2JqYy9vYmpjLWFjdC5jIChvYmpjX2NoZWNrX2RlY2wpOiBEbyBub3QgY2hlY2sgZm9yCgljb25zdGFudF9zdHJpbmdfdHlwZS4KCShhZGRfbWV0aG9kKTogUmVuYW1lIHRvIG9iamNfYWRkX21ldGhvZCgpLgoJKHJlYWxseV9zdGFydF9tZXRob2QpOiBDYWxsIG9iamNfYWRkX21ldGhvZCgpIGluc3RlYWQgb2YKCWFkZF9tZXRob2QoKS4KCSogb2JqYy9vYmpjLWFjdC5oIChhZGRfbWV0aG9kKTogUmVuYW1lIHRvIG9iamNfYWRkX21ldGhvZCgpLgoKMjAwMy0xMC0xNCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAoczM5MF9hbGNfY29tcGFyaXNvbik6IEFkZCBwcm90b3R5cGUuCgkoczM5MF9zbGJfY29tcGFyaXNvbik6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfYWxjX2NvbXBhcmlzb24sIHMzOTBfc2xiX2NvbXBhcmlzb24pOgoJTmV3IGZ1bmN0aW9ucy4KCSogY29uZmlnL3MzOTAvczM5MC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgczM5MF9hbGNfY29tcGFyaXNvbgoJYW5kIHMzOTBfc2xiX2NvbXBhcmlzb24uCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqYWRkZGkzXzMxIiwgIipzdWJkaTNfMzEiKTogRG8gbm90IHVzZSBvbgoJelNlcmllcyBtYWNoaW5lcy4KCSgiKmFkZGRpM18zMXoiLCAiKnN1YmRpM18zMXoiKTogTmV3IGluc25zLgoJKCIqYWRkZGkzX2FsY19jYyIsICIqYWRkZGkzX2FsYyIsICIqc3ViZGkzX3NsYl9jYyIsICIqc3ViZGkzX3NsYiIsCgkiKmFkZHNpM19hbGNfY2MiLCAiKmFkZHNpM19hbGMiLCAiKnN1YnNpM19zbGJfY2MiLCAiKnN1YnNpM19zbGIiKToKCU5ldyBpbnNucy4KCjIwMDMtMTAtMTQgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlndXJlLmluOiBDbGVhbiB1cCBzb21lIGZlZWRiYWNrIGVjaG9lcy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogYWNsb2NhbC5tNDogUHJvcGVybHkgcXVvdGUgbmFtZXMgb2YgbWFjcm9zIGJlaW5nIGRlZmluZWQuCgoJKiBjb25maWcuZ2NjIChhbTMzXzIuMC0qLWxpbnV4Kik6IFVzZSB0LXNsaWJnY2MtZWxmLXZlci4KCjIwMDMtMTAtMTQgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2V4cGFuZF9jYWxsKTogRm9yY2UgZnVuY3Rpb24gYWRkcmVzcwoJdG8gREltb2RlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChjYWxsX2dwKTogUHV0IERJbW9kZSBvbiBvcGVyYW5kIDAuCgoyMDAzLTEwLTE0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgibXVsZGYzIiwgIiptdWxkZjMiLCAiKm11bGRmM19pYm0iLAoJIm11bHNmMyIsICIqbXVsc2YzIiwgIiptdWxzZjNfaWJtIik6IERvIG5vdCBjbG9iYmVyIENDLgoJKCJkaXZkZjMiLCAiKmRpdmRmMyIsICIqZGl2ZGYzX2libSIsICJkaXZzZjMiLCAiKmRpdnNmMyIsCgkiKmRpdnNmM19pYm0iKTogTGlrZXdpc2UuCgoyMDAzLTEwLTE0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2MsIGNvbmZpZy9tNjhoYzExL3QtbTY4aGMxMS1nYXM6IFJlcGxhY2UgdXNlcyBvZgoJdGFyZ2V0X2FsaWFzIHdpdGggdGFyZ2V0X25vbmNhbm9uaWNhbC4KCjIwMDMtMTAtMTQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZXhwci5jIChibG9ja19tb3ZlX2xpYmNhbGxfc2FmZV9mb3JfY2FsbF9wYXJtKTogQ2xlYW4gdXAsCglhbmQgYWRkIGNhc2UgZm9yIG1hY2hpbmVzIHdoZXJlIG91dGdvaW5nIHJlZ2lzdGVyIHBhcmFtZXRlcnMKCWdldCBzdGFjayBzcGFjZS4KCgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9waWNfaW5kaXJlY3RfZGF0YV9yZWZlcmVuY2UpOiBVc2UgYSBzY3JhdGNoCglyZWdpc3RlciB3aGVuIGdlbmVyYXRpbmcgaW5kaXJlY3QgYWRkcmVzcy4KCjIwMDMtMTAtMTQgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmMgKGFybV9hZGRpbW1fb3BlcmFuZCk6IE1PREUgYXJndWVtbnQgaXMgdW51c2VkLgoJKiBhcm0ubWQgKGNicmFuY2huZV9kZWNyMSk6IEZpeCBib290c3RyYXAgd2FybmluZy4KCjIwMDMtMTAtMTQgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoYWxwaGFfcHRocmVhZF9nY2MpOiBOZXcgZml4LgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS9wdGhyZWFkLmggW0FMUEhBX1BUSFJFQURfR0NDX0NIRUNLXTogTmV3Cgl0ZXN0Y2FzZS4KCUZpeGVzIFBSIGJvb3RzdHJhcC85MzMwLgoKMjAwMy0xMC0xMyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfYWRqdXN0X2ZpZWxkX2FsaWduKTogUmVkbyBjaGVjayBmb3IKCXRvbyB3aWRlIGJpdGZpZWxkcy4KCShmcnZfaGFyZF9yZWdub19tb2RlX29rKTogQWRkIFNQUl9QIGFuZCBBUF9GSVJTVC4KCSogY29uZmlnL2Zydi9mcnYuaCAoRlVOQ1RJT05fUFJPRklMRVIpOiBSZW1vdmUgYWJvcnQgY2FsbC4KCShTQlNTX1NFQ1RJT05fQVNNX09QKTogUmVtb3ZlLgoJKEVYVFJBX1NFQ1RJT05TKTogUmVtb3ZlIGluX3Nic3MuCgkoRVhUUkFfU0VDVElPTl9GVU5DVElPTlMpOiBSZW1vdmUgU0JTU19TRUNUSU9OX0ZVTkNUSU9OLgoJKFNCU1NfU0VDVElPTl9GVU5DVElPTiwgc2Jzc19zZWN0aW9uKTogUmVtb3ZlLgoJKEFTTV9PVVRQVVRfQUxJR05FRF9ERUNMX0xPQ0FMKTogQ2hhbmdlIHNic3Nfc2VjdGlvbiB0bwoJbmFtZWRfc2VjdGlvbi4KCjIwMDMtMTAtMTMgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZS5pbiwgY29uZmlnLmhvc3QsIG1raGVhZGVycy5pbjogUmVwbGFjZQoJdXNlcyBvZiAke3RhcmdldF9hbGlhc30gZm9yIGRpcmVjdG9yeSBuYW1lcyAoYW5kIG90aGVyIHBsYWNlcyB3aGljaAoJd29uJ3QgbGlrZSB0aGUgZW1wdHkgc3RyaW5nKSB3aXRoICR7dGFyZ2V0X25vbmNhbm9uaWNhbH0uICBJbnRyb2R1Y2UKCWNhbGwgZWFybHkgaW4gY29uZmlndXJlLmluIHRvIF9HQ0NfVE9QTEVWX05PTkNBTk9OSUNBTF9UQVJHRVQgc28gaXQncwoJYXZhaWxhYmxlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTEwLTEzICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY29uZmlnL2FybS9pd21teHQubWQgKGNvbmRfaXdtbXh0X21vdnNpX2luc24pOiBOZXcgcGF0dGVybi4KCSogY29uZmlnL2FybS9hcm0ubWQ6IEZvciBzcGxpdHMgd2hpY2ggcmVseSBvbiBjb25kaXRpb25hbCBtb3ZlcywKCXJlbW92ZSAhIFRBUkdFVF9JV01NWFQgY29uZGl0aW9uLgoKMjAwMy0xMC0xMyAgRGF2aWQgUy4gTWlsbGVyICA8ZGF2ZW1AcmVkaGF0LmNvbT4KCgkqIGlmY3Z0LmMgKG51bV9yZW1vdmVkX2Jsb2Nrcyk6IFJlbmFtZSB0byBudW1fdHJ1ZV9jaGFuZ2VzLgoJKGZpbmRfY29uZF90cmFwKTogQWx3YXlzIGluY3JlbWVudCBpZiB3ZSBlbWl0IGEgY29uZGl0aW9uYWwKCXRyYXAgaW5zbi4KCjIwMDMtMTAtMTMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQlVJTERfUlRMKTogUmVwbGFjZSAkKEJVSUxEX1BSRUZJWClpbnNuLW1vZGVzLm8KCXdpdGggbWluLWluc24tbW9kZXMuby4KCShTVEFHRVNUVUZGKTogQWRkIG1pbi1pbnNuLW1vZGVzLmMuCgkoZ2Vub2Jqcyk6IEFkZCBnZW5tb2Rlcy5vLgoJKHByaW50LXJ0bC5vLCBwcmludC1ydGwxLm8pOiBEZXBlbmQgb24gJChUTV9QX0gpLgoJKGluc24tbW9kZXMubyk6IERlcGVuZCBvbiAkKFRNX0gpIG5vdCAkKEdUTV9IKTsgYWxzbyByZWFsLmguCgkobWluLWluc24tbW9kZXMuYywgbWluLWluc24tbW9kZXMubyk6IE5ldyBydWxlcy4KCShzLW1vZGVzKTogQWxzbyBnZW5lcmF0ZSBtaW4taW5zbi1tb2Rlcy5jLgoJKCQoQlVJTERfUFJFRklYXzEpaW5zbi1tb2Rlcy5vKTogS2lsbC4KCSogZ2VubW9kZXMuYyAoc3RydWN0IG1vZGVfZGF0YSk6IEFkZCBmb3JtYXQgZmllbGQuCgkoYmxhbmtfbW9kZSwgdmFsaWRhdGVfbW9kZSwgY29tcGxldGVfbW9kZSk6IFVwZGF0ZSB0byBtYXRjaC4KCShtYWtlX3NjYWxhcl9tb2RlKTogU2VwYXJhdGUgaW50byBtYWtlX2ludF9tb2RlIGFuZCBtYWtlX2Zsb2F0X21vZGUuCgkoX1NDQUxBUl9NT0RFKTogS2lsbC4KCShGTE9BVF9NT0RFLCBGUkFDVElPTkFMX0ZMT0FUX01PREUpOiBBZGQgZm9ybWF0IGFyZ3VtZW50LgoJKGVtaXRfaW5zbl9tb2Rlc19jX2hlYWRlcik6IEFkanVzdC4KCShlbWl0X21pbl9pbnNuX21vZGVzX2NfaGVhZGVyLCBlbWl0X3JlYWxfZm9ybWF0X2Zvcl9tb2RlKQoJKGVtaXRfbWluX2luc25fbW9kZXNfYyk6IE5ldyBmdW5jdGlvbnMuCgkoZW1pdF9pbnNuX21vZGVzX2MpOiBDYWxsIGVtaXRfcmVhbF9mb3JtYXRfZm9yX21vZGUuCgkobWFpbik6IEFkZCAtbSBvcHRpb24gdG8gZ2VuZXJhdGUgbWluLWluc24tbW9kZXMuYy4KCSogbWFjaG1vZGUuaDogVXBkYXRlIGRvY3VtZW50YXRpb24uICBBZGQgZm9ybWF0IGFyZ3VtZW50IHRvCglhbGwgdXNlcyBvZiBGTE9BVF9NT0RFLgoJKiByZWFsLmM6IERvbid0IGRlZmluZSByZWFsX2Zvcm1hdF9mb3JfbW9kZSBoZXJlLgoKCSogZHdhcmZvdXQuYzogTW92ZSBkZWZhdWx0IGRlZmluaXRpb24gb2YgUFJJTlRfUkVHLi4uCgkqIGRlZmF1bHRzLmg6IC4uLmhlcmUuCgkqIHByaW50LXJ0bC5jOiBJbmNsdWRlIHRtX3AuaC4KCShERUJVR19QUklOVF9SRUcsIERFQlVHX1JFR0lTVEVSX05BTUVTLCBkZWJ1Z19yZWdfbmFtZXMsIHJlZ19uYW1lcyk6CglLaWxsLgoJKHByaW50X3J0eCk6IFVzZSBQUklOVF9SRUcsIG5vdCBERUJVR19QUklOVF9SRUcuICBCdXQgc3Vycm91bmQKCXRoaXMgZW50aXJlIGJsb2NrIHdpdGggI2lmbmRlZiBHRU5FUkFUT1JfRklMRS4KCSogcmVnY2xhc3MuYzogVW5jb25kaXRpb25hbGx5IGRlZmluZSByZWdfbmFtZXMuCgkqIGNvbmZpZy9taXBzL21pcHMuaCwgY29uZmlnL3JzNjAwMC9yczYwMDAuaCwgY29uZmlnL3NoL3NoLmgKCURvbid0IGRlZmluZSBERUJVR19SRUdJU1RFUl9OQU1FUy4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaDogRG9uJ3QgdXNlIERFQlVHX1JFR0lTVEVSX05BTUVTIGluCglyZWRlZmluaXRpb24gb2YgUkVHSVNURVJfTkFNRVMuCgkqIGNvbmZpZy9pMzg2L2kzODYuaDogRG9uJ3QgZGVmaW5lIERFQlVHX1BSSU5UX1JFRy4KCgkqIGNvbWJpbmUuYzogQ2hhbmdlIGFsbCBwcmVwcm9jZXNzb3IgY29uZGl0aW9uYWxzIG9uCglFWFRSQV9DQ19NT0RFUyB0byB1c2UgU0VMRUNUX0NDX01PREUgaW5zdGVhZDsgcmVhcnJhbmdlIGEgYml0Cglmb3IgY2xhcml0eS4KCSogZ2Vub3Bpbml0LmM6IFJlbW92ZSBtZW50aW9uIG9mIEVYVFJBX0NDX01PREVTIGluIGNvbW1lbnQuCgkqIGNvbmZpZ3VyZS5pbjogRG9uJ3QgZGVmaW5lIEVYVFJBX0NDX01PREVTLgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCSogZG9jL3RtLnRleGk6IFJlbW92ZSBkb2N1bWVudGF0aW9uIG9mIEVYVFJBX0NDX01PREVTLgoKCSogY29uZmlnL2FyYy9hcmMuYywgY29uZmlnL20zMnIvbTMyci5jLCBjb25maWcvc3BhcmMvc3BhcmMuYzoKCU1heSBhc3N1bWUgdGhhdCBHRVRfTU9ERV9DTEFTUyBpcyBhY2N1cmF0ZSBmb3IgZXh0cmEgQ0MgbW9kZXMKCWF0IGFsbCB0aW1lcy4KCgkqIGNvbmZpZy9pODYwL2k4NjAuaCAoSU5JVF9DVU1VTEFUSVZFX0FSR1MpOiBQYXNzIGNvcnJlY3QKCW51bWJlciBvZiBhcmd1bWVudHMgdG8gYWdncmVnYXRlX3ZhbHVlX3AuCgoJKiBnZW5tb2Rlcy5jIChSRVNFVF9GTE9BVF9GT1JNQVQsIHJlc2V0X2Zsb2F0X2Zvcm1hdCk6IE5ldy4KCSogbWFjaG1vZGUuZGVmOiBFeHBsYWluIEFSQ0gtbW9kZXMuZGVmLiAgRG9jdW1lbnQKCVJFU0VUX0ZMT0FUX0ZPUk1BVC4gIEltcHJvdmUgY29tbWVudGFyeSBvbiB2YXJpb3VzIG1vZGUKCWNsdXN0ZXJzLiAgRG8gbm90IGRlZmluZSBPSSwgUFFJLCBQSEksIFBTSSwgUERJLCBRRiwgSEYsIFRRRiwKCVhGLCBvciBURiBtb2RlcyBoZXJlLiAgUmVtb3ZlIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkKCWRlZmluaXRpb24gb2YgQ0MuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEtbW9kZXMuZGVmOiBOZXcgZmlsZTsgZGVmaW5lIFRGIG1vZGUuCgkqIGNvbmZpZy9hcmMvYXJtLW1vZGVzLmRlZjogRGVmaW5lIFhGIG1vZGUuCgkqIGNvbmZpZy9jNHgvYzR4LW1vZGVzLmRlZjogRGVmaW5lIFFGIGFuZCBIRiBtb2Rlcy4gIFVuc2V0CglmbG9hdCBmb3JtYXQgZm9yIFNGIGFuZCBERiBtb2Rlcy4KCSogY29uZmlnL2RzcDE2eHgvZHNwMTZ4eC1tb2Rlcy5kZWY6IE5ldyBmaWxlOyBkZWZpbmUgSEYgbW9kZS4KCSogY29uZmlnL2kzODYvaTM4Ni1tb2Rlcy5kZWY6IERlZmluZSBYRiBhbmQgVEYgbW9kZXMuCgkqIGNvbmZpZy9pOTYwL2k5NjAtbW9kZXMuZGVmOiBEZWZpbmUgVEYgbW9kZS4KCSogY29uZmlnL2lhNjQvaWE2NC1tb2Rlcy5kZWY6IERlZmluZSBURiBhbmQgT0kgbW9kZXMuCgkqIGNvbmZpZy9tNjhrL202OGstbW9kZXMuZGVmOiBOZXcgZmlsZTsgZGVmaW5lIFhGIG1vZGUuCgkqIGNvbmZpZy9taXBzL21pcHMtbW9kZXMuZGVmOiBOZXcgZmlsZTsgZGVmaW5lIFRGIG1vZGUsIHJlc2V0Cglmb3JtYXRzIGZvciBTRiBhbmQgREYgbW9kZXMuCgkqIGNvbmZpZy9wYS9wYS1tb2Rlcy5kZWY6IERlZmluZSBURiBtb2RlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBEZWZpbmUgVEYgYW5kIFBTSSBtb2Rlcy4KCSogY29uZmlnL3MzOTAvczM5MC1tb2Rlcy5kZWY6IERlZmluZSBPSSBtb2RlLgoJKiBjb25maWcvc2gvc2gtbW9kZXMuZGVmOiBOZXcgZmlsZTsgZGVmaW5lIFBTSSBtb2RlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMtbW9kZXMuZGVmOiBEZWZpbmUgVEYgbW9kZS4KCSogY29uZmlnL3ZheC92YXgtbW9kZXMuZGVmOiBOZXcgZmlsZTsgcmVzZXQgZm9ybWF0cyBmb3IgU0YgYW5kCglERiBtb2Rlcy4KCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9vdmVycmlkZV9vcHRpb25zKTogTm8gbmVlZCB0byBtZXNzCgl3aXRoIHJlYWxfZm9ybWF0X2Zvcl9tb2RlIG9yIHNldCBSRUFMX01PREVfRk9STUFUcy4KCShjNHhfaW1tZWRfaW50X2NvbnN0YW50KTogRG9uJ3QgYXBwbHkgR0VUX01PREVfQ0xBU1MgdG8gcnR4Cgl2YXJpYWJsZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogTm8gbmVlZCB0byBzZXQKCVJFQUxfTU9ERV9GT1JNQVRzIGhlcmUuCgkqIGNvbmZpZy9pOTYwL2k5NjAuYyAoaTk2MF9pbml0aWFsaXplKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19vdmVycmlkZV9vcHRpb25zKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9vdmVycmlkZV9vcHRpb25zKTogU2V0IFJFQUxfTU9ERV9GT1JNQVQKCWZvciBURm1vZGUgb25seSBpZiBub3QgdGhlIGRlZmF1bHQuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IExpa2V3aXNlLgoJKiBjb25maWcvdmF4L3ZheC5jIChvdmVycmlkZV9vcHRpb25tcyk6IFNldCBSRUFMX01PREVfRk9STUFUIGZvcgoJREZtb2RlIG9ubHkgaWYgbm90IHRoZSBkZWZhdWx0LgoKCSogY29uZmlnL2kzNzAvaTM3MC5oIChSRVRfUkVHKTogRG9uJ3QgY29uc2lkZXIgVEZtb2RlLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmMgKHByaW50X29wZXJhbmQpOiBEb24ndCBjb25zaWRlciBYRm1vZGUuCgkqIGNvbmZpZy9kc3AxNnh4L2RzcDE2eHguYyAoaGFyZF9yZWdub19tb2RlX29rKTogI2lmIDAgb3V0IHVzZQoJb2YgbW9kZXMgdGhhdCBkb24ndCBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIG1hY2hpbmUgZGVzY3JpcHRpb24uCgoJKiBjb25maWcvYXJjL2FyYy1tb2Rlcy5kZWYsIGNvbmZpZy9hcm0vYXJtLW1vZGVzLmRlZgoJKiBjb25maWcvYzR4L2M0eC1tb2Rlcy5kZWYsIGNvbmZpZy9mcnYvZnJ2LW1vZGVzLmRlZgoJKiBjb25maWcvaTM4Ni9pMzg2LW1vZGVzLmRlZiwgY29uZmlnL2k5NjAvaTk2MC1tb2Rlcy5kZWYKCSogY29uZmlnL2lhNjQvaWE2NC1tb2Rlcy5kZWYsIGNvbmZpZy9tbWl4L21taXgtbW9kZXMuZGVmCgkqIGNvbmZpZy9wYS9wYS1tb2Rlcy5kZWYsIGNvbmZpZy9wZHAxMS9wZHAxMS1tb2Rlcy5kZWYKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtbW9kZXMuZGVmLCBjb25maWcvczM5MC9zMzkwLW1vZGVzLmRlZgoJKiBjb25maWcvc3BhcmMvc3BhcmMtbW9kZXMuZGVmOiBDb252ZXJ0IHRvIG5ldyBzdHlsZSBmb3IKCWRlY2xhcmluZyBleHRyYSBDQyBtb2Rlcy4KCjIwMDMtMTAtMTMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcHBsZXguYyAoX2NwcF9jbGVhbl9saW5lKTogSW4gdGhlIGNvbW1vbiBjYXNlIG9mIGEgbGluZQoJd2l0aCBubyB0cmlncmFwaHMgYW5kIG5vIFwtbmV3bGluZSwgYXZvaWQgd3JpdGluZyB0byBtZW1vcnkuCgkoX2NwcF9za2lwX2Jsb2NrX2NvbW1lbnQpOiBVc2UgYSBsb2NhbCAnY3VyJyBwb2ludGVyIGluc3RlYWQKCW9mIHRoZSBidWZmZXIgbWVtYmVyLiAgTWFrZSBjIGFuIHVjaGFyIHRvIGF2b2lkIHVubmVjZXNzYXJ5CglzaWduIGV4dGVuc2lvbnMuCgoyMDAzLTEwLTEzICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlIHVubmVjZXNzYXJ5IHRlc3QuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZ3VyZS5pbjogRml4IGdyYW1tYXRpY2FsIGVycm9yLiAgTW92ZSBVV0lOIGhvc3QgZXJyb3IgdG8uLi4KCSogY29uZmlnLmhvc3Q6IEhlcmUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMTAtMTMgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKmZtYWRkZGY0IiwgIipmbXN1YmRmNCIsICIqZm1hZGRzZjQiLAoJIipmbXN1YnNmNCIpOiBJbnNucyBhcmUgbm93IGRlcGVuZGVudCBvbiBUQVJHRVRfRlVTRURfTUFERCBpbnN0ZWFkCglvZiBmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoIk1BU0tfTk9fRlVTRURfTUFERCIsICJUQVJHRVRfTk9fRlVTRURfTUFERCIsCgkiVEFSR0VUX0ZVU0VEX01BREQiLCAiVEFSR0VUX1NXSVRDSEVTIik6IEludHJvZHVjZWQgbmV3IHRhcmdldCBmbGFncwoJZnVzZWQtbWFkZCBhbmQgbm8tZnVzZWQtbWFkZC4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudGVkIHRoZSBuZXcgb3B0aW9ucyBmdXNlZC1tYWRkIGFuZAoJbm8tZnVzZWQtbWFkZCBmb3IgUy8zOTAuCgoyMDAzLTEwLTE0ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKFNVQlNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKTogQ2hvb3NlCglNQVNLX0FMSUdOX05BVFVSQUwgaWYgcnM2MDAwX2FsaWdubWVudF9zdHJpbmcgbm90IGdpdmVuLiAgRG9uJ3QKCWFzc2lnbiBERUZBVUxUX0FCSS4KCShBREpVU1RfRklFTERfQUxJR04sIFJPVU5EX1RZUEVfQUxJR04pOiBVcGRhdGUgY29tbWVudC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogRm9ybWF0dGluZy4KCShyczYwMDBfcGFyc2VfYWxpZ25tZW50X29wdGlvbik6IE9ubHkgc2V0IHJzNjAwMF9hbGlnbm1lbnRfZmxhZ3MKCXdoZW4gcnM2MDAwX2FsaWdubWVudF9zdHJpbmcgZ2l2ZW4uCgoyMDAzLTEwLTEzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xMjUzOAoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoTVVTVF9TQVZFX1JFR0lTVEVSKTogRGVsZXRlLgoJKHNwYXJjX2ZsYXRfbXVzdF9zYXZlX3JlZ2lzdGVyX3ApOiBOZXcgZnVuY3Rpb24gdG8gZGVjaWRlIHdoZXRoZXIKCWEgcmVnaXN0ZXIgbXVzdCBiZSBzYXZlZC9yZXN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gcHJvbG9ndWUvZXBpbG9ndWUuCgkoc3BhcmNfZmxhdF9jb21wdXRlX2ZyYW1lX3NpemUpOiBVc2UgaXQgaW5zdGVhZCBvZiBNVVNUX1NBVkVfUkVHSVNURVIuCgoyMDAzLTEwLTEyICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvYXZyL2F2ci5jLCBjb25maWcvYXZyL2F2ci1wcm90b3MuaDogQ29udmVydCB0bwoJSVNPIEM5MCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgYW5kIGRlZmluaXRpb25zLgoJKiBjb25maWcvc2gvc2guYywgY29uZmlnL3NoL3NoLXByb3Rvcy5oOiBMaWtld2lzZS4KCjIwMDMtMTAtMTIgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYyAoKi0qLWZyZWVic2QqKTogVXNlIHRtX2RlZmluZXMgaW5zdGVhZCBvZiB0aW55Cgljb25maWcgZmlsZXMgd2hpY2ggZG8gdGhlIHNhbWUgdGhpbmcuCgkqIGNvbmZpZy9mcmVlYnNkMy5oLCBjb25maWcvZnJlZWJzZDQuaCwgY29uZmlnL2ZyZWVic2Q1LmgsCgljb25maWcvZnJlZWJzZDYuaDogUmVtb3ZlIG5vdyB1bm5lY2Vzc2FyeSBmaWxlcy4KCjIwMDMtMTAtMTIgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX3RydXRodmFsdWVfY29udmVyc2lvbik6IFdhcm4gaWYgdGhlCglhZGRyZXNzIG9mIGEgbm9uLXdlYWsgZnVuY3Rpb24gaXMgdXNlZCBhcyBhIHRydXRoIHZhbHVlLgoKMjAwMy0xMC0xMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChXT1JEX1JFR19VU0VEKTogVXNlIFNQX1JFRyBpbnN0ZWFkIG9mCglhIGxpdGVyYWwuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChSRUdOT19PS19GT1JfQkFTRV9QKTogVXNlIE1BQ19SRUcKCWluc3RlYWQgb2YgYSBsaXRlcmFsLgoKMjAwMy0xMC0xMiAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpIChGdW5jdGlvbiBBdHRyaWJ1dGVzKTogTWVudGlvbiB0aGUgZXhjZXB0aW9uYWwKCXBhdGggZm9yIG5vcmV0dXJuLW1hcmtlZCBmdW5jdGlvbnMuCgoyMDAzLTEwLTEyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9kZWNpZGVfaW5saW5pbmcpOiBGaXggdW5pbml0aWFsaXplZCB2YXJpYWJsZQoJd2FybmluZy4KCjIwMDMtMTAtMTIgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHg4Nl90aGlzX3BhcmFtZXRlcik6IEZpeCB0eXBvLgoKMjAzLTEwLTExICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBNYWtlZmlsZS5pbiAod2ViLm8pOiBOZXcuCgkqIHdlYi5jOiBOZXcgZmlsZS4KCSogcnRsLmggKHdlYl9tYWluKTogRGVjbGFyZS4KCSogdGltZXJ2YXIuZGVmIChUVl9XRUIpOiBOZXcuCgkqIHRvcGxldi5jIChkdW1wX2ZpbGVfaW5kZXgsIGR1bXBfZmlsZV9pbmZvKTogQWRkIERGSV93ZWIuCgkocmVzdF9vZl9oYW5sZV93ZWIpOiBOZXcuCgkoZmxhZ193ZWIpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGxhbmdfaW5kZXBlbmRlbnRfb3B0aW9ucyk6IEFkZCAid2ViIi4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2FsbCByZXN0X29mX2hhbmRsZV93ZWIuCgkqIGludm9rZS50ZXhpICgtZndlYik6IERvY3VtZW50LgoJKiBjb21tb24ub3B0IChmd2ViKTogTmV3LgoJKiBmbGFncy5oIChmbGFnX3dlYik6IE5ldy4KCSogb3B0cy5jIChkZWNvZGVfb3B0aW9ucyk6IFNldCBmbGFnX3dlYiBhdCAtTzMuCgoJKiBwYXNzZXMudGV4aSAod2ViIGNvbnN0cnVjdGlvbik6ICBEb2N1bWVudC4KCSogaW52b2tlLnRleGkgKC1PMyk6IERvY3VtZW50IHRoYXQgLWZ3ZWIgaXMgZW5hYmxlZC4KCgkqIHJlZ3JlbmFtZS5jIChyZWdyZW5hbWVfb3B0aW1pemUpOiBEZWFsIGJldHRlciB3aXRoIHNpdHVhdGlvbiB3aGVuCglyZXBsYWNlbWVudCBmYWlsZWQuCgoJKiBzY2hlZC1lYmIuYzogSW5jbHVkZSBwYXJhbXMuaCBhbmQgcHJvZmlsZS5oCgkoc2NoZWR1bGVfZWJicyk6ICBVc2UgdHJhY2VyIHBhcmFtZXRlcnMgdG8gZGlzY292ZXIgc3VwZXJibG9ja3MKCSogTWFrZWZpbGUuaW4gKHNjaGVkLWViYi5vKTogIEFkZCBkZXBlbmRlbmNpZXMuCgoyMDAzLTEwLTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAobmVnYXRlX21hdGhmbl9wKTogTmV3IGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyCglhIGJ1aWx0LWluIG1hdGhlbWF0aWNhbCBmdW5jdGlvbiBpcyBzaWduIHByZXNlcnZpbmcsIGYoLXgpID09IC1mKHgpLgoJQWRkIHN1cHBvcnQgZm9yIEJVSUxUX0lOX0FTSU4sIEJVSUxUX0lOX0FTSU5GIGFuZCBCVUlMVF9JTl9BU0lOTC4KCSh0cmVlX3N3YXBfb3BlcmFuZHNfcCk6IENoYW5nZSBBUEkgdG8gdGFrZSBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50CglpbmRpY2F0aW5nIHRoYXQgdGhlIHN3YXBwZWQgb3BlcmFuZHMgZXZhbHVhdGUgaW4gcmV2ZXJzZSBvcmRlci4KCUNhbm9uaWNhbGl6ZSBWQVJfREVDTHMgYW5kIFBBUk1fREVDTHMgbGFzdCBpZiB3ZSBjYW4sIGkuZS4gbmVpdGhlcgoJb3BlcmFuZCBzaWRlLWVmZmVjdHMgb3Igd2UgZG9uJ3QgY2FyZSBhYm91dCBmbGFnX2V2YWx1YXRpb25fb3JkZXIuCgkocmVvcmRlcl9vcGVyYW5kc19wKTogTmV3IGZ1bmN0aW9uIHRvIGNoZWNrIHdoZXRoZXIgaXRzIHNhZmUgdG8KCWV2YWx1YXRlIHRoZSBnaXZlbiBvcGVyYW5kcyBpbiByZXZlcnNlIG9yZGVyLgoJKG5lZ2F0ZV9leHByX3ApOiAgV2UgY2FuIGFsd2F5cyBuZWdhdGUgaW50ZWdlciBjb25zdGFudHMgdW5sZXNzCgl3ZSBob25vciAtZnRyYXB2IGFuZCB0aGUgc2lnbmVkIHR5cGUgd291bGQgb3ZlcmZsb3cuICBPbmx5IGFsbG93CgktKEEtQikgaW50byBCLUEgaWYgcmVvcmRlcl9vcGVyYW5kc19wIHNheXMgdGhhdCBpdHMgT0suICBBbGxvdwoJbmVnYXRpb24gb2YgQ09NUExFWF9DU1QgaWYgYm90aCByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgY2FuIGJlCgluZWdhdGVkLiAgQWxsb3cgbmVnYXRpb24gdGhyb3VnaCBmbG9hdGluZyBwb2ludCBleHRlbnNpb25zIGFuZAoJc2lnbi1wcmVzZXJ2aW5nIGJ1aWx0LWluIGZ1bmN0aW9ucy4KCShuZWdhdGVfZXhwcik6ICBNb3ZlIHRoZSBjb2RlIHRvIG5lZ2F0ZSBpbnRlZ2VycyBmcm9tICJmb2xkIiB0bwoJaGVyZS4gIEFsd2F5cyBuZWdhdGUgaW50ZWdlciBjb25zdGFudHMgdW5sZXNzIHdlIGhvbm9yIC1mdHJhcHYKCWFuZCB0aGUgc2lnbmVkIHR5cGUgd291bGQgb3ZlcmZsb3cuICBBbHdheXMgbmVnYXRlIHJlYWwgY29uc3RhbnRzCgl1bmxlc3Mgd2UgaG9ub3IgLWZ0cmFwcGluZy1tYXRoLiAgT25seSBjb252ZXJ0IC0oQS1CKSBpbnRvIEItQQoJaWYgYWxsb3dlZCBieSByZW9yZGVyX29wZXJhbmRzX3AuICBBZGQgc3VwcG9ydCBmb3IgQ09NUExFWF9DU1QuCglPcHRpbWl6ZSBuZWdhdGlvbiB0aHJvdWdoIGZsb2F0aW5nIHBvaW50IGV4dGVuc2lvbnMgYW5kCglzaWduLXByZXNlcnZpbmcgYnVpbHQtaW4gZnVuY3Rpb25zIChhcyBkZWZpbmVkIGJ5IG5lZ2F0ZV9tYXRoZm5fcCkuCgkoZm9sZCk6IEFkanVzdCBjYWxscyB0byB0cmVlX3N3YXBfb3BlcmFuZHNfcC4KCShmb2xkIDxORUdBVEVfRVhQUj4pOiBNb3ZlIHRoZSByZW1haW5pbmcgbmVnYXRpb24gb3B0aW1pemF0aW9ucwoJdG8gbmVnYXRlX2V4cHJfcC9uZWdhdGVfZXhwci4KCShmb2xkIDxNSU5VU19FWFBSPik6IFVzZSByZW9yZGVyX29wZXJhbmRzX3AgdG8gY2hlY2sgd2hldGhlciB3ZSdyZQoJYWxsb3dlZCB0byBjb252ZXJ0ICgtQSkgLSBCIGludG8gKC1CKSAtIEEuCgoyMDAzLTEwLTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cmNtcCk6IERlZmVuZCBhZ2FpbnN0IHRoZSBwb3NzaWJpbGl0eQoJdGhhdCBnZW5fY21wc3Ryc2kgbWF5IGZhaWw6IFN0YWJpbGl6ZSB0aGUgYXJndW1lbnQgbGlzdCBhZ2FpbnN0CglyZS1ldmFsdWF0aW9uIGFuZCBleHBhbmQgdGhlIGxpYnJhcnkgY2FsbCBkaXJlY3RseSB1c2luZyB0aGlzIHNhdmVkCglhcmd1bWVudCBsaXN0IGlmIGEgY21wc3Ryc2kgc2VxdWVuY2UgY2FuJ3QgYmUgZ2VuZXJhdGVkLgoJKGV4cGFuZF9idWlsdGluX3N0cm5jbXApOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGNtcHN0cnNpLCBtb3ZzdHJzaSk6IERpc2FibGUgd2l0aCAtT3MuCgoyMDAzLTEwLTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTIyNjAKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbik6IFNpbXBsaWZ5IGFsbCB1bmFyeQoJb3BlcmF0aW9ucyB0aHJvdWdoIENPTlNUIG5vZGVzLiAgT3B0aW1pemUgKG5lZyAocGx1cyBYIEMpKSBhcwoJKG1pbnVzIC1DIFgpIGZvciBjb25zdGFudCB2YWx1ZXMgQy4KCShzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uKTogT3B0aW1pemUgKG1pbnVzIChuZWcgWCkgQykgYXMKCShtaW51cyAtQyBYKSBmb3IgY29uc3RhbnQgdmFsdWVzIEMuCgkoc2ltcGxpZnlfcGx1c19taW51cyk6IEF2b2lkIGNyZWF0aW5nIChuZWcgKGNvbnN0IChwbHVzIFggQykpLAoJaW5zdGVhZCBjcmVhdGUgKG1pbnVzIC1DIFgpLgoKMjAwMy0xMC0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9leHByIDxQTFVTX0VYUFI+KTogTGV0IGV4cGFuZF9vcGVyYW5kcyBjYWxsCglzYWZlX2Zyb21fcCBmb3IgdXMsIG9uY2UgaXQgY2hvb3NlcyBhbiBldmFsdWF0aW9uIG9yZGVyLgoJKGV4cGFuZF9leHByIDxNVUxUX0VYUFI+KTogTGlrZXdpc2UuCgkoZXhwYW5kX2V4cHIgPE1JTl9FWFBSPiA8TUFYX0VYUFI+KTogTGlrZXdpc2UuICBJZiBleHBhbmRfb3BlcmFuZHMKCXBsYWNlcyB0aGUgc2Vjb25kIG9wZXJhbmQgaW4gInRhcmdldCIsIHN3YXAgdGhlIG9wZXJhbmRzLgoJKGRvX3N0b3JlX2ZsYWcpOiBMZXQgZXhwYW5kX29wZXJhbmRzIGNhbGwgc2FmZV9mcm9tX3AgZm9yIHVzLgoKMjAwMy0xMC0xMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vMTI1NDQKCSogZnVuY3Rpb24uYyAocHV0X3Zhcl9pbnRvX3N0YWNrKTogRG9uJ3QgZ2VuZXJhdGUgQUREUkVTU09GcwoJZm9yIERFQ0xfTk9OTE9DQUwgZGVjbHMuCgoyMDAzLTEwLTExICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZXhwci5jOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgkqIGZpbmFsLmM6IExpa2V3aXNlLgoJKiBvcHRhYnMuYzogTGlrZXdpc2UuCgkqIHNjaGVkLWRlcHMuYzogTGlrZXdpc2UuCgkqIHNkYm91dC5jOiBMaWtld2lzZS4KClNhdCBPY3QgMTEgMTI6MjQ6MjMgQ0VTVCAyMDAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB2YXJhc20uYyAobm90aWNlX2dsb2JhbF9zeW1ib2wpOiAgRml4IGhhbmRsaW5nIG9mIHZhcmlhYmxlczsgYXZvaWQKCXJlLWNvbXB1dGluZyBvZiB2YXJpYWJsZS4KCjIwMDMtMTAtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfcmV0dXJuX2luX21lbW9yeSk6IFJlbmFtZSBmcm9tCglyZXR1cm5faW5fbWVtb3J5LCBtYWtlIHN0YXRpYywgY2hhbmdlIHNpZ25hdHVyZSB0byBtYXRjaCB0YXJnZXQgaG9vay4KCShhbHBoYV9zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogTWFrZSBzdGF0aWMsIGNoYW5nZSBzaWduYXR1cmUgdG8KCW1hdGNoIHRhcmdldCBob29rLCBhZGQgY29kZSBmb3Igdm1zIGFuZCB1bmljb3MuCgkoVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fQVJHUywgVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fUkVUVVJOLAoJVEFSR0VUX1BST01PVEVfUFJPVE9UWVBFUywgVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgsCglUQVJHRVRfUkVUVVJOX0lOX01FTU9SWSwgVEFSR0VUX1NFVFVQX0lOQ09NSU5HX1ZBUkFSR1MsCglUQVJHRVRfU1RSSUNUX0FSR1VNRU5UX05BTUlORywKCVRBUkdFVF9QUkVURU5EX09VVEdPSU5HX1ZBUkFSR1NfTkFNRUQpOiBOZXcuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS1wcm90b3MuaDogVXBkYXRlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuaCAoUFJPTU9URV9GVU5DVElPTl9BUkdTLAoJUFJPTU9URV9GVU5DVElPTl9SRVRVUk4sIFJFVFVSTl9JTl9NRU1PUlksCglTRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogUmVtb3ZlLgoJKiBjb25maWcvYWxwaGEvdW5pY29zbWsuaCAoU0VUVVBfSU5DT01JTkdfVkFSQVJHUyk6IFJlbW92ZS4KCSogY29uZmlnL2FscGhhL3Ztcy5oIChTRVRVUF9JTkNPTUlOR19WQVJBUkdTKTogUmVtb3ZlLgoKMjAwMy0xMC0xMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9yZWdub19jbGFzcyk6IEhhbmRsZSBJV01NWFRfR1JfUkVHUy4KCjIwMDMtMTAtMTEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvbTY4ay9sYjFzZjY4LmFzbTogRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoJKiBjb25maWcvbTY4ay9tNjhrLmM6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrLm1kOiBMaWtld2lzZS4KCjIwMDMtMTAtMTEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fbWVtY3B5KTogT3B0aW1pemUgY2FzZSB3aGVuIHRoZSB0d28KCXBvaW50ZXIgYXJndW1lbnRzIGFyZSB0aGUgZXF1YWwsIG5vbi12b2xhdGlsZSBhbmQgc2lkZS1lZmZlY3QgZnJlZS4KCShleHBhbmRfYnVpbHRpbl9tZW1wY3B5KTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fbWVtbW92ZSk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX3N0cmNweSk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX21lbWNtcCk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX3N0cmNtcCk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX3N0cm5jbXApOiBMaWtld2lzZS4KCjIwMDMtMTAtMTEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29tYmluZS5jIChhcHBseV9kaXN0cmlidXRpdmVfbGF3KTogRW5hYmxlICJkaXN0cmlidXRpdmUiIGZsb2F0aW5nCglwb2ludCBvcHRpbWl6YXRpb25zIHdpdGggLWZ1bnNhZmUtbWF0aC1vcHRpbWl6YXRpb25zLgoKMjAwMy0xMC0xMSAgQW5kcmV3IFBpbnNraSA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGdlbm1vZGVzLmMgKGVtaXRfbW9kZV9tYXNrKSBDaGFuZ2UgTUFTSyB0byBNT0RFX01BU0suCgoyMDAzLTEwLTExICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL202OGsvbTY4ay1wcm90b3MuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yCglmaW5hbGl6ZV9waWMuCgoyMDAzLTEwLTExICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL202OGsvbTY4ay5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDMtMTAtMTEgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGstcHJvdG9zLmggKHVzZV9yZXR1cm5faW5zbik6IENoYW5nZSByZXR1cm4gdHlwZSBmcm9tCglpbnQgdG8gYm9vbC4KCSogY29uZmlnL202OGsvbTY4ay5jIChzdHJ1Y3QgbTY4a19mcmFtZSk6IEFkZCBmdW5jZGVmX25vIG1lbWJlci4KCShjdXJyZW50X2ZyYW1lKTogTmV3IGdsb2JhbCB2YXIuCgkobTY4a19jb21wdXRlX2ZyYW1lX2xheW91dCk6IENhY2hlIGNvbXB1dGF0aW9ucyBpbiBjdXJyZW50X2ZyYW1lLgoJKG02OGtfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBVc2UgdmFsdWVzIGZyb20gY3VycmVudF9mcmFtZQoJaW5zdGVhZCBvZiByZWNvbXB1dGluZyB0aGVtLgoJKHVzZV9yZXR1cm5faW5zbik6IExpa2V3aXNlLgoJKG02OGtfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogTGlrZXdpc2UuCgkobTY4a19vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5oIChUQVJHRVRfQ1BVX0NQUF9QUkVERUZJTkVTKTogRm9sZCBfX1BJQ19fIGhhbmRsaW5nCglpbnNpZGUgdGhlIGJsb2NrIGZvciBfX3BpY19fLgoKMjAwMy0xMC0xMSAgUGV0ZXIgQmFyYWRhIDxwZXRlckBiYXJhZGFzLm9yZz4KCSAgICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfZnJhbWUpOiBNb3ZlIGJlZm9yZSBwcm90b3MgcmVmZXJlbmNpbmcgaXQuCgkobTY4a19zYXZlX3JlZyk6IEFkZCBib29sZWFuIHBhcmFtZXRlciBgaW50ZXJydXB0X2hhbmRsZXInLgoJKG02OGtfaW50ZXJydXB0X2Z1bmN0aW9uX3ApOiBOZXcgZnVuY3Rpb24uCgkobTY4a19oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSk6IERpdHRvLgoJKG02OGtfY29tcHV0ZV9mcmFtZV9sYXlvdXQpOiBEaXR0by4KCShtNjhrX2F0dHJpYnV0ZV90YWJsZSk6IERlZmluZSBiYWNrLWVuZCBzcGVjaWZpYyBhdHRyaWJ1dGVzLgoJKG02OGtfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogRW1pdCBSVEUgaW5zdHJ1Y3Rpb24gZm9yIGludGVycnVwdAoJZnVuY3Rpb25zLgoKMjAwMy0xMC0xMSAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvdC11Y2xpbnV4OiBOZXcgdGFyZ2V0IE1ha2VmaWxlIGZyYWdtZW50LgoJKiBjb25maWcvbTY4ay91Y2xpbnV4Lmg6IE5ldyB0YXJnZXQgbWFjcm8gZmlsZS4KCSogY29uZmlnLmdjYyAobTY4ay0qLXVjbGludXgpOiBOZXcgdGFyZ2V0IGRlZmluaXRpb24uCgoyMDAzLTEwLTEwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGJ1aWx0aW5fbWF0aGZuX2NvZGUpOiBHZW5lcmFsaXplIHRvIGNoZWNrIHdoZXRoZXIKCXRoZSBjYWxsIGlzIHRvIGFueSBidWlsdC1pbiBmdW5jdGlvbiBieSBjb21wYXJpbmcgdGhlIGNhbGwncwoJYXJndW1lbnQgbGlzdCBhZ2FpbnN0IHRoZSBidWlsdGluIGRlY2wncyBmdW5jdGlvbiB0eXBlLgoKMjAwMy0xMC0xMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjc2UuYyAoY29uc3RhbnRfcG9vbF9lbnRyaWVzX3JlZ2Nvc3QpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlIHRvCglob2xkIHRoZSByZWdpc3RlciBjb3N0IGNvbXBvbmVudCBvZiBjb25zdGFudF9wb29sX2VudHJpZXNfY29zdC4KCShmb2xkX3J0eCk6IENhbGN1bGF0ZSBjb25zdGFudF9wb29sX2VudHJpZXNfcmVnY29zdCBhdCB0aGUgc2FtZQoJdGltZSBhcyBjb25zdGFudF9wb29sX2VudHJpZXNfY29zdC4KCShjc2VfaW5zbik6IFNldCBib3RoIHNyY19mb2xkZWRfY29zdCBhbmQgc3JjX2ZvbGRlZF9yZWdjb3N0IGZyb20KCWNvbnN0YW50X3Bvb2xfZW50cmllc19jb3N0IGFuZCBjb25zdGFudF9wb29sX2VudHJpZXNfcmVnY29zdC4KCShjc2VfbWFpbik6IEluaXRpYWxpemUgY29uc3RhbnRfcG9vbF9lbnRyaWVzX3JlZ2Nvc3QgdG8gemVyby4KCgkqIG9wdGFicy5jIChleHBhbmRfdW5vcCk6IEF0dGFjaCBhIFJFR19FUVVBTCBub3RlIGRlc2NyaWJpbmcKCXRoZSBzZW1hbnRpY3Mgb2YgdGhlIHNlcXVlbmNlIG9mIGJpdCBvcGVyYXRpb25zIHVzZWQgdG8gbmVnYXRlCglhIGZsb2F0aW5nLXBvaW50IHZhbHVlLgoJKGV4cGFuZF9hYnNfbm9qdW1wKTogTGlrZXdpc2UgYXR0YWNoIGEgUkVHX0VRVUFMIG5vdGUgZGVzY3JpYmluZwoJdGhlIHNlbWFudGljcyBvZiB0aGUgYml0IG9wZXJhdGlvbnMgdXNlZCB0byBhYnMgYSBmbG9hdGluZyBwb2ludAoJdmFsdWUuCgoyMDAzLTEwLTExICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgkgICAgUGF1bCBEYWxlICA8cGF1bGlAc25hcGdlYXIuY29tPgoKCSogY29uZmlnL202OGsvbGIxc2Y2OC5hc206IEFkZCBfX1BJQ19fIGFuZCBfX0lEX1NIQVJFRF9MSUJSQVJZX18KCXN1cHBvcnQuCgkqIGNvbmZpZy9tNjhrL202OGstbm9uZS5oIChBU01fU1BFQyk6IFBhc3MgLS1wY3JlbCB0byBhc3NlbWJsZXIgb24KCS1mcGljLCAtZlBJQywgLW1zZXAtZGF0YSBhbmQgLW1pZC1zaGFyZWQtbGlicmFyeS4KCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX2xpYnJhcnlfaWRfc3RyaW5nKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShvdmVycmlkZV9vcHRpb25zKTogQWRkIC1tc2VwLWRhdGEgYW5kIC1tc2hhcmVkLWxpYnJhcnktaWQgc3VwcG9ydC4KCShtNjhrX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IEdlbmVyYXRlIGNvZGUgdG8gbG9hZCBBNSBmb3IKCVRBUkdFVF9JRF9TSEFSRURfTElCUkFSWSBhbmQgVEFSR0VUX1NFUF9EQVRBLgoJKG02OGtfb3V0cHV0X21pX3RodW5rKTogRW1pdCBpbmRpcmVjdCBqdW1wIG9uIFRBUkdFVF9JRF9TSEFSRURfTElCUkFSWS4KCShtNjhrX291dHB1dF9waWNfY2FsbCk6IE5ldyBmdW5jdGlvbi4KCSogZ2NjL2NvbmZpZy9tNjhrL202OGsuaCAoVEFSR0VUX1NFUF9EQVRBKTogTmV3IHRhcmdldCBmbGFnLgoJKFRBUkdFVF9JRF9TSEFSRURfTElCUkFSWSk6IERpdHRvLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBzd2l0Y2hlcyBmb3IgLW1pZC1zaGFyZWQtbGlicmFyeSBhbmQgLW1zZXAtZGF0YS4KCSogZ2NjL2NvbmZpZy9tNjhrL202OGsubWQgKGNhbGwpOiBDYWxsIG02OGtfb3V0cHV0X3BpY19jYWxsKCkuCgkoY2FsbF92YWx1ZSk6IExpa2V3aXNlLgoKMjAwMy0xMC0xMCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdlbmdlbnJ0bC5jIChmaW5kX2Zvcm1hdHMsIGdlbmhlYWRlcik6IE1ha2UgaSBhbiB1bnNpZ25lZAoJaW50LCByZW1vdmUgY2FzdCBvZiBOVU1fUlRYX0NPREUuCgkqIG1hY2htb2RlLmg6IE1ha2UgdGhlIEhBVkVfTUFDSElORV9NT0RFUyAjaWZkZWYgZW5jb21wYXNzIHRoZQoJZW50aXJlIGZpbGUuICBSZW1vdmUgdGhlICNpZnMgb24gR0VUX01PREVfTUFTSyBldGMgYW5kCglHRVRfTU9ERV9XSURFUl9NT0RFIGV0Yy4KCjIwMDMtMTAtMTAgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogbGNtLmMgKG9wdGltaXplX21vZGVfc3dpdGNoaW5nKTogQ2hhbmdlIE5PUk1BTF9NT0RFCgl0byBNT0RFX0VOVFJZIGFuZCBNT0RFX0VYSVQuIEFkZCBNT0RFX0FGVEVSIGZvciBpbnNucwoJdGhhdCBzZXQgbW9kZS4KCSogY29uZmlnL3NoL3NoLmggKE1PREVfRU5UUlkpOiBOZXcgbWFjcm8uCgkoTU9ERV9FWElUKTogRGl0dG8uCgkoTU9ERV9BRlRFUik6IERpdHRvLgoJKiBjb25maWcvc2gvc2gubWQ6IENoYW5nZSBmb3IgTU9ERV9BRlRFUi4gQWRkCglmcF9zZXQgYXR0cmlidXRlLgoJKiBkb2MvdG0udGV4aTogRG9jdW1lbnQgTU9ERV9BRlRFUiwgTU9ERV9FTlRSWSwgYW5kIE1PREVfRVhJVC4KCjIwMDMtMTAtMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnZW5tb2Rlcy5jLCBtb2RlLWNsYXNzZXMuZGVmOiBOZXcgZmlsZXMuCgkqIG1hY2htb2RlLmRlZjogUmV3cml0dGVuIHRvIGdlbm1vZGVzLmMgaW50ZXJmYWNlLgoJKiBNYWtlZmlsZS5pbiAoZXh0cmFfbW9kZXNfZmlsZSk6IE5ldyBzdWJzdGl0dXRpb24gdmFyaWFibGUuCgkoTUFDSE1PREVfSCk6IE5vIGxvbmdlciBpbmNsdWRlcyBtYWNobW9kZS5kZWYgb3IKCUBleHRyYV9tb2Rlc19maWxlQDsgaW5zdGVhZCwgbW9kZS1jbGFzc2VzLmRlZiBhbmQgaW5zbi1tb2Rlcy5oLgoJKEJVSUxEX1JUTCk6IEFkZCAkKEJVSUxEX1BSRUZJWClpbnNuLW1vZGVzLm8uCgkoT0JKUy1jb21tb24pOiBBZGQgaW5zbi1tb2Rlcy5vLgoJKFNUQUdFU1RVRkYpOiBBZGQgaW5zbi1tb2Rlcy5jLCBpbnNuLW1vZGVzLmgsIHMtbW9kZXMsIGFuZAoJZ2VubW9kZXMkKGJ1aWxkX2V4ZWV4dCkuCgkoaW5zbi1tb2Rlcy5vLCBpbnNuLW1vZGVzLmMsIGluc24tbW9kZXMuaCwgcy1tb2RlcywgZ2VubW9kZXMubywKCWdlbm1vZGVzJChidWlsZF9leGVleHQpLCAkKEJVSUxEX1BSRUZJWF8xKWluc24tbW9kZXMubyk6IE5ldyB0YXJnZXRzLgoJKHMtZ2VucnRsKTogRG9uJ3QgZGVwZW5kIG9uICQoUlRMX0JBU0VfSCkuCgkoZ2VuZ2VucnRsLm8pOiBEb24ndCBkZXBlbmQgb24gY29yZXR5cGVzLmgsICQoR1RNX0gpLCByZWFsLmgsCglvciAkKFJUTF9CQVNFX0gpOyBqdXN0IHJ0bC5kZWYuCgkqIGdlbmdlbnJ0bC5jOiBEb24ndCBpbmNsdWRlIGNvcmV0eXBlcy5oLCB0bS5oLCBydGwuaCwgb3IKCXJlYWwuaC4gIEdpdmUgZmFrZSBkZWZpbml0aW9uIG9mIENPTlNUX0RPVUJMRV9GT1JNQVQgYW5kCglzdWJzdGl0dXRlIGRlZmluaXRpb24gb2YgTlVNX1JUWF9DT0RFLiAgQWRkIGNhc3RzIHRvIGF2b2lkCgl3YXJuaW5ncy4KCSogbWFjaG1vZGUuaDogSW5jbHVkZSBpbnNuLW1vZGVzLmgsIG5vdCBtYWNobW9kZS5kZWYuICBJbmNsdWRlCgltb2RlLWNsYXNzZXMuZGVmIHRvIGRlZmluZSBlbnVtIG1vZGVfY2xhc3MuICBUd2VhayBkZWZpbml0aW9ucwoJb2YgR0VUX01PREVfQ0xBU1MsIEdFVF9NT0RFX1NJWkUsIEdFVF9NT0RFX0JJVFNJWkUsIEdFVF9NT0RFX01BU0ssCglHRVRfTU9ERV9JTk5FUiwgR0VUX01PREVfV0lERVJfTU9ERSwgR0VUX0NMQVNTX05BUlJPV0VTVF9NT0RFLgoJKGlubmVyX21vZGVfYXJyYXkpOiBSZW5hbWVkIG1vZGVfaW5uZXIuCgkobW9kZV9iYXNlX2FsaWduKTogTmV3LgoJKiBydGwuYyAobW9kZV9uYW1lLCBtb2RlX2NsYXNzLCBtb2RlX2JpdHNpemUsIG1vZGVfc2l6ZSwKCW1vZGVfdW5pdF9zaXplLCBtb2RlX3dpZGVyX21vZGUsIG1vZGVfbWFza19hcnJheSwKCWlubmVyX21vZGVfYXJyYXksIGNsYXNzX25hcnJvd2VzdF9tb2RlKTogRGVsZXRlIGRlZmluaXRpb25zLgoJKiBzdG9yLWxheW91dC5jIChnZXRfbW9kZV9hbGlnbm1lbnQpOiBVc2UgbW9kZV9iYXNlX2FsaWduLgoJKiByZWFsLmg6IFVzZSBNSU5fTU9ERV9GTE9BVCBhbmQgTUFYX01PREVfRkxPQVQsIG5vdCBRRm1vZGUKCWFuZCBURm1vZGUsIGluIHJlYWxfZm9ybWF0X2Zvcl9tb2RlIGFuZCBSRUFMX01PREVfRk9STUFULgoKCSogY29uZmlnL2lwMmsvaXAyay5oLCBjb25maWcvaXEyMDAwL2lxMjAwMC5oOgoJTm8gbmVlZCB0byBkZWZpbmUgQklUU19QRVJfVU5JVC4KCjIwMDMtMTAtMTAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfdm1zX2luaXRfbGliZnVuY3MpOiBOZXcgZnVuY3Rpb24uCgkoaWE2NF9vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBPbmx5IHdyaXRlIC5wcm9sb2d1ZSBpZiAtLXdpdGgtZ251LWFzLgoJKGlhNjRfaW5pdGlhbGl6ZV90cmFtcG9saW5lKTogSWYgbm90IHVzaW5nIEdBUywgZGVjbGFyZSB0cmFtcG9saW5lCglhcyBnbG9iYWwuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQVNNX0FQUF9PTiwgQVNNX0FQUF9PRkYpOiBBZGQgdmVycyBmb3Igbm90IEdBUy4KCShBU01fT1VUUFVUX0RFQlVHX0xBQkVMKTogTGlrZXdpc2UuCgoJKiBzdG9yLWxheW91dC5jIChjb21wdXRlX3JlY29yZF9tb2RlKTogRG9uJ3QgZm9yY2UgQkxLbW9kZSBpZgoJZmllbGQgaXMgemVyby1sZW5ndGggQkxLbW9kZS4KCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBDT01QT05FTlRfUkVGKTogSGFuZGxlIGNhc2Ugb2YgQkxLbW9kZQoJemVyby1zaXplIHJlZmVyZW5jZXMuCgoJKiBjb21iaW5lLmMgKGRpc3RyaWJ1dGVfbGlua3MpOiBQcm9wZXJseSB0ZXN0IGZvciBSRUcgYmVpbmcgc2V0LgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2V4cGFuZF9ibG9ja19tb2RlKTogRG9uJ3QgdXNlCglnZW5fbG93cGFydCBhbmQgY29tcGFueSBleGNlcHQgZm9yIFJFRy4KCjIwMDMtMTAtMTAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYTY0LWhwdXguaCAoTElOS19TUEVDKTogVXNlIGAteicgb3B0aW9uIHdpdGggSFAgbGQuCgoyMDAzLTEwLTEwICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2MgKG1pcHMqLSotbmV0YnNkKik6IFJlbW92ZSBjb250ZW50LWZyZWUgbGluZS4KCjIwMDMtMTAtMTAgIEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgPGhlcm1hbnRlbmJydWdnZUBob21lLm5sPgoKCSogZ2Nvdi1pby5oOiBDaGVjayBCSVRTX1BFUl9VTklUIHdoZW4gZGVmaW5pbmcgZ2Nvdl91bnNpZ25lZF90LAoJZ2Nvdl9wb3NpdGlvbl90IGFuZCBnY292X3R5cGUuCgoyMDAzLTEwLTA5ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoSEFWRV9BU19UTFMpOiBBZGQgc2gtKi0qIGFuZCBzaFszNF0qLSotKiBjYXNlcy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0xMC0wOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoZGVmaW5lX2FzbV9hdHRyaWJ1dGVzKTogU3BlY2lmeQoJdGhlIGxlbmd0aCBvZiBhbiBhc20gaW5zbiBtb3JlIHByZWNpc2VseS4KCjIwMDMtMTAtMDkgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnL21pcHMvaXJpczYuaCAoU1VCVEFSR0VUX0NQUF9TUEVDKTogRGVmaW5lLgoKMjAwMy0xMC0wOSAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmMgKHh0ZW5zYV9kYnhfcmVnaXN0ZXJfbnVtYmVyKTogQ2hhbmdlIGZpcnN0CglGUCByZWdpc3RlciBudW1iZXIgdG8gNDggYW5kIE1BQzE2IGFjY3VtdWxhdG9yIHRvIDB4MjEwLgoKMjAwMy0xMC0wOSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBSZW1vdmUgcmVkdW5kYW50IHRocmVhZF9maWxlIHNldHRpbmcgY2xhdXNlcyBmb3IKCXZhcmlvdXMgKi0qLWxpbnV4KiB0YXJnZXRzLgoKMjAwMy0xMC0wOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoZGVmaW5lX2FzbV9hdHRyaWJ1dGVzKTogTmV3LgoKMjAwMy0xMC0wOSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBvcHRhYnMuYyAocHJlcGFyZV9mbG9hdF9saWJfY21wKTogQWx3YXlzIGF0dGFjaCBhIFJFR19FUVVBTCBub3RlCgl0byB0aGUgY29tcGFyaXNvbiwgYXMgZW1pdF9saWJjYWxsX2Jsb2NrIGNhbGxzIGNvcHlfcnR4IG9uIGVxdWl2LgoKMjAwMy0xMC0wOSAgRG9yaXQgTmFpc2hsb3MgIDxkb3JpdEBpbC5pYm0uY29tPgoKCSogaGFpZmEtc2NoZWQuYyAob2tfZm9yX2Vhcmx5X3NjaGVkdWxlKTogTmV3IGZ1bmN0aW9uLgoJKGVhcmx5X3F1ZXVlX3RvX3JlYWR5KTogTmV3IGZ1bmN0aW9uLgoJKHNjaGVkdWxlX2Jsb2NrKTogQWxsb3cgZWFybHkgcmVtb3ZhbCBvZiBpbnNucyBmcm9tIFEuCgkoc2NoZWR1bGVfaW5zbik6IFVwZGF0ZSBJTlNOX1RJQ0sgaW4gY2FzZSBvZiBwcmVtYXR1cmUKCWlzc3VlLgoJKiBjb21tb24ub3B0IChzY2hlZF9zdGFsbGVkX2luc25zKTogTmV3IGZsYWcuCgkoc2NoZWRfc3RhbGxlZF9pbnNuc19kZXApOiBOZXcgZmxhZy4KCSogZmxhZ3MuaDogU2FtZSBhYm92ZSBmbGFncy4KCSogb3B0cy5jOiBTYW1lIGFzIGFib3ZlLgoJKiB0b3BsZXYuYzogU2FtZSBhcyBhYm92ZS4KCSogdGFyZ2V0LmggKHRhcmdldG0uc2NoZWQuaXNfY29zdGx5X2RlcGVuZGVuY2UpOiBOZXcKCWhvb2suCgkqIHRhcmdldC1kZWYuaDogU2FtZSBhcyBhYm92ZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogKHJzNjAwMF9zY2hlZF9jb3N0bHlfZGVwKToKCVN1cHBvcnQgbmV3IGZsYWcgLW1zY2hlZC1jb3N0bHktZGVwLgoJKERFRkFVTFRfU0NIRURfQ09TVExZX0RFUCk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzoKCShyczYwMDBfaXNfY29zdGx5X2RlcGVuZGVuY2UpOiBOZXcgZnVuY3Rpb24uCgkoaXNfbG9hZF9pbnNuLCBpc19zdG9yZV9pbnNuKTogTmV3IGZ1bmN0aW9ucy4KCShpc19sb2FkX2luc24xLCBpc19zdG9yZV9pbnNuMSwgaXNfbWVtX3JlZik6IE5ldwoJZnVuY3Rpb25zLgoJKiBkb2MvaW52b2tlLnRleGkgKC1mc2NoZWQtc3RhbGxlZC1pbnNucy1kZXApCgkoLWZzY2hlZC1zdGFsbGVkLWluc25zLCAtbXNjaGVkLWNvc3RseS1kZXApOiBEb2N1bWVudAoJb3B0aW9ucy4KCSogZG9jL3RtLnRleGkgKGlzX2Nvc3RseV9kZXBlbmRlbmNlKTogRGVmaW5lIG5ldwoJc2NoZWR1bGVyIHRhcmdldCBob29rLgoKMjAwMy0xMC0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzYzOTIKCSogYy1jb21tb24uYyAoY19idWlsZF9xdWFsaWZpZWRfdHlwZSk6IExvb2sgdGhyb3VnaCBhcnJheXMgZmlyc3QuCgkoY19hcHBseV90eXBlX3F1YWxzX3RvX2RlY2wpOiBMb29rIHRocm91Z2ggYXJyYXlzLgoKCSogYy1jb21tb24uYyAoY19hcHBseV90eXBlX3F1YWxzX3RvX2RlY2wpOiBVbnNldCBUUkVFX1JFQURPTkxZIGZvcgoJdHlwZXMgd2l0aCBjb25zdHJ1Y3RvcnMuCgoJKiBjb3ZlcmFnZS5jIChidWlsZF9jdHJfaW5mb192YWx1ZSk6IFVzZSBidWlsZF9kZWNsIHRvIG1ha2UgYQoJVkFSX0RFQ0wuCgkoY3JlYXRlX2NvdmVyYWdlKTogTGlrZXdpc2UuCgoJKiBzdG10LmMgKHJlc29sdmVfYXNtX29wZXJhbmRfbmFtZXMpOiBDYWxsIGNoZWNrX3VuaXF1ZV9vcGVyYW5kX25hbWVzCgloZXJlLgoJKGV4cGFuZF9hc21fb3BlcmFuZHMpOiBOb3QgaGVyZS4KCShwYXJzZV9pbnB1dF9jb25zdHJhaW50KTogTm8gbG9uZ2VyIHN0YXRpYy4KCSogdHJlZS5oOiBEZWNsYXJlIGl0LgoKMjAwMy0xMC0wOCAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvdC1saW51eCAoU0hMSUJfTElOSyk6IE92ZXJyaWRlIHRvIHVzZSBhIGxpbmtlciBzY3JpcHQKCWxpYmdjY19zLnNvLgoJKFNITElCX0lOU1RBTEwpOiBMaWtld2lzZS4KCjIwMDMtMTAtMDggIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aTogUmVtb3ZlIHJlZmVyZW5jZSB0byByZW1vdmVkICdwdGhyZWFkcycgdGhyZWFkCglvcHRpb24uCgoyMDAzLTEwLTA4ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoImFic3NpMl9pc2VsIik6IEFkZCBlYXJseSBjbG9iYmVyIHRvCglvcGVyYW5kIDIuCgoyMDAzLTEwLTA4ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2M6IERvbid0IGFjY2VwdCAtLWVuYWJsZS10aHJlYWRzPXB0aHJlYWRzLiAgQ2xlYW4KCXVwIHJlbGF0ZWQgY2FzZSBzdGF0ZW1lbnRzLgoJKiBjb25maWd1cmUuaW46IERvbid0IGFjY2VwdCAtLWVuYWJsZS10aHJlYWRzPXB0aHJlYWRzLAoJZGVjb3NmMSwgbWFjaCwgb3Igb3MyIChub25lIG9mIHdoaWNoIHdvcmsgYW55d2F5KS4gIEFscGhhYmV0aXplCglzdXBwb3J0ZWQgdGhyZWFkIGZpbGVzIGluIGNhc2UgY2xhdXNlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTEwLTA4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKHBhZF90b19hcmdfYWxpZ25tZW50KTogTW92ZSAnYm91bmRhcnlfaW5fYnl0ZXMnCglkZWZpbml0aW9uIHRvIGFib3ZlIFNQQVJDX1NUQUNLX0JPVU5EQVJZX0hBQ0suCgoyMDAzLTEwLTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2NfcG9zdGZpeF9leHByZXNzaW9uKQoJPENPTVBPVU5EX0xJVEVSQUxfRVhQUj46IEZpeCB0aGlua28uCgoyMDAzLTEwLTA4ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIG1rbGliZ2NjLmluOiBEb24ndCBoaWRlIHVuZGVmaW5lZCBvciB0eXBlbGVzcyBzeW1ib2xzLgoKMjAwMy0xMC0wOCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBvcHRpbWl6YXRpb24vMTIxNDIKCSogY3NlLmMgKGNvdW50X3JlZ191c2FnZSk6IEluIGEgU0VUIHdpdGggYSBSRUcgU0VUX0RFU1QsIGNvdW50IHRoZQoJdXNlcyBvZiB0aGUgcmVnaXN0ZXIgaW4gdGhlIFNFVF9TUkMuICBSZW1vdmUgdW5uZWNlc3NhcnkgYXJndW1lbnQuCgkqIHBhLmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBCZWZvcmUgcmVsb2FkLCB1c2UgYSBzY3JhdGNoIHJlZ2lzdGVyCglmb3IgdGhlIGludGVybWVkaWF0ZSByZXN1bHQgaW4gbG9hZGluZyB0aGUgYWRkcmVzcyBvZiBhIFNZTUJPTF9SRUYuCglTZXQgdGhlIE1FTV9OT1RSQVBfUCBmbGFnIGZvciB0aGUgTUVNLiAgQWRkIGEgUkVHX0VRVUFMIHRvIHRoZSBpbnNuCgl3aGljaCBsb2FkcyB0aGUgU1lNQk9MX1JFRiBhZGRyZXNzLgoKMjAwMy0xMC0wOCAgVGltbyBLb2trb25lbiAgPHRqa29AaWtpLmZpPgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgYm9vdHN0cmFwLzEyNDkwCgkqIHNjYW4tZGVjbHMuYyAoTUFYX0VYVEVSTl9DX0JSQUNFUyk6IE5ldyBwcmVwcm9jZXNzb3IgY29uc3RhbnQKCXRvIGRlZmluZSB0aGUgc2l6ZSBvZiB0aGUgZXh0ZXJuX0NfYnJhY2VzIGFycmF5LiAgU2V0IGl0IHRvIDIwMC4KCShzY2FuX2RlY2xzKTogQWJvcnQgd2hlbiBleHRlcm5fQ19icmFjZXNfbGVuZ3RoIGlzIG91dC1vZi1ib3VuZHMuCgoyMDAzLTEwLTA4ICBDYXJsbyBXb29kICA8Y2FybG9AYWxpbm9lLmNvbT4KCgkqIE1ha2VmaWxlLmluIChnZW5ndHlwZS1sZXguYyk6IGZsZXggMi41LjRbYV0gZG9lc24ndCB1bmRlcnN0YW5kCglhIHNwYWNlIGFmdGVyIHRoZSAtbyBvcHRpb24uICBmbGV4IDIuNS4zMSB1bmRlcnN0YW5kcyBib3RoLCB3aXRoCglhbmQgd2l0aG91dCB0aGUgc3BhY2UuIFJlbW92ZWQgdGhhdCBzcGFjZS4KCjIwMDMtMTAtMDggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19mcmFtZV9pbmZvKTogQWRkIGNwcmVzdG9yZV9zaXplIGZpZWxkLgoJKGNvbXB1dGVfZnJhbWVfc2l6ZSk6IEluaXRpYWxpemUgaXQuICBSZW1vdmUgdGhlIC5jcHJlc3RvcmUgc2xvdAoJZnJvbSBhcmdzX3NpemUuCgkobWlwc19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBTaW1wbGlmeSBhY2NvcmRpbmdseS4KCShtaXBzX2RlYnVnZ2VyX29mZnNldCk6IENoYW5nZSB0aGUgbWlwczE2IGZyYW1lIHBvaW50ZXIgb2Zmc2V0IGZyb20KCWN1cnJlbnRfZnVuY3Rpb25fb3V0Z29pbmdfYXJncyB0byBjZnVuLT5tYWNoaW5lLT5mcmFtZS5hcmdzX3NpemUuCgkobWlwc19pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IExpa2V3aXNlLgoJKG1pcHNfZXhwYW5kX3Byb2xvZ3VlKTogTGlrZXdpc2UuCgkobWlwc19leHBhbmRfZXBpbG9ndWUpOiBMaWtld2lzZS4KCjIwMDMtMTAtMDggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoRVhUUkFfQ09OU1RSQUlOVCk6IEFkZCAnVycgY29uc3RyYWludC4KCShFWFRSQV9NRU1PUllfQ09OU1RSQUlOVCk6IERlZmluZS4KCShDQU5fRUxJTUlOQVRFKTogUmVtb3ZlIGx3dSB3b3JrYXJvdW5kLgoJKiBjb25maWcvbWlwcy9taXBzLm1kICgqemVyb19leHRlbmRzaWRpMl9tZW0pOiBFbmFibGUgZm9yIG1pcHMxNiB0b28uCglVc2UgYSAnVycgY29uc3RyYWludCBmb3IgdGhlIHNvdXJjZSBvcGVyYW5kLgoKMjAwMy0xMC0wOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGdlbm9waW5pdC5jIChtYWluKTogT3V0cHV0IGNvZGUgdG8gZGVjbGFyZSB1bmRlZmluZWQKCXZhcmlhYmxlcy4KCjIwMDMtMTAtMDcgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBnZW5ndHlwZS1sZXgubDogUmVtb3ZlIC1XdHJhZGl0aW9uYWwgY3J1ZnQuCgkqIE1ha2VmaWxlLmluIChnZW5ndHlwZS1sZXguYyk6IExpa2V3aXNlLgoKMjAwMy0xMC0wNyAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogY2ZnbG9vcG1hbmlwLmMgKGZpeF9pcnJlZHVjaWJsZV9sb29wcyk6IEluaXRpYWxpemUgZSBjb3JyZWN0bHkuCgoyMDAzLTEwLTA3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMTI1MTkKCSogYy1zZW1hbnRpY3MuYyAoZ2VucnRsX2NsZWFudXBfc3RtdCk6IElnbm9yZSB0aGUgQ0xFQU5VUF9ERUNMIGlmCglpdCBpc24ndCBhIGRlY2wuCgoyMDAzLTEwLTA3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGdjYy5jIChjcHBfb3B0aW9ucyk6IE9ubHkgcGFzcyAtZndvcmtpbmctZGlyZWN0b3J5IGZvciAtZyogaWYKCW5vdCBvdmVycmlkZGVuLgoJRml4ZXMgUFIgYm9vdHN0cmFwLzEyMTczLgoKMjAwMy0xMC0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVycm9ycy5jOiBEb24ndCBpbmNsdWRlIGNvcmV0eXBlcy5oIG9yIHRtLmguCgkodHJpbV9maWxlbmFtZSk6IFVzZSBJU19ESVJfU0VQQVJBVE9SLgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIGRlcGVuZGVuY2llcyBvZiBlcnJvcnMubyBhbmQKCSQoQlVJTERfUFJFRklYXzEpZXJyb3JzLm8uCgoyMDAzLTEwLTA3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKHBhZF90b19hcmdfYWxpZ25tZW50KTogVGFrZSBTVEFDS19QT0lOVEVSX09GRlNFVCBpbnRvCglhY2NvdW50CXdoZW4gYWxpZ25pbmcgYXJndW1lbnRzLgoJKiBjYWxscy5jIChTVEFDS19QT0lOVEVSX09GRlNFVCk6IE1vdmUgZGVmYXVsdCBmcm9tIGhlcmUgLi4uCgkqIGRlZmF1bHRzLmggKFNUQUNLX1BPSU5URVJfT0ZGU0VUKTogLi4uIHRvIGhlcmUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChTVEFDS19CT1VOREFSWSk6IEFkZCBjb21tZW50IGFib3V0IGhvdwoJaXQncyB3cm9uZyB3aGVuIFRBUkdFVF9BUkNINjQgJiYgVEFSR0VUX1NUQUNLX0JJQVMuCgkoU1BBUkNfU1RBQ0tfQk9VTkRBUllfSEFDSyk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZnVuY3Rpb25fYXJnKTogT24gbm9uLVNWUjQgc3lzdGVtcywKCWFycmFuZ2UgZm9yIHZlY3RvciBwYXJhbWV0ZXJzIHRvIHZhcmFyZ3MgZnVuY3Rpb25zIHRvIGJlIHBhc3NlZAoJaW4gYm90aCBtZW1vcnkgYW5kIEdQUnMgd2hlbiBhcHByb3ByaWF0ZS4KCShyczYwMDBfdmFfYXJnKTogVmVjdG9yIGFyZ3VtZW50cyBwYXNzZWQgaW4gbWVtb3J5IGFyZSAxNi1ieXRlCglhbGlnbmVkLgoKCSogaG9va3MuYyAoaG9va19ib29sX3RyZWVfdHJ1ZSk6IE5ldy4KCShob29rX3J0eF90cmVlX2ludF9udWxsKTogTmV3LgoJKGhvb2tfcnR4X3J0eF9udWxsKTogVXNlIE5VTEwsIG5vdCAwLgoJKiBob29rcy5oOiBBZGQgJ2V4dGVybicgdG8gZXZlcnl0aGluZy4KCShob29rX2Jvb2xfdHJlZV90cnVlKTogTmV3LgoJKGhvb2tfcnR4X3RyZWVfaW50X251bGwpOiBOZXcuCgkqIHRhcmdob29rcy5jIChob29rX2Jvb2xfQ1VNVUxBVElWRV9BUkdTX3RydWUpOiBOZXcuCgkqIHRhcmdob29rcy5oIChob29rX2Jvb2xfQ1VNVUxBVElWRV9BUkdTX3RydWUpOiBOZXcuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChzZXR1cF9pbmNvbWluZ192YXJhcmdzKTogUmVtb3ZlCglwcm90b3R5cGUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9yZXR1cm5faW5fbWVtb3J5KTogTmV3LgoJKHNldHVwX2luY29taW5nX3ZhcmFyZ3MpOiBQcm90b3R5cGUuCgkoVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fQVJHUyk6IERlZmluZS4KCShUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9SRVRVUk4pOiBEZWZpbmUuCgkoVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgpOiBEZWZpbmUuCgkoVEFSR0VUX1JFVFVSTl9JTl9NRU1PUlkpOiBEZWZpbmUuCgkoVEFSR0VUX1NFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBEZWZpbmUuCgkoVEFSR0VUX1NUUklDVF9BUkdVTUVOVF9OQU1JTkcpOiBEZWZpbmUuCgkoVEFSR0VUX1BSRVRFTkRfT1VUR09JTkdfVkFSQVJHU19OQU1FRCk6IERlZmluZS4KCShpbml0X2N1bXVsYXRpdmVfYXJncyk6IFVzZSByczYwMDBfcmV0dXJuX2luX21lbW9yeS4KCShzZXR1cF9pbmNvbWluZ192YXJhcmdzKTogTWFrZSAnc3RhdGljJy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoUFJPTU9URV9GVU5DVElPTl9BUkdTKTogRGVsZXRlLgoJKFBST01PVEVfRlVOQ1RJT05fUkVUVVJOKTogRGVsZXRlLgoJKFNUUlVDVF9WQUxVRSk6IERlbGV0ZS4KCShSRVRVUk5fSU5fTUVNT1JZKTogRGVsZXRlLgoJKFNFVFVQX0lOQ09NSU5HX1ZBUkFSR1MpOiBEZWxldGUuCgoyMDAzLTEwLTA3ICBHZXJhbGQgUGZlaWZlciAgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoV2FybmluZyBPcHRpb25zKTogU2ltcGxpZnkgYW5kIGNsYXJpZnkgdGhlCglkZXNjcmlwdGlvbnMgb2YgLVdub25udWxsIGFuZCAtV2luaXQtc2VsZi4KCjIwMDMtMTAtMDcgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogb3B0YWJzLmMgKGluaXRfaW50cmFjbGFzc19jb252X2xpYmZ1bmNzKTogRml4IG9yZGVyIG9mIGFycmF5CglpbmRpY2VlcyBmb3IgZmxvYXRpbmctcG9pbnQgY29udmVyc2Vyc2lvbiBsaWJjYWxscy4KCjIwMDMtMTAtMDcgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW46IEFkZCBtb3JlIGNvbW1lbnRzIHNlcGFyYXRpbmcgbGFyZ2UgY29uY2VwdHVhbGx5CglzZXBhcmF0ZSBzZWN0aW9ucy4KCgkqIGNvbmZpZ3VyZS5pbjogQ2xlYW4gdXAgdGhyZWFkIGZpbGUgbG9naWMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMTAtMDcgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBjb25maWcvaTM4Ni9jeWdtaW5nLmggKFJFQURPTkxZX0RBVEFfU0VDVElPTl9BU01fT1ApOiBEZWZpbmUuCgkoc3dpdGNoX3RvX3NlY3Rpb24pOiBIYW5kbGUgaW5fcmVhZG9ubHlfZGF0YS4KCSogY29uZmlnL2kzODYvd2lubnQuYyAoaTM4Nl9wZV9hc21fbmFtZWRfc2VjdGlvbik6IEhhbmRsZQoJcmVhZG9ubHkgZGF0YS4KCjIwMDMtMTAtMDcgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChjbXBzaTJfYWRkbmVnKTogTmV3IEFSTSBwYXR0ZXJuLiBBZGQgcGVlcGhvbGUyIHRvIGdlbmVyYXRlCglpdC4KCShjYnJhbmNobmVfZGVjcjEpOiBOZXcgVGh1bWIgcGF0dGVybi4KCSogYXJtLmMgKGFybV9hZGRpbW1fb3BlcmFuZCk6IE5ldyBpbnNuIHByZWRpY2F0ZS4KCSogYXJtLXByb3Rvcy5oOiBBZGQgYSBwcm90b3R5cGUgZm9yIGl0LgoJKiBhcm0uaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIGl0LgoKMjAwMy0xMC0wNyAgRG9yaXQgTmFpc2hsb3MgPGRvcml0QGlsLmlibS5jb20+CgoJKiBzY2hlZC1pbnQuaCAoc2NoZWRfaW5mbyk6IE5ldyBmaWVsZAoJc2NoZWRfbWF4X2luc25zX3ByaW9yaXR5LgoJKiBzY2hlZC1yZ24uYyAoaW5pdF9yZWFkeV9saXN0KTogQWRkIGludm9jYXRpb25zIHRvCgl0YXJnZXRtLnNjaGVkLmFkanVzdF9wcmlvcml0eS4KCShzY2hlZF9tYXhfaW5zbnNfcHJpb3JpdHkpOiBJbml0IG5ldyBmaWVsZC4KCSogc2NoZWQtZWJiLmMgKHNjaGVkX21heF9pbnNuc19wcmlvcml0eSk6IEluaXQgbmV3IGZpZWxkLgoJKiBoYWlmYS1zY2hlZC5jIChzZXRfcHJpb3JpdGllcyk6IFNldAoJc2NoZWRfaW5mby0+c2NoZWRfbWF4X2luc25zX3ByaW9yaXR5LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oOgoJKHJzNjAwMF9zY2hlZF9yZXN0cmljdGVkX2luc25zX3ByaW9yaXR5X3N0cik6IFN1cHBvcnQgbmV3CglmbGFnIC1tcHJpb3JpdGl6ZS1yZXN0cmljdGVkLWluc25zLgoJKERFRkFVTFRfUkVTVFJJQ1RFRF9JTlNOU19QUklPUklUWSk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoaXNfZGlzcGF0Y2hfc2xvdF9yZXN0cmljdGVkKTogTmV3CglmdW5jdGlvbi4KCShyczYwMDBfYWRqdXN0X3ByaW9yaXR5KTogQ2hhbmdlIHByaW9yaXR5IG9mIHJlc3RyaWN0ZWQKCWluc25zLCB1c2luZyBhYm92ZSBuZXcgZnVuY3Rpb24gYW5kIG5ldyBmbGFnLgoJKiBkb2MvaW52b2tlLnRleGkgKC1tcHJpb3JpdGl6ZS1yZXN0cmljdGVkLWluc25zKTogRG9jdW1lbnQKCW5ldyBvcHRpb24uCgoyMDAzLTEwLTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZXhwci5jIChjbXBzdHJfb3B0YWIsIGNtcG1lbV9vcHRhYik6IE5ldy4KCSogZ2Vub3Bpbml0LmM6IEluaXRpYWxpemUgdGhlbS4KCSogb3B0YWJzLmg6IERlY2xhcmUgdGhlbS4KCSogb3B0YWJzLmMgKGluaXRfb3B0YWJzKTogQ2xlYXIgdGhlbS4KCShwcmVwYXJlX2NtcF9pbnNuKTogIFVzZSBjbXBzdHJfb3B0YWIgYW5kIGNtcG1lbV9vcHRhYiB0byBmaW5kCglibG9jayBtZW1vcnkgY29tcGFyZSBpbnNucywgbm90IGNvbmRpdGlvbmFsIGNoYWlucy4gIFJlc3RydWN0dXJlCgl0aGUgZmFsbGJhY2sgZ2VuZXJhdGlvbiBvZiBhIGNhbGwgdG8gbWVtY21wL2JjbXAgZm9yIGJldHRlcgoJcmVhZGFiaWxpdHkuCgoyMDAzLTEwLTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKE1JUFNfTUFYX0ZJUlNUX1NUQUNLX1NURVApOiBOZXcgbWFjcm8uCgkobWlwc19zYXZlX3Jlc3RvcmVfZm4pOiBOZXcgdHlwZWRlZi4KCShtaXBzX2FkZF9sYXJnZV9vZmZzZXRfdG9fc3AsIG1pcHNfZW1pdF9mcmFtZV9yZWxhdGVkX3N0b3JlKTogUmVtb3ZlLgoJKG1pcHNfc2V0X2ZyYW1lX2V4cHIsIG1pcHNfZnJhbWVfc2V0KTogTW92ZSBhYm92ZSBwcm9sb2d1ZSBjb2RlLgoJKHNhdmVfcmVzdG9yZV9pbnNucyk6IFJlbW92ZSwgcmVwbGFjaW5nIHdpdGguLi4KCShtaXBzX3NhdmVfcmVzdG9yZV9yZWcsIG1pcHNfZm9yX2VhY2hfc2F2ZWRfcmVnKTogLi4udGhlc2UgbmV3IGZucy4KCShtaXBzX3NhdmVfcmVnLCBtaXBzX3Jlc3RvcmVfcmVnKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfZXhwYW5kX3Byb2xvZ3VlLCBtaXBzX2V4cGFuZF9lcGlsb2d1ZSk6IFJld29yay4KCSogY29uZmlnL21pcHMvbWlwcy5oIChNSVBTX1RFTVAxX1JFR05VTSwgTUlQU19URU1QMl9SRUdOVU0pOiBSZW1vdmUuCgkoTUlQU19QUk9MT0dVRV9URU1QX1JFR05VTSwgTUlQU19FUElMT0dVRV9URU1QX1JFR05VTSk6IE5ldyBtYWNyb3MuCgkoTUlQU19QUk9MT0dVRV9URU1QLCBNSVBTX0VQSUxPR1VFX1RFTVApOiBOZXcgbWFjcm9zLgoKMjAwMy0xMC0wNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2V4cGFuZF9wcm9sb2d1ZSk6IFJlbW92ZSB1bnVzZWQKCXRyYXZlcnNhbCBvZiBmdW5jdGlvbiBhcmd1bWVudHMuCgoyMDAzLTEwLTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBkb2MvaW52b2tlLnRleGk6IFJlbW92ZSBkb2N1bWVudGF0aW9uIG9mIC1tZW50cnkuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19lbnRyeV9zdHJpbmcsIG1pcHNfZW50cnkpOiBSZW1vdmUuCgkob3ZlcnJpZGVfb3B0aW9ucywgbWlwc19zYXZlX3JlZ19wKTogUmVtb3ZlIGhhbmRsaW5nLgoJKGNvbXB1dGVfZnJhbWVfc2l6ZSwgbWlwc19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBMaWtld2lzZS4KCShtaXBzX2V4cGFuZF9wcm9sb2d1ZSwgbWlwc19leHBhbmRfZXBpbG9ndWUpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChtaXBzX2VudHJ5X3N0cmluZyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShUQVJHRVRfT1BUSU9OUyk6IFJlbW92ZSAtbWVudHJ5LgoJKiBjb25maWcvbWlwcy9taXBzMTYuUzogUmVtb3ZlIG1lbnRpb24gb2YgLW1lbnRyeS4KCjIwMDMtMTAtMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsaWJmdW5jcy5oIChMVElfZXh0ZW5kc2ZkZjIsIExUSV9leHRlbmRzZnhmMiwgTFRJX2V4dGVuZHNmdGYyKQoJKExUSV9leHRlbmRkZnhmMiwgTFRJX2V4dGVuZGRmdGYyLCBMVElfdHJ1bmNkZnNmMiwgTFRJX3RydW5jeGZzZjIpCgkoTFRJX3RydW5jdGZzZjIsIExUSV90cnVuY3hmZGYyLCBMVElfdHJ1bmN0ZmRmMiwgTFRJX2Zsb2F0c2lzZikKCShMVElfZmxvYXRkaXNmLCBMVElfZmxvYXR0aXNmLCBMVElfZmxvYXRzaWRmLCBMVElfZmxvYXRkaWRmKQoJKExUSV9mbG9hdHRpZGYsIExUSV9mbG9hdHNpeGYsIExUSV9mbG9hdGRpeGYsIExUSV9mbG9hdHRpeGYpCgkoTFRJX2Zsb2F0c2l0ZiwgTFRJX2Zsb2F0ZGl0ZiwgTFRJX2Zsb2F0dGl0ZiwgTFRJX2ZpeHNmc2ksIExUSV9maXhzZmRpKQoJKExUSV9maXhzZnRpLCBMVElfZml4ZGZzaSwgTFRJX2ZpeGRmZGksIExUSV9maXhkZnRpLCBMVElfZml4eGZzaSkKCShMVElfZml4eGZkaSwgTFRJX2ZpeHhmdGksIExUSV9maXh0ZnNpLCBMVElfZml4dGZkaSwgTFRJX2ZpeHRmdGkpCgkoTFRJX2ZpeHVuc3Nmc2ksIExUSV9maXh1bnNzZmRpLCBMVElfZml4dW5zc2Z0aSwgTFRJX2ZpeHVuc2Rmc2kpCgkoTFRJX2ZpeHVuc2RmZGksIExUSV9maXh1bnNkZnRpLCBMVElfZml4dW5zeGZzaSwgTFRJX2ZpeHVuc3hmZGkpCgkoTFRJX2ZpeHVuc3hmdGksIExUSV9maXh1bnN0ZnNpLCBMVElfZml4dW5zdGZkaSwgTFRJX2ZpeHVuc3RmdGkpCgkoZXh0ZW5kc2ZkZjJfbGliZnVuYywgZXh0ZW5kc2Z4ZjJfbGliZnVuYywgZXh0ZW5kc2Z0ZjJfbGliZnVuYykKCShleHRlbmRkZnhmMl9saWJmdW5jLCBleHRlbmRkZnRmMl9saWJmdW5jLCB0cnVuY2Rmc2YyX2xpYmZ1bmMpCgkodHJ1bmN4ZnNmMl9saWJmdW5jLCB0cnVuY3Rmc2YyX2xpYmZ1bmMsIHRydW5jeGZkZjJfbGliZnVuYykKCSh0cnVuY3RmZGYyX2xpYmZ1bmMsIGZsb2F0c2lzZl9saWJmdW5jLCBmbG9hdGRpc2ZfbGliZnVuYykKCShmbG9hdHRpc2ZfbGliZnVuYywgZmxvYXRzaWRmX2xpYmZ1bmMsIGZsb2F0ZGlkZl9saWJmdW5jKQoJKGZsb2F0dGlkZl9saWJmdW5jLCBmbG9hdHNpeGZfbGliZnVuYywgZmxvYXRkaXhmX2xpYmZ1bmMpCgkoZmxvYXR0aXhmX2xpYmZ1bmMsIGZsb2F0c2l0Zl9saWJmdW5jLCBmbG9hdGRpdGZfbGliZnVuYykKCShmbG9hdHRpdGZfbGliZnVuYywgZml4c2ZzaV9saWJmdW5jLCBmaXhzZmRpX2xpYmZ1bmMsIGZpeHNmdGlfbGliZnVuYykKCShmaXhkZnNpX2xpYmZ1bmMsIGZpeGRmZGlfbGliZnVuYywgZml4ZGZ0aV9saWJmdW5jLCBmaXh4ZnNpX2xpYmZ1bmMpCgkoZml4eGZkaV9saWJmdW5jLCBmaXh4ZnRpX2xpYmZ1bmMsIGZpeHRmc2lfbGliZnVuYywgZml4dGZkaV9saWJmdW5jKQoJKGZpeHRmdGlfbGliZnVuYywgZml4dW5zc2ZzaV9saWJmdW5jLCBmaXh1bnNzZmRpX2xpYmZ1bmMpCgkoZml4dW5zc2Z0aV9saWJmdW5jLCBmaXh1bnNkZnNpX2xpYmZ1bmMsIGZpeHVuc2RmZGlfbGliZnVuYykKCShmaXh1bnNkZnRpX2xpYmZ1bmMsIGZpeHVuc3hmc2lfbGliZnVuYywgZml4dW5zeGZkaV9saWJmdW5jKQoJKGZpeHVuc3hmdGlfbGliZnVuYywgZml4dW5zdGZzaV9saWJmdW5jLCBmaXh1bnN0ZmRpX2xpYmZ1bmMpCgkoZml4dW5zdGZ0aV9saWJmdW5jKTogRGVsZXRlLgoJKiBvcHRhYnMuaCAoc3RydWN0IG9wdGFiX2hhbmRsZXJzKTogQnJlYWsgb3V0IG9mIHN0cnVjdCBvcHRhYi4KCShzdHJ1Y3QgY29udmVydF9vcHRhYiwgY29udmVydF9vcHRhYiwgZW51bSBjb252ZXJ0X29wdGFiX2luZGV4LAoJY29udmVydF9vcHRhYl90YWJsZSwgc2V4dF9vcHRhYiwgemV4dF9vcHRhYiwgdHJ1bmNfb3B0YWIsCglzZml4X29wdGFiLCB1Zml4X29wdGFiLCBzZml4dHJ1bmNfb3B0YWIsIHVmaXh0cnVuY19vcHRhYiwKCXNmbG9hdF9vcHRhYiwgdWZsb2F0X29wdGFiKTogTmV3LgoJKHNldF9jb252X2xpYmZ1bmMpOiBQcm90b3R5cGUuCgkoR0VOX0ZDTik6IFVzZSBDOTAgaW5kaXJlY3QgY2FsbCBzeW50YXgsIHJlbW92ZSB1bm5lY2Vzc2FyeSBjYXN0LgoJKHRydW5jX29wdGFiKTogUmVuYW1lZCBidHJ1bmNfb3B0YWIuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21hdGhmbik6IFVwZGF0ZSB0byBtYXRjaC4KCSogb3B0YWJzLmMgKGV4dGVuZHRhYiwgZml4dGFiLCBmaXh0cnVuY3RhYiwgZmxvYXR0YWIpOiBEZWxldGUuCgkoY29udmVydF9vcHRhYl90YWJsZSwgbmV3X2NvbnZlcnRfb3B0YWIsIGluaXRfY29udmVydF9vcHRhYikKCShpbml0X2ludGVyY2xhc3NfY29udl9saWJmdW5jcywgaW5pdF9pbnRyYWNsYXNzX2NvbnZfbGliZnVuY3MpCgkoc2V0X2NvbnZfbGliZnVuYyk6IE5ldy4KCShjYW5fZXh0ZW5kX3AsIGdlbl9leHRlbmRfaW5zbiwgY2FuX2ZpeF9wLCBjYW5fZmxvYXRfcCkKCShleHBhbmRfZmxvYXQsIGV4cGFuZF9maXgpOiBVc2UgbmV3IGNvbnZlcnNpb24gb3B0YWJzLAoJbm90IG9sZCBpbnNuIGNvZGUgdGFibGVzIG9yIGxvbmcgY2hhaW5zIG9mIGlmcy4KCShpbml0X29wdGFicyk6IE5vIG5lZWQgdG8gY2xlYXIgb2xkIGluc24gY29kZSB0YWJsZXMuCglJbml0aWFsaXplIHRoZSBuZXcgb3B0YWJzLCBub3QgdGhlIG9sZCBsaWJmdW5jIGFycmF5IGVudHJpZXMuCglEb24ndCBoYW5kbGUgRklYVU5TX1RSVU5DX0xJS0VfRklYX1RSVU5DIGhlcmUuCgkqIGdlbm9waW5pdC5jOiBJbml0aWFsaXplIGNvbnZlcnNpb24gb3B0YWJzLCBub3QgdGhlCglmb3JtZXIgaW5zbiBjb2RlIHRhYmxlcy4gIFJlbW92ZSB1bm5lY2Vzc2FyeSBjYXN0cy4KCUhhbmRsZSBGSVhVTlNfVFJVTkNfTElLRV9GSVhfVFJVTkMgaGVyZS4KCSogZXhwci5jIChjb252ZXJ0X21vdmUpOiBSZW1vdmUgcmVkdW5kYW50IGNoZWNrIHRoYXQKCXRvX3JlYWw9PWZyb21fcmVhbC4gIFVzZSB0aGUgY29udmVyc2lvbiBvcHRhYnMgaW5zdGVhZAoJb2YgbG9uZyBjaGFpbnMgb2YgdGVzdHMgb2YgbW9kZXMuICBNb3ZlIHBhcnRpYWwtaW50ZWdlci1tb2RlCglpbnRlcmNvbnZlcnNpb24gYWJvdmUgYWxsIGludGVnZXIgY29udmVyc2lvbi4gIERvIG5vdCByZWN1cnNlCglvbiBhIHZhbHVlIGZvcmNlZCBpbnRvIGEgcmVnaXN0ZXIgaW4gdGhlIG9yaWdpbmFsIG1vZGUuCgoJKiBjb25maWcvZ29mYXN0LmgsIGNvbmZpZy9mcnYvZnJ2LmMsIGNvbmZpZy9pYTY0L2lhNjQuYwoJKiBjb25maWcvbWlwcy9taXBzLmMsIGNvbmZpZy9wYS9wYS5jLCBjb25maWcvcnM2MDAwL3JzNjAwMC5jCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jOiBVc2Ugc2V0X2NvbnZfbGliZnVuYyB0byBhZGp1c3QgZW50cmllcwoJaW4gbmV3IGNvbnZlcnNpb24gb3B0YWJzOyBkbyBub3QgcmVmZXJlbmNlIHRoZSBvbGQgbGliZnVuYwoJYXJyYXkgZW50cmllcy4gIE5vIG5lZWQgdG8gaW5jbHVkZSBsaWJmdW5jcy5oLgoKMjAwMy0xMC0wNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX3NldGNjKTogQW5ub3RhdGUgdGhlIGZsb2F0aW5nCglwb2ludCBjb21wYXJpc29uIHNlcXVlbmNlIHdpdGggYSBSRUdfRVFVQUwgbm90ZSB0aGF0IGRlc2NyaWJlcwoJdGhlIGNvbXBhcmlzb24ncyBzZW1hbnRpY3MuCgoyMDAzLTEwLTA2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIgPENPTkRfRVhQUj4pOiBIYW5kbGUgdGhlIHZvaWQgdHlwZSBzZW1hbnRpY3MKCW9mIENPTkRfRVhQUiB3aGVuIGV4cGFuZGluZyB0aGUgIkEgb3AgMCA/IEZPTyA6IEEiIG9wdGltaXphdGlvbnMuCgoyMDAzLTEwLTA2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb3B0YWJzLmMgKHByZXBhcmVfZmxvYXRfbGliX2NtcCk6IEF2b2lkIHNlYXJjaGluZyBmb3IgUkVHX1JFVFZBTAoJaW5zdHJ1Y3Rpb24gYnkgdXNpbmcgTENUX0NPTlNUIGFuZCB0aGVuIGNhbGxpbmcgZW1pdF9saWJjYWxsX2Jsb2NrCglvdXJzZWx2ZXMuCgoyMDAzLTEwLTA2ICBGYWxrIEh1ZWZmbmVyICA8ZmFsay5odWVmZm5lckBzdHVkZW50LnVuaS10dWViaW5nZW4uZGU+CgoJUFIgb3B0aW1pemF0aW9uLzExOTc0CgkqIG9wdGFicy5jIChleHBhbmRfdW5vcCk6IFByb21vdGUgbGliY2FsbCBvdXRtb2RlIGFjY29yZGluZyB0bwoJaGFyZF9saWJjYWxsX3ZhbHVlLgoKMjAwMy0xMC0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJlYWwuaCAoUkVBTF9NT0RFX0ZPUk1BVCk6IE5ldyBtYWNyby4KCSogYy1jcHBidWlsdGluLmMsIG9wdGFicy5jLCByZWFsLmMsIGNvbmZpZy9hbHBoYS9hbHBoYS5jCgkqIGNvbmZpZy9jNHgvYzR4LmMsIGNvbmZpZy9pMzcwL2kzNzAuYywgY29uZmlnL2kzODYvZnJlZWJzZC5oCgkqIGNvbmZpZy9pMzg2L2kzODYuYywgY29uZmlnL2k5NjAvaTk2MC5jLCBjb25maWcvaWE2NC9pYTY0LmMKCSogY29uZmlnL202OGsvbTY4ay5jLCBjb25maWcvbWlwcy9taXBzLmMsIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMKCSogY29uZmlnL3ZheC92YXguYzogVXNlIFJFQUxfTU9ERV9GT1JNQVQgaW5zdGVhZCBvZiByZWZlcnJpbmcKCWRpcmVjdGx5IHRvIHJlYWxfZm9ybWF0X2Zvcl9tb2RlIGFycmF5LCB3aGVyZXZlciBwb3NzaWJsZS4KCjIwMDMtMTAtMDYgIERldmFuZyBQYXRlbCAgPGRwYXRlbEBhcHBsZS5jb20+CgoJKiBkd2FyZjJvdXQuYyAoaXNfbWFpbl9zb3VyY2UpOiBSZW1vdmUgdmFyaWFibGUuCgkoZHdhcmYyb3V0X3N0YXJ0X3NvdXJjZV9maWxlKTogRG8gbm90IGNoZWNrIGlzX21haW5fc291cmNlLgoJRG8gbm90IHJlc2V0IGlzX21haW5fc291cmNlLgoJKGR3YXJmMm91dF9pbml0KTogRG8gbm90IGluaXRpYWxpemUgaXNfbWFpbl9zb3VyY2UuCgoyMDAzLTEwLTA2ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHN0ZGlvX3ZhX2xpc3QpOiBSZW1vdmVkIF9hcCBmaXguCgkoaXJpeF9zdGRpb192YV9saXN0KTogRG9uJ3QgcmVxdWlyZSBsZWFkaW5nIHByaW50ZiwgSVJJWCA2LjUuMjEKCWludHJvZHVjZWQgc29tZSBtdWx0aS1saW5lIHByb3RvdHlwZXMuCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoyMDAzLTEwLTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBzdGFja19vcGVyYW5kLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKHN0YWNrX29wZXJhbmQpOiBOZXcgcHJlZGljYXRlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBVc2UgaXQgZm9yIHRoZSBkZXN0aW5hdGlvbiBvZiBtaXBzMTYgaW5zbnMKCXRoYXQgc3RvcmUgJDMxLgoKMjAwMy0xMC0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoKmxvd3NpKTogUmVuYW1lZCBmcm9tIGxvd3NpLgoJKCpsb3dkaSk6IExpa2V3aXNlIGxvd2RpLgoJKCpsb3dzaV9taXBzMTYsICpsb3dkaV9taXBzMTYpOiBOZXcgcGF0dGVybnMuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jb25zdF9pbnNucywgbWlwc19vdXRwdXRfbW92ZSk6IFJlbW92ZQoJbWlwczE2IENPTlNUQU5UX1JFTE9DIGhhbmRsaW5nLgoJKG1pcHNfZGVsZWdpdGltaXplX2FkZHJlc3MpOiBBZGp1c3QgZm9yIG5ldyBzZGF0YSByZXByZXNlbnRhdGlvbi4KCjIwMDMtMTAtMDYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19hcmdfaW5mbyk6IElmIE1VU1RfUEFTU19JTl9TVEFDSywKCXNraXAgYW55IHJlbWFpbmluZyByZWdpc3RlciBhcmd1bWVudHMuCgoyMDAzLTEwLTA2ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzX3N1YnJlZ19hZGRyZXNzKTogVXNlIGNvcnJlY3Qgb2Zmc2V0IGZvcgoJcGFyYWRveGljYWwgTUVNIHN1YnJlZ3Mgb24gYmlnLWVuZGlhbiB0YXJnZXRzLgoKMjAwMy0xMC0wNiAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiB0cmVlLmMgKGdldF9jYWxsZWVfZm5kZWNsKTogQ2FsbAoJbGFuZ19ob29rcy5sYW5nX2dldF9jYWxsZWVfZm5kZWNsLgoJKiBsYW5naG9va3MtZGVmLmggKExBTkdfSE9PS1NfR0VUX0NBTExFRV9GTkRFQ0wpOiBOZXcuCgkobGhkX2dldF9jYWxsZWVfZm5kZWNsKTogTmV3LgoKMjAwMy0xMC0wNiAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19ub25fbGF6eV9wdHJfbmFtZSk6IEZpeCBvZmYgYnkgb25lCgllcnJvciBpbiBjYWxjdWxhdGluZyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuCgkobWFjaG9waWNfc3R1Yl9uYW1lKTogTGlrZXdpc2UuCgoyMDAzLTEwLTA2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIG9wdGFicy5jIChwcmVwYXJlX2Zsb2F0X2xpYl9jbXApOiAgQXR0YWNoIGEgUkVHX0VRVUFMIG5vdGUKCWRlc2NyaWJpbmcgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgY29tcGFyaXNvbiBsaWJjYWxsIHRvIHRoZQoJUkVHX1JFVFZBTCBpbnN0cnVjdGlvbiBvZiB0aGUgZW1pdHRlZCBzZXF1ZW5jZS4KCjIwMDMtMTAtMDYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzEyMjE1CgkqIGNzZS5jIChjc2Vfc2V0X2Fyb3VuZF9sb29wKTogRW1pdCB0aGUgbW92ZSBhdCB0aGUgYmVnaW5uaW5nCglvZiB0aGUgbmV4dCBiYXNpYyBibG9jayBmb3IgdHJhcHBpbmcgc2V0cy4KCjIwMDMtMTAtMDYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzExNjM3CgkqIGNvbWJpbmUuYyAoYWRqdXN0X2Zvcl9uZXdfZGVzdCk6IE5ldyBmdW5jdGlvbiB0byBhZGp1c3QgdGhlCglub3RlcyBhbmQgTE9HX0xJTktTIHdoZW4gdGhlIGRlc3Qgb2YgYW4gaW5zbiBoYXMgY2hhbmdlZC4KCSh0cnlfY29tYmluZSk6IFVzZSBpdCB3aGVuIGRlbGV0aW5nIHRoZSBmaXJzdCBpbnNuIG9mIGEgdHdvLWluc24KCXBhcmFsbGVsIG9yIHNwbGl0dGluZyBhIHR3by1sb2FkIHBhcmFsbGVsLgoKMjAwMy0xMC0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2NsYXNzaWZ5X2NvbnN0YW50KTogT25seSBhbGxvdyBVTlNQRUNzCglpZiBUQVJHRVRfRVhQTElDSVRfUkVMT0NTLgoKMjAwMy0xMC0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBib290c3RyYXAvMTI1MTIKCSogTWFrZWZpbGUuaW4gKGluZm8pOiBVc2UgZG91YmxlLWNvbG9uIHJ1bGVzLgoJKGR2aSk6IExpa2V3aXNlLgoJKGdlbmVyYXRlZC1tYW5wYWdlcyk6IExpa2V3aXNlLgoJKiBjb25maWd1cmUuaW46IERvIG5vdCBjcmVhdGUgbGFuZy5pbmZvLCBsYW5nLmR2aSwgb3IKCWxhbmcuZ2VuZXJhdGVkLW1hbnBhZ2VzIGhvb2tzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBvYmpjL01ha2UtbGFuZy5pbiAob2JqYy5pbmZvKTogUmVtb3ZlLgoJKG9iamMuZHZpKTogUmVtb3ZlLgoJKG9iamMuZ2VuZXJhdGVkLW1hbnBhZ2VzKTogUmVtb3ZlLgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aTogVXBkYXRlIGRlc2NyaXB0aW9uIG9mIGluZm8sIGR2aSwgYW5kCglnZW5lcmF0ZWQtbWFucGFnZXMgaG9va3MuCgoyMDAzLTEwLTA2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBNZXJnZSBtaXBzMTYgbHcvc3JsIHBhdHRlcm4gd2l0aCBpdHMgc3BsaXR0ZXIuCgoyMDAzLTEwLTA1ICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX25vbl9sYXp5X3B0cl9uYW1lKTogRml4IG9mZiBieSBvbmUKCWVycm9ycyBpbiBtZW1jcHkgZGVzdGluYXRpb25zLgoJKG1hY2hvcGljX3N0dWJfbmFtZSk6IExpa2V3aXNlLgoKMjAwMy0xMC0wNSAgQW5kcmV3IFBpbnNraSA8YXBpbnNraUBhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX25vbl9sYXp5X3B0cl9uYW1lKToKCUNoYW5nZSBzdHJjYXQgdG8gbWVtY3B5IGFuZCBhZGQgbGVuZ3RoIHRvZ2V0aGVyLgoJKG1hY2hvcGljX3N0dWJfbmFtZSk6IExpa2V3aXNlLgoKMjAwMy0xMC0wNSAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvbGludXguaCAoTURfRkFMTEJBQ0tfRlJBTUVfU1RBVEVfRk9SKTogSGFuZGxlIG5ldwoJc2lnbmFsIHRyYW1wb2xpbmUgY29kZXMuCgoyMDAzLTEwLTA1ICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAYnJvYWRjb20uY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoKmRpdnNmMyk6IE1vdmUgZGVzY3JpcHRpb24gb2YKCVNCLTEgRjIgZXJyYXR1bSBmcm9tIGhlcmUgdG8uLi4KCShkaXZzZjMpOiBIZXJlLiAgRGlzYWJsZSBpZiBUQVJHRVRfRklYX1NCMSBpcyBzZXQgYW5kCglmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMgaXMgbm90LgoKMjAwMy0xMC0wNSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9saW51eHNwZS5oOiBEZWZpbmUgVEFSR0VUX1NQRV9BQkksIFRBUkdFVF9TUEUsCglUQVJHRVRfRTUwMCwgVEFSR0VUX0lTRUwsIGFuZCBUQVJHRVRfRlBSUy4KCjIwMDMtMTAtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjLXByZXR0eS1wcmludC5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogYy1wcmV0dHktcHJpbnQuaDogTGlrZXdpc2UuCgkqIGNhbGxzLmM6IExpa2V3aXNlLgoJKiBjZmdsb29wbWFuaXAuYzogTGlrZXdpc2UuCgkqIGNncmFwaHVuaXQuYzogTGlrZXdpc2UuCgkqIGNwcGZpbGVzLmM6IExpa2V3aXNlLgoJKiBmaW5hbC5jOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYzogTGlrZXdpc2UuCgkqIGdjb3YtaW8uaDogTGlrZXdpc2UuCgkqIGdjc2UuYzogTGlrZXdpc2UuCgkqIGdlbm91dHB1dC5jOiBMaWtld2lzZS4KCSogbG9vcC5jOiBMaWtld2lzZS4KCSogcG9zdHJlbG9hZC5jOiBMaWtld2lzZS4KCSogcmVnLXN0YWNrLmM6IExpa2V3aXNlLgoJKiByZWdtb3ZlLmM6IExpa2V3aXNlLgoJKiBzY2hlZC1pbnQuaDogTGlrZXdpc2UuCgkqIHNjaGVkLXJnbi5jOiBMaWtld2lzZS4KCSogc2ltcGxpZnktcnR4LmM6IExpa2V3aXNlLgoJKiB0cmVlLWlubGluZS5jOiBMaWtld2lzZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5oOiBMaWtld2lzZS4KCSogY29uZmlnL21taXgvbW1peC5jOiBMaWtld2lzZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5oOiBMaWtld2lzZS4KCjIwMDMtMTAtMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmVlLWlubGluZS5jIChyZW1hcF90eXBlKTogTmV3LgoJKHJlbWFwX2RlY2wpOiBVc2UgaXQuICBSZW1hcCBERUNMX1NJWkUqLgoJKGNvcHlfYm9keV9yKTogVXNlIGl0LgoJKHdhbGtfdHJlZSk6IFdhbGsgVFJFRV9UWVBFIHRvby4KCShjb3B5X3RyZWVfcik6IERvbid0IHdhbGsgc3VidHJlZXMgb2YgdHlwZXMuCgkqIHRyZWUuYyAodmFyaWFibHlfbW9kaWZpZWRfdHlwZV9wKTogUmVzdHJ1Y3R1cmUuICBDb25zaWRlciBpbnRlZ2VyCgl0eXBlcyB3aXRoIG5vbi1jb25zdCBib3VuZHMgdmFyaWFibHkgbW9kaWZpZWQuCgoyMDAzLTEwLTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL2ludm9rZS50ZXhpOiBGaXggdHlwb3MuCgoyMDAzLTEwLTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZm9sZC1jb25zdC5jOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgkqIGZ1bmN0aW9uLmM6IExpa2V3aXNlLgoJKiBjb25maWcvYzR4L2M0eC5oOiBMaWtld2lzZS4KCSogY29uZmlnL2M0eC9jNHgubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvZnJ2L2Zydi5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvYWl4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmM6IExpa2V3aXNlLgoKMjAwMy0xMC0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGMtcHJldHR5LXByaW50LmM6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkqIGNmZ2xheW91dC5jOiBMaWtld2lzZS4KCSogY2ZnbG9vcGFuYWwuYzogTGlrZXdpc2UuCgkqIGNwcGNoYXJzZXQuYzogTGlrZXdpc2UuCgkqIGRieG91dC5jOiBMaWtld2lzZS4KCSogZ2djLXBhZ2UuYzogTGlrZXdpc2UuCgkqIGdnYy5oOiBMaWtld2lzZS4KCSogdGFyZ2V0Lmg6IExpa2V3aXNlLgoKMjAwMy0xMC0wNCAgS2VsbGV5IENvb2sgIDxrZWxsZXljb29rQHdpZGVvcGVud2VzdC5jb20+CgoJKiBnZW5ndHlwZS1sZXgubDogUmVjb2duaXplIHR5cGVkZWYgb2YgZnVuY3Rpb25zIHdpdGhvdXQgUEFSQU1TIG1hY3JvLgoKMjAwMy0xMC0wNCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvdjg1MC92ODUwLWMuYywgY29uZmlnL3Y4NTAvdjg1MC1wcm90b3MuaCwgY29uZmlnL3Y4NTAvdjg1MC5jOgoJQ29udmVydCB0byBJU08gQzkwIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBhbmQgZGVmaW5pdGlvbnMuCgoyMDAzLTEwLTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbGliZnVuY3MuaAoJKExUSV9lcWhmMiwgTFRJX25laGYyLCBMVElfZ3RoZjIsIExUSV9nZWhmMiwgTFRJX2x0aGYyKQoJKExUSV9sZWhmMiwgTFRJX3Vub3JkaGYyLCBMVElfZXFzZjIsIExUSV9uZXNmMiwgTFRJX2d0c2YyKQoJKExUSV9nZXNmMiwgTFRJX2x0c2YyLCBMVElfbGVzZjIsIExUSV91bm9yZHNmMiwgTFRJX2VxZGYyKQoJKExUSV9uZWRmMiwgTFRJX2d0ZGYyLCBMVElfZ2VkZjIsIExUSV9sdGRmMiwgTFRJX2xlZGYyKQoJKExUSV91bm9yZGRmMiwgTFRJX2VxeGYyLCBMVElfbmV4ZjIsIExUSV9ndHhmMiwgTFRJX2dleGYyKQoJKExUSV9sdHhmMiwgTFRJX2xleGYyLCBMVElfdW5vcmR4ZjIsIExUSV9lcXRmMiwgTFRJX25ldGYyKQoJKExUSV9ndHRmMiwgTFRJX2dldGYyLCBMVElfbHR0ZjIsIExUSV9sZXRmMiwgTFRJX3Vub3JkdGYyKQoJKGVxaGYyX2xpYmZ1bmMsIG5laGYyX2xpYmZ1bmMsIGd0aGYyX2xpYmZ1bmMsIGdlaGYyX2xpYmZ1bmMpCgkobHRoZjJfbGliZnVuYywgbGVoZjJfbGliZnVuYywgdW5vcmRoZjJfbGliZnVuYywgZXFzZjJfbGliZnVuYykKCShuZXNmMl9saWJmdW5jLCBndHNmMl9saWJmdW5jLCBnZXNmMl9saWJmdW5jLCBsdHNmMl9saWJmdW5jKQoJKGxlc2YyX2xpYmZ1bmMsIHVub3Jkc2YyX2xpYmZ1bmMgZXFkZjJfbGliZnVuYywgbmVkZjJfbGliZnVuYykKCShndGRmMl9saWJmdW5jLCBnZWRmMl9saWJmdW5jLCBsdGRmMl9saWJmdW5jLCBsZWRmMl9saWJmdW5jKQoJKHVub3JkZGYyX2xpYmZ1bmMgZXF4ZjJfbGliZnVuYywgbmV4ZjJfbGliZnVuYywgZ3R4ZjJfbGliZnVuYykKCShnZXhmMl9saWJmdW5jLCBsdHhmMl9saWJmdW5jLCBsZXhmMl9saWJmdW5jLCB1bm9yZHhmMl9saWJmdW5jCgkoZXF0ZjJfbGliZnVuYywgbmV0ZjJfbGliZnVuYywgZ3R0ZjJfbGliZnVuYywgZ2V0ZjJfbGliZnVuYykKCShsdHRmMl9saWJmdW5jLCBsZXRmMl9saWJmdW5jLCB1bm9yZHRmMl9saWJmdW5jKToKCURlbGV0ZS4KCSogb3B0YWJzLmggKE9USV9lcSwgT1RJX25lLCBPVElfZ3QsIE9USV9nZSwgT1RJX2x0LCBPVElfbGUpCgkoT1RJX3Vub3JkLCBlcV9vcHRhYiwgbmVfb3B0YWIsIGd0X29wdGFiLCBnZV9vcHRhYiwgbHRfb3B0YWIpCgkobGVfb3B0YWIsIHVub3JkX29wdGFiKTogTmV3LgoKCSogb3B0YWJzLmMgKHByZXBhcmVfZmxvYXRfbGliX2NtcCk6IFJld3JpdGUuICBHZXQgdGhlIGxpYmZ1bmNzCglmcm9tIHRoZSBjb2RlX3RvX29wdGFiIHRhYmxlLCBub3QgYSBnaWFudCBzd2l0Y2g7IHVzZQoJc3dhcF9jb25kaXRpb247IGRvIHdpZGVuaW5nIG9ubHkgaWYgYSBjb21wYXJpc29uIGZ1bmN0aW9uIHRoYXQKCXdlIGNhbiBjYWxsIGV4aXN0cyBpbiBhIHdpZGVyIG1vZGUsIG5vdCBpZiBhIGNtcF9vcHRhYiBpbnNuIG9yCglsaWJmdW5jIGV4aXN0cyBpbiBhIHdpZGVyIG1vZGU7IGNhbGwgcHJvdGVjdF9mcm9tX3F1ZXVlCglleGFjdGx5IG9uY2Ugb24gZWFjaCBvcGVyYW5kLgoJKGluaXRfb3B0YWJzKTogSW5pdGlhbGl6ZSB0aGUgbmV3IG9wdGFicywgbm90IHRoZSBkZWxldGVkIGxpYmZ1bmNzLgoKCSogY29uZmlnL2dvZmFzdC5oLCBjb25maWcvaWE2NC9pYTY0LmMsIGNvbmZpZy9taXBzL21pcHMuYwoJKiBjb25maWcvcGEvcGEuYywgY29uZmlnL3JzNjAwMC9yczYwMDAuYywgY29uZmlnL3NwYXJjL3NwYXJjLmM6CglTZXQgZmxvYXRpbmcgcG9pbnQgY29tcGFyaXNvbiBsaWJmdW5jcyB1c2luZyBzZXRfb3B0YWJfbGliZnVuYwoJb24gdGhlIGFwcHJvcHJpYXRlIG9wdGFiLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2hwdXhfaW5pdF9saWJmdW5jcyk6IEZpeCB0eXBvLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfaW5pdF9saWJmdW5jcyk6IENvcnJlY3QgQUJJCglzZWxlY3RvciBjb25kaXRpb25hbHMuCgoyMDAzLTEwLTA0ICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekBuZXJpbS5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL3QtbTY4aGMxMS1nYXMgKE1VTFRJTElCX01BVENIRVMpOiBtNjhoY3MxMiBpcwoJaWRlbnRpY2FsIHRvIG02OGhjMTIgYXMgZmFyIGFzIGxpYnJhcmllcyBhcmUgY29uY2VybmVkLgoKMjAwMy0xMC0wNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBjLzEyNDQ2CgkqIGMtdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBJc3N1ZSBhbiBlcnJvciBmb3IKCWFycmF5IHRvIHBvaW50ZXIgYXNzaWdubWVudCBhZnRlciBkZWZhdWx0IGNvbnZlcnNpb24uCgkoZGlnZXN0X2luaXQpOiBMaWtld2lzZS4KCjIwMDMtMTAtMDQgIEZhcmlib3J6IEphaGFuaWFuICA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiByZXRhaW4gREVDTF9DT01NT04gb2Ygb2xkIGRlY2xhcmF0aW9uCgoyMDAzLTEwLTAzICBHZXJhbGQgUGZlaWZlciAgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aSAoRnVuY3Rpb24gQXR0cmlidXRlcyk6IEZpeCB0aXRsZSBvZiBHTlUgQwoJUHJlcHJvY2Vzc29yIG1hbnVhbC4KCShDKysgRXh0ZW5zaW9ucyk6IEZpeCByZWZlcmVuY2UgdG8gIlByZWRlZmluZWQgTWFjcm9zIiBpbiB0aGUKCUdOVSBDIFByZXByb2Nlc3NvciBtYW51YWwuCgoyMDAzLTEwLTA0ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhbnJzaGFAYXJtLmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgaG93IEdDQyBlc3RpbWF0ZXMgYW5kIHJlbGllcyBvbiB0aGUgc2l6ZQoJb2YgYW4gYXNtLgoKMjAwMy0xMC0wNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3BhZF9hcmdfdXB3YXJkKTogUGFkIGZsb2F0aW5nLXBvaW50Cglhcmd1bWVudHMgZG93bndhcmQgZm9yIGJpZy1lbmRpYW4gbzY0LgoKMjAwMy0xMC0wMyAgUm9iZXJ0IEJvd2RpZGdlIDxib3dkaWRnZUBhcHBsZS5jb20+CgoJKiBnZ2MtcGFnZS5jIChnZ2NfcGNoX3dyaXRlX29iamVjdCk6IFJlcGxhY2UgZnNlZWsoKSB3aXRoIGZ3cml0ZSgpIGluCglQQ0ggZ2VuZXJhdGlvbiwgYXZvaWRpbmcgdG9vLWZyZXF1ZW50IGZsdXNoZXMgd2hlbiB3cml0aW5nIHRvIE5GUwoJZmlsZSBzeXN0ZW0uCgoyMDAzLTEwLTAzICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBvYmpjL29iamMtYWN0LmMgKGxvb2t1cF9jYXRlZ29yeSk6IE1hcmsgYXMgJ2lubGluZScuCgoyMDAzLTEwLTAzICBBbGV4YW5kZXIgTWFsbWJlcmcgIDxhbGV4YW5kZXJAbWFsbWJlcmcub3JnPgoJICAgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIG9iamMvb2JqYy1hY3QuYyAoYWRkX21ldGhvZF90b19oYXNoX2xpc3QsIGxvb2t1cF9jYXRlZ29yeSk6CglOZXcgZnVuY3Rpb25zLgoJKGxvb2t1cF9tZXRob2RfaW5faGFzaF9saXN0cyk6IE5ldyBwYXJhbWV0ZXIgaW5kaWNhdGluZyB3aGV0aGVyCgl3ZSBhcmUgbWVzc2FnaW5nICdDbGFzcycgb3IgJ2lkJy4KCShjaGVja19kdXBsaWNhdGVzKTogTGlrZXdpc2U7IGRvIG5vdCBhc3N1bWUgYWxsIG1ldGhvZHMgd2lsbAoJYmUgZWl0aGVyIGNsYXNzIG9yIGluc3RhbmNlIG1ldGhvZHMuCgkoZ2VuZXJhdGVfY2F0ZWdvcnksIGZpbmlzaF9jbGFzcyk6IFVzZSBsb29rdXBfY2F0ZWdvcnkoKS4KCShhZGRfbWV0aG9kKTogVXNlIGFkZF9tZXRob2RfdG9faGFzaF9saXN0KCk7IGluc2VydCBpbnN0YW5jZQoJbWV0aG9kcyBvZiByb290IGNsYXNzZXMgaW50byB0aGUgZ2xvYmFsIGNsYXNzIG1ldGhvZCBoYXNoIHRhYmxlLgoJKGFkZF9jYXRlZ29yeSk6IFVzZSBsb29rdXBfY2F0ZWdvcnkoKTsgYXZvaWQgY29uc3RydWN0aW5nCglkdXBsaWNhdGUgY2F0ZWdvcmllcy4KCShyZWFsbHlfc3RhcnRfbWV0aG9kKTogQWRkIG1ldGhvZCB0byBjb3JyZXNwb25kaW5nIEBpbnRlcmZhY2UsCglpZiBub3QgYWxyZWFkeSB0aGVyZSAoYW5kIGlmIHRoZSBAaW50ZXJmYWNlIGV4aXN0cykuCgkoZmluaXNoX21lc3NhZ2VfZXhwciwgZmluaXNoX29iamMpOiBBZGp1c3QgY2FsbHMgdG8KCWNoZWNrX2R1cGxpY2F0ZXMoKS4KCjIwMDMtMTAtMDMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG9wdGltaXphdGlvbi85MzI1LCBQUiBqYXZhLzYzOTEKCSogZm9sZC1jb25zdC5jIChmb2xkX2NvbnZlcnQpOiBGb3IgZmxvYXRpbmcgcG9pbnQgdG8gaW50ZWdlcgoJY29udmVyc2lvbnMsIHJldHVybiB0aGUgbWF4aW11bS9taW5pbXVtIHJlcHJlc2VudGFibGUgaW50ZWdlcgoJdmFsdWUgaWYgdGhlIHJlYWwgY29uc3RhbnQgb3ZlcmZsb3dzIHRoZSBkZXN0aW5hdGlvbiB0eXBlLgoJKiB0cmVlLmMgKHJlYWxfdmFsdWVfZnJvbV9pbnRfY3N0KTogQWxsb3cgdGhlIHR5cGUgdG8gYmUgTlVMTCwKCW1lYW5pbmcgZG9uJ3QgdHJ1bmNhdGUgdGhlIHJlc3VsdCB0byBhIGZsb2F0aW5nIHBvaW50IG1vZGUuCglTaW1wbGlmeSB0aGUgbG9naWMgYnkgY2FsbGluZyByZWFsX2Zyb21faW50ZWdlciBkaXJlY3RseS4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbik6ICBJbXBsZW1lbnQgdGhlCglzYW1lIHNlbWFudGljcyBmb3IgZm9sZGluZyBmbG9hdGluZyBwb2ludCB0byBpbnRlZ2VyIGNvbnZlcnNpb25zCglpbiBSVEwuCgoyMDAzLTEwLTAzICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAYnJvYWRjb20uY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2VtaXRfcHJlZmV0Y2gpOiBSZXN0cnVjdHVyZQoJdG8gYXZvaWQgdXNlIG9mIGFycmF5cywgaGFuZGxlIGluZGV4ZWQgcHJlZmV0Y2guCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoSVNBX0hBU19GUDQsIElTQV9IQVNfUFJFRkVUQ0gpOiBVcGRhdGUgY29tbWVudHMuCgkoSVNBX0hBU19QUkVGRVRDSFgpOiBOZXcgZGVmZmluZS4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoInR5cGUiIGF0dHIpOiBBZGQgbmV3ICJwcmVmZXRjaHgiIHZhbHVlLAoJdXBkYXRlIGNvbW1lbnRzLgoJKHByZWZldGNoX2luZGV4ZWRfZGksIHByZWZldGNoX2luZGV4ZWRfc2kpOiBOZXcgaW5zbnMuCgoyMDAzLTEwLTAzICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgkgICAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzEyMjg5CgkqIGNhbGxzLmMgKGVtaXRfY2FsbF8xKTogUHJldGVuZCB0byBoYXZlIHBvcHBlZCB0aGUgYXJndW1lbnRzCgl0byBub3JldHVybiBhbmQgbG9uZ2ptcCBmdW5jdGlvbnMgaW5zdGVhZCBvZiBpZ25vcmluZyB0aGVtLgoJKGV4cGFuZF9jYWxsKTogRG9uJ3QgYWRqdXN0IHN0YWNrX3BvaW50ZXJfZGVsYSB3aGlsZQoJaW5oaWJpdF9kZWZlcl9wb3AgaXMgc2V0LgoKMjAwMy0xMC0wMyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCglQUiBib290c3RyYXAvMTIyNzYKCSogY29uZmlndXJlLmluOiBDaGVjayBmb3IgbGlidW53aW5kIG9uIHRoZSBob3N0IG9ubHkgaWYgYnVpbGRpbmcKCWEgbmF0aXZlIGNvbXBpbGVyLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMy0xMC0wMyAgUGFvbG8gQ2FybGluaSAgPHBjYXJsaW5pQHVuaXR1cy5pdD4KCgkqIHVud2luZC1wZS5oIChyZWFkX2VuY29kZWRfdmFsdWVfd2l0aF9iYXNlKTogQ29uc3RpZnkgdSBhbmQKCWl0cyBpbml6aWFsaXphdGlvbiBjYXN0LgoKMjAwMy0xMC0wMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xMjQ4NQoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfbG9hZF9nb3QpOiBHT1QgYWNjZXNzZXMgY2FuJ3QgdHJhcC4KCjIwMDMtMTAtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzEyMTgwCgkqIHRyZWUtaW5saW5lLmMgKGlubGluZV9mb3JiaWRkZW5fcF8xKTogRG8gbm90IHBlcm1pdCBpbmxpbmluZyBvZgoJZnVuY3Rpb25zIGNvbnRhaW5pbmcgY2FsbHMgdG8gX19idWlsdGluX25leHRfYXJnLgoKMjAwMy0xMC0wMiAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQGJyb2FkY29tLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19lbWl0X3ByZWZldGNoKTogVXNlIG9wZXJhbmQgMwoJaW4gaW5zdHJ1Y3Rpb25zIGJlaW5nIG91dHB1dC4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAocHJlZmV0Y2hfc2lfYWRkcmVzcyk6IENoYW5nZSB0aGlyZAoJb3BlcmFuZCdzIGNvbnN0cmFpbnQgbGV0dGVyIHRvICdJJy4KCShwcmVmZXRjaF9kaV9hZGRyZXNzKTogTGlrZXdpc2UuCgkocHJlZmV0Y2hfc2ksIHByZWZldGNoX2RpKTogU2V0IHRoaXJkIG9wZXJhbmQgdG8gY29uc3QwX3J0eC4KCjIwMDMtMTAtMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzeXN0ZW0uaDogUG9pc29uIG1hY3JvcyBvYnNvbGV0ZWQgYnkgZWFybGllciBwYXRjaC4KCSogY29uZmlnL2NyaXMvY3Jpcy5jOiBDOTAtaWZ5IGEgZnVuY3Rpb24gZGVmaW5pdGlvbi4KCjIwMDMtMTAtMDIgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCglQUi8xMjI5MgoJKiBjb21iaW5lLmMgKG1ha2VfZmllbGRfYXNzaWdubWVudCk6IENoZWNrIHdoZXRoZXIgcnR4J3MgY29kZQoJaXMgQ09OU1RfSU5UIGJlZm9yZSB1c2luZyBJTlRWQUwuCgoyMDAzLTEwLTAyICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJKiBjZ3JhcGguYyAoY2dyYXBoX25vZGUpOiBVc2UgSU5TRVJUIGluc3RlYWQgb2YgMSBpbgoJaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoLgoJKGNncmFwaF9ub2RlX2Zvcl9pZGVudGlmaWVyKTogVXNlIE5PX0lOU0VSVC4KCShjZ3JhcGhfcmVtb3ZlX25vZGUpOiBVc2UgTk9fSU5TRVJULgoJKGNncmFwaF92YXJwb29sX25vZGUpOiBVc2UgSU5TRVJULgoJKGNncmFwaF92YXJwb29sX25vZGVfZm9yX2lkZW50aWZpZXIpOiBVc2UgTk9fSU5TRVJULgoKMjAwMy0xMC0wMiAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCVdhbGRlayBIZWJpc2NoIDxoZWJpc2NoQG1hdGgudW5pLndyb2MucGw+CglQUi8xMjA3MgoJKiB2YXJhc20uYyAoY29tcGFyZV9jb25zdGFudCk6IEZpeCB0aGlua28uCgoyMDAzLTEwLTAyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfaXNzdWVfcmF0ZSk6IE5ldyBmdW5jdGlvbi4KCShmcnZfcGFja19pbnNucyk6IFVzZSBpdC4KCShUQVJHRVRfU0NIRURfSVNTVUVfUkFURSk6IERlZmluZS4KCjIwMDMtMTAtMDIgIFN0ZXZlbiBCb3NzY2hlciA8cy5ib3NzY2hlckBzdHVkZW50LnR1ZGVsZnQubmw+CgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYzogQ29udmVydCB0byBJU08gQzkwIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucwoJYW5kIGRlZmluaXRpb25zLgoJKiBjb25maWcvbWNvcmUvbWNvcmUuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tY29yZS9tY29yZS1wcm90b3MuaDogTGlrZXdpc2UuCgoyMDAzLTEwLTAyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5jIChmcnZfdXNlX2RmYV9waXBlbGluZV9pbnRlcmZhY2UpOiBOZXcgZnVuY3Rpb24uCgkoVEFSR0VUX1NDSEVEX1VTRV9ERkFfUElQRUxJTkVfSU5URVJGQUNFKTogRGVmaW5lLgoKMjAwMy0xMC0wMSAgUGVyIEJvdGhuZXIgIDxwYm90aG5lckBhcHBsZS5jb20+CgoJKiBjLWxleC5jIChzcmNfbGluZSk6ICAgUmVtb3ZlIHVubmVlZGVkIHN0YXRpYyB2YXJpYWJsZS4KCShjYl9saW5lX2NoYW5nZSk6ICBTZXQgaW5wdXRfbGluZSBkaXJlY3RseSwgaW5zdGVhZCBvZiBzcmNfbGluZS4KCShnZXRfbm9uX3BhZGRpbmdfdG9rZW4pOiAgV2Ugbm8gbG9uZ2VyIG5lZWQgdG8gY29tcGVuc2F0ZSBmb3IgdGhlCgkiaG9ycmlibGUgdGhpbmdzIiB0aGUgQysrIGZyb250LWVuZCBkb2VzIHdpdGggdGhlIGN1cnJlbnQgbGluZSBudW1iZXIsCgoJKiBjcHBsaWIuYyAoX2NwcF9wb3BfYnVmZmVyKTogIERvIGdlbmVyYXRlIGEgX2NwcF9kb19maWxlX2NoYW5nZQoJY2FsbGJhY2sgZXZlbiB3aGVuIHBvcHBpbmcgdGhlIG1haW4gZmlsZS4KCSogYy1sZXguYyAoZmVfZmlsZV9jaGFuZ2UpOiAgSGFuZGxlIGEgTlVMTCBuZXdfbWFwLgoJKiBmaXgtaGVhZGVyLmMgKGNiX2ZpbGVfY2hhbmdlKTogIExpa2V3aXNlLgoJKiBjLXBwb3V0cHV0LmMgKHBwX2ZpbGVfY2hhbmdlKTogIExpa2V3aXNlLgoKCSogY3BwaW5pdC5jIChjcHBfcmVhZF9tYWluX2ZpbGUpOiAgU3BsaXQgaW50byB0d28gZnVuY3Rpb25zOgoJRGlzdHJpYnV0ZSBfY3BwX3N0YWNrX2ZpbGUgY2FsbCBvdmVyIHRoZSB0d28gZnVuY3Rpb25zLgoJKGNwcF9maW5kX21haW5fZmlsZSk6ICBOZXcgZnVuY3Rpb24uCglEb24ndCBjYWxsIF9jcHBfZG9fZmlsZV9jaGFuZ2UgZXZlbiBpZiB3b3JraW5nX2RpcmVjdG9yeSBmbGFnIHNldC4KCShjcHBfcHVzaF9tYWluX2ZpbGUpOiAgTmV3IGZ1bmN0aW9uLgoJKiBjcHBmaWxlcy5jIChfY3BwX2ZpbmRfZmFpbGVkKTogIE5ldyBoZWxwZXIgZnVuY3Rpb24uCgkoZmluZF9maWxlKTogIE1hZGUgbm9uLXN0YXRpYyBhbmQgcmVuYW1lZCB0byBfY3BwX2ZpbmRfZmlsZS4KCShfY3BwX3N0YWNrX2ZpbGUpOiAgTm8gbG9uZ2VyIG5lZWRlZC4gIEJ1dCBub3RlIHRoZSBmb2xsb3dpbmcuCgkoc3RhY2tfZmlsZSk6ICBNYWRlIG5vbi1zdGF0aWMgYW5kIHJlbmFtZWQgdG8gX2NwcF9zdGFja19maWxlLgoJKiBmaXgtaGVhZGVyLmMgKGNwcF9yZWFkX21haW5fZmlsZSk6ICBSZXBsYWNlIGNwcF9yZWFkX21haW5fZmlsZQoJY2FsbCB3aXRoIGNhbGxzIHRvIGNwcF9maW5kX21haW5fZmlsZSBhbmQgY3BwX3B1c2hfbWFpbl9maWxlLgoJKHNlYXJjaF9wYXRoX2hlYWQpOiAgSWYgdGhlcmUgaXMgbm8gY3VycmVudCBidWZmZXIsIHVzZSBtYWluX2ZpbGUuCgkqIGNwcGhhc2guaDogIFVwZGF0ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgkqIGNwcGxpYi5oOiAgVXBkYXRlIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiAgRG9uJ3QgY2FsbCBjcHBfZmluZF9tYWluX2ZpbGUgeWV0LgoJKGNfY29tbW9uX3BhcnNlX2ZpbGUpOiAgTm8gbG9uZ2VyIG5lZWQgdG8gY2FsbCBjcHBfcmVhZF9tYWluX2ZpbGUKCXdoZW4gZmlsZV9pbmRleCA+IDAgKGFzIGluIG11bHRpLWZpbGUgb3Igc2VydmVyIGNvbXBpYXRpb24pLgoJKGZpbmlzaF9vcHRpb25zKTogIENoYW5nZSB0byA8YnVpbHQtaW4+IGlzIGFuIExDX0VOVEVSLCBub3QgTENfUkVOQU1FCglhcyB0aGlzIG5vdyBoYXBwZW5zIGJlZm9yZSBjcHBfcHVzaF9tYWluX2ZpbGUuCgkocHVzaF9jb21tYW5kX2xpbmVfaW5jbHVkZSk6ICBXaGVuIGRvbmUgd2l0aCBvcHRpb25zLCBwYXNzIExDX0xFQVZFCglpbnN0ZWFkIG9mIExDX1JFTkFNRSB0byBjcHBfY2hhbmdlX2ZpbGUgYW5kIGZpbmFsbHkgY3BwX3B1c2hfbWFpbl9maWxlLgoJKGZlX2ZpbGVfY2hhbmdlKTogIEhhbmRsZSBOVUxMIG5ld19tYXAsIGFuZCBzaW1wbGlmeS4KCSogY3BwbGV4LmMgKF9jcHBfZ2V0X2ZyZXNoX2xpbmUpOiAgUmV2ZXJ0IG15IG5vLWxvbmdlci1uZWVkZWQKCTA4LTI4IGNoYW5nZSwgc2luY2Ugd2UncmUgbmV2ZXIgY2FsbGVkIHdpdGggYSBOVUxMIGJ1ZmZlci4KCShfY3BwX2xleF9kaXJlY3QpOiAgTGlrZXdpc2UuCgkqIGNwcHRyYWQuYyAoX2NwcF9yZWFkX2xvZ2ljYWxfbGluZV90cmFkKTogIExpa2V3aXNlLgoJUmV0dXJuIGZhbHNlIGlmIGJ1ZmZlciBpcyBOVUxMIGF0IGVuZC4KCgkqIGNwcGxleC5jIChfY3BwX2dldF9mcmVzaF9saW5lKTogIFJldHVybiB2YWx1ZSBub3cganVzdCBkZXBlbmRzIG9uCgl3aGV0aGVyIHBmaWxlLT5idWZmZXIgaXMgTlVMTCBhZnRlciBwb3AsIGlnbm9yaW5nIHJldHVybl9hdF9lb2YuCgkqIGNwcGhhc2guaCAoc3RydWN0IGNwcF9idWZmZXIpOiAgUmVtb3ZlIHVudXNlZCByZXR1cm5fYXRfZW9mIGZpZWxkLgoJKiBjcHBsaWIuYyAoY3BwX3B1c2hfYnVmZmVyKTogIFNpbmNlIHdlIG5vIGxvbmdlciBzZXQgcmV0dXJuX2F0X2VvZiwKCXJlbW92ZSB0aGUgdW51c2VkIHJldHVybl9hdF9lb2YgcGFyYW1ldGVyLgoJKiBjcHBmaWxlcy5jLCBjcHBsaWIuYywgY3BwbWFjcm8uYywgY3BwcGNoLmMsIGZpeC1oZWFkZXIuYzoKCVVwZGF0ZSBjYWxsZXJzIG9mIGNwcF9wdXNoX2J1ZmZlci4KCjIwMDMtMTAtMDEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0YXJnZXQuaCAoaW5pdF9saWJmdW5jcyk6IE5ldyBob29rLgoJKiB0YXJnZXQtZGVmLmg6IERlZmF1bHQgVEFSR0VUX0lOSVRfQlVJTFRJTlMgYW5kCglUQVJHRVRfSU5JVF9MSUJGVU5DUyB0byBob29rX3ZvaWRfdm9pZC4gIEFkZAoJVEFSR0VUX0lOSVRfTElCRlVOQ1MgdG8gVEFSR0VUX0lOSVRJQUxJWkVSLgoJKiBidWlsdGlucy5jIChkZWZhdWx0X2luaXRfYnVpbHRpbnMpOiBEZWxldGUuCgkqIGV4cHIuaCAoZGVmYXVsdF9pbml0X2J1aWx0aW5zKTogRGVsZXRlIHByb3RvdHlwZS4KCSogZG9jL3RtLnRleGk6IERvY3VtZW50IFRBUkdFVF9JTklUX0xJQkZVTkNTIGFuZCBVU19TT0ZUV0FSRV9HT0ZBU1QuCglUd2VhayBkb2N1bWVudGF0aW9uIG9mIFRBUkdFVF9GTE9BVF9MSUJfQ09NUEFSRV9SRVRVUk5TX0JPT0wuCglSZW1vdmUgZG9jdW1lbnRhdGlvbiBvZiBJTklUX1RBUkdFVF9PUFRBQlMsIE1VTFNJM19MSUJDQUxMLAoJRElWU0kzX0xJQkNBTEwsIFVESVZTSTNfTElCQ0FMTCwgTU9EU0kzX0xJQkNBTEwsIFVNT0RTSTNfTElCQ0FMTCwKCU1VTERJM19MSUJDQUxMLCBESVZESTNfTElCQ0FMTCwgVURJVkRJM19MSUJDQUxMLCBNT0RESTNfTElCQ0FMTCwKCWFuZCBVTU9EREkzX0xJQkNBTEwsCgoJKiBNYWtlZmlsZS5pbiAob3B0YWJzLm8pOiBEZXBlbmRzIG9uIHRhcmdldC5oLgoJKiBkZWZhdWx0cy5oOiBQcm92aWRlIGRlZmF1bHQgZm9yIEZMT0FUX0xJQl9DT01QQVJFX1JFVFVSTlNfQk9PTC4KCSogb3B0YWJzLmM6IEluY2x1ZGUgdGFyZ2V0LmguCgkocHJlcGFyZV9mbG9hdF9saWJfY21wKTogTm8gbmVlZCBmb3IgI2lmZGVmIGFyb3VuZCB1c2Ugb2YKCUZMT0FUX0xJQl9DT01QQVJFX1JFVFVSTlNfQk9PTC4KCShzZXRfb3B0YWJfbGliZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShpbml0X29wdGFicyk6IERlbGV0ZSB1c2Ugb2YgYWxsICpfTElCQ0FMTCBkZWZpbmVzLgoJQ2FsbCB0YXJnZXRtLmluaXRfbGliZnVuY3Mgbm90IElOSVRfVEFSR0VUX09QVEFCUy4KCSogb3B0YWJzLmg6IFByb3RvdHlwZSBzZXRfb3B0YWJfbGliZnVuYy4KCgkqIGNvbmZpZy5nY2M6IFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBwYS9sb25nX2RvdWJsZS5oLAoJaWE2NC9ocHV4X2xvbmdkb3VibGUuaCwgYW5kIGdvZmFzdC5oLgoJKG1pcHMtKi0qKTogV2hlbiAtLWVuYWJsZS1nb2Zhc3QsIGp1c3QgYWRkIFVTX1NPRlRXQVJFX0dPRkFTVAoJdG8gdG1fZGVmaW5lczsgZG9uJ3Qgc2V0IElOSVRfU1VCVEFSR0VUX09QVEFCUyBvciBjaGFuZ2UgdG1fZmlsZS4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jLCBjb25maWcvYzR4L2M0eC5jLCBjb25maWcvY3Jpcy9jcmlzLmMKCSogY29uZmlnL2Zydi9mcnYuYywgY29uZmlnL2g4MzAwL2g4MzAwLmMsIGNvbmZpZy9pODYwL2k4NjAuYwoJKiBjb25maWcvaWE2NC9pYTY0LmMsIGNvbmZpZy9pcDJrL2lwMmsuYywgY29uZmlnL202OGhjMTEvbTY4aGMxMS5jCgkqIGNvbmZpZy9taXBzL21pcHMuYywgY29uZmlnL3BhL3BhLmMsIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMsIGNvbmZpZy92YXgvdmF4LmM6CglQcm92aWRlIGEgZGVmaW5pdGlvbiBmb3IgVEFSR0VUX0lOSVRfTElCRlVOQ1MuICBXaGVyZQoJbmVjZXNzYXJ5LCBpbmNsdWRlIG9wdGFicy5oLCBsaWJmdW5jcy5oLCBhbmQvb3IgY29uZmlnL2dvZmFzdC5oLgoKCSogY29uZmlnL2FscGhhL3VuaWNvc21rLmgsIGNvbmZpZy9hbHBoYS92bXMuaCwgY29uZmlnL2M0eC9jNHguaAoJKiBjb25maWcvYXZyL2F2ci5oLCBjb25maWcvY3Jpcy9jcmlzLmgsIGNvbmZpZy9mcnYvZnJ2LmgKCSogY29uZmlnL2g4MzAwL2g4MzAwLmgsIGNvbmZpZy9pODYwL2k4NjAuaCwgY29uZmlnL2lwMmsvaXAyay5oCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmgsIGNvbmZpZy9tNjhoYzExL202OGhjMTEuaCwgY29uZmlnL21pcHMvbWlwcy5oCgkqIGNvbmZpZy9yczYwMDAvYWl4LmgsIGNvbmZpZy9yczYwMDAvc3lzdjQuaCwgY29uZmlnL3NwYXJjL2VsZi5oCgkqIGNvbmZpZy9zcGFyYy9saXRlLmgsIGNvbmZpZy9zcGFyYy9uZXRic2QtZWxmLmgsIGNvbmZpZy9zcGFyYy9zb2wyLmgKCSogY29uZmlnL3NwYXJjL3NwYXJjLmgsIGNvbmZpZy92ODUwL3Y4NTAuaCwgY29uZmlnL3ZheC92YXguaAoJKiBjb25maWcvdmF4L2VsZi5oOiBEb24ndCBkZWZpbmUgb3IgdXNlIElOSVRfVEFSR0VUX09QVEFCUywKCUlOSVRfU1VCVEFSR0VUX09QVEFCUywgb3IgYW55ICpfTElCQ0FMTCBtYWNyb3MuCgoJKiBjb25maWcvaWE2NC9ocHV4Lmg6IFJlZGVmaW5lIElOVEVMX0VYVEVOREVEX0lFRUVfRk9STUFUIHRvIDAuCglTZXQgVEFSR0VUX0lOSVRfTElCRlVOQ1MgYW5kIEZMT0FUX0xJQl9DT01QQVJFX1JFVFVSTlNfQk9PTCBoZXJlLgoJKiBjb25maWcvcGEvcGEtaHB1eC5oOiBEZWZpbmUgTE9OR19ET1VCTEVfVFlQRV9TSVpFLAoJSFBVWF9MT05HX0RPVUJMRV9MSUJSQVJZLCBhbmQgRkxPQVRfTElCX0NPTVBBUkVfUkVUVVJOU19CT09MIGhlcmUuCgkqIGNvbmZpZy9pYTY0L2hwdXhfbG9uZ2RvdWJsZS5oLCBjb25maWcvcGEvbG9uZ19kb3VibGUuaDogRGVsZXRlLgoKCSogY29uZmlnL3JzNjAwMC94Y29mZi5oOiBEb24ndCBkZWZpbmUgUlM2MDAwX0lUUlVOQyBub3IgUlM2MDAwX1VJVFJVTkMuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oOiBEZWZhdWx0IFNVTl9DT05WRVJTSU9OX0xJQkZVTkNTIGFuZAoJU1VOX0lOVEVHRVJfTVVMVElQTFlfNjQgdG8gMC4KCSogY29uZmlnL3NwYXJjL3NvbDIuaDogUmVkZWZpbmUgU1VOX0NPTlZFUlNJT05fTElCRlVOQ1MgYW5kCglTVU5fSU5URUdFUl9NVUxUSVBMWV82NCB0byAxLgoJKiBjb25maWcvc3BhcmMvZWxmLmg6IFJlZGVmaW5lIFNVTl9DT05WRVJTSU9OX0xJQkZVTkNTIGFuZAoJU1VOX0lOVEVHRVJfTVVMVElQTFlfNjQgdG8gMC4KCSogY29uZmlnL3NwYXJjL2xpdGUuaCwgY29uZmlnL3NwYXJjL2xpdGVlbGYuaCwgY29uZmlnL3NwYXJjL3NwODZ4LWVsZi5oOgoJRGVmaW5lIFVTX1NPRlRXQVJFX0dPRkFTVC4KCSogY29uZmlnL3ZheC92YXguaDogRGVmYXVsdCBUQVJHRVRfRUxGIHRvIDAuCgkqIGNvbmZpZy92YXgvZWxmLmg6IFJlZGVmaW5lIFRBUkdFVF9FTEYgdG8gMS4KCgkqIGNvbmZpZy9nb2Zhc3QuaDogRG9uJ3QgZGVmaW5lIGFueSBtYWNyb3MgaGVyZS4gIFByb3ZpZGUgb25lCglzdGF0aWMgZnVuY3Rpb24sIGdvZmFzdF9tYXliZV9pbml0X2xpYmZ1bmNzLCB3aGljaCBkb2VzIHdoYXQKCUlOSVRfR09GQVNUX0xJQkZVTkNTIHVzZWQgdG8gZG8gYnV0IG9ubHkgaWYgVVNfU09GVFdBUkVfR09GQVNUCglpcyBhbHJlYWR5IGRlZmluZWQuICBEbyBub3QgY2xlYXIgbmVnYXRpb24gbGliZnVuY3MuICBEbwoJbm90IG1lc3Mgd2l0aCBIRm1vZGUsIFhGbW9kZSwgb3IgVEZtb2RlIGxpYmZ1bmNzLgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX2luaXRfb25jZSk6ICNpZiAwIG91dDsgbWFyayBGSVhNRS4KCjIwMDMtMTAtMDEgIEtlbGxleSBDb29rICA8a2VsbGV5Y29va0B3aWRlb3Blbndlc3QuY29tPgoKCVBSIEMvMTI0NjYKCSogYy1wYXJzZS5pbiAocGFybWxpc3RfMik6IE1hcmsgZGVjbGFyYXRpb24gd2l0aCBhbiBlbGxpcHNpcyBhcyBJU08gQy4KCjIwMDMtMTAtMDEgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnL21pcHMveG0taXJpczUuaDogUmVtb3ZlLCB1bm5lY2Vzc2FyeS4KCSogY29uZmlnLmJ1aWxkIChtaXBzLXNnaS1pcml4NSopOiBSZW1vdmUuCgkobWlwcy1zZ2ktaXJpeDYqbzMyKTogTGlrZXdpc2UuCgkqIGNvbmZpZy5nY2MgKG1pcHMtc2dpLWlyaXg2Km8zMik6IFJlbW92ZSB4bV9maWxlLgoJKG1pcHMtc2dpLWlyaXg1Y3Jvc3M2NCk6IExpa2V3aXNlLgoJKG1pcHMtc2dpLWlyaXg1Kik6IExpa2V3aXNlLgoJKiBjb25maWcuaG9zdCAobWlwcy1zZ2ktaXJpeDUqKTogUmVtb3ZlLgoJKG1pcHMtc2dpLWlyaXg2Km8zMik6IExpa2V3aXNlLgoKMjAwMy0xMC0wMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRieG91dC5jIChkYnhvdXRfZnB0eXBlX3ZhbHVlKTogRGVsZXRlLgoJKGRieG91dF90eXBlKTogRW1pdCBSMyBmb3IgYWxsIENPTVBMRVhfVFlQRXMuCgoyMDAzLTEwLTAxICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIG91dHB1dC5oIChjb21wdXRlX3JlbG9jX2Zvcl9jb25zdGFudCk6IERlY2xhcmUuCgkqIHZhcmFzbS5jIChjb21wdXRlX3JlbG9jX2Zvcl9jb25zdGFudCk6IEV4dHJhY3QgZnJvbS4uLgoJKG91dHB1dF9hZGRyZXNzZWRfY29uc3RhbnRzKTogLi4uIGhlcmUuICBBZGp1c3QgYWxsIGNhbGxlcnMuCgoyMDAzLTEwLTAxICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogYWNsb2NhbC5tNDogQWRkIGhwdXgxMCogYW5kIGhwdXgxMS4wMCB0byAvZGV2L3plcm8gYmxhY2tsaXN0LgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAzLTEwLTAxICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZm9sZC1jb25zdC5jIChtYWtlX3JhbmdlKTogV2hlbiBoYW5kbGluZyB1bnNpZ25lZCwgZG9uJ3QgcmV2ZXJzZQoJcmFuZ2UgaWYgaGlnaCBib3VuZCBpcyB6ZXJvLgoKMjAwMy0wOS0zMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGRlZAoJY29uZGV4ZWNfc2lfbWVkaWFfb3BlcmF0b3IsIGNvbmRleGVjX3NmX2FkZF9vcGVyYXRvciBhbmQKCWNvbmRleGVjX3NmX2NvbnZfb3BlcmF0b3IuICBSZW1vdmVkIGNvbmRleGVjX3NmX2JpbmFyeV9vcGVyYXRvcgoJYW5kIGNvbmRleGVjX3NmX3VuYXJ5X29wZXJhdG9yLgoKMjAwMy0xMC0wMSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIGFjbG9jYWwubTQ6IEFkZCB1bHRyaXgqIHRvIC9kZXYvemVybyBibGFja2xpc3QuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDMtMTAtMDEgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogZXhjZXB0LmggKE1VU1RfVVNFX1NKTEpfRVhDRVBUSU9OUyk6IFJldmVydCAyMDAzLTA5LTIzIGNoYW5nZS4KCUFsbG93IG92ZXJyaWRlLgoJKiBkb2MvdG0udGV4aSAoTVVTVF9VU0VfU0pMSl9FWENFUFRJT05TKTogRG9jdW1lbnQuCgoyMDAzLTA5LTIzICBEYXZpZCBTLiBNaWxsZXIgIDxkYXZlbUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL2xpbnV4LmggKExJTktfR0NDX0NfU0VRVUVOQ0VfU1BFQyk6IFVuZGVmaW5lCgliZWZvcmUgcmVkZWZpbmluZy4KCSogY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAoTElOS19HQ0NfQ19TRVFVRU5DRV9TUEVDKTogTGlrZXdpc2UuCgoyMDAzLTEwLTAxICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvY3Jpcy9jcmlzLXByb3Rvcy5oLCBjb25maWcvY3Jpcy9jcmlzLmM6IENvbnZlcnQgdG8gSVNPCglDOTAgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGFuZCBkZWZpbml0aW9ucy4KCjIwMDMtMTAtMDEgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYyAoY3Jpcy0qLWxpbnV4Kik6IFJldmVydCBtaXN0YWtlbiBjb21taXQuCgoyMDAzLTEwLTAxICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMTc1MwoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKGxlbmd0aCBhdHRyaWJ1dGUpIFtmY2MgYnJhbmNoXTogQWRkIDEgdG8KCXRoZSBsZW5ndGggaW4gdGhlIG5vbi1WOSBjYXNlLgoKMjAwMy0wOS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChleHBhbmRfYnVpbHRpbl9pbml0X2R3YXJmX3JlZ19zaXplcyk6IEhvbm9yCglEV0FSRl9BTFRfRlJBTUVfUkVUVVJOX0NPTFVNTi4KCSogdW53aW5kLWR3Mi5jIChkd2FyZl9yZWdfc2l6ZV90YWJsZSk6IEV4cGFuZCBieSBvbmUuCgkoX1Vud2luZF9HZXRHUiwgX1Vud2luZF9TZXRHUik6IFZhbGlkYXRlIGxvb2t1cCBjb2x1bW4uCgkodXdfZnJhbWVfc3RhdGVfZm9yKTogUmV0dXJuIGVuZC1vZi1zdGFjayBmb3IgbnVsbCByZXR1cm4gYWRkcmVzcy4KCSogZG9jL3RtLnRleGkgKERXQVJGX0FMVF9GUkFNRV9SRVRVUk5fQ09MVU1OKTogQWRkLgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX3NhX21hc2spOiBBZGQgcjMxIGZvciBlaF9yZXR1cm4uCgkoYWxwaGFfZXhwYW5kX3Byb2xvZ3VlKTogU3RvcmUgYSB6ZXJvIGZvciBpdC4KCShhbHBoYV9leHBhbmRfZXBpbG9ndWUpOiBEb24ndCByZWxvYWQgaXQuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChEV0FSRl9BTFRfRlJBTUVfUkVUVVJOX0NPTFVNTik6IE5ldy4KCSogY29uZmlnL2FscGhhL2xpbnV4LmggKE1EX0ZBTExCQUNLX0ZSQU1FX1NUQVRFX0ZPUik6IFVzZSBjb2x1bW4gNjQKCWZvciB0aGUgc2lnZnJhbWUgcmV0dXJuIGFkZHJlc3MuCgoyMDAzLTA5LTMwICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb29rQHdpZGVvcGVud2VzdC5jb20+CgoJKiBzZGJvdXQuYzogQ29udmVydCB0byBJU08gQzkwIHByb3RvdHlwZXMuCgkqIG9iamMvb2JqYy1hY3QuYzogTGlrZXdpc2UuCgoyMDAzLTA5LTMwICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb29rQHdpZGVvcGVud2VzdC5jb20+CgoJKiBjb25maWcvaTM4Ni9jeWd3aW4xLmM6IENvbnZlcnQgdG8gSVNPIEM5MCBwcm90b3R5cGVzLgoJKiBjb25maWcvaTM4Ni93aW5udC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvY3lnbWluZy5oOiBMaWtld2lzZS4KCjIwMDMtMDktMzAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBGb2xkIChBICYgfkIpIC0gKEEgJiBCKSBpbnRvCgkoQSBeIEIpIC0gQiBmb3IgYW55IEIuCgoyMDAzLTA5LTMwICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2MgKGFybSotKi1rYW9zKiwgaVszNDU2N104Ni0qLWthb3MqLCBwb3dlcnBjLSota2FvcyosCglwb3dlcnBjbGUtKi1rYW9zKiwgc3Ryb25nYXJtLSota2FvcyopOiBEaXNhYmxlIGZpeHByb3RvLgoKMjAwMy0wOS0zMCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0vaWVlZTc1NC1zZi5TOiBUaWR5IGZvcm1hdHRpbmcuCgoyMDAzLTA5LTMwICBOaWNvbGFzIFBpdHJlICA8bmljb0BjYW0ub3JnPgoKCSogYXJtL2xpYjFmdW5jcy5hc20gKEFSTV9ESVZfTU9EX0JPRFkpOiBTcGxpdCBpbnRvIEFSTV9ESVZfQk9EWQoJYW5kIEFSTV9NT0RfQk9EWS4KCShBUk1fTU9EX0JPRFkpOiBSZXdyaXR0ZW4uIGFkZGVkIGNseiBpbnNucyBmb3IgX19BUk1fQVJDSF9fID49IDUuCgkoQVJNX0RJVl9CT0RZKTogQWRkZWQgY2x6IGluc25zIGZvciBfX0FSTV9BUkNIX18gPj0gNSwKCWFkZGVkIGJldHRlciBkaXZpc29yIGFsaWdubWVudCBpbiB0aGUgb3RoZXIgY2FzZS4KCShBUk1fRElWMl9PUkRFUik6IEFkZGVkLCBmaW5kcyB0aGUgb3JkZXIgb2YgYSBzaW5nbGUgYml0IGRpdmlzb3IuCgkoX19kaXZzaTMsIF9fdWRpdnNpMywgX19tb2RzaTMsIF9fdW1vZHNpMyk6IHJld3JpdHRlbiB1c2luZyB0aGUKCW1hY3JvcyBhYm92ZSwgYWRkIGZhc3QgZXhpdHMgZm9yIGRpdmlzb3IgPj0gZGl2aWRlbmQsIGV0Yy4KCjIwMDMtMDktMzAgIE5pY29sYXMgUGl0cmUgIDxuaWNvQGNhbS5vcmc+CgoJKiBhcm0vaWVlZTc1NC1kZi5TOiBTcGxpdCBjb21waWxhdGlvbiBvZiBmaXh1bnNkZnNpIGZyb20KCUxfZml4ZGZzaSB0YXJnZXQuCgkqIGFybS90LWFybS1lbGYgKExJQjFBU01GVU5DUyk6IEFkZCBfZml4dW5zZGZzaS4KCjIwMDMtMDktMzAgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYzogRGVmYXVsdCB1c2VfZml4cHJvdG8gdG8gJ25vJy4KCjIwMDMtMDktMzAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTIzNDUKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19yZXN0b3JlX2dwKTogUmVtb3ZlLgoJKG1pcHNfZ3Bfc2F2ZV9zbG90KTogRGVjbGFyZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3Jlc3RvcmVfZ3ApOiBSZW1vdmUgaW4gZmF2b3Igb2YuLi4KCShtaXBzX2dwX3NhdmVfc2xvdCk6IC4uLnRoaXMgbmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChleGNlcHRpb25fcmVjZWl2ZXIpOiBVc2UgbWlwc19ncF9zYXZlX3Nsb3QKCWFuZCBtaXBzX291dHB1dF9tb3ZlIHRvIGdlbmVyYXRlIHRoZSBvdXRwdXQgdGVtcGxhdGUuCgkoY2FsbF9pbnRlcm5hbCk6IEZvcmNlIHNwbGl0dGluZyBpZiBUQVJHRVRfU1BMSVRfQ0FMTFMuICBEb24ndCBlbWl0CglhIGdwIGxvYWQgYWZ0ZXIgYSBub3JldHVybiBjYWxsLiAgTG9hZCB0aGUgZ3AgdXNpbmcgYSBtb3ZlIHJhdGhlcgoJdGhhbiBhbiBleGNlcHRpb25fcmVjZWl2ZXIgcGF0dGVybi4KCShjYWxsX3ZhbHVlX2ludGVybmFsLCBjYWxsX3ZhbHVlX211bHRpcGxlX2ludGVybmFsKTogTGlrZXdpc2UuCgkoY2FsbF9zcGxpdCwgY2FsbF92YWx1ZV9zcGxpdCwgY2FsbF92YWx1ZV9tdWx0aXBsZV9zcGxpdCk6IENsb2JiZXIgJDI4LgoKMjAwMy0wOS0zMCAgQ2FybG8gV29vZCAgPGNhcmxvQGFsaW5vZS5jb20+CgoJUFIgZGVidWcvMTIzMTkKCSogY2ZnbGF5b3V0LmMgKGluc25fc2NvcGUpOiAgVXNlIHByb2xvZ3VlX2xvY2F0b3IgYW5kCgllcGlsb2d1ZV9sb2NhdG9yOyByZXR1cm4gdGhlIG91dGVyIGZ1bmN0aW9uIHNjb3BlIGZvcgoJcHJvLSBhbmQgZXBpbG9ndWUgaW5zbnMuCgoyMDAzLTA5LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb2JqYy9vYmpjLWFjdC5jIChlbmNvZGVfdHlwZSk6IEVuY29kZSBJTlRFR0VSX1RZUEVzIGFuZAoJUkVBTF9UWVBFcyBiYXNlZCBvbiB0aGUgYml0c2l6ZSBvZiB0aGUgdHlwZSdzIG1vZGUsIG5vdCB0aGUKCW1vZGUgZGlyZWN0bHkuCgoyMDAzLTA5LTI5ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGR3YXJmMm91dC5jIChkZWZhdWx0X2VoX2ZyYW1lX3NlY3Rpb24pOiBTcGxpdCBpbnRvIC4uLgoJKG5hbWVkX3NlY3Rpb25fZWhfZnJhbWVfc2VjdGlvbiwgY29sbGVjdDJfZWhfZnJhbWVfc2VjdGlvbik6IC4uLiBuZXcKCWZ1bmN0aW9ucy4KCSogb3V0cHV0LmggKG5hbWVkX3NlY3Rpb25fZWhfZnJhbWVfc2VjdGlvbik6IERlY2xhcmUuCgkoY29sbGVjdDJfZWhfZnJhbWVfc2VjdGlvbik6IExpa2V3aXNlLgoKMjAwMy0wOS0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJlYWwuYyAocmVhbF9zcXJ0KTogVXNlIGdldF9jYW5vbmljYWxfcW5hbiBkaXJlY3RseS4KCgkqIGR3YXJmMm91dC5jIChhZGRfY29uc3RfdmFsdWVfYXR0cmlidXRlKTogVXNlIHJlYWxfdG9fdGFyZ2V0LgoKCSogdmFyYXNtLmMgKGFzc2VtYmxlX3JlYWwpOiBVc2UgcmVhbF90b190YXJnZXQgZGlyZWN0bHksCgljYWxjdWxhdGUgdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBlbGVtZW50cyBvZiB0aGUgcmVzdWx0CglhcnJheSBhbmQgd3JpdGUgdGhlbSBvdXQgaW4gYSBsb29wLCBpbnN0ZWFkIG9mIHVzaW5nIGEgZ2lhbnQKCXN3aXRjaCBzdGF0ZW1lbnQgdG8gcGljayB0aGUgY29ycmVjdCBSRUFMX1ZBTFVFX1RPX1RBUkdFVF8qCgltYWNyby4KCjIwMDMtMDktMjkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBjKysvMTIxNzUKCSogdmFyYXNtLmMgKG5vdGljZV9nbG9iYWxfc3ltYm9sKTogRGlzY2FyZCBleHRlcm5hbCBzeW1ib2xzLgoKCVBSIG9wdGltaXphdGlvbi8xMjI4NgoJKiBnY292LWlvLmMgKGdjb3ZfcmVhZF93b3Jkcyk6IEZpeCBtZW1tb3ZlIGNhbGwuCgkqIHByb2ZpbGUuYyAoY29tcHV0ZV9icmFuY2hfcHJvYmFiaWxpdGllcyk6IEFkZCBleHRyYSBzYW5pdHkgY2hlY2tzLgoKMjAwMy0wOS0yOSAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWcuZ2NjIChzcGFyYy0qLXNvbGFyaXMyKik6IEhhbmRsZSBTb2xhcmlzIDEwIGFuZCB1cCBsaWtlCglTb2xhcmlzIDctOS4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHNvbGFyaXNfd2lkZWMpOiBSZXBsYWNlIHNvbGFyaXMyLlswLTVdKiBieQoJd2lsZGNhcmRzIHdoaWNoIGV4cGxpY2l0bHkgbWF0Y2ggbWljcm8gdmVyc2lvbnMuCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoyMDAzLTA5LTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogRm9sZCAoQSAmIH5CKSAtIChBICYgQikgaW50bwoJKEEgXiBCKSAtIEIsIHdoZXJlIEIgaXMgYW55IHBvd2VyIG9mIDIgbWludXMgMS4KCjIwMDMtMDktMjkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGxpYmdjb3YuYyAoZ2Nvdl9leGl0KTogRml4IHR3byBwYXN0b3MuCgoyMDAzLTA5LTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kICgqdHN0X2V4dHp2XzFfbik6IENvbWJpbmUgd2l0aCB0aGUKCWRlZmluZV9zcGxpdCBpbW1lZGlhdGVseSBiZWxvdyB0byBmb3JtIGRlZmluZV9pbnNuX2FuZF9zcGxpdC4KCjIwMDMtMDktMjkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKCp0c3RzaV92YXJpYWJsZV9iaXQpOiBOZXcuCgkoKnRzdHNpX3ZhcmlhYmxlX2JpdF9xaSk6IExpa2V3aXNlLgoKMjAwMy0wOS0yOCAgUGhpbCBFZHdhcmRzICA8cGhpbEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2NwcG9wdHMudGV4aTogIFVzZSAnZGFzaE1QJyBpbnN0ZWFkIG9mICctTVAnIGFzIGEgY3Jvc3MtCglyZWZlcmVuY2UgbmFtZS4KCjIwMDMtMDktMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogQ29weSBERUNMX1NPVVJDRV9MT0NBVElPTiwgbm90CglmaWxlIGFuZCBsaW5lIHNlcGFyYXRlbHkuCgoyMDAzLTA5LTI4ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKmFkZGRpM19jYXJyeTFfY2MiLCAiKmFkZGRpM19jYXJyeTFfY2Nvbmx5IiwKCSIqYWRkZGkzX2NhcnJ5Ml9jYyIsICIqYWRkZGkzX2NhcnJ5Ml9jY29ubHkiLCAiKnN1YmRpM19ib3Jyb3dfY2MiLAoJIipzdWJkaTNfYm9ycm93X2Njb25seSIpOiBOZXcgaW5zbnMuCgkoIiphZGRzaTNfc3ViIiwgIipzdWJzaTNfc3ViIik6IFJlbW92ZS4KCSgiKnN1YmRpM19jYyIsICpzdWJkaTNfY2Nvbmx5Iik6IFVzZSBvbmx5IGlmIFRBUkdFVF82NEJJVC4KCSgiKnN1YnNpM19jYyIpOiBGaXggb3BfdHlwZSBhdHRyaWJ1dGUuCgoyMDAzLTA5LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogVGFrZSBhIGxvY2F0aW9uX3QsIGluc3RlYWQgb2YKCWluZGl2aWR1YWwgZmlsZSBhbmQgbGluZS4KCSogYy10eXBlY2suYyAoY19leHBhbmRfYXNtX29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHRyZWUuaCAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IFVwZGF0ZSBkZWNsLgoJKiBjLWNvbW1vbi5oIChjX2V4cGFuZF9hc21fb3BlcmFuZHMpOiBMaWtld2lzZS4KCSogYy1zZW1hbnRpY3MgKGdlbnJ0bF9hc21fc3RtdCk6IFVwZGF0ZSBjYWxsLgoKMjAwMy0wOS0yOCAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBDaGVjawoJU1lNQk9MX1JFRl9MT0NBTF9QLCBub3QgRU5DT0RFRF9TSE9SVF9DQUxMX0FUVFJfUC4KCShhcm1fYXNzZW1ibGVfaW50ZWdlcik6IExpa2V3aXNlLgoKMjAwMy0wOS0yOCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3BkcDExL3BkcDExLXByb3Rvcy5oLCBjb25maWcvcGRwMTEvcGRwMTEuYywKCWNvbmZpZy9jNHgvYzR4LWMuYywgY29uZmlnL2M0eC9jNHgtcHJvdG9zLmgsIGNvbmZpZy9jNHgvYzR4LmMsCgljb25maWcvYzR4L2M0eC5oOgoJQ29udmVydCB0byBJU08gQzkwIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBhbmQgZGVmaW5pdGlvbnMuCgoyMDAzLTA5LTI4ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiAgY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMsIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi1wcm90b3MuaDoKCUNvbnZlcnQgdG8gSVNPIEM5MCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgYW5kIGRlZmluaXRpb25zLgoKMjAwMy0wOS0yOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2NvbnN0YW50X2luZm8pOiBBZGQgcmVsb2MgZmllbGQuCgkobWlwc19jbGFzc2lmeV9jb25zdGFudCk6IEluaXRpYWxpemUgaXQuICBBbHdheXMgc2V0IFNZTUJPTCB0byB0aGUKCXVuZGVybHlpbmcgc3ltYm9sLCBub3QgdG8gYW4gdW5zcGVjLgoJKG1pcHNfZGVsZWdpdGltaXplX2FkZHJlc3MsIHByaW50X29wZXJhbmQpOiBDbGVhbiB1cCBhY2NvcmRpbmdseS4KCjIwMDMtMDktMjggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHMxNl9ncF9wc2V1ZG9fcmVnKTogUmVtb3ZlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKExFR0lUSU1BVEVfQ09OU1RBTlRfUCk6IFJlbW92ZSBvcnBoYW5lZCBjb21tZW50LgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfcmVsb2Nfb2Zmc2V0X29rX3ApOiBOZXcgZnVuY3Rpb24uCgkobWlwc19jbGFzc2lmeV9jb25zdGFudCk6IFVzZSBpdC4KCShtaXBzX3NwbGl0dGFibGVfc3ltYm9sX3ApOiBBZGQgYW4gb2Zmc2V0IGFyZ3VtZW50LgoJKG1pcHNfY2xhc3NpZnlfYWRkcmVzcyk6IEFkanVzdCBjYWxsIGFjY29yZGluZ2x5LgoJKG1pcHNfbGVnaXRpbWl6ZV9zeW1ib2wpOiBIYW5kbGUgc2RhdGEgcmVmZXJlbmNlcyB3aXRoIExPX1NVTSByYXRoZXIKCXRoYW4gYSByZWxvY2F0aW9uIHVuc3BlYy4gIFVwZGF0ZSBjYWxsIHRvIG1pcHNfc3BsaXR0YWJsZV9zeW1ib2xfcC4KCUdlbmVyYWxpemUgdGhlIGNvZGUgdGhhdCBjb3BlcyB3aXRoIHN5bWJvbHMgKyBpbnZhbGlkIG9mZnNldHMuCgkocHJpbnRfb3BlcmFuZCk6IEFsbG93ICclUicgdG8gYmUgYXBwbGllZCB0byBzbWFsbCBkYXRhIGFkZHJlc3Nlcy4KCShtaXBzX3JlbG9jX3N0cmluZyk6IFJlbW92ZSBSRUxPQ19HUFJFTDE2LgoJKG1pcHNfc2RhdGFfcG9pbnRlcik6IFJlbmFtZWQgZnJvbSBtaXBzMTZfZ3BfcHNldWRvX3JlZy4gIFJldHVybiAkZ3AKCWZvciBUQVJHRVRfRVhQTElDSVRfUkVMT0NTLiAgUmV0dXJuIG51bGwgaWYgd2UgY2FuJ3QgdXNlIGdwLXJlbGF0aXZlCglyZWxvY2F0aW9uIG9wZXJhdG9ycy4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoUkVMT0NfR1BSRUwxNik6IFJlbW92ZS4gIFNodWZmbGUgb3RoZXIgcmVsb2MKCWNvbnN0YW50cyBhY2NvcmRpbmdseS4KCjIwMDMtMDktMjcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdG9wbGV2LmMgKGZsYWdfZXZhbHVhdGlvbl9vcmRlcik6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkqIGZsYWdzLmggKGZsYWdfZXZhbHVhdGlvbl9vcmRlcik6IFByb3RvdHlwZSBoZXJlLgoJKiBleHByLmMgKGV4cGFuZF9vcGVyYW5kcyk6IElmIHdlIG5lZWQgdG8gcHJlc2VydmUgb2JzZXJ2YWJsZQoJZXZhbHVhdGlvbiBvcmRlciwgcHJvdGVjdCBleHAxIGZyb20gY2xvYmJlcmluZyBleHAwJ3MgcmVzdWx0LgoKMjAwMy0wOS0yOCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogYy1kZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IENvbnZlcnQgZGVmaW5pdGlvbiB0byBJU08gQzkwLgoJKiBpZmN2dC5jIChtYXJrX2xvb3BfZXhpdF9lZGdlcyk6IExpa2V3aXNlLgoJKiByYS1yZXdyaXRlLmMgKGVtaXRfY29sb3JzKTogTGlrZXdpc2UuCgoyMDAzLTA5LTI3ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2MgKGFscGhhKi1kZWMtb3NmWzQ1XSopOiBEaXNhYmxlIGZpeHByb3RvLgoJKiBjb25maWcuZ2NjIChhcm0qLSotdWNsaW51eCopOiBEaXNhYmxlIGZpeHByb3RvLgoJKiBjb25maWcuZ2NjIChwb3dlcnBjLSotZWFiaXNwZSosIHBvd2VycGMtKi1lYWJpc2ltYWx0aXZlYyosCglwb3dlcnBjLSotZWFiaWFsdGl2ZWMqKTogRGlzYWJsZSBmaXhwcm90by4KCjIwMDMtMDktMjcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzEyMzQwCgkqIGxvb3AuaCAoc3RydWN0IGluZHVjdGlvbik6IERvY3VtZW50IHRoZSBuZXcgc2VtYW50aWNzCglvZiB0aGUgJ3NhbWUnIGZpZWxkIGZvciBiaXZzLgoJKiB1bnJvbGwuYyAoYml2X3RvdGFsX2luY3JlbWVudCk6IERvbid0IGNvdW50IHRoZSBzYW1lCgliaXYgaW5jcmVtZW50IHNldmVyYWwgdGltZXMuCgkobG9vcF9pdGVyYXRpb25zKSBbR0VORVJBTF9JTkRVQ1RdOiBMaWtld2lzZS4KCjIwMDMtMDktMjcgIEdyYWhhbSBTdG90dCAgPGdyYWhhbS5zdG90dEBidGludGVybmV0LmNvbT4KCgkqIHVucm9sbC5jIChsb29wX2ludGVyYXRpb25zKVtHVF06IEFkZCBtaXNzaW5nIGJyZWFrLgoKMjAwMy0wOS0yNyAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9jaG9ydXMuaCwgY29uZmlnL2Rhcndpbi1jLmMsIGNvbmZpZy9kYXJ3aW4tcHJvdG9zLmgsCgljb25maWcvZGFyd2luLmMsIGNvbmZpZy9kYXJ3aW4uaCwgY29uZmlnL2RieC5oLCBjb25maWcvZGJ4Y29mZi5oLAoJY29uZmlnL2RieGVsZi5oLCBjb25maWcvZWxmb3MuaCwgY29uZmlnL2ZwLWJpdC5oLAoJY29uZmlnL2ZyZWVic2QtbnRoci5oLCBjb25maWcvZnJlZWJzZC1zcGVjLmgsIGNvbmZpZy9mcmVlYnNkLmgsCgljb25maWcvZnJlZWJzZDMuaCwgY29uZmlnL2ZyZWVic2Q0LmgsIGNvbmZpZy9mcmVlYnNkNS5oLAoJY29uZmlnL2ZyZWVic2Q2LmgsIGNvbmZpZy9uZXRic2QtYW91dC5oLCBjb25maWcvbmV0YnNkLWVsZi5oLAoJY29uZmlnL25ldGJzZC5oLCBjb25maWcvbmV0d2FyZS5oLCBjb25maWcvb3BlbmJzZC1vbGRnYXMuaCwKCWNvbmZpZy9vcGVuYnNkLmgsIGNvbmZpZy9wdHg0LmgsIGNvbmZpZy9hbHBoYS9hbHBoYS1wcm90b3MuaCwKCWNvbmZpZy9hbHBoYS9hbHBoYS5jLCBjb25maWcvYWxwaGEvYWxwaGEuaCwgY29uZmlnL2FscGhhL2FscGhhLm1kLAoJY29uZmlnL2FscGhhL2VsZi5oLCBjb25maWcvYWxwaGEvZXY0Lm1kLCBjb25maWcvYWxwaGEvZXY1Lm1kLAoJY29uZmlnL2FscGhhL2V2Ni5tZCwgY29uZmlnL2FscGhhL2ZyZWVic2QuaCwgY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oLAoJY29uZmlnL2FscGhhL2xpbnV4LmgsIGNvbmZpZy9hbHBoYS9uZXRic2QuaCwgY29uZmlnL2FscGhhL29wZW5ic2QuaCwKCWNvbmZpZy9hbHBoYS9vc2YuaCwgY29uZmlnL2FscGhhL29zZjUuaCwgY29uZmlnL2FscGhhL3VuaWNvc21rLmgsCgljb25maWcvYWxwaGEvdm1zLWNjLmMsIGNvbmZpZy9hbHBoYS92bXMtY3J0MC02NC5jLAoJY29uZmlnL2FscGhhL3Ztcy1jcnQwLmMsIGNvbmZpZy9hbHBoYS92bXMtZHdhcmYyLmFzbSwKCWNvbmZpZy9hbHBoYS92bXMtZHdhcmYyZWguYXNtLCBjb25maWcvYWxwaGEvdm1zLWxkLmMsCgljb25maWcvYWxwaGEvdm1zLXBzeGNydDAtNjQuYywgY29uZmlnL2FscGhhL3Ztcy1wc3hjcnQwLmMsCgljb25maWcvYWxwaGEvdm1zLmgsIGNvbmZpZy9hbHBoYS92bXM2NC5oLCBjb25maWcvYWxwaGEvdm1zX3RyYW1wLmFzbSwKCWNvbmZpZy9hbHBoYS94bS12bXMuaCwgY29uZmlnL2FyYy9hcmMtbW9kZXMuZGVmLAoJY29uZmlnL2FyYy9hcmMtcHJvdG9zLmgsIGNvbmZpZy9hcmMvYXJjLmMsIGNvbmZpZy9hcmMvYXJjLmgsCgljb25maWcvYXJjL2FyYy5tZCwgY29uZmlnL2FyYy9pbml0ZmluaS5jLCBjb25maWcvYXJjL2xpYjFmdW5jcy5hc20sCgljb25maWcvYXZyL2F2ci1wcm90b3MuaCwgY29uZmlnL2F2ci9hdnIuYywgY29uZmlnL2F2ci9hdnIuaCwKCWNvbmZpZy9hdnIvYXZyLm1kLCBjb25maWcvZDMwdi9kMzB2LXByb3Rvcy5oLCBjb25maWcvZDMwdi9kMzB2LmgsCgljb25maWcvZDMwdi9kMzB2Lm1kLCBjb25maWcvZnIzMC9mcjMwLXByb3Rvcy5oLCBjb25maWcvZnIzMC9mcjMwLmMsCgljb25maWcvZnIzMC9mcjMwLmgsIGNvbmZpZy9mcjMwL2ZyMzAubWQsIGNvbmZpZy9mcjMwL2xpYjFmdW5jcy5hc20sCgljb25maWcvZnJ2L2Ntb3ZkLmMsIGNvbmZpZy9mcnYvY21vdmguYywgY29uZmlnL2Zydi9jbW92dy5jLAoJY29uZmlnL2Zydi9mcnYtYWJpLmgsIGNvbmZpZy9mcnYvZnJ2LWFzbS5oLCBjb25maWcvZnJ2L2Zydi1tb2Rlcy5kZWYsCgljb25maWcvZnJ2L2Zydi1wcm90b3MuaCwgY29uZmlnL2Zydi9mcnYuYywgY29uZmlnL2Zydi9mcnYuaCwKCWNvbmZpZy9mcnYvZnJ2Lm1kLCBjb25maWcvZnJ2L2ZydmJlZ2luLmMsIGNvbmZpZy9mcnYvZnJ2ZW5kLmMsCgljb25maWcvZnJ2L2xpYjFmdW5jcy5hc20sIGNvbmZpZy9oODMwMC9jbHpoaTIuYywgY29uZmlnL2g4MzAwL2N0emhpMi5jLAoJY29uZmlnL2g4MzAwL3Bhcml0eWhpMi5jLCBjb25maWcvaDgzMDAvcG9wY291bnRoaTIuYywKCWNvbmZpZy9pMzcwL2kzNzAtYy5jLCBjb25maWcvaTM3MC9pMzcwLXByb3Rvcy5oLCBjb25maWcvaTM3MC9pMzcwLmMsCgljb25maWcvaTM3MC9pMzcwLmgsIGNvbmZpZy9pMzcwL2kzNzAubWQsIGNvbmZpZy9pMzcwL2xpbnV4LmgsCgljb25maWcvaTM3MC9tdnMuaCwgY29uZmlnL2kzNzAvb2UuaCwgY29uZmlnL2kzODYvZGFyd2luLmgsCgljb25maWcvaTk2MC9pOTYwLWMuYywgY29uZmlnL2k5NjAvaTk2MC1jb2ZmLmgsCgljb25maWcvaTk2MC9pOTYwLW1vZGVzLmRlZiwgY29uZmlnL2k5NjAvaTk2MC1wcm90b3MuaCwKCWNvbmZpZy9pOTYwL2k5NjAuYywgY29uZmlnL2k5NjAvaTk2MC5oLCBjb25maWcvaTk2MC9pOTYwLm1kLAoJY29uZmlnL2k5NjAvcnRlbXMuaCwgY29uZmlnL2lhNjQvZWxmLmgsIGNvbmZpZy9pYTY0L2lhNjQuaCwKCWNvbmZpZy9tMzJyL2luaXRmaW5pLmMsIGNvbmZpZy9tMzJyL20zMnItcHJvdG9zLmgsIGNvbmZpZy9tMzJyL20zMnIuYywKCWNvbmZpZy9tMzJyL20zMnIuaCwgY29uZmlnL20zMnIvbTMyci5tZCwgY29uZmlnL202OGhjMTEvbGFyaXRoLmFzbSwKCWNvbmZpZy9tNjhoYzExL202OGhjMTEtcHJvdG9zLmgsIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYywKCWNvbmZpZy9tNjhoYzExL202OGhjMTEuaCwgY29uZmlnL202OGhjMTEvbTY4aGMxMS5tZCwKCWNvbmZpZy9tNjhoYzExL202OGhjMTIuaCwgY29uZmlnL202OGsvY29mZi5oLCBjb25maWcvbTY4ay9jcnRpLnMsCgljb25maWcvbTY4ay9jcnRuLnMsIGNvbmZpZy9tNjhrL2hwMzIwLmgsIGNvbmZpZy9tNjhrL2hwMzIwYmFzZS5oLAoJY29uZmlnL202OGsvbGIxc2Y2OC5hc20sIGNvbmZpZy9tNjhrL2xpbnV4LmgsIGNvbmZpZy9tNjhrL202ODAyMC1lbGYuaCwKCWNvbmZpZy9tNjhrL202OGstYW91dC5oLCBjb25maWcvbTY4ay9tNjhrLW5vbmUuaCwKCWNvbmZpZy9tNjhrL202OGstcHJvdG9zLmgsIGNvbmZpZy9tNjhrL202OGsuYywgY29uZmlnL202OGsvbTY4ay5oLAoJY29uZmlnL202OGsvbTY4ay5tZCwgY29uZmlnL202OGsvbTY4a2VsZi5oLCBjb25maWcvbTY4ay9tNjhrdjQuaCwKCWNvbmZpZy9tNjhrL25ldGJzZC1lbGYuaCwgY29uZmlnL202OGsvb3BlbmJzZC5oLAoJY29uZmlnL202OGsvcnRlbXNlbGYuaCwgY29uZmlnL202OGsvc2dzLmgsIGNvbmZpZy9tY29yZS9saWIxLmFzbSwKCWNvbmZpZy9tY29yZS9tY29yZS1lbGYuaCwgY29uZmlnL21jb3JlL21jb3JlLXBlLmgsCgljb25maWcvbWNvcmUvbWNvcmUtcHJvdG9zLmgsIGNvbmZpZy9tY29yZS9tY29yZS5jLAoJY29uZmlnL21jb3JlL21jb3JlLm1kLCBjb25maWcvbWlwcy9lbGYuaCwgY29uZmlnL21pcHMvZWxmNjQuaCwKCWNvbmZpZy9taXBzL2VsZm9yaW9uLmgsIGNvbmZpZy9taXBzL2lyaXM1LmgsIGNvbmZpZy9taXBzL2lyaXM2LmgsCgljb25maWcvbWlwcy9pcmlzNmdsZC5oLCBjb25maWcvbWlwcy9pcml4Ni1saWJjLWNvbXBhdC5jLAoJY29uZmlnL21pcHMvbGludXguaCwgY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCwgY29uZmlnL21pcHMvbWlwcy5jLAoJY29uZmlnL21pcHMvbWlwcy5oLCBjb25maWcvbWlwcy9taXBzLm1kLCBjb25maWcvbWlwcy9uZXRic2QuaCwKCWNvbmZpZy9taXBzL29wZW5ic2QuaCwgY29uZmlnL21pcHMvcjM5MDAuaCwgY29uZmlnL21pcHMvcnRlbXMuaCwKCWNvbmZpZy9taXBzL3ZyLmgsIGNvbmZpZy9tbjEwMzAwL2xpbnV4LmgsCgljb25maWcvbW4xMDMwMC9tbjEwMzAwLXByb3Rvcy5oLCBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMsCgljb25maWcvbW4xMDMwMC9tbjEwMzAwLmgsIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQsCgljb25maWcvbnMzMmsvX191bm9yZGRmMi5jLCBjb25maWcvbnMzMmsvX191bm9yZHNmMi5jLAoJY29uZmlnL25zMzJrL25ldGJzZC5oLCBjb25maWcvbnMzMmsvbnMzMmstcHJvdG9zLmgsCgljb25maWcvbnMzMmsvbnMzMmsuYywgY29uZmlnL25zMzJrL25zMzJrLmgsIGNvbmZpZy9uczMyay9uczMyay5tZCwKCWNvbmZpZy9wZHAxMS8yYnNkLmgsIGNvbmZpZy9wZHAxMS9wZHAxMS1tb2Rlcy5kZWYsCgljb25maWcvcGRwMTEvcGRwMTEtcHJvdG9zLmgsIGNvbmZpZy9wZHAxMS9wZHAxMS5jLAoJY29uZmlnL3BkcDExL3BkcDExLmgsIGNvbmZpZy9wZHAxMS9wZHAxMS5tZCwgY29uZmlnL3JzNjAwMC9iaWFyY2g2NC5oLAoJY29uZmlnL3JzNjAwMC9kZWZhdWx0NjQuaCwgY29uZmlnL3NoL2NvZmYuaCwgY29uZmlnL3NoL2NydDEuYXNtLAoJY29uZmlnL3NoL2NydGkuYXNtLCBjb25maWcvc2gvY3J0bi5hc20sIGNvbmZpZy9zaC9lbGYuaCwKCWNvbmZpZy9zaC9lbWJlZC1lbGYuaCwgY29uZmlnL3NoL2xpbnV4LmgsIGNvbmZpZy9zaC9saXR0bGUuaCwKCWNvbmZpZy9zaC9uZXRic2QtZWxmLmgsIGNvbmZpZy9zaC9ydGVtcy5oLCBjb25maWcvc2gvcnRlbXNlbGYuaCwKCWNvbmZpZy9zaC9zaC1wcm90b3MuaCwgY29uZmlnL3NoL3NoLmMsIGNvbmZpZy9zaC9zaC5oLAoJY29uZmlnL3NoL3NoLm1kLCBjb25maWcvc2gvc2g2NC5oLCBjb25maWcvc2gvc2htZWRpYS5oLAoJY29uZmlnL3NoL3NzaG1lZGlhLmgsIGNvbmZpZy9zaC91c2htZWRpYS5oLCBjb25maWcvc3BhcmMvcGJkLmgsCgljb25maWcvc3BhcmMvc3BhcmMuaCwgZG9jL2luc3RhbGwtb2xkLnRleGksIGZpeGluYy9maXhpbmMucHR4LAoJZml4aW5jL2ZpeGluYy5zdnI0OiBHTlUgQ0MgLT4gR0NDLgoKMjAwMy0wOS0yNiAgTG9yZW4gSmFtZXMgUml0dGxlICA8bGpyaXR0bGVAYWNtLm9yZz4KCgkqIG9iamMvb2JqYy1hY3QuYyAodG1fcC5oKTogVHdlYWsgb3JkZXIuCgkqIG9iamMvTWFrZS1sYW5nLmluIChvYmpjL29iamMtYWN0Lm8pOiBBZGQgJChUTV9QX0gpLgoKMjAwMy0wOS0yNiAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjIChocHBhKjY0Ki0qLWxpbnV4KiB8IHBhcmlzYyo2NCotKi1saW51eCopOgoJSW5jbHVkZSB0LXNsaWJnY2MtZWxmLXZlciBhbmQgdC1saW51eCBpbiB0bWFrZV9maWxlLgoJKiBjb25maWcuZ2NjIChocHBhKjY0Ki0qLWxpbnV4KiB8IHBhcmlzYyo2NC0qLWxpbnV4Kik6CglEaXNhYmxlIGZpeHByb3RvLgoJKiBjb25maWcuZ2NjIChpOTYwLSotY29mZiosIG02OGstKi1hb3V0Kiwgc3BhcmNsaXRlLSotY29mZiopOgoJRGlzYWJsZSBmaXhwcm90by4KCSogY29uZmlnLmdjYyAoaVszNDU2N104Ni0qLXNvbGFyaXMyKiwgc3BhcmM2NC0qLXNvbGFyaXMyKiwKCXNwYXJjdjktKi1zb2xhcmlzMiosIHNwYXJjLSotc29sYXJpczIqKTogRGlzYWJsZSBmaXhwcm90by4KCgkqIGNvbmZpZy9pMzg2L3VuaXguaDogUmVtb3ZlICh1bnVzZWQpIERFRkFVTFRfQVNTRU1CTEVSX0RJQUxFQ1QuCgoyMDAzLTA5LTI2ICBMb3JlbiBKYW1lcyBSaXR0bGUgIDxsanJpdHRsZUBhY20ub3JnPgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChpeDg2X3JldHVybl9pbl9tZW1vcnkpOiBSZXZlcnQgbXkgbGFzdCBwYXRjaC4KCSogb2JqYy9vYmpjLWFjdC5jICh0bV9wLmgpOiBJbmNsdWRlLgoKMjAwMy0wOS0yNiAgUGVyIEJvdGhuZXIgIDxwYm90aG5lckBhcHBsZS5jb20+CgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3R5cGVkZWZzKTogIE91dHB1dCB0eXBlZGVmcyBpbiBmb3J3YXJkIG9yZGVyLgoJTm8gbG9uZ2VyIGFueSBuZWVkIHRvIHJldmVyc2UgYnkgcmVjdXJzaW9uLgoKMjAwMy0wOS0yNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTE3NDEKCSogZ2NzZS5jIChwcmVfaW5zZXJ0X2NvcHlfaW5zbik6IFR3ZWFrIHRoZSBsb2dpYyBmb3IgZmluZGluZyB0aGUKCWFwcHJvcHJpYXRlIHNldCB0byBtYXRjaCB0aGF0IGluIGhhc2hfc2Nhbl9pbnNuLiAgRmFsbCBiYWNrIHRvCgl0aGUgb3JpZ2luYWwgY29weSBtZXRob2QsIGlmIHdlIGNhbid0IHZhbGlkYXRlIGNoYW5naW5nIGluc24uCgkocHJlX2RlbGV0ZSk6IE9ubHkgZGVsZXRlIGluc3RydWN0aW9ucyB0aGF0IGhhdmUgYSBzaW5nbGVfc2V0LAoJaW5zdGVhZCBvZiBhYm9ydGluZyB3aGVuIHdlIGVuY291bnRlciBhbiBQQVJBTExFTCBpbnNuIHdpdGggbW9yZQoJdGhlbiBvbmUgU0VULgoKMjAwMy0wOS0yNiAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJidWlsdGluX3NldGptcF9zZXR1cCIpOiBJbnNuIGRlbGV0ZWQuCgkoImJ1aWx0aW5fbG9uZ2ptcCIpOiBJbnNuIGRlbGV0ZWQuCgkoInNhdmVfc3RhY2tfbm9ubG9jYWwiKTogU2F2ZSBsaXRlcmFsIHBvb2wgYmFzZSBwb2ludGVyIGJlaGluZAoJYmFja2NoYWluIGFuZCBzdGFjayBwb2ludGVyLgoJKCJyZXN0b3JlX3N0YWNrX25vbmxvY2FsIik6IFJlc3RvcmUgbGl0ZXJhbCBwb29sIGJhc2UgcG9pbnRlci4KCSogY29uZmlnL3MzOTAvczM5MC5oIChTVEFDS19TQVZFQVJFQV9NT0RFKTogRG91YmxlIHNpemUgb2YKCXRoZSBzdGFjayBzYXZlIGFyZWEgZm9yIHRoZSBub25sb2NhbCBnb3RvIGNhc2UuCgoyMDAzLTA5LTI2ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIGJvb3RzdHJhcC8xMjM1OAoJKiBwYS5jIChvdXRwdXRfYnZiKTogRml4IHR5cG8uCgoyMDAzLTA5LTI2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBleHBtZWQuYyAoc3RvcmVfYml0X2ZpZWxkKTogRG9uJ3Qgc2VhcmNoIGZvciBhbiBpbnRlZ2VyIG1vZGUKCXVubGVzcyB3ZSBuZWVkIHRoZSByZXN1bHQuCgoyMDAzLTA5LTI2ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGVtaXRfbW92ZV9pbnNuXzEpOiBJZiB0aGVyZSBpcyBubyBtb3ZlIHBhdHRlcm4gZm9yIHRoZQoJb3JpZ2luYWwgbW9kZSwgdHJ5IHVzaW5nIGEgcGF0dGVybiBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZWdlciBtb2RlLgoKMjAwMy0wOS0yNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvOTIwMAoJKiBjb21iaW5lLmMgKGlmX3RoZW5fZWxzZV9jb25kKTogVGlnaHRlbiBtb2RlIGNoZWNrLgoKMjAwMy0wOS0yNSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjcHBjaGFyc2V0LmMsIGNwcGhhc2guaDogUmVuYW1lICdzdHJ1Y3Qgc3RyYnVmJyB0bwoJJ3N0cnVjdCBfY3BwX3N0cmJ1ZicuCgoJKiBjb25maWcvaTM4Ni9uZXRic2QtZWxmLmgsIGNvbmZpZy9pMzg2L25ldGJzZDY0LmgsCgljb25maWcvaTM4Ni9uZXR3YXJlLmgsIGNvbmZpZy9pMzg2L250by5oLCBjb25maWcvaTM4Ni9vcGVuYnNkLmgsCgljb25maWcvaTM4Ni9wZW50aXVtLm1kLCBjb25maWcvaTM4Ni9wbW1pbnRyaW4uaCwgY29uZmlnL2kzODYvcHByby5tZCwKCWNvbmZpZy9pMzg2L3B0eDQtaS5oLCBjb25maWcvaTM4Ni9ydGVtc2VsZi5oLCBjb25maWcvaTM4Ni9zY281LmgsCgljb25maWcvaTM4Ni9zb2wyLmgsIGNvbmZpZy9pMzg2L3N2cjNnYXMuaCwgY29uZmlnL2kzODYvc3lzdjMuaCwKCWNvbmZpZy9pMzg2L3N5c3Y0LWNwcC5oLCBjb25maWcvaTM4Ni9zeXN2NC5oLCBjb25maWcvaTM4Ni9zeXN2NS5oLAoJY29uZmlnL2kzODYvdW5peC5oLCBjb25maWcvaTM4Ni91d2luLmgsIGNvbmZpZy9pMzg2L3ZzdGEuaCwKCWNvbmZpZy9pMzg2L3htLWN5Z3dpbi5oLCBjb25maWcvaTM4Ni94bS1kamdwcC5oLAoJY29uZmlnL2kzODYveG0tbWluZ3czMi5oLCBjb25maWcvaTM4Ni94bW1pbnRyaW4uaDogUmVwbGFjZQoJIkdOVSBDQyIsICJHTlUgY29tcGlsZXIiLCBhbmQgIkdOVSBDLWNvbXBpbGVyIiB3aXRoICJHQ0MiLgoJKiBjb25maWcvaTM4Ni9pMzg2LWFvdXQuaCwgY29uZmlnL2kzODYvaTM4Ni1jb2ZmLmgsCgljb25maWcvaTM4Ni9pMzg2LWludGVyaXguaCwgY29uZmlnL2kzODYvaTM4Ni1pbnRlcml4My5oLAoJY29uZmlnL2kzODYvaTM4Ni1tb2Rlcy5kZWYsIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmgsCgljb25maWcvaTM4Ni9pMzg2LmMsIGNvbmZpZy9pMzg2L2kzODYuaCwgY29uZmlnL2kzODYvaTM4Ni5tZCwKCWNvbmZpZy9pMzg2L2kzODZlbGYuaCwgY29uZmlnL2kzODYvazYubWQsIGNvbmZpZy9pMzg2L2thb3MtaTM4Ni5oLAoJY29uZmlnL2kzODYvbGludXgtYW91dC5oLCBjb25maWcvaTM4Ni9saW51eC5oLCBjb25maWcvaTM4Ni9saW51eDY0LmgsCgljb25maWcvaTM4Ni9seW54LW5nLmgsIGNvbmZpZy9pMzg2L2x5bnguaCwgY29uZmlnL2kzODYvbWluZ3czMi5oLAoJY29uZmlnL2kzODYvbW1pbnRyaW4uaCwgY29uZmlnL2kzODYvbW9zcy5oOiBHTlUgQ0MgLT4gR0NDLgoJIkdOVSBjb21waWxlciIgLT4gR0NDLgoJKiBjb25maWcvaTM4Ni9hdHQuaCwgY29uZmlnL2kzODYvYmVvcy1lbGYuaCwgY29uZmlnL2kzODYvYmlhcmNoNjQuaCwKCWNvbmZpZy9pMzg2L2JzZC5oLCBjb25maWcvaTM4Ni9jcnRkbGwuaCwgY29uZmlnL2kzODYvY3lnbWluZy5oLAoJY29uZmlnL2kzODYvY3lnd2luLmgsIGNvbmZpZy9pMzg2L2N5Z3dpbjEuYywgY29uZmlnL2kzODYvY3lnd2luMi5jLAoJY29uZmlnL2kzODYvZGFyd2luLmgsIGNvbmZpZy9pMzg2L2RqZ3BwLmgsIGNvbmZpZy9pMzg2L2VtbWludHJpbi5oLAoJY29uZmlnL2kzODYvZnJlZWJzZC1hb3V0LmgsIGNvbmZpZy9pMzg2L2ZyZWVic2QuaCwKCWNvbmZpZy9pMzg2L2ZyZWVic2Q2NC5oLCBjb25maWcvaTM4Ni9nYXMuaDogR05VIENDIC0+IEdDQy4KCjIwMDMtMDktMjUgIEtlbGxleSBDb29rICA8a2VsbGV5Y29va0B3aWRlb3Blbndlc3QuY29tPgoKCSogY2dyYXBoLmMgKGR1bXBfY2dyYXBoKTogIERvbid0IG91dHB1dCBuZXdsaW5lIGJlZm9yZSBkdW1wLiAgQWRkIGluCgkibG9jYWwiIHRvIHRoZSBjYWxsZ3JhcGggZHVtcC4gIE91dHB1dCAiYWZ0ZXIgaW5saW5pbmciIGVhcmxpZXIuCgkqIGNncmFwaHVuaXQuYzogRml4IGR1bXBmaWxlIHdoaXRlc3BhY2UgYW5kIGNvbW1vbml6ZSBoZWFkZXJzIG9mIHRoZQoJY2FsbGdyYXBoIGR1bXBzLiAgQ29ycmVjdCBtaXNzcGVsbGluZ3MuCgkoY2dyYXBoX2RlY2lkZV9pbmxpbmluZyk6ICBPdXRwdXQgbnVtYmVyIG9mIGluc25zIGJlZm9yZSBpbmxpbmluZy4KCU91dHB1dCB0aGUgY2FsbGluZyBmdW5jdGlvbiBpbnRvIHdoaWNoIGEgZnVuY3Rpb24gaXMgaW5saW5lZC4KCShjZ3JhcGhfZGVjaWRlX3NtYWxsX2Z1bmN0aW9ucyk6IEZvcm1hdCBkdW1wIGZpbGUgbGlrZSBhbHdheXNfaW5saW5lLgoKMjAwMy0wOS0yNSAgTG9yZW4gSmFtZXMgUml0dGxlICA8bGpyaXR0bGVAYWNtLm9yZz4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoaXg4Nl9yZXR1cm5faW5fbWVtb3J5KTogQWRkIHByb3RvdHlwZS4KCjIwMDMtMDktMjUgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9lbWl0X3Byb2xvZ3VlKTogU2ltcGxpZnkgYWNjZXNzZXMgdG8KCUZQUiBzbG90cyBpbiB0aGUgc2F2ZSBhcmVhLgoJKHMzOTBfZW1pdF9lcGlsb2d1ZSk6IExpa2V3aXNlLgoKMjAwMy0wOS0yNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY2dyYXBoLmggKGNncmFwaF9yZW1vdmVfZWRnZSk6IERlY2xhcmUuCgkqIGNncmFwaC5jIChjZ3JhcGhfcmVtb3ZlX2VkZ2UpOiBNYWtlIGV4dGVybi4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiBDYWxsIGNncmFwaF9yZW1vdmVfZWRnZQoJaW5zdGVhZCBvZiBjZ3JhcGhfcmVtb3ZlX2NhbGwuCgoyMDAzLTA5LTI1ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBvYmpjL29iamMtYWN0LmMgKGdlbl9kZWNsYXJhdGlvbl8xKTogRml4IHByaW50ZiBmb3JtYXQuCgoyMDAzLTA5LTI1ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChhbGxfY29yZXMpOiBhcm03MTB0LCBhcm03MjB0IGFuZCBhcm03NDB0IGFyZSBhbGwgYmFzZWQgb24gdGhlCglhcm03dGRtaSBjb3JlLgoKMjAwMy0wOS0yNSAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi1wcm90b3MuaCAob2JqY19pbWFnZV9pbmZvX3NlY3Rpb24pOgoJTmV3IHByb3RvdHlwZS4KCjIwMDMtMDktMjUgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCgkqIE1ha2VmaWxlLmluIChzdHViLW9iamMubyk6IERlcGVuZCBvbiAkKEdHQ19IKS4KCjIwMDMtMDktMjUgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYzogR2V0IHJpZCBvZiBtb3JlIGdyYXR1aXRpb3VzICd4J2VzLiAgQWN0dWFsbHkgYWxsb3cKCXRzYzcwMSBhcyBhIC0td2l0aC1jcHUsIC0td2l0aC10dW5lIHNldHRpbmcgZm9yIHNwYXJjLgoKMjAwMy0wOS0yNSAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCSogYy1wYXJzZS5pbiAob2JqY190cnlfc3RtdCk6IERvIG5vdCBzcGVjaWZ5IGEgJXR5cGUuCgoyMDAzLTA5LTI1ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2M6IE5ldyAnd2lkZWx5IHBvcnRlZCBzeXN0ZW0nIGNsYXVzZSBmb3IgcnRlbXMuCglTZXQgdGhyZWFkIGZpbGUgdGhlcmUsIG5vdCBpbiBpbmRpdmlkdWFsIGNsYXVzZXMuCgoyMDAzLTA5LTI1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzYyMjIKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3ZhX2FyZyk6IEhhbmRsZSBhcmd1bWVudHMgdGhhdCBtdXN0IGJlCglwYXNzZWQgb24gdGhlIHN0YWNrLgoKMjAwMy0wOS0yNSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjICh3aWRlbHkgcG9ydGVkIHN5c3RlbXMgc2VjdGlvbik6IE1vc3RseSBhbHBoYWJldGl6ZQoJYnkgc3lzdGVtLiAgQ29tbWVudCB0aGUgY2FzZSB3aGVyZSB3ZSBjYW4ndC4KCSogY29uZmlnLmdjYyAod2lkZWx5IHBvcnRlZCBzeXN0ZW1zIHNlY3Rpb24pOiBSZWluZGVudCBhbmQgY2xlYW4gdXAuCgoJKiBjb25maWcuZ2NjOiBSZW1vdmUgc29tZSB1bm5lY2Vzc2FyeSB1c2VzIG9mICd4JyBpbiBjYXNlIHN0YXRlbWVudHMuCglBY3R1YWxseSBhbGxvdyBlcDkzMTIgYXMgYW4gYXJtIC0td2l0aC1hcmNoIHNldHRpbmcuCgoJKiBjb25maWcuZ2NjICgqLWhwdXgxMSk6IERpc2FibGUgZml4cHJvdG8uCgoyMDAzLTA5LTI0ICBQaGlsIEVkd2FyZHMgIDxwaGlsQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgcGNoLzEyMTEyCgkqIGdjYy9jcHBmaWxlcy5jIChwY2hfb3Blbl9maWxlKTogUmV0dXJuIGJhc2VkIG9uIGNvbWJpbmVkCglyZXN1bHQgb2YgYWxsIGZpbGVzLgoJKHZhbGlkYXRlX3BjaCk6IFJldHVybiB2YWxpZGF0ZSBmbGFnIGZvciBjdXJyZW50IGZpbGUuCgoyMDAzLTA5LTI0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBib290c3RyYXAvMTIzNTgKCSogZm9sZC1jb25zdC5jICh0cmVlX3N3YXBfb3BlcmFuZHNfcCk6IE9ubHkgcmVvcmRlciBvcGVyYW5kcyB3aGVuCglvbmUgb2YgdGhlIG9wZXJhbmRzIGlzIGNvbnN0YW50LgoKMjAwMy0wOS0yNCAgWmllbW93aXQgTGFza2kgIDx6bGFza2lAYXBwbGUuY29tPgoKCU1FUkdFIE9GIG9iamMtaW1wcm92ZW1lbnRzLWJyYW5jaCBpbnRvIE1BSU5MSU5FOgoJKiBNYWtlZmlsZS5pbiAoQ19PQkpTKTogQWRkIGluIHN0dWItb2JqYy5vLgoJKGMtcGFyc2UueSk6IENoYW5nZSBzZWQgZGVtYXJjYXRpb25zIHRvIGJlZ2luIHdpdGggJ0BAJy4KCShzdHViLW9iamMubyk6IE5ldyBydWxlLgoJKiBjLWNvbW1vbi5jIChmbGFnX25pbF9yZWNlaXZlcnMsIGZsYWdfb2JqY19leGNlcHRpb25zLCBmbGFnX3plcm9fbGluaywKCWZsYWdfcmVwbGFjZV9vYmpjX2NsYXNzZXMpOiBOZXcgZmxhZ3MuCgkqIGMtY29tbW9uLmggKFJJRF9BVF9USFJPVywgUklEX0FUX1RSWSwgUklEX0FUX0NBVENILCBSSURfQVRfRklOQUxMWSwKCVJJRF9BVF9TWU5DSFJPTklaRUQpOiBOZXcga2V5d29yZHMuCgkoZmxhZ19uaWxfcmVjZWl2ZXJzLCBmbGFnX29iamNfZXhjZXB0aW9ucywgZmxhZ196ZXJvX2xpbmssCglmbGFnX3JlcGxhY2Vfb2JqY19jbGFzc2VzKTogTmV3IGZsYWdzLgoJKGxvb2t1cF9pbnRlcmZhY2UsIGlzX2NsYXNzX25hbWUsIG9iamNfaXNfb2JqZWN0X3B0ciwgb2JqY19jaGVja19kZWNsLAoJb2JqY19jb21wdHlwZXMsIG9iamNfbWVzc2FnZV9zZWxlY3RvciwgbG9va3VwX29iamNfaXZhciwKCWdldF9jdXJyZW50X3Njb3BlLCBvYmpjX21hcmtfbG9jYWxzX3ZvbGF0aWxlKTogTmV3IHByb3RvdHlwZXMsCglzb21lIG1vdmVkIGZyb20gYy10cmVlLmguCgkqIGMtZGVjbC5jIChnZXRfY3VycmVudF9zY29wZSwgb2JqY19tYXJrX2xvY2Fsc192b2xhdGlsZSk6IE5ldyBmdW5jdGlvbnMuCgkoZmluaXNoX2RlY2wpOiBBZGp1c3Qgd2hlcmUgb2JqY19jaGVja19kZWNsKCkgZ2V0cyBjYWxsZWQuCgkqIGMtbGFuZy5jIChsb29rdXBfaW50ZXJmYWNlLCBpc19jbGFzc19uYW1lLCBvYmpjX2lzX2lkLCAgb2JqY19jaGVja19kZWNsLAoJb2JqY19jb21wdHlwZXMsIG9iamNfbWVzc2FnZV9zZWxlY3RvciwgbG9va3VwX29iamNfaXZhcik6IFJlbW92ZSBzdHVicy4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBBZGQgaGFuZGxpbmcgZm9yICBmbGFnX25pbF9yZWNlaXZlcnMsCglmbGFnX29iamNfZXhjZXB0aW9ucywgZmxhZ19yZXBsYWNlX29iamNfY2xhc3NlcyBhbmQgZmxhZ196ZXJvX2xpbmsuCgkqIGMtcGFyc2UuaW46IFJlcGxhY2UgJ2lmYycgYW5kICdlbmQgaWZjJyBzZWQgbWFya2VycyB3aXRoICdAQGlmYycgYW5kCgknQEBlbmRfaWZjJywgcmVzcGVjdGl2ZWx5LgoJKEFUX1RIUk9XLCBBVF9UUlksIEFUX0NBVENILCBBVF9GSU5BTExZLCBBVF9TWU5DSFJPTklaRUQpOiBOZXcgJXRva2Vucy4KCShvYmpjX3RyeV9zdG10LCBzdXBlcmNsYXNzLCBjbGFzc19pdmFycywgb2JqY190cnlfY2F0Y2gtc3RtdCwKCW9iamNfZmluYWxseV9ibG9jayk6IE5ldyBydWxlcy4KCShjb21wb25lbnRfZGVjbF9saXN0Mik6IENsZWFuIHVwIHNlbWFudGljIGFjdGlvbiBmb3IgQGRlZnMgY29uc3RydWN0LgoJKGNvbXBvbmVudF9kZWNsLCBjOTlfYmxvY2tfc3RhcnQpOiBSZW1vdmUgY2FsbCB0byBhZGRfb2JqY19kZWNscygpLgoJKHBvcGxldmVsKTogQWRkIGNhbGwgdG8gb2JqY19jbGVhcl9zdXBlcl9yZWNlaXZlcigpLgoJKHN0bXQpOiBBZGQgcnVsZXMgZm9yIEB0aHJvdywgQHRyeS4uQGNhdGNoLi5AZmluYWxseSBhbmQgQHN5bmNocm9uaXplZAoJY29uc3RydWN0cy4KCShjbGFzc2RlZiwgbWV0aG9kcHJvdG9saXN0KTogQ2xlYW4gdXAvc2ltcGxpZnkuCgkobWV0aG9kcHJvdG9saXN0Mik6IEVsaW1pbmF0ZS4KCShtZXRob2Rwcm90byk6IENhbGwgYWRkX21ldGhvZCgpIGluc3RlYWQgb2YgYWRkX2NsYXNzX21ldGhvZCgpIGFuZAoJYWRkX2luc3RhbmNlX21ldGhvZCgpLgoJKHJlY2VpdmVyKTogQWRkIFRZUEVOQU1FIHByb2R1Y3Rpb24uCgkocmVzd29yZHMpOiBBZGQgInRocm93IiwgInRyeSIsICJjYXRjaCIsICJmaW5hbGx5IiBhbmQgInN5bmNocm9uaXplZCIuCgkocmlkX3RvX3l5KTogQWRkIEFUX1RIUk9XLCBBVF9UUlksIEFUX0NBVENILCBBVF9GSU5BTExZIGFuZAoJQVRfU1lOQ0hST05JWkVELgoJKiBjLXRyZWUuaCAobG9va3VwX2ludGVyZmFjZSwgaXNfY2xhc3NfbmFtZSwgb2JqY19pc19pZCwgb2JqY19jaGVja19kZWNsLAoJb2JqY19jb21wdHlwZXMsIG9iamNfbWVzc2FnZV9zZWxlY3RvcikKCSogYy10eXBlY2suYyAoY29tcHR5cGVzKTogSW4gT2JqQyBtb2RlLCBjYWxsIG9iamNfY29tcHR5cGVzKCkgZm9yCglzdHJ1Y3QgYW5kIHBvaW50ZXIgdHlwZXMuCgkoYnVpbGRfY19jYXN0KTogRG8gbm90IGRpc2NhcmQgT2JqQyBwcm90b2NvbCBxdWFsaWZpZXJzLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBDYWNoZSByZXN1bHQgb2YgY29tcF90YXJnZXRfdHlwZXMoKSBpbnN0ZWFkCglvZiBjYWxsaW5nIGl0IG1vcmUgdGhhbiBvbmNlLgoJKiBjLm9wdCAoZm5leHQtcnVudGltZSk6IFVwZGF0ZSBkZXNjcmlwdGlvbiBzdHJpbmcuCgkoZm5pbC1yZWNlaXZlcnMsIGZvYmpjLWV4Y2VwdGlvbnMsIGZyZXBsYWNlLW9iamMtY2xhc3NlcywgZnplcm8tbGluayk6CglOZXcgT2JqQy9PYmpDKystc3BlY2lmaWMgZmxhZ3MuCgkqIGZ1bmN0aW9uLmggKEdDQ19GVU5DVElPTl9IKTogSGVhZGVyIGd1YXJkLgoJKiBnZW5ndHlwZS1sZXgubDogVGVhY2ggbGV4ZXIgYWJvdXQgbmV3IEBALi4uIHNlZCBkZW1hcmNhdGlvbnMuCgkqIHN0dWItb2JqYy5jOiBOZXcgZmlsZSwgdG8gYmUgdXNlZCB0byBzYXRpc2Z5IHJlZmVyZW5jZXMgdG8gT2JqQwoJZnVuY3Rpb25zIGJ5IHRoZSBDIGFuZCBDKysgZnJvbnQtZW5kcy4KCSogY29uZmlnL2Rhcndpbi5jIChfT0JKQ19JTUFHRV9JTkZPKTogTmV3IGdsb2JhbCBtZXRhZGF0YS4KCSogY29uZmlnL2Rhcndpbi5oIChGVU5DVElPTik6IEFkZCBpbl9vYmpjX2ltYWdlX2luZm8uCgkoU0VDVElPTl9GVU5DVElPTik6IEFkZCBvYmpjX2ltYWdlX2luZm9fc2VjdGlvbi4KCSogZG9jL2ludm9rZS50ZXhpOiBMaW5rIHRvIEdDQyB3ZWIgc2l0ZSBmb3IgT2JqZWN0aXZlLUMgaW5mb3JtYXRpb24uCgkoLWZjb25zdGFudC1zdHJpbmctY2xhc3MpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCSgtZm5vLW5pbC1yZWNlaXZlcnMsIC1mb2JqYy1leGNlcHRpb25zLCAtZnJlcGxhY2Utb2JqYy1jbGFzc2VzLAoJLWZ6ZXJvLWxpbmspOiBOZXcgZG9jdW1lbnRhdGlvbi4KCSogb2JqYy9NYWtlLWxhbmcuaW4gKG9iamMtcGFyc2UueSk6IENoYW5nZSBzZWQgZGVtYXJjYXRpb25zIHRvIGJlZ2luCgl3aXRoICdAQCcuCgkqIG9iamMvbGFuZy1zcGVjcy5oIChAb2JqZWN0aXZlLWMtaGVhZGVyKTogRml4IC1FIHNwZWMuCgkqIG9iamMvb2JqYy9vYmpjLWFjdC5jOiBSZXBsYWNlIFRZUEVfTkFNRSB3aXRoIE9CSkNfVFlQRV9OQU1FCgl0aHJvdWdob3V0OyBwcm92aWRlIGNhc3RzIGZvciByZXR1cm4gdmFsdWVzIGZyb20gbWVtb3J5IGFsbG9jYXRpb24KCWZ1bmN0aW9ucyAoeG1hbGxvYywgYWxsb2NhLCBnZ2NfYWxsb2MsIGV0Yy4pLgoJKE9CSkNfVk9JRF9BVF9FTkQpOiBOZXcgbWFjcm8uCgkocnRsLmgpOiBEbyBub3QgI2luY2x1ZGUgYW55IG1vcmUuCgkoU1RSSU5HX09CSkVDVF9HTE9CQUxfTkFNRSk6IFJlcGxhY2VkIHdpdGggU1RSSU5HX09CSkVDVF9HTE9CQUxfRk9STUFULgoJKFRBR19NU0dTRU5EX1NUUkVULCBUQUdfTVNHU0VORFNVUEVSX1NUUkVULCBUQUdfTVNHU0VORF9OT05OSUwsCglUQUdfTVNHU0VORF9OT05OSUxfU1RSRVQsIFRBR19FWENFUFRJT05FWFRSQUNULCBUQUdfRVhDRVBUSU9OVFJZRU5URVIsCglUQUdfRVhDRVBUSU9OVFJZRVhJVCwgVEFHX0VYQ0VQVElPTk1BVENILCBUQUdfRVhDRVBUSU9OVEhST1csCglUQUdfU1lOQ0VOVEVSLCBUQUdfU1lOQ0VYSVQpOiBOZXcgTmVYVCBydW50aW1lIGVudHJ5IHBvaW50cy4KCShzdHJ1Y3QgdmFsX3N0YWNrLCBjYXRjaF9jb3VudF9zdGFjaywgZXhjX2JpbmRpbmdfc3RhY2ssICB2YWxfc3RhY2tfcHVzaCwKCXZhbF9zdGFja19wb3ApOiBOZXcuCgkob2JqY19jaGVja19kZWNsKTogRml4IHByZWNvbmRpdGlvbiBmb3IgZXJyb3IgbWVzc2FnZSwgYWxvbmcgd2l0aAoJdGhlIG1lc3NhZ2UgaXRzZWxmLgoJKGxvb2t1cF9hbmRfaW5zdGFsbF9wcm90b2NvbHMpOiBSZW1vdmUgbm9uZXhpc3RlbnQgcHJvdG9jb2xzIGZyb20KCXByb3RvY29sIGxpc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgZXJyb3JfbWFya19ub2RlLgoJKGNyZWF0ZV9idWlsdGluX2RlY2wpOiBVc2UgREVDTF9BUlRJRklDSUFMIG9ubHkgZm9yIFZBUl9ERUNMcy4KCShzZXR1cF9zdHJpbmdfZGVjbCk6IEdlbmVyYWxpemUgdG8gdXNlIFNUUklOR19PQkpFQ1RfR0xPQkFMX0ZPUk1BVC4KCShzeW50aF9tb2R1bGVfcHJvbG9ndWUpOiBHZW5lcmFsIGNsZWFuLXVwOyBjb25zdHJ1Y3QgTmVYVC1zcGVjaWZpYwoJcnVudGltZSBBUEkgcHJvdG90eXBlcyBpZiBuZWVkZWQuCgkoYnVpbGRfc3RyaW5nX2NsYXNzX3RlbXBsYXRlKTogUmVtb3ZlLgoJKGNoZWNrX3N0cmluZ19jbGFzc190ZW1wbGF0ZSwgc3RyaW5nX2xheW91dF9jaGVja2VkKTogTmV3LgoJKGJ1aWxkX29iamNfc3RyaW5nX29iamVjdCk6IEdlbmVyYWxpemUgdG8gd29yayB3aXRoCgktZmNvbnN0YW50LXN0cmluZy1jbGFzcy4KCShidWlsZF9vYmpjX3N5bXRhYl90ZW1wbGF0ZSk6IEZpeCBsYXlvdXQgZm9yIHRoZSBOZVhUIHJ1bnRpbWUuCgkoYnVpbGRfbWV0YWRhdGFfZGVjbCk6IE5ldy4KCShmb3J3YXJkX2RlY2xhcmVfY2F0ZWdvcmllcyk6IENhbGwgYnVpbGRfbWV0YWRhdGFfZGVjbCgpIGluc3RlYWQgb2YKCWNyZWF0ZV9idWlsdGluX2RlY2woKSBldCBhbC4KCShidWlsZF9tb2R1bGVfZGVzY3JpcHRvcik6IFVzZSBPQkpDX1ZPSURfQVRfRU5EIGluc3RlYWQgb2YKCXZvaWRfbGlzdF9ub2RlXzEuCgkoYnVpbGRfc2VsZWN0b3JfcmVmZXJlbmNlX2RlY2wsIGJ1aWxkX2NsYXNzX3JlZmVyZW5jZV9kZWNsLAoJYnVpbGRfb2JqY19zdHJpbmdfZGVjbCk6IERvIG5vdCBzZXQgVFJFRV9SRUFET05MWS4KCShnZXRfcHJvdG9fZW5jb2RpbmcpOiBEbyBub3QgY2FsbCBoYWNrX21ldGhvZF9wcm90b3R5cGUoKS4KCShnZXRfY2xhc3NfcmVmZXJlbmNlKTogQWRkIGZhaWx1cmUgbW9kZSBmb3IgaW52YWxpZCBjbGFzcyBuYW1lczsKCXN1cHBvcnQgLWZ6ZXJvLWxpbms7IGRlZmVyIGlmIGluIGFuIE9iakMrKyB0ZW1wbGF0ZSBkZWNsYXJhdGlvbi4KCShvYmpjX2RlY2xhcmVfYWxpYXMsIG9iamNfZGVjbGFyZV9jbGFzcyk6IEZpeCB1cCBkdXBsaWNhdGUgbmFtZQoJbG9va3VwOyBjaGVjayBmb3IgZ2xvYmFsIHNjb3BlIGlmIGluIE9iakMrKy4KCShpc19jbGFzc19uYW1lKTogR2VuZXJhbGl6ZSB0byB3b3JrIHdpdGggdmFyaW91cyB0cmVlIG5vZGVzIChUWVBFX0RFQ0wsCglSRUNPUkRfVFlQRSwgSURFTlRJRklFUl9OT0RFLCBldGMuKQoJKG9iamNfaXNfaWQpOiBSZW1vdmVkLgoJKG9iamNfaXNfb2JqZWN0X3B0cik6IE5ldyBmdW5jdGlvbi4KCShnZXRfY2xhc3NfaXZhcnNfZnJvbV9uYW1lKTogTmV3IGZ1bmN0aW9uLCB1c2VkIGZvciBAZGVmcyBjb25zdHJ1Y3QuCgkoZ2V0X2NsYXNzX2l2YXJzKTogQWRkIG9wdGlvbiB0byByZXR1cm4gcmF3IGl2YXJzOyBjcmVhdGUgYQoJQ2xBU1NfT1dOX0lWQVJTIGxpc3QgZm9yIGVhY2ggY2xhc3MgYXMgbmVlZGVkLgoJKG9iamNfZW50ZXJfYmxvY2ssIG9iamNfZXhpdF9ibG9jaywgb2JqY19kZWNsYXJlX3ZhcmlhYmxlLAoJb2JqY19idWlsZF90aHJvd19zdG10LCB2YWxfc3RhY2tfcHVzaCwgdmFsX3N0YWNrX3BvcCwKCW9iamNfYnVpbGRfdHJ5X2VudGVyX2ZyYWdtZW50LCBvYmpjX2J1aWxkX2V4dHJhY3RfZXhwciwKCW9iamNfYnVpbGRfdHJ5X2V4aXRfZnJhZ21lbnQsIG9iamNfYnVpbGRfZXh0cmFjdF9mcmFnbWVudCwKCW9iamNfYnVpbGRfdHJ5X3Byb2xvZ3VlLCBvYmpjX2J1aWxkX3RyeV9lcGlsb2d1ZSwKCW9iamNfYnVpbGRfY2F0Y2hfc3RtdCwgb2JqY19idWlsZF9jYXRjaF9lcGlsb2d1ZSwKCW9iamNfYnVpbGRfZmluYWxseV9wcm9sb2d1ZSwgb2JqY19idWlsZF9maW5hbGx5X2VwaWxvZ3VlLAoJb2JqY19idWlsZF90cnlfY2F0Y2hfZmluYWxseV9zdG10LCBvYmpjX2J1aWxkX3N5bmNocm9uaXplZF9wcm9sb2d1ZSwKCW9iamNfYnVpbGRfc3luY2hyb25pemVkX2VwaWxvZ3VlLCBidWlsZF9vYmpjX2V4Y2VwdGlvbl9zdHVmZik6CglOZXcgZnVuY3Rpb25zLgoJKF9KQkxFTik6IF9zZXRqbXAgam1wYnVmIHNpemUgKG5lZWRzIHRvIGJlIG1hZGUgYSB0YXJnZXQgaG9vayBpbgoJdGhlIGZ1dHVyZSkuCgkoYnVpbGRfcHJpdmF0ZV90ZW1wbGF0ZSk6IEZpeCB1cCBjYWxscyB0byBnZXRfY2xhc3NfaXZhcnMoKS4KCShvZmZzZXRfaXNfcmVnaXN0ZXIsIGZvcndhcmRpbmdfb2Zmc2V0KTogUmVtb3ZlLgoJKG9iamNfbWV0aG9kX3Bhcm1fdHlwZSwgb2JqY19lbmNvZGVkX3R5cGVfc2l6ZSk6IE5ldyBmdW5jdGlvbnMuCgkoZW5jb2RlX21ldGhvZF9wcm90b3R5cGUpOiBTaW1wbGlmeSB0byBubyBsb25nZXIgZGVwZW5kIG9uCgliYWNrLWVuZCBpbmZvcm1hdGlvbi4KCShidWlsZF90bXBfZnVuY3Rpb25fZGVjbF94eHgsIGJ1aWxkX3RtcF9mdW5jdGlvbl9kZWNsLAoJaGFja19tZXRob2RfcHJvdG90eXBlKTogUmVtb3ZlZC4KCShnZW5lcmF0ZV9wcm90b2NvbF9yZWZlcmVuY2VzKTogUmVtb3ZlIGNhbGxzIHRvCglidWlsZF90bXBfZnVuY3Rpb25fZGVjbCgpLgoJKGdlbmVyYXRlX3Byb3RvY29scyk6IEFkanVzdCBjYWxscyB0byBlbmNvZGVfbWV0aG9kX3Byb3RvdHlwZSgpLgoJKGJ1aWxkX2NsYXNzX3RlbXBsYXRlKTogR2VuZXJhdGUgc2VsX2lkJyBhbmQgJ2djX29iamVjdF90eXBlJyBmaWVsZHMKCWZvciB0aGUgTmVYVCBydW50aW1lLgoJKHN5bnRoX2ZvcndhcmRfZGVjbGFyYXRpb25zKTogQ2FsbCBidWlsZF9tZXRhZGF0YV9kZWNsKCkuCgkoY2hlY2tfaXZhcnMpOiBDaGVjayB0aGF0IHRoZSBudW1iZXIgb2YgaXZhcnMgbWF0Y2hlcyBhbHNvLgoJKGJ1aWxkX3N1cGVyX3RlbXBsYXRlKTogTW9kaWZ5IHN1cGVyX3R5cGUgZGlyZWN0bHk7IGRpc2FibGUgZGVidWdnaW5nCglvdXRwdXQgd2hpbGUgZ2VuZXJhdGluZyBkZWNsLgoJKGJ1aWxkX2l2YXJfbGlzdF9pbml0aWFsaXplcik6IFNraXAgbGlzdCBlbGVtZW50cyB0aGF0IGFyZSBub3QKCUZJRUxEX0RFQ0xzLgoJKGl2YXJfbGlzdF9sZW5ndGgpOiBOZXcgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfaXZhcl9saXN0cyk6IENhbGwgaXZhcl9saXN0X2xlbmd0aCgpIGluc3RlYWQgb2YgbGlzdF9sZW5ndGgoKQoJYW5kIGVuY29kZV9tZXRob2RfcHJvdG90eXBlKCkgaW5zdGVhZCBvZiBlbmNvZGVfbWV0aG9kX2RlZigpLgoJKGJ1aWxkX3NoYXJlZF9zdHJ1Y3R1cmVfaW5pdGlhbGl6ZXIpOiBHZW5lcmF0ZSAnc2VsX2lkJyBmaWVsZCBmb3IKCXRoZSBOZVhUIHJ1bnRpbWUuCgkoZ2VuZXJhdGVfY2F0ZWdvcnkpOiBEbyBub3Qgc2V0IFRSRUVfVVNFRC4KCShidWlsZF9rZXl3b3JkX3NlbGVjdG9yKTogRGl0dG87IHRyYW5zZm9ybSBpbnRvIGEgZnVuY3Rpb24gYXJndW1lbnQKCWNoYWluLgoJKGdldF9hcmdfdHlwZV9saXN0KTogSWYgdGhlcmUgYXJlIG5vIHVzZXItc3BlY2lmaWVkIGFyZ3VtZW50cywgdXNlCgknLi4uJzsgdXNlIE9CSkNfVk9JRF9BVF9FTkQuCgkoY2hlY2tfZHVwbGljYXRlcyk6IEFkZCBhIHBhcmFtZXRlciBpbmRpY2F0aW5nIHdoZXRoZXIgbWV0aG9kcyBvcgoJc2VsZWN0b3JzIGFyZSBiZWluZyBjaGVja2VkLgoJKHJlY2VpdmVyX2lzX2NsYXNzX29iamVjdCk6IEFkZCBwYXJhbWV0ZXJzIGluZGljYXRpbmcgd2hldGhlcgoJcmVjZWl2ZXIgaXMgJ3NlbGYnIG9yICdzdXBlcic7IHJvYnVzdGlmeS4KCShidWlsZF9tZXNzYWdlX2V4cHIpOiBEZWZlciBjYWxsIHRvIGZpbmlzaF9tZXNzYWdlX2V4cHIoKSBpZgoJaW5zaWRlIGFuIE9iakMrKyB0ZW1wbGF0ZS4KCShsb29rdXBfbWV0aG9kX2luX2hhc2hfbGlzdHMpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX21lc3NhZ2VfZXhwcik6IENvbXBsZXRlIHJld3JpdGUvZml4LgoJKGJ1aWxkX29iamNfbWV0aG9kX2NhbGwpOiBEaXR0bzsgZmFjdG9yIG91dCBjb21tb25hbGl0aWVzIGJldHdlZW4KCXRoZSBHTlUgYW5kIE5lWFQgcnVudGltZXM7IGFjY2NvbW1vZGF0ZSAuLi5fc3RyZXQgYW5kIC4uLk5vbk5pbAoJbWVzc2VuZ2VyIHZhcmlhbnRzIG9uIHRoZSBOZVhULgoJKGxvb2t1cF9pbnN0YW5jZV9tZXRob2Rfc3RhdGljLCBsb29rdXBfY2xhc3NfbWV0aG9kX3N0YXRpYyk6CglGb2xkIGludG8gYSBzaW5nbGUgbG9va3VwX21ldGhvZF9zdGF0aWMoKSBmdW5jdGlvbiB3aXRoIGFuCglhZGRpdGlvbmFsIHBhcmFtZXRlci4KCShhZGRfY2xhc3NfbWV0aG9kLCBhZGRfaW5zdGFuY2VfbWV0aG9kKTogRm9sZCBpbnRvIGEgc2luZ2xlCglhZGRfbWV0aG9kKCkgZnVuY3Rpb24gd2l0aCBhbiBhZGRpdGlvbmFsIHBhcmFtZXRlci4KCShhZGRfY2F0ZWdvcnkpOiBNYWtlIGR1cGxpY2F0ZSBjYXRlZ29yaWVzIGEgaGFyZCBlcnJvciBpbiBPYmpDKysuCgkoYWRkX2luc3RhbmNlX3ZhcmlhYmxlKTogUHJvcGVybHkgaGFuZGxlIHVubmFtZWQgaXZhcnMsIGFycmF5cyBvZgoJemVybyBvciBubyBzaXplIGFuZCBiaXRmaWVsZHMuICBJbiBPYmpDKyssIGNoZWNrIGZvciBub250cml2aWFsCglDKysgY2xhc3MgaW5zdGFuY2VzLgoJKGlzX3B1YmxpYyk6IEFsbG93IEMgZnVuY3Rpb25zIHRvIGFjY2VzcyBub24tQHB1YmxpYyBpdmFycywgd2l0aAoJYSB3YXJuaW5nLgoJKHN0YXJ0X2NsYXNzKTogTW92ZSBjb21tb24gaW5pdGlhbGl6YXRpb25zIHRvCglzeW50aF9tb2R1bGVfcHJvbG9ndWUoKTsgY2hlY2sgZm9yIGdsb2JhbCBzY29wZSBpZiBpbiBPYmpDKysuCgkoY29udGludWVfY2xhc3MpOiBGaXggY2FsbHMgdG8gZmluaXNoX3N0cnVjdCgpLgoJKG9iamNfZGVjbGFyZV9wcm90b2NvbHMsIHN0YXJ0X3Byb3RvY29sKTogQ2hlY2sgZm9yIGdsb2JhbCBzY29wZQoJaWYgaW4gT2JqQysrLgoJKGVuY29kZV9wb2ludGVyKTogRW5jb2RlICdCT09MIConIHNwZWNpYWxseSBvbiB0aGUgTmVYVC4KCShlbmNvZGVfYWdncmVnYXRlX3dpdGhpbik6IFJld3JpdGUgdG8gcHJvcGVybHkgZGlzdGluZ3Vpc2gKCXN0cnVjdCB0YWdzIGZyb20gdHlwZWRlZnMgaW4gYm90aCBPYmpDIGFuZCBPYmpDKysuCgkoZW5jb2RlX2JpdGZpZWxkLCBlbmNvZGVfY29tcGxldGVfYml0ZmllbGQpOiBSZW1vdmUuCgkoZW5jb2RlX25leHRfYml0ZmllbGQsIGVuY29kZV9nbnVfYml0ZmllbGQpOiBOZXcgZnVuY3Rpb25zLgoJKGVuY29kZV9maWVsZF9kZWNsKTogQ2FsbCBlbmNvZGVfbmV4dF9iaXRmaWVsZCgpIG9yCgllbmNvZGVfZ251X2JpdGZpZWxkKCkgYXMgbmVlZGVkLgoJKHN5bnRoX3NlbGZfYW5kX3VjbWRfYXJncyk6IE5ldyBmdW5jdGlvbi4KCShzdGFydF9tZXRob2RfZGVmKTogVXNlIGl0LgoJKG9iamNfdHlwZXNfYXJlX2VxdWl2YWxlbnQpOiBOZXcgZnVuY3Rpb24uCgkoY29tcF9wcm90b193aXRoX3Byb3RvKTogVXNlIGl0IGluc3RlYWQgb2YgY29tcHR5cGVzKCksIHNpbmNlCgl3ZSBuZWVkIHN5bW1ldHJ5LgoJKHJlYWxseV9zdGFydF9tZXRob2QpOiBVc2UgbG9va3VwX21ldGhvZF9zdGF0aWMoKSBpbnN0ZWFkIG9mCglsb29rdXBfY2xhc3NfbWV0aG9kX3N0YXRpYygpIGFuZCBsb29rdXBfaW5zdGFuY2VfbWV0aG9kX3N0YXRpYygpOwoJRW1pdCAnZXh0ZXJuICJDIicgaWYgaW4gT2JqQysrIG1vZGUuCgkoYWRkX29iamNfZGVjbHMpOiBSZW1vdmVkLgoJKFVPQkpDX1NVUEVSX3Njb3BlKTogTmV3IHZhcmlhYmxlLgoJKGdldF9zdXBlcl9yZWNlaXZlcik6IE1vdmUgY29uc3RydWN0aW9uIG9mICdzdXBlcicgZnJvbQoJYWRkX29iamNfZGVjbHMoKTsgcmVtb3ZlIGRlcGVuZGVuY3kgb24gc3RydWN0IG9iamNfY2xhc3MuCgkoZW5jb2RlX21ldGhvZF9kZWYpOiBSZW1vdmVkOyBlbmNvZGVfbWV0aG9kX3Byb3RvdHlwZSgpIGlzCgl1c2VkIGluc3RlYWQuCgkob2JqY19jbGVhcl9zdXBlcl9yZWNlaXZlcik6IE5ldyBmdW5jdGlvbi4KCShvYmpjX2V4cGFuZF9mdW5jdGlvbl9lbmQpOiBEbyBub3QgZG8gYW55dGhpbmcgZm9yIG9yZGluYXJ5CglDIGZ1bmN0aW9ucy4KCShmaW5pc2hfbWV0aG9kX2RlZik6IE1hcmsgT2JqQyBtZXRob2RzIGFzIHVuLWlubGluYWJsZS4KCShnZW5fZGVjbGFyYXRpb25fMSk6IEVtaXQgd2lkdGhzIG9mIGJpdGZpZWxkcy4KCShmaW5pc2hfb2JqYyk6IENhbGwgZ2VuZXJhdGVfb2JqY19pbWFnZV9pbmZvKCkgaWYgbmVlZGVkOwoJdXNlIGNoZWNrX2R1cGxpY2F0ZXMoKSB3aGVuIGNoZWNraW5nIGZvciBzZWxlY3RvciBkdXBsaWNhdGVzLgoJKGdlbmVyYXRlX29iamNfaW1hZ2VfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCSogb2JqYy9vYmpjLWFjdC5oIChhZGRfaW5zdGFuY2VfbWV0aG9kLCBhZGRfY2xhc3NfbWV0aG9kLAoJZ2V0X2NsYXNzX2l2YXJzKTogUmVtb3ZlIHByb3RvdHlwZXMuCgkob2JqY19idWlsZF90aHJvd19zdG10LCBvYmpjX2J1aWxkX3RyeV9jYXRjaF9maW5hbGx5X3N0bXQsCglvYmpjX2J1aWxkX3N5bmNocm9uaXplZF9wcm9sb2d1ZSwgb2JqY19idWlsZF9zeW5jaHJvbml6ZWRfZXBpbG9ndWUsCglvYmpjX2J1aWxkX2NhdGNoX3N0bXQsIG9iamNfYnVpbGRfY2F0Y2hfZXBpbG9ndWUsCglvYmpjX2J1aWxkX2ZpbmFsbHlfcHJvbG9ndWUsIG9iamNfYnVpbGRfZmluYWxseV9lcGlsb2d1ZSwKCWFkZF9tZXRob2QsIGdldF9jbGFzc19pdmFyc19mcm9tX25hbWUpOiBOZXcgcHJvdG90eXBlcy4KCShDTEFTU19CSU5GT19FTFRTLCBQUk9UT0NPTF9CSU5GT19FTFRTKTogTmV3LgoJKFRZUEVfUFJPVE9DT0xfTElTVCk6IFJvYnVzdGlmeSB0byBkaXN0aW5ndWlzaCBmcm9tCglUUkFOU0xBVElPTl9VTklUX0RFQ0xzLgoJKE9CSkNfVFlQRV9OQU1FKTogTmV3LgoJKG9iamNfdHJlZV9jb2RlKTogRW5zdXJlIHRoYXQgZWl0aGVyIDxjLXRyZWUuaD4gb3IgPGNwL2NwLXRyZWUuaD4KCWdvdCBpbmNsdWRlZC4KCShJU19TVVBFUik6IFJvYnVzdGlmeS4KCSh1bXNnX3N0cmV0X2RlY2wsIHVtc2dfc3VwZXJfc3RyZXRfZGVjbCwgdW1zZ19ub25uaWxfZGVjbCwKCXVtc2dfbm9ubmlsX3N0cmV0X2RlY2wsIG9iamNfc3RvcmFnZV9jbGFzcywgb2JqY19leGNlcHRpb25fZXh0cmFjdF9kZWNsLAoJb2JqY19leGNlcHRpb25fdHJ5X2VudGVyX2RlY2wsIG9iamNfZXhjZXB0aW9uX3RyeV9leGl0X2RlY2wsCglvYmpjX2V4Y2VwdGlvbl9tYXRjaF9kZWNsLCBvYmpjX2V4Y2VwdGlvbl90aHJvd19kZWNsLAoJb2JqY19zeW5jX2VudGVyX2RlY2wsIG9iamNfc3luY19leGl0X2RlY2wsIG9iamNfZXhjZXB0aW9uX2RhdGFfdGVtcGxhdGUsCglvYmpjX3NldGptcF9kZWNsLCBvYmpjX3N0YWNrX2V4Y2VwdGlvbl9kYXRhLCBvYmpjX2NhdWdodF9leGNlcHRpb24sCglvYmpjX3JldGhyb3dfZXhjZXB0aW9uLCBvYmpjX2V2YWxfb25jZSwgb2JqY19leGNlcHRpb25fYmxvY2tfc3RhY2ssCglvYmpjX2NhdGNoX3R5cGUpOiBOZXcgT2JqQy9PYmpDKysgcm9vdHMuCgkqIG9iamMvb2JqYy10cmVlLmRlZiAoTUVTU0FHRV9TRU5EX0VYUFIsIENMQVNTX1JFRkVSRU5DRV9FWFBSKTogTmV3CglPYmpDL09iakMrKyB0cmVlIG5vZGUgY29kZXMuCgoyMDAzLTA5LTI0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNwcGxpYi5jIChkb19wcmFnbWEpOiBSZWludHJvZHVjZSBjYl9saW5lX2NoYW5nZSBjYWxsIGluIHRoZQoJY29kZSBwYXRoIHRoYXQgY2FsbHMgYSBoYW5kbGVyLgoKMjAwMy0wOS0yNCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjIChjNHgtKiwgdGljNHgtKiwgZDMwdi0qLCBtbWl4LWtudXRoLW1taXh3YXJlKToKCURpc2FibGUgZml4cHJvdG8uCgoJKiBjb25maWcuZ2NjOiBDbGVhbiB1cCBhbmQgcmVpbmRlbnQgJHdpdGhfY3B1PXllc3xubyBjbGF1c2UgYW5kCgl0aGUgc2VjdGlvbiBnaXZpbmcgJHdpdGhfY3B1IGRlZmF1bHRzIGJ5IHRhcmdldC4KCgkqIGNvbmZpZy5nY2MgKGFybS0qLWNvZmYqLCBhcm1lbC0qLWNvZmYqLCBhcm0qLSotZWNvcy1lbGYsCglhcm0qLSotZWxmLCBlcDkzMTItKi1lbGYsIGFybSotd2luY2UtcGUqLCBhcm0qLSotcGUqLCBhcm0qLSotcGUqLAoJcnM2MDAwLWlibS1haXg0LlszNDU2Nzg5XSosIHBvd2VycGMtaWJtLWFpeDQuWzM0NTY3ODldKiwKCXJzNjAwMC1pYm0tYWl4NS4xLiosIHBvd2VycGMtaWJtLWFpeDUuMS4qLAoJcnM2MDAwLWlibS1haXhbNTY3ODldLiosIHBvd2VycGMtaWJtLWFpeFs1Njc4OV0uKiwKCWlbMzQ1NjddODYtcGMtbXNkb3NkamdwcCopOiBEaXNhYmxlIGZpeHByb3RvLgoKMjAwMy0wOS0yNCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdnRpX3Bvd2VyKTogQ29sbGFwc2UgY2FzZSAxIGFuZCAyCgl0b2dldGhlci4gIFByb3RlY3QgbG9hZCBzdHJpbmcgaW5zdHJ1Y3Rpb24gd2l0aCBUQVJHRVRfU1RSSU5HLgoJKG1vdnRpX3N0cmluZyk6IENvbGxhcHNlIGNhc2UgMSBhbmQgMiB0b2dldGhlci4KCjIwMDMtMDktMjQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl90eXBlX2Zvcl9tb2RlKTogQ2hlY2sgZm9yIFZPSURtb2RlLgoKMjAwMy0wOS0yNCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uaCAoQVNNX09VVFBVVF9SRUdfUFVTSCwgQVNNX09VVFBVVF9SRUdfUE9QKTogV3JhcCBpbgoJZG8uLi53aGlsZSgwKQoKMjAwMy0wOS0yMyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBNb3ZlIHVzZV9maXhwcm90bz1ubyBmcm9tIGdlbmVyaWMgdnh3b3JrcyBjbGF1c2UgdG8KCXNwZWNpZmljIG9uZS4KCgkqIGNvbmZpZy5nY2MgKHBvd2VycGMtKi1nbnUtZ251YWx0aXZlYyopOiBEaXNhYmxlIGZpeHByb3RvCgkoYWNjaWRlbnRhbGx5IG1pc3NlZCBpbiBsYXN0IHBhc3MpLgoKMjAwMy0wOS0yMyAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAYXBwbGUuY29tPgoKCVBSIGJvb3RzdHJhcC8xMjM4MwoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA5LTIzICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2MgKHg4Nl82NC0qLWZyZWVic2QqKTogRGlzYWJsZSBmaXhwcm90byAoYWNjaWRlbnRhbGx5CgltaXNzZWQgaW4gbGFzdCBwYXNzKS4KCjIwMDMtMDktMjMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAoYW5kc2kzKTogRml4IGN1dCZwYXN0byBpbiAweGZmZmZmZmZlCgljb25zdGFudC4KCjIwMDMtMDktMjMgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYzogTW92ZSB2YXgtKi12bXMqIHVuc3VwcG9ydGVkIG5vdGljZSB1cCB3aXRoIHRoZSByZXN0LgoKCSogY29uZmlnLmdjYyAoYWxwaGE2NCotZGVjLSp2bXMqLCBhbHBoYSotZGVjLSp2bXMqLAoJcG93ZXJwYy0qLWVhYmlzaW0qLCBwb3dlcnBjLSotZWFiaSosIHBvd2VycGNsZS0qLWVhYmlzaW0qLAoJcG93ZXJwY2xlLSotZWFiaSopOiBEaXNhYmxlIGZpeHByb3RvLgoKCSogY29uZmlnLmdjYzogTW92ZSB1c2VfZml4cHJvdG89bm8gZnJvbSBnZW5lcmljIEZyZWVCU0QgY2xhdXNlIHRvCglzcGVjaWZpYyBGcmVlQlNEIGNsYXVzZXMuCgkqIGNvbmZpZy5nY2M6IE1vdmUgdXNlX2ZpeHByb3RvPW5vIGZyb20gZ2VuZXJpYyBOZXRCU0QgY2xhdXNlIHRvCglzcGVjaWZpYyBOZXRCU0QgY2xhdXNlcy4KCSogY29uZmlnLmdjYzogTW92ZSB1c2VfZml4cHJvdG89bm8gZnJvbSBnZW5lcmljIE9wZW5CU0QgY2xhdXNlCgl0byBzcGVjaWZpYyBPcGVuQlNEIGNsYXVzZXMuCgoyMDAzLTA5LTIzICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEuYyAoaHBwYV9leHBhbmRfcHJvbG9ndWUpOiBEbyBwaWMgcmVnaXN0ZXIgc2F2ZSBpbiBmcmFtZSBtYXJrZXIKCXdpdGhvdXQgYWRkaW5nIGEgZnJhbWUgbm90ZS4KCSogcGEubWQgKGFsbG9jYXRlX3N0YWNrKTogU2F2ZSBwaWMgcmVnaXN0ZXIgaW4gbmV3IGZyYW1lIG1hcmtlciB3aGVuCglnZW5lcmF0aW5nIHBpYyBjb2RlLgoKMjAwMy0wOS0yMyAgS2VsbGV5IENvb2sgIDxrZWxsZXljb29rQHdpZGVvcGVud2VzdC5jb20+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9leHBhbmRfYWxsX2Z1bmN0aW9ucyk6IFJlbmFtZWQgZnJvbQoJY2dyYXBoX2V4cGFuZF9mdW5jdGlvbnMuCgoyMDAzLTA5LTIzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoZ251Y29tcGFyZSopOiBNZXJnZSBpbnRvIC4uLgoJKHNsb3djb21wYXJlKik6IC4uLiBoZXJlLgoJKGZhc3Rjb21wYXJlKik6IE5ldyB0YXJnZXRzLgoJKiBhY2xvY2FsLm00IChnY2NfQUNfUFJPR19DTVBfSUdOT1JFX0lOSVRJQUwpOiBBZGQgY2hlY2tzIGZvcgoJb3RoZXIgImZhc3QiIGNtcCBwcm9ncmFtcy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wOS0yMyAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiB0YXJnaG9va3MuYzogSW5jbHVkZSBvdXRwdXQuaC4KCSogTWFrZWZpbGUuaW4gKHRhcmdob29rcy5vKTogQWRkIG91dHB1dC5oIHRvIGRlcGVuZGVuY3kgbGlzdC4KCjIwMDMtMDktMjMgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnLmhvc3Q6IFJlbW92ZWQgc3VwZXJmbHVvdXMgbmV3bGluZS4KCjIwMDMtMDktMjMgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYzogVXNlICR7dGFyZ2V0fSwgbm90ICRtYWNoaW5lLgoJKiBjb25maWd1cmUuaW46IERvbid0IHNldCAkbWFjaGluZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wOS0yMyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvdC1kYXJ3aW4gKGNydDIubyk6IEFkZCBzdG1wLWludC1oZHJzIHRvIGRlcGVuZGVuY2llcy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGZ1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZSk6IERvbid0CglwYXNzIHplcm8tc2l6ZSBhcnJheXMgYnkgcmVmZXJlbmNlLgoJKHJzNjAwMF92YV9hcmcpOiBMaWtld2lzZS4KCjIwMDMtMDktMjMgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYzogU2V0IHVzZV9maXhwcm90bz1ubyBpbiBlYWNoIHNwZWNpZmljICotZ251KgoJY29uZmlndXJhdGlvbiwgcmF0aGVyIHRoYW4gdGhlIGdlbmVyaWMgb25lLgoKMjAwMy0wOS0yMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtaW5saW5lLmMgKHJlbWFwX3NhdmVfZXhwcik6IE1hcCBuZXcgc2F2ZV9leHByIHRvIGlkZW50aXR5CglyYXRoZXIgdGhhbiB0byBlcnJvcl9tYXJrX25vZGUuCgoyMDAzLTA5LTIzICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZ3VyZS5pbiAoSEFWRV9HQVNfU0hGX01FUkdFKTogQWx3YXlzIGRlZmluZSB0byB0ZXN0IHJlc3VsdC4KCVVwZGF0ZSBkZXNjcmlwdGlvbi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IExpa2V3aXNlLgoJKiBkd2FyZjJvdXQuYyAoREVCVUdfU1RSX1NFQ1RJT05fRkxBR1MpOiBUZXN0IGZvcgoJSEFWRV9HQVNfU0hGX01FUkdFIHZhbHVlLgoJKiB2YXJhc20uYyAobWVyZ2VhYmxlX3N0cmluZ19zZWN0aW9uKTogTGlrZXdpc2UuCgkobWVyZ2VhYmxlX2NvbnN0YW50X3NlY3Rpb24pOiBMaWtld2lzZS4KCjIwMDMtMDktMjMgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogZXhjZXB0LmggKE1VU1RfVVNFX1NKTEpfRVhDRVBUSU9OUyk6IFRlc3QgZm9yIERXQVJGMl9VTldJTkRfSU5GTwoJdmFsdWUuCgoyMDAzLTA5LTIzICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIHRhcmdldC5oIChzdHJ1Y3QgZ2NjX3RhcmdldCk6IE5ldyBtZW1iZXIgZXh0ZXJuYWxfbGliY2FsbC4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfQVNNX0VYVEVSTkFMX0xJQkNBTEwpOiBQcm92aWRlIGRlZmF1bHQuCgkoVEFSR0VUX0FTTV9PVVQpOiBVc2UgaXQuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfQVNNX0VYVEVSTkFMX0xJQkNBTEwpOiBEb2N1bWVudC4KCSogdGFyZ2hvb2tzLmM6IENvbnZlcnQgdG8gSVNPIEMgOTAuCgkoZGVmYXVsdF9leHRlcm5hbF9saWJjYWxsKTogTmV3IGZ1bmN0aW9uLgoJKiB0YXJnaG9va3MuaCAoZGVmYXVsdF9leHRlcm5hbF9saWJjYWxsKTogRGVjbGFyZS4KCSogdmFyYXNtLmMgKGFzc2VtYmxlX2V4dGVybmFsX2xpYmNhbGwpOiBVc2UKCXRhcmdldG0uYXNtX291dC5leHRlcm5hbF9saWJjYWxsIGluc3RlYWQgb2YKCUFTTV9PVVRQVVRfRVhURVJOQUxfTElCQ0FMTC4KCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCBbVEFSR0VUX0lSSVg1IHx8IFRBUkdFVF9JUklYIDZdCgkobWlwc19vdXRwdXRfZXh0ZXJuYWxfbGliY2FsbCk6IERlY2xhcmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19vdXRwdXRfZXh0ZXJuYWxfbGliY2FsbCk6IENoYW5nZQoJZGVmaW5pdGlvbiBndWFyZC4KCUNoYW5nZSB0byBtYXRjaCBUQVJHRVRfQVNNX0VYVEVSTkFMX0xJQkNBTEwuCglPbmx5IG9wZXJhdGUgZm9yIE8zMiBBQkkuCgkqIGNvbmZpZy9taXBzL2lyaXM1LmggKFRBUkdFVF9BU01fRVhURVJOQUxfTElCQ0FMTCk6IERlZmluZQoJaW5zdGVhZCBvZiBBU01fT1VUUFVUX0VYVEVSTkFMX0xJQkNBTEwuCgkqIGNvbmZpZy9taXBzL2lyaXM2LmggKEFTTV9PVVRQVVRfRVhURVJOQUxfTElCQ0FMTCk6IERvbid0IHVuZGVmLAoJc3VwZXJjZWRlZCBieSBUQVJHRVRfQVNNX0VYVEVSTkFMX0xJQkNBTEwuCgoyMDAzLTA5LTIyICBOYXRobmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYzogRG8gcGVyLXRhcmdldCBkaXNhYmxpbmcgb2YgZml4cHJvdG8gaGVyZSBpbiBjbGF1c2VzLAoJbm90IGluIHQtIGZyYWdtZW50cy4KCSogY29uZmlndXJlLmluOiBBZGp1c3QgdG8gc2V0IFNUTVBfRklYUFJPVE8gY29ycmVjdGx5LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy9hcm0vdC1zZW1pLCBjb25maWcvY3Jpcy90LWNyaXMsIGNvbmZpZy9pMzg2L3QtYmVvcywKCWNvbmZpZy9pMzg2L3QtY3lnbWluZywgY29uZmlnL2kzODYvdC1udG8sIGNvbmZpZy9pYTY0L3QtaHB1eCwKCXQtZnJlZWJzZCwgdC1saW51eCwgdC1uZXRic2QsIHQtb3BlbmJzZCwgdC1ydGVtcywgdC12eHdvcmtzLAoJeHRlbnNhL3QteHRlbnNhOiBSZW1vdmUgc2V0dGluZyBvZiBTVE1QX0ZJWFBST1RPLgoJKiBjb25maWcvaTM3MC90LW9lLCBjb25maWcvaTM4Ni90LW5ldHdhcmUsIGNvbmZpZy9wYS90LWJzZCwKCXQtaW50ZXJpeCwgdC1saW51eC1hb3V0OiAgRGVsZXRlIGZpbGVzIGNvbnNpc3Rpbmcgb25seSBvZgoJc2V0dGluZyBvZiBTVE1QX0ZJWFBST1RPLgoKCSogY29uZmlnLmhvc3Q6IEFsbG93IHVua25vd24gaG9zdHMgKG5vdCB0YXJnZXRzKS4gIEFsbG93CgluczMyay0qLW5ldGJzZGVsZiogYXMgYSBob3N0IChub3QgYSB0YXJnZXQpLiAgUmVtb3ZlIHJlZHVuZGFudAoJZW1wdHkgY2xhdXNlcy4gIFJlbW92ZSB1c2VsZXNzIG9ic29sZXRlLWNvbmZpZ3VyYXRpb24gY2xhdXNlLgoJUHJ1bmUgdW5zdXBwb3J0ZWQgY29uZmlndXJhdGlvbiBsaXN0LiAgQ29sbGFwc2UgaWRlbnRpY2FsCgljbGF1c2VzIGZvciBjbG9zZWx5IHJlbGF0ZWQgc3lzdGVtcy4gIFJld3JpdGUgY29tbWVudCBmb3IKCXVuc3VwcG9ydGVkIGhvc3RzIGxpc3QuICBSZW9yZ2FuaXplIGEgbGl0dGxlLgoKMjAwMy0wOS0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlKTogRXhhbWluZSBtb2RlLAoJbm90IHByZWNpc2lvbi4KCjIwMDMtMDktMjIgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCSAgICBIYXJ0bXV0IFBlbm5lciAgPGhwZW5uZXJAZGUuaWJtLmNvbT4KCSAgICBTZWdoZXIgQm9lc3Nlbmtvb2wgIDxib2Vzc2VuQGRlLmlibS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChhbHRpdmVjX2luX2dwcnNfcCk6IFJlbmFtZSB0byAuLi4KCShncHJfb3JfZ3ByX3ApOiBUZXN0IElOVF9SRUdOT19QIGFuZCBjb252ZXJ0IHRvIGJvb2xlYW4uCgkocnM2MDAwX3NwbGl0X2FsdGl2ZWNfaW5fZ3Bycyk6IFJlbmFtZSB0byAuLi4KCShyczYwMDBfc3BsaXRfbXVsdGlyZWdfbW92ZSk6IEFkZCBzdXBwb3J0IGZvciB1cGRhdGUgYWRkcmVzc2luZy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmg6IFNhbWUuCgkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZDogU2FtZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdmRpX2ludGVybmFsMzIpOiBVc2UgbmV3IHNwbGl0dGVyIGZvcgoJbXVsdGlwbGUgR1BScy4KCShtb3Z0aSk6IFJlbW92ZSBUQVJHRVRfU1RSSU5HIHx8IFRBUkdFVF9QT1dFUlBDNjQgZmluYWwgY29uZGl0aW9uLgoJKG1vdnRpX3Bvd2VyKTogVXNlIG5ldyBzcGxpdHRlciBmb3IgbXVsdGlwbGUgR1BScy4KCShtb3Z0aV9zdHJpbmcpOiBTYW1lLgoJKG1vdnRpX3BwYzY0KTogU2FtZS4KCjIwMDMtMDktMjIgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS1wcm90b3MuaDogQ29udmVydCB0byBJU08gQzkwLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jOiBDb252ZXJ0IHRvIElTTyBDOTAuICBNaW5vciBmb3JtYXR0aW5nIGZpeGVzLgoKMjAwMy0wOS0yMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kOiBSZXZlcnQgMjAwMy0wOS0xNydzIHBhdGNoLgoJKGFuZHNpMyk6IFNldCBhdHRyIGNjIHRvIHNldF96biB3aGVuIHVzaW5nIHNoaWZ0cyBvciBhZGRzLgoKMjAwMy0wOS0yMiAgQmVybmFyZG8gSW5ub2NlbnRpIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBkb2MvY29udHJpYi50ZXhpOiBBZGQgUGV0ZXIgQmFyYWRhLCBQYXVsIERhbGUgYW5kIG15c2VsZi4KCjIwMDMtMDktMjIgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoTUFTS19SVEQsIFRBUkdFVF9SVEQsIFJFVFVSTl9QT1BTX0FSR1MpOgoJUmVzdXJyZWN0IC1tcnRkIG9wdGlvbi4KCjIwMDMtMDktMjEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRhcmdldC8xMjI4MQoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX3ZhbGlkYXRlX3N0dWJfb3Jfbm9uX2xhenlfcHRyKTogQ2FsbAoJbWFya19yZWZlcmVuY2VkIGluc3RlYWQgb2Ygc2V0dGluZyBUUkVFX1NZTUJPTF9SRUZFUkVOQ0VELgoKMjAwMy0wOS0yMiAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCVBSIHRhcmdldC85Nzg2CgkqIHJlZy1zdGFjay5jIChjb252ZXJ0X3JlZ3NfMSk6IFB1cmdlIHBvc3NpYmxlIGRlYWQgZWggZWRnZXMKCWFmdGVyIHBvdGVudGlhbCBkZWxldGlvbiBvZiB0cmFwcGluZyBpbnNuLiBBdm9pZHMgbGF0ZXIgSUNFCglmcm9tIGNhbGwgdG8gZml4dXBfYWJub3JtYWxfZWRnZXMuCgkoY29udmVydF9yZWdzXzIpOiBTdGFjayB0aGUgY3VycmVudCBibG9jayBzdWNjZXNzb3JzIGJlZm9yZQoJcHJvY2Vzc2luZyB0aGlzIGJsb2NrLCB0aGF0IGlzLCBiZWZvcmUgdGhlIHBvdGVudGlhbCBkZWxldGlvbiBvZgoJZGVhZCBlZGdlcyBieSBjb252ZXJ0X3JlZ3NfMSwgYmVjYXVzZSB0aGVzZSBlZGdlcyBoYXZlIGJlZW4gdXNlZAoJdG8gaW5pdGlhbGl6ZSB0aGUgcHJlZGVjZXNzb3JzIGNvdW50LgoKMjAwMy0wOS0yMiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIHJlYWwuYzogRml4IHNldmVyYWwgbml0cyBpbiB0aGUgaGVhZCBjb21tZW50LgoKMjAwMy0wOS0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUuaCBjLWF1eC1pbmZvLmMsIGMtZGVjbC5jLCBjLXBhcnNlLmluLCBjb3ZlcmFnZS5jLCBkYnhvdXQuYywKCWRpYWdub3N0aWMuYywgZHdhcmYyb3V0LmMsIGR3YXJmb3V0LmMsIGZ1bmN0aW9uLmMsIGludGVncmF0ZS5jLAoJcHJpbnQtdHJlZS5jLCBzdG10LmMsIHRvcGxldi5jLCB0cmVlLWR1bXAuYywgdHJlZS1pbmxpbmUuYywKCXRyZWUtb3B0aW1pemUuYywgdHJlZS5jLCB0cmVlLmRlZiwgeGNvZmZvdXQuYywgY29uZmlnL2FscGhhL2FscGhhLmMsCgljb25maWcvbWlwcy9taXBzLmMsIGRvYy9jLXRyZWUudGV4aSwgb2JqYy9vYmpjLWFjdC5jOiBSZXZlcnQuCgoyMDAzLTA5LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJlZS5oIChUUkVFX0xPQ1VTKTogUmVuYW1lIGZyb20gREVDTF9TT1VSQ0VfTE9DQVRJT047IG1ha2UgY29uc3QuCgkoVFJFRV9GSUxFTkFNRSwgVFJFRV9MSU5FTk8pOiBMaWtld2lzZS4KCShzZXRfdHJlZV9sb2N1cywgY29weV90cmVlX2xvY3VzLCBzZXRfdHJlZV9maWxlX2xpbmUpOiBOZXcuCgkoVFJFRV9MT0NVU19TRVRfUCk6IE5ldy4KCSogYy1hdXgtaW5mby5jLCBjLWRlY2wuYywgYy1wYXJzZS5pbiwgY292ZXJhZ2UuYywgZGJ4b3V0LmMsCglkaWFnbm9zdGljLmMsIGR3YXJmMm91dC5jLCBkd2FyZm91dC5jLCBmdW5jdGlvbi5jLCBpbnRlZ3JhdGUuYywKCXByaW50LXRyZWUuYywgc3RtdC5jLCB0b3BsZXYuYywgdHJlZS1kdW1wLmMsIHRyZWUtaW5saW5lLmMsCgl0cmVlLW9wdGltaXplLmMsIHRyZWUuYywgdHJlZS5kZWYsIHhjb2Zmb3V0LmMsIGNvbmZpZy9hbHBoYS9hbHBoYS5jLAoJY29uZmlnL21pcHMvbWlwcy5jLCBkb2MvYy10cmVlLnRleGksIG9iamMvb2JqYy1hY3QuYzogVXBkYXRlIHRvIG1hdGNoLgoKMjAwMy0wOS0yMSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvdmF4L3ZheC1wcm90b3MuaDogQ29udmVydCB0byBJU08gQzkwLgoJKiBjb25maWcvdmF4L3ZheC5jOiBDb252ZXJ0IHRvIElTTyBDOTAuCgoyMDAzLTA5LTIxICBHcmFoYW0gU3RvdHQgIDxncmFoYW1zQGJ0aW50ZXJuZXQuY29tPgoKICAgICAgIFBSIHRhcmdldC8xMjM1MwogICAgICAgKiBjb25maWcvaTM4Ni9pMzg2Lm1kKGZmc19ub19jbW92ZSk6IEZpeCBvcGVyYW5kIDIgY29uc3RyYWludC4KCjIwMDMtMDktMjEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgdGFyZ2V0LzEyMzAxCgkqIHJlb3JnLmMgKHN0b3Bfc2VhcmNoX3ApOiBSZXR1cm4gMSBmb3IgaW5zbnMgdGhhdCBjYW4KCXRocm93IGludGVybmFsbHkuCgoyMDAzLTA5LTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1mb3JtYXQuYyAoZ2NjX2RpYWdfY2hhcl90YWJsZSk6IEFkZCAlSi4KCShnY2NfY2RpYWdfY2hhcl90YWJsZSwgZ2NjX2N4eGRpYWdfY2hhcl90YWJsZSk6IExpa2V3aXNlLgoJKGNoZWNrX2Zvcm1hdF90eXBlcyk6IEZpeCB3YW50ZWRfdHlwZSBuYW1lIGxvb2t1cC4KCShpbml0X2R5bmFtaWNfZGlhZ19pbmZvKTogU2V0dXAgJUouCgkqIGRpYWdub3N0aWMuYyAodGV4dF9zcGVjaWZpZXNfbG9jYXRpb24pOiBJbXBsZW1lbnQgJUouCgkqIGMtY29tbW9uLmMsIGMtZGVjbC5jLCBjLW9iamMtY29tbW9uLmMsIGMtcHJhZ21hLmMsIGNhbGxzLmMsCglkd2FyZm91dC5jLCBleHByLmMsIGZ1bmN0aW9uLmMsIHN0bXQuYywgc3Rvci1sYXlvdXQuYywgdG9wbGV2LmMsCgl0cmVlLWlubGluZS5jLCB0cmVlLW9wdGltaXplLmMsIHZhcmFzbS5jLCBjb25maWcvYXJtL3BlLmMsCgljb25maWcvaTM4Ni93aW5udC5jLCBjb25maWcvaWE2NC9pYTY0LmMsIGNvbmZpZy9tY29yZS9tY29yZS5jLAoJY29uZmlnL3Y4NTAvdjg1MC5jLCBvYmpjL29iamMtYWN0LmM6IFVzZSAlSiBpbiBkaWFnbm9zdGljcy4KCgkqIHRyZWUtaW5saW5lLmM6IEluY2x1ZGUgaW50bC5oCgkoaW5saW5lX2ZvcmJpZGRlbl9wXzEpOiBGaXggaTE4biBvZiBpbmxpbmVfZm9yYmlkZGVuX3JlYXNvbi4KCSogTWFrZWZpbGUuaW4gKHRyZWUtaW5saW5lLm8pOiBVcGRhdGUuCgoyMDAzLTA5LTIwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfY2FycnlfZmxhZ19jb21wYXJlKTogRml4Cgl0cmFuc2Zvcm1hdGlvbiBvZiBhPj0wIGludG8gKHVuc2lnbmVkKWE8MHg4MDAwMDAwMC4KCjIwMDMtMDktMjAgIEFuZHJldyBQaW5za2kgPGFwaW5za2lAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19zZWxlY3RfcnR4X3NlY3Rpb24pOiBGaXggY2hlY2sgZm9yIFBJQyBjb2RlLgoKMjAwMy0wOS0yMCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbjogRG9uJ3Qgc2V0ICh1bnVzZWQpIERMTFRPT0wuCgoJKiBjb25maWcvYXJtL3QtbGludXgsIGNvbmZpZy9hcm0vdC1uZXRic2QsIGNvbmZpZy9hcm0tdC1zZW1pOgoJUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gRU5RVUlSRS4KCjIwMDMtMDktMTkgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlndXJlLmluOiBSZW1vdmUgLS13aXRoLWVsZiwgd2hpY2ggZG9lc24ndCB3b3JrLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5nY2M6IFJlbW92ZSByZWZlcmVuY2VzIHRvICRlbGYsIHdoaWNoIGRvZXMgbm90aGluZy4KCgkqIGNvbmZpZy9pMzg2L3htLXZzdGEuaDogUmVtb3ZlIHhtLWZpbGUgYmVsaWV2ZWQgdXNlbGVzcy4KCSogY29uZmlnLmJ1aWxkIChpMzg2LXZzdGEpOiBSZW1vdmUgcmVmZXJlbmNlIHRvIGl0LgoJKiBjb25maWcuaG9zdCAoaTM4Ni12c3RhKTogUmVtb3ZlIHJlZmVyZW5jZSB0byBpdC4KCjIwMDMtMDktMTkgIFBoaWwgRWR3YXJkcyAgPHBoaWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGk6ICBEb2N1bWVudCB0aGUgbXVsdGlwbGUgdGVzdHN1aXRlIG9wdGlvbnMuCgoyMDAzLTA5LTE5ICBHZXJhbGQgUGZlaWZlciAgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKFNwZWNpZmljKTogQWRkIHRoZSBzcGVjaWZpYyB2ZXJzaW9ucyBvZiBHQ0MKCXdoZXJlIHN1cHBvcnQgZm9yIEZyZWVCU0QgMSwgSFAtVVggdmVyc2lvbiA5IGFuZCBvbGRlciwgYW5kIEFJWAoJdmVyc2lvbiAzIGFuZCBvbGRlciB3YXMgZGlzY29udGludWVkLgoKMjAwMy0wOS0xOQlKb2VsIFNoZXJyaWxsIDxqb2VsQG9hcmNvcnAuY29tPgoKCSogY29uZmlnL202OGsvdC1tNjhrYmFyZSwgY29uZmlnL202OGsvdC1ydGVtczogQ2hhbmdlIDY4NjgxIHRvCgk2ODg4MS4KCjIwMDMtMDktMTkgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoVEFSR0VUX0NQVV9DUFBfUFJFREVGSU5FUyk6IEFkZCBwcmVkZWZpbmVzCglmb3IgLW02ODAzMCwgLW02ODAyMC02MCBhbmQgLW02ODAyMC00MC4KCSogY29uZmlnL202OGsvbTY4ay5oIChUQVJHRVRfNjgwMzApOiBOZXcgdGFyZ2V0IGZsYWcuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoTUFTS19SVEQsIFRBUkdFVF9SVEQsIE1BU0tfUkVHUEFSTSwKCVRBUkdFVF9SRUdQQVJNKTogUmVtb3ZlLgoJKiBjb25maWcvbTY4ay9tNjhrLmg6IFJlZ3JvdXAgYW5kIHJlbnVtYmVyIHRhcmdldCBmbGFncy4KCSogY29uZmlnL202OGsvbTY4ay5oIChUQVJHRVRfU1dJVENIRVMpOiBGaXggc29tZSB0YWJ1bGF0aW9ucy4KCSogY29uZmlnL202OGsvbTY4ay5oIChSRVRVUk5fUE9QU19BUkdTKTogQWx3YXlzIGV2YWx1YXRlIHRvIDAuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoRlVOQ1RJT05fQVJHKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoRlVOQ1RJT05fQVJHX1BBUlRJQUxfTlJFR1MpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay1ub25lLmg6IFVzZSBNQVNLX3h4eCB2YWx1ZXMgaW4gTTY4S19DUFVfeHh4IG1hY3Jvcy4KCjIwMDMtMDktMTkgIFJhbGYgQ29yc2VwaXVzIDxjb3JzZXBpdUBmYXcudW5pLXVsbS5kZT4KCgkqIGNvbmZpZy9tNjhrL3QtcnRlbXMgKG02OGstKi1ydGVtcyopOiBOZXcuCgkqIGNvbmZpZy5nY2M6IFVzZSBjb25maWcvbTY4ay90LXJ0ZW1zLgoKMjAwMy0wOS0xOSAgUmFsZiBDb3JzZXBpdXMgPGNvcnNlcGl1QGZhdy51bmktdWxtLmRlPgoKCSogY29uZmlnL21pcHMvdC1ydGVtczogTmV3LgoJKiBjb25maWcuZ2NjIChtaXBzKi0qLXJ0ZW1zKik6IFVzZSBjb25maWcvbWlwcy90LXJ0ZW1zLgoKMjAwMy0wOS0xOSAgS2VsbGV5IENvb2sgIDxrZWxsZXljb29rQHdpZGVvcGVud2VzdC5jb20+CgoJKiBjZ3JhcGguYzogRml4IHR5cG8gaW4gZGVidWdnaW5nIG91dHB1dC4KCjIwMDMtMDktMTkgIFQuIFBhcGFkb3BvdWxvIDxUaGVvZG9yZS5QYXBhZG9wb3Vsb0Bzb3BoaWEuaW5yaWEuZnI+CgkgICAgRXJpYyBCb3RjYXpvdSA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xMjE2NgoJKiBjb25maWcvc3BhcmMvc29sMi1jMS5hc20gKHN0YXJ0KTogU2V0IF9fQXJndiBpZiBHQ1JUMS4KCjIwMDMtMDktMTggIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogYy1wcG91dHB1dC5jIChwcmludCk6ICBVc2UgZmlsZWxpbmUgdHlwZWRlZiBmb3IgZmllbGQgJ2xpbmUnLgoJKHByaW50X2xpbmUsIG1heWJlX3ByaW50X2xpbmUsIGNiX2RlZmluZSwgY2JfdW5kZWYsIGNiX2luY2x1ZGUsCgljYl9pZGVudCwgY2JfZGVmX3ByYWdtYSk6ICBVc2UgZmlsZWxpbmUgdHlwZWRlZi4KCSogY3BwaGFzaC5oIChzdHJ1Y3QgY3BwX3JlYWRlcik6ICBMaWtld2lzZSBmb3IgZmllbGQgb3V0LmZpcnN0X2xpbmUuCgoyMDAzLTA5LTE4ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY29uZmlnL2kzODYvd2lubnQuYyAoZ2VuX3N0ZGNhbGxfc3VmZml4KTogUXVpdCBzdW1tYXRpb24gb2YKCXRvdGFsIHBhcm0gc2l6ZSBpZiBhIHBhcm0gaGFzIGluY29tcGxldGUgdHlwZS4KCShnZW5fZmFzdGNhbGxfc3VmZml4KTogTGlrZXdpc2UuCgoyMDAzLTA5LTE4ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhjZXB0LmMgKG91dHB1dF9mdW5jdGlvbl9leGNlcHRpb25fdGFibGUpOiBBZGp1c3QgbGFzdCBjaGFuZ2UKCXRvIGhhbmRsZSBUWVBFIG9mIElOVEVHRVJfQ1NULgoKMjAwMy0wOS0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMTExODQKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fYXBwbHkpOiBVc2UgY29udmVydF9tZW1vcnlfYWRkcmVzcwoJYmVmb3JlIHJldHVybmluZyB0aGUgdmFsdWUuCgoJKiBhbGlhcy5jIChmaW5kX2Jhc2VfdmFsdWUpOiBTaW1wbGlmeSB1c2Ugb2YKCWNvbnZlcnRfbWVtb3J5X2FkZHJlc3MuCgkoZmluZF9iYXNlX3Rlcm0pOiBMaWtld2lzZS4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3Rlam1wX3NldHVwKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fbG9uZ2ptcCk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX3ByZWZldGNoKTogTGlrZXdpc2UuCgkoZ2V0X21lbW9yeV9ydHgpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9yZXR1cm4pOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9tZW1jcHkpOiBMaWtld2lzZS4KCShleHBhbmRfYnVpbHRpbl9zdHJuY3B5KTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fbWVtc2V0KTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fdmFfYXJnKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fdmFfY29weSk6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX2FsbG9jYSk6IExpa2V3aXNlLgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoZXhwYW5kX2J1aWx0aW5fZXh0cmFjdF9yZXR1cm5fYWRkcik6IExpa2V3aXNlLgoJKGV4cGFuZF9idWlsdGluX2VoX3JldHVybik6IExpa2V3aXNlLgoJKiBleHBsb3cuYyAoY29udmVydF9tZW1vcnlfYWRkcmVzcyk6IERlZmluZSBldmVuIHdoZW4KCVBPSU5URVJfRVhURU5EX1VOU0lHTkVEIGlzIG5vdCBkZWZpbmVkLiAgRG8gbm90aGluZyBpZiB0aGUgYWRkcmVzcwoJaXMgYWxyZWFkeSBpbiB0aGUgcmlnaHQgbW9kZS4KCSogZXhwbG93LmMgKG1lbW9yeV9hZGRyZXNzKTogU2ltcGxpZnkgdXNlIG9mIGNvbnZlcnRfbWVtb3J5X2FkZHJlc3MuCgkocHJvYmVfc3RhY2tfcmFuZ2UpOiBMaWtld2lzZS4KCSogZXhwbWVkLmMgKG1ha2VfdHJlZSk6IExpa2V3aXNlLgoJKiBleHByLmMgKGVtaXRfYmxvY2tfbW92ZV9pbl9saWJjYWxsKTogTGlrZXdpc2UuCgkoZXhwYW5kX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCShleHBhbmRfZXhwcik6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBMaWtld2lzZS4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChjb3B5X3J0eF9hbmRfc3Vic3RpdHV0ZSk6IExpa2V3aXNlLgoJKiBzdG10LmMgKGV4cGFuZF9jb21wdXRlZF9nb3RvKTogTGlrZXdpc2UuCgoyMDAzLTA5LTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24pOiBPbmx5IHRyYW5zZm9ybQoJKG5vdCAoZXEgWCBZKSkgaW50byAobmUgWCBZKSB3aGVuIG1vZGUgaXMgQkltb2RlIG9yIFNUT1JFX0ZMQUdfVkFMVUUKCWlzIC0xLiAgUlRMICJub3QiIGlzIGEgYml0LXdpc2Ugbm90LCAifiIsIG5vdCBhIGxvZ2ljYWwgbm90ICIhIi4KCjIwMDMtMDktMTggIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCglQUiB0YXJnZXQvMTE2NzQKCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfZW1pdF9mbG9hdHVucyk6IEFsc28gaGFuZGxlIFNJbW9kZSBvcGVyYW5kLgoKMjAwMy0wOS0xOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0cmVlLmRlZiAoRkZTX0VYUFIsIENMWl9FWFBSLCBDVFpfRVhQUiwgUE9QQ09VTlRfRVhQUiwKCVBBUklUWV9FWFBSKTogRGVsZXRlIHVudXNlZCB0cmVlIGNvZGVzLgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24pOiBEZWxldGUgcmVmZXJlbmNlcwoJdG8gRkZTX0VYUFIgYW5kIFBPUENPVU5UX0VYUFIuCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2NfcG9zdGZpeF9leHByZXNzaW9uKTogUmVtb3ZlIEZGU19FWFBSLgoJKHBwX2NfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKiBleHByLmMgKGV4cGFuZF9leHByKTogRGVsZXRlIFJUTCBleHBhbnNpb24gb2YgRkZTX0VYUFIsIENMWl9FWFBSLAoJQ1RaX0VYUFIsIFBPUENPVU5UX0VYUFIgYW5kIFBBUklUWV9FWFBSLgoJKiBmb2xkLWNvbnN0LmMgKHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogUmVtb3ZlIEZGU19FWFBSLCBDTFpfRVhQUiwKCUNUWl9FWFBSLCBQT1BDT1VOVF9FWFBSIGFuZCBQQVJJVFlfRVhQUi4gIEFkZCBzdXBwb3J0IGZvciBjYWxscyB0bwoJQlVJTFRfSU5fRkZTLCBCVUlMVF9JTl9QQVJJVFkgYW5kIEJVSUxUX0lOX1BPUENPVU5UIGFuZCB0aGVpciBsb25nCglhbmQgbG9uZyBsb25nIHZhcmlhbnRzLgoKMjAwMy0wOS0xOCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBjLXByZXR0eS1wcmludC5oIChwcF90eXBlX3NwZWNpZmllcl9zZXEpOiBGaXggdGhpbmtvLgoJKiBjLXByZXR0eS1wcmludC5jOiBGaXggZm9ybWF0dGluZy4KCShwcF9jX2ludGVnZXJfY29uc3RhbnQpOiBBcHBlbmQgdHlwZSBhbm5vdGF0aW9uIHRvIGxpdGVyYWxzLiAgVGlkeS4KCShwcF9jX3R5cGVfc3BlY2lmaWVyKTogVGlkeS4KCShwcF9jX2NvbXBvdW5kX2xpdGVyYWwpOiBOZXcgZnVuY3Rpb24uCgkocHBfY19pbml0aWFsaXplcik6IFNpbXBsaWZ5Li4KCShwcF9jX2luaXRpYWxpemVyX2xpc3QpOiBMaWtld2lzZS4KCShwcF9jX2JyYWNlX2VuY2xvc2VkX2luaXRpYWxpemVyX2xpc3QpOiBOZXcgZnVuY3Rpb24uCgkocHBfY19wb3N0Zml4X2V4cHJlc3Npb24pOiBTaW1wbGlmeS4KCjIwMDMtMDktMTcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAoYW5kc2kzLCBpb3JzaTMsIHhvcnNpMywKCW9uZV9jb21wbHNpMiwgYml0LWNsZWFyLCBiaXQtc2V0LCBpb3JxaTMpOiBNYWtlIHRoZW0gc2V0X3puLgoKMjAwMy0wOS0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtb3B0aW1pemUuYyAodHJlZV9yZXN0X29mX2NvbXBpbGF0aW9uKTogU2F2ZSBhbmQgcmVzdG9yZQoJaW5wdXRfbG9jYXRpb24uCgoyMDAzLTA5LTE3ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoTElCX0xJTlVYX1NQRUMpOiBHaXZlIC1scHRocmVhZCBiZWZvcmUgLWxjLgoKMjAwMy0wOS0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNmZy5jIChkdW1wX2Zsb3dfaW5mbyk6IFNraXAgcmVnaXN0ZXIgZHVtcCBpZiByZWdfbl9pbmZvIG51bGwuCgoyMDAzLTA5LTE3ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZ3VyZS5pbiAoZ2NjX2N2X2xkX2hpZGRlbik6IERvbid0IHRlc3QgZ251X2xkX2ZsYWcuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDktMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgZGVidWcvMTIwNjYKCSogZGJ4b3V0LmMgKGRieG91dF9pbml0KTogVXNlIGEgbGFuZ2hvb2sgdG8gZmluZCBidWlsdGluIHR5cGVzLgoJKiBsYW5naG9va3MtZGVmLmggKGxoZF9yZXR1cm5fbnVsbF90cmVlX3YpOiBOZXcgZnVuY3Rpb24uCgkoTEFOR19IT09LU19CVUlMVElOX1RZUEVfREVDTFMpOiBOZXcgbWFjcm8uCgkoTEFOR19IT09LU19ERUNMUyk6IEFkZCBpdCB0byB0aGUgaW50aWFsaXplci4KCSogbGFuZ2hvb2tzLmMgKGxoZF9yZXR1cm5fbnVsbF90cmVlX3YpOiBOZXcgZnVuY3Rpb24uCgkqIGxhbmdob29rcy5oIChsYW5nX2hvb2tzX2Zvcl9kZWNscyk6IEFkZCBidWlsdGluX3R5cGVfZGVjbHMuCgoyMDAzLTA5LTE3ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogUXVvdGUgZ2NjX2NvbmZpZ19hcmd1bWVudHMgZm9yIGNvbmZpZ2FyZ3MuaC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogZ2NjYnVnLmluOiBEb24ndCBzaGVsbC1leHBhbmQgZ2NjX2NvbmZpZ19hcmd1bWVudHMuCgoyMDAzLTA5LTE3ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCglQUiBjKysvMTEzNTcKCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY19mbG9hdGluZ19jb25zdGFudCk6IEFwcGVuZAoJdHlwZS1hbm5vdGF0aW9uIHRvIGZsb2F0aW5nIGNvbnN0YW50cy4KCjIwMDMtMDktMTcgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnL21pcHMvaXJpczUuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZSBfTE9OR0xPTkcuCglEZWZpbmUgX0FCSU8zMi4KCVVzZSBpdCBmb3IgX01JUFNfU0lNLgoJKiBjb25maWcvbWlwcy9pcmlzNi1vMzIuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IFJlbW92ZWQuCgoJKiBjb25maWcvbWlwcy9pcmlzNi1vMzItYXMuaCAoU1VCVEFSR0VUX0FTTV9PUFRJTUlaSU5HX1NQRUMpOgoJTW92ZWQgLi4uCgkqIGNvbmZpZy9taXBzL2lyaXM1LmggKFNVQlRBUkdFVF9BU01fT1BUSU1JWklOR19TUEVDKTogLi4uIGhlcmUsCgl1cGRhdGluZyBjb21tZW50LgoJRml4ZXMgUFIgdGFyZ2V0LzEwMTkwLgoKMjAwMy0wOS0xNyAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKExJQl9MSU5VWF9TUEVDKTogTWFrZSAtcHRocmVhZCBhcHBseQoJdG8gc2hhcmVkIGxpYnJhcmllcy4KCjIwMDMtMDktMTcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzExNjQ2CgkqIGNmZ3J0bC5jIChwdXJnZV9kZWFkX2VkZ2VzKSBbSlVNUF9JTlNOXTogUmVtYXRlcmlhbGl6ZSB0aGUKCUVER0VfQUJOT1JNQUwgZmxhZyBmb3IgRUggZWRnZXMuCgkqIHRvcGxldi5jIChyZXN0X29mX2hhbmRsZV9jc2UpOiBEZWxldGUgdW5yZWFjaGFibGUgYmxvY2tzCglpZiBkZWFkIGVkZ2VzIHdlcmUgcHVyZ2VkLgoKMjAwMy0wOS0xNiAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IEFkZCB0YXJnZXQgcHJlZGVmaW5lcy4KCSogY29uZmlnL202OGsvbTY4ay1ub25lLmggKENQUF9DUFVfREVGQVVMVF9TUEVDKTogS2lsbCBhbGwgZGVmaW5pdGlvbnMuCgkqIGNvbmZpZy9tNjhrL202OGstbm9uZS5oIChDUFBfRlBVX1NQRUMpOiBSZW1vdmUuCgkqIGNvbmZpZy9tNjhrL202OGstbm9uZS5oIChDUFBfU1BFQyk6IExpa2V3aXNlLgoKMjAwMy0wOS0xNiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNmZ2NsZWFudXAuYyAobGFiZWxfaXNfanVtcF90YXJnZXRfcCk6IENvcnJlY3QgdXNlIG9mIHRhYmxlCglyZXR1cm5lZCBieSB0YWJsZWp1bXBfcC4KCjIwMDMtMDktMTYgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGduYXQuY29tPgoKCSogZHdhcmYyYXNtLmMgKGR3Ml9hc21fb3V0cHV0X25zdHJpbmcpOiBBZGQgY29tbWVudC4KCjIwMDMtMDktMTYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIGJvb3RzdHJhcC8xMjI2OQoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfZ2VuX3JlbGF0aW9uYWwpOiBBbGxvdyB0aGUgY21wX21vZGUKCWFyZ3VtZW50IHRvIGJlIFZPSURtb2RlLCB0YWtpbmcgdGhlIG1vZGUgb2YgdGhlIGNvbXBhcmlzb24gZnJvbQoJdGhlIG9wZXJhbmRzLiAgT25seSBjYWxsIHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uIGlmIHdlCglrbm93IHRoZSBtb2RlIG9mIHRoZSBjb21wYXJpc29uLiAgSG9ub3IgRkxPQVRfU1RPUkVfRkxBR19WQUxVRQoJaWYgY29tcGFyaXNvbiBoYXMgYSBmbG9hdGluZyBwb2ludCByZXN1bHQuICBFbnN1cmUgdGhhdCB0aGUKCXJlc3VsdCBpcyBhbHdheXMgb2YgdGhlIHNwZWNpZmllZCBtb2RlLgoJKHNpbXBsaWZ5X3JlcGxhY2VfcnR4KTogU2ltcGxpZnkgY2FsbCB0byBzaW1wbGlmeV9nZW5fcmVsYXRpb25hbC4KCShzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24pOiBFbnN1cmUgdGhlIGNvcnJlY3QgbW9kZSBhbmQgY21wX21vZGUKCWFyZSBhbHdheXMgcGFzc2VkIHRvIHNpbXBsaWZ5X2dlbl9yZWxhdGlvbmFsLiAgU2ltcGxpZnkgTk9UIG9mCgljb21wYXJpc29uIG9wZXJhdG9yIGluIGFueSBtb2RlLCBub3QganVzdCBCSW1vZGUuCgkoc2ltcGxpZnlfdGVybmFyeV9vcGVyYXRpb24pOiBDb3JyZWN0IHRlc3RzIG9uIHRoZSByZXR1cm4gdmFsdWUKCW9mIHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uIHRvIHVzZSBjb25zdF90cnVlX3J0eCwgbm90Cgljb25zdDFfcnR4LiAgQWJvcnQgaWYgaXQgZXZlciByZXR1cm5zIGEgbm9uLWNvbnN0YW50IHJlc3VsdC4KCgkqIGNmZ2xvb3BhbmFsLmMgKGNvdW50X3N0cmFuZ2VfbG9vcF9pdGVyYXRpb25zKTogVXNlIHRoZSBmdW5jdGlvbgoJc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24sIG5vdCBzaW1wbGlmeV9nZW5fcmVsYXRpb25hbCwgaWYKCXdlJ3JlIG9ubHkgaW50ZXJlc3RlZCBpbiBjb25zdGFudCBjb21wYXJpc29ucyBhbmQgd2lsbCBpZ25vcmUKCW5vbi1jb25zdGFudCByZXN1bHRzLgoKMjAwMy0wOS0xNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKHRyZWVfc3dhcF9vcGVyYW5kc19wKTogTmV3IGZ1bmN0aW9uIHRvIGRldGVybWluZQoJdGhlIHByZWZlcmVkIG9yZGVyaW5nIG9mIG9wZXJhbmRzLgoJKGZvbGQpOiBOdW1lcm91cyBjbGVhbi11cHMuICBVc2UgdHJlZV9zd2FwX29wZXJhbmRzX3Agd2hlbiBzd2FwcGluZwoJb3BlcmFuZHMgdG8gY29tbXV0YXRpdmUsIGNvbXBhcmlzb24gb3IgdGVybmFyeSBvcGVyYXRvcnMuICBSZXBsYWNlCgl1c2VzIG9mIFRSRUVfU0VUX0NPREUgd2l0aCByZWN1cnNpdmUgY2FsbCB0byBmb2xkLiAgUmVtb3ZlIGR1cGxpY2F0ZQoJdHJhbnNmb3JtYXRpb24gb2YgQSA/IEIgOiBDIGludG8gIUEgPyBDIDogQi4KCjIwMDMtMDktMTYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2xpbnV4LmggKExJTktfR0NDX0NfU0VRVUVOQ0VfU1BFQyk6IERlZmluZS4KCSogY29uZmlnL2FscGhhL2xpbnV4LmggKExJTktfR0NDX0NfU0VRVUVOQ0VfU1BFQyk6IERlZmluZS4KCSogY29uZmlnL2FybS9saW51eC1lbGYuaCAoTElOS19HQ0NfQ19TRVFVRU5DRV9TUEVDKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4LmggKExJTktfR0NDX0NfU0VRVUVOQ0VfU1BFQyk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKExJTktfR0NDX0NfU0VRVUVOQ0VfU1BFQyk6IERlZmluZS4KCSogY29uZmlnL3NoL2xpbnV4LmggKExJTktfR0NDX0NfU0VRVUVOQ0VfU1BFQyk6IERlZmluZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4LmggKExJTktfR0NDX0NfU0VRVUVOQ0VfU1BFQyk6IERlZmluZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAoTElOS19HQ0NfQ19TRVFVRU5DRV9TUEVDKTogRGVmaW5lLgoKMjAwMy0wOS0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgkgICAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5jIChoYW5kbGVfd2Fybl91bnVzZWRfcmVzdWx0X2F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbi4KCShjX2NvbW1vbl9hdHRyaWJ1dGVfdGFibGUpOiBBZGQgd2Fybl91bnVzZWRfcmVzdWx0LgoJKGNfZXhwYW5kX2V4cHIpOiBJc3N1ZSB3YXJuaW5nIHdoZW4gcmVzdWx0IG9mIGlubGluZWQgZnVuY3Rpb24KCXdpdGggd2Fybl91bnVzZWRfcmVzdWx0IGF0dHJpYnV0ZSBpcyBpZ25vcmVkLgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IElzc3VlIHdhcm5pbmcgd2hlbiByZXN1bHQgb2YgZnVuY3Rpb24KCXdpdGggd2Fybl91bnVzZWRfcmVzdWx0IGF0dHJpYnV0ZSBpcyBpZ25vcmVkLgoJKiBjLWNvbW1vbi5oIChTVE1UX0VYUFJfV0FSTl9VTlVTRURfUkVTVUxUKTogRGVmaW5lLgoJKiBleHByLmMgKGV4cHJfd2ZsX3N0YWNrKTogRGVmaW5lLgoJKGV4cGFuZF9leHByKSA8Y2FzZSBFWFBSX1dJVEhfRklMRV9MT0NBVElPTj46IElmIGlnbm9yZSwKCXBhc3MgY29uc3QwX3J0eCBhcyB0YXJnZXQuICBDaGFpbiBsb2NhdGlvbnMgaW50byBleHByX3dmbF9zdGFjay4KCSogdHJlZS1pbmxpbmUuYyAoZXhwYW5kX2NhbGxfaW5saW5lKTogU2V0IFNUTVRfRVhQUl9XQVJOX1VOVVNFRF9SRVNVTFQKCWJpdCBpZiBpbmxpbmVkIGZ1bmN0aW9uIGhhcyB3YXJuX3VudXNlZF9yZXN1bHQgYXR0cmlidXRlLgoJKiBpbnB1dC5oIChleHByX3dmbF9zdGFjayk6IERlY2xhcmUuCgkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgd2Fybl91bnVzZWRfcmVzdWx0IGF0dHJpYnV0ZS4KCjIwMDMtMDktMTUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY3BwbGliLmMgKGRvX3ByYWdtYSk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBjYl9saW5lX2NoYW5nZS4KCjIwMDMtMDktMTUgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jICh4dGVuc2FfbXVsdGlic3Nfc2VjdGlvbl90eXBlX2ZsYWdzKTogQWRkCglBVFRSSUJVVEVfVU5VU0VELgoJKGNhbGxfaW5zbl9vcGVyYW5kKTogRm9yIFBJQywgZG9uJ3QgYWxsb3cgYSBkaXJlY3QgY2FsbCB0byBhCglmdW5jdGlvbiBpbiBhIGRpZmZlcmVudCBzZWN0aW9uIHRoYW4gdGhlIGN1cnJlbnQgb25lLgoKMjAwMy0wOS0xNiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGRvYy9pbnZva2UudGV4aSAoV2FybmluZyBPcHRpb25zKTogQWRkIG1pc3NpbmcgaHlwaGVuIGJlZm9yZQoJIldpbXBvcnQiLiAgQ2hhbmdlICItV25vLWVuZGlmLWxhYmVscyIgdG8gIi1XZW5kaWYtbGFiZWxzIi4KCU1vdmUgIi1Xb2xkLXN0eWxlLWRlZmluaXRpb24iIHRvIHRoZSBDLW9ubHkgc2VjdGlvbi4KCUZpeCB0aGUgb3JkZXJpbmcgb2YgdGhlIHdhcm5pbmcgb3B0aW9ucy4KCjIwMDMtMDktMTUgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCSAgICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogZ2NzZS5jIChyZW1vdmVfcmVhY2hhYmxlX2VxdWl2X25vdGVzKTogTmV3LgoJcmVwbGFjZV9zdG9yZV9pbnNuKTogQ2FsbCBpdC4gIFVwZGF0ZSBhbnRpYyBsaXN0LgoJKHN0b3JlX2tpbGxlZF9pbl9pbnNuKTogVGFrZSBSRUdfRVFVQUwgbm90ZXMgaW50byBhY2NvdW50LgoJKGJ1aWxkX3N0b3JlX3ZlY3RvcnMsIGRlbGV0ZV9zdG9yZSk6IEFkZCBwYXJhbWV0ZXIgdG8KCXJlcGxhY2Vfc3RvcmVfaW5zbiBjYWxsLgoKMjAwMy0wOS0xNSAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKExFR0lUSU1BVEVfUElDX09QRVJBTkRfUCk6IFVzZQoJU1lNQk9MX1JFRl9MT0NBTF9QLgoKMjAwMy0wOS0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGV4cHIuaCAoREVGQVVMVF9GVU5DVElPTl9BUkdfUEFERElORyk6IE5ldy4KCShGVU5DVElPTl9BUkdfUEFERElORyk6IFVzZSBERUZBVUxUX0ZVTkNUSU9OX0FSR19QQURESU5HLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfaHB1eF9mdW5jdGlvbl9hcmdfcGFkZGluZyk6CglMaWtld2lzZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jIChtNjhoYzExX2Z1bmN0aW9uX2FyZ19wYWRkaW5nKToKCUxpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChmdW5jdGlvbl9hcmdfcGFkZGluZyk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZnVuY3Rpb25fYXJnX3BhZGRpbmcpOiBMaWtld2lzZS4KCjIwMDMtMDktMTUgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgoKCSogaGFpZmEtc2NoZWQuYyAoc2NoZWR1bGVfYmxvY2spOiBVc2UgcmVhZHlfcmVtb3ZlX2ZpcnN0IGluc3RlYWQKCW9mIGNob29zZV9yZWFkeSBmb3Igbm9uLWRmYSBpbnNuIHNjaGVkdWxpbmcuCgoyMDAzLTA5LTE1ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgkgICAgS2F2ZWggUi4gR2hhemkgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkb2MvaW52b2tlLnRleGkgKFdhcm5pbmcgT3B0aW9ucyk6IERlc2NyaWJlIC1Xb2xkLXN0eWxlLWRlZmluaXRpb24uCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlIE9QVF9Xb2xkX3N0eWxlX2RlZmluaXRpb24uCgkqIGMtcGFyc2UuaW46IFdhcm4gYWJvdXQgb2xkLXN0eWxlIHBhcmFtZXRlciBkZWZpbml0aW9uLgoJKiBjLWNvbW1vbi5jOiBEZWZpbmUgd2Fybl9vbGRfc3R5bGVfZGVmaW50aW9uLgoJKiBjLWNvbW1vbi5oOiBEZWNsYXJlIGl0LgoJKiBjLm9wdDogQWRkIFdvbGQtc3R5bGUtZGVmaW50aW9uLgoKMjAwMy0wOS0xNSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLmg6IENvbnZlcnQgKCkgcHJvdG90eXBlcyB0byBJU08gQzkwLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBMaWtld2lzZS4KCjIwMDMtMDktMTIgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCglQUiBvcHRpbWl6YXRpb24vMTA5MTQKCSogZXhwci5oIChnZXRfY29uZGl0aW9uLCBjYW5vbmljYWxpemVfY29uZGl0aW9uKTogRGVjbGFyYXRpb24gY2hhbmdlZC4KCSogY2ZnbG9vcGFuYWwuYyAoc2ltcGxlX2xvb3BfZXhpdF9wKTogQWRkIHBhcmFtZXRlciB0byBhIGdldF9jb25kaXRpb24KCWFuZCBjYW5vbmljYWxpemVfY29uZGl0aW9uIGNhbGxzLgoJKiBnY3NlLmMgKGZpc19nZXRfY29uZGl0aW9uLCBkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrc18xLAoJZGVsZXRlX251bGxfcG9pbnRlcl9jaGVja3MpOiBEaXR0by4KCSogaWZjdnQuYyAobm9jZV9nZXRfYWx0X2NvbmRpdGlvbiwgbm9jZV9nZXRfY29uZGl0aW9uKTogRGl0dG8uCgkqIHByZWRpY3QuYyAoZXN0aW1hdGVfcHJvYmFiaWxpdHksIGV4cGVjdGVkX3ZhbHVlX3RvX2JyX3Byb2IpOiBEaXR0by4KCSogbG9vcC5jIChjaGVja19kYnJhX2xvb3AsIGdldF9jb25kaXRpb25fZm9yX2xvb3ApOiBEaXR0by4KCShjYW5vbmljYWxpemVfY29uZGl0aW9uLCBnZXRfY29uZGl0aW9uKTogQWxsb3cgdG8gcmV0dXJuIGNvbXBhcmlzb25zCglvZiBjYyBtb2RlIHJlZ2lzdGVycy4KCSogbG9vcC11bnN3aXRjaC5jIChtYXlfdW5zd2l0Y2hfb25fcCwgdW5zd2l0Y2hfc2luZ2xlX2xvb3ApOiBBbGxvdwoJY2MgbW9kZSByZWdpc3RlcnMgY29tcGFyaXNvbiBpbiBjb25kaXRpb24uCgoyMDAzLTA5LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY292ZXJhZ2UuYyAoY3JlYXRlX2NvdmVyYWdlKTogRG8gbm90IGNhbGwgcHVzaGxldmVsL3BvcGxldmVsLgoJKiBsYW5naG9va3MtZGVmLmggKGxoZF9kb19ub3RoaW5nX2lpaV9yZXR1cm5fbnVsbF90cmVlKTogTmV3CglmdW5jdGlvbi4KCSogbGFuZ2hvb2tzLmMgKGxoZF9kb19ub3RoaW5nX2lpaV9yZXR1cm5fbnVsbF90cmVlKTogRGVmaW5lIGl0LgoKMjAwMy0wOS0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfY29tcGFyaXNvbik6IENvbnZlcnQKCShuZSAoYW5kIChsc2hpZnRydCAoeG9yIFggQ1NUKSBZKSAxKSAwKSBpbnRvCgkoZXEgKGFuZCAobHNoaWZ0cnQgWCBZKSAxKSAwKS4KCjIwMDMtMDktMTQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBhbGlhcy5jOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgkqIGNwcGhhc2guaDogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYzogTGlrZXdpc2UuCgoyMDAzLTA5LTE0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGMtcHBvdXRwdXQuYyAoY2JfbGluZV9jaGFuZ2UpOiBSZXZlcnQgMjAwMy0wOC0wNCdzIGNoYW5nZS4KCSogYy1sZXguYyAoY2JfbGluZV9jaGFuZ2UpOiBTa2lwIGxpbmUgY2hhbmdpbmcgd2hlbmV2ZXIKCWMtcHBvdXRwdXQuYyB3b3VsZC4KCjIwMDMtMDktMTQgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCgkqIHJhLmM6IENvbnZlcnQgdG8gSVNPIEM5MCBwcm90b3R5cGVzLgoJKiByYS1idWlsZC5jOiBMaWtld2lzZS4KCSogcmEtY29sb3JpemUuYzogTGlrZXdpc2UuCgkqIHJhLWRlYnVnLmM6IExpa2V3aXNlLgoJKiByYS1yZXdyaXRlLmM6IExpa2V3aXNlLgoKMjAwMy0wOS0xNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKCUuZHZpKTogUmVtb3ZlIGV4Y2VzcyAkKGRvY2RpcikuCgoyMDAzLTA5LTE0ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChTVEFDS19CWVRFUyk6IE1vdmUgZGVmaW5pdGlvbiB0byBoZWFkIG9mIGZpbGUuCgkoYXNzaWduX3Bhcm1zKTogRG9uJ3QgcGFzcyBjdXJyZW50X2Z1bmN0aW9uX3ByZXRlbmRfYXJnc19zaXplCglkaXJlY3RseSB0byBTRVRVUF9JTkNPTUlOR19WQVJBUkdTLiAgRm9yIHBhcnRpYWwgcmVnaXN0ZXIgYXJndW1lbnRzLAoJcm91bmQgY3VycmVudF9mdW5jdGlvbl9wcmV0ZW5kX2FyZ3Nfc2l6ZSB1cCB0byBTVEFDS19CWVRFUy4gIFNraXAgYW55CglleGNlc3MgYmVmb3JlIGxheWluZyBvdXQgdGhlIGFyZ3VtZW50LgoKMjAwMy0wOS0xNCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogb2JqYy9vYmpjLWFjdC5jOiBDb252ZXJ0IHRvIElTTyBDOTAgcHJvdG90eXBlcy4KCSogb2JqYy9vYmpjLWFjdC5oOiBMaWtld2lzZS4KCjIwMDMtMDktMTQgIE9sYWYgSGVyaW5nICA8b2xoQHN1c2UuZGU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBGaXggdHlwbzogUmVtb3ZlIGV4dHJhICcpJy4KCjIwMDMtMDktMTMgIEFuZHJldyBQaW5za2kgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdGFyZ2V0LzEyMDIxCgkqIGNvbmZpZy9tNjhrL25ldGJzZC1lbGYuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IFJlbW92ZSB0aGUgYXNzZXJ0cwoJYXMgdGhleSBhbHJlYWR5IGFyZSBkb25lIGluIGNvbmZpZy9tNjhrL202OGsuaC4KCSogY29uZmlnL202OGsvbmV0YnNkLmggKFRBUkdFVF9PU19DUFBfQlVJTFRJTlMpOiBMaWtld2lzZQoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoR0VOX0xPQ0FMX0xBQkVMX0ZPUl9TWU1CT0wpOiBSZW1vdmUuCgkobWFjaG9waWNfb3V0cHV0X3N0dWIpOiBPbmx5IGdlbmVyYXRlIHBpYyBiYXNlIHN5bWJvbHMgd2hlbiB1c2luZyBwaWMKCWFuZCBnZW5lcmF0ZSB0aGVtIGluIHRoZSBmb3JtIEwwMDAwMDAwMCRzcGIuCgoyMDAzLTA5LTEzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfYXNzZW1ibGVfcGVuZGluZ19mdW5jdGlvbnMpOiBFeHBvcnQuCgkoY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uKTogUmV2ZXJ0IFRSRUVfQVNNX1dSSVRURU4gY2hlY2suCgkqIGNncmFwaC5oOiBVcGRhdGUuCgoyMDAzLTA5LTEyICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBGaXggdHlwb3MgaW4gcHJldmlvdXMuCgoyMDAzLTA5LTEyICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBwcmV0dHktcHJpbnQuYyAocHBfY29uc3RydWN0KTogVXNlIHhjYWxsb2MgaW5zdGVhZCBvZiB4bWFsbG9jCgl3aGVuIGFsbG9jYXRpbmcgcHAtPmJ1ZmZlci4KCjIwMDMtMDktMTIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19zZWxlY3RfcnR4X3NlY3Rpb24pOiBVc2UKCWNvbnN0X2RhdGFfc2VjdGlvbiBmb3IgdGhpbmdzIHRoYXQgbWlnaHQgcmVxdWlyZSByZWxvY2F0aW9uLgoKMjAwMy0wOS0xMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIGJvb3RzdHJhcC8xMjI2NAoJKiB0cmVlLWlubGluZS5jIChpbmxpbmVfZm9yYmlkZGVuX3BfMSk6IENhc3QgdGhlIDNyZCBhcmcgdG8gdHJlZS4KCjIwMDMtMDktMTIgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL2VsZi5oIChBU01fU1BFQyk6IFJlbW92ZSBuby1kZW5zaXR5IG9wdGlvbi4gIFJlZm9ybWF0LgoJKiBjb25maWcveHRlbnNhL2xpbnV4LmggKEFTTV9TUEVDKTogTGlrZXdpc2UuCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKFRBUkdFVF9TV0lUQ0hFUyk6IFJlbW92ZSAtbWJpZy1lbmRpYW4sCgktbWxpdHRsZS1lbmRpYW4sIC1tW25vLV1kZW5zaXR5LCAtbVtuby1dYWJzLCAtbVtuby1dYWRkeCwgLW1bbm8tXW1hYzE2LAoJLW1bbm8tXW11bDE2LCAtbVtuby1dbXVsMzIsIC1tW25vLV1uc2EsIC1tW25vLV1taW5tYXgsIC1tW25vLV1zZXh0LAoJLW1bbm8tXWJvb2xlYW5zLCAtbWhhcmQtZmxvYXQsIC1tc29mdC1mbG9hdCwgLW1bbm8tXWhhcmQtZmxvYXQtZGl2LAoJLW1bbm8tXWhhcmQtZmxvYXQtcmVjaXAsIC1tW25vLV1oYXJkLWZsb2F0LXNxcnQsIGFuZAoJLW1bbm8tXWhhcmQtZmxvYXQtcnNxcnQgb3B0aW9ucy4gIERlbGV0ZSBjb3JyZXNwb25kaW5nIE1BU0tfKiBtYWNyb3MKCWFuZCByZWRlZmluZSBjb3JyZXNwb25kaW5nIFRBUkdFVF8qIG1hY3JvcyB3aXRoIGNvbnN0YW50cyBmcm9tIHRoZQoJeHRlbnNhLWNvbmZpZy5oIGhlYWRlci4KCSogZG9jL2ludm9rZS50ZXhpIChPcHRpb24gU3VtbWFyeSwgWHRlbnNhIE9wdGlvbnMpOiBSZW1vdmUgZG9jdW1lbnRpb24KCWZvciB0aGUgb3B0aW9ucyBsaXN0ZWQgYWJvdmUuCgoyMDAzLTA5LTEyICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaDogIFVzZSBDOTAgcHJvdG90eXBlcy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtYy5jOiAgRGl0dG8uCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmM6ICBEaXR0by4KCSogY29uZmlnL3JzNjAwMC8gc3lzdjQuaDogIERpdHRvLgoKMjAwMy0wOS0xMiAgQ2hyaXMgTGF0dG5lciA8c2FicmVAbm9uZG90Lm9yZz4KCgkqIGxvb3AuYzogTW92ZSBjb21tZW50cyBkZXNjcmliaW5nIEJJVidzIGFuZCBHSVYncyB0byB0b3Agb2YgZmlsZQoKMjAwMy0wOS0xMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzg5NjcKCSogYWxpYXMuYyAod3JpdGVfZGVwZW5kZW5jZV9wKTogTW9kaWZ5IHRvIHRha2UgYW4gYWRkaXRpb25hbCBjb25zdHAKCWFyZ3VtZW50IHRoYXQgY29udHJvbHMgd2hldGhlciB0aGUgVU5DSEFOR0lOR19SVFhfUCBmbGFncyBhcmUgdXNlZC4KCShhbnRpX2RlcGVuZGVuY2UsIG91dHB1dF9kZXBlbmRlbmNlKTogQWRqdXN0IHdyaXRlX2RlcGVuZGVuY2VfcAoJY2FsbGVycyB0byBwYXNzIHRoaXMgYWRkaXRpb25hbCBhcmd1bWVudCwgdG8gcmV0dXJuIHRoZSBzYW1lIHJlc3VsdC4KCSh1bmNoYW5naW5nX2FudGlfZGVwZW5kZW5jZSk6IE5ldyB2YXJpYW50IG9mIGFudGlfZGVwZW5kZW5jZSB0aGF0CglpZ25vcmVzIHRoZSBVTkNIQU5HSU5HX1JUWF9QIHByb3BlcnR5IG9uIG1lbW9yeSByZWZlcmVuY2VzLgoJKiBydGwuaCAodW5jaGFuaW5nX2FudGlfZGVwZW5kZW5jZSk6IFByb3RvdHlwZSBoZXJlLgoJKiBmbG93LmMgKGluaXRfcHJvcGFnYXRlX2Jsb2NrKTogUGxhY2UgZmFrZSBjb25zdGFudCBtZW0gd3JpdGVzIG9uCgl0aGUgbWVtX3NldF9saXN0IHNvIHRoYXQgZGVhZCB3cml0ZXMgdG8gY29uc3QgdmFyaWFibGVzIGFyZSBkZWxldGVkLgoJKGluc25fZGVhZF9wKTogQ2hhbmdlIGFudGlfZGVwZW5kZW5jZSB0byB1bmNoYW5naW5nX2FudGlfZGVwZW5kZW5jZS4KCShtYXJrX3VzZWRfcmVncyk6IExpa2V3aXNlLgoKMjAwMy0wOS0xMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21jb3JlL21jb3JlLXByb3Rvcy5oIChtY29yZV9yMTVfb3BlcmFuZF9wKTogRGVjbGFyZS4KCShtY29yZV9zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogRGVjbGFyZS4KCShtY29yZV9vdXRwdXRfaW5saW5lX2NvbnN0X2ZvcmNlZCk6IFJlbW92ZS4KCSogY29uZmlnL21jb3JlL21jb3JlLm1kIChtb3ZzaSk6IFJlbW92ZSB0aGUgY29kZSB0aGF0IGZvcmNlZAoJbm9uLWlubGluZWFibGUgY29uc3RhbnRzIGludG8gYSByZWdpc3RlciBpZiB0aGUgdGFyZ2V0IHdhcyByMTUKCW9yIHRoZSBzdGFjayBwb2ludGVyLiAgUmVtb3ZlIGNvbnN0YW50IHJlc3RyaWN0aW9ucyBmcm9tIHRoZSBtYWluCglkZWZpbmVfaW5zbi4gIFJlbW92ZSByIDwtIEksIHIgPC0gTSBhbmQgciA8LSBOIGFsdGVybmF0aXZlcyBpbiBmYXZvcgoJb2YgYW4gciA8LSBQIGFsdGVybmF0aXZlLiAgUmVtb3ZlIGZhbGxiYWNrIGRlZmluZV9pbnNuIGZvciByZWxvYWQuCgkobW92aGksIG1vdnFpKTogVXNlIGdlbl9sb3dwYXJ0IHJhdGhlciB0aGFuIGdlbl9TVUJSRUcuICBSZW1vdmUgcmVsb2FkCglkZWZpbmVfaW5zbi4gIFVzZSBtY29yZV9vdXRwdXRfbW92ZSBpbiB0aGUgcmVtYWluaW5nIGRlZmluZV9pbnNuLgoJQWRqdXN0IGNvbmRpdGlvbiBhbmQgY29uc3RyYWludHMgaW4gdGhlIHdheSBhcyBmb3IgbW92c2kuCgkobW92ZGkpOiBBbHdheXMgc3BsaXQgdW5hY2NlcHRhYmxlIGNvbnN0YW50cyBpbnRvIHR3by4gIFVzZQoJc2ltcGxpZnlfZ2VuX3N1YnJlZyBpbnN0ZWFkIG9mIG9wZXJhbmRfc3Vid29yZHssX2ZvcmNlfS4KCSogY29uZmlnL21jb3JlL21jb3JlLmMgKG1jb3JlX291dHB1dF9pbmxpbmVfY29uc3RfZm9yY2VkKTogUmVtb3ZlLgoJKG1jb3JlX291dHB1dF9tb3ZlKTogU3VwcG9ydCBISW1vZGUgYW5kIFFJbW9kZSBtb3ZlcyBhcyB3ZWxsLgoJKG1jb3JlX20xNV9vcGVyYW5kX3ApOiBOZXcgZnVuY3Rpb24uCgkobWNvcmVfcmVsb2FkX2NsYXNzKTogVXNlIGl0IHRvIGRldGVjdCBjYXNlcyB3aGVyZSBMUldfUkVHUyBhcmUgYmV0dGVyLgoJKG1jb3JlX3NlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9tY29yZS9tY29yZS5oIChTRUNPTkRBUllfUkVMT0FEX0NMQVNTKTogUmVkZWZpbmUgaW4KCXRlcm1zIG9mIG1jb3JlX3NlY29uZGFyeV9yZWxvYWRfY2xhc3MuCgoyMDAzLTA5LTExICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGMtbGV4LmMgKGZlX2ZpbGVfY2hhbmdlKTogRG9uJ3QgdHJhbnNmb3JtIHRvX2xpbmUgd2l0aCBTT1VSQ0VfTElORS4KCjIwMDMtMDktMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9sb2dhcml0aG0pOiBpZiBOIGNhbid0IGJlIHRydW5jYXRlZCB0bwoJTU9ERSBleGFjdGx5LCB0aGVuIG9ubHkgY29udmVydCBsb2dOKE4pIC0+IDEuMCBpZgoJZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zIGlzIHNldC4KCgkqIGJ1aWx0aW5zLmMgKGJ1aWx0aW5fZGNvbnN0c19pbml0LCBkY29uc3RwaSwgZGNvbnN0ZSwKCWluaXRfYnVpbHRpbl9kY29uc3RzKTogRGVsZXRlLgoJKiBlbWl0LXJ0bC5jIChkY29uc3RwaSwgZGNvbnN0ZSk6IERlZmluZS4KCShpbml0X2VtaXRfb25jZSk6IEluaXRpYWxpemUgZGNvbnN0cGkgJiBkY29uc3RlLgoJKiByZWFsLmggKGRjb25zdHBpLCBkY29uc3RlKTogRGVjbGFyZS4KCjIwMDMtMDktMTEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIGZvcnRyYW4vMTE1MjIKCSogZHdhcmYyb3V0LmMgKGdlbl9pbmxpbmVkX3N1YnJvdXRpbmVfZGllKTogRW1pdCBhYnN0cmFjdCBmdW5jdGlvbgoJZm9yIHVsdGltYXRlIG9yaWdpbiBldmVuIGlmIGJsb2NrIGlzIGFic3RyYWN0LgoKMjAwMy0wOS0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfc2ltcGxpZnlfcnR4KTogTW92ZSBzZXZlcmFsIE5PVCBhbmQgTkVHCglvcHRpbWl6YXRpb25zIGZyb20gaGVyZS4uLgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfdW5hcnlfb3BlcmF0aW9uKTogdG8gaGVyZS4gIFJlY3Vyc2l2ZWx5CglzaW1wbGlmeSBleHByZXNzaW9ucyB1c2luZyBzaW1wbGlmeV9nZW5fKmFyeSBpbnN0ZWFkIG9mIGdlbl9ydHhfKi4KCjIwMDMtMDktMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IEFkZCBuZXN0ZWQgYXJnLgoJVHdlZWsgdGVzdHMgZm9yIGZ1bmN0aW9uIGFscmVhZHkgZ2VuZXJhdGVkLgoJKGNncmFwaF9leHBhbmRfZnVuY3Rpb24pOiBEb24ndCBkb3VibGUgYW5ub3VuY2UgaW4gIXVuaXQtYXQtYS10aW1lLgoJKiBjZ3JhcGguaCAoY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uKTogVXBkYXRlIGZvciBleHRyYSBhcmcuCgkqIGMtZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCjIwMDMtMDktMTAgIEpvZSBCdWNrICA8amJ1Y2tAd2Vsc2gtYnVjay5vcmc+CgoJKiBjLWRlY2wuYyAocG9wbGV2ZWwpOiBFbGltaW5hdGUgdXNlIG9mIHw9IGluIGZ1bmN0aW9uX2JvZHkgYXNzaWdubWVudC4KCjIwMDMtMDktMTAgIEplcnJ5IFF1aW5uICA8amxxdWlubkBvcHRvbmxpbmUubmV0PgoKCSogcmVhbC5jOiBVcGRhdGUgVVJMIHRvIFZBWCBmbG9hdGluZyBwb2ludCBkb2NzLgoJKGRlY29kZV92YXhfZCk6IEV4dHJhY3QgOCBleHBvbmVudCBiaXRzIGluc3RlYWQgb2YgNy4KCjIwMDMtMDktMTAgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBjb21iaW5lLmMgKGZvcmNlX3RvX21vZGUpOiBTZXQgZnVsbGVyX21hc2sgYmFzZWQgb25seSBvbiBtYXNrLAoJbm90IG9wX21vZGUuCgoyMDAzLTA5LTExICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjLW9iamMtY29tbW9uLmMgKGNfY2Fubm90X2lubGluZV90cmVlX2ZuKTogV2FybgoJb24gd2h5IGZ1bmN0aW9uIGlzIG5vdCBpbmxpbmFibGU7IGRvIG5vdCBjaGVjawoJdGhlIGJvZHkuCgkoaW5saW5lX2ZvcmJpZGRlbl9wKTogTW92ZSB0by4uLgoJKiB0cmVlLWlubGluZS5jIChpbmxpbmVfZm9yYmlkZGVuX3BfMSk6IC4uLiBoZXJlOyBBZGQgd2FybmluZ3M7CglkZWFsIHdpdGggYWxsb2NhLCBsb25nam1wLgoJKGlubGluZV9mb3JiaWRkZW5fcCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoZmluZF9hbGxvY2FfY2FsbF8xLCBmaW5kX2FsbG9jYV9jYWxsLCBmaW5kX2J1aWx0aW5fbG9uZ2ptcF9jYWxsXzEsCglmaW5kX2J1aWx0aW5fbG9uZ2ptcF9jYWxsKTogS2lsbC4KCjIwMDMtMDktMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjZ3JhcGguaCAoc3RydWN0IGNncmFwaF9ub2RlKTogUmVuYW1lIGxvd2VyZWQgdG8gYW5hbHl6ZWQuCgkqIGNncmFwaHVuaXQuYzogVXBkYXRlIHRvIG1hdGNoLgoJKHJlY29yZF9jYWxsXzEpOiBSZWFycmFuZ2UuICBDYWxsIGxhbmcgaG9vayBmb3IgbGFuZ3VhZ2Ugbm9kZXMuCgkoY2dyYXBoX2FuYWx5emVfZnVuY3Rpb24pOiBEb24ndCBjYWxsIGxvd2VyX2Z1bmN0aW9uLgoJKiBsYW5naG9va3MuaCAoc3RydWN0IGxhbmdfaG9va3NfZm9yX2NhbGxncmFwaCk6IFJlcGxhY2UKCWxvd2VyX2Z1bmN0aW9uIHdpdGggYW5hbHl6ZV9leHByLgoJKiBsYW5naG9va3MtZGVmLmg6IFVwZGF0ZSB0byBtYXRjaC4KCSogbGFuZ2hvb2tzLmMgKGxoZF9jYWxsZ3JhcGhfYW5hbHl6ZV9leHByKTogTmV3LgoKMjAwMy0wOS0xMCAgTWFydGluIEh1c2VtYW5uICA8bWFydGluQGR1c2t3YXJlLmRlPgoKCVBSIHRhcmdldC8xMTk2NQoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfdjhwbHVzX3NoaWZ0KTogUHJvdGVjdCBhZ2FpbnN0Cgljb25zdGFudHMgZ3JlYXRlciB0aGFuIDYzLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKGFzaGxzaTMsIGFzaHJzaTMsIGxzaHJzaTMpOiBQcm90ZWN0CglhZ2FpbnN0IGNvbnN0YW50cyBncmVhdGVyIHRoYW4gMzEuCgkoKmFzaGxkaTNfc3A2NCwgKmFzaHJkaTNfc3A2NCwgKmxzaHJkaTNfc3A2NCk6IFByb3RlY3QgYWdhaW5zdAoJY29uc3RhbnRzIGdyZWF0ZXIgdGhhbiA2My4KCjIwMDMtMDktMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IFJlbW92ZSB1bnVzZWQgYXJndW1lbnQuCgkqIGNncmFwaC5oIChjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiBVcGRhdGUuCgkqIGMtZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBVcGRhdGUuCgoyMDAzLTA5LTA5ICBEZXZhbmcgUGF0ZWwgIDxkcGF0ZWxAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5oIChMSU5LX1NQRUMpOiBQYXNzIC1ub2ZpeHByZWJpbmRpbmcgdG8gbGlua2VyLgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IG5ldyBEYXJ3aW4gbGlua2VyIG9wdGlvbiAtbm9maXhwcmViaW5kaW5nLgoKMjAwMy0wOS0wOSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW46IENoYW5nZSB1c2FnZSBvZiAnaGVhZCcgdG8gJ3NlZCAxcScuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDktMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBleGNlcHQuYzogSW5jbHVkZSBjZ3JhcGguaC4KCShvdXRwdXRfZnVuY3Rpb25fZXhjZXB0aW9uX3RhYmxlKTogSW52b2tlCgljZ3JhcGhfdmFycG9vbF9tYXJrX25lZWRlZF9ub2RlLgoJKiBNYWtlZmlsZS5pbiAoZXhjZXB0Lm8pOiBVcGRhdGUuCgoyMDAzLTA5LTA3ICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBEZWZpbmUgUkVNQUtFRkxBR1MgZm9yIExBTkdVQUdFUyAmIEJPT1RfQ0ZMQUdTCglhbmQgdXNlIGl0IHRocm91Z2hvdXQuCgoyMDAzLTA5LTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChyZWFsX2Rjb25zdHAsIGZvbGRfYnVpbHRpbl9sb2dhcml0aG0sCglmb2xkX2J1aWx0aW5fZXhwb25lbnQpOiBOZXcsIHNwbGl0IG91dCBmcm9tIGZvbGRfYnVpbHRpbi4gIEFsc28KCWdlbmVyYWxpemUgdG8gYWRkIGxvZzIsIGxvZzEwLCBleHAyIGFuZCBleHAxMC9wb3cxMCBlcXVpdmFsZW50cy4KCSogZW1pdC1ydGwuYyAoZGNvbnN0MywgZGNvbnN0MTAsIGRjb25zdHRoaXJkKTogTmV3LgoJKGluaXRfZW1pdF9vbmNlKTogSW5pdGlhbGl6ZSBuZXcgZGNvbnN0cywgdXNlIEFSUkFZX1NJWkUgaW4gbGlldQoJb2YgaGFyZGNvZGVkIGFycmF5IHNpemUuCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IEFkZCBjYXNlcyBmb3IgZXhwMiwgZXhwMTAgYW5kIHBvdzEwLgoJKHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogTGlrZXdpc2UuCgkqIHJlYWwuaCAoZGNvbnN0MywgZGNvbnN0MTAsIGRjb25zdHRoaXJkKTogTmV3LgoKMjAwMy0wOS0wOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiBGaXggaGFuZGxpbmcgb2YgZXh0ZXJuCglpbmxpbmUgZnVuY3Rpb25zLgoJKGNncmFwaF9maW5hbGl6ZV9jb21waWxhdGlvbl91bml0KTogRml4IGNyYXNoIHdoZW4gZGVhbGluZyB3aXRoIGxvc3QKCURFQ0xfU0FWRURfVFJFRS4KCjIwMDMtMDktMDkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX2NhYnMpOiBQcm90ZWN0IHRoZSBjb21wbGV4IGFyZ3VtZW50CglhZ2FpbnN0IG11bHRpcGxlIGV2YWx1YXRpb24gd2hlbiBvcHRpbWl6aW5nIGNhYnMqIGludG8gc3FydCouCgoyMDAzLTA5LTA5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB2YXJhc20uYyAobm90aWNlX2dsb2JhbF9zeW1ib2wpOiAgUHJvcGVybHkgZGVhbCB3aXRoIHdlYWsgc3ltYm9scy4KCjIwMDMtMDktMDggIEtlbGxleSBDb29rIDxrZWxsZXljb29rQHdpZGVvcGVud2VzdC5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmV2ZXJ0IHllc3RlcmRheSdzIGNoYW5nZS4KCjIwMDMtMDktMDggIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCSAgICBQZXRlciBCYXJhZGEgPHBldGVyQGJhcmFkYXMub3JnPgoKCSogY29uZmlnL202OGsvY29mZi5oIChSRUdJU1RFUl9OQU1FUyk6IEFkZCBmYWtlIHJlZ2lzdGVyIGBhcmdwdHInCgkqIGNvbmZpZy9tNjhrL2hwMzIwLmggKFJFR0lTVEVSX05BTUVTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL2xpbnV4LmggKFJFR0lTVEVSX05BTUVTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGtlbGYuaCAoUkVHSVNURVJfTkFNRVMpOiBMaWtld2lzZS4KCSogZ2NjL2NvbmZpZy9tNjhrL3Nncy5oIChSRUdJU1RFUl9OQU1FUyk6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrLXByb3Rvcy5oIChtNjhrX2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogQWRkIHByb3RvdHlwZS4KCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX2ZyYW1lKTogTmV3IHN0cnVjdCwgc2ltdWxhciB0byBpeDg2IGJhY2stZW5kLgoJKG02OGtfY29tcHV0ZV9mcmFtZV9sYXlvdXQpOiBOZXcgZnVuY3Rpb24uCgkobTY4a19pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IE5ldyBmdW5jdGlvbi4KCShtNjhrX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IENvbGRGaXJlLXNwZWNpZmljIG1vdmVtIGhhbmRsaW5nLgoJKG02OGtfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoRklSU1RfUFNFVURPX1JFR0lTVEVSKTogTWFrZSByb29tIGZvciBhcmdwdHIgcmVnLgoJKEFSR19QT0lOVEVSX1JFR05VTSk6IEFkZCBuZXcgZGVmaW5pdGlvbi4KCShJTklUSUFMX0ZSQU1FX1BPSU5URVJfT0ZGU0VUKTogUmVtb3ZlIG1hY3JvLgoJKEVMSU1JTkFCTEVfUkVHUyk6IERlZmluZSBuZXcgbWFjcm8sIGxpa2UgaW4gaXg4NiBiYWNrLWVuZC4KCShDQU5fRUxJTUlOQVRFKTogTGlrZXdpc2UuCgkoSU5JVElBTF9FTElNSU5BVElPTl9PRkZTRVQpOiBMaWtld2lzZS4KCjIwMDMtMDktMDggIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBTaW1wbGlmeQoJYnkgcmVtb3ZpbmcgcmVkdW5kYW50IHZhcmlhYmxlIGNmYV9zdG9yZV9vZmZzZXQuCgoyMDAzLTA5LTA4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbGFuZ2hvb2tzLWRlZi5oIChsaGRfcmVnaXN0ZXJfYnVpbHRpbl90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKExBTkdfSE9PS1NfUkVHSVNURVJfQlVJTFRJTl9UWVBFKTogTmV3IG1hY3JvLgoJKExBTkdfSE9PS1NfRk9SX1RZUEVTX0lOSVRJQUxJWkVSKTogVXBkYXRlLgoJKiBsYW5naG9va3MuaCAobGFuZ19ob29rc19mb3JfdHlwZXMpOiBBZGQgcmVnaXN0ZXJfYnVpbHRpbl90eXBlLgoJKiBsYW5naG9va3MuYyAobGhkX3JlZ2lzdGVyX2J1aWx0aW5fdHlwZSk6IE5ldyBmdW5jdGlvbi4KCSogYy1jb21tb24uaCAoY19yZWdpc3Rlcl9idWlsdGluX3R5cGUpOiBEZWNsYXJlLgoJKiBjLWNvbW1vbi5jIChjX3JlZ2lzdGVyX2J1aWx0aW5fdHlwZSk6IE5ldyBmdW5jdGlvbi4KCSogYy1sYW5nLmMgKExBTkdfSE9PS1NfUkVHSVNURVJfQlVJTFRJTl9UWVBFKTogRGVmaW5lIHRvCgljX3JlZ2lzdGVyX2J1aWx0aW5fdHlwZS4KCSogY29uZmlnL2lhNjQvaHB1eC5oIChUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKTogUmVtb3ZlIF9fZnByZWcsCglfX2Zsb2F0ODAsIGFuZCBfX2Zsb2F0MTI4IG1hY3Jvcy4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2luaXRfYnVpbHRpbnMpOiBDcmVhdGUgX19mcHJlZywKCV9fZmxvYXQ4MCwgYW5kIF9fZmxvYXQxMjggdHlwZXMuCgoyMDAzLTA5LTA4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGluLXR5cGVzLmRlZgoJKEJUX0ZOX0NPTVBMRVhfTE9OR0RPVUJMRV9DT01QTEVYX0xPTkdET1VCTEVfQ09NUExFWF9MT05HRE9VQkxFLAoJQlRfRk5fQ09NUExFWF9ET1VCTEVfQ09NUExFWF9ET1VCTEVfQ09NUExFWF9ET1VCTEUsCglCVF9GTl9DT01QTEVYX0ZMT0FUX0NPTVBMRVhfRkxPQVRfQ09NUExFWF9GTE9BVCk6IE5ldy4KCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9DQUNPUywgQlVJTFRfSU5fQ0FDT1NGLCBCVUlMVF9JTl9DQUNPU0gsCglCVUlMVF9JTl9DQUNPU0hGLCBCVUlMVF9JTl9DQUNPU0hMLCBCVUlMVF9JTl9DQUNPU0wsCglCVUlMVF9JTl9DQVJHLCBCVUlMVF9JTl9DQVJHRiwgQlVJTFRfSU5fQ0FSR0wsIEJVSUxUX0lOX0NBU0lOLAoJQlVJTFRfSU5fQ0FTSU5GLCBCVUlMVF9JTl9DQVNJTkgsIEJVSUxUX0lOX0NBU0lOSEYsCglCVUlMVF9JTl9DQVNJTkhMLCBCVUlMVF9JTl9DQVNJTkwsIEJVSUxUX0lOX0NBVEFOLAoJQlVJTFRfSU5fQ0FUQU5GLCBCVUlMVF9JTl9DQVRBTkgsIEJVSUxUX0lOX0NBVEFOSEYsCglCVUlMVF9JTl9DQVRBTkhMLCBCVUlMVF9JTl9DQVRBTkwsIEJVSUxUX0lOX0NDT1MsIEJVSUxUX0lOX0NDT1NGLAoJQlVJTFRfSU5fQ0NPU0gsIEJVSUxUX0lOX0NDT1NIRiwgQlVJTFRfSU5fQ0NPU0hMLCBCVUlMVF9JTl9DQ09TTCwKCUJVSUxUX0lOX0NFWFAsIEJVSUxUX0lOX0NFWFBGLCBCVUlMVF9JTl9DRVhQTCwgQlVJTFRfSU5fQ1BPVywKCUJVSUxUX0lOX0NQT1dGLCBCVUlMVF9JTl9DUE9XTCwgQlVJTFRfSU5fQ1BST0osIEJVSUxUX0lOX0NQUk9KRiwKCUJVSUxUX0lOX0NQUk9KTCwgQlVJTFRfSU5fQ1NJTiwgQlVJTFRfSU5fQ1NJTkYsIEJVSUxUX0lOX0NTSU5ILAoJQlVJTFRfSU5fQ1NJTkhGLCBCVUlMVF9JTl9DU0lOSEwsIEJVSUxUX0lOX0NTSU5MLCBCVUlMVF9JTl9DU1FSVCwKCUJVSUxUX0lOX0NTUVJURiwgQlVJTFRfSU5fQ1NRUlRMLCBCVUlMVF9JTl9DVEFOLCBCVUlMVF9JTl9DVEFORiwKCUJVSUxUX0lOX0NUQU5ILCBCVUlMVF9JTl9DVEFOSEYsIEJVSUxUX0lOX0NUQU5ITCwgQlVJTFRfSU5fQ1RBTkwpOgoJTmV3LgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IG5ldyBidWlsdGlucy4KCjIwMDMtMDktMDkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaC5jIChjZ3JhcGhfdmFycG9vbF9maW5hbGl6ZV9kZWNsKTogU2FuaXR5IGNoZWNrIGR1cGxpY2F0ZWQKCWZpbmFsaXphdGlvbi4KCSogY2dyYXBodW5pdC5jIChkZWNpZGVfaXNfZm5jdGlvbl9uZWVkZWQpOiBBdm9pZCBzcGVjaWFsIGNhc2Ugb2YgbmVzdGVkCglmdW5jdGlvbnMsIGNoZWNrIGZvciBDT01EQVQuCgkoY2dyYXBoX2Fzc2VtYmxlX3BlbmRpbmdfZnVuY3Rpb25zKTogQnJlYWsgb3V0IGZyb20uLi4KCShjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiAuLi4gaGVyZTsgYWxsb3cgcmVkZWZpbmlnIG9mIGV4dGVybiBpbmxpbmUKCWZ1bmN0aW9ucy4KCShyZWNvcmRfY2FsbF8xKTogUmVjb3JkIGZ1bmN0aW9uIHJlZmVyZW5jZXMgb25seSBpbiBub24tdW5pdC1hdC1hLXRpbWUKCW1vZGUuCgkoY2dyYXBoX2FuYWx5emVfZnVuY3Rpb24pOiBSZXNldCBjdXJyZW50X2Z1bmN0aW9uX2RlY2wuCgkoY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQpOiAgQXNzZW1ibGUgcGVuZGluZyBmdW5jdGlvbnMuCgoyMDAzLTA5LTA4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbWtsaWJnY2MuaW4gKGxpYmNjLmEpOiBEZXBlbmQgb24gc3RtcC1kaXJzLgoJKGxpYmdvdi5hKTogTGlrZXdpc2UuCgkobGliZ2NjX2VoLmEpOiBMaWtld2lzZS4KCjIwMDMtMDktMDggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChvcGVyYW5kX2VxdWFsX3ApOiBDbGFyaWZ5IGRvY3VtZW50YXRpb24uCgoyMDAzLTA5LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGNfZXhwYW5kX2JvZHlfMSk6IFB1c2ggYW5kIHBvcCBmdW5jdGlvbiBjb250ZXh0IGhlcmUuCgkqIHRyZWUtb3B0aW1pemUuYyAodHJlZV9yZXN0X29mX2NvbXBpbGF0aW9uKTogLi4uIG5vdCBoZXJlLiAgVGFrZQoJbmVzdGVkIGFyZ3VtZW50IGluc3RlYWQgb2YgY29tcHV0aW5nIG5lc3Rpbmcgb3Vyc2VsdmVzLgoKMjAwMy0wOS0wOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9oYW5kbGVfc3RhY2tfcmVncyk6IENhbGwgc3BsaXRfYWxsX2luc25zIGJlZm9yZQoJcmVnc3RhY2sgaWYgb3B0aW1pemluZyBidXQgbm90IHNjaGVkdWxpbmcgYWZ0ZXIgcmVsb2FkLgoKMjAwMy0wOS0wOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBOZXcgdHlwZS4KCShUQVJHRVRfSEFWRV9UTFMsIFRBUkdFVF9DQU5OT1RfRk9SQ0VfQ09OU1RfTUVNKTogRGVmaW5lLgoJKHNwYXJjX292ZXJyaWRlX29wdGlvbnMpOiBJbml0aWFsaXplIGluaXRfbWFjaGluZV9zdGF0dXMuCgkodGxzX3N5bWJvbGljX29wZXJhbmQsIHRnZF9zeW1ib2xpY19vcGVyYW5kLCB0bGRfc3ltYm9saWNfb3BlcmFuZCwKCXRpZV9zeW1ib2xpY19vcGVyYW5kLCB0bGVfc3ltYm9saWNfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbnMuCgkoc3ltYm9saWNfb3BlcmFuZCk6IERpc2FsbG93IHRsc19zeW1ib2xpY19vcGVyYW5kLgoJKHN5bWJvbGljX21lbW9yeV9vcGVyYW5kKTogTGlrZXdpc2UuCgkodGxzX2NhbGxfZGVsYXksIHNwYXJjX2Nhbm5vdF9mb3JjZV9jb25zdF9tZW0sIGxlZ2l0aW1hdGVfY29uc3RhbnRfcCwKCWNvbnN0YW50X2FkZHJlc3NfcCwgbGVnaXRpbWF0ZV9waWNfb3BlcmFuZF9wLCBsZWdpdGltYXRlX2FkZHJlc3NfcCk6CglOZXcgZnVuY3Rpb25zLgoJKHNwYXJjX3Rsc19zeW1ib2wpOiBOZXcgdmFyaWFibGUuCgkoc3BhcmNfdGxzX2dldF9hZGRyLCBzcGFyY190bHNfZ290LCBsZWdpdGltaXplX3Rsc19hZGRyZXNzLAoJbGVnaXRpbWl6ZV9hZGRyZXNzKTogTmV3IGZ1bmN0aW9ucy4KCShwcmludF9vcGVyYW5kKTogSGFuZGxlICUmLgoJKHNwYXJjX2luaXRfbWFjaGluZV9zdGF0dXMsIGdldF9zb21lX2xvY2FsX2R5bmFtaWNfbmFtZSwKCWdldF9zb21lX2xvY2FsX2R5bmFtaWNfbmFtZV8xKTogTmV3IGZ1bmN0aW9ucy4KCShzcGFyY19vdXRwdXRfZHdhcmZfZHRwcmVsKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoQ09OU1RBTlRfQUREUkVTU19QKTogTW92ZWQgaW50bwoJY29uc3RhbnRfYWRkcmVzc19wLgoJKExFR0lUSU1BVEVfUElDX09QRVJBTkRfUCk6IE1vdmVkIGludG8gbGVnaXRpbWF0ZV9waWNfb3BlcmFuZF9wLgoJKExFR0lUSU1BVEVfQ09OU1RBTlRfUCk6IE1vdmVkIGludG8gbGVnaXRpbWF0ZV9jb25zdGFudF9wLgoJKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IE1vdmVkIGludG8gbGVnaXRpbWF0ZV9hZGRyZXNzX3AuCgkoTEVHSVRJTUlaRV9BRERSRVNTKTogTW92ZWQgaW50byBsZWdpdGltaXplX2FkZHJlc3MuCgkoUFJJTlRfT1BFUkFORF9QVU5DVF9WQUxJRF9QKTogQWRkICcmJy4KCShUQVJHRVRfVExTLCBUQVJHRVRfU1VOX1RMUywgVEFSR0VUX0dOVV9UTFMpOiBEZWZpbmUuCgkoQVNNX09VVFBVVF9EV0FSRl9EVFBSRUwpOiBEZWZpbmUuCgkoUFJFRElDQVRFX0NPREVTKTogQWRkIHRnZF9zeW1ib2xpY19vcGVyYW5kLCB0bGRfc3ltYm9saWNfb3BlcmFuZCwKCXRpZV9zeW1ib2xpY19vcGVyYW5kLCB0bGVfc3ltYm9saWNfb3BlcmFuZC4KCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChVTlNQRUNfVExTR0QsIFVOU1BFQ19UTFNMRE0sIFVOU1BFQ19UTFNMRE8sCglVTlNQRUNfVExTSUUsIFVOU1BFQ19UTFNMRSwgVU5TUEVDX1RMU0xEX0JBU0UpOiBOZXcgY29uc3RhbnRzLgoJKHRsc19jYWxsX2RlbGF5KTogTmV3IGF0dHJpYnV0ZS4KCShpbl9jYWxsX2RlbGF5KTogVXNlIGl0LgoJKG1vdnFpLCBtb3ZoaSwgbW92c2ksIG1vdmRpKTogQ2FsbCBsZWdpdGltaXplX3Rsc19hZGRyZXNzIGlmIG5lZWRlZC4KCSh0Z2RfaGkyMiwgdGdkX2xvMTAsIHRnZF9hZGQzMiwgdGdkX2FkZDY0LCB0Z2RfY2FsbDMyLCB0Z2RfY2FsbDY0LAoJdGxkbV9oaTIyLCB0bGRtX2xvMTAsIHRsZG1fYWRkMzIsIHRsZG1fYWRkNjQsIHRsZG1fY2FsbDMyLCB0bGRtX2NhbGw2NCwKCXRsZG9faGl4MjIsIHRsZG9fbG94MTAsIHRsZG9fYWRkMzIsIHRsZG9fYWRkNjQsIHRpZV9oaTIyLCB0aWVfbG8xMCwKCXRpZV9sZDMyLCB0aWVfbGQ2NCwgdGllX2FkZDMyLCB0aWVfYWRkNjQsIHRsZV9oaXgyMl9zcDMyLAoJdGxlX2xveDEwX3NwMzIsIHRsZV9oaXgyMl9zcDY0LCB0bGVfbG94MTBfc3A2NCk6IE5ldyBpbnNucy4KCSh0bGRvX2xkdWJfc3AzMiwgdGxkb19sZHViMV9zcDMyLCB0bGRvX2xkdWIyX3NwMzIsIHRsZG9fbGRzYjFfc3AzMiwKCXRsZG9fbGRzYjJfc3AzMiwgdGxkb19sZHViX3NwNjQsIHRsZG9fbGR1YjFfc3A2NCwgdGxkb19sZHViMl9zcDY0LAoJdGxkb19sZHViM19zcDY0LCB0bGRvX2xkc2IxX3NwNjQsIHRsZG9fbGRzYjJfc3A2NCwgdGxkb19sZHNiM19zcDY0LAoJdGxkb19sZHVoX3NwMzIsIHRsZG9fbGR1aDFfc3AzMiwgdGxkb19sZHNoMV9zcDMyLCB0bGRvX2xkdWhfc3A2NCwKCXRsZG9fbGR1aDFfc3A2NCwgdGxkb19sZHVoMl9zcDY0LCB0bGRvX2xkc2gxX3NwNjQsIHRsZG9fbGRzaDJfc3A2NCwKCXRsZG9fbGR1d19zcDMyLCB0bGRvX2xkdXdfc3A2NCwgdGxkb19sZHV3MV9zcDY0LCB0bGRvX2xkc3cxX3NwNjQsCgl0bGRvX2xkeF9zcDY0LCB0bGRvX3N0Yl9zcDMyLCB0bGRvX3N0Yl9zcDY0LCB0bGRvX3N0aF9zcDMyLAoJdGxkb19zdGhfc3A2NCwgdGxkb19zdHdfc3AzMiwgdGxkb19zdHdfc3A2NCwgdGxkb19zdHhfc3A2NCk6IE5ldwoJaW5zbnMuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy1wcm90b3MuaCAobGVnaXRpbWF0ZV9jb25zdGFudF9wLAoJY29uc3RhbnRfYWRkcmVzc19wLCBsZWdpdGltYXRlX3BpY19vcGVyYW5kX3AsIGxlZ2l0aW1hdGVfYWRkcmVzc19wLAoJbGVnaXRpbWl6ZV90bHNfYWRkcmVzcywgbGVnaXRpbWl6ZV9hZGRyZXNzLCB0bHNfc3ltYm9saWNfb3BlcmFuZCwKCXRsc19jYWxsX2RlbGF5LCBzcGFyY19vdXRwdXRfZHdhcmZfZHRwcmVsKTogTmV3IHByb3RvdHlwZXMuCgkqIGNvbmZpZy9zcGFyYy9saW51eC5oIChUQVJHRVRfR05VX1RMUywgVEFSR0VUX1NVTl9UTFMpOiBEZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9saW51eDY0LmggKFRBUkdFVF9HTlVfVExTLCBUQVJHRVRfU1VOX1RMUyk6IExpa2V3aXNlLgoJKiBjb25maWd1cmUuaW4gKHNwYXJjKi0qLSopOiBBZGQgVExTIGNoZWNrLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAzLTA5LTA3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHRhcmdldC8xMTY4OQoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG1lbW9yeV9hZGRyZXNzX2xlbmd0aCk6IEZpeCBjb21wdXRhdGlvbiB3aGVuCgl0aGUgYmFzZSBpcyBlc3Agb3IgZWJwLgoKMjAwMy0wOS0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTE4NTIKCSogdmFyYXNtLmMgKGluaXRpYWxpemVyX2NvbnN0YW50X3ZhbGlkX3ApOiBDb3JyZWN0IGxvZ2ljIGZvcgoJQ09OU1RSVUNUT1JzLgoKMjAwMy0wOS0wNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9vcGVyYW5kcyk6IE5ldyBmdW5jdGlvbiB0byBleHBhbmQgYW4gb3BlcmFuZCBwYWlyLgoJKGV4cGFuZF9leHByKTogQ2FsbCBleHBhbmRfb3BlcmFuZHMgd2hlbmV2ZXIgd2UgbmVlZCB0byBleHBhbmQgYm90aAoJb3BlcmFuZHMgb2YgYSBiaW5hcnkgb3BlcmF0b3IuCgkoZG9fc3RvcmVfZmxhZyk6IExpa2V3aXNlIGZvciBvcGVyYW5kcyBvZiBjb21wYXJpc29uIG9wZXJhdGlvbnMuCgoyMDAzLTA5LTA3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBEb24ndCBjb252ZXJ0IC0oQSpCKSBpbnRvCgkoLUEpKkIgaWYgd2UgY2FyZSBhYm91dCBzaWduLWRlcGVuZGVudCByb3VuZGluZy4KCjIwMDMtMDktMDcgIEdhYnJpZWwgRG9zIFJlaXMgIDxnY2NAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogYy1wcmV0dHktcHJpbnQuaCAocHBfY19sZWZ0X2JyYWNlKTogRGVjbGFyZS4KCShwcF9jX3JpZ2h0X2JyYWNlKTogTGlrZXdpc2UuCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2NfbGVmdF9icmFjZSk6IE5vdyBhIGZ1bmN0aW9uCgkocHBfY19yaWdodF9icmFjZSk6IExpa2V3aXNlLgoKMjAwMy0wOS0wNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2ZnY2xlYW51cC5jICh0cnlfc2ltcGxpZnlfY29uZGp1bXApOiBGaXggYWdhaW4gdGhlIHByZWl2b3VzIHBhdGNoLgoKMjAwMy0wOS0wNyAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBkaWFnbm9zdGljLmMgKHdhcm5fZGVwcmVjYXRlZF91c2UpOiBNb3ZlIHRvIHRvcGxldi5jCgoyMDAzLTA5LTA3ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGxhbmdob29rcy5jIChsaGRfcHJpbnRfZXJyb3JfZnVuY3Rpb24pOiBNb3ZlIGZyb20gZGlhZ25vc3RpYy5jLgoJKiBNYWtlZmlsZS5pbiAobGFuZ2hvb2tzLm8pOiBEZXBlbmQgb24gZGlhZ25vc3RpYy5oCgoyMDAzLTA5LTA2ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkB0dWxpcHRyZWUub3JnPgoKCSogbG9vcC5jIChsb29wX3JlZ3NfdXBkYXRlKTogRGVsZXRlIGVsc2UgY2xhdXNlIGZvciBQQVRURVJOIHJ0eCBhbmQKCXNpbXBsaWZ5LgoKMjAwMy0wOS0wNyAgS2VsbGV5IENvb2sgIDxrZWxsZXljb29rQHdpZGVvcGVud2VzdC5jb20+CgoJKiBNYWtlZmlsZS5pbjogRGVmaW5lICRSRU1BS0UgdG8gYmUgJE1BS0Ugd2l0aCBMQU5HVUFHRVMgJiBCT09UX0NGTEFHUwoJYW5kIHVzZSBpdCB0aHJvdWdob3V0LgoKMjAwMy0wOS0wNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2ZnY2xlYW51cC5jICh0cnlfc2ltcGxpZnlfY29uZGp1bXApOiBGaXggbXkgcHJldmlvdXMgcGF0Y2guCgoJKiB0b3BsZXYuYyAgKHJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbik6ICBEbyBub3QgZmluYWxpemUgZXh0ZXJuYWwKCXZpcmFibGVzLgoKCSogY2dyYXBoLmMgKGNncmFwaF9tYXJrX3JlYWNoYWJsZV9ub2RlKTogT25seSBlbnF1ZXVlIGZpbmFsaXplZAoJZnVuY3Rpb25zLgoJKGNncmFwaF92YXJwb29sX2ZpbmFsaXplX2RlY2wpOiBOb3RpY2UgZ2xvYmFsIHN5bWJvbCB3aGVuIG5lZWRlZC4KCjIwMDMtMDktMDYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiB0YXJnZXQvMTIwNzAKCSogY2FsbHMuYyAoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IEZpeCBzYXZpbmcgb2YgQkxLbW9kZSBhcmd1bWVudHMuCgoJUFIgb3B0LzEyMDgyCgkqIGNmZ2NsZWFudXAuYyAodHJ5X3NpbXBsaWZ5X2NvbmRqdW1wKTogQXZvaWQgdW5yZWFjaGFibGUgY29kZSB3YXJuaW5nLgoKMjAwMy0wOS0wNiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBkaWFnbm9zdGljLmMgKGFubm91bmNlX2Z1bmN0aW9uKTogTW92ZSB0byB0b3BsZXYuYy4KCjIwMDMtMDktMDYgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGdjc2UuYyAoZXhwcl9lcXVpdl9wKTogRG9uJ3QgY29uc2lkZXIgYW55dGhpbmcgdG8gYmUgZXF1YWwgdG8KCXZvbGF0aWxlIG1lbS4KCjIwMDMtMDktMDYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdnYy1jb21tb24uYyAoaW5pdF9nZ2NfaGV1cmlzdGljcyk6IERvbid0IHVzZSB0aGUgaGV1cmlzdGljcwoJd2hlbiBnYyBjaGVja2luZyBpcyBlbmFibGVkLgoKMjAwMy0wOS0wNiAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCVBSIGMvOTg2MgoJKiBjLWRlY2wuYyAoY19leHBhbmRfYm9keV8xKTogTW92ZSByZXR1cm4gd2FybmluZyBmcm9tIGhlcmUuLi4KCShmaW5pc2hfZnVuY3Rpb24pOiAuLi50byBoZXJlLgoKMjAwMy0wOS0wNSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChQUkVGRVJSRURfUkVMT0FEX0NMQVNTKTogQWx3YXlzIHJldHVybgoJYSBzdWJzZXQgb2YgdGhlIGlucHV0IGNsYXNzLgoKMjAwMy0wOS0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9pODYwL2k4NjAuYzogRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoJKiBjb25maWcvaTg2MC9pODYwLmg6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guaDogTGlrZXdpc2UuCgoyMDAzLTA5LTA1ICBOaXRpbiBZZXdhbGUgIDxOaXRpbllAS1BJVEN1bW1pbnMuY29tPgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLXByb3Rvcy5oOiBEZWNsYXJlIGg4MzAwX2hhcmRfcmVnbm9fcmVuYW1lX29rCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChIQVJEX1JFR05PX1JFTkFNRV9PSyk6IE5ldy4KCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGg4MzAwX2hhcmRfcmVnbm9fcmVuYW1lX29rKTogTmV3LgoKMjAwMy0wOS0wNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBvcHRpbWl6YXRpb24vMTgyMwoJKiBleHBtZWQuYyAoZXhwYW5kX2Rpdm1vZCA8RVhBQ1RfRElWX0VYUFI+KTogVXNlIGFuIHVuc2lnbmVkCgltdWx0aXBsaWNhdGlvbiB0byBpbXBsZW1lbnQgZGl2aXNpb24gYnkgY29uc3RhbnQgaW50ZWdlci4KCjIwMDMtMDktMDUgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIG9wdHMuYyAoZGVjb2RlX29wdGlvbnMpOiBFbmFibGUgdW5pdC1hdC1hLXRpbWUgYXQgLU8yLgoJKiBwYXJhbXMuZGVmIChtYXgtaW5saW5lLWluc25zLXNpbmdsZSk6IFNldCB0byA1MDAKCShtYXgtaW5saW5lLWluc25zLWF1dG8pOiBTZXQgdG8gMTUwCgkqIGludm9rZS50ZXhpIChtYXgtaW5saW5lLWluc25zLXNpbmdsZSwgbWF4LWlubGluZS1pbnNucy1hdXRvKTogVXBkYXRlLgoKMjAwMy0wOS0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNncmFwaC5jIChjZ3JhcGhfbWFya19yZWFjaGFibGVfbm9kZSk6IFNwbGl0IG91dCBmcm9tIC4uLgoJKGNncmFwaF9tYXJrX25lZWRlZF9ub2RlKTogUmVtb3ZlIG5lZWRlZCBhcmd1bWVudC4KCSogY2dyYXBoLmg6IFVwZGF0ZSB0byBtYXRjaC4KCSogY2dyYXBodW5pdC5jIChkZWNpZGVfaXNfZnVuY3Rpb25fbmVlZGVkKTogU3BsaXQgb3V0IGZyb20gLi4uCgkoY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uKTogUmVvcmcuICBBdm9pZCBkZWZlcnJlZF9pbmxpbmVfZnVuY3Rpb24KCWlmIHdlIGdlbmVyYXRlZCB0aGUgZnVuY3Rpb24uCgkocmVjb3JkX2NhbGxfMSk6IFVwZGF0ZSBmb3IgY2dyYXBoX21hcmtfcmVhY2hhYmxlX25vZGUuCgkqIHZhcmFzbS5jIChtYXJrX3JlZmVyZW5jZWQpOiBMaWtld2lzZS4KCSogb2JqYy9vYmpjLWFjdC5jIChtYXJrX3JlZmVyZW5jZWRfbWV0aG9kcyk6IExpa2V3aXNlLgoKMjAwMy0wOS0wNCAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiB0YXJnaG9va3MuYzogQWRkIGNvbW1lbnQgZXhwbGFpbmluZyB0aGUgbWlncmF0aW9uIHByb2Nlc3MuCgoyMDAzLTA5LTA0ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9mcnYvdC1mcnY6IEZpeCBwYXRoIGZvciBmcnYtYWJpLmguCgkqIGNvbmZpZy9mcnYvZnJ2LWFzbS5oOiBGaXggc3RyaW5nIGNvbmNhdGVuYXRpb24uCgoyMDAzLTA5LTA0ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGFwcGx5X2FyZ3Nfc2l6ZSk6IEd1YXJkIGFnYWluc3QgYSBOVUxMIGNmdW4uCgkoZXhwYW5kX2J1aWx0aW5fYXBwbHlfYXJnc18xKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fYXBwbHkpOiBMaWtld2lzZS4KCUZpeGVzIFBSIGJvb3RzdHJhcC8xMjE3Mi4KCjIwMDMtMDktMDQgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlndXJlLmluIChnY2NfY3ZfYXNfaXg4Nl9jbW92X3N1bl9zeW50YXgpOiBDaGVjayBpZgoJYXNzZW1ibGVyIHN1cHBvcnRzIFN1biBzeW50YXggZm9yIGNtb3YuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmluOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jOiBSZW5hbWUgQ01PVl9TVU5fQVNfU1lOVEFYIHRvCglIQVZFX0FTX0lYODZfQ01PVl9TVU5fU1lOVEFYLgoJKiBjb25maWcvaTM4Ni9zb2wyLmggKENNT1ZfU1VOX0FTX1NZTlRBWCk6IFJlbW92ZS4KCUZpeGVzIFBSIHRhcmdldC8xMjEwMS4KCjIwMDMtMDktMDQgIE1hdHQgQXVzdGVybiAgPGF1c3Rlcm5AYXBwbGUuY29tPgoKCSogYy1jb21tb24uYyAoZm5hbWVfYXNfc3RyaW5nKTogVXNlIGxhbmdfaG9va3MuZGVjbF9wcmludGFibGVfbmFtZQoJd2l0aCB2ZXJib3NpdHkgMCwgaW5zdGVhZCBvZiBERUNMX05BTUUsIGZvciBodW1hbi1yZWFkYWJsZSBzdHJpbmcuCgoyMDAzLTA5LTA0ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X3JldHVybl9pbl9tZW1vcnkpOiBBbGxvdwoJdW5jb252ZXJ0ZWQgcG9ydHMuCgoyMDAzLTA5LTA0ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X3JldHVybl9pbl9tZW1vcnkpOiBGaXggdHlwbwoJaW4gbGFzdCBjaGVja2luLgoKMjAwMy0wOS0wNCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQHJlZGhhdC5jb20+CgoJKiB0YXJnaG9va3MuYyAoZGVmYXVsdF9yZXR1cm5faW5fbWVtb3J5KTogRml4IGRlZmF1bHQKCWRlZmluaXRpb24uCgoyMDAzLTA5LTA0ICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfY29mZl9hc21fbmFtZWRfc2VjdGlvbik6IFJlc3RvcmUKCWRlbGV0ZWQgZnVuY3Rpb24uCgkqIGNvbmZpZy9tNjhrL2NvZmYuaCAoTTY4S19UQVJHRVRfQ09GRik6IEFkZCBmbGFnIHVzZWQgdG8KCWVuYWJsZSBjb2ZmLW9ubHkgY29kZSBpbiBtNjhrLmMuCgoyMDAzLTA5LTA0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYzogQWRkIHY4NTBlMSB0YXJnZXQuICBBbGxvdyAtLXdpdGgtY3B1IHRvIGFjY2VwdAoJdjg1MGUxLgoJKiBjb25maWcvdjg1MC92ODUwLmg6IEFjY2VwdCB2ODUwZTEgYXMgYSBkZWZhdWx0IENQVS4KCUFjY2VwdCAtbXY4NTBlMSBhcyBhIGNvbW1hbmQgbGluZSBvcHRpb24uCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgbmV3IC1tdjg1MGUxIGNvbW1hbmQgbGluZSBzd2l0Y2guCgkqIGNvbmZpZy92ODUwL3Qtdjg1MDogVHJlYXQgLW12ODUwZTEgYXMgYSBtdWx0aWxpYiBhbGlhcyBmb3IKCS1tdjg1MGUuCgoyMDAzLTA5LTA0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYyAodjg1MGUtKi0qKTogVXNlIHQtdjg1MGUgbWFrZWZpbGUgZnJhZ21lbnQuCgkqIGNvbmZpZy92ODUwL3Qtdjg1MDogT25seSBwcm9kdWNlIG9uZSBleHRyYSBtdWx0aWxpYiAtIGZvcgoJdGhlIHY4NTBlLgoJKiBjb25maWcvdjg1MC90LXY4NTBlOiBOZXcgZmlsZTogT25seSBwcm9kdWNlIG9uZSBleHRyYQoJbXVsdGlsaWIgLSBmb3IgdGhlIHY4NTAuCgoyMDAzLTA5LTA0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2xpYmdjYy1pYTY0LnZlcjogRXhwb3J0IF9VbndpbmRfR2V0QlNQQEBHQ0NfMy4zLjIuCgkqIGNvbmZpZy9pYTY0L3Vud2luZC1pYTY0LmMgKF9VbndpbmRfR2V0QlNQKTogTmV3IGZ1bmN0aW9uLgoJKiB1bndpbmQuaCAoX1Vud2luZF9HZXRCU1ApOiBOZXcgcHJvdG90eXBlLgoJKiBsaWJnY2Mtc3RkLnZlcjogQWRkIGVtcHR5IEdDQ18zLjMuMiB2ZXJzaW9uLgoJKiBta21hcC1zeW12ZXIuYXdrOiBGb3Igc3ltYm9sIHZlcnNpb25zIHdpdGggbm8gZXhwb3J0ZWQgc3ltYm9scywKCWRvbid0IHB1dCBhbnl0aGluZyBpbnRvIHZlcnNpb24gc2NyaXB0LCBqdXN0IGNoYW5nZSBhbGwgc3ltYm9sCgl2ZXJzaW9ucyB3aGljaCBpbmhlcml0IGZyb20gaXQgdG8gaW5oZXJpdCBmcm9tIGl0cyBhbmNlc3Rvci4KCjIwMDMtMDktMDQgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2V4cGFuZF9wcm9sb2d1ZSk6IENvbnZlcnQgdG8KCWNhbGxzLnN0cnVjdF92YWx1ZV9ydHggaG9vay4KCShyZWdfb3JfY29uc3RfZmxvYXRfMV9vcGVyYW5kKTogTmV3LgoJKiBjb25maWcvbWlwcy9taXBzLmg6IFVwZGF0ZSBDb21tZW50cy4KCShtaXBzX2FyZyk6IEFkZCByZWdfb3JfY29uc3RfZmxvYXRfMV9vcGVyYW5kLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChkaXZkZjMpOyBDb252ZXJ0IHRvIGV4cGFuZGVyLgoJKGRpdnNmMyk6IERpdHRvLgoJKCpkaXZkZjMpOiBOZXcgcGF0dGVybi4KCSgqZGl2c2YzKTogRGl0dG8uCgoyMDAzLTA5LTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB0b3BsZXYuYyAod3JhcHVwX2dsb2JhbF9kZWNsYXJhdGlvbnMpOiBGaXggZmluYWwgcGFzcyBpbgoJdW5pdC1hdC1hdGltZSBtb2RlLgoKMjAwMy0wOS0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgcmVtb3ZhbCBvZiBjYXN0LWFzLWx2YWx1ZSBleHRlbnNpb24gaW4KCUMrKy4KCjIwMDMtMDktMDQgIE5pY29sYXMgUm9jaGUgIDxyb2NoZUBhY3QtZXVyb3BlLmZyPgoKCSogZ2NjLmMgKHByb2Nlc3NfY29tbWFuZCk6IEZpeCB0eXBvLgoKMjAwMy0wOS0wMyAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCglvcHRpbWl6YXRpb24vMTE5ODAKCSogY29uZmlnL2kzODYvZnJlZWJzZC5oIChTSVpFX1RZUEUpOiBTdXBwb3J0IFRBUkdFVF82NEJJVC4KCShQVFJESUZGX1RZUEUpOiBMaWtld2lzZS4KCShXQ0hBUl9UWVBFX1NJWkUpOiBMaWtld2lzZS4KCjIwMDMtMDktMDMgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogdGFyZ2hvb2tzLmM6IE5ldyBmaWxlLgoJKiB0YXJnaG9va3MuaDogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluOiBBZGQgdGFyZ2hvb2tzLm8gc3VwcG9ydC4KCShmdW5jdGlvbi5vKTogRGVwZW5kIG9uJChUQVJHRVRfSCkuCgkoc3RtdC5vKTogTGlrZXdpc2UuCgkoY29tYmluZS5vKTogRGVwZW5kIG9uICQoVFJFRV9IKSBhbmQgJChUQVJHRVRfSCkuCgkqIGJ1aWx0aW5zLmMgKGFwcGx5X2FyZ3Nfc2l6ZSwgZXhwYW5kX2J1aWx0aW5fYXBwbHlfYXJnc18xLAoJZXhwYW5kX2J1aWx0aW5fYXBwbHkpOiBDb252ZXJ0IHRvIGNhbGxzLnN0cnVjdF92YWx1ZV9ydHggaG9vay4KCShleHBhbmRfYnVpbHRpbl9zYXZlcmVncyk6IENvbnZlcnQgdG8KCWNhbGxzLmV4cGFuZF9idWlsdGluX3NhdmVyZWdzIGhvb2suCgkqIGMtZGVjbC5jIChzdGFydF9kZWNsKTogSGFuZGxlIG5ldyBjYWxscy5wcm9tb3RlX3Byb3RvdHlwZXMgaG9vawoJaGVyZSwgaW5zdGVhZCBvZiAuLi4KCShnZXRfcGFybV9pbmZvKSAuLi4gaGVyZS4KCShzdG9yZV9wYXJtX2RlY2xzX29sZHN0eWxlKTogQ29udmVydCB0byBjYWxscy5wcm9tb3RlX3Byb3RvdHlwZXMKCWhvb2suCgkoZmluaXNoX2Z1bmN0aW9uKTogSGFuZGxlIGNhbGxzLnByb21vdGVfcHJvdG90eXBlcyBob29rIGhlcmUgdG9vLgoJKiBjLXR5cGVjay5jIChjb252ZXJ0X2FyZ3VtZW50cyk6IENvbnZlcnQgdG8KCWNhbGxzLnByb21vdGVfcHJvdG90eXBlcyBob29rLgoJKGNfY29udmVydF9wYXJtX2Zvcl9pbmxpbmluZyk6IExpa2V3aXNlLgoJKiBjYWxscy5jIChpbml0aWFsaXplX2FyZ3VtZW50X2luZm9ybWF0aW9uKTogQ29udmVydCB0bwoJY2FsbHMucHJvbW90ZV9mdW5jdGlvbl9hcmdzIGhvb2suCgkoZXhwYW5kX2NhbGwpOiBDb252ZXJ0IHRvIGNhbGxzLnN0cnVjdF92YWx1ZV9ydHgsCgljYWxscy5zdHJpY3RfYXJndW1lbnRfbmFtaW5nLAoJY2FsbHMucHJldGVuZF9vdXRnb2luZ192YXJhcmdzX25hbWVkLCBhbmQKCWNhbGxzLnByb21vdGVfZnVuY3Rpb25fcmV0dXJuIGhvb2tzLiAgUGFzcyBmbmRlY2wgdG8KCWFnZ3JlZ2F0ZV92YWx1ZV9wLiAgSW5pdGlhbGl6ZSBDVU1VTEFUSVZFX0FSR1MgYmVmb3JlIGNhbGxpbmcKCWhvb2tzLCBzbyB0aGV5IGNhbiB1c2UgdGhhdC4KCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogTGlrZXdpc2UuCgkqIGNvbWJpbmUuYyAoc2V0dXBfaW5jb21pbmdfcHJvbW90aW9ucyk6IENvbnZlcnQgdG8KCWNhbGxzLnByb21vdGVfZnVuY3Rpb25fYXJncyBob29rLgoJKiBlbWl0LXJ0bC5jOiBDb252ZXJ0IHRvIGNhbGxzLnN0cnVjdF92YWx1ZV9ydHggaG9vay4KCSogZXhwci5jIChleHBhbmRfYXNzaWdubWVudCk6IFBhc3MgY2FsbCB0byBhZ2dyZWdhdGVfdmFsdWVfcC4KCShleHBhbmRfZXhwcik6IExpa2V3aXNlLgoJKiBleHByLmg6IFJlbW92ZSBzdXBwb3J0IGZvciBTRVRVUF9JTkNPTUlOR19WQVJBUkdTLAoJU1RSSUNUX0FSR1VNRU5UX05BTUlORywgUFJFVEVORF9PVVRHT0lOR19WQVJBUkdTX05BTUVELAoJUkVUVVJOX0lOX01FTU9SWSBtYWNybyBkZWZhdWx0cy4KCSogZmluYWwuYyAocHJvZmlsZV9mdW5jdGlvbik6IENvbnZlcnQgdG8gY2FsbHMuc3RydWN0X3ZhbHVlX3J0eAoJaG9vay4KCSogZnVuY3Rpb24uYyAoYWdncmVnYXRlX3ZhbHVlX3ApOiBBY2NlcHQgZnVuY3Rpb24gdHlwZSB0cmVlIGFzCglzZWNvbmQgcGFyYW1ldGVyOyB0cnkgdG8gZGVkdWNlIGZudHlwZSBmcm9tIGl0LiAgQ29udmVydCB0bwoJY2FsbHMucmV0dXJuX2luX21lbW9yeSBob29rLgoJKGFzc2lnbl9wYXJtcyk6IENvbnZlcnQgdG8gY2FsbHMuc2V0dXBfaW5jb21pbmdfdmFyYXJncywKCWNhbGxzLnN0cmljdF9hcmd1bWVudF9uYW1pbmcsIGNhbGxzLnByb21vdGVfZnVuY3Rpb25fYXJncywKCWNhbGxzLnByZXRlbmRfb3V0Z29pbmdfdmFyYXJnc19uYW1lZCBob29rcy4gIFBhc3MgZm5kZWNsIHRvCglhZ2dyZWdhdGVfdmFsdWVfcC4KCShleHBhbmRfZnVuY3Rpb25fc3RhcnQpOiBMaWtld2lzZS4gIENvbnZlcnQgdG8KCWNhbGxzLnN0cnVjdF92YWx1ZV9ydHggaG9vay4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogQ29udmVydCB0byBjYWxscy5wcm9tb3RlX2Z1bmN0aW9uX3JldHVybiBob29rLgoJKGFsbG9jYXRlX3N0cnVjdF9mdW5jdGlvbik6IFBhc3MgZm5kZWNsIHRvIGFnZ3JlZ2F0ZV92YWx1ZV9wLgoJKiBoYXJkLXJlZy1zZXQuaDogVXBkYXRlIGNvbW1lbnRzIHRvIG5ldyBob29rIG5hbWVzLgoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbik6IFBhc3MgZm5kZWNsIHRvIGFnZ3JlZ2F0ZV92YWx1ZV9wLgoJKiByZWctc3RhY2suYyAoc3RhY2tfcmVzdWx0KTogTGlrZXdpc2UuCgkqIHJ0bC5oIChzdHJ1Y3RfdmFsdWVfcnR4LCBzdHJ1Y3RfdmFsdWVfaW5jb21pbmdfcnR4KTogRGVsZXRlLgoJKiBzdG10LmMgKGV4cGFuZF92YWx1ZV9yZXR1cm4pOiBDb252ZXJ0IHRvCgljYWxscy5wcm9tb3RlX2Z1bmN0aW9uX3JldHVybiBob29rLgoJKiB0YXJnZXQtZGVmLmg6IEFkZCBUQVJHRVRfUFJPTU9URV9GVU5DVElPTl9BUkdTLAoJVEFSR0VUX1BST01PVEVfRlVOQ1RJT05fUkVUVVJOLCBUQVJHRVRfUFJPTU9URV9QUk9UT1RZUEVTLAoJVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgsIFRBUkdFVF9SRVRVUk5fSU5fTUVNT1JZLAoJVEFSR0VUX0VYUEFORF9CVUlMVElOX1NBVkVSRUdTLCBUQVJHRVRfU0VUVVBfSU5DT01JTkdfVkFSQVJHUywKCVRBUkdFVF9TVFJJQ1RfQVJHVU1FTlRfTkFNSU5HLAoJVEFSR0VUX1BSRVRFTkRfT1VUR09JTkdfVkFSQVJHU19OQU1FRCwgYW5kIFRBUkdFVF9DQUxMUy4KCSogdGFyZ2V0Lmg6IExpa2V3aXNlLgoJKiB0cmVlLmggKGFnZ3JlZ2F0ZV92YWx1ZV9wKTogQWxzbyB0YWtlcyBhIHRyZWUgdG8gZGVkdWNlIGZ1bmN0aW9uCglhdHRyaWJ1dGVzIGZyb20gKGZvciB0YXJnZXQgaG9va3MpLgoJKiBkb2MvdG0udGV4aSAoUFJPTU9URV9GVU5DVElPTl9BUkdTLCBQUk9NT1RFX0ZVTkNUSU9OX1JFVFVSTiwKCVBST01PVEVfUFJPVE9UWVBFUywgUkVUVVJOX0lOX01FTU9SWSwgU1RSVUNUX1ZBTFVFX1JFR05VTSwKCVNUUlVDVF9WQUxVRSwgU1RSVUNUX1ZBTFVFX0lOQ09NSU5HX1JFR05VTSwgU1RSVUNUX1ZBTFVFX0lOQ09NSU5HLAoJRVhQQU5EX0JVSUxUSU5fU0FWRVJFR1MsIFNFVFVQX0lOQ09NSU5HX1ZBUkFSR1MsCglTVFJJQ1RfQVJHVU1FTlRfTkFNSU5HLCBQUkVURU5EX09VVEdPSU5HX1ZBUkFSR1NfTkFNRUQpOiBDb252ZXJ0Cgl0byBob29rcy4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9vdXRwdXRfbWlfdGh1bmtfb3NmKTogUGFzcyBmdW5jdGlvbgoJdG8gYWdncmVnYXRlX3ZhbHVlX3AuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9pbml0X2N1bXVsYXRpdmVfYXJncywKCWFybV9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X3JldHVybl9wb3BzX2FyZ3MsIHg4Nl90aGlzX3BhcmFtZXRlcik6CglMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3NhdmVfcmVnX3AsIG1pcHNfZXhwYW5kX3Byb2xvZ3VlLAoJbWlwc19jYW5fdXNlX3JldHVybl9pbnNuKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9vdXRwdXRfbWlfdGh1bmspOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX291dHB1dF9taV90aHVuayk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfb3V0cHV0X21pX3RodW5rKTogUGFzcyBmdW5jdGlvbiB0bwoJYWdncmVnYXRlX3ZhbHVlX3AuCgkqIGNvbmZpZy9zdG9yeTE2L3N0b3JteTE2LmMgKHhzdG9ybXkxNl9hc21fb3V0cHV0X21pX3RodW5rKTogUGFzcwoJZnVuY3Rpb24gdG8gYWdncmVnYXRlX3ZhbHVlX3AuCgkqIG9iamMvb2JqYy1hY3QuYyAoZ2VuZXJhdGVfc3RydWN0X2J5X3ZhbHVlX2FycmF5KTogUGFzcyBOVUxMIHRvCglhZ2dyZWdhdGVfdmFsdWVfcC4KCgkqIGNvbmZpZy9zaC9zaC1wcm90b3MuaCAoc2hfYnVpbHRpbl9zYXZlcmVncyk6IFJlbW92ZS4KCShzaF9hdHRyX3JlbmVzYXNfcCwgc2hfY2Z1bl9hdHRyX3JlbmVzYXNfcCwgc2hfZnVuY3Rpb25fYXJnLAoJc2hfZnVuY3Rpb25fYXJnX2FkdmFuY2UsIHNoX3Bhc3NfaW5fcmVnX3ApOiBOZXcuICAqIGNvbmZpZy9zaC9zaC5jCgkoc2hfaGFuZGxlX3JlbmVzYXNfYXR0cmlidXRlLCBzaF9wcm9tb3RlX3Byb3RvdHlwZXMsCglzaF9zdHJ1Y3RfdmFsdWVfcnR4LCBzaF9yZXR1cm5faW5fbWVtb3J5LCBzaF9idWlsdGluX3NhdmVyZWdzLAoJc2hfc2V0dXBfaW5jb21pbmdfdmFyYXJncywgc2hfc3RyaWN0X2FyZ3VtZW50X25hbWluZywKCXNoX3ByZXRlbmRfb3V0Z29pbmdfdmFyYXJnc19uYW1lZCk6IE5ldyBkZWNscy4KCSh0YXJnZXRtKTogQWRkIG5ldyBob29rcy4KCShjYWxjX2xpdmVfcmVncyk6IFNhdmUgTUFDTCBhbmQgTUFDSCBpZiB0aGUgZnVuY3Rpb24gaGFzIHRoZQoJcmVuZXNhcyBhdHRyaWJ1dGUuCgkoc2hfZXhwYW5kX3Byb2xvZ3VlKTogU3VwcG9ydCByZW5lc2FzIGF0dHJpYnV0ZS4KCShzaF9idWlsdGluX3NhdmVyZWdzKTogTWFrZSBzdGF0aWMuCgkoc2hfYnVpbGRfdmFfbGlzdCk6IFN1cHBvcnQgcmVuZXNhcyBhdHRyaWJ1dGUuCgkoc2hfdmFfc3RhcnQpOiBMaWtld2lzZS4KCShzaF92YV9hcmcpOiBMaWtld2lzZS4KCShzaF9wcm9tb3RlX3Byb3RvdHlwZXMpOiBOZXcuCgkoc2hfZnVuY3Rpb25fYXJnKTogTmV3LCBtb3ZlZCBmcm9tIHNoLmguICBTdXBwb3J0IHJlbmVzYXMKCWF0dHJpYnV0ZS4KCShzaF9mdW5jdGlvbl9hcmdfYWR2YW5jZSk6IExpa2V3aXNlLgoJKHNoX3JldHVybl9pbl9tZW1vcnkpOiBMaWtld2lzZS4KCShzaF9zdHJpY3RfYXJndW1lbnRfbmFtaW5nKTogTGlrZXdpc2UuCgkoc2hfcHJldGVuZF9vdXRnb2luZ192YXJhcmdzX25hbWVkKTogTGlrZXdpc2UuCgkoc2hfc3RydWN0X3ZhbHVlX3J0eCk6IE5ldy4KCShzaF9hdHRyaWJ1dGUpOiBBZGQgcmVuZXNhcyBhdHRyaWJ1dGUuCgkoc2hfaGFuZGxlX3JlbmVzYXNfYXR0cmlidXRlKTogTmV3LgoJKHNoX2F0dHJfcmVuZXNhc19wLCBzaF9jZnVuX2F0dHJfcmVuZXNhc19wKTogTmV3LgoJKHNoX21zX2JpdGZpZWxkX2xheW91dF9wKTogU3VwcG9ydCByZW5lc2FzIGF0dHJpYnV0ZSBhbHNvLgoJKHNoX291dHB1dF9taV90aHVuayk6IFBhc3MgZnVuY3Rpb24gdG8gYWdncmVnYXRlX3ZhbHVlX3AuICAqCgljb25maWcvc2gvc2guaCAoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1tcmVuZXNhcyBhcyBhbiBhbGlhcyBmb3IKCS1taGl0YWNoaS4KCShTVFJVQ1RfVkFMVUVfUkVHTlVNLCBTVFJVQ1RfVkFMVUUsIFJFVFVSTl9JTl9NRU1PUlkpOiBNb3ZlZCB0bwoJdGFyZ2V0IGhvb2tzLgoJKHNoX2FyZ3MpOiBBZGQgcmVuZXNhc19hYmkgZmxhZy4KCShJTklUX0NVTVVMQVRJVkVfQVJHUyk6IFNldCBpdC4gIFBhc3MgZm5kZWNsIHRvIGFnZ3JlZ2F0ZV92YWx1ZV9wLgoJKEZVTkNUSU9OX0FSR19BRFZBTkNFLCBGVU5DVElPTl9BUkcpOiBNb3ZlIHRvIHNoLmMuCgkoUEFTU19JTl9SRUdfUCk6IFN1cHBvcnQgcmVuZXNhcyBhdHRyaWJ1dGUuICBQYXNzIERGIGFuZCBURiBvbiB0aGUKCXN0YWNrIGZvciB0aGUgcmVuZXNhcyBhYmkuCgkoU1RSSUNUX0FSR1VNRU5UX05BTUlORywgUFJFVEVORF9PVVRHT0lOR19WQVJBUkdTX05BTUVELAoJU0VUVVBfSU5DT01JTkdfVkFSQVJHUywgRVhQQU5EX0JVSUxUSU5fU0FWRVJFR1MsCglQUk9NT1RFX1BST1RPVFlQRVMpOiBNb3ZlZCB0byBzaC5jLiAgKiBjb25maWcvc2gvc2gubWQgKGNhbGwpOiBTZXQKCWNhbGwgY29va2llIHRvIGluZGljYXRlIHJlbmVzYXMgY2FsbHMuCgoyMDAzLTA5LTAzICBNb3N0YWZhIEhhZ29nICA8bXVzdGFmYUBpbC5pYm0uY29tPgoKCSogZ2NzZS5jIChyZXBsYWNlX29uZV9zZXQpOiBOZXcgZnVuY3Rpb24uCgkocHJlX2luc2VydF9jb3B5X2luc24pOiBDaGFuZ2UgdGhlIG9yZGVyIG9mIGNvcHlpbmcKCXRvIG1ha2UgY29weSBwcm9wYWdhdGlvbiBkaXNjb3ZlciBhZGRpdGlvbmFsIFBSRSBvcHBvcnR1bml0aWVzLgoKMjAwMy0wOS0wMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzExNzAwLgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfc3VicmVnKTogQ2hlY2sgdGhhdCB0aGUgc3VicmVnIG9mZnNldAoJb2YgYSBoYXJkIHJlZ2lzdGVyIGlzIHJlcHJlc2VudGFibGUgYmVmb3JlIHRyeWluZyB0byBzaW1wbGlmeSBpdAoJdXNpbmcgc3VicmVnX2hhcmRfcmVnbm8uCgoyMDAzLTA5LTA0ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZ3VyZS5pbiAoZ2NjX2N2X2xkX2hpZGRlbik6IERpc2FibGUgdW5sZXNzIHVzaW5nIEdOVSBsZC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wOS0wNCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBpbnRsLmggKE5fKTogUmVtb3ZlIHBhcmVudGhlc2VzLgoKMjAwMy0wOS0wMyAgQmVybmFyZG8gSW5ub2NlbnRpICA8YmVybmllQGRldmVsZXIuY29tPgoKCSogY29uZmlnLmdjYyAobTY4ay0qLWxpbnV4Kik6IFJlbW92ZSBkZWZpbml0aW9uIG9mIExJTlVYX0RFRkFVTFRfRUxGLgoJKiBjb25maWcvaTM3MC9saW51eC5oIChMSU5VWF9ERUZBVUxUX0VMRik6IFJlbW92ZSB1bmNvbmRpdGlvbmFsCglkZWZpbml0aW9uIGFuZCBjb2RlIGJsb2NrcyBjb21waWxlZCB3aGVuIG5vdCBkZWZpbmVkLgoJKiBjb25maWcvaTM4Ni9saW51eC5oIChMSU5VWF9ERUZBVUxUX0VMRik6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9saW51eDY0LmggKExJTlVYX0RFRkFVTFRfRUxGKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9saW51eC5oOiAoTElOVVhfREVGQVVMVF9FTEYpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4NjQuaDogKExJTlVYX0RFRkFVTFRfRUxGKTogTGlrZXdpc2UuCgoyMDAzLTA5LTAzICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgoJKiBjZ3JhcGh1bml0LmMgKHZpc2l0ZWRfbm9kZXMpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKHJlY29yZF9jYWxsXzEpOiBVc2Ugd2Fsa190cmVlIHdpdGggdmlzaXRlZF9ub2Rlcy4KCShjZ3JhcGhfY3JlYXRlX2VkZ2VzKTogVXNlIHdhbGtfdHJlZSB3aXRoIHZpc2l0ZWRfbm9kZXMuCglTZXR1cC90ZWFyZG93biB2aXNpdGVkX25vZGVzIGhhc2h0YWJsZS4KCjIwMDMtMDktMDMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdG9wbGV2LmMgKGZsYWdfcm91bmRpbmdfbWF0aCk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkoZl9vcHRpb25zKTogQWRkIHRvIHRoZSBsaXN0IG9mIGxhbmd1YWdlIGluZGVwZW5kZW50IG9wdGlvbnMuCgkqIGZsYWdzLmggKGZsYWdfcm91bmRpbmdfbWF0aCk6IFByb3RvdHlwZSBoZXJlLgoJKEhPTk9SX1NJR05fREVQRU5ERU5UX1JPVU5ESU5HKTogVXNlIGZsYWdfcm91bmRpbmdfbWF0aCBpbnN0ZWFkLgoJKiBjb21tb24ub3B0IChmcm91bmRpbmctbWF0aCk6IE5ldyBjb21tb24gY29tbWFuZCBsaW5lIG9wdGlvbi4KCSogb3B0cy5jIChjb21tb25faGFuZGxlX29wdGlvbik6IEhhbmRsZSBPUFRfZnJvdW5kaW5nX21hdGguCgkoc2V0X2Zhc3RfbWF0aF9mbGFncyk6IC1mZmFzdC1tYXRoIGNsZWFycyBmbGFnX3JvdW5kaW5nX21hdGguCgoJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IHRoaXMgbmV3IGNvbW1hbmQgbGluZSBvcHRpb24uCgoyMDAzLTA5LTAzICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZy9zb2wyLmggKE5PX0lNUExJQ0lUX0VYVEVSTl9DKTogVXBkYXRlIGNvbW1lbnQuCgoyMDAzLTA5LTAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBNYWtlZmlsZS5pbiAoYy1vYmpjLWNvbW1vbi5vKTogS2lsbCBndC1jLW9iamMtY29tbW9uLmggZGVwZW5kZW5jeS4KCSogYy1kZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6ICBLaWxsIGFyZ3VtZW50cywgYWx3YXlzIHVzZSBjZ3JhcGggcGF0aC4KCSogYy1vYmpjLWNvbW1vbi5jOiBLaWxsIGluY2x1ZGUgb2YgZ3QtYy1vYmpjLWNvbW1vbi5oCgkoZXhwYW5kX2RlZmVycmVkX2ZucywgZGVmZmVyX2ZuKTogS2lsbCBmdW5jdGlvbi4KCShkZWZlcnJlZF9mbnMpOiBLaWxsIHZhcmlhYmxlLgoJKGZpbmlzaF9jZHRvcik6IFVwZGF0ZSBmaW5pc2hfZnVuY3Rpb24gY2FsbC4KCShjX29iamNfY29tbW9uX2ZpbmlzaF9maWxlKTogQWx3YXlzIGNhbGwgY2dyYXBoIGNvZGUuCgkqIGMtcGFyc2UuYzogUmVnZW5lcmF0ZS4KCSogYy1wYXJzZS55OiBSZWdlbmVyYXRlLgoJKiBjLXRyZWUuaCAoZmluaXNoX2Z1bmN0aW9uKTogVXBkYXRlIHByb3RvdHlwZS4KCSogb2JqYy1hY2N0LmMgKGJ1aWxkX21vZHVsZV9kZXNjcmlwdG9yLCBmaW5pc2hfbWV0aG9kX2RlZik6CglVcGRhdGUgY2FsbCBvZiBmaW5pc2hfZnVuY3Rpb24uCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2RlZmF1bHRfaW5saW5lX3AsIGNncmFwaF9hbmFseXplX2Z1bmN0aW9uKTogQWRkCglmb3J3YXJkIHByb3RvdHlwZS4KCShjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiBJbiBub24tdW5pdC1hdC1hLXRpbWUgbW9kZSBhbmFseXplIHRoZQoJZnVuY3Rpb24gYW5kIGFzc2VtYmxlIGl0IGlmIG5lZWRlZC4KCShjZ3JhcGhfZmluYWxpemVfY29tcGlsYXRpb25fdW5pdCk6IERvIG5vdGhpbmcgaW4gbm9uLXVuaXQtYXQtYS10aW1lCgltb2RlLgoJKGNncmFwaF9vcHRpbWl6ZSk6IExpa2V3aXNlLgoJKGNncmFwaF9leHBhbmRfZnVuY3Rpb24pOiBJbiBub24tdW5pdC1hdC1hLXRpbWUgbW9kZSBrZWVwIGZ1bmN0aW9uIGJvZHkKCWV2ZW4gd2hlbiBpdCBoYXMgbm8gaW5saW5lIGNhbGxlZXMuCgkqIGMtcGFyc2UuaW46IFVwZGF0ZSBjYWxscyB0byBmaW5pc2hfZnVuY3Rpb24uCgoyMDAzLTA5LTAzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaDogSGFuZGxlIFRBUkdFVF9DUFVfaXdtbXh0LgoJVXNlICNlcnJvciB0byBnZW5lcmF0ZSB0aGUgbWVzc2FnZSBpZiBUQVJHRVRfREVGQVVMVCBpcyBub3QKCXJlY29nbmlzZWQuCgoyMDAzLTA5LTAzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKE1BU0tfVU5VU0VEMSk6IFJlbW92ZS4KCShNQVNLX1hHT1QsIFRBUkdFVF9YR09UKTogRGVmaW5lLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBhbiBlbnRyeSBmb3IgLW14Z290LgoJKEFTTV9TUEVDKTogTWFwIC1teGdvdCB0byAteGdvdC4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3N5bWJvbF9pbnNucyk6IFVzZSBUQVJHRVRfWEdPVCB0byBkZWNpZGUKCXdoZXRoZXIgd2UncmUgdXNpbmcgYSBiaWctR09UIHNlcXVlbmNlcy4KCShtaXBzX2xlZ2l0aW1pemVfY29uc3RfbW92ZSwgbWlwc19leHBhbmRfY2FsbCk6IExpa2V3aXNlLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBSZXZlcnQgMjAwMy0wMS0wOSBjaGFuZ2UuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLW14Z290LgoKMjAwMy0wOS0wMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc29sMi5oIChOT19JTVBMSUNJVF9FWFRFUk5fQyk6IERlZmluZSBoZXJlLgoJKiBjb25maWcvc3BhcmMvc29sMi5oOiBOb3QgaGVyZS4KCjIwMDMtMDktMDIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZXhwci5jIChleHBhbmRfZXhwcik6IFRoZSBjb2RlIGZvbGxvd2luZyBib3RoX3N1bW1hbmRzIHBlcmZvcm1zCgl0aGUgc2FtZSB0YXNrIGFzIHNpbXBsaWZ5X2dlbl9iaW5hcnkuICBSZXBsYWNlIGFsbCBnb3RvcyB0bwoJYm90aF9zdW1tYW5kcyB3aXRoIGEgY2FsbCB0byBzaW1wbGlmeV9nZW5fYmluYXJ5IGFuZCBkZWxldGUgdGhlCglub3cgdW51c2VkIGxhYmVsLgoKMjAwMy0wOS0wMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzczMjcKCSogY29uZmlnL3NwYXJjL3NvbDIuaCAoTk9fSU1QTElDSVRfRVhURVJOX0MpOiBEZWZpbmUuCgoyMDAzLTA5LTAyICBKZWZmIFN0dXJtICA8anN0dXJtQG9uZS1wb2ludC5jb20+CgoJKiBjZ3JhcGh1bml0LmMgKHJlY29yZF9jYWxsXzEpOiBVc2Ugd2Fsa190cmVlX3dpdGhvdXRfZHVwbGljYXRlcy4KCShjZ3JhcGhfb3B0aW1pemVfZnVuY3Rpb24pOiBTZXQgY3VycmVudF9mdW5jdGlvbl9kZWNsIHRvIHRoZQoJZm5kZWNsIHdlJ3JlIGludGVncmF0aW5nIGZyb20uCgoyMDAzLTA5LTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5kZWY6IEJyZWFrIG91dCBfQ29tcGxleCBtYXRoIGZ1bmN0aW9ucyBpbnRvIHRoZWlyCglvd24gY2F0ZWdvcnkuCgoyMDAzLTA5LTAyICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBsYW5naG9va3MtZGVmLmggKExBTkdfSE9PS1NfUlRMX0VYUEFORF9TVE1UKTogQ2FzdCBwcm9wZXJseS4KCjIwMDMtMDktMDIgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIGNmZ2J1aWxkLmMgKGNvbXB1dGVfb3V0Z29pbmdfZnJlcXVlbmNpZXMpOiBVc2UgTk9URSBpbnN0ZWFkIG9mCglmaW5kaW5nIHRoZSBub3RlIGFnYWluLgoKMjAwMy0wOS0wMiAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBSZW1vdmUgaG9zdC1zcGVjaWZpYyByZXdyaXRlcyBvZiB0YXJnZXRfYWxpYXMuCgoyMDAzLTA5LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKGdlbnByb2dzKTogRml4IHR5cG8uCgoJKiBNYWtlZmlsZS5pbiAoZ2VuY2hlY2subyk6IFJlbW92ZSBidWlsZCBjb21tYW5kcy4KCShkdW1teS1jb25kaXRpb25zLm8pOiBMaWtld2lzZS4KCShyZWFkLXJ0bC5vKTogTGlrZXdpc2UuCgkoZ2Vuc3VwcG9ydC5vKTogTGlrZXdpc2UuCgkoZ2VuY29uZmlnJChidWlsZF9leGVleHQpKTogUmVtb3ZlIHJ1bGUuCgkoZ2VuY29uZmlnLm8pOiBSZW1vdmUgYnVpbGQgY29tbWFuZHMuCgkoZ2VuZmxhZ3MkKGJ1aWxkX2V4ZWV4dCkpOiBSZW1vdmUgcnVsZS4KCShnZW5mbGFncy5vKTogUmVtb3ZlIGJ1aWxkIGNvbW1hbmRzLgoJKGdlbmNvZGVzJChidWlsZF9leGVleHQpKTogUmVtb3ZlIHJ1bGUuCgkoZ2VuY29kZXMubyk6IFJlbW92ZSBidWlsZCBjb21tYW5kcy4KCShnZW5jb25zdGFudHMubyk6IFJlbW92ZSBidWlsZCBjb21tYW5kcy4KCShnZW5lbWl0JChidWlsZF9leGVleHQpKTogUmVtb3ZlIHJ1bGUuCgkoZ2VuZW1pdC5vKTogUmVtb3ZlIGJ1aWxkIGNvbW1hbmRzLgoJKGdlbnJlY29nJChidWlsZF9leGVleHQpKTogUmVtb3ZlIHJ1bGUuCgkoZ2VucmVjb2cubyk6IFJlbW92ZSBidWlsZCBjb21tYW5kcy4KCShnZW5leHRyYWN0JChidWlsZF9leGVleHQpKTogUmVtb3ZlIHJ1bGUuCgkoZ2VuZXh0cmFjdC5vKTogUmVtb3ZlIGJ1aWxkIGNvbW1hbmRzLgoJKGdlbnBlZXAkKGJ1aWxkX2V4ZWV4dCkpOiBSZW1vdmUgcnVsZS4KCShnZW5wZWVwLm8pOiBSZW1vdmUgYnVpbGQgY29tbWFuZHMuCgkoZ2VuYXR0ciQoYnVpbGRfZXhlZXh0KSk6IFJlbW92ZSBydWxlLgoJKGdlbmF0dHIubyk6IFJlbW92ZSBidWlsZCBjb21tYW5kcy4KCShnZW5wcm9nbmFtZXMpOiBOZXcgdmFyaWFibGUuCgkoZ2VucHJvZ3MpOiBMaWtld2lzZS4KCShnZW5vYmpzKTogTGlrZXdpc2UuCgkoZ2VucHJvZ3MpOiBOZXcgcnVsZS4KCShnZW5vYmpzKTogTGlrZXdpc2UuCgkoZ2VuYXR0cnRhYi5vKTogUmVtb3ZlIGJ1aWxkIGNvbW1hbmRzLgoJKGdlbmF1dG9tYXRhLm8pOiBMaWtld2lzZS4KCShnZW5vdXRwdXQkKGJ1aWxkX2V4ZWV4dCkpOiBSZW1vdmUgcnVsZS4KCShnZW5vdXRwdXQubyk6IFJlbW92ZSBidWlsZCBjb21tYW5kcy4KCShnZW5nZW5ydGwubyk6IExpa2V3aXNlLgoJKGdlbnByZWRzLm8pOiBMaWtld2lzZS4KCShnZW5ndHlwZS5vKTogTGlrZXdpc2UuCgkoZ2VuY29uZGl0aW9ucy5vKTogTGlrZXdpc2UuCgkoZ2VuLXByb3Rvcy5vKTogTGlrZXdpc2UuCgkoc2Nhbi5vKTogTGlrZXdpc2UuCgkoZml4LWhlYWRlci5vKTogTGlrZXdpc2UuCgkoc2Nhbi1kZWNscy5vKTogTGlrZXdpc2UuCgkoY2hlY2stZysrKTogQ29tYmluZSB3aXRoIG90aGVyIGNoZWNrIHRhcmdldHMuCgkoY2hlY2stZ2NjKTogTGlrZXdpc2UuCgkoY2hlY2stZzc3KTogTGlrZXdpc2UuCgkoY2hlY2stb2JqYyk6IExpa2V3aXNlLgoKMjAwMy0wOS0wMSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBSZW1vdmUgaG9zdC1zcGVjaWZpYyBzdHVmZiB3aGljaCBpcyB1bnVzZWQgaGVyZQoJc2luY2UgdGhlIGludHJvZHVjdGlvbiBvZiBjb25maWcuaG9zdC4KCgkqIGRvYy9mcmFnbWVudHMudGV4aTogTWVudGlvbiBjb25maWcuaG9zdC4KCSogZG9jL3NvdXJjZWJ1aWxkLnRleGk6IE1lbnRpb24gY29uZmlnLmhvc3QuICBHaXZlIGJyaWVmIGRlc2NyaXB0aW9ucwoJb2YgY29uZmlnLmJ1aWxkLCBjb25maWcuaG9zdCwgYW5kIGNvbmZpZy5nY2MuCgoyMDAzLTA5LTAxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmMgKHB1c2hkZWNsKTogRG9uJ3QgcHV0IHZhcmlhYmxlcyBvbgoJQ19UWVBFX0lOQ09NUExFVEVfVkFSUyBvZiBhIHR5cGUgdW5sZXNzIHRoYXQgdHlwZSBpcyBpdHNlbGYKCWluY29tcGxldGUuCgoyMDAzLTA5LTAxICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5ob3N0OiBOZXcgZmlsZS4KCSogY29uZmlnLmdjYzogUmVtb3ZlIHNvbWUgaG9zdC1zcGVjaWZpYyBzdHVmZiBhbmQgc29tZQoJbG9naWMgbmVlZGVkIG9ubHkgZm9yIHJlcGVhdGVkIGludm9jYXRpb24uCgkqIGNvbmZpZ3VyZS5pbjogVXNlIGNvbmZpZy5ob3N0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA5LTAxICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJKiBjLXR5cGVjay5jIChidWlsZF9iaW5hcnlfb3ApOiBLaWxsIEJJVF9BTkRUQ19FWFBSLgoJKiBjb252ZXJ0LmMgKGNvbnZlcnRfdG9faW50ZWdlcik6IEtpbGwgQklUX0FORFRDX0VYUFIuCgkqIGZvbGQtY29uc3QuYyAoaW50X2NvbnN0X2Jpbm9wKTogS2lsbCBCSVRfQU5EVENfRVhQUi4KCShmb2xkKTogS2lsbCBCSVRfQU5EVENfRVhQUiBhbmQgbGFiZWwgYml0X2FuZC4KCSogdHJlZS5kZWYgKEJJVF9BTkRUQ19FWFBSKTogS2lsbC4KCjIwMDMtMDgtMzEgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlndXJlLmluOiBSZW1vdmUgdXNlcyBvZiAiZm9yIHggaW4gLi4gJHtmb299IiBpZGlvbS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogY29uZmlnLmdjYzogIFJlbW92ZSByZWZlcmVuY2VzIHRvIGluc3RhbGxfaGVhZGVyc19kaXIsIG5vdyB1bnVzZWQKCXNpbmNlIGludHJvZHVjdGlvbiBvZiBjb25maWcuYnVpbGQuCgkqIGNvbmZpZy5nY2MgKGk4NjAtKi1zeXN2NCopOiBEb24ndCBzZXQgdW51c2VkIFVTRywgU1ZSMyBkZWZpbmVzLgoKCSogZG9jL2ZyYWdtZW50cy50ZXhpLCBkb2Mvc291cmNlYnVpbGQudGV4aTogTWVudGlvbiBuZXcgZmlsZQoJY29uZmlnLmJ1aWxkLgoKCSogY29uZmlnLmJ1aWxkOiBOZXcgZmlsZS4KCSogY29uZmlnLmdjYzogUmVtb3ZlIHNvbWUgYnVpbGQtc3BlY2lmaWMgc3R1ZmYuCgkqIGNvbmZpZ3VyZS5pbjogVXNlIGNvbmZpZy5idWlsZC4KCSogY29uZmlndXJlOiBSZWduZXJhdGUuCgoyMDAzLTA4LTMxICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgkgICAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8xMTgyMwoJKiBzdG10LmMgKGV4cGFuZF9lbmRfY2FzZV90eXBlKTogT25seSB1c2UganVtcCB0YWJsZXMgZm9yIGRlbnNlCglzd2l0Y2ggc3RhdGVtZW50cyB3aGVuIG9wdGltaXppbmcgZm9yIHNpemUuCgoyMDAzLTA4LTMxICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zZXRqbXApOiBVc2UgZW1pdF9qdW1wIHRvIGp1bXAgYXJvdW5kCgl0aGUgIT0gMCBjYXNlLCB3aGljaCBlbnN1cmVzIHBlbmRpbmcgc3RhY2sgYWRqdXN0bWVudHMgYXJlIGZsdXNoZWQuCgoyMDAzLTA4LTMwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmZyYWc6IERlbGV0ZSBmaWxlLgoJKiBjb25maWd1cmUuaW46IFJlbmFtZSB0aGUgc3Vic3RpdHV0aW9uIHZhcmlhYmxlcwoJZGVwX2hvc3RfeG1ha2VfZmlsZSBhbmQgZGVwX3RtYWtlX2ZpbGUgdG8geG1ha2VfZmlsZSBhbmQKCXRtYWtlX2ZpbGUgcmVzcGVjdGl2ZWx5LiAgRG8gbm90IGV4cGFuZCAkc3JjZGlyIGluIHRoZQoJdmFsdWUgb2YgdGhlc2U7IGxlYXZlIHRoYXQgZm9yIE1ha2UuICBJbnRyb2R1Y2UgYSBuZXcKCXN1YnN0aXR1dGlvbiB2YXJhaWJsZSwgYWxsX2xhbmdfbWFrZWZyYWdzLCB3aGljaCBsaXN0cwoJc3ViZGlyZWN0b3J5IE1ha2UtbGFuZy5pbiBmaWxlczsgZXhjbHVkZSB0aGVzZSBmcm9tCglhbGxfbGFuZ19tYWtlZmlsZXMsIHdoaWNoIGlzIG5vdyBvbmx5IGZvciBzdWJkaXJlY3RvcnkKCW91dHB1dHMuICBEbyBub3QgaW52b2tlIGNvbmZpZ3VyZS5mcmFnLiAgRG8gbm90IHNldCBub3IKCUFDX1NVQlNUX0ZJTEUgdGFyZ2V0X292ZXJyaWRlcywgaG9zdF9vdmVycmlkZXMsIG9yCglsYW5ndWFnZV9mcmFnbWVudHMuIENyZWF0ZSBidWlsZCBzdWJkaXJlY3RvcmllcyBpbgoJY29uZmlnLnN0YXR1cyBleHRyYSBjb21tYW5kcy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIHN1YnN0aXR1dGlvbnMgdG8gbWF0Y2ggY2hhbmdlcyB0bwoJY29uZmlndXJlLiAgVXNlIGluY2x1ZGUgZGlyZWN0aXZlcyBpbnN0ZWFkIG9mIEAtaW5zZXJ0aW9ucwoJdG8gcmVhZCBpbiBob3N0LCB0YXJnZXQsIGFuZCBsYW5ndWFnZSBmcmFnbWVudHMuCgkoTWFrZWZpbGUgcnVsZSk6IERvIG5vdCBpbnZva2UgY29uZmlndXJlLmZyYWcuICBEbyBub3QgY29weQoJY29uZmlnLnN0YXR1cyB0byBjb25maWcucnVuIGJlZm9yZSBleGVjdXRpbmcgaXQuICBTZXQKCUNPTkZJR19IRUFERVJTIGFuZCBDT05GSUdfRklMRVMgc28gdGhhdCBvbmx5IE1ha2VmaWxlIGdldHMKCXJlZ2VuZXJhdGVkLgoJKGNzdGFtcC1oIHJ1bGUpOiBTZXQgQ09ORklHX0ZJTEVTIGFzIHdlbGwgYXMgQ09ORklHX0hFQURFUlMuCgoyMDAzLTA4LTMwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy10cmVlLmg6IERlbGV0ZSBDT01QQVJFX0RJRkZFUkVOVF9UVSBmcm9tIGVudW1lcmF0aW9uLgoJKiBjLXR5cGVjay5jIChzYW1lX3RyYW5zbGF0aW9uX3VuaXRfcCk6IE5ldyBmdW5jdGlvbi4KCShjb21wdHlwZXMpOiBVc2UgaXQgaW5zdGVhZCBvZiBmbGFncyBwYXJhbWV0ZXIgdG8gaWRlbnRpZnkKCXN0cnVjdHVyZSB0eXBlcyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cy4KCSogYy1kZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IEFsd2F5cyBjYWxsIGNvbXB0eXBlcyB3aXRoCglDT01QVFlQRV9TVFJJQ1QgZmxhZ3MgYXJndW1lbnQuCgkoY19yZXNldF9zdGF0ZSk6IFNldCBCTE9DS19TVVBFUkNPTlRFWFQgb2YgdGhlIGJsb2NrIGZvcm1lZAoJdG8gZmlsZV9zY29wZV9kZWNsLgoKMjAwMy0wOC0zMCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtdHJlZS5oIChDX1RZUEVfSU5DT01QTEVURV9WQVJTKTogTmV3IG1hY3JvLgoJKiBjLWRlY2wuYyAoc3RydWN0IGNfc2NvcGUpOiBSZW1vdmUgImluY29tcGxldGUiIGZpZWxkLgoJKHB1c2hkZWNsKTogQXR0YWNoIHZhcmlhYmxlcyB3aXRoIGluY29tcGxldGUgdHlwZXMgdG8KCXRoZSBUWVBFX01BSU5fVkFSSUFOVCBvZiB0aGUgaW5jb21wbGV0ZSB0eXBlIGluIHF1ZXN0aW9uLgoJKGZpbmlzaF9zdHJ1Y3QpOiBMb29rIGF0IENfVFlQRV9JTkNPTVBMRVRFX1ZBUlMgZm9yIHZhcmlhYmxlcwoJdG8gY29tcGxldGUsIG5vdCBhdCBjdXJyZW50X3Njb3BlLT5pbmNvbXBsZXRlLiAgQWxsIHN1Y2gKCXZhcmlhYmxlcyBkbyBuZWVkIGNvbXBsZXRpb24uCgoyMDAzLTA4LTMwICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCU5pY29sYXMgUGl0cmUgPG5pY29AY2FtLm9yZz4KCgkqIGFybS9saWIxZnVuY3MuYXNtIChSRVRDT05EKTogRGVsZXRlLgoJKFJFVExETSk6IE5ldyBhc3NlbWJsZXIgbWFjcm8uICBVc2UgaXQgZm9yIHJldHVybmluZyB3aXRoIGxkbS9sZHIuCgkoQVJNX0xESVYwLCBUSFVNQl9MRElWMCk6IENvbGxhcHNlIG11bHRpcGxlIGRlZmluaXRpb25zLgoJKF9fQVJNX0FSQ0hfXyk6IE1vdmUgaGVyZSBmcm9tIGllZWU3NTQtP2YuUy4KCShSRVQsIFJFVGMpOiBDbGVhbiB1cCBkZWZpbml0aW9ucy4KCShESVZfRlVOQ19FTkQpOiBSZW5hbWVkIGZyb20gRlVOQ19FTkQuICBBbGwgdXNlcyBjaGFuZ2VkLgoJKEZVTkNfRU5EKTogTmV3IG1hY3JvIHRoYXQgbWFya3MgdGhlIGVuZCBvZiBhbnkgZnVuY3Rpb24uCgkoQVJNX0ZVTkNfU1RBUlQpOiBOZXcgbWFjcm8gdGhhdCBhbGxvd3MgYW4gYXNzZW1ibGVyIHJvdXRpbmUgdG8gYmUKCWltcGxlbWVudGVkIGluIEFSTSBjb2RlIGV2ZW4gaWYgYSBUaHVtYi1vbmx5IGJ1aWxkLgoJVW5jb25kaXRpb25hbGx5IGluY2x1ZGUgaWVlZTc1NC0/Zi5TLgoJKiBhcm0vaWVlZTc1NC1kZi5TOiBEZWxldGUgbWFjcm9zIG1vdmVkIHRvIGxpYjFmdW5jcy5hc20uCglNYXJrIGVuZHMgb2YgZnVuY3Rpb25zLgoJU3BsaXQgaW50byBzZXBhcmF0ZSBjb25kaXRpb25hbGx5LWNvbXBpbGVkIHVuaXRzLgoJVXNlIFJFVExETSB0byByZXR1cm4gZnJvbSByb3V0aW5lcy4KCSogYXJtL2llZWU3NTQtc2YuUzogU2ltaWxhcmx5LgoJKiB0LWFybS1lbGYgKExJQjFBU01GVU5DUyk6IFJlbW92ZSBfaWVlZTc1NF9kcCBhbmQgX2llZWU3NTRfc3AuCglBZGQgX25lZ2RmMiBfYWRkc3ViZGYzIF9tdWxkaXZkZjMgX2NtcGRmMiBfdW5vcmRkZjIgX2ZpeGRmc2kKCV90cnVuY2Rmc2YyIF9uZWdzZjIgX2FkZHN1YnNmMyBfbXVsZGl2c2YzIF9jbXBzZjIgX3Vub3Jkc2YyCglfZml4c2ZzaSBhbmQgX2ZpeHVuc3Nmc2kuCgoJKiBhcm0vaWVlZTc1NC1kZi5TIChfX211bGRmMyk6IEZpeCBidWcgd2hlbiByZXN1bHQgb2YgYQoJbXVsdGlwbGljYXRpb24gdW5kZXJmbG93cyB0byB6ZXJvLgoJKF9fYWRkZGYzKTogRml4IGJ1ZyB3aGVuIHVzaW5nIFZGUCBvcmRlcmluZyBvbiBsaXR0bGUtZW5kaWFuCglwcm9jZXNzb3JzLgoJKF9fZml4ZGZzaSk6IFVzZSBycnggdG8gZXh0cmFjdCB0aGUgY2FycnkgaW50byBhIHJlZ2lzdGVyIGluc3RlYWQgb2YKCU1SUyBpbnN0cnVjdGlvbi4gIE9wdGltaXplIGxhdGVyIHVzZSBvZiByZXN1bHQuCgkqIGFybS9pZWVlNzU0LXNmLlMgKF9fZml4c2ZzaSk6IExpa2V3aXNlLgoJKF9fZml4dW5zc2ZzaSk6IFVzZSBhIGJldHRlciBzZXF1ZW5jZSBmb3IgaGFuZGxpbmcgbmVnYXRpdmUtb3ItemVyby4KCjIwMDMtMDgtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmVlLW9wdGltaXplLmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAoT0JKUy1hcmNoaXZlKTogQWRkIHRyZWUtb3B0aW1pemUuby4KCSh0cmVlLW9wdGltaXplLm8pOiBOZXcuCgkqIGMtZGVjbC5jIChzdG9yZV9wYXJtX2RlY2xzKTogVXNlIGFsbG9jYXRlX3N0cnVjdF9mdW5jdGlvbi4KCShmaW5pc2hfZnVuY3Rpb24pOiBEb24ndCBmcmVlX2FmdGVyX3BhcnNpbmcgb3IgZnJlZV9hZnRlcl9jb21waWxhdGlvbi4KCShzZXRfc2F2ZV9leHByX2NvbnRleHQpOiBNb3ZlIHRvIHRyZWUtb3B0aW1pemUuYy4KCShjX2V4cGFuZF9ib2R5XzEpOiBVc2UgdHJlZV9yZXN0X29mX2NvbXBpbGF0aW9uLgoJKiBjLWxhbmcuYyAoTEFOR19IT09LU19SVExfRVhQQU5EX1NUTVQpOiBOZXcuCgkqIG9iamMvb2JqYy1sYW5nLmMgKExBTkdfSE9PS1NfUlRMX0VYUEFORF9TVE1UKTogTmV3LgoJKiBjLW9iamMtY29tbW9uLmMgKGV4cGFuZF9kZWZlcnJlZF9mbnMpOiBEb24ndCBlbWl0IHVudXNlZCBpbmxpbmVzOwoJaXRlcmF0ZSB1bnRpbCBjbG9zdXJlLgoJKiBsYW5naG9va3MtZGVmLmggKExBTkdfSE9PS1NfUlRMX0VYUEFORF9TVEFSVCwKCUxBTkdfSE9PS1NfUlRMX0VYUEFORF9TVE1ULCBMQU5HX0hPT0tTX1JUTF9FWFBBTkRfRU5EKTogTmV3LgoJKExBTkdfSE9PS1NfUlRMX0VYUEFORF9JTklUSUFMSVpFUik6IE5ldy4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzX2Zvcl9ydGxfZXhwYW5zaW9uKTogTmV3LgoJKiB0b3BsZXYuaCAodHJlZV9yZXN0X29mX2NvbXBpbGF0aW9uKTogRGVjbGFyZSBpdC4KCjIwMDMtMDgtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZnVuY3Rpb24pOiBBZGQgcnRsX2lubGluZV9pbml0LCBzYXZlZF9mb3JfaW5saW5lLgoJKiBpbnRlZ3JhdGUuYyAoc2F2ZV9mb3JfaW5saW5lKTogU2V0IHNhdmVkX2Zvcl9pbmxpbmUuCgkqIGMtc2VtYW50aWNzLmMgKGdlbnJ0bF9zY29wZV9zdG10KTogQ2hlY2sgaXQuCgkqIHRvcGxldi5jICh3cmFwdXBfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IENoZWNrIGl0LgoJKHJlc3Rfb2ZfaGFuZGxlX2lubGluaW5nKTogU2V0IGFuZCBjaGVjayBydGxfaW5saW5lX2luaXQuCgkocmVzdF9vZl9jb21waWxhdGlvbik6IFJlbW92ZSBvdXQgb2YgZGF0ZSBjb21tZW50LgoKMjAwMy0wOC0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFsbG9jYXRlX3N0cnVjdF9mdW5jdGlvbik6IE5ldywgc3BsaXQgb3V0IG9mIC4uLgoJKHByZXBhcmVfZnVuY3Rpb25fc3RhcnQsIGluaXRfZnVuY3Rpb25fc3RhcnQpOiAuLi4gaGVyZS4KCSogZXhwci5jIChpbml0X2V4cHIpOiBVc2UgZ2djX2FsbG9jX2NsZWFyZWQuCgkqIHN0bXQuYyAoaW5pdF9zdG10X2Zvcl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiB0cmVlLmggKGFsbG9jYXRlX3N0cnVjdF9mdW5jdGlvbik6IERlY2xhcmUuCgoyMDAzLTA4LTI5ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2M6IERvbid0IHVzZSBuZWdhdGVkIGNoYXJhY3RlciBjbGFzcyBpbiBzaGVsbCBjYXNlCgljbGF1c2UuCgoyMDAzLTA4LTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uaCAoc3RydWN0IGZ1bmN0aW9uKTogTW92ZSBmdW5jdGlvbl9mcmVxdWVuY3kgYW5kCgltYXhfanVtcHRhYmxlX2VudHMgYmVmb3JlIHN0YXJ0IG9mIGJpdCBmaWVsZCBtZW1iZXJzLgoKMjAwMy0wOC0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2NvbnN0YW50X3ApOiBDaGVjayBjc2Vfbm90X2V4cGVjdGVkIGhlcmUsCgkoZm9sZF9idWlsdGluX2NvbnN0YW50X3ApIC4uLiBub3QgaGVyZS4KCjIwMDMtMDgtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLXRyZWUuaCAoQ19ERUNMX0ZJTEVfU0NPUEUpOiBNb3ZlIC4uLgoJKiB0cmVlLmggKERFQ0xfRklMRV9TQ09QRV9QKTogLi4uIGhlcmUsIGFuZCByZW5hbWUuCgkqIGMtZGVjbC5jLCBjLW9iamMtY29tbW9uLmMsIGMtdHlwZWNrLmM6IFVwZGF0ZSB0byBtYXRjaC4KCjIwMDMtMDgtMjkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmRlZjogRml4IHR5cG9zLgoJKEFUVFJfTUFUSEZOX0ZQUk9VTkRJTkdfU1RPUkUpOiBOZXcgbWFjcm8uCgkoQlVJTFRfSU5fRlJFWFAsIEJVSUxUX0lOX0ZSRVhQRiwgQlVJTFRfSU5fRlJFWFBMLCBCVUlMVF9JTl9NT0RGLAoJQlVJTFRfSU5fTU9ERkYsIEJVSUxUX0lOX01PREZMLCBCVUlMVF9JTl9SRU1RVU8sIEJVSUxUX0lOX1JFTVFVT0YsCglCVUlMVF9JTl9SRU1RVU9MLCBCVUlMVF9JTl9TSU5DT1MsIEJVSUxUX0lOX1NJTkNPU0YsCglCVUlMVF9JTl9TSU5DT1NMKTogVXNlIEFUVFJfTUFUSEZOX0ZQUk9VTkRJTkdfU1RPUkUuCgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0VSRkMsIEJVSUxUX0lOX0VSRkNGLCBCVUlMVF9JTl9FUkZDTCk6CglVc2UgQVRUUl9NQVRIRk5fRlBST1VORElOR19FUlJOTy4KCjIwMDMtMDgtMjkgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLmdjYyAoaTM4Ni0qLXZzdGEpOiBGaXggb2J2aW91cyBib2dvc2l0eS4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWY6ICBSZW1vdmUgc3BlY2lhbCBjYXNlcyBmb3IgdW5zdXBwb3J0ZWQKCVBUWCAxIGFuZCBQVFggMiAoaW5jbHVkaW5nIGlbMzQ1NjddODYtc2VxdWVudC1zeXN2MykuCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoyMDAzLTA4LTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKGNwcC5pbmZvKTogSnVzdCBzdGF0ZSBkZXBlbmRlbmNpZXMuCgkoZ2NjLmluZm8pOiBMaWtld2lzZS4KCShnY2NpbnQuaW5mbyk6IExpa2V3aXNlLgoJKGdjY2luc3RhbGwuaW5mbyk6IExpa2V3aXNlLgoJKGNwcGludGVybmFscy5pbmZvKTogTGlrZXdpc2UuCgkoY3BwLmR2aSk6IExpa2V3aXNlLgoJKGdjYy5kdmkpOiBMaWtld2lzZS4KCShnY2NpbnQuZHZpKTogTGlrZXdpc2UuCgkoZ2NjaW5zdGFsbC5kdmkpOiBMaWtld2lzZS4KCShjcHBpbnRlcm5hbHMuZHZpKTogTGlrZXdpc2UuCgkoZ2Nvdi4xKTogTGlrZXdpc2UuCgkoY3BwLjEpOiBMaWtld2lzZS4KCShnY2MuMSk6IExpa2V3aXNlLgoJKGdmZGwuNyk6IExpa2V3aXNlLgoJKGdwbC43KTogTGlrZXdpc2UuCgkoZnNmLWZ1bmRpbmcuNyk6IExpa2V3aXNlLgoJKCQob2JqZGlyKS8lLmluZm8pOiBOZXcgcGF0dGVybiBydWxlLgoJKCUuZHZpKTogTGlrZXdpc2UuCgoyMDAzLTA4LTI5ICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChyZXN0YWdlMSk6IFBhc3MgQk9PVF9DRkxBR1MgdG8gcmVjdXJzaXZlIG1ha2UuCgkocmVzdGFnZTIpOiBMaWtld2lzZS4KCShyZXN0YWdlMyk6IExpa2V3aXNlLgoJKHJlc3RhZ2U0KTogTGlrZXdpc2UuCgkocmVzdGFnZXByb2ZpbGUpOiBMaWtld2lzZS4KCShyZXN0YWdlZmVlZGJhY2spOiBMaWtld2lzZS4KCShidWJibGVzdHJhcCk6IExpa2V3aXNlLgoKMjAwMy0wOC0yOSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBjb25maWcuZ2NjOiBOYXJyb3cgdW5zdXBwb3J0ZWQgdGFyZ2V0IG1hdGNoIHRvIGF2b2lkIGNsb2JiZXJpbmcKCWk/ODYtc2VxdWVudC1zeXN2NCouCgoyMDAzLTA4LTI5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChtYXRoZm5fYnVpbHRfaW4pOiBIYW5kbGUgbmV3IG1hdGggYnVpbHRpbnMuCgoyMDAzLTA4LTI4ICBQZXIgQm90aG5lciAgPHBlckBib3RobmVyLmNvbT4KCglGaXggKGhvcGVmdWxseSB0ZW1wb3JhcnkpIGZvciBicmVha2FnZSBjYXVzZWQgYnkgbXkgMDgtMjEgcGF0Y2guCgkqIGNwcGxleC5jIChfY3BwX2dldF9mcmVzaF9saW5lKTogIENoZWNrIGZvciBudWxsIGJ1ZmZlci4KCShfY3BwX2xleF9idWZmZXIpOiAgTGlrZXdpc2UuCgkqIGNwcHRyYWQuYyAoX2NwcF9yZWFkX2xvZ2ljYWxfbGluZV90cmFkKTogIExpa2V3aXNlLgoKMjAwMy0wOC0yOCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIiptdWxzaTNfc2lnbiIpOiBOZXcgaW5zbi4KCSgibXVsc2lkaTMiIGV4cGFuZGVyLCAibXVsc2lfNjQzMiIgaW5zbik6IFJlbW92ZSwgcmVwbGFjZSBieSAuLi4KCSgibXVsc2lkaTMiKTogLi4uIHRoaXMgbmV3IGluc24uCgkoInVtdWxzaWRpMyIpOiBOZXcgaW5zbi4KCSgiZGl2bW9kZGkzIiwgImRpdm1vZHRpZGkzIiwgImRpdm1vZHRpc2kzIik6IFNpbXBsaWZ5IGJ5IHVzaW5nCgltaXhlZC1tb2RlIG1hdGNoaW5nIGNvbnN0cmFpbnRzLgoJKCJ1ZGl2bW9kc2k0IiwgInVkaXZtb2RkaXNpMyIpOiBOZXcgaW5zbnMuCgkoInVkaXZzaTMiLCAidW1vZHNpMyIpOiBVc2Ugb25seSBpbiBFU0EvMzkwIG1vZGUuCgoyMDAzLTA4LTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGluLXR5cGVzLmRlZiAoQlRfSU5UX1BUUiwgQlRfRkxPQVRfUFRSLCBCVF9ET1VCTEVfUFRSLAoJQlRfTE9OR0RPVUJMRV9QVFIsIEJUX0ZOX0ZMT0FUX0ZMT0FUX0ZMT0FUUFRSLAoJQlRfRk5fRE9VQkxFX0RPVUJMRV9ET1VCTEVQVFIsCglCVF9GTl9MT05HRE9VQkxFX0xPTkdET1VCTEVfTE9OR0RPVUJMRVBUUiwKCUJUX0ZOX0ZMT0FUX0ZMT0FUX0lOVFBUUiwgQlRfRk5fRE9VQkxFX0RPVUJMRV9JTlRQVFIsCglCVF9GTl9MT05HRE9VQkxFX0xPTkdET1VCTEVfSU5UUFRSLAoJQlRfRk5fRkxPQVRfRkxPQVRfRkxPQVRfSU5UUFRSLCBCVF9GTl9ET1VCTEVfRE9VQkxFX0RPVUJMRV9JTlRQVFIsCglCVF9GTl9MT05HRE9VQkxFX0xPTkdET1VCTEVfTE9OR0RPVUJMRV9JTlRQVFIsCglCVF9GTl9WT0lEX0ZMT0FUX0ZMT0FUUFRSX0ZMT0FUUFRSLAoJQlRfRk5fVk9JRF9ET1VCTEVfRE9VQkxFUFRSX0RPVUJMRVBUUiwKCUJUX0ZOX1ZPSURfTE9OR0RPVUJMRV9MT05HRE9VQkxFUFRSX0xPTkdET1VCTEVQVFIpOiBOZXcuCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fRlJFWFAsIEJVSUxUX0lOX0ZSRVhQRiwgQlVJTFRfSU5fRlJFWFBMLAoJQlVJTFRfSU5fTU9ERiwgQlVJTFRfSU5fTU9ERkYsIEJVSUxUX0lOX01PREZMLCBCVUlMVF9JTl9SRU1RVU8sCglCVUlMVF9JTl9SRU1RVU9GLCBCVUlMVF9JTl9SRU1RVU9MLCBCVUlMVF9JTl9TSU5DT1MsCglCVUlMVF9JTl9TSU5DT1NGLCBCVUlMVF9JTl9TSU5DT1NMKTogTmV3LgoJKiB0cmVlLmM6IEFzc2lnbiBuZXcgdHlwZV9ub2Rlcy4KCSogdHJlZS5oICh0cmVlX2luZGV4KTogQWRkIFRJX0ZMT0FUX1BUUl9UWVBFLCBUSV9ET1VCTEVfUFRSX1RZUEUsCglUSV9MT05HX0RPVUJMRV9QVFJfVFlQRSwgVElfSU5URUdFUl9QVFJfVFlQRS4KCShmbG9hdF9wdHJfdHlwZV9ub2RlLCBkb3VibGVfcHRyX3R5cGVfbm9kZSwKCWxvbmdfZG91YmxlX3B0cl90eXBlX25vZGUsIGludGVnZXJfcHRyX3R5cGVfbm9kZSk6IE5ldyB0eXBlX25vZGVzLgoKCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBuZXcgYnVpbHRpbnMuCgoyMDAzLTA4LTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGluLXR5cGVzLmRlZiAoQlRfRk5fRkxPQVRfSU5UX0ZMT0FULAoJQlRfRk5fRE9VQkxFX0lOVF9ET1VCTEUsIEJUX0ZOX0xPTkdET1VCTEVfSU5UX0xPTkdET1VCTEUpOiBOZXcuCgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0VSRiwgQlVJTFRfSU5fRVJGQywgQlVJTFRfSU5fRVJGQ0YsCglCVUlMVF9JTl9FUkZDTCwgQlVJTFRfSU5fRVJGRiwgQlVJTFRfSU5fRVJGTCwgQlVJTFRfSU5fR0FNTUEsCglCVUlMVF9JTl9HQU1NQUYsIEJVSUxUX0lOX0dBTU1BTCwgQlVJTFRfSU5fSjAsIEJVSUxUX0lOX0owRiwKCUJVSUxUX0lOX0owTCwgQlVJTFRfSU5fSjEsIEJVSUxUX0lOX0oxRiwgQlVJTFRfSU5fSjFMLAoJQlVJTFRfSU5fSk4sIEJVSUxUX0lOX0pORiwgQlVJTFRfSU5fSk5MLCBCVUlMVF9JTl9MR0FNTUEsCglCVUlMVF9JTl9MR0FNTUFGLCBCVUlMVF9JTl9MR0FNTUFMLCBCVUlMVF9JTl9TSUdOSUZJQ0FORCwKCUJVSUxUX0lOX1NJR05JRklDQU5ERiwgQlVJTFRfSU5fU0lHTklGSUNBTkRMLCBCVUlMVF9JTl9UR0FNTUEsCglCVUlMVF9JTl9UR0FNTUFGLCBCVUlMVF9JTl9UR0FNTUFMLCBCVUlMVF9JTl9ZMCwgQlVJTFRfSU5fWTBGLAoJQlVJTFRfSU5fWTBMLCBCVUlMVF9JTl9ZMSwgQlVJTFRfSU5fWTFGLCBCVUlMVF9JTl9ZMUwsCglCVUlMVF9JTl9ZTiwgQlVJTFRfSU5fWU5GLCBCVUlMVF9JTl9ZTkwpOiBOZXcuCgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IG5ldyBidWlsdGlucy4KCjIwMDMtMDgtMjggIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL21rZml4aW5jLnNoOiBSZW1vdmUgc3BlY2lhbCBjYXNlIGNvZGUgZm9yIHVuc3VwcG9ydGVkCgl2YXJpYW50cyBvZiBpPzg2LCBwb3dlcnBjbGUsIGFuZCB0aHVtYi4KCSogZml4aW5jL21rZml4aW5jLnNoOiBSZW1vdmUgc3BlY2lhbCBjYXNlIGNvZGUgZm9yIHVuc3VwcG9ydGVkCglhcm0gYW5kIGhwcGEgdmFyaWFudHMuCgoyMDAzLTA4LTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGluLXR5cGVzLmRlZiAoQlRfRk5fSU5UX0ZMT0FULCBCVF9GTl9JTlRfRE9VQkxFLAoJQlRfRk5fSU5UX0xPTkdET1VCTEUsIEJUX0ZOX0xPTkdfRkxPQVQsIEJUX0ZOX0xPTkdfRE9VQkxFLAoJQlRfRk5fTE9OR19MT05HRE9VQkxFLCBCVF9GTl9MT05HTE9OR19GTE9BVCwKCUJUX0ZOX0xPTkdMT05HX0RPVUJMRSwgQlRfRk5fTE9OR0xPTkdfTE9OR0RPVUJMRSwKCUJUX0ZOX0ZMT0FUX0ZMT0FUX0xPTkdET1VCTEUsIEJUX0ZOX0RPVUJMRV9ET1VCTEVfTE9OR0RPVUJMRSwKCUJUX0ZOX0ZMT0FUX0ZMT0FUX0lOVCwgQlRfRk5fRE9VQkxFX0RPVUJMRV9JTlQsCglCVF9GTl9MT05HRE9VQkxFX0xPTkdET1VCTEVfSU5ULCBCVF9GTl9GTE9BVF9GTE9BVF9MT05HLAoJQlRfRk5fRE9VQkxFX0RPVUJMRV9MT05HLCBCVF9GTl9MT05HRE9VQkxFX0xPTkdET1VCTEVfTE9ORywKCUJUX0ZOX0ZMT0FUX0ZMT0FUX0ZMT0FUX0ZMT0FULCBCVF9GTl9ET1VCTEVfRE9VQkxFX0RPVUJMRV9ET1VCTEUsCglCVF9GTl9MT05HRE9VQkxFX0xPTkdET1VCTEVfTE9OR0RPVUJMRV9MT05HRE9VQkxFKTogTmV3LgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9BQ09TLCBCVUlMVF9JTl9BQ09TRiwgQlVJTFRfSU5fQUNPU0gsCglCVUlMVF9JTl9BQ09TSEYsIEJVSUxUX0lOX0FDT1NITCwgQlVJTFRfSU5fQUNPU0wsIEJVSUxUX0lOX0FTSU4sCglCVUlMVF9JTl9BU0lORiwgQlVJTFRfSU5fQVNJTkgsIEJVSUxUX0lOX0FTSU5IRiwgQlVJTFRfSU5fQVNJTkhMLAoJQlVJTFRfSU5fQVNJTkwsIEJVSUxUX0lOX0FUQU5ILCBCVUlMVF9JTl9BVEFOSEYsIEJVSUxUX0lOX0FUQU5ITCwKCUJVSUxUX0lOX0NCUlQsIEJVSUxUX0lOX0NCUlRGLCBCVUlMVF9JTl9DQlJUTCwgQlVJTFRfSU5fQ09QWVNJR04sCglCVUlMVF9JTl9DT1BZU0lHTkYsIEJVSUxUX0lOX0NPUFlTSUdOTCwgQlVJTFRfSU5fQ09TSCwKCUJVSUxUX0lOX0NPU0hGLCBCVUlMVF9JTl9DT1NITCwgQlVJTFRfSU5fRFJFTSwgQlVJTFRfSU5fRFJFTUYsCglCVUlMVF9JTl9EUkVNTCwgQlVJTFRfSU5fRVhQMTAsIEJVSUxUX0lOX0VYUDEwRiwgQlVJTFRfSU5fRVhQMTBMLAoJQlVJTFRfSU5fRVhQMiwgQlVJTFRfSU5fRVhQMkYsIEJVSUxUX0lOX0VYUDJMLCBCVUlMVF9JTl9FWFBNMSwKCUJVSUxUX0lOX0VYUE0xRiwgQlVJTFRfSU5fRVhQTTFMLCBCVUlMVF9JTl9GRElNLCBCVUlMVF9JTl9GRElNRiwKCUJVSUxUX0lOX0ZESU1MLCBCVUlMVF9JTl9GTUEsIEJVSUxUX0lOX0ZNQUYsIEJVSUxUX0lOX0ZNQUwsCglCVUlMVF9JTl9GTUFYLCBCVUlMVF9JTl9GTUFYRiwgQlVJTFRfSU5fRk1BWEwsIEJVSUxUX0lOX0ZNSU4sCglCVUlMVF9JTl9GTUlORiwgQlVJTFRfSU5fRk1JTkwsIEJVSUxUX0lOX0hZUE9ULCBCVUlMVF9JTl9IWVBPVEYsCglCVUlMVF9JTl9IWVBPVEwsIEJVSUxUX0lOX0lMT0dCLCBCVUlMVF9JTl9JTE9HQkYsIEJVSUxUX0lOX0lMT0dCTCwKCUJVSUxUX0lOX0xERVhQLCBCVUlMVF9JTl9MREVYUEYsIEJVSUxUX0lOX0xERVhQTCwgQlVJTFRfSU5fTExSSU5ULAoJQlVJTFRfSU5fTExSSU5URiwgQlVJTFRfSU5fTExSSU5UTCwgQlVJTFRfSU5fTExST1VORCwKCUJVSUxUX0lOX0xMUk9VTkRGLCBCVUlMVF9JTl9MTFJPVU5ETCwgQlVJTFRfSU5fTE9HMTAsCglCVUlMVF9JTl9MT0cxMEYsIEJVSUxUX0lOX0xPRzEwTCwgQlVJTFRfSU5fTE9HMVAsIEJVSUxUX0lOX0xPRzFQRiwKCUJVSUxUX0lOX0xPRzFQTCwgQlVJTFRfSU5fTE9HMiwgQlVJTFRfSU5fTE9HMkYsIEJVSUxUX0lOX0xPRzJMLAoJQlVJTFRfSU5fTE9HQiwgQlVJTFRfSU5fTE9HQkYsIEJVSUxUX0lOX0xPR0JMLCBCVUlMVF9JTl9MUklOVCwKCUJVSUxUX0lOX0xSSU5URiwgQlVJTFRfSU5fTFJJTlRMLCBCVUlMVF9JTl9MUk9VTkQsCglCVUlMVF9JTl9MUk9VTkRGLCBCVUlMVF9JTl9MUk9VTkRMLCBCVUlMVF9JTl9ORVhUQUZURVIsCglCVUlMVF9JTl9ORVhUQUZURVJGLCBCVUlMVF9JTl9ORVhUQUZURVJMLCBCVUlMVF9JTl9ORVhUVE9XQVJELAoJQlVJTFRfSU5fTkVYVFRPV0FSREYsIEJVSUxUX0lOX05FWFRUT1dBUkRMLCBCVUlMVF9JTl9QT1cxMCwKCUJVSUxUX0lOX1BPVzEwRiwgQlVJTFRfSU5fUE9XMTBMLCBCVUlMVF9JTl9SRU1BSU5ERVIsCglCVUlMVF9JTl9SRU1BSU5ERVJGLCBCVUlMVF9JTl9SRU1BSU5ERVJMLCBCVUlMVF9JTl9SSU5ULAoJQlVJTFRfSU5fUklOVEYsIEJVSUxUX0lOX1JJTlRMLCBCVUlMVF9JTl9TQ0FMQiwgQlVJTFRfSU5fU0NBTEJGLAoJQlVJTFRfSU5fU0NBTEJMLCBCVUlMVF9JTl9TQ0FMQkxOLCBCVUlMVF9JTl9TQ0FMQkxORiwKCUJVSUxUX0lOX1NDQUxCTE5MLCBCVUlMVF9JTl9TQ0FMQk4sIEJVSUxUX0lOX1NDQUxCTkYsCglCVUlMVF9JTl9TQ0FMQk5MLCBCVUlMVF9JTl9TSU5ILCBCVUlMVF9JTl9TSU5IRiwgQlVJTFRfSU5fU0lOSEwsCglCVUlMVF9JTl9UQU5ILCBCVUlMVF9JTl9UQU5IRiwgQlVJTFRfSU5fVEFOSEwpOiBOZXcuCgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IG5ldyBidWlsdGlucy4KCjIwMDMtMDgtMjggIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAobGVnaXRtYXRlX2NvbnN0YW50X3ApOiBVc2UgTEFSTCBvbgoJelNlcmllcyBtYWNoaW5lcyBldmVuIGluIDMxLWJpdCBhZGRyZXNzaW5nIG1vZGUuCgkobGVnaXRpbWF0ZV9yZWxvYWRfY29uc3RhbnRfcCk6IExpa2V3aXNlLgoJKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBMaWtld2lzZS4KCShsZWdpdGltaXplX3Rsc19hZGRyZXNzKTogTGlrZXdpc2UuCgkoczM5MF9zcGxpdF9icmFuY2hlcyk6IExpa2V3aXNlLgoJKHMzOTBfZHVtcF9wb29sKTogTGlrZXdpc2UuCgkoczM5MF9tYWlucG9vbF9maW5pc2gpOiBMaWtld2lzZS4KCShzMzkwX2NodW5raWZ5X3N0YXJ0KTogTGlrZXdpc2UuCgkoczM5MF9zZWxlY3RfcnR4X3NlY3Rpb24pOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoImRvbG9vcF9zaSIpOiBMaWtld2lzZS4KCSgicG9vbF9zdGFydF8zMSIsICJwb29sX2VuZF8zMSIpOiBMaWtld2lzZS4KCSgicG9vbF9zdGFydF82NCIsICJwb29sX2VuZF82NCIpOiBMaWtld2lzZS4KCSgibWFpbl9iYXNlXzMxX3NtYWxsIiwgIm1haW5fYmFzZV8zMV9sYXJnZSIpOiBMaWtld2lzZS4KCSgibWFpbl9iYXNlXzY0Iik6IExpa2V3aXNlLgoJKCJyZWxvYWRfYmFzZV8zMSIsICJyZWxvYWRfYmFzZV82NCIpOiBMaWtld2lzZS4KCSgiKm1vdnNpX2xhcmwiKTogTmV3IGluc24uCgkoImNqdW1wIiwgImljanVtcCIpOiBVc2UgbG9uZyBicmFuY2hlcyBvbiB6U2VyaWVzIG1hY2hpbmVzLgoJKCJqdW1wIik6IExpa2V3aXNlLgoJKCJjYWxsIik6IFVzZSBCUkFTTCBvbiB6U2VyaWVzIG1hY2hpbmVzLgoJKCJjYWxsX3ZhbHVlIiwgImNhbGxfdmFsdWVfdGxzIik6IExpa2V3aXNlLgoJKCJicmFzbCIsICJicmFzIiwgImJhc3JfNjQiLCAiYmFzcl8zMSIsICJiYXNfNjQiLCAiYmFzXzMxIik6IFJlbW92ZQoJYW5kIHJlcGxhY2UgYnkgLi4uCgkoIipicmFzIiwgIipicmFzbCIsICIqYmFzciIpIC4uLiB0aGVzZSBuZXcgaW5zbnMuCgkoImJyYXNsX3IiLCAiYnJhc19yIiwgImJhc3JfNjRfciIsICJiYXNyXzMxX3IiLCAiYmFzXzY0X3IiLAoJImJhc18zMV9yIik6IFJlbW92ZSBhbmQgcmVwbGFjZSBieSAuLi4KCSgiKmJyYXNfciIsICIqYnJhc2xfciIsICIqYmFzcl9yIikgLi4uIHRoZXNlIG5ldyBpbnNucy4KCSgiYnJhc2xfdGxzIiwgImJyYXNfdGxzIiwgImJhc3JfNjRfdGxzIiwgImJhc3JfMzFfdGxzIiwKCSJiYXNfNjRfdGxzIiwgImJhc18zMV90bHMiKTogUmVtb3ZlIGFuZCByZXBsYWNlIGJ5IC4uLgoJKCIqYnJhc190bHMiLCAiKmJyYXNsX3RscyIsICIqYmFzcl90bHMiKSAuLi4gdGhlc2UgbmV3IGluc25zLgoJKCIqcmV0dXJuX3NpIiwgIipyZXR1cm5fZGkiKTogUmVtb3ZlIGFuZCByZXBsYWNlIGJ5IC4uLgoJKCIqcmV0dXJuIik6IC4uLiB0aGlzIG5ldyBpbnNuLgoJKCJyb3Rsc2kzIik6IEFsbG93IG9uIHpTZXJpZXMgbWFjaGluZXMuCgoJKiBjb25maWcvczM5MC9zMzkwLmMgKGxlZ2l0aW1pemVfcmVsb2FkX2NvbnN0YW50X3ApOiBVc2UKCUxML0xIIHR5cGUgaW5zdHJ1Y3Rpb25zIGluIHovQXJjaGl0ZWN0dXJlIG1vZGUuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqbW92c2lfbGxpIik6IExpa2V3aXNlLgoJKCIqYW5kc2kzX25pIiwgIiphbmRoaTNfbmkiLCAiKmFuZHFpM19uaSIpOiBMaWtld2lzZS4KCSgiKmlvcnNpM19uaSIsICIqaW9yaGkzX25pIiwgIippb3JxaTNfbmkiKTogTGlrZXdpc2UuCgkoIipleHRlbmRxaXNpMiIpOiBVc2UgTEIgaW4gei9BcmNoaXRlY3R1cmUgbW9kZS4KCSgiKnplcm9fZXh0ZW5kcWlzaTJfNjQiLCAiKnplcm9fZXh0ZW5kcWlzaTJfMzEiKTogVXNlIExMR0MgaW4KCXovQXJjaGl0ZWN0dXJlIG1vZGUuCgkoInplcm9fZXh0ZW5kcWloaTIiLCAiKnplcm9fZXh0ZW5kcWloaTJfNjQiLCAiKnplcm9fZXh0ZW5kcWloaTJfMzEiKToKCUxpa2V3aXNlLgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIip0bWRpX2V4dCIpOiBBbGxvdyBpbiBib3RoIDY0LWJpdAoJYW5kIDMxLWJpdCBtb2RlLgoJKCJwdHJfZXh0ZW5kIik6IEFsbG93IG9ubHkgaW4gNjQtYml0IG1vZGUuCgoyMDAzLTA4LTI3ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGdjYy5jIChTVEFOREFSRF9FWEVDX1BSRUZJWCwgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWCkKCShUT09MRElSX0JBU0VfUFJFRklYLCBTVEFOREFSRF9CSU5ESVJfUFJFRklYKTogUmVtb3ZlIHVubmVjZXNzYXJ5CglkZWZpbml0aW9ucy4KCShtYWluKTogT25seSB1c2Ugc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCBpZiBuYXRpdmUuCgkqIGRvYy90bS50ZXhpIChTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYKTogVXBkYXRlLgoKMjAwMy0wOC0yNyAgUGVyIEJvdGhuZXIgIDxwYm90aG5lckBhcHBsZS5jb20+CgoJKiBjcHBlcnJvci5jIChwcmludF9sb2NhdGlvbik6ICBEb24ndCBjaGVjayBmb3IgIXBmaWxlLT5idWZmZXIuICBUaGF0Cgl0ZXN0IGZhaWxzIGZvbGxvd2luZyBteSAwOC0yMSBjaGFuZ2UsIGFuZCBpdCBzZWVtcyB1bm5lY2Vzc2FyeSBhbnl3YXkuCgkoY3BwX2Vycm9yKTogIExpa2V3aXNlLgoKMjAwMy0wOC0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiByZWFsLmMgKGRvX211bHRpcGx5KTogSW5pdGlhbGl6ZSB3aXRoIG1lbXNldC4KCjIwMDMtMDgtMjcgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGdjb3YuYyAodHlwZWRlZiBzdHJ1Y3QgYXJjX2luZm8pOiBOZXcgZmllbGQgY3NfY291bnQuCgkoYWNjdW11bGF0ZV9saW5lX2NvdW50cyk6IEZpbmQgY3ljbGVzIGNvcnJlY3RseS4KCjIwMDMtMDgtMjcgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBSZW1vdmUgbWVtYmVyCglsaXRlcmFsX3Bvb2xfbGFiZWwuCgkoczM5MF9vcHRpbWl6ZV9wcm9sb2cpOiBSZXBsYWNlIFRFTVBfUkVHIGFyZ3VtZW50IHdpdGgKCVRFTVBfVVNFRCBhbmQgQkFTRV9VU0VELiAgRG8gbm90IGNoZWNrIGdldF9wb29sX3NpemUgKCkuCgkoZ2VuZXJhbF9zX29wZXJhbmQpOiBBY2NlcHQgYWxsIGltbWVkaWF0ZXMgYmVmb3JlIHJlbG9hZCBpZgoJQUxMT1dfSU1NRURJQVRFLiAgSWYgbm90IEFMTE9XX0lNTUVESUFURSwgcmVqZWN0IGxpdGVyYWwgcG9vbAoJcmVmZXJlbmNlcy4KCShzMzkwX291dHB1dF9zeW1ib2xpY19jb25zdCk6IFJlbW92ZSBVTlNQRUNfTFRSRUxfT0ZGU0VUIGhhbmRsaW5nLgoJKGZpbmRfY29uc3RhbnRfcG9vbF9yZWYpOiBJZ25vcmUgVU5TUEVDVl9QT09MX0VOVFJZIGluc25zLgoJKHMzOTBfYWxsb2NfcG9vbCk6IE5ldyBmdW5jdGlvbi4KCShzMzkwX25ld19wb29sKTogQ2FsbCBpdC4KCShzMzkwX2R1bXBfcG9vbCk6IEFkZCBSRU1PVEVfTEFCRUwgYXJndW1lbnQuCgkoczM5MF9jaHVua2lmeV9zdGFydCk6IEFkZCBCQVNFX1JFRyBhcmd1bWVudC4gIERvIG5vdCBjaGVjawoJZ2V0X3Bvb2xfc2l6ZSAoKS4KCShzMzkwX2NodW5raWZ5X2ZpbmlzaCk6IEFkZCBCQVNFX1JFRyBhcmd1bWVudC4gIEFkYXB0CglzMzkwX2R1bXBfcG9vbCBjYWxsLgoJKHMzOTBfcG9vbF9jb3VudCwgczM5MF9ucl9jb25zdGFudHMpOiBSZW1vdmUuCgkoczM5MF9vdXRwdXRfY29uc3RhbnRfcG9vbCk6IFJlbW92ZS4KCShzMzkwX21haW5wb29sX3N0YXJ0KTogTmV3IGZ1bmN0aW9uLgoJKHMzOTBfbWFpbnBvb2xfZmluaXNoKTogTmV3IGZ1bmN0aW9uLgoJKHMzOTBfbWFpbnBvb2xfY2FuY2VsKTogTmV3IGZ1bmN0aW9uLgoJKHMzOTBfcmVvcmcpOiBJbXBsZW1lbnQgbWFpbiBsaXRlcmFsIHBvb2wgaGFuZGxpbmcuCgkoczM5MF9lbWl0X3Byb2xvZ3VlKTogRW1pdCBtYWluX3Bvb2wgcGxhY2Vob2xkZXIgaW5zdGVhZCBvZgoJbGl0ZXJhbF9wb29sXzMxIC8gbGl0ZXJhbF9wb29sXzY0IGluc25zLgoJKiBjb25maWcvczM5MC9zMzkwLmggKHMzOTBfcG9vbF9jb3VudCwgczM5MF9ucl9jb25zdGFudHMpOiBSZW1vdmUuCgkoQVNNX09VVFBVVF9QT09MX1BST0xPR1VFLCBBU01fT1VUUFVUX1NQRUNJQUxfUE9PTF9FTlRSWSk6IFJlbW92ZS4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoVU5TUEVDX01BSU5fQkFTRSk6IE5ldyBzeW1ib2xpYyBjb25zdGFudC4KCSgibWFpbl9iYXNlXzMxX3NtYWxsIiwgIm1haW5fYmFzZV8zMV9sYXJnZSIpOiBOZXcgaW5zbnMuCgkoIm1haW5fYmFzZV82NCIsICAibWFpbl9wb29sIik6IE5ldyBpbnNucy4KCSgibGl0ZXJhbF9wb29sXzMxIiwgImxpdGVyYWxfcG9vbF82NCIpOiBSZW1vdmUuCgoyMDAzLTA4LTI3ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHB0eF9uZXRzd2FwKTogTmV3IGRpc2FibGVkIGZpeCwgcG9ydGVkIGZyb20KCWZpeGluYy5wdHguCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHVuZGVmaW5lX251bGwpOiAgRG9uJ3QgZ2VuZXJhdGUgXHIgY2hhcmFjdGVycy4KCVByZXR0aWZ5IGEgbGl0dGxlLgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoKMjAwMy0wOC0yNyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBsaWIxZnVuY3MuYXNtIChMX2llZWU3NTRfc3ApOiBOZXcuICBJbmNsdWRlIGllZWU3NTQtc2YuUy4KCShMX2llZWU3NTRfZHApOiBOZXcuICBJbmNsdWRlIGllZWU3NTQtZGYuUy4KCSogYXJtL2llZWU3NTQtc2YuUzogUmV3b3JrIHRvIGFsbG93IGludGVyd29ya2luZywgY2FsbGluZyBmcm9tIFRodW1iLAoJYW5kIGNvbXBpbGF0aW9uIGluIGFwY3MtMjYgbW9kZS4KCSogYXJtL2llZWU3NTQtZGYuUzogTGlrZXdpc2UuCgkqIHQtYXJtLWVsZiAoRFBCSVQsIEZQQklULCBmcC1iaXQuYyBkcC1iaXQuYyk6IERlbGV0ZSBydWxlcwoJKExJQjFBU01GVU5DUyk6IEFkZCBfaWVlZTc1NF9zcCBhbmQgX2llZWU3NTRfZHAgdGFyZ2V0cy4KCjIwMDMtMDgtMjcgIE5pY29sYXMgUGl0cmUgIDxuaWNvQGNhbS5vcmc+CgoJKiBhcm0vaWVlZTc1NC1zZi5TOiBOZXcuCgkqIGFybS9pZWVlNzU0LWRmLlM6IE5ldy4KCjIwMDMtMDgtMjcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fZXhwZWN0X2p1bXApOiBTYXZlIHBlbmRpbmdfc3RhY2tfYWRqdXN0CglhbmQgcmVzdG9yZSBpdCBpZiByZXR1cm5pbmcgTlVMTC4KCjIwMDMtMDgtMjcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKGluaXRpYWxpemVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBJZiBhbiBhcmd1bWVudCBoYXMgbm8KCXN0YWNrIHNwYWNlIGFzc29jaWF0ZWQgd2l0aCBpdCwgYW5kIEJMT0NLX1JFR19QQURESU5HIGlzIGRlZmluZWQsCgl1c2UgaXQgdG8gZGVjaWRlIGF0IHdoaWNoIGVuZCB0aGUgYXJndW1lbnQgc2hvdWxkIGJlIHBhZGRlZC4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogQWxsb2NhdGUgQkxLbW9kZSBzdGFjayBzbG90cy4KCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19wYWRfYXJnX3Vwd2FyZCk6IERlY2xhcmUuCgkobWlwc19wYWRfcmVnX3Vwd2FyZCk6IERlY2xhcmUuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoUEFEX1ZBUkFSR1NfRE9XTik6IFVzZSBGVU5DVElPTl9BUkdfUEFERElORy4KCShDVU1VTEFUSVZFX0FSR1MpOiBSZW1vdmUgbnVtX2FkanVzdHMgYW5kIGFkanVzdHMuCgkoRlVOQ1RJT05fQVJHX1BBRERJTkcpOiBVc2UgbWlwc19wYWRfYXJnX3Vwd2FyZC4KCShCTE9DS19SRUdfUEFERElORyk6IFVzZSBtaXBzX3BhZF9yZWdfdXB3YXJkLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKHN0cnVjdCBtaXBzX2FyZ19pbmZvKTogUmVtb3ZlIHN0cnVjdF9wLgoJKG1pcHNfZXhwYW5kX2NhbGwpOiBSZW1vdmUgY29kZSBmb3IgZ2VuZXJhdGluZyBzdHJ1Y3R1cmUgc2hpZnRzLgoJKG1pcHNfYXJnX2luZm8pOiBEb24ndCBzZXQgc3RydWN0X3AuICBEb24ndCBzZXQgZnByX3AgZm9yIG5vbi1mbG9hdAoJdHlwZXMgdW5sZXNzIHVzaW5nIHRoZSBFQUJJLgoJKGZ1bmN0aW9uX2FyZ19hZHZhbmNlKTogRG9uJ3QgZ2VuZXJhdGUgc2hpZnQgaW5zdHJ1Y3Rpb25zLgoJKGZ1bmN0aW9uX2FyZyk6IERvbid0IHJldHVybiB0aGVtLiAgRG9uJ3Qgc2hvcnQtY2lyY3VpdCB0aGUKCWNoZWNrIGZvciBkb3VibGUgc3RydWN0dXJlIGNodW5rcyBmb3IgREZtb2RlIGFyZ3VtZW50cy4KCShtaXBzX3BhZF9hcmdfdXB3YXJkLCBtaXBzX3BhZF9yZWdfdXB3YXJkKTogTmV3IGZ1bmN0aW9ucy4KCShtaXBzX2V4cGFuZF9wcm9sb2d1ZSk6IFJlbW92ZSBjb2RlIHRvIGVtaXQgc3RydWN0dXJlIHNoaWZ0cy4KCSogY29uZmlnL21pcHMvaXJpeDYtbGliYy1jb21wYXQuYzogUmVtb3ZlIHdvcmthcm91bmRzIGZvciBidWdneQoJc3RydWN0dXJlIHBhc3NpbmcgKGluZXRfbnRvYSwgaW5ldF9sbmFvZiwgaW5ldF9uZXRvZikuICBVcGRhdGUKCWNvbW1lbnRzIHRvIHNheSB0aGF0IG9ubHkgc3RydWN0dXJlIHJldHVybnMgYXJlIGEgcHJvYmxlbS4KCjIwMDMtMDgtMjYgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL3Rlc3RzL2Jhc2Uvc3RyaW5nLmgsIGZpeGluYy90ZXN0cy9iYXNlL3N5cy9yZWdzZXQuaDoKCUZpeCB0byBtYXRjaCBwcm9kdWNlZCB2ZXJzaW9ucy4KCSogZml4aW5jL2luY2xoYWNrLmRlZiAobG9uZ2xvbmdfdCk6IE5ldyBkaXNhYmxlZCB0ZXN0LCBwb3J0ZWQKCWZyb20gZml4aW5jLnN2cjQuCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHB0eF9wd2RfaCk6IE5ldyBkaXNhYmxlZCBmaXgsIHBvcnRlZAoJZnJvbSBmaXhpbmMucHR4LgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChwdHhfc3lzX21jX3BhcmFtX2gpOiBOZXcgZGlzYWJsZWQgZml4LAoJcG9ydGVkIGZyb20gZml4aW5jLnB0eC4KCjIwMDMtMDgtMjYgIFBlciBCb3RobmVyICA8cGJvdGhuZXJAYXBwbGUuY29tPgoKCSogY3BwbGliLmggKHN0cnVjdCBjcHBfdG9rZW4pOiAgQ2hhbmdlIHR5cGUgb2YgZmllbGQgbGluZSB0byBmaWxlbGluZS4KCShjcHBfZXJyb3Jfd2l0aF9saW5lKTogIFVzZSBmaWxlbGluZSBmb3IgYXBwcm9wcmlhdGUgcGFyYW1ldGVyLgoJKiBjcHBoYXNoLmggKHN0cnVjdCBjcHBfbWFjcm8pOiAgQ2hhbmdlIHR5cGUgb2YgZmllbGQgbGluZSB0byBmaWxlbGluZS4KCShzdHJ1Y3QgY3BwX3JlYWRlcik6ICBMaWtld2lzZSBmb3IgZmllbGRzIGxpbmUgYW5kIGRpcmVjdGl2ZV9saW5lLgoJKF9jcHBfYmVnaW5fbWVzc2FnZSk6ICBVc2UgZmlsZWxpbmUgZm9yIGFwcHJvcHJpYXRlIHBhcmFtZXRlci4KCSogY3BwZXJyb3IuYyAocHJpbnRfbG9jYXRpb24sIF9jcHBfYmVnaW5fbWVzc2FnZSwgY3BwX2Vycm9yX3dpdGhfbGluZSwKCWNwcF9lcnJvcik6ICBVc2UgZmlsZWxpbmUgZm9yIGFwcHJvcHJpYXRlIHBhcmFtZXRlcnMgYW5kIHZhcmlhYmxlcy4KCShwcmludF9sb2NhdGlvbik6ICBOZXcgbG9jYWwgbGluLCBzaW5jZSBpdCBpcyBub3QgYSBmaWxlbGluZS4KCjIwMDMtMDgtMjYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTIwMDIKCSogdHJlZS5oIChTQ0FMQVJfRkxPQVRfVFlQRV9QLCBDT01QTEVYX0ZMT0FUX1RZUEVfUCk6IE5ldyBtYWNyb3MuCgkoRkxPQVRfVFlQRV9QKTogRGVmaW5lIGluIHRlcm1zIG9mIHRoZXNlIHR3byBuZXcgbWFjcm9zLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQgPFBMVVNfRVhQUj4pOiBEb24ndCBjb252ZXJ0IHgreCBpbnRvIHgqMi4wCglmb3IgY29tcGxleCBmbG9hdGluZyBwb2ludCB0eXBlcy4KCjIwMDMtMDgtMjYgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoZW1pdF9wcm9sb2d1ZSk6IERvbid0IGNoZWNrIGxpdGVyYWwgcG9vbCBzaXplLgoJKiBjb25maWcvczM5MC9zMzkwLmggKEFTTV9PVVRQVVRfU1BFQ0lBTF9QT09MX0VOVFJZKTogQ2FsbAoJczM5MF9vdXRwdXRfcG9vbF9lbnRyeS4KCjIwMDMtMDgtMjYgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoc3ZyNF9wcmVwcm9jX2xpbnRfb24sCglzdnI0X3ByZXByb2NfbGludF9vZmYsIHN2cjRfcHJlcHJvY19tYWNoaW5lKTogTmV3IGRpc2FibGVkCglmaXhlcywgcG9ydGVkIGZyb20gZml4aW5jLnN2cjQuCgoyMDAzLTA4LTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2luc3RhbGwudGV4aSAoUHJlcmVxdWlzaXRlcyk6IE1lbnRpb24gR05VIG1ha2UgcmVxdWlyZW1lbnQuCgoJKiBNYWtlZmlsZS5pbiAoQVJfRk9SX1RBUkdFVCk6IEV4cG9ydCBpdC4KCShBUl9DUkVBVEVfRk9SX1RBUkdFVCk6IExpa2V3aXNlLgoJKEFSX0ZMQUdTX0ZPUl9UQVJHRVQpOiBMaWtld2lzZS4KCShBUl9FWFRSQUNUX0ZPUl9UQVJHRVQpOiBMaWtld2lzZS4KCShBV0spOiBMaWtld2lzZS4KCShCVUlMRF9QUkVGSVgpOiBMaWtld2lzZS4KCShCVUlMRF9QUkVGSVhfMSk6IExpa2V3aXNlLgoJKERFU1RESVIpOiBMaWtld2lzZS4KCShHQ0NfRk9SX1RBUkdFVCk6IExpa2V3aXNlLgoJKElOQ0xVREVTKTogTGlrZXdpc2UuCgkoSU5TVEFMTF9EQVRBKTogTGlrZXdpc2UuCgkoTElCMUFTTVNSQyk6IExpa2V3aXNlLgoJKExJQkdDQzJfQ0ZMQUdTKTogTGlrZXdpc2UuCgkoTUFDSE1PREVfSCk6IExpa2V3aXNlLgoJKE5NX0ZPUl9UQVJHRVQpOiBMaWtld2lzZS4KCShSQU5MSUJfRk9SX1RBUkdFVCk6IExpa2V3aXNlLgoJKGxpYnN1YmRpcik6IExpa2V3aXNlLgoJKHNsaWJkaXIpOiBMaWtld2lzZS4KCShPUkRJTkFSWV9GTEFHU19UT19QQVNTKTogUmVtb3ZlIHN0dWZmIHRoYXQgd2UncmUKCWV4cG9ydGluZy4KCShsaWJnY2MuYSk6IERvbid0IHBhc3MgdGhlbSBoZXJlLgoJKHN0bXAtbXVsdGlsaWIpOiBPciBoZXJlLgoJKGluc3RhbGwtbGliZ2NjKTogT3IgaGVyZS4KCShpbnN0YWxsLW11bHRpbGliKTogT3IgaGVyZS4KCShQT1NUU1RBR0UxX0ZMQUdTX1RPX1BBU1MpOiBPciBoZXJlLgoJKHN0YWdlMV9idWlsZCk6IE9yIGhlcmUuCgoyMDAzLTA4LTI2ICBBbmRyZWFzIEtyZWJiZWwgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKmxsZ3Rfc2lzaSIsICIqbGxndF9zaXNpX3NwbGl0IiwgIipsbGd0X2RpZGkiLAoJIipsbGd0X2RpZGlfc3BsaXQiLCAiKmxsZ3Rfc2lkaSIsICIqbGxndF9zaWRpX3NwbGl0Iik6IE5ldyBpbnNucy4KCjIwMDMtMDgtMjYgIEFuZHJlYXMgS3JlYmJlbCA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCIqZm1hZGRkZiIsICIqZm1zdWJkZiIsCgkiKmZtYWRkc2YiLCAiKmZtc3Vic2YiKTogTmV3IGluc25zLgoKMjAwMy0wOC0yNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQgPE1VTFRfRVhQUj4pOiBPcHRpbWl6ZSAoQzEvWCkqQzIgaW50bwoJKEMxKkMyKS9YIHdoZW4gdW5zYWZlIG1hdGggb3B0aW1pemF0aW9ucyBhcmUgYWxsb3dlZC4KCShmb2xkIDxSRElWX0VYUFI+KTogT3B0aW1pemUgQzEvKFgqQzIpIGludG8gKEMxL0MyKS9YIHdpdGggdW5zYWZlCgltYXRoIG9wdGltaXphdGlvbnMuICBNaW5vciBjb2RlIGNsZWFuLXVwcy4gIFJlY3Vyc2l2ZWx5IGNhbGwKCWZvbGQgd2hlbiBjb25zdHJ1Y3Rpbmcgc3ViLWV4cHJlc3Npb25zLgoKMjAwMy0wOC0yNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fYml0b3ApOiBOZXcgZnVuY3Rpb24gdG8gcGVyZm9ybSBjb25zdGFudAoJZm9sZGluZyBvZiBmZnMsIGNseiwgY3R6LCBwb3Bjb3VudCBhbmQgcGFyaXR5IGJ1aWx0aW4gZnVuY3Rpb25zCglhbmQgdGhlaXIgbG9uZyBhbmQgbG9uZyBsb25nIHZhcmlhbnRzIChzdWNoIGFzIGZmc2wgYW5kIGZmc2xsKS4KCShmb2xkX2J1aWx0aW4pOiBmb2xkX2J1aWx0aW5fYml0b3Agd2hlbiBhcHByb3ByaWF0ZS4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbik6IEhvbm9yIGJvdGgKCUNMWl9ERUZJTkVEX1ZBTFVFX0FUX1pFUk8gYW5kIENUWl9ERUZJTkVEX1ZBTFVFX0FUX1pFUk8gd2hlbgoJZXZhbHVhdGluZyBjbHogYW5kIGN0eiBhdCBjb21waWxlLXRpbWUsIGZvciBvcGVyYW5kcyB3aWRlcgoJdGhhbiBIT1NUX1dJREVfSU5ULgoKMjAwMy0wOC0yNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfZXhwcik6IERvbid0IHNldAoJVFJFRV9TSURFX0VGRkVDVFMgaGVyZS4KCSogZXhwci5jIChlbWl0X2Jsb2NrX21vdmVfdmlhX2xpYmNhbGwpOiBMaWtld2lzZS4KCShjbGVhcl9zdG9yYWdlX3ZpYV9saWJjYWxsKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoYnVpbGQpOiBTZXQgVFJFRV9TSURFX0VGRkVDVFMgZm9yIG5vbi1jb25zdCwgbm9uLXB1cmUKCUNBTExfRVhQUnMuCgoJKiBnY3NlLmMgKGlzX3Rvb19leHBlbnNpdmUpOiBOZXcgZnVuY3Rpb24uCgkoZ2NzZV9tYWluLCBkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcywgYnlwYXNzX2p1bXBzKTogVXNlIGl0LgoKMjAwMy0wOC0yNSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy5nY2MgKGhwcGEqLSotaHB1eDExKiwgaWE2NCotKi1ocHV4Kik6IFJlbW92ZQoJY29tbWVudGVkLW91dCBsb2dpYyB0byB1c2UgRENFIHRocmVhZHMgKGlmIHByZXNlbnQpLCBhZGQKCXN1cHBvcnQgZm9yIFBPU0lYIHRocmVhZHMuCgkqIGNvbmZpZy9pYTY0L2hwdXguaDogRGVmaW5lIENQUF9TUEVDIHRvIHNldCBhcHByb3ByaWF0ZQoJI2RlZmluZXMgZm9yIC1wdGhyZWFkLiAgQWRkIC1scHRocmVhZCB0byBMSUJfU1BFQyB3aGVuCgktcHRocmVhZC4gIEluIGJvdGggY2FzZXMgdGFrZSAtbXQgYXMgYSBzeW5vbnltIGZvciAtcHRocmVhZAoJZm9yIGFjYyBjb21wYXRpYmlsaXR5LgoJRGVmaW5lIEdUSFJFQURfVVNFX1dFQUsgdG8gMC4KCSogY29uZmlnL3BhL3BhLWhwdXgxMS5oOiBMaWtld2lzZSBmb3IgQ1BQX1NQRUMgYW5kIExJQl9TUEVDLgoJUmVtb3ZlIG9sZCBsb2dpYyBmb3IgRENFIHRocmVhZHMgZnJvbSBMSUJfU1BFQy4KCSogY29uZmlnL3BhL3BhNjQtaHB1eC5oOiBEZWZpbmUgR1RIUkVBRF9VU0VfV0VBSyB0byAwLgoKMjAwMy0wOC0yNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tYXRoZm4pOiAgUmVhcnJhbmdlIHNvIHRoYXQgd2Ugb25seQoJcmV0dXJuIDAgZm9yIGludmFsaWQgYXJndW1lbnQgdHlwZXMuICBJbnN0ZWFkIGRyb3AgdGhyb3VnaCB0byBhCgljYWxsIG9mIGV4cGFuZF9jYWxsIGF0IHRoZSBib3R0b20gb2YgZnVuY3Rpb24uICBJZiBvcCBpcyBTUVJULAoJdHJ5IGF0dGFjaGluZyBhIFNRUlQgcnR4IGFzIHRoZSBSRVFfRVFVQUwgbm90ZSBvZiB0aGUgbGliY2FsbC4KCjIwMDMtMDgtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZXhwYW5kX3Rsc19hZGRyZXNzKTogUHJvcGVybHkgdHJ1bmNhdGUKCXJlc3VsdCB3aGVuIG9wMCBpcyBTSW1vZGUuCgoyMDAzLTA4LTI1ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkB0d2NueS5yci5jb20+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChzdnI0X3NpZ2hhbmRsZXJfdHlwZSk6IE5ldyBmaXgsIHBvcnRlZAoJZnJvbSBmaXhpbmMuc3ZyNC4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCSogZml4aW5jL3Rlc3RzL2Jhc2Uvc3lzL3NpZ25hbC5oOiBSZWdlbmVyYXRlLgoKMjAwMy0wOC0yNSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9jb21wYXJpc29uKTogUmUtZW5hYmxlIHdpZGVuaW5nIG9mIGNvbXBhcmlzb25zCgl3aXRoIG5vbi1wYXJhZG94aWNhbCBzdWJyZWdzIG9mIG5vbi1SRUcgZXhwcmVzc2lvbnMuCgoyMDAzLTA4LTI1ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb21iaW5lLmMgKGRpc3RyaWJ1dGVfbm90ZXMpOiBIYW5kbGUgUkVHX0FMV0FZU19SRVRVUk4uCgoyMDAzLTA4LTI1ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb21iaW5lLmMgKGNvbWJpbmVfc2ltcGxpZnlfcnR4KTogRml4IFJUTCBzaGFyaW5nIGJ1Zy4KCjIwMDMtMDgtMjUgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogcHJldHR5LXByaW50LmggKHBwX21heWJlX25ld2xpbmVfYW5kX2luZGVudCk6IE5ldyBtYWNyby4KCSogYy1wcmV0dHktcHJpbnQuaCAoY19wcmV0dHlfcHJpbnRlcik6IE5vdyB0eXBlZGVmIHRvIHRoZQoJc3RydWN0dXJlLiAgQmUgY29uc2lzdGVudCB3aXRoIHByZXR0eS1wcmludC5oIGFiZCBjeHgtcHJldHR5LXByaW50LmgKCShzdHJ1Y3QgY19wcmV0dHlfcHJpbnRfaW5mbyk6IERvY3VtZW50LiAgQWRkIG5ldyBmaWVsZHMuCgkocHBfdHlwZV9zcGVjaWZpZXJfc2VxKTogUmVuYW1lIGZyb20gcHBfY190eXBlX3NwZWNpZmllci4KCShwcF9kaXJlY3RfYWJzdHJhY3RfZGVjbGFyYXRvcik6IE5ldyBtYWNyby4KCShwcF9wdHJfb3BlcmF0b3IpOiBMaWtld2lzZS4KCShwcF9zaW1wbGVfdHlwZV9zcGVjaWZpZXIpOiBMaWtld2lzZS4KCShwcF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfcGFyYW1ldGVyX2xpc3QpOiBSZW5hbWUgZnJvbSBwcF9wYXJhbWV0ZXJfZGVjbGFyYXRpb24uCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2Nfd2hpdGVzcGFjZSk6IE5vdyBhIGZ1bmN0aW9uLgoJKHBwX2NfbGVmdF9wYXJlbik6IExpa2V3aXNlLgoJKHBwX2NfcmlnaHRfcGFyZW4pOiBMaWtld2lzZS4KCShwcF9jX2RvdCk6IExpa2V3aXNlLgoJKHBwX2NfYW1wZXJzYW5kKTogTGlrZXdpc2UuCgkocHBfY19hcnJvdyk6IExpa2V3aXNlLgoJKHBwX2Nfc2VtaWNvbG9uKTogTGlrZXdpc2UuCgkocHBfY190eXBlX2Nhc3QpOiBOZXcgZnVuY3Rpb24uCgkocHBfY19zcGFjZV9mb3JfcG9pbnRlcl9vcGVyYXRvcik6IExpa2V3aXNlLgoJKHBwX2NfY2FsbF9hcmd1bWVudF9saXN0KTogTGlrZXdpc2UuCgkocHBfY19jdl9xdWFsaWZpZXIpOiBBZGp1c3QgcHJvdG90eXBlLgoJKHBwX2NfdHlwZV9xdWFsaWZpZXJfbGlzdCk6IExpa2V3aXNlLgoJKHBwX2NfcG9pbnRlcik6IExpa2V3aXNlLiAgSGFuZGxlIFJFRkVSRU5DRV9UWVBFIGhlcmUuCgkocHBfY190eXBlX3NwZWNpZmllcik6IFJlbmFtZSBmcm9tIHBwX2Nfc2ltcGxlX3R5cGVfc3BlY2lmaWVyLgoJQWRqdXN0IHRvIGZvbGxvdyBzdGFuZGFyZCBncmFtbWFyLgoJKHBwX2Nfc3BlY2lmaWVyX3F1YWxpZmllcl9saXN0KTogQWRqdXNyIHByb3RvdHlwZS4gIEhhbmRsZQoJUkVGRVJFTkNFX1RZUEUuICBUaWR5LgoJKHBwX2NfcGFyYW1ldGVyX3R5cGVfbGlzdCk6IEFkanVzdCBwcm90b3R5cGUuICBUaWR5LgoJKHBwX2NfcGFyYW1ldGVyX2RlY2xhcmF0aW9uKTogUmVtb3ZlLgoJKHBwX2NfYWJzdHJhY3RfZGVjbGFyYXRvcik6IEFkanVzdCBwcm90b3R5cGUuCgkocHBfY19kaXJlY3RfYWJzdHJhY3RfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHBwX2NfdHlwZV9pZCk6IExpa2V3aXNlLgoJKHBwX2Nfc3RvcmFnZV9jbGFzc19zcGVjaWZpZXIpOiBMaWtld2lzZS4KCShwcF9jX2Z1bmN0aW9uX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKHBwX2NfZGVjbGFyYXRpb25fc3BlY2lmaWVycyk6IExpa2V3aXNlLgoJKHBwX2NfZGlyZWN0X2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShwcF9jX2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShwcF9jX2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShwcF9jX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgkocHBfY19hdHRyaWJ1dGVzKTogTGlrZXdpc2UuICBUaWR5LgoJKHBwX2NfZnVuY3Rpb25fZGVmaW5pdGlvbik6IEFkanVzdCBwcm90b3R5cGUuCgkocHBfY19jaGFyKTogTGlrZXdpc2UuCgkocHBfY19zdHJpbmdfbGl0ZXJhbCk6IExpa2V3aXNlLgoJKHBwX2NfaW50ZWdlcl9jb25zdGFudCk6IExpa2V3aXNlLgoJKHBwX2NfY2hhcmFjdGVyX2NvbnN0YW50KTogTGlrZXdpc2UuCgkocHBfY19ib29sX2NvbnN0YW50KTogTGlrZXdpc2UuCgkocHBfY19lbnVtZXJhdGlvbl9jb25zdGFudCk6IExpa2V3aXNlLgoJKHBwX2NfZmxvYXRpbmdfY29uc3RhbnQpOiBMaWtld2lzZS4KCShwcF9jX2NvbnN0YW50KTogTGlrZXdpc2UuCgkocHBfY19pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkocHBfY19wcmltYXJ5X2V4cHJlc3Npb24pOiBMaWtld2lzZS4gIFJlbW92ZSBUQVJHRVRfRVhQUiBjYXNlLiAgVGlkeS4KCShwcF9jX2luaXRpYWxpemVyKTogQWRqdXN0IHByb3RvdHlwZS4KCShwcF9jX2luaXRfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHBwX2NfaW5pdGlhbGl6ZXJfbGlzdCk6IExpa2V3aXNlLgoJKHBwX2NfaWRfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2NfcG9zdGZpeF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19leHByZXNzaW9uX2xpc3QpOiBMaWtld2lzZS4KCShwcF9jX3VuYXJ5X2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jX2Nhc3RfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2NfbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2NfYWRkaXRpdmVfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2Nfc2hpZnRfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2NfcmVsYXRpb25hbF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19lcXVhbGl0eV9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19hbmRfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2NfZXhjbHVzaXZlX29yX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jX2luY2x1c2l2ZV9vcl9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19sb2dpY2FsX2FuZF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19sb2dpY2FsX29yX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jX2NvbmRpdGlvbmFsX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jX2Fzc2lnbm1lbnRfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2NfZXhwcmVzc2lvbik6IExpa2V3aXNlLiAgVGlkeS4KCShwcF9jX3N0YXRlbWVudCk6IExpa2V3aXNlLiAgRG9jdW1lbnQuCgkocHBfY19wcmV0dHlfcHJpbnRlcl9pbml0KTogQWRqdXN0IHByb3RvdHlwZS4gVGlkeS4KCgkqIGMtbGFuZy5jIChjX2luaXRpYWxpemVfZGlhZ25vc3RpY3MpOiBVcGRhdGUuCgkqIGMtY29tbW9uLmggKHN0cmlwX3BvaW50ZXJfb3BlcmF0b3IpOiBEZWNsYXJlLgoJKiBjLWNvbW1vbi5jIChzdHJpcF9wb2ludGVyX29wZXJhdG9yKTogRGVmaW5lLgoKMjAwMy0wOC0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvODc5NQoJKiB0cmVlLmggKGJ1aWxkX21ldGhvZF90eXBlX2RpcmVjdGx5KTogRGVjbGFyZS4KCSogYy1jb21tb24uYyAoaGFuZGxlX3ZlY3Rvcl9zaXplX2F0dHJpYnV0ZXMpOiBIYW5kbGUgTUVUSE9EX1RZUEVzLgoJKHZlY3Rvcl9zaXplX2hlbHBlcik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX21ldGhvZF90eXBlX2RpcmVjdGx5KTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX21ldGhvZF90eXBlKTogVXNlIGl0LgoKMjAwMy0wOC0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2LmkzODYuYyAoaXg4Nl9yZXR1cm5faW5fbWVtb3J5KTogUmVmb3JtYXQuICBSZXR1cm4gdHJ1ZQoJZm9yIDE2LWJ5dGUgdmVjdG9yIG1vZGVzIGlmIHNzZSBub3QgZW5hYmxlZDsgd2FybiBmb3IgYWJpIGNoYW5nZS4KCShpeDg2X3ZhbHVlX3JlZ25vKTogT25seSByZXR1cm4geG1tMCBmb3IgMTYtYnl0ZSB2ZWN0b3IgdHlwZXMuCgoyMDAzLTA4LTI0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogcnRsYW5hbC5jIChtYXlfdHJhcF9wKTogU2ltcGxpZnkgYW4gaW50ZWdlciBjb21wYXJpc29uLgoKMjAwMy0wOC0yNCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChBQUJfc3ZyNF9yZXBsYWNlX2J5dGVvcmRlcik6ICBFbmhhbmNlCgljb21tZW50LiAgRW5hYmxlIGZvciBEWU5JWC9wdHggc3lzdGVtcyAod2hlbiB0aGV5IHN3aXRjaCB0bwoJcmVndWxhciBmaXhpbmNsdWRlcykuCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoyMDAzLTA4LTIzICBKYXNvbiBFY2toYXJkdCAgPGpsZUByaWNlLmVkdT4KCgkqIGNvbmZpZy9pODYwL3QtaTg2MDogTmV3LgoJKiBjb25maWcuZ2NjIChpODYwLSotc3lzdjQqKTogQWRkIHQtaTg2MCB0byB0bWFrZV9maWxlLgoKMjAwMy0wOC0yMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAocHVzaGRlY2wpOiBPbmx5IHB1dCBkZWNscyB3aGljaCBmaW5pc2hfc3RydWN0IHdpbGwgZG8KCXNvbWV0aGluZyBhYm91dCBvbnRvIGluY29tcGxldGUgY2hhaW4uCgkoZmluaXNoX3N0cnVjdCk6IElmIG5vdCByZW1vdmluZyB0eXBlIGZyb20gaW5jb21wbGV0ZQoJbGlzdCwgdXBkYXRlIHByZXYuCgoyMDAzLTA4LTIwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgdGFyZ2V0LzExMzY5CgkqIGkzODYuYyAoaXg4Nl9leHBhbmRfY2FycnlfZmxhZ19jb21wYXJlKTogVmFsaWRhdGUgb3BlcmFuZC4KCglQUiB0YXJnZXQvMTEwMzEKCSogaTM4Ni5jIChjb25zdF8wX3RvXzNfb3BlcmFuZCwgY29uc3RfMF90b183X29wZXJhbmQsCgljb25zdF8wX3RvXzE1X29wZXJhbmQsIGNvbnN0XzBfdG9fMjU1X29wZXJhbmQpOiBOZXcgcHJlZGljYXRlcy4KCSogaTM4Ni5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgdGhlc2UuCgkqIGkzODYuYyAocGluc3J3IGFuZCBwZXh0cncgcGF0dGVybnMpOiBVc2UgdGhlbS4KCglQUiB0YXJnZXQvMTA5ODQKCSogaTM4Ni5jIChpeDg2X2V4cGFuZF9iaW5vcF9idWlsdGluKTogQmVoYXZlIHNhbmVseSBmb3IgVk9JRG1vZGVzLgoKCVBSIHRhcmdldC84ODY5CgkqIGV4cHIuYyAoY29udmVydF9tb2Rlcyk6IERlYWwgcHJvcGVybHkgd2l0aCBpbnRlZ2VyIHRvIHZlY3RvcgoJY29uc3RhbnQgY29udmVyc2lvbi4KCglQUiB0YXJnZXQvODg3MQoJKiBpMzg2Lm1kICh6ZXJvX2V4dGVuZHNpZGkyKik6IEFkZCBNTVggYW5kIFNTRSBhbHRlcm5hdGl2ZXMuCgoyMDAzLTA4LTIzICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmggKExPQURfRVhURU5EX09QKTogUmVtb3ZlLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgibW92aGkiKTogTmV3IGV4cGFuZGVyOyBvbGQgaW5zbiByZW5hbWVkIHRvIC4uLgoJKCIqbW92aGkiKTogLi4uIHRoaXMuCgkoIm1vdnFpIiwgIiptb3ZxaSIpOiBMaWtld2lzZS4KCSgibW92cWlfNjQiKTogUmVtb3ZlLgoJKCIqemVyb19leHRlbmRoaXNpMl8zMSIpOiBDaGFuZ2UgcHJlZGljYXRlIHRvIHNfb3BlcmFuZC4KCjIwMDMtMDgtMjMgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCSogY2FsbHMuYyAoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IEZpeCBvYnZpb3VzIGVycm9ycyBpbgoJYXJndW1lbnRzIHRvIGVtaXRfZ3JvdXBfc3RvcmUuCgoyMDAzLTA4LTIzICBKYXNvbiBFY2toYXJkdCAgPGpsZUByaWNlLmVkdT4KCgkqIGNhbGxzLmMgKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBSZW1vdmUgY29kZSByZWxhdGVkCgl0byBMSUJHQ0NfTkVFRFNfRE9VQkxFLgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuaDogUmVtb3ZlIG1lbnRpb24gb2YgTElCR0NDX05FRURTX0RPVUJMRS4KCSogZG9jL3RtLnRleGk6IExpa2V3aXNlLgoJKiBzeXN0ZW0uaDogUG9pc29uIHRoZSBMSUJHQ0NfTkVFRFNfRE9VQkxFIG1hY3JvLgoKMjAwMy0wOC0yMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbGludXg2NC5oIChTVEFSVEZJTEVfUFJFRklYX1NQRUMpOiBSZW1vdmUuCgoyMDAzLTA4LTIzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc2V0dXBfaW5jb21pbmdfdmFyYXJncyk6IEhhbmRsZSBvMzIgYW5kIG82NAoJYXMgd2VsbC4gIFB1dCBtZW1vcnkgcmVmZXJlbmNlcyBpbiB0aGUgdmFyYXJncyBhbGlhcyBzZXQuCgkobWlwc19leHBhbmRfcHJvbG9ndWUpOiBSZW1vdmUgdmFyYXJncyBoYW5kbGluZyBmcm9tIGhlcmUuCgoyMDAzLTA4LTIzICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHMzOTBfZXhwYW5kX21vdnN0ciwgczM5MF9leHBhbmRfY2xyc3RyLAoJczM5MF9leHBhbmRfY21wbWVtLCBzMzkwX291dHB1dF9jb25zdGFudF9wb29sLCBzMzkwX2J1aWxkX3ZhX2xpc3QsCglzMzkwX2Z1bmN0aW9uX3Byb2ZpbGVyLCBzMzkwX291dHB1dF9taV90aHVuayk6IFVzZSBJU08gQyBzeW50YXgKCWZvciBmdW5jdGlvbiBwb2ludGVyIGNhbGxzLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiKm5lZ2RpMl8zMSIpOiBMaWtld2lzZS4KCjIwMDMtMDgtMjMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29tYmluZS5jIChhcHBseV9kaXN0cmlidXRpdmVfbGF3KTogQ29ycmVjdCBjb21tZW50LgoKMjAwMy0wOC0yMyAgSmFzb24gRWNraGFyZHQgIDxqbGVAcmljZS5lZHU+CgoJKiBjb25maWcvaTg2MC9pODYwLmg6IFJlbW92ZSBjb21tZW50IG1lbnRpb25pbmcgTElCR0NDX05FRURTX0RPVUJMRS4KCjIwMDMtMDgtMjIgIEphc29uIEVja2hhcmR0ICA8amxlQHJpY2UuZWR1PgoKCSogY29uZmlnL2k4NjAvaTg2MC5jIChpODYwX2J1aWxkX3ZhX2xpc3QpOiBDcmVhdGUgdGhlIHZhX2RlY2wKCWRlY2xhcmF0aW9uLiAgRG9jdW1lbnQgdGhlIHZhX2xpc3Qgc3RydWN0dXJlLgoJKGk4NjBfdmFfc3RhcnQpOiBJbml0aWFsaXplIHRoZSB2YV9saXN0IHN0cnVjdHVyZS4KCShpODYwX3ZhX2FyZyk6IFJld3JpdGUgY29tcGxldGVseS4KCSogY29uZmlnL2k4NjAvaTg2MC5oIChMSUJHQ0NfTkVFRFNfRE9VQkxFKTogRG9uJ3QgZGVmaW5lLgoJKiBjb25maWcvaTg2MC92YXJhcmdzLmFzbTogRG8gbm90IGFsbG9jYXRlIG9yIGluaXRpYWxpemUKCWEgdmFfbGlzdC4gIFJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgcmVnaXN0ZXIgc2F2ZSBhcmVhLgoKMjAwMy0wOC0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmM6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5tZDogTGlrZXdpc2UuCgoyMDAzLTA4LTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2lxMjAwMC9pcTIwMDAuYzogRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoJKiBjb25maWcvaXEyMDAwL2lxMjAwMC5oOiBMaWtld2lzZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jOiBMaWtld2lzZS4KCjIwMDMtMDgtMjIgIEphc29uIEVja2hhcmR0ICA8amxlQHJpY2UuZWR1PgoKCSogY29uZmlnL2k4NjAvaTg2MC5jIChvdXRwdXRfbW92ZV9kb3VibGUpOiBEb24ndCBzZXQgbGF0ZWhhbGYKCXRvIHplcm8gZm9yIENPTlNUX0lOVCAoc2luY2UgaXQgY291bGQgYmUsIGUuZy4sIC0xKS4KCgkqIGNvbmZpZy9pODYwL2k4NjAuaCAoUkVNU0kzX0xJQkNBTEwpOiBSZXBsYWNlIHRoaXMgbWFjcm8uLi4KCShNT0RTSTNfTElCQ0FMTCk6IC4uLndpdGggdGhpcyBvbmUuCgkoVVJFTVNJM19MSUJDQUxMKTogUmVwbGFjZSB0aGlzIG1hY3JvLi4uCgkoVU1PRFNJM19MSUJDQUxMKTogLi4ud2l0aCB0aGlzIG9uZS4KCjIwMDMtMDgtMjIgIEphc29uIEVja2hhcmR0ICA8amxlQHJpY2UuZWR1PgoKCSogY29uZmlnL2k4NjAvaTg2MC1wcm90b3MuaCAob3V0cHV0X2RlbGF5X2luc24pOiBSZW1vdmUgcHJvdG90eXBlLgoJKG91dHB1dF9kZWxheWVkX2JyYW5jaCk6IFJlbW92ZSBwcm90b3R5cGUuCgkoc2luZ2xlX2luc25fc3JjX3ApOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBjb25maWcvaTg2MC9pODYwLmMgKHNpbmdsZV9pbnNuX3NyY19wKTogUmVtb3ZlIGZ1bmN0aW9uLgoJKG91dHB1dF9kZWxheWVkX2JyYW5jaCk6IFJlbW92ZSBmdW5jdGlvbi4KCShvdXRwdXRfZGVsYXlfaW5zbik6IFJlbW92ZSBmdW5jdGlvbi4KCSh2YV9zdGFydCk6IFJlbW92ZSB1bmNvbmRpdGlvbmFsIHRlc3QgYW5kIGRlYWQgY29kZSwgcmUtZm9ybWF0LgoJRml4IGNvZGluZyBzdHlsZSBhbmQgc3BlbGxpbmcgcHJvYmxlbXMgaW4gdmFyaW91cyBjb21tZW50cy4KCSogY29uZmlnL2k4NjAvaTg2MC5tZCAoVU5TUEVDVl9CTE9DS0FHRSk6IERlZmluZSBjb25zdGFudC4uLgoJKGJsb2NrYWdlIHBhdHRlcm4pOiAuLi5hbmQgdXNlIGl0IGhlcmUuCgkoYWxsIGRlZmluZV9wZWVwaG9sZSBwYXR0ZXJucyByZWxhdGVkIHRvIGRlbGF5ZWQgYnJhbmNoZXMpOiBSZW1vdmUuCglGaXggY29kaW5nIHN0eWxlIGFuZCBzcGVsbGluZyBwcm9ibGVtcyBpbiB2YXJpb3VzIGNvbW1lbnRzLgoKMjAwMy0wOC0yMiAgSmFzb24gRWNraGFyZHQgIDxqbGVAcmljZS5lZHU+CgoJKiBjb25maWcvaTg2MC9pODYwLmM6IFJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mICdHTlUgQ0MnIHdpdGggJ0dDQycuCglSZW1vdmUgYWxsIHVzZXMgb2YgdGhlIFBBUkFNUyBtYWNyby4gIFJlbW92ZSBzdXBlcmZsb3VzIHByb3RvdHlwZXMuCglDb252ZXJ0IGFsbCBmdW5jdGlvbiBkZWZpbml0aW9ucyBmcm9tIHRyYWRpdGlvbmFsIHRvIElTTyBDOTAgc3ludGF4LgoJKiBjb25maWcvaTg2MC9pODYwLXByb3Rvcy5oOiBSZXBsYWNlIGFsbCBvY2N1cnJlbmNlcyBvZiAnR05VIENDJwoJd2l0aCAnR0NDJy4gIFJlbW92ZSBhbGwgdXNlcyBvZiB0aGUgUEFSQU1TIG1hY3JvLgoJKiBjb25maWcvaTg2MC9pODYwLmg6IFJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mICdHTlUgQ0MnIHdpdGggJ0dDQycuCgkqIGNvbmZpZy9pODYwL2k4NjAubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvaTg2MC9zeXN2NC5oOiBMaWtld2lzZS4KCSogY29uZmlnL2k4NjAvdmFyYXJncy5hc206IExpa2V3aXNlLgoKMjAwMy0wOC0yMiAgSmFzb24gRWNraGFyZHQgIDxqbGVAcmljZS5lZHU+CgoJKiBjb25maWcvaTg2MC9pODYwLXByb3Rvcy5oIChpODYwX3ZhX3N0YXJ0KTogUmVtb3ZlICdzdGRhcmdfcCcKCWFyZ3VtZW50LgoJKHRkZXNjX3NlY3Rpb24pOiBBZGQgcHJvdG90eXBlLgoJVXBkYXRlIGNvcHlyaWdodCBkYXRlcy4KCSogY29uZmlnL2k4NjAvaTg2MC5jOiBJbmNsdWRlIGNvcmV0eXBlcy5oLCB0bS5oLCBhbmQgdG9wbGV2LmguCgkoVEFSR0VUX0FTTV9GVU5DVElPTl9QUk9MT0dVRSk6IE1vdmUgZGVmaW5pdGlvbiB0byBlbmQgb2YgZmlsZS4KCShUQVJHRVRfQVNNX0ZVTkNUSU9OX0VQSUxPR1VFKTogTGlrZXdpc2UuCgkodGFyZ2V0bSk6IExpa2V3aXNlLgoJKGk4NjBfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogU3Vic3RpdHV0ZSBIT1NUX1dJREVfSU5UX1BSSU5UX0RFQwoJZm9yICclZCcgd2hlcmUgbmVjZXNzYXJ5LgoJKGk4NjBfdmFfc3RhcnQpOiBSZW1vdmUgJ3N0ZGFyZ19wJyBhcmd1bWVudC4gIE1ha2UgY29uZGl0aW9uYWwgY2hlY2tzCglvbiAnc3RkYXJnX3AnIHVuY29uZGl0aW9uYWwuICBEaXZpZGUgY3VycmVudF9mdW5jdGlvbl9hcmdzX2luZm8uaW50cwoJYnkgVU5JVFNfUEVSX1dPUkQgd2hlbiByZWZlcmVuY2luZyAobGlrZXdpc2UgZm9yIC5mbG9hdHMpLgoJKEk4NjBfU1ZSNF9WQVJBUkdTKTogUmVuYW1lLi4uCgkoSTg2MF9TVlI0X1ZBX0xJU1QpOiAuLi50byB0aGlzLgoJQ2FsbCBidWlsZCgpIHdpdGggJ3QnIHJhdGhlciB0aGFuICdmaWVsZCcuCgkoaTg2MF9ydHhfY29zdHMpOiBOZXcgZnVuY3Rpb24uCgkoVEFSR0VUX1JUWF9DT1NUUyk6IERlZmluZS4KCShpODYwX2ludGVybmFsX2xhYmVsKTogTmV3IGZ1bmN0aW9uLgoJKFRBUkdFVF9BU01fSU5URVJOQUxfTEFCRUwpOiBEZWZpbmUuCgkoaTg2MF9maWxlX3N0YXJ0KTogTmV3IGZ1bmN0aW9uLgoJVXBkYXRlIGNvcHlyaWdodCBkYXRlcy4KCSogY29uZmlnL2k4NjAvaTg2MC5oIChDUFBfUFJFREVGSU5FUyk6IFJlbW92ZS4KCShUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IERlZmluZS4KCShFWFBBTkRfQlVJTFRJTl9WQV9TVEFSVCk6IFJlbW92ZSAnc3RkYXJnJyBhcmd1bWVudC4KCShDT05TVF9DT1NUUyk6IFJlbW92ZSAoYW5kIG1vdmUgY29kZSB0byBpODYwX3J0eF9jb3N0cykuCgkoQVNNX0ZJTEVfU1RBUlQpOiBSZW1vdmUuCgkoQVNNX0ZJTEVfU1RBUlRfMSk6IFJlbW92ZS4KCShBU01fR0xPQkFMSVpFX0xBQkVMKTogUmVtb3ZlLgoJKEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUwpOiBSZW1vdmUuCgkoQVNNX09VVFBVVF9DQVNFX0xBQkVMKTogUmVwbGFjZSBjYWxsIG9mIEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUwKCXdpdGggdGFyZ2V0bS5hc21fb3V0LmludGVybmFsX2xhYmVsLgoJVXBkYXRlIGNvcHlyaWdodCBkYXRlcy4KCSogY29uZmlnL2k4NjAvc3lzdjQuaCAoVVNFUl9MQUJFTF9QUkVGSVgpOiBEZWZpbmUuCgkoQ1BQX1BSRURFRklORVMpOiBSZW1vdmUuCgkoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZS4KCShHTE9CQUxfQVNNX09QKTogRGVmaW5lLgoJKEFTTV9GSUxFX1NUQVJUKTogUmVtb3ZlLgoJKFRBUkdFVF9BU01fRklMRV9TVEFSVF9GSUxFX0RJUkVDVElWRSk6IERlZmluZS4KCShUQVJHRVRfQVNNX0ZJTEVfU1RBUlQpOiBEZWZpbmUuCglVcGRhdGUgY29weXJpZ2h0IGRhdGVzLgoKMjAwMy0wOC0yMiAgSmFzb24gRWNraGFyZHQgIDxqbGVAcmljZS5lZHU+CgoJKiBnY2MvY29uZmlnLmdjYyAoaTg2MC0qLXN5c3Y0Kik6IEFkZCB0YXJnZXQuCgkqIGNvbmZpZy9pODYwL2k4NjAtcHJvdG9zLmg6IE5ldy4KCSogY29uZmlnL2k4NjAvaTg2MC5jOiBOZXcuCgkqIGNvbmZpZy9pODYwL2k4NjAuaDogTmV3LgoJKiBjb25maWcvaTg2MC9pODYwLm1kOiBOZXcuCgkqIGNvbmZpZy9pODYwL3N5c3Y0Lmg6IE5ldy4KCSogY29uZmlnL2k4NjAvdmFyYXJncy5hc206IE5ldy4KCSogY29uZmlnL2k4NjAveC1zeXN2NDogTmV3LgoKMjAwMy0wOC0yMiAgSmFzb24gRWNraGFyZHQgIDxqbGVAcmljZS5lZHU+CgoJKiBjb25maWcvcGEvcGEuYzogUmVwbGFjZSAnR05VIENDJyB3aXRoICdHQ0MnLgoJUmVtb3ZlIGFsbCB1c2VzIG9mIFBBUkFNUyBtYWNyby4KCUNvbnZlcnQgYWxsIGZ1bmN0aW9uIGRlZmluaXRpb25zIHRvIElTTyBDOTAgc3ludGF4LgoJKiBjb25maWcvcGEvZWxmLmg6IFJlcGxhY2UgJ0dOVSBDQycgd2l0aCAnR0NDJy4KCSogY29uZmlnL3BhL2ZwdHIuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9saWIyZnVuY3MuYXNtOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL2xvbmdfZG91YmxlLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvbWlsbGk2NC5TOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLTY0Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEtaHB1eC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLWhwdXgxMC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLWhwdXgxMS5oOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLWxpbnV4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEtbW9kZXMuZGVmOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLW9zZi5oOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLXByby1lbmQuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYTMyLWxpbnV4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGE2NC1saW51eC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhNjQtaHB1eC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhNjQtcmVncy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3F1YWRsaWIuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9ydGVtcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLXByb3Rvcy5oOiBSZXBsYWNlICdHTlUgQ0MnIHdpdGggJ0dDQycgYW5kIHJlbW92ZQoJYWxsIHVzZXMgb2YgdGhlIFBBUkFNUyBtYWNyby4KCSogY29uZmlnL3BhL3BhLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvc29tLmg6IExpa2V3aXNlLgoKCSogY29uZmlnL2lxMjAwMC9pcTIwMDAuYzogUmVwbGFjZSAnR05VIENDJyB3aXRoICdHQ0MnLgoJUmVtb3ZlIGFsbCB1c2VzIG9mIFBBUkFNUyBtYWNyby4KCUNvbnZlcnQgYWxsIGZ1bmN0aW9uIGRlZmluaXRpb25zIHRvIElTTyBDOTAgc3ludGF4LgoJKiBjb25maWcvaXEyMDAwLXByb3Rvcy5oOiBSZXBsYWNlICdHTlUgQ0MnIHdpdGggJ0dDQycuCglSZW1vdmUgYWxsIHVzZXMgb2YgUEFSQU1TIG1hY3JvLgoJKiBjb25maWcvaXEyMDAwLmg6IFJlbW92ZSBhbGwgdXNlcyBvZiBQQVJBTVMgbWFjcm8uCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLm1kOiBSZXBsYWNlICdHTlUgQ0MnIHdpdGggJ0dDQycuCgoyMDAzLTA4LTIzICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oIChzMzkwX291dHB1dF9wb29sX2VudHJ5KTogRGVjbGFyZS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChnZW5fY29uc3R0YWJsZSk6IFJlbW92ZS4KCShzMzkwX2R1bXBfcG9vbCk6IFVzZSBVTlNQRUNWX1BPT0xfRU5UUlkgZm9yIHBvb2wgZW50cnkgaW5zbnMuCgkoczM5MF9vdXRwdXRfcG9vbF9lbnRyeSk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoVU5TUEVDVl9QT09MX1FJLCBVTlNQRUNWX1BPT0xfSEksCglVTlNQRUNWX1BPT0xfU0ksIFVOU1BFQ1ZfUE9PTF9ESSwgVU5TUEVDVl9QT09MX1RJLAoJVU5TUEVDVl9QT09MX1NGLCBVTlNQRUNWX1BPT0xfREYpOiBSZW1vdmUsIHJlcGxhY2UgYnkgLi4uCgkoVU5TUEVDVl9QT09MX0VOVFJZKTogLi4uIHRoaXMgbmV3IGNvbnN0YW50LgoJKCJjb25zdHRhYmxlX3FpIiwgImNvbnN0dGFibGVfaGkiLCAiY29uc3R0YWJsZV9zaSIsICJjb25zdHRhYmxlX2RpIiwKCSJjb25zdHRhYmxlX3RpIiwgImNvbnN0dGFibGVfc2YiLCAiY29uc3R0YWJsZV9kZiIpOiBSZW1vdmUgLi4uCgkoIipwb29sX2VudHJ5Iik6IC4uLiBhbmQgcmVwbGFjZSBieSB0aGlzIG5ldyBpbnNuLgoJKCJsaXRlcmFsX3Bvb2xfMzEiKTogRG8gbm90IGVtaXQgYW5jaG9yIGxhYmVsIGlmIHBvb2wgZW1wdHkuCgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogQWRkIHNhdmVfcmV0dXJuX2FkZHJfcC4KCShzMzkwX29wdGltaXplX3Byb2xvZyk6IFNhdmUgUkVUVVJOX1JFR05VTSBpZiBzYXZlX3JldHVybl9hZGRyX3AuCgkoczM5MF9maXh1cF9jbG9iYmVyZWRfcmV0dXJuX3JlZyk6IFJlbW92ZS4KCShzMzkwX3Jlb3JnKTogRG9uJ3QgY2FsbCBzMzkwX2ZpeHVwX2Nsb2JiZXJlZF9yZXR1cm5fcmVnLgoJKHMzOTBfcmV0dXJuX2FkZHJfcnR4KTogQWx3YXlzIHJldHJpZXZlIHJldHVybiBhZGRyZXNzIGZyb20gc2F2ZSBhcmVhCglzbG90LiAgVXNlIHNhdmVfcmV0dXJuX2FkZHJfcCB0byBmb3JjZSBzbG90IHRvIGJlIGZpbGxlZC4KCShzMzkwX2VtaXRfcHJvbG9ndWUpOiBSZW1vdmUgaGFzX2hhcmRfcmVnX2luaXRpYWxfdmFsIHRlc3QuCgoyMDAzLTA4LTIyICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAYnJvYWRjb20uY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChNQVNLX0ZJWF9TQjEsIFRBUkdFVF9GSVhfU0IxKTogTmV3IGRlZmluZXMuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1tZml4LXNiMSBhbmQgLW1uby1maXgtc2IxLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChkaXZkZjMsIGRpdnNmMywgc3FydGRmMiwgc3FydHNmMik6IFdvcmsKCWFyb3VuZCBTQi0xIGVycmF0YSBpZiBUQVJHRVRfRklYX1NCMSBpcyBzZXQuCgkocmVjaXAuZCBpbnNuLCByZWNpcC5zIGluc24sIHJzcXJ0LmQgaW5zbiwgcnNxcnQucyBpbnNuKTogTGlrZXdpc2UuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgTUlQUyAtbWZpeC1zYjEgYW5kIC1tbm8tZml4LXNiMS4KCjIwMDMtMDgtMjIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogaGFzaHRhYmxlLmMgKGh0X2V4cGFuZCk6IEF2b2lkIGNhbGN1bGF0aW5nIHJlaGFzaCBmb3IgdGhlIGNvbW1vbgoJY2FzZSB0aGF0IHRoZSBmaXJzdCBwcm9iZSBoaXRzIGFuIGVtcHR5IGhhc2ggdGFibGUgc2xvdC4KCjIwMDMtMDgtMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaWE2NC9ocHV4LmggKFNVUFBPUlRTX0lOSVRfUFJJT1JJVFkpOiBEZWZpbmUgdG8gMC4KCjIwMDMtMDgtMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kICgqcHRyX2V4dGVuZF9wbHVzXzEpOiBSZW5hbWUgdG8gLi4uCgkocHRyX2V4dGVuZF9wbHVzX2ltbSk6IC4uLiB0aGlzLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGFkZHA0X29wdGltaXplX29rKTogRG8gbm90IGRpc2FibGUgYWRkcDQKCW9wdGltaXphdGlvbiBpbiBDKysuCgkoaWE2NF9vdXRwdXRfbWlfdGh1bmspOiBTdXBwb3J0IElMUDMyIG1vZGUuCgoyMDAzLTA4LTIyICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBnY2MvY29uZmlnL202OGsvbTY4ay5jIChtNjhrX2NvZmZfYXNtX25hbWVkX3NlY3Rpb24pOiByZW1vdmUgdW51c2VkCglmdW5jdGlvbi4KCSogZ2NjL2NvbmZpZy9tNjhrL202OGsuYyAoLW02OGtfc3ZyM19hc21fb3V0X2NvbnN0cnVjdG9yKTogbGlrZXdpc2UuCgoyMDAzLTA4LTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChjb25zdF9pbnRfMV9vcGVyYW5kKTogU2ltcGxpZnkgYW4KCWludGVnZXIgY29tcGFyaXNvbi4KCjIwMDMtMDgtMjIgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvZnAtYml0LmM6IFNwZWNpZnkgY29uZmlnLyBkaXIgZm9yIGluY2x1ZGUgb2YgZnAtYml0LmguCgkqIGNvbmZpZy9yczYwMDAvcHBjNjQtZnAuYzogTGlrZXdpc2UuCgoyMDAzLTA4LTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2ZnY2xlYW51cC5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogZW1pdC1ydGwuYzogTGlrZXdpc2UuCgkqIG9wdGFicy5jOiBMaWtld2lzZS4KCSogcmEtYnVpbGQuYzogTGlrZXdpc2UuCgkqIHJ0bGFuYWwuYzogTGlrZXdpc2UuCgkqIHRyZWUuaDogTGlrZXdpc2UuCgoyMDAzLTA4LTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYy1kZWNsLmM6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkqIGNmZ3J0bC5jOiBMaWtld2lzZS4KCSogY29tYmluZS5jOiBMaWtld2lzZS4KCSogY29udmVydC5jOiBMaWtld2lzZS4KCSogZG9taW5hbmNlLmM6IExpa2V3aXNlLgoJKiBkd2FyZjJvdXQuYzogTGlrZXdpc2UuCgkqIGR3YXJmb3V0LmM6IExpa2V3aXNlLgoJKiBleHBtZWQuYzogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYzogTGlrZXdpc2UuCgkqIGdjb3YuYzogTGlrZXdpc2UuCgkqIGdlbmF0dHJ0YWIuYzogTGlrZXdpc2UuCgkqIGdnYy1jb21tb24uYzogTGlrZXdpc2UuCgkqIG1pcHMtdGZpbGUuYzogTGlrZXdpc2UuCgkqIHJlZ21vdmUuYzogTGlrZXdpc2UuCgoyMDAzLTA4LTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYnVpbHRpbi1hdHRycy5kZWY6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkqIGMtcHJldHR5LXByaW50LmM6IExpa2V3aXNlLgoJKiBkaWFnbm9zdGljLmg6IExpa2V3aXNlLgoJKiBsYW5naG9va3MuaDogTGlrZXdpc2UuCgkqIHJlY29nLmM6IExpa2V3aXNlLgoJKiBzaW1wbGlmeS1ydHguYzogTGlrZXdpc2UuCgkqIHRyZWUuZGVmOiBMaWtld2lzZS4KCjIwMDMtMDgtMjIgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGstcHJvdG9zLmg6IENvbnZlcnQgdG8gSVNPIEM5MC4KCSogY29uZmlnL202OGsvbTY4ay5jOiBMaWtld2lzZS4KCjIwMDMtMDgtMjEgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCSAgICBQYXVsIERhbGUgIDxwYXVsaUBzbmFwZ2Vhci5jb20+CgkgICAgUGV0ZXIgQmFyYWRhIDxwZXRlckBiYXJhZGFzLm9yZz4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19ydHhfY29zdHMpOiBBZGp1c3QgbXVsL2RpdiBjb3N0cyBmb3IKCUNvbGRGaXJlIGNvcmVzLgoKMjAwMy0wOC0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChJTkNMVURFUyk6IFJlbW92ZSAtSSQoc3JjZGlyKS9jb25maWcuCgkqIGNvbmZpZy5nY2MgKCotKi1vcGVuYnNkKTogRG9uJ3Qgc2V0IHRtX2ZpbGUuCgkoYWxwaGEqLSotb3BlbmJzZCwgYXJtKi0qLWNvZmYqLCBhcm0qLXdpbmNlLXBlKiwKCWFybS0qLXBlKiwgYXZyLSotKiwgaDgzMDAtKi1ydGVtcyosIGg4MzAwLSotZWxmKiwKCWg4MzAwLSotKiwgaHBwYSotKi1vc2YqLCBocHBhKi0qLWJzZCosIGhwcGEqLSotaHB1eCosCglpMzcwLSotb3BlbmVkKiwgaTM3MC0qLW12cyosIGkzNzAtKi1saW51eCosIGk/ODYtKi1vcGVuYnNkKiwKCWk/ODYtKi1seW54b3MsIGk/ODYtKi1udG8tcW54KiwgaXEyMDAwKi0qLWVsZiosIG02ODAwMC1ocC1ocHV4KiwKCW02OGstaHAtaHB1eCosIG02OGstKi1hb3V0KiwgbTY4ay0qLWNvZmYqLCBtNjgwMjAtKi1lbGYqLAoJbTY4ay0qLWVsZiosIG02OGsqLSotbmV0YnNkKiwgbTY4ayotKi1vcGVuYnNkKiwgbTY4ay0qLXN5c3Y0KiwKCW02OGstKi1saW51eCosIG02OGstKi1ydGVtcyosIG1jb3JlLSotcGUqLCBtaXBzKi0qLW5ldGJzZCosCgltaXBzKi0qLW9wZW5ic2QqLCByczYwMDAtKi1seW54b3MqLCBzaCotKi1lbGYqLCBzaCotKi1rYSwKCXNoLSotcnRlbXNlbGYsIHNwYXJjLSotb3BlbmJzZCosIHN0cm9uZ2FybS0qLXBlLCB2YXgtKi1vcGVuYnNkKiwKCXhzY2FsZS0qLWNvZmYpOiBVc2UgZXhwbGljaXQgYW5kIGNvbXBsZXRlIGxpc3RzIG9mIHRhcmdldCBoZWFkZXJzCgl0byBpbmNsdWRlLiAgTW92ZSBkZWZpbml0aW9ucyB0byB0bV9kZWZpbmVzIHdoZXJlIGFwcHJvcHJpYXRlLgoJKGhwcGEqLSotb3BlbmJzZCosIHBvd2VycGMtKi1vcGVuYnNkKik6IENvbW1lbnQgb3V0IHN0YW56YSBmb3IKCW5vdC15ZXQtY29udHJpYnV0ZWQgY29uZmlndXJhdGlvbi4KCgkqIGNvbmZpZy9seW54LmgsIGNvbmZpZy9hbHBoYS9vcGVuYnNkLmgsIGNvbmZpZy9hcm0vY29mZi5oCgkqIGNvbmZpZy9hdnIvYXZyLmgsIGNvbmZpZy9mcnYvZnJ2LmgsIGNvbmZpZy9oODMwMC9lbGYuaAoJKiBjb25maWcvaTM3MC9saW51eC5oLCBjb25maWcvaTM3MC9tdnMuaCwgY29uZmlnL2kzNzAvb2UuaAoJKiBjb25maWcvaTM4Ni9udG8uaCwgY29uZmlnL2lxMjAwMC9pcTIwMDAuaCwKCSogY29uZmlnL202OGsvY29mZi5oLCBjb25maWcvbTY4ay9ocDMxMC5oLCBjb25maWcvbTY4ay9ocDMyMC5oCgkqIGNvbmZpZy9tNjhrL2xpbnV4LmgsIGNvbmZpZy9tNjhrL202OGstYW91dC5oCgkqIGNvbmZpZy9tNjhrL202OGstbm9uZS5oLCBjb25maWcvbTY4ay9tNjhrdjQuaAoJKiBjb25maWcvbTY4ay9uZXRic2QuaCwgY29uZmlnL202OGsvb3BlbmJzZC5oCgkqIGNvbmZpZy9tNjhrL3Nncy5oLCBjb25maWcvbWNvcmUvbWNvcmUtcGUuaCwKCSogY29uZmlnL21pcHMvbmV0YnNkLmgsIGNvbmZpZy9taXBzL29wZW5ic2QuaCwgY29uZmlnL3BhL3BhLmgsCgkqIGNvbmZpZy9yczYwMDAvbHlueC5oLCBjb25maWcvc2gvZW1iZWQtZWxmLmgsIGNvbmZpZy9zcGFyYy9vcGVuYnNkLmg6CglSZW1vdmUgaW5jbHVkZXMgb2Ygb3RoZXIgdGFyZ2V0IGNvbmZpZyBoZWFkZXJzLCBhbmQKCWRlZmluaXRpb25zIG9mIG1hY3JvcyBtb3ZlZCB0byB0bV9kZWZpbmVzIGxpc3RzLiAgQWRkICN1bmRlZnMKCXdoZXJlIG5vdyBuZWNlc3NhcnkgdG8gcHJldmVudCByZWRlZmluaXRpb24gd2FybmluZ3MuCgoJKiBjb25maWcvaDgzMDAvY29mZi5oOiBOZXcgZmlsZSBzcGxpdCBvdXQgb2YuLi4KCSogY29uZmlnL2g4MzAwL2VsZi5oOiAuLi5oZXJlLgoJKiBjb25maWcvbTY4ay9ocDMyMGJhc2UuaDogTmV3IGZpbGUgc3BsaXQgb3V0IG9mLi4uCgkqIGNvbmZpZy9tNjhrL2hwMzIwLmg6IC4uLmhlcmUuCgkqIGNvbmZpZy9yczYwMDAvbHlueGJhc2UuaDogTmV3IGZpbGUgc3BsaXQgb3V0IG9mLi4uCgkqIGNvbmZpZy9yczYwMDAvbHlueC5oOiAuLi5oZXJlLgoKCSogY29uZmlnL202OGsvaHAzMTBnLmgsIGNvbmZpZy9tNjhrL2hwMzIwZy5oLCBjb25maWcvbTY4ay9ocHV4Ny5oCgkqIGNvbmZpZy9tNjhrL202OGstY29mZi5oLCBjb25maWcvbWlwcy9vcGVuYnNkLWJlLmg6IERlbGV0ZSBmaWxlLgoKCSogY29uZmlnL3NvbDIuaDogUmVtb3ZlICNpZiAwLWVkICNpbmNsdWRlIG9mIHN5cy9tbWFuLmguCgkqIGNvbmZpZy9tNjhrL202OGtlbGYuaDogUmVtb3ZlIGNvbW1lbnRlZCBvdXQgI2luY2x1ZGUgb2YgbTY4ay9zZ3MuaC4KCSogY29uZmlnL21jb3JlL21jb3JlLmg6IERvbid0IGluY2x1ZGUgaHdpbnQuaCBub3IgbWFjaG1vZGUuaC4KCVJlbW92ZSB1bm5lY2Vzc2FyeSAjaWZuZGVmLgoJKiBjb25maWcvczM5MC9zMzkwLmg6IFByZWZpeCAjaW5jbHVkZSBvZiBzMzkwL2ZpeGRmZGkuaAoJW3VuZGVyIElOX0xJQkdDQzJdIHdpdGggY29uZmlnLy4KCjIwMDMtMDgtMjEgIFBlciBCb3RobmVyICA8cGJvdGhuZXJAYXBwbGUuY29tPgoKCSogY3BwZmlsZXMuYyAoc3RhY2tfZmlsZSk6ICBDb3JyZWN0bHkgcGFzcyByZXR1cm5fYXRfZW9mIHBhcmFtZXRlcgoJdG8gY3BwX3B1c2hfYnVmZmVyLgoJKiBjcHBsZXguYyAoX2NwcF9nZXRfZnJlc2hfbGluZSk6ICBEb24ndCBidWZmZXItPnByZXYgLSBoYW5kbGVkCglieSByZXR1cm5fYXRfZW9mIGNoZWNrLiAgQWx3YXlzIGNhbGwgX2NwcF9wb3BfYnVmZmVyIGF0IGVuZC4KCjIwMDMtMDgtMjEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJUFIgdGFyZ2V0LzExODA1CgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAodHdvIGFub255bW91cyBwYXR0ZXJucyk6IFJlbW92ZS4KCjIwMDMtMDgtMjEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoTVVTVF9QQVNTX0lOX1NUQUNLKTogUmVtb3ZlIEJMS21vZGUgY2xhdXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKGZ1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZSk6IE5ldmVyIHJldHVybgoJdHJ1ZSBmb3IgbjMyICYgbjY0LgoKMjAwMy0wOC0yMSAgSm9zZWYgWmxvbWVrICA8emxvbWVrakBzdXNlLmN6PgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogRml4IGJ1ZyBpbiAoQSAmIEMpID09IEQgd2hlcmUgRCAmIH5DICE9IDAKCWFuZCBzaW1pbGFybHkgaW4gKEEgfCBDKSA9PSBEIHdoZXJlIEMgJiB+RCAhPSAwLgoKMjAwMy0wOC0yMCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJUFIgODE4MAoJKiBjb25maWd1cmUuaW46IFdoZW4gdGVzdGluZyB3aXRoX2xpYnMgYW5kIHdpdGhfaGVhZGVycywgdHJlYXQKCSdubycgYXMgdW5zZXQuICBCYXNlZCBvbiBhIHBhdGNoIGJ5IERhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA4LTIwICBQZXRlciBCYXJhZGEgPHBldGVyQGJhcmFkYXMub3JnPgoKCSogbG9uZ2xvbmcuaCAodW11bF9wcG1tKTogQWRkIENvbGRGaXJlIHN1cHBvcnQuCgoyMDAzLTA4LTIwICBQZXRlciBCYXJhZGEgPHBldGVyQGJhcmFkYXMub3JnPgoJICAgIEJlcm5hcmRvIElubm9jZW50aSAgPGJlcm5pZUBkZXZlbGVyLmNvbT4KCgkqIGNvbmZpZy9tNjhrL202OGstbm9uZS5oOiBJbnRyb2R1Y2UgbmV3IENvbGRGaXJlIGFyY2hzLgoJKiBjb25maWcvbTY4ay9tNjhrLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9sYjFzZjY4LmFzbTogUmVuYW1lIF9fbWNmNTIwMF9fIHRvIF9fbWNvbGRmaXJlX18uCgkqIGNvbmZpZy9tNjhrL2NvZmYuaDogUmVuYW1lIFRBUkdFVF81MjAwIHRvIFRBUkdFVF9DT0xERklSRS4KCSogY29uZmlnL202OGsvbGludXguaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9tNjhrZWxmLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9uZXRic2QtZWxmLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay90LW02OGtlbGY6IEFkZCBtdWx0aWxpYiB0YXJnZXRzIGZvciBuZXcgQ29sZEZpcmUgYXJjaHMuCgoyMDAzLTA4LTIwICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLmM6IFN0cmlwIGF3YXkgY29kZSBkZXBlbmRpbmcgb24gTk9fQUREU1VCX1EgZGVmaW5pdGlvbi4KCSogY29uZmlnL202OGsvbTY4ay5tZDogTGlrZXdpc2UuCgoyMDAzLTA4LTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGphdmEvMTE5OTYKCVJldmVydCB0aGlzIGNoYW5nZToKCTIwMDMtMDgtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlKTogQ29ycmVjdGx5IGhhbmRsZQoJdHlwZXMgd2l0aCBwcmVjaXNpb25zIG90aGVyIHRoYW4gdGhvc2UgZ2l2ZW4gYnkgbmF0aXZlIG1hY2hpbmUKCW1vZGVzLgoKMjAwMy0wOC0yMCAgR3VudGhlciBOaWtsICA8Z25pQGdlY2tvLmRlPgoKCSogY29uZmlnL202OGsvbTY4ay5tZCAoYW5vbnltb3VzIGRlZmluZV9pbnNuKTogcmVtb3ZlIG9ic29sZXRlIGNvZGUKCXNlbGVjdGVkIGJ5IEZTR0xNVUxfVVNFX1MgYW5kIEZTR0xESVZfVVNFX1MKCSogY29uZmlnL202OGsvbTY4ay5jIChvdXRwdXRfbW92ZV9oaW1vZGUpOiByZW1vdmUgU0dTX05PX0xJIGNoZWNrCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKGFub255bW91cyBkZWZpbmVfaW5zbik6IExpa2V3aXNlCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKGFub255bW91cyBkZWZpbmVfaW5zbik6IHJlbW92ZSBJU0lfT1YgY2hlY2sKCSogY29uZmlnL202OGsvbTY4ay5jIChzdGFuZGFyZF82ODg4MV9jb25zdGFudF9wKTogcmVtb3ZlIG9ic29sZXRlCgljb2RlIHNlbGVjdGVkIGJ5IE5PX0FTTV9GTU9WRUNSCgoyMDAzLTA4LTIwICBHdW50aGVyIE5pa2wgIDxnbmlAZ2Vja28uZGU+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG91dHB1dF9tb3ZlX2NvbnN0X2ludG9fZGF0YV9yZWcsCglvdXRwdXRfbW92ZV9oaW1vZGUpOiB1bmlmeSBNT1RPUk9MQS9NSVQgaGFuZGxpbmcgb2YgbW92ZXEKCSogY29uZmlnL202OGsvbTY4ay5tZCAobW92c2lfY29uc3QwLCBhbm9ueW1vdXMgZGVmaW5lX2luc24pOgoJTGlrZXdpc2UKCjIwMDMtMDgtMjAgIEd1bnRoZXIgTmlrbCAgPGduaUBnZWNrby5kZT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiB1c2UgJVUgaW4KCWxhYmVsIG5hbWUKCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IHJlcGxhY2UKCUhPU1RfV0lERV9JTlRfUFJJTlRfREVDIHdpdGggJXdkCgoyMDAzLTA4LTIwICBMb3JlbiBKYW1lcyBSaXR0bGUgIDxsanJpdHRsZUBhY20ub3JnPgoKCSogY29uZmlnL2kzODYvZnJlZWJzZC5oIChBU01fT1VUUFVUX01BWF9TS0lQX0FMSUdOKTogSGFuZGxlCglyZWRlZmluZSB3YXJuaW5nLgoKMjAwMy0wOC0yMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8xMTk4NAoJKiBmb2xkLWNvbnN0LmMgKGZvbGQgPFBMVVNfRVhQUj4pOiBDaGVjayBmb3IgaW50ZWdlciBjb25zdGFudAoJb3BlcmFuZHMgYmVmb3JlIGNhbGxpbmcgdHJlZV9pbnRfY3N0X2x0IHdoZW4gcGVyZm9ybWluZyBhc3NvY2lhdGl2ZQoJdHJhbnNmb3JtYXRpb25zLgoKMjAwMy0wOC0yMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiB0cmVlLmggKElTX0VYUFJfQ09ERV9DTEFTUyk6IEFsc28gaW5jbHVkZSAncicgYW5kICdzJy4KCShFWFBSX0NIRUNLKTogRG9uJ3QgY2hlY2sgZm9yICdyJyBvciAncycgaWYgd2UncmUKCWNoZWNraW5nIElTX0VYUFJfQ09ERV9DTEFTUy4KCSogY2FsbHMuYyAoY2FsbHNfZnVuY3Rpb25fMSk6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBMaWtld2lzZS4KCSogdHJlZS5jIChpdGVyYXRpdmVfaGFzaF9leHByKTogTGlrZXdpc2UuCgkqIHRyZWUtaW5saW5lLmMgKHdhbGtfdHJlZSwgY29weV90cmVlX3IpOiBMaWtld2lzZS4KCjIwMDMtMDgtMjAgIEd1bnRoZXIgTmlrbCAgPGduaUBnZWNrby5kZT4KCgkqIGNvbmZpZy9tNjhrL202OGsuYyAobTY4a19vdXRwdXRfbWlfdGh1bmspOiBkZWxldGUgb2Jzb2xldGUgY29kZQoJZGVwZW5kaW5nIG9uIE1PVE9ST0xBX0JTUgoJKiBjb25maWcvbTY4ay9tNjhrLm1kIChhbm9ueW1vdXMgZGVmaW5lX2luc24pOiBMaWtld2lzZQoKMjAwMy0wOC0yMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tYXRoZm4pOiBVc2UgZ2V0X2NhbGxlZV9mbmRlY2wuCgkoZXhwYW5kX2J1aWx0aW5fbWF0aGZuMiwgZXhwYW5kX2J1aWx0aW4sIGJ1aWx0aW5fbWF0aGZuX2NvZGUsCglmb2xkX3RydW5jX3RyYW5zcGFyZW50X21hdGhmbiwgZm9sZF9idWlsdGluKTogTGlrZXdpc2UuCgkqIGRvanVtcC5jIChkb19qdW1wKTogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYyAob3BlcmFuZF9lcXVhbF9wLCBmb2xkKTogTGlrZXdpc2UuCgkodHJlZV9leHByX25vbm5lZ2F0aXZlX3ApOiBMaWtld2lzZS4KCgkqIHN0b3ItbGF5b3V0LmMgKGRvX3R5cGVfYWxpZ24pOiBPbmx5IGNvcHkgREVDTF9VU0VSX0FMSUdOIGZyb20KCVRZUEVfVVNFUl9BTElHTiBmb3IgRklFTERfREVDTHMuCgoJKiBhdHRyaWJzLmMgKGRlY2xfYXR0cmlidXRlcyk6IFJlYnVpbGQgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZSBhZnRlcgoJY2hhbmdpbmcgdGhlIHRhcmdldCB0eXBlLgoJKiB0cmVlLmMgKGdldF9xdWFsaWZpZWRfdHlwZSk6IEFsc28gY2hlY2sgdGhhdCB0aGUgYXR0cmlidXRlcyBtYXRjaC4KCjIwMDMtMDgtMTkgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIE1ha2VmaWxlLmluIChTVEFHRVNUVUZGKTogTW92ZSBjYzFvYmokKGV4ZWV4dCkgZnJvbSBoZXJlIC4uLgoJKiBvYmpjL2NvbmZpZy1sYW5nLmluIChzdGFnZXN0dWZmKTogLi4uIHRvIGhlcmUuCgoyMDAzLTA4LTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xMTk0NgoJKiBjb252ZXJ0LmMgKGNvbnZlcnRfdG9faW50ZWdlcik6IFVzZSBDT05WRVJUX0VYUFIgKGluc3RlYWQgb2YKCU5PUF9FWFBSKSB3aGVuIG5lY2Vzc2FyeS4KCSogYy1jb21tb24uYyAoY19jb21tb25fc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUpOiBDb3JyZWN0bHkgaGFuZGxlCgl0eXBlcyB3aXRoIHByZWNpc2lvbnMgb3RoZXIgdGhhbiB0aG9zZSBnaXZlbiBieSBuYXRpdmUgbWFjaGluZQoJbW9kZXMuCgoyMDAzLTA4LTE5ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNwcHBjaC5jIChjcHBfdmFsaWRfc3RhdGUpOiBSZS1hZGQgd2FybmluZyBhYm91dCBQQ0ggbm90IHVzZWQKCWJlY2F1c2Ugc29tZSBtYWNybyBpcyBkZWZpbmVkLgoKCSogY29uZmlnL2Rhcndpbi5oIChMSU5LX0NPTU1BTkRfU1BFQyk6IEFkZCAtYXJjaCBhbmQgLWFyY2hfb25seQoJb3B0aW9ucy4KCSogY29uZmlnL2kzODYvZGFyd2luLmggKEFTTV9TUEVDKTogTmV3LgoJKFNVQlRBUkdFVF9FWFRSQV9TUEVDUyk6IE5ldy4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoQVNNX1NQRUMpOiBOZXcuCgkoU1VCVEFSR0VUX0VYVFJBX1NQRUNTKTogTmV3LgoJKiBjb25maWd1cmUuaW46IERvbid0IHNldCBDUk9TUyBvciBTWVNURU1fSEVBREVSX0RJUiB3aGVuIGJ1aWxkaW5nCglhIGNyb3NzLWNvbXBpbGVyIGJldHdlZW4gdHdvIGRpZmZlcmVudCBwcm9jZXNzb3JzIG9uIERhcndpbi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wOC0xOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGJ1aWx0aW5zLmM6IEZpeCBjb21tZW50IHR5cG9zLgoJKiBjLWNvbW1vbi5jOiBMaWtld2lzZS4KCSogYy1kZWNsLmM6IExpa2V3aXNlLgoJKiBjLXByZXR0eS1wcmludC5jOiBMaWtld2lzZS4KCSogY2ZnYnVpbGQuYzogTGlrZXdpc2UuCgkqIGNmZ2xheW91dC5jOiBMaWtld2lzZS4KCSogY2ZnbG9vcGFuYWwuYzogTGlrZXdpc2UuCgkqIGNncmFwaHVuaXQuYzogTGlrZXdpc2UuCgkqIGNwcGZpbGVzLmM6IExpa2V3aXNlLgoJKiBkd2FyZm91dC5jOiBMaWtld2lzZS4KCSogZXhwci5jOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jOiBMaWtld2lzZS4KCSogZ2NzZS5jOiBMaWtld2lzZS4KCSogZ2djLXBhZ2UuYzogTGlrZXdpc2UuCgkqIGhhaWZhLXNjaGVkLmM6IExpa2V3aXNlLgoJKiBwcmV0dHktcHJpbnQuYzogTGlrZXdpc2UuCgkqIHRyZWUuYzogTGlrZXdpc2UuCgkqIHRyZWUuaDogTGlrZXdpc2UuCgkqIHZhbHVlLXByb2YuYzogTGlrZXdpc2UuCgoyMDAzLTA4LTE5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYy1kZWNsLmM6IEZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCSogY3BwZmlsZXMuYzogTGlrZXdpc2UuCgoyMDAzLTA4LTE5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYy1jb21tb24uYzogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogYy1jb21tb24uaDogTGlrZXdpc2UuCgkqIGMtZGVjbC5jOiBMaWtld2lzZS4KCSogY3BwaW5pdC5jOiBMaWtld2lzZS4KCSogY3BwbGliLmg6IExpa2V3aXNlLgoJKiBlbWl0LXJ0bC5jOiBMaWtld2lzZS4KCSogaW5wdXQuaDogTGlrZXdpc2UuCgkqIGxpbmUtbWFwLmg6IExpa2V3aXNlLgoJKiBvcHRzLmM6IExpa2V3aXNlLgoJKiBvcHRzLmg6IExpa2V3aXNlLgoJKiBzaW1wbGlmeS1ydHguYzogTGlrZXdpc2UuCgoyMDAzLTA4LTE5ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIHVud2luZC1jLmM6IEFkZCBsaWJnY2Mtc3R5bGUgZXhjZXB0aW9uLgoJKiB1bndpbmQtZHcyLmM6IExpa2V3aXNlLgoJKiB1bndpbmQtcGUuaDogTGlrZXdpc2UuCgkqIHVud2luZC1zamxqLmM6IExpa2V3aXNlLgoJKiB1bndpbmQuaW5jOiBMaWtld2lzZS4KCjIwMDMtMDgtMTkgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGMvNTU4MiBQUiBjKysvMTA1MzgKCSogbGFuZ2hvb2tzLWRlZi5oIChsaGRfZGVjbF91bmluaXQpOiBEZWNsYXJlLgoJKExBTkdfSE9PS1NfREVDTF9VTklOSVQpOiBOZXcgbWFjcm8uCgkoTEFOR19IT09LU19JTklUSUFMSVpFUik6IEFkanVzdC4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzKTogQWRkIG5ldyBmaWVsZAoJZGVjbF91bmluaXQuCgkqIGxhbmdob29rcy5jIChsaGRfZGVjbF91bmluaXQpOiBEZWZpbmUuCgkqIGMtY29tbW9uLmMgKGNfZGVjbF91bmluaXRfMSk6IE5ldyBmdW5jdGlvbi4KCShjX2RlY2xfdW5pbml0KTogTmV3IGZ1bmN0aW9uLgoJKHdhcm5faW5pdF9zZWxmKTogRGVmaW5lLgoJKiBjLWNvbW1vbi5oIChjX2RlY2xfdW5pbml0KTogRGVjbGFyZS4KCSh3YXJuX2luaXRfc2VsZik6IERlY2xhcmUuCgkqIGMub3B0OiBJbnRyb2R1Y2UgLVdpbml0LXNlbGYuCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9oYW5kbGVfb3B0aW9ucyk6IFNldCB3YXJuX2luaXRfc2VsZi4KCSogYy1sYW5nLmMgKExBTkdfSE9PS1NfREVDTF9VTklOSVQpOiBEZWZpbmUuCgkqIG9iamMvb2JqYy1sYW5nLmMgIChMQU5HX0hPT0tTX0RFQ0xfVU5JTklUKTogRGVmaW5lLgoJKiBmdW5jdGlvbi5jICh1bmluaXRpYWxpemVkX3ZhcnNfd2FybmluZyk6IENhbGwgdGhlIGxhbmd1YWdlIGhvb2suCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLVdpbml0LXNlbGYuCgoyMDAzLTA4LTE5ICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAYnJvYWRjb20uY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZDogQWRqdXN0IFNJLW1vZGUgInRyYXBfaWYiIGluc3RydWN0aW9uCgl0byB1c2UgYmV0dGVyIHByZWRpY2F0ZXMgYW5kIGNvbnN0cmFpbnRzLiAgRGVmaW5lIG5ldwoJaW5zdHJ1Y3Rpb24gdG8gaGFuZGxlICJ0cmFwX2lmIiB3aXRoIERJLW1vZGUgYXJndW1lbnRzLgoJKGNvbmRpdGlvbmFsX3RyYXApOiBGQUlMIGlmIHRyYXAgY29kZSBpcyBub3QgMC4KCjIwMDMtMDgtMTkgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChsZWdpdGltYXRlX3BpY19hZGRyZXNzX2Rpc3BfcCk6IENoYW5nZSB0aGUKCXN0cnN0ciB3aXRoICRwYiB0byBhIHN0cmNvbXBhcmUgd2l0aCAiPHBpYyBiYXNlPiIKCShpeDg2X291dHB1dF9hZGRyX2RpZmZfZWx0KTogT3V0cHV0IHRoZSByZWFsIHBpYyBiYXNlLgoKMjAwMy0wOC0xOSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBsYW5naG9va3MtZGVmLmggKExBTkdfSE9PS1NfSU5JVElBTElaRV9ESUFHTk9TVElDUyk6IEZpeCBzcGVsbGluZy4KCShMQU5HX0hPT0tTX0lOSVRJQUxJWkVSKTogQ29ycmVjdC4KCSogYy1sYW5nLmM6IExpa2V3aXNlLgoKMjAwMy0wOC0xOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBoLmMgKGNncmFwaF9tYXJrX25lZWRlZF9ub2RlKTogQ2FsbCBub3RpY2VfZ2xvYmFsX3N5bWJvbC4KCShjZ3JhcGhfdmFycG9vbF9tYXJrX25lZWRlZF9ub2RlKTogTGlrZXdpc2UuCgkqIGNncmFwaC5oIChub3RpY2VfZ2xvYmFsX3N5bWJvbCk6IERlY2xhcmUKCSogdmFyYXNtLmMgKG5vdGljZV9nbG9iYWxfc3ltYm9sKTogQnJlYWsgb3V0IGZyb20gLi4uCgkoYXNzZW1ibGVfc3RhcnRfZnVuY3Rpb24pOiAuLi4gaGVyZTsgdXBkYXRlIGZvciB2YXJpYWJsZXMuCgkoYXNzZW1ibGVfdmFyaWFibGUpOiBVc2Ugbm90aWNlX2dsb2JhbF9zeW1ib2wuCgoyMDAzLTA4LTE5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfdmFfYXJnKTogSWYgRUFCSV9GTE9BVF9WQVJBUkdTX1AsCglleHBlY3QgU0Ztb2RlIGFuZCBERm1vZGUgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCBpbiBGUFJzLAoJcmVnYXJkbGVzcyBvZiB0aGUgdW5kZXJseWluZyB0eXBlLgoKMjAwMy0wOC0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xMTkyNAoJKiBjb25maWcvbWlwcy9taXBzLmMgKElOVEVSTkFMX1NZTUJPTF9QKTogTmV3IG1hY3JvLgoJKG1pcHNfY2xhc3NpZnlfc3ltYm9sLCBtMTZfdXN5bThfNCwgbTE2X3VzeW01XzQpOiBVc2UgaXQuCgoyMDAzLTA4LTE4ICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJUFIgYy8xMTIwNwoJKiBjLXR5cGVjay5jIChzZXRfaW5pdF9pbmRleCk6IENoZWNrIGZvciBuZWdhdGl2ZSBpbmRleC4KCjIwMDMtMDgtMTggIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL2NydGkuYXNtIChfaW5pdCwgX2ZpbmkpOiBBZGQgYWx0ZXJuYXRlIGNvZGUgZm9yIG5ldwoJY2FsbDAgQUJJLgoJKiBjb25maWcveHRlbnNhL2NydG4uYXNtIChfaW5pdCwgX2ZpbmkpOiBMaWtld2lzZS4KCSogY29uZmlnL3h0ZW5zYS9saWIxZnVuY3MuYXNtIChfX211bHNpMywgX191ZGl2c2kzLCBfX2RpdnNpMywKCV9fdW1vZHNpMywgX19tb2RzaTMpOiBMaWtld2lzZS4KCSogY29uZmlnL3h0ZW5zYS90LXh0ZW5zYSAoY3J0aS5vLCBjcnRuLm8pOiBBZGQgJChHQ0NfQ0ZMQUdTKSBhbmQKCSQoSU5DTFVERVMpLgoKMjAwMy0wOC0xOCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zcGUubWQgKCIqbmFic3NmMl9ncHIiKTogTmV3LgoKMjAwMy0wOC0xOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZDogUXVvdGUgQyBjb2RlIGluIGJyYWNlcy4gIFJlbW92ZSB1c2Ugb2YKCWZha2UgY29uc3QwX3J0eCBvcGVyYW5kcy4gIFJlbW92ZSBkb3VibGUgYmFja3NsYXNoZXMuICBVc2UgXDsuCglSZW1vdmUgd29ya2Fyb3VuZHMgZm9yIGJvZ3VzIHdhcm5pbmdzLgoKMjAwMy0wOC0xOCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAobXVsZGYzLCBtdWxzZjMpOiBEb24ndCBjYWxsIGEgZ2VuXyogZnVuY3Rpb24uCgkobXVsZGYzX2ludGVybmFsLCBtdWxkZjNfcjQzMDApOiBTZWxlY3QgYmFzZWQgb24gVEFSR0VUXzQzMDBfTVVMX0ZJWAoJcmF0aGVyIHRoYW4gVEFSR0VUX01JUFM0MzAwLgoJKG11bHNmM19pbnRlcm5hbCwgbXVsc2YzX3I0MzAwKTogTGlrZXdpc2UuCgoyMDAzLTA4LTE4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBSZW51bWJlciB1bnNwZWNzLiAgQ2xlYW4gdXAgY29tbWVudHMuCgoyMDAzLTA4LTE3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChhc3NvY2lhdGl2ZV9jb25zdGFudF9wKTogTmV3IGZ1bmN0aW9uIHRvIHRlc3QKCXdoZXRoZXIgYW4gUlRYIGV4cHJlc3Npb24gaXMgYW4gaW1tZWRpYXRlIGNvbnN0YW50LgoJKHNpbXBsaWZ5X2Fzc29jaWF0aXZlX29wZXJhdGlvbik6IE5ldyBmdW5jdGlvbiB0byBwZXJmb3JtIHNvbWUKCXJlYXNzb2NpYXRpb24gb3B0aW1pemF0aW9ucyBvZiBhc3NvY2lhdGl2ZSBiaW5hcnkgZXhwcmVzc2lvbnMuCgkoc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbik6IFVzZSBzaW1wbGlmeV9hc3NvY2lhdGl2ZV9vcGVyYXRpb24KCXRvIHNpbXBsaWZ5IFBMVVMsIE1VTFQsIEFORCwgSU9SLCBYT1IsIFNNSU4sIFNNQVgsIFVNSU4gYW5kIFVNQVguCglGbG9hdGluZyBwb2ludCBleHByZXNzaW9ucyBhcmUgb25seSByZWFzc29jaWF0ZWQgd2hlbiB1bnNhZmUKCW1hdGggb3B0aW1pemF0aW9ucyBhcmUgcGVybWl0dGVkLgoKMjAwMy0wOC0xNyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlnL2FscGhhL2FscGhhLm1kOiBSZW1vdmUgdXNhZ2Ugb2YgUEFSQU1TLgoKCSogY29uZmlnL2kzODYvY3lnd2luLmg6IENvbnZlcnQgSyZSIHByb3RvdHlwZXMgdG8gSVNPIEM5MC4KCSogY29uZmlnL2kzODYvaTM4Ni1pbnRlcml4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni93aW5udC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvY3lnbWluZy5oOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvY3lnd2luMi5jOiBMaWtld2lzZS4KCSogY29uZmlnL2Rhcndpbi5jOiBMaWtld2lzZS4KCSogY29uZmlnL2Rhcndpbi1jLmM6IExpa2V3aXNlLgoJKiBjb25maWcvZGFyd2luLXByb3Rvcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL2Rhcndpbi5oOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYzogTGlrZXdzZQoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC1jLmM6IExpa2V3aXNlLgoKMjAwMy0wOC0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmM6IENvbnZlcnQgdG8gSVNPIEMuCgoJKiBjb25maWcvc3BhcmMvc3BhcmMtcHJvdG9zLmg6IERvbid0IHVzZSB0aGUgUEFSQU1TIG1hY3JvLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYzogTGlrZXdpc2UuCgoyMDAzLTA4LTE2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xMTUxMgoJKiBzdG10LmMgKGV4cGFuZF9leHByX3N0bXRfdmFsdWUpOiBEb24ndCB3YXJuIGFib3V0IGFueSB2b2lkCgl0eXBlZCBleHByZXNzaW9uLgoKMjAwMy0wOC0xNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChpeDg2X2ZudHlwZV9yZWdwYXJtKTogUmVuYW1lIGZyb20gLi4uCgkoaXg4Nl9mdW5jdGlvbl9yZWdwYXJtKTogLi4uIHRoaXMgb25lOyBhZGQgZmFzdGNhbGwgYW5kIGxvY2FsCglmdW5jdGlvbnMuCgkoaXg4Nl9mdW5jdGlvbl9va19mb3Jfc2liY2FsbCk6IFVwZGF0ZS4KCShpeDg2X3JldHVybl9wb3BzX2FyZ3MpOiBMaWtld2lzZS4KCShpbml0X2N1bXVsYXRpdmVfYXJncyk6IExpa2V3aXNlLgoJKHg4Nl9jYW5fb3V0cHV0X21pX3RodW5rKTogTGlrZXdpc2UuCgkoZnVuY3Rpb25fYXJnKTogRml4IGZvcm1hdGluZy4KCSh4ODZfdGhpc19wYXJhbWV0ZXIpOiBGaXggZmFzdGNhbGwuCgkoeDg2X291dHB1dF9taV90aHVuayk6IExpa2V3aXNlLgoKCSogY2dyYXBoLmMgKGNncmFwaF9tYXJrX25lZWRlZF9ub2RlKTogRG8gbm90IG1hcmsgZnVuY3Rpb25zIHdpdGhvdXQKCWJvZHkgYXMgcmVhY2hhYmxlOyBtYXJrIG5lc3RlZCBmdW5jdGlvbnMgYXMgbmVlZGVkIHRvby4KCShkdW1wX2NncmFwaCk6IERvIG5vdCBvdXRwdXQgZ2xvYmFsLmNhbGxzLgoJKiBjZ3JhcGguaCAoY2dyYXBoX2dsb2JhbF9pbmZvKTogS2lsbC4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiBFbnF1ZXVlIG5lZWRlZCBmdW5jdGlvbnMuCgkocmVjb3JkX2NhbGxfMSk6IFNwZWVkdXAuCgkoY2dyYXBoX2FuYWx5emVfZnVuY3Rpb24pOiBCcmVhayBvdXQgZnJvbSAuLi47IGNvbXB1dGUgaW5saW5pbmcKCXBhcmFtZXRlcnMuCgkoY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQpOiAuLi4gaGVyZS4KCShjZ3JhcGhfbWFya19pbmxpbmUpOiBLaWxsIGNvbXB1dGF0aW9uIG9mIGNhbGxzLgoJKGNncmFwaF9kZWNpZGVfaW5saW5pbmcpOiBEbyBub3QgY29tcHV0ZSBtb3N0IG9mIGluaXRpYWwgdmFsdWVzLgoKMjAwMy0wOC0xNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKG5lZ2F0ZV9leHByX3ApOiBNVUxUX0VYUFJzIGFuZCBSRElWX0VYUFJzIGFyZSBlYXN5Cgl0byBuZWdhdGUgaWYgZWl0aGVyIG9wZXJhbmQgaXMgZWFzeSB0byBuZWdhdGUsIGlmIHdlIGRvbid0IGNhcmUKCWFib3V0IHNpZ24tZGVwZW5kZW50IHJvdW5kaW5nLgoJKG5lZ2F0ZV9leHByKTogTWFrZSB0aGUgbG9naWMgdG8gbmVnYXRlIGEgUkVBTF9DU1QgZXhwbGljaXQuCglBdHRlbXB0IHRvIG5lZ2F0ZSBhIE1VTFRfRVhQUiBvciBSRElWX0VYUFIgYnkgbmVnYXRpbmcgYW4gb3BlcmFuZAoJdGhhdCdzIGVhc3kgdG8gbmVnYXRlLCBpZiB3ZSBkb24ndCBob25vciBzaWduLWRlcGVuZGVudCByb3VuZGluZy4KCShmb2xkIDxNVUxUX0VYUFI+KTogT3B0aW1pemUgLUEgKiBCIGFzIEEgKiAtQiBpZiBCIGlzIGVhc3kgdG8KCW5lZ2F0ZSwgYW5kIHRoZSBzeW1tZXRyaWMgQSAqIC1CIGFzIC1BICogQiBpZiBBIGlzIGVhc3kgdG8gbmVnYXRlLgoJKGZvbGQgPFJESVZfRVhQUj4pOiBMaWtld2lzZSwgb3B0aW1pemUgLUEvQiBhbmQgQy8tRCBhcyBBLy1CIGFuZAoJLUMvRCBpZiBCIGFuZCBDIGFyZSBjaGVhcCB0byBuZWdhdGUuICBBZGQgYW4gZXhwbGljaXQgcnVsZSB0bwoJb3B0aW1pemUgWC8tMS4wIGFzIC1YIHdoZW4gd2UgZG9uJ3QgY2FyZSBhYm91dCBzaWduYWxpbmcgTmFOcy4KCjIwMDMtMDgtMTQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAodG1fZmlsZSk6IFJlbmFtZSB0bV9pbmNsdWRlX2xpc3QuCgkodG1fcF9maWxlKTogUmVuYW1lIHRtX3BfaW5jbHVkZV9saXN0LgoJKGJ1aWxkX3htX2ZpbGUpOiBSZW5hbWUgYnVpbGRfeG1faW5jbHVkZV9saXN0LgoJKGhvc3RfeG1fZmlsZSk6IFJlbmFtZSBob3N0X3htX2luY2x1ZGVfbGlzdC4KCSh4bV9maWxlKTogUmVuYW1lIHhtX2luY2x1ZGVfbGlzdC4KCSh4bV9maWxlX2xpc3QpOiBBZGQgdG8gYmUgc3Vic3RpdHV0ZWQuCgkoY3MtY29uZmlnLmgsIGNzLWJjb25maWcuaCwgY3MtdGNvbmZpZy5oLCBjcy10bS5oLCBjcy10bV9wLmgpOgoJVXBkYXRlIHRvIG1hdGNoLgoJKGJ0LWxvYWQubyk6IEFkZCBtaXNzaW5nIGRlcGVuZGVuY3kgb24gJChUTV9IKS4KCSogY29uZmlndXJlLmluOiBQcmVmaXggdmFsdWUgb2YgRVhUUkFfTU9ERVNfRklMRSB3aXRoIGNvbmZpZy8uCglGb3IgZWFjaCBvZiB0bV9maWxlLCB0bV9wX2ZpbGUsIHhtX2ZpbGUsIGhvc3RfeG1fZmlsZSwgYW5kCglidWlsZF94bV9maWxlLCBnZW5lcmF0ZSBib3RoICpfZmlsZV9saXN0IGFuZCAqX2luY2x1ZGVfbGlzdAoJdmFsdWVzIGZyb20gaXQuICAoeG1fZmlsZV9saXN0IHdhcyBmb3JtZXJseSBub3QgYmVpbmcgZ2VuZXJhdGVkLikKCUluICpfaW5jbHVkZV9saXN0LCBwcmVmaXggdGhlIG5hbWVzIG9mIGFsbCBoZWFkZXJzIGZvdW5kIGluCgkkKHNyY2RpcikvY29uZmlnIHdpdGggY29uZmlnLy4gIEluIGVhY2ggbG9vcCwgY29uc2lkZXIgb25seQoJdGhlIHNwZWNpYWwgY2FzZSBmaWxlcyB0aGF0IGNhbiBhY3R1YWxseSBhcHBlYXIgaW4gdGhhdCBsaXN0LgoJQUNfU1VCU1QgYWxsICpfZmlsZV9saXN0IGFuZCBhbGwgKl9pbmNsdWRlX2xpc3QgdmFyaWFibGVzOyBkbwoJbm90IEFDX1NVQlNUIHRoZSBwbGFpbiAqX2ZpbGUgdmFyaWFibGVzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA4LTE0ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBjZmcuYyAoZHVtcF9lZGdlX2luZm8pOiBBZGQgbmFtZSBvZiBsb29wX2V4aXQgZWRnZSBmbGFnLgoKMjAwMy0wOC0xNCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLmMgKHBhX2FkanVzdF9pbnNuX2xlbmd0aCk6IERlbGV0ZSBhZGp1c3RtZW50IGZvciBkZWxheSBzbG90IGluCglkaXJlY3QgY2FsbHMuCgkoYXR0cl9sZW5ndGhfY2FsbCk6IEluY2x1ZGUgaXQgaGVyZS4gIEltcHJvdmUgbGVuZ3RoIGVzdGltYXRlIGZvcgoJbG9jYWwgY2FsbHMuCgkob3V0cHV0X2NhbGwpOiBVc2UgdGFyZ2V0bS5iaW5kc19sb2NhbF9wLgoKMjAwMy0wOC0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoQ0FTRV9NQVRIRk4pOiBOZXcgaGVscGVyIG1hY3JvLgoJKG1hdGhmbl9idWlsdF9pbik6IFNpbXBsaWZ5IGFuZCBzb3J0LgoKCSogcHJvdG9pemUuYyAoc3Vic3RyKTogRGVsZXRlLCBjYWxsZXJzIGNoYW5nZWQgdG8gYHN0cnN0cicuCgoyMDAzLTA4LTEzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYyAoaXEyMDAwKi0qLWVsZiopOiBEb24ndCBzZXQgeG1fZmlsZS4KCSogY29uZmlnL2lxMjAwMC94bS1pcTIwMDAuaDogRGVsZXRlIGZpbGUuCgoyMDAzLTA4LTEzICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGdlbmd0eXBlLmMgKHdhbGtfdHlwZSk6IFByb2Nlc3MgYSBzdWJvYmplY3QgYmVmb3JlIHByb2Nlc3NpbmcKCXRoZSBwb2ludGVyIHRoYXQgcG9pbnRzIHRvIHRoZSBzdWJvYmplY3QuCgoyMDAzLTA4LTEzICBQZXIgQm90aG5lciAgPHBib3RobmVyQGFwcGxlLmNvbT4KCgkqIHJlZ2NsYXNzLmMgKGluaXRfcmVnX21vZGVzKTogIE1ha2Ugbm9uLXN0YXRpYy4KCVJlbmFtZSB0byBpbml0X3JlZ19tb2Rlc19vbmNlIHBlciBuZXcgbmFtaW5nIGNvbnZlbnRpb24uCgkoaW5pdF9yZWdzKTogIERvbid0IGNhbGwgaW5pdF9yZWdfbW9kZXMgaGVyZS4KCSogZW1pdC1ydGwuYyAoaW5pdF9lbWl0X29uY2UpOiAgQ2FsbCBpbml0X3JlZ19tb2Rlc19vbmNlIGhlcmUgaW5zdGVhZC4KCSogcnRsLmggKGluaXRfcmVnX21vZGVzX29uY2UpOiAgTmV3IGRlY2xhcmF0aW9uLgoJKiB0b3BsZXYuYyAoYmFja2VuZF9pbml0KTogIENhbGwgaW5pdF9yZWdzIGFmdGVyIGluaXRfZW1pdF9vbmNlLgoKMjAwMy0wOC0xMyAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvbGludXguaCAoREJYX1JFR0lTVEVSX05VTUJFUik6IERlZmluZSBzbyB0byBtYXAgYQoJc3BlY2lhbCBpbmRleCBmb3IgTURfRkFMTEJBQ0tfRlJBTUVfU1RBVEVfRk9SIHRvIGl0c2VsZi4KCjIwMDMtMDgtMTMgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogc2guYyAoc2hfZ2V0X3ByX2luaXRpYWxfdmFsKTogQWx3YXlzIHdyYXAgaW4gdW5zcGVjIGZvciBUQVJHRVRfU0gxLgoJKiBzaC5tZCAobG9hZF9yYSk6IENoYW5nZSBpbnNuIHByZWRpY2F0ZSB0byBUQVJHRVRfU0gxLgoKMjAwMy0wOC0xMyAgRGFsZSBKb2hhbm5lc2VuICA8ZGFsZWpAYXBwbGUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGN0cnNpLCBjdHJkaSk6ICBSZWVuYWJsZQoJaGFuZGxpbmcgb2YgZGVjcmVtZW50LWFuZC1icmFuY2ggZmFydGhlciB0aGFuIDMyIGJpdHMuCgoyMDAzLTA4LTEyICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAobWFrZV9jb21wYXJlX3RhcmdldCk6IE1vdmUgdGVzdCB0byAuLi4KCSogYWNsb2NhbC5tNCAoZ2NjX0FDX1BST0dfQ01QX0lHTk9SRV9JTklUSUFMKTogaGVyZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wOC0xMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvaXJpczYuaDogQ29udmVydCB0byBDOTAgcHJvdG90eXBlcy4KCSogY29uZmlnL21pcHMvaXJpeDYtbGliYy1jb21wYXQuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmM6IExpa2V3aXNlLgoKMjAwMy0wOC0xMiAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJZml4aW5jL2luY2xoYWNrLmRlZiAoc3ZyNF9rcm5sKTogUmVuYW1lIGZyb20gc3ZyNF9rZXJuZWwuICBFbmFibGUKCWZvciBzZWxlY3RlZCBtYWNoaW5lcy4gIENvbW1lbnQgaGVhdmlseS4KCWZpeGluYy9maXhpbmNsLng6IFJlYnVpbGQuCglmaXhpbmMvdGVzdHMvYmFzZS9mcy9yZnMvcmZfY2FjaGUuaDogTmV3IGZpbGUuCgoyMDAzLTA4LTEyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmg6IFR3ZWFrIHZhcmlvdXMgY29tbWVudHMuCgkqIGNvbmZpZy9taXBzL21pcHMuYzogTGlrZXdpc2UuCgoyMDAzLTA4LTExICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkB0dWxpcHRyZWUub3JnPgoKCVBSIG9wdGltaXphdGlvbi8xMTMxOQoJUFIgdGFyZ2V0LzEwMDIxCgkqIGFsaWFzLmMgKGZpbmRfYmFzZV92YWx1ZSwgY2FzZSBSRUcpOiBSZXR1cm4gMCBub3Qgc3JjIGlmIG5vIGJhc2UKCWZvdW5kLgoKMjAwMy0wOC0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2NzZS5jIChnbWFsbG9jKTogRml4IGxhc3QgY2hhbmdlLgoKMjAwMy0wOC0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbik6IFJlcGxhY2UgY2FsbHMgdG8KCWdlbl9ydHhfTkVHIGFuZCBnZW5fcnR4X05PVCB3aXRoIGNhbGxzIHRvIHNpbXBsaWZ5X2dlbl91bmFyeSwKCWFuZCBjYWxscyB0byBnZW5fcnR4X1BMVVMsIGdlbl9ydHhfTVVMVCwgZ2VuX3J0eF9MU0hJRlRSVCwKCWdlbl9ydHhfQVNISUZUIGFuZCBnZW5fcnR4X0FORCB3aXRoIGNhbGxzIHRvIHNpbXBsaWZ5X2dlbl9iaW5hcnkuCgoyMDAzLTA4LTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBJZiBhbiBBQlNfRVhQUiBoYXMgYSBjb21wbGV4IHR5cGUsIGFib3J0LgoJKiBjLXR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IENPTVBMRVhfVFlQRSBpcyBub3QgYSB2YWxpZAoJdHlwZWNvZGUgZm9yIGFuIEFCU19FWFBSLgoKCSogZG9jL2MtdHJlZS50ZXhpOiBEb2N1bWVudCBBQlNfRVhQUi4KCjIwMDMtMDgtMTEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogT3B0aW1pemUgYW55IGFzc29jaWF0aXZlIGZsb2F0aW5nIHBvaW50CglvcGVyYXRvciB3aXRoIC1mdW5zYWZlLW1hdGgtb3B0aW1pemF0aW9ucywgbm90IGp1c3QgTVVMVF9FWFBSLgoKMjAwMy0wOC0xMSAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvbGliMWZ1bmNzLmFzbSAoX191ZGl2ZGkzKTogQWRkIC50eXBlIGFuZCAuc2l6ZQoJaW5mb3JtYXRpb24gaW4gU0htZWRpYSBjYXNlIHRvby4KCShfX2RpdmRpMywgX191bW9kZGkzLCBfX21vZGRpMywgX19pbml0X3RyYW1wb2xpbmUsIF9faWNfaW52YWxpZGF0ZSk6CglMaWtld2lzZS4KCShfX3NldF9mcHNjcik6IFVzZSBhbiBhY2Nlc3MgdmlhIEdPVCBmb3IgUElDIGNhc2UuCgoyMDAzLTA4LTExICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoaW50ZXJtb2R1bGUpOiBNYWtlIHN3aXRjaCB0ZXN0IG1vcmUgcG9ydGFibGUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDgtMTEgIEtlbGxleSBDb29rICA8a2VsbGV5Y29va0B3aWRlb3Blbndlc3QuY29tPgoKCSogTWFrZWZpbGUuaW4gKGNsZWFuc3RyYXApOiBQYXNzIEJPT1RfQ0ZMQUdTIHRvIGJvb3RzdHJhcC4KCShyZXN0cmFwKTogTGlrZXdpc2UuCgoyMDAzLTA4LTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnY3NlLmMgKGdtYWxsb2MpOiBBcmd1bWVudCBpcyBhIHNpemVfdC4gIEFkZCBBVFRSSUJVVEVfTUFMTE9DLgoJKGdyZWFsbG9jKTogU2l6ZSBhcmd1bWVudCBpcyBhIHNpemVfdC4KCShnY2FsbG9jKTogTmV3IGZ1bmN0aW9uLiAgVXNlIHRocm91Z2hvdXQgaW4gbGlldSBvZgoJZ21hbGxvYy9tZW1zZXQuCgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfaW5pdF9vbmNlKTogVXNlIHhjYWxsb2MgaW4gbGlldSBvZgoJeG1hbGxvYy9tZW1zZXQuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9yZW9yZyk6IExpa2V3aXNlLgoJKiBjb25mbGljdC5jIChjb25mbGljdF9ncmFwaF9uZXcpOiBMaWtld2lzZS4KCSogZml4aW5jL2ZpeGluY2wuYyAocnVuX2NvbXBpbGVzKTogTGlrZXdpc2UuCgkqIGdlbmF0dHJ0YWIuYyAob3B0aW1pemVfYXR0cnMpOiBMaWtld2lzZS4KCSogZ2VucmVjb2cuYyAobmV3X2RlY2lzaW9uKTogTGlrZXdpc2UuCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkdWxlX2Jsb2NrKTogTGlrZXdpc2UuCgkqIGhhc2h0YWJsZS5jIChodF9jcmVhdGUpOiBMaWtld2lzZS4KCjIwMDMtMDgtMTEgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL2xpYjJmdW5jcy5TOiBGaXggd2hpdGVzcGFjZS4KCSogY29uZmlnL3h0ZW5zYS94dGVuc2EubWQgKGFsbCBpbnNucyBhbmQgZXhwYW5kZXJzKTogVXNlIGJyYWNlIGJsb2NrCglzeW50YXggd2hlcmUgYXBwcm9wcmlhdGUuICBSZW1vdmUgdW5uZWNlc3NhcnkgYmFja3NsYXNoIGVzY2FwZXMuCglSZWZvcm1hdCBjb21tZW50cyBhbmQgZml4IHNvbWUgY29kZSBmb3JtYXR0aW5nLgoJKGV4dGVuZHFpc2kyKTogUmVhcnJhbmdlIGNvbmRpdGlvbmFsLgoJKCpidHJ1ZSwgKmJmYWxzZSwgKnVidHJ1ZSwgKnViZmFsc2UsICpiaXR0cnVlLCAqYml0ZmFsc2UsICptYXNrdHJ1ZSwKCSptYXNrZmFsc2UsIG1vdnNpY2NfaW50ZXJuYWwwLCBtb3ZzZmNjX2ludGVybmFsMCk6IENhbGwgYWJvcnQgaW5zdGVhZAoJb2YgZmF0YWxfaW5zbi4KCjIwMDMtMDgtMTEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYzogVmFyaW91cyBmb3JtYXR0aW5nIGZpeGVzLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBSZXN5bmMgLW10dW5lIGhhbmRsaW5nIHdpdGggZ2FzLgoJKG1pcHNfaXNzdWVfcmF0ZSk6IFJlYXJyYW5nZSBsaWtlIG1pcHNfdXNlX2RmYV9waXBlbGluZV9pbnRlcmZhY2UuCgkqIGNvbmZpZy9taXBzL21pcHMuaDogTW9yZSBmb3JtYXR0aW5nIGZpeGVzLgoJKG1pcHNfYWJpKTogTW92ZSBkZWNsYXJhdGlvbi4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoZXhjZXB0aW9uX3JlY2VpdmVyKTogQWRkIG1vZGUgdG8KCXVuc3BlY192b2xhdGlsZS4KCjIwMDMtMDgtMTEgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHNwZV9pbml0X2J1aWx0aW5zKTogSGFuZGxlIGV2c3BsYXRpIGFuZAoJZXZzcGxhdGZpIGhlcmUuCgkoYmRlc2NfMWFyZyk6IFJlbW92ZSBldnNwbGF0aSBhbmQgZXZzcGxhdGZpLgoKMjAwMy0wOC0xMSAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBkd2FyZjJhc20uYyAoZHcyX291dHB1dF9pbmRpcmVjdF9jb25zdGFudF8xKTogVGFrZSB1c2VyX2xhYmVsX3ByZWZpeAoJaW50byBhY2NvdW50LgoKMjAwMy0wOC0xMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3RyY2F0KTogT3B0aW1pemUgY29uc3RhbnQgc3RyaW5ncy4KCjIwMDMtMDgtMTAgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogcHJldHR5LXByaW50LmMgKHBwX2Jhc2VfaW5kZW50KTogUmVuYW1lIGZyb20gcHBfaW5kZW50LgoJKiBjLXByZXR0eS1wcmludC5oIChwcF9jX3ByZXR0eV9wcmludF9mbGFnKXM6IE5ldyBkYXRhdHlwZS4KCShzdHJ1Y3QgY19wcmV0dHlfcHJpbnRfaW5mbyk6IEFkZCBtb3JlIGZpZWxkcy4KCShwcF9jX2xlZnRfcGFyZW4pOiBNb3ZlIHRvIGMtcHJldHR5LXByaW50LmMuCgkocHBfY19yaWdodF9wYXJlbik6IExpa2V3aXNlLgoJKHBwX2NfbGVmdF9icmFjZSk6IExpa2V3aXNlLgoJKHBwX2NfcmlnaHRfYnJhY2UpOiBMaWtld2lzZS4KCShwcF9jX2xlZnRfYnJhY2tldCk6IExpa2V3aXNlLgoJKHBwX2NfcmlnaHRfYnJhY2tldCk6IExpa2V3aXNlLgoJKHBwX2NfZGVjbGFyYXRvcik6IERlY2xhcmUuCgkocHBfY19kaXJlY3RfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHBwX2Nfc3BlY2lmaWVyX3F1YWxpZmllcl9saXN0KTogTGlrZXdpc2UuCgkocHBfY190eXBlX2lkKTogTGlrZXdpc2UuCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2NfY3ZfcXVhbGlmaWVyKTogQ2hhbmdlIHByb290eXBlLiBSZXdvcmsuLgoJKHBwX2NfdHlwZV9xdWFsaWZpZXJfbGlzdCk6IE5ldy4KCShwcF9jX3BvaW50ZXIpOiBMaWtld2lzZS4KCShwcF9jX3BhcmFtZXRlcl90eXBlX2xpc3QpOiBMaWtld2lzZS4KCShwcF9jX2Z1bmN0aW9uX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCShwcF9jX2lkX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jX3NpbXBsZV90eXBlX3NwZWNpZmllcik6IFRpZHkuCgkocHBfY191bmFyeV9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19wcmV0dHlfcHJpbnRlcl9pbml0KTogTGlrZXdpc2UuCgkocHBfY19zcGVjaWZpZXJfcXVhbGlmaWVyX2xpc3QpOiBSZXdvcmsuLgoJKHBwX2NfYWJzdHJhY3RfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHBwX2NfcG9zdGZpeF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkocHBfY19wcmltYXJ5X2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jX2Nhc3RfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKHBwX2NfZGlyZWN0X2Fic3RyYWN0X2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShwcF9jX3N0b3JhZ2VfY2xhc3Nfc3BlY2lmaWVyKTogTGlrZXdpc2UuCgkocHBfY19mdW5jdGlvbl9zcGVjaWZpZXIpOiBMaWtld2lzZS4KCShwcF9jX2RlY2xhcmF0aW9uX3NwZWNpZmllcnMpOiBMaWtld2lzZS4KCShwcF9jX2RpcmVjdF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkocHBfY19kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkocHBfY19kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoJKHBwX2Nfc3RhdGVtZW50KTogTGlrZXdpc2UuCgkocHBfY19pbnRlZ2VyX2NvbnN0YW50KTogUmVuYW1lIGZyb20gcHBfY19pbnRlZ2VyX2xpdGVyYWwuCgkocHBfY19jaGFyYWN0ZXJfY29uc3RhbnQpOiBSZW5hbWUgZnJvbSBwcF9jX2NoYXJhY3Rlcl9saXRlcmFsLgoJKHBwX2NfYm9vbF9jb25zdGFudCk6IFJlbmFtZSBmcm9tIHBwX2NfYm9vbF9saXRlcmFsLgoJKHBwX2NfZW51bWVyYXRpb25fY29uc3RhbnQpOiBSZW5hbWUgZnJvbSBwcF9jX2VudW1lcmF0b3IuCgkocHBfY19mbG9hdGluZ19jb25zdGFudCk6IFJlbmFtZSBmcm9tIHBwX2NfcmVhbF9saXRlcmFsLgoJKHBwX2NfY29uc3RhbnQpOiBSZW5hbWUgZnJvbSBwcF9jX2xpdGVyYWwuCgkqIGMtbGFuZy5jOiBJbmNsdWRlIGRpYWdub3N0aWMuaCBhbmQgYy1wcmV0dHktcHJpbnQuaAoJKExBTkdfSE9PS1NfSU5JVElBTElaRV9ESUFHTk9TVElUQ1MpOiBEZWZpbmUuCgkoY19pbml0aWFsaXplX2RpYWdub3N0aWNzKTogTmV3LgoJKiBNYWtlZmlsZS5pbiAoYy1sYW5nLm8pOiBVcGRhdGUgZGVwZW5kZW5jeS4KCjIwMDMtMDgtMTAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXR5cGVjay5jIChkaWdlc3RfaW5pdCk6IEFkZCBjb252ZXJzaW9uIGZvciBWRUNUT1JfVFlQRXMuCgoyMDAzLTA4LTEwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfbm9fbWlwczE2X3N0cmluZyk6IFJlbW92ZS4KCShvdmVycmlkZV9vcHRpb25zKTogRG9uJ3QgaGFuZGxlIC1taXBzMTYgYXMgcGFydCBvZiAtbWlwc04uCgkqIGNvbmZpZy9taXBzL21pcHMuaCAobWlwc19ub19taXBzMTZfc3RyaW5nKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbWlwczE2IGFuZCAtbW5vLW1pcHMxNiBlbnRyaWVzLgoJKFRBUkdFVF9PUFRJT05TKTogUmVtb3ZlIC1tbm8tbWlwczE2LgoKMjAwMy0wOC0xMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAoY29wcm9jZXNzb3Jfb3BlcmFuZCk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShjb3Byb2Nlc3NvcjJfb3BlcmFuZCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKFNUQUJfQ09ERV9UWVBFKTogUmVtb3ZlLgoJKGxvb2t1cF9uYW1lKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGFib3J0X3dpdGhfaW5zbik6IFJlbW92ZS4gIFJlcGxhY2UgYWxsIHVzZXMgd2l0aCBmYXRhbF9pbnNuLgoJKG1pcHMxNiwgbWlwc19hYmljYWxscyk6IFJlbW92ZS4KCShtaXBzX2NoYXJfdG9fY2xhc3MpOiBSZW1vdmUgaW5pdGlhbGlzZXI6IGFsbCBlbnRyaWVzIGFyZSBOT19SRUdTLgoJKGFyaXRoMzJfb3BlcmFuZCwgbGFyZ2VfaW50LCB0cnVlX3JlZ19vcl8wX29wZXJhbmQpOiBSZW1vdmUuCgkoY29wcm9jZXNzb3Jfb3BlcmFuZCwgY29wcm9jZXNzb3IyX29wZXJhbmQpOiBSZW1vdmUuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IERvbid0IHNldCBtaXBzMTYgb3IgbWlwc19hYmljYWxscy4KCShwcmludF9vcGVyYW5kKTogRG9uJ3QgZXhwZWN0IFNJR05fRVhURU5EIG9wZXJhbmRzLgoJKG1pcHNfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyk6IExpa2V3aXNlLgoJKG1pcHNfb3V0cHV0X2NvbmRpdGlvbmFsX2JyYW5jaCk6IFJlbW92ZSBkaXNhYmxlZCBsb25nLWJyYW5jaCBjb2RlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKGNhbGxfdXNlZF9yZWdzKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKG1heV9jYWxsX2FsbG9jYSk6IExpa2V3aXNlLgoJKG1pcHNfY3B1X2F0dHIsIG1pcHNfYWJpY2FsbHNfdHlwZSwgbWlwc19hYmljYWxsc19hdHRyKTogUmVtb3ZlLgoJKG1pcHNfYWJpY2FsbHMsIG1pcHMxNik6IFJlbW92ZSBkZWNsYXJhdGlvbnMuCgkoQVNNX0ZJTkFMX1NQRUMsIExJQl9TUEVDKTogUmVtb3ZlLgoJKENDMV9TUEVDKTogUmVtb3ZlIG91dGRhdGVkIGNvbW1lbnQuCgkoTUlQU19WRVJTSU9OLCBNQUNISU5FX1RZUEUpOiBSZW1vdmUuCgkoVEFSR0VUX1ZFUlNJT05fSU5URVJOQUwsIFRBUkdFVF9WRVJTSU9OKTogUmVtb3ZlLgoJKFBDX1JFR05VTSwgU1RBQ0tfUE9JTlRFUl9PRkZTRVQpOiBSZW1vdmUgZGlzYWJsZWQgZGVmaW5pdGlvbnMuCgkoU1RSVUNUX1ZBTFVFX1JFVFVSTl9SRUdOVU0sIFNUQUNLX0RZTkFNSUNfT0ZGU0VUKTogTGlrZXdpc2UuCgkoUFVTSF9ST1VORElORyk6IExpa2V3aXNlLgoJKEFTU0VNQkxFUl9TQ1JBVENIX1JFR05VTSk6IFJlbW92ZS4KCSogY29uZmlnL21pcHMvbWlwcy5tZDogUmVwbGFjZSBtaXBzX2NwdV9hdHRyIHdpdGggbWlwc190dW5lCglhbmQgbWlwczE2IHdpdGggVEFSR0VUX01JUFMxNi4KCjIwMDMtMDgtMDkgIFBlciBCb3RobmVyICA8cGJvdGhuZXJAYXBwbGUuY29tPgoKCSogY3BwaW5pdC5jIChjcHBfcmVhZF9tYWluX2ZpbGUpOiAgU3BsaXQgb3V0IHNvdXJjZS1pbmRlcGVuZGVudAoJaW5pdGlhbGl6YXRpb24gdG8gc2VwYXJhdGUgZnVuY3Rpb24gLi4uCgkoY3BwX3Bvc3Rfb3B0aW9ucyk6ICBOZXcgZnVuY3Rpb24uCgkqIGNwcGZpbGVzLmMgKGNwcF9zdGFja19maWxlKTogIFJlbmFtZSBwdWJsaWMgbmFtZSB0byAuLi4KCShfY3BwX3N0YWNrX2ZpbGUpOiAgTmV3IGludGVybmFsIGZ1bmN0aW9uIG5hbWUuCgkqIGNwcGxpYi5oOiAgVXBkYXRlIGFjY29yZGluZ2x5LgoJKiBjcHBpbml0LmM6ICAoY3BwX2NyZWF0ZV9yZWFkZXIpOiAgSW5pdGlhbGl6ZSBjcHBfcmVhZGVycyBsaW5lIGhlcmUuCgkoY3BwX3JlYWRfbWFpbl9maWxlKTogIERvbid0IGluaXRpYWxpemUgbGluZSBoZXJlLgoJKiBjLW9wdHMuYyAoY19jb21tb25fcG9zdF9vcHRpb25zKTogIENhbGwgY3BwX3Bvc3Rfb3B0aW9ucy4KCShjX2NvbW1vbl9wYXJzZV9maWxlKTogIENhbGwgY3BwX3JlYWRfbWFpbl9maWxlLCBub3QgY3BwX3N0YWNrX2ZpbGUuCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiAgQ2FsbCBjcHBfcG9zdF9vcHRpb25zLgoKMjAwMy0wOC0wOSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBjLWRlY2wuYyAoU0NPUEVfTElTVF9BUFBFTkQpOiAgUmVtb3ZlIGJvZ3VzIGxpbmUgY29udGludWF0aW9uLgoKMjAwMy0wOC0wOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLmMgKHBhX2FzbV9vdXRwdXRfbWlfdGh1bmspOiBGaXggdHlwby4KCjIwMDMtMDgtMDkgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCglQUiBwcmVwcm9jZXNzb3IvMTE4MzkKCSogY3BwZmlsZXMuYyAob3Blbl9maWxlKTogSGFuZGxlIEVOT1RESVIuCgoyMDAzLTA4LTA5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzExNjk5CgkqIGNvbmZpZy9taXBzL21pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFJlamVjdCAtbWFiaT1lYWJpIC1tYWJpY2FsbHMuCgoyMDAzLTA4LTA4ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEubWQgKGV4dHp2LCBleHR2LCBpbnN2KTogRml4IG9wZXJhbmQgbGltaXQgY2hlY2tzLiAgRmFpbCBpZgoJc291cmNlL2Rlc3RpbmF0aW9uIGlzIG5vdCBhIHJlZ2lzdGVyIG9wZXJhbmQuCgoyMDAzLTA4LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xMTUzNQoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBSZW1vdmUKCVJFVFVSTl9BRERSRVNTX1BPSU5URVJfUkVHTlVNLgoJKGlhNjRfZXhwYW5kX3Byb2xvZ3VlKTogRG9uJ3QgZnJvYiBpdC4KCShpYTY0X291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IExpa2V3aXNlLgoJKGlhNjRfcmV0dXJuX2FkZHJfcnR4KTogTmV3LgoJKGlhNjRfc3BsaXRfcmV0dXJuX2FkZHJfcnR4KTogTmV3LgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoRklSU1RfUFNFVURPX1JFR0lTVEVSKTogRGVjcmVtZW50LgoJKFJFVFVSTl9BRERSRVNTX1BPSU5URVJfUkVHTlVNKTogUmVtb3ZlLgoJKEdFTkVSQUxfUkVHTk9fUCk6IERvbid0IGNoZWNrIGl0LgoJKEFSXypfUkVHTlVNKTogUmVudW1iZXIuCgkoRklYRURfUkVHSVNURVJTKTogUmVtb3ZlIFJFVFVSTl9BRERSRVNTX1BPSU5URVJfUkVHTlVNLgoJKENBTExfVVNFRF9SRUdJU1RFUlMsIENBTExfUkVBTExZX1VTRURfUkVHSVNURVJTKTogTGlrZXdpc2UuCgkoUkVHX0FMTE9DX09SREVSLCBSRUdfQ0xBU1NfQ09OVEVOVFMpOiBMaWtld2lzZS4KCShFTElNSU5BQkxFX1JFR1MsIFJFR0lTVEVSX05BTUVTKTogTGlrZXdpc2UuCgkoUkVUVVJOX0FERFJfUlRYKTogVXNlIGlhNjRfcmV0dXJuX2FkZHJfcnR4LgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChVTlNQRUNfUkVUX0FERFIpOiBOZXcuCgkobW92ZGlfcmV0X2FkZHIpOiBOZXcuCgoyMDAzLTA4LTA4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy5nY2MgKHBvd2VycGMtKi1kYXJ3aW4qKTogRG9uJ3QgYnVpbGQgYSBzb2Z0LWZsb2F0IG11bHRpbGliLgoKMjAwMy0wOC0wOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0cmVlLmggKGdldF9pZGVudGlmaWVyKSBEZWZpbmUgYSBtYWNybyBmb3JtIG9mIGdldF9pZGVudGlmaWVyCgl0aGF0IGNhbGxzIGdldF9pZGVudGlmaWVyX3dpdGhfbGVuZ3RoIHdoZW4gdGhlIHN0cmluZyBpcyBjb25zdGFudC4KCShnZXRfaWRlbnRpZmllcl93aXRoX2xlbmd0aCk6IENoYW5nZSB0eXBlIG9mIHNlY29uZCBhcmd1bWVudCB0bwoJc2l6ZV90IGluIHByb3RvdHlwZS4KCSogc3RyaW5ncG9vbC5jIChnZXRfaWRlbnRpZmllcik6IFVuZGVmaW5lIHRoZSBtYWNybyBiZWZvcmUgZ2l2aW5nCgl0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4KCShnZXRfaWRlbnRpZmllcl93aXRoX2xlbmd0aCk6IENoYW5nZSAgdHlwZSBvZiBzZWNvbmQgYXJndW1lbnQgdG8KCXNpemVfdCBpbiBmdW5jdGlvbiBkZWZpbml0aW9uLgoJKiBoYXNodGFibGUuYyAoY2FsY19oYXNoKTogQ2hhbmdlIHR5cGUgb2Ygc2Vjb25kIGFyZ3VtZW50IHRvIHNpemVfdC4KCShodF9sb29rdXApOiBDaGFuZ2UgdHlwZSBvZiB0aGlyZCBhcmd1bWVudCB0byBzaXplX3QuICBSZW9yZ2FuaXplCgl0byBzcGVlZC11cCB0aGUgY2FzZXMgd2hlcmUgdGhlIGhhc2ggdGFibGUgc2xvdCBpcyBlbXB0eSwgb3IgdGhlCglmaXJzdCBwcm9iZSBtYXRjaGVzIChpLmUuIHRoZXJlIGlzbid0IGEgY29sbGlzaW9uKS4KCSogaGFzaHRhYmxlLmggKGh0X2xvb2t1cCk6IEFkanVzdCBmdW5jdGlvbiBwcm90b3R5cGUuCgoyMDAzLTA4LTA4ICBCZXJuYXJkbyBJbm5vY2VudGkgIDxiZXJuaWVAZGV2ZWxlci5jb20+CgoJUFIgdGFyZ2V0Lzk2OTcKCVBSIHRhcmdldC8xMTc3NwoJKiBsb25nbG9uZy5oIChjb3VudF9sZWFkaW5nX3plcm9zKTogRXhjbHVkZSBvbiBfX21jcHUzMl9fLgoKMjAwMy0wOC0wOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogY29tbW9uLm9wdDogQWRkIGRlYnVnIHN3aXRjaGVzLgoJKiBmbGFncy5oICh1c2VfZ251X2RlYnVnX2luZm9fZXh0ZW5zaW9ucyk6IEJvb2xpZnkuCgkqIG9wdHMuYyAod3JpdGVfc3ltYm9scywgZGVidWdfaW5mb19sZXZlbCwKCXVzZV9nbnVfZGVidWdfaW5mb19leHRlbnNpb25zKTogTW92ZSBmcm9tIHRvcGxldi5jLgoJKHNldF9kZWJ1Z19sZXZlbCk6IE5ldy4KCShjb21tb25faGFuZGxlX29wdGlvbnMpOiBIYW5kbGUgZGVidWcgc3dpdGNoZXMuCgkocHJpbnRfaGVscCk6IERpc3BsYXkgdGFyZ2V0IG9wdGlvbnMgZGlyZWN0bHkuCgkqIHRvcGxldi5jIChkZWJ1Z19ob29rcyk6IERvbid0IGluaXRpYWxpemUuCgkod3JpdGVfc3ltYm9scywgZGVidWdfaW5mb19sZXZlbCwKCXVzZV9nbnVfZGVidWdfaW5mb19leHRlbnNpb25zKTogTW92ZSB0byBvcHRzLmMuCgkoZGVidWdfYXJncywgZGlzcGxheV9oZWxwLCBkZWNvZGVfZ19vcHRpb24pOiBSZW1vdmUuCgkocHJvY2Vzc19vcHRpb25zKTogU2V0IG5vIGRlYnVnIGlmIGxldmVsIHplcm8gaGVyZSwKCWFuZCBuby1kZWJ1Zy1ob29rcy4gIEVycm9yIGhlcmUgaWYgaW1wb3NzaWJsZSBkZWJ1ZyBmb3JtYXQgc2VsZWN0ZWQuCgkqIHRvcGxldi5oIChkaXNwbGF5X2hlbHAsIGRlY29kZV9nX29wdGlvbik6IFJlbW92ZS4KCjIwMDMtMDgtMDggIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIHRyZWUuYyAoZ2V0X2ZpbGVfZnVuY3Rpb25fbmFtZV9sb25nKTogRml4IHNpemUgb2YgYWxsb2NhKCkgYXJlYS4KCjIwMDMtMDgtMDggIEtlbGxleSBDb29rICA8a2VsbGV5Y29va0B3aWRlb3Blbndlc3QuY29tPgoKCSogY29uZmlndXJlLmluIChnY2NfY3ZfcHJvZ19jbXBfc2tpcCk6IEZsaXBmbG9wIG1ha2VfY29tcGFyZV90YXJnZXQKCWFuZCBnY2NfY3ZfcHJvZ19jbXBfc2tpcC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wOC0wOCAgU3RhbiBDb3ggIDxzY294QHJlZGhhdC5jb20+CgoJKiBjb25maWcvaXEyMDAwOiBOZXcgcG9ydC4KCSogY29uZmlnLmdjYyAoaXEyMDAwLSotZWxmKTogQWRkZWQuCgkqIGRvYy9pbnN0YWxsLnRleGkgKFNwZWNpZmljKTogIEFkZCBpcTIwMDAgZGVzY3JpcHRpb24uCgoyMDAzLTA4LTA4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogY29uZmlndXJlLmluIChnY2NfY3ZfYXNfaWE2NF9sdG9mZnhfbGR4bW92X3JlbG9jcyk6IEZpeCBxdW90aW5nCglhbmQgaW5zZXJ0IG1pc3NpbmcgZW1wdHkgYXJndW1lbnQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDgtMDcgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jICh1cGRhdGVfdG90YWxfY29kZV9ieXRlcyk6IFVzZSBuZXcgbWFjcm8gSU5fTkFNRURfU0VDVElPTl9QLgoJKGF0dHJfbGVuZ3RoX21pbGxpY29kZV9jYWxsKTogTGlrZXdpc2UuCgkoYXR0cl9sZW5ndGhfY2FsbCk6IExpa2V3aXNlLiAgUmV2aXNlIHNvbWUgbWF4aW11bSBpbnNuIGxlbmd0aHMuCgkoYXR0cl9sZW5ndGhfaW5kaXJlY3RfY2FsbCk6IExpa2V3aXNlLgoJKG91dHB1dF9jYWxsKTogRml4IHRoaW5rbyB0aGF0IGFkZGVkIGV4dHJhIG5vcC4KCSogcGEuaCAoSU5fTkFNRURfU0VDVElPTl9QKTogRGVmaW5lLgoKCVBSIGMrKy8xMTcxMgoJKiBwYS1ocHV4LmgsIHBhLWhwdXgxMC5oLCBwYS1ocHV4MTEuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZQoJX19TVERDX0VYVF9fIHdoZW4gdXNpbmcgQysrIGRpYWxlY3QuCgoyMDAzLTA4LTA3ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIHNoLmMgKGNhbGNfbGl2ZV9yZWdzKTogSWYgdGhlIHJldHVybiBhZGRyZXNzIHBvaW50ZXIgaXMgbGl2ZSwKCWZvcmNlIHByIGxpdmUuCgkoc2g1X3NjaGVkdWxlX3NhdmVzKTogRXhjbHVkZSBQUl9NRURJQV9SRUcgZnJvbSBiZWluZyBhIHRlbXAgcmVnaXN0ZXIKCWZvciBzYXZlcyAvIHJlc3RvcmVzLgoJKHNoX2V4cGFuZF9lcGlsb2d1ZSk6IElmIHNoX21lZGlhX3JlZ2lzdGVyX2Zvcl9yZXR1cm4gcmV0dXJucyBhCglyZWdpc3RlciBudW1iZXIsIGZsYWcgdGhlIGluc3RydWN0aW9ucyB0aGF0IHJlc3RvcmVzIFBSX01FRElBX1JFRwoJYXMgcG9zc2libHkgZGVhZC4KCVJlbW92ZSBkZWFkIHVwZGF0ZSBvZiBvZmZzZXQuCgkoc2hfZ2V0X3ByX2luaXRpYWxfdmFsKTogVXNlIFVOU1BFQ19SQSBpZiB3ZSBkb24ndCBrbm93IHlldCBpZgoJd2UgY2FuIHVzZSB0aGUgcmVzdWx0IG9mIGdldF9oYXJkX3JlZ19pbml0aWFsX3ZhbC4KCSogc2gubWQgKFVOU1BFQ19SQSk6IE5ldyBjb25zdGFudC4KCShtb3ZzaV9pX2xvd3BhcnQrMSk6IENoYW5nZWQgaW50byBhIGRlZmluZV9pbnNuX2FuZF9zcGxpdCwgbmFtZWQ6CgkobG9hZF9yYSkuICBIYW5kbGUgVU5TUEVDX1JBLgoJKHNpYmNhbGxfbWVkaWEpOiBVc2UgUFJfTUVESUFfUkVHLgoKCSogc2guaCAoQ0FMTF9VU0VEX1JFR0lTVEVSUyk6IEluY2x1ZGUgUFJfUkVHIGFuZCBQUl9NRURJQV9SRUcuCgkqIHNoLmMgKGNhbGNfbGl2ZV9yZWdzKTogVXNlIHNoX3ByX25fc2V0cyB0byBkZXRlcm1pbmUgaWYgcHIKCW5lZWRzIHNhdmluZyBvbiBTSG1lZGlhLgoKMjAwMy0wOC0wNyAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZDogUmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgXFx0IHdpdGggXHQuCgoyMDAzLTA4LTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBsb2NhbC1hbGxvYy5jIChjb21iaW5lX3JlZ3MpOiBGaXggY29tbWVudCB0eXBvLgoKMjAwMy0wOC0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZGVjbC5jIChidWlsdGluX2RlY2xzKTogUmVwbGFjZSB3aXRoIGZpcnN0X2J1aWx0aW5fZGVjbAoJYW5kIGxhc3RfYnVpbHRpbl9kZWNsLgoJKGNfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIGJvdGguCgkoY19yZXNldF9zdGF0ZSk6IEl0ZXJhdGUgZnJvbSBmaXJzdF9idWlsdGluX2RlY2wgdG8KCWxhc3RfYnVpbHRpbl9kZWNsIGluY2x1c2l2ZSB0byByZWludHJvZHVjZSBidWlsdGlucy4KCjIwMDMtMDgtMDYgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoKCSogZG9jL2V4dGVuZC50ZXhpIChGdW5jdGlvbiBBdHRyaWJ1dGVzKTogRG9jdW1lbnQgdGhlIElBLTY0IHZlcnNpb24KCW9mIHRoZSAibW9kZWwiIGF0dHJpYnV0ZS4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoU1lNQk9MX0ZMQUdfU01BTExfQUREUik6IE5ldyBtYWNyby4KCShTWU1CT0xfUkVGX1NNQUxMX0FERFJfUCk6IERpdHRvLgoJKFBSRURJQ0FURV9DT0RFUyk6IE1lbnRpb24gInNtYWxsX2FkZHJfc3ltYm9saWNfb3BlcmFuZCIuCgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfaGFuZGxlX21vZGVsX2F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbi4KCShpYTY0X2VuY29kZV9zZWN0aW9uX2luZm8pOiBMaWtld2lzZS4KCShpYTY0X2F0dHJpYnV0ZV90YWJsZSk6IEFkZCAibW9kZWwiIGF0dHJpYnV0ZS4KCShUQVJHRVRfRU5DT0RFX1NFQ1RJT05fSU5GTyk6IERlZmluZS4KCShzbWFsbF9hZGRyX3N5bWJvbGljX29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkoZ290X3N5bWJvbGljX29wZXJhbmQpOiBSZXR1cm4gMCBmb3IgYSBzeW1ib2xyZWYgdG8gYW4gb2JqZWN0CglpbiB0aGUgc21hbGwgYWRkcmVzcyBhcmVhLgoJKGVudW0gaWE2NF9hZGRyX2FyZWEpOiBOZXcgdHlwZS4KCShzbWFsbF9pZGVudDEpOiBOZXcgdmFyaWFibGUuCgkoc21hbGxfaWRlbnQyKTogTGlrZXdpc2UuCgkoaW5pdF9pZGVudHMpOiBOZXcgZnVuY3Rpb24uCgkoaWE2NF9nZXRfYWRkcl9hcmVhKTogTGlrZXdpc2UuCgkoaWE2NF9lbmNvZGVfYWRkcl9hcmVhKTogTGlrZXdpc2UuCgkoaWE2NF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogTGlrZXdpc2UuCgkoaWE2NF9leHBhbmRfbG9hZF9hZGRyZXNzKTogRm9yIHN5bWJvbGljIHJlZmVyZW5jZXMgdG8gb2JqZWN0cyBpbgoJdGhlIHNtYWxsLWFkZHJlc3MtYXJlYSwgbG9hZCB0aGUgYWRkcmVzcyB2aWEgZ2VuX3J0eF9TRVQoKSAod2hpY2gsCglldmVudHVhbGx5LCB3aWxsIGV4cGFuZCBpbnRvICJhZGRsIikuCgoyMDAzLTA4LTA2ICBQZXIgQm90aG5lciAgPHBib3RobmVyQGFwcGxlLmNvbT4KCgkqIGxpbmUtbWFwLmggKGZpbGVsaW5lKTogIE5ldyB0eXBlZGVmLgoJKHN0cnVjdCBsaW5lX21hcCwgbGluZW1hcF9hZGQsIGxpbmVtYXBfbG9va3VwKTogIFVzZSBpdC4KCSogaW5wdXQuaCAoc3RydWN0IGxvY2F0aW9uX3MpOiAgQ29tbWVudCBub3RlcyB0aGF0IGxvbmctdGVybSB3ZSB3YW50Cgl0byByZXBsYWNlIGl0IGJ5IGZpbGVsaW5lLgoKMjAwMy0wOC0wNiAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJRml4IFNIY29tcGFjdCBleGNlcHRpb24gaGFuZGxpbmc6CgkqIHNoLmMgKHNoX2dldF9wcl9pbml0aWFsX3ZhbCk6IElmIFBSIGlzIG9yIG1paWdodCBiZSBjbG9iYmVyZWQKCWJ5IHRoZSBwcm9sb2d1ZSwgcmV0dXJuIGEgTUVNIHdpdGggcmV0dXJuX2FkZHJlc3NfcG9pbnRlcl9ydHgKCWFzIGFkZHJlc3MuCgkqIHNoLmggKEhBUkRfUkVHTk9fTU9ERV9PSyk6IFBSIGlzIE9LIGZvciBTSW1vZGUuCgkoUkVUVVJOX0FERFJfT0ZGU0VUKTogRG9uJ3QgZGVmaW5lLgoJKFNIX0RCWF9SRUdJU1RFUl9OVU1CRVIpOiBVc2UgU0htZWRpYSBudW1iZXJzIGZvciBTSG1lZGlhCglyZWdpc3RlcnMgdGhhdCBhcmUgdmlzaWJsZSBpbiBjb21wYWN0IG1vZGUuICBTaG93IHRoYXQgU0htZWRpYQoJcmVnaXN0ZXJzIHN0aWxsIGV4aXN0IGluIGNvbXBhY3QgbW9kZSwgZXZlbiBpZiB0aGVyZSBhcmUgbm90CglyZWFkaWx5IGFjY2Vzc2libGUuCgkoQVNNX1BSRUZFUlJFRF9FSF9EQVRBX0ZPUk1BVCk6IFN1cHBseSBEV19FSF9QRV9pbmRpcmVjdAoJaWYgR0xPQkFMLiAgVXNlIERXX0VIX1BFX3RleHRyZWwgKG5vbWluYWxseSkgZm9yIENPREUsCglhbmQgRFdfRUhfUEVfcGNyZWwgZm9yIHBpYyBkYXRhLgoJKEFTTV9NQVlCRV9PVVRQVVRfRU5DT0RFRF9BRERSX1JUWCk6IElmIERXX0VIX1BFX3RleHRyZWwsCglzZXQgU1lNQk9MX0ZMQUdfRlVOQ1RJT04gaW4gc3ltYm9sLCBhbmQgYWN0dWFsbHkgdXNlCglEV19FSF9QRV9wY3JlbCAvIERXX0VIX1BFX2Fic3B0ciBlbmNvZGluZy4KCShBTExPQ0FURV9JTklUSUFMX1ZBTFVFKTogUHV0IFBSIG9uIHN0YWNrIGlmIHByb2xvZ3VlIGNsb2JiZXJzIGl0LgoJKiBzaC5tZCAobW92c2lfbWVkaWEtMSk6IE5ldyBzcGxpdHRlci4KCjIwMDMtMDgtMDYgIEdyYWVtZSBQZXRlcnNvbiA8Z3BAcW54LmNvbT4KCgkqIGNvbmZpZy9pMzg2L250by5oOiBOZXcuCgkqIGNvbmZpZy9pMzg2L3QtbnRvOiBOZXcuCgkqIGNvbmZpZy5nY2MgKGlbMzQ1NjddODYtKi1udG8tcW54Kik6IE5ldy4KCjIwMDMtMDgtMDYgIFBoaWwgRWR3YXJkcyAgPHBtZUBnY2MuZ251Lm9yZz4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKCotKi1zb2xhcmlzMiopOiAgUmVmaW5lIGNvbmZpZ3VyZSBpbnN0cnVjdGlvbnMuCgoyMDAzLTA4LTA2ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY2FsbHMuYyAobG9hZF9yZWdpc3Rlcl9wYXJhbWV0ZXJzKTogQXJyYW5nZSBmb3IgY2FsbF9mdXNhZ2UgdG8KCXJlcG9ydCB0aGUgd2hvbGUgcmVnaXN0ZXIgYXMgdXNlZCB3aGVuIHNoaWZ0aW5nIHRvIHRoZSBtc2IuCgoyMDAzLTA4LTA1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluKTogV2hlbiBub3Qgb3B0aW1pemluZywgY2FsbCB0aGUgbGlicmFyeQoJZnVuY3Rpb24gZm9yIGFsbCBidWlsdGlucyB0aGF0IGhhdmUgbGlicmFyeSBmdW5jdGlvbnMgKGV4Y2VwdCBhbGxvY2EpLgoKMjAwMy0wOC0wNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjLm9wdDogSW50cm9kdWNlIC1md29ya2luZy1kaXJlY3RvcnkuCgkqIGRvYy9jcHAudGV4aSwgZG9jL2ludm9rZS50ZXhpLCBkb2MvY3Bwb3B0cy50ZXhpOiBEb2N1bWVudCBpdC4KCSogYy1jb21tb24uaCAoZmxhZ193b3JraW5nX2RpcmVjdG9yeSk6IERlY2xhcmUuCgkqIGMtY29tbW9uLmMgKGZsYWdfd29ya2luZ19kaXJlY3RvcnkpOiBEZWZpbmUuCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9oYW5kbGVfb3B0aW9ucyk6IFNldCBpdC4KCShzYW5pdGl6ZV9jcHBfb3B0cyk6IFNldC4uLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9vcHRpb25zKTogLi4uIHdvcmtpbmdfZGlyZWN0b3J5IG9wdGlvbi4KCShzdHJ1Y3QgY3BwX2NhbGxiYWNrcyk6IEFkZCBkaXJfY2hhbmdlLgoJKiBjcHBpbml0LmMgKHJlYWRfb3JpZ2luYWxfZmlsZW5hbWUpOiBDYWxsLi4uCgkocmVhZF9vcmlnaW5hbF9kaXJlY3RvcnkpOiBOZXcuICBMb29rIGZvciAjIDEgImRpcmVjdG9yeS8vIgoJYW5kIHByb2Nlc3MgaXQuCgkoY3BwX3JlYWRfbWFpbl9maWxlKTogQ2FsbCBkaXJfY2hhbmdlIGNhbGxiYWNrIGlmIHdvcmtpbmdfZGlyZWN0b3J5CglvcHRpb24gaXMgc2V0LgoJKiBnY2MuYyAoY3BwX3VuaXF1ZV9vcHRpb25zKTogUGFzcyAtZyouCgkqIGMtbGV4LmMgKGNiX2Rpcl9jaGFuZ2UpOiBOZXcuCgkoaW5pdF9jX2xleCk6IFNldCBkaXJfY2hhbmdlIGNhbGxiYWNrLgoJKiB0b3BsZXYuYyAoc3JjX3B3ZCk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoc2V0X3NyY19wd2QsIGdldF9zcmNfcHdkKTogTmV3IGZ1bmN0aW9ucy4KCSogdG9wbGV2LmggKGdldF9zcmNfcHdkLCBzZXRfc3JjX3B3ZCk6IERlY2xhcmUuCgkqIGRieG91dC5jIChkYnhvdXRfaW5pdCk6IENhbGwgZ2V0X3NyY19wd2QoKSBpbnN0ZWFkIG9mIGdldHB3ZCgpLgoJKiBkd2FyZjJvdXQuYyAoZ2VuX2NvbXBpbGVfdW5pdF9kaWUpOiBMaWtld2lzZS4KCSogZHdhcmZvdXQuYyAob3V0cHV0X2NvbXBpbGVfdW5pdF9kaWUsIGR3YXJmb3V0X2luaXQpOiBMaWtld2lzZS4KCjIwMDMtMDgtMDUgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogcHJldHR5LXByaW50LmggKHBwX3NldF9saW5lX21heGltdW1fbGVuZ3RoKTogTWFrZSBtYWNyby4KCShwcF9zZXRfcHJlZml4KTogTGlrZXdpc2UuCgkocHBfZGVzdHJveV9wcmVmaXgpOiBMaWtld2lzZS4KCShwcF9yZW1haW5pbmdfY2hhcmFjdGVyX2NvdW50X2Zvcl9saW5lKTogTGlrZXdpc2UuCgkocHBfY2xlYXJfb3V0cHV0X2FyZWEpOiBMaWtld2lzZS4KCShwcF9mb3JtYXR0ZWRfdGV4dCk6IExpa2V3aXNlLgoJKHBwX2xhc3RfcG9zaXRpb25faW5fdGV4dCk6IExpa2V3aXNlLgoJKHBwX2VtaXRfcHJlZml4KTogTGlrZXdpc2UuCgkocHBfYXBwZW5kX3RleHQpOiBMaWtld2lzZS4KCShwcF9mbHVzaCk6IExpa2V3aXNlLgoJKHBwX2Zvcm1hdF90ZXh0KTogTGlrZXdpc2UuCgkocHBfZm9ybWF0X3ZlcmJhdGltKTogTGlrZXdpc2UuCgkocHBfdHJlZV9pZGVudGlmaWVyKTogVGlkeS4KCSogcHJldHR5LXByaW50LmMgKHBwX2Jhc2VfZm9ybWF0X3RleHQpOiBSZW5hbWUgZnJvbSBwcF9mb3JtYXRfdGV4dC4KCShwcF9iYXNlX2Zvcm1hdF92ZXJiYXRpbSk6IFJlbmFtZSBmcm9tIHBwX2Zvcm1hdF92ZXJiYXRpbS4KCShwcF9iYXNlX2ZsdXNoKTogUmVuYW1lIGZyb20gcHBfZmx1c2guCgkocHBfYmFzZV9zZXRfbGluZV9tYXhpbXVtX2xlbmd0aCk6IFJlbmFtZSBmcm9tCglwcF9zZXRfbGluZV9tYXhpbXVtX2xlbmd0aC4KCShwcF9iYXNlX2NsZWFyX291dHB1dF9hcmVhKTogUmVuYW1lIGZyb20gcHBfY2xlYXJfb3V0cHV0X2FyZWEuCgkocHBfYmFzZV9zZXRfcHJlZml4KTogUmVuYW1lIGZyb20gcHBfc2V0X3ByZWZpeC4KCShwcF9iYXNlX2Rlc3Ryb3lfcHJlZml4KTogUmVuYW1lIGZyb20gcHBfZGVzdHJveV9wcmVmaXguCgkocHBfYmFzZV9lbWl0X3ByZWZpeCk6IFJlbmFtZSBmcm9tIHBwX2VtaXRfcHJlZml4LgoJKHBwX2Jhc2VfYXBwZW5kX3RleHQpOiBSZW5hbWUgZnJvbSBwcF9hcHBlbmRfdGV4dC4KCShwcF9iYXNlX2Zvcm1hdHRlZF90ZXh0KTogUmVuYW1lIGZyb20gcHBfZm9ybWF0dGVkX3RleHQuCgkocHBfYmFzZV9sYXN0X3Bvc2l0aW9uX2luX3RleHQpOiBSZW5hbWUgZnJvbSBwcF9sYXN0X3Bvc2l0aW9uX2luX3RleHQuCgkocHBfYmFzZV9yZW1haW5pbmdfY2hhcmFjdGVyX2NvdW50X2Zvcl9saW5lKTogUmVuYW1lIGZyb20KCXBwX3JlbWFpbmluZ19jaGFyYWN0ZXJfY291bnRfZm9yX2xpbmUuCgkqIGRpYWdub3N0aWMuaCAoZGlhZ25vc3RpY19mb3JtYXRfZGVjb2Rlcik6IFRpZHkuCgkoZGlhZ25vc3RpY19mbHVzaF9idWZmZXIpOiBMaWtld2lzZS4KCSogYy1wcmV0dHktcHJpbnQuaDogKHBwX2Nfc3RyaW5nX2xpdGVyYWwpOiBEZWNsYXJlLgoJKHBwX2NfcmVhbF9saXRlcmFsKTogTGlrZXdpc2UuCgkocHBfY19pbnRlZ2VyX2xpdGVyYWwpOiBMaWtld2lzZS4KCSogYy1wcmV0dHktcHJpbnQuYyAocHBfY19jaGFyKTogVXNlIHBwX3N0cmluZyBpbiBsaWV1IG9mCglwcF9pZGVudGlmaWVyLgoJKHBwX2NfY2hhcmFjdGVyX2xpdGVyYWwpOiBUaWR5LgoJKHBwX2Nfc3RyaW5nX2xpdGVyYWwpOiBNYWtlIHB1YmxpYy4KCShwcF9jX2Jvb2xfbGl0ZXJhbCk6IExpa2V3aXNlLgoJKHBwX2NfaW50ZWdlcl9saXRlcmFsKTogTGlrZXdpc2UuCgkocHBfY19yZWFsX2xpdGVyYWwpOiBMaWtld2lzZS4KCgkqIE1ha2VmaWxlLmluIChDX1BSRVRUWV9QUklOVF9IKTogTmV3IHZhcmlhYmxlLgoJKGMtcHJldHR5LXByaW50Lm8pOiBVcGRhdGUgZGVwZW5kZW5jZS4KCjIwMDMtMDgtMDUgIENocmlzIERlbWV0cmlvdSAgPGNnZEBicm9hZGNvbS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChmaXhfdHJ1bmNkZnNpMl9tYWNybyk6IFByb3Blcmx5IHJlc3RvcmUKCSIuc2V0IG5vbWFjcm8iIHN0YXRlLgoJKGZpeF90cnVuY3Nmc2kyX21hY3JvKTogTGlrZXdpc2UuCgoyMDAzLTA4LTA1ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJKiB0cmVlLmggKERJRF9JTkxJTkVfRlVOQyk6IFJlbW92ZSBtYWNyby4KCShERUNMX0RFQ0xBUkVEX0lOTElORV9QKTogTW92ZSBmcm9tIGMtdHJlZS5oIGFuZCBjcC9jcC10cmVlLmgsCglhZGQgdHJlZSBjaGVjayBmb3IgRlVOQ1RJT05fREVDTC4KCShERUNMX0VTVElNQVRFRF9JTlNOUyk6IE1vdmUgZnJvbSBjLWNvbW1vbi5oIGFuZCBqYXZhL2phdmEtdHJlZS5oLgoJKHN0cnVjdCB0cmVlX2RlY2wpOiBSZW5hbWUgaW5saW5lZF9mdW5jdGlvbl9mbGFnIHRvCglkZWNsYXJlZF9pbmxpbmVfZmxhZy4KCSogYy1jb21tb24uaCAoY19sYW5nX2RlY2wpOiBSZW1vdmUuCgkoREVDTF9FU1RJTUFURURfSU5TTlMpOiBSZW1vdmUuCgkqIGMtdHJlZS5oIChzdHJ1Y3QgbGFuZ19kZWNsKTogRG9uJ3QgaW5jbHVkZSBjX2xhbmdfZGVjbC4KCShERUNMX0RFQ0xBUkVEX0lOTElORV9QKTogUmVtb3ZlLgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBVcGRhdGUgY29tbWVudC4gIFdpdGggLWZpbmxpbmUtZnVuY3Rpb25zLAoJZG8gbm90IHJlc2V0IERFQ0xfREVDTEFSRURfSU5MSU5FX1AuICBEb24ndCB1c2UgRElEX0lOTElORV9GVU5DLgoJKGZpbmlzaF9mdW5jdGlvbik6IE1ha2UgdW5pbmxpbmFibGUgYSBib29sLiAgRml4dXAgY2FsbCB0bwoJdHJlZV9pbmxpbmFibGVfZnVuY3Rpb25fcCgpIGFuZCBmaXggc29tZSBjb2RlIHN0eWxlIGlzc3Vlcy4KCSogY2dyYXBoLmggKGRpc2dyZWFkX2lubGluZV9saW1pdHMpOiBGaXggc3BlbGxpbmc6IGBkaXNyZWdhcmQnLgoJKiBjZ3JhcGguYyAoZHVtcF9jZ3JhcGgpOiBMaWtld2lzZS4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZGVjaWRlX2lubGluaW5nKTogTGlrZXdpc2UKCShjZ3JhcGhfZmluYWxpemVfY29tcGlsYXRpb25fdW5pdCk6IExpa2V3aXNlLgoJQWxzbyB1cGRhdGUgY2FsbCB0byB0cmVlX2lubGluYWJsZV9mdW5jdGlvbl9wKCkuCgkoY2dyYXBoX2RlZmF1bHRfaW5saW5lX3ApOiBEb24ndCB1c2UgRElEX0lOTElORV9GVU5DLiAgSW5zdGVhZAoJbG9vayBhdCBERUNMX0RFQ0xBUkVEX0lOTElORSBhbmQgcmV2ZXJzZSBsb2dpYy4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChyZXN0X29mX2hhbmRsZV9pbmxpbmluZyk6IERvbid0IHVzZSBESURfSU5MSU5FX0ZVTkMuCgkqIHRyZWUtaW5saW5lLmggKHRyZWVfaW5saW5hYmxlX2Z1bmN0aW9uX3ApOiBNYWtlIGEgYm9vbC4gIFVwZGF0ZQoJcHJvdG90eXBlLgoJKiB0cmVlLWlubGluZS5jIChpbmxpbmFibGVfZnVuY3Rpb25fcCk6IFNwbGl0IHVwIGluIHRoaXMgZnVuY3Rpb24gdG8KCWNoZWNrIGZvciBiYXNpYyBpbmxpbmluZyBpbmhpYml0aW5nIGNvbmRpdGlvbnMsIGFuZCBuZXcKCWxpbWl0c19hbGxvd19pbmxpbmluZygpIGZ1bmN0aW9uLiAgV2FybiBpZiBpbmxpbmluZyBpcyBpbXBvc3NpYmxlCgliZWNhdXNlIHRoZSBpbmxpbmUgY2FuZGlkYXRlIGNhbGxzIGFsbG9jYSBvciB1c2VzIHNqbGogZXhjZXB0aW9ucy4KCShsaW1pdHNfYWxsb3dfaW5saW5pbmcpOiB0aGlzIG5ldyBmdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgaW5saW5pbmcKCWxpbWl0cyBhcmUgc2F0aXNmaWVkLiAgVGhyb3R0bGUgZnJvbSBjdXJyZm5fbWF4X2lubGluZV9pbnNucywgbm90IGZyb20KCU1BWF9JTkxJTkVfSU5TTlNfU0lOR0xFLiAgVGhlIGxhdHRlciBvbmx5IG1ha2VzIHNlbnNlIGlmCglNQVhfSU5MSU5FX0lOU05TX0FVVE8gYW5kIE1BWF9JTkxJTkVfSU5TTlNfU0lOR0xFIGFyZSBlcXVhbC4KCVVwZGF0ZSBwcm90b3R5cGVzLgoJKHRyZWVfaW5saW5hYmxlX2Z1bmN0aW9uX3ApOiBNYWtlIGEgYm9vbC4gIFVwZGF0ZSBjYWxsIHRvCglpbmxpbmFibGVfZnVuY3Rpb25fcAoJKGV4cGFuZF9jYWxsX2lubGluZSk6IFVzZSBsaW1pdHNfYWxsb3dfaW5saW5pbmcoKSB3aGVuIG5vdCBpbgoJdW5pdC1hdC1hLXRpbWUgbW9kZSB0byBkZWNpZGUgb24gaW5saW5pbmcuICBEb24ndCB1c2UgRElEX0lOTElORV9GVU5DLAoJaW5zdGVhZCBzZWUgaWYgdGhlIGZ1bmN0aW9uIHdhcyBkZWNsYXJlZCBgaW5saW5lJy4KCjIwMDMtMDgtMDUgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIGdjc2UuYyAodHJ5X3JlcGxhY2VfcmVnKTogRml4IHVwZGF0aW5nIG9mIG5vdGUuCgoyMDAzLTA4LTA0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzExNzcxCgkqIGZvbGQtY29uc3QuYyAobmVnYXRlX2V4cHJfcCA8TUlOVVNfRVhQUj4pOiBDaGFuZ2UgdG8gbWF0Y2ggdGhlCglsb2dpYyBpbiBuZWdhdGVfZXhwciwgaS5lLiB3ZSBkb24ndCBpbnZlcnQgKEEtQikgZm9yIGZsb2F0aW5nCglwb2ludCB0eXBlcyB1bmxlc3MgZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zLgoKMjAwMy0wOC0wNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQgPFBMVVNfRVhQUj4pOiBUcmFuc2Zvcm0geCt4IGludG8geCoyLjAuCglPcHRpbWl6ZSB4KmMreCBhbmQgeCt4KmMgaW50byB4KihjKzEpIGFuZCB4KmMxK3gqYzIgaW50byB4KihjMStjMikKCWZvciBmbG9hdGluZyBwb2ludCBleHByZXNzaW9ucyB3aXRoIC1mZmFzdC1tYXRoLgoJKGZvbGQgPE1VTFRfRVhQUj4pOiBEb24ndCB0cmFuc2Zvcm0geCoyLjAgaW50byB4K3guCgkqIGV4cG1lZC5jIChleHBhbmRfbXVsdCk6IFdyYXAgbG9uZyBsaW5lLiAgRXhwYW5kIHgqMi4wIGFzIHgreC4KCjIwMDMtMDgtMDQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYy1jb21tb24uYyAoZmxhZ19ub25pc29fZGVmYXVsdF9mb3JtYXRfYXR0cmlidXRlcyk6IERlbGV0ZS4KCShidWlsdF9pbl9hdHRyaWJ1dGUpOiBEb24ndCBkZWZpbmUvdW5kZWZpbmUgREVGX0ZOX0FUVFIuCgkoY19hdHRyc19pbml0aWFsaXplZCk6IERlbGV0ZS4KCShjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBEb24ndCB0ZXN0IGNfYXR0cnNfaW5pdGlhbGl6ZWQsCglhbHdheXMgY2FsbCBjX2luaXRfYXR0cmlidXRlcy4KCShjX2luaXRfYXR0cmlidXRlcyk6IERvbid0IGRlZmluZS91bmRlZmluZSBERUZfRk5fQVRUUi4gIERvbid0CglzZXQgY19hdHRyc19pbml0aWFsaXplZCB3aGVuIGRvbmUuCgkoY19jb21tb25faW5zZXJ0X2RlZmF1bHRfYXR0cmlidXRlcyk6IERlbGV0ZS4KCSogYy1jb21tb24uaCAoZmxhZ19ub25pc29fZGVmYXVsdF9mb3JtYXRfYXR0cmlidXRlcyk6IERlbGV0ZS4KCShjX2Nvb21vbl9pbnNlcnRfZGVmYXVsdF9hdHRyaWJ1dGVzKTogRGVsZXRlIHByb3RvdHlwZS4KCSogYy1vcHRzLmMgKHNldF9zdGRfYzg5LCBzZXRfc3RkX2M5OSwgc2V0X3N0ZF9jeHg5OCk6IERvbnQgc2V0CglmbGFnX25vbmlzb19kZWZhdWx0X2Zvcm1hdF9hdHRyaWJ1dGVzLgoKCSogYy1kZWNsLmMgKGNfaW5zZXJ0X2RlZmF1bHRfYXR0cmlidXRlcyk6IERlbGV0ZS4KCSogYy10cmVlLmggKGNfaW5zZXJ0X2RlZmF1bHRfYXR0cmlidXRlcyk6IERlbGV0ZSBwcm90b3R5cGUuCgoJKiBhdHRyaWJzLmMgKGRlY2xfYXR0cmlidXRlcyk6IERvbid0IGNhbGwgaW5zZXJ0X2RlZmF1bHRfYXR0cmlidXRlcwoJbGFuZ2hvb2suICBVcGRhdGUgZnVuY3Rpb24gZGVzY3JpcHRpb24gY29tbWVudC4KCSogbGFuZ2hvb2tzLmggKGxhbmdfaG9va3MpOiBSZW1vdmUgaW5zZXJ0X2RlZmF1bHRfYXR0cmlidXRlcyBmaWVsZC4KCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX0lOU0VSVF9ERUZBVUxUX0FUVFJJQlVURVMpOiBEZWxldGUuCgkqIGMtbGFuZy5jIChMQU5HX0hPT0tTX0lOU0VSVF9ERUZBVUxUX0FUVFJJQlVURVMpOiBEb24ndCBkZWZpbmUuCgkqIHN5c3RlbS5oOiBQb2lzb24gTEFOR19IT09LU19JTlNFUlRfREVGQVVMVF9BVFRSSUJVVEVTIG1hY3JvLgoKCSogb2JqYy9vYmpjLWxhbmcuYyAoTEFOR19IT09LU19JTlNFUlRfREVGQVVMVF9BVFRSSUJVVEVTKTogRG9uJ3QKCWRlZmluZS4KCjIwMDMtMDgtMDQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZkByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChvdmVycmlkZV9vcHRpb25zKTogRGlzYWJsZSAtRyBvbiB0YXJnZXRzIHRoYXQKCWhhdmUgbm8gLnNlY3Rpb24gc3VwcG9ydC4KCShtaXBzX3NlbGVjdF9zZWN0aW9uKTogVXNlIGRlZmF1bHRfc2VsZWN0X3NlY3Rpb24gZm9yIHN1Y2ggdGFyZ2V0cy4KCjIwMDMtMDgtMDQgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoc3ZyNF91bmRlY2xhcmVkX2dldHJuZ2UpOiBJbnRyb2R1Y2UgYW5kIGVuYWJsZS4KCSogZml4aW5jL2luY2xoYWNrLmRlZiAoc3RhdGljX2dldHJuZ2UpOiBSZW1vdmUgZGlzYWJsZWQgaGFjay4KCSogZml4aW5jL2ZpeGluY2wueDogUmVidWlsZC4KCSogZml4aW5jL3Rlc3RzL2Jhc2UvcmVnZXhwLmg6IE5ldyB0ZXN0LgoKMjAwMy0wOC0wNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjLXBwb3V0cHV0LmMgKGNiX2xpbmVfY2hhbmdlKTogRG9uJ3Qgc2tpcCBsaW5lIGNoYW5naW5nIHdoaWxlCglwYXJzaW5nIG1hY3JvIGFyZ3VtZW50cyBpbiB0aGUgdG9wLWxldmVsIGNvbnRleHQuCgoyMDAzLTA4LTA0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjb25maWcuaW46IFJlbW92ZSBIQVZFX0xTVEFULgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogRG9uJ3QgdGVzdCBmb3IgbHN0YXQuCgoyMDAzLTA4LTAzICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIG9wdHMuYyAoZGVjb2RlX29wdGlvbnMpOiBEbyBsYW5ndWFnZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBmb3IKCXRoZSBnbG9iYWwgZGlhZ25vc3RpYyBjb250ZXh0LgoJKiBsYW5naG9va3MtZGVmLmggKGxoZF9pbml0aWFsaXplX2RpYWdub3N0aWNzKTogRGVjbGFyZS4KCShMQU5HX0hPT0tTX0lOSVRJQUxJWkVfRElBR05PU1RJVENTKTogTmV3IG1hY3JvLgoJKExBTkdfSE9PS1NfSU5JVElBTElaRVIpOiBBZGp1c3QuCgkqIGxhbmdob29rcy5oIChzdHJ1Y3QgbGFuZ19ob29rcyk6IEFkZCBuZXcgZmllbGQKCWluaXRpYWxpemVfZGlhZ25vc3RpY3MuCgkqIGxhbmdob29rcy5jIChsaGRfaW5pdGlhbGl6ZV9kaWFnbm9zdGljcyk6IERlZmluZS4KCjIwMDMtMDgtMDMgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogcHJldHR5LXByaW50Lmg6ICAgQWRqdXN0IG1hY3JvIGRlZmluaXRpb25zLgoJKiBwcmV0dHktcHJpbnQuYyAocHBfbmV3bGluZSk6IFJlbmFtZSB0byBwcF9iYXNlX25ld2xpbmUuCgkocHBfY2hhcmFjdGVyKTogUmVuYW1lIHRvIHBwX2Jhc2VfY2hhcmFjdGVyLgoJKHBwX3N0cmluZyk6IFJlbmFtZSB0byBwcF9iYXNlX3N0cmluZy4KCSogYy1wcmV0dHktcHJpbnQuYyAocHBfYnVmZmVyKTogTW92ZSB0byBwcmV0dHktcHJpbnQuaAoJKHBwX25ld2xpbmUpOiAgTGlrZXdpc2UuICBBZGp1c3QuCgkocHBfY19jaGFyKTogQWRqdXN0LgoKMjAwMy0wOC0wMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9BQlMsIEJVSUxUX0lOX0lNQVhBQlMsIEJVSUxUX0lOX0xBQlMsCglCVUlMVF9JTl9MTEFCUyk6IE1vdmUgdG8gbWlzY2VsbGFuZW91cyBzZWN0aW9uLgoKMjAwMy0wOC0wMyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCVBSIHByZXByb2Nlc3Nvci8xMTUzNAoJKiBjcHBleHAuYyAocGFyc2VfZGVmaW5lZCk6IFdhcm4gb25seSBpZiAtcGVkYW50aWMuCgoyMDAzLTA4LTAzICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjcHBmaWxlcy5jIChzdGFja19maWxlKTogVXNlIGZpbGUgcGF0aC4KCjIwMDMtMDgtMDIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbi10eXBlcy5kZWYgKEJUX1NTSVpFKTogTmV3IHByaW1pdGl2ZSB0eXBlLgoJKEJUX0ZOX0lOVF9QVFJfQ09OU1RfU1RSSU5HX1ZBTElTVF9BUkcsCglCVF9GTl9TVFJJTkdfQ09OU1RfU1RSSU5HX0NPTlNUX1NUUklOR19JTlQsCglCVF9GTl9TSVpFX1NUUklOR19TSVpFX0NPTlNUX1NUUklOR19DT05TVF9QVFIsCglCVF9GTl9TU0laRV9TVFJJTkdfU0laRV9DT05TVF9TVFJJTkdfVkFSKTogTmV3IGZ1bmN0aW9uIHR5cGVzLgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0RDR0VUVEVYVCwgQlVJTFRfSU5fREdFVFRFWFQsCglCVUlMVF9JTl9GU0NBTkYsIEJVSUxUX0lOX0dFVFRFWFQsIEJVSUxUX0lOX1NUUkZNT04sCglCVUlMVF9JTl9TVFJGVElNRSwgQlVJTFRfSU5fVkZQUklOVEYsIEJVSUxUX0lOX1ZGU0NBTkYpOiBOZXcgYnVpbHRpbnMuCgkqIGJ1aWx0aW4tYXR0cnMuZGVmOiBSZW1vdmUgREVGX0ZOX0FUVFIgY29uc3RydWN0IGFuZCB0aGUgbGFzdAoJZmV3IGZ1bmN0aW9ucyB0aGF0IGRlZmluZSBkZWZhdWx0IGF0dHJpYnV0ZXMgdXNpbmcgaXQuCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX2luc2VydF9kZWZhdWx0X2F0dHJpYnV0ZXMpOiBEbyBub3RoaW5nLgoKCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCB0aGVzZSAibmV3IiBidWlsdGlucy4KCjIwMDMtMDgtMDIgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL2xpbnV4LmggKFNVQlRBUkdFVF9MSU5LX1NQRUMpOiBEb24ndCBzZXQgcnBhdGguCgkoTElCX1NQRUMpOiBTZXQgLWxwdGhyZWFkIGFsd2F5cyB3aGVuIC1wdGhyZWFkIHNldC4gIFNldCAtbGllZWUKCXdoZW4gLW1pZWVlLWZwIHNldCBhbmQgLXNoYXJlZCBub3Qgc2V0LgoJKFNIX0ZBTExCQUNLX0ZSQU1FX0ZMT0FUX1NUQVRFKTogRG9uJ3QgZGVmaW5lIGZvciBTSDUuCgoyMDAzLTA4LTAyICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjcHBmaWxlcy5jIChzdHJ1Y3QgX2NwcF9maWxlKTogUmVuYW1lIG9uY2Vfb25seV9uZXh0IHRvCgluZXh0X2ZpbGUuICBSZW1vdmUgaW1wb3J0IGFuZCBwcmFnbWFfb25jZSwgYWRkIG9uY2Vfb25seS4KCShmaW5kX2ZpbGUpOiBBZGQgbmV3IGZpbGUgc3RydWN0dXJlcyB0byB0aGUgYWxsX2ZpbGVzIGxpc3QuCgkoc2hvdWxkX3N0YWNrX2ZpbGUpOiBNYXJrICNpbXBvcnQtZWQgZmlsZXMgb25jZS1vbmx5LCBhbmQKCWRvbid0IHN0YWNrIHRoZW0gaWYgdGhlIGZpbGUgaGFzIGFscmVhZHkgYmVlbiBzdGFja2VkLgoJKF9jcF9tYXJrX2ZpbGVfb25jZV9vbmx5KTogU2ltcGxpZnkuCgkqIGNwcGhhc2guaCAoc3RydWN0IGNwcF9yZWFkZXIpOiBSZW5hbWUgb25jZV9vbmx5X2ZpbGVzCgl0byBhbGxfZmlsZXMuICBSZW5hbWUgc2F3X3ByYWdtYV9vbmNlIHRvIHNlZW5fb25jZV9vbmx5LgoJKF9jcHBfbWFya19maWxlX29uY2Vfb25seSk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGNwcGxpYi5jIChkb19wcmFnbWFfb25jZSk6IFVwZGF0ZS4KCjIwMDMtMDgtMDIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNwcGZpbGVzLmMgKEVOT1RESVIpOiBSZW1vdmUuCgkob3Blbl9maWxlX2luX2Rpcik6IFJlbmFtZSBmaW5kX2ZpbGVfaW5fZGlyLiAgSGFuZGxlIGVycm9ycwoJb3RoZXIgdGhhbiBFTk9FTlQgaGVyZS4KCShvbmNlX29ubHlfZmlsZV9wKTogUmVuYW1lIHNob3VsZF9zdGFja19maWxlLgoJKGZpbmRfZmlsZSwgb3Blbl9maWxlX2ZhaWxlZCwgcmVhZF9maWxlX2d1dHMpOiBSZXBvcnQgZXJyb3JzCgl3aXRoIGZ1bGwgcGF0aCBuYW1lLgoJKHJlYWRfZmlsZSk6IE1vdmUgcGNoIGhhbmRsaW5nIHRvIHNob3VsZF9zdGFja19maWxlLgoJKHNob3VsZF9zdGFja19maWxlKTogSGFuZGxlIFBDSCBhbmQgb25jZS1vbmx5IGlzc3VlcywgYW5kCglyZWFkaW5nIHRoZSBmaWxlLgoJKHN0YWNrX2ZpbGUpOiBEb24ndCBkbyBmaWxlIHJlYWRzLgoKMjAwMy0wOC0wMiAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogbGliZ2Nvdi5jIChnY292X2V4aXQpOiBDbGVhbnVwIGFuZCBmaXguCgkqIHByb2ZpbGUuYyAoY29tcHV0ZV92YWx1ZV9oaXN0b2dyYW1zKTogRG9uJ3QgdHJ5IHRvIHJlYWQgcHJvZmlsZXMKCXRoYXQgYXJlIG5vdCBwcmVzZW50LgoKMjAwMy0wOC0wMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuZGVmOiBDYXRlZ29yaXplLgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9DQUJTLCBCVUlMVF9JTl9DQUJTRiwgQlVJTFRfSU5fQ0FCU0wpOgoJTWluZCBmcCByb3VuZGluZy4KCShCVUlMVF9JTl9GRlNMKTogVXNlIERFRl9FWFRfTElCX0JVSUxUSU4uCgoyMDAzLTA4LTAyICBBbmRyZWFzIFRvYmxlciAgPGEudG9ibGVyQHNjaHdlaXouY2g+CgoJKiBjb25maWcuZ2NjOiBFbmFibGUgcG9zaXggdGhyZWFkcyBieSBkZWZhdWx0IG9uIGRhcndpbi4KCjIwMDMtMDgtMDEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY2ZnY2xlYW51cC5jIChvdXRnb2luZ19lZGdlc19tYXRjaCk6IENoZWNrIFJFR19FSF9SRUdJT04gbm90ZXMKCWV2ZW4gaWYgbmVoZWRnZXMxIGlzIDAuCgoyMDAzLTA4LTAxICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGZpeGluYy9maXhmaXhlcy5jLCBmaXhpbmMvZml4bGliLmMsIGZpeGluYy9maXhsaWIuaCwKCWZpeGluYy9maXh0ZXN0cy5jLCBmaXhpbmMvcHJvY29wZW4uYywgZml4aW5jL3NlcnZlci5jLAoJZml4aW5jL3NlcnZlci5oLCBmaXhpbmMvZml4aW5jbC5jOiBBTlNJZnkgZnVuY3Rpb24gcHJvdG90eXBlcwoJYW5kIGRlZmludGlvbnMuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChicm9rZW5fY2Ficyk6IE1ha2UgbWF0Y2hpbmcgbW9yZSBnZW5lcm91cy4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCSogZml4aW5jL3Rlc3RzL2Jhc2UvbWF0aC5oOiBSZWdlbmVyYXRlIHRvIG1hdGNoIHRlc3RfdGV4dCBjaGFuZ2UuCgoyMDAzLTA4LTAxICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGdnYy1jb21tb24uYyAoZ3RfcGNoX3Jlc3RvcmUpOiBDYXNlIE1BUF9GQUlMRUQgdG8gdm9pZCAqLgoKMjAwMy0wOC0wMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4Y2VwdC5jIChzamxqX2VtaXRfZGlzcGF0Y2hfdGFibGUpOiBVc2UgcHRyX21vZGUsIG5vdCBQbW9kZSwKCWZvciBhY2Nlc3NlcyB0byBleGNfcHRyLgoKMjAwMy0wOC0wMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkb2Mvc291cmNlYnVpbGQudGV4aSAoRnJvbnQgRW5kIERpcmVjdG9yeSk6IERvbid0IG1ha2UgcmVmZXJlbmNlcwoJdG8gbGlic3ViZGlyLCBpdCdzIG5vdCBwYXJ0IG9mIHRoZSBpbnRlcmZhY2UgdG8gZnJvbnRlbmRzLgoJKiBkb2MvaW5zdGFsbC50ZXhpIChDb25maWd1cmF0aW9uKTogSGVscCB1c2VycyByZWFkIGZhc3RlciBieSBzYXlpbmcKCXRoYXQgR0NDJ3MgY29uZmlndXJlIG9wdGlvbnMgYXJlIHRoZSBzdGFuZGFyZCBhdXRvY29uZiBvbmVzLgoJTWVudGlvbiAtLWxpYmRpci4gIFVwZGF0ZSB0aGUgZGVmYXVsdCBydWxlcyBmb3IgZmluZGluZyB0aGUKCWFzc2VtYmxlci4gIERvbid0IHVzZSBsaWJzdWJkaXIgc2luY2Ugd2UgaGF2ZW4ndCBzYWlkIHdoYXQgaXQgbWVhbnMuCgkoU3BlY2lmaWMpOiBJbiB0aGUgU29sYXJpcyA3IG5vdGVzLCB1cGRhdGUgdGhlIHBsYWNlIHRvIHB1dCB0aGUKCWFzc2VtYmxlci4KCSogZG9jL2ludm9rZS50ZXhpOiBVcGRhdGUgbGliL2djYy1saWIgdG8gbGliL2djYy4KCSogZG9jL2NwcC50ZXhpIChTZWFyY2ggUGF0aCk6IEFjdHVhbGx5LCB0aGUgc2VhcmNoIHBhdGgKCWRlcGVuZHMgb24gbGliZGlyLCB3aGljaCBjYW4gcmVsb2NhdGUgd2l0aCBjcHAuCgkqIGRvYy90bS50ZXhpIChEcml2ZXIpOiBEb24ndCBkb2N1bWVudCBTVEFOREFSRF9FWEVDX1BSRUZJWCwgaXQncwoJbm93IGEgcHJpdmF0ZSBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgTWFrZWZpbGUgYW5kIHRoZSBkcml2ZXIuCgoyMDAzLTA4LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogc3lzdGVtLmg6IFBvaXNvbiBBU01fU0lNUExJRllfRFdBUkZfQUREUi4KCgkqIHZhcmFzbS5jIChsb29rdXBfY29uc3RhbnRfZGVmKTogTmV3IGZ1bmN0aW9uLgoJKiBydGwuaCAobG9va3VwX2NvbnN0YW50X2RlZik6IERlY2xhcmUgaXQuCgkqIGR3YXJmMm91dC5jIChsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUpOiBVc2UgaXQuCglVc2UgdGFyZ2V0bS5kZWxlZ2l0aW1pemVfYWRkcmVzcywgbm90IEFTTV9TSU1QTElGWV9EV0FSRl9BRERSLgoKMjAwMy0wOC0wMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZGVjbC5jIChnZXR0YWdzLCBwdXNoZGVjbF9mdW5jdGlvbl9sZXZlbCk6IERlbGV0ZS4KCShsYXN0X2Z1bmN0aW9uX3Bhcm1fdmFycyk6IFJlbmFtZSBsYXN0X2Z1bmN0aW9uX3Bhcm1fb3RoZXJzLgoJKGN1cnJlbnRfZnVuY3Rpb25fcGFybV92YXJzKTogUmVuYW1lIGN1cnJlbnRfZnVuY3Rpb25fcGFybV9vdGhlcnMuCgkoc3RydWN0IGNfc2NvcGUpOiBSZXdyaXRlIGNvbW1lbnQgZXhwbGFpbmluZyB0aGlzIGRhdGEgc3RydWN0dXJlLgoJQWRkIG5hbWVzX2xhc3QsIGJsb2Nrc19sYXN0LCBwYXJtc19sYXN0IGZpZWxkcy4gIFJlbmFtZQoJaW5jb21wbGV0ZV9saXN0IHRvIGluY29tcGxldGUuCgkoU0NPUEVfTElTVF9BUFBFTkQsIFNDT1BFX0xJU1RfQ09OQ0FUKTogTmV3IG1hY3Jvcy4KCShwb3BsZXZlbCk6IElnbm9yZSBzZWNvbmQgYXJndW1lbnQuICBObyBuZWVkIHRvIG5yZXZlcnNlCglhbnl0aGluZy4gIFJlc3RydWN0dXJlIHN1Y2ggdGhhdCBlYWNoIGxpc3QgaXMgcHJvY2Vzc2VkCglleGFjdGx5IG9uY2UuICBVc2UgJ2NvbnN0IGxvY2F0aW9uX3QgKmxvY3VzJyBzeW50YWN0aWMgc3VnYXIKCXZhcmlhYmxlIHdoZXJlIHVzZWZ1bC4gIElzc3VlIHVudXNlZCB2YXJpYWJsZSB3YXJuaW5ncwoJb3Vyc2VsdmVzLCBkbyBub3QgcmVseSBvbiBmdW5jdGlvbi5jLgoJKGluc2VydF9ibG9jaywgcHVzaGRlY2wsIGJpbmRfbGFiZWwpOiBVc2UgU0NPUEVfTElTVF9BUFBFTkQuCgkocHVzaGRlY2xfdG9wX2xldmVsKTogTGlrZXdpc2UuICBEb24ndCBjYWxsIGR1cGxpY2F0ZV9kZWNscy4KCShpbXBsaWNpdGx5X2RlY2xhcmUpOiBkZWNsIGNhbm5vdCBiZSBlcnJvcl9tYXJrX25vZGUuCgkodW5kZWNsYXJlZF92YXJpYWJsZSk6IE1hbmlwdWxhdGUgc2NvcGUgc3RydWN0dXJlIGRpcmVjdGx5LgoJKGNfbWFrZV9mbmFtZV9kZWNsKTogTGlrZXdpc2UuCgkoZ2V0ZGVjbHMsIGNfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBGaXggY29tbWVudC4KCShtYXJrX2ZvcndhcmRfcGFybV9kZWNscyk6IFVzZSBTQ09QRV9MSVNUX0NPTkNBVC4gIE5vIG5lZWQKCWZvciAnbGFzdCcgdmFyaWFibGUuCgkoZ3Jva3Bhcm1zKTogTm8gbmVlZCB0byBucmV2ZXJzZSBwYXJtcyBsaXN0LgoJKHN0b3JlX3Bhcm1fZGVjbHNfbmV3c3R5bGUpOiBTZXQgdXAgdGhlIHBhcm1zX2xhc3QgYW5kCgluYW1lc19sYXN0IGZpZWxkcyBvZiB0aGUgbmV3IHNjb3BlIHRvby4KCShzdG9yZV9wYXJtX2RlY2xzX29sZHN0eWxlKTogQ2FuIGFzc3VtZSBERUNMX1dFQUsgaXMgbm90IHNldAoJb24gcGFybXMgdG8gYmVnaW4gd2l0aDsgY2hlY2sgdGhpcyB1bmRlciBFTkFCTEVfQ0hFQ0tJTkcuICBTZXQKCXVwIHBhcm1zX2xhc3QuCgkoY2hlY2tfZm9yX2xvb3BfZGVjbHMpOiBSZWZlciBkaXJlY3RseSB0byBjdXJyZW50X3Njb3BlLT50YWdzLgoJVXNlIGNvbnNpc3RlbnQgcXVvdGUgc3R5bGUgaW4gZGlhZ25vc3RpY3MuCgkoY193cml0ZV9nbG9iYWxfZGVjbGFyYXRpb25zKTogVGhlIG5hbWVzIGxpc3QgaXMgbm90IGJhY2t3YXJkLgoKCSogYy1jb21tb24uaDogRG9uJ3QgcHJvdG90eXBlIGdldHRhZ3MuCgkqIGMtcGFyc2UuaW46IENhbGwgcG9wbGV2ZWwgd2l0aCBzZWNvbmQgYXJndW1lbnQgMCBhbHdheXMuCgoyMDAzLTA4LTAxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5kZWY6IFJlc29ydCBidWlsdGlucy4KCjIwMDMtMDgtMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmRlZiAoREVGX0dDQ19CVUlMVElOLCBERUZfTElCX0JVSUxUSU4sCglERUZfRVhUX0xJQl9CVUlMVElOLCBERUZfQzk5X0JVSUxUSU4sIERFRl9DOTlfQzkwUkVTX0JVSUxUSU4pOgoJUHJlcGVuZCAiX19idWlsdGluXyIgb250byBOQU1FIHdpdGggc3RyaW5nIGNvbmNhdGVuYXRpb24uICBSZW1vdmUKCWV4cGxpY2l0ICJfX2J1aWx0aW5fIiBmcm9tIGVhY2ggbWFjcm8gY2FsbC4KCglSZWZvcm1hdCBlbnRpcmUgZmlsZS4KCjIwMDMtMDgtMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmRlZiAoQVRUUl9NQVRIRk5fRVJSTk8sIEFUVFJfTUFUSEZOX0ZQUk9VTkRJTkcsCglBVFRSX01BVEhGTl9GUFJPVU5ESU5HX0VSUk5PKTogTmV3IG1hY3Jvcy4gIFVzZSB0aHJvdWdob3V0LgoKMjAwMy0wOC0wMSAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9zZWxlY3RfY2Ntb2RlKTogRG8gbm90IGF0dGVtcHQgdG8gdXNlIENDTCwKCUNDTDEsIG9yIENDTDIgbW9kZXMgd2l0aCBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zLgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIiphZGRzZjNfY2MiLCAiKmFkZHNmM19jY29ubHkiLCAiKmFkZGRmM19jYyIsCgkiKmFkZGRmM19jY29ubHkiLCAiKnN1YnNmM19jYyIsICIqc3Vic2YzX2Njb25seSIsICIqc3ViZGYzX2NjIiwKCSIqc3ViZGYzX2Njb25seSIpOiBOZXcgaW5zbnMuCgkoIipuZWdhYnNzaTIiLCAiKm5lZ2Fic2RpMiIsICIqbmVnYWJzZGYyIiwgIipuZWdhYnNzZjIiKTogTGlrZXdpc2UuCgoyMDAzLTA4LTAxICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlZmlsZS5pbjogUmVmaW5lIGRlcGVuZGVuY2llcy4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBEbyBub3RoaW5nIGZvciAtV2ltcG9ydC4KCSogYy5vcHQ6IFVwZGF0ZSBoZWxwIGZvciAtV2ltcG9ydC4KCSogY3BwZmlsZXMuYzogSW5jbHVkZSBoYXNodGFiLmguICBVcGRhdGUgY29tbWVudHMuCgkoc3RhY2tfZmlsZSk6IFJlYWQgdGhlIGZpbGUgYmVmb3JlIHVwZGF0aW5nIGRlcGVuZGVuY2llcy4KCShvbmNlX29ubHlfZmlsZV9wKTogQmUgc21hcnRlciBhYm91dCBtYXJraW5nIG9uY2Utb25seSBmaWxlcy4KCShfY3BwX21hcmtfZmlsZV9vbmNlX29ubHkpOiBDb3JyZWN0IHRoZSBjaGVjayBmb3IgZXhpc3RlbmNlIG9uCgl0aGUgbGlzdC4KCShvcGVuX2ZpbGVfZmFpbGVkKTogVXNlIG5hbWUgbm90IHBhdGgsIHdoaWNoIGlzIE5VTEwuCgkqIGNwcGhhc2guaDogRG9uJ3QgaW5jbHVkZSBoYXNodGFiLmguCgkoc3RydWN0IF9jcHBfZmlsZSk6IFJlbW92ZS4KCShzdHJ1Y3QgY3BwX3JlYWRlcik6IFVwZGF0ZS4KCSogY3BwaW5pdC5jIChjcHBfY3JlYXRlX3JlYWRlcik6IERvbid0IGluaXRpYWxpemUgd2Fybl9pbXBvcnQuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX29wdGlvbnMpOiBSZW1vdmUgd2Fybl9pbXBvcnQuCgkoY3BwX3NpbXBsaWZ5X3BhdGgpOiBSZW1vdmUuCgoyMDAzLTA4LTAxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xMTI5NQoJKiBkb2MvZXh0ZW5kLnRleGkgKFN0YXRlbWVudCBFeHByZXNzaW9ucyk6IERvY3VtZW50IEMrKyBzZW1hbnRpY3MuCgoyMDAzLTA3LTMxICBTVUdJT0tBIFRvc2hpbm9idSAgPHN1Z2lva2FAaXRvbmV0LmNvLmpwPgoKCSogY29uZmlnLmdjYyAoc2gtKi1saW51eCopOiBEbyBub3Qgb3ZlcnJpZGUgc2gvdC1saW51eCB3aXRoIHNoL3QtbGUuCgoyMDAzLTA3LTMxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGluLXR5cGVzLmRlZjogVXNlIGBMT05HRE9VQkxFJyBpbnN0ZWFkIG9mIGBMT05HX0RPVUJMRScKCXRocm91Z2hvdXQuCgkqIGJ1aWx0aW5zLmRlZjogTGlrZXdpc2UuCgoyMDAzLTA3LTMxICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChidWJibGVzdHJhcCk6IERvbid0IHJlcXVpcmUgYSBwcmV2aW91cyBmdWxsCglib290c3RyYXAuCgoJKiBleHByLmMgKG1vc3RseV96ZXJvc19wKTogTm8gbG9uZ2VyIHN0YXRpYy4KCSogdHJlZS5oOiBEZWNsYXJlIGl0LgoJKiBzdG10LmMgKHJlc29sdmVfYXNtX29wZXJhbmRfbmFtZXMpOiBEb24ndCBjb3B5IHRoZSBwYXR0ZXJuCgl1bmxlc3Mgd2UgbmVlZCB0byBkbyBzdWJzdGl0dXRpb25zLgoKMjAwMy0wNy0zMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQgPE1VTFRfRVhQUj4pOiBPcHRpbWl6ZSBib3RoIHgqcG93KHgsYykgYW5kCglwb3coeCxjKSp4IGFzIHBvdyh4LGMrMSkgZm9yIGNvbnN0YW50IHZhbHVlcyBjLiAgT3B0aW1pemUgeCp4CglhcyBwb3coeCwyLjApIHdoZW4gdGhlIGxhdHRlciB3aWxsIGJlIGV4cGFuZGVkIGJhY2sgaW50byB4KnguCgkoZm9sZCA8UkRJVl9FWFBSPik6IE9wdGltaXplIHBvdyh4LGMpL3ggYXMgcG93KHgsYy0xKS4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fcG93KTogSWdub3JlIGZsYWdfZXJybm9fbWF0aCBhcwoJcG93IGNhbiBuZXZlciBzZXQgZXJybm8gd2hlbiB1c2VkIHdpdGggYW4gaW50ZWdlciBleHBvbmVudC4KCUFsd2F5cyB1c2UgZXhwYW5kX3Bvd2kgd2hlbiBleHBvbmVudCBpcyAtMSwgMCwgMSBvciAyLgoJKGZvbGRfYnVpbHRpbik6IERvbid0IHJld3JpdGUgcG93KHgsMi4wKSBhcyB4Knggbm9yIHBvdyh4LC0yLjApCglhcyAxLjAvKHgqeCkuICBUaGlzIGF2b2lkcyB1bmJvdW5kZWQgcmVjdXJzaW9uIGFzIHdlIG5vdyBwcmVmZXIKCXRoZSBwb3cgZm9ybXMgb2YgdGhlc2UgZXhwcmVzc2lvbnMuCgoyMDAzLTA3LTMxICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIE1ha2VmaWxlLmluIChsaWJleGVjZGlyKTogTmV3LgoJKGxpYnN1YmRpcik6IFVzZSBnY2MgaW5zdGVhZCBvZiBnY2MtbGliLgoJKGxpYmV4ZWNzdWJkaXIpOiBOZXcuCgkoT1JESU5BUllfRkxBR1NfVE9fUEFTUyk6IEFkZCBsaWJleGVjc3ViZGlyLgoJKERSSVZFUl9ERUZJTkVTKTogQWRkIFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYLCB1c2UgZ2NjIGluc3RlYWQgb2YKCWdjYy1saWIuCgkoaW5zdGFsbGRpcnMpOiBNYWtlIGxpYmV4ZWNzdWJkaXIuCgkoaW5zdGFsbC1jb21tb24pOiBQdXQgZXhlY3V0YWJsZXMgaW4gbGliZXhlY3N1YmRpci4KCShpdG9vbHNkaXIpOiBVc2UgbGliZXhlY3N1YmRpci4KCShpdG9vbHNkYXRhZGlyKTogTmV3LgoJKGluc3RhbGwtbWtoZWFkZXJzKTogU2VwYXJhdGUgZGF0YSBmaWxlcyBhbmQgZXhlY3V0YWJsZXMuCgkoaW5zdGFsbC1jb2xsZWN0Mik6IFB1dCBleGVjdXRhYmxlcyBpbiBsaWJleGVjc3ViZGlyLgoJKHVuaW5zdGFsbCk6IFJlbW92ZSBsaWJleGVjc3ViZGlyLgoJKiBta2hlYWRlcnMuaW46IFVwZGF0ZSBmb3IgbmV3IGFycmFuZ2VtZW50IG9mIGZpbGVzLgoJKGxpYmV4ZWNkaXIpOiBOZXcuCgkobGliZXhlY3N1YmRpcik6IE5ldy4KCShpdG9vbHNkaXIpOiBVc2UgbGliZXhlY3N1YmRpci4KCShpdG9vbHNkYXRhZGlyKTogTmV3LgoJKiBnY2MuYyAoZ2NjX2xpYmV4ZWNfcHJlZml4KTogTmV3LgoJKFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYKTogVXNlIGdjYyBpbnN0ZWFkIG9mIGdjYy1saWIuCgkoc3RhbmRhcmRfZXhlY19wcmVmaXhfMSk6IFVzZSBsaWJleGVjLgoJKHN0YW5kYXJkX2V4ZWNfcHJlZml4XzIpOiBOZXcuCgkoc3RhbmRhcmRfbGliZXhlY19wcmVmaXgpOiBOZXcuCgkocHJvY2Vzc19jb21tYW5kKTogVXBkYXRlIGZvciBuZXcgYXJyYW5nZW1lbnQgb2YgZmlsZXMuICBDb21wdXRlCglnY2NfbGliZXhlY19wcmVmaXguICBVcGRhdGUgZm9yIGNoYW5nZSBmcm9tIGdjYy1saWIgdG8gZ2NjLgoKMjAwMy0wNy0zMSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBpbmNsaGFjay5kZWYgKHN0ZGlvX3ZhX2xpc3QpOiBBdm9pZCBib2d1cyByZXBsYWNlbWVudCB3aGljaAoJdHJpZ2dlcnMgb24gSW50ZXJpeC4KCSogZml4aW5jbC54OiBSZWdlbmVyYXRlLgoKMjAwMy0wNy0zMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGxlZ2l0aW1hdGVfcGljX2FkZHJlc3NfZGlzcF9wKTogRGlzYWxsb3cgVExTCglTWU1CT0xfUkVGcyBub3QgaW5zaWRlIFVOU1BFQyBldmVuIGluIFBMVVMgcnR4LgoKMjAwMy0wNy0zMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGR3YXJmMm91dC5jIChsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUsIGNhc2UgQ09OU1RSVUNUT1IpOiBOZXcgY2FzZS4KCjIwMDMtMDctMzEgIFBlciBCb3RobmVyICA8cGJvdGhuZXJAYXBwbGUuY29tPgoKCSogb3B0cy5jIChpbl9mbmFtZXMsIG51bV9pbl9mbmFtZXMpOiAgTW92ZWQgaGVyZSBmcm9tIGMtb3B0cy4KCShhZGRfaW5wdXRfZmlsZW5hbWUpOiAgTmV3IGZ1bmN0aW9uLgoJKGhhbmRsZV9vcHRpb25zKTogIENhbGwgYWRkX2lucHV0X2ZpbGVuYW1lIGRpcmVjdGx5IGluc3RlYWQgb2YKCXdpdGggYSBsYW5nIGhvb2suCgkqIG9wdHMuaCAoaW5fZm5hbWVzLCBudW1faW5fZm5hbWVzKTogIE1vdmVkIGhlcmUuCgkoYWRkX2lucHV0X2ZpbGVuYW1lKTogIERlY2xhcmUuCgkqIGMtZGVjbC5jOiAgTmVlZCB0byAjaW5jbHVkZSBvcHRzLmguCgkqIE1ha2VmaWxlLmluIChjLWRlY2wubyk6ICBBbHNvIGRlcGVuZHMgb24gb3B0cy5oLgoJKiBjLW9wdHMuYyAoaW5fZm5hbWVzLCBudW1faW5fZm5hbWVzKTogIE1vdmVkIHRvIG9wdHMuYy4KCShjX2NvbW1vbl9oYW5kbGVfZmlsZW5hbWUpOiAgUmVwbGFjZWQgYnkgYWRkX2lucHV0X2ZpbGVuYW1lLgoJKiBjLWNvbW1vbi5oIChpbl9mbmFtZXMsIG51bV9pbl9mbmFtZXMsIGNfY29tbW9uX2hhbmRsZV9maWxlbmFtZSk6CglSZW1vdmUuCgkqIGxhbmdob29rcy5oIChzdHJ1Y3QgbGFuZ19ob29rcyk6ICBSZW1vdmUgaGFuZGxlX2ZpbGVuYW1lIGhvb2suCgkqIGxhbmdob29rcy1kZWYuaCAoTEFOR19IT09LU19IQU5ETEVfRklMRU5BTUUpOiAgUmVtb3ZlIG1hY3JvLgoJKExBTkdfSE9PS1NfSU5JVElBTElaRVIpOiAgUmVtb3ZlIHVzZSBvZiBMQU5HX0hPT0tTX0hBTkRMRV9GSUxFTkFNRS4KCSogYy1sYW5nLmMgKExBTkdfSE9PS1NfSEFORExFX0ZJTEVOQU1FKTogIFJlbW92ZSBtYWNyby4KCjIwMDMtMDctMzEgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGNvbWJpbmUuYyAodHJ5X2NvbWJpbmUpOiBTZXQgSlVNUF9MQUJFTCBmb3IgbmV3bHkgY3JlYXRlZAoJdW5jb25kaXRpb25hbCBqdW1wLgoKMjAwMy0wNy0zMSAgWmRlbmVrIER2b3JhayAgPHJha2R2ZXJAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogRm9sZCBzb21lIGNvbXBhcmlzb25zIG9mIGJpdCBvcGVyYXRpb25zLgoKMjAwMy0wNy0zMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBoLmMgKGNyZWF0ZV9lZGdlKTogRml4IHR5cG8uCgkqIGkzODYuYyAocGljX3N5bWJvbGljX29wZXJhbmQpOiBSZW9yZGVyIHRlc3RzLgoKMjAwMy0wNy0zMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9nY292LnRleGkgKEludm9raW5nIEdjb3YpOiBEZXNjcmliZSBvdXRwdXQgbmFtZSBtYW5nbGluZwoJbW9yZSBmdWxseS4KCShHY292IERhdGEgRmlsZXMpOiBVcGRhdGUuCgoyMDAzLTA3LTMxICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGNvbmZpZy5nY2MgKGFscGhhKi1kZWMtb3NmWzQ1XSopOiBFbmFibGUgUE9TSVggdGhyZWFkIHN1cHBvcnQgYnkKCWRlZmF1bHQuCgoJKiBndGhyLXBvc2l4LmM6IE5ldyBmaWxlLgoJKiBndGhyLXBvc2l4Lmg6IERlZmluZSBfUkVFTlRSQU5UIGlmIG1pc3NpbmcuCglNYWtlIF9MSUJPQkpDICNwcmFnbWEgd2VhayB2aXNpYmxlIHdpdGggX0xJQk9CSkNfV0VBSy4KCgkqIGNvbmZpZy9hbHBoYS90LW9zZjQgKFNITElCX0xJTkspOiBIaWRlIGR1bW15IGZ1bmN0aW9ucyBwcm92aWRlZAoJYnkgZ3Roci1wb3NpeC5vLgoJKiBjb25maWcvYWxwaGEvdC1vc2YtcHRocmVhZDogTmV3IGZpbGUuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChhbHBoYV9wdGhyZWFkKTogTmV3IGZpeC4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCSogZml4aW5jL3Rlc3RzL2Jhc2UvcHRocmVhZC5oIFtBTFBIQV9QVEhSRUFEX0NIRUNLXTogTmV3IHRlc3RjYXNlLgoKCSogZG9jL2luc3RhbGwudGV4aSAoYWxwaGEqLWRlYy1vc2YqKTogUmVtb3ZlIC0tZW5hYmxlLXRocmVhZHMKCXdhcm5pbmcuCglGaXhlcyBQUiBib290c3RyYXAvOTMzMC4KCjIwMDMtMDctMzEgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlndXJlLmluIChnY2NfY3ZfbGRfaGlkZGVuKTogQWxzbyBkaXNhYmxlIG9uIG1pcHMtc2dpLWlyaXg1KgoJd2l0aG91dCBHTlUgbGQuCglVcGRhdGUgY29tbWVudC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wNy0zMSAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHJlZGhhdC5jb20+CgoJKiBzY2hlZC1kZXBzLmMgKHNjaGVkX2FuYWx5emVfMik6IFByZXZlbnQgaW50ZXJibG9jayBtb3ZlIG9mIENDMAoJc2V0dGVyLgoKMjAwMy0wNy0zMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5kZWY6IEFscGhhYmV0aXplLgoKMjAwMy0wNy0zMCAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogZG9jL2MtdHJlZS50ZXhpOiBOb3JtYWxpemUgc3BlbGxpbmdzIG9mICJsb3dlcmNhc2UiIGFuZAoJInVwcGVyY2FzZSIuCgkqIGRvYy9jcHAudGV4aTogTGlrZXdpc2UuCgkqIGRvYy9tZC50ZXhpOiBMaWtld2lzZS4KCSogZG9jL3J0bC50ZXhpOiBMaWtld2lzZS4KCSogZG9jL3RtLnRleGk6IExpa2V3aXNlLgoKMjAwMy0wNy0zMCAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogb2JqYy9NYWtlLWxhbmcuaW4gKG9iamMuc3RhZ2UxLCBvYmpjLnN0YWdlMiwgb2JqYy5zdGFnZTMpCgkob2JqYy5zdGFnZTQsIG9iamMuc3RhZ2Vwcm9maWxlLCBvYmpjLnN0YWdlZmVlZGJhY2spOiBSZW1vdmUgbW92ZXMKCW9mIGNjMW9iai4KCjIwMDMtMDctMzAgIENocmlzIERlbWV0cmlvdSAgPGNnZEBicm9hZGNvbS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKFNJWkVfVFlQRSwgUFRSRElGRl9UWVBFKTogVW5kZWYgdGhlc2UKCW1hY3JvcyBiZWZvcmUgZGVmaW5pbmcgdGhlbS4KCjIwMDMtMDctMzEgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKFVOU1BFQ19ST1VORCwgVU5TUEVDX1NFVEhJR0gsCglVTlNQRUNWX0JMT0NLQUdFKTogTmV3IGNvbnN0YW50cy4KCSgiKnNldGhpZ2hxaXNpIiwgIipzZXRoaWdoaGlzaSIsICIqc2V0aGlxaWRpXzY0IiwgIipzZXRoaXFpZGlfMzEiLAoJIipleHRyYWN0cWkiLCAiKmV4dHJhY3RoaSIsICIqZXh0ZW5kcWlkaTIiIHNwbGl0dGVyLCAiKmV4dGVuZHFpc2kyIgoJc3BsaXR0ZXIsICJmaXhfdHJ1bmNkZmRpMl9pZWVlIiwgImZpeF90cnVuY2Rmc2kyX2llZWUiLAoJImZpeF90cnVuY3NmZGkyIiwgImZpeF90cnVuY3Nmc2kyIiwgImJsb2NrYWdlIik6IFVzZSB0aGVtLgoKCShhbGwgaW5zbnMgYW5kIGV4cGFuZGVycyk6IFdyaXRlIG91dHB1dCBjb250cm9sIHN0cmluZyBhcyBicmFjZSBibG9jawoJd2hlcmUgYXBwcm9wcmlhdGUuICBSZW1vdmUgXC1lc2NhcGVzIGZvciBkb3VibGVxdW90ZSBjaGFyYWN0ZXJzLgoKMjAwMy0wNy0zMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZ2NzZS5jIChpbnNlcnRfc3RvcmUpOiBGaXggdHlwbyBpbiBwcmV2aW91cyBwYXRjaC4KCjIwMDMtMDctMzAgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNwcGZpbGVzLmMgKHN0YWNrX2ZpbGUsIG9wZW5fZmlsZV9mYWlsZWQpOiBVc2UgcGF0aCBmb3IgZGVwcy4KCjIwMDMtMDctMzAgIEFuZGkgS2xlZW4gIDxha0BtdWMuZGU+CgoJKiBsb29wLmMgKGNoZWNrX2RicmFfbG9vcCk6IEFsbG93IExUVSBpbiB0aGUgbG9vcCBjb25kaXRpb24uCgoyMDAzLTA3LTMwICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBjb21iaW5lLmMgKGRpc3RyaWJ1dGVfbm90ZXMpOiBDYW5jZWwgUkVHX1ZBTFVFX1BST0ZJTEUgbm90ZXMuCgkqIGdjb3YtaW8uaCAoR0NPVl9GSVJTVF9WQUxVRV9DT1VOVEVSLCBHQ09WX0xBU1RfVkFMVUVfQ09VTlRFUiwKCUdDT1ZfTl9WQUxVRV9DT1VOVEVSUyk6IE5ldy4KCSogcHJvZmlsZS5jIChjb21wdXRlX3ZhbHVlX2hpc3RvZ3JhbXMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGJyYW5jaF9wcm9iKTogUmVhZCBiYWNrIHRoZSB2YWx1ZSBoaXN0b2dyYW1zLgoJKiBydGwuYyAocmVnX25vdGVfbmFtZSk6IEFkZCBuYW1lIGZvciBSRUdfVkFMVUVfUFJPRklMRSBub3RlLgoJKiBydGwuaCAoZW51bSByZWdfbm90ZSk6IEFkZCBSRUdfVkFMVUVfUFJPRklMRSBub3RlLgoJKiB2YWx1ZS1wcm9mLmM6IEFkZCBjb21tZW50IG9uIHJlYWRpbmcgdGhlIHByb2ZpbGUuCgkqIHZhbHVlLXByb2YuaCAoQ09VTlRFUl9GT1JfSElTVF9UWVBFLCBISVNUX1RZUEVfRk9SX0NPVU5URVIpOiBOZXcuCgkqIGRvYy9pbnZva2UudGV4aSAoLWZwcm9maWxlLXZhbHVlcyk6IERvY3VtZW50IGJlaGF2aW9yIHdpdGgKCS1mYnJhbmNoLXByb2JhYmlsaXRpZXMuCgoyMDAzLTA3LTMwICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBsb25nbG9uZy5oIChQb3dlclBDIHVtdWxfcHBtbSk6IERvIG5vdCB0ZXN0IF9fdnh3b3Jrc19fLgoKMjAwMy0wNy0zMCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5oIChFSF9SRVRVUk5fSEFORExFUl9SVFgpOiBDb21wdXRlIG9mZnNldAoJc3ltYm9saWNhbGx5LgoKMjAwMy0wNy0zMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZ2NzZS5jIChpbnNlcnRfc3RvcmUpOiBJZ25vcmUgZmFrZSBlZGdlcy4KCgkqIGMtY29tbW9uLmMgKGZsYWdfdnRhYmxlX2djKTogS2lsbC4KCSogYy1jb21tb24uZyAoZmxhZ192dGFibGVfZ2MpOiBLaWxsLgoJKiBjLW9wdHMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBLaWxsLgoJKiBjLm9wdCAoZnZ0YWJsZS1nYyk6IEtpbGwuCgkqIGZpbmFsLmMgKGZpbmFsX3NjYW5faW5zbik6IERvIG5vdCBjYWxsIGFzc2VtYmxlX3Z0YWJsZV9lbnRyeS4KCSogb3V0cHV0LmggKGFzc2VtYmxlX3Z0YWJsZV9lbnRyeSwgYXNzZW1ibGVfdnRhYmxlX2luaGVyaXQpOiBLaWxsLgoJKiB2YXJhc20uYyAoYXNzZW1ibGVfdnRhYmxlX2VudHJ5LCBhc3NlbWJsZV92dGFibGVfaW5oZXJpdCk6IEtpbGwuCgoJKiBpbnZva2UudGV4aSAoLWZ0YWJsZS1nYyk6IEtpbGwgZG9jdW1lbnRhdGlvbi4KCgkqIHRyZWUtaW5saW5lLmMgKGlubGluYWJsZV9mdW5jdGlvbl9wKTogRG9uJ3Qgc2V0IERFQ0xfVU5JTkxJTkFCTEUKCWp1c3QgYmVjYXVzZSBmdW5jdGlvbiBib2R5IGlzIG1pc3NpbmcuCgoJKiBpMzg2LmMgKHBpY19zeW1ib2xpY19vcGVyYW5kKTogUHJvcGVybHkgZGV0ZWN0IFJJUCByZWxhdGl2ZSB1bnNwZWNzLgoKMjAwMy0wNy0zMCAgUmFuaml0IE1hdGhldyAgPHJtYXRoZXdAaG90bWFpbC5jb20+CgoJKiB1bndpbmQtc2psai5jOiBGaXggdHlwbyBpbiBmaWxlIGRlc2NyaXB0aW9uLgoKMjAwMy0wNy0zMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNhbGxzLmMgKGxvYWRfcmVnaXN0ZXJfcGFyYW1ldGVycyk6IFdoZW4gc2hpZnRpbmcgcmVnIHNpemVkIHZhbHVlcwoJdG8gdGhlIG1zYiwgbW92ZSB0aGUgdmFsdWUgdG8gYSByZWcgZmlyc3QuCgoyMDAzLTA3LTI5ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNwcGZpbGVzLmMgKHN0YWNrX2ZpbGUpOiBMZWF2ZSBmaWxlbmFtZSBhcyAiIiByYXRoZXIgdGhhbiAiPHN0ZGluPiIuCgkqIGxpbmUtbWFwLmggKGxpbmVtYXBfYWRkKTogVXBkYXRlIGNvbW1lbnRzLgoJKiBsaW5lLW1hcC5jIChsaW5lbWFwX2FkZCk6IFVwZGF0ZSBjb21tZW50cywgaW50ZXJwcmV0IHplcm8tbGVuZ3RoCglmaWxlbmFtZSBhcyAiPHN0ZGluPiIuCgoyMDAzLTA3LTI5ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIG1raW5zdGFsbGRpcnM6IEltcG9ydCBhdXRvY29uZiAyLjU3IC8gYXV0b21ha2UgMS43IHZlcnNpb24uCgoyMDAzLTA3LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmMgKGxhc3RfZnVuY3Rpb25fcGFybV92YXJzLCBjdXJyZW50X2Z1bmN0aW9uX3Bhcm1fdmFycyk6CglOZXcgc3RhdGljIHZhcmlhYmxlcy4KCShzdHJ1Y3QgY19zY29wZSk6IEFkZCBwYXJtcyBhbmQgd2FybmVkX2ZvcndhcmRfcGFybV9kZWNscwoJZmllbGRzOyByZW1vdmUgcGFybV9vcmRlci4KCShzdG9yZWRlY2xzLCBzdG9yZXRhZ3MpOiBEZWxldGUuCgkocG9wbGV2ZWwpOiBBbHNvIGNsZWFyIGJpbmRpbmdzIG9uIHRoZSBwYXJtcyBjaGFpbi4KCShwdXNoZGVjbCk6IEhhbmRsZSBmb3J3YXJkIGRlY2xhcmF0aW9ucyBvZiBwYXJhbWV0ZXJzLCBhbmQKCWNoYWluIFBBUk1fREVDTHMgb24gdGhlIHBhcm1zIGxpc3QsIG5vdCB0aGUgbmFtZXMgbGlzdC4KCShsb29rdXBfbmFtZV9jdXJyZW50X2xldmVsKTogQ2hlY2sgZm9yIFBBUk1fREVDTHMgb24gdGhlIHBhcm1zCglsaXN0IHRvby4KCShwdXNoX3Bhcm1fZGVjbCk6IERvbid0IHVwZGF0ZSBwYXJtX29yZGVyLgoJKGNsZWFyX3Bhcm1fb3JkZXIpOiBSZW5hbWUgbWFya19mb3J3YXJkX3Bhcm1fZGVjbHMuICBJc3N1ZSB0aGUKCXdhcm5pbmcsIG9ubHkgb25jZSBwZXIgcGFyYW1ldGVyIGxpc3QsIGFuZCBzZXQgVFJFRV9BU01fV1JJVFRFTgoJb24gdGhlIGRlY2xzIGhlcmUuICBUaGVuIG1vdmUgdGhlIGZvcndhcmQgZGVjbHMgdG8gdGhlIG5hbWVzIGxpc3QuCgkoZ3Jva3Bhcm1zKTogU2V0IGxhc3RfZnVuY3Rpb25fcGFybV92YXJzLgoJKGdldF9wYXJtX2luZm8pOiBEb24ndCB1c2UgZ2V0dGFncyBvciBnZXRkZWNscy4gIE5vIG5lZWQgdG8KCWV4dHJhY3Qgbm9uLXBhcm1zIGZyb20gdGhlIHBhcm1zIGxpc3QsIG9yIHJlb3JnYW5pemUgdGhlIHBhcm1zCglsaXN0LiAgRmVlZCBub25wYXJtcyBiYWNrIGluIHRoZSBUUkVFX1RZUEUgb2YgdGhlIGxpc3Qgbm9kZQoJcmV0dXJuZWQuICBJc3N1ZSBvbmx5IG9uZSBlcnJvciBwZXIgcGFyYW1ldGVyIGxpc3QgZm9yICJ2b2lkIgoJYXBwZWFyaW5nIG1vcmUgdGhhbiBvbmNlIGluIHNhaWQgcGFyYW1ldGVyIGxpc3QuICBDb2xsYXBzZQoJcGFybWxpc3RfdGFnc193YXJuaW5nIGludG8gdGhpcyBmdW5jdGlvbiB0byBhdm9pZCBkb3VibGUgc2NhbgoJb2YgdGFncyBsaXN0LgoJKHN0YXJ0X2Z1bmN0aW9uKTogU2V0IGN1cnJlbnRfZnVuY3Rpb25fcGFybV92YXJzLgoJKHN0b3JlX3Bhcm1fZGVjbHNfbmV3c3R5bGUpOiBCeXBhc3MgcHVzaGRlY2wsIG1hbmlwdWxhdGUgc2NvcGUKCWRpcmVjdGx5LiAgR2V0IG5vbi1wYXJtcyBmcm9tIGN1cnJlbnRfZnVuY3Rpb25fcGFybV92YXJzOyBubwoJbmVlZCB0byBleHRyYWN0IHRoZW0gZnJvbSB0aGUgcGFybXMgY2hhaW4uICBQcm9wZXJseSBiaW5kIHRhZ3MKCWluIHRoZSBuZXcgc2NvcGUuCgkoc3RvcmVfcGFybV9kZWNsc19vbGRzdHlsZSk6IE5vIG5lZWQgdG8gZXh0cmFjdCBub24tcGFyYW1ldGVycwoJZnJvbSB0aGUgcGFybXMgY2hhaW4sIG5vciB0byBzdG9yZSB0aGVtIGJhY2sgYWZ0ZXJ3YXJkLiAgTW92ZQoJZGVjbGFyYXRpb24gdG8gdG9wIG9mIGZ1bmN0aW9uLCByZXN0cnVjdHVyZSBjb2RlIHJlb3JkZXJpbmcKCURFQ0xfQVJHVU1FTlRTLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBObyBuZWVkIHRvIHNhdmUgYW5kIHJlc3RvcmUgd2Fybl9zaGFkb3cuCgkqIGMtcGFyc2UuaW46IERvbid0IGNhbGwgcGFybWxpc3RfdGFnc193YXJuaW5nIG5vcgoJY2xlYXJfcGFybV9vcmRlci4gIENhbGwgbWFya19mb3J3YXJkX3Bhcm1fZGVjbHMgd2hlbiBmb3J3YXJkCglwYXJtIGRlY2xzIGFyZSBlbmNvdW50ZXJlZC4KCSogYy10cmVlLmg6IFByb3RvdHlwZSBtYXJrX2ZvcndhcmRfcGFybV9kZWNsczsgbm90CgljbGVhcl9wYXJtX29yZGVyIG9yIHBhcm1saXN0X3RhZ3Nfd2FybmluZy4KCjIwMDMtMDctMjkgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogYy1jb21tb24uYyAoYWxsb3dfcGNoKTogUmVtb3ZlLgoJKiBjLWNvbW1vbi5oIChhbGxvd19wY2gpOiBSZW1vdmUuCgkoY19jb21tb25fbm9fbW9yZV9wY2gpOiBEZWNsYXJlLgoJKiBjLWxleC5jIChjX2xleCk6IENhbGwgY19jb21tb25fbm9fbW9yZV9wY2ggd2hlbiBhcHByb3ByaWF0ZS4KCSogYy1wY2guYzogSW5jbHVkZSBob3N0aG9va3MuaC4KCShjX2NvbW1vbl92YWxpZF9wY2gpOiBEb24ndCBjaGVjayBhbGxvd19wY2guCgkoY19jb21tb25fcmVhZF9wY2gpOiBDbGVhciB2YWxpZF9wY2ggdG8gcHJldmVudCByZWFkaW5nIFBDSCBmaWxlcy4KCShjX2NvbW1vbl9ub19tb3JlX3BjaCk6IE5ldy4KCSogZ2djLWNvbW1vbi5jOiBJbmNsdWRlIGhvc3Rob29rcy5oLgoJKGd0X3BjaF9zYXZlKTogQ2FsbCBndF9wY2hfZ2V0X2FkZHJlc3MuCgkoZ3RfcGNoX3Jlc3RvcmUpOiBDYWxsIGd0X3BjaF91c2VfYWRkcmVzcy4KCSogaG9va3MuYyAoaG9va192b2lkcF9zaXplX3RfbnVsbCk6IE5ldy4KCShob29rX2Jvb2xfdm9pZHBfc2l6ZV90X2ZhbHNlKTogTmV3LgoJKiBob29rcy5oIChob29rX3ZvaWRwX3NpemVfdF9udWxsKTogTmV3LgoJKGhvb2tfYm9vbF92b2lkcF9zaXplX3RfZmFsc2UpOiBOZXcuCgkqIGhvc3Rob29rcy1kZWYuaCAoSE9TVF9IT09LU19HVF9QQ0hfR0VUX0FERFJFU1MpOiBOZXcuCgkoSE9TVF9IT09LU19HVF9QQ0hfVVNFX0FERFJFU1MpOiBOZXcuCgkoSE9TVF9IT09LU19JTklUSUFMSVpFUik6IEFkZCBIT1NUX0hPT0tTX0dUX1BDSF9HRVRfQUREUkVTUywKCUhPU1RfSE9PS1NfR1RfUENIX1VTRV9BRERSRVNTLgoJKiBob3N0aG9va3MuaCAoc3RydWN0IGhvc3RfaG9va3MpOiBBZGQgZ3RfcGNoX2dldF9hZGRyZXNzLAoJZ3RfcGNoX3VzZV9hZGRyZXNzLgoJKiBkb2MvaG9zdGNvbmZpZy50ZXhpIChIb3N0IENvbW1vbik6IERvY3VtZW50CglIT1NUX0hPT0tTX0dUX1BDSF9HRVRfQUREUkVTUywgSE9TVF9IT09LU19HVF9QQ0hfVVNFX0FERFJFU1MuCgkqIE1ha2VmaWxlLmluIChjLXBjaC5vKTogRGVwZW5kIG9uIGhvc3Rob29rcy5oLgoJKGdnYy1jb21tb24ubyk6IExpa2V3aXNlLgoKCSogY29uZmlnL3JzNjAwMC9ob3N0LWRhcndpbi5jIChIT1NUX0hPT0tTX0dUX1BDSF9HRVRfQUREUkVTUyk6IERlZmluZS4KCShIT1NUX0hPT0tTX0dUX1BDSF9VU0VfQUREUkVTUyk6IERlZmluZS4KCShwY2hfYWRkcmVzc19zcGFjZSk6IE5ldy4KCShkYXJ3aW5fcnM2MDAwX2d0X3BjaF9nZXRfYWRkcmVzcyk6IE5ldy4KCShkYXJ3aW5fcnM2MDAwX2d0X3BjaF91c2VfYWRkcmVzcyk6IE5ldy4KCjIwMDMtMDctMjkgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCglQUiBwcmVwcm9jZXNzb3IvMTE1NjkKCVBSIHByZXByb2Nlc3Nvci8xMTY0OQoJKiBNYWtlZmlsZS5pbiAoTElCQ1BQX0RFUFMpOiBBZGQgSEFTSFRBQl9ILgoJKiBjcHBmaWxlcy5jOiBDb21wbGV0ZWx5IHJld3JpdHRlbi4KCSogYy1pbmNwYXRoLmMgKGZyZWVfcGF0aCwgcmVtb3ZlX2R1cGxpY2F0ZXMsIGhlYWRzLCB0YWlscywgYWRkX3BhdGgpOgoJc3RydWN0IGNwcF9wYXRoIGlzIG5vdyBzdHJ1Y3QgY3BwX2Rpci4KCShyZW1vdmVfZHVwbGljYXRlcyk6IERvbid0IHNpbXBsaWZ5IHBhdGggbmFtZXMuCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9wYXJzZV9maWxlKTogY3BwX3JlYWRfbmV4dF9maWxlIHJlbmFtZWQKCWNwcF9zdGFja19maWxlLgoJKiBjcHBoYXNoLmg6IEluY2x1ZGUgaGFzaHRhYi5oLgoJKF9jcHBfZmlsZSk6IERlY2xhcmUuCgkoc3RydWN0IGNwcF9idWZmZXIpOiBzdHJ1Y3QgaW5jbHVkZV9maWxlIGlzIG5vdyBzdHJ1Y3QgX2NwcF9maWxlLAoJYW5kIHN0cnVjdCBjcHBfcGF0aCBpcyBub3cgc3RydWN0IGNwcF9kaXIuICBSZW5hbWUgbWVtYmVycy4KCShzdHJ1Y3QgY3BwX3JlYWRlcik6IFNpbWlsYXJseS4gIE5ldyBtZW1iZXJzIG9uY2Vfb25seV9maWxlcywKCWZpbGVfaGFzaCwgZmlsZV9oYXNoX2VudHJpZXMsIHF1b3RlX2lnbm9yZXNfc291cmNlX2RpciwKCW5vX3NlYXJjaF9wYXRoLCBzYXdfcHJhZ21hX29uY2UuICBSZW1vdmUgYWxsX2luY2x1ZGVfZmlsZXMgYW5kCgltYXhfaW5jbHVkZV9sZW4uICBNYWtlIHNvbWUgbWVtYmVycyBib29sLgoJKF9jcHBfbWFya19vbmx5X29ubHkpOiBSZW5hbWVkIGZyb20gX2NwcF9uZXZlcl9yZXJlYWQuCgkoX2NwcF9zdGFja19maWxlKTogUmVuYW1lZCBmcm9tIF9jcHBfcmVhZF9maWxlLgoJKF9jcHBfc3RhY2tfaW5jbHVkZSk6IFJlbmFtZWQgZnJvbSBfY3BwX2V4ZWN1dGVfaW5jbHVkZS4KCShfY3BwX2luaXRfZmlsZXMpOiBSZW5hbWVkIGZyb20gX2NwcF9pbml0X2luY2x1ZGVzLgoJKF9jcHBfY2xlYW51cF9maWxlcyk6IFJlbmFtZWQgZnJvbSBfY3BwX2NsZWFudXBfaW5jbHVkZXMuCgkqIGNwcGluaXQuYyAoY3BwX2NyZWF0ZV9yZWFkZXIpOiBJbml0aWFsaXplIG5vX3NlYXJjaF9wYXRoLiAgVXBkYXRlLgoJKGNwcF9yZWFkX25leHRfZmlsZSk6IFJlbmFtZSBhbmQgbW92ZSB0byBjcHBmaWxlcy5jLgoJKGNwcF9yZWFkX21haW5fZmlsZSk6IFVwZGF0ZS4KCSogY3BwbGliLmMgKHJ1bl9kaXJlY3RpdmUpOiBVcGRhdGUgZm9yIHJlbmFtZWQgbWVtYmVycy4KCShkb19pbmNsdWRlX2NvbW1vbiwgX2NwcF9wb3BfYnVmZmVyKTogVXBkYXRlLgoJKGRvX2ltcG9ydCk6IFVuZGVwcmVjYXRlICNpbXBvcnQuCgkoZG9fcHJhZ21hX29uY2UpOiBVbmRlcHJlY2F0ZS4gIFVzZSBfY3BwX21hcmtfZmlsZV9vbmNlX29ubHkuCgkqIGNwcGxpYi5oOiBSZW1vdmUgZmlsZV9uYW1lX21hcF9saXN0LgoJKGNwcF9vcHRpb25zKTogUmVtb3ZlIG1hcF9saXN0LgoJKGNwcF9kaXIpOiBSZW5hbWUgZnJvbSBjcHBfcGF0aC4gIE5ldyBkYXRhdHlwZSBmb3IgbmFtZV9tYXAuCgkoY3BwX3NldF9pbmNsdWRlX2NoYWlucywgY3BwX3N0YWNrX2ZpbGUsIGNwcF9pbmNsdWRlZCk6IFVwZGF0ZS4KCjIwMDMtMDctMjkgIFBoaWwgRWR3YXJkcyAgPHBtZUBnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluOiAgTWFrZSBzdGFtcC1vYmpkaXIgc2FmZSBmb3IgcGFyYWxsZWwgYnVpbGRzLgoKMjAwMy0wNy0yOSAgUGhpbCBFZHdhcmRzICA8cG1lQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKHN0bXAtZG9jb2JqZGlyKTogIE5ldyB0YXJnZXQ7IGVuc3VyZSAkZG9jb2JqZGlyIGV4aXN0cy4KCShpbmZvKTogIERlcGVuZCBvbiBzdG1wLWRvY29iamRpci4KCjIwMDMtMDctMjkgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wNy0yOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIEMrKy8xMTEzMQoJKiB0cmVlLWlubGluZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBBbHdheXMgY2FsbCBpbmxpbmFibGVfZnVuY3Rpb25fcAoJaW4gIXVuaXQtYXQtYS10aW1lIG1vZGUuCgoyMDAzLTA3LTI4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGMtZGVjbC5jIChjX2V4cGFuZF9ib2R5XzEpOiBVc2UgQ19ERUNMX0ZJTEVfU0NPUEUgdG8gZGV0ZWN0CgltYWluIGZ1bmN0aW9uLgoKMjAwMy0wNy0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTE2NjcKCSogYy1jb21tb24uYyAoc2hvcnRlbl9jb21wYXJlKTogVGFrZSBpbnRvIGFjY291bnQgZGlmZmVyZW5jZXMKCWJldHdlZW4gQyBhbmQgQysrIHJlcHJlc2VudGF0aW9uIGZvciBlbnVtZXJhdGlvbiB0eXBlcy4KCSogdHJlZS5oIChzZXRfbWluX2FuZF9tYXhfdmFsdWVzX2Zvcl9pbnRlZ3JhbF90eXBlKTogRGVjbGFyZS4KCSogc3Rvci1sYXlvdXQuYyAoc2V0X21pbl9hbmRfbWF4X3ZhbHVlc19mb3JfaW50ZWdyYWxfdHlwZSk6IE5ldwoJZnVuY3Rpb24sIGJyb2tlbiBvdXQgZnJvbSAuLi4KCShmaXh1cF9zaWduZWRfdHlwZSk6IC4uLiBoZXJlIGFuZCAuLi4KCShmaXh1cF91bnNpZ25lZF90eXBlKTogLi4uIGhlcmUuCgoyMDAzLTA3LTI4ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmM6IFVwZGF0ZSBjb21tZW50YXJ5LCBhZGp1c3QgYmxhbmsgbGluZXMgdGhyb3VnaG91dC4KCShzdHJ1Y3QgY19zY29wZSk6IEZpeCBpbmRlbnRhdGlvbi4gIFJlb3JkZXIgbWVtYmVycyBzbwoJb3V0ZXItY29udGV4dCBwb2ludGVycyBjb21lIGZpcnN0LCBib29sZWFucyBsYXN0LgoJKGR1cGxpY2F0ZV9kZWNscywgZGVmaW5lX2xhYmVsKTogVXNlIGEgJ2xvY3VzJyB2YXJpYWJsZSBmb3IKCWRpYWdub3N0aWMgbG9jYXRpb25zIGluIGEgZmV3IG1vcmUgcGxhY2VzLgoJKHdhcm5faWZfc2hhZG93aW5nKTogVW4tc3BsaXQgYSBjb25kaXRpb25hbCB0aGF0IGZpdHMgb24gb25lIGxpbmUuCgkoY19pbml0X2RlY2xfcHJvY2Vzc2luZyk6IE5vIG5lZWQgdG8gY2xlYXIgY3VycmVudF9zY29wZSBhbmQKCWN1cnJlbnRfZnVuY3Rpb25fc2NvcGUuCgkoc3RhcnRfZGVjbCk6IE1lcmdlIGlmL2Vsc2UgaWYgc3RhdGVtZW50cyB3aXRoIHNhbWUgYWN0aW9uLgoJKHB1c2hfcGFybV9kZWNsKTogUmVuYW1lIG9sZF9pbW1lZGlhdGVfc2l6ZV9leHBhbmQgdG8gdXNlCglzYXZlX2ZvbyBjb252ZW50aW9uOyBzYXZlL3Jlc3RvcmUgYXJvdW5kIGVudGlyZSBmdW5jdGlvbi4KCShncm9rZGVjbGFyYXRvcik6IFJlbW92ZSB1bm5lY2Vzc2FyeSBicmFjZXMuCgoyMDAzLTA3LTI4ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgkgICAgTWljaGFlbCBDdWxiZXJ0c29uICA8TWljaGFlbC5KLkN1bGJlcnRzb25Ad2hlYXRvbi5lZHU+CgoJKiBjLXBhcnNlLmluIChsaW5lbm9fc3RtdF9kZWNsX29yX2xhYmVsc19lbmRpbmdfZGVjbCk6IEFsc28gd2FybgoJd2hlbiB3YXJuX2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudC4gIENhbGwgcGVkd2Fybl9jOTAsIG5vdAoJcGVkd2Fybi4gIENvcnJlY3QgbWVzc2FnZTogaXQncyAiSVNPIEM5MCIsIG5vdCAiSVNPIEM4OSIuCgkqIGMtY29tbW9uLmMgKHdhcm5fZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50KTogRGVmaW5lLgoJKiBjLWNvbW1vbi5oICh3YXJuX2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudCk6IERlY2xhcmUuCgkqIGMub3B0IChXZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50KTogTmV3LgoJKiBjLWVycm9ycy5jIChwZWR3YXJuX2M5MCk6IE5ldyBmdW5jdGlvbi4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pIDxjYXNlCglPUFRfV2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudD46IE5ldy4KCSogYy10cmVlLmggKHBlZHdhcm5fYzkwKTogRGVjbGFyZS4KCSogZG9jL2ludm9rZS50ZXhpIChPcHRpb24gU3VtbWFyeSk6IERvY3VtZW50CgktV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudC4KCShXYXJuaW5nIE9wdGlvbnMpOiBEaXR0by4KCjIwMDMtMDctMjggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKG1lbW9yeSBhdHRyaWJ1dGUpIEF2b2lkIGFjY2Vzc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeQoJZm9yIGlzaGlmdDEgdHlwZSBpbnN0cnVjdGlvbnMuCgoyMDAzLTA3LTI4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtY2hlY2tpbmcpOiBBZGQgZm9sZCBjYXRlZ29yeS4KCShFTkFCTEVfRk9MRF9DSEVDS0lORyk6IERlZmluZSBpZiByZXF1ZXN0ZWQuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogY29uZmlnLmluOiBSZWJ1aWx0LgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEb2N1bWVudCBpdC4KCSogZm9sZC1jb25zdC5jOiBJbmNsdWRlIG1kNS5oLgoJW0VOQUJMRV9GT0xEX0NIRUNLSU5HXSAoZm9sZCk6IERlZmluZSB0byBmb2xkXzEuCglbRU5BQkxFX0ZPTERfQ0hFQ0tJTkddIChmb2xkLCBmb2xkX2NoZWNrc3VtX3RyZWUsIGZvbGRfY2hlY2tfZmFpbGVkLAoJcHJpbnRfZm9sZF9jaGVja3N1bSk6IE5ldyBmdW5jdGlvbnMuCgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQpOiBOZXZlciBtb2RpZnkgYXJndW1lbnQgcGFzc2VkIHRvIGZvbGQsIGluc3RlYWQKCWNoYW5nZSBhIGNvcHkgYW5kIHJldHVybiBpdC4KCSogY29udmVydC5jIChjb252ZXJ0X3RvX2ludGVnZXIpOiBMaWtld2lzZS4KCjIwMDMtMDctMjcgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogZml4aW5jL2ZpeGluYy5zdnI0OiBSZW1vdmUgZGVhZCBjb2RlLiAgUmVtb3ZlIG5vdy11bm5lY2Vzc2FyeQoJY2xlYW51cCBvZiBqdW5rIGFmdGVyICNlbHNlIGFuZCAjZW5kaWYgZGlyZWN0aXZlcy4gIENvbGxhcHNlIHJlcGVhdGVkCgljbGF1c2VzIGludG8gZm9yIHN0YXRtZW50LgoKCSogZml4aW5jL2ZpeGluY2wuc2g6IEdOVSBDIC0+IEdDQy4gIEFkZCB1c2FnZSBjb21tZW50LgoKMjAwMy0wNy0yNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZGVjbC5jIChzdHJ1Y3QgY19zY29wZSk6IFJlbW92ZSBrZWVwX2lmX3N1YmJsb2NrcyBmaWVsZC4KCShrZWVwX25leHRfaWZfc3ViYmxvY2tzKTogUmVuYW1lIG5leHRfaXNfZnVuY3Rpb25fYm9keS4KCShwdXNobGV2ZWwpOiBBZGp1c3QgY29tbWVudGFyeS4gIEFsd2F5cyBzZXQgLT5rZWVwIG9uIHRoZQoJb3V0ZXJtb3N0IGxldmVsIG9mIGEgZnVuY3Rpb24uICBEb24ndCBzZXQgLT5rZWVwX2lmX3N1YmJsb2Nrcy4KCShwb3BsZXZlbCk6IEFkanVzdCBjb21tZW50YXJ5LiAgRG9uJ3QgbG9vayBhdCAtPmtlZXBfaWZfc3ViYmxvY2tzLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBBZGp1c3QgdG8gbWF0Y2guCgkoZmluaXNoX2Z1bmN0aW9uKTogQWRqdXN0IHRvIG1hdGNoLgoJQ2FsbCBwb3BsZXZlbCB3aXRoIGFsbCB0aHJlZSBhcmd1bWVudHMgemVyby4KCgkqIGMtZGVjbC5jIChzdG9yZV9wYXJtX2RlY2xzX25ld3N0eWxlLCBzdG9yZV9wYXJtX2RlY2xzX29sZHN0eWxlKToKCU5ldyBmdW5jdGlvbnMgc3BsaXQgb3V0IG9mIHN0b3JlX3Bhcm1fZGVjbHMuCglBdm9pZCB1bm5lY2Vzc2FyeSB3b3JrLiBVc2UgbG9jYWwgdmFyaWFibGVzIGNvbnNpc3RlbnRseS4KCShzdG9yZV9wYXJtX2RlY2xzKTogTGlrZXdpc2UuCgoJKGZpbmlzaF9mdW5jdGlvbik6IE5vIG5lZWQgdG8gc2V0IGZ1bmN0aW9uYm9keSBmbGFnIG9uIGNhbGwgdG8KCXBvcGxldmVsLgoJKHN0cnVjdCBsYW5ndWFnZV9mdW5jdGlvbik6IFJlbW92ZSBzY29wZSBmaWVsZC4KCShjX3B1c2hfZnVuY3Rpb25fY29udGV4dCwgY19wb3BfZnVuY3Rpb25fY29udGV4dCk6IE5vIG5lZWQgdG8KCXNhdmUgYW5kIHJlc3RvcmUgY3VycmVudF9zY29wZS4KCjIwMDMtMDctMjcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKERlcHJlY2F0ZWQgRmVhdHVyZXMpOiBJbXBsaWNpdCB0eXBlbmFtZSBpcwoJZ29uZS4gRGVmYXVsdCBhcmdzIG9uIHR5cGVzIGlzIGdvaW5nLgoKMjAwMy0wNy0yNiAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoaWZjdnQubyk6IERlcGVuZCBvbiB0YXJnZXQuaAoJKiBpZmN2dC5jICh0YXJnZXQuaCk6IEluY2x1ZGUuCgkoaWZfY29udmVydCk6IERvbid0IGNhbGwgbWFya19sb29wX2V4aXRfZWRnZXMgaWYgd2UgY2FuJ3QKCW1vZGlmeSBqdW1wcy4KCjIwMDMtMDctMjYgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKFRlc3RpbmcpOiBBZGp1c3QgcmVxdWlyZWQgdmVyc2lvbnMgb2YgRGVqYUdudS4KCjIwMDMtMDctMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgaW5saW5lLWFzbS8xMTY3NgoJKiBjc2UuYyAoY291bnRfcmVnX3VzYWdlKTogSGFuZGxlIGFzbV9vcGVyYW5kcyBwcm9wZXJseS4KCjIwMDMtMDctMjYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuZGVmIChERUZfRkFMTEJBQ0tfQlVJTFRJTik6IERlbGV0ZS4KCShERUZfRVhUX0ZBTExCQUNLX0JVSUxUSU4pOiBEZWxldGUuCgkoQlVJTFRfSU5fQlpFUk8sIEJVSUxUX0lOX0JDT1BZLCBCVUlMVF9JTl9CQ01QKTogRGVjbGFyZSB1c2luZwoJdGhlIHJlZ3VsYXIgREVGX0VYVF9MSUJfQlVJTFRJTiBtYWNyby4KCShCVUlMVF9JTl9GUFVUQywgQlVJTFRfSU5fRlBVVFMsIEJVSUxUX0lOX0ZXUklURSk6IERlY2xhcmUgdXNpbmcKCXRoZSByZWd1bGFyIERFRl9MSUJfQlVJTFRJTiBtYWNyby4KCShCVUlMVF9JTl9QVVRDSEFSX1VOTE9DS0VELCBCVUlMVF9JTl9QVVRTX1VOTE9DS0VELAoJQlVJTFRfSU5fRlBVVENfVU5MT0NLRUQsIEJVSUxUX0lOX0ZQVVRTX1VOTE9DS0VELAoJQlVJTFRfSU5fRldSSVRFX1VOTE9DS0VEKTogRGVjbGFyZSB1c2luZyB0aGUgcmVndWxhcgoJREVGX0VYVF9MSUJfQlVJTFRJTiBtYWNyby4KCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBSZW1vdmUgY29kZSB0byBoYW5kbGUgYnVpbHRpbgoJZnVuY3Rpb25zIHByb3RvdHlwZWQgd2l0aG91dCBhbiBhcmd1bWVudCBsaXN0LgoKMjAwMy0wNy0yNiAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGNvbmZpZy9pMzg2L3dpbm50LmM6IFJldmVydCAyMDAzLTA3LTA4IGNoYW5nZS4KCShpMzg2X3BlX3NlY3Rpb25fdHlwZV9mbGFncyk6IFJlbW92ZSBlcnJvcl93aXRoX2RlY2wgaGVyZSB0b28uCgoyMDAzLTA3LTI2ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGNvbmZpZy9hcm0vcGUuYyAoYXJtX21hcmtfZGxsaW1wb3J0KTogRG9uJ3QgdXNlIHh4eF93aXRoX2RlY2wuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jIChtY29yZV9tYXJrX2RsbGltcG9ydCk6IExpa2V3aXNlLgoJKiBjb25maWcvdjg1MC92ODUwLmMgKHY4NTBfaGFuZGxlX2RhdGFfYXJlYV9hdHRyaWJ1dGUpOiBMaWtld2lzZS4KCSh2ODUwX2hhbmRsZV9kYXRhX2FyZWFfYXR0cmlidXRlKTogTGlrZXdpc2UuCgoyMDAzLTA3LTI2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIHZhcmFzbS5jIChvdXRwdXRfY29uc3RhbnRfZGVmX2NvbnRlbnRzKTogVXNlCglBU01fREVDTEFSRV9DT05TVEFOVF9OQU1FIGlmIGRlZmluZWQuCgkqIGRvYy90bS50ZXhpIChMYWJlbCBPdXRwdXQpOiBEb2N1bWVudCBBU01fREVDTEFSRV9DT05TVEFOVF9OQU1FLgoJKiBjb25maWcvZGFyd2luLmggKEFTTV9ERUNMQVJFX09CSkVDVF9OQU1FKTogRW5zdXJlIHplcm8tc2l6ZWQKCW9iamVjdHMgZ2V0IGF0IGxlYXN0IG9uZSBieXRlIHRvIHByZXZlbnQgYXNzZW1ibGVyIHByb2JsZW1zLgoJKEFTTV9ERUNMQVJFX0NPTlNUQU5UX05BTUUpOiBOZXcuCgoJKiBNYWtlZmlsZS5pbiAobGliYmFja2VuZC5vKTogUmVtb3ZlIG9wdGlvbnNfLmguCgkobW9zdGx5Y2xlYW4pOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBEb24ndAoJaW5zZXJ0IGEgbGFiZWwgYXQgdGhlIGVuZCBvZiBhbiBmdW5jdGlvbiB1bmRlciBNYWNoLU8uCgoJKiBjLWRlY2wuYyAoY19zdGF0aWNfYXNzZW1ibGVyX25hbWUpOiBSZW1vdmUgVFJFRV9TVEFUSUMgdGVzdC4KCjIwMDMtMDctMjUgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGlzX2V2NjRfb3BhcXVlX3R5cGUpOiBPbmx5IGNoZWNrIHBvaW50ZXIKCWVxdWFsaXR5LgoJKHNwZV9pbml0X2J1aWx0aW5zKTogRGVjbGFyZSBfX2V2NjRfb3BhcXVlX18gYXMgYSBidWlsdGluIHR5cGUuCgoJKiBjb25maWcvcnM2MDAwL3NwZS5oOiBSZW1vdmUgX19ldjY0X29wYXF1ZV9fIGRlZmluaXRpb24uCgoyMDAzLTA3LTI1ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGRvYy9wYXNzZXMudGV4aSAoUGFzc2VzKTogTWVudGlvbiBwcmV0dHktcHJpbnRpbmcgYW5kCglkaWFnbm9zdGljIGZpbGVzLgoKMjAwMy0wNy0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aSAoRnVuY3Rpb24gQXR0cmlidXRlcyk6IEdOVSBDKysgZG9lcyBub3cgYWxsb3cKCXVudXNlZCBwYXJhbWV0ZXIgZGVjbHMuCgkoQXR0cmlidXRlIFN5bnRheCk6IEdOVSBDKysgZG9lcyBub3QgYWxsb3cgbGFiZWwgYXR0cmlidXRlcyB0byBiZQoJYWZ0ZXIgdGhlICc6Jy4KCjIwMDMtMDctMjUgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogb2JqYy9vYmpjLWFjdC5jIChvYmpjX2NoZWNrX2RlY2wpOiBEb24ndCB1c2UgeHh4X3dpdGhfZGVjbC4KCShvYmpjX2RlY2xhcmVfY2xhc3MpOiBMaWtld2lzZS4KCShlcnJvcl93aXRoX2l2YXIpOiBMaWtld2lzZS4KCShzdGFydF9jbGFzcyk6IExpa2V3aXNlLgoJKHdhcm5fd2l0aF9tZXRob2QpOiBMaWtld2lzZS4KCjIwMDMtMDctMjUgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCVJlbW92ZSBwZWR3YXJuX3dpdGhfZGVjbCwgd2FybmluZ193aXRoX2RlY2wgYW5kIGVycm9yX3dpdGhfZGVjbAoJZnJvbSBHQ0MuCgkqIGNhbGxzLmMgKHRyeV90b19pbnRlZ3JhdGUpOiBEb24ndCB1c2UgeHh4X3dpdGhfZGVjbC4KCShleHBhbmRfY2FsbCk6IExpa2V3aXNlLgoJKiBkd2FyZm91dC5jIChvdXRwdXRfcmVnX251bWJlcik6IExpa2V3aXNlLgoJKiBleHByLmMgKGV4cGFuZF9leHByKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl90ZW1wKTogTGlrZXdpc2UuCgkodW5pbml0aWFsaXplZF92YXJzX3dhcm5pbmcpOiBMaWtld2lzZS4KCShzZXRqbXBfYXJnc193YXJuaW5nKTogTGlrZXdpc2UuCgkoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IExpa2V3aXNlLgoJKiBzdG10LmMgKGZpeHVwX2dvdG9zKTogTGlrZXdpc2UuCgkod2Fybl9hYm91dF91bnVzZWRfdmFyaWFibGVzKTogTGlrZXdpc2UuCgkoZXhwYW5kX2VuZF9iaW5kaW5ncyk6IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IExpa2V3aXNlLgoJKHBsYWNlX2ZpZWxkKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChjaGVja19nbG9iYWxfZGVjbGFyYXRpb25zKTogTGlrZXdpc2UuCgkocmVzdF9vZl9oYW5kbGVfaW5saW5pbmcpOiBMaWtld2lzZS4KCShkZWZhdWx0X3RyZWVfcHJpbnRlcik6IE5ldyBmdW5jdGlvbi4KCShnZW5lcmFsX2luaXQpOiBJbml0aWFsaXplIGRpYWdub3N0aWMgbWFjaGluZXJ5IGJlZm9yZSByb3V0aW5nCglzaWduYWxzIHRvIHRoZSBJQ0UgbWFjaGluZXJ5LiAgU2V0IGRlZmF1bHQgdHJlZSBwcmludGVyLgoJKiB0b3BsZXYuaCAocGVkd2Fybl93aXRoX2RlY2wpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkod2FybmluZ193aXRoX2RlY2wpOiBMaWtld2lzZS4KCShlcnJvcl93aXRoX2RlY2wpOiBMaWtld2lzZS4KCShwZWR3YXJuKTogUmVtb3ZlIGF0dHJpYnV0ZSBmb3IgdGhlIHRpbWUgYmVpbmcuCgkqIHRyZWUtaW5saW5lLmMgKGV4cGFuZF9jYWxsX2lubGluZSk6IERvbid0IHVzZSB4eHhfd2l0aF9kZWNsLgoJKiB2YXJhc20uYyAobmFtZWRfc2VjdGlvbik6IExpa2V3aXNlLgoJKG1ha2VfZGVjbF9ydGwpOiBMaWtld2lzZS4KCShhc3NlbWJsZV92YXJpYWJsZSk6IExpa2V3aXNlLgoJKG1lcmdlX3dlYWspOiBMaWtld2lzZS4KCShkZWNsYXJlX3dlYWspOiBMaWtld2lzZS4KCgkqIGRpYWdub3N0aWMuaDogTW92ZSBub24tZGlhZ25vc3RpYyBzdHVmZiBpbnRvIHByZXR0eS1wcmludC5oLgoJKiBkaWFnbm9zdGljLmM6IE1vdmUgbm9uLWRpYWdub3N0aWMgc3R1ZmYgaW50byBwcmV0dHktcHJpbnQuYy4KCShmb3JtYXRfd2l0aF9kZWNsKTogUmVtb3ZlLgoJKGRpYWdub3N0aWNfZm9yX2RlY2wpOiBMaWtld2lzZS4KCShwZWR3YXJuX3dpdGhfZGVjbCk6IExpa2V3aXNlLgoJKHdhcm5pbmdfd2l0aF9kZWNsKTogTGlrZXdpc2UuCgkoZXJyb3Jfd2l0aF9kZWNsKTogTGlrZXdpc2UuCgkoZGlhZ25vc3RpY19pbml0aWFsaXplKTogQWRqdXN0LgoJKGRpYWdub3N0aWNfY291bnRfZGlhZ25vc3RpYyk6IExpa2V3aXNlLgoJKGFubm91bmNlX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkobGhkX3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZGlhZ25vc3RpY19yZXBvcnRfY3VycmVudF9tb2R1bGUpOiBMaWtld2lzZS4KCShkZWZhdWx0X2RpYWdub3N0aWNfc3RhcnRlcik6IExpa2V3aXNlLgoJKGRpYWdub3N0aWNfcmVwb3J0X2RpYWdub3N0aWMpOiBMaWtld2lzZS4KCShkZWZhdWx0X2RpYWdub3N0aWNfZmluYWxpemVyKTogTGlrZXdpc2UuCgkodmVyYmF0aW0pOiBMaWtld2lzZS4KCShlcnJvcik6IExpa2V3aXNlLgoJKHdhcm5pbmcpOiBMaWtld2lzZS4KCSogb3B0cy5jIChjb21tb25faGFuZGxlX29wdGlvbik6IExpa2V3aXNlLgoJKiBwcmV0dHktcHJpbnQuYzogTmV3IGZpbGUuCgkqIGMtcHJldHR5LXByaW50LmggKHBwX2Jhc2UpOiBPdmVycmlkZS4KCSogYy1wcmV0dHktcHJpbnQuYzogQWRqdXN0IHVzZSBvZiBtYWNyb3MgdGhyb3VnaG91dC4KCShwcF9idWZmZXIpOiBOZXcgbWFjcm8uCgkocHBfbmV3bGluZSk6IExpa2V3aXNlLgoJKiBjLW9iamMtY29tbW9uLmMgKGNfdHJlZV9wcmludGVyKTogQWRqdXN0IHByb3RvdHlwZS4gVGlkeS4KCSogTWFrZWZpbGUuaW4gKERJQUdOT1NUSUNfSCk6IE5ldyB2YXJpYWJsZS4KCShjLWVycm9ycy5vKTogVXNlIGl0LgoJKGMtb2JqYy1jb21tb24ubyk6IExpa2V3aXNlLgoJKGMtY29tbW9uLm8pOiBMaWtld2lzZS4KCShjLW9wdHMubyk6IExpa2V3aXNlLgoJKGMtZm9ybWF0Lm8pOiBMaWtld2lzZS4KCShkaWFnbm9zdGljLm8pOiBMaWtld2lzZS4KCShvcHRzLm8pOiBMaWtld2lzZS4KCSh0b3BsZXYubyk6IExpa2V3aXNlLgoJKHJ0bC1lcnJvci5vKTogTGlrZXdpc2UuCgkoZHdhcmYyb3V0Lm8pOiBMaWtld2lzZS4KCShqdW1wLm8pOiBMaWtld2lzZS4KCShwcmV0dHktcHJpbnQubyk6IE5ldyBydWxlLgoKMjAwMy0wNy0yNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX1BSSU5URiwgQlVJTFRfSU5fRlBSSU5URik6IENoYW5nZWQgZnJvbQoJZnJvbnQtZW5kIGJ1aWx0aW5zIHRvIG5vcm1hbCBidWlsdGlucywgdXNpbmcgREVGX0xJQl9CVUlMVElOLgoJKEJVSUxUX0lOX1BSSU5URl9VTkxPQ0tFRCwgQlVJTFRfSU5fRlBSSU5URl9VTkxPQ0tFRCk6IENoYW5nZWQKCWZyb20gZnJvbnQtZW5kIHRvIG5vcm1hbCBidWlsdGlucywgdXNpbmcgREVGX0VYVF9MSUJfQlVJTFRJTi4KCShERUZfRlJPTlRfRU5EX0xJQl9CVUlMVElOKTogRGVsZXRlLgoJKERFRl9FWFRfRlJPTlRfRU5EX0xJQl9CVUlMVElOKTogRGVsZXRlLgoJKEJVSUxUX0lOX0ZXUklURV9VTkxPQ0tFRCk6IFdyYXAgbG9uZyBsaW5lLgoKCSogYnVpbHRpbnMuYyAoYnVpbGRfc3RyaW5nX2xpdGVyYWwpOiBOZXcgZnVuY3Rpb24gdG8gY29uc3RydWN0CglhIGNoYXIqIHBvaW50ZXIgdG8gYSBzdHJpbmcgbGl0ZXJhbC4KCShleHBhbmRfYnVpbHRpbl9mcHV0cyk6IENoYW5nZSAybmQgYXJndW1lbnQgZnJvbSAiaW50IGlnbm9yZSIgdG8KCSJydHggdGFyZ2V0IiB0byBiZSBjb25zaXN0ZW50IHdpdGggb3RoZXIgZXhwYW5kX2J1aWx0aW5fKiBmdW5jdGlvbnMuCglDaGFuZ2UgM3JkIGFyZ3VtZW50IGZyb20gImludCB1bmxvY2tlZCIgdG8gImJvb2wgdW5sb2NrZWQiLgoJKGV4cGFuZF9idWlsdGluX3ByaW50Zik6IFJld3JpdGUgb2YgY19leHBhbmRfYnVpbHRpbl9wcmludGYgZnJvbQoJYy1jb21tb24uYyB0byBhdm9pZCBmcm9udC1lbmQgZGVwZW5kZW5jaWVzLiAgT3B0aW1pemUgcHJpbnRmKCIiKQoJYXMgYSBuby1vcCB3aGVuIHRoZSByZXN1bHQgaXNuJ3QgcmVxdWlyZWQuICBIYW5kbGUgZW1iZWRkZWQgTlVMcwoJaW4gZm9ybWF0IHN0cmluZy4KCShleHBhbmRfYnVpbHRpbl9mcHJpbnRmKTogQSByZXdyaXRlIG9mIGNfZXhwYW5kX2J1aWx0aW5fZnByaW50ZgoJZnJvbSBjLWNvbW1vbi5jIHRvIGF2b2lkIGZyb250LWVuZCBkZXBlbmRlbmNpZXMuICBMaWtld2lzZSwgb3B0aW1pemUKCWZwcmludGYoZnAsIiIpIGFzIGEgbm8tb3Agd2hlbiB0aGUgcmVzdWx0IGlzbid0IHJlcXVpcmVkLCBldmFsdWF0aW5nCglmcCBmb3Igc2lkZS1lZmZlY3RzLiAgSGFuZGxlIGVtYmVkZGVkIE5VTHMgaW4gZm9ybWF0IHN0cmluZy4KCShleHBhbmRfYnVpbHRpbl9zcHJpbnRmKTogRml4IHR5cG8uCgkoZXhwYW5kX2J1aWx0aW4pOiBEb24ndCBleHBhbmQgQlVJTFRfSU5fRlBSSU5UeyxfVU5MT0NLRUR9IHdoZW4gbm90CglvcHRpbWl6aW5nLiAgQWRqdXN0IGNhbGxzIG9mIGV4cGFuZF9idWlsdGluX2ZwdXRzIHRvIG1hdGNoIHRoZSBBUEkKCWNoYW5nZS4gRXhwYW5kIEJVSUxUX0lOX1BSSU5URiBhbmQgQlVJTFRfSU5fUFJJTlRGX1VOTE9DS0VEIHVzaW5nCglleHBhbmRfYnVpbHRpbl9wcmludGYuICBMaWtld2lzZSwgZXhwYW5kIEJVSUxUX0lOX0ZQUklOVEZfVU5MT0NLRUQKCWFuZCBCVUlMVF9JTl9GUFJJTlRGIHVzaW5nIGV4cGFuZF9idWlsdGluX2ZwcmludGYuCgoJKiBjLWNvbW1vbi5jIChpc192YWxpZF9wcmludGZfYXJnbGlzdCk6IERlbGV0ZS4KCShjX2V4cGFuZF9idWlsdGluKTogRGVsZXRlLgoJKGNfZXhwYW5kX2J1aWx0aW5fcHJpbnRmKTogTW92ZWQgdG8gYnVpbHRpbnMuYy4gRGVsZXRlLgoJKGNfZXhwYW5kX2J1aWx0aW5fZnByaW50Zik6IE1vdmVkIHRvIGJ1aWx0aW5zLmMuICBEZWxldGUuCgkoY19leHBhbmRfZXhwcik6IE5vIGxvbmdlciB0cmVhdCBDQUxMX0VYUFJzIHNwZWNpYWxseS4KCShDQUxMRURfQVNfQlVJTFRfSU4pOiBEZWxldGUuCgoyMDAzLTA3LTI0ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJUFIgb3B0aW1pemF0aW9uLzExNjMxCgkqIGdjc2UuYyAoc3RvcmVfbW90aW9uKTogQ29ubmVjdCBpbmZpbml0ZSBsb29wcyB0byBleGl0LgoKMjAwMy0wNy0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiB0cmVlLmggKGJvb2xlYW5fdHlwZV9ub2RlKTogTW92ZSBmcm9tIEMvQysrL0phdmEgZnJvbnRlbmRzLgoJKGJvb2xlYW5fdHJ1ZV9ub2RlLCBib29sZWFuX2ZhbHNlX25vZGUpOiBMaWtld2lzZS4KCShlbnVtIHRyZWVfaW5kZXgpOiBBZGQgVElfQk9PTEVBTl97VFlQRSxGQUxTRSxUUlVFfS4KCSogdHJlZS5jIChidWlsZF9jb21tb25fdHJlZV9ub2Rlcyk6IEluaXQgYm9vbGVhbl90eXBlX25vZGUuCgkoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXNfMik6IEluaXQgYm9vbGVhbl97dHJ1ZSxmYWxzZX1fbm9kZS4KCSogc3Rvci1sYXlvdXQuYyAoc2V0X3NpemV0eXBlKTogSGFuZGxlIGFuIGVhcmx5IEJPT0xFQU5fVFlQRS4KCSogYy1jb21tb24uaCAodHJ1dGh2YWx1ZV90eXBlX25vZGUpOiBSZW5hbWVkIGZyb20gYm9vbGVhbl90eXBlX25vZGUuCgkodHJ1dGh2YWx1ZV90cnVlX25vZGUpOiBSZW5hbWVkIGZyb20gYm9vbGVhbl90cnVlX25vZGUuCgkodHJ1dGh2YWx1ZV9mYWxzZV9ub2RlKTogUmVuYW1lZCBmcm9tIGJvb2xlYW5fZmFsc2Vfbm9kZS4KCSogYy1kZWNsLmM6IEp1c3Qgc2V0IHRydXRodmFsdWVfKiB0byBpbnRlZ2VyXyouCgkqIGMtKi5bY2hdOiBzL2Jvb2xlYW4vdHJ1dGh2YWx1ZS8uICBzL2NfYm9vbC9ib29sZWFuLy4KCjIwMDMtMDctMjQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYy1kZWNsLmMgKG1hdGNoX2J1aWx0aW5fZnVuY3Rpb25fdHlwZXMpOiBOZXcgc3Vicm91dGluZSBvZgoJZHVwbGljYXRlX2RlY2xzIHRvIHRlc3Qgd2hldGhlciBhIHJlZGVjbGFyYXRpb24gb2YgYSBidWlsdGluCglmdW5jdGlvbiBpcyBzdWl0YWJseSBjbG9zZSwgaS5lLiB0aGUgcmV0dXJuIHR5cGUgYW5kIGFsbCBvZgoJdGhlIGFyZ3VtZW50IHR5cGVzIGhhdmUgdGhlIHNhbWUgbW9kZXMgYXMgdGhlIGJ1aWx0aW4gZXhwZWN0cy4KCShkdXBsaWNhdGVfZGVjbHMpOiBGdXp6eSB0eXBlIG1hdGNoaW5nIGZvciBidWlsdGluIGZ1bmN0aW9ucwoJbW92ZWQgdG8gbWF0Y2hfYnVpbHRpbl9mdW5jdGlvbl90eXBlcy4KCjIwMDMtMDctMjQgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGNmZ2xvb3BtYW5pcC5jIChkdXBsaWNhdGVfbG9vcF90b19oZWFkZXJfZWRnZSk6IFVwZGF0ZSBpcnJlZHVjaWJsZQoJZmxhZyBjb3JyZWN0bHkuCgoyMDAzLTA3LTI0ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmM6IFNlYXJjaC1hbmQtcmVwbGFjZSBjaGFuZ2UgJ2JpbmRpbmcgbGV2ZWwnIHRvCgknc2NvcGUnIGluIGNvbW1lbnRhcnkuCgkoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBOb3cgc3RydWN0IGNfc2NvcGUuCgkoY3VycmVudF9iaW5kaW5nX2xldmVsKTogTm93IGN1cnJlbnRfc2NvcGUuCgkoZnJlZV9iaW5kaW5nX2xldmVsKTogTm93IHNjb3BlX2ZyZWVsaXN0LgoJKGN1cnJlbnRfZnVuY3Rpb25fbGV2ZWwpOiBOb3cgY3VycmVudF9mdW5jdGlvbl9zY29wZS4KCShnbG9iYWxfYmluZGluZ19sZXZlbCk6IE5vdyBnbG9iYWxfc2NvcGUuCgkobWFrZV9iaW5kaW5nX2xldmVsKTogTm93IG1ha2Vfc2NvcGUuCgkocG9wX2JpbmRpbmdfbGV2ZWwpOiBOb3cgcG9wX3Njb3BlLgoKMjAwMy0wNy0yNCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWd1cmUuaW4gKGxpYmdjY192aXNpYmlsaXR5KTogQWRkIG1pc3Npbmcgd2hpdGVzcGFjZS4KCjIwMDMtMDctMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBsaWJnY2Mtc3RkLnZlciAoR0NDXzMuMy4xKTogRXhwb3J0IF9fZ2NjX3BlcnNvbmFsaXR5X3NqMCwKCV9fZ2NjX3BlcnNvbmFsaXR5X3YwLgoKMjAwMy0wNy0yNCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBNYWtlZmlsZS5pbjogUmVwbGFjZSBwd2QgYnkgJHtQV0RfQ09NTUFORH0uCgoyMDAzLTA3LTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpICgtZnByb2ZpbGUtYXJjcywgLWZ0ZXN0LWNvdmVyYWdlKTogVXBkYXRlCglkb2N1bWVudGF0aW9uIG1pc3NlZCBmcm9tIG15IDIwMDMtMDctMDkgcGF0Y2guCgoyMDAzLTA3LTI0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGFjbG9jYWwubTQgKF9nY2NfQ09NUFVURV9HQVNfVkVSU0lPTik6IFNldCBwYXRjaCBsZXZlbCB0byAwIGlmCglpdCdzIG5vdCBwcm92aWRlZC4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoKMjAwMy0wNy0yNCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCVBSIGMvMTA2MDIKCSogYy10eXBlY2suYyAodHlwZV9saXN0c19jb21wYXRpYmxlX3ApOiBEbyBub3QgY29tcGFyZQoJYXJndW1lbnRzIGlmIG9uZSBvZiB0aGVtIGlzIGFuIGVycm9yX21hcmtfbm9kZQoKMjAwMy0wNy0yNCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogU2F2ZSBmcCByZWdzIGlubGluZQoJaWYgY3VycmVudF9mdW5jdGlvbl9jYWxsc19laF9yZXR1cm4uCgoyMDAzLTA3LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2MtdHJlZS50ZXhpIChPRkZTRVRfVFlQRSk6IFVwZGF0ZSBkZXNjcmlwdGlvbi4KCjIwMDMtMDctMjMgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL2NydGkuYXNtIChfaW5pdCwgX2ZpbmkpOiBJbmNyZWFzZSBmcmFtZSBzaXplIHRvIDY0LgoJKiBjb25maWcveHRlbnNhL2xpYjFmdW5jcy5hc20gKF9fbXVsc2kzLCBfX3VkaXZzaTMsIF9fZGl2c2kzLAoJX191bW9kc2kzLCBfX21vZHNpMyk6IEluY3JlYXNlIGZyYW1lIHNpemUgdG8gMzIuCgoyMDAzLTA3LTIzICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvaG9zdC1kYXJ3aW4uYzogQU5TSWZ5LCB1cGRhdGUgY29tbWVudCBmb3Igc2lnYWx0c3RhY2sKCXByb3RvdHlwZS4KCjIwMDMtMDctMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvYy10cmVlLnRleGkgKFR5cGVzKTogVXBkYXRlIGRvY3VtZW50YXRpb24gZm9yIE9GRlNFVF9UWVBFLgoKCVBSIG9wdGltaXphdGlvbi8xMDY3OQoJKiB0cmVlLWlubGluZS5jIChpbmxpbmFibGVfZnVuY3Rpb25fcCk6IEhvbm9yIE1JTl9JTkxJTkVfSU5TTlMuCgoyMDAzLTA3LTIzICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIHRhcmdldC8xMTYwNyBhbmQgUFIgdGFyZ2V0LzExNTE2CgkqIHBhLm1kIChleHR6diwgZXh0diwgaW5zdik6IFJldmVydCBsYXR0ZXIgaGFsZiBvZiBsYXN0IHBhdGNoLgoKMjAwMy0wNy0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9yY2VfZml0X3R5cGUpOiBIYW5kbGUgT0ZGU0VUX1RZUEUuCgkqIHZhcmFzYW0uYyAob3V0cHV0X2NvbnN0YW50KTogTGlrZXdpc2UuCgoyMDAzLTA3LTIyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYWxpYXMuYzogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogYy1jb21tb24uYzogTGlrZXdpc2UuCgkqIGMtZGVjbC5jOiBMaWtld2lzZS4KCSogYy1vcHRzLmM6IExpa2V3aXNlLgoJKiBjb21iaW5lLmM6IExpa2V3aXNlLgoJKiBjcHBsaWIuYzogTGlrZXdpc2UuCgkqIGRpYWdub3N0aWMuYzogTGlrZXdpc2UuCgkqIGRvanVtcC5jOiBMaWtld2lzZS4KCSogZmluYWwuYzogTGlrZXdpc2UuCgkqIGZvbGQtY29uc3QuYzogTGlrZXdpc2UuCgkqIGdjYy5jOiBMaWtld2lzZS4KCSogZ2NzZS5jOiBMaWtld2lzZS4KCSogZ2djLXBhZ2UuYzogTGlrZXdpc2UuCgkqIGp1bXAuYzogTGlrZXdpc2UuCgkqIGxvb3AuYzogTGlrZXdpc2UuCgkqIG1pcHMtdGZpbGUuYzogTGlrZXdpc2UuCgkqIHJlY29nLmM6IExpa2V3aXNlLgoJKiByZWdjbGFzcy5jOiBMaWtld2lzZS4KCSogcmVnbW92ZS5jOiBMaWtld2lzZS4KCSogdHJlZS5jOiBMaWtld2lzZS4KCSogdHJlZS5oOiBMaWtld2lzZS4KCjIwMDMtMDctMjIgIFBlciBCb3RobmVyICA8cGJvdGhuZXJAYXBwbGUuY29tPgoKCSogbGluZS1tYXAuYyAoYWRkX2xpbmVfbWFwKTogIEhhbmRsZSBpbnZhbGlkIExFQVZFIHJlcXVlc3QuCglGaXhlcyBQUiBwcmVwcm9jZXNzb3IvMTEzNjEuCgoyMDAzLTA3LTIyICBQZXIgQm90aG5lciAgPHBib3RobmVyQGFwcGxlLmNvbT4KCgkqIGRpYWdub3N0aWMuYy4oZGlhZ25vc3RpY19yZXBvcnRfY3VycmVudF9tb2R1bGUpOiAgVXBkYXRlIHRvIG1hdGNoCgkyMDAzLTA2LTA1IGNoYW5nZXMgdG8gcHVzaF9zcmNsb2MgYW5kIHBvcF9zcmNsb2MuCgoyMDAzLTA3LTIyICBXb2xmZ2FuZyBCYW5nZXJ0aCAgPGJhbmdlcnRoQGRlYWxpaS5vcmc+CgoJKiBkb2MvdHJvdWJsZS50ZXhpOiBCZXR0ZXIgZG9jdW1lbnQgdHdvLXN0YWdlIG5hbWUgbG9va3VwLgoKMjAwMy0wNy0yMiAgRXJpYyBDaHJpc3RvcGhlciA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zMzkwLmMgKHMzOTBfdmFsaWRfcG9pbnRlcl9tb2RlKTogTmV3LgoJKFRBUkdFVF9WQUxJRF9QT0lOVEVSX01PREUpOiBVc2UuCgkoczM5MF9lbWl0X3Byb2xvZ3VlKTogQWRkIHRwZiBwcm9maWxpbmcgaG9va3MuCgkoczM5MF9lbWl0X2VwaWxvZ3VlKTogRGl0dG8uCgkqIGNvbmZpZy9zMzkwLmggKE1BU0tfVFBGKTogTmV3LgoJKFRBUkdFVF9UUEYpOiBVc2UuCgkoUE9JTlRFUlNfRVhURU5EX1VOU0lHTkVEKTogRGVmaW5lLgoJKiBjb25maWcvczM5MC5tZCAocHRyX2V4dGVuZCk6IE5ldyBwYXR0ZXJuLgoKMjAwMy0wNy0yMiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGhhc2h0YWJsZS5jIChhcHByb3hfc3FydCk6IE1ha2Ugc3RhdGljLgoJKiBoYXNodGFibGUuaDogRG9uJ3QgcHJvdG90eXBlIGFwcHJveF9zcXJ0LgoJKiBsaW5lLW1hcC5jIChpbml0X2xpbmVfbWFwcyk6IFJlbmFtZSBsaW5lbWFwX2luaXQuCgkoZnJlZV9saW5lX21hcHMpOiBSZW5hbWUgbGluZW1hcF9mcmVlLgoJKGFkZF9saW5lX21hcCk6IFJlbmFtZSBsaW5lbWFwX2FkZC4KCShsb29rdXBfbGluZSk6IFJlbmFtZSBsaW5lbWFwX2xvb2t1cC4KCShwcmludF9jb250YWluaW5nX2ZpbGVzKTogUmVuYW1lIGxpbmVtYXBfcHJpbnRfY29udGFpbmluZ19maWxlcy4KCSogbGluZW1hcC5oOiBVcGRhdGUgdG8gbWF0Y2guCgoJKiBjcHBlcnJvci5jLCBjcHBpbml0LmMsIGNwcGxpYi5jLCBjcHBtYWNyby5jOiBVcGRhdGUgY2FsbHMgdG8KCWxpbmVtYXAgcm91dGluZXMgdG8gdXNlIG5ldyBuYW1lcy4KCjIwMDMtMDctMTYgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5jIChoYW5kbGVfcGFja2VkX2F0dHJpYnV0ZSk6IERvbid0IHBhY2sgYSBzdHJ1Y3QgdmlhIGEKCXR5cGVkZWYuIFByb3BhZ2F0ZSBwYWNrZWRuZXNzIGZyb20gYSBtYWluIHZhcmlhbnQuCgoyMDAzLTA3LTIyICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWNvbW1vbik6IEFkZCBkZXBlbmRlbmN5IG9uIGluc3RhbGxkaXJzLgoKMjAwMy0wNy0yMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl90eXBlX2Zvcl9tb2RlKTogUmV0dXJuIGludGVnZXIgdHlwZXMgZm9yCglwb2ludGVyIG1vZGVzLgoKMjAwMy0wNy0yMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjLWRlY2wuYyAoc3RhcnRfZGVjbCk6IERvbid0IGNhbGwgbWF5YmVfYXBwbHlfcHJhZ21hX3dlYWsgaGVyZS4KCShmaW5pc2hfZGVjbCk6IENhbGwgbWF5YmVfYXBwbHlfcHJhZ21hX3dlYWsgaGVyZS4KCShncm9rZGVjbGFyYXRvcik6IENoZWNrIHRoYXQgREVDTF9BU1NFTUJMRVJfTkFNRSBpc24ndCBzZXQgYmVmb3JlCglUUkVFX1BVQkxJQyBhbmQgVFJFRV9TVEFUSUMgYXJlIGRlY2lkZWQuCgkoc3RhcnRfZnVuY3Rpb24pOiBNb3ZlIGNhbGwgdG8gbWF5YmVfYXBwbHlfcHJhZ21hX3dlYWsuICBDaGVjayB0aGF0CglERUNMX0FTU0VNQkxFUl9OQU1FIGlzbid0IHNldCB0b28gZWFybHkuCgoJKiBjcHBsZXguYyAoX2NwcF9wcm9jZXNzX2xpbmVfbm90ZXMpOiBNZW50aW9uIG9wdGlvbiBuYW1lIGluCgl0cmlncmFwaHMgd2FybmluZy4KCjIwMDMtMDctMjIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb21iaW5lLmMgKGlmX3RoZW5fZWxzZV9jb25kKTogU2ltcGxpZnkgdGhlIGNvbXBhcmlzb24gb2YKCXJ0eCBhZ2FpbnN0IC0xLCAwLCBhbmQgMS4KCSogbG9vcC5jIChjaGVja19kYnJhX2xvb3ApOiBMaWtld2lzZS4KCSogb3B0YWJzLmMgKGVtaXRfY29uZGl0aW9uYWxfbW92ZSk6IExpa2V3aXNlLgoJKGVtaXRfY29uZGl0aW9uYWxfYWRkKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCptb3ZzaV9vcik6IExpa2V3aXNlLgoJKCptb3ZkaV9vcl9yZXg2KTogTGlrZXdpc2UuCgoyMDAzLTA3LTIyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9jb21waWxhdGlvbl91bml0KTogUmVtb3ZlIHJlZHVuZGFudCBpZi4KCjIwMDMtMDctMjEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNwcGZpbGVzLmMgKG9wZW5fZmlsZV9wY2gpOiBEb24ndCBwdXQgdW51c2VkIGVudHJpZXMgaW4gdGhlCglzcGxheSB0cmVlLiAgUmVtb3ZlIGRlYWQgY29kZS4KCjIwMDMtMDctMjEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogYy1jb21tb24uaCAobnVtX2luX2ZuYW1lcyk6IERlY2xhcmUuCgkoY19zdGF0aWNfYXNzZW1ibGVyX25hbWUpOiBNb3ZlIGZyb20gaGVyZS4uLgoJKiBjLXRyZWUuaCAoY19zdGF0aWNfYXNzZW1ibGVyX25hbWUpOiAuLi4gdG8gaGVyZS4KCSogYy1vcHRzLmM6IERvbid0IGluY2x1ZGUgbGFuZ2hvb2tzLWRlZi5oLgoJKGNfc3RhdGljX2Fzc2VtYmxlcl9uYW1lKTogTW92ZSB0byBjLWRlY2wuYy4KCShudW1faW5fZm5hbWVzKTogTWFrZSBleHRlcm5hbGx5IHZpc2libGUuCgkqIGMtZGVjbC5jOiBJbmNsdWRlIGxhbmdob29rcy1kZWYuaC4KCShjX3N0YXRpY19hc3NlbWJsZXJfbmFtZSk6IE1vdmUgZnJvbSBjLW9wdHMuYy4KCSogTWFrZWZpbGUuaW4gKGMtZGVjbC5vKTogQWRkICQoTEFOR0hPT0tTX0RFRl9IKS4KCShjLW9wdHMubyk6IFJlbW92ZSAkKExBTkdIT09LU19ERUZfSCkuCgoJKiBjLXByYWdtYS5jIChtYXliZV9hcHBseV9wcmFnbWFfd2Vhayk6IERvbid0IGdldCBERUNMX0FTU0VNQkxFUl9OQU1FCgl3aGVuIGl0J3Mgbm90IG5lZWRlZC4KCjIwMDMtMDctMjEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAobWFjaGluZV9mdW5jdGlvbik6IEFkZCByYV9uZWVkX2xyLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfcmV0dXJuX2FkZHIpOiBTZXQgaXQuCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUpOiBTYXZlIEZQUnMgaW5saW5lIGlmIHNldC4KCjIwMDMtMDctMjEgIEguSi4gTHUgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAocHJlZmV0Y2gpOiBTdXBwb3J0IHByZWRpY2F0ZS4KCjIwMDMtMDctMjEgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIGNmZ2NsZWFudXAuYyAobWVyZ2VfYmxvY2tzX21vdmVfc3VjY2Vzc29yX25vanVtcHMpOiBVc2UgdGFibGVqdW1wX3AuCgkqIHJ0bGFuYWwuYyAodGFibGVqdW1wX3ApOiBVc2UgbmV4dF9hY3RpdmVfaW5zbiBmb3IgZmluZGluZyB0aGUganVtcAoJdGFibGUuCgoyMDAzLTA3LTE3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMTUzNgoJKiB1bnJvbGwuYyAobG9vcF9pdGVyYXRpb25zKTogRG8gbm90IHJlcGxhY2UgYSByZWdpc3RlciBob2xkaW5nCgl0aGUgZmluYWwgdmFsdWUgYnkgaXRzIGVxdWl2YWxlbnQgYmVmb3JlIHRoZSBsb29wIGlmIGl0IGlzIG5vdAoJaW52YXJpYW50LgoKMjAwMy0wNy0yMSAgRGF2ZSBGbHVyaSAgPGRhdmUuZmx1cmlAb25saW5rLm5ldD4KCgkqIGRvYy9leHRlbmQudGV4aTogRml4ZXMgdG8gc3BlbGxpbmcsIGdyYW1tYXIsIGFuZCBkaWN0aW9uLgoKMjAwMy0wNy0yMSAgQmVuIEVsbGlzdG9uICA8YmplQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpIChPcHRpbWl6ZSBPcHRpb25zKTogUmVwbGFjZSAiaXQncyIgd2l0aCAiaXRzIi4KCShWODUwIE9wdGlvbnMpOiBTcGVsbGluZyBmaXhlcy4KCjIwMDMtMDctMjAgIExpc2EgTS4gR29sZHN0ZWluICA8b3B1c0BnbnUub3JnPgoKCSogZG9jL2ludm9rZS50ZXhpOiBGaXhlcyB0byBzdHlsZSwgZ3JhbW1hciBhbmQgZGljdGlvbi4KCjIwMDMtMDctMjAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9BTExPQ0EpOiBSZW1vdmUgIiNpZiBTTUFMTF9TVEFDSyIgZm9ybS4KCSogc3lzdGVtLmggKFNNQUxMX1NUQUNLKTogUG9pc29uIG9ic29sZXRlIHRhcmdldCBtYWNyby4KCSogZG9jL3RtLnRleGkgKFNNQUxMX1NUQUNLKTogUmVtb3ZlIHRhcmdldCBtYWNybyBkb2N1bWVudGF0aW9uLgoKMjAwMy0wNy0yMCAgUGhpbCBFZHdhcmRzICA8cG1lQGdjYy5nbnUub3JnPgoKCSogY29uZmlndXJlLmluOiAgQ2FjaGUgdGhlIHJlc3VsdHMgb2YgdGVzdGluZyBmb3IgY21wJ3MgY2FwYWJpbGl0aWVzLgoJKiBjb25maWd1cmU6ICBSZWdlbmVyYXRlLgoKMjAwMy0wNy0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBkZWJ1Zy8xMTI3OQoJKiBkd2FyZjJvdXQuYyAoZ2VuX2VudW1lcmF0aW9uX3R5cGVfZGllKTogUmVtZW1iZXIgdGhhdAoJZW51bWVyYXRvcnMgY2FuIGJlIHVuc2lnbmVkLgoKMjAwMy0wNy0xOSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZGVjbC5jIChuYW1lZF9sYWJlbHMsIHNoYWRvd2VkX2xhYmVscywgbGFiZWxfbGV2ZWxfY2hhaW4pCgkocHVzaF9sYWJlbF9sZXZlbCwgcG9wX2xhYmVsX2xldmVsKTogS2lsbC4KCShzdHJ1Y3QgYmluZGluZ19sZXZlbCk6IFJlbmFtZSBsZXZlbF9jaGFpbiB0byBvdXRlci4KCUFkZCBvdXRlcl9mdW5jdGlvbiBmaWVsZC4gIENoYW5nZSBwYXJtX2ZsYWcsIGZ1bmN0aW9uX2JvZHksCglrZWVwLCBrZWVwX2lmX3N1YmJsb2NrcyB0byAxLWJpdCBiaXRmaWVsZHMgb2YgdHlwZSBib29sLgoJKGN1cnJlbnRfZnVuY3Rpb25fbGV2ZWwpOiBOZXcgdmFyaWFibGUuCgkoa2VlcF9uZXh0X2xldmVsX2ZsYWcsIGtlZXBfbmV4dF9pZl9zdWJibG9ja3MpOiBDaGFuZ2UgdHlwZSB0byBib29sLgoJKGtlZXBfbmV4dF9sZXZlbCwgZGVjbGFyZV9wYXJtX2xldmVsLCB3YXJuX2lmX3NoYWRvd2luZyk6CglVcGRhdGUgdG8gbWF0Y2guCgkoc3RydWN0IGxhbmd1YWdlX2Z1bmN0aW9uKTogS2lsbCBuYW1lZF9sYWJlbHMsIHNoYWRvd2VkX2xhYmVscyBmaWVsZHMuCgkoY19pbml0X2RlY2xfcHJvY2Vzc2luZywgc3RhcnRfZnVuY3Rpb24sIGNfcHVzaF9fZnVuY3Rpb25fY29udGV4dCkKCShjX3BvcF9mdW5jdGlvbl9jb250ZXh0KTogTm8gbmVlZCB0byBtdWNrIHdpdGggbmFtZWRfbGFiZWxzIG5vcgoJc2hhZG93ZWRfbGFiZWxzLgoKCShtYWtlX2JpbmRpbmdfbGV2ZWwpOiBObyBuZWVkIHRvIGNsZWFyIHRoZSBzdHJ1Y3R1cmUgaGVyZS4KCShwb3BfYmluZGluZ19sZXZlbCk6IEFsd2F5cyBvcGVyYXRlIG9uIGN1cnJlbnRfYmluZGluZ19sZXZlbC4KCVVwZGF0ZSBjdXJyZW50X2Z1bmN0aW9uX2xldmVsIGlmIG5lY2Vzc2FyeS4KCShwdXNobGV2ZWwpOiBEb24ndCBjbGVhciBuYW1lZF9sYWJlbHMuICBVcGRhdGUgY3VycmVudF9mdW5jdGlvbl9sZXZlbAoJaWYgbmVjZXNzYXJ5LiAgVXNlICJ0cnVlIiBhbmQgImZhbHNlIiB3aGVyZSBhcHByb3ByaWF0ZS4KCShwb3BsZXZlbCk6IERpYWdub3NlIGxhYmVscyBkZWZpbmVkIGJ1dCBub3QgdXNlZCwgb3IgdmljZQoJdmVyc2EsIGFuZCBjbGVhciBvdXQgbGFiZWwtbWVhbmluZ3MgbGVhdmluZyBzY29wZSwgd2hpbGUKCXdhbGtpbmcgZG93biB0aGUgZGVjbHMgbGlzdCwgZm9yIGFsbCBiaW5kaW5nIGxldmVscy4KCUhhbmRsZSBMQUJFTF9ERUNMcyBhcHBlYXJpbmcgaW4gdGhlIHNoYWRvd2VkIGxpc3QuCglwb3BfYmluZGluZ19sZXZlbCB0YWtlcyBubyBhcmd1bWVudHMuCgkocHVzaGRlY2xfZnVuY3Rpb25fbGV2ZWwpOiBVc2UgY3VycmVudF9mdW5jdGlvbl9sZXZlbC4KCgkobWFrZV9sYWJlbCwgYmluZF9sYWJlbCk6IE5ldyBzdGF0aWMgZnVuY3Rpb25zLgoJKGRlY2xhcmVfbGFiZWwpOiBOZXcgZXhwb3J0ZWQgZnVuY3Rpb24uCgkobG9va3VwX2xhYmVsLCBkZWZpbmVfbGFiZWwpOiBSZXdyaXR0ZW4gZm9yIG5ldyBkYXRhIHN0cnVjdHVyZS4KCShzaGFkb3dfbGFiZWwpOiBLaWxsLgoKCSogYy10cmVlLmg6IFByb3RvdHlwZSBkZWNsYXJlX2xhYmVsOyBkb24ndCBwcm90b3R5cGUKCXB1c2hfbGFiZWxfbGV2ZWwsIHBvcF9sYWJlbF9sZXZlbCwgbm9yIHNoYWRvd19sYWJlbC4KCSogYy1wYXJzZS5pbjogUmVtb3ZlIGFsbCBjYWxscyB0byBwdXNoX2xhYmVsX2xldmVsIGFuZAoJcG9wX2xhYmVsX2xldmVsLiAgVXNlIGRlY2xhcmVfbGFiZWwgZm9yIF9fbGFiZWxfXyBkZWNscy4KCgkqIGRvYy9leHRlbmQudGV4aTogQ2xhcmlmeSB0aGF0IF9fbGFiZWxfXyBjYW4gYmUgdXNlZCB0bwoJZGVjbGFyZSBsYWJlbHMgd2l0aCBsb2NhbCBzY29wZSBpbiBhbnkgbmVzdGVkIGJsb2NrLCBub3QKCWp1c3Qgc3RhdGVtZW50IGV4cHJlc3Npb25zLiAgQ3Jvc3MtcmVmZXJlbmNlIG5lc3RlZCBmdW5jdGlvbnMKCXNlY3Rpb24gZnJvbSBsb2NhbCBsYWJlbHMgc2VjdGlvbi4KCjIwMDMtMDctMTkgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIHNjaGVkLXJnbi5jIChmaW5kX3JnbnMpOiBJbml0aWFsaXplIGN1cnJlbnRfZWRnZSBjb3JyZWN0bHkuCgoyMDAzLTA3LTE5ICBQaGlsIEVkd2FyZHMgIDxwbWVAZ2NjLmdudS5vcmc+CgoJKiBkb2MvbWFrZWZpbGUudGV4aSAocmVzdHJhcCwgcHJvZmlsZWRib290c3RyYXApOiAgRG9jdW1lbnQgdGFyZ2V0cy4KCjIwMDMtMDctMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGluYy9maXhmaXhlcy5jIGZpeGluYy9maXhpbmNsLmMgZml4aW5jL2ZpeGxpYi5jCglmaXhpbmMvc2VydmVyLmMgb2JqYy9vYmpjLWFjdC5jOiBSZW1vdmUgdW5uZWNlc3NhcnkgY2FzdHMuCgoyMDAzLTA3LTE5ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBBY2Nlc3MgbG9jYWwgc3ltYm9scwoJcmVsYXRpdmUgdG8gdGhlIEdPVCBpbnN0ZWFkIG9mIHJlbGF0aXZlIHRvIHRoZSBsaXRlcmFsIHBvb2wgYmFzZS4KCShzMzkwX291dHB1dF9zeW1ib2xpY19jb25zdCk6IEhhbmRsZSBuZXcgR09ULXJlbGF0aXZlIGFjY2Vzc2VzLgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiY2FsbCIpOiBBY2Nlc3MgbG9jYWwgZnVuY3Rpb25zIGFuZCBQTFQgc3R1YnMKCXJlbGF0aXZlIHRvIHRoZSBHT1QgaW5zdGVhZCBvZiByZWxhdGl2ZSB0byB0aGUgbGl0ZXJhbCBwb29sIGJhc2UuCgkoImNhbGxfdmFsdWUiKTogTGlrZXdpc2UuCgkoImNhbGxfdmFsdWVfdGxzIik6IExpa2V3aXNlLgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2NodW5raWZ5X3N0YXJ0KTogUmVtb3ZlIHBvb2wgYW5jaG9yCglyZWxvYWRpbmcuICBTdXBwb3J0IExUUkVMX0JBU0UgLyBMVFJFTF9PRkZTRVQgY29uc3RydWN0LgoJKHMzOTBfY2h1bmtpZnlfZmluaXNoKTogTGlrZXdpc2UuCgkoczM5MF9jaHVua2lmeV9jYW5jZWwpOiBMaWtld2lzZS4KCShzMzkwX3Jlb3JnKTogQWRhcHQgY2FsbGVyLgoJKGZpbmRfYmFzZV9yZWdpc3Rlcl9pbl9hZGRyLAoJZmluZF9iYXNlX3JlZ2lzdGVyX3JlZiwgcmVwbGFjZV9iYXNlX3JlZ2lzdGVyX3JlZik6IERlbGV0ZS4KCShmaW5kX2x0cmVsX2Jhc2UsIHJlcGxhY2VfbHRyZWxfYmFzZSk6IE5ldyBmdW5jdGlvbnMuCgkoZmluZF9jb25zdGFudF9wb29sX3JlZik6IEhhbmRsZSBMVFJFTF9CQVNFIHVuc3BlY3MuCgkoczM5MF9kZWNvbXBvc2VfYWRkcmVzcyk6IEhhbmRsZSBMVFJFTF9CQVNFIHVuc3BlY3MuICBPcHRpbWl6ZQoJYmFzZSB2cy4gaW5kZXggcmVnaXN0ZXIgdXNhZ2UuCgkoc3RydWN0IGNvbnN0YW50X3Bvb2wpOiBSZW1vdmUgJ2FuY2hvcicuCgkoczM5MF9hZGRfYW5jaG9yKTogRGVsZXRlLgoJKHMzOTBfZHVtcF9wb29sKTogUmVtb3ZlIGFuY2hvciBoYW5kbGluZy4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoInJlbG9hZF9hbmNob3IiKTogUmVtb3ZlLgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX3NwbGl0X2JyYW5jaGVzKTogVXNlIExUUkVMX0JBU0UvT0ZGU0VULgoJKHMzOTBfbG9hZF9nb3QpOiBOZXcgZnVuY3Rpb24uICBVc2UgTFRSRUxfQkFTRS9PRkZTRVQuCgkoczM5MF9lbWl0X3Byb2xvZ3VlKTogVXNlIGl0LgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiYnVpbHRpbl9sb25nam1wIiwgImJ1aWx0aW5fc2V0am1wX3NldHVwIiwKCSJidWlsdGluX3NldGptcF9yZWNlaXZlciIpOiBDbGVhbnVwLiAgVXNlIHMzOTBfbG9hZF9nb3QuICBEbyBub3QKCWhhcmQtY29kZSByZWdpc3RlciAxNC4KCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAoczM5MF9sb2FkX2dvdCk6IERlY2xhcmUuCgoJKiBjb25maWcvczM5MC9zMzkwLmMgKE5SX0NfTU9ERVMsIGNvbnN0YW50X21vZGVzLCBnZW5fY29uc3R0YWJsZSk6CglTdXBwb3J0IFRJbW9kZSBjb25zdGFudHMuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKCJjb25zdHRhYmxlX3RpIik6IE5ldy4KCSgiY29uc3R0YWJsZV9zaSIsICJjb25zdHRhYmxlX2RpIik6IEhhbmRsZSBUTFMgc3ltYm9scyBjb3JyZWN0bHkuCgoJKiBjb25maWcvczM5MC9zMzkwLm1kIChVTlNQRUNfTFRSRUxfT0ZGU0VULCBVTlNQRUNfTFRSRUxfQkFTRSwKCVVOU1BFQ19HT1RFTlQsIFVOU1BFQ19HT1QsIFVOU1BFQ19HT1RPRkYsIFVOU1BFQ19QTFQsIFVOU1BFQ19QTFRPRkYsCglVTlNQRUNfUkVMT0FEX0JBU0UsIFVOU1BFQ1ZfUE9PTCwgVU5TUEVDVl9QT09MX1NUQVJULCBVTlNQRUNWX1BPT0xfRU5ELAoJVU5TUEVDVl9QT09MX1FJLCBVTlNQRUNWX1BPT0xfSEksIFVOU1BFQ1ZfUE9PTF9TSSwgVU5TUEVDVl9QT09MX0RJLAoJVU5TUEVDVl9QT09MX1RJLCBVTlNQRUNWX1BPT0xfU0YsIFVOU1BFQ1ZfUE9PTF9ERiwgVU5TUEVDVl9NQUlOX1BPT0wpOgoJTmV3IHN5bWJvbGljIGNvbnN0YW50cy4KCSgiY29uc3R0YWJsZV9xaSIsICJjb25zdHRhYmxlX2hpIiwgImNvbnN0dGFibGVfc2kiLCAiY29uc3R0YWJsZV9kaSIsCgkiY29uc3R0YWJsZV9zZiIsICJjb25zdHRhYmxlX2RmIiwgInBvb2xfc3RhcnRfMzEiLCAicG9vbF9lbmRfMzEiLAoJInBvb2xfc3RhcnRfNjQiLCAicG9vbF9lbmRfNjQiLCAicmVsb2FkX2Jhc2VfMzEiLCAicmVsb2FkX2Jhc2VfNjQiLAoJInBvb2wiLCAibGl0ZXJhbF9wb29sXzMxIiwgImxpdGVyYWxfcG9vbF82NCIpOiBDbGVhbnVwLiAgVXNlCglzeW1ib2xpYyBVTlNQRUMgdmFsdWVzLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKGxhcmxfb3BlcmFuZCwgczM5MF9zaG9ydF9kaXNwbGFjZW1lbnQsCglicmFzX3N5bV9vcGVyYW5kLCBzMzkwX2Nhbm5vdF9mb3JjZV9jb25zdF9tZW0sCglzMzkwX2RlbGVnaXRpbWl6ZV9hZGRyZXNzLCBzMzkwX2RlY29tcG9zZV9hZGRyZXNzLAoJbGVnaXRpbWl6ZV9waWNfYWRkcmVzcywgczM5MF9vdXRwdXRfc3ltYm9saWNfY29uc3QsCglzMzkwX2Z1bmN0aW9uX3Byb2ZpbGVyKTogVXNlIHN5bWJvbGljIFVOU1BFQyB2YWx1ZXMuCgoyMDAzLTA3LTE5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbGlhcy5jIGFsbG9jLXBvb2wuYyBiaXRtYXAuYyBiaXRtYXAuaCBidC1sb2FkLmMgYnVpbHRpbnMuYwoJYy1jb21tb24uYyBjLWRlY2wuYyBjLWluY3BhdGguYyBjLWxleC5jIGMtb3B0cy5jIGMtcGFyc2UuaW4KCWMtcHJhZ21hLmMgYy10eXBlY2suYyBjYWxscy5jIGNmZy5jIGNmZ2FuYWwuYyBjZmdsb29wLmMgY2ZncnRsLmMKCWNvbGxlY3QyLmMgY29tYmluZS5jIGNvbmZsaWN0LmMgY292ZXJhZ2UuYyBjcHBleHAuYyBjcHBmaWxlcy5jCgljcHBoYXNoLmMgY3BwaW5pdC5jIGNwcGxleC5jIGNwcGxpYi5jIGNwcG1hY3JvLmMgY3Bwc3BlYy5jCgljcHB0cmFkLmMgY3NlLmMgY3NlbGliLmMgZGJ4b3V0LmMgZGVmYXVsdHMuaCBkZi5jIGRvbWluYW5jZS5jCglkd2FyZjJvdXQuYyBkd2FyZm91dC5jIGVtaXQtcnRsLmMgZXhjZXB0LmMgZXhwbWVkLmMgZXhwci5jIGZpbmFsLmMKCWZpeC1oZWFkZXIuYyBmbG93LmMgZm9sZC1jb25zdC5jIGZ1bmN0aW9uLmMgZ2NjLmMgZ2Njc3BlYy5jIGdjb3YuYwoJZ2NzZS5jIGdlbmF0dHIuYyBnZW5hdHRydGFiLmMgZ2VuYXV0b21hdGEuYyBnZW5jb25kaXRpb25zLmMKCWdlbmVtaXQuYyBnZW5leHRyYWN0LmMgZ2Vub3V0cHV0LmMgZ2VucmVjb2cuYyBnZW5zdXBwb3J0LmMKCWdnYy1wYWdlLmMgZ2djLXNpbXBsZS5jIGdsb2JhbC5jIGdyYXBoLmMgaGFpZmEtc2NoZWQuYyBoYXNodGFibGUuYwoJaW50ZWdyYXRlLmMganVtcC5jIGxhbmdob29rcy5jIGxjbS5jIGxpbmUtbWFwLmMgbG9jYWwtYWxsb2MuYwoJbG9vcC5jIG1pcHMtdGR1bXAuYyBtaXBzLXRmaWxlLmMgbWtkZXBzLmMgb3B0YWJzLmMgcGFyYW1zLmMKCXBvc3RyZWxvYWQuYyBwcmVmaXguYyBwcmludC10cmVlLmMgcHJvdG9pemUuYyByYS1idWlsZC5jCglyYS1jb2xvcml6ZS5jIHJhLXJld3JpdGUuYyByYS5jIHJlY29nLmMgcmVnLXN0YWNrLmMgcmVnY2xhc3MuYwoJcmVnbW92ZS5jIHJlZ3JlbmFtZS5jIHJlbG9hZC5jIHJlbG9hZDEuYyByZW9yZy5jIHJlc291cmNlLmMKCXNiaXRtYXAuYyBzY2hlZC1kZXBzLmMgc2NoZWQtcmduLmMgc2NoZWQtdmlzLmMgc2Rib3V0LmMKCXNpbXBsaWZ5LXJ0eC5jIHNzYS1jY3AuYyBzc2EuYyBzdG10LmMgc3Rvci1sYXlvdXQuYyB0aW1ldmFyLmMKCXRsaW5rLmMgdG9wbGV2LmMgdHJlZS1kdW1wLmMgdHJlZS5jIHVucm9sbC5jIHVud2luZC1kdzItZmRlLmMKCXZhcmFzbS5jIHZhcnJheS5jIHZtc2RiZ291dC5jIHhjb2Zmb3V0LmM6IFJlbW92ZSB1bm5lY2Vzc2FyeQoJY2FzdHMuCgoyMDAzLTA3LTE5ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGMtcHJhZ21hLmMgKGFwcGx5X3ByYWdtYV93ZWFrKTogRG9uJ3QgdXNlIHdhcm5pbmdfd2l0aF9kZWNsLgoJKiB0b3BsZXYuaCAod2FybmluZyk6IFJlbW92ZSBhdHRyaWJ1dGUuCgoyMDAzLTA3LTE5ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGMtZGVjbC5jIChjX2ZpbmlzaF9pbmNvbXBsZXRlX2RlY2wpOiBEb24ndCB1c2UgeHh4X3dpdGhfZGVjbC4KCShwb3BfbGFiZWxfbGV2ZWwpOiBMaWtld2lzZS4KCShkdXBsaWNhdGVfZGVjbHMpOiBMaWtld2lzZS4KCShpbXBsaWNpdGx5X2RlY2xhcmUpOiBMaWtld2lzZS4KCShzaGFkb3dfbGFiZWwpOiBMaWtld2lzZS4KCShzdGFydF9kZWNsKTogTGlrZXdpc2UuCgkoZmluaXNoX2RlY2wpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKGdldF9wYXJtX2luZm8pOiBMaWtld2lzZS4KCShkZXRlY3RfZmllbGRfZHVwbGljYXRlcyk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3QpOiBMaWtld2lzZS4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBMaWtld2lzZS4KCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShjX2V4cGFuZF9ib2R5XzEpOiBMaWtld2lzZS4KCShjaGVja19mb3JfbG9vcF9kZWNscyk6IExpa2V3aXNlLgoJKG1lcmdlX3RyYW5zbGF0aW9uX3VuaXRfZGVjbHMpOiBMaWtld2lzZS4KCjIwMDMtMDctMTkgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGNvbW1vbi5vcHQ6ICBEb2N1bWVudCAtLXBhcmFtLgoJKiBvcHRzLmMgKGNvbHVtbnMsIHVuZG9jdW1lbnRlZF9tc2cpOiBOZXcuCgkocHJpbnRfaGVscCk6IEdldCBudW1iZXIgb2YgY29sdW1ucyBmcm9tIGVudmlyb25tZW50LiAgUHJpbnQKCS0tcGFyYW0gaGVscC4gIFR3ZWFrIG5ld2xpbmUgaGFuZGxpbmcuCgkocHJpbnRfcGFyYW1faGVscCk6IE5ldy4KCShwcmludF9maWx0ZXJlZF9oZWxwKTogQmV0dGVyIGhhbmRsaW5nIG9mIGR1cGxpY2F0ZXMuICBDb21wbGFpbgoJYWJvdXQgdW5kb2N1bWVudGVkIHN3aXRjaGVzLgoJKHByaW50X3N3aXRjaCk6IE5ldy4KCSh3cmFwX2hlbHApOiBJbXByb3ZlIHdyYXBwaW5nLCB1c2UgQ09MVU1OUy4KCSogb3B0cy5zaDogSWdub3JlIGNvbW1lbnRzIGluIHJlY29yZHMuCgkqIHBhcmFtcy5kZWY6IEZpeCB0eXBvcyBhbmQgcmVtb3ZlIHRyYWlsaW5nIHBlcmlvZHMuCgkqIHRvcGxldi5jIChkaXNwbGF5X2hlbHApOiBEb24ndCBkdW1wIC0tcGFyYW0gaGVscC4KCSogZG9jL3NvdXJjZWJ1aWxkLnRleGk6IFVwZGF0ZS4KCjIwMDMtMDctMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzExNTU2CgkqIG9wdGFicy5jIChwcmVwYXJlX29wZXJhbmQpOiBGYWlsIGdyYWNlZnVsbHkgaW5zdGVhZCBvZiBhYm9ydAoJaWYgdGhlIHByZWRpY2F0ZSBkb2Vzbid0IHNhdGlzZnkuCgkoZ2VuX2NvbmRfdHJhcCk6IEFsbG93IHByZXBhcmVfb3BlcmFuZCB0byBmYWlsLgoKMjAwMy0wNy0xOSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBjLWNvbW1vbi5jOiBEb24ndCB1bmRlZmluZSBHQ0NfRElBR19TVFlMRS4KCShmbmFtZV9kZWNsKTogRG9uJ3QgdXNlIHh4eF93aXRoX2RlY2wuCgkoY19hZGRfY2FzZV9sYWJlbCk6IExpa2V3aXNlLgoJKGhhbmRsZV9zZWN0aW9uX2F0dHJpYnV0ZSk6IExpa2V3aXNlLgoJKGhhbmRsZV9hbGlhc19hdHRyaWJ1dGUpOiBMaWtld2lzZS4KCShoYW5kbGVfbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9hdHRyaWJ1dGUpOiBMaWtld2lzZS4KCShoYW5kbGVfbm9fbGltaXRfc3RhY2tfYXR0cmlidXRlKTogTGlrZXdpc2UuCgkqIGMtb2JqYy1jb21tb24uYyAoY190cmVlX3ByaW50ZXIpOiBQcmludCBJREVOVElGSUVSX05PREVzLgoJKiBjLWZvcm1hdC5jIChnY2NfY2RpYWdfY2hhcl90YWJsZSk6IEFkZCAnJUUnIGZvcm1hdC1zcGVjaWZpZXIuCgoyMDAzLTA3LTE5ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBNYWtlZmlsZS5pbiAoaWZjdnQubyk6IEFkZCBjZmdsb29wLmguCgkqIGJhc2ljLWJsb2NrLmggKEVER0VfTE9PUF9FWElUKTogTmV3IGZsYWcuCgkqIGNmZ3J0bC5jIChydGxfdmVyaWZ5X2Zsb3dfaW5mb18xKTogSGFuZGxlIGl0IGNvcnJlY3RseS4KCSogaWZjdnQuYzogSW5jbHVkZSBjZmdsb29wLmguCgkobWFya19sb29wX2V4aXRfZWRnZXMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGlmX2NvbnZlcnQpOiBDYWxsIGl0LgoJKGZpbmRfaWZfaGVhZGVyKTogSWdub3JlIGJyYW5jaGVzIG91dCBvZiBsb29wcy4KCjIwMDMtMDctMTggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X2NvbXBhcmlzb24pOiBEb24ndCBzaGFyZSBydHggd2hlbiBjb252ZXJ0aW5nCgkobmUgKGFuZCAobm90IFgpIDEpIDApIHRvIChlcSAoYW5kIFggMSkgMCkuCgoyMDAzLTA3LTE4ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL2FpeC5oIChBR0dSRUdBVEVfUEFERElOR19GSVhFRCk6IERlZmluZS4KCShBR0dSRUdBVEVTX1BBRF9VUFdBUkRfQUxXQVlTKTogRGVmaW5lLgoJKE1VU1RfUEFTU19JTl9TVEFDSyk6IERlZmluZS4KCShCTE9DS19SRUdfUEFERElORyk6IERlZmluZS4KCjIwMDMtMDctMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjZmdydGwuYyAoZm9yY2Vfbm9uZmFsbHRocnVfYW5kX3JlZGlyZWN0KTogVXNlIHRhYmxlanVtcF9wCgl0byBza2lwIHRoZSBhZGRyX3ZlYy4KCjIwMDMtMDctMTggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29tYmluZS5jIChjb21iaW5hYmxlX2kzcGF0KTogRG9uJ3QgZm9yYmlkIG9jY3VycmVuY2VzIG9mCglpMmRlc3Qgb3IgaTFkZXN0IGluIGlubmVyX2Rlc3QgaWYgaW5uZXJfZGVzdCBpcyBhIG1lbS4KCjIwMDMtMDctMTggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaC5jIChjZ3JhcGhfcmVtb3ZlX25vZGUpOiBDbGVhciB0aGUgaGFzaCB0YWJsZSBzbG90LgoKMjAwMy0wNy0xNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzExMDg3CgkqIGxvb3AuYyAoYmFzaWNfaW5kdWN0aW9uX3Zhcik6IENoZWNrIGlmIGNvbnZlcnRfbW9kZXMgZW1pdHRlZCBhbnkKCWluc3RydWN0aW9ucy4gUmVtb3ZlIHRoZW0gYW5kIHJldHVybiAwIGlmIHNvLgoKMjAwMy0wNy0xOCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBvcHRpbWl6YXRpb24vMTEwODMKCSogdG9wbGV2LmMgKHJlc3Rfb2ZfaGFuZGxlX2FkZHJlc29mKTogUmVuYW1lIGludG8KCXJlc3Rfb2ZfaGFuZGxlX2FkZHJlc3NvZi4gIERlbGV0ZSB1bnJlYWNoYWJsZSBibG9ja3MKCWlmIGRlYWQgZWRnZXMgd2VyZSBwdXJnZWQgYWZ0ZXIgdGhlIGFkZHJlc3NvZiBwYXNzLgoKMjAwMy0wNy0xOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBSZW1vdmUgaGFuZGxpbmcgb2YKCWxhbmctb3B0aW9ucy5oIGFuZCBvcHRpb25zXy5oLgoJKiB0b3BsZXYuYyAoc3RydWN0IGxhbmdfb3B0LCBkb2N1bWVudGVkX2xhbmdfb3B0aW9ucyk6IFJlbW92ZS4KCShkaXNwbGF5X2hlbHApOiBEb24ndCB1c2UgZG9jdW1lbnRlZF9sYW5nX29wdGlvbnMuCgoyMDAzLTA3LTE3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmMgKHB1c2hkZWNsX2Z1bmN0aW9uX2xldmVsKTogTWFrZSBzdGF0aWMsIHJldHVybiBub3RoaW5nLgoJKGtlcHRfbGV2ZWxfcCk6IEZvbGQgaW50byBwb3BsZXZlbC4KCSh1bmRlY2xhcmVkX3ZhcmlhYmxlKTogTW92ZWQgaGVyZSBmcm9tIGMtdHlwZWNrLmMuICBFeHBvcnQuCgkqIGMtdHJlZS5oIChLRUVQX1lFUywgS0VFUF9OTywgS0VFUF9NQVlCRSk6IE5ldyAjZGVmaW5lcy4KCSh1bmRlY2xhcmVkX3ZhcmlhYmxlKTogUHJvdG90eXBlIGhlcmUuICBEb24ndCBwcm90b3R5cGUKCWtlcHRfbGV2ZWxfcCBub3IgcHVzaGRlY2xfZnVuY3Rpb25fbGV2ZWwuCgkqIGMtcGFyc2UuaW46IENoYW5nZSBmaXJzdCBhcmd1bWVudCB0byBwb3BsZXZlbCBmcm9tCgkia2VwdF9sZXZlbF9wKCkiIHRvICJLRUVQX01BWUJFIi4KCSogYy10eXBlY2suYyAodW5kZWNsYXJlZF92YXJpYWJsZSk6IE1vdmVkIHRvIGMtZGVjbC5jLgoKMjAwMy0wNy0xNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcnR4KTogVXNlIHNpbXBsaWZ5X2dlbl9iaW5hcnkgdG8gc3dhcAoJY29tbXV0YXRpdmUgb3BlcmFuZHMgaW5zdGVhZCBvZiBtb2RpZnlpbmcgdGhlIFJUTCBpbi1wbGFjZS4KCjIwMDMtMDctMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzExNTU3CgkqIGNhbGxzLmMgKGZsYWdzX2Zyb21fZGVjbF9vcl90eXBlKTogRG8gbm90IHNldCBFQ0ZfTElCQ0FMTF9CTE9DSwoJdW5sZXNzIHdlIGtub3cgd2hpY2ggZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLgoKMjAwMy0wNy0xNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjc2UuYyAoZm9sZF9ydHgpOiBVc2Ugc3dhcF9jb21tdXRhdGl2ZV9vcGVyYW5kc19wIHRvIGRldGVybWluZQoJd2hldGhlciB0byByZW9yZGVyIHRoZSBvcGVyYW5kcyBvZiBhIGNvbW11dGF0aXZlIGJpbmFyeSBvcGVyYXRvci4KCjIwMDMtMDctMTcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChjb25zdF9iaW5vcCk6IEF2b2lkIHBlcmZvcm1pbmcgdGhlIEZQIG9wZXJhdGlvbiBhdAoJY29tcGlsZS10aW1lLCBpZiBlaXRoZXIgb3BlcmFuZCBpcyBOYU4gYW5kIHdlIGhvbm9yIHNpZ25hbGluZyBOYU5zLAoJb3IgaWYgd2UncmUgZGl2aWRpbmcgYnkgemVybyBhbmQgZWl0aGVyIGZsYWdfdHJhcHBpbmdfbWF0aCBpcyBzZXQKCW9yIHRoZSBkZXNpcmVkIG1vZGUgZG9lc24ndCBzdXBwb3J0IGluZmluaXRpZXMuCgkoZm9sZF9pbml0aWFsaXplcik6IE5ldyBmdW5jdGlvbiB0byBmb2xkIGFuIGV4cHJlc3Npb24gaWdub3JpbmcgYW55Cglwb3RlbnRpYWwgcnVuLXRpbWUgZXhjZXB0aW9ucyBvciB0cmFwcy4KCSogdHJlZS5oIChmb2xkX2luaXRpYWxpemVyKTogUHJvdG90eXBlIGhlcmUuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IE1vdmUgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSBzbwoJdGhhdCBpbnRpYWxpemVyX3N0YWNrIGlzIGluIHNjb3BlLiAgSWYgY29uc3RydWN0aW5nIGFuIGluaXRpYWxpemVyLAoJaS5lLiB3aGVuIGluaXRpYWxpemVyX3N0YWNrIGlzIG5vdCBOVUxMLCB1c2UgZm9sZF9pbml0aWFsaXplciB0bwoJZm9sZCBleHByZXNzaW9ucy4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24pOiBMaWtld2lzZSwgYXZvaWQKCXBlcmZvcm1pbmcgRlAgb3BlcmF0aW9ucyBhdCBjb21waWxlLXRpbWUsIGlmIHRoZXkgd291bGQgcmFpc2UgYW4KCWV4Y2VwdGlvbiBhdCBydW4tdGltZS4KCjIwMDMtMDctMTcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCVBSIDExNDk4CgkqIE1ha2VmaWxlLmluIChjLW9wdHMubyk6IEFkZCAkKExBTkdIT09LU19ERUZfSCkuCgkobGFuZ2hvb2tzLm8pOiBBZGQgJChHR0NfSCksIGd0LWxhbmdob29rcy5oLgoJKEdURklMRVMpOiBBZGQgbGFuZ2hvb2tzLmMuCgkoZ3QtbGFuZ2hvb2tzLmgpOiBOZXcuCgkqIGMtY29tbW9uLmggKGNfc3RhdGljX2Fzc2VtYmxlcl9uYW1lKTogUHJvdG90eXBlLgoJKiBjLWxhbmcuYyAoTEFOR19IT09LU19TRVRfREVDTF9BU1NFTUJMRVJfTkFNRSk6IERlZmluZS4KCSogb2JqYy9vYmpjLWxhbmcuYyAoTEFOR19IT09LU19TRVRfREVDTF9BU1NFTUJMRVJfTkFNRSk6IERlZmluZS4KCSogYy1vcHRzLmM6IEluY2x1ZGUgbGFuZ2hvb2tzLWRlZi5oLgoJKGNfc3RhdGljX2Fzc2VtYmxlcl9uYW1lKTogTmV3LgoJKiBsYW5naG9va3MuYzogSW5jbHVkZSBnZ2MuaC4gIEluY2x1ZGUgZ3QtbGFuZ2hvb2tzLmguCgkodmFyX2xhYmVsbm8pOiBOZXcuCgkobGhkX3NldF9kZWNsX2Fzc2VtYmxlcl9uYW1lKTogR2l2ZSBzdGF0aWMgb2JqZWN0cyB3aXRoIGNvbnRleHQKCXVuaXF1ZSBuYW1lcy4KCSogdmFyYXNtLmMgKHZhcl9sYWJlbG5vKTogRGVsZXRlLgoJKG1ha2VfZGVjbF9ydGwpOiBEb24ndCBjaGFuZ2UgdGhlIGFzc2VtYmxlciBuYW1lIG9uY2UgaXQncyBzZXQuCgoJKiBjLW9wdHMuYyAodGhpc19pbnB1dF9maWxlbmFtZSk6IE5ldy4KCShmaW5pc2hfb3B0aW9ucyk6IFRha2UgbmV3IHBhcmFtZXRlciwgbmFtZSBvZiBmaWxlIGJlaW5nIGNvbXBpbGVkLgoJVXBkYXRlIGNhbGxlcnMuICBTZXQgdGhpc19pbnB1dF9maWxlbmFtZS4KCShwdXNoX2NvbW1hbmRfbGluZV9pbmNsdWRlKTogVXNlIHRoaXNfaW5wdXRfZmlsZW5hbWUgbm90CgltYWluX2lucHV0X2ZpbGVuYW1lLgoKMjAwMy0wNy0xNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZWZpbGUuaW46IERlcGVuZCAucG90IGdlbmVyYXRpb24gb24gb3B0aW9ucy5jLgoJKiBwby9leGdldHRleHQ6IEFkZCBhbiBleHRyYV9maWxlcyB2YXJpYWJsZSBjb250YWluaW5nIGFkZGl0aW9uYWwKCWZpbGVzIHRvIHNjYW4uCgoyMDAzLTA3LTE3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb2JqYy9vYmpjLWxhbmcuYzogT3ZlcnJpZGUgTEFOR19IT09LU19XUklURV9HTE9CQUxTIHRvCgljX3dyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnMuCgoJKiBjLWRlY2wuYzogRml4IHR5cG9zIGluIHNldmVyYWwgY29tbWVudHMuICBSZW1vdmUgYWxsCgkjaWYgMCBibG9ja3M7IHJlaW5kZW50IGFzIG5lZWRlZC4gIFJlbW92ZSB1bnVzZWQgYXJndW1lbnQKCXRvIGRlY2xhcmVfcGFybV9sZXZlbDsgYWxsIGNhbGxlcnMgY2hhbmdlZC4KCSogYy1wYXJzZS5pbjogVXBkYXRlIGNhbGxzIHRvIGRlY2xhcmVfcGFybV9sZXZlbC4gIEF2b2lkCglpc3N1aW5nIGEgZG91YmxlIHdhcm5pbmcgaW4gc29tZSBjaXJjdW1zdGFuY2VzLgoJKiBjLXR5cGVjay5jOiBVcGRhdGUgY2FsbHMgdG8gZGVjbGFyZV9wYXJtX2xldmVsLgoJKiBjLXRyZWUuaDogVXBkYXRlIHByb3RvdHlwZSBvZiBkZWNsYXJlX3Bhcm1fbGV2ZWwuCgoJKiBjLXByYWdtYS5jIChhcHBseV9wcmFnbWFfd2Vhayk6IERvbid0IGNvbXBsYWluIGFib3V0IGEKCXJlZHVuZGFudCAjcHJhZ21hIHdlYWsuCgoJKiBvYmpjL29iamMtYWN0LmMgKGZvcndhcmRfZGVjbGFyZV9jYXRlZ29yaWVzLAoJYnVpbGRfc2VsZWN0b3JfcmVmZXJlbmNlX2RlY2wsIGJ1aWxkX2NsYXNzX3JlZmVyZW5jZV9kZWNsLAoJYnVpbGRfb2JqY19zdHJpbmdfZGVjbCwgc3ludGhfZm9yd2FyZF9kZWNsYXJhdGlvbnMsCglidWlsZF9wcm90b2NvbF9yZWZlcmVuY2UpOiBTZXQgVFJFRV9QVUJMSUMgb24gc3ludGhldGljCglmb3J3YXJkIGRlY2wgdG8gMCwgY29uc2lzdGVudCB3aXRoIGV2ZW50dWFsIGRlZmluaXRpb24uCglDb3JyZWN0IGNvbW1lbnRzIHRvIG1hdGNoLgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoc29sYXJpc19tdXRleF9pbml0XzIpOiBFc2NhcGUgYnJhY2VzCglpbiByZWdleHAgdGhhdCBkb24ndCBmb3JtIGEgcmFuZ2UgZXhwcmVzc2lvbi4KCSogZml4aW5jL2ZpeGluY2wuZGVmOiBSZWdlbmVyYXRlLgoKMjAwMy0wNy0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMTA5MDcKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2VwaWxvZ3VlX3VzZXMpOiBHUCBpcyBsaXZlIGF0IGVuZAoJZXZlbiB3aXRoICFUQVJHRVRfQ09OU1RfR1AuCgkoaWE2NF9mdW5jdGlvbl9va19mb3Jfc2liY2FsbCk6IFJlamVjdCBub24tbG9jYWwgZnVuY3Rpb25zLgoKMjAwMy0wNy0xNyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogYy1jb21tb24uYyAoY19lc3RpbWF0ZV9udW1faW5zbnNfMSk6IERvbid0IGhhbmRsZQoJTUVUSE9EX0NBTExfRVhQUi4KCSogZXhwci5jIChzYWZlX2Zyb21fcCk6IExpa2V3aXNlLgoJKiBnZW5ndHlwZS5jIChhZGp1c3RfZmllbGRfdHJlZV9leHApOiBMaWtld2lzZS4KCSogc3RtdC5jICh3YXJuX2lmX3VudXNlZF92YWx1ZSk6IExpa2V3aXNlCgkqIHRyZWUuYyAoZmlyc3RfcnRsX29wKTogTGlrZXdpc2UuCgkqIHRyZWUuZGVmOiBEb24ndCBkZWZpbmUgTUVUSE9EX0NBTExfRVhQUi4KCSogamF2YS9sYW5nLmMgKGphdmFfZXN0aW1hdGVfbnVtX2luc25zXzEpOiBEb24ndCBoYW5kbGUKCU1FVEhPRF9DQUxMX0VYUFIuCgoyMDAzLTA3LTE3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG90aGVyLzExNDY2CgkqIGRvYy9pbnZva2UudGV4aSAoU1BBUkMgT3B0aW9ucyk6IERvY3VtZW50ICItbWxpdHRsZS1lbmRpYW4iCglhbmQgaXRzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIFNQQVJDNjQgcG9ydC4KCU1vdmUgdGhlIGVudHJ5IG9mICItbWltcHVyZS10ZXh0IiBiZWZvcmUgdGhhdCBvZiAiLW12OCIuCgoyMDAzLTA3LTE3ICBFcmljIEJvdGNhem91IDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgkgICAgUGhpbCBFZHdhcmRzIDxwaGlsQGphai5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpICgqLSotc29sYXJpczIqKTogRG9jdW1lbnQgdGhlIHN0ZXAtYnktc3RlcAoJcHJvY2VkdXJlIHRvIGJvb3RzdHJhcCBhbmQgaW5zdGFsbC4KCURvY3VtZW50IHRoZSBwcmVmZXJlbmNlIGZvciB0aGUgbGVnYWN5IFN1biB0b29scyBpbiAvdXNyL2JpbgoJb3ZlciB0aGUgUE9TSVggdG9vbHMgaW4gL3Vzci94cGc0L2JpbiBmb3IgdGhlIGJ1aWxkIHByb2Nlc3MuCgoyMDAzLTA3LTE3ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjLm9wdDogRG9jdW1lbnQgVW5jb2R1bWVudGVkOyB1c2UgaXQuICBEb2N1bWVudCBPYmpDIG9wdGlvbnMuCgkqIG9wdHMuYyAocHJpbnRfZmlsdGVyZWRfaGVscCk6IFNraXAgdW5kb2N1bWVudGVkIHN3aXRjaGVzLgoJKiBvcHRzLmggKENMX1VORE9DVU1FTlRFRCk6IE5ldy4KCSogb3B0cy5zaDogSGFuZGxlIFVuZG9jdW1lbnRlZC4KCSogdG9wbGV2LmMgKGRvY3VtZW50ZWRfbGFuZ19vcHRpb25zKTogUHJldmVudCBpdHMgYmVjb21pbmcgZW1wdHkuCm9iamM6CgkqIGxhbmctb3B0aW9ucy5oOiBSZW1vdmUuCgoyMDAzLTA3LTE2ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBsb29wLmMgKGNoZWNrX2V4dF9kZXBlbmRlbnRfZ2l2cyk6IFBhc3MgY29uc3Qgc3RydWN0IGxvb3AgKgoJaW5zdGVhZCBvZiBzdHJ1Y3QgbG9vcF9pbmZvICogYXMgYXJndW1lbnQuICBBY2NlcHQgQklWcyB3aXRoCglpbmNyZW1lbnQgKy8tIDEgcHJvdmlkZWQgdGhlcmUgaXMgYSBmcmllbmRseSBleGl0IHRlc3QgYWdhaW5zdAoJYSBsb29wLWludmFyaWFudCB2YWx1ZS4KCShzdHJlbmd0aF9yZWR1Y2UpOiBBZGFwdCBjYWxsIHRvIGNoZWNrX2V4dF9kZXBlbmRlbnRfZ2l2cy4KCjIwMDMtMDctMTYgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoJICAgIENvbiBCcmFkbGV5IDxjb24uYnJhZGxleUBzdXBlcmguY29tPgoKCSogc2gtcHJvdG9zLmggKHNoX2dldF9wcl9pbml0aWFsX3ZhbCk6IERlY2xhcmUuCgkqIHNoLmMgKHJlZ25vX3JlZ19jbGFzcyk6IE1ha2UgaXRzIGVsZW1lbnRzIHR5cGUgZW51bSByZWdfY2xhc3MuCgkob3V0cHV0X3N0YWNrX2FkanVzdCk6IFJlbW92ZSBlbWl0X2ZuIGFyZ3VtZW50LiAgQWRkIGVwaWxvZ3VlX3AKCWFuZCBsaXZlX3JlZ3NfbWFzayBhcmd1bWVudHMuICBDaGFuZ2VkIGFsbCBjYWxsZXJzLgoJKHNhdmVfc2NoZWR1bGVfcyk6IE5ldyBzdHJ1Y3R1cmUuCgkoc2F2ZV9zY2hlZHVsZSk6IE5ldyB0eXBlZGVmLgoJKHNjYXZlbmdlX3JlZywgc2g1X3NjaGVkdWxlX3NhdmVzLCBzaDVfc2NoZWR1bGVfc2F2ZXMpOiBOZXcgZnVuY3Rpb25zLgoJKGNhbGNfbGl2ZV9yZWdzKTogRm9yIFRBUkdFVF9TSE1FRElBLCB1c2UgbGVhZl9mdW5jdGlvbl9wLgoJSW4gaW50ZXJydXB0cyBoYW5kbGVycywgYWxzbyBzYXZlIHJlZ2lzdGVycyB0aGF0IGFyZSB1c3VhbGx5CglwYXJ0aWFsbHkgc2F2ZWQsIGFuZCBtYWtlIHN1cmUgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGdlbmVyYWwgcHVycG9zZQoJcmVnaXN0ZXIgc2F2ZWQgaWYgYSB0YXJnZXQgcmVnaXN0ZXIgbmVlZHMgc2F2aW5nLgoJQWRkIGNhc3RzIGluIGNvbXBhcmlzb25zIHRvIGF2b2lkIHdhcm5pbmdzLgoJKHNoX21lZGlhX3JlZ2lzdGVyX2Zvcl9yZXR1cm4pOiByZXR1cm4gLTEgZm9yIGludGVycnVwdCBoYW5kbGVycy4KCShNQVhfU0FWRURfUkVHUywgTUFYX1RFTVBTKTogTmV3IGRlZmluZXMuCgkoc2hfZXhwYW5kX3Byb2xvZ3VlKTogVXNlIHNoNV9zY2hlZHVsZV9zYXZlcy4gIENoZWNrIHRoYXQgYW55IHRlbXAKCXJlZ2lzdGVycyB1c2VkIGFyZSBhdmFpbGFibGUuCglTZXQgUlRYX0ZSQU1FX1JFTEFURURfUCB3aGVyZSBhcHByb3ByaWF0ZS4KCUFkZCBhbiBSRUdfRlJBTUVfUkVMQVRFRF9FWFBSIGZvciByMCArIG9mZnNldCBhZGRyZXNzaW5nLgoJKHNoX2V4cGFuZF9lcGlsb2d1ZSwgc2hfc2V0X3JldHVybl9hZGRyZXNzKTogVXNlIHNoNV9zY2hlZHVsZV9zYXZlcy4KCShpbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IExpa2V3aXNlLgoJKiBzaC5oIChEV0FSRl9DSUVfREFUQV9BTElHTk1FTlQpOiBTZXQgdG8gLTQuCgkoTE9DQUxfQUxJR05NRU5ULCBHRU5FUkFMX1JFR0lTVEVSX1ApOiBBZGQgY2FzdHMgdG8gYXZvaWQgd2FybmluZ3MuCgkoRlBfUkVHSVNURVJfUCk6IEFkZCBjYXN0cyB0byBmaXggYnJva2VuIGhhbmRsaW5nIG9mIHVuc2lnbmVkIFJFR05PLgoJKFhEX1JFR0lTVEVSX1AsIFRBUkdFVF9SRUdJU1RFUl9QKTogTGlrZXdpc2UuCgkoSEFSRF9SRUdOT19DQUxMX1BBUlRfQ0xPQkJFUkVEKTogQWxzbyB5aWVsZCBub256ZXJvIGZvciByMTUsCglhbmQgZm9yIHRhcmdldCByZWdpc3RlcnMuCgkoUkVUVVJOX0lOX01FTU9SWSk6IEFkZCBwYXJlbnRoZXNlcyB0byBhdm9pZCB3YXJuaW5ncy4KCShyZWdub19yZWdfY2xhc3MpOiBNYWtlIGl0cyBlbGVtZW50cyB0eXBlIGVudW0gcmVnX2NsYXNzLgoJKENPTlNUUkFJTlRfTEVOKTogRG9uJ3QgdXNlIGlzZGlnaXQuCgkoRlVOQ1RJT05fQVJHX1JFR05PX1ApOiBBZGQgY2FzdHMgdG8gYXZvaWQgd2FybmluZ3MuCgkoRlVOQ1RJT05fQVJHKTogQWRkIHBhcmVudGhlc2VzIHRvIGF2b2lkIHdhcm5pbmdzLgoJKFJFVFVSTl9BRERSX1JUWCk6IFVzZSBzaF9nZXRfcHJfaW5pdGlhbF92YWwuCgkoUkVUVVJOX0FERFJfT0ZGU0VUKTogRGVmaW5lIHRvIC0xIGZvciBUQVJHRVRfU0g1LgoJKFNIX0RCWF9SRUdJU1RFUl9OVU1CRVIpOiBBZGQgY2FzdHMgdG8gYXZvaWQgd2FybmluZ3MuCgkoRUhfUkVUVVJOX0RBVEFfUkVHTk8pOiBVc2UgdW5zaWduZWQgY29uc3RhbnRzIHRvIGF2b2lkIHdhcm5pbmdzLgoJKiBzaC5tZCAoeG9yZGkzKzEpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIHJlZ25vLgoJKHJldHVybl9tZWRpYSk6IENoZWNrIHRoYXQgdHIwIGlzIGF2YWlsYWJsZSBiZWZvcmUgdXNpbmcgaXQuCgoyMDAzLTA3LTE2ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjLm9wdDogRG9jdW1lbnQgbW9yZSBvcHRpb25zLgoKMjAwMy0wNy0xNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb21iaW5lLmMgKHN1YnN0KTogQWxzbyBoYW5kbGUgKHN1YnJlZyAoY29uc3RfZG91YmxlIC4uLikpIGNhc2UKCWlmIGNyZWF0ZWQgYnkgYSBzdWJzdGl0dXRpb24sIGJ5IHVzaW5nIHRoZSBvcmlnaW5hbCBpbm5lciBtb2RlLgoKMjAwMy0wNy0xNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVwbGFjZV9ydHgpOiBDb252ZXJ0IGNvbnN0YW50IGNvbXBhcmlzb25zCgl0byBNT0RFX0ZMT0FUIGNvbnN0YW50cyBpZiBGTE9BVF9TVE9SRV9GTEFHX1ZBTFVFIGlzIGRlZmluZWQuCgkoc2ltcGxpZnlfcnR4KTogTGlrZXdpc2UuICBTaW1wbGlmeSAobG9fc3VtIChoaWdoIFgpIFgpIGFzIFguCgoyMDAzLTA3LTE2ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKC0td2l0aG91dC1oZWFkZXJzKTogTmV3LgoKCVBhcnRpYWwgRml4IFBSLzEwMTI5CgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9waWNfZnVuY3Rpb25fYmFzZV9uYW1lKTogT25seSBSZXR1cm4gIjxwaWMgYmFzZT4iLgoJKG1hY2hvcGljX291dHB1dF9mdW5jdGlvbl9iYXNlX25hbWUpOiBOZXc7IHByaW50IHRoZSB0cnVlIHBpYyBsYWJlbC4KCShtYWNob3BpY19jbGFzc2lmeV9pZGVudCk6IFBpYyBCYXNlIGlzIGFsd2F5cyBhIGRlZmluZWQgZGF0YS4KCSogY29uZmlnL2Rhcndpbi5oIChBU01fT1VUUFVUX0xBQkVMUkVGKTogU3VwcG9ydCB0aGUgcGljIGJhc2UgbGFiZWwuCgkqIGNvbmZpZy9kYXJ3aW4tcHJvdG8uaCAobWFjaG9waWNfb3V0cHV0X2Z1bmN0aW9uX2Jhc2VfbmFtZSk6IFByb3RvdHlwZS4KCgkqIGdjc2UuYyAoZ2NzZV9jb25zdGFudF9wKTogQ09NUEFSRSBvZiB0aGUgc2FtZSByZWdpc3RlcnMgaXMgYSBjb25zdGFudAoJaWYgdGhleSBhcmUgbm90IGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycy4KCglQUiBjLzEwOTYyCgkqIGdnYy5oOiBBZGQgaGVhZGVyIGd1YXJkcy4KCSogYy1kZWNsLmMgKGZpbmlzaF9zdHJ1Y3QpOiBTb3J0IGZpZWxkcyBpZgoJbnVtYmVyIGdyZWF0ZXIgdGhhbiAxNSBhbmQgdGhlcmUgYXJlIG5vCglhbm9ueW1vdXMgc3RydWN0cy91bmlvbnMuCgkqIGMtY29tbW9uLmg6IEluY2x1ZGUgZ2djLmguCgkoc29ydGVkX2ZpZWxkc190eXBlKTogTmV3IHN0cnVjdC4KCShmaWVsZF9kZWNsX2NtcCk6IE5ldyBwcm90b3R5cGUuCgkocmVzb3J0X3NvcnRlZF9maWVsZHMpOiBOZXcgcHJvdG90eXBlLgoJKERFQ0xfREVDTEFSRVNfVFlQRV9OT05fVEVNUExBVEVfUCk6IE5ldyBtYWNyby4KCSogYy10cmVlLmg6IChsYW5nX3R5cGUpOiBVc2UgcG9pbnRlciB0byBzb3J0ZWRfZmllbGRzX3R5cGUKCWFzIHMsIHJlbW92aW5nIG90aGVyIGZpZWxkcy4KCSogYy10eXBlY2suYyAobG9va3VwX2ZpZWxkKTogVXNlIHMgaW4gbGFuZ190eXBlLgoJVGhlc2Ugd2VyZSBtb3N0bHkgbW92ZWQgZnJvbSBjcC9jbGFzcy5jOgoJKiBjLWNvbW1vbi5jIChmaWVsZF9kZWNsX2NtcCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoZmllbGRfZGVjbF9jbXApOiBOZXcgZnVuY3Rpb24uCgkocmVzb3J0X3NvcnRlZF9maWVsZHMpOiBOZXcgZnVuY3Rpb24uCgoyMDAzLTA3LTE2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9waWNfc2VsZWN0X3NlY3Rpb24pOiBVc2UgZGVjbF9yZWFkb25seV9zZWN0aW9uCgl0byBkbyBtb3N0IG9mIHRoZSB3b3JrLgoKMjAwMy0wNy0xNiAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogY29uZmlnL21taXgvbW1peC1wcm90b3MuaDogQ29udmVydCBwcm90b3R5cGVzIHRvIElTTyBDOTAuCgkqIGNvbmZpZy9tbWl4L21taXguYzogQ29udmVydCBmdW5jdGlvbnMgdG8gSVNPIEM5MC4KCShtbWl4X2VoX3JldHVybl9oYW5kbGVyX3J0eCwgbW1peF9vdXRwdXRfc2hpZnRlZF92YWx1ZSk6IFR3ZWFrCglmb3JtYXR0aW5nLgoJKG1taXhfZ2V0X2hhcmRfcmVnX2luaXRpYWxfdmFsKTogVHdlYWsgc2VjdGlvbiBoZWFkIGNvbW1lbnQuCgoyMDAzLTA3LTE2ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGMtcHJhZ21hLmggKEhBTkRMRV9QUkFHTUFfV0VBSyk6IEFsd2F5cyBkZWZpbmUgdG8gU1VQUE9SVFNfV0VBSy4KCjIwMDMtMDctMTYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogdW53aW5kLWR3Mi5jIChNRF9GUk9CX1VQREFURV9DT05URVhUKTogRGVmaW5lLgoJKHV3X3VwZGF0ZV9jb250ZXh0XzEpOiBVc2UgaXQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGluc25fYWZ0ZXJfdGhyb3cpOiBSZW1vdmUuCgkocnM2MDAwX2FpeF9lbWl0X2J1aWx0aW5fdW53aW5kX2luaXQpOiBTYXZlICRyMiB0byBpdHMgbG9jYXRpb24KCWluIHBhcmVudCBmcmFtZSBpZiBfVW53aW5kXyogY2FsbGVkIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhyb3VnaAoJLnBsdC4KCShyczYwMDBfZW1pdF9laF90b2NfcmVzdG9yZSk6IFJlbW92ZS4KCShyczYwMDBfZW1pdF9wcm9sb2d1ZSk6IFVwZGF0ZSBzdGFjayBwb2ludGVyIGJlZm9yZSBkb2luZyBhbnkgc2F2aW5nCglpZiBjdXJyZW50X2Z1bmN0aW9uX2NhbGxzX2VoX3JldHVybi4gIEdlbmVyYXRlIHVud2luZCBpbmZvIGZvciAkcjIuCgkocnM2MDAwX2VtaXRfZXBpbG9ndWUpOiBSZXN0b3JlIHN0YWNrIHBvaW50ZXIgYWZ0ZXIgZG9pbmcgYWxsCglyZXN0b3JpbmcgaWYgY3VycmVudF9mdW5jdGlvbl9jYWxsc19laF9yZXR1cm4uICBSZXN0b3JlICRyMi4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmggKHJzNjAwMF9lbWl0X2VoX3RvY19yZXN0b3JlKTogUmVtb3ZlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoZWhfcmV0dXJuKTogUmVtb3ZlIGNhbGwgdG8KCXJzNjAwMF9lbWl0X2VoX3RvY19yZXN0b3JlLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoTURfRlJPQl9VUERBVEVfQ09OVEVYVCk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9haXguaCAoTURfRlJPQl9VUERBVEVfQ09OVEVYVCk6IERlZmluZS4KCjIwMDMtMDctMTUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZXhwci5jIChlbWl0X2Jsb2NrX21vdmUpOiBEb24ndCBtb3ZlIGFueXRoaW5nIGlmIHNpemUgaXMgY29uc3QgMC4KCShjbGVhcl9zdG9yYWdlKTogVGVzdCBhZ2FpbnN0IGNvbnN0MF9ydHggaW5zdGVhZCBvZiBjb21wYXJpbmcgSU5UVkFMCglhZ2FpbnN0IDAuCgoyMDAzLTA3LTE1ICBEYXZpZCBTLiBNaWxsZXIgIDxkYXZlbUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX25vbmZsYXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBPbmx5CgllbWl0IG5vcCBpZiB0aGUgbGFzdCByZWFsIGluc24gaXMgQ0FMTF9JTlNOLgoKMjAwMy0wNy0xNiAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGNvbmZpZy9pMzg2L3htLW1pbmd3MzIuaCAoSE9TVF9CSVRfQlVDS0VUKTogRGVmaW5lCglhcyAibnVsIi4KCSogY29uZmlnL2kzODYveG0tbWluZ3czMi5oOiBDaGFuZ2UgR05VIENDIHRvIEdDQy4KCjIwMDMtMDctMTYgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBjb25maWcvaTM4Ni93aW5udC5jIChhc3NvY2lhdGVkX3R5cGUpOiBBcnRpZmljaWFsIG1ldGhvZHMgYXJlIG5vdAoJYWZmZWN0ZWQgYnkgdGhlIGltcG9ydC9leHBvcnQgc3RhdHVzIG9mIHRoZWlyIGNsYXNzIHVubGVzcyB0aGV5IGFyZQoJQ09NREFULgoJKGkzODZfcGVfZGxsaW1wb3J0X3ApOiBEbyBub3QgbWFyayBhcnRpZmljaWFsIG1ldGhvZHMgYXMgZGxsaW1wb3J0LgoKCSogY29uZmlnL2kzODYvd2lubnQuYzogRml4IEdDQyBjb3B5cmlnaHQgY29tbWVudC4KCjIwMDMtMDctMTYgIEdhYnJpZWwgRG9zIFJlaXMgIDxnY2NAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCVBSIGMrKy8xMTUzMQoJKiBkaWFnbm9zdGljLmMgKGRpYWdub3N0aWNfcmVwb3J0X2RpYWdub3N0aWMpOiBEb24ndCBJQ0UgaWYgd2UncmUKCW5vdCByZWN1cnNpbmcgb24gaGFyZCBlcnJvci4KCShkaWFnbm9zdGljX2Zvcl9kZWNsKTogTGlrZXdpc2UuCgkqIGRpYWdub3N0aWMuZGVmOiBSZWFycmFuZ2UuCgoyMDAzLTA3LTE1ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGR3YXJmMm91dC5jIChleHBhbmRfYnVpbHRpbl9pbml0X2R3YXJmX3JlZ19zaXplcyk6CglJZiBEV0FSRl9GUkFNRV9SRVRVUk5fQ09MVU1OIGRvZXNuJ3QgaGF2ZSBhIHJlZ2lzdGVyIG1vZGUsIHVzZSBQbW9kZS4KCjIwMDMtMDctMTUgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoJICAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB1bndpbmQtZHcyLmMgKF9VbndpbmRfR2V0R1IpOiBVc2UgZHdhcmZfcmVnX3NpemVfdGFibGUKCXRvIGRlY2lkZSBpZiB0byBhY2Nlc3MgYSBfVW53aW5kX1B0ciBvciBhIF9VbndpbmRfV29yZC4KCShfVW53aW5kX1NldEdSKTogTGlrZXdpc2UuCgkoX1Vud2luZF9HZXRQdHIsIF9VbndpbmRfU2V0U3BDb2x1bW4pOiBOZXcgZnVuY3Rpb25zLgoJKFVud2luZF9TcFRtcCk6IE5ldyB0eXBlZGVmLgoJKHV3X3VwZGF0ZV9jb250ZXh0XzEpOiBVc2UgX1Vud2luZF9TZXRTcENvbHVtbiBhbmQgX1Vud2luZF9HZXRQdHIuCgkodXdfdXBkYXRlX2NvbnRleHQpOiBVc2UgX1Vud2luZF9HZXRQdHIuCgkoaW5pdF9kd2FyZl9yZWdfc2l6ZV90YWJsZSk6IE1vdmUgYWJvdmUgdXdfaW5pdF9jb250ZXh0XzEuCgkodXdfaW5pdF9jb250ZXh0XzEpOiBJbml0aWFsaXplIGR3YXJmX3JlZ19zaXplX3RhYmxlIGlmIG5lY2Vzc2FyeS4KCVVzZSBfVW53aW5kX1NldFNwQ29sdW1uLgoJKHV3X2luc3RhbGxfY29udGV4dF8xKTogRG9uJ3QgaW5pdGlhbGl6ZSBkd2FyZl9yZWdfc2l6ZV90YWJsZS4KCVVzZSBfVW53aW5kX0dldFB0ci4KCjIwMDMtMDctMTUgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIGMub3B0OiBEb2N1bWVudCBtb3JlIG9wdGlvbnMuCgkqIHRvcGxldi5jIChkb2N1bWVudGVkX2xhbmdfb3B0aW9ucyk6IFJlbW92ZSBhbGwgbG9jYWwgaGVscCBzdHJpbmdzLgoKMjAwMy0wNy0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBkZWJ1Zy8xMTQ3MwoJKiBkYnhvdXQuYyAoZGJ4b3V0X3R5cGUpOiBVc2UgVFlQRV9TSVpFIHRvIGRldGVybWluZSB0aGUgc2l6ZXMgb2YKCWJhc2UgY2xhc3Nlcy4KCjIwMDMtMDctMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJUFIgdGFyZ2V0LzEwNzk1CgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfY2FycnlfZmxhZ19jb21wYXJlKTogRG9uJ3QKCXN3YXAgY29tcGFyaXNvbiBvcGVyYW5kcyBpZiBkb2luZyBzbyB3b3VsZCBnZW5lcmF0ZSBhbgoJdW5yZWNvZ25pemFibGUgaW5zbi4KCjIwMDMtMDctMTUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzExMzIwCgkqIHNjaGVkLWludC5oIChzdHJ1Y3QgZGVwcykgW3JlZ19jb25kaXRpb25hbF9zZXRzXTogTmV3IGZpZWxkLgoJKHN0cnVjdCBzY2hlZF9pbmZvKSBbY29tcHV0ZV9qdW1wX3JlZ19kZXBlbmRlbmNpZXNdOiBOZXcgcHJvdG90eXBlLgoJKiBzY2hlZC1kZXBzLmMgKHNjaGVkX2FuYWx5emVfaW5zbikgW0pVTVBfSU5TTl06IFVwZGF0ZSBjYWxsIHRvCgljdXJyZW50X3NjaGVkX2luZm8tPmNvbXB1dGVfanVtcF9yZWdfZGVwZW5kZW5jaWVzLiBSZWNvcmQgd2hpY2gKCXJlZ2lzdGVycyBhcmUgdXNlZCBhbmQgd2hpY2ggcmVnaXN0ZXJzIGFyZSBzZXQgYnkgdGhlIGp1bXAuCglDbGVhciBkZXBzLT5yZWdfY29uZGl0aW9uYWxfc2V0cyBhZnRlciBhIGJhcnJpZXIuCglTZXQgZGVwcy0+cmVnX2NvbmRpdGlvbmFsX3NldHMgaWYgdGhlIGluc24gaXMgYSBDT05EX0VYRUMuCglDbGVhciBkZXBzLT5yZWdfY29uZGl0aW9uYWxfc2V0cyBpZiB0aGUgaW5zbiBpcyBub3QgYSBDT05EX0VYRUMuCgkoaW5pdF9kZXBzKTogSW5pdGlhbGl6ZSByZWdfY29uZGl0aW9uYWxfc2V0cy4KCShmcmVlX2RlcHMpOiBDbGVhciByZWdfY29uZGl0aW9uYWxfc2V0cy4KCSogc2NoZWQtZWJiLmMgKGNvbXB1dGVfanVtcF9yZWdfZGVwZW5kZW5jaWVzKTogTmV3IHByb3RvdHlwZS4KCU1hcmsgcmVnaXN0ZXJzIGxpdmUgb24gZW50cnkgb2YgdGhlIGZhbGx0aHJvdWdoIGJsb2NrIGFuZCBjb25kaXRpb25hbGx5CglzZXQgYXMgc2V0IGJ5IHRoZSBqdW1wLiBNYXJrIHJlZ2lzdGVycyBsaXZlIG9uIGVudHJ5IG9mIG5vbi1mYWxsdGhyb3VnaAoJYmxvY2tzIGFzIHVzZWQgYnkgdGhlIGp1bXAuCgkqIHNjaGVkLXJnbi5jIChjb21wdXRlX2p1bXBfcmVnX2RlcGVuZGVuY2llcyk6IE5ldyBwcm90b3R5cGUuCglNYXJrIG5ldyBwYXJhbWV0ZXJzIGFzIHVudXNlZC4KCjIwMDMtMDctMTUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogUmVzeW5jIE1JUFMgLW1hcmNoIGRvY3VtZW50YXRpb24uCgoyMDAzLTA3LTE1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKFBST0NFU1NPUl9SOTAwMCk6IE5ldyBwcm9jZXNzb3JfdHlwZS4KCShUQVJHRVRfTUlQUzkwMDAsIFRVTkVfTUlQUzkwMDApOiBOZXcgbWFjcm9zLgoJKEdFTkVSQVRFX01VTFQzX1NJKTogVHJ1ZSBmb3IgVEFSR0VUX01JUFM5MDAwLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfY3B1X2luZm9fdGFibGUpOiBBZGQgcm05MDAwIGVudHJ5LgoJKG1pcHNfcnR4X2Nvc3RzKTogQWRqdXN0IGludGVnZXIgbXVsdGlwbGljYXRpb24gY29zdHMgZm9yIHRoZSBybTkwMDAuCgkobWlwc19pc3N1ZV9yYXRlKTogSGFuZGxlIFBST0NFU1NPUl9SOTAwMC4KCShtaXBzX3VzZV9kZmFfcGlwZWxpbmVfaW50ZXJmYWNlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzLzkwMDAubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBJbmNsdWRlIGl0LgoJKGRlZmluZV9hdHRyIGNwdSk6IEFkZCByOTAwMC4KCShtdWxzaTNfbXVsdDMpOiBVc2UgIm11bCIgZm9yIHJtOTAwMCBjb2RlLgoKMjAwMy0wNy0xNSAgU3RhbiBDb3ggIDxzY294QHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmggKFBST0NFU1NPUl9SNzAwMCk6IE5ldyBwcm9jZXNzb3JfdHlwZS4KCShUQVJHRVRfTUlQUzcwMDAsIFRVTkVfTUlQUzcwMDApOiBOZXcgbWFjcm9zLgoJKEdFTkVSQVRFX01VTFQzX1NJKTogVHJ1ZSBmb3IgVEFSR0VUX01JUFM3MDAwLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfY3B1X2luZm9fdGFibGUpOiBBZGQgcm03MDAwIGVudHJ5LgoJKG1pcHNfcnR4X2Nvc3RzKTogQWRqdXN0IGludGVnZXIgbXVsdGlwbGljYXRpb24gY29zdHMgZm9yIHRoZSBybTcwMDAuCgkobWlwc19pc3N1ZV9yYXRlKTogSGFuZGxlIFBST0NFU1NPUl9SNzAwMC4KCShtaXBzX3VzZV9kZmFfcGlwZWxpbmVfaW50ZXJmYWNlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzLzcwMDAubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBJbmNsdWRlIGl0LgoJKGRlZmluZV9hdHRyIGNwdSk6IEFkZCByNzAwMC4KCShtdWxzaTNfbXVsdDMpOiBVc2UgIm11bCIgZm9yIHJtNzAwMCBjb2RlLgoKMjAwMy0wNy0xNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoZGVmaW5lX2F0dHIgdHlwZSk6IEFkZCBjb25kbW92ZS4gIFVzZSBpdCBmb3IKCXRoZSBjb25kaXRpb25hbCBtb3ZlIHBhdHRlcm5zLgoJKiBjb25maWcvbWlwcy81NDAwLm1kIChpcl92cjU0X21vdmUpOiBSZW5hbWUgdG8gaXJfdnI1NF9jb25kbW92ZS4KCUNoZWNrIGZvciBjb25kbW92ZSB0eXBlLgoJKGlyX3ZyNTRfYXJpdGgpOiBBZGQgbW92ZSB0eXBlLgoJKiBjb25maWcvbWlwcy81NTAwLm1kIChpcl92cjU1X21vdmUsIGlyX3ZyNTVfYXJpdGgpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvc3I3MWsubWQgKGlyX3NyNzBfbW92ZSwgaXJfc3I3MF9hcml0aCk6IExpa2V3aXNlLgoKMjAwMy0wNy0xNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogYy1vcHRzLmMgKHByaW50X2hlbHApOiBSZW1vdmUuCgkoY19jb21tb25faGFuZGxlX29wdGlvbik6IERvbid0IGhhbmRsZSAtLWhlbHAuCgkqIGMub3B0OiBEb2N1bWVudCBzb21lIG9wdGlvbnMuCgkoLS1oZWxwKTogUmVtb3ZlLgoJKiBvcHRzLmMgKHByaW50X2ZpbHRlcmVkX2hlbHApOiBOZXcuCgkocHJpbnRfaGVscCk6IFVzZSBpdC4KCjIwMDMtMDctMTQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogYy1jb21tb24uYyAoY19jb21tb25fdHlwZV9mb3JfbW9kZSk6IEhhbmRsZSBWNERGbW9kZS4KCSogdHJlZS5jOiAoYnVpbGRfY29tbW9uX3RyZWVfbm9kZXNfMik6IExpa2V3aXNlLgoJKiB0cmVlLmggKGVudW0gdHJlZV9pbmRleCk6IEFkZCBUSV9WNERGX1RZUEUuCgkoVjRERl90eXBlX25vZGUpOiBOZXcuCgoJKiBjLW9wdHMuYyAocHVzaF9jb21tYW5kX2xpbmVfaW5jbHVkZSk6IERvbid0IGZyZWUgZGVmZXJyZWRfb3B0cywKCXdlJ2xsIG5lZWQgaXQuCgkoZmluaXNoX29wdGlvbnMpOiBSZXNldCBpbml0X2N1cnNvci4KCjIwMDMtMDctMTUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBleHByLmMgKGV4cGFuZF9hc3NpZ25tZW50KTogUmVtb3ZlIGFuIHVudXNlZCBhcmd1bWVudAoJU1VHR0VTVF9SRUcuCgkqIGV4cHIuaDogVXBkYXRlIHRoZSBwcm90b3R5cGUuCgkqIGZ1bmN0aW9uLmM6IFVwZGF0ZSB0aGUgY2FsbGVycy4KCSogc3RtdC5jOiBMaWtld2lzZS4KCjIwMDMtMDctMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgZGVidWcvMTEwOTgKCSogaW50ZWdyYXRlLmMgKGNvcHlfZGVjbF9mb3JfaW5saW5pbmcpOiBEbyBub3QgbWFyayBjb3BpZWQgZGVjbHMKCWFzIERFQ0xfQUJTVFJBQ1QuCgoyMDAzLTA3LTE0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGF2b2lkX2Jvb2xfZGVmaW5lLCBhdm9pZF9ib29sX3R5cGUpOiBCeXBhc3MKCXdpdGggX19jcGx1c3BsdXMsIG5vdCAid2UgbXVzdCB1c2UgdGhlIEMrKyBjb21waWxlcidzIHR5cGUiCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHZvaWRfbnVsbCk6IE5vdGUgdGhhdCBJbnRlcml4IG5lZWRzIHRoaXMuCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoyMDAzLTA3LTE0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIHVud2luZC1kdzItZmRlLWRhcndpbi5jIChsaXZlX2ltYWdlX2Rlc3RydWN0b3IpOiBHZXQgc2Vlbl9vYmplY3RzCglhbmQgdW5zZWVuX29iamVjdHMgZnJvbSB0aGUgZ2xvYmFsIGRhdGEgYmVmb3JlIGNhbGxpbmcKCV9fZGVyZWdpc3Rlcl9mcmFtZV9pbmZvX2Jhc2VzLgoJKGV4YW1pbmVfb2JqZWN0cyk6IEluc2VydCBvYmplY3RzIGludG8gdGhlIHNlZW5fb2JqZWN0cyBsaXN0LAoJbm90IHVuc2Vlbl9vYmplY3RzLgoJKF9VbndpbmRfRmluZF9GREUpOiBBbHdheXMgdW5sb2NrIHRoZSBnbG9iYWwgb2JqZWN0IGxpc3RzLCBldmVuIGlmCgl3ZSBjb3VsZG4ndCBhbGxvY2F0ZSBhIGRhdGEgc3RydWN0dXJlIHRvIHB1dCBpbiBpdC4KCgkqIG9iamMvb2JqYy1hY3QuaCAoQ0xBU1NfU1VQRVJfTkFNRSk6IEFkZCBhIGxpdHRsZSB0eXBlY2hlY2tpbmcuCgkoVFlQRV9QUk9UT0NPTF9MSVNUKTogU2hhcmUgdXNlIG9mIHR5cGUuY29udGV4dCB3aXRoIEMgZnJvbnRlbmQuCgkoU0VUX1RZUEVfUFJPVE9DT0xfTElTVCk6IE5ldy4KCSogb2JqYy9vYmpjLWFjdC5jIChnZXRfc3RhdGljX3JlZmVyZW5jZSk6IFVzZSBTRVRfVFlQRV9QUk9UT0NPTF9MSVNULgoJKGdldF9vYmplY3RfcmVmZXJlbmNlKTogTGlrZXdpc2UuCgoyMDAzLTA3LTE0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZmdsYXlvdXQuYyAobG9jYXRvcl9maWxlKTogQnJlYWsgb3V0IGZyb20gLi4uLgoJKGluc25fZmlsZSk6IC4uLiBoZXJlLgoJKGxvY2F0b3JfbGluZSk6IEJyZWFrIG91dCBmcm9tIC4uLi4KCShpbnNuX2xpbmUpOiAuLi4gaGVyZS4KCSogcnRsLmggKGxvY2F0b3JfZmlsZSwgbG9jYXRvcl9saW5lKTogRGVjbGFyZS4KCShmaW5hbF9zdGFydF9mdW5jdGlvbik6IFNldCBwcm9wZXIgbGluZS9maWxlIGluZm8uCgoyMDAzLTA3LTE0ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2NfdW5hcnlfZXhwcmVzc2lvbik6IEEgQ09OVkVSVF9FWFBSIGlzCgloYW5kbGVkIGJ5IHBwX2NfY2FzdF9leHByZXNzaW9uLgoKMjAwMy0wNy0xNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2V4cGFuZF9wcm9sb2d1ZSk6IFVzZSBhIHNpbmdsZSBpbnNuIHRvCglhbGxvY2F0ZSAzMjc2OCBieXRlcyBvZiBzdGFjay4gIFVzZSBhZGRpdGlvbiByYXRoZXIgdGhhbiBzdWJ0cmFjdGlvbgoJd2hlbiBhIHNpbmdsZSBpbnNuIGlzIGVub3VnaC4KCSogY29uZmlnL21pcHMvbWlwcy5tZDogUmVtb3ZlIGluc25zIGFuZCBzcGxpdHRlcnMgZm9yIHN1YnRyYWN0aW5nCgljb25zdGFudHMuCgkoc3Vic2kzKTogT25seSBhY2NlcHQgcmVnaXN0ZXIgb3BlcmFuZHMuCgkoc3Vic2kzX2ludGVybmFsKTogTGlrZXdpc2UuICBVc2UgZm9yIFRBUkdFVF9NSVBTMTYgYXMgd2VsbC4KCShzdWJkaTNfaW50ZXJuYWxfMywgc3Vic2kzX2ludGVybmFsXzIpOiBMaWtld2lzZS4KCShjYXNlc2kpOiBVc2UgZXhwYW5kX2Jpbm9wIHRvIHN1YnRyYWN0IHRoZSBsb3dlciBib3VuZC4KCjIwMDMtMDctMTQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19pbl9zbWFsbF9kYXRhX3ApOiBEb24ndCBoYW5kbGUKCVRBUkdFVF9NSVBTMTYgc3BlY2lhbGx5LgoKMjAwMy0wNy0xNCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvZWxmLmggKEFTTV9PVVRQVVRfQUxJR05FRF9CU1MpOiBVc2UKCW1pcHNfb3V0cHV0X2FsaWduZWRfYnNzLgoJKiBjb25maWcvbWlwcy9saW51eC5oOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19vdXRwdXRfYWxpZ25lZF9ic3MpOiBEZWNsYXJlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfb3V0cHV0X2FsaWduZWRfYnNzKTogTmV3IGZ1bmN0aW9uLgoKCSogY29uZmlnL21pcHMvZWxmLmggKERCWF9ERUJVR0dJTkdfSU5GTyk6IERlbGV0ZS4KCSogY29uZmlnL21pcHMvZWxmNjQuaDogTGlrZXdpc2UuCgoJKiBjb25maWcvbWlwcy9lbGYuaCAoQVNNX0RFQ0xBUkVfT0JKRUNUX05BTUUpOiBVc2UKCW1pcHNfZGVjbGFyZV9vYmplY3RfbmFtZS4KCShBU01fRklOSVNIX0RFQ0xBUkVfT0JKRUNUKTogTGlrZXdpc2UgbWlwc19maW5pc2hfZGVjbGFyZV9vYmplY3QuCgkqIGNvbmZpZy9taXBzL2VsZjY0Lmg6IEFzIGZvciBlbGYuaC4KCSogY29uZmlnL21pcHMvaXJpczYuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL2xpbnV4LmggKEFTTV9ERUNMQVJFX09CSkVDVF9OQU1FKTogQXMgZm9yIGVsZi5oLgoJKiBjb25maWcvbWlwcy9taXBzLmggKEFTTV9ERUNMQVJFX09CSkVDVF9OQU1FKTogUmVtb3ZlIHVubmVjZXNzYXJ5Cglkby4uLndoaWxlICgwKSBibG9jay4KCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19kZWNsYXJlX29iamVjdF9uYW1lKTogRGVjbGFyZS4KCShtaXBzX2ZpbmlzaF9kZWNsYXJlX29iamVjdCk6IERlY2xhcmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19kZWNsYXJlX29iamVjdF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfZmluaXNoX2RlY2xhcmVfb2JqZWN0KTogTmV3IGZ1bmN0aW9uLgoKCSogY29uZmlnL21pcHMvZWxmLmggKFNCU1NfU0VDVElPTl9BU01fT1ApOiBEZWxldGUuCgkqIGNvbmZpZy9taXBzL2xpbnV4Lmg6IExpa2V3aXNlLgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChpbnNpZGVfZnVuY3Rpb24pOiBEZWxldGUuCgkoZmlsZV9pbl9mdW5jdGlvbl93YXJuaW5nLCBpZ25vcmVfbGluZV9udW1iZXIpOiBEZWxldGUuCgkobWlwc19vdXRwdXRfZmlsZW5hbWUpOiBEb24ndCB3YXJuIGFib3V0IGNoYW5naW5nIGZpbGVuYW1lcyB3aXRoaW4KCWEgZnVuY3Rpb24uCgkobWlwc19vdXRwdXRfbGluZW5vKTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKG1pcHNfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogRG9uJ3QgcmVzZXQgdGhlIGRlbGV0ZWQgdmFyaWFibGVzLgoJKiBjb25maWcvbWlwcy9taXBzLmggKGluc2lkZV9mdW5jdGlvbik6IERlbGV0ZS4KCShmaWxlX2luX2Z1bmN0aW9uX3dhcm5pbmcsIGlnbm9yZV9saW5lX251bWJlcik6IERlbGV0ZS4KCgkqIGNvbmZpZy9taXBzL2VsZi5oIChPQkpFQ1RfRk9STUFUX0NPRkYsIEVYVEVOREVEX0NPRkYpOiBSZW1vdmUgdW5kZWZzLgoJKiBjb25maWcvbWlwcy9lbGY2NC5oOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvb3BlbmJzZC5oOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvaXJpczUuaCAoT0JKRUNUX0ZPUk1BVF9DT0ZGKTogUmVtb3ZlIHVuZGVmcy4KCSogY29uZmlnL21pcHMvbGludXguaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoT0JKRUNUX0ZPUk1BVF9DT0ZGLCBFWFRFTkRFRF9DT0ZGKTogRGVsZXRlLgoJKENPREVfTUFTSywgTUlQU19JU19TVEFCLCBNSVBTX01BUktfU1RBQiwgTUlQU19VTk1BUktfU1RBQik6IERlbGV0ZS4KCgkqIGNvbmZpZy5nY2MgKG1pcHMtc2dpLWlyaXg2Km8zMiwgbWlwcy1zZ2ktaXJpeDUqKTogQWRkIG1pcHMvc2RiLmgKCXRvIHRoZSBsaXN0IG9mIGluY2x1ZGUgZmlsZXMgd2hlbiB1c2luZyBnYXMuCgkobWlwcyplbC0qLW9wZW5ic2QqLCBtaXBzKi0qLW9wZW5ic2QqKTogQWRkIG1pcHMvc2RiLmggdW5jb25kaXRpb25hbGx5LgoJKiBjb25maWcvbWlwcy9lbGYuaDogUmVtb3ZlICN1bmRlZiBTREJfREVCVUdHSU5HX0lORk8uCgkqIGNvbmZpZy9taXBzL2VsZjY0Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9pcmlzNS5oOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbGludXguaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL2lyaXM1Z2FzLmggKFNEQl9ERUJVR0dJTkdfSU5GTyk6IFJlbW92ZSBkZWZpbml0aW9uLgoJKiBjb25maWcvbWlwcy9taXBzLmggKFBSRUZFUlJFRF9ERUJVR0dJTkdfVFlQRSk6IExpa2V3aXNlLgoJKFNEQl9ERUJVR0dJTkdfSU5GTywgc2RiKiwgU0RCX0FMTE9XXyosIFBVVF9TREIqKTogTW92ZSB0by4uLgoJKiBjb25maWcvbWlwcy9zZGIuaDogLi4udGhpcyBuZXcgZmlsZS4KCjIwMDMtMDctMTQgIERvdWdsYXMgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBmaXhpbmMvc2VydmVyLmMgKHNlcnZlcl9zZXR1cCk6IERvbid0IHVzZSBub24tUE9TSVggTlVMTCBmaXJzdAoJYXJndW1lbnQgdG8gZ2V0Y3dkOyB1c2UgZml4ZWQgYnVmZmVyIGluc3RlYWQuCgoyMDAzLTA3LTE0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogVHJlYXQgT3BlbkJTRCBub3JtYWxseS4KCSogZml4aW5jL2ZpeGluYy53cmFwOiBEZWxldGUuCgoyMDAzLTA3LTE0ICBEYW4gTmljb2xhZXNjdSAgPGRhbm5AaWNzLnVjaS5lZHU+CgoJKiBnZ2MtcGFnZS5jIChleHRyYV9vcmRlcl9zaXplX3RhYmxlKTogSW5zbnMgaGF2ZSA5IHNsb3RzLiBSZWdzCglkb24ndCBoYXZlIDIuCgoyMDAzLTA3LTE0ICBEYW4gTmljb2xhZXNjdSAgPGRhbm5AaWNzLnVjaS5lZHU+CgoJKiBnZ2MtcGFnZS5jIChzdHJ1Y3QgZ2xvYmFscyk6IEFkZCBuZXcgZmllbGRzIHRvIGtlZXAgdHJhY2sgb2YgdGhlCgl0b3RhbCBhbGxvY2F0ZWQgbWVtb3J5IGFuZCBvdmVyaGVhZC4KCShnZ2NfcHJpbnRfc3RhdGlzdGljcyk6IFByaW50IHRoZW0uCgkoZ2djX2FsbG9jKTogS2VlcCB0cmFjayBvZiB0aGUgdG90YWwgYWxsb2NhdGVkIG1lbW9yeSBhbmQgdGhlCglvdmVyaGVhZC4KCgkqIHRyZWUuYyAoZHVtcF90cmVlX3N0YXRpc3RpY3MpOiBJbmNyZWFzZSBzcGFjaW5nLgoJKGVudW0gdHJlZV9ub2RlX2tpbmQpOiBNb3ZlIHRvIC4uLgoJKiB0cmVlLmggKGVudW0gdHJlZV9ub2RlX2tpbmQpOiAuLi4gaGVyZS4KCSh0cmVlX25vZGVfY291bnRzLCB0cmVlX25vZGVfc2l6ZXMpOiBEZWNsYXJlLgoKMjAwMy0wNy0xNCAgSmFtZXMgQS4gTW9ycmlzb24gIDxqYTJtb3JyaUBzdHVkZW50Lm1hdGgudXdhdGVybG9vLmNhPgoKCSogZG9jL2luY2x1ZGUvdGV4aW5mby50ZXg6IFVwZ3JhZGUgdG8gdGV4aW5mbyA0LjYuCgoyMDAzLTA3LTE0ICBGcmFueiBTaXJsICA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzExNDQwCgkqIGdjc2UuYyAodHJ5X3JlcGxhY2VfcmVnKTogRG9uJ3QgYXR0YWNoIG5vdGVzIHRvIFpFUk9fRVhUUkFDVCBvcgoJU0lHTl9FWFRSQUNUIFNFVHMuCgoyMDAzLTA3LTE0ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZG9jL3RtLnRleGkgKEJMT0NLX1JFR19QQURESU5HKTogRGVzY3JpYmUuCgkqIGV4cHIuaCAoc3RydWN0IGxvY2F0ZV9hbmRfcGFkX2FyZ19kYXRhKTogQWRkIHdoZXJlX3BhZC4KCShlbWl0X2dyb3VwX2xvYWQsIGVtaXRfZ3JvdXBfc3RvcmUpOiBBZGp1c3QgZGVjbGFyYXRpb25zLgoJUmVtb3ZlIG1vc3Qgb2NjdXJyZW5jZXMgb2YgI2lmZGVmIFRSRUVfQ09ERS4KCSogZXhwci5jIChlbWl0X2dyb3VwX2xvYWQpOiBBZGQgInR5cGUiIHBhcmFtLCBhbmQgdXNlCglCTE9DS19SRUdfUEFERElORyB0byBkZXRlcm1pbmUgbmVlZCBmb3IgYSBzaGlmdC4gIE9wdGltaXplIG5vbi0KCWFsaWduZWQgYWNjZXNzZXMgaWYgIVNMT1dfVU5BTElHTkVEX0FDQ0VTUy4KCShlbWl0X2dyb3VwX3N0b3JlKTogTGlrZXdpc2UuCgkoZW1pdF9wdXNoX2luc24sIGV4cGFuZF9hc3NpZ25tZW50LCBzdG9yZV9leHByLCBleHBhbmRfZXhwcik6IEFkanVzdAoJZW1pdF9ncm91cF9sb2FkIGFuZCBlbWl0X2dyb3VwX3N0b3JlIGNhbGxzLgoJKiBjYWxscy5jIChzdG9yZV91bmFsaWduZWRfYXJndW1lbnRzX2ludG9fcHNldWRvcyk6IFRpZHkuICBVc2UKCUJMT0NLX1JFR19QQURESU5HIHRvIGRldGVybWluZSB3aGV0aGVyIHdlIG5lZWQgZW5kaWFuX2NvcnJlY3Rpb24uCgkobG9hZF9yZWdpc3Rlcl9wYXJhbWV0ZXJzKTogTG9jYWxpemUgdmFycy4gIEhhbmRsZSBzaGlmdGluZyBvZgoJc21hbGwgdmFsdWVzIHRvIHRoZSBjb3JyZWN0IGVuZCBvZiByZWdzLiAgQWRqdXN0IGVtaXRfZ3JvdXBfbG9hZAoJY2FsbC4KCShleHBhbmRfY2FsbCwgZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IEFkanVzdCBlbWl0X2dyb3VwX2xvYWQKCWFuZCBlbWl0X2dyb3VwX3N0b3JlIGNhbGxzLgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBTZXQgbWVtIGFsaWdubWVudCBmb3Igc3RhY2sgc2xvdHMuCglBZGp1c3QgZW1pdF9ncm91cF9zdG9yZSBjYWxsLiAgU3RvcmUgdmFsdWVzIGF0IHRoZSAid3JvbmciIGVuZAoJb2YgcmVncyB0byB0aGUgc3RhY2suICBVc2UgQkxPQ0tfUkVHX1BBRERJTkcuCgkobG9jYXRlX2FuZF9wYWRfcGFybSk6IFNhdmUgd2hlcmVfcGFkLgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBBZGp1c3QgZW1pdF9ncm91cF9sb2FkIGNhbGwuCgkqIHN0bXQuYyAoZXhwYW5kX3ZhbHVlX3JldHVybik6IEFkanVzdCBlbWl0X2dyb3VwX2xvYWQgY2FsbC4KCSogTWFrZWZpbGUuaW4gKGNhbGxzLm8pOiBEZXBlbmQgb24gJChPUFRBQlNfSCkuCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChUQVJHRVRfTElUVExFX0VORElBTik6IFJlZGVmaW5lIGFzIDAuCgkoQUdHUkVHQVRFX1BBRERJTkdfRklYRUQsIEFHR1JFR0FURVNfUEFEX1VQV0FSRF9BTFdBWVMpOiBEZWZpbmUuCgkoTVVTVF9QQVNTX0lOX1NUQUNLKTogRGVmaW5lLgoJKEJMT0NLX1JFR19QQURESU5HKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChzdHJ1Y3QgcnM2MDAwX2FyZ3MpOiBSZW1vdmUgb3JpZ19uYXJncy4KCShQQURfVkFSQVJHU19ET1dOKTogRGVmaW5lIGluIHRlcm1zIG9mIEZVTkNUSU9OX0FSR19QQURESU5HLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChpbml0X2N1bXVsYXRpdmVfYXJncyk6IERvbid0IHNldCBvcmlnX25hcmdzLgoJKGZ1bmN0aW9uX2FyZ19wYWRkaW5nKTogIUFHR1JFR0FURV9QQURESU5HX0ZJWEVEIGNvbXBhdGliaWxpdHkgY29kZS4KCUFjdCBvbiBBR0dSRUdBVEVTX1BBRF9VUFdBUkRfQUxXQVlTLgoKMjAwMy0wNy0xMyAgQWFyb24gVy4gTGFGcmFtYm9pc2UgIDxhd2xhZnJhbWJvaXNlQGFvbC5jb20+CgoJKiBjb25maWcvaTM4Ni9ndGhyLXdpbjMyLmMgKF9fR1RIUkVBRF9ISURFX1dJTjMyQVBJKTogRGVmaW5lIHRvIDEuCgoyMDAzLTA3LTEzICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBDT01QT05FTlRfUkVGKTogSWYgcmVnLCBjb3B5IE9QMCB0byBNRU0KCWJvdGggaWYgT0ZGU0VUIHNwZWNpZmllZCBhbmQgaWYgcmVzdWx0IEJMS21vZGUgZm9yIEFSUkFZX1JBTkdFX1JFRi4KCjIwMDMtMDctMTMgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCVBSIG90aGVyLzExMTIzCgkqIHRvcGxldi5jOiBEb24ndCBjdXQgb2ZmIG9wdGlvbiBuYW1lcy4KCjIwMDMtMDctMTMgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGMtZGVjbC5jIChsaW5rX2hhc2hfaGFzaCk6IEF2b2lkIHdhcm5pbmcgYWJvdXQgY2FzdGluZyBwb2ludGVyCgl0byBpbnRlZ2VyIG9mIGRpZmZlcmVudCBzaXplLgoKMjAwMy0wNy0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfY29tcGFyaXNvbik6IENvbnZlcnQgKG5lIChhbmQgKG5vdCBYKSAxKSAwKQoJdG8gKGVxIChhbmQgWCAxKSAwKS4KCjIwMDMtMDctMTMgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZy5nY2M6IEFkZCBwbW1pbnRyaW4uaCBmb3IgeDg2XzY0LSotKi4KCjIwMDMtMDctMTMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoTElCQ1BQX0RFUFMpOiBSZW1vdmUgY29yZXR5cGVzLmggYW5kICQoVE1fSCkuCgkoaGFzaHRhYmxlLm8sIGxpbmUtbWFwLm8sIG1rZGVwcy5vKTogTGlrZXdpc2UsIGZyb20gZGVwZW5kZW5jeQoJbGlzdC4gIE1vdmUgdGhlc2UgYWxsIHRvZ2V0aGVyIGRvd24gYnkgY3BwbGliLgoKCSogY3BwbGliLmg6IERvbid0IHJlZmVyIHRvIE1BWF9XQ0hBUl9UWVBFX1NJWkUgd2hlbiBkZXRlcm1pbmluZwoJZGVmaW5pdGlvbiBvZiBDUFBDSEFSX1NJR05FRF9ULgoKCSogY3BwY2hhcnNldC5jLCBjcHBlcnJvci5jLCBjcHBleHAuYywgY3BwZmlsZXMuYywgY3BwaGFzaC5jLCBjcHBpbml0LmMKCSogY3BwbGV4LmMsIGNwcGxpYi5jLCBjcHBtYWNyby5jLCBjcHBwY2guYywgY3BwdHJhZC5jLCBoYXNodGFibGUuYwoJKiBsaW5lLW1hcC5jLCBta2RlcHMuYzogRG9uJ3QgaW5jbHVkZSBjb3JldHlwZXMuaCBvciB0bS5oLgoKCSogY3BwaGFzaC5jIChfY3BwX2luaXRfaGFzaHRhYmxlKTogRG9uJ3QgdXNlIGdjY19vYnN0YWNrX2luaXQuCgkqIGNwcGluaXQuYyAoY3BwX2NyZWF0ZV9yZWFkZXIpOiBMaWtld2lzZS4KCgkqIGNwcGhhc2guaCAoc2Nhbl9vdXRfbG9naWNhbF9saW5lKTogUmVuYW1lIF9jcHBfc2Nhbl9vdXRfbG9naWNhbF9saW5lLgoJKiBjcHB0cmFkLmM6IExpa2V3aXNlLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCSogY3BwbGliLmM6IEFsbCBjYWxsZXJzIGNoYW5nZWQuCgkqIGMtcHBvdXRwdXQuYzogUmVwbGFjZSAndWNoYXInIHdpdGggJ3Vuc2lnbmVkIGNoYXInIHRocm91Z2hvdXQuCgkqIGhhc2h0YWJsZS5oOiBEZWZpbmUgR1RZKHgpIHRvIG5vdGhpbmcgaGVyZSB0b28uCgoyMDAzLTA3LTEzICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogc3Rvci1sYXlvdXQuYyAoY29tcHV0ZV9yZWNvcmRfbW9kZSk6IFJlbW92ZSB2ZXJ5IG9ic29sZXRlIHRlc3QKCXRoYXQgZm9yY2VzIEJMS21vZGUgZm9yIHJlY29yZHMgd2l0aCBmaWVsZHMgY3Jvc3Npbmcgd29yZCBib3VuZGFyeS4KCjIwMDMtMDctMTMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIG9ycGhhbiByZWZlcmVuY2UgdG8gYWNjb25maWcuaC4KCjIwMDMtMDctMTMgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNncmFwaHVuaXQuYzogQ29udmVydCBwcm90b3R5cGVzIHRvIElTTyBDOTAuCgoyMDAzLTA3LTEzICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGF2b2lkX3djaGFyX3RfdHlwZSk6IFVzZSBfX2NwbHVzcGx1cyBieXBhc3MKCShmb3IgT3BlbkJTRCkuCgkqIGZpeGluYy9maXhpbmNsLng6IFJlYnVpbGQuCgoyMDAzLTA3LTEyICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmluOiBBbHdheXMgZGVmaW5lIEhBVkVfQVNfR09UT0ZGX0lOX0RBVEEgZm9yCglpPzg2LSotKi4gIFVzZSBjb3JyZWN0IG5hbWUgb2YgY2FjaGUgdmFyaWFibGUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDctMTIgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYzogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLmM6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vbGliMWZ1bmNzLmFzbTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hdnIvYXZyLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9SRUFETUUtaW50ZXJ3b3JraW5nOiBGaXggdHlwb3MuCgoyMDAzLTA3LTEyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYy1mb3JtYXQuYzogRml4IGNvbW1lbnQgZm9ybWF0dGluZy4KCSogYy10eXBlY2suYzogTGlrZXdpc2UuCgkqIGNvdmVyYWdlLmM6IExpa2V3aXNlLgoJKiBjcHBjaGFyc2V0LmM6IExpa2V3aXNlLgoJKiBjcHBsaWIuYzogTGlrZXdpc2UuCgkqIGRieG91dC5jOiBMaWtld2lzZS4KCSogZ2Nvdi1pby5oOiBMaWtld2lzZS4KCSogdG9wbGV2LmM6IExpa2V3aXNlLgoKMjAwMy0wNy0xMiAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChhbHBoYV9zYnJrKTogTm90ZSB0aGF0IE9wZW5CU0QgbmVlZHMgdGhpcwoJZml4LgoKMjAwMy0wNy0xMiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGFjbG9jYWwubTQgKGdjY19BQ19DSEVDS19UWVBFKTogQ2xvbmUgb2YgQUNfQ0hFQ0tfVFlQRSwKCXVzZXMgdGhyZWUtYXJndW1lbnQgQUNfREVGSU5FIHNvIG5vIGFjY29uZmlnLmggZW50cmllcyBhcmUKCW5lZWRlZC4KCShfZ2NjX0NPTVBVVEVfR0FTX1ZFUlNJT04pOiBBbHNvIHByb3ZpZGUgZ2NjX2N2X2dhc192ZXJzCgl3aGljaCBjb250YWlucyB0aGUgR0FTIHZlcnNpb24gbnVtYmVyIGFzIGEgc2NhbGVkIGludGVnZXIuCgkoZ2NjX0dBU19WRVJTSU9OX0dURV9JRkVMU0UpOiBVc2UgZ2NjX2N2X2dhc192ZXJzLiAgQWRkCglhYmlsaXR5IHRvIGNoZWNrIGZvciBFTEYgYXNzZW1ibGVyLgoJKGdjY19HQVNfQ0hFQ0tfRkVBVFVSRSk6IE5ldyBtYWNyby4KCSogY29uZmlndXJlLmluOiBVc2UgZ2NjX0FDX0NIRUNLX1RZUEUuICBSZXdyaXRlIGFsbAoJYXNzZW1ibGVyIGZlYXR1cmUgY2hlY2tzIHVzaW5nIGdjY19HQVNfQ0hFQ0tfRkVBVFVSRS4KCVVzZSB0aHJlZS1hcmd1bWVudCBBQ19ERUZJTkUgZXZlcnl3aGVyZS4KCSogYWNjb25maWcuaDogRGVsZXRlZC4KCSogY29uZmlnLmluLCBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTA3LTEyICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKHN0cnVjdF9zb2NrYWRkcik6IEF2b2lkICJmaXhpbmciIHNvY2thZGRyX2luCgkob24gT3BlbkJTRCkuCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChnbnVfdHlwZXMpOiBJbXByb3ZlIGNvbW1lbnQuCgoyMDAzLTA3LTEyICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBmcC10ZXN0LmMgKG1haW4pOiBVc2UgSVNPIEM5MCBwcm90b3R5cGUuCgoJKiB2ZXJzaW9uLmM6IFJlbW92ZSB1bm5lZGVkIGluY2x1ZGUgb2YgYW5zaWRlY2wuaC4KCgkqIGNncmFwaC5oOiBDb252ZXJ0IHByb3RvdHlwZXMgdG8gSVNPIEM5MC4KCSogY2dyYXBoLmM6IExpa2V3aXNlLgoJKiBmaXgtaGVhZGVyLmM6IExpa2V3aXNlLgoJKiByYS5oOiBMaWtld2lzZS4KCSogcHJvdG9pemUuYzogTGlrZXdpc2UuCgoyMDAzLTA3LTEyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9pbmxpbmVkX2ludG8sIGNncmFwaF9pbmxpbmVkX2NhbGVlcyk6IEZpeAoJd2FybmluZy4KCjIwMDMtMDctMTIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCQkJICAgICAgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGNncmFwaC5jIChjZ3JhcGhfbWF4X3VpZCk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkoY2dyYXBoX25vZGUpOiBTZXQgdWlkIGZpZWxkLgoJKGNyZWF0ZV9lZGdlKTogS2VlcCBpbmxpbmUgZmxhZ3MgY29uc2lzdGVudC4KCShkdW1wX2NncmFwaCk6IER1bXAgbW9yZSBpbmZvLgoJKiBjZ3JhcGguaCAoc3RydWN0IGNncmFwaF9sb2NhbF9pbmZvKTogUmVtb3ZlIGlubGluZV9tYW55IGFuZAoJY2FuX2lubGluZV9vbmNlOyBhZGQgaW5saW5hYmxlLCBkaXNncmVhZF9pbmxpbmVfbGltaXRzLCBhbmQgc2VsZl9pbnNuCgkoc3RydWN0IGNncmFwaF9nbG9iYWxfaW5mbyk6IEFkZCBpbnNucywgY2FsbHMsIGNsb25lZF90aW1lcywKCXdpbGxfYmVfb3V0cHV0LgoJKHN0cnVjdCBjZ3JhcGhfbm9kZSk6IEFkZCB1aWQuCgkoc3RydWN0IGNncmFwaF9lZGdlKTogQWRkIGlubGluZV9jYWxsLgoJKGNncmFwaF9tYXhfdWlkLCBjZ3JhcGhfaW5saW5lX3ApOiBEZWNsYXJlLgoJKiBjZ3JhcGguYzogSW5jbHVkZSBwYXJhbXMuaCBhbmQgZmliaGVhcC5oCgkoY2dyYXBoX21hcmtfZnVuY3Rpb25zX3RvX2lubGluZV9vbmNlKTogS2lsbC4KCShJTlNOU19QRVJfQ0FMTCk6IE5ldyBjb25zdGFudC4KCShuY2FsbHNfaW5saW5lZCwgbmZ1bmN0aW9uc19pbmxpbmVkLCBpbml0aWFsX2luc25zLCBvdmVyYWxsX2luc25zKTogTmV3CglzdGF0aWMgdmFyaWFibGVzLgoJKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IERvIG5vdCBhbmFseXplIGlubGluaW5nLgoJKGNncmFwaF9maW5hbGl6ZV9jb21waWxhdGlvbl91bml0KTogU2V0IGlubGluaW5nIGF0dHJpYnV0ZXMuCgkoY2dyYXBoX21hcmtfZnVuY3Rpb25zX3RvX291dHB1dCk6IE1vcmUgY29uc2lzdGVuY3kgY2hlY2tzLgoJKGNncmFwaF9vcHRpbWl6ZV9mdW5jdGlvbik6IFNldCBjdXJyZW50X2Z1bmN0aW9uX2RlY2wgdG8gTlVMTC4KCShjZ3JhcGhfZXhwYW5kX2Z1bmN0aW9uKTogVXNlIG5ldyBpbmxpbmUgZmxhZ3MuCgkoY2dyYXBoX3Bvc3RvcmRlcik6IEV4cGFuZCBmcm9tIGNncmFwaF9leHBhbmRfZnVuY3Rpb25zLgoJKElOTElORURfVElNRVMsIFNFVF9JTkxJTkVEX1RJTUVTKTogTmV3IG1hY3Jvcy4KCShjZ3JhcGhfaW5saW5lZF9pbnRvLCBjZ3JhcGhfaW5saW5lZF9jYWxsZWVzLAoJY2dyYXBoX2VzdGltYXRlX3NpemVfYWZ0ZXJfaW5saW5pbmcsIGNncmFwaF9lc3RpbWF0ZV9ncm93dGgsCgljZ3JhcGhfbWFya19pbmxpbmUsIGNncmFwaF9jaGVja19pbmxpbmVfbGltaXRzLAoJY2dyYXBoX2RlZmF1bHRfaW5saW5lX3AsIGNncmFwaF9kZWNpZGVfaW5saW5nX29mX3NtYWxsX2Z1bmN0aW9ucywKCWNncmFwaF9kZWNpZGVfaW5saW5pbmcsIGNncmFwaF9pbmxpbmVfcCk6IE5ldyBmdW5jdGlvbnMuCgkqIHBhcmFtcy5kZWYgKFBBUkFNX0xBUkdFX0ZVTkNUSU9OX0lOU05TLCBQQVJBTV9MQVJHRV9GVU5DVElPTl9HUk9XVEgsCglQQVJBTV9JTkxJTkVfVU5JVF9HUk9XVEgpOiBOZXcgcGFyYW1ldGVycy4KCSogdHJlZS1pbmxpbmUuYyAoc3RydWN0IGlubGluZV9kYXRhKTogTmV3IGZpZWxkIGN1cnJlbnRfZGVjbC4KCShleHBhbmRfY2FsbF9pbmxpbmUpOiBBdm9pZCBmb3J3YXJkIGRlY2xhcmF0aW9uczsgdXNlCglpbmxpbmFibGVfZnVuY3Rpb25fcC4KCShvcHRpbWl6ZV9pbmxpbmVfY2FsbHMpOiBTZXQgaWQuY3VycmVudF9kZWNsLgoKMjAwMy0wNy0xMSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBjb25maWd1cmUuaW46IFJlbW92ZSB3cm9uZ2x5IGFkZGVkIGRlZmluaXRpb24gb2YKCWxvY2FsX3ByZWZpeC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMy0wNy0xMSAgRGFuIE5pY29sYWVzY3UgIDxkYW5uQGljcy51Y2kuZWR1PgoKCSogcnRsLmRlZiAoTk9URSk6IERvIG5vdCB1c2UgcGFkZGluZy4KCjIwMDMtMDctMTEgIERhcmEgSGF6ZWdoaSAgPGRoYXplZ2hpQHlhaG9vLmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleDogVXBkYXRlIHJlcXVpcmVkIGJpbnV0aWxzIGZvciBpPzg2LSotbGludXgqCgoyMDAzLTA3LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKHN0YWdlMV9idWlsZCk6IEZvcmNlIE9CSlMtb25lc3RlcD1PQkpTLgoKMjAwMy0wNy0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHZhcmFzbS5jIChtYWtlX2RlY2xfcnRsKTogVHJlYXQgZGVjbHMgd2l0aCBhIERFQ0xfQ09OVEVYVCBvZgoJVFJBTlNMQVRJT05fVU5JVF9ERUNMIGFzIHRvcF9sZXZlbC4KCjIwMDMtMDctMTEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogb3B0YWJzLmMgKHByZXBhcmVfY21wX2luc24pOiBUcnkgY21wbWVtTSBmaXJzdCBpZiBpdCBleGlzdHMsCgl0aGVuIGZhbGwgYmFjayB0byBjbXBzdHJNLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9tZW1jbXApOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAoczM5MF9leHBhbmRfY21wc3RyKTogUmVuYW1lIHRvLi4uCgkoczM5MF9leHBhbmRfY21wbWVtKTogLi4uIHRoaXMuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQgKGNtcG1lbWRpLCBjbXBtZW1zaSwgY21wbWVtX3Nob3J0XzY0LAoJY21wbWVtX3Nob3J0XzMxLCBjbXBtZW1fbG9uZ182NCwgY21wbWVtX2xvbmdfMzEpOiBSZW5hbWVkCglmcm9tIGNtcHN0ciogcGF0dGVybnMuICBSZW5hbWUgY2FsbCB0byBzMzkwX2V4cGFuZF9jbXBzdHIKCXRvIHMzOTBfZXhwYW5kX2NtcG1lbS4KCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2V4cGFuZF9jbXBzdHIpOiBSZW5hbWUgdG8uLi4KCShzMzkwX2V4cGFuZF9jbXBzdHIpOiAuLi4gdGhpcy4gIFJlbmFtZSBjbXBzdHIqIGluc3RydWN0aW9ucwoJdG8gY21wbWVtKi4KCSogY29uZmlnL2kzNzAvaTM3MC5tZCAoY21wbWVtc2ksIGNtcG1lbXNpXzEpOiBSZW5hbWVkIGZyb20KCWNtcHN0ciogcGF0dGVybnMuCgkqIGRvYy9tZC50ZXhpIChjbXBzdHJNKTogRGVzY3JpYmUgYXMgU3RyaW5nIGNvbXBhcmUgaW5zbiwgbm90CglCbG9jayBjb21wYXJlIGluc24uCgkoY21wbWVtTSk6IEFkZC4KCjIwMDMtMDctMTEgIExvcmVuIEphbWVzIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLmggKFNFVF9BU01fT1ApOiBSZW1vdmUuCgkoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBIYW5kbGUgVEFSR0VUXzY0QklUIGNhc2UuCgkoQVNNX0NPTU1FTlRfU1RBUlQsIEFTTV9BUFBfT04sIEFTTV9BUFBfT0ZGLCBEQlhfUkVHSVNURVJfTlVNQkVSCgkgTUNPVU5UX05BTUUsIFNJWkVfVFlQRSwgUFRSRElGRl9UWVBFLCBXQ0hBUl9UWVBFX1NJWkUpOiBXaGl0ZXNwYWNlLgoKMjAwMy0wNy0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IERvbid0IHJlY29tYmluZSBjb21wbGV4IGFyZ3MgaWYKCWZuYXJncyBpcyB1bmNoYW5nZWQgZnJvbSBvcmlnX2ZuYXJncy4KCShzcGxpdF9jb21wbGV4X2FyZ3MpOiBSZXR1cm4gYXJncyB3aXRob3V0IGNvbXBsZXggYmVmb3JlIGNvcHlpbmcuCglSZS1sYXlvdXQgdGhlIG1vZGlmaWVkIHBhcmFtZXRlcnMuCgoyMDAzLTA3LTExICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIHJlZ2NsYXNzLmMgKGNob29zZV9oYXJkX3JlZ19tb2RlKTogQWRkIHRoaXJkIGFyZ3VtZW50LgoJQ2hhbmdlZCBhbGwgY2FsbGVycy4KCSogcnRsLmggKGNob29zZV9oYXJkX3JlZ19tb2RlKTogVXBkYXRlIGRlY2xhcmF0aW9uLgoJKiBkd2FyZjJvdXQuYyAoZXhwYW5kX2J1aWx0aW5faW5pdF9kd2FyZl9yZWdfc2l6ZXMpOgoJVGFrZSBIQVJEX1JFR05PX0NBTExfUEFSVF9DTE9CQkVSRUQgaW50byBhY2NvdW50LgoKMjAwMy0wNy0xMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjLWRlY2wuYyAoZmluaXNoX2RlY2wpOiBIYW5kbGUgJ3VzZWQnIGhlcmUuLi4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiAuLi4gYW5kIGhlcmUgLi4uCgkqIGMtY29tbW9uLmM6IChoYW5kbGVfdXNlZF9hdHRyaWJ1dGUpOiAuLi4gbm90IGhlcmUuCgoJKiBjb25maWd1cmUuaW4gKG9uc3RlcCk6IFN1cHBvcnQgLS1lbmFibGUtaW50ZXJtb2R1bGUuCgkqIE1ha2VmaWxlLmluIChPQkpTLWNvbW1vbik6IE5ldy4KCShPQkpTLW1kKTogTmV3LgoJKE9CSlMtYXJjaGl2ZSk6IE5ldy4KCShPQkpTKTogQnVpbGQgZnJvbSBPQkpTLWNvbW1vbiwgT0JKUy1tZCwgT0JKUy1hcmNoaXZlLgoJKE9CSlMtb25lc3RlcCk6IE5ldy4KCShsaWJiYWNrZW5kLmEpOiBTdXBwb3J0IEBvbmVzdGVwQC4KCShsaWJiYWNrZW5kLm8pOiBOZXcuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIGMtY29tbW9uLmggKGNfcmVzZXRfc3RhdGUpOiBOZXcgcHJvdG90eXBlLgoJKGNfcGFyc2VfZmlsZSk6IE5ldyBwcm90b3R5cGUuCgkoZmluaXNoX2ZpbGUpOiBNb3ZlIHByb3RvdHlwZSBmcm9tIGMtdHJlZS5oLgoJKiBjLWRlY2wuYzogSW5jbHVkZSA8aGFzaHRhYi5oPi4KCShidWlsdGluX2RlY2xzKTogTmV3LgoJKGN1cnJlbnRfZmlsZV9kZWNsKTogTmV3LgoJKGR1cGxpY2F0ZV9kZWNscyk6IEFkZCBleHRyYSBwYXJhbWV0ZXIuIENoYW5nZSBhbGwgY2FsbGVycy4gIERvbid0CglvdXRwdXQgZHVwbGljYXRlIGNvbW1vbiBzeW1ib2xzLgoJKGxpbmtfaGFzaF9oYXNoKTogTmV3LgoJKGxpbmtfaGFzaF9lcSk6IE5ldy4KCShwb3BsZXZlbCk6IEhhbmRsZSBwb3BwaW5nIG9mIHRoZSB0b3AgbGV2ZWwuCgkod2Fybl9pZl9zaGFkb3dpbmcpOiBIYW5kbGUgVFJBTlNMQVRJT05fVU5JVF9ERUNMLgoJKHB1c2hkZWNsKTogU2V0IERFQ0xfQ09OVEVYVCB0byBUUkFOU0xBVElPTl9VTklUX0RFQ0wgaWYgYXBwcm9wcmlhdGUuCgkocHVzaGRlY2xfdG9wX2xldmVsKTogTGlrZXdpc2UuCgkocmVkZWNsYXJhdGlvbl9lcnJvcl9tZXNzYWdlKTogSGFuZGxlIFRSQU5TTEFUSU9OX1VOSVRfREVDTC4KCShjX2luaXRfZGVjbF9wcm9jZXNzaW5nKTogQ3JlYXRlIFRSQU5TTEFUSU9OX1VOSVRfREVDTC4KCShmaW5pc2hfZGVjbCk6IEhhbmRsZSBUUkFOU0xBVElPTl9VTklUX0RFQ0wuCgkobWVyZ2VfdHJhbnNsYXRpb25fdW5pdF9kZWNscyk6IE5ldy4KCShjX3dyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnMpOiBOZXcuCgkoY19yZXNldF9zdGF0ZSk6IE5ldy4KCShpbXBsaWNpdGx5X2RlY2xhcmUpOiBIYW5kbGUgVFJBTlNMQVRJT05fVU5JVF9ERUNMLgoJKiBjLWxhbmcuYyAoTEFOR19IT09LU19XUklURV9HTE9CQUxTKTogTmV3LgoJKiBjLW9iamMtY29tbW9uLmMgKGNfY2Fubm90X2lubGluZV90cmVlX2ZuKTogSGFuZGxlCglUUkFOU0xBVElPTl9VTklUX0RFQ0wuCgkoY19vYmpjX2NvbW1vbl9maW5pc2hfZmlsZSk6IENhbGwgbWVyZ2VfdHJhbnNsYXRpb25fdW5pdF9kZWNscy4KCSogYy1vcHRzLmMgKGluX2ZuYW1lcyk6IFJlbmFtZSBmcm9tIGluX2ZuYW1lLgoJKGNfY29tbW9uX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgbXVsdGlwbGUgaW5wdXQgZmlsZW5hbWVzLgoJKGNfY29tbW9uX3Bvc3Rfb3B0aW9ucyk6IExpa2V3aXNlLgoJKGNfY29tbW9uX3BhcnNlX2ZpbGUpOiBMaWtld2lzZTsgYWxzbywgY2FsbCBjX3BhcnNlX2ZpbGUgcmF0aGVyIHRoYW4KCXl5cGFyc2UuCgkqIGMtcGFyc2UuaW46IE1vdmUgY2xlYW51cCBjb2RlIHRvIGNfcGFyc2VfZmlsZS4KCShmcmVlX3BhcnNlcl9zdGFja3MpOiBNb3ZlIGNvbnRlbnRzIHRvIGNfcGFyc2VfZmlsZS4KCShjX3BhcnNlX2ZpbGUpOiBOZXcuCgkqIGMtdHJlZS5oICh1bmlvbiBsYW5nX3RyZWVfbm9kZSk6IENoYWluIGFsb25nIFRZUEVfTkVYVF9WQVJJQU5UCglmb3IgaW50ZWdlciB0eXBlcy4KCShDX0RFQ0xfRklMRV9TQ09QRSk6IE5ldy4KCShmaW5pc2hfZmlsZSk6IE1vdmUgcHJvdG90eXBlIHRvIGMtY29tbW9uLmguCgkobWVyZ2VfdHJhbnNsYXRpb25fdW5pdF9kZWNscyk6IE5ldyBwcm90b3R5cGUuCgkoY29tcHR5cGVzKTogQWRkIGV4dHJhIHBhcmFtZXRlciB0byBwcm90b3R5cGUuCgkoY193cml0ZV9nbG9iYWxfZGVjbGFyYXRpb25zKTogTmV3IHByb3RvdHlwZS4KCSogYy10eXBlY2suYyAodGFnZ2VkX3R5cGVzX3R1X2NvbXBhdGlibGVfcCk6IE5ldy4KCShmdW5jdGlvbl90eXBlc19jb21wYXRpYmxlX3ApOiBBZGQgZXh0cmEgcGFyYW1ldGVyLCBjaGFuZ2UgYWxsIGNhbGxlcnMuCgkodHlwZV9saXN0c19jb21wYXRpYmxlX3ApOiBMaWtld2lzZS4KCShjb21wdHlwZXMpOiBMaWtld2lzZS4KCShzdHJ1Y3QgdGFnZ2VkX3R1X3NlZW4pOiBOZXcuCgkodGFnZ2VkX3R1X3NlZW5fYmFzZSk6IE5ldy4KCShidWlsZF91bmFyeV9vcCk6IEhhbmRsZSBUUkFOU0xBVElPTl9VTklUX0RFQ0wuCgkoY19tYXJrX2FkZHJlc3NhYmxlKTogUmVtb3ZlICNpZiAwIGNvZGUuCgkqIGNhbGxzLmMgKHNwZWNpYWxfZnVuY3Rpb25fcCk6IEhhbmRsZSBUUkFOU0xBVElPTl9VTklUX0RFQ0wsIGFkZAoJY29tbWVudCBleHBsYWluaW5nIHdoeSBpdCBzaG91bGRuJ3QgaGF2ZSB0by4KCSogY2dyYXBoLmggKHN0cnVjdCBjZ3JhcGhfbm9kZSk6IEFkZCBjaGFpbl9uZXh0IGFuZCBjaGFpbl9wcmV2IEdUWQoJb3B0aW9ucy4KCSogY3BwaW5pdC5jIChjcHBfcmVhZF9uZXh0X2ZpbGUpOiBOZXcuCgkoY3BwX3JlYWRfbWFpbl9maWxlKTogVXNlIGl0LgoJKiBjcHBsaWIuYyAodW5kZWZpbmVfbWFjcm9zKTogTmV3LgoJKGNwcF91bmRlZl9hbGwpOiBOZXcuCgkqIGNwcGxpYi5oIChjcHBfcmVhZF9uZXh0X2ZpbGUpOiBQcm90b3R5cGUuCgkoY3BwX3VuZGVmX2FsbCk6IFByb3RvdHlwZS4KCSogbGFuZ2hvb2tzLWRlZi5oICh3cml0ZV9nbG9iYWxfZGVjbGFyYXRpb25zKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogdG9wbGV2LmggKHdyaXRlX2dsb2JhbF9kZWNsYXJhdGlvbnMpOiBBZGQgcHJvdG90eXBlLgoJKiB0cmVlLmMgKGRlY2xfdHlwZV9jb250ZXh0KTogVXNlIHN3aXRjaCBzdGF0ZW1lbnQsIGhhbmRsZQoJVFJBTlNMQVRJT05fVU5JVF9ERUNMLgoJKiB0cmVlLmRlZjogVXBkYXRlIGRvY3VtZW50YXRpb24gZm9yIFRSQU5TTEFUSU9OX1VOSVRfREVDTC4KCShUUkFOU0xBVElPTl9VTklUX0RFQ0wpOiBOZXcga2luZCBvZiB0cmVlLgoJKiB0cmVlLmg6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIGZvciBUUkFOU0xBVElPTl9VTklUX0RFQ0wuCgkqIE1ha2VmaWxlLmluIChjLWRlY2wubyk6IEFkZCAkKEhBU0hUQUJfSCkgdG8gZGVwZW5kZW5jaWVzLgoJKiBkb2MvaW52b2tlLnRleGk6IE1ha2UgYXR0ZW1wdCB0byBkb2N1bWVudCBuZXcgZnVuY3Rpb25hbGl0eS4KCgkyMDAzLTA1LTE5ICBQZXIgQm90aG5lciA8Ym90aG5lckBhcHBsZS5jb20+CgoJKiBnY2MuYyAoY29tYmluZV9pbnB1dHMpOiBOZXcuCgkocHJvY2Vzc19jb21tYW5kKTogU2V0IGNvbWJpbmVfaW5wdXRzLgoJKGRvX3NwZWNfMSk6IEhhbmRsZSBjb21iaW5lX2lucHV0cy4KCShtYWluKTogTGlrZXdpc2UuCgoyMDAzLTA3LTEwICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkB0dWxpcHRyZWUub3JnPgoKCVBSIG9wdGltaXphdGlvbi85NzQ1CgkqIGxvb3AuYyAobG9vcF9pdl9hZGRfbXVsdF9lbWl0X2JlZm9yZSk6IENhbGwgbG9vcF9yZWdzX3VwZGF0ZSBiZWZvcmUKCWxvb3BfaW5zbl9lbWl0X2JlZm9yZS4KCShsb29wX2l2X2FkZF9tdWx0X3NpbmssIGxvb3BfaXZfYWRkX211bHRfaG9pc3QpOiBMaWtld2lzZS4KCjIwMDMtMDctMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcHBjaGFyc2V0LmM6IEZpeCBjb21tZW50LgoJKGljb252X2Nsb3NlIFshSEFWRV9JQ09OVl0pOiAjZGVmaW5lIHRvICh2b2lkKTAgdG8gcHJldmVudCB3YXJuaW5nLgoJKEVJTFNFUSk6ICNkZWZpbmUgdG8gRUlOVkFMIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuCgkoY29udmVydF91c2luZ19pY29udik6ICNpZiBvdXQgd2hlbiAhSEFWRV9JQ09OVi4KCShpbml0X2ljb252X2Rlc2MpOiBIYW5kbGUgIUhBVkVfSUNPTlYgaGVyZS4uLgoJKGNwcF9pbml0X2ljb252KTogLi4ubm90IGhlcmUuCgoyMDAzLTA3LTExICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjb21tb24ub3B0OiBNb3JlIC0taGVscCBtZXNzYWdlcy4KCSogb3B0cy5jIChwcmludF9oZWxwKTogVXNlIHB1dHMoKS4KCSogdG9wbGV2LmMgKGZfb3B0aW9ucyk6IFJlbW92ZSBoZWxwIHRleHQuCgkoZGlzcGxheV9oZWxwKTogRG9uJ3QgZHVtcCBmX29wdGlvbnMuCgoyMDAzLTA3LTExICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogRHJvcCByZWZlcmVuY2UgdG8gdW5zdXBwb3J0ZWQgYWxwaGEtKi1pbnRlcml4Ki4KCU1vdmUgaT84Ni0qLWludGVyaXgqIHRvIHRoZSBkb24ndC1maXggbGlzdC4KCSogZml4aW5jL2ZpeGluYy5pbnRlcml4OiBEZWxldGUgd2l0aCBleHRyZW1lIHByZWp1ZGljZS4KCjIwMDMtMDctMTAgIERhcmEgSGF6ZWdoaSAgPGRoYXplZ2hpQHlhaG9vLmNvbT4KCglQUiBib290c3RyYXAvMTA3NTgKCSogZG9jL2luc3RhbGwudGV4aTogRG9jdW1lbnQgcmVxdWlyZW1lbnRzIGZvciBpYTY0LSotaHB1eCogdGFyZ2V0LgoKMjAwMy0wNy0xMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvaWE2NC9ocHV4LmggKFRBUkdFVF9DOTlfRlVOQ1RJT05TKTogRGVmaW5lLgoKMjAwMy0wNy0xMCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwcGNoYXJzZXQuYyAob25lX3V0ZjhfdG9fY3BwY2hhciwgb25lX2NwcGNoYXJfdG9fdXRmOCwKCW9uZV91dGY4X3RvX3V0ZjMyLCBvbmVfdXRmMzJfdG9fdXRmOCwgb25lX3V0ZjhfdG9fdXRmMTYsCglvbmVfdXRmMTZfdG9fdXRmOCwgY29udmVyc2lvbl9sb29wLCBjb252ZXJ0X3V0ZjhfdXRmMTYsCgljb252ZXJ0X3V0ZjhfdXRmMzIsIGNvbnZlcnRfdXRmMTZfdXRmOCwJY29udmVydF91dGYzMl91dGY4LAoJY29udmVydF9ub19jb252ZXJzaW9uLCBjb252ZXJ0X3VzaW5nX2ljb252KTogTmV3IGZ1bmN0aW9ucy4KCShBUFBMWV9DT05WRVJTSU9OKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBjb252ZXJzaW9uLCBjb252ZXJzaW9uX3RhYik6IE5ldyBkYXRhIHN0cnVjdHVyZS4KCShpbml0X2ljb252X2Rlc2MpOiBDaGVjayBjb252ZXJzaW9uX3RhYiBmb3IgYSBjdXN0b20gY29udmVyc2lvbgoJcHJpbWl0aXZlIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGljb252LgoJKGNvbnZlcnRfY3NldCk6IERlbGV0ZWQuCgkoY3BwX2luaXRfaWNvbnYpOiBVc2UgVVRGLSB0ZXJtaW5vbG9neSwgbm90IFVDUy0uCgkoX2NwcF9kZXN0cm95X2ljb252KTogVXBkYXRlIHRvIG1hdGNoLgoJKF9jcHBfdmFsaWRfdWNuKTogV2UgZG9uJ3QgbmVlZCBpY29udiB0byBpbXBsZW1lbnQgVUNOcy4KCShjb252ZXJ0X3Vjbik6IFVzZSBvbmVfY3BwY2hhcl90b191dGY4IGFuZCBBUFBMWV9DT05WRVJTSU9OLgoJKGNvbnZlcnRfZXNjYXBlLCBjcHBfaW50ZXJwcmV0X3N0cmluZyk6IFVzZSBBUFBMWV9DT05WRVJTSU9OLgoJKF9jcHBfaW50ZXJwcmV0X3N0cmluZ19ub3RyYW5zbGF0ZSk6IE5ldyBmdW5jdGlvbiwgbW92ZWQgaGVyZQoJZnJvbSBjcHBsaWIuYy4KCgkqIGNwcGhhc2guaCAoY29udmVydF9mLCBzdHJ1Y3QgY3NldF9jb252ZXJ0ZXIpOiBOZXcgdHlwZXMuCgkoc3RydWN0IGNwcF9yZWFkZXIpOiBuYXJyb3dfY3NldF9kZXNjIGFuZCB3aWRlX2NzZXRfZGVzYwoJYXJlIG5vdyBzdHJ1Y3QgY3NldF9jb252ZXJ0ZXIsIG5vdCBiYXJlIGljb252X3QuCglVcGRhdGUgcHJvdG90eXBlcy4KCSogY3BwbGliLmMgKGludGVycHJldF9zdHJpbmdfbm90cmFuc2xhdGUpOiBNb3ZlZCB0byBjcHBjaGFyc2V0LmM7CglhbGwgY2FsbGVycyBjaGFuZ2VkLgoKMjAwMy0wNy0xMCAgS2VsbGV5IENvb2sgIDxrZWxsZXljb29rQHdpZGVvcGVud2VzdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAob3B0aW9ucy5oKTogRGVwZW5kIG9uIE1ha2VmaWxlLiAgQWRkIG1vdmUtaWYtY2hhbmdlCgl0byBvcHRzLnNoIGNvbW1hbmQgbGluZS4KCSogb3B0cy5zaDogV3JpdGUgdG8gdGVtcG9yYXJ5IGZpbGVzIHdpdGggYSBtb3ZlLWlmLWNoYW5nZSBhdCB0aGUgZW5kLgoKMjAwMy0wNy0xMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCSAgICBSaWNoYXJkIEtlbm5lciA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjb21iaW5lLmMgKGdlbl9iaW5hcnkpOiBIYW5kbGUgdGhlIENMT0JCRVIgcnR4IGFuZAoJZG9uJ3QgYnVpbGQgYSBiaW5hcnkgb3BlcmF0aW9uIHdpdGggaXQuCgoyMDAzLTA3LTEwICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBnY3NlLmMgKGxvYWRfa2lsbHNfc3RvcmUsIGZpbmRfbG9hZHMsIHN0b3JlX2tpbGxlZF9pbl9pbnNuLAoJc3RvcmVfa2lsbGVkX2FmdGVyLCBzdG9yZV9raWxsZWRfYmVmb3JlKTogS2VlcCB0cmFjayBvZiB0aGUgY29ycmVjdAoJZGVwZW5kZW5jeSBmdW5jdGlvbiB0byB1c2UuCgoyMDAzLTA3LTEwICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgkqIHRvcGxldi5jIChkb19jb21waWxlKTogRG9uJ3QgdHJ5IHRvIG9wZW4gZHVtcCBmaWxlcyBiZWZvcmUKCWxhbmdfZGVwZW5kZW50X2luaXQgaW5pdGlhbGl6ZXMgZHVtcF9iYXNlX25hbWUuCgoyMDAzLTA3LTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1faW5pdF9pd21teHRfYnVpbHRpbnMsIGFybV9leHBhbmRfYnVpbHRpbik6CglVc2UgQVJSQVlfU0laRS4KCSogY29uZmlnL2Zydi9mcnYuYyAoZnJ2X2V4cGFuZF9idWlsdGluKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9tZWRpYV9pbml0X2J1aWx0aW5zKTogTGlrZXdpc2UuCgoyMDAzLTA3LTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xMDAzMgoJKiBkb2MvaW52b2tlLnRleGkgKEMrKyBEaWFsZWN0IE9wdGlvbnMpOiBDaGFuZ2UgZG9jdW1lbnRhdGlvbiBvZgoJLWZwZXJtaXNzaXZlLgoKMjAwMy0wNy0xMCAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN1cGVyaC5jb20+CgoJKiB0bS50ZXhpIChSRVRVUk5fQUREUl9PRkZTRVQpOiBEb2N1bWVudC4KCjIwMDMtMDctMTAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnY292LWlvLmg6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKEdDT1ZfVU5TSUdORUQyU1RSSU5HKTogTmV3LgoJKEdDT1ZfVEFHX0ZVTkNUSU9OX0xFTkdUSCwgR0NPVl9UQUdfQkxPQ0tTX0xFTkdUSCwKCUdDT1ZfVEFHX0FSQ1NfTEVOR1RILCBHQ09WX1RBR19DT1VOVEVSX0xFTkdUSCwKCUdDT1ZfVEFHX1NVTU1BUllfTEVOR1RIKTogQWRqdXN0LgoJKEdDT1ZfVEFHX0JMT0NLU19OVU0sIEdDT1ZfVEFHX0FSQ1NfTlVNLAoJR0NPVl9UQUdfQ09VTlRFUl9OVU0pOiBOZXcuCgkoR0NPVl9CTE9DS19TSVpFKTogTnVtYmVyIG9mIHdvcmRzLgoJKGdjb3ZfdmFyKTogQWRqdXN0IGJ1ZmZlciB0eXBlLgoJKiBnY292LWlvLmMgKGdjb3Zfd3JpdGVfYnl0ZXMsIGdjb3ZfcmVhZF9ieXRlcyk6IFJlbmFtZSB0byAuLi4KCShnY292X3dyaXRlX3dvcmRzLCBnY292X3JlYWRfd29yZHMpOiAuLi4gaGVyZS4gVGFrZSBhIDQtYnl0ZSB3b3JkCgljb3VudCwgbm90IGJ5dGUgY291bnQuCgkoZ2Nvdl9vcGVuKTogQWRqdXN0IG92ZXJyZWFkIGluaXQuCgkoZ2Nvdl9hbGxvY2F0ZSwgZ2Nvdl93cml0ZV91bnNpZ25lZCwgZ2Nvdl93cml0ZV9jb3VudGVyLAoJZ2Nvdl93cml0ZV9zdHJpbmcsIGdjb3Zfd3JpdGVfdGFnLCBnY292X3dyaXRlX2xlbmd0aCwKCWdjb3Zfd3JpdGVfdGFnX2xlbmd0aCk6IEFkanVzdC4KCShnY292X3JlYWRfdW5zaWduZWQsIGdjb3ZfcmVhZF9jb3VudGVyLCBnY292X3JlYWRfc3RyaW5nKTogQWRqdXN0LgoJKGdjb3Zfc3luYywgZ2Nvdl9zZWVrKTogQWRqdXN0LgoJKiBnY292LWR1bXAuYyAocHJpbnRfdXNhZ2UpOiBTaG93IGdjYyB2ZXJzaW9uIG9ubHkuCgkoZHVtcF9maWxlKTogVXNlIEdDT1ZfVU5TSUdORUQyU1RSSU5HLgoJKHRhZ19ibG9ja3MsIHRhZ19hcmNzLCB0YWdfY291bnRlcnMpOiBVc2UgR0NPVl9UQUdfKl9OVU0gbWFjcm9zLgoJKiBnY292LmMgKHByaW50X3ZlcnNpb24pOiBTaG93IGdjYyB2ZXJzaW9uIG9ubHkuCgkocmVhZF9ncmFwaF9maWxlKTogVXNlIEdDT1ZfVU5TSUdORUQyU1RSSU5HLiBVc2UKCUdDT1ZfVEFHXypfTlVNIG1hY3Jvcy4KCShyZWFkX2NvdW50X2ZpbGUpOiBVc2UgR0NPVl9VTlNJR05FRDJTVFJJTkcuIFVzZQoJR0NPVl9UQUdfQ09VTlRFUl9MRU5HVEguCgkqIGNvdmVyYWdlLmMgKHJlYWRfY291bnRzX2ZpbGUpOiBVc2UgR0NPVl9VTlNJR05FRDJTVFJJTkcuCglVc2UgR0NPVl9UQUdfQ09VTlRFUl9OVU0uCgkqIGxpYmdjb3YuYyAoZ2Nvdl92ZXJzaW9uKTogVXNlIEdDT1ZfVU5TSUdORUQyU1RSSU5HLgoJKF9fZ2Nvdl9tZXJnZV9zaW5nbGUsIF9fZ2Nvdl9tZXJnZV9kZWx0YSk6IFVzZSBHQ09WX0NIRUNLLgoKMjAwMy0wNy0xMCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGdjb3YtZHVtcC5jIChkdW1wX2ZpbGUpOiBGaXggbWlzc2luZyBhZGRyZXNzIG9wZXJhdG9yLgoKMjAwMy0wNy0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCglQUiBjLzExNDQ5CgkqIGZvbGQtY29uc3QuYyAoc2lnbl9iaXRfcCk6IFJldHVybiBFWFAgaWYgVkFMIGlzIHRoZSBzaWduIGJpdAoJb2YgSE9TVF9XSURFX0lOVC4KCShmb2xkX3NpbmdsZV9iaXRfdGVzdCk6IElmIHNpZ25fYml0X3AoKSBmYWlscywgYXNzdW1lIHRoYXQgdGhlCgliaXQgYmVpbmcgdGVzdGVkIGlzIG5vdCBhIHNpZ24gYml0LgoKMjAwMy0wNy0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAoYSBwZWVwaG9sZTIpOiBOZXcuCgoyMDAzLTA3LTEwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkyMDAxLTEyLTEzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnL21uMTAzMDAvbGludXguaCAoTElOS19TUEVDKTogUmVuYW1lIHRoZSBkeW5hbWljIGxpbmtlcgoJZnJvbSBsZC1saW51eC5zby4yIHRvIGxkLnNvLjEuCgkyMDAxLTExLTE4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnL21uMTAzMDAvbGludXguaCAoTElOS19TUEVDKTogLWxwdGhyZWFkLCBub3QgLWx0aHJlYWQuCgkqIGNvbmZpZy9tbjEwMzAwL2xpbnV4LmggKExJTktfU1BFQyk6IERvbid0IGhhbmRsZSAtV2wsLXJwYXRoCglub3IgLVdsLC1ycGF0aC1saW5rLgoJKExJQl9TUEVDKTogQWRkIC1ycGF0aC1saW5rIGlmICFzdGF0aWMuCgkyMDAxLTA4LTIyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChtbjEwMzAwX3Byb3RlY3RfbGFiZWwpOiBOZXcKCXZhcmlhYmxlLgoJKiBjb25maWcvbW4xMDMwMC9saW51eC5oIChQUklOVF9PUEVSQU5ELAoJUFJJTlRfT1BFUkFORF9BRERSRVNTKTogU2V0IGl0IGR1cmluZyB0aGVpciBleGVjdXRpb24uCgkoQVNNX09VVFBVVF9MQUJFTFJFRik6IE91dHB1dCBgKycgYmVmb3JlIHN5bWJvbCBuYW1lIGlmCgltbjEwMzAwX3Byb3RlY3RfbGFiZWwgaXMgc2V0LgoJKiBjb25maWcvbW4xMDMwMC9saW51eC5oIChMSU5LX1NQRUMpOiBSZWNvZ25pemUgLVdsLC1ycGF0aCBhbmQKCS1XbCwtcnBhdGgtbGluay4KCShMSUJfU1BFQywgU1RBUlRGSUxFX1NQRUMpOiBEZWZpbmUuCgkyMDAxLTA1LTExICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnL21uMTAzMDAvdC1saW51eCAoZHAtYml0LmMsIGZwLWJpdC5jKTogRG9uJ3QgZGVmaW5lCglGTE9BVF9CSVRfT1JERVJfTUlTTUFUQ0guCgkyMDAxLTA1LTA5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnLmdjYyAoYW0zM18yLjAtKi1saW51eCopOiBBZGRlZC4KCSogY29uZmlnL21uMTAzMDAvbGludXguaDogTmV3LgoJKiBjb25maWcvbW4xMDMwMC90LWxpbnV4OiBOZXcuCgoyMDAzLTA3LTEwICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBmb2xkLWNvbnN0LmM6IFByb3Blcmx5IHdyYXAgcHJvdG90eXBlcy4KCjIwMDMtMDctMDkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCTIwMDMtMDYtMTYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKG1uMTAzMDBfdW5zcGVjX2ludF9sYWJlbF9jb3VudGVyKToKCU1vdmVkIGZyb20uLi4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAoR09UYWRkcjJwaWNyZWcpOiAuLi4gaGVyZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oOiBHVFktZGVjbGFyZSBpdC4KCTIwMDMtMDYtMTEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKG1uMTAzMDBfZW5jb2RlX3NlY3Rpb25faW5mbyk6IEZpeAoJcHJvdG90eXBlLiAgVXNlIGluY29taW5nIFJUTCBhcmd1bWVudC4KCTIwMDItMTItMTIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChpbnRfbGFiZWwpOiBNb3ZlIEMgc3RhdGVtZW50cy4uLgoJKEdPVGFkZHIycGljcmVnKTogLi4uIGhlcmUuCgkyMDAyLTA4LTE1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChFTkNPREVfU0VDVElPTl9JTkZPKTogTW92ZS4uLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKG1uMTAzMDBfZW5jb2RlX3NlY3Rpb25faW5mbyk6CgkuLi4gaGVyZS4gIE5ldyBmdW5jdGlvbi4KCShUQVJHRVRfRU5DT0RFX1NFQ1RJT05fSU5GTyk6IERlZmluZSB0byBpdC4KCTIwMDEtMTEtMDQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChidWlsdGluX3NldGptcF9yZWNlaXZlcik6IEZpeCB0eXBvIGluCglwYXR0ZXJuIG5hbWUuCgkobW4xMDMwMF9sb2FkUEMpOiBEZWZpbmUgYXMgaW5zbiBzcGxpdHRhYmxlIGFmdGVyIHJlbG9hZC4KCTIwMDEtMDUtMTMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvc2gvbW4xMDMwMC5oIChKVU1QX1RBQkxFU19JTl9URVhUX1NFQ1RJT04pOiBMZXQgdGhlbQoJYmUgZGVmaW5lZCBpbiAucm9kYXRhIGV2ZW4gaW4gUElDLCBub3cgdGhhdCB0aGUgYXNzZW1ibGVyCglzdXBwb3J0cyB0aGF0LgoJMjAwMS0wNS0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoR09UX1NZTUJPTF9OQU1FKTogRG9uJ3QgbGV0IHRoZQoJc3ltYm9sIHRha2UgYW4gdW5kZXJzY29yZSBwcmVmaXguCgkyMDAxLTA0LTE0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC1wcm90b3MuaCAobGVnaXRpbWF0ZV9waWNfb3BlcmFuZF9wLAoJbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IERlY2xhcmUuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBNYXJrCgl0aGUgUElDIHJlZ2lzdGVyIGFzIGZpeGVkLgoJKEVYVFJBX0NPTlNUUkFJTlQpOiBNYXRjaCBVTlNQRUNfUExUIGFuZCBVTlNQRUNfUElDIGZvciAnUycuCgkoR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogUmVxdWlyZSBsZWdpdGltYXRlX3BpY19vcGVyYW5kIGZvcgoJUElDLgoJKExFR0lUSU1BVEVfUElDX09QRVJBTkRfUCk6IERlZmluZS4KCShQSUNfT0ZGU0VUX1RBQkxFX1JFR05VTSk6IERlZmluZS4KCShHT1RfU1lNQk9MX05BTUUpOiBEZWZpbmUuCgkoU1lNQk9MSUNfQ09OU1RfUCk6IERlZmluZS4KCShFTkNPREVfU0VDVElPTl9JTkZPKTogVXNlIFNZTUJPTF9SRUZfRkxBRyB0byBtYXJrIGxvY2FsCglzeW1ib2xzLgoJKE1OMTAzMDBfR0xPQkFMX1ApOiBUZXN0IGl0LgoJKE9VVFBVVF9BRERSX0NPTlNUX0VYVFJBKTogSGFuZGxlIFBJQy1yZWxhdGVkIHVuc3BlY3MuCgkoSlVNUF9UQUJMRVNfSU5fVEVYVF9TRUNUSU9OKTogRW5hYmxlIGZvciBQSUMuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAocHJpbnRfb3BlcmFuZCk6IEhhbmRsZSB1bnNwZWMuCgkoZXhwYW5kX3Byb2xvZ3VlKTogU2V0IFBJQyByZWdpc3Rlci4KCShjYWxsX2FkZHJlc3Nfb3BlcmFuZCk6IERvbid0IG1hdGNoIFNZTUJPTF9SRUZzIGluIFBJQy4KCShsZWdpdGltaXplX2FkZHJlc3MpOiBDYWxsIGxlZ2l0aW1pemVfcGljX2FkZHJlc3MuCgkobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IE5ldyBmbi4KCShsZWdpdGltYXRlX3BpY19vcGVyYW5kX3ApOiBOZXcgZm4uCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKFBJQ19SRUcsIFNQX1JFRyk6IE5ldyBjb25zdGFudHMuCgkoVU5TUEVDX0lOVF9MQUJFTCwgVU5TUEVDX1BJQywgVU5TUEVDX0dPVCwgVU5TUEVDX0dPVE9GRiwKCVVOU1BFQ19QTFQpOiBOZXcgY29uc3RhbnRzLgoJKHBvcF9waWNfcmVnKTogTmV3IGluc24uCgkobW92c2kpOiBBZGp1c3Qgbm9uLVBJQyBhZGRyZXNzZXMuCgkoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBSZXN0b3JlIHRoZSBQSUMgcmVnaXN0ZXIuCgkoY2FzZXNpKTogTmV3IGluc24uCgkoY2FsbCk6IEFkanVzdCBub24tUElDIGFkZHJlc3Nlcy4KCShpbnRfbGFiZWwsIEdPVGFkZHIycGljcmVnKTogTmV3IGV4cGFuZHMuCgkoYW0zM19sb2FkUEMpOiBOZXcgaW5zbi4KCShtbjEwMzAwX2xvYWRQQyk6IE5ldyBleHBhbmQuCgkoY2FsbF9uZXh0X2luc24pOiBOZXcgaW5zbi4KCShhZGRfR09UX3RvX3BpY19yZWcpOiBOZXcgZXhwYW5kLgoJKHN5bUdPVDJyZWcsIHN5bUdPVDJyZWdfaSk6IE5ldyBleHBhbmRzLgoJKHN5bUdPVE9GRjJyZWcsIHN5bUdPVE9GRjJyZWdfaSk6IE5ldyBleHBhbmRzLgoJKHN5bTJQSUMsIHN5bTJQTFQpOiBOZXcgZXhwYW5kcy4KCjIwMDMtMDctMDkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChQUkVESUNBVEVfQ09ERVMpOiBEZWZpbmUuCgkyMDAxLTA1LTAxICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAoc3FydHNmMik6IGZsYWdfZmFzdF9tYXRoIHdhcyByZW5hbWVkCgl0byBmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMuCgkyMDAxLTA0LTE0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChleHBhbmRfcHJvbG9ndWUpOiBNYXJrCglGUC1yZWdpc3Rlci1zYXZpbmcgaW5zbnMgYXMgZnJhbWUtcmVsYXRlZC4KCTIwMDEtMDItMTMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMKCShtbjEwMzAwX2dldF9saXZlX2NhbGxlZV9zYXZlZF9yZWdzKTogRG9uJ3Qgc2VhcmNoIHBhc3QKCUxBU1RfRVhURU5ERURfUkVHTlVNLgoJKG1uMTAzMDBfZ2VuX211bHRpcGxlX3N0b3JlLCBzdG9yZV9tdWx0aXBsZV9vcGVyYXRpb24pOiBMaWtld2lzZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZDogUmVtb3ZlIGV4Y2Vzc2l2ZSBsaW5lIGJyZWFrcyBmcm9tCglgQCcgb3V0cHV0IHBhdHRlcm5zIHRoYXQgd2VyZSBhY2NvdW50ZWQgYXMgYWRkaXRpb25hbAoJYWx0ZXJuYXRpdmVzLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kLCBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmM6CglSZS1pbnRyb2R1Y2UgY2hhbmdlcyBhY2NpZGVudGFsbHkgcmVtb3ZlZCBpbiBSaWNoYXJkIFNhbmRpZm9yZCdzCgkyMDAwLTEyLTA1J3MgcGF0Y2guCgkqIGNvbmZpZy9tbjEwMzAwL3QtbW4xMDMwMCAoTVVMVElMSUJfT1BUSU9OUywgTVVMVElMSUJfRElSTkFNRVMpOgoJUmUtaW5zdGF0ZSBhbTMzLTIgbG9zdCBpbiBtZXJnZSBmcm9tIG5ldCBHQ0MuCgkyMDAwLTA4LTI2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChEQlhfUkVHSVNURVJfTlVNQkVSKTogQWRkZWQKCWZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4KCTIwMDAtMDgtMDcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChtb3ZkZik6IFJldmVydCBzb21lIGFtMzMtc3BlY2lmaWMKCXBlc3NpbWl6YXRpb25zIHRoYXQgaGFkIGdvbmUgaW4gb24gMjAwMC0wNS0wOC4KCTIwMDAtMDYtMjggIEdyYWhhbSBTdG90dCAgPGdyYWhhbXNAY3lnbnVzLmNvLnVrPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKFJFR19DTEFTU19DT05URU5UUyk6IEZpeCB0eXBvLgoJMjAwMC0wNi0yMiAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0BjeWdudXMuY28udWs+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKG1vdnFpKTogVXNlIG5vbmltbWVkaWF0ZV9vcGVyYW5kIGZvcgoJb3BlcmFuZCAwLgoJKiAobW92aGkpOiBMaWtld2lzZS4KCSogKG1vdnNpKTogTGlrZXdpc2UuCgkqIChtb3ZzZik6IExpa2V3aXNlLgoJKiAobW92ZGkpOiBMaWtld2lzZS4KCSogKG1vdmRmKTogTGlrZXdpc2UuCgkyMDAwLTA1LTI0ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChmcF9yZWdzX3RvX3NhdmUpOiBOZXcgZnVuY3Rpb24uCgkoY2FuX3VzZV9yZXR1cm5faW5zbiwgaW5pdGlhbF9vZmZzZXQpOiBBZGQgZnBfcmVnc190b19zYXZlLgoJKGV4cGFuZF9wcm9sb2d1ZSwgZXhwYW5kX2VwaWxvZ3VlKTogU2F2ZSBhbmQgcmVzdG9yZSBGUCByZWdzLgoJMjAwMC0wNS0yMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKG1vdmRpLCBtb3ZkZik6IDY0LWJpdCBjbGVhbi11cC4KCTIwMDAtMDUtMTMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChhYnNzZjIsIG5lZ3NmMiwgcnNxcnRzZjIsIGFkZHNmMywKCXN1YnNmMywgbXVsc2YzLCBkaXZzZjMsIGZtYWRkc2Y0LCBmbXN1YnNmNCwgZm5tYWRkc2Y0LCBmbm1zdWJzZjQpOgoJRG8gbm90IGNsb2JiZXIgY2MwLgoJMjAwMC0wNS0xMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKGFic3NmMiwgbmVnc2YyLCByc3FydHNmMik6CglEaXNjb3VyYWdlIHRoZSB0d28tYXJndW1lbnQsIGxvbmdlciBvcGNvZGVzLgoJKGFkZHNmMywgc3Vic2YzLCBtdWxzZjMsIGRpdnNmMyk6IExpa2V3aXNlIGZvciB0aHJlZS1hcmd1bWVudAoJb25lcy4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChzdHJ1Y3QgbW4xMDMwMF9jY19zdGF0dXNfbWRlcCk6IE5ldy4KCShDQ19TVEFUVVNfTURFUCwgQ0NfU1RBVFVTX01ERVBfSU5JVCk6IERlZmluZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAoY21wc2YpOiBOZXcgcGF0dGVybi4KCShicmFuY2gpOiBUZXN0IG1kZXAuZnBDQyBhbmQgb3V0cHV0IGZiQ0MuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAocHJpbnRfb3BlcmFuZCk6IE91dHB1dCBjb25kaXRpb25zLgoJKG5vdGljZV9jY191cGRhdGUpOiBSZWNvZ25pemUgZmNtcCBhbmQgc2V0IG1kZXAuZnBDQy4KCTIwMDAtMDUtMTAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLm1kIChtb3ZzZiwgbW92ZGYsIGFkZHNmMywgc3Vic2YzLAoJbXVsc2YzLCBkaXZzZjMpOiBVc2UgdGhlIGBGJyBjb25zdHJhaW50IGZvciBGUCB2YWx1ZXMuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAoY29uc3RfMWZfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC1wcm90b3MuaCAoY29uc3RfMWZfb3BlcmFuZCk6IERlY2xhcmUuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKHNxcnRzZjIpOiBOZXcgZXhwYW5kLgoJKHJzcXJ0c2YyKTogTmV3IGluc24uCgkyMDAwLTA1LTA5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAobW92ZGYpOiBPb3BzLCBJIG1pc3NlZCBpdCBpbiBteQoJcHJldmlvdXMgY2hlY2staW4uCgkyMDAwLTA1LTA4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAoYWJzc2YyLCBuZWdkZjIpOiBPbgoJVEFSR0VUX0FNMzNfMiwgZXhwYW5kIHRvLi4uCgkoYWJzc2YyX2FtMzNfMiwgbmVnZGYyX2FtMzNfMik6IE5ldyBpbnNucy4KCShhZGRzZjMsIHN1YnNmMywgbXVsc2YzLCBkaXZzZjMpOiBMaWtld2lzZS4KCShmbWFkZHNmNCwgZm1zdWJzZjQsIGZubWFkZHNmNCwgZm5tc3Vic2Y0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKG1vdnFpLCBtb3ZoaSwgbW92c2ksIG1vdnNmLAoJbW92ZGksIG1vdmRmKTogQWRkZWQgRlAgcmVncy4KCSogaW52b2tlLnRleGkgKC1tYW0zMy0yLCAtbW5vLWFtMzMtMik6IERvY3VtZW50LgoJMjAwMC0wNC0yOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoRklSU1RfRlBfUkVHTlVNLCBMQVNUX0ZQX1JFR05VTSk6CglOZXcgbWFjcm9zLgoJKFJFR05PX0FNMzNfMl9GUF9QKTogUmVuYW1lZCB0by4uLgoJKFJFR05PX0ZQX1ApOiBSZWRlZmluZSBpbiB0ZXJtcyBvZiBGSVJTVF8qIGFuZCBMQVNUXyouCgkoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UsIFJFR05PX1JFR19DTEFTUyk6IExpa2V3aXNlLgoJMjAwMC0wNC0yNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUkVHX0NMQVNTX0NPTlRFTlRTKTogUmVtb3ZlIEZQCglyZWdzIGZyb20gR0VORVJBTF9SRUdTLgoJMjAwMC0wNC0yNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoUkVHTk9fQU0zM18yX0ZQX1ApOiBOZXcgbWFjcm8uCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAobW4xMDMwMF9hZGRyZXNzX2Nvc3QpOiBBZGRlZCBGUF9SRUdTLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKFJFR0lTVEVSX01PVkVfQ09TVCk6IEFkZGVkIEZQX1JFR1MuCgkyMDAwLTA0LTIzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAY3lnbnVzLmNvbT4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChDTEFTU19DQU5OT1RfQ0hBTkdFX1NJWkUpOiBEZWZpbmVkCglhcyBGUF9SRUdTLgoJMjAwMC0wNC0yMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaCAoT0tfRk9SX1EpOiBOZXcgbWFjcm8uCgkoRVhUUkFfQ09OU1RSQUlOVCk6IEFkZGVkIE9LX0ZPUl9RLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKHNlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBBZGp1c3QuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAocHJpbnRfb3BlcmFuZCk6IFN1cHBvcnQgYEQnIGZvciBkb3VibGVzLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKEZJUlNUX1BTRVVET19SRUdJU1RFUik6IEFkanVzdC4KCShGSVhFRF9SRUdJU1RFUlMsIENBTExfVVNFRF9SRUdJU1RFUlMsIFJFR19BTExPQ19PUkRFUik6IEFkZGVkCglBTTMzLzIuMCBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMuCgkoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBBZGp1c3QuCgkoZW51bSByZWdfY2xhc3MsIFJFR19DTEFTU19OQU1FUyk6IEFkZGVkIEZQX1JFR1MgYW5kIEZQX0FDQ19SRUdTLgoJKFJFR19DTEFTU19DT05URU5UUywgUkVHTk9fUkVHX0NMQVNTKTogQWRqdXN0LgoJKFJFR19DTEFTU19GUk9NX0xFVFRFUik6IEFkZGVkIGBmJyBhbmQgYEEnLgoJKFJFR0lTVEVSX05BTUVTLCBBRERJVElPTkFMX1JFR0lTVEVSX05BTUVTKTogQWRqdXN0LgoJKiBjb25maWcvbW4xMDMwMC90LW1uMTAzMDAgKE1VTFRJTElCX09QVElPTlMpOiBBZGRlZCBhbTMzLTIuCgkoTVVMVElMSUJfRElSTkFNRVMpOiBMaWtld2lzZS4KCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5oIChDUFBfU1BFQyk6IERlZmluZSBgX19BTTMzX189MicgYW5kCglgX19BTTMzXzJfXycgd2hlbiBgLW1hbTMzLTInIGlzIGdpdmVuLgoJKFRBUkdFVF9BTTMzXzIpOiBEZWZpbmUuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRqdXN0LgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmMgKGFzbV9maWxlX3N0YXJ0KTogUHJpbnQgYC5hbTMzXzInCgl3aGVuIGFwcHJvcHJpYXRlLgoKMjAwMy0wNy0wOSAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogZG9jL2luc3RhbGwudGV4aTogQWRkIG1pc3NpbmcgQC4KCjIwMDMtMDctMDkgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5oIChDUlRfQ0FMTF9TVEFUSUNfRlVOQ1RJT04pOiBEZWZpbmUuCgoyMDAzLTA3LTA5ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJUFIvMTExNDQKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2Z1bmN0aW9uX2FyZ19ib3VuZGFyeSk6IFJlbW92ZSBhYm9ydC4KCjIwMDMtMDctMDkgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCVBSIGJvb3RzdHJhcC8xMTA0MwoJKiBjb25maWcvYXJjL3QtYXJjOiBSZXBsYWNlIGJvZ3VzIHJlZmVyZW5jZXMgdG8gIngtY3J0aW5pdC5vIiwKCSJ4LWNydGZpbmkubyIgd2l0aCAiY3J0aW5pdC5vIiwgImNydGZpbmkubyIuCgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChsaW1pdHNfaWZuZGVmcyk6IEFkZCBzZWxlY3QgdGVzdC4KCSogZml4aW5jL2ZpeGluY2wueDogUmVidWlsZC4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKG1hdGhfZXhjZXB0aW9uKTogIEltcHJvdmUgYnlwYXNzIGFuZCBjb21tZW50LgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWJ1aWxkLgoKMjAwMy0wNy0wOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogZG9jL2luc3RhbGwudGV4aSAoQ29uZmlndXJhdGlvbik6IERvY3VtZW50IHRoZSB2YWxncmluZCBvcHRpb24KCXRvIC0tZW5hYmxlLWNoZWNraW5nLgoKMjAwMy0wNy0wOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogb2JqYy1sYW5nLmMgKExBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19FU1RJTUFURV9OVU1fSU5TTlMpOiBOZXcuCgoyMDAzLTA3LTA5ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGMtbGV4LmMgKGNiX2lkZW50KTogQ2FzdCBjc3RyLnRleHQgdG8gY29uc3QgY2hhciAqLgoKMjAwMy0wNy0wOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdjb3YtaW8uaDogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkoR0NPVl9HUkFQSF9TVUZGSVgsIEdDT1ZfR1JBUEhfTUFHSUMpOiBSZW5hbWUgdG8gR0NPVl9OT1RFX1NVRkZJWCwKCUdDT1ZfTk9URV9NQUdJQy4KCShHQ09WX0RBVEFfU1VGRklYLCBHQ09WX05PVEVfU1VGRklYKTogVXBkYXRlLgoJKEdDT1ZfREFUQV9NQUdJQywgR0NPVl9OT1RFX01BR0lDKTogTWFrZSBub24tcGFsaW5kcm9taWMuCgkoc3RydWN0IGdjb3ZfdmFyKTogQ2hhbmdlIGJ1ZmZlcidzIHR5cGUuIEFkZCBlbmRpYW4gZmxhZy4KCShnY292X29wZW4pOiBSZW1vdmUgbW9kZSBpbiBsaWJnY292LgoJKGdjb3ZfbWFnaWMpOiBQcm90b3R5cGUuCgkqIGdjb3YtaW8uYyAoZnJvbV9maWxlKTogTmV3LgoJKGdjb3Zfb3Blbik6IENsZWFyIGVuZGlhbiBmbGFnLgoJKGdjb3ZfbWFnaWMpOiBOZXcuCgkoZ2Nvdl93cml0ZV9ieXRlcywgZ2Nvdl9yZWFkX2J5dGVzKTogUmV0dXJuIGdjb3ZfdW5zaWduZWRfdAoJcG9pbnRlcnMuCgkoZ2Nvdl93cml0ZV91bnNpZ25lZCwgZ2Nvdl93cml0ZV9jb3VudGVyLCBnY292X3dyaXRlX3N0cmluZywKCWdjb3Zfd3JpdGVfdGFnLCBnY292X3dyaXRlX2xlbmd0aCwgZ2Nvdl93cml0ZV90YWdfbGVuZ3RoKTogVXBkYXRlLgoJKGdjb3ZfcmVhZF91bnNpZ25lZCwgZ2Nvdl9yZWFkX2NvdW50ZXIsIGdjb3ZfcmVhZF9zdHJpbmcpOiBVcGRhdGUuCgkqIGdjb3YtaW92LmMgKG1haW4pOiBDb3JyZWN0IGNhc3QuCgkqIGNvdmVyYWdlLmMgKHJlYWRfY291bnRzX2ZpbGUpOiBVc2UgZ2Nvdl9tYWdpYy4gUmVtb3ZlIGVuZGlhbm5lc3MKCWNvbnZlcnNpb24uCgkoZ2Nvdl9iZWdpbl9vdXRwdXQpOiBVc2UgR0NPVl9OT1RFX01BR0lDLgoJKGNvdmVyYWdlX2luaXQpOiBVc2UgR0NPVl9OT1RFX1NVRkZJWC4KCSogbGliZ2Nvdi5jIChnY292X3ZlcnNpb25fbWlzbWF0Y2gpOiBSZW1vdmUgZW5kaWFubmVzcyBjb252ZXJzaW9uLgoJUmVuYW1lIHRvIGdjb3ZfdmVyc2lvbiwgYW5kIHJldHVybiBmbGFnLgoJKGdjb3ZfZXhpdCk6IFVzZSBnY292X3ZlcnNpb24uCgkoX19nY292X2luaXQpOiBVc2UgZ2Nvdl92ZXJzaW9uLgoJKiBNYWtlZmlsZS5pbiAoY292ZXJhZ2VleHRzKTogVXBkYXRlLgoJKiBnY292LmMgKHByaW50X3ZlcnNpb24pOiBSZW1vdmUgZW5kaWFubmVzcyBjb252ZXJzaW9uLgoJKGNyZWF0ZV9maWxlX25hbWVzKTogVXNlIEdDT1ZfTk9URV9TVUZGSVguCgkocmVhZF9ncmFwaF9maWxlKTogVXNlIGdjb3ZfbWFnaWMuCgkocmVhZF9jb3VudF9maWxlKTogTGlrZXdpc2UuCgkqIGdjb3YtZHVtcC5jIChkdW1wX2ZpbGUpOiBSZW1vdmUgZW5kaWFubmVzcyBjb252ZXJzaW9uLCB1c2UKCWdjb3ZfbWFnaWMuCgoyMDAzLTA3LTA5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmluIChCVUlMRF9QUkVGSVgsIEJVSUxEX1BSRUZJWF8xKTogU2V0IGlmIGVuYWJsZQoJY292ZXJhZ2UgaXMgb24uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIE1ha2VmaWxlLmluIChBTExfQ0ZMQUdTKTogQ29ycmVjdCBpdHMgY29tbWVudC4KCjIwMDMtMDctMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKG1ha2VfcmFuZ2UpOiBEbyBub3QgYWNjZXNzIG9wZXJhbmQgMSBmb3IgYQoJemVyby1vcGVyYW5kIG9wZXJhdG9yLgoKMjAwMy0wNy0wOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogdG9wbGV2LmMgKHdhcm5fZHVtbXksIFdfb3B0aW9ucyk6IERpZS4KCShkaXNwbGF5X2hlbHApOiBEb24ndCBwcmludCBXX29wdGlvbnMuCgkqIGNvbW1vbi5vcHQ6IEFkZCBXX29wdGlvbnMgaGVscCBmcm9tIHRvcGxldi5jLgoKMjAwMy0wNy0wOSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogb3B0cy5jICh3cmFwX2hlbHApOiBPbmx5IHBhc3MgaW50IGFyZ3VtZW50cyBhcyBhcmd1bWVudHMgdG8KCXByaW50ZidzICcqJyBtb2RpZmllci4gIENoYW5nZSBhcmd1bWVudCBvZiBmdW5jdGlvbi4KCjIwMDMtMDctMDggIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIGRvYy9pbnZva2UudGV4aTogRml4IG1pc3NwZWxsaW5nIG9mICJAaXRlbSIuCgoyMDAzLTA3LTA4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZDogUmVtb3ZlIGFuIG9sZCBjb21tZW50IGFib3V0CglOT1RJQ0VfVVBEQVRFX0NDLgoKMjAwMy0wNy0wOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBoLmMgKGNncmFwaF9ub2RlX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkoZHVtcF9jZ3JhcGgpOiBVc2UgaXQuCgkqIGNncmFwaC5oIChjZ3JhcGhfZHVtcF9maWxlKTogRGVjbGFyZS4KCShjZ3JhcGhfbm9kZV9uYW1lKTogRGVjbGFyZS4KCSogY2dyYXBodW5pdC5jOiBJbmNsdWRlIHRpbWV2YXIuaAoJKGNncmFwaF9maW5hbGl6ZV9jb21waWxhdGlvbl91bml0KTogVXNlIHRpbWV2YXI7IHJlb3JnYW5pemUgZHVtcHMuCgkoY2dyYXBoX29wdGltaXplX2Z1bmN0aW9uKTogVXNlIFRWX0lOVEVHUkFUSU9OLgoJKGNncmFwaF9tYXJrX2xvY2FsX2Z1bmN0aW9ucyk6IHJlb3JnYW5pemUgZHVtcHMuCgkoY2dyYXBoX21hcmtfZnVuY3Rpb25zX3RvX2lubGluZV9vbmNlKTogTGlrZXdpc2UuCgkoY2dyYXBoX29wdGltaXplKTogTGlrZXdpc2U7IHVzZSB0aW1ldmFyLgoJKiB0aW1ldmFyLmRlZiAoVFZfQ0dSQVBILCBUVl9DR1JBUEhPUFQpOiBOZXcuCgkqIHRvcGxldi5jIChkdW1wX2ZpbGVfaW5kZXgpOiBBZGQgREZJX2NncmFwaC4KCShkdW1wX2ZpbGVfaW5mbyk6IExpa2V3aXNlLgoJKGNncmFwaF9kdW1wX2ZpbGUpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKGRvX2NvbXBpbGUpOiBPcGVuIGFuZCBjbG9zZSBjZ3JhcGggZHVtcC4KCSogaW52b2tlLnRleGkgKC1kKTogRG9jdW1lbnQgbmV3IGZsYWc7IHJlbnVtYmVyLgoKMjAwMy0wNy0wOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgYy8xMTM3MAoJKiBjYWxscy5jIChlbWl0X2NhbGxfMSk6IERvbid0IGJvdGhlciBwb3BwaW5nIHRoZSBhcmd1bWVudHMgb2ZmIG9mCgl0aGUgc3RhY2sgYWZ0ZXIgYSBub3JldHVybiBmdW5jdGlvbiBjYWxsOyAgVGhlIGFkanVzdG1lbnQgaXMgZGVhZC4KCShleHBhbmRfY2FsbCk6IExpa2V3aXNlLgoKMjAwMy0wNy0wOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBleHByLmMgKE1PVkVfTUFYX1BJRUNFUyk6IE1vdmUgZnJvbSBoZXJlLi4uCgkqIGRlZmF1bHRzLmggKE1PVkVfTUFYX1BJRUNFUyk6IC4uLiB0byBoZXJlLgoKMjAwMy0wNy0wOCAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogTWFrZWZpbGUuaW4gKHN0YWdlMS1zdGFydCk6IEhhbmRsZSBhbiBlbXB0eSBTVUJESVJTLgoKMjAwMy0wNy0wOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2VuYXR0ci5jIChpbnRlcm5hbF9kZmFfaW5zbl9jb2RlKTogRG9uJ3QgcHJvdG90eXBlLgoJKiBnZW5hdHRydGFiLmMgKGF0dHJfZGVzYyk6IEFkZCBgc3RhdGljX3AnIGZpZWxkLgoJKGV4cGFuZF91bml0cyk6IE1ha2UgYmxvY2thZ2UgcmFuZ2UgYW5kIHJlYWR5IGNvc3QgZnVuY3Rpb25zCglzdGF0aWMuCgkod3JpdGVfYXR0cl9nZXQpOiBEb24ndCBhZGQgZXh0ZXJuIHByb3RvdHlwZXMgaW4gQyBmaWxlLiAgTWFyawoJc3RhdGljIGZ1bmN0aW9ucyBhcyBhcHByb3ByaWF0ZS4KCShmaW5kX2F0dHIsIG1ha2VfaW50ZXJuYWxfYXR0cik6IEluaXRpYWxpemUgc3RhdGljX3AuCgkqIGdlbmF0dHJ0YWIuaCAoQVRUUl9TVEFUSUMpOiBOZXcgbWFjcm8uCgkqIGdlbmF1dG9tYXRhLmMgKG91dHB1dF9pbnRlcm5hbF9yZXNldF9mdW5jKTogTWFyayBvdXRwdXQgZnVuY3Rpb24KCWFzIGlubGluZS4KCShtYWtlX2ludGVybmFsX2RmYV9pbnNuX2NvZGVfYXR0cik6IE1hcmsgb3V0cHV0IGZ1bmN0aW9uIGFzIHN0YXRpYy4KCjIwMDMtMDctMDggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdlbmF0dHJ0YWIuaDogQWRkIG5ldyBtYWNyb3MgZm9yIGF0dHIgYHNwZWNpYWwnIGZsYWdzLgoJKiBnZW5hdHRydGFiLmMgKGF0dHJfZGVzYyk6IFJlb3JkZXIvcmVzaXplIGZpZWxkcyBiZXR0ZXIuCglVc2UgYXR0ciBgc3BlY2lhbCcgbWFjcm9zIGluIGFsbCBjYWxscyB0byBtYWtlX2ludGVybmFsX2F0dHIuCgkqIGdlbmF1dG9tYXRhLmM6IExpa2V3aXNlLgoKMjAwMy0wNy0wOSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogYy1jb21tb24uYyAoY19lc3RpbWF0ZV9udW1faW5zbnNfMSk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoY19lc3RpbWF0ZV9udW1faW5zbnMpOiBOZXcgZ2xvYmFsIGZ1bmN0aW9uLgoJKiBjLWNvbW1vbi5oIChERUNMX05VTV9TVE1UUyk6IFJlbmFtZSB0by4uLgoJKERFQ0xfRVNUSU1BVEVEX0lOU05TKTogLi4uIHRoaXMuCgkoY19lc3RpbWF0ZV9udW1faW5zbnMpOiBEZWNsYXJlLgoJKiBjLWRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogVXNlIERFQ0xfRVNUSU1BVEVEX0lOU05TLgoJKiBjLWxhbmcuYyAoTEFOR19IT09LU19UUkVFX0lOTElOSU5HX0VTVElNQVRFX05VTV9JTlNOUyk6IE5ldy4KCSogYy1zZW1hbnRpY3MuYyAoYWRkX3N0bXQpOiBEbyBub3QgYWNjb3VudCBzdGF0ZW1lbnRzLgoJKiBsYW5naG9va3MtZGVmLmggKExBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19FU1RJTUFURV9OVU1fSU5TTlMpOgoJTmV3LgoJKiBsYW5naG9va3MuaCAobGFuZ19ob29rc19mb3JfdHJlZV9pbmxpbmluZyk6IEFkZAoJZXN0aW1hdGVfbnVtX2luc25zCgkqIHBhcmFtcy5kZWYgKG1heC1pbmxpbmUtaW5zbnMtYXV0bywgbWF4LWlubGluZS1pbnNucy1hdXRvKTogc2V0Cgl0byAxMDAuCgkobWF4LWlubGluZS1pbnNucyk6IHNldCB0byAzMDAuCgkobWluLWlubGluZS1pbnNucyk6IHNldCB0byAxMC4KCSogdHJlZS1pbmxpbmUuYyAoc3RydWN0IGlubGluZV9kYXRhKTogUmVuYW1lIGlubGluZWRfc3RtdHMgdG8KCWlubGluZWQtaW5zbnMuCgkoSU5TTlNfUEVSX1NUTVQpOiBLaWxsLgoJKGlubGluYWJsZV9mdW5jdGlvbl9wKTogQ29tcHV0ZSBhbmQgc3RvcmUgYm9keSBzaXplLgoJKGV4cGFuZF9jYWxsX2lubGluZSk6IExpa2V3aXNlLgoJKG9wdGltaXplX2lubGluZV9jYWxscyk6IExpa2V3aXNlLgoKMjAwMy0wNy0wOCAgSmFtZXMgRSBXaWxzb24gIDx3aWxzb25AdHVsaXB0cmVlLm9yZz4KCglQUiB0YXJnZXQvMTAwMjEKCSogZW1pdC1ydGwuYyAoc2V0X21lbV9hdHRyaWJ1dGVfbWludXNfYml0cG9zKTogV2hlbiBoYW5kbGUgQVJSQVlfUkVGLAoJbG9vcCBvdmVyIG5ldyB2YXJpYWJsZSB0MiBpbnN0ZWFkIG9mIHQuCgoyMDAzLTA3LTA4ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGJvb3RzdHJhcC8xMTQ1NQoJKiBjb25maWcvaTM4Ni93aW5udC5jOiBSZXBsYWNlIHVzZSBvZiBlcnJvcigpLCB3YXJuaW5nKCkgd2l0aAoJZXJyb3Jfd2l0aF9kZWNsKCksIHdhcm5pbmdfd2l0aF9kZWNsKCksICB0aHJvdWdob3V0LgoKMjAwMy0wNy0wOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogb3B0cy5jICh3cmFwX2hlbHApOiBVc2UgdW5zaWduZWQgaW50LCBub3Qgc2l6ZV90LgoKMjAwMy0wNy0wOCAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAbmVyaW0uZnI+CgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmggKEhBVkVfQVNfRFdBUkYyX0RFQlVHX0xJTkUpOiBEb24ndCBkZWZpbmUKCWFzIC5maWxlLy5sb2MgZGlyZWN0aXZlcyBhcmUgaW5jb21wYXRpYmxlIHdpdGggbGlua2VyIHJlbGF4YXRpb24uCgoyMDAzLTA3LTA4ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKGZpeGluYy5zaCk6IFJlbW92ZSBnbnUtcmVnZXguW2NoXSBmcm9tIGRlcGVuZGVuY2llcy4KCSogZml4aW5jL01ha2VmaWxlLmluOiBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gZ251LXJlZ2V4LltvY2hdLgoJKiBmaXhpbmMvZml4Zml4ZXMuYywgZml4aW5jL2ZpeGluY2wuYywgZml4aW5jL2ZpeGxpYi5jCgkqIGZpeGluYy9maXh0ZXN0cy5jOiBVc2UgeHJlZ2V4ZWMgbm90IHJlZ2V4ZWMsIHhyZWdjb21wIG5vdCByZWdjb21wLgoJKiBmaXhpbmMvZml4bGliLmg6IEluY2x1ZGUgeHJlZ2V4Lmggbm90IGdudS1yZWdleC5oLgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChocHV4MTBfY3BwX3Bvd19pbmxpbmUsIGhwdXgxMV9jcHBfcG93X2lubGluZSk6CglFc2NhcGUgeyBhbmQgfSBjaGFyYWN0ZXJzIHdoaWNoIGFyZSBub3QgcGFydCBvZiByYW5nZSBleHByZXNzaW9ucy4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCSogZml4aW5jL2dudS1yZWdleC5jLCBmaXhpbmMvZ251LXJlZ2V4Lmg6IERlbGV0ZSBmaWxlLgoKMjAwMy0wNy0wOCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCVBSIGMvMTY4NwoJKiB0cmVlLWlubGluZS5jIChmaW5kX2FsbG9jYV9jYWxsKTogVXNlCgl3YWxrX3RyZWVfd2l0aG91dF9kdXBsaWNhdGVzLCBpbnN0ZWFkIG9mIHdhbGtfdHJlZS4KCShmaW5kX2J1aWx0aW5fbG9uZ2ptcF9jYWxsKTogTGlrZXdpc2UuCgkqIGMtb2JqYy1jb21tb24uYyAoY19jYW5ub3RfaW5saW5lX2ZuKTogTGlrZXdpc2UuCgkqIGMtc2VtYW50aWNzLmMgKGZpbmRfcmVhY2hhYmxlX2xhYmVsKTogTGlrZXdpc2UuCgoyMDAzLTA3LTA4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjLzExNDIwCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9jaGVja19tb3ZhYnMpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKGl4ODZfY2hlY2tfbW92YWJzKTogTmV3IHByb3RvdHlwZS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZCAobW92YWJzW3NocWRdaV8xX3JleDY0KTogS2lsbCBicm9rZW4gYWx0ZXJuYXRpdmUuCgkobW92YWJzW3NocWRdaV9bMTJdX3JleDY0KTogQWRkIGl4ODZfY2hlY2tfbW92YWJzIGNoZWNrIHRvIGNvbmRpdGlvbnMuCgoyMDAzLTA3LTA4ICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAYnJvYWRjb20uY29tPgoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtcG8pOiBDb3BlIHdpdGggZW1wdHkgQ0FUQUxPR1MuCgoyMDAzLTA3LTA4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWlwcy9lbGY2NC5oIChUQVJHRVRfQVNNX1VOSVFVRV9TRUNUSU9OKTogRGVsZXRlLgoJKEVYVFJBX1NFQ1RJT05TLCBFWFRSQV9TRUNUSU9OX0ZVTkNUSU9OUyk6IERlbGV0ZS4KCShTRUNUSU9OX0ZVTkNUSU9OX1RFTVBMQVRFKTogRGVsZXRlLgoJKiBjb25maWcvbWlwcy9lbGYuaDogQXMgZm9yIGVsZjY0LmguCgkoQVNNX09VVFBVVF9BTElHTkVEX0JTUyk6IFVzZSBuYW1lZF9zZWN0aW9uIHJhdGhlciB0aGFuIHNic3Nfc2VjdGlvbi4KCSogY29uZmlnL21pcHMvbGludXguaDogQXMgZm9yIGVsZi5oCgkqIGNvbmZpZy9taXBzL2lyaXM2Z2xkLmggKFRBUkdFVF9BU01fVU5JUVVFX1NFQ1RJT04pOiBEZWxldGUuCgkqIGNvbmZpZy9taXBzL2lyaXM2LmggKEVYVFJBX1NFQ1RJT05TKTogRGVsZXRlLgoJKEVYVFJBX1NFQ1RJT05fRlVOQ1RJT05TKTogUmVtb3ZlIHNkYXRhX3NlY3Rpb24uICBSZW1vdmUgdGhlIGhhbmRsaW5nCglvZiBpbl9zZGF0YSBmcm9tIGN1cnJlbnRfc2VjdGlvbl9uYW1lIGFuZCBjdXJyZW50X3NlY3Rpb25fZmxhZ3MuCgkqIGNvbmZpZy9taXBzL2lyaXM2Z2xkLmggKFRBUkdFVF9BU01fVU5JUVVFX1NFQ1RJT04pOiBEZWxldGUuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoc2RhdGFfc2VjdGlvbiwgc2Jzc19zZWN0aW9uKTogUmVtb3ZlIHByb3RvdHlwZXMuCgkoTUFTS19HUF9PUFQsIFRBUkdFVF9HUF9PUFQpOiBEZWxldGUuCgkoTUFTS19OT19GVVNFRF9NQUREKTogVXNlIE1BU0tfR1BfT1BUJ3Mgb2xkIHZhbHVlLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IE5ldXRlciBncE9QVCwgZ3BvcHQsIG5vLWdwT1BUIGFuZCBuby1ncG9wdC4KCShTTUFMTF9EQVRBX1NFQ1RJT04sIEVYVFJBX1NFQ1RJT05TLCBFWFRSQV9TRUNUSU9OX0ZVTkNUSU9OUyk6IFJlbW92ZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChUQVJHRVRfSU5fU01BTExfREFUQV9QKTogT3ZlcnJpZGUuCgkoVEFSR0VUX1NFQ1RJT05fVFlQRV9GTEFHUyk6IE92ZXJyaWRlIGlmIFRBUkdFVF9JUklYNi4KCShtaXBzX2NsYXNzaWZ5X3N5bWJvbCk6IFVzZSBTWU1CT0xfUkVGX1NNQUxMX1AuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IFJlbW92ZSBzZXR0aW5nIG9mIE1BU0tfR1BPUFQuCgkobWlwc19vdXRwdXRfZXh0ZXJuYWwpOiBVc2UgbWlwc19pbl9zbWFsbF9kYXRhX3AgdG8gY2hlY2sgd2hldGhlciBhCglzeW1ib2wgbmVlZHMgYW4gLmV4dGVybiBkaXJlY3RpdmUuICBEb24ndCBlbWl0IHN1Y2ggZGlyZWN0aXZlcyBmb3IKCVRBUkdFVF9FWFBMSUNJVF9SRUxPQ1MuCgkobWlwc19kZWNsYXJlX29iamVjdCk6IFVwZGF0ZSBhY2NvcmRpbmdseS4KCShtaXBzX3NlbGVjdF9ydHhfc2VjdGlvbik6IENhbGwgbmFtZWRfc2VjdGlvbiByYXRoZXIgdGhhbgoJU01BTExfREFUQV9TRUNUSU9OLgoJKG1pcHNfc2VsZWN0X3NlY3Rpb24pOiBVc2UgZGVmYXVsdF9lbGZfc2VjdGlvbl9zZWN0aW9uIGZvciBldmVyeXRoaW5nCglleGNlcHQgLnRleHQgc3RyaW5nIGNvbnN0YW50cy4KCShtaXBzX2luX3NtYWxsX2RhdGFfcCk6IE5ldyBmdW5jdGlvbi4KCShtaXBzX2VuY29kZV9zZWN0aW9uX2luZm8pOiBSZW1vdmUgc21hbGwgZGF0YSBoYW5kbGluZy4KCShtaXBzX3VuaXF1ZV9zZWN0aW9uKTogRGVsZXRlLgoJKGlyaXM2X3NlY3Rpb25fdHlwZV9mbGFncyk6IE5ldyBmdW5jdGlvbi4KCSogZG9jL3RtLnRleGk6IFJlbW92ZSBkb2N1bWVudGF0aW9uIG9mIC1tZ3BvcHQgYW5kIC1taGFsZi1waWMuCgoyMDAzLTA3LTA4ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIFRhcmdldC8xMTQ1MwoJKiBwYS5tZDogRGlzcGFyYWdlIGFsbCBtdHNhciBjb25zdHJhaW50cy4KCShleHR6diwgZXh0diwgaW5zdik6IERvbid0IGZhaWwgb24gbGVuZ3RoIG9mIHszMnw2NH0uCgoyMDAzLTA3LTA4ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3lzdGVtLmg6IFBvaXNvbiBNQVBfQ0hBUkFDVEVSLgoJKiBjb25maWcvaTM3MC9pMzcwLXByb3Rvcy5oIChtdnNfbWFwX2NoYXIpOiBEZWxldGUuCgkqIGNvbmZpZy9pMzcwL2kzNzAuYyAoYXNjZWJjLCBlYmNhc2MsIG12c19tYXBfY2hhcik6IERlbGV0ZS4KCSogY29uZmlnL2kzNzAvaTM3MC5oIChNQVBfQ0hBUkFDVEVSKTogRGVsZXRlIGRlZmluaXRpb24uCgkoQVNNX09VVFBVVF9BU0NJSSk6IERvbid0IHVzZSBNQVBfQ0hBUkFDVEVSLgoKMjAwMy0wNy0wOCAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIHRvcGxldi5jIChyYW5kb21pemUpOiBDb3JyZWN0IGNhbGwgdG8gdGltZSgpLgoKMjAwMy0wNy0wOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB1bnJvbGwuYyAocmVnX2RlYWRfYWZ0ZXJfbG9vcCk6IENoZWNrIGZvciByZWcgaW4gUkVHX0VRVUFMIGFuZAoJUkVHX0VRVUlWIG5vdGVzIGFzIHdlbGwuCgoyMDAzLTA3LTA4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZG9jL21kLnRleGk6IEZpeCB0aGUgZGVzY3JpcHRpb24gb2YgYWRkbW9kZWNjLgoKMjAwMy0wNy0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluICh0b3BfYnVpbGRkaXIpOiBTZXQgdG8gIi4uIiwgbm90ICIuIi4KCShJTlRMTElCUywgSU5UTERFUFMpOiBEZWxldGUuCgkoTElCSU5UTCwgTElCSU5UTF9ERVAsIExJQklDT05WX0RFUCk6IE5ldyB2YXJpYWJsZXMgdG8gYmUgc3Vic3RpdHV0ZWQuCgkoTElCREVQUyk6IEFkZCAkKExJQklDT05WX0RFUCkuCgkoTElCUyk6IFRha2Ugb3V0ICQoSU5UTExJQlMpLCBhZGQgJChMSUJJTlRMKSBhbmQgJChMSUJJQ09OVikuCgkoSU5DTFVERVMpOiBSZXBsYWNlIC1JLi4vaW50bCB3aXRoIEBJTkNJTlRMQC4KCSgkKHRvcF9idWlsZGRpcikvaW50bC9saWJpbnRsLmEpOiBEZWxldGUgcnVsZS4KCShzdGFnZTItc3RhcnQsIHN0YWdlMy1zdGFydCwgc3RhZ2U0LXN0YXJ0LCBzdGFnZXByb2ZpbGUtc3RhcnQsCglzdGFnZWZlZWRiYWNrLXN0YXJ0KTogVXNlICQkIGZvciB2YXJpYWJsZSB0byBiZSBldmFsdWF0ZWQgYnkKCXNoZWxsLCBub3QgbWFrZS4KCSogYWNjb25maWcuaCAoRU5BQkxFX05MUywgSEFWRV9DQVRHRVRTLCBIQVZFX0dFVFRFWFQsCglIQVZFX0xDX01FU1NBR0VTLCBIQVZFX1NUUENQWSk6IERlbGV0ZS4KCSogYWNsb2NhbC5tNDogc2luY2x1ZGUgLi4vY29uZmlnL3Byb2d0ZXN0Lm00LiAgQWRkCgljb250ZW50cyBvZiBsY21lc3NhZ2UubTQgZnJvbSBnZXR0ZXh0IGRpc3Ryby4KCSogY29uZmlndXJlLmluOiBDaGVjayBmb3Igd2NoYXIuaCBhbmQgc2V0bG9jYWxlLiAgU2V0CglMSUJJQ09OVl9ERVAgdG8gdGhlIGVtcHR5IHN0cmluZyBhbmQgc3Vic3RpdHV0ZSBpdC4KCUNhbGwgQU1fTENfTUVTU0FHRVMuICBEZWxldGUgQUNfQVJHX0VOQUJMRSBmb3IgLS1lbmFibGUtbmxzOwoJdGhpcyBpcyBoYW5kbGVkIGVsc2V3aGVyZS4gIFVzZSBaV19HTlVfR0VUVEVYVF9TSVNURVJfRElSLAoJbm90IENZX0dOVV9HRVRURVhULiAgQ2xlYXIgJExJQklDT05WIGlmIGl0cyB0ZXh0IGlzIGluY2x1ZGVkCglpbiAkTElCSU5UTCwgdG8gYXZvaWQgbGlua2luZyBpdCB0d2ljZS4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoyMDAzLTA3LTA4ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogUmVtb3ZlIHdpbm50IHN1cHBvcnQuCgkqIGZpeGluYy9maXhpbmMud2lubnQ6IERlbGV0ZSB3aXRoIGV4dHJlbWUgcHJlanVkaWNlLgoKMjAwMy0wNy0wOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZWZpbGUuaW46IFVwZGF0ZS4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBvcHRfdGV4dCBub3cgY29udGFpbnMgdGhlICctJy4KCSogYy5vcHQ6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKiBjb21tb24ub3B0OiBBZGQgc29tZSBoZWxwIHRleHQuCgkqIG9wdHMuYzogSW5jbHVkZSBpbnRsLmguCgkod3JhcF9oZWxwLCBwcmludF9oZWxwKTogTmV3LgoJKGZpbmRfb3B0LCBoYW5kbGVfb3B0aW9uLCBjb21tb25faGFuZGxlX29wdGlvbik6IG9wdF90ZXh0IG5vdwoJY29udGFpbnMgdGhlICctJy4gIFVzZSBwcmludF9oZWxwIHRvIG91dHB1dCBoZWxwLgoJKiBvcHRzLmggKHN0cnVjdCBjbF9vcHRpb24pOiBOZXcgbWVtYmVyICJoZWxwIi4KCSogb3B0cy5zaDogVXBkYXRlIHRvIGhhbmRsZSBoZWxwIHRleHQgb3V0cHV0IGFuZCB0byBwcmVwZW5kCglvcHRpb25zIHdpdGggJy0nLgoJKiB0b3BsZXYuYyAoZGlzcGxheV9oZWxwKTogUmVtb3ZlIHNvbWUgaGVscCB0ZXh0LgoKMjAwMy0wNy0wNyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoJICAgIEZhcmlib3J6IEphaGFuaWFuICA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogVGVzdCBmb3IgUG93ZXJQQyBtZmNyIGZpZWxkIHN1cHBvcnQgaW4gYXNzZW1ibGVyLgoJKiBjb25maWcuaW4sIGNvbmZpZ3VyZTogUmVnZW5kZXJhdGVkLgoKCSogY29uZmlnL3JzNjAwMC9wb3dlcjQubWQ6IEFkZCBtZmNyZiByZXNlcnZhdGlvbi4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmggKG1mY3Jfb3BlcmF0aW9uKTogRGVjbGFyZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAobWZjcl9vcGVyYXRpb24pOiBEZWZpbmUuCgkocHJpbnRfb3BlcmFuZCk6IEFkZCAnUScgY2FzZSBmb3IgbWZjcmYuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFRBUkdFVF9NRkNSRik6IE5ldy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGF0dHJpYnV0ZSAidHlwZSIpOiBBZGQgbWZjcmYuCgkobW92Y2NfaW50ZXJuYWwxKTogRW1pdCBvcHRpb25hbCBmaWVsZCBvcGVyYW5kIGZvciBtZmNyIGFuZCBzZXQKCSJ0eXBlIiBhdHRyaWJ1dGUgYXBwcm9wcmlhdGVseS4KCShtZmNyIFNDQyk6IExpa2V3aXNlLgoJKG1vdmVzaV9mcm9tX2NyX29uZSk6IE5ldy4KCjIwMDMtMDctMDcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZDogQ29ycmVjdCBjaGVjay1pbiBvZiBpbmNvcnJlY3QgdmVyc2lvbi4KCjIwMDMtMDctMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJpdG1hcC5jIChkZWJ1Z19iaXRtYXBfZmlsZSk6IE1lcmdlIHVzZXMgb2YgSE9TVF9QVFJfUFJJTlRGIHdpdGgKCWFkamFjZW50IHN0ZGlvIGNhbGxzLgoJKiBjLWRlY2wuYyAoY19wcmludF9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkqIG1pcHMtdGZpbGUuYyAod3JpdGVfdmFycmF5LCB3cml0ZV9vYmplY3QsIGFsbG9jYXRlX2NsdXN0ZXIpOiBMaWtld2lzZS4KCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eCk6IExpa2V3aXNlLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGVfYnJpZWYsIHByaW50X25vZGUpOiBMaWtld2lzZS4KCSogc3lzdGVtLmggKEhPU1RfUFRSX1BSSU5URik6IEVuc3VyZSB3ZSBoYXZlIGEgbGl0ZXJhbCBzdHJpbmcuCgoJKiBjb25maWd1cmUuaW4gKEFDX0NPTVBJTEVfQ0hFQ0tfU0laRU9GKTogQ2hlY2sgZm9yIGB2b2lkIConLgoJKiBjb25maWcuaW4sIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAzLTA3LTA3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiB0YXJnZXQvMTA5NzkKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoYXRhbjJkZjMsIGF0YW4yc2YzLCBhdGFuMnhmMywgYXRhbjJ0ZjMpOgoJQ2hhbmdlZCB0byBkZWZpbmVfZXhwYW5kIHBhdHRlcm5zIHRoYXQgY29weSBvcGVyYW5kWzFdIHRvIHByZXZlbnQKCWl0IGZyb20gYmVpbmcgY2xvYmJlcmVkIGJlZm9yZSBlbWl0dGluZyBhbiBhdGFuMj9mM18xIGluc24uCgkoYXRhbjJkZjNfMSwgYXRhbjJzZjNfMSwgYXRhbjJ4Zl8xLCBhdGFuMnRmM18xKTogTmV3IGRlZmluZV9pbnNuCglwYXR0ZXJucyB0aGF0IGFjdHVhbGx5IHNwZWNpZnkgdGhlIGJlaGF2aW91ciBvZiB4ODcncyBGUEFUQU4uCgoyMDAzLTA3LTA3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9vdXRwdXRfbWlfdGh1bmspOiBSZW1vdmUgYm9ndXMKCWNsZWFyaW5nIG9mIFNZTUJPTF9GTEFHX0xPQ0FMIGJpdC4KCUlmIHZjYWxsX29mZnNldCBmaXRzIGludG8gc2lnbmVkIDE2LWJpdCBpbW1lZGlhdGUsIHVzZQoJb25lIGluc3RydWN0aW9uIGZvciBib3RoIGFkZGl0aW9uIGFuZCBsb2FkLgoKMjAwMy0wNy0wNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogb3B0cy5jIChjb21tb25faGFuZGxlX29wdGlvbik6IENvcnJlY3QgaGFuZGxpbmcgb2YgdGhlCgktZmFsaWduLSBzd2l0Y2hlcyB0aGF0IGRvIGFuZCBkb24ndCB0YWtlIGFuIGFyZ3VtZW50LgoKMjAwMy0wNy0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAocHVzaHFpMV9oODMwMGhzKTogUmV2ZXJ0IG15IHBhdGNoCgl0b2RheS4KCShwdXNoaGkxX2g4MzAwaHMpOiBMaWtld2lzZS4KCjIwMDMtMDctMDcgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGdlbmV4dHJhY3QuYzogQ29udmVydCByZW1haW5pbmcgcHJvdG90eXBlcyB0byBJU08gQzkwLgoKCSogY3BwbGV4LmMgKF9jcHBfZnJlZV9idWZmKTogQ29udmVydCBwcm90b3R5cGUgdG8gSVNPIEM5MC4KCSogZm9sZC1jb25zdC5jIChmb2xkX3NpbmdsZV9iaXRfdGVzdCk6IExpa2V3aXNlLgoJKiBkaWFnbm9zdGljLmMgKGRlZmF1bHRfZGlhZ25vc3RpY19maW5hbGl6ZXIpOiBMaWtld2lzZS4KCSogY2ZncnRsLmMgKHJ0bF9yZWRpcmVjdF9lZGdlX2FuZF9icmFuY2gpOiBMaWtld2lzZS4KCgkqIGdlbmd0eXBlLmMgKHdyaXRlX2FycmF5KTogR2VuZXJhdGUgSVNPIEM5MCBwcm90b3R5cGVzLgoKCSogZ2VuZmxhZ3MuYyAoZ2VuX3Byb3RvKTogR2VuZXJhdGUgSVNPIEM5MCBwcm90b3R5cGVzLgoKMjAwMy0wNy0wNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgb3B0aW1pemF0aW9uLzExMDU5CgkqIGV4cHIuYyAoY2FuX3N0b3JlX2J5X3BpZWNlcyk6IFJldHVybiB0cnVlIGlmIGxlbmd0aCBpcyB6ZXJvLgoJKHN0b3JlX2J5X3BpZWNlcyk6IElmIGxlbmd0aCBpcyB6ZXJvIGFuZCBlbmRwIGlzIHR3bywgYWJvcnQsCglvdGh3ZXJpc2UsIGlmIGxlbmd0aCBpcyB6ZXJvIGFuZCBlbmRwIGlzIG5vdCB0d28sIHJldHVybiAidG8iLgoJKGNsZWFyX2J5X3BpZWNlcyk6IERvIG5vdGhpbmcgaWYgbGVuZ3RoIGlzIHplcm8uCgkoY2xlYXJfc3RvcmFnZSk6IERvIG5vdGhpbmcgaWYgbGVuZ3RoIGlzIHplcm8uCgkoc3RvcmVfY29uc3RydWN0b3IpOiBTaW1wbGlmeSBjb2RlIHdoZW4gc2l6ZSBpcyB6ZXJvLCBvciB0aGUKCXRhcmdldCBoYXMgYWxyZWFkeSBiZWVuIGNsZWFyZWQuICBUaGlzIGF2b2lkcyBlbWl0dGluZyBhCglibG9ja2FnZSBpbnN0cnVjdGlvbiB3aGVuIGluaXRpYWxpemluZyBlbXB0eSBzdHJ1Y3R1cmVzLgoKMjAwMy0wNy0wNyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogbWlwcy10ZmlsZS5jOiBDb252ZXJ0IHByb3RvdHlwZXMgdG8gSVNPIEM5MC4KCSogbWlwcy10ZHVtcC5jOiBDb252ZXJ0IHByb3RvdHlwZXMgdG8gSVNPIEM5MC4KCjIwMDMtMDctMDcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBydGwuaCAoZW1pdF9saW5lX25vdGUpOiBUYWtlIGEgbG9jYXRpb25fdC4KCShlbWl0X2xpbmVfbm90ZV9mb3JjZSk6IFJlbW92ZS4KCShzZXRfZmlsZV9hbmRfbGluZV9mb3Jfc3RhdGVtZW50KTogVGFrZSBhIGxvY2F0aW9uX3QuCgkqIHRyZWUuZyAoZW1pdF9saW5lX25vdGUpOiBUYWtlIGEgbG9jYXRpb25fdC4KCSogZW1pdC1ydGwuYyAoZW1pdF9saW5lX25vdGUpOiBUYWtlIGEgbG9jYXRpb25fdC4KCShlbWl0X2xpbmVfbm90ZV9mb3JjZSk6IFJlbW92ZS4KCSogZnVuY3Rpb24uYyAoaW5pdF9mdW5jdGlvbl9zdGFydCk6IEFkanVzdCBlbWl0X2xpbmVfbm90ZSBjYWxsLgoJKGV4cGFuZF9mdW5jdGlvbl9lbmQpOiBVc2UgZm9yY2VfbmV4dF9saW5lX25vdGUsIG5vdAoJZW1pdF9saW5lX25vdGVfZm9yY2UuCgkqIGMtcGFyc2UuaW4gKG1heWJlX3R5cGVfcXVhbCk6IEFkanVzdCBlbWl0X2xpbmVfbm90ZSBjYWxscy4KCSogYy1zZW1hbnRpY3MuYyAoZ2VucnRsX2RvX3B1c2hsZXZlbCwgZ2VucnRsX2dvdG9fc3RtdCwKCWdlbnJ0bF9leHByX3N0bXRfdmFsdWUsIGdlbnJ0bF9kZWNsX3N0bXQsIGdlbnJ0bF9pZl9zdG10LAoJZ2VucnRsX3doaWxlX3N0bXQsIGdlbnJ0bF9kb19zdG10XzEsIGdlbnJ0bF9yZXR1cm5fc3RtdCwKCWdlbnJ0bF9mb3Jfc3RtdCwgZ2VucnRsX2JyZWFrX3N0bXQsIGdlbnJ0bF9jb250aW51ZV9zdG10LAoJZ2VucnRsX2NvbnRpbnVlX3N0bXQsIGdlbnJ0bF9zd2l0Y2hfc3RtdCwKCWdlbnJ0bF9hc21fc3RtdCk6IExpa2V3aXNlLgoJKiBleHByLmMgKGV4cGFuZF9leHByKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoc2V0X2ZpbGVfYW5kX2xpbmVfZm9yX3N0bXQpOiBUYWtlIGEgbG9jYXRpb25fdC4KCShleHBhbmRfZGVjbF9pbml0KTogQWRqdXN0IGVtaXRfbGluZV9ub3RlIGNhbGwuCgoyMDAzLTA3LTA3ICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi10cmFtcC5hc206ICBGaXggdHJhbXBvbGluZXMuICBQUiAxMDkwMC4KCjIwMDMtMDctMDcgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmg6IENvbnZlcnQgcHJvdG90eXBlcyB0byBJU08gQzkwLgoJKiBjb25maWcvaTM4Ni9pMzg2LmM6IExpa2V3aXNlLgoKMjAwMy0wNy0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogVXNlIGdlbl9pbnRfbW9kZSBpbnN0ZWFkIG9mCglHRU5fSU5UICh0cnVuY19pbnRfZm9yX21vZGUgKC4uLikpLgoKMjAwMy0wNy0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZCAocHVzaHFpMV9oODMwMGhzKTogT3B0aW1pemUgYnkgcHVzaGluZwoJMiBieXRlcyBhbmQgdGhlbiBzdWJ0cmFjdCAyIGZyb20gdGhlIHN0YWNrIHBvaW50ZXIuCgkocHVzaGhpMV9oODMwMGhzKTogTGlrZXdpc2UuCgoyMDAzLTA3LTA3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmluIChlbmFibGVfY292ZXJhZ2UpOiBSZW1vdmUgLURTRUxGX0NPVkVSQUdFLCBhZGQKCS1mcmFuZG9tLXNlZWQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgZXh0cmFuZW91cyBjb21tZW50LgoJKiB0b3BsZXYuYyAocmFuZG9taXplKTogUHJvdGVjdCBhZ2FpbnN0IHBvdGVudGlhbCBtdWx0aXBsZSBjYWxscy4KCSogZG9jL2ludm9rZS50ZXhpICgtZnJhbmRvbS1zZWVkKTogRG9jdW1lbnQgdXNlIGZvciBpbiBjb3ZlcmFnZQoJZmlsZXMuCgoyMDAzLTA3LTA3ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzExMTk4CgkqIGFsaWFzLmMgKG9iamVjdHNfbXVzdF9jb25mbGljdF9wKTogUmV0dXJuIDEgaWYgdGhlIHR5cGVzIGhhdmUKCXRoZSBzYW1lIGFsaWFzIHNldCwgbm90IGlmIHRoZSBhbGlhcyBzZXRzIG9ubHkgY29uZmxpY3QuCgoyMDAzLTA3LTA3ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGNwcGNoYXJzZXQuYyAoSUNPTlZfQ09OU1QpOiBEZWZpbmUgaWZmICFIQVZFX0lDT05WLgoJKGNvbnZlcnRfY3NldCk6IENoYW5nZSBpbmJ1ZiB0byB0eXBlIElDT05WX0NPTlNUIGNoYXIuCgkqIE1ha2VmaWxlLmluIChMSUJTKTogQWRkIExJQklDT05WLgoKCSogZG9jL2ludm9rZS50ZXhpICgtZmFsaWduLWZ1bmN0aW9ucyk6IERvY3VtZW50IHRoYXQKCXdoZW4gbiBpcyB6ZXJvIHRoZW4gYSBtYWNoaW5lLWRlcGVuZGVudCBkZWZhdWx0IGlzIHVzZWQuCgkoLWZhbGlnbi1sYWJlbHMpOiBEb2N1bWVudCB0aGF0IHdoZW4gbiBpcyB6ZXJvIHRoZW4gYQoJbWFjaGluZS1kZXBlbmRlbnQgZGVmYXVsdCBpcyB1c2VkIGFuZCB0aGF0IC1mYWxpZ24tbGFiZWxzID0xCglpcyBlcXVpdmFsZW50IHRvIC1mbm8tYWxpZ24tbGFiZWxzLgoJKC1mYWxpZ24tbG9vcHMpOiBMaWtld2lzZS4KCSgtZmFsaWduLWp1bXBzKTogTGlrZXdpc2UuCgoyMDAzLTA3LTA2ICBBcnQgSGFhcyAgPGFoYWFzQGFpcm1haWwubmV0PgoKCSogZi9nbG9iYWwuYyAoZmZlZ2xvYmFsX3R5cGVfc3RyaW5nXyk6IEZpeCBvYnNvbGV0ZSBHQ0MgYXJyYXkKCWluaXRpYWxpemVyIHN5bnRheC4KCjIwMDMtMDctMDYgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHR1bGlwdHJlZS5vcmc+CgoJUFIgb3B0aW1pemF0aW9uLzk4MTIKCSogcnRsLmggKG1lbV9mb3JfY29uc3RfZG91YmxlKTogRGVsZXRlIHByb3RvdHlwZS4KCSogdmFyYXNtLmMgKG1lbV9mb3JfY29uc3RfZG91YmxlKTogRGVsZXRlIGZ1bmN0aW9uLgoJKiBjb25maWcvbTY4ay9ocDMyMC5oLCBjb25maWcvbTY4ay9saW51eC5oLCBjb25maWcvbTY4ay9tNjhrZWxmLmgsCgljb25maWcvbTY4ay9tNjhrdjQuaCwgY29uZmlnL202OGsvbmV0YnNkLWVsZi5oCgkoTEVHSVRJTUFURV9QSUNfT1BFUkFORF9QKTogRGVsZXRlIGR1cGxpY2F0ZSBkZWZpbml0aW9ucy4KCSogY29uZmlnL202OGsvbTY4ay5oIChMRUdJVElNQVRFX0NPTlNUQU5UX1ApOiBEaXNhbGxvdyBYRm1vZGUuCgkoTEVHSVRJTUFURV9QSUNfT1BFUkFORF9QKTogRGVsZXRlIENPTlNUX0RPVUJMRSB0ZXN0cy4KCSogY29uZmlnL202OGsvbTY4ay5tZCAobW92eGYpOiBBZGQgcmVsb2FkX2luX3Byb2dyZXNzIGd1YXJkLiAgQWRkCgljb21tZW50IGFib3V0IGNvbmZ1c2VkIHN1cHBvcnQgZm9yIFhGbW9kZSBjb25zdGFudHMuCgoyMDAzLTA3LTA3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZmdsYXlvdXQuYyAoZml4dXBfcmVvcmRlcl9jaGFpbik6IENhbGwgZGVsZXRlX2RlYWRfanVtcHRhYmxlcy4KCjIwMDMtMDctMDYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAuYzogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2F0aGxvbi5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3BlbnRpdW0ubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmM6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pdGFuaXVtMS5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2l0YW5pdW0yLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL20zMnIvbTMyci5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvc3I3MWsubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy90LWlyaXM1LWFzOiBMaWtld2lzZS4KCSogY29uZmlnL21taXgvbW1peC5oOiBMaWtld2lzZS4KCSogY29uZmlnL25zMzJrL25zMzJrLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbnMzMmsvTk9URVM6IEZpeCBhIHR5cG8uCgoyMDAzLTA3LTA2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBzdG10LmM6IENvbnZlcnQgcmVtYWluaW5nIHByb3RvdHlwZXMgdG8gSVNPIEM5MC4KCSogY2ZnbGF5b3V0LmM6IExpa2V3aXNlLgoJKiBkYnhvdXQuYzogTGlrZXdpc2UuCgkqIGdjYy5jOiBMaWtld2lzZS4KCSogZ2VuZW1pdC5jOiBMaWtld2lzZS4KCgkqIGJhc2ljLWJsb2NrLmg6IENvbnZlcnQgcHJvdG90eXBlcyB0byBJU08gQzkwLgoJKiBjLXBhcnNlLmluOiBMaWtld2lzZS4KCSogYy1wcmFnbWEuaDogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmM6IExpa2V3aXNlLgoJKiBjZmdob29rcy5oOiBMaWtld2lzZS4KCSogY2ZnbG9vcGFuYWwuYzogTGlrZXdpc2UuCgkqIGRieG91dC5oOiBMaWtld2lzZS4KCSogZGVidWcuaDogTGlrZXdpc2UuCgkqIGR3YXJmMmFzbS5oOiBMaWtld2lzZS4KCSogZ2Nvdi5jOiBMaWtld2lzZS4KCSogZ2VuZ3R5cGUtbGV4Lmw6IExpa2V3aXNlLgoJKiBzY2hlZC1pbnQuaDogTGlrZXdpc2UuCgkqIHRpbWV2YXIuYzogTGlrZXdpc2UuCgoyMDAzLTA3LTA2ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjLWNvbW1vbi5oIChjX2NvbW9uX2hhbmRsZV9maWxlbmFtZSwKCWNfY29tbW9uX21pc3NpbmdfYXJndWVtZW50KTogTmV3LgoJKiBjLWxhbmcuYyAoTEFOR19IT09LU19IQU5ETEVfRklMRU5BTUUsCglMQU5HX0hPT0tTX01JU1NJTkdfQVJHVU1FTlQpOiBOZXcuCgkqIGMtb3B0cy5jIChtaXNzaW5nX2FyZyk6IFJlbmFtZSBjX2NvbW1vbl9taXNzaW5nX2FyZ3VtZW50LAoJdXBkYXRlIHRvIGJlIGFuIGFwcHJvcHJpYXRlIGxhbmdob29rLgoJKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBEb24ndCBoYW5kbGUgZmlsZW5hbWVzLgoJKGNfY29tbW9uX2hhbmRsZV9maWxlbmFtZSk6IE5ldy4KCSogaG9va3MuYyAoaG9va192b2lkX2NvbnN0Y2hhcnB0ciwKCWhvb2tfYm9vbF9jb25zdGNoYXJwdHJfc2l6ZV90X2ZhbHNlKTogTmV3LgoJKiBob29rcy5oIChob29rX3ZvaWRfY29uc3RjaGFycHRyLAoJaG9va19ib29sX2NvbnN0Y2hhcnB0cl9zaXplX3RfZmFsc2UpOiBOZXcuCgkqIGxhbmdob29rcy1kZWYuaCAoTEFOR19IT09LU19IQU5ETEVfRklMRU5BTUUsCglMQU5HX0hPT0tTX01JU1NJTkdfQVJHVU1FTlQpOiBOZXcuCgkoTEFOR19IT09LU19JTklUSUFMSVpFUik6IFVwZGF0ZS4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzKTogQWRkIGhhbmRsZV9maWxlbmFtZSBhbmQKCW1pc3NpbmdfYXJndW1lbnQuCgkqIG9wdHMuYyAoaGFuZGxlX29wdGlvbik6IERvbid0IGhhbmRsZSBmaWxlbmFtZXMgaGVyZSwgYnV0IC4uLgoJKGhhbmRsZV9vcHRpb25zKTogLi4uIGhlcmUuCgkoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBEb24ndCBoYW5kbGUgbWlzc2luZyBhcmd1bWVudHMgaGVyZS4KCSogb2JqYy9vYmpjLWxhbmcuYyAoTEFOR19IT09LU19IQU5ETEVfRklMRU5BTUUsCglMQU5HX0hPT0tTX01JU1NJTkdfQVJHVU1FTlQpOiBOZXcuCgoyMDAzLTA3LTA2ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtmaWxlLmluOiBSZW1vdmUgdHJhY2VzIG9mIG1iY2hhci4KCSogYy1wYXJzZS5pbiAoTVVMVElCWVRFX0NIQVJTKTogUmVtb3ZlLgoJKiBjb25maWcuaW4gKE1VTFRJQllURV9DSEFSUyk6IFJlbW92ZS4KCSogY29uZmlndXJlOiBSZW1vdmUgLS1lbmFibGUtbWJjaGFyLgoJKiBjb25maWd1cmUuaW46IFJlbW92ZSAtLWVuYWJsZS1tYmNoYXIuCgkqIG1iY2hhci5jLCBtYmNoYXIuaDogUmVtb3ZlLgoJKiBzeXN0ZW0uaDogUG9pc29uIE1VTFRJQllURV9DSEFSUy4KCSogY29uZmlnL2xpbnV4LWFvdXQuaCAoTVVMVElCWVRFX0NIQVJTKTogUmVtb3ZlLgoJKiBjb25maWcvbGludXguaCAoTVVMVElCWVRFX0NIQVJTKTogUmVtb3ZlLgoJKiBjb25maWcvc3ZyNC5oIChNVUxUSUJZVEVfQ0hBUlMpOiBSZW1vdmUuCgkqIGNvbmZpZy9zcGFyYy9saW51eC5oIChNVUxUSUJZVEVfQ0hBUlMpOiBSZW1vdmUuCgoyMDAzLTA3LTA2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiB2YXJyYXkuYyAodmFycmF5X2NoZWNrX2ZhaWxlZCk6IEZpeCB0eXBvLgoKCSogdW5yb2xsLmM6IENvbnZlcnQgcHJvdG90eXBlcyB0byBJU08gQzkwLgoJKiB2YXJhc20uYzogTGlrZXdpc2UuCgkqIHZhcnJheS5jOiBMaWtld2lzZS4KCSogdmFycmF5Lmg6IExpa2V3aXNlLgoJKiB2bXNkYmdvdXQuYzogTGlrZXdpc2UuCgkqIHhjb2Zmb3V0LmM6IExpa2V3aXNlLgoJKiB4Y29mZm91dC5oOiBMaWtld2lzZS4KCjIwMDMtMDctMDYgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnY292LWlvLmg6IEFkZCBhIGxvY2FsIHRpbWUgc3RhbXAuCgkoc3RydWN0IGdjb3ZfaW5mbyk6IEFkZCBzdGFtcCBmaWVsZC4KCShnY292X3RydW5jYXRlKTogTmV3LgoJKiBjb3ZlcmFnZS5jIChyZWFkX2NvdW50c19maWxlKTogU2tpcCB0aGUgc3RhbXAuCgkoY292ZXJhZ2VfYmVnaW5fb3V0cHV0KTogV3JpdGUgdGhlIHN0YW1wLgoJKGJ1aWxkX2djb3ZfaW5mbyk6IERlY2xhcmUgYW5kIGluaXQgdGhlIHN0YW1wLgoJKGNvdmVyYWdlX2ZpbmlzaCk6IE9ubHkgdW5saW5rIGRhdGEgZmlsZSwgaWYgc3RhbXAgaXMgemVyby4KCSogZ2Nvdi1kdW1wLmMgKGR1bXBfZmlsZSk6IER1bXAgdGhlIHN0YW1wLgoJKiBnY292LmMgKGJiZ19zdGFtcCk6IE5ldy4KCShyZWxlYXNlX3N0cnVjdHVyZXMpOiBDbGVhciBiYmdfc3RhbXAuCgkocmVhZF9ncmFwaF9maWxlKTogUmVhZCBzdGFtcC4KCShyZWFkX2NvdW50X2ZpbGUpOiBDaGVjayBzdGFtcC4KCSogbGliZ2Nvdi5jIChnY292X2V4aXQpOiBDaGVjayBzdGFtcCBhbmQgdHJ1bmNhdGUgaWYgbmVlZGVkLgoKMjAwMy0wNy0wNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoZGVmYXVsdF9mbGFnX3JhbmRvbV9zZWVkKTogUmVtb3ZlLgoJKiB0b3BsZXYuaCAobG9jYWxfdGljayk6IERlY2xhcmUuCgkqIHRyZWUuYyAoZmxhZ19yYW5kb21fc2VlZCwgZGVmYXVsdF9mbGFnX3JhbmRvbV9zZWVkKTogTW92ZSB0bwoJdG9wbGV2LmMuCgkoYXBwZW5kX3JhbmRvbV9jaGFycyk6IERvbid0IGNhbGwgZGVmYXVsdF9mbGFnX3JhbmRvbV9zZWVkLgoJKiB0b3BsZXYuYyAoZmxhZ19yYW5kb21fc2VlZCk6IERlZmluZSBoZXJlLiBTZXQgbG9jYWxfdGljay4KCShsb2NhbF90aWNrKTogRGVmaW5lLgoJKHJhbmRvbWl6ZSk6IE5ldywgbW92ZWQgZnJvbSB0cmVlLmMuCgkocHJpbnRfc3dpdGNoX3ZhbHVlcyk6IEFkanVzdC4KCSh0b3BsZXZfbWFpbik6IENhbGwgcmFuZG9taXplLgoKMjAwMy0wNy0wNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoY3JjMzJfc3RyaW5nKTogRGVjbGFyZS4KCSogdHJlZS5jIChhcHBlbmRfcmFuZG9tX2NoYXJzKTogUmVtb3ZlLgoJKGNyYzMyX3N0cmluZyk6IE5ldy4KCShnZXRfZmlsZV9mdW5jdGlvbl9uYW1lX2xvbmcpOiBVc2UgY3JjMzJfc3RyaW5nIGhlcmUuCgoyMDAzLTA3LTA2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBnY2MuYzogQ29udmVydCBwcm90b3R5cGVzIHRvIElTTyBDOTAuCgkqIGdjYy5oOiBMaWtld2lzZS4KCSogZ2Nvdi1kdW1wLmM6IExpa2V3aXNlLgoJKiBnY292LWlvdi5jOiBMaWtld2lzZS4KCSogZ2NzZS5jOiBMaWtld2lzZS4KCSogZ2VuYXR0cnRhYi5oOiBMaWtld2lzZS4KCSogZ2djLmg6IExpa2V3aXNlLgoJKiBnbG9iYWwuYzogTGlrZXdpc2UuCgkqIGdyYXBoLmM6IExpa2V3aXNlLgoJKiBncmFwaC5oOiBMaWtld2lzZS4KCSogaG9zdGhvb2tzLmg6IExpa2V3aXNlLgoJKiBob29rcy5oOiBMaWtld2lzZS4KCSogaG9va3MuYzogTGlrZXdpc2UuCgkqIGhhc2h0YWJsZS5oOiBMaWtld2lzZS4KCSogaGFzaHRhYmxlLmM6IExpa2V3aXNlLgoJKiBoYWlmYS1zY2hlZC5jOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmg6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYzogTGlrZXdpc2UuCgkqIGlucHV0Lmg6IExpa2V3aXNlLgoJKiBpZmN2dC5jOiBMaWtld2lzZS4KCSoganVtcC5jOiBMaWtld2lzZS4KCSogbGFuZ2hvb2tzLWRlZi5oOiBMaWtld2lzZS4gIEFkZCBleHRlcm4gdG8gcHJvdG90eXBlcy4KCSogbGFuZ2hvb2tzLmM6IExpa2V3aXNlLgoJKiBsYW5naG9va3MuaDogTGlrZXdpc2UuCgkqIGxjbS5jOiBMaWtld2lzZS4KCSogbG9jYWwtYWxsb2MuYzogTGlrZXdpc2UuCgkqIGxvb3AtaW5pdC5jOiBMaWtld2lzZS4KCSogbG9vcC11bnJvbGwuYzogTGlrZXdpc2UuCgkqIGxvb3AtdW5zd2l0Y2guYzogTGlrZXdpc2UuCgkqIGxvb3AuYzogTGlrZXdpc2UuCgkqIGxvb3AuaDogTGlrZXdpc2UuIEFkZCBleHRlcm4gdG8gcHJvdG90eXBlcy4KCSogbWFjaG1vZGUuaDogTGlrZXdpc2UuCgkqIG1haW4uYzogTGlrZXdpc2UuCgkqIG1iY2hhci5jOiBMaWtld2lzZS4KCSogbWJjaGFyLmg6IExpa2V3aXNlLgoJKiBta2RlcHMuYzogTGlrZXdpc2UuCgkqIG1rZGVwcy5oOiBMaWtld2lzZS4KCSogb3B0YWJzLmM6IExpa2V3aXNlLgoJKiBvcHRhYnMuaDogTGlrZXdpc2UuCgkqIG91dHB1dC5oOiBMaWtld2lzZS4KCSogZ2Njc3BlYy5jOiBMaWt3aXNlLgoJKiBwb3N0cmVsb2FkLmM6IExpa2V3aXNlLgoJKiBwcmVmaXguYzogTGlrZXdpc2UuCgkqIHByZWZpeC5oOiBMaWtld2lzZS4KCSogcHJpbnQtcnRsLmM6IExpa2V3aXNlLgoJKiBwcmludC10cmVlLmM6IExpa2V3aXNlLgoJKiBwcm9maWxlLmM6IExpa2V3aXNlLgoJKiByZWFkLXJ0bC5jOiBMaWtld2lzZS4KCSogcmVhbC5jOiBMaWtld2lzZS4KCSogcmVhbC5oOiBMaWtld2lzZS4KCSogcmVjb2cuYzogTGlrZXdpc2UuCgkqIHJlY29nLmg6IExpa2V3aXNlLgoJKiByZWctc3RhY2suYzogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmM6IExpa2V3aXNlLgoJKiByZWdtb3ZlLmM6IExpa2V3aXNlLgoJKiByZWdyZW5hbWUuYzogTGlrZXdpc2UuCgkqIHJlZ3MuaDogTGlrZXdpc2UuCgkqIHJlbG9hZC5jOiBMaWtld2lzZS4KCSogcmVsb2FkLmg6IExpa2V3aXNlLgoJKiByZWxvYWQxLmM6IExpa2V3aXNlLgoJKiByZW9yZy5jOiBMaWtld2lzZS4KCSogcmVzb3VyY2UuYzogTGlrZXdpc2UuCgkqIHJlc291cmNlLmg6IExpa2V3aXNlLgoJKiBydGwtZXJyb3IuYzogTGlrZXdpc2UuCgkqIHJ0bC5jOiBMaWtld2lzZS4KCSogcnRsLmg6IExpa2V3aXNlLgoJKiBydGxhbmFsLmM6IExpa2V3aXNlLgoJKiBzYml0bWFwLmM6IExpa2V3aXNlLgoJKiBzYml0bWFwLmg6IExpa2V3aXNlLgoJKiBzY2FuLWRlY2xzLmM6IExpa2V3aXNlLgoJKiBzY2FuLmM6IExpa2V3aXNlLgoJKiBzY2hlZC1kZXBzLmM6IExpa2V3aXNlLgoJKiBzY2hlZC1lYmIuYzogTGlrZXdpc2UuCgkqIHNjaGVkLWludC5oOiBMaWtld2lzZS4KCSogc2NoZWQtcmduLmM6IExpa2V3aXNlLgoJKiBzY2hlZC12aXMuYzogTGlrZXdpc2UuCgkqIHNpYmNhbGwuYzogTGlrZXdpc2UuCgkqIHNpbXBsaWZ5LXJ0eC5jOiBMaWtld2lzZS4KCSogc3JlYWwuYzogTGlrZXdpc2UuCgkqIHNyZWFsLmg6IExpa2V3aXNlLgoJKiBzc2EtY2NwLmM6IExpa2V3aXNlLgoJKiBzc2EtZGNlLmM6IExpa2V3aXNlLgoJKiBzc2EuYzogTGlrZXdpc2UuCgkqIHNzYS5oOiBMaWtld2lzZS4KCSogc3RhY2suaDogTGlrZXdpc2UuCgkqIHN0bXQuYzogTGlrZXdpc2UuCgkqIHN0b3ItbGF5b3V0LmM6IExpa2V3aXNlLgoJKiBzdHJpbmdwb29sLmM6IExpa2V3aXNlLgoJKiB0YXJnZXQuaDogTGlrZXdpc2UuCgkqIHRpbWV2YXIuYzogTGlrZXdpc2UuCgkqIHRpbWV2YXIuaDogTGlrZXdpc2UuCgkqIHRsaW5rLmM6IExpa2V3aXNlLgoJKiB0cmFjZXIuYzogTGlrZXdpc2UuCgkqIHRyZWUtaW5saW5lLmM6IExpa2V3aXNlLgoJKiB0cmVlLWlubGluZS5oOiBMaWtld2lzZS4KCSogdHJlZS5jOiBMaWtld2lzZS4KCSogdHJlZS5oOiBMaWtld2lzZS4KCjIwMDMtMDctMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb21iaW5lLmMgKG5vbnplcm9fYml0czEpOiBGaXggYSB3YXJuaW5nLgoKMjAwMy0wNy0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChjb21wdXRlX21vdl9sZW5ndGgpOiBDb3JyZWN0IHRoZQoJbGVuZ3RoIG9mIGxvYWRpbmcgQ09OU1QwX1JUWCAoU0Ztb2RlKS4KCjIwMDMtMDctMDUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0b3BsZXYuYyAob3V0cHV0X2NsZWFuX3N5bWJvbF9uYW1lKTogUmVtb3ZlLgoJKiB0b3BsZXYuaCAob3V0cHV0X2NsZWFuX3N5bWJvbF9uYW1lKTogUmVtb3ZlLgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAodW5pY29zbWtfb3V0cHV0X21vZHVsZV9uYW1lKTogVXNlCglsYmFzZW5hbWUgJiBjbGVhbl9zeW1ib2xfbmFtZS4KCjIwMDMtMDctMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBnZ2MuaDogRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoJKiBjb25maWcvaTM4Ni9pMzg2LmM6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni93aW5udC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogTGlrZXdpc2UuCgoyMDAzLTA3LTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYnQtbG9hZC5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogYy1pbmNwYXRoLmM6IExpa2V3aXNlLgoJKiBjZmcuYzogTGlrZXdpc2UuCgkqIGNmZ2NsZWFudXAuYzogTGlrZXdpc2UuCgkqIGNmZ2xvb3AuaDogTGlrZXdpc2UuCgkqIGNmZ2xvb3BtYW5pcC5jOiBMaWtld2lzZS4KCSogY2ZncnRsLmM6IExpa2V3aXNlLgoJKiBkaWFnbm9zdGljLmg6IExpa2V3aXNlLgoJKiBkd2FyZm91dC5jOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYzogTGlrZXdpc2UuCgkqIGV0LWZvcmVzdC5jOiBMaWtld2lzZS4KCSogZXQtZm9yZXN0Lmg6IExpa2V3aXNlLgoJKiBleHByLmM6IExpa2V3aXNlLgoJKiBnY3NlLmM6IExpa2V3aXNlLgoJKiBnZW5hdHRyLmM6IExpa2V3aXNlLgoJKiBqdW1wLmM6IExpa2V3aXNlLgoJKiBsYW5naG9va3MuaDogTGlrZXdpc2UuCgkqIGxvY2FsLWFsbG9jLmM6IExpa2V3aXNlLgoJKiBsb29wLXVucm9sbC5jOiBMaWtld2lzZS4KCSogbG9vcC11bnN3aXRjaC5jOiBMaWtld2lzZS4KCSogcmEtYnVpbGQuYzogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmM6IExpa2V3aXNlLgoJKiByZWdtb3ZlLmM6IExpa2V3aXNlLgoJKiBydGwuZGVmOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jOiBMaWtld2lzZS4KCSogc2NoZWQtZWJiLmM6IExpa2V3aXNlLgoJKiBzY2hlZC1yZ24uYzogTGlrZXdpc2UuCgkqIHNpbXBsaWZ5LXJ0eC5jOiBMaWtld2lzZS4KCSogc3NhLmM6IExpa2V3aXNlLgoJKiB0cmFjZXIuYzogTGlrZXdpc2UuCgkqIHRyZWUuYzogTGlrZXdpc2UuCgoyMDAzLTA3LTA1ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3BwY2hhcnNldC5jOiBVc2UgdGhlIGNvcnJlY3QgcmV0dXJuIHR5cGUgZm9yIHRoZSBmYWxsYmFjayBpY29udgoJbWFjcm8uCgoyMDAzLTA3LTA1ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJQmxhbWUgdG8gSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoJKiBjZmdsYXlvdXQuYyAocmVjb3JkX2VmZmVjdGl2ZV9lbmRwb2ludHMpOiBTcGxpdCBpbnNucyBiZWZvcmUKCWZpcnN0IGJhc2ljIGJsb2NrIGNvcnJlY3RseS4KCjIwMDMtMDctMDUgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGV4cGFuZF9leHByLCBjYXNlIENPTVBPTkVOVF9SRUYpOiBXaGVuIHNlZWluZyBpZiBzaG91bGQgdXNlCgliaXRmaWVsZCBvcGVyYXRpb25zLCB1c2UgU1RSSUNUX0FMSUdOTUVOVCwgbm90IFNMT1dfVU5BTElHTkVEX0FDQ0VTUwoJaWYgRVhQQU5EX0NPTlNUX0FERFJFU1Mgb3IgRVhQQU5EX0lOSVRJQUxJWkVSLgoKMjAwMy0wNy0wNSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZ2VuYXR0cnRhYi5jICh3cml0ZV9hdHRyX2dldCk6IFJldmVydCBwYXJ0IG9mIGxhc3QgcGF0Y2ggdG8KCWFsd2F5cyB3cml0ZSBvdXQgYSBwcm90b3R5cGUuCgoJKiBnZW5lbWl0LmMgKGdlbl9zcGxpdCk6IFJlYWRkIGxvc3QgdW51c2VkIGF0dHJpYnV0ZXMgaW4gbGFzdAoJcGF0Y2guCgoyMDAzLTA3LTA1ICBaZGVuZWsgRHZvcmFrICA8cmFrZHZlckBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CgoJKiBjZmdsb29wbWFuaXAuYyAoZm9yY2Vfc2luZ2xlX3N1Y2NfbGF0Y2hlcyk6IEZvcmNlIGxhdGNoIHRvIGJlCglkaWZmZXJlbnQgZnJvbSBoZWFkZXIuCgoyMDAzLTA3LTA1ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogY29uZmlnL202OGsvbTY4ay5jOiBSZW1vdmUgY29kZSBwcm90ZWN0ZWQgYnkgQ1JEUy4KCSogY29uZmlnL202OGsvbTY4ay5tZDogTGlrZXdpc2UuCgoyMDAzLTA3LTA1ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJUFIgZHJpdmVyLzExNDE3CgkqIGMtb3B0cy5jIChwZXJtaXRfZm9ydHJhbl9vcHRpb25zKTogTmV3LgoJKGNfY29tbW9uX2luaXRfb3B0aW9ucyk6IEFjY2VwdCBmb3J0cmFuIGZyb250IGVuZCBvcHRpb25zIGlmCglpdCBsb29rcyBsaWtlIHdlIG1pZ2h0IGJlIHByZXByb2Nlc3NpbmcgRm9ydHJhbi4KCShjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogRG9uJ3QgcmVqZWN0IHN3aXRjaCBpZiBwZXJtaXRfZm90cmFuX29wdGlvbnMuCgoyMDAzLTA3LTA1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnZW5hdHRyLmMgKGludGVybmFsX2RmYV9pbnNuX2NvZGUpOiBPdXRwdXQgcHJvdG90eXBlLgoJKiBnZW5hdHRydGFiLmM6IERvbid0IG91dHB1dCB1bm5lY2Vzc2FyeSBkZWNscywgb3V0cHV0IGluIElTTyBDLgoJKiBnZW5hdXRvbWF0YS5jOiBMaWtld2lzZS4KCSogZ2VuY29uZGl0aW9ucy5jOiBMaWtld2lzZS4KCSogZ2VuZW1pdC5jOiBMaWtld2lzZS4KCSogZ2VuZXh0cmFjdC5jOiBMaWtld2lzZS4KCSogZ2VuZ2VucnRsLmM6IExpa2V3aXNlLgoJKiBnZW5ndHlwZS5jOiBMaWtld2lzZS4KCSogZ2Vub3Bpbml0LmM6IExpa2V3aXNlLgoJKiBnZW5vdXRwdXQuYzogTGlrZXdpc2UuCgkqIGdlbnBlZXAuYzogTGlrZXdpc2UuCgkqIGdlbnJlY29nLmM6IExpa2V3aXNlLgoKMjAwMy0wNy0wNCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwcGxpYi5oIChDUFBfQVRfTkFNRSwgQ1BQX09CSkNfU1RSSU5HKTogTmV3IHRva2VuIHR5cGVzLgoJKHN0cnVjdCBjcHBfb3B0aW9ucyk6IEFkZCBuYXJyb3dfY2hhcnNldCwgd2lkZV9jaGFyc2V0LAoJYnl0ZXNfYmlnX2VuZGlhbiBmaWVsZHMuICBSZW1vdmUgRUJDRElDIGZpZWxkLgoJKGNwcF9pbml0X2ljb252LCBjcHBfaW50ZXJwcmV0X3N0cmluZyk6IE5ldyBleHRlcm5hbCBpbnRlcmZhY2VzLgoKCSogY3BwaGFzaC5oOiBJbmNsdWRlIDxpY29udi5oPiBpZiB3ZSBoYXZlIGl0LCBvdGhlcndpc2UKCXByb3ZpZGUgYSBkdW1teSBkZWZpbml0aW9uIG9mIGljb252X3QuCgkoc3RydWN0IGNwcF9yZWFkZXIpOiBBZGQgbmFycm93X2NzZXRfZGVzYyBhbmQgd2lkZV9jc2V0X2Rlc2MgZmllbGRzLgoJKF9jcHBfdmFsaWRfdWNuKTogVXBkYXRlIHByb3RvdHlwZS4KCShfY3BwX2Rlc3Ryb3lfaWNvbnYpOiBOZXcgcHJvdG90eXBlLgoKCSogZG9jL2NwcC50ZXhpOiBEb2N1bWVudCBjaGFyYWN0ZXIgc2V0IGhhbmRsaW5nLgoJKiBkb2MvY3Bwb3B0cy50ZXhpOiBEb2N1bWVudCAtZmV4ZWMtY2hhcnNldD0gYW5kIC1mZXhlYy13aWRlLWNoYXJzZXQ9LgoJKiBkb2MvZXh0ZW5kLnRleGk6IERlbGV0ZSBlbnRpcmUgc2VjdGlvbiBvbiBtdWx0aWxpbmUgc3RyaW5ncy4KCVJld3JpdGUgc2VjdGlvbiBvbiBfX0ZVTkNUSU9OX18gZXRjIG5vdyB0aGF0IHRoZXNlIGFyZQoJdmFyaWFibGVzIGluIEMuCgoJKiBjcHB1Y25pZC50YWIsIGNwcHVjbmlkLnBsOiBOZXcgZmlsZXMuCgkqIGNwcHVjbmlkLmg6IE5ldyBnZW5lcmF0ZWQgZmlsZS4KCSogY3BwY2hhcnNldC5jOiBJbmNsdWRlIGNwcHVjbmlkLmguICBMb3RzIG9mIGNvbW1lbnRhcnkgYWRkZWQuCgkoaWNvbnZfb3BlbiwgaWNvbnYsIGljb252X2Nsb3NlKTogUHJvdmlkZSBkdW1teSBkZWZpbml0aW9ucwoJaWYgIUhBVkVfSUNPTlYuCgkoU09VUkNFX0NIQVJTRVQsIHN0cnVjdCBzdHJidWYsIGluaXRfaWNvbnZfZGVzYywgY3BwX2luaXRfaWNvbnYsCglfY3BwX2Rlc3Ryb3lfaWNvbnYsIGNvbnZlcnRfY3NldCwgd2lkdGhfdG9fbWFzaywgY29udmVydF91Y24sCgllbWl0X251bWVyaWNfZXNjYXBlLCBjb252ZXJ0X2hleCwgY29udmVydF9vY3QsIGNvbnZlcnRfZXNjYXBlLAoJY3BwX2ludGVycHJldF9zdHJpbmcsIG5hcnJvd19zdHJfdG9fY2hhcmNvbnN0LAoJd2lkZV9zdHJfdG9fY2hhcmNvbnN0KTogTmV3LgoJKHVjbl92YWxpZF9pbl9pZGVudGlmaWVyKTogVXNlIGEgYmluYXJ5IHNlYXJjaCB0aHJvdWdoIHRoZQoJdWNucmFuZ2VzIHRhYmxlIGRlZmluZWQgaW4gY3BwdWNuaWQuaCwgbm90IGEgbG9uZyBjaGFpbiBvZiBpZgoJc3RhdGVtZW50cy4KCShfY3BwX3ZhbGlkX3Vjbik6IEFkZCBhIGxpbWl0IHBvaW50ZXIuICBEb3duZ3JhZGUgInVuaXZlcnNhbAoJY2hhcmFjdGVyIG5hbWVzIGFyZSBvbmx5IHZhbGlkIGluIEMrKyBhbmQgQzk5IiB0byBhIHdhcm5pbmcuCglJc3N1ZSB0aGUgIm1lYW5pbmcgb2YgXFt1VV0gaXMgZGlmZmVyZW50IGluIHRyYWRpdGlvbmFsIEMiCgl3YXJuaW5nIGhlcmUuICBUYWtlIGNhcmUgbm90IHRvIGxldCBpY29udiBzZWUgYW4gaW52YWxpZCBVQ1MKCXZhbHVlIGlmIHdlIGdldCBhIG1hbGZvcm1lZCBVQ04uICBJc3N1ZSBhbiBlcnJvciBpZiB3ZSBkb24ndAoJaGF2ZSBpY29udi4KCShjcHBfaW50ZXJwcmV0X2NoYXJjb25zdCk6IE1vdmVkIGhlcmUgZnJvbSBjcHBsZXguYy4gIFVzZQoJY3BwX2ludGVycHJldF9zdHJpbmcgdG8gZG8gdGhlIGhlYXZ5IGxpZnRpbmcuCgoJKiBjcHBpbml0LmMgKGNwcF9jcmVhdGVfcmVhZGVyKTogSW5pdGlhbGl6ZSBieXRlc19iaWdfZW5kaWFuLAoJbmFycm93X2NoYXJzZXQsIHdpZGVfY2hhcnNldCBmaWVsZHMgb2Ygb3B0aW9ucyBzdHJ1Y3R1cmUuCgkoY3BwX2Rlc3Ryb3kpOiBDYWxsIF9jcHBfZGVzdHJveV9pY29udi4KCSogY3BwbGV4LmMgKGZvcm1zX2lkZW50aWZpZXJfcCk6IEFkanVzdCBjYWxsIHRvIF9jcHBfdmFsaWRfdWNuLgoJKG1heWJlX3JlYWRfdWNuLCBoZXhfZGlnaXRfdmFsdWUsIGNwcF9wYXJzZV9lc2NhcGUpOiBEZWxldGUuCgkoY3BwX2ludGVycHJldF9jaGFyY29uc3QpOiBNb3ZlZCB0byBjcHBjaGFyc2V0LmMuCgkqIGNwcGxpYi5jIChkZXF1b3RlX3N0cmluZyk6IERlbGV0ZS4KCShpbnRlcnByZXRfc3RyaW5nX25vdHJhbnNsYXRlKTogTmV3LgoJKGRvX2xpbmUsIGRvX2xpbmVtYXJrZXIpOiBVc2UgaW50ZXJwcmV0X3N0cmluZ19ub3RyYW5zbGF0ZS4KCgkqIE1ha2VmaWxlLmluIChjcHBjaGFyc2V0Lm8pOiBEZXBlbmQgb24gY3BwdWNuaWQuaC4KCgkqIGMtY29tbW9uLmMgKGZuYW1lX3N0cmluZywgY29tYmluZV9zdHJpbmdzKTogRGVsZXRlLgoJKiBjLWNvbW1vbi5oIChmbmFtZV9zdHJpbmcsIGNvbWJpbmVfc3RyaW5ncyk6IERlbGV0ZSBwcm90b3R5cGVzLgoJKiBjLWxleC5jIChpZ25vcmVfZXNjYXBlX2ZsYWcpOiBEZWxldGUuCgkoY2JfaWRlbnQpOiBVc2UgY3BwX2ludGVycHJldF9zdHJpbmcsIG5vdCBsZXhfc3RyaW5nLgoJKGdldF9ub25wYWRkaW5nX3Rva2VuKTogTmV3IGZ1bmN0aW9uLgoJKGNfbGV4KTogSGFuZGxlIE9iamVjdGl2ZS1DIEAtcHJlZml4ZWQgaWRlbnRpZmllcnMgYW5kIHN0cmluZ3MgaGVyZS4KCUFkanVzdCBjYWxscyB0byBsZXhfc3RyaW5nLiAgRG9uJ3Qgd3JpdGUgKnZhbHVlIHR3aWNlLgoJKGxleF9zdHJpbmcpOiBOb3cgaGFuZGxlcyBzdHJpbmcgY29uc3RhbnQgY29uY2F0ZW5hdGlvbi4KCU1vc3Qgb2YgdGhlIHdvcmsgaGFuZGVkIG9mZiB0byBjcHBfaW50ZXJwcmV0X3N0cmluZy4KCUNhbGwgZml4X3N0cmluZ190eXBlIGhlcmUuCgkqIGMtcGFyc2UuaW4gKFNUUklOR19GVU5DX05BTUUsIFZBUl9GVU5DX05BTUUpOiBSZXBsYWNlIHdpdGgKCUZVTkNfTkFNRSwgdGhyb3VnaG91dC4KCShPQkpDX1NUUklORyk6IE5ldyB0b2tlbiB0eXBlLgoJKHByaW1hcnk6U1RSSU5HKTogTm8gbmVlZCB0byBjYWxsIGZpeF9zdHJpbmdfdHlwZSBoZXJlLgoJKHByaW1hcnk6b2JqY19zdHJpbmcpOiBNYWtlIHRoYXQgT0JKQ19TVFJJTkcuCgkob2JqY19zdHJpbmcgbm9udGVybWluYWwpOiBEZWxldGUuCgkoeXlsZXhuYW1lKTogRGVsZXRlIGNvZGUgdG8gaGFuZGxlIGZha2Ugc3RyaW5nIGNvbnN0YW50cy4KCSh5eWxleHN0cmluZyk6IERlbGV0ZSBlbnRpcmVseS4KCShfeXlsZXgpOiBIYW5kbGUgQ1BQX0FUX05BTUUgYW5kIENQUF9PQkpDX1NUUklORy4gIE5vIG5lZWQKCXRvIGhhbmRsZSBDUFBfQVRTSUdOLgoKCSogYy5vcHQgKC1mZXhlYy1jaGFyc2V0PSwgLWZ3aWRlLWV4ZWMtY2hhcnNldD0pOiBOZXcgb3B0aW9ucy4KCSogYy1vcHRzLmMgKG1pc3NpbmdfYXJnLCBjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlCglPUFRfZmV4ZWNfY2hhcnNldF8gYW5kIE9QVF9md2lkZV9leGVjX2NoYXJzZXRfLgoJKGNfY29tbW9uX2luaXQpOiBTZXQgY3BwX29wdHMtPmJ5dGVzX2JpZ19lbmRpYW4sIG5vdAoJY3BwX29wdHMtPkVCQ0RJQy4gIENhbGwgY3BwX2luaXRfaWNvbnYuCgkocHJpbnRfaGVscCk6IERvY3VtZW50IC1mZXhlYy1jaGFyc2V0PSBhbmQgLWZleGVjLXdpZGUtY2hhcnNldD0uCgkoVEFSR0VUX0VCQ0RJQyk6IERlbGV0ZSBkZWZhdWx0IGRlZmluaXRpb24uCgoJKiBvYmpjL29iamMtYWN0LmMgKGJ1aWxkX29iamNfc3RyaW5nX29iamVjdCk6IE5vIG5lZWQgdG8KCWhhbmRsZSBzdHJpbmcgY29uc3RhbnQgY29uY2F0ZW5hdGlvbi4KCjIwMDMtMDctMDQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBGaXggdHlwb3MuCgkqIGRvYy9pbnZva2UudGV4aTogTGlrZXdpc2UuCgkqIGRvYy90bS50ZXhpOiBMaWtld2lzZS4KCjIwMDMtMDctMDQgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjb25maWcvcGEvZnB0ci5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogY29uZmlnL3BhL3BhLTY0Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvcGEvcGEuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9wYS9wYS5oOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC82MDMubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwLzd4eC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL2ZyZWVic2QuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmM6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvc3BlLmg6IExpa2V3aXNlLgoKMjAwMy0wNy0wNCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvMjA2NC5tZDogQ2hhbmdlIEdOVSBDQyB0byBHQ0MuCgkqIGNvbmZpZy9zMzkwLzIwODQubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9maXhkZmRpLmg6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9saW51eC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC1tb2Rlcy5kZWY6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5jOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3MzOTAvczM5MC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3MzOTB4Lmg6IExpa2V3aXNlLgoKMjAwMy0wNy0wNCAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCglQUiBjLzExNDI4CgkqIGV4cHIuYyAoZG9fc3RvcmVfZmxhZyk6IFBhc3MgaW4gdGhlIGNvcnJlY3QgcmVzdWx0IHR5cGUKCXdoZW4gY2FsbGluZyBmb2xkX3NpbmdsZV9iaXRfdGVzdC4KCSogZm9sZC1jb25zdC5jIChmb2xkX3NpbmdsZV9iaXRfdGVzdCk6IFVzZSByZXN1bHRfdHlwZSBmb3IgdGhlCglyZXN1bHQgd2hlbiBmb2xkaW5nIGEgc2lnbiBiaXQgdGVzdC4KCjIwMDMtMDctMDQgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIG9wdHMuYyAoY29tbW9uX2hhbmRsZV9vcHRpb25zKTogTmVnYXRlIHNlbnNlIG9mIC1mYWxpZ24tIHN3aXRjaGVzLgoKMjAwMy0wNy0wNCAgSC5KLiBMdSA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmVwbGFjZSBQV0Qgd2l0aCBQV0RfQ09NTUFORC4KCjIwMDMtMDctMDQgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGNmZ2xvb3BhbmFsLmMgKGNvdW50X3N0cmFuZ2VfbG9vcF9pdGVyYXRpb25zKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShjb25zdGFudF9pdGVyYXRpb25zLCBjb3VudF9sb29wX2l0ZXJhdGlvbnMsIHNpbXBsZV9sb29wX2V4aXRfcCk6CglIYW5kbGUgc3RyYW5nZSBsb29wcy4KCjIwMDMtMDctMDQgIFRvb24gTW9lbmUgIDx0b29uQG1vZW5lLmluZGl2Lm5sdXVnLm5sPgoKCSogaW5zdGFsbC50ZXhpOiBFdmVuIHRoZSBnNzcgbWFucGFnZSBpcyBkZXJpdmVkIGZyb20KCXRoZSBmdWxsIGc3NyBtYW51YWwuCgoyMDAzLTA3LTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogQUJPVVQtTkxTOiBEZWxldGUuCgkqIGludGw6IERlbGV0ZSBlbnRpcmUgZGlyZWN0b3J5LgoJKiBhY2xvY2FsLm00OiBJbmNsdWRlIC4uL2NvbmZpZy9nZXR0ZXh0Lm00LiAgRGVsZXRlCglBQ19JU0NfUE9TSVgsIEFNX0xBTkdJTkZPX0NPREVTRVQsIGptX0dMSUJDMjEsIEFNX0xDX01FU1NBR0VTLAoJQU1fUEFUSF9QUk9HX1dJVEhfVEVTVCwgQU1fV0lUSF9OTFMsIGFuZCBBTV9HTlVfR0VUVEVYVC4KCSogY29uZmlndXJlLmluOiBVc2UgQ1lfR05VX0dFVFRFWFQsIG5vdCBBTV9HTlVfR0VUVEVYVC4KCVJlbW92ZSBpbnRsL01ha2VmaWxlIGZyb20gYWxsX291dHB1dHMuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBNYWtlZmlsZS5pbjogRXhwdW5nZSBhbGwgcmVmZXJlbmNlcyB0byBpbnRsIHN1YmRpcmVjdG9yeS4KCUFkZCAtSS4uL2ludGwgdG8gSU5DTFVERVMuCgkqIGludGwuaDogSW5jbHVkZSBsaWJpbnRsLmggaWYgYW5kIG9ubHkgaWYgRU5BQkxFX05MUyBpcyBkZWZpbmVkLgoKMjAwMy0wNy0wNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvcnM2MDAwL2FpeDUxLmggKFRBUkdFVF9DOTlfRlVOQ1RJT05TKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL2FpeDUyLmggKFRBUkdFVF9DOTlfRlVOQ1RJT05TKTogTGlrZXdpc2UuCgoyMDAzLTA3LTA0ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGMrKy81Mjg3LCBQUiBjKysvNzkxMCwgUFIgYysrLzExMDIxCgkqIGNvbmZpZy9pMzg2L3dpbm50LmMgKGl4ODZfaGFuZGxlX2RsbF9hdHRyaWJ1dGUpOiBEb24ndCBhZGQKCWRsbGltcG9ydCBhdHRyaWJ1dGUgaWYgZnVuY3Rpb24gaXMgZGVmaW5lZCBhdCBkZWNsYXJhdGlvbiwgYnV0CglyZXBvcnQgZXJyb3IgaW5zdGVhZC4gTGlrZXdpc2UgZm9yIGRsbGltcG9ydCdkIHZhcmlhYmxlCglkZWZpbml0aW9ucy4gIFNldCBpbXBsaWNpdCBUUkVFX1BVQkxJQyBmb3IgZGxsaW1wb3J0J2QgdmFyaWFibGVzCglkZWNsYXJlZCB3aXRoaW4gZnVuY3Rpb25zLCBSZXBvcnQgZXJyb3IgaWYgZGxsaW1wb3J0IG9yIGRsbGV4cG9ydAoJc3ltYm9sIGlzIG5vdCBnbG9iYWwuCgkoaTM4Nl9wZV9kbGxpbXBvcnRfcCk6IElnbm9yZSBkbGxpbXBvcnQgYXR0cmlidXRlIG9mIGZ1bmN0aW9ucwoJaWYgZGVmaW5lZCBhZnRlciBkZWNsYXJhdGlvbiBvciBpZiBpbmxpbmVkLiBEb24ndCBhbGxvdyBkZWZpbml0aW9uCglvZiBzdGF0aWMgZGF0YSBtZW1iZXJzIG9mIEMrKyBjbGFzc2VzLiBEb24ndCBkbGxpbXBvcnQgdmlydHVhbAoJbWV0aG9kcy4KCShpMzg2X3BlX21hcmtfZGxsZXhwb3J0KTogV2FybiBhYm91dCBpbmNvbnNpc3RlbnQgZGxsIGF0dHJpYnV0ZXMuCgkoaTM4Nl9wZV9tYXJrX2RsbGltcG9ydCk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBjaGVja3MuCgkoaTM4Nl9wZV9lbmNvZGVfc2VjdGlvbl9pbmZvKTogV2FybiBpZiB0aGUgZGxsaW1wb3J0IGF0dHJpYnV0ZQoJYW5kIHN5bWJvbCBwcmVmaXggaGF2ZSBiZWVuIGluc3RhbnRpYXRlZCBhbmQgdGhlbiBvdmVycmlkZGVuLgoKCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBkbGxpbXBvcnQgYW5kIGRsbGV4cG9ydCBhdHRyaWJ1dGVzLgoKCSogY29uZmlnL2kzODYvd2lubnQuYyAoaTM4Nl9wZV9vdXRwdXRfbGFiZWxyZWYpOiBGaXggaW5kZW50cy4KCjIwMDMtMDctMDMgVXdlIFN0aWViZXIgPHV3ZUBrYW9zLWdyb3VwLmRlPgoKCSogY29uZmlnL2thb3MuaCAoQ1BQX1BSRURFRklORVMpOiBEZWxldGUuCgkoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IE5ldy4KCjIwMDMtMDctMDMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtYXV4LWluZm8uYzogSW5jbHVkZSB0b3BsZXYuaCBhZnRlciBjLXRyZWUuaC4KCSogYy1jb21tb24uYzogTGlrZXdpc2UuCgkoR0NDX0RJQUdfU1RZTEUpOiBVbmRlZi4KCSogYy1zZW1hbnRpY3MuYyAoR0NDX0RJQUdfU1RZTEUpOiBEZWZpbmUuCgkqIGMtdHJlZS5oIChHQ0NfRElBR19TVFlMRSk6IExpa2V3aXNlLgoJKiBkaWFnbm9zdGljLmggKGluZm9ybSk6IE1vdmUgcHJvdG90eXBlIHRvIHRvcGxldi5oLgoJKiBqdW1wLmM6IEluY2x1ZGUgZGlhZ25vc3RpYy5oIGJlZm9yZSB0b3BsZXYuaC4KCSogdG9wbGV2LmggKEdDQ19ESUFHX1NUWUxFLCBBVFRSSUJVVEVfR0NDX0RJQUcpOiBEZWZpbmUuCgkod2FybmluZywgZXJyb3IsIGZhdGFsX2Vycm9yLCBwZWR3YXJuLCBzb3JyeSwgaW5mb3JtLAoJZXJyb3JfZm9yX2FzbSwgd2FybmluZ19mb3JfYXNtKTogTWFyayB3aXRoIEFUVFJJQlVURV9HQ0NfQ1hYRElBRy4KCjIwMDMtMDctMDMgIFpkZW5layBEdm9yYWsgIDxyYWtkdmVyQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KCgkqIGNmZ2xheW91dC5jIChjZmdfbGF5b3V0X2R1cGxpY2F0ZV9iYik6IERvIG5vdCB1cGRhdGUgZnJlcXVlbmNpZXMKCWF0IGFsbCBpZiBlZGdlIGlzIG5vdCBzcGVjaWZpZWQuCgkoY2FuX2NvcHlfYmJzX3AsIGNvcHlfYmJzKTogTmV3LgoJKiBjZmdsYXlvdXQuaCAoY2FuX2NvcHlfYmJzX3AsIGNvcHlfYmJzKTogRGVjbGFyZS4KCSogY2ZnbG9vcC5jIChnZXRfbG9vcF9ib2R5KTogQ29tbWVudCBtb3JlIHByZWNpc2VseS4KCSogY2ZnbG9vcG1hbmlwLmMgKGNvcHlfYmJzLCByZWNvcmRfZXhpdF9lZGdlcyk6IFJlbW92ZWQuCgkoc2NhbGVfYmJzX2ZyZXF1ZW5jaWVzKTogRml4IGNvbW1lbnQgdHlwby4KCShjYW5fZHVwbGljYXRlX2xvb3BfcCk6IFVzZSBjYW5fY29weV9iYnNfcC4KCShkdXBsaWNhdGVfbG9vcF90b19oZWFkZXJfZWRnZSk6IFNpbXBsaWZ5IGJ5IHVzaW5nIGNvcHlfYmJzLgoKMjAwMy0wNy0wMyAgRGV2YW5nIFBhdGVsIDxkcGF0ZWxAYXBwbGUuY29tPgoKCSogYy1vcHRzLmMgKGNfY29tbW9uX3BhcnNlX2ZpbGUpOiBSZW1vdmUgZXh0cmEKCWRlYnVnX2hvb2tzLT5zdGFydF9zb3VyY2VfZmlsZSBjYWxsLgoKMjAwMy0wNy0wMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiByZWFsLmMgKHJlYWxfdHJ1bmMsIHJlYWxfZmxvb3IsIHJlYWxfY2VpbCk6IE5ldyBmdW5jdGlvbnMKCXRvIGltcGxlbWVudCB0cnVuYywgZmxvb3IgYW5kIGNlaWwgcmVzcGVjdGl2ZWx5LgoJKiByZWFsLmggKHJlYWxfdHJ1bmMsIHJlYWxfZmxvb3IsIHJlYWxfY2VpbCk6IFByb3RvdHlwZSBoZXJlLgoJKiBidWlsdGlucy5jIChpbnRlZ2VyX3ZhbHVlZF9yZWFsX3ApOiBOZXcgZnVuY3Rpb24gdG8gdGVzdCBpZgoJYSBmbG9hdGluZyBwb2ludCBleHByZXNzaW9uIGhhcyBhbiBpbnRlZ2VyIHZhbHVlZCByZXN1bHQuCgkoZm9sZF90cnVuY190cmFuc3BhcmVudF9tYXRoZm4pOiBPcHRpbWl6ZSBmb28oZm9vKHgpKSBhcwoJZm9vKHgpIHdoZXJlIGZvbyBpcyBhbiBpbnRlZ2VyIHJvdW5kaW5nIGZ1bmN0aW9uLiAgU2ltaWxhcmx5LAoJb3B0aW1pemUgZm9vKGJhcih4KSkgYXMgYmFyKHgpLCBhbmQgZm9vKChkb3VibGUpKGludCl4KSBhcwoJKGRvdWJsZSkoaW50KXggd2hlbiBib3RoIGZvbyBhbmQgYmFyIGFyZSBpbnRlZ2VyIHJvdW5kaW5nCglmdW5jdGlvbnMgYW5kIHdlIGRvbid0IG5lZWQgdG8gaG9ub3IgZXJybm8uCgkoZm9sZF9idWlsdGluX3RydW5jLCBmb2xkX2J1aWx0aW5fZmxvb3IsIGZvbGRfYnVpbHRpbl9jZWlsKToKCU5ldyBmdW5jdGlvbnMgdG8gZm9sZCB0cnVuYywgZmxvb3IgYW5kIGNlaWwuCgkoZm9sZF9idWlsdGluKTogVXNlIGZvbGRfYnVpbHRpbl90cnVuYyB0byBmb2xkIEJVSUxUX0lOX1RSVU5DKiwKCWZvbGRfYnVpbHRpbl9mbG9vciB0byBmb2xkIEJVSUxUX0lOX0ZMT09SKiBhbmQgZm9sZF9idWlsdGluX2NlaWwKCXRvIGZvbGQgQlVJTFRfSU5fQ0VJTCouCgkqIGZvbGQtY29uc3QuYyAodHJlZV9leHByX25vbm5lZ2F0aXZlX3ApOiBIYW5kbGUgRkxPQVRfRVhQUiBhbmQKCXRoZSByZW1haW5pbmcgaW50ZWdlciByb3VuZGluZyBmdW5jdGlvbnMuCgoyMDAzLTA3LTAzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGZ1bmN0aW9uX2FyZ19wYXJ0aWFsX25yZWdzKTogVXNlCglTUEFSQ19JTlRfQVJHX01BWCB0byBkZXRlcm1pbmUgd2hlcmUgdG8gc3BsaXQgdW5uYW1lZAoJY29tcGxleCBGUCBhcmd1bWVudHMuCgoyMDAzLTA3LTAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBiYXNpYy1ibG9jay5oIChjcmVhdGVfYmFzaWNfYmxvY2ssIG1lcmdlX2Jsb2Nrc19ub21vdmUpOiBLaWxsLgoJKiBjZmdjbGVhbnVwLmMgKG1lcmdlX2Jsb2Nrcyk6IFJlbmFtZSB0byBtZXJnZV9ibG9ja3NfbW92ZS4KCShtZXJnZV9ibG9ja3NfbW92ZV9wcmVkZWNlc3Nvcl9ub2p1bXBzLAoJIG1lcmdlX2Jsb2Nrc19tb3ZlX3N1Y2Nlc3Nvcl9ub2p1bXBzKTogVXNlIG1lcmdlX2Jsb2Nrcy4KCSh0cnlfb3B0aW1pemVfY2ZnKTogVXNlIG1lcmdlX2Jsb2Nrc19tb3ZlLgoJKiBjZmdydGwuYyAoY3JlYXRlX2Jhc2ljX2Jsb2NrKTogUmVuYW1lIHRvIHJ0bF9jcmVhdGVfYmFzaWNfYmxvY2suCgkobWVyZ2VfYmxvY2tzX25vbW92ZSk6IFJlbmFtZSB0byBydGxfbWVyZ2VfYmxvY2tzLgoJKGNmZ19sYXlvdXRfY3JlYXRlX2Jhc2ljX2Jsb2NrKTogTmV3LgoJKHJ0bF9jYW5fbWVyZ2VfYmxvY2tzKTogTmV3LgoJKGNmZ19sYXlvdXRfc3BsaXRfYmxvY2spOiBEbyBub3QgYWxsb2MgYXV4IGJ5IGhhbmQuCgkqIGNmZ2hvb2tzLmggKGNmZ19ob29rcyk6IEFkZCBjcmVhdGVfYmFzaWNfYmxvY2ssIGNhbl9tZXJnZV9ibG9ja3NfcCwKCW1lcmdlX2Jsb2Nrcy4KCShjcmVhdGVfYmFzaWNfYmxvY2ssIGNhbl9tZXJnZV9ibG9ja3NfcCwgbWVyZ2VfYmxvY2tzKTogTmV3IG1hY3Jvcy4KCSogY2ZnbGF5b3V0LmMgKGNmZ19sYXlvdXRfZHVwbGljYXRlX2JiKTogRG8gbm90IGFsbG9jYXRlIGF1eCBieSBoYW5kLgoJKiBjZmdsb29wbWFuaXAuYyAobG9vcF9zcGxpdF9lZGdlX3dpdGgpOiBMaWtld2lzZS4KCSogaWZjdnQuYyAobWVyZ2VfaWZfYmxvY2spOiBVc2UgbWVyZ2VfYmxvY2tzX25vbW92ZS4KCgkqIGJhc2ljLWJsb2NrLmggKGJhc2ljX2Jsb2NrX2RlZik6IEFkZCBmaWVsZCAncmJpJy4KCSogYmItcmVvcmRlci5jIChmaW5kX3RyYWNlcywgcm90YXRlX2xvb3AsIG1hcmtfYmJfdmlzaXRlZCwKCWZpbmRfdHJhY2VzXzFfcm91bmQsIGNvcHlfYmIsIGNvbm5lY3RfdHJhY2VzKTogVXBkYXRlIHVzZSBvZiByYmkuCgkqIGNmZy5jIChlbnRyeV9leGl0X2Jsb2Nrcyk6IEFkZCBuZXcgZmllbGQuCgkqIGNmZ2xheW91dC5jOiBJbmNsdWRlIGFsbG9jLXBvb2wuaDsKCShjZmdfbGF5b3V0X3Bvb2wpOiBOZXcuCgkocmVjb3JkX2VmZmVjdGl2ZV9lbmRwb2ludHMsIGZpeHVwX3Jlb3JkZXJfY2hhaW4sCglmaXh1cF9mYWxsdGhydV9leGl0X3ByZWRlY2Vzc29yLCBjZmdfbGF5b3V0X2R1cGxpY2F0ZV9iYik6IFVwZGF0ZSB1c2UKCW9mIHJiaS4KCShjZmdfbGF5b3V0X2luaXRpYWxpemVfcmJpKTogTmV3IGZ1bmN0aW9uLgoJKGNmZ19sYXlvdXRfaW5pdGlhbGl6ZSk6IFVzZSBpdC4KCShjZmdfbGF5b3V0X2ZpbmFsaXplKTogQ2xlYXIgcmJpIGZpZWxkcy4KCSogY2ZnbGF5b3V0LmggKFJCSSk6IEtpbGwuCgkoY2ZnX2xheW91dF9pbml0aWFsaXplX3JiaSk6IERlY2xhcmUuCgkqIGNmZ2xvb3BtYW5pcC5jIChjb3B5X2Jicyk6IFVzZSByYmkuCgkocmVjb3JkX2V4aXRfZWRnZXMpOiBMaWtld2lzZS4KCShkdXBsaWNhdGVfbG9vcF90b19oZWFkZXJfZWRnZSk6IExpa2V3aXNlLgoJKiBjZmdydGwuYyAoY2ZnX2xheW91dF9jcmVhdGVfYmFzaWNfYmxvY2spOiBVc2UKCWNmZ19sYXlvdXRfaW5pdGlhbGl6ZV9yYmkuCgkoY2ZnX2xheW91dF9zcGxpdF9ibG9jayk6IFVzZSByYmkuCgkoY2ZnX2xheW91dF9kZWxldGVfYmxvY2spOiBMaWtld2lzZS4KCSogbG9vcC1pbml0LmMgKGxvb3Bfb3B0aW1pemVyX2ZpbmFsaXplKTogTGlrZXdpc2UuCgkqIGxvb3AtdW5zd2l0Y2guYyAodW5zd2l0Y2hfbG9vcCk6IExpa2V3aXNlLgoJKiB0cmFjZXIuYyAoc2VlbiwgdGFpbF9kdXBsaWNhdGUsIGxheW91dF9zdXBlcmJsb2Nrcyk6IExpa2V3aXNlLgoKCSogY2ZncnRsLmM6IFVwZGF0ZSBjb21tZW50cy4KCSh0cnlfcmVkaXJlY3RfYnlfcmVwbGFjaW5nX2p1bXApOiBOZXcgYXJndW1lbnQuCgkocmVkaXJlY3RfYnJhbmNoX2VkZ2UpOiBCcmVhayBvdXQgZnJvbSAuLi4KCShydGxfcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoKTogLi4uIHRoaXMgb25lLgoJKHVwZGF0ZV9jZmdfYWZ0ZXJfYmxvY2tfbWVyZ2luZyk6IEJyZWFrIG91dCBmcm9tIC4uLgoJKHJ0bF9tZXJnZV9ibG9ja3MpOiAuLi4gdGhpcyBvbmUuCgkoY2ZnX2xheW91dF9zcGxpdF9lZGdlKTogTmV3LgoJKGNmZ19sYXlvdXRfbWVyZ2VfYmxvY2tzKTogTmV3LgoJKGNmZ19sYXlvdXRfY2FuX21lcmdlX2Jsb2Nrc19wKTogTmV3LgoJKGNmZ19sYXlvdXRfcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoKTogUmVvcmdhbml6ZS4KCShjZmdfbGF5b3V0X3J0bF9jZmdfaG9va3MpOiBGaWxsIGluLgoJKGNmZ19sYXlvdXRfZGVsZXRlX2Jsb2NrKTogS2lsbCBiYXJyaWVycy4KCSogY2ZnYW5hbC5jIChjYW5fZmFsbHRocnUpOiBEZWFsIHdpdGggZXhpdCBibG9ja3MKCSogY2ZnbGF5b3V0LmMgKGNmZ19sYXlvdXRfZnVuY3Rpb25faGVhZGVyKTogTmV3IGZ1bmN0aW9uCgkocmVjb3JkX2VmZmVjdGl2ZV9lbmRwb2ludHMpOiBSZWNvcmQgZnVuY3Rpb24gaGVhZGVyLgoJKGZpeHVwX3Jlb3JkZXJfY2hhaW4pOiBGaXh1cCBkZWFkIGp1bXB0YWJsZXM7IHBsYWNlIGhlYWRlcgoKCSogYmFzaWMtYmxvY2suaCAoQ0xFQU5VUF9DRkdMQVlPVVQpOiBOZXcgZmxhZy4KCSogYmItcmVvcmRlci5jIChjZmdfbGF5b3V0X2luaXRpYWxpemUpOiBVcGRhdGUgY2FsbC4KCSogY2ZnY2xlYW51cC5jICh0cnlfb3B0aW1pemVfY2ZnKTogU3VwcmVzcyBvcHRpbWl6YXRpb25zIG9mIGZhbGx0aHJ1CgllZGdlcyBpbiBjZmdsYXlvdXQgbW9kZS4KCSogY2ZnbGF5b3V0LmMgKGNsZWFudXBfdW5jb25kaXRpb25hbF9qdW1wcyk6IEtpbGwuCgkoY2ZnX2xheW91dF9pbml0aWFsaXplKTogS2lsbCBhZ3J1bWVudCBsb29wczsgdXNlIGNmZ2NsZWFudXAuCgkqIGNmZ2xheW91dC5oIChjZmdfbGF5b3V0X2luaXRpYWxpemUpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBjZmdsb29wLmggKENQX0lOU0lERV9DRkdMQVlPVVQpOiBLaWxsLgoJKiBjZmdsb29wbWFuaXAuYyAobG9vcF9zcGxpdF9lZGdlX3dpdGgpOiBVc2Ugc3BsaXRfZWRnZS4KCSogZmxvdy5jIChwcm9wYWdhdGVfYmxvY2spOiBEbyBub3QgY3Jhc2ggd2hlbiBiYXNpYyBibG9jayBlbmRzCglieSBmaXJzdCBpbnNuIGluIHRoZSBjaGFpbi4KCSogbG9vcC1pbml0LmMgKGxvb3Bfb3B0aW1pemVyX2luaXQpOiAgRmlyc3QgZW50ZXIgY2ZnbGF5b3V0IG1vZGU7IGxhdGVyCglkbyBsb29wIGRpc2NvdmVyeS4KCSogdHJhY2VyLmMgKHRyYWNlcik6IFVwZGF0ZSBjYWxsIG9mIGNmZ19sYXlvdXRfaW5pdGlhbGl6ZS4KCjIwMDMtMDctMDMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluOiBVc2UgZGVwZW5kZW5jeSB2YXJpYWJsZXMgaW4gbGlldSBvZiBleHBsaWNpdAoJZmlsZXMgdGhyb3VnaG91dC4KCjIwMDMtMDctMDMgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCgkqIHJ0bC5oIChFQ0ZfKiwgZmxhZ3NfZnJvbV9kZWNsX29yX3R5cGUpOiBNb3ZlIGZyb20gaGVyZS4uLgoJKiB0cmVlLmg6IC4uLnRvIGhlcmUuCgoyMDAzLTA3LTAzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL3MzOTAvMjA2NC5tZDogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGNvbmZpZy9zMzkwLzIwODQubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLmM6IExpa2V3aXNlLgoJKiBjb25maWcvczM5MC9zMzkwLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmM6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmg6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5oOiBMaWtld2lzZS4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteS1hYmk6IEZpeCBhIHR5cG8uCgoyMDAzLTA3LTAzICBLZWxsZXkgQ29vayAgPGtlbGxleWNvb2tAd2lkZW9wZW53ZXN0Lm9yZz4KCgkqIE1ha2VmaWxlLmluIChpZmN2dC5vKTogRGVwZW5kIG9uIE9QVEFCU19ILgoKMjAwMy0wNy0wMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChzYXZlX2FyZ3YpOiBEZWxldGUuCgoyMDAzLTA3LTAzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiB0YXJnZXQvMTA3MDAKCSogZm9sZC1jb25zdC5jIChleHRyYWN0X211bGRpdl8xKTogVGhlcmUncyBub3RoaW5nIHRoYXQgY2FuIGJlIGRvbmUKCWlmIHRoZSBleHByZXNzaW9uIGlzIGEgU0FWRV9FWFBSLgoKMjAwMy0wNy0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuYzogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsuYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9tY29yZS9tY29yZS5jOiBMaWtld2lzZS4KCSogY29uZmlnL21jb3JlL21jb3JlLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmM6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbmV0YnNkLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmM6IExpa2V3aXNlLgoKMjAwMy0wNy0wMyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGRieG91dC5jIChwZW5kaW5nX2JpbmNscyk6IE1vdmUgZGVjbCBkb3duIGluc2lkZQoJREJYX0RFQlVHR0lOR19JTkZPIHx8IFhDT0ZGX0RFQlVHR0lOR19JTkZPIHNlY3Rpb24uCgoyMDAzLTA3LTAyICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcnRsLmggKE5PVEVfREFUQSk6IFJlZmVyIHRvIHdob2xlIHVuaW9uLgoJKiBlbWl0LXJ0bC5jIChlbWl0X25vdGUpOiBVc2UgbWVtc2V0IHRvIGNsZWFyIE5PVEVfREFUQS4KCjIwMDMtMDctMDMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgb3B0aW1pemF0aW9uLzExMzgxCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9yZWxhdGlvbmFsX29wZXJhdGlvbik6IENoZWNrIHRoYXQKCXR3byBlcXVhbCBvcGVyYW5kcyBoYXZlIG5vIHNpZGUtZWZmZWN0cyBiZWZvcmUgc2ltcGxpZnlpbmcKCXRoZSBjb21wYXJpc29uLgoKMjAwMy0wNy0wMiAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZG9fc3RvcmVfZmxhZyk6IFJlbW92ZSBzcGVjaWFsIGNhc2UgZm9sZGluZyBmb3IKCXNpbmdsZSBiaXQgdGVzdHMuICBJbnN0ZWFkIGNhbGwgYmFjayBpbnRvIHRoZSBjb21tb25pemVkIGZvbGRlcgoJcm91dGluZS4KCSogZm9sZC1jb25zdC5jIChmb2xkX3NpbmdsZV9iaXRfdGVzdCk6IE5ldyBmdW5jdGlvbiwgbW9zdGx5CglleHRyYWN0ZWQgZnJvbSBkb19zdG9yZV9mbGFnLCB3aXRoIGFuIGFkZGl0aW9uYWwgY2FzZSBleHRyYWN0ZWQKCWZyb20gZm9sZC4KCShmb2xkKTogQ2FsbCBmb2xkX3NpbmdsZV9iaXRfdGVzdCBhcHByb3ByaWF0ZWx5LgoJKiB0cmVlLmggKGZvbGRfc2luZ2xlX2JpdF90ZXN0KTogUHJvdG90eXBlLgoKMjAwMy0wNy0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHN5c3RlbS5oOiBJbmNsdWRlIGZpbGVuYW1lcy5oLgoJKElTX0RJUl9TRVBBUkFUT1IsIElTX0FCU09MVVRFX1BBVEhOQU1FKTogRG9uJ3QgZGVmaW5lLgoJKERJUl9TRVBBUkFUT1IsIERJUl9TRVBBUkFUT1JfMik6IElmIG5vdCBhbHJlYWR5IGRlZmluZWQsCglkZWZpbmUgYmFzZWQgb24gSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0uCgkqIGNvbmZpZy9pMzg2L3htLWN5Z3dpbi5oLCBjb25maWcvaTM4Ni94bS1kamdwcC5oCgkqIGNvbmZpZy9pMzg2L3htLW1pbmd3MzIuaDogRG9uJ3QgZGVmaW5lCglIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSwKCURJUl9TRVBBUkFUT1IsIG9yIERJUl9TRVBBUkFUT1JfMi4KCSogZG9jL2hvc3Rjb25maWcudGV4aTogVXBkYXRlIHRvIG1hdGNoLgoKCSogY3BwZmlsZXMuYywgZ2NjLmMsIGdlbnN1cHBvcnQuYywgcHJvdG9pemUuYywKCWNvbmZpZy9pMzg2L2N5Z3dpbi5oOgoJVXNlIElTX0FCU09MVVRFX1BBVEggdGhyb3VnaG91dC4KCSogZ2NjLmMgKERJUl9VUCk6IERlbGV0ZSwgdW51c2VkLgoJKiBwcm90b2l6ZS5jIChJU19TQU1FX1BBVEgpOiBEZWZpbmUgaW4gdGVybXMgb2YKCUZJTEVOQU1FX0NNUC4KCShpc19hYnNwYXRoKTogRGVsZXRlLgoKMjAwMy0wNy0wMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9pMzg2L2VtbWludHJpbi5oOiBGaXggY29tbWVudCB0eXBvcy4KCSogY29uZmlnL2kzODYvaTM4Ni5jOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvaTM4Ni5oOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvc2NvNS5oOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaXRhbml1bTIubWQ6IExpa2V3aXNlLgoKMjAwMy0wNy0wMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogZGJ4b3V0LmMgKHBlbmRpbmdfYmluY2xzKTogUmVwbGFjZSBEQlhfVVNFX0JJTkNMUyB3aXRoCglEQlhfVVNFX0JJTkNMLgoJKGVtaXRfYmluY2xfc3RhYik6IFNhbWUuCgkoZW1pdF9wZW5kaW5nX2JpbmNscyk6IFNhbWUuCgoyMDAzLTA3LTAyICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLmMgKGNvbXB1dGVfbW92X2xlbmd0aCk6IEZpeCB0aGUgbGVuZ3RoIG9mCglsb2FkaW5nIENPTlNUMF9SVFggKFNGbW9kZSkuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oIChDT05TVF9ET1VCTEVfT0tfRk9SX0xFVFRFUl9QKTogQ2hhbmdlCgknRycgdG8gQ09OU1QwX1JUWCAoU0Ztb2RlKS4KCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChtb3ZzZl9oODMwMCk6IENoYW5nZSB0aGUgZmlyc3QKCWNvbnN0cmFpbnQgdG8gJ0cnLgoJKG1vdnNmX2g4MzAwaCk6IExpa2V3aXNlLgoKMjAwMy0wNy0wMiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogYy1jb21tb24uaCAoY19jb21tb25faW5pdF9vcHRpb25zKTogTmV3IHByb3RvdHlwZS4KCSogYy1vcHRzLmMgKGRlZmVycmVkX3NpemUpOiBSZW1vdmUuCgkoZGVmZXJfb3B0KTogQXJyYXkgaXMgbm93IHByZS1hbGxvY2F0ZWQuCgkoY19jb21tb25faW5pdF9vcHRpb25zKTogUHJlLWFsbG9jYXRlIGRlZmVycmVkX29wdHMuICBNYWtlCglsYW5nX2ZsYWdzIHVuc2lnbmVkLgoJKHB1c2hfY29tbWFuZF9saW5lX29wdGlvbnMpOiBGcmVlIGRlZmVycmVkX29wdHMuCgkqIGhvb2tzLmMgKGhvb2tfdWludF91aW50X2NvbnN0Y2hhcnB0cnB0cl8wKTogTmV3LgoJKiBob29rcy5oIChob29rX3VpbnRfdWludF9jb25zdGNoYXJwdHJwdHJfMCk6IE5ldy4KCSogbGFuZ2hvb2tzLWRlZi5oIChMQU5HX0hPT0tTX0lOSVRfT1BUSU9OUyk6IFVwZGF0ZS4KCSogbGFuZ2hvb2tzLmggKHN0cnVjdCBsYW5nX2hvb2tzKTogTmV3IHByb3RvdHlwZSBmb3IgaW5pdF9vcHRpb25zLgoJKiBtYWluLmMgKG1haW4pOiBDYXN0IGFyZ3YuCgkqIG9wdHMuYyAoaGFuZGxlX29wdGlvbiwgaGFuZGxlX29wdGlvbnMpOiBVcGRhdGUgcHJvdG90eXBlcy4KCShkZWNvZGVfb3B0aW9ucyk6IHNhdmVfYXJnYywgc2F2ZV9hcmd2IGFyZSBub3QgZ2xvYmFsLiAgQ29uc3RpZnkuCgkqIG9wdHMuaCAoZGVjb2RlX29wdGlvbnMpOiBOZXcgcHJvdG90eXBlLgoJKiB0b3BsZXYuYyAoZ2VuZXJhbF9pbml0KTogTmV3IHByb3RveXBlLgoJKHNhdmVfYXJndik6IE1ha2Ugc3RhdGljLgoJKHNhdmVfYXJnYyk6IFJlbW92ZS4KCShwcmludF9zd2l0Y2hfdmFsdWVzLCBnZW5lcmFsX2luaXQpOiBDb25zdGlmeS4KCSh0b3BsZXZfbWFpbik6IFNhdmUgYXJndi4KCSogdG9wbGV2LmggKHRvcGxldl9tYWluKTogVXBkYXRlIHByb3RvdHlwZS4KCShzYXZlX2FyZ2MsIHNhdmVfYXJndik6IFJlbW92ZS4KCjIwMDMtMDctMDIgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGRieG91dC5jIChwZW5kaW5nX2JpbmNscyk6IEd1YXJkIHdpdGggREJYX1VTRV9CSU5DTFMuCgkoZW1pdF9iaW5jbF9zdGFiKTogU2FtZS4KCShlbWl0X3BlbmRpbmdfYmluY2xzKTogU2FtZS4KCjIwMDMtMDctMDIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzExMDcyCgkqIGdpbmNsdWRlL3N0ZGRlZi5oIChvZmZzZXRvZik6IFJlbW92ZSBjYXN0IHRvICdjaGFyICYnLiBFeHBsYWluIHdoeS4KCjIwMDMtMDctMDIgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBkYnhvdXQuYyAocGVuZGluZ19iaW5jbHMpOiBPbmx5IGRlZmluZSBpZiBEQlhfREVCVUdHSU5HX0lORk8uCgoyMDAzLTA3LTAyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG9wdGltaXphdGlvbi8xMTIxMAoJKiBleHByLmMgKGhhbmRsZWRfY29tcG9uZW50X3ApIFtOT1BfRVhQUl06IEFkZCA/Pz8gbm90ZQoJYWJvdXQgdGhlIGJlaGF2aW91ciB3aXRoIHJlZ2FyZCB0byBiaXRmaWVsZHMuCgkqIGZvbGQtY29uc3QgKGRlY29kZV9maWVsZF9yZWZlcmVuY2UpOiBSZWNvcmQgb3V0ZXJtb3N0IHR5cGUgaW4KCWNhc2UgdGhlIGV4cHJlc3Npb24gaXMgYSBOT1AuIFN0cmlwIGFsbCBOT1BzLiBTZXQgdGhlIHNpZ25lZG5lc3MKCXRvIHRoYXQgb2YgdGhlIG91dGVybW9zdCB0eXBlIChpZiBhbnkpIHdoZW4gdGhlIGJpdHNpemUgaXMgZXF1YWwKCXRvIHRoZSBzaXplIG9mIHRoZSB0eXBlLgoKMjAwMy0wNy0wMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5tZCAoYWRkc2kzKTogUmVtb3ZlIHdvcmthcm91bmQgZm9yIGFkZHMgb2YgLTMyNzY4LgoJKGFkZHNpM19pbnRlcm5hbCwgYWRkZGkzLCBhZGRkaTNfaW50ZXJuYWxfMik6IExpa2V3aXNlLgoJKGFkZGRpM19pbnRlcm5hbF8zLCBhZGRzaTNfaW50ZXJuYWxfMik6IExpa2V3aXNlLgoKMjAwMy0wNy0wMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtYWNoaW5lX2Z1bmN0aW9uKTogQWRkIG5ldyBmaWVsZHM6CglpZ25vcmVfaGF6YXJkX2xlbmd0aF9wIGFuZCBhbGxfbm9yZW9yZGVyX3AuCgkobWlwc19mbGFnX2RlbGF5ZWRfYnJhbmNoKTogTmV3IHZhcmlhYmxlLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBUcmVhdCAnLycgYXMgYW4gb3BlcmFuZCBwdW5jdHVhdGlvbiBjaGFyYWN0ZXIuCglTZXQgdXAgbWlwc19mbGFnX2RlbGF5ZWRfYnJhbmNoLgoJKHByaW50X29wZXJhbmQpOiBIYW5kbGUgJy8nLgoJKG1pcHNfb3V0cHV0X2Z1bmN0aW9uX3Byb2xvZ3VlKTogUHV0IHRoZSB3aG9sZSBmdW5jdGlvbiBpbgoJLnNldCBub3Jlb3JkZXIgYW5kIC5zZXQgbm9tYWNybyBpZiBhbGxfbm9yZW9yZGVyX3AgaXMgdHJ1ZS4KCShtaXBzX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IEVuZCB0aGUgbm9yZW9yZGVyL25vbWFjcm8gc2VxdWVuY2UuCgkobWlwczE2X29wdGltaXplX2dwKTogUmVtb3ZlICJmaXJzdCBpbnNuIiBwYXJhbWV0ZXIuCgkobWlwczE2X2xheV9vdXRfY29uc3RhbnRzKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbSBtaXBzX3Jlb3JnLgoJKG1pcHNfYXZvaWRfaGF6YXJkLCBtaXBzX2F2b2lkX2hhemFyZHMpOiBOZXcgZnVuY3Rpb25zLgoJKG1pcHNfcmVvcmcpOiBGb3IgbWlwczE2IGNvZGUsIGNhbGwgbWlwczE2X2xheV9vdXRfY29uc3RhbnQKCWFuZCAob3B0aW9uYWxseSkgbWlwczE2X29wdGltaXplLiAgSWYgVEFSR0VUX0VYUExJQ0lUX1JFTE9DUywKCWRvIGRlbGF5ZWQtYnJhbmNoIHNjaGVkdWxpbmcgZm9sbG93ZWQgYnkgaGF6YXJkIGRldGVjdGlvbi4KCShtaXBzX2FkanVzdF9pbnNuX2xlbmd0aCk6IE9ubHkgYWNjb3VudCBmb3IgaGF6YXJkcyBpZgoJIWlnbm9yZV9oYXphcmRfbGVuZ3RoX3AuCgkobWlwc19vdXRwdXRfbG9hZF9sYWJlbCk6IEFkZCBhIG5vcCB0byB0aGUgbzMyIHNlcXVlbmNlIGlmCgl0aGUgdGFyZ2V0IHN1ZmZlcnMgZnJvbSBsb2FkIGRlbGF5cy4KCShtaXBzX291dHB1dF9jb25kaXRpb25hbF9icmFuY2gpOiBBZGQgJS8gdG8gdGhlIGVuZCBvZiBicmFuY2hlcy4KCShtaXBzX291dHB1dF9kaXZpc2lvbik6IEZpbGwgdGhlIGJyYW5jaCBkZWxheSBzbG90IHdpdGggJSMuCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IFJlbW92ZSByZWR1bmRhbnQgJyUqJyBmcm9tIG1pcHMxNiBicmFuY2gKCWluc3RydWN0aW9ucy4gIEVuZCBhbGwgb3RoZXIgJSogYnJhbmNoZXMgd2l0aCAlLy4KCShmZnNzaTIsIGZmc2RpMik6IEZpeCBsZW5ndGhzLgoJKHRydW5jZGlzaTIsIHRydW5jZGloaTIsIHRydW5jZGlxaTIpOiBBZGQgc3RvcmUgYXR0cmlidXRlcy4KCShmaXhfdHJ1bmNkZnNpMl9tYWNybyk6IFR1cm4gb2ZmIC5zZXQgbm9tYWNybyBpZiBhcHByb3ByaWF0ZS4KCShmaXhfdHJ1bmNzZnNpMl9tYWNybyk6IExpa2V3aXNlLgoJKG1vdl9sd2wpOiBTZXQgaGF6YXJkIHRvICJub25lIi4KCShhc2hsZGkzX2ludGVybmFsKTogRmlsbCB0aGUgYnJhbmNoIGRlbGF5IHNsb3Qgd2l0aCAlIy4KCShhc2hyZGkzX2ludGVybmFsLCBsc2hyZGkzX2ludGVybmFsKTogTGlrZXdpc2UuCgkoZXhjZXB0aW9uX3JlY2VpdmVyKTogRXhwbGljaXRseSBzZXQgJDI4LgoJKGhhemFyZF9ub3ApOiBOZXcgcGF0dGVybi4KCjIwMDMtMDctMDIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2ZpbmFsaXplX3VuaXQpOiBTZXQgY3VycmVudF9mdW5jdGlvbl9kZWNsCgliZWZvcmUgY2FsbGluZyB0cmVlX2lubGluYWJsZV9mdW5jdGlvbl9wLgoKMjAwMy0wNy0wMiAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChpcml4X3N0ZGlvX3ZhX2xpc3QpOiBBcHBseSB0byBJUklYIDYuNQoJPGludGVybmFsL3N0ZGlvX2NvcmUuaD4gdG9vLgoJKHN0ZGlvX3ZhX2xpc3QpOiBBcHBseSB0byBJUklYIDYuNSA8aW50ZXJuYWwvc3RkaW9fY29yZS5oPiBhbmQKCTxpbnRlcm5hbC93Y2hhcl9jb3JlLmg+IHRvby4KCVN1YnN0aXR1dGUgdmFfbGlzdCB1c2VzIGluIGlubGluZSBkZWZpbml0aW9uLgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoKMjAwMy0wNy0wMiAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBjb25maWcvbWlwcy9pcmlzNS5oIChTRVRfRklMRV9OVU1CRVIpOiBNb3ZlZCBoZXJlIGZyb20gaXJpczMuaC4KCVVuZGVmIGJlZm9yZSByZWRlZmluaXRpb24uCgkoTEFCRUxfQUZURVJfTE9DKTogTGlrZXdpc2UuCgkoREVGQVVMVF9TSUdORURfQ0hBUik6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRfQVNDSUkpOiBNb3ZlZCBoZXJlIGZyb20gaXJpczQuaC4KCUZpeCBJUklYIHNwZWxsaW5nLgoKCSogY29uZmlnL21pcHMvaXJpczMuaDogUmVtb3ZlLCB1bnVzZWQuCgkqIGNvbmZpZy9taXBzL2lyaXM0Lmg6IExpa2V3aXNlLgoKCSogY29uZmlnL21pcHMvbWlwcy5oIChTVEFDS19BUkdTX0FESlVTVCk6IFJlbW92ZSwgdW51c2VkLgoKCSogY29uZmlnL21pcHMvaXJpczUuaCAoVEFSR0VUX0RFRkFVTFQpOiBNb3ZlIC4uLgoJKiBjb25maWcuZ2NjIChtaXBzLXNnaS1pcml4NipvMzIsIG1pcHMtc2dpLWlyaXg1Kik6IC4uLiBoZXJlIHRvCgl0YXJnZXRfY3B1X2RlZmF1bHQuCgoJKiBjb25maWcvbWlwcy9pcmlzNS5oOiBNb3ZlIGV4cGxpY2l0IGluY2x1ZGVzIC4uLgoJKiBjb25maWcuZ2NjIChtaXBzLXNnaS1pcml4NipvMzIsIG1pcHMtc2dpLWlyaXg1Kik6IC4uLiBoZXJlLgoKCSogY29uZmlnL21pcHMvaXJpczYuaCAoTUlQU19JU0FfREVGQVVMVCwgTUlQU19BQklfREVGQVVMVCk6IE1vdmUgLi4uCgkqIGNvbmZpZy5nY2MgKG1pcHMtc2dpLWlyaXg2KiwgbWlwcy1zZ2ktaXJpeDVjcm9zczY0KTogLi4uIGhlcmUgdG8KCXRtX2RlZmluZXMuCgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChUQVJHRVRfREVGQVVMVCk6IE1vdmUgLi4uCgkqIGNvbmZpZy5nY2MgKG1pcHMtc2dpLWlyaXg2KiwgbWlwcy1zZ2ktaXJpeDVjcm9zczY0KTogLi4uIGhlcmUgdG8KCXRhcmdldF9jcHVfZGVmYXVsdC4KCgkqIGNvbmZpZy9taXBzL2lyaXM2Lmg6IEZpeCBJUklYIHNwZWxsaW5nLgoJKE1VTFRJTElCX0RFRkFVTFRTKTogVW5kZWYgYmVmb3JlIHJlZGVmaW5pdGlvbi4KCgkqIGNvbmZpZy9taXBzL2lyaXM2Lmg6IE1vdmUgZXhwbGljaXQgaW5jbHVkZXMgLi4uCgkqIGNvbmZpZy5nY2MgKG1pcHMtc2dpLWlyaXg2KiwgbWlwcy1zZ2ktaXJpeDVjcm9zczY0KTogLi4uIGhlcmUuCgoyMDAzLTA3LTAyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZ3JhcGguYyAoY2dyYXBoX21hcmtfbmVlZGVkX25vZGUsIGNncmFwaF92YXJwb29sX21hcmtfbmVlZGVkX25vZGUsCgljZ3JhcGhfdmFycG9vbF9maW5hbGl6ZV9kZWNsLCBjZ3JhcGhfdmFycG9vbF9hc3NlbWJsZV9wZW5kaW5nX2RlY2xzKToKCVVzZSBuZXh0X25lZWRlZCBmaWVsZCBpbnN0ZWFkIG9mIGF1eCB0byBtYWludGFpbiB0aGUgcXVldWUuCgkqIGNncmFwaC5oIChjZ3JhcGhfbm9kZSk6IEFkZCBuZXh0X25lZWRlZC4KCShjZ3JhcGhfdmFycG9vbF9ub2RlKTogQWRkIG5leHRfbmVlZGVkOyByZW1vdmUgYXV4LgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9jb21waWxhdGlvbl91bml0KTogVXNlIG5leHRfbmVlZGVkLgoKMjAwMy0wNy0wMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiBTZXQgZmluYWxpemVkLgoJKGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbik6IERvIG5vdCBleGFtaW5lIGlubGluYWJsaWxpdHkuCgkoY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQpOiBEbyBpdCBoZXJlLgoJKiBjZ3JhcGguaCAoY2dyYXBoX2xvY2FsX2luZm8pOiBBZGQgZmluYWxpemVkIGZpZWxkLgoKMjAwMy0wNy0wMiAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBnZ2MtY29tbW9uLmMgKGd0X3BjaF9zYXZlKTogQ2FzdCBNQVBfRkFJTEVEIHRvIHZvaWQgKi4KCShndF9wY2hfcmVzdG9yZSk6IExpa2V3aXNlLgoKMjAwMy0wNy0wMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogY29uZmlnL2FscGhhL2VsZi5oOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uYzogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLmg6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vdC1hcm0tY29mZjogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vdC1zdHJvbmdhcm0tcGU6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL3hzY2FsZS1lbGYuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hdnIvYXZyLmg6IExpa2V3aXNlLgoKMjAwMy0wNy0wMSAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHN0bXQuYyAoYW55X3BlbmRpbmdfY2xlYW51cHMpOiBSZW1vdmUgYW5vdGhlciByZWR1bmRhbnQgdGVzdC4KCjIwMDMtMDctMDEgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCSAgICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChjdHJ7cyxkfWlfaW50ZXJuYWw/KTogQWRkIGVhcmx5Y2xvYmJlcgoJZm9yIE1FTSBjYXNlLgoKMjAwMy0wNy0wMSAgRGV2YW5nIFBhdGVsICA8ZHBhdGVsQGFwcGxlLmNvbT4KCgkqIGRieG91dC5jIChEQlhPVVRfREVDUl9ORVNUSU5HKTogRW1pdCBwZW5kaW5nIGJpbmNscywgaWYgcmVxdWlyZWQuCgkoYmluY2xzdGF0dXMpOiBOZXcuCgkoc3RydWN0IGRieF9maWxlKTogTmV3IG1lbWJlcnMgLSBiaW5jbF9zdGF0dXMsIHBlbmRpbmdfYmluY2xfbmFtZSBhbmQKCXByZXYuCgkocGVuZGluZ19iaW5jbHMpOiBOZXcuCgkoZGJ4b3V0X2luaXQpOiBJbml0aWFsaXplIG5ldyBkYnhfZmlsZSBtZW1iZXJzLgoJKGRieG91dF9zdGFydF9zb3VyY2VfZmlsZSk6IFNhbWUuCgkoZW1pdF9iaW5jbF9zdGFiKTogTmV3IGZ1bmN0aW9uLgoJKGVtaXRfcGVuZGluZ19iaW5jbHMpOiBTYW1lLgoJKGVtaXRfcGVuZGluZ19iaW5jbHNfaWZfcmVxdWlyZWQpOiBTYW1lLgoJKGRieG91dF9lbmRfc291cmNlX2ZpbGUpOiBFbWl0IEVJTkNMIHN0YWIgb25seSBpZiBCSU5DTCBpcyAgYWxyZWFkeQoJcHJvY2Vzc2VkLgoJKGRieG91dF9iZWdpbl9ibG9jayk6IEVtaXQgcGVuZGluZyBCSU5DTCBzdGFicy4KCShkYnhvdXRfZW5kX2Jsb2NrKTogU2FtZS4KCShkYnhvdXRfZnVuY3Rpb25fZGVjbCk6IFNhbWUuCgkoZGJ4b3V0X2NvbnRpbnVlKTogU2FtZS4KCShkYnhvdXRfdHlwZSk6IFNhbWUuCgkoZGJ4b3V0X2NsYXNzX25hbWVfcXVhbGlmaWVycyk6IFNhbWUuCgkoZGJ4b3V0X3N5bWJvbCk6IFNhbWUuCgkoZGJ4b3V0X3N5bWJvbF9sb2NhdGlvbik6IFNhbWUuCgkoZGJ4b3V0X3Bhcm1zKTogU2FtZS4KCjIwMDMtMDctMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtc2VtYW50aWNzLmMgKGdlbnJ0bF9jYXNlX2xhYmVsKTogRml4IGZvcm1hdCBzcGVjaWZpZXIgYnVnLgoJKiBjZmdydGwuYyAocnRsX3ZlcmlmeV9mbG93X2luZm9fMSk6IExpa2V3aXNlLgoKMjAwMy0wNy0wMSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZm9sZC1jb25zdC5jOiBDb252ZXJ0IHByb3RvdHlwZXMgdG8gSVNPIEM5MC4KCSogZnVuY3Rpb24uYzogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmg6IExpa2V3aXNlLgoKMjAwMy0wNy0wMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRvYy9jb250cmliLnRleGk6IEZpeCB0eXBvcy4KCSogZG9jL2ludm9rZS50ZXhpOiBMaWtld2lzZS4KCSogZG9jL3Bhc3Nlcy50ZXhpOiBMaWtld2lzZS4KCSogZG9jL3NvdXJjZWJ1aWxkLnRleGk6IExpa2V3aXNlLgoJKiBkb2MvdG0udGV4aTogTGlrZXdpc2UuCgoyMDAzLTA3LTAxICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYmFzaWMtYmxvY2suaDogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGJiLXJlb3JkZXIuYzogTGlrZXdpc2UuCgkqIGMtZm9ybWF0LmM6IExpa2V3aXNlLgoJKiBjZmdjbGVhbnVwLmM6IExpa2V3aXNlLgoJKiBjZmdob29rcy5oOiBMaWtld2lzZS4KCSogY2ZnbG9vcC5jOiBMaWtld2lzZS4KCSogY2ZnbG9vcG1hbmlwLmM6IExpa2V3aXNlLgoJKiBjZmdydGwuYzogTGlrZXdpc2UuCgkqIGNncmFwaC5oOiBMaWtld2lzZS4KCSogY2dyYXBodW5pdC5jOiBMaWtld2lzZS4KCSogY29tYmluZS5jOiBMaWtld2lzZS4KCSogY29udmVydC5jOiBMaWtld2lzZS4KCSogZGJ4b3V0LmM6IExpa2V3aXNlLgoJKiBkZi5jOiBMaWtld2lzZS4KCSogZGYuaDogTGlrZXdpc2UuCgkqIGRpYWdub3N0aWMuYzogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jOiBMaWtld2lzZS4KCSogZXQtZm9yZXN0Lmg6IExpa2V3aXNlLgoJKiBmbG93LmM6IExpa2V3aXNlLgoJKiBmb2xkLWNvbnN0LmM6IExpa2V3aXNlLgoJKiBmdW5jdGlvbi5oOiBMaWtld2lzZS4KCSogZ2Nvdi1pby5oOiBMaWtld2lzZS4KCSogZ2Nvdi5jOiBMaWtld2lzZS4KCSogZ2NzZS5jOiBMaWtld2lzZS4KCSogZ2VuYXV0b21hdGEuYzogTGlrZXdpc2UuCgkqIGdnYy1jb21tb24uYzogTGlrZXdpc2UuCgkqIGdnYy1wYWdlLmM6IExpa2V3aXNlLgoJKiBsb29wLXVucm9sbC5jOiBMaWtld2lzZS4KCSogbG9vcC11bnN3aXRjaC5jOiBMaWtld2lzZS4KCSogbG9vcC5jOiBMaWtld2lzZS4KCSogbWlwcy10ZmlsZS5jOiBMaWtld2lzZS4KCSogb3B0YWJzLmM6IExpa2V3aXNlLgoJKiByYS1idWlsZC5jOiBMaWtld2lzZS4KCSogcmEtY29sb3JpemUuYzogTGlrZXdpc2UuCgkqIHJhLXJld3JpdGUuYzogTGlrZXdpc2UuCgkqIHJhLmg6IExpa2V3aXNlLgoJKiByZWdtb3ZlLmM6IExpa2V3aXNlLgoJKiByZWxvYWQuYzogTGlrZXdpc2UuCgkqIHJ0bGFuYWwuYzogTGlrZXdpc2UuCgkqIHNjaGVkLWViYi5jOiBMaWtld2lzZS4KCSogc2NoZWQtaW50Lmg6IExpa2V3aXNlLgoJKiBzY2hlZC12aXMuYzogTGlrZXdpc2UuCgkqIHNyZWFsLmM6IExpa2V3aXNlLgoJKiBzc2EtY2NwLmM6IExpa2V3aXNlLgoJKiBzc2EuYzogTGlrZXdpc2UuCgkqIHRvcGxldi5jOiBMaWtld2lzZS4KCSogdHJlZS1pbmxpbmUuYzogTGlrZXdpc2UuCgkqIHZhbHVlLXByb2YuYzogTGlrZXdpc2UuCgkqIHZhbHVlLXByb2YuaDogTGlrZXdpc2UuCgoyMDAzLTA3LTAxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcnRsLmggKGVtaXRfbGluZV9ub3RlX2FmdGVyKTogUmVtb3ZlLgoJKGVtaXRfbm90ZV9jb3B5X2FmdGVyLCBlbWl0X25vdGVfY29weSk6IE5ldy4KCSogZW1pdC1ydGwuYyAocmVvcmRlcl9pbnNuc193aXRoX2xpbmVfbm90ZXMpOiBSZXBsYWNlCgllbWl0X2xpbmVfbm90ZV9hZnRlciB3aXRoIGVtaXRfbm90ZV9jb3B5X2FmdGVyLgoJKGVtaXRfaW5zbl9hZnRlcl93aXRoX2xpbmVfbm90ZXMpOiBMaWtld2lzZS4KCShlbWl0X2xpbmVfbm90ZV9hZnRlcik6IEtpbGwuCgkoZW1pdF9ub3RlX2NvcHlfYWZ0ZXIpOiBOZXcuCgkoZW1pdF9ub3RlX2NvcHkpOiBOZXcuCgkqIGZ1bmN0aW9uLmMgKGVtaXRfcmV0dXJuX2ludG9fYmxvY2spOiBVc2UgZW1pdF9ub3RlX2NvcHlfYWZ0ZXIuCgkodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoZXhwYW5kX2lubGluZV9mdW5jdGlvbik6IFVzZSBlbWl0X25vdGVfY29weS4KCShjb3B5X2luc25fbGlzdCk6IExpa2V3aXNlLgoJKiB1bnJvbGwuYyAoY29weV9sb29wX2JvZHkpOiBMaWtld2lzZS4KCSogY2ZnbGF5b3V0LmMgKGR1cGxpY2F0ZV9pbnNuX2NoYWluKTogTGlrZXdpc2UuCgoyMDAzLTA3LTAxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy10cmVlLmggKGRlZmluZV9sYWJlbCk6IFJlcGxhY2UgZmlsZW5hbWUgYW5kIGxpbmVubyBhcmd1bWVudHMKCXdpdGggYSBsb2NhdGlvbl90LgoJKiBjLWRlY2wuYyAocG9wbGV2ZWwpOiBBZGp1c3QgZGVmaW5lX2xhYmVsIGNhbGwuCgkocG9wX2xhYmVsX2xldmVsKTogTGlrZXdpc2UuCgkoZGVmaW5lX2xhYmVsKTogUmVwbGFjZSBmaWxlbmFtZSBhbmQgbGluZW5vIGFyZ3VtZW50cyB3aXRoIGEKCWxvY2F0aW9uX3QuCgkoc3RvcmVfcGFybV9kZWNscyk6IFVzZSBERUNMX1NPVVJDRV9MT0NBVElPTi4KCSogYy1wYXJzZS5pbiAobGFiZWwpOiBBZGp1c3QgZGVmaW5lX2xhYmVsIGNhbGwuCgoyMDAzLTA3LTAxICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBjb25maWcvc29sMi5oLCBjb25maWcvYWxwaGEvYWxwaGEuaCwgY29uZmlnL2FscGhhL2xpbnV4LmgsCgljb25maWcvaTM4Ni9pMzg2LWludGVyaXguaCwgY29uZmlnL2lhNjQvaHB1eC5oLCBjb25maWcvbWlwcy9pcmlzNi5oLAoJY29uZmlnL21pcHMvbGludXguaCwgY29uZmlnL21pcHMvbWlwcy5oLCBjb25maWcvcGEvcGEtaHB1eC5oLAoJY29uZmlnL3BhL3BhLWhwdXgxMC5oLCBjb25maWcvcGEvcGEtaHB1eDExLmgsIGNvbmZpZy9wYS9wYS1wcm8tZW5kLmgsCgljb25maWcvcGEvcGEuaCwgY29uZmlnL3BhL3J0ZW1zLmg6IFVzZSBjX2RpYWxlY3RfIG1hY3Jvcy4KCjIwMDMtMDctMDEgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGZpbmFsLmM6IENvbnZlcnQgcHJvdG90eXBlcyB0byBJU08gQzkwLgoJKiBmbG93LmM6IExpa2V3aXNlLgoJKiBmbGFncy5oOiBMaWtld2lzZS4KCSogZ2Nvdi1pby5jOiBMaWtld2lzZS4KCSogZ2Nvdi1pby5oOiBMaWtld2lzZS4KClNlZSBDaGFuZ2VMb2cuOSBmb3IgZWFybGllciBjaGFuZ2VzLgo=