ZGlmZiAtLWdpdCBhL2RvYy9zdGQvLnN5bm9ueW0gYi9kb2Mvc3RkLy5zeW5vbnltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwOGVlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkLy5zeW5vbnltCkBAIC0wLDAgKzEsOSBAQAorYXJtb3VycyBhcm1vdXIKK3J1ZXN0dW5nIGFybW91cgorcnVlc3R1bmdlbiBhcm1vdXIKK3dlYXBvbnMgd2VhcG9uCit3YWZmZW4gd2VhcG9uCit3YWZmZSB3ZWFwb24KK3VuaXRzIHVuaXQKK3ZjIHZpcnR1YWxfY29tcGlsZXIKK3JpbmdidWZmZXIgdXRpbApkaWZmIC0tZ2l0IGEvZG9jL3N0ZC9hcm1vdXIgYi9kb2Mvc3RkL2FybW91cgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzIxY2ZjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3N0ZC9hcm1vdXIKQEAgLTAsMCArMSw4NyBAQAorIFNUQU5EQVJES0xBU1NFOgorCSIvc3RkL2FybW91ciIKKyAKKyBCRU5VVFpVTkc6CisgICAgICAgIGluaGVyaXQgIi9zdGQvYXJtb3VyIjsKKyAKKyAgICAgICAgI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKyAgICAgICAgI2luY2x1ZGUgPGNvbWJhdC5oPgorCisgUFJPUEVSVElFUzoKKyAgICAgR3J1bmRsZWdlbmQ6CisJUF9BQwkJc2V0emJhcjogUnVlc3R1bmdza2xhc3NlID09IFNjaHV0egorCVBfQVJNT1VSX1RZUEUJc2V0emJhcjogUnVlc3R1bmdzdHlwCisKKyAgICAgQmVzb25kZXJlIEF0dHJpYnV0ZSB1bmQgQW5mb3JkZXJ1bmdlbiBmdWVyIFRyYWVnZXI6CisJUF9SRVNUUklDVElPTlMJc2V0emJhcjogQW5mb3JkZXJ1bmdlbiBhbiBUcmFlZ2VyCisJUF9NX0FUVFJfTU9ECXNldHpiYXI6IEF0dHJpYnV0bW9kaWZpa2F0b3IgZnVlciBUcmFlZ2VyCisJUF9SRVNJU1RBTkNFX1NUUkVOR1RIUworCQkJc2V0emJhcjogUmVzaXN0ZW56bW9kaWZpa2F0b3IgZnVlciBUcmFlZ2VyCisJUF9OUl9IQU5EUwlzZXR6YmFyOiBub3R3ZW5kaWdlIEhhbmRhbnphaGwgKHpCIFNjaGlsZGUpCisJUF9DVVJTRUQJc2V0emJhcjogVmVyZmx1Y2h1bmcgKG5pY2h0IGF1c3ppZWhiYXIpCisKKyAgICAgTWVsZHVuZ2VuIHVuZCBaZWl0cHVua3RlOgorCVBfRVFVSVBfVElNRQllbnRoYWVsdCBkZW4gWmVpdHB1bmt0IGRlcyBBbnppZWhlbnMKKwlQX0xBU1RfVVNFCWVudGhhZWx0IGRlbiBaZWl0cHVua3QgZGVzIGxldHp0ZW4gVHJlZmZlcnMKKwlQX1dPUk4JCWVudGhhZWx0IGRlbiBUcmFlZ2VyCisJUF9XRUFSX01TRwlzZXR6YmFyOiBlaWdlbmUgQW56aWVobWVsZHVuZ2VuCisJUF9VTldFQVJfTVNHCXNldHpiYXI6IGVpZ2VuZSBBdXN6aWVobWVsZHVuZ2VuCisKKyAgICAgRHluYW1pc2NoZXMgVmVyaGFsdGVuIGluIEthbXBmIHVuZCBiZWltIEFuemllaGVuOgorCVBfV0VBUl9GVU5DCXNldHpiYXI6IE9iamVrdCBtaXQgQW56aWVoZnVua3Rpb24gIldlYXJGdW5jKCkiCisJUF9SRU1PVkVfRlVOQwlzZXR6YmFyOiBPYmpla3QgbWl0IEF1c3ppZWhmdW5rdGlvbiAiUmVtb3ZlRnVuYygpIgorCVBfREVGRU5EX0ZVTkMJc2V0emJhcjogT2JqZWt0IG1pdCBEZWZlbnNpdmZ1bmt0aW9uICJEZWZlbmRGdW5jKCkiCisKKyAgICAgWnVzYWV0emxpY2hlIEVpZ2Vuc2NoYWZ0ZW46CisJUF9EQU1BR0VECWVudGhhZWx0IGRlbiBBdXNtYXNzIGRlcyBTY2hhZGVucyBhbiBXYWZmZQorCVBfUVVBTElUWQlzZXR6YmFyOiBRdWFsaXTkdC9IYWx0YmFya2VpdCBkZXIgV2FmZmUKKwlQX0VGRkVDVElWRV9BQwlzZXR6YmFyOiBmYWxscyBEZWZlbmRGdW5jIEFDIG5pY2h0IHNpY2hiYXIgYWVuZGVydAorCVBfREFNX1RZUEUJc2V0emJhcjogaW50ZXJlc3NhbnQgYmVpIEthZW1wZmVyYW5ncmlmZmVuCisKKyAgICAgWnVzYWV0emxpY2ggc2luZCBhbGxlIFByb3BlcnRpZXMgYXVzIC9zdGQvdGhpbmcgdmVyZnVlZ2JhciwgYWxzbworICAgICBiaXR0ZSBhdWNoIGZvbGdlbmRlIHNldHplbjoKKwlQX01BVEVSSUFMCXNldHpiYXI6IFp1c2FtbWVuc2V0enVuZworCVBfU0laRQkJc2V0emJhcjogR3JvZXNzZQorCVBfV0VJR0hUCXNldHpiYXI6IEdld2ljaHQKKworIE1BS1JPUzoKKyAgICAgR3VlbHRpZ2UgUnVlc3R1bmdzdHlwZW4gKGRlZmluaWVydCBpbiAiL3N5cy9jb21iYXQuaCIpLgorIAorIEVSTEFFVVRFUlVORzoKKyAgICAgQmFzaXNrbGFzc2UgZnVlciBhbGxlIFJ1ZXN0dW5nZW4gaW0gU3BpZWwuIFNpZSBpc3Qgdm9uICIvc3RkL2Nsb3RoaW5nIgorICAgICBhYmdlbGVpdGV0IHVuZCBlbnRoYWVsdCBhbGxlIHp1c2FldHpsaWNoZSBGdW5rdGlvbmFsaXRhZXQKKyAgICAgZnVlciBkZW4gS2FtcGYuCisKKyAgICAgVm9yIGRlciBQcm9ncmFtbWllcnVuZyB2b24gUnVlc3R1bmdlbiBzb2xsdGUgL2RvYy9NRy93YWZmZW5fd2VydGUKKyAgICAgZ2VsZXNlbiB3ZXJkZW4uIERpZSBSZWdlbG4gZGFyaW4gc2luZCB2ZXJiaW5kbGljaCB1bmQgc29sbHRlbiBudXIKKyAgICAgaW4gQXVzbmFobWVmYWVsbGVuIHVuZCBtaXQgQWJzcHJhY2hlIG1pdCBkZW0gRXJ6bWFnaWVyIGZ1ZXIgCisgICAgIFdhZmZlbi9SdWVzdHVuZ2VuL01vbnN0ZXIgdWViZXJzY2hyaXR0ZW4gd2VyZGVuLgorICAgICBHZXJhZGUgaW4gRGVmZW5kRnVuY3Mgc29sbHRlIGF1ZiBkaWUga29ycmVrdGUgQmVoYW5kbHVuZyBkZXIKKyAgICAgdWViZXJnZWJlbmVuIFNwZWxsZmxhZ3MgZ2VhY2h0ZXQgd2VyZGVuIC0gaW5zYmVzb25kZXJlIFNQX1JFQ1VSU0lWRQorICAgICB1bmQgU1BfTk9fQUNUSVZFX0RFRkVOU0UuCisKKyAgICAgRGllIE1heGltYWx3ZXJ0ZSB1bmQgV2VydGUgZnVlciBaZXJzdG9lcnVuZyBiZWkgVmVya2F1ZiBzaW5kCisgICAgIC9zeXMvY29tYmF0LmggenUgZW50bmVobWVuOiBWQUxJRF9BUk1PVVJfQ0xBU1MvS0VFUF9BUk1PVVJfQ0xBU1MuCisKKyBWRVJFUkJVTkdTQkFVTToKKyAgICAgWy9zdGQvYXJtb3VyXQorICAgICAuLi4uLiBbL3N0ZC90aGluZy9wcm9wZXJ0aWVzXQorICAgICAuLi4uLiBbL3N0ZC90aGluZy9sYW5ndWFnZV0KKyAgICAgLi4uLi4gWy9zdGQvdGhpbmcvY29tbWFuZHNdCisgICAgIC4uLi4uIFsvc3RkL3RoaW5nL3Jlc3RyaWN0aW9uc10KKyAgICAgLi4uLi4gWy9zdGQvdGhpbmcvZW52Y2hrXQorICAgICAuLi4uLiBbL3N0ZC9hcm1vdXIvZGVzY3JpcHRpb25dCisgICAgIC4uLi4uLi4uLi4gWy9zdGQvY2xvdGhpbmcvZGVzY3JpcHRpb25dCisgICAgIC4uLi4uLi4uLi4uLi4uIFsvc3RkL3RoaW5nL2Rlc2NyaXB0aW9uXQorICAgICAuLi4uLiBbL3N0ZC9hcm1vdXIvd2Vhcl0KKyAgICAgLi4uLi4uLi4uLiBbL3N0ZC9jbG90aGluZy93ZWFyXQorICAgICAuLi4uLiBbL3N0ZC9jbG90aGluZy9tb3ZpbmddCisgICAgIC4uLi4uLi4uLi4gWy9zdGQvdGhpbmcvbW92aW5nXQorICAgICAuLi4uLiBbL3N0ZC9hcm1vdXIvY29tYmF0XQorCisgU0lFSEUgQVVDSDoKKyAgICAgUF9BUk1PVVJTLCBQX0xBU1RfV0VBUl9BQ1RJT04sIFBfVE9UQUxfQUMKKyAgICAgQXR0YWNrKCksIERlZmVuZCgpLCAvZG9jL3dpei9ydWVzdHVuZ2VuLCBiYWxhbmNlCisKKzAzLjA4LjIwMDcsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC9jbG90aGluZyBiL2RvYy9zdGQvY2xvdGhpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFjY2I1NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zdGQvY2xvdGhpbmcKQEAgLTAsMCArMSw3NyBAQAorIFNUQU5EQVJES0xBU1NFOgorCSIvc3RkL2Nsb3RoaW5nIgorIAorIEJFTlVUWlVORzoKKyAgICAgICAgaW5oZXJpdCAiL3N0ZC9jbG90aGluZyI7CisgCisgICAgICAgICNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisgICAgICAgICNpbmNsdWRlIDxjbG90aGluZy5oPgorCisgUFJPUEVSVElFUzoKKworICAgICBCZXNvbmRlcmUgQXR0cmlidXRlIHVuZCBBbmZvcmRlcnVuZ2VuIGZ1ZXIgVHJhZWdlcjoKKwlQX1JFU1RSSUNUSU9OUwlzZXR6YmFyOiBBbmZvcmRlcnVuZ2VuIGFuIFRyYWVnZXIKKwlQX0NVUlNFRAlzZXR6YmFyOiBWZXJmbHVjaHVuZyAobmljaHQgYXVzemllaGJhcikKKworICAgICBNZWxkdW5nZW4gdW5kIFplaXRwdW5rdGU6CisJUF9FUVVJUF9USU1FCWVudGhhZWx0IGRlbiBaZWl0cHVua3QgZGVzIEFuemllaGVucworCVBfV09STgkJZW50aGFlbHQgZGVuIFRyYWVnZXIKKwlQX1dFQVJfTVNHCXNldHpiYXI6IGVpZ2VuZSBBbnppZWhtZWxkdW5nZW4KKwlQX1VOV0VBUl9NU0cJc2V0emJhcjogZWlnZW5lIEF1c3ppZWhtZWxkdW5nZW4KKworICAgICBEeW5hbWlzY2hlcyBWZXJoYWx0ZW4gaW4gS2FtcGYgdW5kIGJlaW0gQW56aWVoZW46CisJUF9XRUFSX0ZVTkMJc2V0emJhcjogT2JqZWt0IG1pdCBBbnppZWhmdW5rdGlvbiAiV2VhckZ1bmMoKSIKKwlQX1JFTU9WRV9GVU5DCXNldHpiYXI6IE9iamVrdCBtaXQgQXVzemllaGZ1bmt0aW9uICJSZW1vdmVGdW5jKCkiCisKKyAgICAgWnVzYWV0emxpY2ggc2luZCBhbGxlIFByb3BlcnRpZXMgYXVzIC9zdGQvdGhpbmcgdmVyZnVlZ2JhciwgYWxzbworICAgICBiaXR0ZSBhdWNoIGZvbGdlbmRlIHNldHplbjoKKwlQX01BVEVSSUFMCXNldHpiYXI6IFp1c2FtbWVuc2V0enVuZworCVBfU0laRQkJc2V0emJhcjogR3JvZXNzZQorCVBfV0VJR0hUCXNldHpiYXI6IEdld2ljaHQKKworIAorIEVSTEFFVVRFUlVORzoKKyAgICAgQmFzaXNrbGFzc2UgZnVlciBhbGxlIEtsZWlkdW5nZW4gaW0gU3BpZWwuIFNpZSBpc3Qgdm9uICIvc3RkL3RoaW5nIgorICAgICBhYmdlbGVpdGV0LgorICAgICBLbGVpZHVuZyBiZWxlZ3QgbmllbWFscyBlaW5lbiBSdWVzdHVuZ3NzbG90IHVuZCBpc3QgbnVyIGZ1ZXIgS3JhbQorICAgICBnZWRhY2h0LCBkZXIga2VpbmUga2FtcGZyZWxldmFudGUgRnVua3Rpb25hbGl0YWV0IGJlZWluaGFsdGV0LgorICAgICBNb21lbnRhbiBpc3QgZGllIEFuemFobCBhbiBLbGVpZHVuZ3NzdHVlY2tlbiwgZGllIGVpbiBTcGllbGVyIGFuemllaGVuCisgICAgIGthbm4sIG5pY2h0IGJlZ3Jlbnp0LgorICAgICBLbGVpZHVuZyBzaW5kIGltIFByaW56aXAgUnVlc3R1bmdlbiBvaG5lIGFsbGUgaW4gZGVuIFJ1ZXN0dW5nZW4KKyAgICAgZW50aGFsdGVuZSBrYW1wZnJlbGV2YW50ZSBGdW5rdGlvbmFsaXRhZXQuCisgICAgIChCVFc6IEtsZWlkdW5nZW4ga29lbm5lbiBhbGxlcmRpbmdzLCBzb2Zlcm4gdW5iZWRpbmd0IG5vdHdlbmRpZywgbWl0dGVscworICAgICAgUF9TRU5TSVRJVkUsIFBfU0VOU0lUSVZFX0FUVEFDSywgZXRjLiBhdWNoIGluZGlyZWt0IGFtIEthbXBmIHRlaWxuZWhtZW4sCisgICAgICBpbiBkZW0gU2lubmUsIGRhc3Mgc2llIGF1ZiBlaW5nZWhlbmRlbiBTY2hhZGVuIHJlYWdpZXJlbi4gSGllcmJlaSBkYXJmCisgICAgICBhbGxlcmRpbmdzIGluIGtlaW5lbSBGYWxsIGluIGRlbiBLYW1wZnZlcmxhdWYgZWluZ2VncmlmZmVuIHdlcmRlbi4pCisKKyAgICAgU3BlemllbGxlIFByb3BlcnRpZXM6CisgICAgIFNldFByb3AoUF9XRUFSX0ZVTkMsIG9iKQorCVNldHp0IGRhcyBPYmpla3QsIGluIGRlbSBkaWUgRnVua3Rpb24gV2VhckZ1bmMoKSBkZWZpbmllcnQKKwl3aXJkLiBXZWFyRnVuYygpIHdpcmQgYmVpbSBWZXJzdWNoIGRpZSBLbGVpZHVuZyBhbnp1emllaGVuCisJYXVmZ2VydWZlbiwgZ2lidCBzaWUgMCB6dXJ1ZWNrIHNvIHNjaGVpdGVydCBkZXIgVmVyc3VjaC4KKyAgICAgU2V0UHJvcChQX1JFTU9WRV9GVU5DLCBvYikKKwlTZXR6dCBkYXMgT2JqZWt0LCBpbiBkZW0gZGllIEZ1bmt0aW9uIFJlbW92ZUZ1bmMoKSBkZWZpbmllcnQKKwlpc3QuIERpZSBGdW5rdGlvbiB3aXJkIGJlaW0gVmVyc3VjaCBkaWUgS2xlaWR1bmcgYXVzenV6aWVoZW4KKwlhdWZnZXJ1ZmVuLCBnaWJ0IHNpZSAwIHp1cnVlY2ssIHNvIHNjaGVpdGVydCBkZXIgVmVyc3VjaC4KKworCisgVkVSRVJCVU5HU0JBVU06CisgICAgIFsvc3RkL2Nsb3RoaW5nXQorICAgICAuLi4uLiBbL3N0ZC90aGluZy9wcm9wZXJ0aWVzXQorICAgICAuLi4uLiBbL3N0ZC90aGluZy9sYW5ndWFnZV0KKyAgICAgLi4uLi4gWy9zdGQvdGhpbmcvY29tbWFuZHNdCisgICAgIC4uLi4uIFsvc3RkL3RoaW5nL3Jlc3RyaWN0aW9uc10KKyAgICAgLi4uLi4gWy9zdGQvdGhpbmcvZW52Y2hrXQorICAgICAuLi4uLiBbL3N0ZC9jbG90aGluZy9kZXNjcmlwdGlvbl0KKyAgICAgLi4uLi4uLi4uLiBbL3N0ZC90aGluZy9kZXNjcmlwdGlvbl0KKyAgICAgLi4uLi4gWy9zdGQvY2xvdGhpbmcvbW92aW5nXQorICAgICAuLi4uLi4uLi4uIFsvc3RkL3RoaW5nL21vdmluZ10KKyAgICAgLi4uLi4gWy9zdGQvY2xvdGhpbmcvd2Vhcl0KKworIFNJRUhFIEFVQ0g6CisgICAgIGFybW91cnMsCisgICAgIEZpbHRlckNsb3RoaW5nLCBGaWx0ZXJBcm1vdXJzLCBXZWFyKCksIFVud2VhcigpLCBXZWFyQXJtb3VyKCksCisgICAgIFdlYXJDbG90aGluZygpLCBVbndlYXJBcm1vdXIoKSwgVW53ZWFyQ2xvdGhpbmcoKSAKKworMTUuMDIuMjAwOSwgWmVzc3RyYQorCmRpZmYgLS1naXQgYS9kb2Mvc3RkL2NvbnRhaW5lciBiL2RvYy9zdGQvY29udGFpbmVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2NzA3OGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL2NvbnRhaW5lcgpAQCAtMCwwICsxLDQ5IEBACitPQkpFQ1Q6CisJY29udGFpbmVyIAorCisKK0RFU0NSSVBUSU9OOgorCUEgY29pbnRhaW5lciBpcyBhIHNwZWNpYWwgb2JqZWN0IHdoaWNoIGNhbiBjb250YWluIG90aGVyIG9iamVjdHMuCisJSXQgcHJvdmlkZXMgdGhlIHNhbWUgZnVuY3Rpb25zIGFzIHRoZSB0aGluZyhTKSBjbGFzcywgYnV0IGFkZHMKKwlzb21lIGZ1bmN0aW9ucyBmb3IgdGhlIGhhbmRsaW5nIG9mIGNvbnRlbnRzLiBJdCBkZWZpbmVzIHNvbWUKKwlwcm9wZXJ0aWVzIHJlbGF0ZWQgdG8gd2hhdCBhbmQgaG93IG11Y2ggaXMgY29udGFpbmVkIGluIGl0LgorCisJVGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgYXJlIGRlZmluZWQgZm9yIGEgY29udGFpbmVyOgorCVBfTUFYX1dFSUdIVCwgUF9XRUlHSFRfQ09OVEVOVFMKKworCU5vdGUgdGhhdCB0aGUgd2VpZ2h0IG9mIGEgY29udGFpbmVyIGlzIGhhbmRsZWQgZXNwZWNpYWxseToKKwlTZXRQcm9wKFBfV0VJR0hULHdlaWdodCkgc2V0cyB0aGUgd2VpZ2h0IG9mIHRoZSBjb250YWluZXIKKwl3aXRob3V0IGNvbnRlbnRzLCB3aGlsZSBRdWVyeVByb3AoUF9XRUlHSFQpIHJldHVybnMgdGhlIHRvdGFsCisJd2VpZ2h0IG9mIHRoZSBjb250YWluZXIgcGx1cyBjb250ZW50cy4KKworCUZvciBub3csIHlvdSBtYXkgdXNlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gdG8gYWRkIG9yIHJlbW92ZQorCXdlaWdodCBmcm9tIHRoZSBjb250YWluZXIuCisKKwlBZGRXZWlnaHQod2VpZ2h0KQorCSAgQWRkcyA8d2VpZ2h0PiB0byB0aGUgY29udGFpbmVyLiBJZiBpdHMgT0ssIDEgaXMgcmV0dXJuZWQsCisJICBvdGhlcndpc2UgMC4gT25seSBpZiB0aGUgd2VpZ2h0IGZpdHMgaW50byB0aGUgY29udGFpbmVyLCB0aGUKKwkgIHdlaWdodCBpcyBhZGp1c3RlZC4KKworCU1heUFkZFdlaWdodCh3ZWlnaHQpCisJICBMaWtlIEFkZFdlaWdodCwgYnV0IGlmIHRoZSB3ZWlnaHQgZml0cyBpbnNpZGUgdGhlIGNvbnRhaW5lciwKKwkgIHRoZSB0b3RhbCB3ZWlnaHQgaXMgTk9UIHVwZGF0ZWQuIFlvdSBtYXkgdXNlIHRoaXMgZnVuY3Rpb24gdG8KKwkgIHRlc3QgaWYgYW4gb2JqZWN0IGZpdHMgaW50byBhIGNvbnRhaW5lci4KKworCU5PVEU6IEN1cnJlbnRseSwgdGhlc2UgZnVuY3Rpb25zIG1heSBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlLgorCUluIGEgYWx0ZXIgc3RhZ2UsIG1vdmVtZW50IG9mIG9iamVjdHMgd2lsbCBiZSBkb25lIGJ5IGNhbGxpbmcKKwl0aGUgbW92ZSgpIGZ1bmN0aW9uIGluIHRoZSBvYmplY3QgdG8gYmUgbW92ZWQuIFRoZSBtb3ZlKCkKKwlmdW5jdGlvbiBvZiB0aGF0IG9iamVjdCB3aWxsIHRoZW4gY2FsbCAoTWF5KUFkZFdlaWdodCgpIGl0c2VsZgorCXRvIGRldGVybWluZSBpZiBpdCBtYXkgZW50ZXIgdGhlIGNvbnRhaW5lci4KKworCitJTkhFUklUQU5DRSBUUkVFOgorCWNvbnRhaW5lcgorCSAgfC10aGluZy9tb3ZpbmcKKwkgIHwtdGhpbmcvcHJvcGVydGllcworCSAgfC1jb250YWluZXIvZGVzY3JpcHRpb24KKwkgIHwgICBgLXRoaW5nL2Rlc2NyaXB0aW9uCisJICBgLWNvbnRhaW5lci9yZXN0cmljdGlvbnMKKworCitTRUUgQUxTTzoKKwl0aGluZyhTKQpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC9jb3Jwc2UgYi9kb2Mvc3RkL2NvcnBzZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGUyZDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3N0ZC9jb3Jwc2UKQEAgLTAsMCArMSw3NiBAQAorT0JKRUtUOgorICAgICAgY29ycHNlCisKKworU1lOT1BTSVM6CisgICAgICBpbmhlcml0ICJzdGQvY29ycHNlIjsKKworCitCRVNDSFJFSUJVTkc6CisgICAgICBEaWUgU3RhbmRhcmRsZWljaGUgaXN0IGVpbiBzcGV6aWVsbGVyIENvbnRhaW5lci4gRXIgYmVpbmhhbHRldCBkaWUKKyAgICAgIHp1cnVlY2tnZWxhc3NlbmUgQXVzcnVlc3R1bmcgZ2VzdG9yYmVuZXIgTlBDcyB1bmQgU3BpZWxlci4KKyAgICAgIERpZSBTdGFuZGFyZGxlaWNoZSB2ZXJmYXVsdCBtaXQgZGVyIFplaXQgdW5kIHN0ZWxsdCBlaW4gcGFhcgorICAgICAgRnVua3Rpb25hbGl0YWV0ZW4genVyIFZlcmZ1ZWd1bmcsIG5hZW1saWNoIGRhcyBFc3NlbiBkZXIgTGVpY2hlCisgICAgICB1bmQgZGFzIFZlcnNwb3R0ZW4gYXVmIGRlbSBNb2VyZGVya2FuYWwuCisgICAgICBEaWUgRnVua3Rpb24KKyAgICAgICAgdm9pZCBJZGVudGlmeSggb2JqZWN0IG9iICk7CisgICAgICB3aXJkIGltIGRpZSgpIGVpbmVzIExpdmluZ3MgYXVmZ2VydWZlbiwgZGFtaXQgZGllIExlaWNoZSBJbmZvcm1hdGlvbmVuCisgICAgICBhdXMgZGVtIExpdmluZyBhdXNsZXNlbiBrYW5uLCBlaGUgZGllc2VyIGVuZGd1ZWx0aWcgc3RpcmJ0LiBTY2hyZWlidAorICAgICAgbWFuIGVpbmUgZWlnZW5lIExlaWNoZSwgZGFubiBpc3QgZGllcyBkaWUgZ2VlaWduZXRlIE1vZWdsaWNoa2VpdCwgZGVyCisgICAgICBMZWljaGUgSW5mb3JtYXRpb25lbiB6dWtvbW1lbiB6dSBsYXNzZW4uCisKKworQkVJU1BJRUxFOgorICAgICAgLy8gRWluZSBlaWdlbmUgTGVpY2hlLgorICAgICAgI2luaGVyaXQgInN0ZC9jb3Jwc2UiOworCisgICAgICB2b2lkIGNyZWF0ZSgpCisgICAgICB7CisgICAgICAgIDo6Y3JlYXRlKCk7CisgICAgICAgIC8vIElyZ2VuZHdhcyBlaWdlbmVzLi4uCisgICAgICB9CisKKyAgICAgIC8qCisgICAgICAgKiBEaWVzZXIgRnVua3Rpb24gd2lyZCBkZXIgZ2V0b2V0ZXRlIExpdmluZyB1ZWJlcmdlYmVuLgorICAgICAgICovCisgICAgICB2b2lkIElkZW50aWZ5KG9iamVjdCBvYikKKyAgICAgIHsKKyAgICAgICAgOjpJZGVudGlmeShvYik7CisgICAgICAgIGlmIChvYikKKyAgICAgICAgeworICAgICAgICAgIG9iLT5RdWVyeVByb3AoIm1laW5lX3RvbGxlX3Byb3BlcnR5Iik7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLyoKKyAgICAgICAqIERhcyBpc3QgZGllIGb8ciAiaXNzIGxlaWNoZSIgYXVmZ2VydWZlbmUgRnVua3Rpb24uCisgICAgICAgKi8KKyAgICAgIGludCBtYW1wZiggc3RyaW5nIHN0ciApCisgICAgICB7CisgICAgICAgIG5vdGlmeV9mYWlsKCJXYXMgd2lsbHN0IER1IGVzc2VuP1xuIik7CisgICAgICAgIGlmICghc3RyIHx8ICFpZChzdHIpICkgcmV0dXJuIDA7CisgICAgICAgIHRlbGxfb2JqZWN0KHRoaXNfcGxheWVyKCksICJEaWVzZSBMZWljaGUga2FubiBtYW4gbmljaHQgZXNzZW4uXG4iKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9CisKKworCitCRU1FUktVTkc6CisgICAgICBNYW4ga2FubiBlaWdlbmUgTGVpY2hlbiBzY2hyZWliZW4sIGRpZSB2b24gZGVyIFN0YW5kYXJkbGVpY2hlIGVyYmVuCisgICAgICBvZGVyIGF1Y2ggbmljaHQuIE1hbiBzb2xsdGUgZGFubiBhYmVyIGRpZSBpbSBkaWUoKSBhdWZnZXJ1ZmVuZW4KKyAgICAgIEZ1bmt0aW9uZW4gaW1wbGVtZW50aWVyZW46CisgICAgICAgIGNvcnBzZS0+SWRlbnRpZnkob2JqZWN0IG9iKTsKKwljb3Jwc2UtPlNldFByb3AoKioqKTsgLy8gRnVlciBQX0hFQUwKKwljb3Jwc2UtPm1vdmUoKioqKTsgLy8gVW0gc2llIGlucyBlbnZpcm9ubWVudCgpIGRlcyBUb3RlbiB6dSBiZWtvbW1lbi4KKyAgICAgIERpZSBMZWljaGUgc29sbHRlLCBtdXNzIGFiZXIga2VpbiBDb250YWluZXIgc2VpbiwgZGFtaXQgZGllIEF1c3J1ZXN0dW5nCisgICAgICBoaW5laW5iZXdlZ3Qgd2VyZGVuIGthbm4uCisgICAgICBXZW5uIG1hbiBuaWNodCB2b24gZGVyIFN0YW5kYXJkbGVpY2hlIGVyYnQsIGtvbW10IHNpZSBuaWNodCBhdWYgLU1vZXJkZXIKKyAgICAgIHVuZCBtYW4ga2FubiBzaWUgbmljaHQgdmVyc3BvdHRlbi4gRGFtaXQgZGllcyBnZWh0LCBtdXNzICghKSBtYW4gdm9uIGRlcgorICAgICAgU3RhbmRhcmRsZWljaGUgZXJiZW4uCisKK1NJRUhFIEFVQ0g6CisgICAgICBQX05PQ09SUFNFLCBQX0NPUlBTRSwgUF9IRUFMLCBRdWVyeUhlYWxJbmZvKCkKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMZXR6dGUgQWVuZGVydW5nOiAzMS4wMy4yMDA4LCBBcmF0aG9ybgpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC9ob29rcyBiL2RvYy9zdGQvaG9va3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUzMDhiZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zdGQvaG9va3MKQEAgLTAsMCArMSwyNzggQEAKK0RhcyBuZXVlIEhvb2tzeXN0ZW0KKyhJbXBsZW1lbnRpZXJ1bmcgdm9uIE11YWRpYiwgdWViZXJhcmJlaXRldCB2b24gWmVzc3RyYSkKKworRUlOTEVJVFVORworPT09PT09PT09PQorRGFzIG5ldWUgSG9va3N5c3RlbSBiYXV0IG5pY2h0IG1laHIgYXVmIGRlciBFaW50cmFndW5nIGVpbmVzIEhvb2tzIGluIGVpbmVyCitQcm9wZXJ0eSBhdWYuIERhZHVyY2ggd2lyZCBlcyBtb2VnbGljaCwgZGFzcyBuaWNodCBudXIgZWluIE9iamVrdCBzaWNoIGFscworSG9vayBlaW50cmFlZ3QuCisKK0VzIGdpYnQgdmVyc2NoaWVkZW5lbiBBcnRlbiB2b24gSG9va3MsIGRpZSBtYW4gZWludHJhZ2VuIGthbm46CisqIExpc3RlbmVyIChIX0xJU1RFTkVSKQorICAgICAgICAgICAgZGllc2UgSG9va3Mgd2VyZGVuIHVlYmVyIGVpbiBFcmVpZ25pcyBudXIgaW5mb3JtaWVydCwKKyAgICAgICAgICAgIGtvZW5uZW4gYWJlciBuaWNodCBlaW5ncmVpZmVuIG9kZXIgYWVuZGVybi4KKyAgICAgICAgICAgIG1heC4gQW56YWhsOiA1CisqIERhdGEtTW9kaWZpZXIgKEhfREFUQV9NT0RJRklDQVRPUikKKyAgICAgICAgICAgIGRpZXNlIEhvb2tzIGR1ZXJmZW4gZGllIERhdGVuIGVpbmVzIEVyZWlnbmlzc2VzIGFlbmRlcm4uCisgICAgICAgICAgICBtYXguIEFuemFobDogMworKiBIb29rLU1vZGlmaWVyIChIX0hPT0tfTU9ESUZJQ0FUT1IpCisgICAgICAgICAgICBkaWVzZSBIb29rcyBkdWVyZmVuIGRpZSBEYXRlbiBkZXMgRXJlaWduaXNzZXMgYWVuZGVybiB1bmQKKyAgICAgICAgICAgIHp1c2FldHpsaWNoIGRhcyBFcmVpZ25pcyBhdWNoIGFiYnJlY2hlbi4KKyAgICAgICAgICAgIG1heC4gQW56YWhsOiAyCisqIFN1cnZleW9yIChIX0hPT0tfU1VSVkVZT1IpCisgICAgICAgICAgICBkaWVzZSBIb29rcyBkdWVyZmVuIGFsbGVzIG9iZW4gYmVzY2hyaWViZW5lLiBadXNhZXR6bGljaCB3ZXJkZW4KKyAgICAgICAgICAgIHNpZSBhYmVyIGF1Y2ggZ2VmcmFndCwgd2VubiBhbmRlcmUgT2JqZWt0ZSBlaW5lbiBIb29rIGVpbnRyYWdlbgorICAgICAgICAgICAgd29sbGVuLCBlaW5lbiBIb29rIGFiYnJlY2hlbiB3b2xsZW4gb2RlciBEYXRlbiBhZW5kZXJuIHdvbGxlbi4KKyAgICAgICAgICAgIE9kZXIgYW5kZXJzOiBTdXJ2ZXlvcmhvb2tzIGVudHNjaGVpZGVuLCB3YXMgYW5kZXJlIGR1ZXJmZW4uCisgICAgICAgICAgICBLZWluIG5vcm1hbGVzIE9iamVrdGUgc29sbHRlIGRpZXNlIEFydCB2b24gSG9vayBlaW50cmFnZW4uIERlciBSTQorICAgICAgICAgICAgbXVzcyBkaWUgVmVyd2VuZHVuZyBlaW5lcyBTdXJ2ZXlvcnMgZ2VuZWhtaWdlbi4KKyAgICAgICAgICAgIG1heC4gQW56YWhsOiAxCisKK0F1c3NlcmRlbSBsYXNzZW4gc2ljaCBIb29rcyBub2NoIG1pdCB1bnRlcnNjaGllZGxpY2hlciBQcmlvcml0YWV0IGVpbnRyYWdlbiwKK3dlbGNoZSBkYW5uIGluIGRlciBlbnRzcHJlY2hlbmRlbiBSZWloZW5mb2xnZSBhYmdlYXJiZWl0ZXQgd2VyZGVuLiBXZW5uIGVpbgorbmV1ZXIgSG9vayBlaW5nZXRyYWdlbiB3aXJkLCBhYmVyIGVpZ2VudGxpY2ggZGllIG1heC4gQW56YWhsIHNjaG9uIGVycmVpY2h0Cit3aXJkLCB3aXJkIGRlciBLb25zdW1lbnQgbWl0IGRlciBuaWVkcmlnc3RlbiBQcmlvcml0YWV0IGdlbG9lc2NodC4gSW4gZGllc2VtCitGYWxsIHdpcmQgZGllIHN1cGVyc2VlZGVkSG9vaygpIGltIHZlcmRyYWVuZ3RlbiBLb25zdW1lbnRlbiBnZXJ1ZmVuLgorCitVbSBkYXMgbmV1ZSBIb29rLVN5c3RlbSB6dSByZWFsaXNpZXJlbiwgZ2lidCBlcyB6d2VpIHdlc2VudGxpY2hlIEtsYXNzZW4uCitEaWUgT2JqZWt0ZSwgZGllIGRpZSBFaW50cmFndW5nIHZvbiBIb29rcyBlcmxhdWJlbiwgZXJiZW4gaGllcnp1IHZvbgoraG9va19wcm92aWRlci4gT2JqZWt0ZSwgZGllIGVpbmVuIFN1cnZleW9yLUhvb2sgZWludHJhZ2VuIHdvbGxlbiwgc29sbHRlbiB2b24KK2RlciBLbGFzc2UgaG9va19zdXJ2ZXlvciBlcmJlbi4gT2JqZWt0ZSBtaXQgbm9ybWFsZW4gSG9va3MgYnJhdWNoZW4gbmljaHRzIHp1CitlcmJlbi4KKworCitXZWxjaGUgSG9va3MgZ2lidCBlcyB6dXIgWmVpdCBpbiBkZXIgQmFzaXMtTXVkbGliPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKiBIX0hPT0tfTU9WRQorICBCZWkgQmV3ZWd1bmcgZWluZXMgT2JqZWt0ZXMgYXVzZ2Vsb2VzdC4gS2FubiBCZXdlZ3VuZyBiZWVpbmZsdXNzZW4gb2RlcgorICBhYmJyZWNoZW4uCisqIEhfSE9PS19ESUUKKyAgQmVpbSBUb2QgZWluZXMgTGViZXdlc2VucyBhdXNnZWxvZXN0LiBLYW5uIGRlbiBUb2QgYWJicmVjaGVuIG9kZXIKKyAgPHBvaXNvbmRlYXRoPiBhYmFlbmRlcm4uCisqIEhfSE9PS19ERUZFTkQKKyAgSW0gRGVmZW5kKCkgZWluZXMgTGViZW53ZXNlbnMgYXVzZ2Vsb2VzdC4gS2FubiBkYXMgRGVmZW5kKCkgYWJicmVjaGVuIHVuZAorICBEYXRlbiBkZXMgRGVmZW5kKCkgYWVuZGVybi4KKyogSF9IT09LX0FUVEFDSworICBJbSBBdHRhY2soKSBlaW5lcyBMZWJlbndlc2VucyBhdXNnZWxvZXN0LiBLYW5uIGRhcyBBdHRhY2soKSBhYmJyZWNoZW4uCisqIEhfSE9PS19IUAorICBCZWkgVmVyYWVuZGVydW5nIGRlciBIUCAoTFApIGVpbmVzIExlYmV3ZXNlbnMgZ2VydWZlbi4gKFp1ciBaZWl0IGtlaW5lCisgIERhdGVudmVyYWVuZGVydW5nIG1vZWdsaWNoKQorKiBIX0hPT0tfU1AKKyAgQmVpIFZlcmFlbmRlcnVuZyBkZXIgU1AgKEtQKSBlaW5lcyBMZWJld2VzZW5zIGdlcnVmZW4uIChadXIgWmVpdCBrZWluZQorICBEYXRlbnZlcmFlbmRlcnVuZyBtb2VnbGljaCkKKyogSF9IT09LX0FUVEFDS19NT0QKKyAgV2lyZCBpbSBBdHRhY2soKSBhdXNnZWxvZXN0LCBuYWNoZGVtIGRpZSBmdWVyIGRlbiBBbmdyaWZmIHdpY2h0aWdlbiBEYXRlbgorICBlcm1pdHRlbHQgdW5kIGJlcmVjaG5ldCB3dXJkZW4uIERpZXNlIGtvZW5uZW4gZGFubiB2b20gSG9va29uc3VtZW50ZW4KKyAgbm9jaG1hbCBnZWFlbmRlcnQgd2VyZGVuLiBBdWNoIGVpbiBBYmJydWNoIGRlcyBBdHRhY2soKSBpc3QgaGllciBub2NoCisgIG1vZWdsaWNoLgorKiBIX0hPT0tfQUxDT0hPTAorICBCZWkgVmVyYWVuZGVydW5nIHZvbiBQX0FMQ09IT0wgaW0gTGViZXdlc2VucyBnZXJ1ZmVuLgorKiBIX0hPT0tfRk9PRAorICBCZWkgVmVyYWVuZGVydW5nIHZvbiBQX0ZPT0QgaW0gTGViZXdlc2VucyBnZXJ1ZmVuLgorKiBIX0hPT0tfRFJJTksKKyAgQmVpIFZlcmFlbmRlcnVuZyB2b24gUF9EUklOSyBpbSBMZWJld2VzZW5zIGdlcnVmZW4uCisqIEhfSE9PS19QT0lTT04KKyAgQmVpIFZlcmFlbmRlcnVuZyB2b24gUF9QT0lTT04gaW0gTGViZXdlc2VucyBnZXJ1ZmVuLgorKiBIX0hPT0tfQ09OU1VNRQorICBCZWltIEtvbnN1bWllcmVuIHZvbiBTcGVpc2VuIHVuZCBHZXRyYWVua2VuIGluIEtuZWlwZW4gaW0gTGViZXdlc2VucworICBnZXJ1ZmVuLgorKiBIX0hPT0tfVEVBTVJPV0NIQU5HRQorICBCZWkgVGVhbXJlaWhlbndlY2hzZWwgdm9tIExlYmV3ZXNlbiBhdXNnZWxvZXN0LgorKiBIX0hPT0tfSU5TRVJUCisgIFdpcmQgdm9uIFNwaWVsZXJvYmpla3RlbiBhdXNnZWxvZXN0LCB3ZW5uIGVpbiBPYmpla3QgaW5zIFNwaWVsZXJpbnZlbnRhcgorICBiZXdlZ3Qgd2lyZC4gKEtlaW5lIERhdGVudmVyYWVuZGVydW5nIG1vZWdsaWNoKQorKiBIX0hPT0tfRVhJVF9VU0UKKyAgV2lyZCB2b24gZWluZW0gUmF1bSBhdXNnZWxvZXN0LCB3ZW5uIGVpbiBMZWJld2VzZW4gZWluZW4gQXVzZ2FuZyBiZW51dHp0LgorICBBYmJydWNoIHVuZCBBZW5kZXJ1bmcgZGVyIERhdGVuIGRlcyBBdXNnYW5ncyBtb2VnbGljaC4KKworSE9PSy1LT05TVU1FTlRFTgorPT09PT09PT09PT09PT09PQorRGVyIEhvb2stUHJvdmlkZXIgcnVmdCBiZWkgQXVzbG9lc2VuIGRlcyBIb29rcyBpbiBhbGxlbiBLb25zdW1lbnRlbiBlaW5lCitiZXN0aW1tdGUgTWV0aG9kZSBhdWYuIFdlbm4gYmVpIGRlciBSZWdpc3RyaWVydW5nIGVpbmVzIE9iamVrdHMga2VpbmUgQ2xvc3VyZQorYW5nZWJlbiB3dXJkZSwgZGllIGluIGRpZXNlbSBGYWxsIGdlcnVmZW4gd2VyZGVuLCB3aXJkIHN0YW5kYXJkbWFlc3NpZyBkaWUKK2xmdW4gSG9va0NhbGxiYWNrKCkgZ2VydWZlbiAoZ2lidCBtYW4gZWluZSBDbG9zdXJlIGFuLCBiZWtvbW10IHNpZSBkaWUKK2dsZWljaGVuIEFyZ3VtZW50ZSB1bmQgZXMgd2VyZGVuIGRpZSBiZXNjaHJpZWJlbmVuIFJ1ZWNrZ2FiZXdlcnRlIGVyd2FydGV0KToKKyAgKiBtaXhlZCBIb29rQ2FsbGJhY2sob2JqZWN0IGhvb2tTb3VyY2UsIGludCBob29raWQsIG1peGVkIGhvb2tEYXRhKQorICBEaWVzZSBNZXRob2RlIHdpcmQgaW4gamVkZW0gSG9vay1Lb25zdW1lbnRlbiBlaW5lcyBIb29rLVByb3ZpZGVycworICBhdWZnZXJ1ZmVuLCBzb2xhbmdlIGRpZSBWZXJhcmJlaXR1bmcgbmljaHQgdm9yaGVyIGFiZ2Vicm9jaGVuIHd1cmRlLgorICBEaWUgUmVpaGVuZm9sZ2UgZGVyIEFiYXJiZWl0dW5nIHdpcmQgbmFjaCBMaXN0ZSAoU3VydmV5b3IsCisgIEhvb2stTW9kaWZpa2F0b3IsIERhdGEtTW9kaWZpa2F0b3IsIExpc3RlbmVyKSB1bmQgZG9ydCBuYWNoIFByaW9yaXRhZXQKKyAgZHVyY2hnZWZ1ZWhydC4KKyAgRWluIFN1cnZleW9yLUhvb2sga2FubiB2ZXJoaW5kZXJuLCBkYXNzIEhvb2tzIGJlc3RpbW10ZSBBZW5kZXJ1bmdlbgorICBkdXJjaGZ1ZWhyZW4uCisKKyAgUnVlY2tnYWJld2VydCBpc3QgZWluIEFycmF5LCBkYXMgZGllIGZvbGdlbmRlbiBXZXJ0ZSBiZWluaGFsdGV0LgorCisgIEhfUkVUQ09ERSBHaWJ0IGFuLCB3ZWxjaGVyIEhvb2stVHlwIHZlcndlbmRldCB3dXJkZS4KKyAgICAgIEhfTk9fTU9EID0+IE5pY2h0cyB3dXJkZSB2ZXJhZW5kZXJ0LgorICAgICAgSF9BTFRFUkVEID0+IERhdGVuIHd1cmRlbiB2ZXJhZW5kZXJ0LgorICAgICAgSF9DQU5DRUxMRUQgPT4gSG9vay1LZXR0ZSBzb2xsIGFiZ2Vicm9jaGVuIHdlcmRlbi4KKyAgICAgICAgICAgICAgICAgID0+IEF1c3NlcmRlbSBzb2xsIGRpZSBIb29rLWF1c2xvZXNlbmRlIFN0ZWxsZQorICAgICAgICAgICAgICAgICAgICAgYWJnZWJyb2NoZW4gd2VyZGVuLiBaLkIuIHdpcmQgZGFzIERlZmVuZCgpCisgICAgICAgICAgICAgICAgICAgICBhYmdlYnJvY2hlbiwgd2VubiBlaW4gSF9IT09LX0RFRkVORAorICAgICAgICAgICAgICAgICAgICAgbWl0IGNhbmNlbGxlZCBiZWFudHdvcnRldCB3aXJkLgorICBIX1JFVERBVEEgR2lidCBkaWUgKGV2dGwuIGdlYWVuZGVydGVuKSBEYXRlbiBhbi4KKyAgICAgIG1peGVkLU9iamVrdCwgZGFzIHdpZSBkZXIgUGFyYW1ldGVyIGhvb2tEYXRhIGF1ZmdlYmF1dCBpc3QuCisKK0VpbiBPYmpla3QgZGFyZiBzaWNoIG1laHJmYWNoIGZ1ZXIgZGVuIGdsZWljaGVuIEhvb2sgcmVnaXN0cmllcmVuLiBBbGxlcmRpbmdzCitpc3QgZnVlciBqZWRlIFJlZ2lzdHJpZXJ1bmcgZWluZSBhbmRlcmUgQ2xvc3VyZSBub2V0aWcuCisKKyAgKiB2b2lkIHN1cGVyc2VlZGVkSG9vayhpbnQgaG9va2lkLCBvYmplY3QgaG9va3Byb3ZpZGVyKQorICAgIFdpcmQgZ2VydWZlbiwgd2VubiBkZXIgS29uc3VtZW50IHZvbiBlaW5lbSBhbmRlcmVuIG1pdCBob2VoZXJlciBQcmlvcml0YWV0CisgICAgdmVyZHJhZW5ndCB3dXJkZS4KKworCitIT09LLVBST1ZJREVSCis9PT09PT09PT09PT09CisgIERlciBIb29rLVByb3ZpZGVyIGJpZXRldCBlaW5lIE1lbmdlIHZvbiBNZXRob2RlbiBhbiwgZGllIGVpbmUgS29uZmlndXJhdGlvbgorICBlcm1vZWdsaWNoZW4gdW5kIGRpZSBFaW50cmFndW5nIHZvbiBIb29rLUtvbnN1bWVudGVuIGVybGF1YmVuLiBJbQorICBOb3JtYWxmYWxsIHNvbGx0ZSBlciBnZWVyYnQgdW5kIG5pY2h0IG1vZGlmaXppZXJ0IHdlcmRlbiAoYXVzc2VyIG5hdHVlcmxpY2gsCisgIGRpZSB2b20gT2JqZWt0ZSBiZXJlaXRnZXN0ZWxsdGVuIEhvb2tzIGVpbnp1dHJhZ2VuKS4KKworICAqIGludCogSExpc3RIb29rcygpOworICBEaWVzZSBNZXRob2RlIGxpZWZlcnQgZWluZSBMaXN0ZSB2b24gSG9va3R5cGVuLCBmdWVyIGRpZSBkYXMgT2JqZWt0CisgIEVpbnRyYWd1bmdlbiBhbm5pbW10LiBIaWVyIGtvZW5udGUgYmVpc3BpZWxzd2Vpc2UgZWluZSBMaXN0ZSBtaXQgZGVuCisgIEVpbnRyYWVnZW4gZnVlciBBdHRhY2stLCBEZWZlbmQtIHVuZCBNb3ZlLUhvb2tzIHN0ZWhlbi4KKworCisgICogcHJvdGVjdGVkIHZvaWQgb2ZmZXJIb29rKGludCBob29raWQsIGludCBvZmZlcnN0YXRlKTsKKyAgRGllc2UgTWV0aG9kZSBkaWVudCBkYXp1LCBlaW5lbiBiZXN0aW1tdGVuIEhvb2sgKHouQi4gSF9IT09LX01PVkUpCisgIGFuenViaWV0ZW4uIE51ciBIb29rcywgZGllIGhpZXJtaXQgYW5nZWJvdGVuIHd1cmRlbiwgc3RlaGVuIHp1cgorICBSZWdpc3RyaWVydW5nIHp1ciBWZXJmdWVndW5nLgorICAnb2ZmZXJzdGF0ZSc6IDAgKG5pY2h0IHZlcmZ1ZWdiYXIpLCAxICh2ZXJmdWVnYmFyL2FuZ2Vib3RlbikKKworCisgICogaW50IEhSZWdpc3RlclRvSG9vayhpbnQgaG9va2lkLCBtaXhlZCBjb25zdW1lciwgaW50IGhvb2twcmlvLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29uc3VtZXJ0eXBlLCBpbnQgdGltZUluU2Vjb25kcyk7CisgIFJlZ2lzdHJpZXJ0IGVpbiBPYmpla3Qgb2RlciBlaW5lIENsb3N1cmUgYWxzIEhvb2stS29uc3VtZW50LgorICBQYXJhbWV0ZXI6CisgICdob29raWQnICAgICAgICBnaWJ0IGRlbiBIb29rLVR5cCBhbiwgei5CLiBkZW4gRGVmZW5kLUhvb2suCisgICAgICAgICAgICAgICAgICBNYW4ga2FubiBzaWNoIG51ciBmdWVyIEhvb2t0eXBlbiBlaW50cmFnZW4sIGRpZSBkaWUgTWV0aG9kZQorICAgICAgICAgICAgICAgICAgSExpc3RIb29rcygpIGFuZ2Vib3RlbiBoYXQuCisgICdjb25zdW1lcicgICAgICBXZW5uIGVpbiBPYmpla3QsIHdpcmQgZGFzIE9iamVrdCBlaW5nZXRyYWdlbiB1bmQgc3BhZXRlcgorICAgICAgICAgICAgICAgICAgSG9va0NhbGxiYWNrKCkgZ2VydWZlbi4KKyAgICAgICAgICAgICAgICAgIFdlbm4gZWluZSBDbG9zdXJlLCB3aXJkIGRhcyBPYmpla3QgZGVyIENsb3N1cmUgZWluZ2V0cmFnZW4KKyAgICAgICAgICAgICAgICAgIHVuZCBzcGFldGVyIGRpZXNlIENsb3N1cmUgZ2VydWZlbi4KKyAgJ2hvb2twcmlvJyAgICAgIEdpYnQgZGllIFByaW9yaXRhZXQgYW4sIG1pdCBkZXIgZGVyIEhvb2sgbGF1ZmVuIHNvbGwuCisgICAgICAgICAgICAgICAgICBEaWVzZSBBbmdhYmUgYmVzdGltbXQgZGllIFJlaWhlbmZvbGdlLCBpbiBkZXIgZGllIEhvb2tzCisgICAgICAgICAgICAgICAgICBpbiBkZXIgTGlzdGUgZGVyIEhvb2tzIGVpbmdldHJhZ2VuIHdlcmRlbi4gRGllIFByaW9yaXRhZXQKKyAgICAgICAgICAgICAgICAgIGlzdCBIX0hPT0tfTElCUFJJTyh4KSwgSF9IT09LX0dVSUxEUFJJTyh4KSBvZGVyCisgICAgICAgICAgICAgICAgICBIX0hPT0tfT1RIRVJQUklPKHgpLiB4IGRhcmYgMCwgMSBvZGVyIDIgc2VpbiAoamUgbmllZHJpZ2VyLAorICAgICAgICAgICAgICAgICAgZGVzdG8gaG9laGVyIGRpZSBQcmlvcml0YWV0KS4KKyAgJ2NvbnN1bWVydHlwZScgIEdpYnQgYW4sIHVtIHdlbGNoZSBBcnQgdm9uIEhvb2sgZXMgc2ljaCBoYW5kZWx0LgorICAgICAgICAgICAgICAgICAgRXMgZ2lidCB2aWVyIGZlc3RnZWxlZ3RlbiBUeXBlbiwgZGllIGZ1ZXIgYWxsZSBIb29rcworICAgICAgICAgICAgICAgICAgZXhpc3RpZXJlbiBrb2VubmVuLiBEaWUgTWV0aG9kZSBIQ29uc3VtZXJUeXBlSXNBbGxvd2VkKCkKKyAgICAgICAgICAgICAgICAgIGdpYnQgQXVmc2NobHVzcyBkYXJ1ZWJlciwgd2VsY2hlIEhvb2stVHlwZW4gZXhpc3RpZXJlbi4KKyAgICAgICAgICAgICAgICAgIERpZSBIb29rLVR5cGVuIHNpbmQgaW4gaG9vay5oIGRlZmluaWVydC4KKyAgJ3RpbWVJblNlY29uZHMnIGdpYnQgZGllIExhdWZ6ZWl0IGRlcyBIb29rcyBhbi4gRmFsbHMgMCBlaW5nZXRyYWdlbiB3aXJkLAorICAgICAgICAgICAgICAgICAgbGFldWZ0IGRlciBIb29rIGV3aWcuCisgIFJ1ZWNrZ2FiZXdlcnRlOgorICAgIDEgLSBSZWdpc3RyaWVydW5nIGVyZm9sZ3JlaWNoCisgIDw9MCAtIFJlZ2lzdHJpZXJ1bmcgZmVobGdlc2NobGFnZW46CisgICAgICAgIC0xIDogSG9vayB1bmJla2FubnQKKyAgICAgICAgLTIgOiBjb25zdW1lciBpc3Qga2VpbmUgY2xvc3VyZSB1bmQgZXMga29ubnRlIGtlaW4gQ2FsbGJhY2sgYXVmCisgICAgICAgICAgICAgSG9va0NhbGxiYWNrIGltIGNvbnN1bWVyIGVyc3RlbGx0IHdlcmRlbi4KKyAgICAgICAgLTMgOiBjb25zdW1lciBpc3QgYmVyZWl0cyByZWdpc3RyaWVydAorICAgICAgICAtNCA6IGNvbnN1bWVydHlwIGlzdCBuaWNodCBlcmxhdWJ0CisgICAgICAgIC01IDogaG9va3ByaW8gaXN0IG5pY2h0IGVybGF1YnQKKyAgICAgICAgLTYgOiBTdXJ2ZXlvciBoYXQgUmVnaXN0cmllcnVuZyBuaWNodCBlcmxhdWJ0CisgICAgICAgIC03IDogenV2aWVsZSBIb29rcyByZWdpc3RyaWVydCAvIGtlaW4gSG9va2VpbnRyYWcgZnJlaQorCisgICogaW50IEhVbnJlZ2lzdGVyRnJvbUhvb2soaW50IGhvb2tpZCwgbWl4ZWQgY29uc3VtZXIpOworICBIZWJ0IGRpZSBSZWdpc3RyaWVydW5nIHZvbiA8Y29uc3VtZXI+IGZ1ZXIgZWluZW4gYmVzdGltbXRlbiBIb29rLVR5cCB3aWVkZXIKKyAgYXVmLgorICBQYXJhbWV0ZXI6CisgICdob29raWQnICAgIERpZSBLZW5udW5nIGRlcyBIb29rLVR5cHMsIHouQi4gZGllIEtlbm51bmcgZGVzIEF0dGFjay1Ib29rcy4KKyAgJ2NvbnN1bWVyJyAgRGFzIE9iamVrdCBvZGVyIGRpZSBDbG9zdXJlLCBkaWUvZGFzIG5pY2h0IG1laHIgcmVnaXN0cmllcnQgc2VpbgorICAgICAgICAgICAgICBzb2xsLiBCZWkgZWluZXIgQ2xvc3VyZSB3aXJkIGdlbmF1IGRpZXNlIGF1c2dldHJhZ2VuLiBCZWkgZGVyCisgICAgICAgICAgICAgIEFuZ2FiZSBlaW5lcyBPYmpla3RzIHdpcmQgdmVyc3VjaHQsIGRpZSBDbG9zdXJlIGF1ZgorICAgICAgICAgICAgICBIb29rQ2FsbGJhY2soKSBpbiBkaWVzZW0gT2JqZWt0IGF1c3p1dHJhZ2VuLgorICBSdWVja2dhYmV3ZXJ0ZToKKyAgMCAtICdjb25zdW1lcicgbmljaHQgYWxzIEtvbnN1bWVudCBnZWZ1bmRlbgorICAxIC0gQXVzdHJhZ2VuIGVyZm9sZ3JlaWNoCisKKyAgKiBpbnQgSENvbnN1bWVyVHlwZUlzQWxsb3dlZChpbnQgdHlwZSwgb2JqZWN0IGNvbnN1bWVyKTsKKyAgRGllc2UgTWV0aG9kZSBsaWVmZXJ0IDEgenVydWVjaywgd2VubiBlaW4gYmVzdGltbXRlciBLb25zdW1lbnRlbi1UeXAKKyAgKGZ1ZXIgZGllc2VuIEtvbnN1bWVudGVuKSBlcmxhdWJ0IHdpcmQuCisgIERpZSBTdGFuZGFyZG1ldGhvZGUgbGllZmVydCBpbW1lciAxICh0cnVlKSB6dXJ1ZWNrLiBFcmJlbmRlIE9iamVrdGUKKyAga29lbm5lbiBkaWVzZSBNZXRob2RlIHVlYmVyc2NocmVpYmVuLCB3ZW5uIHNpZSBuaWNodCBhbGxlIEhvb2t0eXBlbgorICBhbmJpZXRlbi4KKworCisgICogaW50IEhQcmlvcml0eUlzQWxsb3dlZChpbnQgcHJpbywgb2JqZWN0IGNvbnN1bWVyKTsKKyAgRGllc2UgTWV0aG9kZSBnaWJ0IGFuLCBvYiBlaW5lIGJlc3RpbW10ZSBQcmlvcml0YWV0IChmdWVyIGRlbiBhbmdlZ2ViZW5lbgorICBLb25zdW1lbnRlbikgZXJsYXVidCBpc3QuIERpZSBTdGFuZGFyZG1ldGhvZGUgbGllZmVydCBpbW1lciAxICh0cnVlKQorICB6dXJ1ZWNrLiBFcmJlbmRlIE9iamVrdGUga29lbm5lbiBkaWVzZSBNZXRob2RlIHVlYmVyc2NocmVpYmVuLCB3ZW5uCisgIHNpZSBkaWUgdmVyZnVlZ2JhcmVuIEhvb2stUHJpb3JpdGFldGVuIGVpbnNjaHJhZW5rZW4gd29sbGVuLgorCisKKyAgKiBpbnQgSElzSG9va0NvbnN1bWVyKGludCBob29raWQsIG1peGVkIGNvbnN1bWVyKTsKKyAgSXN0IDxjb25zdW1lcj4gZWluIE9iamVrdCwgbGllZmVydCBkaWUgTWV0aG9kZSBkaWUgQW56YWhsLCB3aWUgb2Z0IGRpZXNlcworICBPYmpla3QgKG1pdCB2ZXJzY2hpZWRlbmVuIENsb3N1cmVzKSBmdWVyIGRlbiBIb29rIDxob29raWQ+IGVpbmdldHJhZ2VuIGlzdC4KKyAgSXN0IDxjb25zdW1lcj4gZWluZSBDbG9zdXJlLCBsaWVmZXJ0IGRpZXNlIE1ldGhvZGUgMSwgd2VubiBkaWVzZQorICBDbG9zdXJlIGZ1ZXIgZGVuIEhvb2sgPGhvb2tpZD4gZWluZ2V0cmFnZW4gaXN0LgorCisKKyAgKiBwcm90ZWN0ZWQgbWFwcGluZyBIQ29weUhvb2tNYXBwaW5nKCk7CisgIERpZXNlIE1ldGhvZGUgbGllZmVydCBlaW5lIEtvcGllIGRlcyBIb29rLU1hcHBpbmdzLgorICBBQ0hUVU5HOiBkaWVzZSBEYXRlbiBzb2xsdGVuIGRhcyBPYmpla3QgTklFTUFMUyB2ZXJsYXNzZW4uIChBdXNzZXIgZnVlcgorICAgICAgICAgICBEZWJ1Z3p3ZWNrZSkKKworCisKK0hPT0stU1VSVkVZT1IKKz09PT09PT09PT09PT0KKyAgT2JqZWt0ZSBtaXQgU3VydmV5b3Job29rcyBtdWVzc2VuIGVpbmUgTWVuZ2Ugdm9uIE1ldGhvZGVuIGRlZmluaWVyZW4sIGRpZQorICBkZXIgSG9va3Byb3ZpZGVyIGF1ZnJ1ZnQ6CisKKyAgKiBzdGF0dXMgSG9va1JlZ2lzdHJhdGlvbkNhbGxiYWNrKAorICAgICAgICAgICAgICAgIG9iamVjdCByZWdpc3RyaW5nT2JqZWN0LAorICAgICAgICAgICAgICAgIGludCBob29raWQsCisgICAgICAgICAgICAgICAgb2JqZWN0IGhvb2tTb3VyY2UsCisgICAgICAgICAgICAgICAgaW50IHJlZ2lzdHJpbmdPYmplY3RzUHJpb3JpdHksCisgICAgICAgICAgICAgICAgaW50IHJlZ2lzdHJpbmdPYmplY3RzVHlwZSkKKyAgRGllc2UgTWV0aG9kZSB3aXJkIHZvbSBIb29rLVByb3ZpZGVyIGF1ZmdlcnVmZW4sIHdlbm4gZGVyIEhvb2stS29uc3VtZW50CisgIGFscyBTdXJ2ZXlvciBlaW5nZXRyYWdlbiBpc3QgdW5kIGVpbiB3ZWl0ZXJlciBIb29rIGVpbmdldHJhZ2VuIHdlcmRlbiBzb2xsLgorICBHaWJ0IGRpZXNlIE1ldGhvZGUgMCB6dXJ1ZWNrLCBkYW5uIHZlcmJpZXRldCBkZXIgS29uc3VtZW50LCBkYXNzIGRlcgorICBhbmRlcmUgS29uc3VtZW50IGFscyBIb29rIGVpbmdldHJhZ2VuIHdpcmQuCisKKyAgKiBpbnQgSG9va0NhbmNlbEFsbG93YW5jZUNhbGxiYWNrKAorICAgICAgICAgICAgICAgIG9iamVjdCBjYW5jZWxsaW5nT2JqZWN0LAorICAgICAgICAgICAgICAgIGludCBob29raWQsCisgICAgICAgICAgICAgICAgb2JqZWN0IGhvb2tTb3VyY2UsCisgICAgICAgICAgICAgICAgaW50IGNhbmNlbGxpbmdPYmplY3RzUHJpb3JpdHksCisgICAgICAgICAgICAgICAgbWl4ZWQgaG9va0RhdGEpCisgIERpZXNlIE1ldGhvZGUgd2lyZCBhdWZnZXJ1ZmVuLCB1bSBoZXJhdXN6dWZpbmRlbiwgb2IgZWluIGJlc3RpbW10ZXIKKyAgYW5kZXJlciBIb29rIGRpZSBBdXNmdWVocnVuZyBkZXIgSG9vay1LZXR0ZSB1bnRlcmJyZWNoZW4gZGFyZi4KKyAgTnVyIEhvb2tzIGltIEJlcmVpY2ggSF9IT09LX01PRElGSUNBVE9SIHdlcmRlbiBkZXIgTWV0aG9kZSB1ZWJlcmdlYmVuLgorCisgICogaW50IEhvb2tNb2RpZmljYXRpb25BbGxvd2FuY2VDYWxsYmFjaygKKyAgICAgICAgICAgICAgICBvYmplY3QgbW9kaWZ5aW5nT2JqZWN0LAorICAgICAgICAgICAgICAgIGludCBob29raWQsCisgICAgICAgICAgICAgICAgb2JqZWN0IGhvb2tTb3VyY2UsCisgICAgICAgICAgICAgICAgaW50IG1vZGlmeWluZ09iamVjdHNQcmlvcml0eSwKKyAgICAgICAgICAgICAgICBtaXhlZCBob29rRGF0YSkKKyAgRGllc2UgTWV0aG9kZSB3aXJkIGF1ZmdlcnVmZW4sIHVtIGhlcmF1c3p1ZmluZGVuLCBvYiBlaW4gYmVzdGltbXRlcgorICBhbmRlcmVyIEhvb2sgZGllIERhdGVuIGRlcyBIb29rcyB2ZXJhZW5kZXJuIGRhcmYgb2RlciBuaWNodC4KKyAgRXMgd2VyZGVuIGRpZSBIb29rcyBpbiBkZW4gQmVyZWljaGVuIEhfSE9PS19NT0RJRklDQVRPUiB1bmQKKyAgSF9EQVRBX01PRElGSUNBVE9SIChpbiBkaWVzZXIgUmVpaGVuZm9sZ2UpIGF1ZmdlcnVmZW4uCisKKworV0FTIEtPU1RFVCBEQVM/CisgIERhcyBBdXNsb2VzZW4gZWluZXMgSG9va3MgcGVyIEhvb2tGbG93KCkga29zdGV0IDExMSBUaWNrcyB1bmQgY2EuIDcgdXMsIHdlbm4KKyAgZXMgZ2FyIGtlaW5lbiBnaWJ0LCBkZXIgZHJhdWYgbGF1c2NodCAoc296dXNhZ2VuIEZpeGtvc3RlbikuCisgIFBybyBIX0xJU1RFTkVSIGtvbW1lbiBkYW5uIDMxIFRpY2tzIHVuZCBjYS4gMiB1cyBkYXp1LgorCisgIEdpYnRzIGVpbmVuIFN1cnZleW9yLUhvb2sgKGRlciB3aXJkIGRhbm4gZ2VmcmFndCwgb2IgYW5kZXJlIE9iamVrdGUgZGllCisgIERhdGVuIGRlcyBIb29rcyBhZW5kZXJuIG9kZXIgZGllIEhvb2t2ZXJhcmJlaXR1bmcgYWJicmVjaGVuIGR1ZXJmZW4pOgorICBGaXhrb3N0ZW46IDE1NSBUaWNrcywgMTEgdXMuCisgIFBsdXMgcHJvIERhdGEtTW9kaWZpZXI6CisgIDEwNiBUaWNrcywgNS42IHVzCisgIFBsdXMgcHJvIEhvb2stTW9kaWZpZXIsIGRlciBhYmVyIG51ciBEYXRlbiBhZW5kZXJ0OgorICAxMTIgVGlja3MsIDYuNCB1cworICBVbmQgZWluIEhvb2stTW9kaWZpZXIsIGRlciBkZW4gSG9vayBhYmJyaWNodDoKKyAgNzYgVGlja3MsIDQgdXMKKworICAoTWFjaHQgZGVyIFN1cnZleW9yIG5hdHVlcmxpY2ggaXJnZW5kd2FzIGFuZGVyZXMgYWxzICdyZXR1cm4gMTsnLCB3aXJkcworICBuYXR1ZXJsaWNoIGVudHNwcmVjaGVuZCB0ZXVyZXIuKQorCmRpZmYgLS1naXQgYS9kb2Mvc3RkL2xpdmluZyBiL2RvYy9zdGQvbGl2aW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZDQ3YmQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL2xpdmluZwpAQCAtMCwwICsxLDEyMCBAQAorCitPQkpFQ1Q6CisJbGl2aW5nIAorCisKK1NZTk9QU0lTOgorCWluaGVyaXQgInN0ZC9saXZpbmciOworCisJI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKwkjaW5jbHVkZSA8bGl2aW5nLmg+CisKKworREVTQ1JJUFRJT046CisJVGhpcyBpcyB0aGUgZ2VuZXJpYyBsaXZpbmcgb2JqZWN0IHdoaWNoICdsaXZlcycsIGNhbiBtb3ZlLAorCWNhbiBmaWdodC4KKworCUl0IGhhcyBhIG51bWJlciBvZiAnc3RhdHMnLCBhbHNvIGNhbGxlZCAnYXR0cmlidXRlcycgaW4KKwl0aGUgbmV3IHN5c3RlbS4gVGhlc2UgaW5jbHVkZSB0aGUgZm9ybWVyIHN0YXRzIAorCXN0cmVuZ3RoLCBkZXh0ZXJpdHksIGludGVsbGlnZW5jZSBhbmQgY29uc3RpdHV0aW9uLgorCVRoZXNlIGF0dHJpYnV0ZXMgZGV0ZXJtaW5lIHRoZSBsaWZlIGZ1bmN0aW9ucyBhbmQKKwl2YXJpYWJsZXMgbGlrZSBoaXRwb2ludHMgYW5kIHNwZWxscG9pbnRzLCBidXQgYWxzbyB0aGUKKwlhYmlsaXR5IHRvIHBlcmZvcm0gY2VydGFpbiBhY3Rpb25zIGxpa2Ugc3BlbGxjYXN0aW5nIG9yCisJc3dvcmRmaWdodGluZy4gQXR0cmlidXRzIGFyZSBpbXBsZW1lbnRlZCBhcyBhIHByb3BlcnR5CisJUF9BVFRSSUJVVEVTLiBBdHRyaWJ1dGVzIGNhbiBiZSBzZXQgYnkgdXNpbmcgdGhlIGZ1bmN0aW9ucworCisJU2V0QXR0cmlidXRlKHN0cmluZyBhdHRyaWJ1dGUsIGludCB2YWx1ZSkKKwkgIFNldHMgPGF0dHJpYnV0ZT4gdG8gPHZhbHVlPi4gQ2VydGFpbiByZXN0cmljdGlvbnMgbWlnaHQKKwkgIGV4aXN0LCBhbmQgdGhlIHJlcXVlc3RlZCBhdHRyaWJ1dGUgbWlnaHQgbm90IGJlIHNldC4KKwkgIEF0dHJpYnV0ZXMgYXJlIGludGVnZXIgdmFsdWVzLCBhbmQgYXJlIGluIHRoZSByYW5nZQorCSAgb2YgMSAodmVyeSBiYWQpIHRvIDIwIChleGNlbGxlbnQgYW5kIGhpZ2hlc3QgcG9zc2libGUKKwkgIGZvciBhIG5vcm1hbCBodW1hbikuCisKKwlpbnQgUXVlcnlBdHRyaWJ1dGUoc3RyaW5nIGF0dHJpYnV0ZSkKKwkgIFJldHVybnMgdmFsdWUgb2YgPGF0dHJpYnV0ZT4KKworCUFiaWxpdGllcy4gQSBsaXZpbmcgY3JlYXR1cmUgbWF5IGhhdmUgc3BlY2lhbCBhYmlsaXRpZXMKKwl0byBwZXJmb3JtIGNlcnRhaW4gYWN0aW9ucy4gVGhlc2UgbWF5IGJlIHZlcnkgZGlmZmVyZW50CisJdHlwZXMgb2YgYWN0aW9ucywgbGlrZSBmaWdodGluZyB3aXRoIGEgc3dvcmQsIGNhc3RpbmcKKwlhIGZpcmViYWxsIG9yIGNsaW1iaW5nIHVwIGEgdHJlZS4gQWJpbGl0aWVzIGFyZQorCWltcGxlbWVudGVkIGFzIHRoZSBQX0FCSUxJVElFUyBwcm9wZXJ0eS4gQW4gYWJpbGl0eSBtYXkKKwliZSBhY2NvbXBhbmllZCBieSBhbiBvYmplY3Qgd2hpY2ggbWF5IGRlZmluZSBzcGVjaWFsCisJYWN0aW9ucyBhbmQgd2hpY2ggdXNlcyB0aGUgdmFsdWVzIG9mIFBfQUJJTElURVMsIGZvciAKKwlleGFtcGxlIGEgc3BlbGxib29rIHdpbGwgc3RvcmUgc3BlbGwgbGV2ZWxzIHRoZXJlIG9yCisJYSB3ZWFwb24gdXNlcyBhIHdlYXBvbiBhYmlsaXR5IChza2lsbCkuIFRoZSBhYmlsaXRpZXMKKwljYW4gYmUgbWFuaXB1bGF0ZWQ6CisKKwlTZXRBYmlsaXR5KHN0cmluZyBhYmlsaXR5LCBpbnQgdmFsdWUpCisJICBTZXRzIDxhYmlsaXR5PiB0byA8dmFsdWU+LgorCisJaW50IFF1ZXJ5QWJpbGl0eShzdHJpbmcgYWJpbGl0eSkKKwkgIEFzayB0aGUgdmFsdWUgb2YgPGFiaWxpdHk+LgorCisJRXF1aXBtZW50LiBXZWFwb25jbGFzcyBhbmQgYXJtb3VyY2xhc3MgYXJlIGRlZmluZWQuIFVubGVzcworCWEgd2VhcG9uIGlzIHVzZWQsIHRoZSB3YyBpcyAwLiBVbmxlc3MgYW4gYXJtb3VyIGlzIHVzZWQsCisJdGhlIGFjIGlzIDAuIChQX1dDIGFuZCBQX0FDKQorCisJTGl2ZSB2YXJpYWJsZXMuIEEgbGl2aW5nIGNyZWF0dXJlIGhhcyBzZXZlcmFsIG5lZWRzIGp1c3QKKwliZWNhdXNlIGl0IGlzIGFsaXZlLiBUaGUgY29tcGxleCBsaWZlIGZ1bmN0aW9ucyBhcmUKKwlyZWR1Y2NlZCB0byBzb21lIGNydWNpYWwgZmFjdG9ycy4KKworCVBfSFAKKwkgIFRoZXNlIGFyZSBtYWlubHkgZGV0ZXJtaW5lZCBieSB0aGUgY29uc3RpdHV0aW9uIGFuZCBnaXZlCisJICB0aGUgYWJpbGl0eSBvZiB0aGUgYm9keSB0byBhYnNvcmIgZGFtYWdlLiBJZiB0aGUKKwkgIGhpdHBvaW50cyBnbyBiZWxvdyB6ZXJvLCB0aGUgY3JlYXR1cmUgaXMgZGVhZC4KKworCVBfU1AKKwkgIFNwZWxscG9pbnRzIChzb21ldGltZXMgY2FsbGVkIG1hbmEpIGRlc2NyaWJlIHRoZSBtYWdpY2FsCisJICAoc3Bpcml0dWFsKSBjYXBhYmlsaXR5IG9mIHRoZSBjcmVhdHVyZS4gSXQgaXMgbWFpbmx5CisJICBkZXRlcm1pbmVkIGJ5IEludGVsbGlnZW5jZSBhbmQgV2lzZG9tLiBJdCBpcyB1cCB0byB0aGUKKwkgIGNyZWF0dXJlIGhvdyBnb29kIGl0IHVzZXMgdGhlIHNwZWxscG9pbnQgcmVzb3VyY2UuCisJICBTcGVsbHBvaW50cyB3aWxsIGdvIGRvd24gd2hlbiBzdXBlcm5hdHVyYWwgYWN0aW9ucyBhcmUKKwkgIHBlcmZvcm1lZCBieSB0aGUgY3JlYXR1cmUuCisKKwlQX01BWF9TUCwgUF9NQVhfSFAKKwkgIFJlYWRvbmx5IHZhcmlhYmxlIHdoaWNoIGFyZSBjb21wdXRlZCBmcm9tIGF0dHJpYnV0ZXMuCisKKwlQX0ZPT0QsIFBfRFJJTkssIFBfQUxDT0hPTCwgKFBfUE9JU09OKQorCSAgVGhlc2UgdGhyZWUgdmFyaWFibGVzIGRlc2NyaWJlIGh1bmdlciwgdGhpcnN0IGFuZAorCSAgaW50b3hpY2F0aW9uIGJ5IGFsY29ob2wuIFRoZSBtYXggaXMgZGVwZW5kZW50IG9uIHRoZQorCSAgY29uc3RpdHV0aW9uIG9mIHRoZSBsaXZpbmcsIGFuZCBvZiB0aGUgd2VpZ2h0LgorCSAgVGhlc2UgdmFyaWFibGVzIGF1dG9tYXRpY2FsbHkgZGVjcmVhc2Ugd2l0aCB0aW1lLgorCSAgV2hlbiBmb29kIG9yIGRyaW5rIGdvZXMgYmVsb3cgemVybywgdGhlIGNyZWF0dXJlCisJICBzdWZmZXJzIGh1bmdlciBvciB0aGlyc3QgYW5kIHdpbGwgbG9zZSBoaXRwb2ludHMuCisKKwlQX01BWF9GT09ELCBQX01BWF9EUklOSywgUF9NQVhfQUxDT0hPTAorCSAgUmVhZG9ubHkgdmFyaWFibGVzIHdoaWNoIGFyZSBjb21wdXRlZCBmcm9tIGF0dHJpYnV0ZXMuCisKKwlQX1dFSUdIVCwgUF9TSVpFCisJICBUaGVzZSB2YXJpYWJsZXMgZGVzY3JpYmUgdGhlIHBoeXNpY2FsIHByb3BvcnRpb25zIG9mCisJICB0aGUgY3JlYXR1cmVzIGJvZHkuIEJvdGggdmFyaWFibGVzIGFyZSBzdGFuZGFyZCBwcm9wZXJ0aWVzCisJICBhbmQgYXJlIGFsc28gdXNlZCBpbiBub3JtYWwgb2JqZWN0cy4KKworCVBfTUFYX1dFSUdIVCAKKwkgIFRoaXMgaXMgYSByZWFkb25seSB2YXJpYWJsZSB3aGljaCBkZXNjcmliZXMgaG93IG11Y2gKKwkgIGEgbGl2aW5nIGNyZWF0dXJlIG1heSBjYXJyeSBhcm91bmQuCisKKwlQX0dFTkRFUgorCSAgVGhpcyBpcyBvYnZpb3VzLiBHZW5kZXIgbWF5IGJlIE1BTEUsIEZFTUFMRSBvciBORVVURVIsCisJICBhcyBkZWZpbmVkIGluIDxsaXZpbmcuaD4uIFBsYXllciBnZW5kZXIgbWF5IGJlIG9ubHkKKwkgIE1BTEUgb3IgRkVNQUxFLgorCisJUF9SQUNFCisJICBBIHN0cmluZyB3aGljaCBkZWZpbmVzIHRoZSByYWNlLgorCisJUF9BTElHTk1FTlQKKwkgIFRoZSBhbGlnbm1lbnQgb2YgdGhlIGxpdmluZywgcmFuZ2luZyBmck8KKworCVBfQUdFCisJICBUaGUgYWdlIG9mIHRoZSBsaXZpbmcgY3JlYXR1cmUgaW4gc2Vjb25kcworCQorCitJTkhFUklUQU5DRSBUUkVFOgorCWxpdmluZworCSAgfC10aGluZy9tb3ZpbmcKKwkgIHwtdGhpbmcvcHJvcGVydGllcworCSAgYC10aGluZy9kZXNjcmlwdGlvbgorCisKK1NFRSBBTFNPOgorCXByb3BlcnRpZXMoQyksIHVuaXRzKEMpCmRpZmYgLS1naXQgYS9kb2Mvc3RkL29ic29sZXRlL2Rvb3IgYi9kb2Mvc3RkL29ic29sZXRlL2Rvb3IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTViYWQzMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zdGQvb2Jzb2xldGUvZG9vcgpAQCAtMCwwICsxLDIyIEBACisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqIFZFUkFMVEVURSBMRlVOICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqIERPIE5PVCBVU0UhICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0JJVFRFIFNUQVRUIERFUiBGVU5LVElPTiBEb29yKCkgSU1NRVIgIE5ld0Rvb3IoKSBCRU5VVFpFTi4KKworCUFkZERvb3Ioc3RyaW5nIGNvbW1hbmQsIHN0cmluZyByb29tZmlsZSwgc3RyaW5nIGRvb3JuYW1lLAorCQlzdHJpbmcgZG9vcmRlc2MsIHN0cmluZyBrZXluYW1lLCBpbnQgc3RhdHVzKQorCSAgQ3JlYXRlcyBhIGRvb3Igd2hpY2ggbGVhZHMgaW4gZGlyZWN0aW9uIDxjb21tYW5kPiB0byB0aGUKKwkgIHJvb20gPHJvb21maWxlPi4gVGhlIGRvb3IgaGFzIHRoZSBzaG9ydCBkZXNjcmlwdGlvbgorCSAgPGRvb3JuYW1lPiBhbmQgdGhlIGxvbmcgZGVzY3JpcHRpb24gPGRvb3JkZXNjPiwgd2hlbiB5b3UKKwkgIGxvb2sgYXQgaXQuIElmIGEgZG9vciB3aXRoIHRoZSBzYW1lIDxkb29ybmFtZT4gZXhpc3RzIGluCisJICB0aGUgb3RoZXIgcm9vbSwgdGhlIG9wZW4vY2xvc2UvbG9ja2VkIHN0YXR1cyB3aWxsIGJlCisJICB0aGUgc2FtZSBpbiBib3RoIHJvb21zIGF0IGFsbCB0aW1lLiBEb29ycyBhcmUgbG9ja2VkIG9uCisJICByZXNldCgpIGlmIGtleW5hbWUgaXMgbm90IDAuIElmIDxrZXluYW1lPiBpcyBnaXZlbiwgdGhlCisJICBkb29yIGlzIGxvY2tlZCBhbmQgY2FuIGJlIG9wZW5lZCBvbmx5IHdpdGggYSBrZXkgd2hpY2gKKwkgIG1hdGNoZXMgPGtleW5hbWU+IHdpdGggaXRzIGlkKCkuIDxzdGF0dXM+IGNhbiBiZSBzZXQKKwkgIHRvIGFuIGluaXRpYWwgdmFsdWUgb2YgRE9PUl9TVEFUVVNfT1BFTiwgRE9PUl9TVEFUVVNfQ0xPU0VECisJICBvciBET09SX1NUQVRVU19MT0NLRUQuIFRoZXNlIHN0YXR1cyBjb2RlcyBhcmUgZGVmaW5lZCBpbgorCSAgPGRvb3JzLmg+LgorCmRpZmYgLS1naXQgYS9kb2Mvc3RkL3B1YiBiL2RvYy9zdGQvcHViCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNTQ0YTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL3B1YgpAQCAtMCwwICsxLDk1IEBACitVbSBkaWUgRnVua3Rpb25hbGl0YWV0IGVpbmVyIEtuZWlwZSBudXR6ZW4genUga29lbm5lbiwgbXVzcyBkZXIgUmF1bSBlaW5lCitkZXIgZm9sZ2VuZGVuIERhdGVpZW4gaW1wb3J0aWVyZW46CisKKycvc3RkL3B1Yi5jJyAgICAgICAgIC0gZGllIEtvbXBsZXR0bG9lc3VuZyBpbmNsdXNpdmUgZGVyIEFiaGFlbmdpZ2tlaXQgenUKKyAgICAgICAgICAgICAgICAgICAgICAgJy9zdGQvcm9vbScKKworJy9zdGQvcm9vbS9wdWIuYycgICAgLSBkaWUgTWluZGVzdGxvZXN1bmcsIGJlaSBkZXIgbWFuIHNlbGJzdCBkaWUgQWJoYWVuZ2lnLQorICAgICAgICAgICAgICAgICAgICAgICBrZWl0IHp1IGVpbmVtIFJhdW0gZGVmaW5pZXJlbiBtdXNzCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRWluZSBadXNhbW1lbmZhc3N1bmcgZGVyIFB1Yi1Qcm9wZXJ0aWVzIChmdWVyIGdlbmF1ZXJlcyBzaWVoZSBtYW5wYWdlcykKK2F1cyAnL3N5cy9wdWIuaCcKKworUF9OUENfRkFTVEhFQUwgICAgICAgLSBOUENzIHRhbmtlbiBoaWVyIGF1ZiBkaWUgInNjaG5lbGxlIiBBcnQKKworUF9OT19TVERfRFJJTksgICAgICAgLSBEZXIgUHViIHNvbGwga2VpbmUgU3RhbmRhcmQtR2V0cmFlbmtlIGFuYmlldGVuCisKK1BfUFVCX1VOQVZBSUxBQkxFICAgIC0gTWVsZHVuZywgd2VubiBldHdhcyBuaWNodCBtZWhyIHZvcmhhbmRlbiBpc3QKKworUF9QVUJfTk9UX09OX01FTlUgICAgLSBNZWxkdW5nLCB3ZW5uIGV0d2FzIG5pY2h0IGltIE1lbnVlIHN0ZWh0CisKK1BfUFVCX05PX01PTkVZICAgICAgIC0gTWVsZHVuZywgd2VubiBTcGllbGVyIG5pY2h0IGdlbnVnIEdlbGQgaGF0CisKK1BfUFVCX05PX0tFRVBFUiAgICAgIC0gTWVsZHVuZywgd2VubiBkZXIgUF9LRUVQRVIgbmljaHQgYW53ZXNlbmQgaXN0CisKK2F1cyAnL3N5cy9yb29tL2Rlc2NyaXB0aW9uLmgnCisKK1BfS0VFUEVSICAgICAgICAgICAgIC0gSWQgZGVzIEtuZWlwZW5pbmhhYmVycywgZGVyIGFud2VzZW5kIHNlaW4gbXVzcywgCisgICAgICAgICAgICAgICAgICAgICAgIGRhbWl0IGRpZSBLbmVpcGUgZ2VudXR6dCB3ZXJkZW4ga2FubgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK01ldGhvZGVuIHp1ciBNYW5pcHVsYXRpb24gZGVzIE1lbnVlcyAoZnVlciBnZW5hdWVyZXMgc2llaGUgbWFucGFnZXMpCisKK0FkZFRvTWVudSAgICAgICAgICAgIC0gZnVlZ3QgZWluZW4gRWludHJhZyB6dW0gTWVudWUgaGluenUKKworUmVtb3ZlRnJvbU1lbnUgICAgICAgLSBlbnRmZXJudCBlaW5lbiBFaW50cmFnIGF1cyBkZW0gTWVudWUKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBYmxhdWYgdW5kIE1hbmlwdWxhdGlvbnNtb2VnbGljaGtlaXRlbiBpbiBlaW5lciBLbmVpcGUKKworV3Vuc2NoIHd1cmRlIHVlYmVyICdrYXVmZScsICdiZXN0ZWxsZScgb2RlciAnc3BlbmRpZXJlJyBhYmdlZ2ViZW46CisKK3NlYXJjaF93aGF0KCkgICAgICAgIC0gcHJ1ZWZ0LCBkYXNzIG5pY2h0IG1laHJlcmUgV3VlbnNjaGUgYXVmIGVpbm1hbAorICAgICAgICAgICAgICAgICAgICAgICBnZWFldXNzZXJ0IHdlcmRlbiB1bmQgcnVmdCBjb25zdW1lX3NvbWV0aGluZygpIGF1ZgorCitjb25zdW1lX3NvbWV0aGluZygpICAtIHBydWVmdCBkaWUgQW53ZXNlbmhlaXQgZGVyIGJldGVpbGlndGVuIFBlcnNvbmVuCisgICAgICAgICAgICAgICAgICAgICAtIHBydWVmdCBkaWUgQW53ZXNlbmhlaXQgZGVzIEtuZWlwZW5iZXNpdHplcnMKKyAgICAgICAgICAgICAgICAgICAgIC0gcHJ1ZWZ0IGRhcyBJZ25vcmllcmVuIGJlaW0gU3BlbmRpZXJlbgorICAgICAgICAgICAgICAgICAgICAgLSBwcnVlZnQgZGllIFZlcmZ1ZWdiYXJrZWl0IHZvbiBnZW51ZWdlbmQgR2VsZCBiZWltCisgICAgICAgICAgICAgICAgICAgICAgIEJlc3RlbGxlciAoIGNoZWNrX3NvbHZlbmN5KCkgKQorICAgICAgICAgICAgICAgICAgICAgLSBwcnVlZnQgZGllIFZlcmZ1ZWdiYXJrZWl0IGRlcyBHZXd1ZW5zY2h0ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgKCBDaGVja0F2YWlsYWJpbGl0eSgpICkKKyAgICAgICAgICAgICAgICAgICAgIC0gcHJ1ZWZ0LCBvYiBkZXIgRW1wZmFlbmdlciBpbiBkZXIgTGFnZSBpc3QsIGRhcworICAgICAgICAgICAgICAgICAgICAgICBCZXN0ZWxsdGUgenUga29uc3VtaWVyZW4KKyAgICAgICAgICAgICAgICAgICAgICAgKCB1ZWJlciBlbXBmYWVuZ2VyLT5jb25zdW1lKHRlc3Rvbmx5KSApCisKKyAgICAgICAgICAgICAgICAgICAgIC0gZnVlaHJ0IGRpZSBCZXphaGx1bmcgZHVyY2ggKCBkb19wYXkoKSApCisgICAgICAgICAgICAgICAgICAgICAtIGZ1ZWhydCBkaWUgVmVyZ2FiZSB2b24gRlBzIGR1cmNoICggR2l2ZUVQKCkgKQorICAgICAgICAgICAgICAgICAgICAgLSBlbnRuaW1tdCBkYXMgQmVzdGVsbHRlIGF1cyBkZXIgTWVuZ2UgZGVzIEFuZ2Vib3RlcworICAgICAgICAgICAgICAgICAgICAgICAoIERlY3JlYXNlQXZhaWxpYmlsaXR5KCkgKQorICAgICAgICAgICAgICAgICAgICAgLSBwcnVlZnQsIG9iIGVpbmUgVmVyem9lZ2VydW5nIGRlciBMaWVmZXJ1bmcgZXJmb2xnZW4KKyAgICAgICAgICAgICAgICAgICAgICAgc29sbCB1bmQgdWViZXJnaWJ0IGltIE5lZ2F0aXZmYWxsIGdsZWljaCBhbgorICAgICAgICAgICAgICAgICAgICAgICBkb19kZWxpdmVyKCkKKyAgICAgICAgICAgICAgICAgICAgIC0gQXVzZ2FiZSBkZXIgTWVsZHVuZ2VuIHp1ciBCZXN0ZWxsdW5nCisgICAgICAgICAgICAgICAgICAgICAtIHZlcnpvZWdlcnRlciBBdWZydWYgdm9uIGRvX2RlbGl2ZXIoKQorICAgICAgICAgICAgICAgICAgICAgCitkb19kZWxpdmVyKCkgICAgICAgICAtIHBydWVmdCBub2NobWFsIGRpZSBBbndlc2VuaGVpdCBkZXMgRW1wZmFlbmdlcnMKKyAgICAgICAgICAgICAgICAgICAgIC0gcHJ1ZWZ0LCBvYiBIZWlsdW5nIGVybGF1YnQgaXN0ICh1ZWJlciBQdWJtYXN0ZXIpCisgICAgICAgICAgICAgICAgICAgICAtIHBydWVmdCBQX05QQ19GQVNUSEVBTCB1bmQga29ycmlnaWVydCBkaWUgQW5nYWJlbiwgZGllCisgICAgICAgICAgICAgICAgICAgICAgIGF1cyBkZW0gTWVudWVlaW50cmFnIGtvbW1lbgorICAgICAgICAgICAgICAgICAgICAgLSBmdWVocnQgZGFzIEtvbnN1bWllcmVuIGJlaW0gRW1wZmFlbmdlciBkdXJjaAorICAgICAgICAgICAgICAgICAgICAgICAoIGVtcGZhZW5nZXItPmNvbnN1bWUoKSApCisgICAgICAgICAgICAgICAgICAgICAtIEF1c2dhYmUgZGVyIE1lbGR1bmcgenVtIEtvbnN1bWllcmVuCisKK3B1Yl9pbml0KCkgICAgICAgICAgIC0gTW9lZ2xpY2hrZWl0IGZ1ZXIgTWFnaWVyLCBkaWUgV2VydGUgZGVyIGFuZ2Vib3RlbmVuCisgICAgICAgICAgICAgICAgICAgICAgIFNwZWlzZW4gdW5kIEdldHJhZW5rZSB6dSB1ZWJlcnBydWVmZW4KKyAgICAgICAgICAgICAgICAgICAgIC0gZXJ3ZWl0ZXJ0ZSBNb2VnbGljaGtlaXRlbiB6dW0gUHJ1ZWZlbiB2b24ga29ycmVrdGVuCisgICAgICAgICAgICAgICAgICAgICAgIE1lbnVlZWludHJhZWdlbiBiaWV0ZXQgZGFzIFB1Yi1Ub29sCisgICAgICAgICAgICAgICAgICAgICAgICggJy9vYmovdG9vbHMvcHVidG9vbC5jJyApCisKK0hpbndlaXM6IFVtIGRpZXNlIFBydWVmdW5nZW4gdW5kIEFrdGlvbmVuIHNpY2hlciB6dSBnZXdhZWhybGVpc3Rlbiwgc29sbHRlCisgICAgICAgICBtYW4gY29uc3VtZV9zb21ldGhpbmcgb2RlciBkb19kZWxpdmVyIE5JQ0hUIHVlYmVyc2NocmVpYmVuIQorICAgICAgICAgRGFzIGZ1ZWhydCBiZWkgQWVuZGVydW5nZW4gbWl0IGdyb3NzZXIgV2FocnNjaGVpbmxpY2hrZWl0IHp1CisgICAgICAgICBQcm9ibGVtZW4hCisgICAgICAgICBVZWJlcnNjaHJlaWJ0IGJlc3NlciBkaWUgTWV0aG9kZW4sIGRpZSBkaWUgRnVua3Rpb25hbGl0YWV0CisgICAgICAgICBiZWluaGFsdGV0LCBkaWUgaWhyIHdpcmtsaWNoIGFucGFzc2VuIHdvbGx0LgorICAgICAgICAgRmFsbHMgZGFzIG5pY2h0IGdlaHQsIHNwcmVjaHQgbGllYmVyIG1pdCBlaW5lbSBSTSssIG9iIGVpbmUgTG9lc3VuZworICAgICAgICAgZGFmdWVyIGdlZnVuZGVuIHdlcmRlbiBrYW5uLiBEZXIgU3RhbmRhcmQtUHViIHd1cmRlIGluIGRlcgorICAgICAgICAgVmVyZ2FuZ2VuaGVpdCBzbyBpbW1lciBtb2R1bGFyZXIgdW5kIGJlc3Nlci4KKworCitTSUVIRSBBVUNIOiBBZGRUb01lbnUsIFJlbW92ZUZyb21NZW51LCBjb25zdW1lLCBRdWVyeU1vbmV5LCBBZGRNb25leSAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMYXN0IG1vZGlmaWVkOiBTb24gQXByIDExIDE5OjI4OjAwIDIwMTAgYnkgQ2FsZHJhCmRpZmYgLS1naXQgYS9kb2Mvc3RkL3JhbmRvbSBiL2RvYy9zdGQvcmFuZG9tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4OTIxNGQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL3JhbmRvbQpAQCAtMCwwICsxLDcxIEBACitFcyBnaWJ0IGltIE1HIHp3ZWkgUXVlbGxlbiB2b24gUHNldWRvLVp1ZmFsbHN6YWhsZW4uCisKKzEpIHJhbmRvbSgpCisgIERpZXNlIGVmdW4gbGllZmVydCBlaW5lIFp1ZmFsbHN6YWhsIGF1cyBkZW0gUHNldWRvLVp1ZmFsbHN6YWhsZW5nZW5lcmF0b3IKKyAgKFBSTkcpIGRlcyBEcml2ZXJzLiAocy4gTWFucGFnZSkuCisgIFdlbm4ga2VpbmUgYmVzb25kZXJlbiBHcnVlbmRlbiB2b3JsaWVnZW4sIHNvbGx0ZSBpbW1lciBkaWVzZSB2ZXJ3ZW5kZXQKKyAgd2VyZGVuLgorCisKKzIpIC9zdGQvdXRpbC9yYW5kLWdsZnNyLmMKKyAgRmFsbHMgamVtYW5kIGF1cyBpcmdlbmRlaW5lbSBHcnVuZCBlaW5lIFNlcXVlbnogdm9uIFBzZXVkby1adWZhbGxzemFobGVuCisgIGJyYXVjaHQsIGRpZSBzcGFldGVyIHJlcHJvZHV6aWVyYmFyIHNlaW4gc29sbCAoZC5oLiBkZXIgU2VlZCBtdXNzCisgIGtvbmZpZ3VyaWVyYmFyIHNlaW4pLCBnaWJ0IGVzIHVudGVyIC9zdGQvdXRpbC9yYW5kLWdsZnNyLmMgZWluZW4gc2ltcGxlbiwKKyAgbmljaHQgYWxsenUgZ3V0ZW4gdW5kIHNlaHIgaW5lZmZpemllbnRlbiBQc2V1ZG8tWnVmYWxsc3phaGxlbmdlbmVyYXRvci4KKworSW50ZXJmYWNlOgorKiBwdWJsaWMgdmFyYXJncyB2b2lkIGluaXQoaW50IHNlZWQsIGludCBuZXdwKQorICBTZXR6dCBkYXMgU2VlZCAodW5kIGRhcyBFcnpldWd1bmdzcG9seW5vbSwgd2VubiBnZXd1ZW5zY2h0LCB3b3ZvbiBpY2gKKyAgYWJlciBhYnJhdGVuIHd1ZXJkZSkuIERlciBTZWVkIGRhcmYgbmljaHQgMCBzZWluLgorKiBwdWJsaWMgdm9pZCBJbml0V2l0aFVVSUQoc3RyaW5nIHV1aWQpCisgIEJlcmVjaG5ldCBlaW5lbiBTZWVkIGF1cyBkZXIgdXVpZCB1bmQgaW5pdGlhbGlzaWVydCBkZW4gUFJORyBkYW1pdCAodW5kIGRlbQorICBEZWZhdWx0LVBvbHlub20pLgorKiBwdWJsaWMgaW50IG5leHRiaXQoKQorICBMaWVmZXJ0IGVpbiB6dWZhZWxsaWdlcyBCaXQgKGFsc28gMCBvZGVyIDEpLgorKiBwdWJsaWMgaW50IG5leHRiaXRzKGludCBjb3VudCkKKyAgTGllZmVydCA8Y291bnQ+IEJpdHMgKG1heCA2NCkgaW4gZWluZW0gaW50LgorKiBwdWJsaWMgaW50IHJhbmRvbShpbnQgbikKKyAgTGllZmVydCBlaW5lIFp1ZmFsbHN6YWhsIHp3aXNjaGVuIDAgdW5kIG4tMSwgaW4gd2VsY2hlciAzMiBiaXRzIGFuIAorICBQc2V1ZG96dWZhbGwgc3RlY2tlbi4KKyAgRGFzIFNlZWQgdm9uIGRlciBCbHVlcHJpbnQgd2lyZCB2ZXJtdXRsaWNoIHN0YWVuZGlnIHZlcmFlbmRlcnQgKGQuaC4KKyAgdmVybGFzc3QgZXVjaCBuaWNodCBkcmF1ZiwgZGFzcyBlcyBrb25zdGFudCBibGVpYnQpLCB3b2xsdCBpaHIgZWluZQorICAncHJpdmF0ZScgSW5zdGFueiBtaXQgZXVyZW0gU2VlZCwgY2xvbnQgZGFzIE9iamVrdCAoYWJlciB2ZXJsaWVydCBkZW4gQ2xvbmUKKyAgbmljaHQpLgorCisgIFVuZCB1bSBlcyBub2NobWFsIHp1IHNhZ2VuOgorICBEaWUgSU1ITyBlaW56aWdlIHNpbm52b2xsZSBBbndlbmR1bmcgaXN0LCB3ZW5uIG1hbiBhdXMgaXJnZW5kZWluZW0gR3J1bmQKKyAgZGFzIHNlZWQgc2VsYmVyIHdhZWhsZW4gbXVzcywgZGFtaXQgbWFuIGRpZSBTZXF1ZW56IHZvbiBQc2V1ZG96dWZhbGwgaW1tZXIKKyAgd2llZGVyIHJlcHJvZHV6aWVyZW4ga2Fubi4KKyAgSW4gYWxsZW4gYW5kZXJlbiBGYWVsbGVuIG5laG10IGJlc3NlciBkYXMgcmFuZG9tKCkgdm9tIERyaXZlci4KKworRGVyIFBSTkcgYmVudXR6dCBlaW4gTGluZWFyIEZlZWRiYWNrIFNoaWZ0IFJlZ2lzdGVyIChpbiBHYWxvaXMtVmFyaWFudGUpLiBEaWUKK1BlcmlvZGVubGFlbmdlIGRlcyBwZXIgRGVmYXVsdCBiZW51dHp0ZW4gRXJ6ZXVnbmdzcG9seW5vbXMgaXN0IDJeMzIgLSAxLCBkLmguCituYWNoIDQyOTQ5NjcyOTUgQml0cyB3aWVkZXJob2x0IHNpY2ggZGllIFNlcXVlbnouCitEYXMgRGVmYXVsdC1Qb2x5bm9tIGlzdDoKK3heMzIgKyB4XjMxICsgeF4yOCArIHheMjcgKyB4XjI0ICsgeF4yMyArIHheMjAgKyB4XjE5ICsgeF4xNiArIHheMTUgKyB4XjEyCisgICAgICsgeF4xMSArIHheOCArIHheNyArIHheNSArIHheMyArIDEKKyhaYWhsZW53ZXJ0OiAweDE5OTk5OTlhOCkKKworV2VyIGVpbiBhbmRlcmVzIFBvbHlub20gd2lsbCwga2FubiBkYXMgcGVyIGluaXQoKSBrb25maWd1cmllcmVuLCBzb2xsdGUgc2ljaAorYWJlciBzY2hsYXUgbWFjaGVuLCB3ZWxjaGUgc2lubnZvbGwgbnV0emJhciBzaW5kLgorCisKK0VpbiBwYWFyIHN0YXRpc3Rpc2NoZSBEYXRlbiBlaW5lcyBTdHJvbXMgdm9uIDQwOTYwIEJpdHM6CitWYWx1ZSBDaGFyIE9jY3VycmVuY2VzIEZyYWN0aW9uCisgIDAgICAgICAgICAgICAyMDQ3NCAgIDAuNDk5ODU0CisgIDEgICAgICAgICAgICAyMDQ4NiAgIDAuNTAwMTQ2CisKK1RvdGFsOiAgICAgICAgIDQwOTYwICAgMS4wMDAwMDAKKworRW50cm9weSA9IDEuMDAwMDAwIGJpdHMgcGVyIGJpdC4KKworT3B0aW11bSBjb21wcmVzc2lvbiB3b3VsZCByZWR1Y2UgdGhlIHNpemUKK29mIHRoaXMgNDA5NjAgYml0IGZpbGUgYnkgMCBwZXJjZW50LgorCitDaGkgc3F1YXJlIGRpc3RyaWJ1dGlvbiBmb3IgNDA5NjAgc2FtcGxlcyBpcyAwLjAwLCBhbmQgcmFuZG9tbHkKK3dvdWxkIGV4Y2VlZCB0aGlzIHZhbHVlIDk1LjI3IHBlcmNlbnQgb2YgdGhlIHRpbWVzLgorCitBcml0aG1ldGljIG1lYW4gdmFsdWUgb2YgZGF0YSBiaXRzIGlzIDAuNTAwMSAoMC41ID0gcmFuZG9tKS4KK01vbnRlIENhcmxvIHZhbHVlIGZvciBQaSBpcyAzLjEwOTAyNjk2NCAoZXJyb3IgMS4wNCBwZXJjZW50KS4KK1NlcmlhbCBjb3JyZWxhdGlvbiBjb2VmZmljaWVudCBpcyAtMC4wMDgzOTkgKHRvdGFsbHkgdW5jb3JyZWxhdGVkID0gMC4wKS4KKwpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC9yb29tIGIvZG9jL3N0ZC9yb29tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ZTU3NWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL3Jvb20KQEAgLTAsMCArMSwxNDMgQEAKK1NUQU5EQVJET0JKRUtUIEZVRVIgUkFFVU1FOgorCitCRU5VVFpVTkc6CisgICAgICBpbmhlcml0ICIvc3RkL3Jvb20iOworICAgICAgCisgICAgICAjaW5jbHVkZSA8cHJvcGVydGllcy5oPgorICAgICAgI2luY2x1ZGUgPHJvb21zLmg+ICAgICAgICAgICAgLy8gRnVlciBBZGRJdGVtKCkgdW5kIE5ld0Rvb3IoKQorCitCRVNDSFJFSUJVTkc6CisgICAgICBFaW4gUmF1bSBpc3QgZWluIE9iamVrdCwgZGFzIHZvbiBTcGllbGVybiBvZGVyIGFuZGVyZW4gTGViZXdlc2VuCisgICAgICBiZXRyZXRlbiB3ZXJkZW4ga2Fubi4gRXIgaGF0IExhbmctIHVuZCBLdXJ6YmVzY2hyZWlidW5nZW4gdm9uCisgICAgICBpbm5lbiB1bmQgYXVzc2VuICh6dW0gQmVpc3BpZWwgU2NoaWZmZSBvZGVyIGFlaG5saWNoZSBSYWV1bWUgaW4KKyAgICAgIFJhZXVtZW4pLCBkaWUgc2ljaCBkZXIgU3BpZWxlciBqZSBuYWNoIHNlaW5lbiBCZWR1ZXJmbmlzc2VuCisgICAgICBhbnplaWdlbiBsYXNzZW4ga2FubiAoa3Vyei9sYW5nLU1vZHVzKS4KKworICAgUHJvcGVydGllczoKKworICAgICAgUF9JTlRfU0hPUlQKKyAgICAgICAgICAgIEt1cnpiZXNjaHJlaWJ1bmcgaW5uZXJoYWxiIGRlcyBSYXVtZXMKKyAgICAgIFBfSU5UX0xPTkcKKyAgICAgICAgICAgIExhbmdiZXNjaHJlaWJ1bmcgaW5uZXJoYWxiIGRlcyBSYXVtZXMKKyAgICAgIFBfU0hPUlQKKyAgICAgICAgICAgIEt1cnpiZXNjaHJlaWJ1bmcgdm9uIGF1c3NlbiAobnVyIG5vZXRpZywgd2VubiBtYW4gZGVuIFJhdW0KKyAgICAgICAgICAgIGF1Y2ggd2lya2xpY2ggdm9uIGF1c3NlbiBzZWhlbiBrYW5uKQorICAgICAgUF9MT05HCisgICAgICAgICAgICBMYW5nYmVzY2hyZWlidW5nIHZvbiBhdXNzZW4gKHNpZWhlIFBfU0hPUlQpCisgICAgICBVbSBTaXR1YXRpb25zYmV6b2dlbmUgQmVzY2hyZWlidW5nZW4genUgYmVrb21tZW4sIGthbm4gbWFuIAorICAgICAgUXVlcnltZXRob2RlbiBhdWYgZGllIGpld2VpbGlnZW4gUHJvcGVydGllcyBzZXR6ZW4sIHNpZWhlIERva3VtZW50YXRpb24KKyAgICAgIHp1IFNldCgpLgorCisgICAgICBQX0xJR0hUCisgICAgICAgICAgICBMaWNodGxldmVsIGRlcyBSYXVtcyAoMCBkdW5rZWwsIDEgaGVsbCkKKyAgICAgIFBfTElHSFRfVFlQRQorICAgICAgICAgICAgTGljaHRhcnQsIG1pdCBkZXIgZGVyIFJhdW0gYmVsZXVjaHRldCBpc3QsIHpCIExUX1NVTkxJR0hUCisgICAgICBQX0lORE9PUlMKKyAgICAgICAgICAgIFdlbm4gZXMgc2ljaCB1bSBlaW5lbiBBdXNzZW5yYXVtIGhhbmRlbHQsIDAuIDEgZnVlciBJbm5lbnJhZXVtZS4KKyAgICAgIFBfVFJBTlNQQVJFTlQKKyAgICAgICAgICAgIElzdCB1bmdsZWljaCAwLCB3ZW5uIG1hbiBpbiBkZW4gUmF1bSB2b24gYXVzc2VuIHJlaW5zY2hhdWVuCisgICAgICAgICAgICBrYW5uLCBvZGVyIHZvbiBpbm5lbiBuYWNoIGF1c3NlbgorICAgICAgUF9OT19UUE9SVAorICAgICAgICAgICAgWnVtIHZlcmhpbmRlcm4gdm9uIFRlbGVwb3J0dmVyc3VjaGVuIGluIG9kZXIgYXVzIGRlbSBSYXVtCisgICAgICBQX05PTUFHSUMKKyAgICAgICAgICAgIEltIFJhdW0ga2FubiBuaWNodCBnZXphdWJlcnQgd2VyZGVuLgorICBQX1dBVEVSCisgICAgSW0gUmF1bSBrYW5uIGdlYW5nZWx0IHdlcmRlbiwgdW5kIG1hbiBrYW5uIGdnZi4gc29nYXIgRmlzY2hlIGZhbmdlbi4KKworICAgRnVua3Rpb25lbjoKKworICBBZGRFeGl0KHN0cmluZ3xzdHJpbmcqIGttbmQsIHN0cmluZyB6aWVscmF1bSkKKyAgICAgICAgICAgIDxrbW5kPiBrYW5uIGVpbiBTdHJpbmcgc2VpbiBvZGVyIGVpbmUgTGlzdGUgdm9uIFN0cmluZ3MKKyAgICAgICAgICAgIG1pdCBkZW4gS29tbWFuZG9zIG1pdCBkZW5lbiBkZXIgU3BpZWxlciBpbiA8emllbHJhdW0+CisgICAgICAgICAgICBsYW5kZW4gc29sbC4KKyAgICAgIFJlbW92ZUV4aXQoc3RyaW5nfHN0cmluZyoga21uZCkKKyAgICAgICAgICAgIDxrbW5kPiBpc3QgZWluIFN0cmluZyBvZGVyIGVpbmUgTGlzdGUgdm9uIFN0cmluZ3MsIGRlcmVuCisgICAgICAgICAgICBBdXNnYWVuZ2UgZW50ZmVybnQgd2VyZGVuIHNvbGxlbi4gRGFiZWkgbXVzcyBtYW4gZXR3YXMgdm9yLQorICAgICAgICAgICAgc2ljaHRpZyBzZWluLCBkYSBlaW4gU3BpZWxlciwgZGVyIHp1bSBaZWl0cHVua3QgZGVzIEF1ZnJ1ZnMKKyAgICAgICAgICAgIGltIFJhdW0gaXN0LCBkaWUgQWt0aW9uIGZ1ZXIgc2ljaCBub2NoIGRlZmluaWVydCBoYXQuCisgICAgICAgICAgICBBbHNvOiBOdXIgYmVudXR6ZW4sIHdlbm4gbWFuIHdlaXNzLCB3YXMgbWFuIHR1dCEKKyAgICAgIEFkZFNwZWNpYWxFeGl0KHN0cmluZ3xzdHJpbmcqIGttbmQsIHN0cmluZyBmdW5rdGlvbikKKyAgICAgICAgICAgIDxmdW5rdGlvbj4gd2lyZCBhdWZnZXJ1ZmVuLCB3ZW5uIGRlciBTcGllbGVyIGRhcyBLb21tYW5kbworICAgICAgICAgICAgPGttbmQ+IHRpcHB0IChvZGVyIGVpbnMgZGVyIEtvbW1hbmRvcywgd2VubiA8a21uZD4gZWluZQorICAgICAgICAgICAgTGlzdGUgaXN0KS4gTnVldHpsaWNoIHp1bSBCZWlzcGllbCB1bSBlaW5lbiBTcGllbGVyIG51cgorICAgICAgICAgICAgZHVyY2h6dWxhc3Nlbiwgd2VubiBlaW4gV2FlY2h0ZXIgbmljaHQgZGEgaXN0LgorICAgICAgICAgICAgUF9BRVJJQUxfSEVMUEVSUy9QX0FRVUFUSUNfSEVMUEVSUworICAgICAgICAgICAgICBTb2xsdGUgZXMgZ2V3dWVuc2NodCBzZWluLCBkYXNzIGJlc3RpbW10ZSBSYWV1bWUgei5CLiBudXIgCisgICAgICAgICAgICAgIGZsaWVnZW5kIGVycmVpY2h0IHdlcmRlbiBrb2VubmVuLCBvZGVyIGRhc3MgbWFuIGZ1ZXIgZWluZW4gCisgICAgICAgICAgICAgIGJlc3RpbW10ZW4gQXVzZ2FuZyB0YXVjaGVuIGtvZW5uZW4gbXVzcywgc2luZCBkaWVzZSAKKyAgICAgICAgICAgICAgUHJvcGVydGllcyBoaWxmcmVpY2gsIGRpZSBpbSBTcGllbGVyb2JqZWt0IGRlZmluaWVydCBzaW5kIAorICAgICAgICAgICAgICB1bmQgZGllIGRvcnQgYWt0dWVsbCByZWdpc3RyaWVydGVuIEhpbGZzb2JqZWt0ZSBmdWVycyAKKyAgICAgICAgICAgICAgRmxpZWdlbi9TZWdlbG4gdW5kIFRhdWNoZW4gZW50aGFsdGVuLgorICAgICAgUmVtb3ZlU3BlY2lhbEV4aXQoc3RyaW5nfHN0cmluZyoga21uZCkKKyAgICAgICAgICAgIHNpZWhlIFJlbW92ZUV4aXQoKQorICAgICAgTmV3RG9vcigpCisgICAgICAgICAgICBGdWVndCBkZW0gUmF1bSBlaW5lIFR1ZXIgaGluenUsIGRpZSBpbiBlaW5lbiB6d2VpdGVuIFJhdW0gZnVlaHJ0LAorICAgICAgICAgICAgdW5kIGRpZSBkZXIgU3BpZWxlciAoZ2dmLiBtaXQgZWluZW0gU2NobHVlc3NlbCkgb2VmZm5lbiB1bmQgCisgICAgICAgICAgICBzY2hsaWVzc2VuIGthbm4uCisgICAgICAKKyAgICAgIFVtIFJhZXVtZSBpbnRlcmVzc2FudGVyIHp1IG1hY2hlbiwga2FubiBtYW4gaWhuZW4gRGV0YWlscywgZGllIAorICAgICAgdm9tIFNwaWVsZXIgYW5nZXNjaGF1dCB3ZXJkZW4ga29lbm5lbiwgZWluYmF1ZW46CisKKyAgICAgIEFkZERldGFpbChzdHJpbmd8c3RyaW5nKiBrZXlzLCBzdHJpbmcgZGVzY3IpCisgICAgICAgICAgICBFaW5lIEJlc2NocmVpYnVuZyB2b24gRGV0YWlscywgZGllIHZvbSBTcGllbGVyIGFuZ2VzY2hhdXQKKyAgICAgICAgICAgIHdlcmRlbiBrb2VubmVuIHdpcmQgZGVtIFJhdW0gZ2VnZWJlbi4gPGtleXM+IGthbm4gZWluCisgICAgICAgICAgICBTdHJpbmcgc2VpbiBvZGVyIGVpbmUgTGlzdGUgdm9uIFN0cmluZ3MuIDxkZXNjcj4gaXN0CisgICAgICAgICAgICBkaWUgQmVzY2hyZWlidW5nLCBkaWUgZGVyIFNwaWVsZXIgZXJoYWVsdC4KKyAgICAgIFJlbW92ZURldGFpbChzdHJpbmd8c3RyaW5nKiBrZXlzKQorICAgICAgICAgICAgRW50ZmVybnQgZWluIERldGFpbCBhdXMgZWluZW0gUmF1bS4gPGtleXM+IGthbm4gZWluIFN0cmluZworICAgICAgICAgICAgc2VpbiBvZGVyIGVpbmUgTGlzdGUgdm9uIFN0cmluZ3MuCisgICAgICBBZGRTcGVjaWFsRGV0YWlsKHN0cmluZ3xzdHJpbmcqIGtleXMsIHN0cmluZyBmdW5jdGlvbikKKyAgICAgICAgICAgIEltIFByaW56aXAgd2llIEFkZERldGFpbCgpLCBudXIgd2lyZCBhbHMgendlaXRlcyBBcmd1bWVudAorICAgICAgICAgICAga2VpbiBmZXN0ZXIgU3RyaW5nIGFuZ2VnZWJlbiwgc29uZGVybiBlaW5lIEZ1bmt0aW9uLCBkaWUKKyAgICAgICAgICAgIGVpbmVuIFN0cmluZyB6dXJ1ZWNrZ2ViZW4gbXVzcy4gRGFtaXQga2FubiBtYW4gdmFyaWFibGUKKyAgICAgICAgICAgIERldGFpbHMgcHJvZ3JhbW1pZXJlbi4KKyAgICAgIFJlbW92ZVNwZWNpYWxEZXRhaWwoc3RyaW5nfHN0cmluZyoga2V5cykKKyAgICAgICAgICAgIHNpZWhlIFJlbW92ZURldGFpbCgpCisgICAgICBBZGRSZWFkRGV0YWlsKHN0cmluZ3xzdHJpbmcqIGtleXMsIHN0cmluZyBkZXNjKQorICAgICAgICAgICAgPGRlc2M+IHdpcmQgYXVzZ2VnZWJlbiwgd2VubiBlaW4gU3BpZWxlciBkZW4gPGtleT4gbGllc3QuCisgICAgICAgICAgICA8a2V5cz4ga2FubiB3aWVkZXIgZWluIFN0cmluZyBvZGVyIGVpbmUgTGlzdGUgdm9uIFN0cmluZ3MKKyAgICAgICAgICAgIHNlaW4uCisgICAgICBSZW1vdmVSZWFkRGV0YWlsKHN0cmluZ3xzdHJpbmcqIGtleXMpCisgICAgICAgICAgICBzaWVoZSBSZW1vdmVEZXRhaWwoKQorICAgICAgQWRkUm9vbU1lc3NhZ2Uoc3RyaW5nKiBtc2csIGludCBwcm9iLCBzdHJpbmd8bWl4ZWQgKmZ1bmMpCisgICAgICAgICAgICBBbGxlIDxwcm9iPiBTZWt1bmRlbiB3aXJkIGF1cyBlaW5lciBMaXN0ZSB2b24gTWVsZHVuZ2VuCisgICAgICAgICAgICAoPG1zZz4pIHp1ZmFlbGxpZyBlaW5lIGF1c2dlc3VjaHQsIGRpZSBkYW5uIGltIFJhdW0gZXItCisgICAgICAgICAgICBzY2hlaW50LiBXZW5uIGRhcyBBcmd1bWVudCA8ZnVuYz4gYW5nZWdlYmVuIGlzdCwgd2lyZAorICAgICAgICAgICAgZWluZSBGdW5rdGlvbiBkaWVzZW4gTmFtZW5zIGF1ZmdlcnVmZW4sIGRlciBkZXIgSW5kZXgKKyAgICAgICAgICAgIGRlciBhdXNnZWdlYmVuZW4gTWVsZHVuZyBhbHMgQXJndW1lbnQgdWViZXJnZWJlbiB3aXJkLgorICAgICAgICAgICAgRnVuYyBkYXJmIGF1Y2ggZWluZW4gQXJyYXkgdm9uIEZ1bmt0aW9uZW4gZW50aGFsdGVuLgorCisgICAgICBBZGRDbWQoc3RyaW5nfHN0cmluZyogY21kLCBzdHJpbmcgZnVuYywgaW50IGZsYWcpCisgICAgICAgICAgICBJbSBSYXVtIHdpcmQgYmVpbSBLb21tYW5kbyA8Y21kPiAob2RlciBlaW5lbSBkZXIgS29tbWFuZG9zKQorICAgICAgICAgICAgZGllIEZ1bmt0aW9uIDxmdW5jPiBhdWZnZXJ1ZmVuLiA8ZnVuYz4gbXVzcyAxIHp1cnVlY2stCisgICAgICAgICAgICBnZWJlbiwgd2VubiBkaWUgRnVua3Rpb24gZGllIEtvbWJpbmF0aW9uIGF1cyBLb21tYW5kbworICAgICAgICAgICAgdW5kIEFyZ3VtZW50ZW4gYWt6ZXB0aWVydCwgYW5zb25zdGVuIDAuIEFsbGVzIHdhcyBlaW4KKyAgICAgICAgICAgIFNwaWVsZXIgaGludGVyIDxjbWQ+IG5vY2ggYW5naWJ0LCB3aXJkIGRlciBGdW5rdGlvbiBhbHMKKyAgICAgICAgICAgIEFyZ3VtZW50IHVlYmVyZ2ViZW4uIFdlbm4gPGZsYWc+IGdlc2V0enQgaXN0LCB3aXJkIGplZGVzCisgICAgICAgICAgICBLb21tYW5kbywgZGFzIG1pdCA8Y21kPiBiZWdpbm50IGFremVwdGllcnQuCisgICAgICBSZW1vdmVDbWQoc3RyaW5nfHN0cmluZyogY21kKQorICAgICAgICAgICAgRW50ZmVybnQgZWluIEtvbW1hbmRvIGF1cyBkZW0gUmF1bS4KKyAgICAgICAgICAgIEFDSFRVTkc6IEJlaSBTcGllbGVybiwgZGllIHp1bSBaZWl0cHVua3QgZGVzIEZ1bmt0aW9ucy0KKyAgICAgICAgICAgIGF1ZnJ1ZnMgbm9jaCBpbSBSYXVtIHNpbmQsIGlzdCBkYXMgS29tbWFuZG8gbm9jaCBkZWZpbmllcnQuCisgICAgICAgICAgICBBbHNvOiBOdXIgYmVudXR6ZW4sIHdlbm4gbWFuIGdlbmF1IHdlaXNzLCB3YXMgbWFuIHR1dC4KKworICAgICAgQWRkSXRlbShzdHJpbmcgZmlsZW5hbWUsIGludCByZWZyZXNoKQorICAgICAgICAgICAgRWluIE9iamVrdCBtaXQgUGZhZCA8ZmlsZW5hbWU+IHdpcmQgZXJ6ZXVndCB1bmQgaW4gZGVuCisgICAgICAgICAgICBSYXVtIGJld2VndCwgZGFiZWkgZ2lidCBlcyB2aWVyIHZlcnNjaGllZGVuZSBNb2RpLCBkaWUKKyAgICAgICAgICAgIHVlYmVyIGRhcyBBcmd1bWVudCA8cmVmcmVzaD4gYW5nZWdlYmVuIHdlcmRlbjoKKyAgICAgICAgICAgIFJFRlJFU0hfTk9ORTogRGFzIE9iamVrdCB3aXJkIG51ciBiZWltIGFsbGVyZXJzdGVuIG1hbAorICAgICAgICAgICAgICAgICAgZXJ6ZXVndCwgdW5kIGRhbm4gbmllIHdpZWRlciAoZXJzdCBiZWltIHJlYm9vdCkKKyAgICAgICAgICAgIFJFRlJFU0hfREVTVFJVQ1Q6IEVpbiBuZXVlcyBPYmpla3Qgd2lyZCBlcnN0IGVyemV1Z3QsIAorICAgICAgICAgICAgICAgICAgd2VubiBkYXMgYWx0ZSB6ZXJzdG9lcnQgaXN0LiBTbyBrYW5uIG1hbiBzaWNoZXIKKyAgICAgICAgICAgICAgICAgIGdlaGVuLCBkYXNzIG51ciBlaW4gRXhlbXBsYXIgaW0gU3BpZWwgaXN0LgorICAgICAgICAgICAgUkVGUkVTSF9SRU1PVkU6IEJlaW0gcmVzZXQgd2lyZCBlaW4gbmV1ZXMgT2JqZWt0IGVyemV1Z3QsCisgICAgICAgICAgICAgICAgICB3ZW5uIHNpY2ggZGFzIGFsdGUgbmljaHQgbWVociBpbSBSYXVtIGJlZmluZGV0LgorICAgICAgICAgICAgUkVGUkVTSF9BTFdBWVM6IEJlaSBqZWRlbSByZXNldCB3aXJkIGVpbiBuZXVlcyBPYmpla3QgCisgICAgICAgICAgICAgICAgICBlcnpldWd0LiBWT1JTSUNIVDogS2FubiB6dSByaWVzaWdlbiBNZW5nZW4gdm9uCisgICAgICAgICAgICAgICAgICBPYmpla3RlbiBmdWVocmVuLCB3ZW5uIGVpbiBSYXVtIGxhbmdlIG5pY2h0IGJlLQorICAgICAgICAgICAgICAgICAgc3VjaHQgd2lyZC4KKyAgICAgICAgICAgIERpZSBLb25zdGFudGVuIFJFRlJFU0hfKiBzaW5kIGluIDxyb29tcy5oPiBkZWZpbmllcnQuCisKKyAgICAgIEF1ZiBkaWUgUHJvcGVydGllcyBQX0VYSVRTLCBQX1NQRUNJQUxfRVhJVFMsIFBfREVUQUlMUywgCisgICAgICBQX1NQRUNJQUxfREVUQUlMUywgUF9SRUFEX0RFVEFJTFMsIFBfQ09NTUFORFMgdW5kIFBfSVRFTVMKKyAgICAgIHNvbGx0ZSBOSUNIVCBkaXJla3QgenVnZWdyaWZmZW4gd2VyZGVuLgpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC9yb29tLmRva3UgYi9kb2Mvc3RkL3Jvb20uZG9rdQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTc3NGM2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3N0ZC9yb29tLmRva3UKQEAgLTAsMCArMSwxMzIgQEAKK1NUQU5EQVJET0JKRUtUIEZVRVIgUkFFVU1FOgorCitCRU5VVFpVTkc6CisJaW5oZXJpdCAic3RkL3Jvb20iOworCQorCSNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisJI2luY2x1ZGUgPHJvb21zLmg+CQkvLyBGdWVyIEFkZEl0ZW0oKSB1bmQgTmV3RG9vcigpCisKK0JFU0NIUkVJQlVORzoKKwlFaW4gUmF1bSBpc3QgZWluIE9iamVrdCwgZGFzcyB2b24gU3BpZWxlcm4gb2RlciBhbmRlcmVuIExlYmV3ZXNlbgorCWJldHJldGVuIHdlcmRlbiBrYW5uLiBFciBoYXQgTGFuZy0gdW5kIEt1cnpiZXNjaHJyZWlidW5nZW4gdm9uCisJaW5uZW4gdW5kIGF1c3NlbiAoenVtIEJlaXNwaWVsIFNjaGlmZmUgb2RlciBhZWhubGljaGUgUmFldW1lIGluCisJUmFldW1lbiksIGRpZSBzaWNoIGRlciBTcGllbGVyIGplIG5hY2ggc2VpbmVuIEJlZHVlcmZ0bmlzc2VuCisJYW56ZWlnZW4gbGFzc2VuIGthbm4gKGt1cnovbGFuZy1Nb2R1cykuCisKKyAgIFByb3BlcnRpZXM6CisKKwlQX0lOVF9TSE9SVAorCQlLdXJ6YmVzY2hyZWlidW5nIGlubmVyaGFsYiBkZXMgUmF1bWVzCisJUF9JTlRfTE9ORworCQlMYW5nYmVzY2hyZWlidW5nIGlubmVyaGFsYiBkZXMgUmF1bWVzCisJUF9TSE9SVAorCQlLdXJ6YmVzY2hyaWVidW5nIHZvbiBhdXNzZW4gKG51ciBub2V0aWcsIHdlbm4gbWFuIGRlbiBSYXVtCisJCWF1Y2ggd2lya2xpY2ggdm9uIGF1c3NlbiBzZWhlbiBrYW5uKQorCVBfTE9ORworCQlMYW5nYmVzY2hyZWlidW5nIHZvbiBhdXNzZW4gKHNpZWhlIFBfU0hPUlQpCisJVW0gU2l0dWF0aW9uc2Jlem9nZW5lIEJlc2NocmVpYnVuZ2VuIHp1IGJla29tbWVuLCBrYW5uIG1hbiAKKwlpbnRfc2hvcnQoKSwgaW50X2xvbmcoKSwgc2hvcnQoKSwgbG9uZygpIHVlYmVyc2NocmVpYmVuLCBvZGVyCisJZGVuIHByb2Nlc3Nfc3RyaW5nIE1lY2hhbmlzbXVzIHZlcndlbmRlbiAoc2llaGUgZW50c3ByZWNoZW5kZQorCURva3VtZW50YXRpb24pCisKKwlQX0xJR0hUCisJCUxpY2h0bGV2ZWwgZGVzIFJhdW1zICgwIGR1bmtlbCwgMSBoZWxsKQorCVBfSU5ET09SUworCQkxIFdlbm4gZGVyIFJhdW0gbmljaHQgaW0gRnJlaWVuIGlzdAorCVBfVFJBTlNQQVJFTlQKKwkJSXN0IHVuZ2xlaWNoIDAsIHdlbm4gbWFuIGluIGRlbiBSYXVtIHZvbiBhdXNzZW4gcmVpbnNjaGF1ZW4KKwkJa2Fubiwgb2RlciB2b24gaW5uZW4gbmFjaCBhdXNzZW4KKwlQX05PX1RQT1JUCisJCVp1bSB2ZXJoaW5kZXJuIHZvbiBUZWxlcG9ydHZlcnN1Y2hlbiBpbiBvZGVyIGF1cyBkZW0gUmF1bQorCQkoc2llaGUgYXVjaCAvZG9jL3Byb3BlcnRpZXMuaCkKKwlQX05PTUFHSUMKKwkJSW0gUmF1bSBrYW5uIG5pY2h0IGdlemF1YmVydCB3ZXJkZW4uCisKKyAgIEZ1bmt0aW9uZW46CisJQWRkRXhpdChzdHJpbmd8c3RyaW5nKiBrbW5kLCBzdHJpbmcgemllbHJhdW0pCisJCTxrbW5kPiBrYW5uIGVpbiBTdHJpbmcgc2VpbiBvZGVyIGVpbmUgTGlzdGUgdm9uIFN0cmluZ3MKKwkJbWl0IGRlbiBLb21tYW5kb3MgbWl0IGRlbmVuIGRlciBTcGllbGVyIGluIDx6aWVscmF1bT4KKwkJbGFuZGVuIHNvbGwuCisJUmVtb3ZlRXhpdChzdHJpbmd8c3RyaW5nKiBrbW5kKQorCQk8a21uZD4gaXN0IGVpbiBTdHJpbmcgb2RlciBlaW5lIExpc3RlIHZvbiBTdHJpbmdzLCBkZXJlbgorCQlBdXNnYWVuZ2UgZW50ZmVybnQgd2VyZGVuIHNvbGxlbi4gRGFiZWkgbXVzcyBtYW4gZXR3YXMgdm9yLQorCQlzaWNodGlnIHNlaW4sIGRhIGVpbiBTcGllbGVyLCBkZXIgenVtIFplaXRwdW5rdCBkZXMgQXVmcnVmcworCQlpbSBSYXVtIGlzdCwgZGllIEFrdGlvbiBmdWVyIHNpY2ggbm9jaCBkZWZpbmllcnQgaGF0LgorCQlBbHNvOiBOdXIgYmVudXR6ZW4sIHdlbm4gbWFuIHdlaXNzLCB3YXMgbWFuIHR1dCEKKwlBZGRTcGVjaWFsRXhpdChzdHJpbmd8c3RyaW5nKiBrbW5kLCBzdHJpbmcgZnVua3Rpb24pCisJCTxmdW5rdGlvbj4gd2lyZCBhdWZnZXJ1ZmVuLCB3ZW5uIGRlciBTcGllbGVyIGRhcyBLb21tYW5kbworCQk8a21uZD4gdGlwcHQgKG9kZXIgZWlucyBkZXIgS29tbWFuZG9zLCB3ZW5uIDxrbW5kPiBlaW5lCisJCUxpc3RlIGlzdCkuIE51ZXR6bGljaCB6dW0gQmVpc3BpZWwgdW0gZWluZW4gU3BpZWxlciBudXIKKwkJZHVyY2h6dWxhc3Nlbiwgd2VubiBlaW4gV2FlY2h0ZXIgbmljaHQgZGEgaXN0LgorCVJlbW92ZVNwZWNpYWxFeGl0KHN0cmluZ3xzdHJpbmcqIGttbmQpCisJCXNpZWhlIFJlbW92ZUV4aXQoKQorCU5ld0Rvb3IoKQorCQlzaWVoZSAvZG9jL3N0ZC9kb29yCisJCisJVW0gUmFldW1lIGludGVyZXNzYW50ZXIgenUgbWFjaGVuLCBrYW5uIG1hbiBpaG5lbiBEZXRhaWxzLCBkaWUgCisJdm9tIFNwaWVsZXIgYW5nZXNjaGF1dCB3ZXJkZW4ga29lbm5lbiwgZWluYmF1ZW46CisKKwlBZGREZXRhaWwoc3RyaW5nfHN0cmluZyoga2V5cywgc3RyaW5nIGRlc2NyKQorCQlFaW5lIEJlc2NocmVpYnVuZyB2b24gRGV0YWlscywgZGllIHZvbSBTcGllbGVyIGFuZ2VzY2hhdXQKKwkJd2VyZGVuIGtvZW5uZW4gd2lyZCBkZW0gUmF1bSBnZWdlYmVuLiA8a2V5cz4ga2FubiBlaW4KKwkJU3RyaW5nIHNlaW4gb2RlciBlaW5lIExpc3RlIHZvbiBTdHJpbmdzLiA8ZGVzY3I+IGlzdAorCQlkaWUgQmVzY2hyZWlidW5nLCBkaWUgZGVyIFNwaWVsZXIgZXJoYWVsdC4KKwlSZW1vdmVEZXRhaWwoc3RyaW5nfHN0cmluZyoga2V5cykKKwkJRW50ZmVybnQgZWluIERldGFpbCBhdXMgZWluZW0gUmF1bS4gPGtleXM+IGthbm4gZWluIFN0cmluZworCQlzZWluIG9kZXIgZWluZSBMaXN0ZSB2b24gU3RyaW5ncy4KKwlBZGRTcGVjaWFsRGV0YWlsKHN0cmluZ3xzdHJpbmcqIGtleXMsIHN0cmluZyBmdW5jdGlvbikKKwkJSW0gUHJpbnppcCB3aWUgQWRkRGV0YWlsKCksIG51ciB3aXJkIGFscyB6d2VpdGVzIEFyZ3VtZW50CisJCWtlaW4gZmVzdGVyIFN0cmluZyBhbmdlZ2ViZW4sIHNvbmRlciBlaW5lIEZ1bmt0aW9uLCBkaWUKKwkJZWluZW4gU3RyaW5nIHp1cnVlY2tnZWJlbiBtdXNzLiBEYW1pdCBrYW5uIG1hbiB2YXJpYWJsZQorCQlEZXRhaWxzIHByb2dyYW1taWVyZW4uCisJUmVtb3ZlU3BlY2lhbERldGFpbChzdHJpbmd8c3RyaW5nKiBrZXlzKQorCQlzaWVoZSBSZW1vdmVEZXRhaWwoKQorCUFkZFJlYWREZXRhaWwoc3RyaW5nfHN0cmluZyoga2V5cywgc3RyaW5nIGRlc2MpCisJCTxkZXNjPiB3aXJkIGF1c2dlZ2ViZW4sIHdlbm4gZWluIFNwaWVsZXIgZGVuIDxrZXk+IGxpZXN0LgorCQk8a2V5cz4ga2FubiB3aWVkZXIgZWluIFN0cmluZyBvZGVyIGVpbmUgTGlzdGUgdm9uIFN0cmluZ3MKKwkJc2Vpbi4KKwlSZW1vdmVSZWFkRGV0YWlsKHN0cmluZ3xzdHJpbmcqIGtleXMpCisJCXNpZWhlIFJlbW92ZURldGFpbCgpCisJQWRkUm9vbU1lc3NhZ2Uoc3RyaW5nKiBtc2csIGludCBwcm9iLCBzdHJpbmd8c3RyaW5nICpmdW5jKQorCQlBbGxlIDxwcm9iPiBTZWt1bmRlbiB3aXJkIGF1cyBlaW5lciBMaXN0ZSB2b24gTWVsZHVuZ2VuCisJCSg8bXNnPikgenVmYWVsbGlnIGVpbmUgYXVzZ2VzdWNodCwgZGllIGRhbm4gaW0gUmF1bSBlci0KKwkJc2NoZWludC4gV2VubiBkYXMgQXJndW1lbnQgPGZ1bmM+IGFuZ2VnZWJlbiBpc3QsIHdpcmQKKwkJZWluZSBGdW5rdGlvbiBkaWVzZW4gTmFtZW5zIGF1ZmdlcnVmZW4sIGRlciBkZXIgSW5kZXgKKwkJZGVyIGF1c2dlZ2ViZW5lbiBNZWxkdW5nIGFscyBBcmd1bWVudCB1ZWJlcmdlYmVuIHdpcmQuCisJCWZ1bmMgZGFyZiBhdWNoIGVpbmVuIEFycmF5IHZvbiBGdW5rdGlvbmVuIGVudGhhbHRlbi4gRXMgd2lyZAorCQlkYW5uIHp1ZmFlbGxpZyBlaW5lIGF1c2dld2FlaGx0LgorCisJQWRkQ21kKHN0cmluZ3xzdHJpbmcqIGNtZCwgc3RyaW5nIGZ1bmMsIGludCBmbGFnKQorCQlJbSBSYXVtIHdpcmQgYmVpbSBLb21tYW5kbyA8Y21kPiAob2RlciBlaW5lbSBkZXIgS29tbWFuZG9zKQorCQlkaWUgRnVua3Rpb24gPGZ1bmM+IGF1ZmdlcnVmZW4uIDxmdW5jPiBtdXNzIDEgenVydWVjay0KKwkJZ2ViZW4sIHdlbm4gZGllIEZ1bmt0aW9uIGRpZSBLb21iaW5hdGlvbiBhdXMgS29tbWFuZG8KKwkJdW5kIEFyZ3VtZW50ZW4gYWt6ZXB0aWVydCwgYW5zb25zdGVuIDAuIEFsbGVzIHdhcyBlaW4KKwkJU3BpZWxlciBoaW50ZXIgPGNtZD4gbm9jaCBhbmdpYnQsIHdpcmQgZGVyIEZ1bmt0aW9uIGFscworCQlBcmd1bWVudCB1ZWJlcmdlYmVuLiBXZW5uIDxmbGFnPiBnZXNldHp0IGlzdCwgd2lyZCBqZWRlcworCQlLb21tYW5kbywgZGFzIG1pdCA8Y21kPiBiZWdpbm50IGFremVwdGllcnQuCisJUmVtb3ZlQ21kKHN0cmluZ3xzdHJpbmcqIGNtZCkKKwkJRW50ZmVybnQgZWluIEtvbW1hbmRvIGF1cyBkZW0gUmF1bS4KKwkJQUNIVFVORzogQmVpIFNwaWVsZXJuLCBkaWUgenVtIFplaXRwdW5rdCBkZXMgRnVua3Rpb25zLQorCQlhdWZydWZzIG5vY2ggaW0gUmF1bSBzaW5kLCBpc3QgZGFzIEtvbW1hbmRvIG5vY2ggZGVmaW5pZXJ0LgorCQlBbHNvOiBOdXIgYmVudXR6ZW4sIHdlbm4gbWFuIGdlbmF1IHdlaXNzLCB3YXMgbWFuIHR1dC4KKworCUFkZEl0ZW0oc3RyaW5nIGZpbGVuYW1lLCBpbnQgcmVmcmVzaCkKKwkJRWluIE9iamVrdCBtaXQgUGZhZCA8ZmlsZW5hbWU+IHdpcmQgZXJ6ZXVndCB1bmQgaW4gZGVuCisJCVJhdW0gYmV3ZWd0LCBkYWJlaSBnaWJ0IGVzIHZpZXIgdmVyc2NoaWVkZW5lIE1vZGksIGRpZQorCQl1ZWJlciBkYXMgQXJndW1lbnQgPHJlZnJlc2g+IGFuZ2VnZWJlbiB3ZXJkZW46CisJCVJFRlJFU0hfTk9ORTogRGFzIE9iamVrdCB3aXJkIG51ciBiZWltIGFsbGVyZXJzdGVuIG1hbAorCQkJZXJ6ZXVndCwgdW5kIGRhbm4gbmllIHdpZWRlciAoZXJzdCBiZWltIHJlYm9vdCkKKwkJUkVGUkVTSF9ERVNUUlVDVDogRWluIG5ldWVzIE9iamVrdCB3aXJkIGVyc3QgZXJ6ZXVndCwgCisJCQl3ZW5uIGRhcyBhbHRlIHplcnN0b2VydCBpc3QuIFNvIGthbm4gbWFuIHNpY2hlcgorCQkJZ2VoZW4sIGRhc3MgbnVyIGVpbiBFeGVtcGxhciBpbSBTcGllbCBpc3QuCisJCVJFRlJFU0hfUkVNT1ZFOiBCZWltIHJlc2V0IHdpcmQgZWluIG5ldWVzIE9iamVrdCBlcnpldWd0LAorCQkJd2VubiBzaWNoIGRhcyBhbHRlIG5pY2h0IG1laHIgaW0gUmF1bSBiZWZpbmRldC4KKwkJUkVGUkVTSF9BTFdBWVM6IEJlaSBqZWRlbSByZXNldCB3aXJkIGVpbiBuZXVlcyBPYmpla3QgCisJCQllcnpldWd0LiBWT1JTSUNIVDogS2FubiB6dSByaWVzaWdlbiBNZW5nZW4gdm9uCisJCQlPYmpla3RlbiBmdWVocmVuLCB3ZW5uIGVpbiBSYXVtIGxhbmdlIG5pY2h0IGJlLQorCQkJc3VjaHQgd2lyZC4KKwkJRGllIEtvbnN0YW50ZW4gUkVGUkVTSF8qIHNpbmQgaW4gPHJvb21zLmg+IGRlZmluaWVydC4KKworCUF1ZiBkaWUgUHJvcGVydGllcyBQX0VYSVRTLCBQX1NQRUNJQUxfRVhJVFMsIFBfREVUQUlMUywgCisJUF9TUEVDSUFMX0RFVEFJTFMsIFBfUkVBRF9ERVRBSUxTLCBQX0NPTU1BTkRTIHVuZCBQX0lURU1TCisJc29sbHRlIE5JQ0hUIGRpcmVrdCB6dWdlZ3JpZmZlbiB3ZXJkZW4uCmRpZmYgLS1naXQgYS9kb2Mvc3RkL3NjaGx1ZXNzZWwgYi9kb2Mvc3RkL3NjaGx1ZXNzZWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEyM2RiMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zdGQvc2NobHVlc3NlbApAQCAtMCwwICsxLDI0IEBACitTVEFOREFSRE9CSkVLVCBGVUVSIFNDSExVRVNTRUw6CisKK0JFTlVUWlVORworCWluaGVyaXQgIi9kL3VudGVyd2VsdC9zdGQvc2NobHVlc3NlbCIKKworQkVTQ0hSRUlCVU5HICAgCisJRHUgZXJ6ZXVnc3QgZWluZW4gU2NobHVlc3NlbCBkZXIgbnVyIGF1ZiBlaW5lIGJlc3RpbW10ZSBUdWVyCisJcGFzc3QuCisKKyAgICBGdW5rdGlvbmVuOgorCisJY3JlYXRlKCk6CisJCXNldHp0IGVpbiBwYWFyIERlZmF1bHR3ZXJ0ZS4KKworCVNldERvb3JLZXkoIHN0cmluZyBzdHIpOgorCQlnaWJ0IGRlbiBTY2hsdWVzc2VsIGVpbmUgc3BlemllbGxlIEJlc2NocmVpYnVuZywgZGllIAorCQlhdWYgZGllIFR1ZXIgcGFzc2VuIG11c3MuCisKKwlRdWVyeURvb3JLZXkoKQorCQlmcmFndCBkZW4gc3RyaW5nIGRlcyBTY2hsdWVzc2VscyBhYi4KKworU0lFSEUgQVVDSDoKKwl0dWVyCisKZGlmZiAtLWdpdCBhL2RvYy9zdGQvc2VxdWVuY2VyIGIvZG9jL3N0ZC9zZXF1ZW5jZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDliMTdhMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zdGQvc2VxdWVuY2VyCkBAIC0wLDAgKzEsNTggQEAKK1ZlcnNpb24gMi4wIGRlcyBTZXF1ZW5jZXJzIHZvbiBEb24gUnVtYXRhIDIuNy45MworCitNYW5jaG1hbCBzb2xsIGVpbiBOUEMgKE1vbnN0ZXIpIGVpbmUgU2VyaWUgdm9uIFRhZXRpZ2tlaXRlbgoraGludGVyZWluYW5kZXIgd2VnIGF1c2dlZnVlcmh0IHdlcmRlbi4gRGllc2VzIGthbm4gbWFuCittaXQgZGllc2VtIE11ZHVsIHJlbGF0aXYgZWluZmFjaCByZWFsaXNpZXJlbi4KKworRm9sZ2VuZGUgRXJlaWduaXNzZSBrb2VubmVuIGVpbmUgU2VxdWVueiBhdXNsb2VzZW46CisKKwlUZWxsRXZlbnQ6IEVzIHdpcmQgZXR3YXMgaW4gZGVtIFJhdW0sIGluIGRlbSBkZXIgbnBjIHNpY2gKKwkJYmVmaW5kZXQsIGdlc2FndC4KKwlHaXZlRXZlbnQ6IEVzIHdpcmQgZGVtIG5wYyBldHdhcyBnZWdlYmVuLgorCitXZWl0ZXJlIEVyZWlnbmlzc2Uga29lbm5lbiBkdXJjaCBkZW4gQmVmZWhsIExvYWQoKSBzZWxiZXIKK3Byb2dyYW1taWVydCB3ZXJkZW4uCisKK1dpZSBzaWVodCBlaW4gUHJvZ3JhbW0gYXVzPworCisJRWluIFByb2dyYW1tIGlzdCBlaW5lIExpc3RlIHZvbiBCZWZlaGxlbi4KKwlKZWRlciBCZWZlaGwgaXN0IGVpbmUgTGlzdGUsIGJlc3RlaGVuZCBhdXMgZWluZW0gS29tbWFuZG8KKwl1bmQgZWluZXIgWmFobC4KKwlEYXMgS29tbWVuZG8gd2lyZCBhZWhubGljaCBkZXIgQmVmZWhsZSwgZGllIGVpbiBTcGllbGVyIGVpbi0KKwlnaWJ0IGF1c2dlZnVlaHJ0LgorCVZvcnNpY2h0OiBOUENzIGtvZW5uZW4gbnVyIGVpbmVuIFRlaWwgZGVyIEJlZmVobGUsIGRpZSBlaW4KKwlTcGllbGVyIGthbm4sIGRhZnVlciBhYmVyIGltbWVyICdlY2hvJyB1bmQgJ2Vtb3RlJy4KKwlEaWUgWmFobCBnaWJ0IGRpZSBBbnphaGwgZGVyIFNla3VuZGVuIGFuLCBpbiBkZXIgZGVyIG5hZWNoc3RlCisJQmVmZWhsIGF1c2dlZnVlaHJ0IHdpcmQuCisKK0ZvbGdlbmRlIEZ1bmt0aW9uZW4gc2luZCBpbSBNb2R1bCBpbXBsZW1lbnRpZXJ0OgorCisJVm9yYmVyZWl0ZW4gdm9uIEZ1bmt0aW9uZW4sIGRpZSBlaW5lIFNlcXVlbnogYXVzbG9lc2VuOgorCisJUmVnaXN0ZXJUZWxsKCBmdW5rdGlvbiwgcHJvZ3JhbW0gKQorCQlXZW5uIGRlbSBucGMgZXR3YXMgZ2VzYWd0IHdpcmQsIHNvIHdpcmQgZGllIGdlc2FndGUgTWVsZHVuZworCQlhbiBkaWUgRnVua3Rpb24gdWViZXJnZWJlbi4gR2lidCBkaWUgRnVua3Rpb25lbiBuaWNodCAwCisJCXp1cnVlY2ssIHdpcmQgZGFzIFByb2dyYW1tIGdlc3RhcnRldC4KKwkJCisJUmVnaXN0ZXJHaXZlKCBmdW5rdGlvbiwgcHJvZ3JhbW0gKQorCQlXaXJkIGRlbSBucGMgZXR3YXMgZ2VnZWJlbiwgc28gd2lyZCBkYXMgT2JqZWt0IGFuIGRpZQorCQlGdW5rdGlvbiB1ZWJlcmdlYmVuLiBHaWJ0IGRpZSBGdW5rdGlvbiBuaWNodCAwIHp1cnVlY2ssIHNvCisJCXdpcmQgZGFzIFByb2dyYW1tIGdlc3RhcnRldC4KKworCUxvYWQoIHByb2dyYW1tICkKKwkJU3RhcnRlIGRhcyBhbmdlZ2ViZW5lIFByb2dyYW1tLgorCitBbmVkZXJ1bmdlbiBhbiBiZXN0ZWhlbmRlbiBTdGQtRnVua3Rpb25lbjoKKworCWdpdmVfbm90aWZ5KCkgZ2lidCBlaW5lIDEgenVydWVjaywgd2VubiBkYXMgT2JqZWt0IGFremVwdGllcnQKKwkJd3VyZGUuIChFcyBtdXNzIC0gZmFsbHMgZ2V3dWVuc2NodCAtIGRhbm4gdm9uIEhhbmQgenVydWVjaC0KKwkJZ2VnZWJlbiB3ZXJkZW4uIChnaXZlX29iaihvYix0aGlzX3BsYXllcigpKSkgaW4gZGllc2VyCisJCUZ1bmt0aW9uLgorCisJTWl0dGVscyBhZGRfYWN0aW9uKCkga2FubiBtYW4gaW0gY3JlYXRlKCkgZGVzIE5QQ3MgZWlnZW5lCisJVmVyYmVuIGZ1ZXIgZGVuIE5QQyBlaW5mdWVocmVuLgorCitFcyBrYW5uIGltbWVyIG51ciBlaW5lIEZ1bmt0aW9uIChlZ2FsIG9iIHZpYSBUZWxsLCBHaXZlIG9kZXIgTG9hZCkgYW5nZW1lbGRldAorc2Vpbi4gRXMga2FubiBpbW1lciBudXIgZWluIFByb2dyYW1tIGdsZWljaHplaXRpZyBsYXVmZW4uCisKK0lkZWVuIHVuZCBCdWdyZXBvcnRzIGFuIFJ1bWF0YQpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC90aGluZyBiL2RvYy9zdGQvdGhpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ1YjQ2MgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zdGQvdGhpbmcKQEAgLTAsMCArMSwyMDUgQEAKK1NUQU5EQVJEIEtMQVNTRToKKwkiL3N0ZC90aGluZyIgCisKK0JFTlVUWlVORzoKKwlpbmhlcml0ICIvc3RkL3RoaW5nIjsKKworCSNpbmNsdWRlIDx0aGluZy5oPgorCSNpbmNsdWRlIDxwcm9wZXJ0aWVzLmg+CisKK1BST1BFUlRJRVM6CisJPHRoaW5nL2NvbW1hbmRzPgorCQlQX0NPTU1BTkRTCS0tIEJlZmVobGUgYXNzb3ppaWVydCBtaXQgZGVtIE9iamVrdAorCTx0aGluZy9kZXNjcmlwdGlvbj4KKwkJUF9OQU1FCQktLSBOYW1lCisJCVBfTkFNRV9BREoJLS0gTmFtZW5zYWRqZWt0aXYKKwkJUF9TSE9SVAkJLS0gS3VyemJlc2NocmVpYnVuZworCQlQX0xPTkcJCS0tIExhbmdiZXNjaHJlaWJ1bmcKKwkJUF9JRFMJCS0tIElkZW50aWZpa2F0b3JlbiAoRmVsZCB2b24gWmVpY2hlbmtldHRlbikKKwkJUF9BREpFQ1RJVkVTCS0tIEFkamVrdGl2ZSB6dXIgQmVzY2hyZWlidW5nCisJPHRoaW5nL2xhbmd1YWdlPgorCQlQX0FSVElDTEUJLS0gQXJ0aWtlbCBkZXMgT2JqZWt0cworCQlQX0dFTkRFUgktLSBHZXNjaGxlY2h0IGRlcyBPYmpla3RzCisJPHRoaW5nL21vdmluZz4KKwkJUF9OT0RST1AJLS0gS2FubiBuaWNodCBmYWxsZW5nZWxhc3NlbiB3ZXJkZW4KKwkJUF9OT0dFVAkJLS0gS2FubiBuaWNodCBnZW5vbW1lbiB3ZXJkZW4KKwk8dGhpbmcvcHJvcGVydGllcz4KKwkJUF9VSUQJCS0tIFVzZXIgSUQKKwkJUF9FVUlECQktLSBFZmZla3RpdmUgVXNlciBJRAorCTx0aGluZy9yZXN0cmljdGlvbnM+CisJCVBfV0VJR0hUCS0tIEdld2ljaHQgZGVzIE9iamVrdHMKKwkJUF9UT1RBTF9XRUlHSFQJLS0gR2V3aWNodCBpbmtsdXNpdmUgZGVzIEluaGFsdHMKKwkKK01BS1JPUzoKKwk8dGhpbmcvcHJvcGVydGllcz4KKwkJRl9WQUxVRQkJLS0gUHJvcGVydHl3ZXJ0CisJCUZfTU9ERQkJLS0gUHJvcGVydHltb2R1cyB1bXNjaGFsdGVuCisJCUZfTU9ERV9BUwktLSBQcm9wZXJ0eW1vZHVzIHNldHplbgorCQlGX01PREVfQUQJLS0gUHJvcGVydHltb2R1cyBsb2VzY2hlbgorCQkgIFNBVkUJCSAgLS0gUHJvcGVydHkgd2lyZCBnZXNwZWljaGVydAorCQkgIFBST1RFQ1RFRAkgIC0tIFByb3BlcnR5IGlzIGdlc2NodWV0enQKKwkJICBTRUNVUkVECSAgLS0gUHJvcGVydHkga2FubiBuaWUgbWVociBnZWFlbmRlcnQgd2VyZGVuCisJCSAgTk9TRVRNRVRIT0QJICAtLSBQcm9wZXJ0eSBiZXNpdHp0IGtlaW5lIFNldHpmdW5rdGlvbgorCQlGX1NFVF9NRVRIT0QJLS0gRnVua3Rpb24genVtIHNldHplbiBkZXIgUHJvcGVydHkKKwkJRl9RVUVSWV9NRVRIT0QJLS0gRnVua3Rpb24genVtIGxlc2VuIGRlciBQcm9wZXJ0eQorCTx0aGluZy9sYW5ndWFnZT4KKwkJTUFMRSwgRkVNQUxFLCBORVVURVIgCS0tIEdlc2NobGVjaHRlcgorCQlXRVIsIFdFU1NFTiwgV0VNLCBXRU4gCS0tIEZhbGwKKwkJUkFXIAkJCS0tIGZ1ZXIgTmFtZW4gb2huZSBBcnRpa2VsCisJCVNJTkdVTEFSLCBQTFVSQUwgCS0tIFplaXRlbgorCQorRlVOS1RJT05FTjoKKwkiL3N0ZC90aGluZy9jb21tYW5kcyI6CisJCXZhcmFyZ3Mgdm9pZCBBZGRDbWQobWl4ZWQgY21kLCBtaXhlZCBmdW5jLCBpbnQgZmxhZyk7CisJCXZhcmFyZ3Mgdm9pZCBSZW1vdmVDbWQobWl4ZWQgY21kKTsKKwkiL3N0ZC90aGluZy9kZXNjcmlwdGlvbiI6CisJCXZhcmFyZ3MgaW50IGlkKHN0cmluZyBzdHIsIGludCBsdmwpOworCQl2b2lkIEFkZElkKG1peGVkIHN0cik7CisJCXZvaWQgQWRkQWRqZWN0aXZlKG1peGVkIHN0cik7CisJCXN0cmluZyBuYW1lKGludCBjYXN1cyxpbnQgZGVtb24pOworCSIvc3RkL3RoaW5nL2xhbmd1YWdlIjoKKwkJdmFyYXJncyBzdHJpbmcgUXVlcnlBcnRpY2xlKGludCBjYXN1cywgaW50IGRlbSwgaW50IGZvcmNlKTsKKwkJdmFyYXJncyBpbnQgU3VnZ2VzdEFydGljbGUoc3RyaW5nIGlkKTsKKwkJdmFyYXJncyBzdHJpbmcgUXVlcnlQb3NzUHJvbm91bihtaXhlZCB3aGF0LCBpbnQgY2FzdXMsIAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1iZXIpOworCQlzdHJpbmcgUXVlcnlQcm9ub3VuKGludCBjYXN1cyk7CisJCXZhcmFyZ3Mgc3RyaW5nIFF1ZXJ5RHUoaW50IGNhc3VzLGludCBnZW5kZXIsIGludCB6YWhsKTsKKwkJc3RyaW5nIFF1ZXJ5R2VuZGVyU3RyaW5nKCk7CisJCXZhcmFyZ3Mgc3RyaW5nIERlY2xBZGooc3RyaW5nIGFkaiwgaW50IGNhc3VzLCBpbnQgZGVtb24pOworCSIvc3RkL3RoaW5nL3Byb3BlcnRpZXMiOgorCQl2YXJhcmdzIG1peGVkIFNldChzdHJpbmcgbmFtZSwgbWl4ZWQgVmFsdWUsIGludCBUeXBlKTsgCisJCXZhcmFyZ3MgbWl4ZWQgUXVlcnkoc3RyaW5nIG5hbWUsIGludCBUeXBlKTsKKwkJbWl4ZWQgU2V0UHJvcChzdHJpbmcgbmFtZSwgbWl4ZWQgVmFsdWUpOworCQltaXhlZCBRdWVyeVByb3Aoc3RyaW5nIG5hbWUpOworCQl2b2lkIFNldFByb3BlcnRpZXMobWFwcGluZyBwcm9wcyk7CisJCW1hcHBpbmcgUXVlcnlQcm9wZXJ0aWVzKCk7CisJIi9zdGQvdGhpbmcvbW92aW5nIjoKKwkJaW50IG1vdmUobWl4ZWQgZGVzdCxpbnQgbWV0aG9kKTsKKwkJdmFyYXJncyBpbnQgcmVtb3ZlKCk7CisKK0VSTEFFVVRFUlVORzoKKwkiL3N0ZC90aGluZyIgaXN0IGVpbmUgZ2VuZXJlbGxlIEtsYXNzZSBmdWVyIE9iamVrdGUgYWxsZXIgQXJ0LgorCUVzIGJpZXRldCBnZW5lcmVsbGUgRnVua3Rpb25hbGl0YWV0IHp1ciBFcnN0ZWxsdW5nIHZvbiBuZXVlbgorCUtsYXNzZW4gdW5kIE9iamVrdGVuLiBTaWUga2FubiBtaXR0ZWxzIGRlciB6dXIgVmVyZnVlZ3VuZworCXN0ZWhlbmRlbiBGdW5rdGlvbmVuIGtvbmZpZ3VyaWVydCB3ZXJkZW46CisKKwkqKiAiL3N0ZC90aGluZy9jb21tYW5kcyI6CisJdmFyYXJncyB2b2lkIEFkZENtZChtaXhlZCBjbWQsIG1peGVkIGZ1bmMsIGludCBmbGFnKTsKKwkgIFVtIGRlbSBPYmpla3QgZGllIE1vZWdsaWNoa2VpdCB6dSBnZWJlbiwgYXVmIEJlZmVobGUgenUgcmVhZ2llcmVuLAorCSAga2FubiBtaXQgQWRkQ21kKCkgS29tbWFuZG9zIGRlZmluaWVydCB3ZXJkZW4sIGRpZSBlaW5lIGJlc3RpbW10ZQorCSAgRnVua3Rpb24gKGZ1bmMpIGF1ZnJ1ZmVuLiBmbGFnIGVudHNjaGVpZGV0IGRhcnVlYmVyLCBvYiBkYXMgS29tbWFuZG8KKwkgIChjbWQpIGFiZ2VrdWVyenQgd2VyZGVuIGthbm4gKGZsYWcgPSAxKSBvZGVyIG5pY2h0IChmbGFnID0gMCkuCisKKwl2YXJhcmdzIHZvaWQgUmVtb3ZlQ21kKG1peGVkIGNtZCk7CisJICBNYW4ga2FubiBkaWUgS29tbWFuZG9zIGplZGVyemVpdCB3aWVkZXIgbWl0IGRlciBGdW5rdGlvbiBSZW1vdmVDbWQoKQorCSAgZW50ZmVybmVuLgorCisJKiogIi9zdGQvdGhpbmcvZGVzY3JpcHRpb24iOgorCXZhcmFyZ3MgaW50IGlkKHN0cmluZyBzdHIsIGludCBsdmwpOworCSAgRGllIEZ1bmt0aW9uIGlkKCkgYmVoYW5kZWx0IGRpZSBJZGVudGlmaWthdG9yZW4gZWluZXMgT2JqZWt0ZXMsIAorCSAgd2VsY2hlIGluIGRlciBQcm9wZXJ0eSBQX0lEUyBnZXNwZWljaGVydCBzaW5kLiBKZWRlc21hbCwgd2VubiBlaW4KKwkgIE9iamVrdCBkdXJjaCBLb21tYW5kb3Mgd2llICJuaW1tIiwgImxhc3MgZmFsbGVuIiBldGMgcmVmZXJlbnppZXJ0CisJICB3ZXJkZW4gc29sbCwgd2lyZCBpZCgpIG1pdCBkZW0gTmFtZW4gZGVzIE9iamVrdGVzIGF1ZmdlcnVmZW4uIERhYmVpCisJICB3ZXJkZW4gZGFubiBkaWUgRWxlbWVudGUgdm9uIFBfSURTIG1pdCBzdHIgdmVyZ2xpY2hlbiB1bmQgZGFzIEVyZ2ViLQorCSAgbmlzIChXQUhSL0ZBTFNDSCA9PSAxLzApIHp1cnVlY2tnZWdlYmVuLiBsdmwgaXN0IGZ1ZXIgZGllIEJlaGFuZGx1bmcKKwkgIHZvbiBMZWJld2VzZW4gbm90d2VuZGlnLCBzaWVoZSBsaXZpbmcuCisJCisJdm9pZCBBZGRJZChtaXhlZCBzdHIpOworCSAgTWl0dGVscyBkaWVzZXIgRnVua3Rpb24ga2FubiBlaW4gb2RlciBtZWhyZXJlIG5ldWUgSWRlbnRpZmlrYXRvcmVuCisJICBkZXIgTGlzdGUgZGVyIGJlc3RlaGVuZGVuLCBTdGFuZGFyZCBpc3QgImRpbmciLCBoaW56dWdlZnVlZ3Qgd2VyZGVuLgorCisJdm9pZCBBZGRBZGplY3RpdmUobWl4ZWQgc3RyKTsKKwkgIFVtIGRlbiBPYmpla3RlbiBkaWUgTW9lZ2xpY2hrZWl0IHp1IGdlYmVuLCBzaWNoIGJlc3NlciB6dSBiZXNjaHJlaWJlbgorCSAgb2RlciB6dXIgYmVzc2VyZW4gSWRlbnRpZml6aWVydW5nLCBrYW5uIG1hbiBtaXQgQWRkQWRqZWN0aXZlKCkgZGVtCisJICBPYmpla3QgbmFlaGVyIGJlc2NocmVpYmVuZGUgQWRqZWt0aXZlIGhpbnp1ZnVlZ2VuLiBEaWVzZSBzaW5kIGluCisJICBQX0FESkVDVElWRVMgZ2VzcGVpY2hlcnQuCisKKwlzdHJpbmcgbmFtZShpbnQgY2FzdXMsaW50IGRlbW9uKTsKKwkgIERpZXNlIEZ1bmt0aW9uIGxpZWZlcnQgZGVuIE5hbWVuIGRlcyBPYmpla3RlcyBtaXQgYWxsZW4genVzYWV0emxpY2hlbgorCSAgQXR0cmlidXRlbiBpbSBnZXd1ZW5zY2h0ZW4gRmFsbCAoY2FzdXMpLCBkZW1vbnN0cmF0aXYgKGRlbW9uID0gMSkgCisJICBvZGVyIG5pY2h0IGRlbW9uc3RyYXRpdiAoZGVtb24gPSAwKS4KKworCSoqICIvc3RkL3RoaW5nL2xhbmd1YWdlIjoKKwl2YXJhcmdzIHN0cmluZyBRdWVyeUFydGljbGUoaW50IGNhc3VzLCBpbnQgZGVtLCBpbnQgZm9yY2UpOworCSAgQXJ0aWtlbCBpbSBwYXNzZW5kZW4gRmFsbCBzb3dpZSBkZW1vbnN0LiBiencgdW5kZW1vbnN0LiB6dXJ1ZWNrLQorCSAgZ2ViZW4uIGZvcmNlIHVlYmVyc2NocmVpYnQgZGFzIFNldEFydGljbGUtRmxhZy4KKworCXZhcmFyZ3MgaW50IFN1Z2dlc3RBcnRpY2xlKHN0cmluZyBpZCk7CisJICBFbXBmZWhsZSBlaW5lbiBBcnRpa2VsIGZ1ZXIgZGFzIE9iamVrdCwgZ2V0ZXN0ZXQgd2lyZCwgb2IgYXVzc2VyCisJICBkaWVzZW0gT2JqZWt0IHNpY2ggZWluIGFuZGVyZXMgT2JqZWt0IG1pdCBkZXIgaWQgaW0gc2VsYmVuCisJICBSYXVtIGJlZmluZGV0LgorCisJdmFyYXJncyBzdHJpbmcgUXVlcnlQb3NzUHJvbm91bihtaXhlZCB3aGF0LCBpbnQgY2FzdXMsIGludCBudW1iZXIpOworCSAgR2liIGVpbiBQcm9ub21lbiB6dXJ1ZWNrLCBkYXMgYXVzZHJ1ZWNrdCwgZGFzIGVpbiBPYmpla3QgZGllc2VtCisJICBPYmpla3QgZ2Vob2VydC4gRGFiZWkgaXN0IHdoYXQgZGFzIEdlc2NobGVjaHQgZGVzIE9iamVrdGVzLgorCisJc3RyaW5nIFF1ZXJ5UHJvbm91biggY2FzdXMgKTsKKwkgIEVyL1NpZS9FcyB1LmFlLiB6dXJ1ZWNrZ2ViZW4uCisKKwl2YXJhcmdzIHN0cmluZyBRdWVyeUR1KGludCBjYXN1cyxpbnQgZ2VuZGVyLCBpbnQgemFobCk7CisJICBEdSBpbSBwYXNzZW5kZW4gRmFsbCB6dXJ1ZWNrZ2ViZW4gKHNpZWhlIFF1ZXJ5QXJ0aWNsZSgpKS4KKworCXN0cmluZyBRdWVyeUdlbmRlclN0cmluZygpOworCSAgR2lidCBkYXMgR2VzY2hsZWNodCBpbiBXb3J0ZW4genVydWVjay4KKworCXZhcmFyZ3Mgc3RyaW5nIERlY2xBZGooc3RyaW5nIGFkaiwgaW50IGNhc3VzLCBpbnQgZGVtb24pOyAKKwkgIERla2xpbmllcmUgQWRqZWt0aXZlIGFkaiBtaXQgQ2FzdXMgY2FzdXMuCisKKwkqKiAiL3N0ZC90aGluZy9wcm9wZXJ0aWVzIjoKKwl2YXJhcmdzIG1peGVkIFNldChzdHJpbmcgbmFtZSwgbWl4ZWQgVmFsdWUsIGludCBUeXBlKTsgCisJICBTZXR6ZSBlaW5lbiBXZXJ0IGVpbmVyIFByb3BlcnR5IGRpcmVrdCwgd29iZWkgZGVyIFR5cCBkZXMgV2VydGVzCisJICAoVmFsdWUpIGR1cmNoIEZfVkFMVUUsIEZfTU9ERSwgRl9TRVRfTUVUSE9ELCBGX1FVRVJZX01FVEhPRCAoVHlwZSkKKwkgIGFuZ2VnZWJlbiB3aXJkLiAKKwkgIEZfVkFMVUUgLS0gZGFyZiBlaW4gYmVsaWViaWdlciBXZXJ0IHNlaW4KKwkgIEZfTU9ERSAgLS0gbXVzcyBlaW5lIFphaGwgc2VpbiAoU0FWRSwgUFJPVEVDVEVELCBTRUNVUkVELCAKKwkgICAgICAgICAgICAgTk9TRVRNRVRIT0QpCisJICBGX1NFVF9NRVRIT0QsIEZfUVVFUllfTUVUSE9EIC0tIDAgb2RlciBlaW5lIENsb3N1cmUKKworCXZhcmFyZ3MgbWl4ZWQgUXVlcnkoc3RyaW5nIG5hbWUsIGludCBUeXBlKTsKKwkgIExpZXMgZGVuIFdlcnQgZWluZXIgUHJvcGVydHkgYXVzLiBEYWJlaSBnaWJ0IFR5cGUgYW4sIHdlbGNoZW4gV2VydAorCSAgKEZfVkFMVUUsIEZfTU9ERSwgRl9TRVRfTUVUSE9ELCBGX1FVRVJZX01FVEhPRCkgbWFuIGF1c2xlc2VuIHdpbGwuCisKKwltaXhlZCBTZXRQcm9wKHN0cmluZyBuYW1lLCBtaXhlZCBWYWx1ZSk7CisJICBTZXR6ZSBkZW4gV2VydCBlaW5lciBQcm9wZXJ0eS4gRGFiZWkgd2lyZCwgZmFsbHMgdm9yaGFuZGVuLCBkZXIgV2VydAorCSAgbm9jaCBkdXJjaCBkaWUgRl9TRVRfTUVUSE9EIGJlaGFuZGVsdCAoei5CLiBUeXB1ZWJlcnBydWVmdW5nKS4KKwkgIERpZXMgc29sbHRlIGRpZSBTdGFuZGFyZG1ldGhvZGUgenVtIFNldHplbiBlaW5lciBQcm9wZXJ0eSBzZWluIQorICAKKwltaXhlZCBRdWVyeVByb3Aoc3RyaW5nIG5hbWUpOworCSAgTGllcyBkZW4gV2VydCBlaW5lciBQcm9wZXJ0eSwgd29iZWkgZGVyIGVpZ2VudGxpY2hlIFdlcnQgZHVyY2ggZGllLAorCSAgZmFsbHMgdm9yaGFuZGVuLCBGX1FVRVJZX01FVEhPRCBiZWhhbmRlbHQgd2lyZC4gQWxzIEJlaXNwaWVsIGRpZW50CisJICBoaWVyIGRpZSBCZWhhbmRsdW5nIGRlcyBHZXNhbXRnZXdpY2h0cywgd2VsY2hlcyBkdXJjaCBBYmZyYWdlbiB2b24KKwkgIFBfVE9UQUxfV0VJR0hUIGF1c2dlbGVzZW4gd2VyZGVuIGthbm47IGhpZXJiZWkgZXJyZWNobmV0IGRpZSAKKwkgIEZfUVVFUllfTUVUSE9EIHZvbiBQK19UT1RBTF9XRUlHSFQgZXJzdCBkYXMgdG90YWxlIEdld2ljaHQuCisJICBEaWVzIHNvbGx0ZSBkaWUgU3RhbmRhcmRtZXRob2RlIHNlaW4gdW0gZWluZSBQcm9wZXJ0eSBhdXN6dWxlc2VuIQorCisJdm9pZCBTZXRQcm9wZXJ0aWVzKG1hcHBpbmcgcHJvcHMpOworCSAgRGllc2UgRnVua3Rpb24ga2FubiBkaWUgaW4gcHJvcHMgZ2VzcGVpY2hlcnRlbiBQcm9wZXJ0aWVzIGltIE9iamVrdAorCSAgdW50ZXJicmluZ2VuLiBEYWJlaSB3ZXJkZW4gc2Nob24gdm9yaGVyIGFscyBQUk9URUNURUQgb2RlciBTRUNVUkVECisJICBnZWtlbm56ZWljaG5ldGUgUHJvcGVydGllcyBOSUNIVCB1ZWJlcnNjaHJpZWJlbi4KKworCW1hcHBpbmcgUXVlcnlQcm9wZXJ0aWVzKCk7CisJICBMaWVmZXJ0IGVpbiBtYXBwaW5nLCB3ZWxjaGVzIHZvbiBTZXRQcm9wZXJ0aWVzKCkgYmVoYW5kZWx0IHdlcmRlbgorCSAga2Fubi4KKworCSoqICIvc3RkL3RoaW5nL21vdmluZyI6CisJaW50IG1vdmUobWl4ZWQgZGVzdCxpbnQgbWV0aG9kKTsKKwkgIEplZGVzbWFsLCB3ZW5uIGVpbiBPYmpla3QgYmV3ZWd0IHdlcmRlbiBzb2xsLCB3aXJkIGRpZSBGdW5rdGlvbgorCSAgbW92ZSgpIGF1ZmdlcnVmZW4sIHdlbGNoZSBkYW5uIGRhcyBlaWdlbnRsaWNoZSBCZXdlZ2VuIGF1c2Z1ZWhydC4KKwkgIERhenUgbXVzcyBkZXIgRnVua3Rpb24gZWluIFppZWwgKGRlc3QpIGFscyBaZWljaGVua2V0dGUgb2RlciBhbHMKKwkgIE9iamVrdCB1bmQgZWluZSBNZXRob2RlIGRlciBCZXdlZ3VuZyB1ZWJlcmdlYmVuIHdlcmRlbi4KKwkKKwl2YXJhcmdzIGludCByZW1vdmUoKTsKKwkgIFdpcmQgZWluIE9iamVrdCB6ZXJzdG9lcnQsIHdpcmQgZGllIEZ1bmt0aW9uIHJlbW92ZSgpIGF1ZmdlcnVmZW4uCisJICBSdWVja2dhYmV3ZXJ0IDEgYmVkZXV0ZXQgRXJmb2xnIHVuZCAwIE1pc3NlcmZvbGcgZGVyIFplcnN0b2VydW5nLgorCitWRVJFUkJVTkdTQkFVTToKKwl0aGluZworCSAgfC10aGluZy9jb21tYW5kcworCSAgfC10aGluZy9kZXNjcmlwdGlvbgorCSAgfC10aGluZy9sYW5ndWFnZQorCSAgfC10aGluZy9tb3ZpbmcKKwkgIHwtdGhpbmcvcHJvcGVydGllcworCSAgYC10aGluZy9yZXN0cmljdGlvbnMKKworU0lFSEUgQVVDSDoKKwlwcm9wZXJ0aWVzLCBjbG9zdXJlcyAKZGlmZiAtLWdpdCBhL2RvYy9zdGQvdHJhbnNwb3J0IGIvZG9jL3N0ZC90cmFuc3BvcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAwMGM5NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zdGQvdHJhbnNwb3J0CkBAIC0wLDAgKzEsMjY0IEBACis+IEZVTktUSU9OU1dFSVNFIFZPTiBUUkFOU1BPUlRFUk4gPAorVmVyc2lvbiAxLjAgKDA0LjA1LjE5OTMpIHZvbiBSdW1hdGEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworSU5IQUxUOgorPT09PT09CisKKwkxLglBbGxnZW1laW5lcworCTIuCVByb3BlcnRpZXMKKwkzLglIYWx0ZXN0ZWxsZW4KKwk0LglTdGV1ZXJ1bmcKKwk1LglCZXRyZXRlbiB1bmQgdmVybGFzc2VuCisJNi4JRXh0cmFzCisJNy4JS29tbWFuZG9zIGluIFRybmFzcG9ydGVybgorCisKKzEuIEFMTEdFTUVJTkVTCis9PT09PT09PT09PT09PQorCisJRWluIFRyYW5zcG9ydGVyIGlzdCBlaW4gUmF1bSBtaXQgYmVzb25kZXJlbiBFaWdlbnNjaGFmdGVuLgorCVdhZWhyZW5kIG5vcm1hbGUgUmF1bWUgbWl0ZWlubmRlciBzdGFyciB2ZXJidW5kZW4gc2luZCwKKwlrYW5uIGRpZXNlciBSYXVtIHNlaW5lIFZlcmJpbmR1bmcgenUgYW5kZXJlbiBSYWV1bWVuIG1pdAorCWRlciBaZWl0IGFlbmRlcm4uCisKKwlKZWRlciBUcmFuc3BvcnRlciBiZXNpdHp0IGVpbmVuICdLdXJzJyBkZW4gZXIgYWJmYWVocnQ7IG5hY2ggZGVyCisJbGV0enRlbiAnSGFsdGVzdGVsbGUnIGJlZ2lubnQgZGVyIEt1cnMgd2llZGVyIHZvbiBWb3JuZS4KKwlXaWxsIG1hbiBlaW5lbiBLdXJzIHNldHplbiwgZGVyIGVudGxhbmcgZWluZXIgU3RyZWNrZSBoaW4tCisJdW5kIHp1cnVlY2sgZnVlaHJ0LCBzbyBtdXNzIG1hbiBqZWRlIEhhbHRlc3RlbGxlIGVpbm1hbCBmdWVyCisJZGVuIEhpbndlZyB1bmQgZWlubWFsIGZ1ZXIgZGVuIFJ1ZWNrd2VnIGVpbmZ1ZWdlbi4KKworCUVpbiBCZWlzcGllbCwgd2llIG1hbiBlaW5lbiBzb2xjaGVuIFRyYW5zcG9ydGVyIHByb2dyYW1taWVydCwKKwlpc3QgaW4gL2RvYy9iZWlzcGllbGUvd29sa2UuYyB6dSBzZWhlbiAodW5kIHp1IGxhZGVuIDotKS4KKworMi4gUFJPUEVSVElFUworPT09PT09PT09PT09PQorCisJUF9FTlRFUk1TRworCQlBcnJheSBtaXQgendlaSBNZWxkdW5nZW4gaW4gZGVyIEFydCB2b24gbXNnaW4gdW5kCisJCW1zZ291dC4gIERpZSBlcnN0ZSBNZWxkdW5nIGlzdCBmdWVyIGRlbiBSYXVtLCBkZW4gZGVyCisJCVNwaWVsZXIgdmVybGFlc3N0LCB1bmQgZGllIHp3ZWl0ZSBmdWVyIGRlbiBUcmFuc3BvcnRlciwKKwkJaW4gZGVuIGVyIGdlaHQuCisKKwlQX0xFQVZFTVNHCisJCUFycmF5IG1pdCB6d2VpIE1lbGR1bmdlbiwgZWluZSBmdWVyIGRlbiBUcmFuc3BvcnRlciwgZGVuCisJCWVyIHZlcmxhZXNzdCwgdW5kIGVpbmUgZnVlciBkZW4gUmF1bSwgaW4gZGVuIGVyIGtvbW10LgorCisJUF9FTlRFUkZBSUwKKwkJTWVsZHVuZyBhbiBlaW4gV2VzZW4sIHdlbm4gZGVuIHZvbGxlbiBUcmFuc3BvcnRlcgorCQliZXRyZXRlbiB3aWxsLiBJc3QgZGllIFByb3AuIGVpbiBBcnJheSwgc28gd2lyZCBkYXMgZXJzdGUKKwkJRWxlbWVudCBhbHMgTWVsZHVuZyBhbiBkYXMgV2VzZW4sIGRhcyB6d2VpdGUgYWxzIE1lbGR1bmcKKwkJYW4gZGllIE1pdHNwaWVsZXIgaW0gUmF1bSBnZXNjaGlja3QuIElzdCBkaWUgUHJvcGVydHkKKwkJZWluZSBDbG9zdXJlLCB3aXJkIGRpZXNlIGF1c2dlZnVlaHJ0LCB3ZW5uIGVpbiBTcGllbGVyCisJCXZlcmdlYmxpY2ggdmVyc3VjaHQsIGRlbiBUcmFuc3BvcnRlciB6dSBiZXRyZXRlbi4KKworCVBfTEVBVkVGQUlMCisJCU1lbGR1bmcgYW4gZWluIFdlc2VuLCB3ZW5uIGVzIGF1c3NlcmhhbGIgZGVyIEFubGVnZXplaXRlbgorCQlkZW4gVHJhbnNwb3J0ZXIgdmVybGFzc2VuIHdpbGwuIElzdCBkaWUgUHJvcC4gZWluIEFycmF5LAorCQlzbyB3aXJkIGRhcyBlcnN0ZSBFbGVtZW50IGFscyBNZWxkdW5nIGFuIGRhcyBXZXNlbiwgZGFzCisJCXp3ZWl0ZSBhbHMgTWVsZHVuZyBhbiBkaWUgTWl0c3BpZWxlciBpbSBUcmFuc3BvcnRlcgorCQlnZXNjaGlja3QuIElzdCBkaWUgUHJvcGVydHkgZWluZSBDbG9zdXJlLCB3aXJkIGRpZXNlCisJCWF1c2dlZnVlaHJ0LCB3ZW5uIGVpbiBTcGllbGVyIHZlcmdlYmxpY2ggdmVyc3VjaHQsIGRlbgorCQlUcmFuc3BvcnRlciB6dSB2ZXJsYXNzZW4uCisKKwlQX0FSUklWRU1TRworCQlFaW4gQXJyYXkgbWl0IHp3ZWkgTWVsZHVuZ2VuLiBEYXMgZXJzdGUgRWxlbWVudCBpc3QgZGllCisJCU1lbGR1bmcsIGRpZSBkaWUgV2VzZW4gaW0gVHJhbnNwb3J0ZXIgYmVrb21tZW4uIERpZQorCQl6d2VpdGUgTWVsZHVuZyBpc3QgZnVlciBkaWUgV2VzZW4gaW4gZGVtIFJhdW0sIGFuIGRlbQorCQlkZXIgVHJhbnNwb3J0ZXIgYW5sZWd0LiAKKworCVBfREVQQVJUTVNHCisJCURpdG8gZnVlciBkYXMgQWJsZWdlbi4KKworCVBfTUFYX1BBU1NFTkdFUlMKKwkJTnVtZXJpc2NoZXIgV2VydCBmdWVyIGRpZSBtYXhpbWFsZSBBbnphaGwgdm9uIFdlc2VuLCBkaWUKKwkJc2ljaCBpbiBkZW0gVHJhbnNwb3J0ZXIgYXVmaGFsdGVuIGR1ZXJmZW4uCisJCTAgYmVkZXV0ZXQgdW5iZXNjaGFlbmt0ZSBTcGllbGVyemFobC4KKworCiszLiBIQUxURVNURUxMRU4KKz09PT09PT09PT09PT09PQorCisJRXMgZ2lidCAzIFNvcnRlbiB2b24gSGFsdGVzdGVsbGVuOgorCisJMS4pIFJhZXVtZSBhbHMgSGFsdGVzdGVsbGVuLgorCisJRlVOS1RJT046CisJCisJCUFkZFJvdXRlKCByYXVtLCB2ZXJ3ZWlsLCBuZXh0ICk7CisJCW9kZXIKKwkJQWRkUm91dGUoIHJhdW0sIHZlcndlaWwsIG5leHQsIGNvZGUgKTsKKworCVBBUkFNRVRFUjoKKworCQlyYXVtCS0gUmF1bSwgYW4gZGVtIGRlciBUcmFuc3BvcnRlciBoYWx0ZW4gc29sbC4KKwkJdmVyd2VpbAktIFplaXQgaW4gU2VrdW5kZW4sIGRpZSBkZXIgVHJhbnNwb3J0ZXIgaW4gZGVtCisJCQkgIFJhdW0gdmVyYmxlaWJ0LCBiaXMgZXIgd2VpdGVyZmFlaHJ0LgorCQluZXh0CS0gWmVpdCBpbiBTZWt1bmRlbiBiaXMgenVyIG5hZWNoc3RlbiBIYWx0ZS0KKwkJCSAgc3RlbGxlLgorCisJCWNvZGUJLSBUZXh0LCBkZXIgdm9uIGRlciBGdW5rdGlvbiBRdWVyeUFycml2ZWQKKwkJCSAgenVydWVja2dlZ2ViZW4gd2lyZCwgd2VubiBkZXIgVHJhbnNwb3J0ZXIKKwkJCSAgYW4gZGllc2VyIEhhbHRlc3RlbGxlIGFuZ2VsZWd0IGhhdC4KKwkJCSAgV2lyZCBkaWVzZXIgUGFyYW1ldGVyIG5pY2h0IGFuZ2VnZWJlbiwgd2lyZAorCQkJICBlaW4gbGVlcmVyIFN0cmluZyBhbHMgY29kZSBnZXNldHp0LgorCisJMi4pIE1lbGR1bmdlbiBhbHMgSGFsdGVzdGVsbGVuLgorCisJRlVOS1RJT046CisKKwkgICAgICBBZGRNc2coIHRleHQsIG5leHQgKTsKKworCVBBUkFNRVRFUjoKKworCQl0ZXh0CS0gVGV4dCwgZGVyIE1lbGR1bmcsIGRpZSBpbiBkZW0gVHJhbnNwb3J0ZXIKKwkJCSAgYXVzZ2VnZWJlbiB3aXJkLgorCQluZXh0CS0gWmVpdCBpbiBTZWt1bmRlbiBiaXMgenVyIG5hZWNoc3RlbiBIYWx0ZS0KKwkJCSAgc3RlbGxlLgorCisJMy4pIEZ1bmt0aW9uc2F1ZnJ1ZmUgYWxzIEhhbHRlc3RlbGxlbi4KKworCUZVTktUSU9OOgorCisJCUFkZEZ1biggZnVuLCBuZXh0ICk7CisKKwlQQVJBTUVURVI6CisKKwkJZnVuCS0gTmFtZSBlaW5lciBGdW5rdGlvbiwgZGllIGltIFRyYW5zcG9ydGVyCisJCQkgIGF1ZmdlcnVmZW4gd2lyZC4KKwkJbmV4dAktIFplaXQgaW4gU2VrdW5kZW4gYmlzIHp1ciBuYWVjaHN0ZW4gSGFsdGUtCisJCQkgIHN0ZWxsZS4KKworNC4gU1RFVUVSVU5HCis9PT09PT09PT09PT0KKworCUZVTktUSU9OCisKKwkJU3RhcnQoKTsKKwkJb2RlcgorCQlTdGFydChudW1tZXIpOworCisJQkVTQ0hSRUlCVU5HOgorCisJCURlciBUcmFuc3BvcnRlciBzb2xsIHNvZm9ydCBhbiBkZXIgSGFsdGVzdGVsbGUgbWl0CisJCWRlciBhbmdlZ2ViZW5lbiBOdW1tZXIgKGtlaW5lIE51bW1lciBoZWlzc3QgYW4gZGVyIGVyc3RlbikKKwkJYW5sZWdlbiB1bmQgdm9uIGRhIGFiIHNlaW5lbiBLdXJzIGZhaHJlbi4KKworCUZVTktUSU9OOgorCisJCUhhbHQoKTsKKworCUJFU0NIUkVJQlVORzoKKworCQlIYWx0ZSBkaWUgRmFocnQgYW4uIERlciBUcmFuc3BvcnRlciBibGVpYnQgc3RlaGVuLCB3bworCQllciBpc3QuCisKKworNS4gQkVUUkVURU4gVU5EIFZFUkxBU1NFTgorPT09PT09PT09PT09PT09PT09PT09PT09PQorCisJRGVyIFRyYW5zcG9ydGVyIGhhdCBrZWluZSBWZXJiZW4gcHJvZ3JhbW1pZXJ0LCBtaXQgZGVuZW4gbWFuCisJZGVuIFRyYW5zcG9ydGVyIGJldHJldGVuIG9kZXIgdmVybGFzc2VuIGthbm4uCisJRGFmdWVyIG11ZXNzZW4gbWl0IEFkZENtZCgpIFZlcmJlbiBlaW5nZWZ1ZWhydCB3ZXJkZW4sIGRpZQorCWF1ZiBzZWxic3RnZXNjaHJpZWJlbmUgRnVua3Rpb25lbiB6dWdyZWlmZW4uCisKKwlGVU5LVElPTjoKKworCQlFbnRlcigpOworCisJQkVTQ0hSRUlCVU5HOgorCisJCVRlc3RlLCBvYiBmdWVyIGR1biBha3R1ZWxsZW4gU3BpZWxlciAodGhpc19wbGF5ZXIoKSkKKwkJbm9jaCBQbGF0eiBpbSBUcmFuc3BvcnRlciBpc3QgdW5kIG9iIGVyIHNpY2ggYXVzc2VyaGFsYgorCQlkZXMgVHJhbnNwb3J0ZXJzIGJlZmluZGV0LiBXZW5uIGphLCBiZXdlZ2UgaWhuIGluIGRlbgorCQlUcmFuc3BvcnRlci4gV2VubiBkZXIgVHJhbnNwb3J0ZXIgZWluZSBSZWFrdGlvbiAoQmV3ZWdlbiBkZXMKKwkJU3BpZWxlcnMgb2RlciBVZWJlcmxhdWYpLCBzbyBnaWIgZWluZSAxIHp1cnVlY2sgc29uc3QgZWluZSAwLgorCisJCVdlbm4gZGVyIFRyYW5zcG9ydGVyIG5pY2h0IGRhIChhbHNvIHVuc2ljaHRiYXIpIGlzdCwgdHVlIGZ1ZXIKKwkJZGllIFNwaWVsZXIgYXVzc2VyaGFsYiBkZXMgVHJhbnNwb3J0ZXJzIHNvLAorCQlhbHMgb2IgZGFzIFZlcmIgbmljaHQgZGVmaW5pZXJ0IHd1cmRlLgorCisJCURpZXNlciBXZXJ0IGthbm4gaW0gYWxsZ2VtZWluZW4gZGlyZWt0IGFscyByZXR1cm53ZXJ0IGJlbnV0enQKKwkJd2VyZGVuLgorCisJRlVOS1RJT046CisKKwkJTGVhdmUoKTsKKworCUJFU0NIUkVJQlVORzoKKworCQlXZW5uIGRlciBNb21lbnRhbmUgU3BpZWxlciBuaWNodCBpbSBUcmFuc3BvcnRlciBpc3QsIHNvIGdpYgorCQllaW5lIEZlaGxlcm1lbGR1bmcgYXVzLiBBbmRlcmVuZmFsbHMgdGVzdGUsIG9iIGRlcgorCQlUcmFuc3BvcnRlciBhbiBlaW5lbiBSYXVtIGFuZ2VsZWd0IGhhdC4gV2VubiBuZWluLCBnZWJlCisJCWRpZSBMRUFWRUZBSUwgTWVsZHVuZyBhdXM7IHVuZCB3ZW5uIGFsbGVzIG9rIGlzdCwgc28KKwkJYmV3ZWdlIGRlbiBTcGllbGVyIGF1cyBkZW0gVHJhbnNwb3J0ZXIuCisKKzYuIEVYVFJBUworPT09PT09PT09CisKKwlGVU5LVElPTjoKKworCQlRdWVyeUFycml2ZWQoKTsKKworCUJFU0NIUkVJQlVORzoKKworCQlHZWJlIGRlbiBDb2RlIGRlcyBSYXVtZXMgenVydWVjaywgYW4gZGVtIGRlciBUcmFuc3BvcnRlcgorCQlnZXJhZGUgYW5saWVndC4gSGF0IGRlciBSYXVtIGtlaW5lbiBDb2RlLCBnZWJlIGVpbmVuCisJCUxlZXJzdHJpbmcgenVydWVjay4gTGllZ3QgZGVyIFRyYW5zcG9ydGVyIGFuIGtlaW5lbSBSYXVtCisJCWFuLCBzbyBnZWJlIDAgenVydWVjay4KKworCQlEaWVzZSBGdW5rdGlvbiBiaWV0ZXQgc2ljaCBhbiB1bSBtaXR0ZWxzIHByb2Nlc3Nfc3RyaW5nCisJCWRpZSBBbmt1bmZ0cy0gdW5kIEFiZmFocnRzbWVsZHVuZ2VuIGFid2VjaHNsdW5nc3JlaWNoCisJCXp1IGdlc3RhbHRlbi4KKworCUZVTktUSU9OOgorCisJCVF1ZXJ5UGFzc2VuZ2VycygpLAorCisJQkVTQ0hSRUlCVU5HOgorCisJCUdlYmUgZWluZSBMaXN0ZSBtaXQgYWxsZW4gTGViZXdlc2VuLCBkaWUgc2ljaCBhdWYvaW4gZGVtCisJCVRyYW5zcG9ydGVyIGJlZmluZGVuLCB6dXJ1ZWNrLgorCisJRlVOS1RJT046CisKKwkJUmVtb3ZlUm91dGUoKTsKKworCUJFU0NIUkVJQlVORzoKKworCQlIYWx0ZSBkZW4gVHJhbnNwb3J0ZXIgYW4gdW5kIGxvZXNjaGUgZGVzc2VuIEt1cnMuCisKKzcuIEtPTU1BTkRPUyBJTiBUUkFOU1BPUlRFUk4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCURhIHNpY2ggZGVyIFRyYW5zcG9ydGVyIGluIGRlbSBSYXVtIGJlZmluZGV0LCBpbiBkZW0gZXIgYW5nZWxlZ3QKKwloYXQsIHNpbmQgYWxsZSBLb21tYW5kb3MgZGVzIFRyYW5zcG9ydGVycyBhdWNoIGRvcnQgdmVyZnVlZ2Jhci4KKwlTZWxic3Qgd2VubiBkZXIgVHJhbnNwb3J0ZXIgYWJnZWxlZ3QgaGF0LCBzdGVodCBlciBub2NoIGltbWVyCisJdW5zaWNodGJhciBkb3J0IGhlcnVtLgorCisJRGVzaGFibCBtdXNzIGluIGRlbiBLb21tYW5kb3Mgdm9yc29yZ2UgZ3J0cm9mZmVuIHdlcmRlbiwgZGFzcyBudXIKKwlkaWUgcmljaHRpZ2VuIFNwaWVsZXIgKGRpZSBkcmlubmVuIHVuZCBkaWUgZHJhdXNzZW4pIGRpZSByaWNodGlnZW4KKwlLb21tYW5kb3MgYXVzZnVlaHJlbiBrb2VubmVuLgorCisJS09NTUFORE9TIEZVRVIgU1BJRUxFUiBBVVNTRVJIQUxCOgorCisJCUVzIG11c3MgYWJnZXRlc3RldCB3ZXJkZW4sIG9iIGRlciBTcGllbGVyIG5pY2h0IGltCisJCVRyYW5zcG9ydGVyIGlzdCwgdW5kIG9iIGRlciBUcmFuc3BvcnRlciBhbmdlbGVndCBoYXQuCisKKwkJaWYoIGVudmlyb25tZW50KHRoaXNfcGxheWVyKCkpPT10aGlzX29iamVjdCgpIAorCQkJfHwgIVF1ZXJ5QXJyaXZlZCgpICkgcmV0dXJuIDA7CisKKwlLT01NQU5ET1MgRlVFUiBTUElFTEVSIElOTkVSSEFMQjoKKworCQlBYnRlc3Rlbiwgb2IgZGVyIFNwaWVsZXIgd2lya2xpY2ggaW0gVHJhbnNwb3J0IGlzdC4KKworCQlpZiggZW52aXJvbm1lbnQodGhpc19wbGF5ZXIoKSkhPXRoaXNfb2JqZWN0KCkgKQorCQkJcmV0dXJuIDA7CisKKwkJVm9yc2ljaHQgYXVjaCBiZWkgQWRkRXhpdHMgaW5uZXJoYWxiIGRlcyBUcmFuc3BvcnRlcnMsCisJCWFiZXIgZGFyYW4gYXJiaWV0ZSBpY2ggbm9jaC4uLiA6LSkKKworCURpZSBGdW5rdGlvbmVuIEVudGVyKCkgdW5kIExlYXZlKCkgaGFiZW4gZGllc2UgRnVua3Rpb25hbGl0YWV0CisJZWluZ2ViYXV0LgorCmRpZmYgLS1naXQgYS9kb2Mvc3RkL3R1ZXIgYi9kb2Mvc3RkL3R1ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg5ZmQ4NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zdGQvdHVlcgpAQCAtMCwwICsxLDQyIEBACitTVEFOREFSRE9CSkVLVCBGVUVSIFRVRVJFTjoKKworQkVOVFVaVU5HOgorCWluaGVyaXQgInN0ZC90dWVyIjsKKworCSNpbmNsdWRlIDx0dWVyLmM+CisJCitCRVNDSFJFSUJVTkc6CisJQmFzaXNrbGFzc2UgZnVlciBhbGxlIFR1ZXJlbiBpbSBTcGllbC4gU2llIGlzdCB2b24gL3N0ZC90aGluZworCWFiZ2VsZWl0ZXQuCisKKyAgICBGdW5rdGlvbmVuOgorCisJQWRkRG9vcjIoIHN0cmluIHNob3J0LAorCQkgIHN0cmluZyBsb25nLAorCQkgIG1peGVkIGlkLAorCQkgIG1peGVkIGRlc3QsCisJCSAgc3RyaW5nIGNvbSwKKwkJICBpbnQgZmxhZ3MsCisJCSAgc3RyaW5nIGtleSwKKwkJICBzdHJpbmcgZnVuYywKKwkJICBvYmplY3Qgb2JqICkKKworCQlFcnpldWd0IGVpbmUgbmV1ZSBUdWVyLCB3b2JlaSBkaWUgUGFyYW1ldGVyIGZvbGdlbmRlcyBhbmdlYmVuOgorCisJCXNob3J0IAk9IEt1cnpiZXNjaHJlaWJ1bmcgZGVyIFR1ZXIKKwkJbG9uZwk9IEF1c2Z1ZWhybGljaGUgQmVzY2hyZWlidW5nIGRlciBUdWVyCisJCWlkCT0gTmFtZVtuXSBkZXIgVHVlcgorCQlkZXN0CT0gS29tbWFuZG8genVtIER1cmNoc2NocmVpdGVuIGRlciBUdWVyLCB6LkIuICdub3JkZW4nCisKKwkJT3B0aW9uYWxlIFBhcmFtZXRlcjoKKworCQlmbGFncwk9IEZsYWdzIGF1cyB0dWVyLmgKKwkJa2V5CT0gU3RyaW5nLCBkZXIgaW0gU2NobHVlc3NlbCBkZWZpbmllcnQgc2VpbiBtdXNzLCBkYW1pdAorCQkJICBlciAncGFzc3QnLgorCQlmdW5jCT0gRnVua3Rpb24gZGllIGJlaW0gRHVyY2hzY2hyZWl0ZW4gZGVyIFR1ZXIgaW4gb2JqCisJCQkgIGF1ZmdlcnVmZW4gd2VyZGVuIHNvbGwuCisJCW9iagk9IE9iamVrdCBpbiBkZW0gZnVuYyBhdWZnZXJ1ZmVuIHdlcmRlbiBzb2xsLgorCitTSUVIRSBBVUNIOgorCXNjaGx1ZXNzZWwKKwpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC91bml0IGIvZG9jL3N0ZC91bml0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNzUwNTkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL3VuaXQKQEAgLTAsMCArMSwxMDIgQEAKK1VuaXRzCisKK0RFRklOSUVSVCBJTjogCisgICAgICAgIC9zdGQvdW5pdC5jCisKK0JFU0NIUkVJQlVORzoKKyAgICAgICAgRGFzIFVuaXQtT2JqZWt0IGthbm4gZGF6dSB2ZXJ3ZW5kZXQgd2VyZGVuLCB1bSBncm9lc3NlcmUgTWVuZ2VuCisgICAgICAgIGVpbmVzIE9iamVrdGVzIC0gd2llIE11ZW56ZW4gLSB6dSBlcnpldWdlbi4KKworICAgICAgICBEYXMgZ3J1bmRsZWdlbmRlIEtvbnplcHQgaXN0LCBkYXMgVW5pdC1PYmpla3RlIG5pY2h0IG1laHIgbnVyIAorICAgICAgICB1ZWJlciBpaHJlIE5hbWVuLCBzb25kZXJuIGF1Y2ggdWViZXIgaWhyZSBNZW5nZSBhbmdlc3Byb2NoZW4gCisgICAgICAgIHdlcmRlbiBrYW5uLgorCisgICAgICAgIFNvIHdpcmQgZGFzIGlkKCkgZGVyIE11ZW56ZW4gbmljaHQgbnVyICdtdWVuemVuJyBzb25kZXJuIGF1Y2ggCisgICAgICAgICczIG11ZW56ZW4nIHZlcnN0ZWhlbiB1bmQgYXVzd2VydGVuIGtvZW5uZW4uCisKKyAgICAgICAgbW92ZSgpIGthbm4gVGVpbGUgZGVzIGdhbnplbiBVbml0LU9iamVrdHMgYmV3ZWdlbiwgZWluIG5ldWVyCisgICAgICAgIENsb25lIHdpcmQgZXJ6ZXVndCB1bmQgZGllc2VtIGRlciB2ZXJibGVpYmVuZGUgUmVzdCBkZXIgTWVuZ2UKKyAgICAgICAgenVnZXdpZXNlbi4gTmFjaCBlcmZvbGdyZWljaGVtIG1vdmUoKSBzY2hhdXQgZGFzIFVuaXQtT2JqZWt0IGFtCisgICAgICAgIFppZWxvcnQsIG9iIGRvcnQgZXZ0bC4gYmVyZWl0cyBVbml0cyBkZXMgZ2xlaWNoZW4gVHlwcyB2b3JoYW5kZW4KKyAgICAgICAgc2luZCB1bmQgdmVyZWluaWd0IHNpY2ggZ2dmLiBtaXQgaWhuZW4sIGluIGRlbSBkYXMgYWx0ZSBVbml0LQorICAgICAgICBPYmpla3QgemVyc3RvZXJ0IHdpcmQuCisKKyAgICAgICAgVW5pdC1PYmpla3RlIHdlcmRlbiBpbiBlaW5pZ2VuIERpbmdlciBhbmRlcnMgcHJvZ3JhbW1pZXJ0LCBkYXp1CisgICAgICAgIGdlaG9lcnQgZm9sZ2VuZGVzOgorCisgICAgICAgIFBfU0hPUlQgICAgICAgICAgICAgICAgIEVTIFdJUkQgS0VJTkUgUF9TSE9SVCBHRVNFVFpUIQorCisgICAgICAgIFBfQU1PVU5UICAgICAgICAgICAgICAgIERpZSBNZW5nZSBkZXMgVW5pdC1PYmpla3RzICd2b24gSGF1cyBhdXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHNvIGJlaW0gQ2xvbmVuIChkYWhlciBtZWlzdGVucyAxKQorCisgICAgICAgIFBfTkFNRSAgICAgICAgICAgICAgICAgIEJlaSBVbml0LU9iamVrdGVuIGthbm4gaGllciBlaW4gU3RyaW5nLUFycmF5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGRlciBGb3JtICh7IFNJTkdVTEFSX05BTUUsUExVUkFMX05BTUUgfSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nZWdlYmVuIHdlcmRlbgorCisgICAgICAgIFNldENvaW5zUGVyVW5pdHMgICAgICAgIFdpZXZpZWwgaXN0IGVpbmUgYmVzdGltbXRlIE1lbmdlIHdlcnQKKyAgICAgICAgTklDSFQgUF9WQUxVRQorCisgICAgICAgIFNldEdyYW1zUGVyVW5pdHMgICAgICAgIFdpZXZpZWwgd2llZ3QgZWluZSBiZXN0aW1tdGUgTWVuZ2UKKyAgICAgICAgTklDSFQgUF9XRUlHSFQKKworICAgICAgICBBZGRTaW5ndWxhcklkCQlTdHJpbmctQXJyYXkgbWl0IGRlbiBTaW5ndWxhci1JRHMgCisgICAgICAgIEFkZFBsdXJhbElkCQlTdHJpbmctQXJyYXkgbWl0IGRlbiBQbHVyYWwtSURzCisKKyAgICAgICAgenVzYWV0emxpY2gga29lbm5lbiBuYXR1ZXJsaWNoIElEcyBwZXIgQWRkSWQgdmVyZ2ViZW4gd2VyZGVuCisKKyAgICAgICAgV2VpdGVyaGluIHZlcmZ1ZWdlbiBVbml0LU9iamVrdGUgdWViZXIgZGllIE1vZWdsaWNoa2VpdCBlaW5lcworICAgICAgICBhdXRvbWF0aXNjaGVuIFplcmZhbGxzLiBEaWVzZXIgaXN0IHN0ZXVlcmJhciB1ZWJlciBkaWUgUHJvcHMKKyAgICAgICAgUF9VTklUX0RFQ0FZX0lOVEVSVkFMLCBQX1VOSVRfREVDQVlfUVVPVEEsIFBfVU5JVF9ERUNBWV9GTEFHUywKKyAgICAgICAgUF9VTklUX0RFQ0FZX01JTi4gSGllcmJlaSB3aXJkIGRlciBaZXJmYWxsIHZvbiBkZXIgQmx1ZXByaW50IGRlcworICAgICAgICBVbml0LU9iamVrdGVzIGdlc3RldWVydCwgd2FzIGFscyBaZXJmYWxsc21hc3RlciBmdW5naWVydCwgd2VpbCBDbG9uZXMKKyAgICAgICAgbmljaHQgdW5iZWRpbmd0IGltbWVyIG5lbiBSZXNldCBoYWJlbiBtdWVzc2VuLiBEaWUgZW50c3ByZWNoZW5kZW4KKyAgICAgICAgUHJvcHMgc29sbHRlbiBkYWhlciBpbiBkZXIgQmx1ZXByaW50IGtvbmZpZ3VyaWVydCB3ZXJkZW4uIChzLiBNYW5wYWdlcyAKKyAgICAgICAgdW5kIEJlaXNwaWVsKQorCitCRUlTUElFTEU6CisgICAgICAgIFdpciBiYXN0ZWxuIHVucyBlaW4gZ2FueiBlaW5mYWNoZXMgVW5pdC1PYmpla3Q6CisKKyAgICAgICAgaW5oZXJpdCAiL3N0ZC91bml0IjsKKworICAgICAgICBwcm90ZWN0ZWQgdm9pZCBjcmVhdGUoKQorICAgICAgICB7CisgICAgICAgICAgaWYoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgeworICAgICAgICAgICAgICBzZXRfbmV4dF9yZXNldCgtMSk7CisgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICB9CisgICAgICAgICAgOjpjcmVhdGUoKTsKKyAgICAgICAgICBTZXRQcm9wKFBfTE9ORywiRGFzIGlzdCBkaWUga2xlaW5lIExlaWNoZSBlaW5lciBBbWVpc2UuXG4iKTsKKyAgICAgICAgICBTZXRQcm9wKFBfTkFNRSwoeyAiQW1laXNlbmxlaWNoZSIsIkFtZWlzZW5sZWljaGVuIiB9KSk7CisgICAgICAgICAgU2V0UHJvcChQX0FNT1VOVCwxKTsgICAgICAgLy8gZXMgaGFuZGVsdCBzaWNoIHVtIDEgZWluemlnZXMgT2JqZWt0CisgICAgICAgICAgU2V0Q29pbnNQZXJVbml0cygyMCwxMCk7ICAgLy8gMTAgT2JqZWt0ZSBzaW5kIDIwIE11ZW56ZW4gd2VydAorICAgICAgICAgIFNldEdyYW1zUGVyVW5pdHMoMSwxMCk7ICAgIC8vIDEwIE9iamVrdGUgd2llZ2VuIDEgR3JhbW0KKyAgICAgICAgICAKKyAgICAgICAgICBBZGRTaW5ndWxhcklkKCAoeyAibGVpY2hlIiwiYW1laXNlbmxlaWNoZSIgfSkgKTsKKyAgICAgICAgICBBZGRQbHVyYWxJZCggKHsgImxlaWNoZW4iLCJhbWVpc2VubGVpY2hlbiIgfSkgKTsKKyAgICAgICAgICAKKyAgICAgICAgICBBZGRJZCgiXG4tTWVpbmVBbWVpc2VubGVpY2hlIik7CisgICAgICAgIH0KKworICAgICAgICBXaXIgYmFzdGVsbiBudW4gZWluIFVuaXRvYmpla3QsIHdhcyB6ZXJmYWxsZW4gc29sbDoKKyAgICAgICAgaW5oZXJpdCAiL3N0ZC91bml0IjsKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlKCkgeworICAgICAgICAgICAgLy8gS29uZmlnIHMuby4gLi4uCisgICAgICAgICAgICBpZiAoIWNsb25lcCgpKSB7CisgICAgICAgICAgICAgIC8vIFplcmZhbGwgYWxsZSAzaAorICAgICAgICAgICAgICBTZXRQcm9wKFBfVU5JVF9ERUNBWV9JTlRFUlZBTCwgMyozNjAwKTsKKyAgICAgICAgICAgICAgLy8gZXMgemVyZmFsbGVuIGpld2VpbHMgMTAlCisgICAgICAgICAgICAgIFNldFByb3AoUF9VTklUX0RFQ0FZX1FVT1RBLCAxMDAwKTsKKyAgICAgICAgICAgICAgLy8gZXMgc29sbGVuIG1pbi4gMTAgRWluaGVpdGVuIGpld2VpbHMgdWVicmlnYmxlaWJlbgorICAgICAgICAgICAgICBTZXRQcm9wKFBfVU5JVF9ERUNBWV9NSU4sIDEwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCitTSUVIRSBBVUNIOgorICAgICAgICBQX0FNT1VOVCwgUF9OQU1FLCBQX1VOSVRfREVDQVlfSU5URVJWQUwsIFBfVU5JVF9ERUNBWV9RVU9UQSwgCisgICAgICAgIFBfVU5JVF9ERUNBWV9NSU4sIFBfVU5JVF9ERUNBWV9GTEFHUworICAgICAgICBEb0RlY2F5KCksIGRvRGVjYXlNZXNzYWdlKCksIFNldEdyYW1zUGVyVW5pdHMoKSwgU2V0Q29pbnNQZXJVbml0cygpLCAKKyAgICAgICAgQWRkU2luZ3VsYXJJZCgpLCBBZGRQbHVyYWxJZCgpLCBRdWVyeUNvaW5zUGVyVW5pdHMoKSwKKyAgICAgICAgUXVlcnlHcmFtc1BlclVuaXRzKCkKKyAgICAgICAgL3N0ZC91bml0LmMKKworMTQuMTAuMjAwNywgWmVzc3RyYQpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC91dGlsIGIvZG9jL3N0ZC91dGlsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiZjM1MjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL3V0aWwKQEAgLTAsMCArMSwzNCBAQAorREVGSU5JRVJUIElOOiAKKyAgICAgL3N0ZC8qLmMKKworQkVTQ0hSRUlCVU5HOgorICAgICBEaWVzZSBNYW5nZXBhZ2UgYmVzY2hyZWlidCBrZWluIEVpbnplbG9iamVrdCwgc29uZGVybiBlaW5lIFNhbW1sdW5nIHZvbgorICAgICBQcm9ncmFtbWVuLgorICAgICBJbSBWZXJ6ZWljaG5pcyAvc3RkL3V0aWwvIGxpZWdlbiBtZWhyZXJlIEhlbGZlcmtsYXNzZW4sIGRpZSBGdW5rdGlvbmVuCisgICAgIGJlcmVpdHN0ZWxsZW4sIGRpZSBuaWNodCBudXIgZWluZW0gT2JqZWt0IHZlcndlbmRldCB3ZXJkZW4uCisKKyAgICAgTW9tZW50YW4gc2luZCBkaWVzOgorICAgICBleGVjdXRlci5jICAgLSBzdGVsbHQgZWluZSBGdW5rdG9uIGV4ZWN1dGVfYW55dGhpbmcoKSBiZXJldC4KKyAgICAgaW5wdXQuYyAgICAgIC0gc3RlbGx0IGVpbmUgRnVudGlvbiBpbnRwdXQoKSBiZXJlaXQsIHdlbGNoZSBpbnB0dV90bygpCisgICAgICAgICAgICAgICAgICAgIGthcHNlbHQuCisgICAgIHBhZ2VyLmMgICAgICAtIFN0ZWxsdCBkaWUgRnVua3Rpb24gTW9yZSgpIHVuZCBpaHJlIEhlbGZlciBiZXJlaXQuCisgICAgIHJpbmdidWZmZXIuYyAtIFN0ZWxsdCBlaW5lbiBSaW5ncHVmZmVyIHVuZCBkaWUgbm90d2VuZGlnZW4gVmVyd2FsdHVuZ3MtCisgICAgICAgICAgICAgICAgICAgIGZ1bmt0aW9uZW4gYmVyZWl0LgorCisgICAgIFJpbmdidWZmZXIuYzoKKyAgICAgLS0tLS0tLS0tLS0tCisgICAgIERpZXMgaXN0IGVpbiBQdWZmZXIgKEFycmF5KSBlaW5lciBiZXN0aW1tdGVuIEdyb2Vzc2UuIFNvYmFsZCBlciB2b2xsIGlzdAorICAgICB3aXJkIGF1dG9tYXRpc2NoIGRpZSBqZXdlaWxzIGFlbHRlc3RlbiBEYXRlbiB1ZWJlcnNjaHJpZWJlbiwgc29iYWxkIGV0d2FzCisgICAgIG5ldWVzIGhpbmVpbmdlc2NocmllYmVuIHdpcmQuIEVpbiBSaW5ncHVmZmVyIG1pdCBlaW5lciBHcm9lc3NlIHZvbiAzMAorICAgICBzcGVpY2hlcnQgYWxzbyBkaWUgbGV0enRlbiAzMCBoaW5laW5nZXNjaHJpZWJlbmVuIE9iamVrdGUuCisgICAgICogQ3JlYXRlUmluZ0J1ZmZlcigpOiBlcnN0ZWxsdCBlaW5lbiBuZXVlbiBSaW5ncHVmZmVyLgorICAgICAqIFJlc2l6ZVJpbmdCdWZmZXIoKTogYWVuZGVydCBkaWUgR3JvZXNzZSBlaW5lcyBSaW5ncHVmZmVycy4KKyAgICAgKiBSaW5nQnVmZmVyUHV0KCk6IHNjaHJlaWJ0IGVpbiBuZXVlcyBEYXR1bSBpbiBkZW4gUHVmZmVyLgorICAgICAqIFJpbmdCdWZmZXJHZXQoKTogbGllZmVydCBkaWUgRGF0ZW4gZGVzIFJpbmdwdWZmZXJzIHp1cnVlY2suCisKK1NJRUhFIEFVQ0g6CisgICAgIENyZWF0ZVJpbmdCdWZmZXIsIFJlc2l6ZVJpbmdCdWZmZXIsIFJpbmdCdWZmZXJQdXQsIFJpbmdCdWZmZXJHZXQKKworTEVUWlRFIEFlTkRFUlVORzoKKzIzLjA1LjIwMDgsIFplc3N0cmEKKwpkaWZmIC0tZ2l0IGEvZG9jL3N0ZC92ZXJlcmJ1bmdzYmFldW1lIGIvZG9jL3N0ZC92ZXJlcmJ1bmdzYmFldW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkZjIxY2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3RkL3ZlcmVyYnVuZ3NiYWV1bWUKQEAgLTAsMCArMSwyOTMgQEAKKworICBWZXJlcmJ1bmdzYmFldW1lIGRlciBCYXNpcy1NVURsaWIKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0VpbmZhY2hlIEdlZ2Vuc3RhZW5kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RpZSBlaW5mYWNoc3RlbiBPYmpla3RlIGRlciBCYXNpcy1NdWRMaWIuIERpZSBNb2R1bGUsIGRpZSB2b24gdGhpbmcuYworZ2VlcmJ0IHdlcmRlbiwgZW50aGFsdGVuIGRpZSB3aWNodGlnc3RlbiBGdW5rdGlvbmVuIHVuZCB0cmV0ZW4gYXVjaCBpbgorZGVuIGFuZGVyZW4gU3RhbmRhcmRvYmpla3RlbiBpbW1lciB3aWVkZXIgYXVmLgorCitEYSBkaWUgQXVzZ2FiZSBkZXMgTmFtZW5zIGVpbmVzIE9iamVrdGVzIChkaWVzZXIgd2lyZCBpbiBkZW4KK2Rlc2NyaXB0aW9uLU1vZHVsZW4gZGVmaW5pZXJ0KSBpbW1lciBtaXQgZWluZXIgRGVrbGluYXRpb24gdmVyYnVuZGVuIGlzdCwKK2ZpbmRldCBtYW4gaW4gamVkZW0gT2JqZWt0LCB3ZWxjaGVzIGVpbiBkZXNjcmlwdGlvbi5jIGVyYnQsIGF1Y2gKK3RoaW5nL2xhbmd1YWdlLgorCit0aGluZworICB8LSB0aGluZy9wcm9wZXJ0aWVzICAgIHwgVmVyd2FsdHVuZ3NmdW5rdGlvbmVuIGRlcyBQcm9wZXJ0eS1TeXN0ZW1zCisgIHwtIHRoaW5nL2Rlc2NyaXB0aW9uICAgfCBBdXNzZWhlbiwgTmFtZSwgSURzIGRlcyBPYmpla3RlcworICB8LSB0aGluZy9tb3ZpbmcgICAgICAgIHwgQmV3ZWdlbiB1bmQgWmVyc3RvZXJlbiBkZXMgT2JqZWt0ZXMKKyAgfC0gdGhpbmcvbGFuZ3VhZ2UgICAgICB8IERla2xpbmF0aW9uIHZvbiBOYW1lbiwgQWRqZWt0aXZlbiBldGMuOyBQcm9ub21pbmEKKyAgfC0gdGhpbmcvY29tbWFuZHMgICAgICB8IHZvbSBPYmpla3QgZGVmaW5pZXJ0ZSBLb21tYW5kb3MKKyAgYC0gdGhpbmcvcmVzdHJpY3Rpb25zICB8IEdld2ljaHQ6IHN0YW5kYXJkbWFlc3NpZyAxS2cKKworCitSdWVzdHVuZ2VuCistLS0tLS0tLS0tCisKK0JpcyBhdWYgdGhpbmcvcmVzdHJpY3Rpb25zLmMgdmVyZnVlZ3QgYXJtb3VyLmMgdWViZXIgc2FlbXRsaWNoZSBGdW5rdGlvbmFsaXRhZXQKK2RpZSBhdWNoIHRoaW5nLmMgenVyIFZlcmZ1ZWd1bmcgc3RlbGx0LiBadXNhZXR6bGljaCBnaWJ0IGVzIG5vY2ggZWluIE1vZHVsLAord2VsY2hlcyBkaWUgUnVlc3R1bmcgZXJzdCB6dXIgUnVlc3R1bmcgbWFjaHQ6IGFybW91ci9jb21iYXQuYworCithcm1vdXIgICAgICAgICAgICAgICAgICB8IGV2dGwuIGVpbiAiKGFuZ2V6b2dlbiIpIGFuIEt1cnpiZXNjaHJlaWJ1bmcgaGFlbmdlbgorICB8LSB0aGluZy9wcm9wZXJ0aWVzICAgfCBBdWNoIFJ1ZXN0dW5nZW4gaGFiZW4gRWlnZW5zY2hhZnRlbgorICB8LSB0aGluZy9kZXNjcmlwdGlvbiAgfCBBdXNzZWhlbiwgTmFtZSwgSURzIGRlciBSdWVzdHVuZworICB8LSB0aGluZy9jb21tYW5kcyAgICAgfCBLb21tYW5kb3Mgc2luZCBhdWNoIG1vZWdsaWNoCisgIHwtIGFybW91ci9tb3ZpbmcgICAgICB8IEJlaW0gQmV3ZWdlbi9aZXJzdG9lcmVuOiBSdWVzdHVuZyBhdXN6aWVoZW4uLi4KKyAgfCAgICBgLSB0aGluZy9tb3ZpbmcgIHwgLi4udW5kIGRhbm4gZXJzdCBCZXdlZ2VuL1plcnN0b2VyZW4KKyAgfC0gYXJtb3VyL2NvbWJhdCAgICAgIHwgUnVlc3R1bmdza2xhc3NlLy10eXAsIEthbXBmZnVua3Rpb24KKyAgYC0gdGhpbmcvbGFuZ3VhZ2UgICAgIHwgdW5kIG5vY2ggd2FzIHp1bSBkZWtsaW5pZXJlbi4KKworCitXYWZmZW4KKy0tLS0tLQorCitXaWUgUnVlc3R1bmdlbiwgdW50ZXJzY2hlaWRlbiBzaWNoIFdhZmZlbiB2b24gZWluZmFjaGVuIEdlZ2Vuc3RhZW5kZW4gaW0KK3dlc2VudGxpY2hlbiBudXIgZHVyY2ggZGllIEthbXBmZnVua3Rpb25lbi4KKword2VhcG9uICAgICAgICAgICAgICAgICAgfCBldnRsLiBlaW4gIihnZXp1ZWNrdCkiIGFuIEt1cnpiZXNjaHJlaWJ1bmcgaGFlbmdlbgorICB8LSB3ZWFwb24vbW92aW5nICAgICAgfCBXYWZmZSBiZWltIEJld2VnZW4vWmVyc3RvZXJlbiBlcnN0IHdlZ3N0ZWNrZW4uLi4KKyAgfCAgICBgLSB0aGluZy9tb3ZpbmcgIHwgLi4udW5kIGRhbm4gZXJzdCBiZXdlZ2VuL3plcnN0b2VyZW4KKyAgfC0gdGhpbmcgKHMuby4pICAgICAgIHwgQW5zb25zdGVuIGFsbGUgdGhpbmctRWlnZW5zY2hhZnRlbgorICBgLSB3ZWFwb24vY29tYmF0ICAgICAgfCBXYWZmZW5rbGFzc2UvLWFydCwgU2NoYWRlbnN0eXAsIEthbXBmZnVua3Rpb24KKworCitMaWNodHF1ZWxsZW4KKy0tLS0tLS0tLS0tLQorCitMaWNodHF1ZWxsZW4gc2luZCAoaW0gU2lubmUgZGVyIE11ZExpYikgbm9ybWFsZSBHZWdlbnN0YWVuZGUsIGRpZSB6dXNhZXR6bGljaAorZGllIEVpZ2Vuc2NoYWZ0IGhhYmVuLCBkYXNzIHNpZSBsZXVjaHRlbiBrb2VubmVuICh1bmQgYXVjaCB2ZXJicmVubmVuIGtvZW5uZW4pLgorCitsaWdodHNvdXJjZSAgICAgICB8IEFsbGVzLCB3YXMgenVtIExldWNodGVuIG5vZXRpZyBpc3QKKyAgYC0gdGhpbmcgKHMuby4pIHwgYW5zb25zdGVuIGVpbiBnYW56IG5vcm1hbGVyIEdlZ2Vuc3RhbmQKKworCit1bml0LU9iamVrdGUKKy0tLS0tLS0tLS0tLQorCit1bml0LU9iamVrdGUgc2luZCBHZWdlbnN0YWVuZGUsIGJlaSBkZW5lbiBlcyBzaW5udm9sbCBpc3QsIGRhc3MgZWluIGVpbnplbG5lcworT2JqZWt0IGVpbmUgZ2V3aXNzZSBBbnphaGwgdm9uIGdsZWljaGFydGlnZW4gT2JqZWt0ZW4gcmVwcmFlc2VudGllcnQuIERhcworYmVzdGUgQmVpc3BpZWwgaGllcmZ1ZXIgaXN0IGRhcyBsaWViZSBHZWxkOiBzdGF0dCAxMDAwIGVpbnplbG5lciBNdWVuemVuIGltCitJbnZlbnRvcnkgenUgaGFiZW4sIGhhdCBtYW4gbnVyIGVpbiBlaW56aWdlcyBHZWxkb2JqZWt0LCBkYXMgZWluZXIgTWVuZ2Ugdm9uCisxMDAwIE11ZW56ZW4gZW50c3ByaWNodCAoZGllIGJlaSBLYXVmLS9WZXJrYXVmc2FrdGlvbmVuIHVtIGVpbmUgZW50c3ByZWNoZW5kZQorTWVuZ2UgZXJuaWVkcmlndCBvZGVyIGVyaG9laHQgd2lyZCkuCitIaWVyZHVyY2ggd2lyZCBhKSBkaWUgVWViZXJzaWNodGxpY2hrZWl0IGVyaG9laHQgdW5kIGIpIG5hdHVlcmxpY2ggbWFzc2lnCitTcGVpY2hlciBnZXNwYXJ0LgorCit1bml0ICAgICAgICAgICAgICAgfCBhbGxlIHVuaXQtRWlnZW5zY2hhZnRlbiAoR2V3aWNodCwgTWVuZ2UsIEJld2VnZW4sIC4uLikKKyAgYC0gdGhpbmcgKHMuby4pICB8IGFuc29uc3RlbiBzaW5kIGVzIG5vcm1hbGUgR2VnZW5zdGFlbmRlCisKKworU3BlbGxib29rcworLS0tLS0tLS0tLQorCitGdWVyIEdpbGRlbnByb2dyYW1taWVyZXIgaXN0IGRpZXMgZGFzIEdydW5kb2JqZWt0IGZ1ZXIgZGFzIFphdWJlcnZlcnplaWNobmlzCitkZXIgR2lsZGUuCitBQ0hUVU5HOiBPYndvaGwgdGhpbmcuYyBnZWVyYnQgd2lyZCwgaXN0IGRhcyBTcGVsbGJvb2sgbmljaHQgenVtIGNsb25lbiB1bmQKKyJ1bnRlciBkZW4gQXJtIGtsZW1tZW4iIGdlZGFjaHQhIFZpZWxtZWhyIHN0ZWxsdCB0aGluZy5jIGhpZXIgaW0gd2VzZW50bGljaGVuIAorbnVyIGRhcyBQcm9wZXJ0eS0gdW5kIGRhcyBTcHJhY2htb2R1bCB6dXIgVmVyZnVlZ3VuZyEKKworc3BlbGxib29rICAgICAgICAgICAgICAgIHwgQWxsZ2VtZWluZSBGdW5rdGlvbmVuIGZ1ZXIgWmF1YmVyc3BydWVjaGUKKyAgfC0gdGhpbmcgKHMuby4pICAgICAgICB8IGhpZXIgbnVyIHdnLiBQcm9wZXJ0aWVzIHVuZCBEZWtsaW5hdGlvbmVuCisgIGAtIHJlc3RyaWN0aW9uX2NoZWNrZXIgfCBmdWVyIEVpbnNjaHJhZW5rdW5nZW4gYmVpbSBaYXViZXJuCisKKworQmVoYWVsdGVyCistLS0tLS0tLS0KKworRGllIGJpc2hlciBiZXNjaHJpZWJlbmVuIE9iamVrdGUga2FubiBtYW4gendhciBtaXQgc2ljaCBoZXJ1bXRyYWdlbiAoYXVzc2VyCitTcGVsbGJvb2tzKSwgYWJlciBtYW4ga2FubiBuaWNodHMgaGluZWluc3RlY2tlbi4gSGllcnp1IHNpbmQgZWluaWdlIHdlaXRlcmUKK0Z1bmt0aW9uZW4gbm9ldGlnLCBkaWUgY29udGFpbmVyLmMgenVyIFZlcmZ1ZWd1bmcgc3RlbGx0LgorSW0gd2VzZW50bGljaGVuIHNpbmQgZGFzIGluIGNvbnRhaW5lci9yZXN0cmljdGlvbnMuYyBGdW5rdGlvbmVuIHp1bSBBdXMtCit3YWVobGVuIHZvbiBPYmpla3RlbiBpbSBCZWhhZWx0ZXIsIHp1bSBUZXN0ZW4sIG9iIGRlciBCZWhhZWx0ZXIgbm9jaCB3ZWl0ZXJlCitPYmpla3RlIGF1Zm5laG1lbiBrYW5uIChnZXdpY2h0c2FiaGFlbmdpZykgdW5kIHp1ciBFcm1pdHRsdW5nIGRlcyBHZXNhbXQtCitnZXdpY2h0cyBkZXMgQmVoYWVsdGVycy4KK0luIGNvbnRhaW5lci9kZXNjcmlwdGlvbi5jIHdpcmQgZGVyIEluaGFsdCBkZXMgQmVoYWVsdGVycyBpbiBlaW5lIEJlc2NocmVpYnVuZwordW1nZXdhbmRlbHQuCisKK2NvbnRhaW5lcgorICB8LSB0aGluZy9wcm9wZXJ0aWVzICAgICAgICB8IERBUyB6ZW50cmFsZSBNb2R1bC4uLgorICB8LSB0aGluZy9tb3ZpbmcgICAgICAgICAgICB8IEJld2VnZW4vWmVyc3RvZXJlbiBkZXMgQmVoYWVsdGVycworICB8LSB0aGluZy9jb21tYW5kcyAgICAgICAgICB8IEtvbW1hbmRvcyBzaW5kIG1vZWdsaWNoCisgIHwtIGNvbnRhaW5lci9kZXNjcmlwdGlvbiAgIHwgQmVzY2hyZWlidW5nIGRlcyBJbmhhbHRzCisgIHwgICAgYC0gdGhpbmcvZGVzY3JpcHRpb24gIHwgTGFuZy0gdW5kIEt1cnpiZXNjaHJlaWJ1bmcKKyAgfC0gdGhpbmcvbGFuZ3VhZ2UgICAgICAgICAgfCBEZWtsaW5hdGlvbnNtb2R1bAorICBgLSBjb250YWluZXIvcmVzdHJpY3Rpb25zICB8IEdlc2FtdGdld2ljaHQsIE9iamVrdGF1c3dhaGwKKyAgICAgICBgLSB0aGluZy9yZXN0cmljdGlvbnMgfCBTdGFuZGFyZGdld2ljaHQ6IDFLZworCitMZWljaGVuCistLS0tLS0tCisKK0xlaWNoZW4gc2luZCBCZWhhZWx0ZXIgbWl0IGRlciB6dXNhZXR6bGljaGVuIEVpZ2Vuc2NoYWZ0LCBkYXNzIHNpZSBtaXQgZGVyCitaZWl0IHplcmZhbGxlbi4gQXVzc2VyZGVtIGdlYmVuIHNpZSBnZ2YuIG5vY2ggZWluZSBNZWxkdW5nIHVlYmVyIGRlbgorTW9lcmRlcmthbmFsIGF1cworCitjb3Jwc2UgICAgICAgICAgICAgICAgfCBaZXJmYWxsZW4sIE1vZXJkZXJtZWxkdW5nCisgIGAtIGNvbnRhaW5lciAocy5vLikgfCBzb25zdCBub3JtYWxlciBCZWhhZWx0ZXIKKworCitSYWV1bWUgdW5kIGlocmUgQWJrb2VtbWxpbmdlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JhZXVtZSBzaW5kIHByaW56aXBpZWxsIEJlaGFlbHRlciBtaXQgTGFuZy0gdW5kIEt1cnpiZXNjaHJlaWJ1bmcgdm9uIElOTkVOCit1bmQgd2VpdGVyZW4gdW50ZXJzdWNoYmFyZW4gRGV0YWlscyAoYXVjaCBsZXNiYXJlIERldGFpbHMpIHNvd2llCitBdXNnYWVuZ2VuIHVuZCBkZXIgTW9lZ2xpY2hrZWl0IHZvcmRlZmluaWVydGUgT2JqZWt0ZSBpbSBSYXVtIHp1IHBsYXppZXJlbi4KKworcm9vbQorICB8LSB0aGluZy9wcm9wZXJ0aWVzICAgICB8IEVpZ2Vuc2NoYWZ0ZW4gZGVzIFJhdW1lcworICB8LSB0aGluZy9sYW5ndWFnZSAgICAgICB8IGRhcyBvYmxpZ2F0b3Jpc2NoZSBTcHJhY2htb2R1bAorICB8LSByb29tL21vdmluZyAgICAgICAgICB8IG51ciBaZXJzdG9lcmVuOyBLRUlOKCEpIEJld2VnZW4KKyAgfC0gcm9vbS9yZXN0cmljdGlvbnMgICAgfCBSYWV1bWUgd2VyZGVuIG5pZSB2b2xsCisgIHwgICAgYC0gY29udGFpbmVyL3Jlc3RyaWN0aW9ucyAgfCBzb25zdCBkaWUgZ2xlaWNoZSBGdW5rdGlvbmFsaXRhZXQgd2llCisgIHwJICAgIGAtIHRoaW5nL3Jlc3RyaWN0aW9ucyB8IGJlaW0gbm9ybWFsZW4gQmVoYWVsdGVyCisgIHwtIHJvb20vZGVzY3JpcHRpb24gICAgIHwgUmF1bWJlc2NocmVpYnVuZywgRGV0YWlscywgZXRjLgorICB8ICAgIGAtIGNvbnRhaW5lci9kZXNjcmlwdGlvbiAgIHwgQmVzY2hyZWlidW5nIGRlcyBJbmhhbHRzCisgIHwJICAgIGAtIHRoaW5nL2Rlc2NyaXB0aW9uICB8IEJlc2NocmVpYnVuZyB2b24gYXVzc2VuIChzZWx0ZW4gc2ljaHRiYXIpCisgIHwtIHJvb20vZXhpdHMgICAgICAgICAgIHwgVmVyd2FsdHVuZyBkZXIgQXVzZ2FlbmdlCisgIHwtIHJvb20vY29tbWFuZHMgICAgICAgIHwgbm90aWZ5X2ZhaWwoKXMgZnVlciAibGllcyIsICJzdWNoZSIsICJzdWNoIgorICB8ICAgIGAtIHRoaW5nL2NvbW1hbmRzICB8IHNvbnN0IG5vcm1hbGUgS29tbWFuZG9iZWhhbmRsdW5nCisgIHwtIHJvb20vaXRlbXMgICAgICAgICAgIHwgVmVyd2FsdHVuZyB2b24gT2JqZWt0ZW4sIGRpZSBpbSBSYXVtIHNlaW4gc29sbGVuCisgIGAtIHJvb20vZG9vcnMgICAgICAgICAgIHwgVHVlcmVuIChiZXNvbmRlcmUgQXVzZ2FlbmdlKQorCisKK0RpZSBLbmVpcGUgZXJ3ZWl0ZXJ0IGRlbiBTdGFuZGFyZHJhdW0gdW0gRnVua3Rpb25lbiB6dXIgRGVmaW5pdGlvbiBkZXIKK1NwZWlzZW4gdW5kIEdldHJhZW5rZSBzb3dpZSB1bSBCZWZlaGxlIHp1bSBCZXN0ZWxsZW4gdW5kIEF1c2dlYmVuLgorCitwdWIKKyAgYC0gcm9vbSAocy5vLikKKworCitBdWNoIGRlciBMYWRlbiBiYXV0IGRpcmVrdCBhdWYgZGVtIFN0YW5kYXJkcmF1bSBhdWYuIEhpZXIgd2VyZGVuIG5vY2ggZGllCit1ZWJsaWNoZW4gRWluLSB1bmQgVmVya2F1ZnNiZWZlaGxlIHp1ciBWZXJmdWVndW5nIGdlc3RlbGx0LgorSmVkZXIgTGFkZW4gYmVub2V0aWd0IHp1c2FldHpsaWNoIGVpbmVuIFNwZWljaGVyLCBpbiBkZW0gdmVya2F1ZnRlIE9iamVrdGUKK2dlbGFnZXJ0IHdlcmRlbi4gV2VubiBkZXIgTGFkZW4gc2Nob24gYmVpbSBlcnN0ZW4gQmV0cmV0ZW4gdWViZXIgZWluCitnZXdpc3NlcyBXYXJlbnNvcnRpbWVudCB2ZXJmdWVnZW4gc29sbCwga2FubiBtYW4gZGllIG1pdCBBZGRJdGVtKCktQXVmcnVmZW4KK2ltIFNwZWljaGVyIGJld2Vya3N0ZWxsaWdlbi4KKworbGFkZW4KKyAgYC0gcm9vbSAocy5vLikKKworc3RvcmUKKyAgfC0gdGhpbmcvcHJvcGVydGllcyAgfCBub2V0aWcgZnVlciByb29tL2l0ZW1zLmMKKyAgYC0gcm9vbS9pdGVtcyAgICAgICAgfCB2b3JkZWZpbmllcnRlIE9iamVrdGUgaW0gU3BlaWNoZXIKKworCitEaWUgUG9zdCBpc3Qgdm9uIGRlciBQcm9ncmFtbWllcnVuZyBoZXIgZ2VuYXUgc28genUgYmVoYW5kZWxuIHdpZSBlaW4KK25vcm1hbGVyIFJhdW0uIERpZSBQb3N0a2FiaW5lbiB3ZXJkZW4gYXV0b21hdGlzY2ggenVyIFZlcmZ1ZWd1bmcgZ2VzdGVsbHQ7CittYW4gYnJhdWNodCBzaWNoIGluIGRlciBIaW5zaWNodCB1bSBuaWNodHMgenUga3VlbW1lcm4uCisKK3Bvc3QKKyAgYC0gKC4uLikgcm9vbQorCisKK1NjaGlmZmUgdW5kIGFlaG5saWNoZSBUcmFuc3BvcnRlciB3ZXJkZW4gZHVyY2ggImJld2VnbGljaGUiIFJhZXVtZSByZWFsaXNpZXJ0LgorU28gaGF0IG1hbiBhbGxlIEJlc2NocmVpYnVuZ3Ntb2VnbGljaGtlaXRlbiBlaW5lcyBSYXVtZXMgenVyIFZlcmZ1ZWd1bmcgdW5kCitrYW5uICh3aWUgYmVpIGRlciBKb2xsZSBnZXNjaGVoZW4pIEF1c2dhZW5nZSBpbiB3ZWl0ZXJlIFJhdW1lIGRlcyBUcmFuc3BvcnRlcnMKK2xlZ2VuIChkaWVzZSBzaW5kIG5vcm1hbGUgUmFldW1lLCBLRUlORSBUcmFuc3BvcnRlciEpLgorRGVzd2VpdGVyZW4gc2luZCBUcmFuc3BvcnRlciBkaWUgZWluemlnZW4gKFN0YW5kYXJkLSlSYXVtZSwgYmVpIGRlbmVuIG1hbgorYXVjaCBkaWUgYWV1c3NlcmUgTGFuZy0gdW5kIEt1cnpiZXNjaHJlaWJ1bmcgenUgc2VoZW4gYmVrb21tdCwgd2VpbCBtYW4KK25pY2h0IG51ciBpbiBlaW5lbSBUcmFuc3BvcnRlciBzZWluIGthbm4sIHNvbmRlcm4gYXVjaCBkYW5lYmVuIHN0ZWhlbiBrYW5uLgorCit0cmFuc3BvcnQgICAgICAgICB8IEZ1bmt0aW9uZW4genVyIEZlc3RsZWd1bmcgZGVyIFJvdXRlLCBBbi0gdW5kIEFibGVnZW4KKyAgfC0gcm9vbSAocy5vLikgIHwgZGllIG5vcm1hbGVuIFJhdW1mdW5rdGlvbmVuCisgIGAtIHRoaW5nL21vdmluZyB8IHVuZCBoaWVyIHN0ZWNrdCBkaWUgQmV3ZWdsaWNoa2VpdAorCisKK0dpbGRlbgorLS0tLS0tCisKK0dpbGRlbiBnaWJ0IGVzIGluIHp3ZWkgQXVzZnVlaHJ1bmdlbjogZWlubWFsIGFscyBlaW5mYWNoZXMgR2lsZGVub2JqZWt0LCBkYW5uCithYmVyIGF1Y2ggYWxzIEdpbGRlbnJhdW0gKHdpZSB6Qi4gZGllIEFiZW50ZXVyZXJnaWxkZSkuCitXYWVocmVuZCBkYXMgR2lsZGVub2JqZWt0IChnaWxkZW5fb2IpIEZ1bmt0aW9uZW4genVtIExlcm5lbiB2b24gRmFlaGlna2VpdGVuCit1bmQgWmF1YmVyc3BydWVjaGVuLCBkZW0gR2lsZGVuZWluLSB1bmQgLWF1c3RyaXR0IHNvd2llIHp1bSBnaWxkZW5pbnRlcm5lbgorQXVmc3RpZWcgenVyIFZlcmZ1ZWd1bmcgc3RlbGx0ICh3YXMgekIuIGF1Y2ggdm9uIGVpbmVtIE5QQyBhdXNnZXVlYnQgd2VyZGVuCitrb2VubnRlKSwgdmVyZnVlZ3QgZGVyIEdpbGRlbnJhdW0genVzYWV0emxpY2ggbm9jaCB1ZWJlciBGdW5rdGlvbmVuIHp1bQorbm9ybWFsZW4gU3R1ZmVuYXVmc3RpZWcgYXVmZ3J1bmQgdm9uIEFiZW50ZXVlci0gdW5kIEVyZmFocnVuZ3NwdW5rdGVuLCBkaWUKK1F1ZXN0bGlzdGUgdW5kIGRpZSBLb3N0ZW5hYmZyYWdlLgorCitnaWxkZW5fb2IgICAgICAgICAgICAgICAgfCBFaW4tL0F1c3RyaXR0LCBMZXJuZW4sIEdpbGRlbmF1ZnN0aWVnCisgIGAtIHJlc3RyaWN0aW9uX2NoZWNrZXIgfCBCZXNjaHJhZW5rdW5nZW4gYmVpIG9iaWdlbiBBa3Rpb25lbgorCitnaWxkZW5fcm9vbQorICB8LSBnaWxkZSAgICAgICAgICAgICAgIHwgU3R1ZmVuYXVmc3RpZWcsIFF1ZXN0bGlzdGUsIEtvc3RlbgorICB8ICAgIGAtIHJvb20gKHMuby4pICAgIHwgbm9ybWFsZSBSYXVtZnVua3Rpb25lbgorICBgLSBnaWxkZW5fb2IgKHMuby4pICAgIHwgR2lsZGVuYXVmc3RpZWcgZXRjLgorCitOUENzCistLS0tCisKK0RhcyBPcGZlci4gWnVtaW5kZXN0IG1laXN0ZW5zLi4uCisKK25wYworICB8LSB0aGluZy9wcm9wZXJ0aWVzICAgICAgICAgICAgfCBFaWdlbnNjaGFmdGVuIGRlcyBOUEMKKyAgfC0gbGl2aW5nL2Rlc2NyaXB0aW9uICAgICAgICAgIHwgQXVzZ2FiZSBkZXMgR2VzdW5kaGVpdHN6dXN0YW5kZXMuLi4KKyAgfCAgICBgLSBjb250YWluZXIvZGVzY3JpcHRpb24gIHwgLi4uenVzYWV0emxpY2ggenUgc2VpbmVtIEluaGFsdC4uLgorICB8CSAgICBgLSB0aGluZy9kZXNjcmlwdGlvbiB8IC4uLnVuZCBzZWluZXIgQmVzY2hyZWlidW5nCisgIHwtIGxpdmluZy9saWZlICAgICAgICAgICAgICAgICB8IERpZSBMZWJlbnNmdW5rdGlvbmVuLCBFc3NlbiwgVHJpbmtlbiwgR2lmdAorICB8LSBsaXZpbmcvYXR0cmlidXRlcyAgICAgICAgICAgfCBEaWUgVmVyd2FsdHVuZyBkZXIgU3RhdHMKKyAgfC0gbGl2aW5nL21vdmluZyAgICAgICAgICAgICAgIHwgQmV3ZWdlbiB2b24gTGViZXdlc2VuCisgIHwtIGxpdmluZy9za2lsbHMgICAgICAgICAgICAgICB8IEZ1bmt0aW9uZW4gZnVlciBGYWVoaWdrZWl0ZW4gdW5kIFNwcnVlY2hlCisgIHwgICAgYC0gbGl2aW5nL3N0ZF9za2lsbHMgICAgICB8IHVuZCBlaW5pZ2UgU3RhbmRhcmRmYWVoaWdrZWl0ZW4KKyAgfC0gbnBjL2NvbWJhdCAgICAgICAgICAgICAgICAgIHwgTlBDLXNwZXppZmlzY2hlIEthbXBmZnVua3Rpb25lbgorICB8ICAgIGAtIGxpdmluZy9jb21iYXQgICAgICAgICAgfCBkZXIgS2FtcGYgYW4gc2ljaAorICB8LSBucGMvY2hhdCAgICAgICAgICAgICAgICAgICAgfCBTcHJ1ZWNoZSBhIGxhIEFuZHkKKyAgfC0gbnBjL2NvbW0gICAgICAgICAgICAgICAgICAgIHwgQmFzaXNrb21tdW5pa2F0aW9uOiAic2FnIiwgImVjaG8iLCAiZW1vdGUiCisgIHwtIGNvbnRhaW5lci9yZXN0cmljdGlvbnMgICAgICB8IHdpZSBiZWkgQmVoYWVsdGVybgorICB8ICAgIGAtIHRoaW5nL3Jlc3RyaWN0aW9ucworICB8LSB0aGluZy9sYW5ndWFnZSAgICAgICAgICAgICAgfCBvYmxpZ2F0b3Jpc2NoLi4uCisgIHwtIG5wYy9pbmZvICAgICAgICAgICAgICAgICAgICB8IEFudHdvcnRlbiBhdWYgRnJhZ2VuCisgIHwtIG5wYy9wdXRfYW5kX2dldCAgICAgICAgICAgICB8IFJlYWt0aW9uIGF1ZiBlcmhhbHRlbmUgR2VnZW5zdGFlbmRlCisgIHwgICAgYC0gbGl2aW5nL3B1dF9hbmRfZ2V0ICAgICB8IEdlYmVuIHVuZCBOZWhtZW4gdm9uIE9iamVrdGVuCisgIGAtIG5wYy9ndWFyZCAgICAgICAgICAgICAgICAgICB8IGZ1ZXIgV2FjaC1OUENzCisKK0RlciBpbnRlbGxpZ2VudGUgTlBDIGJlZmluZGV0IHNpY2ggbm9jaCBpbiBkZXIgRW50d2lja2x1bmcuCisKK2lucGMKKyAgfC0gbnBjIChzLm8uKSAgfCBFcnN0IG1hbCBlaW4gZ2FueiBub3JtYWxlciBOUEMuLi4KKyAgfC0gaW5wYy9ub2JhbmsgfCAuLi5kZXIgZ2VnZW4gQmFua3p3ZWl0aXMgdm9yZ2VoZW4ga2Fubi4uLgorICB8ICAgIGAtIHBsYXllci9tb25leWhhbmRsZXIgfCAuLi51bmQgc2VsYnN0IEdlbGQgbWl0c2NobGVwcHQ7IC4uLgorICB8LSBzZWxlY3QgICAgICB8IC4uLmRpZSBiZXN0ZSBBdXNydWVzdHVuZyBlcmtlbm50IHVuZCBhdWNoIGJlbnV0enQuLi4KKyAgYC0gYm9vemluZyAgICAgfCAuLi51bmQgaW4gZGVyIEtuZWlwZSBkaWUgYmVzdGUgSGVpbG1vZWdsaWNoa2VpdCBmaW5kZXQhCisKKworU3BpZWxlci0gdW5kIE1hZ2llcnNoZWxsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc2hlbGxzL21hZ2llciAgICAgICAgICAgICAgICAgIHwgSGllciBhdWNoIG5vY2ggU3BpZWxlcnNoZWxsczoKKyAgfC0gcGxheWVyL2Jhc2UgICAgICAgICAgICAgICB8IEVpbmxvZ2dlbiwgR3J1bmRmdW5rdGlvbmVuCisgIHwgICAgfC0gcGxheWVyL3Jlc3RyaWN0aW9ucyAgfCBNYXhpbWFsZSBadWxhZHVuZyAoU3RhZXJrZSksIEluc2VydEhvb2tzCisgIHwgICAgfCAgICBgLSBjb250YWluZXIvcmVzdHJpY3Rpb25zICAgfCBNYXhpbWFsZ2V3aWNodCwgWnVsYWR1bmdzdGVzdAorICB8ICAgIHwJIGAtIHRoaW5nL3Jlc3RyaWN0aW9ucyAgfCBEZWZhdWx0Z2V3aWNodAorICB8ICAgIHwtIGxpdmluZy9hdHRyaWJ1dGVzICAgIHwgU3RhdHMKKyAgfCAgICB8LSBsaXZpbmcvY29tYmF0ICAgICAgICB8IEthbXBmZnVua3Rpb25lbgorICB8ICAgIHwtIGxpdmluZy9wdXRfYW5kX2dldCAgIHwgTmVobWVuIHVuZCBHZWJlbiB2b24gT2JqZWt0ZW4KKyAgfCAgICB8LSB0aGluZy9wcm9wZXJ0aWVzICAgICB8IERBUyB6ZW50cmFsZSBNb2R1bC4uLgorICB8ICAgIHwtIHRoaW5nL2xhbmd1YWdlICAgICAgIHwgRGVrbGluYXRpb25lbgorICB8ICAgIHwtIHBsYXllci9kZXNjcmlwdGlvbiAgIHwgV2FmZmUvUnVlc3R1bmdlbiBhdXNnZWJlbgorICB8ICAgIHwgICAgYC0gbGl2aW5nL2Rlc2NyaXB0aW9uICAgICAgICAgICB8IEdlc3VuZGhlaXRzenVzdGFuZCBhbnplaWdlbgorICB8ICAgIHwJIGAtIGNvbnRhaW5lci9kZXNjcmlwdGlvbiAgIHwgRXJtaXR0bHVuZyBkZXMgSW5oYWx0cworICB8ICAgIHwJICAgICAgYC0gdGhpbmcvZGVzY3JpcHRpb24gIHwgS3Vyei0gdW5kIExhbmdiZXNjaHJlaWJ1bmc7IElEcworICB8ICAgIHwtIHBsYXllci9tb3ZpbmcgICAgICAgIHwgQmV3ZWdlbi9aZXJzdG9lcmVuOiBadXNhdHpjaGVja3MKKyAgfCAgICB8ICAgIGAtIGxpdmluZy9tb3ZpbmcgICB8IEJld2VnZW4vWmVyc3RvZXJlbiB2b24gTGViZXdlc2VuCisgIHwgICAgfC0gcGxheWVyL2xpZmUgICAgICAgICAgfCBadXNhdHpjaGVja3MgYmVpIExlYmVuc2Z1bmt0aW9uZW4KKyAgfCAgICB8ICAgIGAtIGxpdmluZy9saWZlICAgICB8IGFsbGdlbWVpbmUgTGViZW5zZnVua3Rpb25lbgorICB8ICAgIHwtIHBsYXllci9jb21tICAgICAgICAgIHwgYWxsZ2VtZWluZSBLb21tdW5pa2F0aW9uCisgIHwgICAgfCAgICBgLSBwbGF5ZXIvY2hhbm5lbCAgfCBLb21tdW5pa2F0aW9uIHVlYmVyIGRpZSBLYW5hZWxlCisgIHwgICAgfC0gcGxheWVyL21vbmV5aGFuZGxlciAgfCBHZWxkdmVyd2FsdHVuZyAoYXVjaCBmdWVyIE5QQ3MgZ2VlaWduZXQpCisgIHwgICAgfC0gcGxheWVyL2NvbW1hbmQgICAgICAgfCBBbGlhc2UsIEhpc3RvcnksIFBhcnNlcgorICB8ICAgIHwtIGxpdmluZy9za2lsbHMgICAgICAgIHwgYWxsZy4gRmFlaGlna2VpdHNmdW5rdGlvbmVuCisgIHwgICAgfCAgICBgLSBsaXZpbmcvc3RkX3NraWxscyB8IFN0YW5kYXJkZmFlaGlna2VpdGVuCisgIHwgICAgfC0gcGxheWVyL3F1ZXN0cyAgICAgICAgfCBWZXJ3YWx0dW5nIGdlbG9lc3RlciBBYmVudGV1ZXIKKyAgfCAgICB8LSBwbGF5ZXIvcG90aW9uICAgICAgICB8IFZlcndhbHR1bmcgZ2VmdW5kZW5lciBaYXViZXJ0cmFlbmtlCisgIHwgICAgfC0gcGxheWVyL3NvdWwgICAgICAgICAgfCBTZWVsZW5rb21tYW5kb3MgKGhpbGZlIHZlcmJlbiA7KQorICB8ICAgIHwtIHBsYXllci92aWV3Y21kICAgICAgIHwgVW50ZXJzdWNoZW4gZXRjLgorICB8ICAgIHwtIG1vcmUgICAgICAgICAgICAgICAgIHwgTW9yZSgpIGZ1ZXIgbGFuZ2UgVGV4dGUKKyAgfCAgICBgLSB1c2VyX2ZpbHRlciAgICAgICAgICB8IEhpbGZzbW9kdWwgZnVlciAia3dlciBpbiBtdWVuc3RlciIgZXRjLgorICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWIgaGllcjogTWFnaWVyc2hlbGwKKyAgfC0gc2hlbGxzL2ZpbGVzeXMvZmlsZXN5cyAgICAgICAgIHwgYWxsZ2VtZWluZXMgTW9kdWwgenVyIERhdGVpYmVoYW5kbHVuZworICB8ICAgIHwtIHNoZWxscy9maWxlc3lzL21hbnVhbCAgICAgfCBkZXIgImhpbGZlIi1CZWZlaGwgZGVyIE1hZ2llcgorICB8ICAgIHwtIHNoZWxscy9maWxlc3lzL3ByaW1pdGl2ZXMgfCBsb3ctbGV2ZWwtUm91dGluZW4KKyAgfCAgICB8LSBzaGVsbHMvZmlsZXN5cy9hc3luY2hyb24gIHwgenVyIFZlcm1laWR1bmcgdm9uIExhZ3MKKyAgfCAgICBgLSBzaGVsbHMvZmlsZXN5cy9tYWtlICAgICAgIHwga29tZm9ydGFibGVzIHVwZGF0ZW4gdm9uIE9iamVrdGVuCisgIGAtIHBsYXllci9vYmplY3RzICAgICAgICAgICAgICAgICB8IE9iamVrdGUgY2xvbmVuLCB1cGRhdGVuLCB6ZXJzdG9lcmVuCmRpZmYgLS1naXQgYS9kb2Mvc3RkL3ZpcnR1YWxfY29tcGlsZXIgYi9kb2Mvc3RkL3ZpcnR1YWxfY29tcGlsZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4ZWMzZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zdGQvdmlydHVhbF9jb21waWxlcgpAQCAtMCwwICsxLDgyIEBACitXYXMgc2luZCAndmlydHVlbGxlIE9iamVrdGUnPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1ZpcnR1ZWxsZSBPYmpla3RlIHNpbmQgT2JqZWt0ZSBmdWVyIGRpZSBlcyBrZWluZSBleHBsaXppdGUgUXVlbGxkYXRlaSBnaWJ0LgorQW5zb25zdGVuIHNpbmQgZGllIE9iamVrdGUgKGZhc3QpIGdlbmF1c28gd2llIGFsbGUgYW5kZXJlbiBhdWNoLgorCitXYXMgbWFjaHQgZWluIFZpcnR1YWwgQ29tcGlsZXI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitXZW5uIGRlciBEcml2ZXIgZWluIE9iamVrdCAiL3BmYWQvb2JqZWt0IiBsYWRlbiBzb2xsLCBndWNrdCBlciBlcnN0bWFsIG5hY2gsCitvYiBlcyBzbyBlaW4gRmlsZSAoL3BmYWQvb2JqZWt0LmMpIGF1ZiBkZXIgUGxhdHRlIGdpYnQuIFdlbm4gamEsIGxhZWR0IGVyIGVzCitnYW56IG5vcm1hbC4gV2VubiBuaWNodCwgcGFzc2llcnQgZm9sZ2VuZGVzOgorCisxLiBEZXIgRHJpdmVyIGZyYWd0IGRlbiBNYXN0ZXIgZGVyIE11ZGxpYiBuYWNoIGRlbSBPYmpla3QuCisyLiBEZXIgTWFzdGVyIGd1Y2t0IGltIFZlcnplaWNobmlzICIvcGZhZC8iIG5hY2gsIG9iIGVzIGVpbiB2aXJ0dWFsX2NvbXBpbGVyLmMKKyAgIGRvcnQgZ2lidC4gV2VubiBqYSwgd2lyZCBkaWVzZXMgdmlydHVhbF9jb21waWxlci5jIGdlZnJhZ3QsIG9iIGVzIHNpY2ggCisgICBkYWZ1ZXIgenVzdGFlbmRpZyBmdWVobHQsIGVpbiBPYmpla3QgbWl0IGRlbSBOYW1lbiAiL3BmYWQvb2JqZWt0IiB6dSAKKyAgIGVyemV1Z2VuLgorMy4gV2VubiBzaWNoIGRlciBWQyBmdWVyIHp1c3RhZW5kaWcgZnVlaGx0LCBjbG9udCBlciBlaW4gT2JqZWt0ICh6LkIuIHNlaW4KKyAgIFN0YW5kYXJkb2JqZWt0LCAic3Rkb2IuYyIpLCBrb25maWd1cmllcnQgZXMgZXZ0bC4gbm9jaCBlaW4gYmlzc2NoZW4gdW5kIAorICAgZ2lidCBlcyBhbiBkZW4gTWFzdGVyIHp1cnVlY2suIERhcyBlcnpldWd0ZSBPYmpla3QgaGVpc3N0IGFuIGRpZXNlciBTdGVsbGUKKyAgIHouQi4gIi9wZmFkL3N0ZG9iIzQyIiAod2VpbCBlcyBlaW4gQ2xvbiB2b24gIi9wZmFkL3N0ZG9iIiBpc3QpLgorNC4gRGVyIE1hc3RlciBnaWJ0IGRpZXNlcyBlcnpldWd0ZSBPYmpla3QgYW4gZGVuIERyaXZlciB6dXJ1ZWNrLgorNS4gRGVyIERyaXZlciBiZW5lbm50IGRhcyB2b20gTWFzdGVyIGVyaGFsdGVuZSBPYmpla3QgIi9wZmFkL3N0ZG9iIzQyIiB1bSBpbgorICAgZGFzIGdld3VlbnNjaHRlIE9iamVrdCAiL3BmYWQvb2JqZWt0Ii4gVm9uIGRpZXNlbSBNb21lbnQgYW4gaXN0IGVzLCBhbHMgb2IKKyAgIGVzIGVpbiBGaWxlICIvcGZhZC9vYmpla3QuYyIgZ2FlYmUsIHdhcyBkaWVzZXMgT2JqZWt0IGRlZmluaWVydC4KKworRGFzIGlzdCBncnVuZHNhZXR6bGljaCBkYXMsIHdhcyBlaW4gVkMgbWFjaHQuCisKK1dhcyBtYWNodCBkZXIgVkMgaW4gL3N0ZC8/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PQorRXJzdG1hbCBkYXMgb2JlbiBiZXNjaHJpZWJlbmUuIEZ1ZXIgd2VsY2hlbiBQZmFkIHNpY2ggZGllc2VyIFZDIHp1c3RhZW5kaWcKK2Z1ZWhsdCB1bmQgd2VsY2hlcyBPYmpla3QgZXIgamV3ZWlscyBjbG9uZW4gc29sbCwgd2lyZCBwZXIgUF9DT01QSUxFUl9QQVRIIHVuZAorUF9TVERfT0JKRUNUIGtvbmZpZ3VyaWVydC4KK1p1c2FldHpsaWNoIGZ1ZWhydCBlciBiZXNhZ3RlIExpc3RlIHNlaW5lciBlcnpldWd0ZW4gT2JqZWt0ZSwgZGFtaXQgYmVpIGVpbmVtCisnbHMnIGF1ZiBkYXMgVmVyemVpY2huaXMgZGllc2UgT2JqZWt0ZSBtaXQgYW5nZXplaWd0IHdlcmRlbi4KK1dlaXRlcmhpbiB6ZXJzdG9lcnQgZXIgYWxsZSBkaWVzZSBPYmpla3RlIGluIHNlaW5lbSBlaWdlbmVuIFJlbW92ZS4KK0F1c3NlcmRlbSBoYXQgZXIgMiBGdW5rdGlvbmVuLCBtaXQgZGVuZW4gZXIgZW50c2NoZWlkZW4ga2Fubiwgb2IgZXIgZnVlciBlaW4KK2Jlc3RpbW10ZXMgYW5nZWZyYWd0ZXMgT2JqZWt0IHp1c3RhZW5kaWcgaXN0LCBWYWxpZGF0ZSgpIHVuZAorUXVlcnlWYWxpZE9iamVjdCgpIHVuZCBlaW5lIEZ1bmt0aW9uIEN1c3RvbWl6ZU9iamVjdCgpLCBkaWUgZWluZW0gZnJpc2NoCitnZWNsb250ZW4gT2JqZWt0IHNhZ2VuIGthbm4sIHdlbGNoZW4gTmFtZW4gZXMgc3BhZXRlciBlaW5tYWwgaGFiZW4gc29sbCAocy4KK2pld2VpbGlnZSBNYW5hcGFnZXMpLgorCitXaWUgYmF1dCBtYW4gc2ljaCBzZWluZW4gZWlnZW5lbiBWQz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU2FnZW4gd2lyLCBpaHIgd29sbHQgZWluZW4gVkMgYmF1ZW4sIGRlciBqZWRlbSBTcGllbGVyIHNlaW5lbiBlaWdlbmVuIFJhdW0KK2dpYnQsIGRhbWl0IGplZGVyIFNwaWVsZXIgaW4gZGllc2VtIFJhdW0gZWluIE1vbnN0ZXIgYWxsZWluIGVybGVnZW4gbXVzcywKK29obmUgZGFzcyBhbmRlcmUgU3BpZWxlciBtaXQgZHJpbiBzaW5kLgorRGFubiBicmF1Y2h0IGlociB6dWVyc3QgbWFsIGVpbmVuIFJhdW0sIGRlciBkaWUgVm9ybGFnZSBmdWVyIGFsbGUgVkMtUmFldW1lCitzZWluIHNvbGwsIHouQi4gc3RkX2FyZW5hLmMuIERpZXNlbiBsZWd0IGlociBpbiBkYXMgVmVyemVpY2huaXMsIHdvIGRlciBWQyBoaW4KK3NvbGwsIHouQi4gL2QvcmVnaW9uL21hZ2llci92Yy8uCitJbiBkaWVzZW0gVmVyemVpY2huaXMgbGVndCBpaHIgbnVuIGVpbiBGaWxlIHZpcnR1YWxfY29tcGlsZXIuYyBhbiwgd2VsY2hlcworL3N0ZC92aXJ0dWFsL3ZfY29tcGlsZXIgZXJidC4KK0ltIGNyZWF0ZSgpIHNldHp0IGlociBudW4gUF9DT01QSUxFUl9QQVRIIGF1ZiAiL2QvcmVnaW9uL21hZ2llci92Yy8iIHVuZAorUF9TVERfT0JKRUNUIGF1ZiAiL2QvcmVnaW9uL21hZ2llci92Yy9zdGRfYXJlbmEiLgorU29sbCBldWVyIFZDIGtlaW5lIFBhcmEtUmFldW1lIGVyemV1Z2VuLCBzZXR6dCBpaHIgUF9QQVJBIGF1ZiAoe30pLgorU29kYW5uIG11ZXNzdCBpaHIgZWluIFZhbGlkYXRlKCkgZm9ybXVsaWVyZW4gKHMuIE1hbnBhZ2UpLCB3ZWxjaGVzIHBydWVmdCwgb2IKK2VpbiBzcGFldGVyIGdld3VlbnNjaHRlcyBPYmpla3QgZGVuIHJpY2h0aWdlbiBOYW1lbiAob2huZSBQZmFkKSBoYXQsIHouQi4KKydhcmVuYXxzcGllbGVybmFtZScgdW5kIGluIGRpZXNlbSBGYWxsIGdlbmF1IGRpZXNlbiBOYW1lbiB6dXJ1ZWNrbGllZmVydCB1bmQKK2luIGFuZGVyZW4gRmFlbGxlbiAwLgorRGFzIHdhcnMuIFp1bWluZGVzdCBpbiBkaWVzZW0gZWluZmFjaGVuIEZhbGwgc2VpZCBpaHIgaW0gd2VzZW50bGljaGVuIGZlcnRpZy4KK0lociBrb2VubnQgZWluZW4gU3BpZWxlciBudW4gbWl0CisgIHBsLT5tb3ZlKCIvZC9yZWdpb24vbWFnaWVyL3ZjL2FyZW5hfHNwaWVsZXJuYW1lIixNX0dPKQoraW4gJ3NlaW5lbicgcGVyc29lbmxpY2hlbiBSYXVtIGJld2VnZW4uCisKK0JpdHRlIGJlYWNodGV0IGFsbGVyZGluZ3Mgbm9jaCBkaWUgSGlud2Vpc2UgdW5kIEJlc2NocmVpYnVuZ2VuIGluIGRlbiBNYW5wYWdlcworenUgZGVuIGVpbnplbG5lbiBGdW5rdGlvbmVuIHVuZCBQcm9wZXJ0aWVzLgorCisKK0JlaXNwaWVsZToKKz09PT09PT09PT0KKzEuIC9kb2MvYmVpc3BpZWxlL3ZpcnR1YWwvemVzc3RyYS92aXJ0dWFsX2NvbXBpbGVyLmMKKyAgIFZDLCBkZXIgamVkZW0gU3BpZWxlciBlaW5lbiBlaWdlbmVuIFJhdW0gZ2lidC4gRGEgaGllciBkZXIgSW5oYWx0IGFsbGVyCisgICBSYWV1bWUgZ2xlaWNoIGlzdCAoYWxsZSBTcGllbGVyIHNvbGxlbiBnbGVpY2hlIEJlZGluZ3VuZ2VuIGhhYmVuKSwgaXN0CisgICBrZWluZSBLb25maWd1cmllcnVuZyBtaXQgSGlsZmUgdm9uIEN1c3RvbWl6ZU9iamVjdCgpIG5vZXRpZy4KKworMi4gL2RvYy9iZWlzcGllbGUvdmlydHVhbC9oYXRlL3ZyX2NvbXBpbGVyLmMKKyAgIERpZXMgaXN0IGVpbiBCZWlzcGllbCBmdWVyIGVpbmVuIHNlaHIgYWxsZ2VtZWluZW4gVkMsIGRlciBlcyAKKyAgIGVybGF1YnQgYW56dWdlYmVuIGluIHdlbGNoZW0gQmVyZWljaCBzaWNoIGRpZSB4IHVuZCB5IEtvb3JkaW5hdGVuIGJlZmluZGVuCisgICB1bmQgZGFubiBSYWV1bWUgZXJ6ZXVndCwgd2VsY2hlIEF1c2dhZW5nZSBpbiBhbGxlIHZpZXIgSGltbWVsc3JpY2h0dW5nZW4gCisgICBoYWJlbi4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI3LjEwLjIwMDcsIFplc3N0cmEKZGlmZiAtLWdpdCBhL2RvYy9zdGQvd2VhcG9uIGIvZG9jL3N0ZC93ZWFwb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg5NGMwMgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zdGQvd2VhcG9uCkBAIC0wLDAgKzEsNzggQEAKKyBTVEFOREFSREtMQVNTRToKKwkiL3N0ZC93ZWFwb24iCisKKyBCRU5VVFpVTkc6CisgICAgICAgIGluaGVyaXQgInN0ZC93ZWFwb24iOworCisJI2luY2x1ZGUgPHByb3BlcnRpZXMuaD4KKwkjaW5jbHVkZSA8Y29tYmF0Lmg+CisKKyBQUk9QRVJUSUVTOgorICAgICBHcnVuZGxlZ2VuZDoKKyAgICAgICAgUF9XQwkJc2V0emJhcjogV2FmZmVua2xhc3NlID09IEFuZ3JpZmZzc3RhZXJrZQorCVBfV0VBUE9OX1RZUEUJc2V0emJhcjogV2FmZmVudHlwCisJUF9EQU1fVFlQRQlzZXR6YmFyOiBTY2hhZGVuc3R5cGVuCisJUF9OUl9IQU5EUwlzZXR6YmFyOiBBbnphaGwgYmVub2V0aWd0ZXIgSGFlbmRlCisKKyAgICAgQmVzb25kZXJlIEF0dHJpYnV0ZSB1bmQgQW5mb3JkZXJ1bmdlbiBmdWVyIFRyYWVnZXI6CisJUF9SRVNUUklDVElPTlMJc2V0emJhcjogQW5mb3JkZXJ1bmdlbiBhbiBUcmFlZ2VyCisJUF9NX0FUVFJfTU9ECXNldHpiYXI6IEF0dHJpYnV0bW9kaWZpa2F0b3IgZnVlciBUcmFlZ2VyCisJUF9DVVJTRUQJc2V0emJhcjogVmVyZmx1Y2h1bmcgKG5pY2h0IHdlZ3N0ZWNrYmFyKQorCVBfUEFSUlkJCXNldHpiYXI6IFBhcmllcndhZmZlID8KKwlQX0FDCQlzZXR6YmFyOiBTY2h1dHpmYWt0b3IgZWluZXIgUGFyaWVyd2FmZmUKKworICAgICBNZWxkdW5nZW4gdW5kIFplaXRwdW5rdGU6CisJUF9FUVVJUF9USU1FCWVudGhhZWx0IGRlbiBaZWl0cHVua3QgZGVzIEFuemllaGVucworCVBfTEFTVF9VU0UJZW50aGFlbHQgZGVuIFplaXRwdW5rdCBkZXMgbGV0enRlbiBBbmdyaWZmcyBkYW1pdAorCVBfV0lFTERFRAllbnRoYWVsdCBkZW4gVHJhZWdlcgorCVBfV0lFTERfTVNHCXNldHpiYXI6IGVpZ2VuZSBadWVja21lbGR1bmcKKwlQX1VOV0lFTERfTVNHCXNldHpiYXI6IGVpZ2VuZSBXZWdzdGVja21lbGR1bmcKKworICAgICBEeW5hbWlzY2hlcyBWZXJoYWx0ZW4gaW4gS2FtcGYgdW5kIGJlaW0gQW56aWVoZW46CisJUF9XSUVMRF9GVU5DCXNldHpiYXI6IE9iamVrdCBtaXQgWnVlY2tmdW5rdGlvbiAiV2llbGRGdW5jKCkiCisJUF9VTldJRUxEX0ZVTkMJc2V0emJhcjogT2JqZWt0IG1pdCBXZWdzdGVja2Z1bmt0aW9uICJVbndpZWxkRnVuYygpIgorCVBfSElUX0ZVTkMJc2V0emJhcjogT2JqZWt0IG1pdCBBbmdyaWZmc2Z1bmt0aW9uICJIaXRGdW5jKCkiCisKKyAgICAgWnVzYWV0emxpY2hlIEVpZ2Vuc2NoYWZ0ZW46CisJUF9EQU1BR0VECWVudGhhZWx0IGRlbiBBdXNtYXNzIGRlcyBTY2hhZGVucyBhbiBXYWZmZQorCVBfUVVBTElUWQlzZXR6YmFyOiBRdWFsaXTkdC9IYWx0YmFya2VpdCBkZXIgV2FmZmUKKwlQX0VGRkVDVElWRV9BQwlzZXR6YmFyOiBmYWxscyBIaXRGdW5jIFdDIG5pY2h0IHNpY2hiYXIgYWVuZGVydAorCVBfRUZGRUNUSVZFX1dDCXNldHpiYXI6IGZhbGxzIFBhcmllcmVuIEFDIG5pY2h0IHNpY2hiYXIgYWVuZGVydAorCisgICAgIFp1c2FldHpsaWNoIHNpbmQgYWxsZSBQcm9wZXJ0aWVzIGF1cyAvc3RkL3RoaW5nIHZlcmZ1ZWdiYXIsIGFsc28KKyAgICAgYml0dGUgYXVjaCBmb2xnZW5kZSBzZXR6ZW46CisJUF9NQVRFUklBTAlzZXR6YmFyOiBadXNhbW1lbnNldHp1bmcKKwlQX1NJWkUJCXNldHpiYXI6IEdyb2Vzc2UKKwlQX1dFSUdIVAlzZXR6YmFyOiBHZXdpY2h0CisKKyBNQUtST1M6CisgICAgIEd1ZWx0aWdlIFdhZmZlbi0gdW5kIFNjaGFkZW5zdHlwZW4gKGRlZmluaWVydCBpbiAiL3N5cy9jb21iYXQuaCIpLgorCisgQkVTQ0hSRUlCVU5HOgorICAgICBCYXNpc2tsYXNzZSBmdWVyIGFsbGUgV2FmZmVuIGltIFNwaWVsLiBTaWUgaXN0IHZvbiAvc3RkL3RoaW5nCisgICAgIGFiZ2VsZWl0ZXQgdW5kIGVudGhhZWx0IGFsbGUgenVzYWV0emxpY2hlIEZ1bmt0aW9uYWxpdGFldAorICAgICBmdWVyIGRlbiBLYW1wZi4KKworICAgICBWb3IgZGVyIFByb2dyYW1taWVydW5nIHZvbiBXYWZmZW4gc29sbHRlIC9kb2Mvd2l6L3dhZmZlbgorICAgICBnZWxlc2VuIHdlcmRlbi4gRGllIFJlZ2VsbiBkYXJpbiBzaW5kIHZlcmJpbmRsaWNoIHVuZCBzb2xsdGVuIG51cgorICAgICBpbiBBdXNuYWhtZWZhZWxsZW4gdW5kIG1pdCBBYnNwcmFjaGUgbWl0IGRlbSBFcnptYWdpZXIgZnVlciAKKyAgICAgV2FmZmVuL1J1ZXN0dW5nZW4vTW9uc3RlciB1ZWJlcnNjaHJpdHRlbiB3ZXJkZW4uCisKKyBWRVJFUkJVTkdTQkFVTToKKyAgICAgWy9zdGQvd2VhcG9uXQorICAgICAuLi4uLiBbL3N0ZC90aGluZy9wcm9wZXJ0aWVzXQorICAgICAuLi4uLiBbL3N0ZC90aGluZy9sYW5ndWFnZV0KKyAgICAgLi4uLi4gWy9zdGQvdGhpbmcvY29tbWFuZHNdCisgICAgIC4uLi4uIFsvc3RkL3RoaW5nL3Jlc3RyaWN0aW9uc10KKyAgICAgLi4uLi4gWy9zdGQvd2VhcG9uL21vdmluZ10KKyAgICAgLi4uLi4uLi4uLiBbL3N0ZC90aGluZy9tb3ZpbmddCisgICAgIC4uLi4uIFsvc3RkL3dlYXBvbi9kZXNjcmlwdGlvbl0KKyAgICAgLi4uLi4uLi4uLiBbL3N0ZC90aGluZy9kZXNjcmlwdGlvbl0KKyAgICAgLi4uLi4gWy9zdGQvd2VhcG9uL2NvbWJhdF0KKworCisgU0lFSEUgQVVDSDoKKyAgICAgUF9XRUFQT04sIFBfUEFSUllfV0VBUE9OLCBQX1RPVEFMX1dDLCBQX1RPVEFMX0FDLCBQX1VOV0lFTERfVElNRQorICAgICBBdHRhY2soKSwgRGVmZW5kKCksIC9kb2Mvd2l6L3dhZmZlbgorCisgMjAgTWFlcnogMjAwNCBHbG9pbnNvbgo=