ZGlmZiAtLWdpdCBhL2NoZWNrIGIvY2hlY2sKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWJmZTM1MwotLS0gL2Rldi9udWxsCisrKyBiL2NoZWNrCkBAIC0wLDAgKzEsMjY4IEBACisjIS9iaW4vYmFzaAorCitleHBvcnQgQ0hFQ0tFUkhPTUU9YHB3ZGAKK2V4cG9ydCBDT0RFRklMRVM9IiR7Q0hFQ0tFUkhPTUV9L0NPREVGSUxFUyIKK2V4cG9ydCBIRUFERVJGSUxFUz0iJHtDSEVDS0VSSE9NRX0vSEVBREVSRklMRVMiCisjZXhwb3J0IExQQ0ZJTEVTPSIke0hFQURFUkZJTEVTfSAke0NPREVGSUxFU30iCitleHBvcnQgTFBDRklMRVM9IiR7Q0hFQ0tFUkhPTUV9L0xQQ0ZJTEVTIgorZXhwb3J0IE1VRExJQj0iL2hvbWUvbXVkL211ZGxpYiIKK2V4cG9ydCBMT0dTPSIke0NIRUNLRVJIT01FfS9sb2dzIgorCitMRVZFTDE9ImNoYW5nZV9yZXF1aXJlZCIKK0xFVkVMMj0iZm9ybWF0dGluZyIKK0xFVkVMNT0icGxlYXNlX2NoZWNrIgorTEVWRUwxMD0iY29zbWV0aWNzIgorCitlY2hvIC1uZSAiTFBDLVNvdXJjZSBDaGVja2VyIFYwLjMgKDIwMDgtMDEtMDkpXG5cbiIKKwordXNhZ2UoKSB7CisgICAgZWNobyAtbmUgInVzYWdlOiAuL2NoZWNrIDxyZWdpb24+IDxsb2dmaWxlPlxuIgorICAgIGV4aXQKK30KKworIyBQYXJhbWV0ZXIgcHJ1ZWZlbiwgYW5zb25zdGVuIHVzYWdlIGF1c2dlYmVuCitpZiBbIC16ICR7MX0gXSB8fCBbIC16ICR7Mn0gXQordGhlbgorCXVzYWdlCitmaQorCisjIGd1Y2tlbiBvYiBkYXMgTG9ndmVyemVpY2huaXMgZGEgaXN0LCB3ZW5uIG5laW4sIGRhbm4gYW5sZWdlbgoraWYgWyAhIC1kICR7TE9HU30gXQordGhlbgorCW1rZGlyIC1wICR7TE9HU30KK2ZpCisKKyMgcnVkaW1lbnRhZXJlciBjaGVjayBvYiBkaWUgTXVkbGliIGRhIGxpZWd0LCB3byAke01VRExJQn0gaGluemVpZ3QKK2lmIFsgISAtZCAke01VRExJQn0gXQordGhlbgorCWVjaG8gLW5lICJObyBtdWRsaWIgZm91bmQgaW4gJHtNVURMSUJ9XG4iCisJZXhpdAorZmkKKworIyBhbHRlbiBLcmFtIGVudHNvcmdlbgoraWYgWyAtZiAke0NPREVGSUxFU30gXQordGhlbgorCXJtICR7Q09ERUZJTEVTfQorZmkKKworaWYgWyAtZiAke0hFQURFUkZJTEVTfSBdCit0aGVuCisJcm0gJHtIRUFERVJGSUxFU30KK2ZpCisKK2lmIFsgLWYgJHtMUENGSUxFU30gXQordGhlbgorCXJtICR7TFBDRklMRVN9CitmaQorCitlY2hvIC1uZSAiQ2hlY2tpbmcgdGhlIE1vcmdlbkdyYXVlbiBNdWRsaWIgaW4gJHtNVURMSUJ9XG4iCitlY2hvIC1uZSAiQ2hlY2tpbmcgaW4gJHsxfSAoJHtNVURMSUJ9JHsxfSlcbiIKKworY2QgJHtNVURMSUJ9CisKKyMgRGF0ZWlsaXN0ZSBlcnN0ZWxsZW4KK2VjaG8gLW5lICJDcmVhdGluZyBmaWxlIGxpc3QuLi5cbiIKKworZmluZCAuLyR7MX0gLXR5cGUgZiAtbmFtZSAiKi5jIiAtcHJpbnQgPiAke0NPREVGSUxFU30KK2ZpbmQgLi8kezF9IC10eXBlIGYgLW5hbWUgIiouaCIgLXByaW50ID4gJHtIRUFERVJGSUxFU30KKworIyBpcmdlbmR3aWUgdW5zY2hvZW4KK2NhdCAke0NPREVGSUxFU30gJHtIRUFERVJGSUxFU30gPiAke0xQQ0ZJTEVTfQorCisjIGVpZ2VudGxpY2ggaGFldHRlIG1hbiBkYXMgYWxsZXMgaW4gZWluZW0gYWJmYWNrZWxuIGtvZW5uZW4sIGFiZXIgZGFubiBnYWViZQorIyBlcyBrZWluZSBVZWJlcnNjaHJpZnRlbiB1ZWJlciBkZW4gZWluemVsbmVuIFB1bmt0ZW4KKworIyBMRVZFTCAxIENIRUNLUyAoY2hhbmdlIHJlcXVpcmVkKQorCisjIFVtbGF1dGUKK2VjaG8gLW5lICJcblxuUHJ1ZWZlIGF1ZiBVbWxhdXRlLi4uXG4iIHwgdGVlIC1hICR7TE9HU30vJHsyfS4ke0xFVkVMMX0KK3doaWxlIHJlYWQgbGluZQorZG8KKwlncmVwIC1IbiAnW/z25NzWxN9dJyAkbGluZSB8IGN1dCAtZCA6IC1mIDEtMiA+PiAke0xPR1N9LyR7Mn0uJHtMRVZFTDF9Citkb25lIDwgJHtMUENGSUxFU30KKworIyBsYW1iZGEoKQorZWNobyAtbmUgIlxuXG5QcnVlZmUgYXVmIGxhbWJkYSgpLi4uXG4iIHwgdGVlIC1hICR7TE9HU30vJHsyfS4ke0xFVkVMMX0KK3doaWxlIHJlYWQgbGluZQorZG8KKwlncmVwIC1IbiAnbGFtYmRhKCcgJGxpbmV8IGN1dCAtZCA6IC1mIDEtMiA+PiAke0xPR1N9LyR7Mn0uJHtMRVZFTDF9Citkb25lIDwgJHtMUENGSUxFU30KKworIyBQZmFkZSBpbiAvcGxheWVycy8KK2VjaG8gLW5lICJcblxuUHJ1ZWZlIGF1ZiBQZmFkZSBpbiAvcGxheWVycy8uLi5cbiIgfCB0ZWUgLWEgJHtMT0dTfS8kezJ9LiR7TEVWRUwxfSAKK3doaWxlIHJlYWQgbGluZQorZG8KKwlncmVwIC1IbiAnL3BsYXllcnMvJyAkbGluZXwgY3V0IC1kIDogLWYgMS0yID4+ICR7TE9HU30vJHsyfS4ke0xFVkVMMX0gCitkb25lIDwgJHtMUENGSUxFU30KKworIyBmZWhsZW5kZSAjcHJhZ21hIHN0cm9uZ190eXBlcy9zdHJpY3RfdHlwZXMKK2VjaG8gLW5lICJcblxuRmlsZXMgb2huZSAjcHJhZ21hIHN0cm9uZ190eXBlcyBvZGVyIHN0cmljdF90eXBlcy4uLlxuIiB8IHRlZSAtYSAke0xPR1N9LyR7Mn0uJHtMRVZFTDF9IAord2hpbGUgcmVhZCBsaW5lCitkbworCWdyZXAgLUwgJyNwcmFnbWEuXChzdHJvbmdcfHN0cmljdFwpX3R5cGVzJyAkbGluZSB8IHNvcnQgXAorCQk+PiAke0xPR1N9LyR7Mn0uJHtMRVZFTDF9IAorZG9uZSA8ICR7Q09ERUZJTEVTfQorCisjIGRpcmVrdGUgVmVyd2VuZHVuZyB2b24gZG9fZGFtYWdlKCkKK2VjaG8gLW5lICJcblxuUHJ1ZWZlIGF1ZiBkaXJla3RlIFZlcndlbmR1bmcgdm9uIGRvX2RhbWFnZSgpLi4uXG4iIHxcCisJICAgICB0ZWUgLWEgJHtMT0dTfS8kezJ9LiR7TEVWRUwxfQord2hpbGUgcmVhZCBsaW5lCitkbworCWdyZXAgLUhuICdkb19kYW1hZ2UoJyAkbGluZSB8IGN1dCAtZCA6IC1mIDEtMiA+PiAke0xPR1N9LyR7Mn0uJHtMRVZFTDF9Citkb25lIDwgJHtMUENGSUxFU30KKworIyBVbmVyd3VlbnNjaHRlIG9kZXIgb2Jzb2xldGUgbGZ1bnMKK2VjaG8gLW5lICJcblxuUHJ1ZWZlIGF1ZiB1bmVyd3VlbnNjaHRlIG9kZXIgb2Jzb2xldGUgbGZ1bnMuLi5cbiIgfFwKKwl0ZWUgLWEgJHtMT0dTfS8kezJ9LiR7TEVWRUwxfQord2hpbGUgcmVhZCBsaW5lCitkbworCWdyZXAgLUhuIC1mICR7Q0hFQ0tFUkhPTUV9L2JhZF9sZnVuLmxpc3QgJGxpbmUgPj4gJHtMT0dTfS8kezJ9LiR7TEVWRUwxfQorZG9uZSA8ICR7TFBDRklMRVN9CisKKyMgVW5lcnd1ZW5zY2h0ZSBvZGVyIG9ic29sZXRlIGVmdW5zCitlY2hvIC1uZSAiXG5cblBydWVmZSBhdWYgdW5lcnd1ZW5zY2h0ZSBvZGVyIG9ic29sZXRlIGVmdW5zLi4uXG4iIHxcCisJdGVlIC1hICR7TE9HU30vJHsyfS4ke0xFVkVMMX0KK3doaWxlIHJlYWQgbGluZQorZG8KKwlncmVwIC1IbiAtZiAke0NIRUNLRVJIT01FfS9iYWRfZWZ1bi5saXN0ICRsaW5lID4+ICR7TE9HU30vJHsyfS4ke0xFVkVMMX0KK2RvbmUgPCAke0xQQ0ZJTEVTfQorCisjIFVuZXJ3dWVuc2NodGUgb2RlciBvYnNvbGV0ZSBQcm9wZXJ0aWVzCitlY2hvIC1uZSAiXG5cblBydWVmZSBhdWYgdW5lcnd1ZW5zY2h0ZSBvZGVyIG9ic29sZXRlIFByb3BlcnRpZXMuLi5cbiIgfFwKKwl0ZWUgLWEgJHtMT0dTfS8kezJ9LiR7TEVWRUwxfQord2hpbGUgcmVhZCBsaW5lCitkbworCWdyZXAgLUhuIC1mICR7Q0hFQ0tFUkhPTUV9L2JhZF9wcm9wLmxpc3QgJGxpbmUgPj4gJHtMT0dTfS8kezJ9LiR7TEVWRUwxfQorZG9uZSA8ICR7TFBDRklMRVN9CisKKyMgVW5lcnd1ZW5zY2h0ZSBFdmVudHMKK2VjaG8gLW5lICJcblxuUHJ1ZWZlIGF1ZiB1bmVyd3VlbnNjaHRlIEV2ZW50bmFtZW4uLi5cbiIgfCB0ZWUgLWEgJHtMT0dTfS8kezJ9LiR7TEVWRUwxfQord2hpbGUgcmVhZCBsaW5lCitkbworCWdyZXAgLUhuIC1mICR7Q0hFQ0tFUkhPTUV9L2JhZF9ldmVudHMubGlzdCAkbGluZSA+PiAke0xPR1N9LyR7Mn0uJHtMRVZFTDF9Citkb25lIDwgJHtMUENGSUxFU30KKworIyBLZWluZSBjbG9uZXMgdm9uIC9zdGQvdGhpbmcKK2VjaG8gLW5lICJcblxuUHJ1ZWZlIGF1ZiBDbG9uZXMgdm9uIC9zdGQvdGhpbmcuLi5cbiIgfFwKKwkgICAgIHRlZSAtYSAke0xPR1N9LyR7Mn0uJHtMRVZFTDF9Cit3aGlsZSByZWFkIGxpbmUKK2RvCisJZ3JlcCAtSG4gJ2Nsb25lX29iamVjdCguKi9zdGQvdGhpbmcuKiknICRsaW5lIHwgY3V0IC1kIDogLWYgMS0yIFwKKwkgICAgID4+ICR7TE9HU30vJHsyfS4ke0xFVkVMMX0KK2RvbmUgPCAke0xQQ0ZJTEVTfQorCisjIHVlYmVyc2NocmllYmVuZXMgbW92ZSgpCitlY2hvIC1uZSAiXG5cblBydWVmZSBhdWYgdWViZXJzY2hyaWViZW5lcyBtb3ZlKCkgKGRlcHJlY2F0ZWQpLi4uXG4iIHxcCisJICAgIHRlZSAtYSAke0xPR1N9LyR7Mn0uJHtMRVZFTDF9Cit3aGlsZSByZWFkIGxpbmUKK2RvCisJZ3JlcCAtSG4gJ2ludC4qbW92ZSguKm1peGVkLippbnQuKiknICRsaW5lIHwgY3V0IC1kIDogLWYgMS0yIFwKKwkgICAgID4+ICR7TE9HU30vJHsyfS4ke0xFVkVMMX0KK2RvbmUgPCAke0xQQ0ZJTEVTfQorCisjIHdpcmQgZ2VlcmJ0ZXMgUHJldmVudE1vdmUgZ2VydWZlbj8KK2VjaG8gLW5lICJcblxuVWViZXJzY2hyaWViZW5lcyBQcmV2ZW50TW92ZSgpIG9obmUgZ2VlcmJldGVzIHp1IHJ1ZmVuLi4uXG4iIHxcCisJICAgICB0ZWUgLWEgJHtMT0dTfS8kezJ9LiR7TEVWRUwxfQord2hpbGUgcmVhZCBsaW5lCitkbworCWdyZXAgJ1ByZXZlbnQoLipvYmplY3QuKm9iamVjdC4qaW50KScgJGxpbmUgPiAke0NIRUNLRVJIT01FfS9jaGVjay50bXAKKwlncmVwIC1MICc6OlByZXZlbnRNb3ZlKCcgJGxpbmUgPiAke0NIRUNLRVJIT01FfS9jaGVjay50bXAyCitkb25lICA8ICR7TFBDRklMRVN9CisjIG51ciBaZWlsZW4gYXVzZ2ViZW4sIGRpZSBuaWNodCBpbSAyLiBGaWxlIHZvcmtvbW1lbgorZ3JlcCAtdiAtZiAke0NIRUNLRVJIT01FfS9jaGVjay50bXAyICR7Q0hFQ0tFUkhPTUV9L2NoZWNrLnRtcCB8IFwKKwl0ZWUgLWEgJHtMT0dTfS8kezJ9LiR7TEVWRUwxfQorcm0gJHtDSEVDS0VSSE9NRX0vY2hlY2sudG1wKgorCitlY2hvIC1uZSAiXG5cblVlYmVyc2NocmllYmVuZXMgTm90aWZ5TW92ZSgpIG9obmUgZ2VlcmJldGVzIHp1IHJ1ZmVuLi4uXG4iIHxcCisJICAgICB0ZWUgLWEgJHtMT0dTfS8kezJ9LiR7TEVWRUwxfQord2hpbGUgcmVhZCBsaW5lCitkbworCWdyZXAgJ05vdGZpeU1vdmUoLipvYmplY3QuKm9iamVjdC4qaW50KScgJGxpbmUgPiAke0NIRUNLRVJIT01FfS9jaGVjay50bXAKKwlncmVwIC1MICc6Ok5vdGlmeU1vdmUoJyAkbGluZSA+ICR7Q0hFQ0tFUkhPTUV9L2NoZWNrLnRtcDIKK2RvbmUgPCAke0xQQ0ZJTEVTfQorZ3JlcCAtdiAtZiAke0NIRUNLRVJIT01FfS9jaGVjay50bXAyICR7Q0hFQ0tFUkhPTUV9L2NoZWNrLnRtcCBcCisJPj4gJHtMT0dTfS8kezJ9LiR7TEVWRUwxfQorcm0gJHtDSEVDS0VSSE9NRX0vY2hlY2sudG1wKgorCisjIGNhbGxfb3RoZXIoeCwgIj8/PyIpIGlzdCBvYnNvbGV0CitlY2hvIC1uZSAiXG5cblBydWVmZSBhdWYgY2FsbF9vdGhlcih4LCAiPz8/IikgKG9ic29sZXQpLi4uXG4iIHxcCisJdGVlIC1hICR7TE9HU30vJHsyfS4ke0xFVkVMMX0KK3doaWxlIHJlYWQgbGluZQorZG8KKwlncmVwIC1IbiAnY2FsbF9vdGhlciguKj8/Py4qKScgJGxpbmUgfCBjdXQgLWQgOiAtZiAxLTIgXAorCT4+ICR7TE9HU30vJHsyfS4ke0xFVkVMMX0KK2RvbmUgPCAke0xQQ0ZJTEVTfQorCisjIEFsdGUgU3ludGF4IGRlciBJbmxpbmUtQ2xvc3VyZXMKK2VjaG8gLW5lICJcblxuUHJ1ZWZlIGF1ZiBvYnNvbGV0ZSBJbmxpbmUtQ2xvc3VyZXMgKCAoOiA6KSApLi4uXG4iIHwgXAorCSAgICAgdGVlIC1hICR7TE9HU30vJHsyfS4ke0xFVkVMMX0KK3doaWxlIHJlYWQgbGluZQorZG8KKwlncmVwIC1IbiAnKDogJyAkbGluZSB8IGN1dCAtZCA6IC1mIDEtMiBcCisJCQk+PiAke0xPR1N9LyR7Mn0uJHtMRVZFTDF9Citkb25lIDwgJHtMUENGSUxFU30KKworIyBMRVZFTCAyIENIRUNLUworIyBUYWJ1bGF0b3JlbgorZWNobyAtbmUgIlxuXG5QcnVlZmUgYXVmIFRhYnVsYXRvcmVuLi4uXG4iIHwgdGVlIC1hICR7TE9HU30vJHsyfS4ke0xFVkVMMn0KK3doaWxlIHJlYWQgbGluZQorZG8KKwlncmVwIC1IbiAkJ1x0JyAkbGluZSB8IGN1dCAtZCA6IC1mIDEtMiA+PiAke0xPR1N9LyR7Mn0uJHtMRVZFTDJ9Citkb25lIDwgJHtMUENGSUxFU30KKworIyBaZWlsZW4gPiA3OCBaZWljaGVuCitlY2hvIC1uZSAiXG5cblBydWVmZSBhdWYgWmVpbGVuID4gNzggWmVpY2hlbi4uLlxuIiB8IHRlZSAtYSAke0xPR1N9LyR7Mn0uJHtMRVZFTDJ9Cit3aGlsZSByZWFkIGxpbmUKK2RvCisJZ3JlcCAtSG4gJy5cezc5LFx9JyAkbGluZXwgY3V0IC1kIDogLWYgMS0yID4+ICR7TE9HU30vJHsyfS4ke0xFVkVMMn0KK2RvbmUgPCAke0xQQ0ZJTEVTfQorCisjIExFVkVMIDUgQ0hFQ0tTCisjIEhlYWRlciBtaXQgI3ByYWdtYXMKK2VjaG8gLW5lICJcblxuSGVhZGVyICgqLmgpIG1pdCAjcHJhZ21hcy4uLlxuIiB8IHRlZSAtYSAke0xPR1N9LyR7Mn0uJHtMRVZFTDV9Cit3aGlsZSByZWFkIGxpbmUKK2RvCisJZ3JlcCAtbCAnI3ByYWdtYScgJGxpbmUgPj4gJHtMT0dTfS8kezJ9LiR7TEVWRUw1fQorZG9uZSA8ICR7SEVBREVSRklMRVN9CisKKyMgZWZ1bnMsIFZlcndlbmR1bmcgYmVhY2h0ZW4KK2VjaG8gLW5lICJcblxuUHJ1ZWZlIGF1ZiBlZnVucywgZGVyZW4gVmVyd2VuZHVuZyBiZW9iYWNodGV0IHdlcmRlbiBzb2xsdGUuLi5cbiIgfFwKKwkgICAgdGVlIC1hICR7TE9HU30vJHsyfS4ke0xFVkVMNX0KK3doaWxlIHJlYWQgbGluZQorZG8KKwlncmVwIC1IbiAtZiAke0NIRUNLRVJIT01FfS93YXJuX2VmdW4ubGlzdCAkbGluZSBcCisJPj4gJHtMT0dTfS8kezJ9LiR7TEVWRUw1fQorZG9uZSA8ICR7TFBDRklMRVN9CisKKyMgUHJvcGVydGllcywgVmVyd2VuZHVuZyBiZWFjaHRlbgorZWNobyAtbmUgIlxuXG5QcnVlZmUgYXVmIFByb3BlcnRpZXMsIGRlcmVuIFZlcndlbmR1bmcgYmVvYmFjaHRldCB3ZXJkZW4KK3NvbGx0ZS4uLlxuIiB8IHRlZSAtYSAke0xPR1N9LyR7Mn0uJHtMRVZFTDV9Cit3aGlsZSByZWFkIGxpbmUKK2RvCisJZ3JlcCAtSG4gLWYgJHtDSEVDS0VSSE9NRX0vd2Fybl9wcm9wLmxpc3QgJGxpbmUgXAorCT4+ICR7TE9HU30vJHsyfS4ke0xFVkVMNX0KK2RvbmUgPCAke0xQQ0ZJTEVTfQorCQorIyBQcnVlZnVuZyBhdWYgc3RhdGljIC0+IHByb3RlY3RlZAorZWNobyAtbmUgIlxuXG5QcnVlZmUgYXVmICdzdGF0aWMnICgtPiAncHJvdGVjdGVkJykuLi5cbiIgfFwKKwkgICAgdGVlIC1hICR7TE9HU30vJHsyfS4ke0xFVkVMNX0KK3doaWxlIHJlYWQgbGluZQorZG8KKwlncmVwIC1IbiAnc3RhdGljJyAkbGluZSA+PiAke0xPR1N9LyR7Mn0uJHtMRVZFTDV9Citkb25lIDwgJHtMUENGSUxFU30KKworCisjIExFVkVMIDEwIENIRUNLUworIyBBbHRlIFJlY2h0c2NocmVpYnVuZyBydWxlcworZWNobyAtbmUgIlxuXG5LbGVpbmdlc2NocmllYmVuZXMgRHUvRGlyL0RpY2guLi5cbiIgfFwKKwl0ZWUgLWEgJHtMT0dTfS8kezJ9LiR7TEVWRUwxMH0KK3doaWxlIHJlYWQgbGluZQorZG8KKwlncmVwIC1IbiAnIFwoZHVcfGRpY2hcfGRpclwpICcgJGxpbmUgfCBjdXQgLWQgOiAtZiAxLTIgfCBzb3J0IHwgXAorCXVuaXEgPj4gJHtMT0dTfS8kezJ9LiR7TEVWRUwxMH0KK2RvbmUgPCAke0xQQ0ZJTEVTfQorCisjIFBmYWRuYW1lbiBiZXJlaW5pZ2VuCitzZWQgLWkgLWUgJ3MjLi8vIy8jZycgJHtMT0dTfS8kezJ9LioKKworZWNobyAtbmUgIlxuQ2hlY2sgZmluaXNoZWQhXG4iCg==